--- glibc-2.3.2/CANCEL-FILE-WAIVE 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/CANCEL-FILE-WAIVE 2003-09-02 05:24:58.000000000 -0400 @@ -0,0 +1,33 @@ +mkdtemp.os +tmpnam.os +tmpnam_r.os +__assert.os +assert.os +assert-perr.os +gconv_builtin.os +gconv_simple.os +gconv.os +iconv.os +strfmon.os +strfmon_l.os +argp-xinl.os +iofdopen.os +printf_fp.os +printf_fphex.os +printf_size.os +strxfrm.os +strxfrm_l.os +strcoll.os +strcoll_l.os +alphasort.os +alphasort64.os +set-freeres.os +btowc.os +wctob.os +mblen.os +strops.os +wstrops.os +fmemopen.os +closedir.os +hsearch.os +hsearch_r.os --- glibc-2.3.2/ChangeLog 2003-02-28 20:10:14.000000000 -0500 +++ glibc-2.3.2/ChangeLog 2003-09-20 09:40:33.000000000 -0400 @@ -1,3 +1,5919 @@ +2003-09-19 Ulrich Drepper + + * elf/Makefile ($(objpfx)librtld.os): Create link map also for + final build to ease quality control. + + * sysdeps/unix/sysv/linux/getcwd.c (__getcwd): If compiled for + ld.so, don't include NULL buffer pointer handling. + +2003-09-19 Jakub Jelinek + + * dlfcn/dlopen.c (dlopen): Add static_link_warning. + +2003-09-18 Jakub Jelinek + + * libio/memstream.c (open_memstream): Use _IO_init instead of + _IO_old_init. + +2003-09-17 Ulrich Drepper + + * sysdeps/generic/wordexp.c (eval_expr_val): Use strtol since we + have to recognize octal and hexadecimal numbers as well. Simplify + function, signs are handled in strtol. + * posix/wordexp-test.c: Add tests for octal and hexadecimal + numbers in arithmetic expressions. + +2003-09-17 Jakub Jelinek + + * elf/Makefile (distribute): Add tst-alignmod.c. + (tests): Add tst-align. + (modules-names): Add tst-alignmod. + (CFLAGS-tst-align.c, CFLAGS-tst-alignmod.c): Add + $(stack-align-test-flags). + ($(objpfx)tst-align): Depend on libdl. + ($(objpfx)tst-align.out): Depend on tst-alignmod.so. + * elf/tst-align.c: New file. + * elf/tst-alignmod.c: New file. + * misc/Makefile (CFLAGS-tst-tsearch.c): Add $(stack-align-test-flags). + * misc/tst-tsearch.c: Include tst-stack-align.h. + (stack_align_check): New array. + (cmp_fn, walk_action): Use TEST_STACK_ALIGN (). + (main): Report error if stack was not enough aligned + in cmp_fn or walk_action. + * stdlib/Makefile (CFLAGS-tst-qsort.c): Add $(stack-align-test-flags). + * stdlib/tst-qsort.c: Include tst-stack-align.h. + (align_check): New var. + (compare): Use TEST_STACK_ALIGN () macro. + (main): Report error if stack was not enough aligned in compare. + * sysdeps/i386/i686/Makefile (stack-align-test-flags): Remove + unneeded -mpreferred-stack-boundary=4. + * sysdeps/x86_64/tst-stack-align.h: New file. + + * libio/memstream.c (_IO_wmem_jumps): Remove unused structure. + (_IO_wmem_sync, _IO_wmem_finish): Remove unused functions. + +2003-09-17 Philip Blundell + + * sysdeps/arm/dl-machine.h (CALL_ROUTINE): Deleted. + (BX): Define. + (ELF_MACHINE_RUNTIME_TRAMPOLINE): Optimise a little. + + * sysdeps/arm/sysdep.h (DO_RET): New. + + * sysdeps/unix/sysv/linux/arm/vfork.S: Add #error if __NR_vfork + required but not defined. Improve test of error code. + +2003-09-17 Jakub Jelinek + + * sysdeps/i386/Makefile (stack-align-test-flags): Add + -malign-double -mpreferred-stack-boundary=4. + +2003-09-17 Ulrich Drepper + + * sysdeps/posix/utimes.c (__utimes): Truncate instead of round. + * sysdeps/unix/sysv/linux/utimes.c (__utimes): Likewise. + +2003-09-15 Jakub Jelinek + + * sysdeps/i386/Makefile (sysdep-CFLAGS): If not in math or csu + subdir, add -mpreferred-stack-boundary=4, with few exceptions. + +2003-09-17 Jakub Jelinek + + * Makeconfig (stack-align-test-flags): Set. + * stdlib/Makefile (CFLAGS-tst-bsearch.c): Add + $(stack-align-test-flags). + * stdlib/tst-bsearch.c: Include tst-stack-align.h. + (align_check): New var. + (comp): Use TEST_STACK_ALIGN macro. + (do_test): Fail if align_check != 1. + * sysdeps/generic/tst-stack-align.h: New file. + * sysdeps/i386/i686/Makefile (stack-align-test-flags): Add -msse. + * sysdeps/i386/i686/tst-stack-align.h: New file. + +2003-09-17 Ulrich Drepper + + * sysdeps/unix/sysv/linux/i386/clone.S: Make sure child gets a + stack which is aligned (mod 16). + +2003-09-17 Uwe Reimann + Hans-Peter Nilsson + + * sysdeps/cris/dl-machine.h (elf_machine_type_class): Classify + R_CRIS_GLOB_DAT as ELF_RTYPE_CLASS_PLT. Clarify comment. + +2003-09-17 Jakub Jelinek + + * dirent/scandir.c: Include bits/libc-lock.h. + (struct scandir_cancel_struct): New type. + (cancel_handler): New function. + (SCANDIR): Add __libc_cleanup_{push,pop}, save state into + scandir_cancel_struct. + +2003-09-16 Ulrich Drepper + + * sysdeps/unix/sysv/linux/Dist: Remove internal_statvfs.c. + * sysdeps/unix/sysv/linux/Makefile [subdir=io] (sysdep_routines): + Add internal_statvfs. + * sysdeps/unix/sysv/linux/fstatvfs.c: Call __internal_statvfs + instead of including "internal_statvfs.c". + * sysdeps/unix/sysv/linux/statvfs.c: Likewise. + * sysdeps/unix/sysv/linux/internal_statvfs.c: Make it a real function. + Add code to avoid the stat calls on all the reported mount points + when we can determine mismatch in advance. + * sysdeps/unix/sysv/linux/linux_fsinfo.h: Add AUTOFS_SUPER_MAGIC and + USBDEVFS_SUPER_MAGIC. + +2003-09-16 Jakub Jelinek + + * posix/Versions (sched_getaffinity, sched_setaffinity): Change + from GLIBC_2.3.2 to GLIBC_2.3.3 symbol version. + +2003-09-16 Bruno Haible + + * intl/tst-gettext2.sh: Set GCONV_PATH and LOCPATH only after + invoking msgfmt, not before. + +2003-09-15 Jakub Jelinek + + * argp/argp.h (argp_parse, __argp_parse): Remove __THROW. + * argp/Makefile (CFLAGS-argp-help.c, CFLAGS-argp-parse.c): Add + $(uses-callbacks). + * dirent/Makefile (CFLAGS-scandir.c, CFLAGS-scandir64.c): Likewise. + * elf/Makefile (CFLAGS-dl-iterate-phdr.c, + CFLAGS-dl-iterate-phdr-static.c): Add $(uses-callbacks). + * elf/dl-iteratephdr.c (cancel_handler): New function. + (__dl_iterate_phdr): Add __libc_cleanup_{push,pop}. + * elf/link.h (dl_iterate_phdr): Remove __THROW. + * io/Makefile (CFLAGS-fts.c): Merge into one assignment. + Add $(uses-callbacks). + (CFLAGS-ftw.c, CFLAGS-ftw64.c): Add $(uses-callbacks). + * misc/Makefile (CFLAGS-tsearch.c, CFLAGS-lsearch.c): Change + $(exceptions) to $(uses-callbacks). + * Makeconfig (uses-callbacks): Set to $(exceptions). + * posix/Makefile (CFLAGS-glob.c, CFLAGS-glob64.c): Add + $(uses-callbacks). + * stdlib/Makefile (CFLAGS-bsearch.c, CFLAGS-msort.c, CFLAGS-qsort.c): + Likewise. + +2003-09-15 Andreas Schwab + + * sysdeps/m68k/setjmp.c: Add hidden_def. + +2003-09-14 Ulrich Drepper + + * libio/memstream.c (open_memstream): Don't allow wide char operations. + + * dirent/dirent.h: Remove __THROW from scandir. + +2003-09-14 Philip Blundell + + * sysdeps/unix/sysv/linux/arm/mmap.S: Use sys_mmap2 if it's known + to be available. + + * sysdeps/unix/sysv/linux/arm/mmap64.S: Optimise code a little. + + * sysdeps/arm/memset.S: Rewrite. + +2003-09-12 Jakub Jelinek + + * sysdeps/unix/sysv/linux/s390/bits/typesizes.h: New. + (__SSIZE_T_TYPE): Define to __SWORD_TYPE for gcc 2.95.x and + __SLONGWORD_TYPE otherwise. + +2003-09-14 Ulrich Drepper + + * io/Makefile (CFLAGS-ftw.c): Add -fexceptions. + (CFLAGS-ftw64.c): Likewise. + +2003-09-13 Ulrich Drepper + + * nscd/Makefile (CFLAGS-nscd_getpw_r.c): Add -fexceptions. + (CFLAGS-nscd_getgr_r.c): Likewise. + (CFLAGS-nscd_gethst_r.c): Likewise. + +2003-09-12 Ulrich Drepper + + * sysdeps/unix/sysv/linux/if_index.c: Use only non-cancelable + interfaces. + + * grp/Makefile (CFLAGS-getgrgid_r.c, CFLAGS-getgrnam_r.c, + CFLAGS-fgetgrent.c, CFLAGS-fgetgrent_r.c, CFLAGS-putgrent.c, + CFLAGS-initgroups.c, CFLAGS-getgrgid.c): Add -fexceptions. + * inet/Makefile (CFLAGS-either_ntoh.c, CFLAGS-either_hton.c, + CFLAGS-getnetgrent.c, CFLAGS-getnetgrent_r.c): Likewise. + * io/Makefile (CFLAGS-posix_fallocate.c, CFLAGS-posix_fallocate64.c): + Likewise. + * misc/Makefile (CFLAGS-err.c): Likewise. + * posix/Makefile (CFLAGS-getaddrinfo.c, CFLAGS-spawn.c, + CFLAGS-spawnp.c, CFLAGS-spawni.c, CFLAGS-pause.c, CFLAGS-glob.c, + CFLAGS-glob64.c): Likewise. + * pwd/Makefile (CFLAGS-getpw.c): Likewise. + * shadow/Makefile (CFLAGS-fgetspent.c, CFLAGS-fgetspent_r.c, + CFLAGS-putspent.c, CFLAGS-getspnam.c, CFLAGS-getspnam_r.c): Likewise. + * stdio-common/Makefile (CFLAGS-cuserid.c): Likewise. + * sunrpc/Makefile (CFLAGS-openchild.c): Likewise. + + * stdlib/Makefile (CFLAGS-mkstemp.c): Remove definition. + + * libio/stdio.h: Remove __THROW from cuserid prototype. + + * locale/loadarchive.c: Use only non-cancelable interfaces. + * resolv/herror.c (herror): Likewise. + + * malloc/hooks.c: Before using IO stream mark stream so it uses + only non-cancelable interfaces. + * malloc/malloc.c: Likewise. + * posix/getopt.c: Likewise. + + +2003-09-11 Jakub Jelinek + + * Makerules (LDFLAGS-c.so): Remove -u __register_frame. + +2003-09-12 Ulrich Drepper + + * stdio-common/stdio_ext.h: Mark most functions with __THROW. + + * misc/err.h: Remove __THROW from all prototypes. + + * posix/getopt.h (__THROW): Define if not already defined. Add + __THROW to the getopt functions. + +2003-09-11 Ulrich Drepper + + * io/Makefile (CFLAGS-lockf.c): Add -fexceptions. + (CFLAGS-fts.c): Likewise. + * io/fcntl.h: Remove __THROW from lockf prototypes. + * io/fts.h: Remove most __THROW. + +2003-09-11 H.J. Lu + + * elf/tls-macros.h (TLS_IE): Add a stop bit for ia64. + (TLS_LD): Likewise. + (TLS_GD): Likewise. + +2003-09-11 Jakub Jelinek + + * libio/fileops.c (_IO_new_file_overflow): Add INTUSE to + _IO_free_backup_area call. + +2003-09-10 Chris Demetriou + + * sysdeps/unix/sysv/linux/mips/pread64.c (__libc_pread64): Fix + syscall invocation. + * sysdeps/unix/sysv/linux/mips/pwrite64.c (__libc_pwrite64): Likewise. + * sysdeps/unix/sysv/linux/mips/pread.c (__libc_pread): Likewise. + Also, only assert off_t size is 4 for N32 and O32, and clean up + white space. + * sysdeps/unix/sysv/linux/mips/pwrite.c (__libc_pwrite): Likewise. + +2003-09-10 Roland McGrath + + * sysdeps/unix/sysv/linux/tcgetattr.c (__tcgetattr): + Don't use c_ispeed under [! _HAVE_STRUCT_TERMIOS_C_ISPEED]. + Don't use c_ospeed under [! _HAVE_STRUCT_TERMIOS_C_OSPEED]. + * sysdeps/unix/sysv/linux/tcsetattr.c (tcsetattr): Likewise. + Reported by Daniel Jacobowitz . + +2003-09-10 Jakub Jelinek + + * string/Makefile (strop-tests): Add memccpy. + * string/test-memccpy.c: New test. + +2003-09-09 Jakub Jelinek + + * sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h (SIGCONTEXT): Add + siginfo_t * argument before, change into struct ucontext *. + (SIGCONTEXT_EXTRA_ARGS): Define to _si,. + (GET_PC, GET_FRAME, GET_STACK): Adjust for ctx being a pointer + instead of structure. + * sysdeps/unix/sysv/linux/x86_64/register-dump.h (REGISTER_DUMP): + Likewise. + +2003-09-09 Ulrich Drepper + + * string/stratcliff.c (main): Check memccpy. + +2003-04-11 Jes Sorensen + + * sysdeps/ia64/memccpy.S: When recovering for src_aligned and the + character is found during recovery, use correct register when + determining the position of the found character. + +2003-04-01 Jes Sorensen + + * sysdeps/ia64/memccpy.S: Use speculatively loads for readahead to + avoid segfaults when reading from unmapped pages. For aligned + reload and continue, for misaligned, roll back and use byte copy. + Save ar.ec on entry and restore on exit. + +2003-09-09 Chris Demetriou + + * sysdeps/unix/mips/sysdep.h (PSEUDO_END): Undef before defining. + +2003-09-08 Chris Demetriou + + * sysdeps/mips/mips64/n32/Implies: Move ieee754/ldbl-128 to + the top of the list. + * sysdeps/mips/mips64/n64/Implies: Likewise. + +2003-09-08 Roland McGrath + + * sysdeps/unix/sysv/linux/speed.c + (cfsetospeed): Only set c_ospeed under [_HAVE_STRUCT_TERMIOS_C_OSPEED]. + (cfsetispeed): Only set c_ispeed under [_HAVE_STRUCT_TERMIOS_C_ISPEED]. + * sysdeps/unix/sysv/linux/bits/termios.h + (_HAVE_STRUCT_TERMIOS_C_ISPEED, _HAVE_STRUCT_TERMIOS_C_OSPEED): Define. + * sysdeps/unix/sysv/linux/alpha/bits/termios.h: Likewise. + * sysdeps/unix/sysv/linux/powerpc/bits/termios.h: Likewise. + +2003-09-08 Ulrich Drepper + + * sysdeps/unix/sysv/linux/x86_64/register-dump.h: Undo last change. + * sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h: Likewise. + +2003-09-08 Jakub Jelinek + + * sysdeps/generic/bits/types.h (__quad_t): Make long int if 64-bit. + (__u_quad_t): Make unsigned long int if 64-bit. + (__SQUAD_TYPE): Make long int if 64-bit. + (__UQUAD_TYPE): Make unsigned long int if 64-bit. + * sysdeps/unix/sysv/linux/s390/bits/typesizes.h: Remove. + +2003-09-08 Ulrich Drepper + + * Makefile (tests): Run check-c++-types.sh if possible. + * scripts/check-c++-types.h: New file. + * scripts/data/c++-types-i386-linux-gnu.data: New file. + +2003-09-08 Andreas Jaeger + + * sysdeps/unix/sysv/linux/x86_64/register-dump.h (register_dump): + Use struct sigcontext. + + * sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h (SIGCONTEXT): + Use struct sigcontext. + (GET_PC): Adopt. + (GET_FRAME): Likewise. + (GET_STACK): Likewise. + +2003-09-08 Wolfram Gloger + + * malloc/malloc.c (sYSMALLOc): Move foreign sbrk accounting into + contiguous case. Bug report from Prem Gopalan . + (mALLOPt): Avoid requirement of C99. + +2003-09-08 Ulrich Drepper + + * libio/bug-ftell.c: Include . + (main): Mark cp as const. + +2003-09-07 Jakub Jelinek + + * sysdeps/unix/sysv/linux/syscalls.list (fcntl): Remove. + * sysdeps/unix/sysv/linux/x86_64/fcntl.c: Remove. + +2003-09-05 Roland McGrath + + * sysdeps/unix/sysv/linux/tcgetattr.c (__tcgetattr): Fill in c_ispeed + and c_ospeed fields. + * sysdeps/unix/sysv/linux/speed.c (cfsetospeed): Set c_ospeed field. + (cfsetispeed): Set c_ispeed field. + * sysdeps/unix/sysv/linux/tcsetattr.c (IBAUD0): Define unconditionally + to match corresponding speed.c code. + +2003-09-06 Ulrich Drepper + + * libio/wfileops.c (_IO_wfile_underflow): Mark beginning of the + narrow character buffer. + * libio/Makefile: Add rules to build and run bug-ftell. + * libio/bug-ftell.c: New file. + + * stdio-common/vfprintf.c: Don't use the first grouping number twice. + + * stdio-common/vfscanf.c (vfscanf): Fix recognition of characters + matching the decimal point and possibly leading the thousands + separator. This caused the recognition of thousands separators to + always fail. + +2003-09-05 Ulrich Drepper + + * libio/fileops.c (_IO_new_file_overflow): Handle switching to + write mode from read in backup buffer. + * libio/Makefile (tests): Add bug-ungetc2. + * libio/bug-ungetc2.c: New file. + +2003-09-05 Roland McGrath + + * nss/getXXbyYY.c (FUNCTION_NAME): Remove unused variable. + +2003-09-04 Roland McGrath + + * sysdeps/mach/hurd/mmap.c (__mmap): If io_map fails with MIG_BAD_ID, + EOPNOTSUPP, or ENOSYS, change it to ENODEV. + +2003-09-04 H.J. Lu + + * sysdeps/unix/sysv/linux/ia64/bits/sigstack.h (MINSIGSTKSZ): + Fix a typo. + +2003-09-05 Andreas Jaeger + + * sysdeps/i386/bits/string.h (__memrchr): Do addition in assembler + to make it conforming C. + * sysdeps/i386/i486/bits/string.h (__memrchr): Likewise. + + * sysdeps/unix/sysv/linux/i386/fcntl.c (__fcntl_nocancel): Change + prototype to use variable argument lists and get the possible one + argument via va_arg. + * sysdeps/unix/sysv/linux/fcntl.c (__fcntl_nocancel): Likewise. + * sysdeps/unix/sysv/linux/x86_64/fcntl.c: New. + +2003-09-04 Ulrich Drepper + + * posix/unistd.h: Add back __THROW to sysconf, pathconf, fpathconf. + + * sysdeps/unix/sysv/linux/pathconf.c (__statfs_filesize_max): + Report correct value for vxfs. + * sysdeps/unix/sysv/linux/linux_fsinfo.h: Define VXFS_SUPER_MAGIC. + + * gmon/gmon.c: Use only not-cancelable syscalls to write profiling + data. + + * sysdeps/generic/utmp_file.c: Use not-cancelable syscalls all + over the place. It would be allowed to have these functions as + cancellation points but the cleanup would be ugly and a lot of + work. + + * sysdeps/generic/not-cancel.h (fcntl_not_cancel): Define. + * sysdeps/unix/sysv/linux/not-cancel.h (fcntl_not_cancel): Define. + + * include/fcntl.h (__fcntl_nocancel): Declare. + * sysdeps/unix/sysv/linux/fcntl.c: New file. + * sysdeps/unix/sysv/linux/i386/fcntl.c (__libc_fcntl): Only enable + cancellation if absolutely needed. + (__fcntl_nocancel): Define. + + * posix/unistd.h (gethostid): Remove __THROW. Clarify comment. + * sysdeps/unix/sysv/linux/Makefile (CFLAGS-gethostid.c): Add + -fexceptions. + * sysdeps/unix/sysv/linux/gethostid.c (gethostid): Use + extend_alloca. + + * resolv/res_init.c (__res_nclose): Use close_not_cancel_no_status + instead of __close. + + * nss/getXXbyYY.c (FUNCTION_NAME): Add a few casts. Remove + unnecessary errno handling. + + * nss/getXXbyYY_r.c (INTERNAL): Use better variable name. + Initialize it in all cases. Change it to be a bit more like the + code we had before. + +2003-09-04 Jakub Jelinek + + * libio/fileops.c (_IO_file_read, _IO_new_file_write): Add + __builtin_expect. + (_IO_file_open): Likewise. Use close_not_cancel. + +2003-09-04 Ulrich Drepper + + * libio/libio.h: Define _IO_FLAGS2_NOTCANCEL. + * libio/fileops.c [_LIBC]: Remove close macro. + (_IO_file_open): If _IO_FLAGS2_NOTCANCEL is set, use open_not_cancel. + (_IO_new_file_open): Recognize 'c' flag in mode string. + (_IO_file_read): If _IO_FLAGS2_NOTCANCEL is set use read_not_cancel. + (_IO_new_file_write): If _IO_FLAGS2_NOTCANCEL is set use + write_not_cancel. + * iconv/gconv_conf.c: Use fopen with 'c' mode flag. + * inet/rcmd.c: Likewise. + * inet/ruserpass.c: Likewise. + * intl/localealias.c: Likewise. + * malloc/mtrace.c: Likewise. + * misc/getpass.c: Likewise. + * misc/getttyent.c: Likewise. + * misc/mntent_r.c: Likewise. + * misc/getusershell.c: Likewise. + * nss/nsswitch.c: Likewise. + * resolv/res_hconf.c: Likewise. + * resolv/res_init.c: Likewise. + * sysdeps/unix/sysv/linux/getsysstats.c: Likewise. + * time/getdate.c: Likewise. + * time/tzfile.c: Likewise. + * misc/fstab.h: Undo last change. + * misc/mntent.h: Likewise. + * misc/Makefile: Remove CFLAGS-mntent_r.c, CFLAGS-mntent.c, and + CFLAGS-fstab.c definition. + +2003-09-04 Jakub Jelinek + + * sysdeps/generic/unwind.h (_Unwind_GetBSP): Add prototype. + +2003-09-03 Ulrich Drepper + + * nss/getXXbyYY_r.c (INTERNAL): Explicitly set errno and avoid + returning ERANGE if this wasn't intended. + +2003-09-03 Jakub Jelinek + + * intl/loadmsgcat.c (open, close, read, mmap, munmap): Define as + function-like macros. + +2003-09-03 Ulrich Drepper + + * grp/Makefile (CFLAGS-getgrent_r.c): Add -fexceptions. + (CFLAGS-getgrent.c): Likewise. + * pwd/Makefile (CFLAGS-getpwent_r.c): Add -fexceptions. + (CFLAGS-getpwent.c): Likewise. + * shadow/Makefile (CFLAGS-getspent_r.c): Add -fexceptions. + (CFLAGS-getspent.c): Likewise. + + * inet/Makefile: Add -fexceptions to CFLAGS for the various + getXXent and getXXbyYY functions. + + * locale/loadlocale.c: Use not-cancelable variants of open, close, + and read. + +2003-09-02 Jakub Jelinek + + * sysdeps/unix/sysv/linux/alpha/Makefile (sysdep_routines): Remove + rt_sigsuspend, rt_sigprocmask, rt_sigtimedwait, rt_sigqueueinfo and + rt_sigpending. + * sysdeps/unix/sysv/linux/alpha/sigaction.c (__syscall_rt_sigaction): + New prototype. + * sysdeps/unix/sysv/linux/arm/syscalls.list (__syscall_*): Remove + unused __syscall_ stubs. + * sysdeps/unix/sysv/linux/arm/Makefile (sysdep_routines): Remove + rt_*. + * sysdeps/unix/sysv/linux/cris/Makefile: Removed. + * sysdeps/unix/sysv/linux/mips/mips64/syscalls.list + (__syscall_recvfrom, __syscall_sendto): Remove unused aliases. + * sysdeps/unix/sysv/linux/mips/syscalls.list (__syscall_*): Remove + unused __syscall_ stubs. + * sysdeps/unix/sysv/linux/mips/Makefile (sysdep_routines): Remove rt_*. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list + (__syscall_*): Remove unused __syscall_ stubs. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list + (__syscall_*): Likewise. + * sysdeps/unix/sysv/linux/powerpc/Makefile (sysdep_routines): Remove + rt_*. + * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (__syscall_*): + Remove unused __syscall_ stubs. + * sysdeps/unix/sysv/linux/sh/Makefile (sysdep_routines): Remove rt_*. + * sysdeps/unix/sysv/linux/rt_sigaction.c: Removed. + * sysdeps/unix/sysv/linux/rt_sigpending.c: Removed. + * sysdeps/unix/sysv/linux/rt_sigprocmask.c: Removed. + * sysdeps/unix/sysv/linux/rt_sigqueueinfo.c: Removed. + * sysdeps/unix/sysv/linux/rt_sigreturn.c: Removed. + * sysdeps/unix/sysv/linux/rt_sigsuspend.c: Removed. + * sysdeps/unix/sysv/linux/rt_sigtimedwait.c: Removed. + * sysdeps/unix/sysv/linux/s_pread64.c: Removed. + * sysdeps/unix/sysv/linux/s_pwrite64.c: Removed. + * sysdeps/unix/sysv/linux/alpha/gethostname.c: Remove unused + __syscall_* prototypes. + * sysdeps/unix/sysv/linux/alpha/ipc_priv.h: Likewise. + * sysdeps/unix/sysv/linux/alpha/msgctl.c: Likewise. + * sysdeps/unix/sysv/linux/alpha/semctl.c: Likewise. + * sysdeps/unix/sysv/linux/alpha/shmctl.c: Likewise. + * sysdeps/unix/sysv/linux/arm/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/i386/chown.c: Likewise. + * sysdeps/unix/sysv/linux/i386/fchown.c: Likewise. + * sysdeps/unix/sysv/linux/i386/fcntl.c: Likewise. + * sysdeps/unix/sysv/linux/i386/fxstat.c: Likewise. + * sysdeps/unix/sysv/linux/i386/getegid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/geteuid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setuid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/getgid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/getgroups.c: Likewise. + * sysdeps/unix/sysv/linux/i386/getmsg.c: Likewise. + * sysdeps/unix/sysv/linux/i386/xstat.c: Likewise. + * sysdeps/unix/sysv/linux/i386/getresgid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/getresuid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/getrlimit.c: Likewise. + * sysdeps/unix/sysv/linux/i386/getuid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/lchown.c: Likewise. + * sysdeps/unix/sysv/linux/i386/lockf64.c: Likewise. + * sysdeps/unix/sysv/linux/i386/lxstat.c: Likewise. + * sysdeps/unix/sysv/linux/i386/putmsg.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setfsgid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setfsuid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setgid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setgroups.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setregid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setresgid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setresuid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setreuid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setrlimit.c: Likewise. + * sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/ia64/fxstat.c: Likewise. + * sysdeps/unix/sysv/linux/ia64/lxstat.c: Likewise. + * sysdeps/unix/sysv/linux/ia64/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/ia64/sigpending.c: Likewise. + * sysdeps/unix/sysv/linux/ia64/sigprocmask.c: Likewise. + * sysdeps/unix/sysv/linux/ia64/sigsuspend.c: Likewise. + * sysdeps/unix/sysv/linux/ia64/xstat.c: Likewise. + * sysdeps/unix/sysv/linux/m68k/chown.c: Likewise. + * sysdeps/unix/sysv/linux/mips/ftruncate64.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pread.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pread64.c: Likewise. + * sysdeps/unix/sysv/linux/mips/ptrace.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pwrite.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise. + * sysdeps/unix/sysv/linux/mips/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/mips/truncate64.c: Likewise. + * sysdeps/unix/sysv/linux/mips/ustat.c: Likewise. + * sysdeps/unix/sysv/linux/mips/xmknod.c: Likewise. + * sysdeps/unix/sysv/linux/powerpc/chown.c: Likewise. + * sysdeps/unix/sysv/linux/powerpc/ioctl.c: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-32/chown.c: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-32/lchown.c: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/xstat.c: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/fxstat.c: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/lxstat.c: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/sigpending.c: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/sigprocmask.c: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/sigsuspend.c: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/sigpending.c: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/sigprocmask.c: Likewise. + * sysdeps/unix/sysv/linux/x86_64/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/pwrite.c: Likewise. + * sysdeps/unix/sysv/linux/execve.c: Likewise. + * sysdeps/unix/sysv/linux/aio_sigqueue.c: Likewise. + * sysdeps/unix/sysv/linux/reboot.c: Likewise. + * sysdeps/unix/sysv/linux/_exit.c: Likewise. + * sysdeps/unix/sysv/linux/ftruncate64.c: Likewise. + * sysdeps/unix/sysv/linux/pwrite64.c: Likewise. + * sysdeps/unix/sysv/linux/fxstat64.c: Likewise. + * sysdeps/unix/sysv/linux/gai_sigqueue.c: Likewise. + * sysdeps/unix/sysv/linux/readahead.c: Likewise. + * sysdeps/unix/sysv/linux/getcwd.c: Likewise. + * sysdeps/unix/sysv/linux/sigwait.c: Likewise. + * sysdeps/unix/sysv/linux/getdents.c: Likewise. + * sysdeps/unix/sysv/linux/readv.c: Likewise. + * sysdeps/unix/sysv/linux/getpriority.c: Likewise. + * sysdeps/unix/sysv/linux/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/ipc_priv.h: Likewise. + * sysdeps/unix/sysv/linux/llseek.c: Likewise. + * sysdeps/unix/sysv/linux/sysctl.c: Likewise. + * sysdeps/unix/sysv/linux/lxstat64.c: Likewise. + * sysdeps/unix/sysv/linux/mmap64.c: Likewise. + * sysdeps/unix/sysv/linux/ustat.c: Likewise. + * sysdeps/unix/sysv/linux/poll.c: Likewise. + * sysdeps/unix/sysv/linux/pread64.c: Likewise. + * sysdeps/unix/sysv/linux/writev.c: Likewise. + * sysdeps/unix/sysv/linux/pread.c: Likewise. + * sysdeps/unix/sysv/linux/ptrace.c: Likewise. + * sysdeps/unix/sysv/linux/sigpending.c: Likewise. + * sysdeps/unix/sysv/linux/sigprocmask.c: Likewise. + * sysdeps/unix/sysv/linux/sigqueue.c: Likewise. + * sysdeps/unix/sysv/linux/sigsuspend.c: Likewise. + * sysdeps/unix/sysv/linux/sigtimedwait.c: Likewise. + * sysdeps/unix/sysv/linux/sigwaitinfo.c: Likewise. + * sysdeps/unix/sysv/linux/truncate64.c: Likewise. + * sysdeps/unix/sysv/linux/xmknod.c: Likewise. + * sysdeps/unix/sysv/linux/xstat64.c: Likewise. + +2003-09-02 Jakub Jelinek + + * sysdeps/unix/sysv/linux/i386/sysdep.h (PSEUDO): Revert last change. + * sysdeps/unix/sysv/linux/powerpc/syscalls.list: New file. + * sysdeps/unix/sysv/linux/sparc/syscalls.list: New file. + +2003-09-02 Ulrich Drepper + + * stdio-common/Makefile (CFLAGS-vprintf.c): Add -fexceptions. + + * intl/loadmsgcat.c: For _LIBC, call not cancelable versions of + open, close, and read. + + * sysdeps/unix/sysv/linux/i386/sysdep.h (PSEUDO): Also define + *_nocancel name. + + * sysdeps/unix/sysv/linux/i386/syscalls.list: Add waitpid. + + * libio/Makefile (CFLAGS-oldtmpfile.c): Add -fexceptions. + * sysdeps/generic/tmpfile.c (tmpfile): Use __unlink instead of remove. + * libio/oldtmpfile.c (__old_tmpfile): Likewise. + + * misc/Makefile (CFLAGS-getusershell.c): Add -fexceptions. + + * io/Makefile (CFLAGS-statfs.c): Add -fexceptions. + (CFLAGS-fstatfs.c): Likewise. + (CFLAGS-statvfs.c): Likewise. + (CFLAGS-fstatvfs.c): Likewise. + +2003-09-01 Ulrich Drepper + + * misc/Makefile (CFLAGS-getsysstats.c): Add -fexceptions. + * posix/unistd.h: Remove __THROW from pathconf, fpathconf, + sysconf. + * posix/Makefile (CFLAGS-sysconf.c): Add -fexceptions. + (CFLAGS-pathconf.c): Likewise. + (CFLAGS-fpathconf.c): Likewise. + + * misc/Makefile (CFLAGS-fstab.c): Add -fexceptions. + * misc/fstab.h: Remove all __THROW. + * misc/Makefile (CFLAGS-mntent.c): Add -fexceptions. + (CFLAGS-mntent_r.c): Likewise. + * misc/mntent.h: Remove most __THROW. + + * misc/Makefile (CFLAGS-mkstemp.c): Add -fexceptions. + (CFLAGS-mkstemp64.c): Likewise. + + * sysdeps/generic/wordexp.c (parse_comm): Disable cancellation + around call to exec_comm. + * posix/wordexp.h: Remove __THROW from wordexp. + * posix/Makefile (CFLAGS-wordexp.c): Add -fexceptions. + + * sysdeps/unix/sysv/linux/getloadavg.c (getloadavg): Use + not-cancelable functions. + + * libio/Makefile (CFLAGS-oldiofopen.c): Add -fexceptions. + (CFLAGS-iofopen.c): Likewise. + (CFLAGS-iofopen64.c): Likewise. + + * stdlib/fmtmsg.c (fmtmsg): Disable cancellation around output + functions. + * stdlib/Makefile (CFLAGS-fmtmsg.c): Add -fexceptions. + * stdlib/fmtmsg.h: Remove __THROW from fmtmsg. + + * stdlib/stdlib.h: Remove __THROW from posix_openpt and getpt. + * login/Makefile (CFLAGS-getpt.c): Add -fexceptions. + +2003-09-01 Thorsten Kukuk + + * nis/nss_compat/compat-spwd.c (getspnam_plususer): Return + NSS_STATUS_SUCCESS if entry was found. + (getspent_next_file): Store user in blacklist after entry + was found, use innetgr. + +2003-09-01 Jakub Jelinek + + * sysdeps/unix/sysv/linux/powerpc/powerpc32/posix_fadvise.c: New. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/posix_fadvise64.c: New. + + * sysdeps/generic/dl-tls.c (_dl_determine_tlsoffset): Fix tls offset + computation for TCB_AT_TP. Support l_firstbyte_offset != 0 for + DTV_AT_TP, optimize. + +2003-08-31 Kaz Kojima + + * sysdeps/unix/sysv/linux/sh/Versions: Add posix_fadvise64 and + posix_fallocate64 at GLIBC_2.3.3. + * sysdeps/unix/sysv/linux/sh/sysdep.h (PSEUDO_ERRVAL): Define. + (PSEUDO_END_ERRVAL, ret_ERRVAL): Likewise. + +2003-08-08 H.J. Lu + + * sysdeps/unix/sysv/linux/ia64/syscalls.list: Remove __syscall_ + functions. + +2003-08-31 Ulrich Drepper + + * libio/libioP.h (_IO_acquire_lock_fct): Define as inline function. + Code by Richard Henderson. + +2003-08-31 Philip Blundell + + * sysdeps/unix/sysv/linux/arm/Versions: Add posix_fadvise64 and + posix_fallocate64 at GLIBC_2.3.3. + +2003-08-31 Ulrich Drepper + + * sysdeps/x86_64/bsd-_setjmp.S: Use HIDDEN_JUMPTARGET. + * include/setjmp.h: Add libc_hidden_proto for __sigsetjmp. + +2003-08-30 Jakub Jelinek + + * sysdeps/generic/sysdep.h (cfi_window_save, CFI_WINDOW_SAVE): Define. + * sysdeps/unix/sysv/linux/sparc/bits/setjmp.h: Allow file to be + included multiple times. + * sysdeps/unix/sysv/linux/sparc/sparc32/clone.S (__clone): Pass + ptid, tls, ctid arguments to the kernel. + * sysdeps/unix/sysv/linux/sparc/sparc32/getpagesize.c (__getpagesize): + Use INTERNAL_SYSCALL instead of __syscall_getpagesize. + * sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c + (__libc_sigaction): Use INLINE_SYSCALL instead of + __syscall_rt_sigaction. + * sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list + (__syscall_getgroups, __syscall_getpagesize, __syscall__llseek, + __syscall_setfsgid, __syscall_setfsuid, __syscall_setgid, + __syscall_setgroups, __syscall_setregid, __syscall_setreuid, + __syscall_ipc, __syscall_setuid, __syscall_rt_sigaction, + __syscall_rt_sigpending, __syscall_rt_sigprocmask, + __syscall_rt_sigqueueinfo, __syscall_rt_sigsuspend, + __syscall_rt_sigtimedwait): Remove unneeded syscall stubs. + * sysdeps/unix/sysv/linux/sparc/sparc32/Makefile (sysdep_routines): + Remove rt_sigsuspend, rt_sigprocmask, rt_sigtimedwait, + rt_sigqueueinfo, rt_sigaction and rt_sigpending. + * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h + (__CLONE_SYSCALL_STRING): Define. + * sysdeps/unix/sysv/linux/sparc/sparc32/socket.S (__socket): Add + CFI directives. + * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h + (__CLONE_SYSCALL_STRING): Define. + * sysdeps/unix/sysv/linux/sparc/sysdep.h (INLINE_CLONE_SYSCALL): + Define. + * sysdeps/unix/sysv/linux/sparc/system.c: New file. + +2003-08-30 Ulrich Drepper + + * sunrpc/rpc/clnt.h: Remove a few __THROW. + * sunrpc/Makefile (CFLAGS-auth_unix.c): Add -fexceptions. + (CFLAGS-key_call.c): Likewise. + (CFLAGS-pmap_rmt.c): Likewise. + (CFLAGS-clnt_perr.c): Likewise. + * sunrpc/rpc/auth.h: Remove serveral __THROW. + + * inet/Makefile (CFLAGS-gethstbyad_r.c): Add -fexceptions. + (CFLAGS-gethstbynm_r.c): Likewise. + (CFLAGS-gethstbynm2_r.c): Likewise. + (CFLAGS-rcmd.c): Likewise. + * resolv/Makefile (CFLAGS-res_hconf.c): Add -fexceptions. + + * argp/Makefile (CFLAGS-argp-help.c): Add -fexceptions. + (CFLAGS-argp-fmtstream.c): Likewise. + * argp/argp.h: Remove a number of __THROW. + + * misc/sys/syslog.h (vsyslog): Remove __THROW. + + * misc/Makefile (CFLAGS-getpass.c): Add -fexceptions. + * misc/getpass.c (getpass): Add cleanup handler to ensure the + stream is closed even if the thread is canceled. + (call_fclose): New function. + * posix/unistd.h: Remove __THROW from getpass prototype. + + * posix/Makefile (CFLAGS-getopt.c): Add -fexceptions. + + * signal/signal.h (psignal): Remove __THROW. + * stdio-common/Makefile (CFLAGS-psignal.c): Add -fexceptions. + + * misc/Makefile (CFLAGS-error.c): Define. + * misc/error.c (error): Disable cancellation handling around the + actual output. The message should in any case be printed. + (error_at_line): Likewise. + + * misc/error.h: Protect parameter names with leading __. + +2003-08-28 Carlos O'Donell + + * sysdeps/unix/sysv/linux/hppa/syscalls.list: Add semtimedop. + +2003-08-29 Jakub Jelinek + + * libio/iofgetpos64.c (_IO_new_fgetpos64): Move lock release to the + end. + +2003-08-29 Ulrich Drepper + + * libio/stdio.h: Remove a few more __THROW. + +2003-08-29 Jakub Jelinek + + * libio/Makefile: Compile fputc.c, fputwc.c, freopen64.c, freopen.c, + fseek.c, fseeko64.c, fseeko.c, ftello64.c, ftello.c, fwide.c, getc.c, + getchar.c, getwc.c, getwchar.c, iofclose.c, iofflush.c, iofgetpos64.c, + iofgetpos.c, iofgets.c, iofgetws.c, iofputs.c, iofputws.c, iofread.c, + iofsetpos64.c, iofsetpos.c, ioftell.c, iofwrite.c, iogetdelim.c, + iogetline.c, iogets.c, iogetwline.c, ioputs.c, ioseekoff.c, + ioseekpos.c, iosetbuffer.c, iosetvbuf.c, ioungetc.c, ioungetwc.c, + oldfileops.c, oldiofclose.c, oldiofgetpos64.c, oldiofgetpos.c, + oldiofsetpos64.c, oldiofsetpos.c, peekc.c, putc.c, putchar.c, putwc.c, + putwchar.c and rewind.c with exceptions. + * sysdeps/generic/bits/stdio-lock.h (_IO_acquire_lock, + _IO_release_lock): Define. + * libio/fileops.c (_IO_new_file_underflow): Use it. + * libio/fputc.c (fputc): Likewise. + * libio/fputwc.c (fputwc): Likewise. + * libio/freopen64.c (freopen64): + * libio/freopen.c (freopen): Likewise. + * libio/fseek.c (fseek): Likewise. + * libio/fseeko64.c (fseeko64): Likewise. + * libio/fseeko.c (fseeko): Likewise. + * libio/ftello64.c (ftello64): Likewise. + * libio/ftello.c (ftello): Likewise. + * libio/fwide.c (fwide): Likewise. + * libio/getc.c (_IO_getc): Likewise. + * libio/getchar.c (getchar): Likewise. + * libio/getwc.c (_IO_getwc): Likewise. + * libio/getwchar.c (getwchar): Likewise. + * libio/iofclose.c (_IO_new_fclose): + * libio/iofflush.c (_IO_fflush): Likewise. + * libio/iofgetpos64.c (_IO_new_fgetpos64): Likewise. + * libio/iofgetpos.c (_IO_new_fgetpos): Likewise. + * libio/iofgets.c (_IO_fgets): Likewise. + * libio/iofgetws.c (fgetws): Likewise. + * libio/iofputs.c (_IO_fputs): Likewise. + * libio/iofputws.c (fputws): Likewise. + * libio/iofread.c (_IO_fread): Likewise. + * libio/iofsetpos64.c (_IO_new_fsetpos64): Likewise. + * libio/iofsetpos.c (_IO_new_fsetpos): Likewise. + * libio/ioftell.c (_IO_ftell): Likewise. + * libio/iofwrite.c (_IO_fwrite): Likewise. + * libio/iogetdelim.c (_IO_getdelim): Likewise. + * libio/iogets.c (_IO_gets): Likewise. + * libio/ioputs.c (_IO_puts): Likewise. + * libio/ioseekoff.c (_IO_seekoff): Likewise. + * libio/ioseekpos.c (_IO_seekpos): Likewise. + * libio/iosetbuffer.c (_IO_setbuffer): Likewise. + * libio/iosetvbuf.c (_IO_setvbuf): Likewise. + * libio/ioungetc.c (_IO_ungetc): Likewise. + * libio/ioungetwc.c (ungetwc): Likewise. + * libio/oldiofclose.c (_IO_old_fclose): Likewise. + * libio/oldiofgetpos64.c (_IO_old_fgetpos64): Likewise. + * libio/oldiofgetpos.c (_IO_old_fgetpos): Likewise. + * libio/oldiofsetpos64.c (_IO_old_fsetpos64): Likewise. + * libio/oldiofsetpos.c (_IO_old_fsetpos): Likewise. + * libio/peekc.c (_IO_peekc_locked): Likewise. + * libio/putc.c (_IO_putc): Likewise. + * libio/putchar.c (putchar): Likewise. + * libio/putwc.c (putwc): Likewise. + * libio/putwchar.c (putwchar): Likewise. + * libio/rewind.c (rewind): Likewise. + * libio/wfileops.c (_IO_wfile_underflow): Likewise. + +2003-08-29 Ulrich Drepper + + * signal/signal.h: sighold, sigrelse, sigignore, sigset were + available in XPG4.2. + +2003-08-27 Phil Knirsch + Jakub Jelinek + + * sunrpc/svc.c (svc_getreqset): Fix fds_bits reading on 64-bit + big endian arches. Don't read beyond end of fds_bits array. + +2003-04-27 Bruno Haible + + * manual/message.texi (Advanced gettext functions): Add information + about Korean, Portuguese, Latvian. Gaeilge is also known as Irish. + Add section about Lithuanian, reported by Ricardas Cepas + . + Add information about Croatian. + Ukrainian is like Russian, reported by Andy Rysin . + Remove remark about continuation lines that is not true for PO files. + Fix formula for Slovenian, reported by Roman Maurer + . + +2003-08-27 Ulrich Drepper + + * math/math_private.h: Declare __copysignf. + * sysdeps/ieee754/flt-32/s_scalbnf.c: Use __copysignf instead of + copysignf. + + * sysdeps/x86_64/fpu/bits/mathinline.h: Define __signbitf, + __signbit, and __signbitl inline functions. + + * sysdeps/unix/sysv/linux/x86_64/__start_context.S: Use + HIDDEN_JUMPTARGET instead of JUMPTARGET to call exit(). + + * sysdeps/x86_64/bsd-_setjmp.S [PIC]: Jump to __GI___sigsetjmp. + * sysdeps/x86_64/setjmp.S: Add libc_hidden_def for __sigsetjmp. + +2003-08-27 Jakub Jelinek + + * inet/inet_mkadr.c (inet_makeaddr): Optimize. + +2003-08-27 Ulrich Drepper + + * include/stdio.h: Add declarations for __builtin_fwrite and + __builtin_fwrite_unlocked. + +2003-08-27 Jakub Jelinek + + * sysdeps/unix/opendir.c (__opendir): Make sure even struct dirent64 + fits into allocation. Add padding on 32-bit arches so that + dirp->data is enough aligned for struct dirent64. + Avoid clearing of the buffer, just clear DIR structure. + +2003-08-26 Ulrich Drepper + + * nss/nsswitch.c: Add libc_hidden_def for __nss_lookup_function. + * nss/nsswitch.h: Add libc_hidden_proto for __nss_lookup_function. + +2003-08-26 Steven Munroe + + * sysdeps/powerpc/powerpc64/elf/Makefile: New file. + +2003-08-26 Jakub Jelinek + + * login/programs/utmpdump.c (print_entry): Cast tv_usec to long + to match format string. + * sysdeps/unix/sysv/linux/sparc/sparc32/semctl.c (union semun): Add + __old_buf. + (__new_semctl): Shut up warning. + * sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.h + (_dl_string_hwcap): Add __attribute__ ((always_inline)). + +2003-08-26 Jakub Jelinek + + * elf/ldconfig.c (search_dir): When checking for GNU-style .so + link file use the real file name, not the resolved name we got by + following the symlinks. + +2003-08-25 Ulrich Drepper + + * libio/oldfileops.c (_IO_old_file_init): Initialize _mode field + if the object size is large enough. + +2003-08-25 Jakub Jelinek + + * elf/ldconfig.c (search_dir): Treat symlink as regular file + if it won't point to itself unless it is .so symlink for the linker. + +2003-08-25 Ulrich Drepper + + * libio/libio.h (_IO_fwide): In the mode==0 optimization, don't + use _mode if _IO_fwide_maybe_incompatible. + * libio/iofwide.c (_IO_fwide): Move the test for mode == 0 after + the compatibility test. + +2003-08-25 Jakub Jelinek + + * elf/cache.c (save_cache): Don't write beyond end of file_entries + buffer. + Duplicate last old cache entry if the count would be odd. + +2003-08-25 Andreas Jaeger + + * sysdeps/unix/sysv/linux/posix_fadvise64.c: Cast arguments of + __LONG_LONG_PAIR to long. + +2003-08-25 Philip Blundell + + * sysdeps/unix/sysv/linux/arm/sysdep.h (PSEUDO_ERRVAL): Define. + (PSEUDO_END_ERRVAL, ret_ERRVAL): Likewise. + +2003-08-18 Alfred M. Szmidt + + * sysdeps/generic/bits/libc-lock.h (__libc_cleanup_pop): Redefine + and use __libc_cleanup_region_end instead. + +2003-08-25 Ulrich Drepper + + * elf/ldconfig.c (search_dir): Revert patch of 2003-7-21. + +2003-08-22 Ulrich Drepper + + * io/fcntl.h (posix_fallocate): Change type of third parameter to + off_t. + (posix_fallocate64): Change type of third parameter to off64_t. + * sysdeps/generic/posix_fallocate.c: Adjust for type change. + * sysdeps/posix/posix_fallocate.c: Likewise. + * sysdeps/generic/posix_fallocate64.c: Likewise. + * sysdeps/posix/posix_fallocate64.c: Likewise. Add compatibility + code for 32-bit platforms. + * sysdeps/unix/sysv/linux/i386/Versions: Add new version for + posix_fallocate64. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-32/Versions: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc32/Versions: Likewise. + +2003-08-19 Ulrich Drepper + + * string/bits/string2.h (__STRING2_COPY_TYPE): Add attribute to + the type, not to name. + + * stdio-common/test-vfprintf.c (main): Don't write temporary file + into source directory. + + * malloc/malloc.c (_int_free): Add cheap test for some invalid + block sizes. + + * sysdeps/unix/sysv/linux/i386/posix_fadvise64.S: Fix typo in + syscall name. + +2003-08-18 Ulrich Drepper + + * sysdeps/unix/sysv/linux/shm_open.c (shm_open): Fold EISDIR error + into EINVAL. + +2003-08-18 H.J. Lu + + * sysdeps/ia64/dl-machine.h (elf_machine_rela): Use _dl_reloc_bad_type. + (elf_machine_lazy_rel): Likewise. + +2003-08-18 Art Haas + + * malloc/malloc.h: Remove unneeded ';' where closing the C++ + extern block. + +2003-08-18 Ulrich Drepper + + * sysdeps/ia64/dl-fptr.h (ELF_MACHINE_LOAD_ADDRESS): Support + loading big binaries where @gprel(sym) cannot be handled in 'add' + but instead has to be used with 'movl'. + +2003-08-17 Juergen Kreileder + Andreas Jaeger + + * sysdeps/x86_64/bits/byteswap.h: New file. + +2003-08-17 Andreas Jaeger + + * sysdeps/unix/sysv/linux/i386/posix_fadvise64.S: Fix typo. + +2003-08-16 Jakub Jelinek + + * sysdeps/powerpc/powerpc32/sysdep.h (PSEUDO_ERRVAL, + PSEUDO_RET_ERRVAL, ret_ERRVAL, PSEUDO_END_ERRVAL): Define. + * sysdeps/powerpc/powerpc64/sysdep.h (PSEUDO_ERRVAL, + PSEUDO_RET_ERRVAL, ret_ERRVAL, PSEUDO_END_ERRVAL): Define. + * sysdeps/unix/alpha/sysdep.h (PSEUDO_ERRVAL, + ret_ERRVAL, PSEUDO_END_ERRVAL): Define. + * sysdeps/unix/mips/sysdep.h (PSEUDO_ERRVAL, + ret_ERRVAL, PSEUDO_END_ERRVAL): Define. + * sysdeps/unix/sparc/sysdep.h (PSEUDO_ERRVAL, + ret_ERRVAL): Define. + * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h (PSEUDO_ERRVAL, + PSEUDO_END_ERRVAL, ret_ERRVAL): Define. + * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h (PSEUDO_ERRVAL, + PSEUDO_END_ERRVAL, ret_ERRVAL): Define. + * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h (PSEUDO_ERRVAL): + Define. + * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h (PSEUDO_ERRVAL, + PSEUDO_END_ERRVAL, ret_ERRVAL): Define. + * sysdeps/unix/sysdep.h (PSEUDO_END_ERRVAL): Define. + + * sysdeps/unix/sysv/linux/syscalls.list (posix_fadvise64, + posix_fadvise64_64): Remove. + * sysdeps/unix/sysv/linux/alpha/syscalls.list (posix_fadvise64): Add + V flag. + * sysdeps/unix/sysv/linux/ia64/syscalls.list (posix_fadvise64): + Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list + (posix_fadvise64): Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list + (posix_fadvise64): Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list + (posix_fadvise64): Likewise. + * sysdeps/unix/sysv/linux/x86_64/syscalls.list (posix_fadvise64): + Likewise. + * sysdeps/unix/sysv/linux/i386/posix_fadvise64_64.S: Moved to... + * sysdeps/unix/sysv/linux/i386/posix_fadvise64.S: ...here. + (__posix_fadvise64_l64): Fix a typo in fadvise64 syscall invocation. + (__posix_fadvise64_l32): New function. + * sysdeps/unix/sysv/linux/i386/Makefile: Revert last change. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions (libc): Export + posix_fadvise64@@GLIBC_2.3.3. + * sysdeps/unix/sysv/linux/s390/s390-32/Versions (libc): Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc32/Versions (libc): Likewise. + * sysdeps/unix/sysv/linux/posix_fadvise.c (posix_fadvise): Return + error value. + * sysdeps/unix/sysv/linux/posix_fadvise64.c: New file. + + * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h + (SYSCALL_ERROR_HANDLER): Use TLS errno/__libc_errno if USE___THREAD. + +2003-08-15 Jakub Jelinek + + * sysdeps/sparc/sparc32/dl-machine.h (WEAKADDR): Remove. + (elf_machine_matches_host): Remove weak extern stuff. + Use GL(dl_hwcap) unconditionally and GL(dl_hwcap_mask) if SHARED. + (elf_machine_runtime_setup, sparc_fixup_plt): Remove weak extern + stuff. Use GL(dl_hwcap) unconditionally. + +2003-08-16 Alan Modra + + * sysdeps/powerpc/powerpc64/elf/start.S: Add a nop after + __libc_start_main branch. + +2003-08-16 Jakub Jelinek , + Andreas Jaeger + + * sysdeps/generic/posix_fadvise.c (posix_fadvise): Return ENOSYS + instead of setting errno. + * sysdeps/generic/posix_fadvise64.c (posix_fadvise64): Likewise. + +2003-08-16 Andreas Jaeger + + * sysdeps/generic/posix_fadvise.c (posix_fadvise): Adjust prototype. + * sysdeps/generic/posix_fadvise64.c (posix_fadvise64): Likewise. + +2003-08-15 Ulrich Drepper + + * io/fcntl.h (posix_fadvise64): Change type of third parameter to + off_t. + * sysdeps/unix/sysv/linux/posix_fadvise.c: Adjust definition. + * sysdeps/unix/make-syscalls.sh: Recognize V prefix to the parameter + description indicating the error value is returned, not -1. + * sysdeps/unix/sysv/linux/kernel-features.h: Add definition of + __ASSUME_FADVISE64_64_SYSCALL. + * sysdeps/unix/sysv/linux/syscalls.list: Don't define madvise and + posix_madvise in one file. Have posix_madvise defined with error + value returned. + Define posix_fadvise64_64 entry. Add version info to posix_fadvise64 + entry. + * sysdeps/unix/sysv/linux/i386/posix_fadvise.S: New file. + * sysdeps/unix/sysv/linux/i386/sysdep.h: Define PSEUDO_ERRVAL, + PSEUDO_END_ERRVAL, and ret_ERRVAL. + * sysdeps/unix/sysv/linux/ia64/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/i386/Versions [GLIBC_2.3.3]: Add + posix_fadvise64. + + * posix/Makefile (routines): Add posix_madvise. + * sysdeps/generic/madvise.c: Don't define posix_madvise. + * sysdeps/generic/posix_madvise.c: New file. + * sysdeps/unix/sysv/aix/posix_madvise.c: New file. + * sysdeps/unix/sysv/linux/i386/Makefile [subdir=io] (subdir_routines): + Add posix_fadvise64_64. + +2003-08-15 Jakub Jelinek + + * assert/assert.h (assert_perror): Use __builtin_expect for gcc >= + 3.0, not for !gcc or gcc < 3.0. + +2003-08-11 Carlos O'Donell + + * dlfcn/default.c (main): Cast dlsym loaded value to same type as main. + Address passed to test_in_mod1 and test_in_mod2 without casting. + * dlfcn/defaultmod1.c: Change prototype of test_in_mod1. + (test_in_mod1): Cast dlsym loaded value to same type as mainp. + * dlfcn/defaultmod2.c: Change prototype of test_in_mod2. + (test_in_mod2): Cast dlsym loaded value to same type as mainp. + +2003-08-15 Jakub Jelinek + + * sysdeps/sparc/sparc32/elf/configure.in (libc_cv_sparc32_tls): + Change quotes before using []. + + * sysdeps/unix/sysv/linux/sparc/sys/user.h: New file. + + * sysdeps/sparc/sparc32/bits/atomic.h (__sparc32_atomic_lock): + Renamed to... + (__sparc32_atomic_locks): ...this. Change into 64-byte array. + (__sparc32_atomic_do_lock, __sparc32_atomic_do_unlock): Add addr + argument. Select one of 64 locks from address bits. + (atomic_compare_and_exchange_val_acq, + atomic_compare_and_exchange_bool_acq): Pass memory address to + __sparc32_atomic_do_{,un}lock. + +2003-08-14 Ulrich Drepper + + * assert/assert.h (assert): Use !! in front of expression to allow + use of pointers. + + * iconvdata/cp932.c: Fixed checking of a few border of code areas. + Changed conversion of JIS X 0201 from using a table to calculating. + * iconvdata/euc-jp-ms.c: Fixed conversion table and rewrote + conversion routine. Changed CHARSET_NAME definition from EUCJP-MS to + EUC-JP-MS. + * iconvdata/tst-tables.sh: Add CP932 and EUC-JP-MS. + * iconvdata/CP932.irreversible: New file. + * iconvdata/EUC-JP-MS.irreversible: New file. + Patch by MORIYAMA Masayuki . + +2003-08-13 Ulrich Drepper + + * sysdeps/unix/sysv/linux/i386/syscalls.list: Add time syscall. + + * elf/Makefile: Use LC_ALL=C in a few cases where we call external + text processing tools. + + * sysdeps/pthread/aio_misc.h (struct waitlist): Don't add caller_pid + element unless BROKEN_THREAD_SIGNALS is defined. + (struct requestlist): Likewise. + * sysdeps/pthread/aio_misc.c (__aio_enqueue_request): Don't fill in + caller_pid of new request unless BROKEN_THREAD_SIGNALS is defined. + * sysdeps/pthread/aio_suspend.c (aio_suspend): Likewise. + * sysdeps/pthread/aio_notify.c (__aio_notify_only): Remove caller_pid + parameter unless BROKEN_THREAD_SIGNALS is defined. Adjust callers. + Pass current PID to __aio_sigqueue. + * sysdeps/pthread/lio_listio.c (lio_listio): Adjust __aio_notify_only + call. Don't initialize caller_pid field of waitlist element. + +2003-08-12 Jakub Jelinek + + * libio/libioP.h (_IO_vtable_offset): Define. + * libio/freopen.c (freopen): Use it. + * libio/ioputs.c (_IO_puts): Likewise. + * libio/freopen64.c (freopen64): Likewise. + * libio/genops.c (__underflow, __uflow, _IO_flush_all_lockp): + Likewise. + * libio/iofclose.c (_IO_new_fclose): Likewise. + * libio/iofputs.c (_IO_fputs): Likewise. + * libio/ioftell.c (_IO_ftell): Likewise. + * libio/iofwrite.c (_IO_fwrite): Likewise. + * libio/ioseekoff.c (_IO_seekoff_unlocked): Likewise. + * libio/iosetbuffer.c (_IO_setbuffer): Likewise. + * stdio-common/vfprintf.c (ORIENT, vfprintf): Likewise. + * stdio-common/vfscanf.c (ORIENT): Likewise. + +2003-08-11 Ulrich Drepper + + * assert/assert.h: Use __builtin_expect in assert and + assert_perror definitions if possible. + +2003-08-07 Jakub Jelinek + + * sysdeps/generic/ldsodefs.h (_rtld_global): Add + _dl_rtld_lock_recursive and _dl_rtld_unlock_recursive. + * elf/rtld.c (rtld_lock_default_lock_recursive, + rtld_lock_default_unlock_recursive): New functions. + (dl_main): Initialize _dl_rtld_lock_recursive and + _dl_rtld_unlock_recursive. + +2003-08-05 Jakub Jelinek + + * elf/ldconfig.c (main): Append SLIBDIR and LIBDIR to + config_file directories instead of prepending. + +2003-08-02 Ulrich Drepper + + * sysdeps/unix/sysv/linux/kernel-features.h: Define + __ASSUME_CLONE_STOPPED. + +2003-08-01 Ulrich Drepper + + * sysdeps/generic/bits/libc-lock.h + (__libc_cleanup_push,__libc_cleanup_pop): Define even here. + +2003-08-01 Roland McGrath + + * sysdeps/mach/hurd/getdents.c: Just use sysdeps/generic/getdents.c. + +2003-07-31 Jakub Jelinek + + * sysdeps/generic/bits/types.h (__ssize_t): Use __SSIZE_T_TYPE + instead of __SWORD_TYPE. + * sysdeps/generic/bits/typesizes.h (__SSIZE_T_TYPE): Define. + * sysdeps/mach/hurd/bits/typesizes.h (__SSIZE_T_TYPE): Define. + * sysdeps/unix/bsd/bsd4.4/freebsd/bits/typesizes.h (__SSIZE_T_TYPE): + Define. + * sysdeps/unix/sysv/linux/alpha/bits/typesizes.h (__SSIZE_T_TYPE): + Define. + * sysdeps/unix/sysv/linux/sparc/bits/typesizes.h (__SSIZE_T_TYPE): + Define. + * sysdeps/unix/sysv/linux/s390/bits/typesizes.h: New file. + + * dlfcn/dlerror.c (once): New. + (dlerror): Call __libc_once. + (_dlerror_run): Remove once. + + * sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h (struct sigcontext): + Sync with 2.5.7 and 2.5.73 kernel changes. + + * dlfcn/eval.c (funcall): Add noinline attribute to shut up warnings. + * elf/rtld.c (dl_main): Cast ElfW(Addr) arguments with %Zx/%Zd + formats to size_t. + * elf/dl-lookup.c (_dl_debug_bindings): Likewise. + * elf/tst-tls6.c (do_test): Use %zd format for l_tls_modid. + * elf/tst-tls8.c (do_test): Use %zd format for modid1 and modid2. + * gmon/tst-sprofil.c (main): Add parens to shut up warning. + * iconv/tst-iconv3.c (main): Use %td instead of %zd for pointer + difference argument. + * stdio-common/tst-wc-printf.c (main): Cast arguments with %C + format to wint_t. + * stdlib/tst-limits.c (main): For WORD_BIT and LONG_BIT, use + %d format and cast expected value to int. + * sysdeps/generic/libc-start.c (STATIC): Add + __attribute__((always_inline) if LIBC_START_MAIN is already defined. + * sysdeps/powerpc/fpu/w_sqrt.c (a_nan, a_inf): Change from uint32_t + to ieee_float_shape_type. + (__sqrt): Avoid type punning. + * sysdeps/powerpc/fpu/w_sqrtf.c (a_nan, a_inf): Change from uint32_t + to ieee_float_shape_type. + (__sqrtf): Avoid type punning. + * sysdeps/s390/s390-32/dl-machine.h (elf_machine_rela): Don't define + refsym if in dl-conflict.c. + * sysdeps/s390/s390-64/dl-machine.h (elf_machine_rela): Likewise. + * sysdeps/unix/sysv/linux/i386/semctl.c (union semun): Add __old_buf. + (__new_semctl): Shut up warning. + * sysdeps/unix/sysv/linux/semctl.c (union semun): Add __old_buf. + (__new_semctl): Shut up warning. + * sysdeps/unix/sysv/linux/shmctl.c (__new_shmctl): Wrap long lines. + Change old into union of __old_shmid_ds and __old_shminfo structs. + Adjust all users. + * wcsmbs/wcsmbs-tst1.c (main): Cast arguments with %C format to wint_t. + + * sysdeps/unix/sysv/linux/utimes.c (__utimes): Fix actime and + modtime computation. + * sysdeps/unix/sysv/linux/futimes.c (__futimes): Likewise. + * sysdeps/posix/utimes.c (__utimes): Likewise. + +2003-07-30 Jakub Jelinek + + * elf/dl-reloc.c (_dl_allocate_static_tls): Don't return any value, + call dl_signal_error directly. If already relocated, call + GL(dl_init_static_tls) directly, otherwise queue it for later. + (CHECK_STATIC_TLS): Undo 2003-07-24 change. + * elf/rtld.c (dl_main): Initialize GL(dl_init_static_tls). + * elf/dl-open.c (dl_open_worker): Call GL_dl_init_static_tls + for all static TLS initializations delayed in _dl_allocate_static_tls. + * elf/dl-support.c (_dl_init_static_tls): New variable. + * include/link.h (struct link_map): Add l_need_tls_init. + * sysdeps/generic/ldsodefs.h (_rtld_global): Add _dl_init_static_tls. + (_dl_nothread_init_static_tls): New prototype. + (_dl_allocate_static_tls): Adjust prototype. + + * elf/tls-macros.h (VAR_INT_DEF): Add alignment directive. + +2003-07-31 Alexandre Oliva + + * elf/dynamic-link.h (elf_machine_rel, elf_machine_rela, + elf_machine_rel_relative, elf_machine_rela_relative): Don't assume + reloc_addr is aligned. + * sysdeps/alpha/dl-machine.h (elf_machine_rela, + elf_machine_rela_relative): Adjust. + * sysdeps/arm/dl-machine.h (elf_machine_rel, elf_machine_rela, + elf_machine_rel_relative, elf_machine_rela_relative): Adjust. + * sysdeps/cris/dl-machine.h (elf_machine_rela, + elf_machine_rela_relative): Adjust. + * sysdeps/hppa/dl-machine.h (elf_machine_rela, + elf_machine_rela_relative): Adjust. + * sysdeps/i386/dl-machine.h (elf_machine_rel, elf_machine_rela, + elf_machine_rel_relative, elf_machine_rela_relative): Adjust. + * sysdeps/ia64/dl-machine.h (elf_machine_rela, + elf_machine_rela_relative): Adjust. + * sysdeps/m68k/dl-machine.h (elf_machine_rela, + elf_machine_rela_relative): Adjust. + * sysdeps/mips/dl-machine.h (elf_machine_rela, + elf_machine_rela_relative): Adjust. + * sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela, + elf_machine_rela_relative): Adjust. + * sysdeps/powerpc/powerpc64/dl-machine.h + (elf_machine_rela_relative, elf_machine_rela): Adjust. + * sysdeps/s390/s390-32/dl-machine.h (elf_machine_rela, + elf_machine_rela_relative): Adjust. + * sysdeps/s390/s390-64/dl-machine.h (elf_machine_rela, + elf_machine_rela_relative): Adjust. + * sysdeps/sh/dl-machine.h (elf_machine_rela, + elf_machine_rela_relative): Adjust. + * sysdeps/sparc/sparc32/dl-machine.h (elf_machine_rela, + elf_machine_rela_relative): Adjust. + * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rela, + elf_machine_rela_relative): Adjust. + * sysdeps/x86_64/dl-machine.h (elf_machine_rela, + elf_machine_rela_relative): Adjust. + +2003-07-29 Ulrich Drepper + + * sysdeps/generic/dl-tls.c (_dl_determine_tlsoffset): Restore + alignment of TCB used before the last change so that it matches + ld's output for IE code. + +2003-07-29 Jakub Jelinek + + * include/ctype.h (__ctype_b_loc, __ctype_toupper_loc, + __ctype_tolower_loc): Avoid "dereferencing type-punned pointer will + break strict-aliasing rules" warnings. + +2003-07-29 Roland McGrath + + * elf/Makefile: Revert accidental changes in last commit. + * elf/dl-support.c: Likewise. + + * rt/tst-timer2.c: New file. + * rt/Makefile (tests): Add it. + +2003-07-25 Jakub Jelinek + + * elf/dl-support.c (_dl_hwcap): Add nocommon attribute. + +2003-07-29 Roland McGrath + + * elf/Makefile (tests) [$(build-shared) = yes]: + Depend on $(test-modules). + * dlfcn/Makefile: Likewise. + +2003-07-28 Roland McGrath + + * sysdeps/generic/bits/types.h (__STD_TYPE): New macro. + Use that instead of `typedef' when using __*_TYPE macros in rhs. + + * elf/tst-tls14.c [USE_TLS && HAVE___THREAD]: Conditionalize on this. + * elf/tst-tlsmod14a.c: Likewise. + + * sysdeps/unix/sysv/linux/sys/sysctl.h: Include + before . + +2003-07-27 Ulrich Drepper + + * sysdeps/unix/sysv/syscalls.list: time syscall never fails. + * sysdeps/unix/sysv/linux/x86_64/time.S: time syscall never fails. + * sysdeps/unix/sysv/i386/time.S: time syscall never fails. + * sysdeps/unix/syscalls.list: umask syscall never fails. + +2003-07-27 Andreas Jaeger + + * sysdeps/unix/sysv/linux/init-first.c: Mark init as used. + +2003-07-25 Jakub Jelinek + + * sysdeps/unix/sysv/linux/a.out.h: Replace with i386 version. + Include bits/a.out.h. + * sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Add + bits/a.out.h. + * sysdeps/unix/sysv/linux/bits/a.out.h: New file. + * sysdeps/unix/sysv/linux/i386/bits/a.out.h: New file. + * sysdeps/unix/sysv/linux/m68k/bits/a.out.h: New file. + * sysdeps/unix/sysv/linux/x86_64/bits/a.out.h: New file. + * sysdeps/unix/sysv/linux/alpha/a.out.h: New file. + * sysdeps/unix/sysv/linux/alpha/bits/a.out.h: New file. + * sysdeps/unix/sysv/linux/sparc/a.out.h: New file. + * sysdeps/unix/sysv/linux/sparc/bits/a.out.h: New file. + +2003-07-24 Jakub Jelinek + + * sysdeps/pthread/aio_cancel.c (aio_cancel): Return AIO_ALLDONE + if aiocbp != NULL and has already completed. Return -1/EINVAL if + aiocbp->aio_fildes does not match fildes. + +2003-07-24 Ulrich Drepper + + * timezone/zic.c (rpytime): Replace cheap overflow check with a + functioning one. + + * include/link.h (struct link_map): Add l_tls_firstbyte_offset field. + * sysdeps/generic/dl-tls.c [TLS_TCB_AT_TP] (_dl_determine_tlsoffset): + Fix calculation of offsets to take misalignment of first byte in + file into account. + * elf/dl-load.c (_dl_map_object_from_fd): Initialize + l_tls_firstbyte_offset field. + * elf/rtld.c (_dl_start_final, _dl_start, dl_main): Likewise. + * elf/dl-reloc.c (_dl_allocate_static_tls): Change return type to int. + Take l_tls_firstbyte_offset information into account. + (CHECK_STATIC_TLS): _dl_allocate_static_tls can fail now. + * sysdeps/generic/ldsodefs.h: Adjust _dl_allocate_static_tls prototype. + * elf/Makefile: Add rules to build and run tst-tls14. + * elf/tst-tls14.c: New file. + * elf/tst-tlsmod14a.c: New file. + * elf/tst-tlsmod14b.c: New file. + +2003-07-23 Jakub Jelinek + + * sysdeps/pthread/lio_listio.c (LIO_OPCODE_BASE): Define. + (lio_listio): Use it. + * sysdeps/pthread/lio_listio64.c: Include lio_listio.c instead of + after few defines to avoid duplication. + +2003-07-22 Jakub Jelinek + + * include/stdio.h (__libc_fatal): Add libc_hidden_proto. + * include/dlfcn.h (__libc_dlopen_mode, __libc_dlsym, __libc_dlclose): + Likewise. + * elf/dl-libc.c (__libc_dlopen_mode, __libc_dlsym, __libc_dlclose): + Add libc_hidden_def. + * sysdeps/generic/libc_fatal.c (__libc_fatal): Likewise. + * sysdeps/posix/libc_fatal.c (__libc_fatal): Likewise. + * sysdeps/unix/sysv/linux/libc_fatal.c (__libc_fatal): Likewise. + * elf/Versions (libc): Export __libc_dlopen_mode@@GLIBC_PRIVATE, + __libc_dlsym@@GLIBC_PRIVATE and __libc_dlclose@@GLIBC_PRIVATE. + * libio/Versions (libc): Export __libc_fatal@@GLIBC_PRIVATE. + * sysdeps/generic/unwind-dw2.c: Readd #ifs removed during last + change. + * sysdeps/generic/unwind.inc: Removed. + + * include/resolv.h (__resp): Declare. Define to __libc_resp + if in libc.so. + (_res): If USE___THREAD, define to (*__resp). + * resolv/res_libc.c (_res): Normal .bss variable with compat_symbol + even if USE___THREAD. + (__resp): New __thread variable. + (__libc_resp): New alias. + * resolv/Versions (libc): Export _res@GLIBC_2.0 even if + USE_TLS && HAVE___THREAD. Export __resp@@GLIBC_PRIVATE. + * sysdeps/generic/res-state.c (__res_state): Return __resp + if USE___THREAD. + +2003-07-22 H.J. Lu + + * elf/dl-support.c (_dl_hwcap): New variable. + (_dl_aux_init): Initialize GL(dl_hwcap) for static binaries. + + * sysdeps/i386/fpu/fclrexcpt.c: Include , + and . + (__feclearexcept): Clear MXCSR if needed. + * sysdeps/i386/fpu/fsetexcptflg.c: Likewise. + + * sysdeps/i386/fpu_control.h (_FPU_GETCW, _FPU_SETCW): Document + that newer hardware needs more than these macros. + + * sysdeps/i386/setfpucw.c: New file. + +2003-07-22 Jakub Jelinek + + * elf/Makefile (CFLAGS-ldconfig.c): Define IS_IN_ldconfig. + * elf/ldconfig.c: Include dl-procinfo.c. + (PROCINFO_CLASS): Define. + * sysdeps/generic/ldsodefs.h (PROCINFO_CLASS): Define. + * sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c: New file. + * sysdeps/unix/sysv/linux/x86_64/dl-procinfo.h: New file. + * sysdeps/unix/sysv/linux/i386/dl-procinfo.c (PROCINFO_CLASS): + Define if not yet defined. Use it instead of EXTERN. Undefine + at the end of the file. + * sysdeps/unix/sysv/linux/arm/dl-procinfo.c (PROCINFO_CLASS): + Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.c + (PROCINFO_CLASS): Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/dl-procinfo.c + (PROCINFO_CLASS): Likewise. + +2003-07-22 H.J. Lu + + * elf/ldconfig.c (main): Issue a fatal error if relative path + is used to build cache. + +2003-07-22 Ulrich Drepper + + * elf/readlib.c (process_file): Avoid possible overflow in assignment. + +2003-07-21 Art Haas + + * manual/charset.texi (Converting a Character): Fix example code so a + valid pointer is returned. + +2003-07-22 Andreas Jaeger + + * elf/readlib.c (process_file): Check that file is a shared + object. + + * elf/sofini.c (__FRAME_END__): Use attribute used so that gcc + will not optimize it away. + (__DTOR_END__): Likewise. + (__CTOR_END__): Likewise. + + * include/libc-symbols.h (_elf_set_element): Use attribute used so + that gcc will not optimize it away. + (link_warning): Likewise. + +2003-07-22 Ulrich Drepper + + * wcsmbs/wcpncpy.c (__wcpncpy): Correct destination pointer handling. + * wcsmbs/Makefile (tests): Add tst-wcpncpy. + * wcsmbs/tst-wcpncpy.c: New file. + +2003-07-21 Ulrich Drepper + + * sysdeps/unix/sysv/linux/bits/sched.h (CLONE_STOPPED): Define. + + * sysdeps/i386/fpu/feenablxcpt.c (feenableexcept): Reverse use of + stmxcsr and ldmxcsr. + + * Makerules (build-module-helper): Add -z defs unless explicitly said + not to do it. + * dlfcn/Makefile: Define various *-no-z-defs variables for test DSOs + which has undefined symbols. + * elf/Makefile: Likewise. + + * sysdeps/i386/fpu/fedisblxcpt.c: Use dl_hwcap, not dl_hwcap_mask. + * sysdeps/i386/fpu/feenablxcpt.c: Likewise. + * sysdeps/i386/fpu/feholdexcpt.c: Likewise. + * sysdeps/i386/fpu/fesetround.c: Likewise. + * sysdeps/i386/fpu/ftestexcept.c: Likewise. + +2003-07-21 HJ Lu + + * elf/ldconfig.c (search_dir): Treat symlink as regular file + if it won't point to itself. + +2003-07-20 Ulrich Drepper + + * sysdeps/ia64/hp-timing.h (REPEAT_READ): Cast to long int not to int. + +2003-07-20 Andreas Jaeger + + * iconvdata/cp932.c (BODY): STANDARD_ERR_HANDLER is now called + STANDARD_TO_LOOP_ERR_HANDLER. + * iconvdata/euc-jp-ms.c (BODY): Likewise. + +2003-07-19 Ulrich Drepper + + * sysdeps/unix/sysv/linux/bits/sched.h (__CPU_ZERO): Fix typo. + + * sysdeps/unix/sysv/linux/syscalls.list: Remove affinity syscalls. + +2003-07-16 Daniel Jacobowitz + Andreas Jaeger + + * sysdeps/unix/sysv/linux/mips/bits/shm.h (SHMLBA): Define to + 256K, remove unneeded declaration of __getpagesize. + +2003-07-16 Andreas Schwab + + * sysdeps/unix/sysv/linux/futimes.c: Include . + +2003-07-15 Ulrich Drepper + + * io/test-utime.c (main): Make test yet more robust. + +2003-07-14 Ulrich Drepper + + More cancellation handling fixups. + * sysdeps/unix/sysv/linux/not-cancel.h: Add waitpid_not_cancel. + * sysdeps/generic/not-cancel.h: Likewise. + * catgets/open_catalog.c: Use not-cancelable syscalls. + * time/Makefile (CFLAGS-getdate.c): Add -fexceptions. + * sysdeps/unix/sysv/linux/llseek.c: Must not be cancelable. + * sysdeps/unix/syscalls.list: Don't mark lseek as cancelable. + * dlfcn/dlfcn.h: Mark dlopen with __THROW again. + * io/fcntl.h: Don't mark posix_fallocate with __THROW. + * libio/fileops.c: Use not-cancelable syscalls for fclose. + * libio/iopopen.c: Use no-cancelable syscalls. + * libio/stdio.h: Mark popen and pclose with __THROW again. + * misc/Makefile (CFLAGS-syslog.c): Add -fexceptions. + * misc/syslog.c: Fix locking and cancellation cleanup handling. + * posix/unistd.h: Mark ttyname and ttyname_r again with __THROW. + * stdio-common/Makefile (CFLAGS-tmpfile.c, CFLAGS-tmpfile64.c, + CFLAGS-tempname.c): Add -fexceptions. + * stdlib/Makefile (CFLAGS-mkstemp.c): Add -fexceptions. + * string/string.h: Mark strerror and strerror_r with _THROW again. + * sysdeps/generic/unwind.inc: New file. Copied from gcc. + * sysdeps/generic/unwind-dw2.c: Update from gcc version. Remove + #ifs since we now need all the code compiled. + * sysdeps/posix/spawni.c: Use close_not_cancel instead of close. + * sysdeps/unix/closedir.c: Use not-cancelable syscalls. + * sysdeps/unix/opendir.c: Likewise. + + * iconvdata/Makefile (modules): Add CP932 and EUC-JP-MS. + Add rule for EUC-JP-MS dependency. + * iconvdata/cp932.c: New file. + * iconvdata/eucjp-ms.c: New file. + * iconvdata/gconv-modules: Add entries for CP932 and EUC-JP-MS. + Patch by MORIYAMA Masayuki . + +2003-07-15 Jakub Jelinek + + * sysdeps/unix/sysv/linux/powerpc/powerpc64/socket.S (__socket): Add + cfi directives. + +2003-07-14 Franz Sirl + + * sysdeps/unix/sysv/linux/kernel-features.h + (__ASSUME_FIXED_CLONE_SYSCALL): New macro. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S: Use it. + + * sysdeps/unix/sysv/linux/utimes.c: Include sysdep.h. + +2003-07-14 Ulrich Drepper + + * sysdeps/unix/sysv/linux/kernel-features.h: Define + __ASSUME_TGKILL for Alpha appropriately. + +2003-07-12 Ulrich Drepper + + * sysdeps/unix/sysv/linux/bits/statfs.h (_STATFS_F_FRSIZE): Define. + * sysdeps/unix/sysv/linux/alpha/bits/statfs.h (_STATFS_F_FRSIZE): + Likewise. + * sysdeps/unix/sysv/linux/s390/bits/statfs.h (_STATFS_F_FRSIZE): + Likewise. + + * sysdeps/unix/sysv/linux/kernel-features.h: Define + __ASSUME_UTIMES for x86 and kernels > 2.5.75. + + * sysdeps/unix/sysv/linux/futimes.c (__futimes): Handle case with + second parameter == NULL. + * sysdeps/unix/sysv/linux/utimes.c: New file. + +2003-07-12 Jakub Jelinek + + * sysdeps/unix/sysv/linux/futimes.c: Include kernel-features.h. + * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_UTIMES): Fix + a typo. + +2003-07-12 Ulrich Drepper + + * time/sys/time.h: Namespace cleanup. + * sysdeps/unix/sysv/linux/kernel-features.h: Define + __ASSUME_UTIMES for the architectures which always had the syscall. + * sysdeps/unix/sysv/linux/futimes.c: New file. + +2003-07-12 Kaz Kojima + + * sysdeps/unix/sysv/linux/sh/socket.S: Save and restore the PR + register across CENABLE and CDISABLE. + +2003-07-11 Jakub Jelinek + + * sysdeps/unix/sysv/linux/sigwait.c: Include string.h. + * sysdeps/unix/sysv/linux/sigwaitinfo.c: Likewise. + * sysdeps/unix/sysv/linux/sigtimedwait.c: Likewise. + * sysdeps/unix/sysv/linux/sleep.c (__sleep): Cast value to unsigned + int before assigning to max to avoid warnings. + +2003-07-11 Jakub Jelinek + + * sysdeps/unix/sysv/linux/powerpc/powerpc32/socket.S (__socket): Add + cfi directives. + * sysdeps/unix/sysv/linux/s390/s390-32/socket.S (__socket): Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/socket.S (__socket): Likewise. + +2003-07-10 Jakub Jelinek + + * sysdeps/powerpc/powerpc64/elf/start.S: Set section flags of + .data.rel.ro.local to "aw". + +2003-07-10 Ulrich Drepper + + * sysdeps/m68k/Makefile: Remove CLFAGS-.oS addition. + * Makeconfig (CFLAGS-.oS): Use PIC-ccflag instead of pic-ccflag. + (PIC-ccflag): Define. + +2003-07-04 Jakub Jelinek + + * sysdeps/s390/s390-32/elf/start.S: Emit position independent code + if PIC. + * sysdeps/s390/s390-64/elf/start.S: Likewise. + +2003-07-07 Jakub Jelinek + + * sysdeps/powerpc/powerpc64/elf/start.S: Put L(start_address) + into .data.rel.ro.local section if PIC to avoid DT_TEXTREL. + +2003-07-07 Ulrich Drepper + + * sysdeps/unix/sysv/linux/kernel-features.h: Version + __ASSUME_CORRECT_SI_PID and __ASSUME_TGKILL if possible. + + * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Adjust for + compilation with HAVE_AUX_SECURE defined. + +2003-07-05 Richard Henderson + + * sysdeps/alpha/elf/initfini.c: Avoid .ent/.end. + +2003-07-03 Ulrich Drepper + + * configure.in: Also check for .cfi_rel_offset pseudo-op. + +2003-07-03 Jakub Jelinek + + * sysdeps/unix/sysv/linux/prof-freq.c (__profile_frequency): Fix a + typo. + +2003-07-03 Ulrich Drepper + + * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_AT_CLKTCK): + Define. + * sysdeps/unix/sysv/linux/prof-freq.h: New file. + +2003-07-02 Jakub Jelinek + + * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Protect new_sysinfo + decl and use with #ifdef NEED_DL_SYSINFO. + +2003-07-02 Ulrich Drepper + + * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Don't set + GL(dl_sysinfo) unles GL(dl_sysinfo_dso) is also set. + * sysdeps/unix/sysv/linux/kernel-features.h: Define + __ASSUME_VSYSCALL only for 2.5.69 and up since this is when the + vsyscall DSO was added. + + * posix/bits/posix1_lim.h (_POSIX_NGROUPS_MAX): Define to 8 or 0 + depending on selected standard. + (NGROUPS_MAX): Define to 8 if not defined. + +2003-07-02 Andreas Jaeger + + * sysdeps/unix/sysv/linux/x86_64/sys/epoll.h: New file. + +2003-05-04 H.J. Lu + + * malloc/arena.c (arena_get2): Add atomic_write_barrier. + * malloc/thread-m.h: Include . + (atomic_full_barrier): Provide default. + (atomic_read_barrier): Likewise. + (atomic_write_barrier): Likewise. + * sysdeps/ia64/bits/atomic.h (atomic_full_barrier): New #define. + +2003-06-30 Ulrich Drepper + + * sysdeps/generic/sysdep.h: Define cfi_rel_offset and CFI_REL_OFFSET. + +2003-06-30 Richard Henderson + + * sysdeps/alpha/bits/atomic.h (__arch_compare_and_exchange_bool_*_int): + Invert the sense of the return value. + (__arch_exchange_16_int): Fix paste-o. + (__arch_exchange_{32,64}_int): Fix think-o. + + * sysdeps/unix/sysv/linux/alpha/clone.S: Load child_tid properly. + +2003-06-30 Richard Henderson + + * include/sys/resource.h (__getrusage): Mark hidden. + * include/sys/time.h (__settimeofday, __setitimer, __utimes): Likewise. + * include/sys/wait.h (__wait4): Likewise. + +2003-06-17 Guido Guenther + + * sysdeps/unix/sysv/linux/mips/xstatconv.c: Handle STAT_IS_KERNEL_STAT + case. + (xstat_conv): Rename to __xstat_conv and remove static inline. + (xstat64_conv): Likewise. + +2003-06-29 Ulrich Drepper + + * sysdeps/unix/sysv/linux/sleep.c (__sleep): Handle parameter + values which cannot be handled in one nanosleep call. + +2003-06-25 Alfred M. Szmidt + + * sysdeps/generic/bits/in.h (IPV6_HOPOPTS, IPV6_DSTOPTS): New macros. + (IPV6_RXHOPOPTS, IPV6_RXDSTOPTS): Use them. + + * sysdeps/generic/ifreq.h (__if_nextreq) [_HAVE_SA_LEN]: Typo fix. + +2003-06-04 Thorsten Kukuk + + * sysdeps/unix/sysv/linux/net/if_arp.h: Sync with kernel header, + fix typo. + +2003-06-26 Steven Munroe + + * sysdeps/unix/sysv/linux/xstatconv.h [!STAT_IS_KERNEL_STAT]: + Conditionalize function definitions that use struct kernel_stat. + * sysdeps/unix/sysv/linux/fxstat.c: Remove __syscall_fstat extern. + * sysdeps/unix/sysv/linux/lxstat.c: Remove __syscall_lstat extern. + * sysdeps/unix/sysv/linux/xstat.c: Remove __syscall_stat extern. + +2003-06-28 Ulrich Drepper + + * sysdeps/unix/sysv/linux/s390/semtimedop.c (semtimedop): Add real + implementation. + +2003-06-07 Thorsten Kukuk + + * nis/nss_compat/compat-grp.c: Remove unused nis_first variable. + (getgrent_next_file): Don't store group name to early in blacklist. + + * nis/nss_compat/compat-pwd.c (internal_getpwuid_r): Save strlen result + and use memcpy instead of strcpy. + +2003-06-28 Ulrich Drepper + + * nis/nss_compat/compat-grp.c: Optimize several little things. Use + stream unlocked. + * nis/nss_compat/compat-initgroups.c: Likewise. + * nis/nss_compat/compat-pwd.c: Likewise. + * nis/nss_compat/compat-spwd.c: Likewise. + +2003-06-27 Thorsten Kukuk + + * nis/nss_compat/compat-initgroups.c: Don't use our own NIS/NIS+ + functions, dlopen corresponding NSS module instead. + +2003-06-27 Jeroen Dekkers + + * sysdeps/mach/hurd/alpha/init-first.c: Remove call to __libc_init. + * sysdeps/mach/hurd/i386/init-first.c: Likewise. + * sysdeps/mach/hurd/mips/init-first.c: Likewise. + * sysdeps/mach/hurd/powerpc/init-first.c: Likewise. + +2003-06-27 Ulrich Drepper + + * rt/Makefile (CFLAGS-librt-cancellation.c): Define. + +2003-06-26 Roland McGrath + + * sysdeps/mach/configure.in: Barf rather than define NO_CREATION_TIME. + * sysdeps/mach/configure: Regenerated. + * sysdeps/mach/hurd/times.c (times_init): Function removed. + (__times): Assume `creation_time' field is available. + * sysdeps/mach/hurd/Makefile [$(subdir) = csu] (sysdep_routines): + Don't append set-init. + * sysdeps/mach/hurd/set-init.c: File removed. + +2003-06-26 Roland McGrath + + * elf/elf.h (AT_SECURE): New macro. + * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Grok it, + set __libc_enable_secure. + (_dl_show_auxv): Add AT_SECURE to name table. + * elf/dl-support.c (_dl_aux_init): Grok AT_SECURE, set + __libc_enable_secure and __libc_enable_secure_decided. + * sysdeps/unix/sysv/linux/ldsodefs.h + [__ASSUME_AT_SECURE] (HAVE_AUX_SECURE): Define it. + * sysdeps/unix/sysv/linux/kernel-features.h + [__LINUX_KERNEL_VERSION >= 132426] (__ASSUME_AT_SECURE): Define it. + +2003-06-26 Ulrich Drepper + + * io/test-utime.c: If _STATBUF_ST_NSEC is defined, adjust lower + boundary test to take rounding of nanoseconds into account. + + * sysdeps/unix/sysv/linux/bits/stat.h: Define _STATBUF_ST_NSEC. + * sysdeps/unix/sysv/linux/ia64/bits/stat.h: Likewise. + * sysdeps/unix/sysv/linux/m68k/bits/stat.h: Likewise. + * sysdeps/unix/sysv/linux/powerpc/bits/stat.h: Likewise. + * sysdeps/unix/sysv/linux/s390/bits/stat.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/stat.h: Likewise. + * sysdeps/unix/sysv/linux/x86_64/bits/stat.h: Likewise. + +2003-06-26 Andreas Schwab + + * sysdeps/m68k/fpu/bits/mathinline.h: Don't inline frexp. + * sysdeps/m68k/fpu/s_frexp.c: Put implementation here. + * sysdeps/m68k/fpu/s_frexpl.c: Fix to handle unnormalized numbers. + +2003-06-17 Thorsten Kukuk + + * nis/Makefile: Remove NIS/NIS+ files from nss_compat module. + * nis/nss_compat/compat-grp.c: Don't use our own NIS/NIS+ functions, + dlopen corresponding NSS module instead. + * nis/nss_compat/compat-pwd.c: Likewise. + * nis/nss_compat/compat-spwd.c: Likewise. + * nis/nss_compat/compat-initgroups.c: Disabled for now. + * nss/Versions: Export __nss_lookup_function. + +2003-06-19 Daniel Jacobowitz + + * sysdeps/unix/sysv/linux/kernel-features.h: Update kernel features + for the SH architecture. + +2003-06-25 Thorsten Kukuk + + * csu/Makefile: Use CPPFLAGS to find correct linux/version.h. + +2003-06-25 Andreas Jaeger + + * stdlib/tst-strtod.c (main): Declare constant long double as + suggested by Jakub Jelinek and Andreas Schwab. + + * posix/tst-nanosleep.c: Include for nanosleep + declaration. + + * stdio-common/tst-fphex.c: Fix format string. + + * posix/transbug.c: Include for memset and strlen + declarations. + + * stdio-common/tst-sprintf.c: Include for free declaration. + + * stdlib/tst-strtod.c (main): Pass long double value. + + * test-skeleton.c: Include for nanosleep declaration. + +2003-06-25 Ulrich Drepper + + * include/time.h: Don't define CLOCK_IDFIELD_SIZE if _ISOMAC is + defined. + +2003-06-11 Jakub Jelinek + + * elf/Versions (libc): Add _dl_open_hook@GLIBC_PRIVATE. + * elf/dl-libc.c (struct dl_open_hook): New. + (_dl_open_hook): New variable. + (do_dlsym_private): New function. + (__libc_dlopen_mode) [!SHARED]: Lookup _dl_open_hook@GLIBC_PRIVATE + and initialize it if found. + (__libc_dlopen_mode) [SHARED]: If _dl_open_hook is non-NULL, + call dlopen_mode hook. + (__libc_dlsym) [SHARED]: If _dl_open_hook is non-NULL, + call dlsym hook. + (__libc_dlclose) [SHARED]: If _dl_open_hook is non-NULL, + call dlclose hook. + +2003-06-25 Ulrich Drepper + + * sysdeps/unix/sysv/linux/cris/sysdep.h (INLINE_SYSCALL): Cast + result to long int so that extensions to long long int work. + Patch by Uwe Reimann . + +2003-06-19 Jakub Jelinek + + * elf/ldconfig.c (main): Use add_system_dir instead of add_dir. + * sysdeps/generic/dl-cache.h (add_system_dir): Define. + * sysdeps/unix/sysv/linux/x86_64/dl-cache.h: Include sparc + dl-cache.h. + * sysdeps/unix/sysv/linux/s390/dl-cache.h: New file. + * sysdeps/unix/sysv/linux/mips/dl-cache.h: New file. + * sysdeps/unix/sysv/linux/powerpc/dl-cache.h: New file. + * sysdeps/unix/sysv/linux/sparc/dl-cache.h: New file. + +2003-06-19 Jakub Jelinek + + * test-skeleton.c (timeout_handler): If waitpid returned 0, + retry once after a second. If killed == 0, assume + WTERMSIG (status) == SIGKILL. + +2003-06-18 Roland McGrath + + * sysdeps/generic/dl-sysdep.c (_dl_show_auxv): Catch uninitialized + elements in the table instead of printing an empty name string. + +2003-06-05 Roland McGrath + + * elf/elf.h (PT_GNU_STACK): New macro. + +2003-06-24 Ulrich Drepper + + * include/time.h: Define CLOCK_IDFIELD_SIZE. + * sysdeps/posix/clock_getres.c: Recognize thread CPU clock IDs. + * sysdeps/unix/clock_gettime.c: Likewise. + * sysdeps/unix/clock_settime.c: Likewise. + * sysdeps/unix/clock_nanosleep.c (CPUCLOCK_P): Adjust for new + clock id for thread CPU clocks. + + * sysdeps/unix/sysv/linux/fstatfs64.c (__fstatfs64): Add support + for the fstatfs64 syscall. + * sysdeps/unix/sysv/linux/statfs64.c (__statfs64): Add support for + the statfs64 syscall. + + * sysdeps/unix/sysv/linux/kernel-features.h: Define + __ASSUME_STATFS64 appropriately. + + * sysdeps/unix/sysv/linux/internal_statvfs.c: Use f_frsize field + from statfs structure if it has been filled in. + + * sysdeps/unix/sysv/linux/bits/statfs.h (struct statfs): Add f_frsize + field. + (struct statfs64): Likewise. + * sysdeps/unix/sysv/linux/alpha/bits/statfs.h: Likewise. + * sysdeps/unix/sysv/linux/s390/bits/statfs.h: Likewise. + +2003-06-24 Richard Henderson + + * sysdeps/unix/sysv/linux/alpha/syscalls.list (pread, pwrite): Use + the 64-bit syscall name. + + * sysdeps/alpha/setjmp.S (_setjmp, setjmp): Mark .prologue. + + * sysdeps/alpha/fpu/bits/mathinline.h: Honor + __LIBC_INTERNAL_MATH_INLINES. Implement __signbitf, __signbit. + + * sysdeps/unix/sysv/linux/alpha/clone.S: Use HIDDEN_JUMPTARGET. + * sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S: Use + libc_hidden_def. + * sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S: Likewise. + * sysdeps/unix/sysv/linux/alpha/setfpucw.c: Use libc_hidden_proto + on them. + + * sysdeps/alpha/bits/atomic.h: New file. + +2003-06-24 Andreas Schwab + + * sysdeps/m68k/fpu/libm-test-ulps: Update. + +2003-06-24 Andreas Jaeger + + * sysdeps/unix/sysv/linux/x86_64/stat.h (_STAT_VER_LINUX): Avoid + redeclaration with 32-bit code. + +2003-05-19 Ed Connell + + * sysdeps/unix/sysv/linux/i386/getcontext.S (getcontext): Retain + floating point mask. + * sysdeps/i386/fpu/fegetenv.c (fegetenv): Likewise. + +2003-06-23 Ulrich Drepper + + * sysdeps/pthread/aio_misc.h: Mark __aio_requests_mutex, + __aio_enqueue_request, __aio_find_req, __aio_find_req_fd, + __aio_free_request, __aio_notify, and __aio_sigqueue as hidden. + + * sysdeps/pthread/aio_suspend.c (aio_suspend): Set errno to the result + of pthread_cond_wait if there was an error. Use pthread_cleanup_* + instead of __libc_cleanup_region_*. + +2003-06-20 Richard Henderson + + * sysdeps/unix/make-syscalls.sh: Implement ! prefix for strong aliases. + * sysdeps/unix/sysv/linux/alpha/syscalls.list (open, open64): New. + +2003-06-20 Richard Henderson + + * sysdeps/unix/alpha/sysdep.h (INLINE_SYSCALL1): Use __builtin_expect. + * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_ST_INO_64_BIT) + Unset for alpha. + (__ASSUME_TIMEVAL64): Set for alpha. + * sysdeps/unix/sysv/linux/alpha/Makefile (sysdep_routines): Remove + adjtimex, osf_sigprocmask, old_adjtimex. + * sysdeps/unix/sysv/linux/alpha/adjtime.c: Use INLINE_SYSCALL, + __ASSUME_TIMEVAL64. Reorg tv64 functions to avoid uninit variable. + * sysdeps/unix/sysv/linux/alpha/getitimer.S: Use __ASSUME_TIMEVAL64. + * sysdeps/unix/sysv/linux/alpha/getrusage.S: Likewise. + * sysdeps/unix/sysv/linux/alpha/gettimeofday.S: Likewise. + * sysdeps/unix/sysv/linux/alpha/select.S: Likewise. + * sysdeps/unix/sysv/linux/alpha/setitimer.S: Likewise. + * sysdeps/unix/sysv/linux/alpha/settimeofday.S: Likewise. + * sysdeps/unix/sysv/linux/alpha/utimes.S: Likewise. + * sysdeps/unix/sysv/linux/alpha/wait4.S: Likewise. + * sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S: Streamline + PIC code sequence. + * sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S: Likewise. + * sysdeps/unix/sysv/linux/alpha/sigaction.c: New file. + * sysdeps/unix/sysv/linux/alpha/sigprocmask.c: Use INLINE_SYSCALL. + * sysdeps/unix/sysv/linux/alpha/ustat.c: Likewise. + * sysdeps/unix/sysv/linux/alpha/xmknod.c: Likewise. + * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove osf_sigprocmask, + sys_ustat, sys_mknod, adjtimex, old_adjtimex. + * sysdeps/unix/sysv/linux/alpha/sysdep.h (INLINE_SYSCALL): Don't + defer to __syscall_name; error for rt_sigaction. + * sysdeps/unix/sysv/linux/alpha/xstatconv.c: Include kernel_stat.h. + +2003-06-18 Ulrich Drepper + + * malloc/malloc.c (public_mALLINFo): Initialize malloc if it + hasn't happened yet. + + * sysdeps/unix/sysv/linux/x86_64/register-dump.h (register_dump): + Fix completely broken implementation. The second parameter is of + type struct ucontext*. + + * sysdeps/x86_64/dl-machine.h (elf_machine_runtime_setup): Always + inline. + + * sysdeps/i386/i686/dl-hash.h: Don't inline _dl_elf_hash. + * sysdeps/generic/dl-hash.h: Likewise. + + * sysdeps/generic/memcmp.c: Remove inline from + memcmp_common_alignment and memcmp_not_common_alignment definition. + + * intl/localealias.c (read_alias_file): Determine whether line is + read incompletely early, before we modify the line. + +2003-06-17 Jakub Jelinek + + * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_rela) + : Don't segfault on undefined symbols. + +2003-06-17 Paul Mackerras + + * sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S: New file. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S: New file. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S: New file. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S: New file. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.h: New file. + * sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h: Adjust. + +2003-06-17 Jakub Jelinek + + * posix/regcomp.c (build_word_op): Use alnum instead of alpha class. + +2003-06-17 Ulrich Drepper + + * sysdeps/unix/clock_nanosleep.c (clock_nanosleep): nanosleep + takes care of enabling cancellation. + + * sysdeps/pthread/aio_suspend.c (aio_suspend): Make aio_suspend + cancelable. It's not correct to disable cancellation. Instead of + a cleanup handler. + + * sysdeps/unix/sysv/linux/sigtimedwait.c: If SIGCANCEL is defined + and part of the incoming set, create a temporary set without this + signal. + * sysdeps/unix/sysv/linux/sigwait.c: Likewise. + * sysdeps/unix/sysv/linux/sigwaitinfo.c: Likewise. + + * sysdeps/unix/sysv/linux/sleep.c: Use CANCELLATION_P if defined before + returning because seconds==0. Add __builtin_expect. + +2003-06-16 Ulrich Drepper + + * sysdeps/unix/sysv/linux/i386/socket.S: Add unwind information. + + * sysdeps/unix/sysv/linux/wait.c (__libc_wait): Fix type of result + variable. + +2003-06-16 Thorsten Kukuk + + * include/libc-symbols.h: Add static_link_warning macro. + * grp/initgroups.c: Print linker warning if this function + is called in a static linked binary. + * nss/getXXbyYY.c: Likewise. + * nss/getXXbyYY_r.c: Likewise. + * nss/getXXent.c: Likewise. + * nss/getXXent_r.c: Likewise. + * sysdeps/posix/getaddrinfo.c: Likewise. + +2003-06-16 Bruno Haible + + * iconvdata/gconv-modules (ISO-8859-15): Add aliases ISO_8859-15, + LATIN-9. + (ISO-8859-16): Add aliases ISO_8859-16:2001, ISO_8859-16. + (IBM1047): Add alias IBM-1047. + (GBK): Add aliases MS936, WINDOWS-936. + +2003-06-16 Jakub Jelinek + + * sysdeps/unix/sysv/linux/xstatconv.c (__xstat_conv): Define even if + defined __ASSUME_STAT64_SYSCALL && defined XSTAT_IS_XSTAT64. + (__xstat64_conv): Change xstat_conv to __xstat_conv. + +2003-06-16 Ulrich Drepper + + * locale/iso-639.def: Update from current official ISO 639. + + * math/tgmath.h (__TGMATH_UNARY_IMAG_ONLY): Removed. + +2003-06-15 Andreas Jaeger + + * sysdeps/i386/fpu/feenablxcpt.c (feenableexcept): Correct setting + of MXCSR. + * sysdeps/i386/fpu/fedisblxcpt.c (fedisableexcept): Likewise. + * sysdeps/i386/fpu/feholdexcpt.c (feholdexcept): Likewise. + Reported by Arnaud Desitter . + + * math/tgmath.h (carg): Handle real arguments. + (conj): Likewise. + (cproj): Likewise. + (cimag): Likewise. + (creal): Likewise. + + * math/Makefile (CFLAGS-test-tgmath-ret.c): New. + (tests): Add test-tgmath-ret. + * math/test-tgmath-ret.c: New file. + + * math/tgmath.h (ilogb): Return always an int. + +2003-06-16 Ulrich Drepper + + * elf/rtld.c (dl_main): Use l_map_start not l_addr in Phdr + computation so that prelinking works. + +2003-06-15 Ulrich Drepper + + * elf/dl-iteratephdr.c (__dl_iterate_phdr): Don't skip dynamic + linker's map. + * elf/rtld.c (dl_main): Initialize l_phdr and l_phnum of of the + dynamic linker's map. + + Fix cancellation point handling wrt exception based cleanup. + * io/Makefile: Compile fcntl.c, poll.c, and lockf.c with exceptions. + * misc/Makefile: Compile pselect.c, readv.c, writev.c, and usleep.c + with exceptions. + * posix/Makefile: Compile pread.c, pread64.c, pwrite.c, pwrite64.c, + sleep.c, wait.c, waitid.c, and waitpid.c with exceptions. + * rt/Makefile: Compile aio_suspend.c and clock_nanosleep.c with + exceptions. + * signal/Makefile: Compile sigpause.c, sigsuspend.c, sigtimedwait.c, + sigwait.c, and sigwaitinfo.c with exceptions. + * stdlib/Makefile: Compile system.c with exceptions. + * sysvipc/Makefile: Compile msgrcv.c and msgsnd.c with exceptions. + * termios/Makefile: Compile tcdrain.c with exceptions. + * sysdeps/generic/lockf.c: Add comment explaining the cancellation + situation. + * sysdeps/generic/pselect.c: Likewise. + * sysdeps/posix/sigpause.c: Likewise. + * sysdeps/posix/system.c: Likewise. + * sysdeps/posix/waitid.c: Likewise. + * sysdeps/unix/sysv/linux/sleep.c: Likewise. + * sysdeps/unix/sysv/linux/usleep.c: Likewise. + * sysdeps/unix/sysv/linux/i386/sysdep.h: Major rewrite of + INTERNAL_SYSCALL to not use push inside asm statement so that + unwind info is correct around the syscall. + * sysdeps/unix/clock_nanosleep.c: Add cancellation support. + * sysdeps/unix/sysv/linux/clock_nanosleep.c: Likewise. + +2003-06-15 Andreas Jaeger + + * sysdeps/x86_64/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE): + Add CFI directives. + +2003-06-15 Guido Guenther + + * sysdeps/unix/sysv/linux/mips/Makefile: Add missing endif and + create $(objpfx). + +2003-06-14 Ulrich Drepper + + * sysdeps/unix/sysv/linux/check_pf.c (__check_pf): Use __close, + not close. + + * inet/inet6_option.c (inet6_option_alloc): Add libc_hidden_def. + * include/netinet/in.h (inet6_option_alloc): Add libc_hidden_proto + definition. + + * inet/netinet/ip6.h (IP6OPT_PAD1, IP6OPT_PADN): Define. + * inet/netinet/in.h: Add prototypes for inet6_option_* functions. + * inet/Makefile (routines): Add inet6_option. + * inet/inet6_option.c: New file. + * inet/Versions [GLIBC_2.3.3] (libc): Add inet6_option_space, + inet6_option_init, inet6_option_append, inet6_option_alloc, + inet6_option_next, and inet6_option_find. + +2003-06-13 Ulrich Drepper + + * inet/netinet/ip6.h (struct ip6_ext): Define. + + * sysdeps/unix/sysv/linux/sys/param.h (howmany): Optimize for gcc. + + Fixing gcc 3.3 warnings, part II. + * argp/argp-help.c (hol_entry_long_iterate): Always inline. + * elf/dl-load.c (cache_rpath): Don't inline. + * iconvdata/cns11642l2.h: Always inline all functions. + * iconvdata/iso-ir-165.h: Likewise. + * locale/Makefile (aux): Add coll-lookup. + * locale/coll-lookup.c: New file. + * locale/coll-lookup.h (collidx_table_lookup): Do not define here. + (collseq_table_lookup): Likewise. + * locale/weightwc.h: Adjust collidx_table_lookup calls for name change. + * posix/fnmatch_loop.c: Adjust collseq_table_lookup calls for name + change. + * posix/regcomp.c: Likewise. + * posix/regexec.c: Likewise. + * locale/programs/3level.h (*_get): Always inline. + * locale/programs/locfile.h: Move definition of handle_copy to... + * locale/programs/locfile.c: ...here. + * locale/programs/ld-collate.c (obstack_int32_grow): Always inline. + (obstack_int32_grow_fast): Likewise. + (utf8_encode): Likewise. + (find_element): Avoid aliasing problems. + (insert_value): Likewise. + (collate_read): Likewise. + * nss/getent.c (print_hosts): Don't inline + (print_networks): Likewise. + (print_shadow): Likewise. + (build_doc): Likewise. + * nss/nss_files/files-parse.c [ENTDATA] (parser_stclass): Don't + inline. + * posix/regcomp.c (re_set_fastmap): Always inline. + (seek_collating_symbol_entry): Likewise. + (lookup_collation_sequence_value): Likewise. + (build_range_exp): Likewise. + (build_collating_symbol): Likewise. + * posix/regexec.c (acquire_init_state_context): Don't inline. + (clean_state_log_if_need): Likewise. + * resolv/res_send.c (eConsIovec): Rewrite to not return struct and + adjust all callers. + (evConsTime): Likewise. + (evAddTime): Likewise. + (evSubTime): Likewise. + (evNowTime): Likewise. + (evTimeSpec): Removed. + (__libc_res_nsend): Avoid aliasing problem. + * sysdeps/unix/sysv/linux/ifreq.h: Move old_siocgifconf definition to.. + * sysdeps/unix/sysv/linux/ifreq.c: ...here. + * sysdeps/unix/sysv/linux/i386/dl-procinfo.h (_dl_string_hwcap): + Always inline. + (_dl_string_platform): Likewise. + * wctype/wchar-lookup.h (wctype_table_lookup): Always inline. + (wcwidth_table_lookup): Likewise. + (wctrans_table_lookup): Likewise. + + * sysdeps/unix/sysv/linux/sys/epoll.h: Include . + +2003-06-12 Ulrich Drepper + + * wcsmbs/wchar.h: Define wint_t in std namespace, too [PR libc/5034]. + +2003-05-29 Jim Meyering + + * time/strftime.c (my_strftime) [!defined _NL_CURRENT + && HAVE_STRFTIME]: Use underlying_strftime for %r. + Suggested by Daniel Yacob . + +2003-06-12 Steven Munroe + + * sysdeps/powerpc/powerpc64/dl-machine.h (RTLD_START): Replace + @got notation with @toc. + * sysdeps/powerpc/powerpc64/sysdep.h (CALL_MCOUNT): Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/brk.S (__brk): Likewise. + +2003-06-12 Ulrich Drepper + + * sysdeps/posix/getaddrinfo.c (gaih_inet): Set no_inet6_date also + if only PF_INET address is needed. + + * nss/getXXbyYY_r.c: Make sure we always return a nonzero value in + case of an error. + + * scripts/config.guess: Update from upstream version. + * scripts/config.sub: Likewise. + +2003-06-12 Jakub Jelinek + + * locale/programs/ld-time.c (time_output): Also copy the era format, + not only the name. + +2003-06-12 H.J. Lu + + * posix/transbug.c (run_test): Return 1 for failure. + (do_test): Compare only if run_test is successful. + +2003-06-12 Simon Josefsson + + * argp/argp.h [!__THROW]: Define if undefined. + +2003-06-12 Ulrich Drepper + + * sysdeps/unix/sysv/linux/cris/sysdep.h: Fix handling of syscalls with + more than four parameters. + Patch by Uwe Reimann . + +2003-06-12 Jakub Jelinek + + * sysdeps/unix/sysv/linux/ia64/kernel_stat.h: New file. + * sysdeps/unix/sysv/linux/s390/s390-64/kernel_stat.h: New file. + * sysdeps/unix/sysv/linux/x86_64/kernel_stat.h: New file. + + * stdio-common/printf-parsemb.c: Include stdlib.h and sys/param.h. + +2003-06-12 Roland McGrath + + * Makerules ($(objpfx)stubs): Rewrite sed magic. + +2003-02-28 Isamu Hasegawa + + * posix/regcomp.c (parse_expression): Deliver translation to + build_word_op, and build_charclass. + (build_charclass): Apply translation for character classes too. + (build_word_op): Deliver translation to build_charclass. + * posix/transbug.c: New file. + * posix/Makefile (tests): Add transbug. + +2003-06-04 Paolo Bonzini + + * posix/regexec.c (group_nodes_into_DFAstates): Check for + NEXT_ENDBUF_CONSTRAINT. Move check for constraints which do a + 'continue' before the others. + +2003-06-11 Ulrich Drepper + + * dirent/scandir.c (SCANDIR): Reset errno after calling selector + function [PR libc/5045]. + + * sysdeps/i386/bits/byteswap.h (__bswap_32): Use bswap instruction + also for P4. + + * time/tzfile.c: Add a couple of __builtin_expect. + + Remove warnings gcc 3.3 shows. + * argp/argp-help.c (hol_entry_short_iterate): Don't inline. + * elf/dl-load.c (fillin_rpath): Likewise. + (add_path): Likewise. + * elf/dl-version.c (find_needed): Always inline. + * elf/do-lookup.c (FCT): Don't inline. + * iconv/Makefile: Extend vpath to intl subdir. + (iconvconfig-modules): Add hash-string. + * iconv/gconv_charset.h (strip): Don't inline. + (upstr): Always inline. + Move __gconv_compare_alias prototype to... + * iconv/gconv_int.h: ...here. + * iconv/gconv_db.c: Don't include gconv_charset.h. + * iconv/gconv_conf.c (add_alias): Don't inline. + (insert_module): Likewise. + * iconv/gconv_simple.c (internal_ucs4_loop): Always inline. + (internal_ucs4_loop_unaligned): Likewise. + (internal_ucs4_loop_single): Likewise. + (ucs4_internal_loop): Likewise. + (ucs4_internal_loop_unaligned): Likewise. + (ucs4_internal_loop_single): Likewise. + (internal_ucs4le_loop): Always inline. + (internal_ucs4le_loop_unaligned): Likewise. + (internal_ucs4le_loop_single): Likewise. + (ucs4le_internal_loop): Likewise. + (ucs4le_internal_loop_unaligned): Likewise. + (ucs4le_internal_loop_single): Likewise. + * iconv/loop.c: Always inline the defined functions. + * iconvdata/cns11642.h: Likewise. + * iconvdata/cns11642l1.h: Likewise. + * iconvdata/euc-kr.c: Likewise. + * iconvdata/gb2312.h: Likewise. + * iconvdata/jis0201.h: Likewise. + * iconvdata/jis0208.h: Likewise. + * iconvdata/jis0212.h: Likewise. + * iconvdata/jisx0213.h: Likewise. + * iconvdata/ksc5601.h: Likewise. + * iconvdata/utf-7.c (base64): Don't inline. + * include/libc-symbols.h (symbol_set_first_element): Add cast + (symbol_set_end_p): Likewise. + * include/set-hooks (RUN_HOOK): Likewise. + * inet/Makefile (aux): Add ifreq. + * intl/Makefile (aux): Add some entries from routines. Add + hash-string. + * intl/hash-string.c: New file. + * intl/hash-string.h: Remove hash_string definition. Declare + __hash_string. + * iconv/gconv_cache.c (find_module_idx): Adjust hash_string caller. + * iconv/iconvconfig.c (new_name): Likewise. + * intl/dcigettext.c (_nl_find_msg): Likewise. + * intl/loadmsgcat.c (_nl_load_domain): Likewise. + * io/ftw.c (open_dir_stream): Always inline. + (process_entry): Don't inline. + * locale/findlocale.c: Include gconv_int.h. + * locale/setlocale.c (new_composite_name): Don't inline. + * locale/weight.h (findidx): Always inline. + * locale/weightwc.h (findidx): Likewise. + * locale/programs/linereader.c (lr_ignore_rest): Define here. + * locale/programs/linereader.h (lr_ignore_rest): Don't define here, + just declare it. + (lr_getc): Always inline. + (lr_ungetc): Likewise. + * nss/nss_files/files-parse.c (parse_list): Likewise. + * stdio-common/Makefile (aux): Add printf-parsemb and + printf-parsewc. + * stdio-common/_itoa.h (_itoa_word): Always inline. + (_fitoa_word, _fitoa): Don't define here, only declare. + * stdio-common/_itoa.c (_iftoa_word): Add here. + (_fitoa): Likewise. + * stdio-common/_itowa.h (_itowa_word): Always inline. + * stdio-common/printf-parse.h (read_int): Don't inline. + (find_spec): Don't define. + Declare __find_specmb and __find_specwc. + (parse_one_spec): Don't define. + Declare __parse_one_specmb and __parse_one_specwc. + * stdio-common/printf-parsemb.c: New file. + * stdio-common/printf-parsewc.c: New file. + * stdio-common/vfprintf.c: Update calls to find_spec and + parse_one_spec for new names. + * stdio-common/printf-prs.c: Likewise. Define DONT_NEED_READ_INT. + * stdlib/Makefile (aux): Add grouping and groupingwc. + * stdlib/grouping.c: New file. + * stdlib/groupingwc.c: New file. + * stdlib/grouping.h (correctly_grouped_prefix): Don't define here. + Just prototype. + * stdlib/rpmatch.c (try): Don't inline. + * stdlib/strtod.c (round_and_return): Don't line. + (str_to_mpn): Likewise. + (__mpn_lshift_1): Always inline. Optimize only for constant count. + Adjust for name change of correctly_grouped_prefix. + * sysdeps/generic/strtol.c: Adjust for name change of + correctly_grouped_prefix. + * string/strxfrm.c (utf8_encode): Don't inline. + * sysdeps/generic/dl-cache.c: Define _dl_cache_libcmp. + * sysdeps/generic/dl-cache.h: Just declare _dl_cache_libcmp. + * sysdeps/generic/ifreq.c: New file. + * sysdeps/unix/sysv/linux/ifreq.c: New file. + * sysdeps/generic/ifreq.h (__ifreq): Only declare here. + * sysdeps/unix/sysv/linux/ifreq.h: Likewise. + * sysdeps/generic/ldsodefs.h (_dl_name_match_p): Always inline. + * sysdeps/generic/unwind-dw2-fde.c (start_fde_sort): Don't inline. + (fde_split): Likewise. + (fde_merge): Likewise. + (end_fde_sort): Likewise. + (init_object): Likewise. + (binary_search_unencoded_fdes): Likewise. + (binary_search_single_encoding_fdes): Likewise. + (binary_search_mixed_encoding_fdes): Likewise. + * sysdeps/generic/wordexp.c (w_addchar): Don't inline. + * sysdeps/i386/dl-machine.c (elf_machine_runtime_setup): Always inline. + * sysdeps/posix/sprofil.c (profil_count): Don't inline. + * sysdeps/unix/sysv/linux/Makefile [subdir=io] (sysdep_routines): + Add xstatconv. + * sysdeps/unix/sysv/linux/xstatconv.h: New file. + * sysdeps/unix/sysv/linux/xstatconv.c: Don't inline the function. + Export them. Prepend __ to name. + * sysdeps/unix/sysv/linux/Dist: Add xstatconv.h. + * sysdeps/unix/sysv/linux/fxstat.c: Adjust for name change of + conversion functions. + * sysdeps/unix/sysv/linux/fxstat64.c: Likewise. + * sysdeps/unix/sysv/linux/lxstat.c: Likewise. + * sysdeps/unix/sysv/linux/lxstat64.c: Likewise. + * sysdeps/unix/sysv/linux/xstat.c: Likewise. + * sysdeps/unix/sysv/linux/xstat64.c: Likewise. + * sysdeps/unix/sysv/linux/i386/fxstat.c: Likewise. + * sysdeps/unix/sysv/linux/i386/lxstat.c: Likewise. + * sysdeps/unix/sysv/linux/i386/xstat.c: Likewise. + * sysdeps/unix/sysv/linux/pathconf.c (__statfs_link_max, + __statfs_filesize_max, __statfs_symlinks): Define here. __ prepended + to name. Change callers. + * sysdeps/unix/sysv/linux/pathconf.h (__statfs_link_max, + __statfs_filesize_max, __statfs_symlinks): Don't define here, just + declare. + * sysdeps/unix/sysv/linux/fpathconf.c: Change all callers. + * time/tzfile.c (decode): Always inline. + * wcsmbs/wcsnrtombs.c: Change type of inbuf to unsigned char*. + Remove cast in tomb function call. + * wcsmbs/wcsrtombs.c Likewise. + * wcsmbs/wcstob.c: Introduce new temp variable to take pointer in + tomb function call. + +2003-06-10 Ulrich Drepper + + * po/zh_CN.po: Update from translation team. + +2003-06-10 Jakub Jelinek + + * sysdeps/unix/sysv/linux/bits/in.h (IPV6_V6ONLY, IPV6_JOIN_ANYCAST, + IPV6_LEAVE_ANYCAST, IPV6_IPSEC_POLICY, IPV6_XFRM_POLICY): Define. + +2003-06-10 Ulrich Drepper + + * inet/Makefile (aux): Add check_pf. + * include/ifaddrs.h: Add prototype for __check_pf. + * sysdeps/generic/check_pf.c: New file. + * sysdeps/unix/sysv/linux/check_pf.c: New file. + * sysdeps/unix/sysv/linux/ifaddrs.h (__no_netlink_support): Renamed + from no_netlink_support. Export. + * sysdeps/posix/getaddrinfo.c (getaddrinfo): Don't call getifaddrs, + call __check_pf. + + * sysdeps/generic/ifaddrs.h: Add libc_hidden_def. + + * sysdeps/posix/getaddrinfo.c (getaddrinfo): Don't leak memory + from getifaddr calls. + +2003-06-09 Jakub Jelinek + + * sysdeps/unix/sysv/linux/kernel-features.h + (__ASSUME_SETRESGID_SYSCALL): Define. + * sysdeps/unix/sysv/linux/setegid.c: Use __ASSUME_SETRESGID_SYSCALL + instead of __ASSUME_SETRESUID_SYSCALL. + (setegid): Only use setresgid32 inline syscall if __NR_setresgid32 is + defined. + * sysdeps/unix/sysv/linux/seteuid.c (seteuid): Only use setresgid32 + inline syscall if __NR_setresuid32 is defined. + * sysdeps/unix/sysv/linux/i386/setegid.c (setegid): Use + __ASSUME_SETRESGID_SYSCALL instead of __ASSUME_SETRESUID_SYSCALL. + * sysdeps/unix/sysv/linux/i386/setregid.c: Backout last changes. + * sysdeps/unix/sysv/linux/i386/setreuid.c: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc32/setegid.c (setegid): Protect + code handling non-existant setresgid32 syscall with + #if __ASSUME_SETRESGID_SYSCALL == 0. + +2003-06-09 Andreas Schwab + + * sunrpc/Makefile (generated): Remove rpc-proto.c, rpc-proto.d. + ($(rpcsvc:%.x=$(objpfx)x%$o)): Don't depend on + $(objpfx)rpc-proto.d. + (rpcsvc-dt-files, rpcsvc-depfiles): Define. Include + $(rpcsvc-depfiles) instead of $(objpfx)rpc-proto.d. + ($(objpfx)rpc-proto.d, $(objpfx)rpc-proto.c): Remove rules. + +2003-06-08 Ulrich Drepper + + * sysdeps/unix/sysv/linux/seteuid.c (seteuid): Use setresuid32 + syscall directly if possible. If __ASSUME_SETRESUID_SYSCALL is + defined drop compatibility code. + * sysdeps/unix/sysv/linux/setegid.c (setegid): Use setresgid32 + syscall directly if possible. If __ASSUME_SETRESUID_SYSCALL is + defined drop compatibility code. + * sysdeps/unix/sysv/linux/i386/seteuid.c (seteuid): Use + setresuid32 syscall directly if possible. + * sysdeps/unix/sysv/linux/i386/setegid.c (setegid): Use + setresgid32 syscall directly if possible. + * sysdeps/unix/sysv/linux/i386/setregid.c (__setregid): Make POSIX + compliant. Don't change sgid. + * sysdeps/unix/sysv/linux/i386/setreuid.c (__setreuid): Make POSIX + compliant. Don't change suid. + + * config.h.in: Add have-forced-unwind. + * configure.in: Add AC_SUBST(libc_cv_forced_unwind). + +2003-06-07 Ulrich Drepper + + * test-skeleton.c (main): If EXPECTED_STATUS is defined check that + returned status from child matches. + + * Makeconfig (gnulib): Add -lgcc_eh once again. + +2003-06-06 Ulrich Drepper + + * test-skeleton.c (main): Use TEMP_FAILURE_RETRY with waitpid. + + * sysdeps/unix/sysv/linux/i386/sysdep.h (ASMFMT_2): Only allow + %edx for first parameter. This means no pushl and therefore the + unwind info isn't screwed up. + +2003-06-04 Richard Henderson + + * sysdeps/alpha/dl-machine.h (RTLD_START): Fix top-of-stack backtrace. + * sysdeps/unix/sysv/linux/alpha/clone.S: Likewise. + * sysdeps/alpha/elf/start.S: Likewise. Remove pointless allocation. + * sysdeps/unix/sysv/linux/alpha/rt_sigaction.S: Use standard ldgp + entry sequence and explicit relocs. Add unwind info for sigreturn + and rt_sigreturn. + * configure.in (libc_cv_asm_cfi_directives): Test .cfi_remember_state. + + * sysdeps/unix/sysv/linux/alpha/syscalls.list (semtimedop): New. + Annotate some parameters. + * sysdeps/unix/sysv/linux/alpha/sysdep.h (__NR_semtimedop): New. + + * sysdeps/unix/sysv/linux/alpha/gettimeofday.S: Fix typo in conversion. + + * include/libc-symbols.h (symbol_set_declare): Use arrays + of unspecified size. + +2003-06-04 Jakub Jelinek + + * config.make.in (ASFLAGS-config): New. + * Makeconfig (ASFLAGS): Append $(ASFLAGS-config). + * configure.in (libc_cv_as_noexecstack): New check. + (ASFLAGS_config): Substitute. + +2003-06-04 Jakub Jelinek + + * sysdeps/i386/fpu/bits/mathinline.h (log1p, asinh, acosh, atanh, + hypot, logb): Protect with #ifdef __FAST_MATH__. + +2003-06-04 Thorsten Kukuk + + * sysdeps/i386/fpu/bits/mathinline.h (ldexpf, ldexpl): Protect with + #ifdef __FAST_MATH__. + +2003-06-03 Ulrich Drepper + + * sysdeps/generic/glob.c [HAVE_D_TYPE] (glob_in_dir): Also allow + DT_LNK entries if GLOB_ONLYDIR is set [PR libc/5043]. + * posix/globtest.sh: Adjust for this change. + + * sysdeps/unix/sysv/linux/ifaddrs.c (netlink_open): Call getsockname + to get the actual PID value used in the records passed up. + (getifaddrs): Don't initialize nh.pid here. + +2003-06-02 Ulrich Drepper + + * sysdeps/unix/sysv/linux/ifaddrs.c (netlink_receive): Minor + optimization. + + * po/zh_CN.po: Update from translation team. + + * posix/getconf.c (main): Also recognize names without the + _POSIX_ prefix. + + * elf/Makefile (CFLAGS-dl-lookup.c): Define. + +2003-06-02 Bernd Schmidt + + * sysdeps/i386/fpu/bits/mathinline.h (sqrt, __sqrtl, ldexp, + ldexpf, ldexpl): Only define if __FAST_MATH__. + +2003-06-02 Richard C. Bilson + + Replace hard-coded offsets into struct sigcontext with generated file. + * sysdeps/unix/sysv/linux/ia64/sigcontext-offsets.sym: New file. + * sysdeps/unix/sysv/linux/ia64/Makefile + [$(subdir) = stdlib] (gen-as-const-headers): Add it. + * sysdeps/unix/sysv/linux/ia64/ucontext_i.h: Include it instead of + defining SC_* macros here. + +2003-06-02 Jakub Jelinek + + * sysdeps/unix/sysv/linux/bits/sched.h (CLONE_PID): Remove. + +2003-06-01 Jakub Jelinek + + * sysdeps/i386/dl-machine.h: Include . + +2003-06-01 Ulrich Drepper + + * test-skeleton.c (main): Request getopt to not reorder the + command line. + + * elf/Makefile (CFLAGS-dl-runtime.c): Define. + + * wcsmbs/wcpncpy.c (__wcpncpy): Fix broken implementation to match + stpncpy. + +2003-05-31 Ulrich Drepper + + * sysdeps/unix/sysv/linux/ia64/bits/sigaction.h (SA_NOCLDWAIT): Define. + +2003-05-31 Jakub Jelinek + + * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_plt_conflict): + New function. + (elf_machine_rela) : Avoid + RESOLVE_CONFLICT_FIND_MAP. If RESOLVE_CONFLICT_FIND_MAP is defined, + call elf_machine_plt_conflict instead of elf_machine_fixup_plt. + +2003-05-31 Ulrich Drepper + + * sysdeps/i386/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE): Add + CFI directives. + + * csu/Makefile: Fix Makefile warnings regarding Scrt1.o. + + * libio/fileops.c (_IO_file_open): Don't mark as inline. + + * sysdeps/ia64/elf/initfini.c (gmon_initializer): Mark with + attribute used. + +2003-05-30 Ulrich Drepper + + * scripts/config.guess: Update from master copy. + * scripts/config.sub: Likewise. + +2003-05-30 Guido Guenther + + * sysdeps/mips/mips64/bsd-_setjmp.S: Include for + SETUP_GP64 and friends. + * sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h: Fix register + names in internal_syscall{6,7}. + * sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/mips/pread.c [_MIPS_SIM == _ABI64]: Fix + number of syscall arguments. + * sysdeps/unix/sysv/linux/mips/pwrite.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pread64.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise. + +2003-05-30 Andreas Jaeger + + * sysdeps/x86_64/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE): + Add CFI directives. + + * sysdeps/unix/sysv/linux/x86_64/sigaction.c (RESTORE2): Add CFI + directives. + + * sysdeps/generic/sysdep.h: Add CFI_* macros for C files. + + * sysdeps/unix/sysv/linux/x86_64/sysdep.h (SYSCALL_ERROR_HANDLER): + Add CFI directives. + +2003-05-30 Jakub Jelinek + + * sysdeps/powerpc/powerpc32/elf/start.S: Make code compilable with + SHARED. + +2003-05-11 Andreas Schwab + + * Makerules: Always use -MP together with -MD. + (sed-remove-dotot): Substitute $(..) also at start of line. + ($(stdio_lim:h=st)): Use -MD instead of SUNPRO_DEPENDENCIES. + Generated defines with a single compiler call. + Use $(sed-remove-dotdot). + * mach/Makefile ($(objpfx)mach-syscalls.mk): Use -MD instead + of DEPENDENCIES_OUTPUT, and use $(sed-remove-objpfx). + * sysdeps/unix/sysv/linux/Makefile ($(objpfx)syscall-%.h): + Use -MD instead of SUNPRO_DEPENDENCIES, and use $(sed-remove-objpfx). + * sysdeps/unix/sysv/linux/mips/Makefile + ($(objpfx)syscall-%.h): Likewise. + +2003-05-28 Roland McGrath + + * malloc/malloc.h [! __GNUC__] (__const): Define if undefined. + +2003-05-26 Aldy Hernandez + + * soft-fp/soft-fp.h (FP_EX_UNDERFLOW): Define to 0. + +2003-05-28 Roland McGrath + + * sysdeps/unix/sysv/linux/ia64/setcontext.S: Pass fourth argument to + rt_sigprocmask system call. + * sysdeps/unix/sysv/linux/ia64/ucontext_i.h (SC_MASK): Fix value. + From Peter A. Buhr . + +2003-05-28 Ulrich Drepper + + * include/libc-symbols.h: Define hidden attribute for real also if + LIBC_NONSHARED is defined. Patch by Jakub Jelinek. + + * csu/Makefile: Add rules to build Scrt1.o. + * sysdeps/i386/elf/start.S: Make code compilable with SHARED. + * sysdeps/x86_64/elf/start.S: Likewise. + +2003-05-27 Jakub Jelinek + + * stdio-common/vfprintf.c (process_arg, process_string_arg): Use + pa_int/pa_u_int instead of pa_short_int, pa_u_short_int and pa_char. + * stdio-common/printf-parse.h (union printf_arg): Remove pa_char, + pa_short_int, pa_u_short_int and pa_float. + +2003-05-26 Jakub Jelinek + + * libio/strops.c (_IO_str_init_static): Change into a wrapper around + _IO_str_init_static_internal. + (_IO_str_init_static_internal): Moved from _IO_str_init_static, + change size argument to _IO_size_t, don't limit sprintf to 64M. + (_IO_str_init_readonly): Call _IO_str_init_static_internal. + * libio/wstrops.c (_IO_wstr_init_static): Change size argument to + _IO_size_t, don't limit swprintf to 256M. + (_IO_wstr_init_readonly): Remove. + * libio/libioP.h (_IO_str_init_static_internal, _IO_wstr_init_static): + Adjust prototypes. + (_IO_wstr_init_readonly): Remove prototype. + * libio/iovsprintf.c (_IO_vsprintf): Use + _IO_str_init_static_internal instead of INTUSE(_IO_str_init_static). + * libio/iovsscanf.c (_IO_vsscanf): Likewise. + * libio/memstream.c (open_memstream): Likewise. + * libio/obprintf.c (_IO_obstack_vfprintf): Likewise. + * libio/vasprintf.c (_IO_vasprintf): Likewise. + * libio/vsnprintf.c (_IO_vsnprintf): Likewise. + * stdio-common/tst-sprintf.c (main): Add new test. + +2003-05-26 Ulrich Drepper + + * stdio-common/vfprintf.c (vfprintf): Be bug-compatible with some + other implementation in respect of multiple uses of parameter with + different types. + +2003-05-25 Ulrich Drepper + + * sysdeps/unix/sysv/linux/kernel-features.h: Define + __ASSUME_FUTEX_REQUEUE for >= 2.5.70. + +2003-05-22 Andreas Jaeger + + * sysdeps/unix/sysv/linux/x86_64/gettimeofday.S: Add CFI + directives. + * sysdeps/unix/sysv/linux/x86_64/time.S: Likewise. + * sysdeps/x86_64/strtok.S: Likewise. + +2003-05-20 Guido Guenther + + * sysdeps/unix/sysv/linux/mips/bits/siginfo.h: Change SI_ASYNCNL + to -60 and define SI_TKILL. + +2003-05-21 H.J. Lu + + * math/test-fenv.c (feexcp_nomask_test): Fix comment. + (feexcp_mask_test): Likewise. + +2003-05-21 Ulrich Drepper + + * locale/programs/locale.c (main): Fix typo in last patch. + + * csu/elf-init.c: Mark __preinit_array_start, __preinit_array_end, + __init_array_start, __init_array_end, __fini_array_start, and + __fini_array_end as hidden. + +2003-05-21 Petter Reinholdtsen + + * locale/programs/locale.c (main): Report an error if setlocale() + fails [PR libc/2254]. + +2003-05-21 Jakub Jelinek + + * sysdeps/unix/sysv/linux/s390/system.c: New file. + +2003-05-21 Jakub Jelinek + + * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h (LOADARGS_0, + LOADARGS_1, LOADARGS_2, LOADARGS_3, LOADARGS_4, LOADARGS_5, + LOADARGS_6): Don't error if syscall argument is a string literal. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h (LOADARGS_0, + LOADARGS_1, LOADARGS_2, LOADARGS_3, LOADARGS_4, LOADARGS_5, + LOADARGS_6): Likewise. + +2003-05-21 Andreas Jaeger + + * sysdeps/generic/sysdep.h (cfi_offset, cfi_startproc, + cfi_endproc, cfi_def_cfa, cfi_def_ccfa_register, + cfi_def_cfa_offset, cfi_adjust_cfa_offset, cfi_offset): Define. + + * sysdeps/x86_64/sysdep.h (CALL_MCOUNT): Add cfi directives. + (ENTRY): Likewise. + (END): Likewise. + + * configure.in: Test for asm cfi directives. + + * config.h.in: Add HAVE_ASM_CFI_DIRECTIVES. + +2003-05-17 Andreas Jaeger + + * sysdeps/unix/sysv/linux/x86_64/syscall.S: Revert last patch. + + * rt/tst-clock_nanosleep.c: Include for clock_nanosleep. + +2003-05-16 Ulrich Drepper + + * rt/Makefile (tests): Add tst-clock_nanosleep. + * rt/tst-clock_nanosleep.c: New file. + * posix/Makefile (tests): Add tst-nanosleep. + * posix/tst-nanosleep.c: New file. + + * sysdeps/unix/clock_nanosleep.c (CPUCLOCK_P): Fix definition. + + * include/features.h (__USE_XOPEN2K): Define also for + _POSIX_C_SOURCE>=200112L. + + * sysdeps/unix/sysv/linux/sigwaitinfo.c (do_sigwaitinfo): Fold + SI_TKILL code into SI_USER. + * sysdeps/unix/sysv/linux/sigtimedwait.c (do_sigtimedwait): Likewise. + + * sysdeps/posix/sigpause.c (do_sigpause): Use sigdelset after all. + +2003-05-15 Jakub Jelinek + + * sysdeps/powerpc/powerpc32/dl-machine.c (_dl_reloc_overflow): + Remove sym argument, always use refsym. + (__process_machine_rela): Adjust callers. + * sysdeps/powerpc/powerpc64/dl-machine.c (_dl_reloc_overflow): + Likewise. + * sysdeps/powerpc/powerpc32/dl-machine.h (_dl_reloc_overflow): + Adjust prototype. + * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_rela): Likewise. + +2003-05-15 Ulrich Drepper + + * sysdeps/generic/dl-sysdep.c (_dl_show_auxv): Fix typo + (DL_NEED_SYSINFO -> NEED_DL_SYSINFO). If aux value is not known + print numeric values. + +2003-05-12 Thorsten Kukuk + + * inet/netinet/igmp.h: Sync with Linux Kernel 2.5.69 and *BSD. + +2003-05-14 Andreas Schwab + + * sysdeps/unix/sysv/linux/ia64/umount.c: New file. + +2003-05-14 Jakub Jelinek + + * elf/rtld.c (dl_main): For LD_TRACE_PRELINKING print search scope + even if no DT_NEEDED is present. + +2003-05-13 David Mosberger + + * sysdeps/unix/sysv/linux/ia64/setjmp.S: Fix the fix from + 2003-03-27: setjmp is NOT a leaf-routine (due to the call to + __sigjmp_save) so we can't keep the saved unat value in a scratch + register (r16). Use loc2 instead. + +2003-05-13 Ulrich Drepper + + * csu/Makefile: Do compile elf-init with PIC flag since in dynamic + binaries it has to be relocatable. + + * sysdeps/unix/sysv/linux/waitpid.c: Use waitpid syscall is available. + +2003-05-12 Steven Munroe + + * sysdeps/powerpc/bits/atomic.h + (__arch_compare_and_exchange_bool_8_rel): Define. + (__arch_compare_and_exchange_bool_16_rel): Define. + (__ARCH_REL_INSTR): Define if not already defined. + (__arch_atomic_exchange_and_add_32): Add "memory" to clobber list. + (__arch_atomic_decrement_if_positive_32): + Add "memory" to clobber list. + (__arch_compare_and_exchange_val_32_acq): Remove release sync. + (__arch_compare_and_exchange_val_32_rel): Define. + (__arch_atomic_exchange_32): Remove. + (__arch_atomic_exchange_32_acq): Define. + (__arch_atomic_exchange_32_rel): Define. + (atomic_compare_and_exchange_val_rel): Define. + (atomic_exchange_acq): Use __arch_atomic_exchange_*_acq forms. + (atomic_exchange_rel): Define. + * sysdeps/powerpc/powerpc32/bits/atomic.h + (__arch_compare_and_exchange_bool_32_acq): Remove release sync. + (__arch_compare_and_exchange_bool_32_rel): Define. + (__arch_compare_and_exchange_bool_64_rel): Define. + (__arch_compare_and_exchange_val_64_rel): Define. + (__arch_atomic_exchange_64): Remove. + (__arch_atomic_exchange_64_acq): Define. + (__arch_atomic_exchange_64_rel): Define. + * sysdeps/powerpc/powerpc64/bits/atomic.h + (__arch_compare_and_exchange_bool_32_rel): Define. + (__arch_compare_and_exchange_bool_64_acq): Remove release sync. + (__arch_compare_and_exchange_bool_64_rel): Define. + (__arch_compare_and_exchange_val_64_acq): Remove release sync. + (__arch_compare_and_exchange_val_64_rel): Define. + (__arch_atomic_exchange_64): Remove. + (__arch_atomic_exchange_64_acq): Define. + (__arch_atomic_exchange_64_rel): Define. + (__arch_atomic_exchange_and_add_64): Add "memory" to clobber list. + (__arch_atomic_decrement_if_positive_64): + Add "memory" to clobber list. + [!UP](__ARCH_REL_INSTR): Define as lwsync. + +2003-05-11 Andreas Schwab + + * io/Makefile ($(objpfx)ftwtest.out): Use absolute file names. + +2003-05-11 Ulrich Drepper + + * time/tst-strftime.c (do_test): Add tests for - flag. + +2003-05-11 Jim Meyering + + * time/strftime.c (my_strftime): Let the `-' (no-pad) flag affect + the space-padded-by-default conversion specifiers, %e, %k, %l. + +2003-05-11 Andreas Schwab + + * sysdeps/generic/sched_setaffinity.c: Fix parameter name. + +2003-05-10 Ulrich Drepper + + * sysdeps/generic/bits/sched.h: Define cpu_set_t only if not + already defined and when really needed. + * sysdeps/unix/sysv/linux/bits/sched.h: Likewise. + +2003-05-09 Thorsten Kukuk + + * sysdeps/unix/sysv/linux/netinet/igmp.h: Don't include kernel + headers, add defines from kernel header, move it from here... + * inet/netinet/igmp.h: ... to here. + * inet/Makefile (headers): Add netinet/igmp.h. + * sysdeps/unix/sysv/linux/Makefile: Remove netinet/igmp.h. + * sysdeps/unix/sysv/linux/Dist: Remove netinet/igmp.h. + +2003-05-10 Ulrich Drepper + + * sysdeps/pthread/lio_listio64.c (lio_listio64): If SIG == NULL, + use dummy sigevent structure with SIGEV_NONE [PR libc/5015]. + +2003-05-09 Thorsten Kukuk + + * libio/bits/stdio.h: Sync prototypes with libio/stdio.h + (remove __THROW from possible cancellation points). + +2003-05-10 Ulrich Drepper + + * posix/sched.h (CPU_SETSIZE): Define. + +2003-05-09 Ulrich Drepper + + * Makeconfig (gnulib): Remove -lgcc_eh again. + + * posix/sched.h: Change prototypes of sched_getaffinity and + sched_setaffinity. Define CPU_SET, CPU_CLR, CPU_ISSET, and CPU_ZERO. + * sysdeps/generic/sched_getaffinity.c: Adjust definition. + * sysdeps/generic/sched_setaffinity.c: Likewise. + * sysdeps/generic/bits/sched.h: Define __CPU_SETSIZE, __NCPUBITS, + __CPUELT, __CPUMASK, cpu_set_t, __cpu_mask, __CPU_ZERO, __CPU_SET, + __CPU_CLR, and __CPU_ISSET. + * sysdeps/unix/sysv/linux/bits/sched.h: Likewise. + * sysdeps/unix/sysv/linux/sched_getaffinity.c: New file. + * sysdeps/unix/sysv/linux/sched_setaffinity.c: New file. + + * include/atomic.h (atomic_exchange_acq): Renamed from atomic_exchange. + (atomic_exchange_rel): New #define. + * sysdeps/ia64/bits/atomic.h: Likewise. + * sysdeps/i386/i486/bits/atomic.h (atomic_exchange_acq): Renamed from + atomic_exchange. + * sysdeps/m68k/m68020/bits/atomic.h: Likewise. + * sysdeps/powerpc/bits/atomic.h: Likewise. + * sysdeps/sparc/sparc32/sparcv9/bits/atomic.h: Likewise. + * sysdeps/sparc/sparc64/bits/atomic.h: Likewise. + * sysdeps/x86_64/bits/atomic.h: Likewise. + * csu/tst-atomic.c: Use atomic_exchange_acq instead of atomic_exchange. + + * sysdeps/unix/sysv/linux/x86_64/get_clockfreq.c: New file. + +2003-05-08 Ulrich Drepper + + * malloc/thread-m.h: Remove special handling of thread_atfork if + HAVE_register_atfork_malloc is defined. + +2003-05-07 Andreas Jaeger + + * sysdeps/unix/sysv/linux/x86_64/syscall.S: Add DWARF2 unwind + information. + +2003-05-06 Ulrich Drepper + + * libio/oldiofdopen.c (_IO_old_fdopen): Use _IO_old_init not _IO_init. + * libio/oldiofopen.c (_IO_old_fopen): Likewise. + * libio/libioP.h: Declare _IO_old_init. + * libio/genops.c (_IO_no_init): Split in two. New function + _IO_old_init. + +2003-05-05 Ulrich Drepper + + * sysdeps/generic/enbl-secure.c (__libc_enable_secure_decided): New + variable. + (__libc_init_secure): Don't do anything if __libc_enable_secure_decided + is nonzero. + * include/unistd.h: Declare __libc_enable_secure_decided. + * elf/dl-support.c (_dl_aux_init): Recognize AT_UID, AT_EUID, AT_GID, + and AT_EGID. If all found, set __libc_enable_secure and + __libc_enable_secure_decided. + + * sysdeps/generic/libc-start.c [!SHARED]: Call + __libc_check_standard_fds after __libc_init_first. + +2003-05-05 Roland McGrath + + * Makerules (common-before-compile): New variable. + ($(common-objpfx)%.make): Depend on that instead of $(before-compile). + ($(common-objpfx)%.h $(common-objpfx)%.h.d): Likewise. Move this rule + to after all setting of before-compile. + +2003-05-05 Jakub Jelinek + + * sysdeps/ia64/bits/atomic.h (__arch_compare_and_exchange_val_8_acq, + __arch_compare_and_exchange_val_16_acq): Cast 0 to mem's type. + * sysdeps/powerpc/powerpc32/bits/atomic.h + (__arch_compare_and_exchange_val_64_acq): Likewise. + * sysdeps/sparc/sparc32/sparcv9/bits/atomic.h + (__arch_compare_and_exchange_val_8_acq, + __arch_compare_and_exchange_val_16_acq, + __arch_compare_and_exchange_val_64_acq): Likewise. + * sysdeps/sparc/sparc64/bits/atomic.h + (__arch_compare_and_exchange_val_8_acq, + __arch_compare_and_exchange_val_16_acq): Likewise. + * sysdeps/s390/bits/atomic.h (__arch_compare_and_exchange_val_8_acq, + __arch_compare_and_exchange_val_16_acq, + __arch_compare_and_exchange_val_64_acq): Likewise. + * sysdeps/unix/sysv/linux/sh/bits/atomic.h + (__arch_compare_and_exchange_val_64_acq): Likewise. + * sysdeps/s390/s390-64/backtrace.c (__backtrace): Add cast to shut + up warning. + * sysdeps/s390/fpu/fegetenv.c (fegetenv): Likewise. + + * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h + (INLINE_SYSCALL, INTERNAL_SYSCALL_DIRECT, INTERNAL_SYSCALL_SVC0): + Return long instead of int. + (INTERNAL_SYSCALL_ERROR_P): Cast val to unsigned long, replace + 0xfffff001u with -4095UL. + +2003-05-05 Andreas Jaeger + + * sysdeps/x86_64/fpu_control.h: New from i386. + + * sysdeps/unix/sysv/linux/x86_64/sysdep.h (__NR_semtimedop): + Define if not defined. + + * sunrpc/Makefile (generated-dirs): New variable. + * resolv/Makefile (generated): New variable. + +2003-05-04 Roland McGrath + + * csu/Makefile ($(csu-dummies) target rule): Don't use a temp C file. + Depend on $(before-compile). + + * csu/Makefile ($(objpfx)crt%.o): Replace implicit rule with a static + pattern rule. The implicit rule could be ruled out when $(objpfx) + didn't exist at the time of its consideration (ugh!). + + * Makerules (+make-deps): Fix target matching. + Use $(sed-remove-dotdot). + +2003-05-03 Ulrich Drepper + + * nscd/nscd.c (main): Parse config file right after parsing + parameters. Then, if get_stats is true, call receive_print_stats. + Drop parameter from nscd_init call. + (get_stats): New variable. + (parse_opt): Set get_stats, don't call receive_print_stats here. + * nscd/nscd.h: Declare dbs, stat_user, and stat_uid. Adjust nscd_init + prototype. + * nscd/connections.c (stat_user, stat_uid): New variables. + (dbs): Make global. + (nscd_init): Don't read configuration file here. Drop parameter. + (handle_request): Cleanup handling of non-database lookup requests. + * nscd/nscd_conf.c (nscd_parse_file): Recognize stat-user entry. + Get UID of the specified user. Use xstrdup instead of strdup. + * nscd/nscd_stat.c (receive_print_stats): Check UID. If not zero, + check stat_user. + * nscd/Makefile (nscd-modules): Add xstrdup. + * nscd/nscd.conf: Document stat-user entry. + +2003-05-03 H.J. Lu + + * sysdeps/unix/sysv/linux/ia64/sysdep.h (__NR_semtimedop): Define + if not defined. + +2003-04-22 Roland McGrath + + * elf/elf.h (AT_SYSINFO_EHDR): New macro, replaces AT_SYSINFO_EH_FRAME. + * sysdeps/generic/ldsodefs.h (struct rtld_global): Remove + dl_sysinfo_eh_frame member, add dl_sysinfo_dso member instead. + * elf/dl-support.c: Update defn. + * sysdeps/generic/libc-start.c: Don't call __register_frame_info_bases. + * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start) [NEED_DL_SYSINFO]: + Set GL(dl_sysinfo_dso) from AT_SYSINFO_EHDR. + (_dl_show_auxv): Grok AT_SYSINFO_EHDR, not AT_SYSINFO_EH_FRAME. + * elf/rtld.c (dl_main) [NEED_DL_SYSINFO]: If GL(dl_sysinfo_dso) is + set, set up a link_map for the preloaded, prelinked object. + +2003-05-03 Roland McGrath + + * sysdeps/gnu/Makefile (generated): Append errlist-compat.c here, ... + * stdio-common/Makefile: ... not here. + + * csu/Makefile ($(objpfx)initfini.s): Depend on $(before-compile). + * sysdeps/gnu/Makefile ($(objpfx)errlist-compat.c): Likewise. + +2003-05-02 Ulrich Drepper + + * sysdeps/unix/sysv/linux/s390/semtimedop.c: New file. + + * sysdeps/unix/sysv/linux/alpha/ipc_priv.h (IPCOP_semtimedop): Define. + + * sysdeps/generic/dl-fptr.c (_dl_make_fptr): Use 0 not NULL for + comparing ftab elements. + (_dl_unmap): Fix typo in test. + (_dl_make_fptr): Fix typos introduced in last change. + + * sysdeps/generic/dl-fptr.c: Put back one optimization from the + original patch. Use non-exported symbols. Mark translatable + strings. Pretty printing. + +2003-05-02 Roland McGrath + + * Makerules (do-stamp): Do $(make-target-directory). + +2003-04-07 H.J. Lu + + * sysdeps/generic/dl-fptr.c: Modify to remove the lock. + +2003-04-03 H.J. Lu + + * sysdeps/ia64/dl-fptr.c: Moved to ... + * sysdeps/generic/dl-fptr.c: Here. + + * sysdeps/generic/dl-fptr.h: New. + * sysdeps/ia64/dl-fptr.h: New. + + * sysdeps/ia64/dl-symaddr.c: Moved to ... + * sysdeps/generic/dl-symaddr.c: here. + + * sysdeps/ia64/dl-machine.h: Include . + (IA64_BOOT_FPTR_TABLE_LEN): Removed. + (ia64_fdesc): Likewise. + (ia64_fdesc_table): Likewise. + (__ia64_make_fptr): Likewise. + (__ia64_init_bootstrap_fdesc_table): Replace __ia64_boot_fptr_table + with _dl_boot_fptr_table. + (elf_machine_runtime_setup): Replace `struct ia64_fdesc' with + `struct fdesc'. + (elf_machine_rela): Replace __ia64_make_fptr with _dl_make_fptr. + +2003-05-01 Roland McGrath + + * sysdeps/generic/bp-thunks.h: Protect includes with [!__ASSEMBLER__]. + * sysdeps/unix/sysv/linux/i386/bp-thunks.h: Likewise. + + * sysdeps/unix/sysv/linux/Makefile ($(objpfx)syscall-%.h): + Use $(make-target-directory). + * sysdeps/unix/Makefile ($(objpfx)stub-syscalls.c): Likewise. + + * Makerules (compile-mkdep-flags): New variable, pass -MD -MF $@.d. + (compile-command.S): Don't use ifndef. Append $(compile-mkdep-flags). + (compile-command.s, compile-command.c): Likewise. + ($(objpfx)%.d): All such pattern rules removed. + ($(+sysdir_pfx)sysd-rules): Don't generate them. + ($(common-objpfx)dummy.d): Target removed. + (make-dummy-dep): Variable removed. + (generate-md5): Likewise. + (%.d: %.dt): New pattern rule. + (+depfiles): Use $(wildcard) function to get just existing *.d files + and .d files for existing *.dt files. + (common-clean): Remove all *.d and *.dt files. + (before-compile): Add $(objpfx). when it doesn't exist, + regardless of $(no_deps). + * elf/rtld-Rules ($(objpfx)rtld-%.d): All such pattern rules removed. + (rtld-depfiles): Use .os.d instead of .d names. + Include existing *.d files and .d files for existing *.dt files. + + * Makerules ($(common-objpfx)%.make): Protect with [! subdir]. + Use -MD, -MT and -MF flags instead of SUNPRO_DEPENDENCIES variable. + + * sysdeps/unix/Makefile ($(common-objpfx)s-%.d): Remove compat.h hack. + Do s-*.d includes only if we have some syscall routines in this subdir. + + * include/libc-symbols.h (libc_freeres_ptr): Use %nobits instead of + @nobits. The former is accepted by gas on any ELF platform. + +2003-05-01 Ulrich Drepper + + * sysdeps/unix/sysv/linux/semtimedop.c: New file. + + * malloc/malloc.c (mSTATs): Call ptmalloc_init if necessary. + +2003-04-29 Andreas Schwab + + * string/test-strcat.c (do_one_test): Fix attribute name. + +2003-04-30 Alexandre Oliva + + * sysdeps/unix/sysv/linux/mips/sys/ucontext.h (ucontext): Make + uc_flags long for all ABIs. + +2003-04-30 Andreas Jaeger + + * sysdeps/unix/sysv/linux/x86_64/sys/debugreg.h + (DR_CONTROL_RESERVED): Use correct value for 64-bit. + Reported by Andrew Derrick Balsa . + Add bi-arch support. + +2003-04-30 Ulrich Drepper + + * malloc/malloc.c (mEMALIGn): Define alias __memalign_internal. + (__posix_memalign): Use __memalign_internal instead of memalign. + +2003-04-29 Roland McGrath + + * configure.in: Search for AUTOCONF unconditionally. + Just don't complain about missing it under --without-cvs. + + * include/libc-symbols.h (__symbol_set_attribute): New macro, + give hidden for [SHARED] and weak for [! SHARED]. + (symbol_set_declare): Use that. Never need weak_extern these days. + * Makerules ($(common-objpfx)shlib.lds): Go back to using PROVIDE. + Depend on $(..)Makerules. + +2003-04-29 Ulrich Drepper + + * sysdeps/unix/sysv/linux/ifaddrs.c (getifaddrs): Use __ protected + variants of socket, bind, recvmsg, and sendto. + + * sysdeps/i386/fpu/ftestexcept.c: Also check SSE status word. + + * include/signal.h: Use libc_hidden_proto for sigaddset and sigdelset. + * signal/sigaddset.c: Add libc_hidden_def. + * signal/sigdelset.c: Likewise. + +2003-04-29 Jakub Jelinek + + * sysdeps/i386/i486/string-inlines.c (__memcpy_g, __strchr_g): Move + to the end of the file. + + * configure.in: Change __oline__ to $LINENO. + (HAVE_BUILTIN_REDIRECTION): New check. + * config.h.in (HAVE_BUILTIN_REDIRECTION): Add. + * include/libc-symbols.h (libc_hidden_builtin_proto, + libc_hidden_builtin_def, libc_hidden_builtin_weak, + libc_hidden_builtin_ver): Define. + * include/string.h (memchr, memcpy, memmove, memset, strcat, strchr, + strcmp, strcpy, strcspn, strlen, strncmp, strncpy, strpbrk, strrchr, + strspn, strstr): Add libc_hidden_builtin_proto. + * intl/plural.y: Include string.h. + * sysdeps/alpha/alphaev6/memchr.S (memchr): Add + libc_hidden_builtin_def. + * sysdeps/alpha/alphaev6/memcpy.S (memcpy): Likewise. + * sysdeps/alpha/alphaev6/memset.S (memset): Likewise. + * sysdeps/alpha/alphaev67/strcat.S (strcat): Likewise. + * sysdeps/alpha/alphaev67/strchr.S (strchr): Likewise. + * sysdeps/alpha/alphaev67/strlen.S (strlen): Likewise. + * sysdeps/alpha/alphaev67/strrchr.S (strrchr): Likewise. + * sysdeps/alpha/memchr.S (memchr): Likewise. + * sysdeps/alpha/memset.S (memset): Likewise. + * sysdeps/alpha/strcat.S (strcat): Likewise. + * sysdeps/alpha/strchr.S (strchr): Likewise. + * sysdeps/alpha/strcmp.S (strcmp): Likewise. + * sysdeps/alpha/strcpy.S (strcpy): Likewise. + * sysdeps/alpha/strlen.S (strlen): Likewise. + * sysdeps/alpha/strncmp.S (strncmp): Likewise. + * sysdeps/alpha/strncpy.S (strncpy): Likewise. + * sysdeps/alpha/strrchr.S (strrchr): Likewise. + * sysdeps/arm/memset.S (memset): Likewise. + * sysdeps/arm/strlen.S (strlen): Likewise. + * sysdeps/generic/memchr.c (memchr): Likewise. + * sysdeps/generic/memcpy.c (memcpy): Likewise. + * sysdeps/generic/memmove.c (memmove): Likewise. + * sysdeps/generic/memset.c (memset): Likewise. + * sysdeps/generic/strcat.c (strcat): Likewise. + * sysdeps/generic/strchr.c (strchr): Likewise. + * sysdeps/generic/strcmp.c (strcmp): Likewise. + * sysdeps/generic/strcpy.c (strcpy): Likewise. + * sysdeps/generic/strcspn.c (strcspn): Likewise. + * sysdeps/generic/strlen.c (strlen): Likewise. + * sysdeps/generic/strncmp.c (strncmp): Likewise. + * sysdeps/generic/strncpy.c (strncpy): Likewise. + * sysdeps/generic/strpbrk.c (strpbrk): Likewise. + * sysdeps/generic/strrchr.c (strrchr): Likewise. + * sysdeps/generic/strspn.c (strspn): Likewise. + * sysdeps/generic/strstr.c (strstr): Likewise. + * sysdeps/i386/i486/strcat.S (strcat): Likewise. + * sysdeps/i386/i486/strlen.S (strlen): Likewise. + * sysdeps/i386/i586/memcpy.S (memcpy): Likewise. + * sysdeps/i386/i586/memset.S (memset): Likewise. + * sysdeps/i386/i586/strchr.S (strchr): Likewise. + * sysdeps/i386/i586/strcpy.S (strcpy): Likewise. + * sysdeps/i386/i586/strlen.S (strlen): Likewise. + * sysdeps/i386/i686/memcpy.S (memcpy): Likewise. + * sysdeps/i386/i686/memmove.S (memmove): Likewise. + * sysdeps/i386/i686/memset.S (memset): Likewise. + * sysdeps/i386/i686/strcmp.S (strcmp): Likewise. + * sysdeps/i386/memchr.S (memchr): Likewise. + * sysdeps/i386/memset.c (memset): Likewise. + * sysdeps/i386/strchr.S (strchr): Likewise. + * sysdeps/i386/strcspn.S (strcspn): Likewise. + * sysdeps/i386/strlen.c (strlen): Likewise. + * sysdeps/i386/strpbrk.S (strpbrk): Likewise. + * sysdeps/i386/strrchr.S (strrchr): Likewise. + * sysdeps/i386/strspn.S (strspn): Likewise. + * sysdeps/ia64/memchr.S (memchr): Likewise. + * sysdeps/ia64/memcpy.S (memcpy): Likewise. + * sysdeps/ia64/memmove.S (memmove): Likewise. + * sysdeps/ia64/memset.S (memset): Likewise. + * sysdeps/ia64/strcat.S (strcat): Likewise. + * sysdeps/ia64/strchr.S (strchr): Likewise. + * sysdeps/ia64/strcmp.S (strcmp): Likewise. + * sysdeps/ia64/strcpy.S (strcpy): Likewise. + * sysdeps/ia64/strlen.S (strlen): Likewise. + * sysdeps/ia64/strncmp.S (strncmp): Likewise. + * sysdeps/ia64/strncpy.S (strncpy): Likewise. + * sysdeps/m68k/memchr.S (memchr): Likewise. + * sysdeps/m68k/strchr.S (strchr): Likewise. + * sysdeps/mips/mips64/memcpy.S (memcpy): Likewise. + * sysdeps/mips/mips64/memset.S (memset): Likewise. + * sysdeps/mips/memcpy.S (memcpy): Likewise. + * sysdeps/mips/memset.S (memset): Likewise. + * sysdeps/powerpc/powerpc32/memset.S (memset): Likewise. + * sysdeps/powerpc/powerpc32/strchr.S (strchr): Likewise. + * sysdeps/powerpc/powerpc32/strcmp.S (strcmp): Likewise. + * sysdeps/powerpc/powerpc32/strcpy.S (strcpy): Likewise. + * sysdeps/powerpc/powerpc32/strlen.S (strlen): Likewise. + * sysdeps/powerpc/powerpc64/memcpy.S (memcpy): Likewise. + * sysdeps/powerpc/powerpc64/memset.S (memset): Likewise. + * sysdeps/powerpc/powerpc64/strchr.S (strchr): Likewise. + * sysdeps/powerpc/powerpc64/strcmp.S (strcmp): Likewise. + * sysdeps/powerpc/powerpc64/strcpy.S (strcpy): Likewise. + * sysdeps/powerpc/powerpc64/strlen.S (strlen): Likewise. + * sysdeps/powerpc/strcat.c (strcat): Likewise. + * sysdeps/sparc/sparc32/memchr.S (memchr): Likewise. + * sysdeps/sparc/sparc32/memcpy.S (memcpy): Likewise. + * sysdeps/sparc/sparc32/memset.S (memset): Likewise. + * sysdeps/sparc/sparc32/strcat.S (strcat): Likewise. + * sysdeps/sparc/sparc32/strchr.S (strchr, strrchr): Likewise. + * sysdeps/sparc/sparc32/strcmp.S (strcmp): Likewise. + * sysdeps/sparc/sparc32/strcpy.S (strcpy): Likewise. + * sysdeps/sparc/sparc32/strlen.S (strlen): Likewise. + * sysdeps/sparc/sparc64/sparcv9b/memcpy.S (memcpy, memmove): Likewise. + * sysdeps/sparc/sparc64/memchr.S (memchr): Likewise. + * sysdeps/sparc/sparc64/memcpy.S (memcpy, memmove): Likewise. + * sysdeps/sparc/sparc64/memset.S (memset): Likewise. + * sysdeps/sparc/sparc64/strcat.S (strcat): Likewise. + * sysdeps/sparc/sparc64/strchr.S (strchr, strrchr): Likewise. + * sysdeps/sparc/sparc64/strcmp.S (strcmp): Likewise. + * sysdeps/sparc/sparc64/strcpy.S (strcpy): Likewise. + * sysdeps/sparc/sparc64/strcspn.S (strcspn): Likewise. + * sysdeps/sparc/sparc64/strlen.S (strlen): Likewise. + * sysdeps/sparc/sparc64/strncmp.S (strncmp): Likewise. + * sysdeps/sparc/sparc64/strncpy.S (strncpy): Likewise. + * sysdeps/sparc/sparc64/strpbrk.S (strpbrk): Likewise. + * sysdeps/sparc/sparc64/strspn.S (strspn): Likewise. + * sysdeps/sh/memcpy.S (memcpy): Likewise. + * sysdeps/sh/memset.S (memset): Likewise. + * sysdeps/sh/strlen.S (strlen): Likewise. + * sysdeps/s390/s390-32/memchr.S (memchr): Likewise. + * sysdeps/s390/s390-32/memcpy.S (memcpy): Likewise. + * sysdeps/s390/s390-32/memset.S (memset): Likewise. + * sysdeps/s390/s390-32/strcmp.S (strcmp): Likewise. + * sysdeps/s390/s390-32/strcpy.S (strcpy): Likewise. + * sysdeps/s390/s390-32/strncpy.S (strncpy): Likewise. + * sysdeps/s390/s390-64/memchr.S (memchr): Likewise. + * sysdeps/s390/s390-64/memcpy.S (memcpy): Likewise. + * sysdeps/s390/s390-64/memset.S (memset): Likewise. + * sysdeps/s390/s390-64/strcmp.S (strcmp): Likewise. + * sysdeps/s390/s390-64/strcpy.S (strcpy): Likewise. + * sysdeps/s390/s390-64/strncpy.S (strncpy): Likewise. + * sysdeps/x86_64/memcpy.S (memcpy): Likewise. + * sysdeps/x86_64/memset.S (memset): Likewise. + * sysdeps/x86_64/strcat.S (strcat): Likewise. + * sysdeps/x86_64/strchr.S (strchr): Likewise. + * sysdeps/x86_64/strcmp.S (strcmp): Likewise. + * sysdeps/x86_64/strcpy.S (strcpy): Likewise. + * sysdeps/x86_64/strcspn.S (strcspn): Likewise. + * sysdeps/x86_64/strlen.S (strlen): Likewise. + * sysdeps/x86_64/strspn.S (strspn): Likewise. + * string/string-inlines.c: Move... + * sysdeps/generic/string-inlines.c: ...here. + (__memcpy_g, __strchr_g): Remove. + (__NO_INLINE__): Define before including , + undefine after. Include bits/string.h and bits/string2.h. + * sysdeps/i386/i486/string-inlines.c: New file. + * sysdeps/i386/string-inlines.c: New file. + * sysdeps/i386/i486/Versions: Remove. + All GLIBC_2.1.1 symbols moved... + * sysdeps/i386/Versions (libc): ...here. + +2003-04-29 Ulrich Drepper + + * sysdeps/i386/fpu/Makefile: New file. + * sysdeps/i386/fpu/fedisblxcpt.c: Also set SSE control word. + * sysdeps/i386/fpu/feenablxcpt.c: Likewise. + * sysdeps/i386/fpu/feholdexcpt.c: Likewise. + * sysdeps/i386/fpu/fesetround.c: Also set SSE rounding mode + [PR libc/4987]. + +2003-04-28 Ulrich Drepper + + * nscd/nscd_getgr_r.c: Compact code a bit. Add some __builtin_expect. + * nscd/nscd_getpw_r.c: Likewise. + * nscd/nscd_gethst_r.c: Likewise. + +2003-04-27 Ulrich Drepper + + * nscd/pwdcache.c: Initialize .version element in result. + * nscd/grpcache.c: Likewise. + * nscd/pwdcache.c: Likewise. + +2003-04-27 Andreas Schwab + + * Makeconfig ($(common-objpfx)sysd-sorted): Fix for running in + subdirectory. + +2003-04-27 Andreas Schwab + + * sysdeps/unix/sysv/linux/m68k/semtimedop.S: New file. + +2003-04-27 Ulrich Drepper + + * nscd/connections.c (client_queued): New variable. + (nscd_run): Revamp the loop. Don't call poll except for cleanup + threads. Keep track of the number of delays caused because of busy + worker threads. + * nscd/nscd.h: Declare client_queued. + * nscd/nscd_stat.c: Transmit and print client_queued information. + + * locale/programs/locale.c (show_info): Use '\177' instead of CHAR_MAX. + + * Makerules ($(common-objpfx)shlib.lds): Don't use PROVIDE to + define __start_libc_freeres_ptrs and __stop___libc_freeres_ptrs. + +2003-04-26 Ulrich Drepper + + * elf/dl-close.c [USE_TLS && TLS_TCB_AT_TP] (_dl_close): Reimplement + tracking of freed memory in static TLS block. + * elf/Makefile: Add rules to build and run tst-tls13. + * elf/tst-tls13.c: New file. + * elf/tst-tlsmod13.c: New file. + * elf/tst-tlsmod13a.c: New file. + + * elf/tst-tls8.c: Adjust types of variables to avoid warnings. + + * elf/dl-reloc.c: Pretty printing. + +2003-04-26 Roland McGrath + + * Makerules ($(common-objpfx)shlib.lds): New target. + (common-generated): Add it. + (build-shlib, build-module): Use that instead of generating every time. + ($(common-objpfx)libc.so): Depend on it. + (lib%.so rule): Likewise. + (build-module-helper-objlist): Remove %.lds. + (LDSEDCMD-c.so): Variable removed. + * iconvdata/extra-module.mk ($(objpfx)$(mod).so): + Depend on $(common-objpfx)shlib.lds. + * dlfcn/Makefile ($(test-modules)): Likewise. + +2003-04-26 Roland McGrath + + * sysdeps/mach/hurd/tmpfile.c: Remove USE_IN_LIBIO conditionals. + +2003-04-26 Andreas Schwab + + * elf/dl-close.c (remove_slotinfo): Fix missing parens. + +2003-04-25 Ulrich Drepper + + * nscd/cache.c (cache_search): Keep track of how many chain links + we searched and update table statistics. + (cache_add): Keep track of how many values are in the table. + (prune_cache): Likewise. Keep track of locking success. + Print messages about removed entries in separate pass. + * nscd/connections.c (handle_request): Don't print debug message here. + The caller will do it. Keep track of locking success. + (nscd_run): Print debug message. Also print PID of the client process. + * nscd/nscd.c (start_time): New variable. + (main): Remember start time. + * nscd/nscd.h: Declare start_time. + (struct database): Add more members for new statistics. + * nscd/nscd_stat.c: Add support for sending, receiving, and printing + of new statistics. + + * sysdeps/posix/getaddrinfo.c: Include . + +2003-04-22 Jakub Jelinek + + * include/link.h (NO_TLS_OFFSET): Define to 0 if not defined. + * elf/dl-close.c (_dl_close): Use NO_TLS_OFFSET. + * elf/dl-object.c (_dl_new_object): Initialize l_tls_offset to + NO_TLS_OFFSET. + * elf/rtld.c (_dl_start_final, _dl_start): Likewise. + * elf/dl-reloc.c (CHECK_STATIC_TLS): Use NO_TLS_OFFSET. + * sysdeps/generic/dl-tls.c (_dl_allocate_tls_init): Likewise. + * sysdeps/powerpc/dl-tls.h (TLS_TPREL_VALUE): Don't subtract + TLS_TCB_SIZE. + +2003-04-24 Ulrich Drepper + + * nss/getent.c: Implement alternative host database lookup via + getaddrinfo. + + * include/ifaddrs.h: New file. + * include/netdb.h: Move definitions of AI_V4MAPPED, AI_ALL, and + AI_ADDRCONFIG... + * resolv/netdb.h: ...here. + * sysdeps/gnu/ifaddrs.c. Use libc_hidden_def where appropriate. + * sysdeps/unix/sysv/linux/ifaddrs.c: Likewise. + * sysdeps/posix/getaddrinfo.c: Implement AI_V4MAPPED, AI_ALL, and + AI_ADDRCONFIG. + +2003-04-24 Roland McGrath + + * elf/dl-reloc.c (_dl_allocate_static_tls): Add internal_function. + +2003-04-24 Jakub Jelinek + + * elf/dl-reloc.c (allocate_static_tls): Rename to... + (_dl_allocate_static_tls): ... this function. No longer static. + (CHECK_STATIC_TLS): Adjust. + * sysdeps/generic/ldsodefs.h (_dl_allocate_static_tls): New prototype. + * sysdeps/powerpc/powerpc32/dl-machine.h (__process_machine_rela): + Add SYM_MAP argument. + (elf_machine_rela): Adjust caller. Declare SYM_MAP unconditionally. + Check if SYM_MAP != NULL for R_PPC_DTPREL32. Only handle 32-bit + TLS relocs here. #ifdef out relocs which never appear in + .gnu.conflict section from dl-conflict.c processing. + * sysdeps/powerpc/powerpc32/dl-machine.c (__process_machine_rela): + Add SYM_MAP argument. Handle 16-bit TLS relocs here. + + * sysdeps/s390/s390-32/dl-machine.h (elf_machine_rela): #ifdef + out relocs which never appear in .gnu.conflict section from + dl-conflict.c processing. + * sysdeps/s390/s390-64/dl-machine.h (elf_machine_rela): Likewise. + * sysdeps/x86_64/dl-machine.h (elf_machine_rela): Likewise. + * sysdeps/i386/dl-machine.h (elf_machine_rela): Likewise. + Use r_type in RESOLVE macro. + +2003-04-23 Ulrich Drepper + + * nis/ypclnt.c (__yp_bind): Expect YPDB parameter to always be != + NULL. Remove code made redundant by this assumption. + (__yp_unbind): Add call to free. Adjust all callers. + + * nis/ypclnt.c (yp_all): Free the dom_binding object after + unbinding it. + + * grp/initgroups.c (getgrouplist): Don't copy too much into the + user buffer if more groups are found than fit into it. + + * nis/nss_nis/nis-initgroups.c (_nss_nis_initgroups_dyn): Use + extend_alloca. + +2003-04-23 Jakub Jelinek + + * sysdeps/posix/getaddrinfo.c (gaih_inet): Check for rc == ERANGE, + not rc == errno. Use extend_alloca. + + * elf/tst-tls12.c (main): Fix declaration. + * elf/tst-tls10.c (dummy): Make hidden instead of static. + * elf/tst-tlsmod7.c (dummy): Likewise. + * elf/tst-tlsmod8.c (dummy): Likewise. + * elf/tst-tlsmod9.c (dummy): Likewise. + +2003-04-22 Roland McGrath + + * sysdeps/unix/sysv/linux/not-cancel.h: Put parens around macro args. + (open_not_cancel): Make last argument non-optional. + * sysdeps/generic/check_fds.c (check_one_fd): Update caller. + * sysdeps/unix/sysv/linux/gethostid.c (gethostid): Likewise. + * iconv/gconv_cache.c (__gconv_load_cache): Likewise. + + * include/tls.h: Protect against multiple inclusion. + +2003-04-22 Ulrich Drepper + + * nscd/nscd-client.h: Add declaration for __nscd_open_socket. + * nscd/nscd_gethst_r.c (__nscd_open_socket): Renamed from + open_socket. Not static anymore. + (nscd_gethst_r): Use __nscd_open_socket. + * nscd/nscd_getgr_r.c (open_socket): Removed. + (nscd_getgr_r): Use __nscd_open_socket. + * nscd/nscd_getpw_r.c (open_socket): Removed. + (nscd_getpw_r): Use __nscd_open_socket. + + * nscd/nscd.c (main): Change type of fdn to long int and use strtol. + * nscd/connections.c (handle_request): Add cast to avoid warning. + +2003-04-21 Ulrich Drepper + + * signal/sigfillset.c: Moved to... + * sysdeps/generic/sigfillset.c: ...here. If SIGCANCEL is defined + do not set the corresponding bit. + + * sysdeps/unix/sysv/linux/sigprocmask.c: Prevent changing mask for + SIGCANCEL. + * sysdeps/unix/sysv/linux/alpha/bits/siginfo.h: Define SI_TKILL. + * sysdeps/unix/sysv/linux/bits/siginfo.h: Define SI_TKILL. + * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h: Define SI_TKILL. + * sysdeps/unix/sysv/linux/s390/bits/siginfo.h: Define SI_TKILL. + * sysdeps/unix/sysv/linux/sparc/bits/siginfo.h: Define SI_TKILL. + +2003-04-20 Ulrich Drepper + + * sysdeps/unix/sysv/linux/not-cancel.h (open_not_cancel): Cast + first syscall parameter to const char*. + +2003-04-19 Ulrich Drepper + + * intl/Makefile ($(objpfx)msgs.h): Use C locale for sed run. + + * configure.in: Add AC_PROG_CXX. + * config.make.in (CXX): Define. + + * sysdeps/i386/i686/hp-timing.h (HP_TIMING_PRINT): Change type of + __len to size_t to avoid warnings. + +2003-04-18 Jes Sorensen + + * libc/sysdeps/unix/sysv/linux/ia64/bits/fcntl.h: Sync with Linux + 2.5.67. + * libc/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Likewise. + +2003-04-19 Ulrich Drepper + + * stdlib/cxa_finalize.c (__cxa_finalize): Don't call + UNREGISTER_ATFORK if d == NULL. + + * catgets/nl_types.h: Remove __THROW marker from cancellation points. + * dirent/dirent.h: Likewise. + * dlfcn/dlfcn.h: Likewise. + * grp/grp.h: Likewise. + * iconv/iconv.h: Likewise. + * io/fcntl.h: Likewise. + * io/ftw.h: Likewise. + * libio/stdio.h: Likewise. + * misc/sys/mman.h: Likewise. + * misc/sys/select.h: Likewise. + * misc/sys/syslog.h: Likewise. + * misc/sys/uio.h: Likewise. + * posix/spawn.h: Likewise. + * posix/unistd.h: Likewise. + * posix/sys/wait.h: Likewise. + * pwd/pwd.h: Likewise. + * resolv/netdb.h: Likewise. + * rt/aio.h: Likewise. + * shadow/shadow.h: Likewise. + * signal/signal.h: Likewise. + * socket/sys/socket.h: Likewise. + * stdlib/stdlib.h: Likewise. + * streams/stropts.h: Likewise. + * string/string.h: Likewise. + * sysdeps/gnu/utmpx.h: Likewise. + * sysvipc/sys/msg.h: Likewise. + * termios/termios.h: Likewise. + * time/time.h: Likewise. + * wcsmbs/wchar.h: Likewise. + * iconv/gconv_cache.c: Include and use non-cancelable + functions. + * misc/daemon.c: Likewise. + * sysdeps/generic/backtracesymsfd.c: Likewise. + * sysdeps/generic/check_fds.c: Likewise. + * sysdeps/unix/sysv/linux/gethostid.c: Likewise. + * sysdeps/unix/sysv/linux/not-cancel.h: New file. + * sysdeps/generic/not-cancel.h: New file. + * csu/Makefile (distribute): Add not-cancel.h. + * sysdeps/unix/sysv/linux/fatal-prepare.h: New file. + * sysdeps/unix/sysv/linux/Makefile: Define FATAL_PREPARE_INCLUDE + for assert.c and assert-perr.c to include . + * sysdeps/unix/sysv/linux/Dist: Add fatal-prepare.h. + + * sysdeps/posix/remove.c (remove): Rewrite. No need to restore + errno and unlink first. + + * io/ftw.c (ftw_dir): In all places assume fchdir is available. + +2003-04-18 Ulrich Drepper + + * sysdeps/unix/sysv/linux/libc_fatal.c (__libc_fatal): Use + INTERNAL_SYSCALL instead of INLINE_SYSCALL. + +2003-04-17 Ulrich Drepper + + * sysdeps/unix/sysv/linux/Makefile: Remove db2 directory handling. + + * malloc/Makefile (CFLAGS-malloc.c): Define DEFAULT_TOP_PAD to 128k. + * sysdeps/unix/sysv/linux/Makefile (CFLAGS-malloc.c): Add to, not + replace. + + * signal/Makefile (tests): Add tst-sigsimple. + * signal/tst-sigsimple.c: New file. + +2003-04-16 Jakub Jelinek + + * elf/Makefile (distribute): Add tst-tlsmod{[7-9],1[0-2]}.c and + tst-tls10.h. + (tests): Add tst-tls1[0-2]. + (modules-names): Add tst-tlsmod{[7-8],1[0-2]}. + ($(objpfx)tst-tlsmod8.so): Depend on tst-tlsmod7.so. + ($(objpfx)tst-tlsmod10.so): Depend on tst-tlsmod9.so. + ($(objpfx)tst-tlsmod12.so): Depend on tst-tlsmod11.so. + ($(objpfx)tst-tls10): Depend on tst-tlsmod8.so. + ($(objpfx)tst-tls11): Depend on tst-tlsmod10.so. + ($(objpfx)tst-tls12): Depend on tst-tlsmod12.so. + * elf/tst-tls10.c: New test. + * elf/tst-tls11.c: New test. + * elf/tst-tls12.c: New test. + * elf/tst-tls10.h: New file. + * elf/tst-tlsmod7.c: New file. + * elf/tst-tlsmod8.c: New file. + * elf/tst-tlsmod9.c: New file. + * elf/tst-tlsmod10.c: New file. + * elf/tst-tlsmod11.c: New file. + * elf/tst-tlsmod12.c: New file. + +2003-04-15 Steven Munroe + + * sysdeps/powerpc/bits/atomic.h: Moved ppc32/64 specific code to ... + * sysdeps/powerpc/powerpc32/bits/atomic.h: New file. + * sysdeps/powerpc/powerpc64/bits/atomic.h: New file. + +2003-04-17 Ulrich Drepper + + * posix/regex.h: Include . + + * signal/sigrelse.c (sigrelse): Use sigdelset and not __sigdelset. + The signal number must be checked. + * signal/sighold.c (sighold): Use sigaddset and not __sigaddset. + The signal number must be checked [PR libc/5004]. + + * sysdeps/unix/sysv/linux/system.c: If compiled without threads + don't do anything fancy. + + * sysdeps/generic/bits/libc-lock.h: Define + __rtld_lock_define_initialized_recursive. + + * nss/getXXbyYY_r.c [USE_NSCD] (REENTRANT_NAME): Only retry + contacting nscd if NOT_USENSCD_NAME > 0. + * nss/nsswitch.c (__nss_disable_nscd): New function. + * nss/nsswitch.h: Declare it. + * nss/Versions [GLIBC_PRIVATE]: Export __nss_disable_nscd. + * nscd/nscd.c (main): Call __nss_disable_nscd. + +2003-04-16 Ulrich Drepper + + * stdio-common/perror.c (perror): We don't need to set the offset + to _IO_pos_bad, this is how streams are initialized. + + * locale/programs/ld-time.c (TESTARR_ELEM): Make i unsigned. + (time_output): If necessary, allocate new buffer for .name string if + padding is required. + + * sysdeps/unix/sysv/linux/ifaddrs.c (getifaddrs): Check lengths + before copying. This might leave holes in the list. Adjust + pointers if necessary. + (netlink_receive): Allocate only one block. + (free_netlink_handle): Adjust appropriately. + (getifaddrs): Lots of cleanups. + + * string/test-strncpy.c (do_one_test): Mark start and stop as + possibly unused. + * string/test-memchr.c: Likewise. + * string/test-memcmp.c: Likewise. + * string/test-memcpy.c: Likewise. + * string/test-memmove.c: Likewise. + * string/test-memset.c: Likewise. + * string/test-strcat.c: Likewise. + * string/test-strchr.c: Likewise. + * string/test-strcmp.c: Likewise. + * string/test-strcpy.c: Likewise. + * string/test-strlen.c: Likewise. + * string/test-strncmp.c: Likewise. + * string/test-strpbrk.c: Likewise. + * string/test-strrchr.c: Likewise. + * string/test-strspn.c: Likewise. + +2003-04-15 Roland McGrath + + * libio/fileops.c (_IO_file_close_it): Macro tweak to avoid warning. + + * sysdeps/generic/libc-start.c [NEED_DL_SYSINFO]: Add decl for + INTUSE(__register_frame_info_bases). + +2003-04-15 Ulrich Drepper + + * elf/elf.h: Define AT_SYSINFO_EH_FRAME. + * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Handle + AT_SYSINFO_EH_FRAME. Adjust string width. + (_dl_show_auxv):Display AT_SYSINFO_EH_FRAME value. + * sysdeps/generic/ldsodefs.h [NEED_DL_SYSINFO] (struct rtld_global): + Add _dl_sysinfo_eh_frame field. + * elf/dl-support.c [NEED_DL_SYSINFO]: Define _dl_sysinfo_eh_frame. + * sysdeps/generic/libc-start.c [NEED_DL_SYSINFO] Define eh_obj + variable. + [NEED_DL_SYSINFO] (LIBC_START_MAIN): Call __register_frame_info_bases + if _dl_sysinfo_eh_frame is non-NULL. + + * Makeconfig (gnulib): Add -lgcc_eh. + + * config.h.in: Define HAVE_FORCED_UNWIND. + +2003-04-15 Steven Munroe + + * sysdeps/powerpc/powerpc64/strcmp.S: Convert to full 64-bit. + * sysdeps/powerpc/powerpc64/strcpy.S: Likewise. + +2003-04-15 Jakub Jelinek + + * sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela): Avoid + checking R_PPC_RELATIVE, R_PPC_NONE and whether relocation is + against local symbol in conflict processing. + +2003-04-15 Steven Munroe + + * sysdeps/powerpc/bits/atomic.h + [__powerpc64] (__arch_compare_and_exchange_val_64_acq): Define. + [! __powerpc64] (__arch_compare_and_exchange_val_64_acq): Defined + as abort stub. + (__arch_compare_and_exchange_val_32_acq): Define. + (atomic_compare_and_exchange_val_acq): Define. + +2003-04-15 Ulrich Drepper + + * include/atomic.h: Pretty printing. + +2003-04-14 Ulrich Drepper + + * stdio-common/vfscanf.c: Add casts to avoid warnings. + +2003-04-14 Jakub Jelinek + + * sysdeps/i386/i486/bits/atomic.h: Rename LOCK to LOCK_PREFIX. + * sysdeps/x86_64/bits/atomic.h: Likewise. + +2003-04-14 Ulrich Drepper + + * sysdeps/unix/sysv/linux/i386/sysdep.h: Change PUSHARGS_1 and + POPARGS_1 to emit labels for the mov instructions. + +2003-04-14 Jakub Jelinek + + * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h (ret_NOERRNO): Define. + +2003-04-14 Roland McGrath + + * sysdeps/generic/unwind-dw2.c (_Unwind_GetCFA): Add a cast to silence + compiler warning. + + * sysdeps/generic/unwind-pe.h: Fix decl hacks broken in merge. + +2003-04-14 Ulrich Drepper + + * string/strxfrm.c (STRXFRM): Terminate rulearr at correct + position. Reported by jreiser@BitWagon.com. + +2003-04-13 Ulrich Drepper + + * sysdeps/generic/unwind-dw2-fde.c: Update from recent gcc version. + * sysdeps/generic/unwind-dw2-fde.h: Likewise. + * sysdeps/generic/unwind-dw2.c: Likewise. + * sysdeps/generic/unwind-pe.h: Likewise. + +2003-04-13 Alexandre Oliva + + * sysdeps/unix/sysv/linux/mips/profil-counter: New. + * sysdeps/unix/sysv/linux/mips/sigcontextinfo.h: Port to n32/n64. + * sysdeps/unix/sysv/linux/mips/bits/sigcontext.h: New. + * sysdeps/unix/sysv/linux/mips/sys/ucontext.h: Port to n32/n64. + (mcontext_t): Make it match the 32-bit mips kernel in o32. + * sysdeps/unix/sysv/linux/mips/sys/user.h: Bring in constants from + the mips and mips64 headers. + (struct user): Port to n32/n64. + +2003-04-12 Ulrich Drepper + + * sysdeps/generic/dl-tls.c (_dl_allocate_tls_init): Add cast to + avoid warning. + + * sysdeps/unix/sysv/linux/i386/sigaction.c (__libc_sigaction): If + __ASSUME_VSYSCALL is defined don't add restorer. + * sysdeps/unix/sysv/linux/kernel-features.h: Define + __ASSUME_VSYSCALL for 2.5.53. + +2003-04-11 Ulrich Drepper + + * sysdeps/generic/libc-start.c: Cleanup MAIN_AUXVEC_ARG handling. + Remove HAVE_CANCELBUF code. Replace with code using the new + initializers for unwind-based cleanup handling. + * sysdeps/generic/unwind.h: Update from latest gcc version. + * sysdeps/unix/sysv/linux/i386/sysdep.h: Define labels in a few + places to allow unwind data generation. + * sysdeps/i386/bits/setjmp.h: Allow file to be included multiple times. + * sysdeps/x86_64/bits/setjmp.h: Likewise. + * sysdeps/sh/bits/setjmp.h: Likewise. + * sysdeps/powerpc/bits/setjmp.h: Likewise. + * sysdeps/unix/sysv/linux/ia64/bits/setjmp.h: Likewise. + * sysdeps/alpha/bits/setjmp.h: Likewise. + +2003-04-11 Roland McGrath + + * csu/tst-empty.c: New file. + * csu/Makefile (tests, tests-static): Add it. + +2003-04-11 Jakub Jelinek + + * string/test-strcmp.c (do_random_tests): Test whether return value + has been promoted to wordsize if the ABI requires caller to do so. + * string/test-strncmp.c (do_random_tests): Likewise. + * string/test-memcmp.c (do_random_tests): Likewise. + + * sysdeps/powerpc/powerpc64/strcmp.S (strcmp): Sign extend rRTN + before returning. + + * sysdeps/unix/sysv/linux/powerpc/powerpc64/fe_nomask.c + (__fe_nomask_env): Try prctl even if __ASSUME_NEW_PRCTL_SYSCALL + is not defined, but the prctl constants are. + + * string/tester.c (test_strcmp): Fix a typo. + +2003-04-09 Ulrich Drepper + + * sysdeps/alpha/fpu/bits/mathdef.h: Remove FLT_EVAL_METHOD definition. + * sysdeps/powerpc/fpu/bits/mathdef.h: Likewise. + +2003-04-08 Alexandre Oliva + + * sysdeps/mips/sys/regdef.h (t4,t5,t6,t7): Renamed to t0..t3 on + NewABI. + (ta0, ta1, ta2, ta3): Defined to t4..t7 on o32, and a4..a7 on + NewABI. + * sysdeps/mips/mips64/memcpy.S: Adjust register naming + conventions. + * sysdeps/mips/mips64/memset.S: Likewise. + * sysdeps/unix/mips/sysdep.S (__syscall_error) [_LIBC_REENTRANT]: + Use t0 instead of t4 as temporary. + +2003-04-07 Ulrich Drepper + + * elf/ldconfig.c (parse_conf): Ignore leading whitespace. Use + feof_unlocked instead of feof. + (add_dir): Ignore trailing whitespace. + +2003-04-07 Jakub Jelinek + + * posix/bug-regex4.c (main): Cap RANGE and STOP arguments to + sum of SIZE1 and SIZE2 arguments. + +2003-04-06 Ulrich Drepper + + * iconv/iconv_prog.c (process_block): Don't print message about + invalid input if the -c option is used. + (main): Correctly append IGNORE string for -c option. + +2002-04-06 Kaz Kojima + + * sysdeps/sh/bits/atomic.h: Moved to ... + * sysdeps/unix/sysv/linux/sh/bits/atomic.h: ... here. Add comments. + (__arch_compare_and_exchange_val_*_acq): Add parens around macro + arguments. + (atomic_bit_set, atomic_bit_test_set): Likewise. + (atomic_exchange_and_add): Likewise. Don't evaluate VALUE argument + twice. + (atomic_add, atomic_add_negative, atomic_add_zero): Likewise. + +2003-04-06 Roland McGrath + + * sysdeps/unix/sysv/linux/i386/swapcontext.S: Rewrite register + restoration as done for setcontext yesterday. + +2003-04-06 Jakub Jelinek + + * elf/rtld.c: Revert 2003-03-14 change. + * elf/dl-conflict.c (_dl_resolve_conflicts): Move + #if ! ELF_MACHINE_NO_RELA conditional into the routine. + +2003-04-05 Ulrich Drepper + + * sunrpc/xdr.c (xdr_string): Catch nodesize == 0 [PR libc/4999]. + + * sysdeps/ieee754/ldbl-96/e_gammal_r.c (__ieee754_gammal_r): + Always initialize *signgamp before returning an error. + +2003-04-05 Roland McGrath + + * sysdeps/unix/sysv/linux/i386/setcontext.S: Rewrite to avoid writing + below the stack pointer even if switching to the same context we are + running right now. + +2003-04-05 Ulrich Drepper + + * catgets/gencat.c (read_input_file): Make sure that \n is not + alone on the line before testing for continuation. + + * math/test-tgmath.c (compile_test): Initialize c. + +2003-04-05 Alexandre Oliva + + * sysdeps/unix/sysv/linux/mips/mips64/n32/ftruncate64.c: New. + * sysdeps/unix/sysv/linux/mips/mips64/n32/truncate64.c: New. + * sysdeps/unix/sysv/linux/kernel-features.h: fcntl64 is available + on mips n32. + * sysdeps/unix/sysv/linux/mips/kernel_stat.h: Explain why + XSTAT_IS_XSTAT64 must not be used for mips n64. Use 64-bit data + structure on n32 as well. + * sysdeps/unix/sysv/linux/mips/bits/stat.h: Use POSIX-compliant + data types on n32 and n64. + +2003-04-05 Ulrich Drepper + + * libio/fileops.c (_IO_new_file_fopen): Don't free step data right + after getting them. + + * malloc/thread-m.h [PTHREAD_MUTEX_INITIALIZER]: If + HAVE_register_atfork_malloc is defined use __register_atfork_malloc + instead of __register_atfork. + +2003-04-05 Jakub Jelinek + + * stdio-common/reg-printf.c (__register_printf_function): Calloc + instead of malloc __printf_arginfo_table and __printf_function_table. + Reported by John Reiser . + +2003-04-04 Steven Munroe + + * sysdeps/powerpc/powerpc64/strchr.S: 64-bit optimizations. + * sysdeps/powerpc/powerpc64/strlen.S: 64-bit optimizations. + + * sysdeps/powerpc/fpu/bits/mathdef.h (FLT_EVAL_METHOD): Undef before + defining. + +2003-04-04 Alexandre Oliva + + * sysdeps/unix/sysv/linux/mips/bits/fcntl.h (struct flock): Adjust + for n64 abi. + +2003-04-03 Roland McGrath + + * configure.in: Fix up use of compilation flags to match the build: + For .s files, $ASFLAGS; + For .S files, $CPPFLAGS $ASFLAGS; + For .c files, $CFLAGS $CPPFLAGS; + when linking, add $LDFLAGS. + * configure: Regenerated. + +2003-04-03 Jakub Jelinek + + * sysdeps/unix/sysv/linux/getsysstats.c (get_proc_path): Reverse test + for atomic_compare_and_exchange_bool_acq failure. + +2003-04-03 Ulrich Drepper + + * posix/unistd.h: Define _POSIX_VERSION, _POSIX2_VERSION, + _POSIX2_C_BIND, _POSIX2_C_DEV, _POSIX2_SW_DEV, and + _POSXI2_LOCALEDEF to 200112L. Remove _POSIX2_C_VERSION. + Remove declaration of pthread_atfork. + +2003-04-02 Ulrich Drepper + + * locale/iso-639.def: Add many more languages from the current ISO 639. + + * sysdeps/unix/sysv/linux/ipc_priv.h: Define IPCOP_semtimedop. + * sysdeps/generic/semtimedop.c: New file. + * sysdeps/unix/sysv/linux/i386/semtimedop.S: New file. + * sysdeps/unix/sysv/linux/ia64/syscalls.list: Add semtimedop. + * sysdeps/unix/sysv/linux/x86_64/syscalls.list: Likewise. + * sysvipc/Makefile (routines): Add semtimedop. + * sysvipc/Versions [GLIBC_2.3.3] (glibc): Add semtimedop. + * sysvipc/sys/sem.h: Declare semtimedop. + +2003-04-02 Daniel Jacobowitz + + * configure.in: Check for __register_frame_info in both + -lgcc and -lgcc_eh. + * configure: Regenerated. + +2003-04-01 Roland McGrath + + * scripts/abilist.awk: Allow dots in soname suffix. + + * scripts/abilist.awk (emit): Fix bailout condition. + +2003-04-01 Jakub Jelinek + + * sysdeps/unix/sysv/linux/sparc/sparc64/sigsuspend.c: Use the + IA-64 version. + + * elf/tls-macros.h [__ia64__] (TLS_IE, TLS_LD, TLS_GD): Add gp + register as input to asm. + +2003-04-01 Jakub Jelinek + + * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h (sigevent_t): Fix a typo. + +2003-04-01 Andreas Jaeger + + * configure.in: Output as/ld as name if version is too old. + +2003-03-31 Daniel Jacobowitz + + * configure.in: Don't require an installed C library in the test + for ".set" assembler support. + +2003-03-31 Roland McGrath + + * signal/tst-sigset.c: New file. + * signal/Makefile (tests): Add it. + +2003-03-31 Ulrich Drepper + + * sysdeps/unix/sysv/linux/alpha/bits/signum.h (_NSIG): Define to 65. + * sysdeps/unix/sysv/linux/hppa/bits/signum.h (_NSIG): Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/signum.h (_NSIG): Likewise. + * sysdeps/unix/sysv/linux/bits/signum.h (_NSIG): Likewise. + (__SIGRTMAX): Adjust accordingly. + * sysdeps/gnu/siglist.c: If OLD2_SIGLIST_SIZE is defined define + second compatibility symbol set. + * sysdeps/unix/sysv/linux/siglist.h (OLD2_SIGLIST_SIZE): Define. + +2003-03-31 Andreas Schwab + + * sysdeps/m68k/m68020/bits/atomic.h (atomic_increment_and_test): + Define. + (atomic_decrement_and_test): Fix test. + +2003-03-31 Jakub Jelinek + + * sysdeps/sparc/sparc32/bits/atomic.h: New file. + * sysdeps/sparc/sparc32/sparcv9/bits/atomic.h: New file. + * sysdeps/sparc/sparc64/bits/atomic.h: New file. + * sysdeps/sparc/sparc32/atomicity.h: Removed. + * sysdeps/sparc/sparc32/sparcv9/atomicity.h: Removed. + * sysdeps/sparc/sparc64/atomicity.h: Removed. + +2003-03-30 Roland McGrath + + * scripts/abilist.awk: Grok .opd foo plus .text .foo as "foo F" alone. + + * intl/po2test.sed: Anchor substitution regexps to fix last change. + +2003-03-29 Paolo Bonzini + + * intl/po2test.sed: Unify the transformations for msgid and msgstr + and remove a useless s/// command. + +2003-03-27 David Mosberger + + * sysdeps/ia64/dl-machine.h (RTLD_START): Wrap ".save rp, r0" + directive into empty .prologue region to ensure that call-chain + is terminated even for the first instruction. + + * sysdeps/ia64/elf/start.S (_start): Use ".save rp, r0" idiom + to terminate call-chain right from the get-go. + + * sysdeps/unix/sysv/linux/ia64/fork.S (fork): Remove unnecessary + stop bit between compare & branch. + +2003-03-29 Ulrich Drepper + + * stdlib/strtod.c (INTERNAL): Recognize first digit after decimal + point correctly [PR libc/4993]. + + * sysdeps/unix/sysv/linux/ifaddrs.c (getifaddrs): Avoid + netlink_open calls if netlink is known to not be available. + +2003-03-29 Alexandre Oliva + + * configure.in: Add mips64* support. + * sysdeps/mips/bits/endian.h: Make it bi-endian. + * sysdeps/mips/mipsel/bits/endian.h: Removed. + * sysdeps/mips/mips64/n32/el/bits/endian.h: Removed. + * sysdeps/mips/mips64/n64/el/bits/endian.h: Removed. + * sysdeps/mips/mips32/Makefile (CC): Add -mabi=32. + * sysdeps/mips/mips64/n32/Makefile (CC): Add -mabi=n32. + * sysdeps/mips/mips64/n64/Makefile (CC): Add -mabi=64. + * sysdeps/mips/Implies: Moved wordsize-32 to... + * sysdeps/mips/mips32/Implies: New file. + * sysdeps/unix/mips/sysdep.h (PSEUDO_NOERRNO, PSEUDO_END_NOERRNO, + ret_NOERRNO): New. + (ret, PSEUDO_END): Moved past END. + (PSEUDO): Moved to... + * sysdeps/unix/mips/mips32/sysdep.h: New file. + * sysdeps/unix/mips/mips64/n32/sysdep.h: Removed #undef PSEUDO. + * sysdeps/unix/mips/mips64/n64/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/mips/sysdep.h: Move to... + * sysdeps/unix/sysv/linux/mips/mips32/sysdep.h: New file. + * sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h: New file. + + * sysdeps/unix/sysv/linux/mips/clone.S (__thread_start): + Re-introduce ENTRY. + +2003-03-28 Thorsten Kukuk + + * sysdeps/unix/sysv/linux/ifaddrs.c: New file. + * inet/test-ifaddrs.c: Allow AF_PACKET. + * sysdeps/unix/sysv/linux/kernel-features.h: Add + __ASSUME_NETLINK_SUPPORT. + +2003-03-28 Ulrich Drepper + + * elf/vismain.c (do_test): Comment out tests which fail in the moment. + +2003-03-26 H.J. Lu + + * elf/vismod.h (getvarlocal1): Return const char **. + (getvarinmod1): Likewise. + (getvaritcpt1): Likewise. + (getvarlocal2): Likewise. + (getvarinmod2): Likewise. + (getvaritcpt2): Likewise. + (getvaritcpt3): Likewise. + * elf/vismain.c (do_test): Adjusted. + * elf/vismod1.c (getvarlocal1): Return address. + (getvarinmod1): Likewise. + (getvaritcpt1): Likewise. + * elf/vismod2.c (getvarlocal2): Likewise. + (getvarinmod2): Likewise. + (getvaritcpt2): Likewise. + * elf/vismod3.c (getvaritcpt3): Likewise. + +2003-03-28 Roland McGrath + + * elf/vismain.c (do_test): Print both addresses when they don't match. + + * scripts/abilist.awk: If given -v filename_regexp and/or -v + libname_regexp when parsing names, then produce output only + for those matching the given regexps. In combine mode, save all + stanzas for a final sorting by stanza header at the end. + Emit a blank line between stanzas. + + * scripts/abilist.awk: When given -v combine=1, do parse_names and + emit a single output stream with lib name in stanza header lines. + + * scripts/abilist.awk: Emit A for all *ABS* regardless of type. + +2003-03-27 Roland McGrath + + * sysdeps/powerpc/bits/atomic.h [! __powerpc64__] + (__arch_atomic_decrement_if_positive_64): Fix bogus definition. + +2003-03-28 Kaz Kojima + + * sysdeps/sh/bits/atomic.h (__arch_compare_and_exchange_val_8_acq): + Return old value. Make asm output reg constraint earlyclobber. + Renamed from... + (__arch_compare_and_exchange_8_acq): ... this. + (__arch_compare_and_exchange_val_16_acq): + Return old value. Make asm output reg constraint earlyclobber. + Renamed from... + (__arch_compare_and_exchange_16_acq): ... this. + (__arch_compare_and_exchange_val_32_acq): + Return old value. Make asm output reg constraint earlyclobber. + Renamed from... + (__arch_compare_and_exchange_32_acq): ... this. + (__arch_compare_and_exchange_val_64_acq): + Renamed from... + (__arch_compare_and_exchange_64_acq): ... this. + (atomic_exchange_and_add): Use local variables and + __arch_compare_and_exchange_val_64_acq. + (atomic_add): Likewise. + (atomic_add_negative, atomic_add_zero): Use local variables. + +2003-03-28 Alexandre Oliva + + * sysdeps/unix/mips/sysdep.S: Include sys/asm.h. + +2003-03-27 Ulrich Drepper + + * Makefile: Remove libmd5crypt goal. + +2003-03-25 Jakub Jelinek + + * sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela): Restore + special handling of relocations against local symbols. + +2003-03-27 Steven Munroe + + * sysdeps/powerpc/bits/atomic.h + (__arch_compare_and_exchange_bool_32_acq): Move to [!__powerpc64__]. + [__powerpc64__] (__arch_compare_and_exchange_bool_32_acq): + Define PPC64 specific version. + [__powerpc64__] (__arch_compare_and_exchange_bool_64_acq): + Change (mem) constraint to "b". + [__powerpc64__] (__arch_atomic_exchange_and add_64): + Replace addi with add. Change (value) contraint to "r". + Change (mem) constraint to "b". + [__powerpc64__] (__arch_atomic_decrement_if_positive_64): New macro. + (__arch_atomic_exchange_32): Change (mem) constraint to "b". + (__arch_atomic_exchange_and_add_32): Change (mem) constraint to "b". + (__arch_atomic_decrement_if_positive_32): New macro. + (atomic_decrement_if_positive): Use __arch* macros. + +2003-03-27 Jakub Jelinek + + * sysdeps/ia64/fpu/libm-test-ulps: Update. + +2003-03-27 Roland McGrath + + * scripts/rpm2dynsym.sh: New file. + * Makefile (distribute): Add it. + +2003-03-27 David Mosberger + + * sysdeps/unix/sysv/linux/ia64/getcontext.S: Restore caller's + ar.unat before returning. Add missing .mem.offset directives + to ensure file gets assembled without warnings. + * sysdeps/unix/sysv/linux/ia64/setjmp.S: Likewise. + +2003-03-27 Jakub Jelinek + + * sysdeps/unix/sysv/linux/sysconf.c (__sysconf) <_SC_MONOTONIC_CLOCK>: + Return -1 instead of 0 if clock_getres failed. + +2003-03-27 Roland McGrath + + * scripts/abilist.awk: If variable `parse_names' is set, grok the file + header lines and write out foo.symlist files for each foo.so.NN listed. + + * libio/libioP.h (_IO_wfile_jumps): Remove attribute_hidden. + This symbol is exported, and we don't want to hide it. + Add libc_hidden_proto instead. + (_IO_file_jumps): Add libc_hidden_proto. + * libio/wfileops.c (_IO_wfile_jumps): Add libc_hidden_data_def. + Remove INTVARDEF. + * libio/fileops.c (_IO_file_jumps): Likewise. + * libio/stdfiles.c: Don't use INTUSE on them. + * libio/iofdopen.c (_IO_new_fdopen): Likewise. + * libio/iofopen.c (__fopen_internal): Likewise. + * libio/freopen.c (freopen): Likewise. + * libio/freopen64.c (freopen64): Likewise. + * libio/iovdprintf.c (_IO_vdprintf): Likewise. + + * Makerules (check-abi) [$(enable-check-abi) = warn]: + Ignore exit status from diff. + * configure.in (enable_check_abi): Document possible value "warn". + Change default to no for now. + * configure: Regenerated. + + * sysdeps/unix/Makefile ($(objpfx)stub-syscalls.c): Emit stub_warning + macro calls and a #include at the end. + * Makerules ($(objpfx)stubs): Tweak sed commands. + + * sysdeps/unix/sysv/linux/syscalls.list: Use - rather than EXTRA in + caller column for *xattr syscalls, since they are in sysdeps/generic. + + * sysdeps/unix/sysv/linux/i386/setfsuid.c: setfsgid -> setfsuid + * sysdeps/unix/sysv/linux/i386/setfsgid.c: setfsuid -> setfsgid + +2003-03-26 Roland McGrath + + * Makerules (check-abi-config): Use /thread instead of /tls when + use-thread and not just use-tls is set. + + * Makerules (update-abi): Put quotes around $(update-abi-config). + + * elf/Makefile (check-abi): Depend on check-abi-ld. + (update-abi): Depend on update-abi-ld. + +2003-03-26 GOTO Masanori + + * sysdeps/unix/sysv/linux/i386/setfsuid.c: Use INTERNAL_SYSCALL and + do not check for errors (unless testing for 32bit variant). + * sysdeps/unix/sysv/linux/i386/setfsgid.c: Likewise. + +2003-03-27 Philip Blundell + + * sysdeps/unix/sysv/linux/arm/sysdep.h (PSEUDO_RET_NOERRNO): Use + unconditional mov. Remove nop. + + * sysdeps/unix/sysv/linux/kernel-features.h + (__ASSUME_VFORK_SYSCALL): Define for kernel 2.4 on arm. + * sysdeps/unix/sysv/linux/arm/vfork.S: Elide compatibility code + when __ASSUME_VFORK_SYSCALL is defined. + * sysdeps/unix/sysv/linux/arm/mmap64.S: Likewise for + __ASSUME_MMAP2_SYSCALL. + * sysdeps/unix/sysv/linux/arm/sigaction.c: Likewise for + __ASSUME_REALTIME_SIGNALS. + +2003-03-26 Ulrich Drepper + + * sysdeps/generic/ldsodefs.h (ELF_RTYPE_CLASS_COPY): Define to 2 + only if DL_NO_COPY_RELOCS is not defined. + * sysdeps/ia64/dl-lookupcfg.h: Define DL_NO_COPY_RELOCS. + +2003-03-26 Roland McGrath + + * sysdeps/unix/make-syscalls.sh: When an undefined syscall has + SOURCE=-, append its symbol names to make variable unix-stub-syscalls. + * sysdeps/unix/Makefile [$(subdir) = misc] [unix-stub-syscalls] + (sysdep_routines): Add stub-syscalls. + ($(objpfx)stub-syscalls.c): New target. + (generated): Add stub-syscalls.c. + + * tls.make.c: Also define use-tls according to USE_TLS macro. + +2003-03-26 Ulrich Drepper + + * sysdeps/unix/sysv/linux/alpha/bits/siginfo.h (struct siginfo): Avoid + no-op padding element. + * sysdeps/unix/sysv/linux/bits/siginfo.h: Likewise. + * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h: Likewise. + * sysdeps/unix/sysv/linux/s390/bits/siginfo.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/siginfo.h: Likewise. + +2003-03-26 GOTO Masanori + + * sysdeps/unix/sysv/linux/i386/getgroups.c: Fix the error + condition check for the return value of getgroups32. + +2003-03-26 Jakub Jelinek + + * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h (PSEUDO_NOERRNO): + Fix a typo. + * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h (PSEUDO_NOERRNO, + PSEUDO_END_NOERRNO): Define. + * sysdeps/unix/sysdep.h (PSEUDO_END_NOERRNO): Fix a typo. + Define to PSEUDO_END. + +2003-03-26 Ulrich Drepper + + * abilist/librt.abilist: Add new timer interfaces for 64-bit archs. + +2003-03-25 Jiro SEKIBA + + * iconvdata/euc-tw.c (from_euc_tw): Fix return value of TO_LOOP. + * iconvdata/bug-iconv4.c: New file. + * iconvdata/Makefile (tests): Add bug-iconv4. + +2003-03-25 H.J. Lu + + * elf/dl-lookup.c (_dl_lookup_symbol): Avoid looking up protected + symbols twice. + (_dl_lookup_versioned_symbol): Likewise. + +2003-03-26 Jakub Jelinek + + * csu/tst-atomic.c (do_test): Add some new + atomic_compare_and_exchange_val_acq, atomic_add_zero, + atomic_compare_and_exchange_bool_acq and atomic_add_negative tests. + * include/atomic.h (atomic_add_negative, atomic_add_zero): + Prefix local variable so that it doesn't clash with the one + in atomic_exchange_and_add. + * sysdeps/ia64/bits/atomic.h (atomic_exchange): Fix for long/void * + pointers. + (atomic_exchange_and_add): Implement using __sync_fetch_and_add_?i. + * sysdeps/powerpc/bits/atomic.h (atomic_exchange_and_add): Force + value into register. + * sysdeps/s390/bits/atomic.h (__arch_compare_and_exchange_val_64_acq): + Cast newval to long. + * sysdeps/x86_64/bits/atomic.h + (__arch_compare_and_exchange_val_64_acq): Cast newval and oldval to + long. + (atomic_exchange): Cast newvalue to long if sizeof == 8. + (atomic_exchange_and_add): Cast value to long if sizeof == 8. + (atomic_add, atomic_add_negative, atomic_add_zero): Likewise. + (atomic_bit_set): Shift 1L up in all cases to shut up warnings. + +2003-03-21 Martin Schwidefsky + + * sysdeps/s390/s390-32/backtrace.c (__backtrace): Remove high order + bit from backtrace addresses. + +2003-03-21 Andreas Schwab + + * sysdeps/unix/sysv/linux/i386/chown.c: Don't define any versioned + __chown symbols. + +2003-03-25 Roland McGrath + + * config.make.in (enable-check-abi): New variable from configure. + * configure.in (enable_check_abi): New substituted variable, + controlled by --{enable,disable}-check-abi (default yes). + * configure: Regenerated. + * Makerules [$(enable-check-abi) = yes] (tests): Put this condition + on check-abi dependency. + +2003-03-26 Andreas Schwab + + * sysdeps/m68k/m68020/bits/atomic.h: Fix typos. + * include/atomic.h: Likewise. + + * sysdeps/unix/sysv/linux/m68k/sysdep.h: Define ret_NOERRNO. + +2003-03-25 Roland McGrath + + * sysdeps/powerpc/bits/atomic.h (__arch_atomic_exchange_32): New macro. + (__arch_atomic_exchange_64): New macro. + (atomic_exchange): Use them. + (__arch_atomic_exchange_and_add_32): New macro. + (__arch_atomic_exchange_and_add_64): New macro. + (atomic_exchange_and_add): Use them. + Original patch from Steven Munroe . + +2003-03-25 Alexandre Oliva + + * sysdeps/mips/sgidefs.h (_MIPS_ISA_MIPS32, _MIPS_ISA_MIPS64): + Define. + * sysdeps/mips/sys/asm.h: Test _MIPS_ISA against them on all + ISA tests. + (ALSZ, ALMASK, SZREG, REG_S, REG_L): Define based on ABI, not ISA. + (PTR_ADD, etc): Test _MIPS_SZPTR instead of _MIPS_SZLONG. + * sysdeps/unix/sysv/linux/mips/bits/sigaction.h: Use _MIPS_SZPTR + to decide whether to add padding. + * sysdeps/unix/sysv/linux/mips/bits/sigaction.h: Use _MIPS_SZPTR + to decide whether to add padding. + * sysdeps/unix/sysv/linux/mips/kernel_sigaction.h (struct + old_kernel_sigaction): Likewise. + +2003-03-25 Ulrich Drepper + + * csu/tst-atomic.c: Adjust tests to what atomic_add_negative and + atomic_add_zero were supposed to do. + * include/atomic.h: Adjust atomic_add_negative and atomic_add_zero + to x86 behavior. + + * sysdeps/generic/bits/typesizes.h (__TIMER_T_TYPE): Define as void*. + This matches the new timer implementation. + * sysdeps/unix/sysv/linux/sparc/bits/typesizes.h (__TIMER_T_TYPE): + Likewise. + * sysdeps/unix/sysv/linux/alpha/bits/typesizes.h (__TIMER_T_TYPE): + Likewise. + * sysdeps/unix/sysv/linux/bits/siginfo.h (struct siginfo): Adjust + timer info for what the kernel provides these days. + (struct sigevent): Add _tid field. + Define SIGEV_THREAD_ID. + Remove struct __pthread_attr_s forward declaration. + * sysdeps/unix/sysv/linux/alpha/bits/siginfo.h: Likewise. + * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h: Likewise. + * sysdeps/unix/sysv/linux/s390/bits/siginfo.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/siginfo.h: Likewise. + + * Versions.def (librt): Add GLIBC_2.3.3. + + * abilist/libpthread.abilist: Update for nptl. + +2003-03-24 Jon Grimm + + * inet/netinet/in.h: Add IPPROTO_SCTP. + +2003-03-24 Ulrich Drepper + + * sysdeps/unix/sysv/linux/sys/epoll.h (EPOLLET): Define. + +2003-03-24 Philip Blundell + + * sysdeps/unix/sysv/linux/arm/sysdep.h (INTERNAL_SYSCALL): + Remove a1 from clobber list. + +2003-03-24 Ulrich Drepper + + * timezone/antarctica: Update from tzdata2003a. + * timezone/asia: Likewise. + * timezone/australasia: Likewise. + * timezone/europe: Likewise. + * timezone/iso3166.tab: Likewise. + * timezone/northamerica: Likewise. + * timezone/southamerica: Likewise. + * timezone/zone.tab: Likewise. + +2003-03-24 Steven Munroe + + * sysdeps/powerpc/powerpc64/sysdep.h (PSEUDO_END_NOERRNO): Fix typo. + +2003-03-23 Ulrich Drepper + + * sysdeps/unix/sysv/linux/ia64/sysdep.h (ret_NOERRNO): Avoid + unwanted expansion by definining to ret. Patch by Ian Wienand. + + * sysdeps/unix/make-syscalls.sh: Recognize 'E' in first position of + the parameter description to denote no error checking. Generate + appropriate pseudo asm code. + * sysdeps/unix/syscalls.list: Mark getgid, getpid, getuid with 'E'. + * sysdeps/unix/sysv/linux/syscalls.list: Mark getegid, geteuid, + getpgrp, and getppid with 'E'. + * sysdeps/powerpc/powerpc32/sysdep.h: Define PSEUDO_NOERRNO, + PSEUDO_END_NOERRNO, and ret_NOERRNO. + * sysdeps/powerpc/powerpc64/sysdep.h: Likewise. + * sysdeps/unix/sysdep.h: Likewise. + * sysdeps/unix/alpha/sysdep.h: Likewise. + * sysdeps/unix/sparc/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/arm/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/cris/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/hppa/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/i386/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/ia64/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/m68k/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/sh/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise. + +2003-03-23 Roland McGrath + + * Makeconfig (+includes): Don't use $(last-includes). + +2003-03-22 Alexandre Oliva + + * sysdeps/unix/sysv/linux/configure.in: Update mips64 patterns. + * sysdeps/unix/sysv/linux/configure: Rebuilt. + +2003-03-23 Jakub Jelinek + + * sysdeps/alpha/fpu/libm-test-ulps: Update. + * sysdeps/arm/libm-test-ulps: Update. + * sysdeps/hppa/fpu/libm-test-ulps: Update. + * sysdeps/ia64/fpu/libm-test-ulps: Update. + * sysdeps/mips/fpu/libm-test-ulps: Update. + * sysdeps/powerpc/nofpu/libm-test-ulps: Update. + * sysdeps/powerpc/fpu/libm-test-ulps: Update. + * sysdeps/sparc/sparc32/fpu/libm-test-ulps: Update. + * sysdeps/sparc/sparc64/fpu/libm-test-ulps: Update. + * sysdeps/sh/sh4/fpu/libm-test-ulps: Update. + * sysdeps/s390/fpu/libm-test-ulps: Update. + * sysdeps/x86_64/fpu/libm-test-ulps: Update. + +2003-03-22 Roland McGrath + + * include/atomic.h: Put parens around all macro arguments. + (__atomic_val_bysize, __atomic_bool_bysize): New macros. + (atomic_compare_and_exchange_val_acq): Use it. + (atomic_compare_and_exchange_bool_acq): Likewise. + (atomic_increment_and_test): Invert sense of test. + (atomic_decrement_and_test): Likewise. + * csu/tst-atomic.c: Update those tests to match. + +2003-03-22 Jakub Jelinek + + * include/atomic.h (atomic_compare_and_exchange_val_acq): Add comment. + Don't define if __arch_compare_and_exchange_val_32_acq is not defined. + (atomic_compare_and_exchange_bool_acq): Add comment. Don't use + __oldval variable in the macro, since it might be macro argument. + (atomic_decrement_if_positive): Initialize __memp, remove setting + of non-existent variable. + (atomic_bit_test_set): Cast 1 to __typeof (*mem) before shifting. + * sysdeps/ia64/bits/atomic.h (atomic_exchange_and_add): Implement + using atomic_compare_and_exchange_val_acq. + (atomic_decrement_if_positive, atomic_bit_test_set): Define. + * sysdeps/s390/bits/atomic.h (__arch_compare_and_exchange_val_8_acq): + Renamed from... + (__arch_compare_and_exchange_bool_8_acq): ... this. + (__arch_compare_and_exchange_val_16_acq): Renamed from... + (__arch_compare_and_exchange_bool_16_acq): ... this. + (__arch_compare_and_exchange_val_32_acq): Return old value. Renamed + from... + (__arch_compare_and_exchange_bool_32_acq): ... this. + (__arch_compare_and_exchange_val_64_acq): Return old value. Renamed + from... + (__arch_compare_and_exchange_bool_64_acq): ... this. + (__arch_compare_and_exchange_val_32_acq): Use __typeof for local + variables types instead of assuming int. + Change prefix of local variables to __arch. + * sysdeps/generic/bits/atomic.h (arch_compare_and_exchange_acq): + Remove. + (atomic_compare_and_exchange_val_acq, + atomic_compare_and_exchange_bool_acq): Define. + + * csu/tst-atomic.c: New test. + * csu/tst-atomic-long.c: New test. + * csu/Makefile (tests): Add tst-atomic and tst-atomic-long. + + * malloc/memusagestat.c (main): Kill warning if uint64_t is ulong. + + * sysdeps/s390/Versions: Add trailing newline. + + * sysdeps/unix/sysv/linux/sysconf.c (__sysconf): Kill warning + if INTERNAL_SYSCALL_ERROR_P doesn't use its first argument. + +2003-03-22 Andreas Schwab + + * sysdeps/m68k/fpu/libm-test-ulps: Update. + + * sysdeps/m68k/m68020/bits/atomic.h: New file. + * sysdeps/m68k/m68020/atomicity.h: Removed. + +2003-03-22 Alexandre Oliva + + * sysdeps/mips/elf/ldsodefs.h: Add mips-specific elf64 relocation + data structures and macros. Protect from multiple inclusion. + + * sysdeps/mips/dl-machine.h (ELF_MIPS_GNU_GOT1_MASK): Fix harmless + typo in #if test. + +2003-03-21 Andreas Jaeger + + * sysdeps/i386/fpu/libm-test-ulps: Update. + + * math/libm-test.inc (tgamma_test): Recompute some constants with + 36 digits precision. + (lgamma_test): Likewise. + (ccos_test): Likewise. + (ccosh_test): Likewise. + (clog10_test): Likewise. + (csin_test): Likewise. + (csinh_test): Likewise. + (ctan_test): Likewise. + (ctanh_test): Likewise. + +2003-03-19 Jakub Jelinek + + * sysdeps/sparc/sparc64/fpu/libm-test-ulps: Regenerated. + +2003-03-21 Roland McGrath + + * sysdeps/i386/i486/bits/atomic.h (atomic_bit_set): Use "ir" + constraint to permit non-constant BIT argument. + (atomic_bit_test_set): Likewise. + * sysdeps/x86_64/bits/atomic.h (atomic_bit_test_set): Likewise. + (atomic_bit_set): Likewise. Use 1UL in case that BIT might be >= 32. + For quadword case, use "i" constraint if __builtin_constant_p and < 32 + or "r" constraint otherwise. + + * configure.in: Move AC_PROG_CC and other program-finding before all + the version checks. + * configure: Regenerated. + +2003-03-21 Alexandre Oliva + + * sysdeps/mips/mips64/memcpy.S: Fix porting bug that broke + unaligned copying of 8-15 bytes. From Chris Demetriou + . Fix label names. + * sysdeps/mips/mips64/memset.S: Fix label names. Make similar + change as to memcpy.S. + * sysdeps/mips/memcpy.S: Formatting changes. + * sysdeps/mips/memset.S: Likewise. + +2003-03-21 Roland McGrath + + * sysdeps/arm/sysdep.h (CALL_MCOUNT): Add trailing semicolon. + +2003-03-21 Alexandre Oliva + + * sysdeps/mips/mips64/memcpy.S, sysdeps/mips/mips64/memset.S: New. + * sysdeps/mips/memcpy.S, sysdeps/mips/memset.S: Update comments. + +2003-03-21 Roland McGrath + + * sysdeps/i386/i486/bits/atomic.h + (__arch_compare_and_exchange_val_64_acq): Rewrite abort-calling + version of the macro to avoid compile-time warnings. + [! __PIC__] (__arch_compare_and_exchange_64_acq): Rename to above. + (atomic_exchange_and_add, atomic_add): Fix name and usage of it. + (atomic_increment, atomic_decrement): Likewise. + +2003-03-21 Ulrich Drepper + + * sysdeps/x86_64/bits/atomic.h: Don't use matching memory constraints. + * sysdeps/i386/i486/bits/atomic.h: Likewise. + +2003-03-21 Roland McGrath + + * include/atomic.h (atomic_compare_and_exchange_bool_acq): Typo fix. + +2003-03-20 Ulrich Drepper + + * include/atomic.h: Define atomic_compare_and_exchange_val_acq, + atomic_compare_and_exchange_val_rel, + atomic_compare_and_exchange_bool_acq, and + atomic_compare_and_exchange_bool_rel instead of + atomic_compare_and_exchange_acq and atomic_compare_and_exchange_rel. + * sysdeps/i386/i486/bits/atomic.h: Define + __arch_compare_and_exchange_val_*_acq instead of + __arch_compare_and_exchange_*_acq. + * sysdeps/x86_64/bits/atomic.h: Likewise. + * sysdeps/ia64/bits/atomic.h: Define + __arch_compare_and_exchange_bool_*_acq instead of + __arch_compare_and_exchange_*_acq. + * sysdeps/powerpc/bits/atomic.h: Likewise. + * sysdeps/s390/bits/atomic.h: Likewise. + * gmon/mcount.c: Adjust for new form of compare&exchange macros. + * malloc/set-freeres.c: Likewise. + * nscd/cache.c: Likewise. + * stdlib/cxa_finalize.c: Likewise. + * sysdeps/unix/sysv/linux/getsysstats.c: Likewise. + +2003-03-20 Alexandre Oliva + + * sysdeps/mips/bits/setjmp.h: n32 has only 6 call-saved fpregs. + * sysdeps/mips/mips64/setjmp_aux.c (__sigsetjmp_aux): Adjust. + * sysdeps/mips/mips64/__longjmp.c (__longjmp): Likewise. + + * sysdeps/unix/sysv/linux/mips/pread.c: Don't break up offset + into high and low halves on n64. + * sysdeps/unix/sysv/linux/mips/pread64.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pwrite.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise. + +2003-03-20 Ulrich Drepper + + * include/atomic.h (atomic_decrement_if_positive): Adjust for the + correct atomic_compare_and_exchange_acq semantics. + +2003-03-20 Alexandre Oliva + + * sysdeps/mips/ieee754.h: Remove excess #endif. + +2003-03-20 Roland McGrath + + * sysdeps/powerpc/bits/atomic.h (atomic_exchange): Remove unused + variable. Remove superfluous memory clobber. + + * include/atomic.h: Syntax braino fix. + + * posix/tst-nice.c (do_test): Use %m formats instead of printing errno + in decimal. Don't bail if niced at start. Just check that nice call + bumps the total at all. + +2003-03-20 Alexandre Oliva + + * sysdeps/mips/bits/setjmp.h: Store all N32 and N64 registers, + including pc, gp, sp and fp, as long long. + * sysdeps/mips/mips64/setjmp.S: Pass gp to __sigsetjmp_aux. + * sysdeps/mips/mips64/setjmp_aux.c: Adjust type of arguments. + Add gp argument, and set gp in the jmpbuf to it. + * sysdeps/mips/setjmp_aux.c: Revert to o32-only. + +2003-03-20 Ulrich Drepper + + * include/atomic.h: Define atomic_exchange and + atomic_decrement_if_positive if not already defined. Add some + __builtin_expect. + * sysdeps/i386/i486/bits/atomic.h: Define atomic_exchange. + * sysdeps/x86_64/bits/atomic.h: Likewise. + * sysdeps/ia64/bits/atomic.h: Pretty printing. Define atomic_exchange. + * sysdeps/powerpc/bits/atomic.h: Pretty printing. Define + atomic_exchange, atomic_exchange_and_add, and + atomic_decrement_if_positive + +2003-03-20 Alexandre Oliva + + * sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S: Sign-extend + with a single instruction. + + * sysdeps/mips/dl-machine.h (ELF_MIPS_GNU_GOT1_MASK): Define + properly for n64. + (elf_machine_runtime_setup): Cast link_map pointer to Elf Addr + type. + (elf_machine_rel, elf_machine_rel_relative): Cast symidx to Elf + Word before comparing with gotsym. Take reloc_addr argument as + void*. Remove the code added for the compiler to drop any + alignment assumptions. + +2003-03-19 Ulrich Drepper + + * Makefile (distribute): Add include/atomic.h and bits/atomic.h. + * include/atomic.h: New file. + * sysdeps/i386/i486/bits/atomic.h: New file. + * sysdeps/x86_64/bits/atomic.h: New file. + * sysdeps/s390/bits/atomic.h: New file. + * sysdeps/sh/bits/atomic.h: New file. + * sysdeps/ia64/bits/atomic.h: New file. + * sysdeps/powerpc/bits/atomic.h: New file. + * sysdeps/generic/bits/atomic.h: New file. + * sysdeps/i386/i486/atomicity.h: Removed. + * sysdeps/x86_64/atomicity.h: Removed. + * sysdeps/s390/s390-32/atomicity.h: Removed. + * sysdeps/s390/s390-64/atomicity.h: Removed. + * sysdeps/ia64/atomicity.h: Removed. + * sysdeps/powerpc/powerpc32/atomicity.h: Removed. + * sysdeps/powerpc/powerpc64/atomicity.h: Removed. + * elf/dl-profile.c: Use atomic.h instead of atomicity.h. Adjust + use of macros from atomicity.h to new names and semantics. + * gmon_mcount.c: Likewise. + * malloc/set-freeres.c: Likewise. + * nscd/cache.c: Likewise. + * stdlib/cxa_finalize.c: Likewise. + * sysdeps/unix/sysv/linux/getsysstats.c: Likewise. + +2003-03-19 Alexandre Oliva + + * sysdeps/mips/ieee754.h: New file, suitable to replace both + ../ieee754/ieee754.h and ../ieee754/ldbl-128/ieee754.h, kept + mips-specific for now. + +2003-03-19 Ulrich Drepper + + * stdlib/strtod.c (INTERNAL): While eating trailing zeros handle + hexdigits correctly. Reported by Fred Tydeman . + * stdlib/tst-strtod.c: Add test for the bug. + + * posix/tst-nice.c (do_test): Remove invalid of return value. + Don't run test if initial level != 0. + +2003-03-19 Amos Waterland + + * posix/tst-nice.c: New file. + * posix/Makefile (tests): Add tst-nice. + +2003-03-18 Roland McGrath + + * abilist: New directory of libfoo.abilist files maintained using + scripts/merge-abilist.awk and "make update-abi" rules. + * Makefile (distribute): Add abilist/*.abilist. + * Makerules [$(build-shared) = yes] [$(subdir)] (tests): + Depend on check-abi. + + * configure.in: Move $critic_missing check after all AC_CHECK_PROG_VER. + * configure: Regenerated. + + * sysdeps/unix/sysv/linux/syscalls.list (posix_fadvise64): Fix name. + +2003-03-18 Ulrich Drepper + + * sysdeps/posix/sysconf.c (__sysconf): Handle _SC_MONOTONIC_CLOCK + correctly. + +2003-03-18 Steven Munroe + + * sysdeps/powerpc/powerpc64/memcpy.S: New file. + +2003-03-18 Ulrich Drepper + + * Versions.def: Add GLIBC_2.3.3 for libpthread. + +2003-03-17 Ulrich Drepper + + * sysdeps/generic/libc-start.c [!SHARED && + !LIBC_START_MAIN_AUXVEC_ARG]: Compute beginning of auxvec correctly. + +2003-03-17 Roland McGrath + + * include/ctype.h: Revert last change. + +2003-03-17 Ulrich Drepper + + * argp/tst-argp1.c: Use test-skeleton.c. + * locale/tst-C-locale.c: Likewise. + +2003-03-17 Alexandre Oliva + + * sysdeps/mips/mips64/Implies: Move wordsize-64 to... + * sysdeps/mips/mips64/n64/Implies: New file. + * sysdeps/mips/mips64/n64/Makefile: New file. + * sysdeps/mips/mips64/n64/el/bits/endian.h: New file. + * sysdeps/mips/mips64/n32/Implies: New file. + * sysdeps/mips/mips64/n32/Makefile: New file. + * sysdeps/mips/mips64/n32/el/bits/endian.h: New file. + * sysdeps/unix/mips/mips64/n32/sysdep.h: New file. + * sysdeps/unix/mips/mips64/n64/sysdep.h: New file. + * sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h: New file. + * sysdeps/unix/sysv/linux/mips/mips64/n64/glob64.c: New file. + * sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h: New file. + * sysdeps/unix/sysv/linux/mips/mips64/ldconfig.h: New file. + * sysdeps/unix/sysv/linux/mips/mips64/llseek.c: New file. + * sysdeps/unix/sysv/linux/mips/mips64/recv.c: New file. + * sysdeps/unix/sysv/linux/mips/mips64/send.c: New file. + * sysdeps/unix/sysv/linux/mips/mips64/syscall.S: New file. + * sysdeps/unix/sysv/linux/mips/mips64/syscalls.list: New file. + * sysdeps/unix/sysv/linux/mips/mips64/umount.c: New file. + * sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S: New file. + + * sysdeps/unix/sysv/linux/configure.in (libc_cv_slibdir): Use + lib64 for mips64/n64 and lib32 for mips64/n32. + (ldd_rewrite_script): Needed for all mips64 configurations. + * sysdeps/unix/sysv/linux/configure: Rebuilt. + * sysdeps/unix/sysv/linux/mips/mips64/ldd-rewrite.sed: New file. + * sysdeps/unix/sysv/linux/mips/mips64/Dist: New file. + + * sysdeps/mips/machine-gmon.h (MCOUNT): Define for N32 and N64 as + well. + + * sysdeps/unix/sysv/linux/mips/configure.in: New. Pre-process + asm/unistd.h into asm-unistd.h. + * sysdeps/unix/sysv/linux/mips/configure: Generated. + * sysdeps/unix/sysv/linux/mips/Makefile: Do custom processing + of syscall list. + * sysdeps/unix/sysv/linux/mips/sys/syscall.h: New file. + * sysdeps/unix/sysv/linux/mips/clone.S: Don't include + asm/unistd.h. + + * sysdeps/unix/sysv/linux/mips/sys/ptrace.h: New file. + * sysdeps/unix/sysv/linux/mips/ptrace.c: New file. Use long + long type for registers on n32. + + * sysdeps/mips/bits/wordsize.h: New file, appropriate for all + 3 ABIs. + * sysdeps/mips/mips64/gmp-mparam.h: New file. Define + BITS_PER_LONGINT to __WORDSIZE, to match all 3 ABIs. + * sysdeps/mips/setjmp_aux.c (STRINGXP, REGS, PTRS): New macros. + (__sigsetjmp_aux): Use them. Adjust for all 3 ABIs. + * sysdeps/mips/elf/start.S: Adjust for all 3 ABIs. + * sysdeps/unix/mips/brk.S: Likewise. + * sysdeps/unix/mips/sysdep.S: Likewise. + * sysdeps/unix/sysv/linux/mips/clone.S: Likewise. + * sysdeps/mips/bits/setjmp.h (__jmp_buf): Likewise. + * sysdeps/mips/sys/ucontext.h: Likewise. + * sysdeps/unix/sysv/linux/mips/sys/profcs.h: Likewise. + * sysdeps/unix/sysv/linux/mips/sys/ucontext.h: Likewise. + * sysdeps/unix/sysv/linux/mips/kernel_stat.h: Likewise. + * sysdeps/mips/mips64/bsd-_setjmp.S: Likewise. + * sysdeps/mips/mips64/bsd-setjmp.S: Likewise. + * sysdeps/mips/mips64/setjmp.S: Likewise. + * sysdeps/mips/mips64/bits/setjmp.h: Deleted, obsolete. + * sysdeps/mips/mips64/soft-fp/sfp-machine.h: Use long long for + 64-bit types. + +2003-03-16 Ulrich Drepper + + * sysdeps/unix/clock_settime.c (HANDLE_REALTIME): Define tv here, + not at function level. + * sysdeps/unix/clock_gettime.c (HANDLE_REALTIME): Likewise. + +2003-03-15 Roland McGrath + + * nis/nss_nis/nis-hosts.c (internal_gethostbyname2_r): int -> size_t + * nis/nss_nis/nis-network.c (_nss_nis_getnetbyname_r): Likewise. + * nis/nss_nis/nis-alias.c (_nss_nis_getaliasbyname_r): Likewise. + * nis/nis_table.c (__create_ib_request): Likewise. + + * posix/fnmatch_loop.c: Add casts for signedness. + * nss/nss_files/files-hosts.c: Likewise. + * nscd/nscd_getpw_r.c (nscd_getpw_r): Likewise. + * gmon/gmon.c (write_call_graph): Use u_long for FROM_LEN. + * nscd/nscd_getgr_r.c (nscd_getgr_r): Use nscd_ssize_t for CNT. + + * configure.in (libc_cv_visibility_attribute): Use AC_TRY_COMMAND, + get errors into the log file. + (libc_cv_broken_visibility_attribute): Likewise. + (libc_cv_broken_alias_attribute): Likewise. + (libc_cv_asm_weak_directive): Likewise. + (libc_cv_need_minus_P): Likewise. + (libc_cv_dot_text): Likewise. + (libc_cv_asm_global_directive): Likewise. + (libc_cv_asm_type_prefix): Likewise. + * configure: Regenerated. + + * nscd/cache.c (cache_search): Give first arg type `request_type'. + * nscd/nscd.h: Update decl. + + * nscd/nscd_getpw_r.c (nscd_getpw_r): Add casts for signedness. + * nscd/nscd_getgr_r.c (nscd_getgr_r): Likewise. + * elf/dl-close.c (_dl_close): Likewise. + * sysdeps/unix/sysv/linux/powerpc/chown.c (__chown): int -> size_t + * io/fts.c (fts_build): Likewise. + * elf/cache.c (add_to_cache): Likewise. + * locale/programs/locarchive.c (show_archive_content): Likewise. + + * posix/fnmatch.c (fnmatch): Tweak __builtin_expect use. + + * include/ctype.h (__ctype_b_loc): Tweak type punning to make gcc 3.3 + happy. + (__ctype_toupper_loc, __ctype_tolower_loc): Likewise. + +2003-03-15 Ulrich Drepper + + * sysdeps/unix/sysv/linux/ia64/system.c: Use the generic Linux + code for most parts. + +2003-03-15 Roland McGrath + + * sysdeps/unix/sysv/linux/i386/system.c: Moved to ... + * sysdeps/unix/sysv/linux/system.c: ... here. + (FORK): Don't #define if already #define'd. + * sysdeps/unix/sysv/linux/s390/system.c: File removed. + * sysdeps/unix/sysv/linux/kernel-features.h [__powerpc__]: + (__ASSUME_CLONE_THREAD_FLAGS): Define for kernel >= 2.5.64. + + * dlfcn/tst-dlinfo.c: New file. + * dlfcn/Makefile (tests): Add tst-dlinfo. + ($(objpfx)tst-dlinfo): New target. + + * dlfcn/dlinfo.c: New file. + * dlfcn/Makefile (libdl-routines): Add it. + * dlfcn/Versions (libdl: GLIBC_2.3.3): Add dlinfo. + * dlfcn/dlfcn.h [__USE_GNU]: Declare dlinfo. + [__USE_GNU] (RTLD_DI_*): New enum constants. + [__USE_GNU] (Dl_serpath, Dl_serinfo): New types. + * elf/dl-load.c (cache_rpath): New inline function. + (_dl_map_object): Use it. + (_dl_rtld_di_serinfo): New function. + * sysdeps/generic/ldsodefs.h: Declare it. + * elf/Versions (ld: GLIBC_PRIVATE): Add it. + + * sysdeps/powerpc/elf/libc-start.c (AUX_VECTOR_INIT): Define it. + (LIBC_START_MAIN, LIBC_START_MAIN_AUXVEC_ARG, MAIN_AUXVEC_ARG) + (INIT_MAIN_ARGS): Define, and #include . + (__libc_start_main): Just call the generic one for most of the work. + + * sysdeps/generic/libc-start.c [LIBC_START_MAIN]: If defined, define a + static function by that name instead of BP_SYM (__libc_start_main). + [LIBC_START_MAIN_AUXVEC_ARG]: Take AUXVEC as argument. + [MAIN_AUXVEC_ARG]: Pass 4th argument to MAIN. + [INIT_MAIN_ARGS]: Give INIT the same args as MAIN. + + * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start) [DL_PLATFORM_AUXV]: + Use this macro for extra AT_* cases. + * sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c (DL_PLATFORM_AUXV): + New macro, guts from ... + (__aux_init_cache): ... here, function removed. + (DL_PLATFORM_INIT): Don't define this. + + * sysdeps/powerpc/powerpc32/memset.S: Put __cache_line_size in bss. + * sysdeps/powerpc/powerpc64/memset.S: Likewise. + + * Versions.def (libthread_db): Add GLIBC_2.3.3 set. + +2003-03-14 Roland McGrath + + * dlfcn/dlerror.c (dlerror): If objname is "", don't put ": " after it. + +2003-03-14 Jakub Jelinek + + * sysdeps/unix/sysv/linux/Makefile (syscall-%.h): Fix a typo. + + * sysdeps/unix/sysv/linux/sparc/sparc64/pause.c: Include + sysdeps/posix/pause.c instead of sysdeps/unix/common/pause.c. + +2003-03-14 Alexandre Oliva + + * sysdeps/mips/fpu/bits/mathdef.h: New. + (__NO_LONG_DOUBLE_MATH): Define for o32. + + * sysdeps/mips/sys/asm.h: Formatting changes. + (PTR, PTRSIZE, PTRLOG): Adjust for all 3 ABIs. + (CPADD): Define for all of them. + (SETUP_GP, SETUP_GPX, SETUP_GPX_L, SAVE_GP, SETUP_GP64, + SETUP_GPX64, SETUP_GPX64_L, RESTORE_GP64, USE_ALT_CP, + NARGSAVE): Define per ABI spec. + (END): Don't redefine. + (LONG_SLL, LONG_SLLV, LONG_SRL, LONG_SRLV, LONG_SRA, + LONG_SRAV): Remove duplicate definitions. + (PTR_ADD, PTR_ADDI, PTR_ADDU, PTR_ADDIU, PTR_SUB, PTR_SUBI, + PTR_SUBU, PTR_SUBIU, PTR_L, PTR_S, PTR_SLL, PTR_SLLV, PTR_SRL, + PTR_SRLV, PTR_SRA, PTR_SRAV, PTR_SCALESHIFT): Define for n32. + (PTR_LA): Define for all 3 ABIs. + + * sysdeps/mips/dl-machine.h: Include sys/asm.h. + (elf_machine_matches_host): Prevent linking of o32 and n32 + together. + (elf_machine_dynamic): Document assumption on $gp. + (STRINGXP, STRINGXV, STRINGV_): New macros. + (elf_machine_load_address): Use them to stringize PTR_LA and + PTR_SUBU. + (ELF_DL_FRAME_SIZE, ELF_DL_SAVE_ARG_REGS, + ELF_DL_RESTORE_ARG_REGS, IFABIO32): New macros used in... + (_dl_runtime_resolve): Adjust it for all 3 ABIs. + (__dl_runtime_resolve): Cast the symtab initializer to the + right type. + (RTLD_START): Use it. Adjust it for all 3 ABIs. + (elf_machine_rel): Mark as always_inline in RTLD_BOOTSTRAP. + Handle 64-bit R_MIPS_REL composite relocation and accept + R_MIPS_64 relocations to shift addend size to 64 bits. + Document assumption regarding local GOT entries. Document + backward-compatibility departing from the ABI behavior in + applying relocations that reference section symbols, no longer + used. Support relocations to mis-aligned offsets. + * sysdeps/mips/mips64/dl-machine.h: Deleted, obsolete. + + * sysdeps/unix/sysv/linux/mips/readelflib.c: New file. + + * sysdeps/unix/sysv/linux/mips/kernel_sigaction.h + (_KERNEL_NSIG_BPW): Define in terms of _MIPS_SZLONG. + * sysdeps/unix/sysv/linux/mips/sigaction.c: Define restore and + restore_rt functions. Use them. + + * sysdeps/unix/sysv/linux/mips/sys/tas.h (_test_and_set): Don't + .set mips2 on new abis. + +2003-03-13 Ulrich Drepper + + * posix/getconf.c: Recognize POSIX2_SYMLINKS. + * sysdeps/generic/bits/confname.h: Define _PC_2_SYMLINKS. + * sysdeps/posix/fpathconf.c: Handle _PC_2_SYMLINKS. + * sysdeps/posix/pathconf.c: Likewise. + * sysdeps/unix/sysv/linux/fpathconf.c: Likewise. + * sysdeps/unix/sysv/linux/pathconf.c: Likewise. + * sysdeps/unix/sysv/linux/pathconf.h: Define statfs_symlinks. + + * sysdeps/unix/sysv/linux/linux_fsinfo.h: Define some more magic + words. + +2003-03-14 Alexandre Oliva + + * include/gmp.h: Include/gmp-mparam.h. + * stdlib/strtod.c: Include gmp-mparam.h before gmp.h and + gmp-impl.h. + + * elf/dl-conflict.c: Don't compile _dl_resolve_conflicts if + ELF_MACHINE_NO_RELA is set. + * elf/rtld.c (dl_main): No prelink support for REL-only. + + * sysdeps/generic/ldconfig.h (FLAG_MIPS64_LIBN32, + FLAG_MIPS64_LIBN64): Define. + * elf/cache.c (print_entry): Handle mips64 n32 and n64. + + * sysdeps/mips/memcpy.S: Map t0-3 to a4-7 on new abis. + * sysdeps/mips/memset.S: Likewise. + * sysdeps/mips/sys/regdef.h: Alias a4-7 or t0-3 to $8-11 + depending on the ABI. + + * sysdeps/mips/atomicity.h (exchange_and_add, atomic_add): + Don't .set mips2 on new abi. + (compare_and_swap): Likewise. Support 64-bit longs on n64. + + * stdlib/fpioconst.h: Include gmp.h with angle brackets. + +2003-03-13 Roland McGrath + + * elf/dl-load.c (_dl_map_object_from_fd): Bail if no PT_LOAD phdrs + found. Reported by Alexandre Oliva . + +2003-03-13 Alexandre Oliva + + * stdio-common/_itoa.c (_itoa_base_table): Make 64-bit + literals long long. + * stdlib/fpioconst.c: Likewise. + * stdlib/strtod.c: Likewise. + + * sysdeps/mips/add_n.S: Use L macro for local labels. + * sysdeps/mips/addmul_1.S: Likewise. + * sysdeps/mips/lshift.S: Likewise. + * sysdeps/mips/memcpy.S: Likewise. + * sysdeps/mips/memset.S: Likewise. + * sysdeps/mips/mul_1.S: Likewise. + * sysdeps/mips/rshift.S: Likewise. + * sysdeps/mips/sub_n.S: Likewise. + * sysdeps/mips/submul_1.S: Likewise. + * sysdeps/mips/mips64/add_n.S: Likewise. + * sysdeps/mips/mips64/addmul_1.S: Likewise. + * sysdeps/mips/mips64/lshift.S: Likewise. + * sysdeps/mips/mips64/mul_1.S: Likewise. + * sysdeps/mips/mips64/rshift.S: Likewise. + * sysdeps/mips/mips64/sub_n.S: Likewise. + * sysdeps/mips/mips64/submul_1.S: Likewise. + * sysdeps/unix/mips/sysdep.h: Define L() according to ABI + conventions. Define END as in sys/asm.h. + * sysdeps/unix/mips/sysdep.S: Likewise. + * sysdeps/unix/mips/wait.S: Likewise. + * sysdeps/unix/sysv/linux/mips/clone.S: Likewise. + + * sysdeps/ieee754/dbl-64/dbl2mpn.c (__mpn_extract_double): + Cast shifted values that may be too narrow to mp_limb_t. + * sysdeps/ieee754/dbl-64/mpn2dbl.c (__mpn_construct_double): + Likewise. + * sysdeps/ieee754/flt-32/mpn2flt.c (__mpn_construct_float): + Likewise. + * sysdeps/ieee754/ldbl-128/ldbl2mpn.c + (__mpn_extract_long_double): Likewise. + * sysdeps/ieee754/ldbl-128/mpn2ldbl.c + (__mpn_construct_long_double): Likewise. + * sysdeps/ieee754/ldbl-96/ldbl2mpn.c + (__mpn_extract_long_double): Likewise. + * sysdeps/ieee754/ldbl-96/mpn2ldbl.c + (__mpn_construct_long_double): Likewise. + +2003-03-13 Roland McGrath + + * elf/Makefile ($(objpfx)librtld.mk): Tweak regexp so that one-line + entries in the map file match too. + +2003-03-13 Guido Guenther + + * sysdeps/unix/sysv/linux/mips/clone.S: introduce and use local + label .Lthread_start since current binutils don't allow branches + to globally visible symbols. + +2003-03-13 Jakub Jelinek + + * sysdeps/unix/sysv/linux/ia64/sysdep.h (BREAK_INSN_1, BREAK_INSN, + ASM_OUTARGS_0, ASM_OUTARGS_1, ASM_OUTARGS_2, ASM_OUTARGS_3, + ASM_OUTARGS_4, ASM_OUTARGS_5, ASM_OUTARGS_6): Define. + (INTERNAL_SYSCALL, INLINE_SYSCALL): Use it. Make syscall arguments + clobbered by the syscall. + (ASM_ARGS_1, ASM_ARGS_2, ASM_ARGS_3, ASM_ARGS_4, ASM_ARGS_5, + ASM_ARGS_6): Change constraints from r to index of corresponding + output register. + * sysdeps/unix/sysv/linux/ia64/clone2.S (__clone2): Swap + ptid and ctid to match kernel. + * sysdeps/unix/sysv/linux/ia64/system.c (FORK): Likewise. + +2003-03-12 Steven Munroe + + * sysdeps/powerpc/powerpc64/elf/configure.in: Remove + AC_DEFINE(PI_STATIC_AND_HIDDEN). Not supported for PowerPC64. + * sysdeps/powerpc/powerpc64/elf/configure: Regenerated. + +2003-03-11 Roland McGrath + + * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_rela): + Check SYM_MAP rather than SYM as definedness check. + Handle R_PPC64_ADDR32, R_PPC64_ADDR30, and R_PPC64_REL64 relocs. + Don't handle R_PPC64_REL24 reloc. + Mostly from Steven Munroe . + + * sysdeps/powerpc/powerpc64/dl-machine.h + [USE_TLS] (elf_machine_type_class): Match all the TLS relocs in a + block, so we cover all the TPREL16* flavors without 6 ||s. + [USE_TLS] (elf_machine_tprel): New function. + (elf_machine_rela) [USE_TLS]: Use elf_machine_tprel for TPREL64 reloc, + and handle TPREL16 relocs too. Return rather than break for DTPREL64. + Mostly from Steven Munroe . + +2003-03-11 Ralf Baechle + + * sysdeps/unix/sysv/linux/mips/clone.S (__thread_start): Use jal + instead of jalr to invoke subroutine so restoring the $gp register + will work properly. + +2003-03-11 Martin Schwidefsky + + * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h (__NR_pread64): Define + to __NR_pread if not defined. + (__NR_pwrite64): Define to __NR_pwrite if not defined. + +2003-03-11 Jakub Jelinek + + * sysdeps/unix/sysv/linux/ia64/system.c: New file. + * sysdeps/unix/sysv/linux/kernel-features.h + (__ASSUME_CLONE_THREAD_FLAGS): Define for IA-64 and s390* with + kernel >= 2.5.64. + +2003-03-11 Jakub Jelinek + + * sysdeps/generic/dl-sysdep.c (_dl_important_hwcaps): If CNT == 1, + allocate space even for the trailing '/'. + Reported by John Reiser . + + * sysdeps/unix/sysv/linux/ia64/sysdep.h (LOAD_ARGS_6, ASM_ARGS_6, + ASM_CLOBBERS_6): Define. + (ASM_CLOBBERS_5): Use ASM_CLOBBERS_6. + * sysdeps/unix/sysv/linux/ia64/clone2.S (__clone2): Reorder arguments + to match IA-32 order. + * sysdeps/unix/sysv/linux/i386/clone.S: Fix comment. + +2003-03-10 Steven Munroe + + * sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S: Don't clobber R7. + Copy extra params for NPTL to registers used in clone syscall. + +2003-03-10 Martin Schwidefsky + + * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list: Correct system + call names for pread and pwrite. + +2003-03-10 Roland McGrath + + * dlfcn/Makefile (libdl-routines): Add dladdr1. + * dlfcn/dladdr1.c: New file. + * dlfcn/dlfcn.h [__USE_GNU]: Declare dladdr1. + [__USE_GNU] (RTLD_DL_SYMENT, RTLD_DL_LINKMAP): New enum constants. + * elf/dl-addr.c (_dl_addr): Take new args, a struct link_map ** and + a const ElfNN_Sym ** to fill in. + * include/dlfcn.h: Update decl. Include . + * dlfcn/dladdr.c (dladdr): Update caller. + * malloc/mtrace.c (tr_where): Likewise. + * sysdeps/generic/elf/backtracesyms.c: Likewise. + * sysdeps/generic/elf/backtracesymsfd.c: Likewise. + * dlfcn/Versions (libdl: GLIBC_2.3.3): New set, add dladdr1. + * Versions.def (libdl): Define GLIBC_2.3.3 set. + + * sysdeps/unix/make-syscalls.sh: Generate $(compile-syscall) for + assembler command. + * sysdeps/unix/Makefile (compile-syscall): New variable. + Pass -g0 to compiler for assembling syscall stubs from stdin. + + * sysdeps/i386/sysdep.h [HAVE_CPP_ASM_DEBUGINFO] + (STABS_CURRENT_FILE, STABS_CURRENT_FILE1, STABS_FUN, STABS_FUN_END): + Define these to do nothing. + + * configure.in: New check for -g on .S files. + * configure: Regenerated. + * config.make.in (have-cpp-asm-debuginfo): New variable. + * config.h.in (HAVE_CPP_ASM_DEBUGINFO): New #undef. + * Makeconfig (ASFLAGS): New variable, if undefined and + $(have-cpp-asm-debuginfo), take options matching -g% from $(CFLAGS). + * Makerules (compile.S, COMPILE.S): Use $(ASFLAGS). + +2003-03-09 Roland McGrath + + * sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S: Take 3 new args + used by NPTL on new kernels. From Paul Mackerras . + +2003-03-09 Ulrich Drepper + + * po/fi.po: Update from translation team. + * po/ca.po: Likewise. + * po/da.po: Likewise. + +2003-03-08 Ulrich Drepper + + * rt/tst-aio7.c (do_test): Change BYTES into a #define. + +2003-03-07 Ulrich Drepper + + * rt/tst-aio7.c (do_test): Give BUFF permanent extent, too. + + * sysdeps/powerpc/fpu/w_sqrt.c: Fix comment. + +2003-03-07 Roland McGrath + + * sysdeps/s390/s390-32/sysdep.h (L): Use .Lfoo instead of foo. + * sysdeps/s390/s390-64/sysdep.h (L): Likewise. + +2003-03-04 Guido Guenther + + * sysdeps/unix/sysv/linux/mips/syscalls.list: Remove unneeded + stubs, we have INLINE_SYSCALL. + * sysdeps/unix/sysv/linux/mips/bits/mman.h: Define MAP_POPULATE, + MAP_NONBLOCK. + +2003-03-06 Roland McGrath + + * rt/tst-aio7.c (do_test): Revert last change. Instead, give CB1 + permanent extent and add a comment about testing its implicit teardown. + +2003-03-06 Martin Schwidefsky + + * rt/tst-aio7.c (do_test): Cancel i/o on CB1 before it's out of scope. + +2003-03-05 Ulrich Drepper + + * sysdeps/generic/dl-tls.c (_dl_allocate_tls_storage): Fix + reversed __builtin_expect expectation. + +2003-03-05 Roland McGrath + + * stdio-common/sscanf.c: Use prototype defn with ... syntax. + * libio/swscanf.c: Likewise. + * libio/swprintf.c: Likewise. + +2003-03-04 Roland McGrath + + * sysdeps/powerpc/powerpc64/dl-machine.h: Include . + (elf_machine_rela): Always use RESOLVE_MAP, needed for + R_PPC64_JMP_SLOT as well as TLS cases. + (BIT_INSERT): Move parenthesis where it ought to have been. + Reported by Steven Munroe . + + * posix/confstr.c (confstr): Correct STRING_LEN values for + _CS_GNU_LIBC_VERSION and _CS_GNU_LIBPTHREAD_VERSION, add missing + break. Reported by Alexandre Julliard . + +2003-03-04 Jakub Jelinek + + * sysdeps/ia64/fpu/libm-test-ulps: Regenerated. + +2003-03-04 Ulrich Drepper + + * sysdeps/unix/sysv/linux/x86_64/clone.S: Add support for the new + clone parameters. + + * po/sv.po: Update from translation team. + +2003-03-04 Andreas Jaeger + Ulrich Drepper + + * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Fix comments. + +2003-03-03 Ulrich Drepper + + * sysdeps/generic/dl-sysdep.h: Add double include protection. + + * po/tr.po: Update from translation team. + + * elf/dl-load.c (_dl_map_object_from_fd): Determine whether there + are holes between the segments. Only call mprotect to set + proection to PROT_NONE if there are some. + + * elf/dl-load.c (struct filebuf): Actually use FILEBUF_SIZE. + Update comment. + + * include/sched.h (__clone2): Use ... instead of adding all the + new parameters. + +2003-03-03 Roland McGrath + + * elf/dl-load.c (struct filebuf): Fix typo in last change. + + * sysdeps/powerpc/powerpc32/elf/configure.in: Don't define + PI_STATIC_AND_HIDDEN. + +2003-03-03 Ian Wienand + + * sysdeps/unix/sysv/linux/ia64/clone2.S: Update to take extra clone + flags. + * include/sched.h: Update clone2 prototype. + +2003-03-03 Andreas Jaeger + + * math/tgmath.h (__TGMATH_UNARY_REAL_RET_ONLY): New definition. + (llrint): Use it to correct return type. + (lrint): Likewise. + (lround): Likewise. + (llround): Likewise. + +2003-03-03 Ulrich Drepper + + * elf/dl-load.c (struct filebuf): For 64-bit platforms use 640 + byte filebuf size. + + * libio/fileops.c (_IO_new_file_fopen): Close stillborn descriptor + if ccs parameter isn't valid. Reported by Andreas Schwab. + +2003-03-03 Martin Schwidefsky + + * sysdeps/unix/sysv/linux/s390/s390-32/syscall.S (syscall): Add support + for system call numbers > 255. + * sysdeps/unix/sysv/linux/s390/s390-32/syscall.h (DO_CALL, + INLINE_SYSCALL, INTERNAL_SYSCALL_DIRECT, INTERNAL_SYSCALL_SVC0, + INTERNAL_SYSCALL): Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/syscall.S (syscall): Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/syscall.h (DO_CALL, + INLINE_SYSCALL, INTERNAL_SYSCALL_DIRECT, INTERNAL_SYSCALL_SVC0, + INTERNAL_SYSCALL): Likewise. + +2003-03-03 Martin Schwidefsky + + * sysdeps/generic/dl-tls.c (_dl_deallocate_tls): Don't free the dtv + array if it is the initial dtv. + +2003-03-03 Ulrich Drepper + + * po/es.po: Update from translation team. + * po/fr.po: Likewise. + * po/gl.po: Likewise. + * po/sk.po: Likewise. + * po/sv.po: Likewise. + + * sysdeps/unix/sysv/linux/syscalls.list: Add remap_file_pages entry. + * misc/sys/mman.h: Add prototype for remap_file_pages. + * sysdeps/generic/remap_file_pages.c: New file. + * misc/Makefile (routines): Add remap_file_pages. + * misc/Versions [libc:GLIBC_2.3.3]: Add remap_file_pages. + + * sysdeps/unix/sysv/linux/x86_64/bits/mman.h: Define MAP_POPULATE + and MAP_NONBLOCK. + * sysdeps/unix/sysv/linux/s390/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/powerpc/bits/mman.h: Likewise + * sysdeps/unix/sysv/linux/m68k/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/arm/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/ia64/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/hppa/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/alpha/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/i386/bits/mman.h: Likewise. + +2003-03-03 Roland McGrath + + * sysdeps/ia64/dl-fptr.c (__ia64_make_fptr): Revert last change. + * sysdeps/ia64/dl-machine.h: Likewise. + * sysdeps/ia64/dl-symaddr.c (_dl_symbol_address): Remove const from + argument type. + * sysdeps/ia64/dl-lookupcfg.h: Update decl. + + * sysdeps/wordsize-64/strtol_l.c (strtoll_l): Define as weak alias. + * sysdeps/wordsize-64/strtoul_l.c (strtoull_l): Define as weak alias. + * locale/Versions (libc: GLIBC_2.3): Move those to ... + * sysdeps/wordsize-32/Versions (libc: GLIBC_2.3): ... here, new file. + * sysdeps/wordsize-64/Versions (libc: GLIBC_2.3.3) Likewise. + * Versions.def (libc): Add GLIBC_2.3.3 set. + + * sysdeps/ia64/dl-fptr.c (__ia64_make_fptr): Add const to MAP arg. + * sysdeps/ia64/dl-machine.h: Update decl. + +2003-03-03 Andreas Jaeger + + * sysdeps/unix/clock_settime.c (HANDLE_REALTIME): Add missing brace. + +2003-03-02 Roland McGrath + + * scripts/abilist.awk: Reject data items with apparent 0 size. + + * scripts/merge-abilist.awk: Restore hack to elide pattern foo.*/bar + after foo.* as if it were a duplicate. + + * sysdeps/unix/sysv/linux/ia64/brk.S: Add .type and .size for __curbrk. + +2003-03-02 Ulrich Drepper + + * elf/dl-load.c (struct filebuf): Reduce buf array to 512 bytes. + + * sysdeps/generic/bits/time.h: Define CLOCK_MONOTONIC. + * sysdeps/posix/clock_getres.c: Define code for CLOCK_REALTIME only + if not already defined. Use SYSDEP_GETRES to allow other files to + provide alternative implementations. + * sysdeps/unix/sysv/linux/clock_getres.c: New file + * sysdeps/unix/clock_gettime.c: Define code for CLOCK_REALTIME only + if not already defined. Use SYSDEP_GETTIME to allow other files to + provide alternative implementations. + * sysdeps/unix/sysv/linux/clock_gettime.c: New file. + * sysdeps/unix/clock_settime.c: Define code for CLOCK_REALTIME only + if not already defined. Use SYSDEP_GETTIME to allow other files to + provide alternative implementations. + * sysdeps/unix/sysv/linux/clock_settime.c: New file. + * sysdeps/unix/clock_nanosleep.c: Use SYSDEP_NANOSLEEP to allow + other files to provide alternative implementations. Rearrange + tests for invalid parameters. + * sysdeps/unix/sysv/linux/clock_nanosleep.c: New file. + * sysdeps/unix/sysv/linux/sysconf.c: New file. + * sysdeps/unix/sysv/linux/kernel-features.h: Define + __ASSUME_POSIX_TIMERS for Linux 2.5.63 and up. + * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define + _POSIX_MONOTONIC_CLOCK. + +2003-03-02 Roland McGrath + + * scripts/merge-abilist.awk: More checks for bogus input. + Uniquify duplicate config names. + + * scripts/abilist.awk: Don't distinguish weak symbols in normal output. + + * sysdeps/powerpc/powerpc32/dl-machine.c (_dl_reloc_overflow): Renamed + from dl_reloc_overflow, make global. + (__process_machine_rela): Update callers. + * sysdeps/powerpc/powerpc32/dl-machine.h: Declare _dl_reloc_overflow. + Add attribute_hidden to __process_machine_rela decl. + (elf_machine_type_class, elf_machine_rela): Handle 16-bit TLS relocs. + + * sysdeps/generic/libc-start.c (__libc_start_main): Don't assign const + variable. + + * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_fixup_plt): + Don't use weak_extern for dl_rtld_map. Instead check only if [SHARED]. + (elf_machine_rela): Clean up. + + * sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela): Clean up. + + PowerPC TLS support contributed by Paul Mackerras . + * sysdeps/powerpc/powerpc32/elf/configure.in: New file. + * sysdeps/powerpc/powerpc32/elf/configure: New generated file. + * elf/tls-macros.h [__powerpc__ && !__powerpc64__] + (TLS_LE, TLS_IE, TLS_LD, TLS_GD): Define them. + * sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela): Support + new relocs for TLS. + + * sysdeps/powerpc/dl-tls.h (TLS_TP_OFFSET, TLS_DTV_OFFSET): Move these + macros out of [SHARED]. + (TLS_TPREL_VALUE, TLS_DTPREL_VALUE): New macros. + + * elf/elf.h: Define R_PPC_* relocs for TLS support. + Clean up R_PPC64_* macro definition comments. + + * configure.in: In "running configure fragment for" message, + omit $srcdir from the name if we prepended it. + * configure: Regenerated. + + * elf/dl-reloc.c (allocate_static_tls): Fix calculations. + From Jakub Jelinek . + + * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h: Revert last change, + which duplicated the O_DIRECT defn. + +2003-03-01 GOTO Masanori + + * stdlib/stdlib.h: Add missing __USE_BSD enclosure for BSD derived + random functions. + +2003-03-01 Andreas Schwab + + * resolv/Makefile (tests): Don't depend on + $(objpfx)mtrace-tst-leaks when cross compiling. + + * sysdeps/m68k/dl-machine.h (_dl_start_user): Access + __libc_stack_end through GOT since it is a global symbol. + 2003-03-01 GOTO Masanori * argp/argp.h: Fix a typo. @@ -5561,6 +11477,16 @@ (common-mostlyclean, common-clean): Clean up rtld-* files. * sysdeps/unix/make-syscalls.sh: Add rtld-*.os target name to rules. +2003-05-20 Jakub Jelinek + + * elf/dynamic-link.h (elf_get_dynamic_info): Add temp argument. + If temp != NULL, copy dynamic entries which need relocation to temp + array before relocating. + (DL_RO_DYN_TEMP_CNT): Define. + * elf/dl-load.c (_dl_map_object_from_fd): Adjust caller. + * elf/rtld.c (_dl_start): Likewise. + (dl_main): Likewise. Add dyn_temp static variable. + 2002-10-11 Roland McGrath * sysdeps/generic/dl-tls.c (__tls_get_addr): After freeing block in --- glibc-2.3.2/Makeconfig 2003-01-06 00:31:36.000000000 -0500 +++ glibc-2.3.2/Makeconfig 2003-09-19 22:37:01.000000000 -0400 @@ -83,6 +83,12 @@ # Get the values defined by options to `configure'. include $(common-objpfx)config.make +# What flags to give to sources which call user provided callbacks +uses-callbacks = $(exceptions) + +# What flags to give to tests which test stack alignment +stack-align-test-flags = + # We have a special subdir for each binary format. # For now, only ELF is fully supported. ifeq ($(elf),yes) @@ -505,7 +511,7 @@ link-extra-libs-bounded = $(foreach lib,$(LDLIBS-$(@F:%-bp=%)),$(common-objpfx)$(lib)_b.a) ifndef gnulib -gnulib := -lgcc +gnulib := -lgcc -lgcc_eh endif ifeq ($(elf),yes) +preinit = $(addprefix $(csu-objpfx),crti.o) @@ -621,7 +627,7 @@ +includes = -I$(..)include -I. \ $(patsubst %/,-I%,$(objpfx)) $(patsubst %/,-I%,$(..)) \ $(libio-include) $(includes) \ - $(+sysdep-includes) $(last-includes) $(sysincludes) + $(+sysdep-includes) $(sysincludes) # Since libio has several internal header files, we use a -I instead # of many little headers in the include directory. @@ -669,6 +675,8 @@ libtype.os := lib%_pic.a # This can be changed by a sysdep makefile pic-ccflag = -fPIC +# This one should always stay like this unless there is a very good reason. +PIC-ccflag = -fPIC endif ifeq (yes,$(build-profile)) # Under --enable-profile, we will build a static library of profiled objects. @@ -711,11 +719,20 @@ # Must build the routines as PIC, though, because they can end up in (users') # shared objects. We don't want to use CFLAGS-os because users may, for # example, make that processor-specific. -CFLAGS-.oS = $(CFLAGS-.o) $(pic-ccflag) +CFLAGS-.oS = $(CFLAGS-.o) $(PIC-ccflag) CPPFLAGS-.oS = $(CPPFLAGS-.o) -DPIC -DLIBC_NONSHARED=1 libtype.oS = lib%_nonshared.a endif +# The assembler can generate debug information too. +ifndef ASFLAGS +ifeq ($(have-cpp-asm-debuginfo),yes) +ASFLAGS := $(filter -g%,$(CFLAGS)) +else +ASFLAGS := +endif +endif +ASFLAGS += $(ASFLAGS-config) +gnu-stabs = $(shell echo>&2 '*** BARF ON ME') @@ -921,11 +938,11 @@ all-Depend-files = $(wildcard $(..)*/Depend) $(common-objpfx)sysd-sorted: $(..)scripts/gen-sorted.awk $(all-Depend-files) \ $(common-objpfx)sysd-dirs $(..)Makeconfig - { { dirs='$(patsubst $(..)%/Depend,$(..)%,$(filter %/Depend,$^))';\ + { { dirs='$(patsubst $(..)%/Depend,%,$(filter %/Depend,$^))'; \ for d in $$dirs; do \ while read on; do \ echo "depend $$d $$on"; \ - done < $$d/Depend; \ + done < $(..)$$d/Depend; \ done; \ for f in $(all-subdirs); do \ echo $$f; \ --- glibc-2.3.2/Makefile 2003-02-21 01:22:51.000000000 -0500 +++ glibc-2.3.2/Makefile 2003-09-19 22:37:01.000000000 -0400 @@ -228,6 +228,18 @@ tests-clean: @$(MAKE) subdir_testclean no_deps=t +tests: $(objpfx)c++-types-check.out +ifneq ($(CXX),no) +ifneq (,$(wildcard scripts/data/c++-types-$(base-machine)-$(config-os).data)) +$(objpfx)c++-types-check.out: scripts/data/c++-types-$(base-machine)-$(config-os).data + scripts/check-c++-types.sh $^ $(CXX) $(filter-out -std=gnu99,$(CFLAGS)) $(CPPFLAGS) > $@ +else +$(objpfx)c++-types-check.out: + @echo 'WARNING C++ tests not run; create a c++-types-XXX file' + @echo "not run" > $@ +endif +endif + # The realclean target is just like distclean for the parent, but we want # the subdirs to know the difference in case they care. realclean distclean: parent-clean @@ -274,6 +286,7 @@ include/shlib-compat.h include/pthread.h Versions.def \ cppflags-iterator.mk tls.make.c \ include/stubs-prologue.h include/gnu/stubs.h \ + include/atomic.h bits/atomic.h \ INTERFACE CONFORMANCE NAMESPACE LICENSES \ $(addprefix scripts/, \ rellns-sh config.sub config.guess \ @@ -282,7 +295,11 @@ gen-sorted.awk abi-versions.awk abilist.awk \ firstversions.awk documented.sh cpp \ output-format.sed gen-as-const.awk \ - merge-abilist.awk extract-abilist.awk) + merge-abilist.awk extract-abilist.awk \ + rpm2dynsym.sh \ + ) \ + $(wildcard scripts/data/*.data) \ + $(wildcard abilist/*.abilist) distribute := $(strip $(distribute)) generated := $(generated) stubs.h @@ -318,12 +335,6 @@ iconvdata/% localedata/% po/% manual/%: $(MAKE) $(PARALLELMFLAGS) -C $(@D) $(@F) -# This is a special goal for people making binary distributions. Normally -# everybody uses the DES based crypt library but for the distribution we -# need the only-MD5 based one as well. -md5-crypt/libmd5crypt: - $(MAKE) $(PARALLELMFLAGS) -C $(@D) $(@F) - # glibc 2.0 contains some header files which aren't used with glibc 2.1 # anymore. # These rules should remove those headers --- glibc-2.3.2/Makefile.in 2000-11-15 18:03:08.000000000 -0500 +++ glibc-2.3.2/Makefile.in 2002-11-16 08:53:55.000000000 -0500 @@ -1,4 +1,4 @@ -# Generated from $Id: Makefile.in,v 1.7 2000/11/15 23:03:08 drepper Exp $. +# Generated from $Id: Makefile.in,v 1.6 1998/02/26 14:51:55 drepper Exp $. srcdir = @srcdir@ --- glibc-2.3.2/Makerules 2003-02-22 18:23:31.000000000 -0500 +++ glibc-2.3.2/Makerules 2003-09-19 22:37:01.000000000 -0400 @@ -125,29 +125,9 @@ endif # avoid-generated endif # $(versioning) = yes - -# Generating headers for assembly constants. -# We need this defined early to get into before-compile before -# it's used in sysd-rules, below. -$(common-objpfx)%.h $(common-objpfx)%.h.d: $(..)scripts/gen-as-const.awk \ - %.sym $(before-compile) - $(AWK) -f $< $(filter %.sym,$^) \ - | $(CC) -S -o - $(CFLAGS) $(CPPFLAGS) -x c - \ - -MD -MF $(@:.h=.h.d)T -MT '$(@:.h=.h.d) $(@:.h.d=.h)' \ - | sed -n 's/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*$$/#define \1 \2/p' > $(@:.h.d=.h)T - sed $(sed-remove-objpfx) $(sed-remove-dotdot) \ - $(@:.h=.h.d)T > $(@:.h=.h.d)T2 - rm -f $(@:.h=.h.d)T - mv -f $(@:.h=.h.d)T2 $(@:.h=.h.d) - mv -f $(@:.h.d=.h)T $(@:.h.d=.h) -vpath %.sym $(sysdirs) -before-compile += $(gen-as-const-headers:%.sym=$(common-objpfx)%.h) - - -# When we have no deps pass doing it, then make sure the subdirectory -# for object files gets created. -ifdef no_deps +# Make sure the subdirectory for object files gets created. ifdef objpfx +ifeq (,$(wildcard $(objpfx).)) before-compile += $(objpfx). $(objpfx).: $(make-target-directory) @@ -166,26 +146,59 @@ $(before-compile): endif +# We don't want $(common-objpfx) files to depend on miscellaneous stuff +# in subdirs. +ifdef subdir +common-before-compile := $(filter-out $(objpfx)%,$(before-compile)) +else +common-before-compile = $(before-compile) +endif + +ifndef subdir # If a makefile needs to do something conditional on something that # can only be figured out from headers, write a FOO.make.c input # file that uses cpp contructs and contains @@@ LINE @@@ for each LINE # to emit in the generated makefile, and use -include $(common-objpfx)FOO.make. -$(common-objpfx)%.make: $(..)%.make.c $(..)Makerules $(before-compile) +# +# We only generate these in the top-level makefile, to avoid any weirdness +# from subdir-specific makefile tweaks creeping in on an update. +$(common-objpfx)%.make: $(..)%.make.c $(..)Makerules $(common-before-compile) rm -f $@T $@.dT (echo '# Generated from $*.make.c by Makerules.'; \ - SUNPRO_DEPENDENCIES='$@.dT $$(common-objpfx)$*.make' \ $(CC) $(CFLAGS) $(CPPFLAGS) -E $< \ + -MD -MP -MT '$$(common-objpfx)$*.make' -MF $@.dT \ | sed -n '/@@@/{s/@@@[ ]*\(.*\)@@@/\1/;s/[ ]*$$//p;}'; \ echo 'common-generated += $(@F)'; \ sed $(sed-remove-objpfx) $(sed-remove-dotdot) $@.dT; \ rm -f $@.dT) > $@T mv -f $@T $@ +endif ifdef subdir -sed-remove-dotdot := -e 's@ *\.\.\/\([^ \]*\)@ $$(..)\1@g' +sed-remove-dotdot := -e 's@ *\.\.\/\([^ \]*\)@ $$(..)\1@g' \ + -e 's@^\.\.\/\([^ \]*\)@$$(..)\1@g' else -sed-remove-dotdot := -e 's@ *\([^ \/$$][^ \]*\)@ $$(..)\1@g' +sed-remove-dotdot := -e 's@ *\([^ \/$$][^ \]*\)@ $$(..)\1@g' \ + -e 's@^\([^ \/$$][^ \]*\)@$$(..)\1@g' endif + + +# Generating headers for assembly constants. +# We need this defined early to get into before-compile before +# it's used in sysd-rules, below. +$(common-objpfx)%.h $(common-objpfx)%.h.d: $(..)scripts/gen-as-const.awk \ + %.sym $(common-before-compile) + $(AWK) -f $< $(filter %.sym,$^) \ + | $(CC) -S -o - $(CFLAGS) $(CPPFLAGS) -x c - \ + -MD -MP -MF $(@:.h=.h.d)T -MT '$(@:.h=.h.d) $(@:.h.d=.h)' \ + | sed -n 's/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*$$/#define \1 \2/p' > $(@:.h.d=.h)T + sed $(sed-remove-objpfx) $(sed-remove-dotdot) \ + $(@:.h=.h.d)T > $(@:.h=.h.d)T2 + rm -f $(@:.h=.h.d)T + mv -f $(@:.h=.h.d)T2 $(@:.h=.h.d) + mv -f $(@:.h.d=.h)T $(@:.h.d=.h) +vpath %.sym $(sysdirs) +before-compile += $(gen-as-const-headers:%.sym=$(common-objpfx)%.h) # Generate an ordered list of implicit rules which find the source files in # each sysdep directory. The old method was to use vpath to search all the @@ -193,15 +206,6 @@ # later directory would be chosen over a .c file in an earlier directory, # which does not preserve the desired sysdeps ordering behavior. -# When making the list of .d files to include, we can't know which ones -# have source in .s files, and thus do not in fact need a .d file. -# So we must define rules to make .d files for .s files. -define make-dummy-dep -$(addprefix ln $(common-objpfx)dummy.d ,$(filter-out $(wildcard $@),$@)) -endef -$(common-objpfx)dummy.d: - echo '# .s files cannot contain includes, so they need no deps.' > $@ - # It matters that this set of rules, for compiling from sources in # the current directory (the $srcdir/$subdir) come before the # generated sysdep rules in included from sysd-rules below. When @@ -212,21 +216,18 @@ endef object-suffixes-left := $(all-object-suffixes) include $(o-iterator) -$(objpfx)%.d: %.S $(before-compile); $(+make-deps) define o-iterator-doit $(objpfx)%$o: %.s $(before-compile); $$(compile-command.s) endef object-suffixes-left := $(all-object-suffixes) include $(o-iterator) -$(objpfx)%.d: %.s $(common-objpfx)dummy.d; $(make-dummy-dep) define o-iterator-doit $(objpfx)%$o: %.c $(before-compile); $$(compile-command.c) endef object-suffixes-left := $(all-object-suffixes) include $(o-iterator) -$(objpfx)%.d: %.c $(before-compile); $(+make-deps) # Omit the objpfx rules when building in the source tree, because # objpfx is empty and so these rules just override the ones above. @@ -238,21 +239,18 @@ endef object-suffixes-left := $(all-object-suffixes) include $(o-iterator) -$(objpfx)%.d: $(objpfx)%.S $(before-compile); $(+make-deps) define o-iterator-doit $(objpfx)%$o: $(objpfx)%.s $(before-compile); $$(compile-command.s) endef object-suffixes-left := $(all-object-suffixes) include $(o-iterator) -$(objpfx)%.d: $(objpfx)%.s $(common-objpfx)dummy.d; $(make-dummy-dep) define o-iterator-doit $(objpfx)%$o: $(objpfx)%.c $(before-compile); $$(compile-command.c) endef object-suffixes-left := $(all-object-suffixes) include $(o-iterator) -$(objpfx)%.d: $(objpfx)%.c $(before-compile); $(+make-deps) endif # System-dependent makefiles can put in `inhibit-sysdep-asm' wildcard @@ -301,26 +299,6 @@ echo "\$$(objpfx)ptw-%$$o: $$dir/%.c \$$(before-compile); \ \$$(compile-command.c)"; \ done; \ - $(open-check-inhibit-asm) \ - echo "\$$(objpfx)%.d: $$dir/%.s \$$(common-objpfx)dummy.d; \ - \$$(make-dummy-dep)"; \ - echo "\$$(objpfx)rtld-%.d: $$dir/%.s \$$(common-objpfx)dummy.d; \ - \$$(make-dummy-dep)"; \ - echo "\$$(objpfx)ptw-%.d: $$dir/%.s \$$(common-objpfx)dummy.d; \ - \$$(make-dummy-dep)"; \ - echo "\$$(objpfx)%.d: $$dir/%.S \$$(before-compile); \ - \$$(+make-deps)"; \ - echo "\$$(objpfx)rtld-%.d: $$dir/%.S \$$(before-compile); \ - \$$(+make-deps)"; \ - echo "\$$(objpfx)ptw-%.d: $$dir/%.S \$$(before-compile); \ - \$$(+make-deps)"; \ - $(close-check-inhibit-asm) \ - echo "\$$(objpfx)%.d: $$dir/%.c \$$(before-compile); \ - \$$(+make-deps)"; \ - echo "\$$(objpfx)rtld-%.d: $$dir/%.c \$$(before-compile); \ - \$$(+make-deps)"; \ - echo "\$$(objpfx)ptw-%.d: $$dir/%.c \$$(before-compile); \ - \$$(+make-deps)"; \ echo "\$$(objpfx)m_%.S: $$dir/s_%.S; \$$(+make-include-of-dep)"; \ echo "\$$(objpfx)m_%.c: $$dir/s_%.c; \$$(+make-include-of-dep)"; \ done; \ @@ -383,32 +361,20 @@ endif # $(versioning) = yes endif # sysd-sorted-done - -ifndef compile-command.S -compile-command.S = $(compile.S) $(OUTPUT_OPTION) -endif -ifndef compile-command.s -compile-command.s = $(COMPILE.s) $< $(OUTPUT_OPTION) -endif -ifndef compile-command.c -compile-command.c = $(compile.c) $(OUTPUT_OPTION) -endif +# Generate .dT files as we compile. +compile-mkdep-flags = -MD -MP -MF $@.dt +compile-command.S = $(compile.S) $(OUTPUT_OPTION) $(compile-mkdep-flags) +compile-command.s = $(COMPILE.s) $< $(OUTPUT_OPTION) $(compile-mkdep-flags) +compile-command.c = $(compile.c) $(OUTPUT_OPTION) $(compile-mkdep-flags) # GCC can grok options after the file name, and it looks nicer that way. compile.c = $(CC) $< -c $(CFLAGS) $(CPPFLAGS) -compile.S = $(CC) $< -c $(CPPFLAGS) $(S-CPPFLAGS) $(ASFLAGS-$(suffix $@)) -COMPILE.S = $(CC) -c $(CPPFLAGS) $(S-CPPFLAGS) $(ASFLAGS-$(suffix $@)) +compile.S = $(CC) $< -c $(CPPFLAGS) $(S-CPPFLAGS) \ + $(ASFLAGS) $(ASFLAGS-$(suffix $@)) +COMPILE.S = $(CC) -c $(CPPFLAGS) $(S-CPPFLAGS) \ + $(ASFLAGS) $(ASFLAGS-$(suffix $@)) COMPILE.s = $(filter-out -pipe,$(CC)) -c $(ASFLAGS) -# If we want to generate MD5 checksums for the sources do this now. -ifeq ($(md5),yes) -generate-md5 = ; rm -f $(@:.d=.md5); \ -$(CC) -E $< $(CFLAGS) $(CPPFLAGS) $($(patsubst .%,%,$(suffix $( $(@:.d=.md5) -else -generate-md5 = -endif - # We need this for the output to go in the right place. It will default to # empty if make was configured to work with a cc that can't grok -c and -o # together. You can't compile the C library with such a compiler. @@ -418,14 +384,16 @@ # the dependency run for C sources. But having it for assembly sources can # get the wrong predefines. S-CPPFLAGS = -DASSEMBLER $(asm-CPPFLAGS) + define +make-deps $(make-target-directory) $(+mkdep) $< $(if $(filter %.c,$<),$(CFLAGS)) \ - $(CPPFLAGS) $($(patsubst .%,%,$(suffix $( $(@:.d=.T) + $(CPPFLAGS) $($(patsubst .%,%,$(suffix $( $(@:.d=.T) mv -f $(@:.d=.T) $@ $(generate-md5) endef + ifneq (,$(objpfx)) # Continuation lines here are dangerous because they introduce spaces! define sed-remove-objpfx @@ -509,17 +477,23 @@ ifeq (yes,$(elf)) # binutils only position loadable notes into the first page for binaries, # not for shared objects -define build-shlib -$(build-shlib-helper) \ - -o $@.new $(csu-objpfx)abi-note.o -Wl,--verbose \ - $(LDLIBS-$(@F:lib%.so=%).so) 2>&1 | \ - sed -e '/^=========/,/^=========/!d;/^=========/d' \ +$(common-objpfx)shlib.lds: $(common-objpfx)config.make $(..)Makerules + $(LINK.o) -shared -Wl,-O1 \ + $(sysdep-LDFLAGS) $(config-LDFLAGS) $(LDFLAGS.so) \ + -Wl,--verbose 2>&1 | \ + sed > $@T \ + -e '/^=========/,/^=========/!d;/^=========/d' \ -e 's/^.*\.hash[ ]*:.*$$/ .note.ABI-tag : { *(.note.ABI-tag) } &/' \ - $(LDSEDCMD-$(@F:lib%.so=%).so) > $@.lds -rm -f $@.new -$(build-shlib-helper) -o $@ -T $@.lds \ + -e 's/^.*\*(\.dynbss).*$$/& \ + PROVIDE(__start___libc_freeres_ptrs = .); \ + *(__libc_freeres_ptrs) \ + PROVIDE(__stop___libc_freeres_ptrs = .);/' + mv -f $@T $@ +common-generated += shlib.lds + +define build-shlib +$(build-shlib-helper) -o $@ -T $(common-objpfx)shlib.lds \ $(csu-objpfx)abi-note.o $(build-shlib-objlist) -rm -f $@.lds endef else ifneq (,$(findstring aix,$(config-os))) @@ -547,6 +521,7 @@ else define build-module-helper $(LINK.o) -shared $(static-libgcc) $(sysdep-LDFLAGS) $(config-LDFLAGS) \ + $(if $($(@F)-no-z-defs)$(no-z-defs),,-Wl,-z,defs) \ -B$(csu-objpfx) $(load-map-file) \ $(LDFLAGS.so) $(LDFLAGS-$(@F:%.so=%).so) \ -L$(subst :, -L,$(rpath-link)) -Wl,-rpath-link=$(rpath-link) @@ -559,16 +534,8 @@ # binutils only position loadable notes into the first page for binaries, # not for shared objects define build-module -$(build-module-helper) \ - -o $@.new $(csu-objpfx)abi-note.o -Wl,--verbose \ - $(LDLIBS-$(@F:lib%.so=%).so) 2>&1 | \ - sed -e '/^=========/,/^=========/!d;/^=========/d' \ - -e 's/^.*\.hash[ ]*:.*$$/ .note.ABI-tag : { *(.note.ABI-tag) } &/' \ - > $@.lds -rm -f $@.new -$(build-module-helper) -o $@ -T $@.lds \ +$(build-module-helper) -o $@ -T $(common-objpfx)shlib.lds \ $(csu-objpfx)abi-note.o $(build-module-objlist) -rm -f $@.lds endef else ifneq (,$(findstring aix,$(config-os))) @@ -590,7 +557,7 @@ build-module-helper-objlist = \ $(patsubst %_pic.a,$(whole-archive) %_pic.a $(no-whole-archive),\ - $(filter-out $(map-file) $(+preinit) $(+postinit),$^)) + $(filter-out %.lds $(map-file) $(+preinit) $(+postinit),$^)) whole-archive := -Wl,--whole-archive build-module-objlist = $(build-module-helper-objlist) $(LDLIBS-$(@F:%.so=%).so) @@ -605,8 +572,6 @@ LDLIBS-c.so += $(gnulib) # Give libc.so an entry point and make it directly runnable itself. LDFLAGS-c.so += -e __libc_main -# Force the backward compatibility EH functions to be linked. -LDFLAGS-c.so += -u __register_frame # Pre-link the objects of libc_pic.a so that we can locally resolve # COMMON symbols before we link against ld.so. This is because ld.so # contains some of libc_pic.a already, which will prevent the COMMONs @@ -616,12 +581,12 @@ $(common-objpfx)libc_pic.os: $(common-objpfx)libc_pic.a $(LINK.o) -nostdlib -nostartfiles -r -o $@ \ $(LDFLAGS-c_pic.os) -Wl,-d -Wl,--whole-archive $^ -LDSEDCMD-c.so = -e 's/^.*\*(\.dynbss).*$$/& __start___libc_freeres_ptrs = .; *(__libc_freeres_ptrs) __stop___libc_freeres_ptrs = .;/' # Use our own special initializer and finalizer files for libc.so. $(common-objpfx)libc.so: $(elfobjdir)/soinit.os \ $(common-objpfx)libc_pic.os \ $(elfobjdir)/sofini.os \ - $(elfobjdir)/interp.os $(elfobjdir)/ld.so + $(elfobjdir)/interp.os $(elfobjdir)/ld.so \ + $(common-objpfx)shlib.lds $(build-shlib) ifeq ($(versioning),yes) $(common-objpfx)libc.so: $(common-objpfx)libc.map @@ -689,6 +654,15 @@ +depfiles := $(addprefix $(objpfx),\ $(filter-out $(addsuffix .d,$(omit-deps)),\ $(+depfiles))) +all-dt-files := $(foreach o,$(object-suffixes-for-libc),$(+depfiles:.d=$o.dt)) ++depfiles := $(patsubst %.dt,%.d,$(wildcard $(all-dt-files))) \ + $(wildcard $(all-dt-files:.dt=.d)) + +# This is a funny rule in that it removes its input file. +%.d: %.dt + @sed $(sed-remove-objpfx) $< > $(@:.d=.T) && \ + mv -f $(@:.d=.T) $@ && \ + rm -f $< # Avoid the .h.d files for any .sym files whose .h files don't exist yet. # They will be generated when they're needed, and trying too early won't work. @@ -762,6 +736,7 @@ $(objpfx)stamp$o: $(o-objects); $$(do-stamp) endef define do-stamp +$(make-target-directory) echo '$(patsubst $(objpfx)%,$(addsuffix /,$(subdir))%,$^)' > $@T mv -f $@T $@ endef @@ -1188,15 +1163,23 @@ LC_ALL=C \ $(AWK) -f $< -v 'config=$(check-abi-config)' \ $(filter %.abilist,$^) \ - | diff -pu0 - $(filter %.symlist,$^) + | { diff -pu0 - $(filter %.symlist,$^) $(check-abi-warn) ; } endef +ifeq ($(enable-check-abi),warn) +check-abi-warn = || echo '*** WARNING: $*.so failed ABI check' +endif ifeq ($(firstword $(sysd-sorted-done) f)$(firstword $(generating) f),tf) -include $(common-objpfx)tls.make -config-tls-yes := tls -config-tls-no := notls +config-tls := notls +ifeq ($(use-tls),yes) +config-tls := tls +endif +ifeq ($(use-thread),yes) +config-tls := thread +endif check-abi-config := \ - $(config-machine)-$(config-vendor)-$(config-os)/$(config-tls-$(use-thread)) + $(config-machine)-$(config-vendor)-$(config-os)/$(config-tls) endif update-abi-%: $(..)scripts/merge-abilist.awk $(..)abilist/%.abilist \ @@ -1211,7 +1194,7 @@ endef else define update-abi -LC_ALL=C $(AWK) -v config=$(update-abi-config) -f $^ \ +LC_ALL=C $(AWK) -v config='$(update-abi-config)' -f $^ \ > $(..)abilist/$*.abilist.new @if cmp -s $(..)abilist/$*.abilist.new $(..)abilist/$*.abilist 2> /dev/null; \ then rm -f $(..)abilist/$*.abilist.new; \ @@ -1233,19 +1216,23 @@ update-abi: subdir_update-abi endif -# Enable this when all the .abilist files are in place. -#tests: check-abi - ifeq ($(subdir),elf) check-abi: check-abi-libc update-abi: update-abi-libc common-generated += libc.symlist endif +ifeq ($(build-shared),yes) +ifneq ($(enable-check-abi),no) +ifdef subdir +tests: check-abi +endif +endif +endif + endif # There's no good place to put this - here will do. -# The dependencies are wrong if it's run from the top level. ifeq ($(filter %posix, $(sysdirs)),) L_tmpnam = 1 TMP_MAX = 0 @@ -1263,24 +1250,20 @@ $(stdio_lim:h=st): $(..)stdio-common/stdio_lim.h.in $(..)Rules \ $(common-objpfx)config.make $(make-target-directory) - echo '#include "$(..)posix/bits/posix1_lim.h"' | \ - SUNPRO_DEPENDENCIES='$(@:st=dT) $@' \ - $(CC) $(+includes) -E -dM -xc - -o $(@:st=hT) - echo '#include "$(..)misc/sys/uio.h"' | \ - SUNPRO_DEPENDENCIES='$(@:st=dT) $@' \ - $(CC) -D_LIBC=1 $(+includes) -E -dM -xc - | cat - >> $(@:st=hT) -ifdef sed-remove-objpfx - sed $(sed-remove-objpfx) $(@:st=dT) > $(@:st=dt) - cat $(@:st=dt) >> $(@:st=d) -else - cat $(@:st=dT) >> $(@:st=d) -endif + { echo '#include "$(..)posix/bits/posix1_lim.h"'; \ + echo '#define _LIBC 1'; \ + echo '#include "$(..)misc/sys/uio.h"'; } | \ + $(CC) -E -dM -MD -MP -MF $(@:st=dT) -MT '$(@:st=h) $(@:st=d)' \ + $(+includes) -xc - -o $(@:st=hT) + sed $(sed-remove-objpfx) $(sed-remove-dotdot) \ + $(@:st=dT) > $(@:st=dt) + mv -f $(@:st=dt) $(@:st=d) fopen_max=`sed -n 's/^#define OPEN_MAX //1p' $(@:st=hT)`; \ filename_max=`sed -n 's/^#define PATH_MAX //1p' $(@:st=hT)`; \ iov_max=`sed -n 's/^#define UIO_MAXIOV //p' $(@:st=hT)`; \ fopen_max=$${fopen_max:-16}; \ filename_max=$${filename_max:-1024}; \ - if [ -z $$iov_max ]; then \ + if [ -z "$$iov_max" ]; then \ define_iov_max="# undef IOV_MAX"; \ else \ define_iov_max="# define IOV_MAX $$iov_max"; \ @@ -1355,8 +1338,8 @@ # Also remove the dependencies and generated source files. common-clean: common-mostlyclean - -rm -f $(addprefix $(objpfx),$(generated)) $(+depfiles) - -rm -f $(objpfx)rtld-*.d + -rm -f $(addprefix $(objpfx),$(generated)) + -rm -f $(objpfx)*.d $(objpfx)*.dt -rm -fr $(addprefix $(objpfx),$(generated-dirs)) -rm -f $(addprefix $(common-objpfx),$(common-generated)) -rm -f $(objpfx)distinfo @@ -1370,17 +1353,23 @@ .PHONY: stubs # The parent Makefile calls this target. stubs: $(objpfx)stubs endif -s = $(sysdep_dir)/generic $(objpfx)stubs: $(+depfiles) +ifneq (,$(strip $(+depfiles))) # Use /dev/null since `...` might expand to empty. - (s=`cd $s && $(PWD_P)`; \ - $(patsubst %/,cd % &&,$(objpfx)) \ - sed -n 's/^stub_warning *(\([^)]*\).*$$/#define __stub_\1/p' \ - `sed -n -e '\@ $s/[^ ]*\.c@{; s@^.* $s/\([^ ]*\.c\).*$$@'"$$s"'/\1@; h; }' \ - -e '/stub-tag\.h/{; g; p; }' \ - $(patsubst $(objpfx)%,%,$^) /dev/null` \ - /dev/null) > $@T + c=`($(patsubst %/,cd % &&,$(objpfx)) \ + sed -n -e 's@\$$(common-objpfx)@$(common-objpfx)@g' \ + -e 's@\$$(objpfx)@$(objpfx)@g' \ + -e '/stub-tag\.h/{; g; s/./&/p; }' \ + -e '/:/{x; s/^.*$$//; x; }' \ + -e 's/^.*://;s/\\$$//;s/^ *\([^ ][^ ]*\) .*$$/\1/' \ + -e '/^[^ ][^ ]*$$/{G;s/^.*\n\(..*\)/\1/;s/\n//;h; }' \ + $(patsubst $(objpfx)%,%,$^)) | sort | uniq`; \ + sed -n 's/^stub_warning *(\([^)]*\).*$$/#define __stub_\1/p' \ + $$c /dev/null > $@T mv -f $@T $@ +else + > $@ +endif # Make the distribution tar file. --- glibc-2.3.2/NEWS 2003-01-13 04:26:13.000000000 -0500 +++ glibc-2.3.2/NEWS 2003-04-24 20:05:56.000000000 -0400 @@ -1,10 +1,24 @@ -GNU C Library NEWS -- history of user-visible changes. 2003-1-12 -Copyright (C) 1992-2002, 2003 Free Software Foundation, Inc. +GNU C Library NEWS -- history of user-visible changes. 2003-4-24 +Copyright (C) 1992-2002,2003 Free Software Foundation, Inc. See the end for copying conditions. Please send GNU C library bug reports using the `glibcbug' script to . Please send questions and suggestions to . +Version 2.3.3 + +* New functions `dladdr1' and `dlinfo' in provide more ways to + interrogate the dynamic linker, compatible with the Solaris interface. + +* ELF thread-local storage support (TLS) now works on PowerPC and PowerPC64; + implemented by Paul Mackerras, Steven Munroe, and Roland McGrath. + +* getifaddrs new uses on Linux the netlink interface to get the information. + Implemented by Thorsten Kukuk. + +* getaddrinfo now implements AI_V4MAPPED, AI_ALL, and AI_ADDRCONF. + Implemented by Ulrich Drepper. + Version 2.3.2 * Thread-safe interfaces for many functions that access locale data --- glibc-2.3.2/README-alpha 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/README-alpha 2002-11-16 08:53:55.000000000 -0500 @@ -0,0 +1,287 @@ + GNU libc SNAPSHOT SYSTEM + (general info) + Updated 1997-9-26 + +WHAT ARE GNU libc SNAPSHOTS +--------------------------- + +Snapshots are an "image" of the main glibc development tree, captured at a +particular random instant in time. When you use the snapshots, you should be +able to maintain a local copy of libc that is no more than one day older than +the official source tree used by the libc maintainers. + +The primary purpose of providing snapshots is to widen the group of motivated +developers that would like to help test, debug, and enhance glibc, by providing +you with access to the "latest and greatest" source. This has several +advantages, and several disadvantages. + + First the advantages: + + o Once we have a large base of motivated testers using the snapshots, + this should provide good coverage across all currently supported + glibc hosts and targets. If a new bug is introduced in glibc due to + fixing another bug or ongoing development, it should become + obvious much more quickly and get fixed before the next general + net release. This should help to reduce the chances of glibc being + released to the general public with a major bug that went unnoticed + during the release cycle testing because they are machine dependent. + We hope to greatly improve glibc's stability and reliability by + involving more people and more execution environments in the + prerelease testing. + + o With access to the latest source, any diffs that you send to fix + bugs or add new features should be much easier for the glibc team + to merge into the official source base (after suitable review + of course). This encourages us to merge your changes quicker, + while they are still "fresh". + + o Once your diffs are merged, you can obtain a new copy of glibc + containing your changes almost immediately. Thus you do not + have to maintain local copies of your changes for any longer + than it takes to get them merged into the official source base. + This encourages you to send in changes quicker. + + And the disadvantages: + + o The snapshot you get will be largely untested and of unknown quality. + It may fail to configure or compile. It may have serious bugs. + You should always keep a copy of the last known working version + before updating to the current snapshot, or at least be able to + regenerate a working version if the latest snapshot is unusable + in your environment for some reason. + + If a production version of glibc has a bug and a snapshot has the fix, + and you care about stability, you should put only the fix for that + particular problem into your production version. Of course, if you + are eager to test glibc, you can use the snapshot versions in your + daily work, but users who have not been consulted about whether they + feel like testing glibc should generally have something which is at + least as bug free as the last released version. + + o Providing timely response to your questions, bug reports, and + submitted patches will require the glibc development team to allocate + time from an already thin time budget. Please try to help us make + this time as productive as possible. See the section below about + how to submit changes. + + +WHO SHOULD TRY THE SNAPSHOTS +---------------------------- + +Remember, these are snapshots not tested versions. So if you use +these versions you should be able to + + o make sure your system stays usable + + o locate and hopefully fix problems + + o to port glibc to a new target yourself + +You should not use the snapshots if + + o your system is needed in a production environment which needs + stability + + o you expect us to fix your problems since you somehow depend on them. + You must be willing to fix the problems yourself, we don't want to + see "I have problems, fix this" messages. + + +HOW TO GET THE SNAPSHOTS +------------------------ + +At the moment we provide a full snapshot weekly (every sunday), so +that users getting a snapshot for the first time, or updating after +a long period of not updating, can get the latest version in a single +operation. Along with the full snapshot, we will provide incremental +diffs on a nearly daily basis (whenever code changes). Each daily +diff will be relative to the source tree after applying all previous +daily diffs. The daily diffs are for people who have relatively low +bandwidth ftp or uucp connections. + +The files will be available via anonymous ftp from alpha.gnu.org, in +directory /gnu/libc and on linux.kernel.org in /pub/software/libs/glibc. The +directories should look something like: + + libc-970921.tar.gz + libc-970917-970922.diff.gz + libc-970922-970925.diff.gz + . + . + . + +Please note that the snapshots on alpha.gnu.org and on +linux.kernel.org are not always in sync. Patches to some files might +appear a day a diff earlier or later on alpha than on kernel. +Use always alpha or always kernel but don't mix them. + +There are sometimes additionally test releases of the add-ons available in +these directories. If a new version of an add-on is available it is normally +required for the corresponding snapshot so always pay attention for these. + +Note that we provide GNU gzip compressed files only. You can ftp gzip +from ftp.gnu.org in directory pub/gnu. + +In some cases the dates for diffs and snapshots do not match like in the +example above. The full release is for 970921 but the patch is for +970917-970922. This only means that nothing changed between 970917 and 970922 +and that you have to use this patch on top of the 970921 snapshot since the +patch is made on 970922. + +Also, as the gcc developers did with their gcc snapshot system, even though we +will make the snapshots available on a publically accessible ftp area, we ask +that recipients not widely publicise their availability. The motivation for +this request is not to hoard them, but to avoid the situation where the +general glibc user base naively attempts to use the snapshots, has trouble with +them, complains publically, and the reputation of glibc declines because of a +perception of instability or lack of quality control. + + +GLIBC TEST SUITE +---------------- + +A test suite is distributed as an integral part of the snapshots. A simple +"make check" in your build directory is sufficient to run the tests. glibc +should pass all tests and if any fails, please report it. A failure might not +originate from a bug in glibc but also from bugs in the tools, e.g. with gcc +2.7.2.x the math tests fail some of the tests because of compiler bugs. + +Note that the test suite is still in its infancy. The tests themselves only +cover a small portion of libc features, and where tests do exist for a feature +they are not exhaustive. New tests are welcome. + + +GETTING HELP, GLIBC DISCUSSIONS, etc +------------------------------------ + +People who want to help with glibc and who test out snapshots +regularly should get on the libc-alpha@sourceware.cygnus.com mailing +list by sending an email to libc-alpha-subscribe@sourceware.cygnus.com. +This list is meant (as the name suggests) for the discussion of test +releases and also reports for them. People who are on this list are +welcome to post questions of general interest. + +People who are not only willing to test the snapshots but instead +really want to help developing glibc should contact +libc-hacker-subscribe@sourceware.cygnus.com.org to be put on the developers +mailing list. This list is really only meant for developers. No +questions about installation problems or other simple topics are +wanted nor will they be answered. + +Do *not* send any questions about the snapshots or patches specific to the +snapshots to bug-glibc@gnu.org. Nobody there will have any idea what +you are talking about and it will just cause confusion. + + +BUG REPORTS +----------- + +Send bug reports directly to Ulrich Drepper . Please +do *not* use the glibcbug script for reporting bugs in the snapshots. +glibcbug should only be used for problems with the official released versions. +We don't like bug reports in the bug database because otherwise the impression +of instability or lack of quality control of glibc as a whole might manifest +in people's mind. + +Note that since no testing is done on the snapshots, and snapshots may even be +made when glibc is in an inconsistent state, it may not be unusual for an +occasional snapshot to have a very obvious bug, such as failure to compile on +*any* machine. It is likely that such bugs will be fixed by the next +snapshot, so it really isn't necessary to report them unless they persist for +a couple of days. + +Missing files should always be reported, since they usually mean there is a +problem with the snapshot-generating process and we won't know about them +unless someone tells us. + +Bugs which are non-obvious, such as failure to compile on only a specific +machine, a new machine dependent or obscure bug (particularly one not detected +by the testsuite), etc should be reported when you discover them, or have a +suggested patch to fix them. + + +FORMAT FOR PATCHES +------------------ + +If you have a fix for a bug, or an enhancement to submit, send your patch to +Ulrich Drepper . Here are some simple guidelines for +submitting patches: + + o Use "unified diffs" for patches. A typical command for generating + context diffs is "diff -ru glibc-old glibc-patched". + + o Use the "minimalist approach" for patches. That is, each patch + should address only one particular bug, new feature, etc. Do not + save up many unrelated changes and submit them all in one big + patch, since in general, the larger the patch the more difficult + it is for us to decide if the patch is either correct or + desirable. And if we find something about the patch that needs + to be corrected before it can be installed, we would have to reject + the entire patch, which might contain changes which otherwise would + be accepted if submitted separately. + + o Submit a sample ChangeLog entry with your patch. See the existing + glibc ChangeLog for examples of what a ChangeLog entry should look + like. The emacs command ^X4A will create a ChangeLog entry header + for you. + + +BUILDING SNAPSHOTS +------------------ + +The `best' way to build glibc is to use an extra directory, e.g.: +tar xzf libc-970921.tar.gz +mkdir build-glibc +cd build-glibc +../libc-970921/configure ... + +In this way you can easily clean up (since `make clean' doesn't work at +the moment) and rebuild glibc. + + +NECESSARY TOOLS +--------------- + +For the recommended versions of gcc, binutils, make, texinfo, gettext, +autoconf and other tools which might be especially needed when using patches, +please read the file INSTALL. + + +HOW CAN YOU HELP +---------------- + +It helps already a lot if you just install glibc on your system and try to +solve any problems. You might want to look at the file `PROJECTS' and help +with one of those projects, fix some bugs (see `BUGS' or the bug database), +port to an unsupported platform, ... + + +FURTHER DOCUMENTATION +--------------------- + +A lot of questions are answered in the FAQ. The files `INSTALL', `README' and +`NOTES' contain the most important documentation. Furthermore glibc has its +own 700+ pages info documentation, ... + + + +And finally a word of caution: The libc is one of the most fundamental parts +of your system - and these snapshots are untested and come without any +guarantee or warranty. You might be lucky and everything works or you might +crash your system. If you install a glibc snapshot as primary library, you +should have a backup somewhere. + +On many systems it is also a problem to replace the libc while the system is +running. In the worst case on broken OSes some systems crash. On better +systems you can move the old libc aside but removing it will cause problems +since there are still processes using this libc image and so you might have to +check the filesystem to get rid of the libc data. One good alternative (which +is also safer) is to use a chroot'ed environment. + +Thanks for your help and support. + +Thanks to Fred Fish from Cygnus for the original version of this text +(for GDB). + + +Ulrich Drepper --- glibc-2.3.2/README.template 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/README.template 2002-11-16 08:53:56.000000000 -0500 @@ -0,0 +1,87 @@ +This directory contains the version VERSION release of the GNU C Library. +Many bugs have been fixed since the last release. +Some bugs surely remain. + +As of this release, the GNU C library is known to run on the following +configurations: + + *-*-gnu GNU Hurd + i[3456]86-*-linux-gnu Linux-2.x on Intel + m68k-*-linux-gnu Linux-2.x on Motorola 680x0 + alpha*-*-linux-gnu Linux-2.x on DEC Alpha + powerpc-*-linux-gnu Linux and MkLinux on PowerPC systems + powerpc64-*-linux-gnu Linux-2.4.19+ on 64-bit PowerPC systems + sparc-*-linux-gnu Linux-2.x on SPARC + sparc64-*-linux-gnu Linux-2.x on UltraSPARC 64-bit + arm-*-none ARM standalone systems + arm-*-linux Linux-2.x on ARM + arm-*-linuxaout Linux-2.x on ARM using a.out binaries + mips*-*-linux-gnu Linux-2.x on MIPS + ia64-*-linux-gnu Linux-2.x on ia64 + s390-*-linux-gnu Linux-2.x on IBM S/390 + s390x-*-linux-gnu Linux-2.4+ on IBM S/390 64-bit + sh-*-linux-gnu Linux-2.x on Super Hitachi + cris-*-linux-gnu Linux-2.4+ on CRIS + x86-64-*-linux-gnu Linux-2.4+ on x86-64 + +Former releases of this library (version 1.09.1 and perhaps earlier +versions) used to run on the following configurations: + + alpha-dec-osf1 + i[3456]86-*-bsd4.3 + i[3456]86-*-isc2.2 + i[3456]86-*-isc3 + i[3456]86-*-sco3.2 + i[3456]86-*-sco3.2v4 + i[3456]86-*-sysv + i[3456]86-*-sysv4 + i[3456]86-force_cpu386-none + i[3456]86-sequent-bsd + i960-nindy960-none + m68k-hp-bsd4.3 + m68k-mvme135-none + m68k-mvme136-none + m68k-sony-newsos3 + m68k-sony-newsos4 + m68k-sun-sunos4 + mips-dec-ultrix4 + mips-sgi-irix4 + sparc-sun-solaris2 + sparc-sun-sunos4 + +Since no one has volunteered to test and fix the above configurations, +these are not supported at the moment. It's expected that these don't +work anymore. Porting the library is not hard. If you are interested +in doing a port, please contact the glibc maintainers by sending +electronic mail to . + +There are some add-ons which can be used together with GNU libc. They +are designed in a way to ease the installation by integrating them in +the libc source tree. Simply get the add-ons you need and use the +--enable-add-ons option of the `configure' script to tell where the +add-ons are found. Please read the FAQ file for more details. + +See the file INSTALL to find out how to configure, build, install, and port +the GNU C library. You might also consider reading the WWW pages for the +GNU libc at http://www.gnu.org/software/libc/libc.html. + +The GNU C Library is completely documented by the Texinfo manual found +in the `manual/' subdirectory. The manual is still being updated and +contains some known errors and omissions; we regret that we do not +have the resources to work on the manual as much as we would like. +Please send comments on the manual to , and +not to the library bug-reporting address. + +The file NOTES contains a description of the feature-test macros used +in the GNU C library, explaining how you can tell the library what +facilities you want it to make available. + +We prefer to get bug reports sent using the `glibcbug' shell script which +is installed together with the rest of the GNU libc to . +Simply run this shell script and fill in the information. Nevertheless +you can still send bug reports to as normal electronic +mails. + +The GNU C Library is free software. See the file COPYING.LIB for copying +conditions, and LICENSES for notices about a few contributions that require +these additional notices to be distributed. --- glibc-2.3.2/Versions.def 2002-12-10 14:05:17.000000000 -0500 +++ glibc-2.3.2/Versions.def 2003-04-12 11:39:41.000000000 -0400 @@ -18,6 +18,7 @@ GLIBC_2.3 GLIBC_2.3.1 GLIBC_2.3.2 + GLIBC_2.3.3 %ifdef USE_IN_LIBIO HURD_CTHREADS_0.3 %endif @@ -32,6 +33,7 @@ libdl { GLIBC_2.0 GLIBC_2.1 + GLIBC_2.3.3 } libm { GLIBC_2.0 @@ -71,6 +73,7 @@ GLIBC_2.2.3 GLIBC_2.2.6 GLIBC_2.3.2 + GLIBC_2.3.3 GLIBC_PRIVATE } libresolv { @@ -82,6 +85,7 @@ GLIBC_2.1 GLIBC_2.2 GLIBC_2.3 + GLIBC_2.3.3 } libutil { GLIBC_2.0 @@ -96,6 +100,7 @@ GLIBC_2.1.3 GLIBC_2.2.3 GLIBC_2.3 + GLIBC_2.3.3 } libanl { GLIBC_2.2.3 --- glibc-2.3.2/abilist/ld.abilist 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/abilist/ld.abilist 2003-04-01 23:39:52.000000000 -0500 @@ -0,0 +1,35 @@ +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls + GLIBC_2.0 A + _r_debug D 0x14 +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + __libc_memalign F + calloc F + free F + malloc F + realloc F +GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls + GLIBC_2.1 A +GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + _dl_mcount F +GLIBC_2.2.5 x86_64-.*-linux.*/tls + GLIBC_2.2.5 A +GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + _r_debug D 0x28 +GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls + GLIBC_2.2 A +GLIBC_2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls x86_64-.*-linux.*/tls + GLIBC_2.3 A +GLIBC_2.3 i.86-.*-linux.*/thread i.86-.*-linux.*/tls + ___tls_get_addr F +GLIBC_2.3 i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread x86_64-.*-linux.*/tls + __tls_get_addr F +GLIBC_2.3 s390-.*-linux.*/tls s390x-.*-linux.*/tls + __tls_get_offset F --- glibc-2.3.2/abilist/libBrokenLocale.abilist 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/abilist/libBrokenLocale.abilist 2003-04-01 23:39:52.000000000 -0500 @@ -0,0 +1,13 @@ +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls + GLIBC_2.0 A +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + __ctype_get_mb_cur_max F +GLIBC_2.2.5 x86_64-.*-linux.*/tls + GLIBC_2.2.5 A +GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + GLIBC_2.2 A +GLIBC_2.3 powerpc64-.*-linux.*/thread + GLIBC_2.3 A --- glibc-2.3.2/abilist/libanl.abilist 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/abilist/libanl.abilist 2003-04-01 23:39:52.000000000 -0500 @@ -0,0 +1,13 @@ +GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + GLIBC_2.2.3 A +GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + gai_cancel F + gai_error F + gai_suspend F + getaddrinfo_a F +GLIBC_2.2.5 x86_64-.*-linux.*/tls + GLIBC_2.2.5 A +GLIBC_2.3 powerpc64-.*-linux.*/thread + GLIBC_2.3 A --- glibc-2.3.2/abilist/libc.abilist 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/abilist/libc.abilist 2003-04-01 23:39:52.000000000 -0500 @@ -0,0 +1,2231 @@ +GCC_3.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + GCC_3.0 A + _Unwind_Find_FDE F + __deregister_frame_info_bases F + __register_frame_info_bases F + __register_frame_info_table_bases F +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls + __fpu_control D 0x2 + vm86 F +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls + GLIBC_2.0 A + _IO_stderr_ D 0x50 + _IO_stdin_ D 0x50 + _IO_stdout_ D 0x50 + __strtoq_internal F + __strtouq_internal F + _sys_errlist D 0x1ec + _sys_siglist D 0x80 + res_init F + sys_errlist D 0x1ec + sys_sigabbrev D 0x80 + sys_siglist D 0x80 +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.1.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + getaliasbyname_r F + getaliasent_r F + getgrent_r F + getgrgid_r F + getgrnam_r F + gethostbyaddr_r F + gethostbyname2_r F + gethostbyname_r F + gethostent_r F + getnetbyaddr_r F + getnetbyname_r F + getnetent_r F + getprotobyname_r F + getprotobynumber_r F + getprotoent_r F + getpwent_r F + getpwnam_r F + getpwuid_r F + getrpcbyname_r F + getrpcbynumber_r F + getrpcent_r F + getservbyname_r F + getservbyport_r F + getservent_r F + getspent_r F + getspnam_r F +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls + _sys_nerr D 0x4 + sys_nerr D 0x4 +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + _IO_do_write F + _IO_fclose F + _IO_fdopen F + _IO_file_attach F + _IO_file_close_it F + _IO_file_fopen F + _IO_file_init F + _IO_file_overflow F + _IO_file_seekoff F + _IO_file_setbuf F + _IO_file_sync F + _IO_file_underflow F + _IO_file_write F + _IO_file_xsputn F + _IO_fopen F + _IO_popen F + _IO_proc_close F + _IO_proc_open F + fclose F + fdopen F + fopen F + pclose F + popen F + pthread_attr_init F + tmpfile F +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + chown F +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + fnmatch F +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + _IO_fgetpos F + _IO_fsetpos F + fgetpos F + fopencookie F + fsetpos F + getrlimit F + localeconv F + msgctl F + semctl F + setrlimit F + shmctl F +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + re_max_failures D 0x4 +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + pthread_cond_broadcast F + pthread_cond_destroy F + pthread_cond_init F + pthread_cond_signal F + pthread_cond_wait F +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls + realpath F +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + _IO_adjust_column F + _IO_default_doallocate F + _IO_default_finish F + _IO_default_pbackfail F + _IO_default_uflow F + _IO_default_xsgetn F + _IO_default_xsputn F + _IO_doallocbuf F + _IO_feof F + _IO_ferror F + _IO_fflush F + _IO_fgets F + _IO_file_close F + _IO_file_doallocate F + _IO_file_open F + _IO_file_read F + _IO_file_seek F + _IO_file_stat F + _IO_flockfile F + _IO_flush_all F + _IO_flush_all_linebuffered F + _IO_fprintf F + _IO_fputs F + _IO_fread F + _IO_free_backup_area F + _IO_ftell F + _IO_ftrylockfile F + _IO_funlockfile F + _IO_fwrite F + _IO_getc F + _IO_getline F + _IO_gets F + _IO_init F + _IO_init_marker F + _IO_link_in F + _IO_marker_delta F + _IO_marker_difference F + _IO_padn F + _IO_peekc_locked F + _IO_printf F + _IO_putc F + _IO_puts F + _IO_remove_marker F + _IO_seekmark F + _IO_seekoff F + _IO_seekpos F + _IO_setb F + _IO_setbuffer F + _IO_setvbuf F + _IO_sgetn F + _IO_sprintf F + _IO_sputbackc F + _IO_sscanf F + _IO_str_init_readonly F + _IO_str_init_static F + _IO_str_overflow F + _IO_str_pbackfail F + _IO_str_seekoff F + _IO_str_underflow F + _IO_sungetc F + _IO_switch_to_get_mode F + _IO_un_link F + _IO_ungetc F + _IO_unsave_markers F + _IO_vfprintf F + _IO_vfscanf F + _IO_vsprintf F + __adjtimex F + __argz_count F + __argz_next F + __argz_stringify F + __assert_fail F + __assert_perror_fail F + __bsd_getpgrp F + __check_rhosts_file D 0x4 + __close F + __cmsg_nxthdr F + __connect F + __ctype_get_mb_cur_max F + __daylight D 0x4 + __dcgettext F + __default_morecore F + __dgettext F + __dup2 F + __errno_location F + __fcntl F + __ffs F + __finite F + __finitef F + __finitel F + __fxstat F + __getdelim F + __getpagesize F + __getpgid F + __getpid F + __gettimeofday F + __gmtime_r F + __h_errno_location F + __isinf F + __isinff F + __isinfl F + __isnan F + __isnanf F + __isnanl F + __iswctype F + __ivaliduser F + __libc_calloc F + __libc_free F + __libc_init_first F + __libc_mallinfo F + __libc_malloc F + __libc_mallopt F + __libc_memalign F + __libc_pvalloc F + __libc_realloc F + __libc_start_main F + __libc_valloc F + __lseek F + __lxstat F + __mbrlen F + __mbrtowc F + __mempcpy F + __monstartup F + __nss_configure_lookup F + __nss_database_lookup F + __nss_group_lookup F + __nss_hosts_lookup F + __nss_next F + __nss_passwd_lookup F + __open F + __overflow F + __pipe F + __printf_fp F + __profile_frequency F + __read F + __res_randomid F + __sbrk F + __sched_get_priority_max F + __sched_get_priority_min F + __sched_getparam F + __sched_getscheduler F + __sched_setscheduler F + __sched_yield F + __secure_getenv F + __select F + __send F + __setpgid F + __sigaction F + __sigaddset F + __sigdelset F + __sigismember F + __sigpause F + __sigsetjmp F + __stpcpy F + __stpncpy F + __strcasecmp F + __strdup F + __strerror_r F + __strtod_internal F + __strtof_internal F + __strtok_r F + __strtol_internal F + __strtold_internal F + __strtoll_internal F + __strtoul_internal F + __strtoull_internal F + __sysv_signal F + __uflow F + __underflow F + __vfscanf F + __vsnprintf F + __vsscanf F + __wait F + __waitpid F + __wcstod_internal F + __wcstof_internal F + __wcstol_internal F + __wcstold_internal F + __wcstoll_internal F + __wcstoul_internal F + __wcstoull_internal F + __write F + __xmknod F + __xpg_basename F + __xstat F + _exit F + _libc_intl_domainname D 0x5 + _longjmp F + _mcleanup F + _mcount F + _nl_msg_cat_cntr D 0x4 + _obstack_allocated_p F + _obstack_begin F + _obstack_begin_1 F + _obstack_free F + _obstack_memory_used F + _obstack_newchunk F + _rpc_dtablesize F + _seterr_reply F + _setjmp F + _tolower F + _toupper F + a64l F + abort F + abs F + accept F + access F + acct F + addmntent F + adjtime F + adjtimex F + advance F + alarm F + alphasort F + argz_add F + argz_add_sep F + argz_append F + argz_count F + argz_create F + argz_create_sep F + argz_delete F + argz_extract F + argz_insert F + argz_next F + argz_replace F + argz_stringify F + asctime F + asctime_r F + asprintf F + atof F + atoi F + atol F + atoll F + authnone_create F + authunix_create F + authunix_create_default F + basename F + bcmp F + bcopy F + bdflush F + bind F + bindresvport F + bindtextdomain F + brk F + bsd_signal F + bsearch F + btowc F + bzero F + calloc F + callrpc F + canonicalize_file_name F + catclose F + catgets F + catopen F + cfgetispeed F + cfgetospeed F + cfmakeraw F + cfree F + cfsetispeed F + cfsetospeed F + cfsetspeed F + chdir F + chflags F + chmod F + chroot F + clearenv F + clearerr F + clearerr_unlocked F + clnt_broadcast F + clnt_create F + clnt_pcreateerror F + clnt_perrno F + clnt_perror F + clnt_spcreateerror F + clnt_sperrno F + clnt_sperror F + clntraw_create F + clnttcp_create F + clntudp_bufcreate F + clntudp_create F + clock F + close F + closedir F + closelog F + confstr F + connect F + copysign F + copysignf F + copysignl F + creat F + create_module F + ctermid F + ctime F + ctime_r F + cuserid F + daemon F + daylight D 0x4 + dcgettext F + delete_module F + dgettext F + difftime F + dirfd F + dirname F + div F + dprintf F + drand48 F + drand48_r F + dup F + dup2 F + dysize F + ecvt F + ecvt_r F + endaliasent F + endfsent F + endgrent F + endhostent F + endmntent F + endnetent F + endnetgrent F + endprotoent F + endpwent F + endrpcent F + endservent F + endspent F + endttyent F + endusershell F + endutent F + envz_add F + envz_entry F + envz_get F + envz_merge F + envz_remove F + envz_strip F + erand48 F + erand48_r F + err F + error F + error_at_line F + error_message_count D 0x4 + error_one_per_line D 0x4 + errx F + ether_aton F + ether_aton_r F + ether_hostton F + ether_line F + ether_ntoa F + ether_ntoa_r F + ether_ntohost F + euidaccess F + execl F + execle F + execlp F + execv F + execve F + execvp F + exit F + fchdir F + fchflags F + fchmod F + fchown F + fcloseall F + fcntl F + fcvt F + fcvt_r F + fdatasync F + feof F + feof_unlocked F + ferror F + ferror_unlocked F + fexecve F + fflush F + fflush_unlocked F + ffs F + fgetc F + fgetgrent F + fgetgrent_r F + fgetpwent F + fgetpwent_r F + fgets F + fgetspent F + fgetspent_r F + fileno F + fileno_unlocked F + finite F + finitef F + finitel F + flock F + flockfile F + fork F + fpathconf F + fprintf F + fputc F + fputc_unlocked F + fputs F + fread F + free F + freeaddrinfo F + freopen F + frexp F + frexpf F + frexpl F + fscanf F + fseek F + fstatfs F + fsync F + ftell F + ftime F + ftok F + ftruncate F + ftrylockfile F + fts_children F + fts_close F + fts_open F + fts_read F + fts_set F + ftw F + funlockfile F + fwrite F + gcvt F + get_avphys_pages F + get_current_dir_name F + get_kernel_syms F + get_myaddress F + get_nprocs F + get_nprocs_conf F + get_phys_pages F + getaddrinfo F + getaliasbyname F + getaliasent F + getc F + getc_unlocked F + getchar F + getchar_unlocked F + getcwd F + getdelim F + getdirentries F + getdomainname F + getdtablesize F + getegid F + getenv F + geteuid F + getfsent F + getfsfile F + getfsspec F + getgid F + getgrent F + getgrgid F + getgrnam F + getgroups F + gethostbyaddr F + gethostbyname F + gethostbyname2 F + gethostent F + gethostid F + gethostname F + getitimer F + getline F + getlogin F + getlogin_r F + getmntent F + getmntent_r F + getnetbyaddr F + getnetbyname F + getnetent F + getnetgrent F + getnetgrent_r F + getopt F + getopt_long F + getopt_long_only F + getpagesize F + getpass F + getpeername F + getpgid F + getpgrp F + getpid F + getppid F + getpriority F + getprotobyname F + getprotobynumber F + getprotoent F + getpublickey F + getpw F + getpwent F + getpwnam F + getpwuid F + getresgid F + getresuid F + getrpcbyname F + getrpcbynumber F + getrpcent F + getrpcport F + getrusage F + gets F + getsecretkey F + getservbyname F + getservbyport F + getservent F + getsid F + getsockname F + getsockopt F + getspent F + getspnam F + getsubopt F + gettext F + gettimeofday F + getttyent F + getttynam F + getuid F + getusershell F + getutent F + getutent_r F + getutid F + getutid_r F + getutline F + getutline_r F + getw F + getwd F + glob F + glob_pattern_p F + globfree F + gmtime F + gmtime_r F + group_member F + gsignal F + gtty F + h_nerr D 0x4 + hasmntopt F + hcreate F + hcreate_r F + hdestroy F + hdestroy_r F + herror F + hsearch F + hsearch_r F + hstrerror F + htonl F + htons F + index F + inet_addr F + inet_aton F + inet_lnaof F + inet_makeaddr F + inet_netof F + inet_network F + inet_nsap_addr F + inet_nsap_ntoa F + inet_ntoa F + inet_ntop F + inet_pton F + init_module F + initgroups F + initstate F + initstate_r F + innetgr F + insque F + ioctl F + iruserok F + isalnum F + isalpha F + isascii F + isatty F + isblank F + iscntrl F + isdigit F + isfdtype F + isgraph F + isinf F + isinff F + isinfl F + islower F + isnan F + isnanf F + isnanl F + isprint F + ispunct F + isspace F + isupper F + iswalnum F + iswalpha F + iswcntrl F + iswctype F + iswdigit F + iswgraph F + iswlower F + iswprint F + iswpunct F + iswspace F + iswupper F + iswxdigit F + isxdigit F + jrand48 F + jrand48_r F + kill F + killpg F + klogctl F + l64a F + labs F + lchown F + lckpwdf F + lcong48 F + lcong48_r F + ldexp F + ldexpf F + ldexpl F + ldiv F + lfind F + link F + listen F + llabs F + lldiv F + llseek F + localtime F + localtime_r F + lockf F + longjmp F + lrand48 F + lrand48_r F + lsearch F + lseek F + madvise F + mallinfo F + malloc F + malloc_get_state F + malloc_set_state F + malloc_stats F + malloc_trim F + malloc_usable_size F + mallopt F + mblen F + mbrlen F + mbrtowc F + mbsinit F + mbsnrtowcs F + mbsrtowcs F + mbstowcs F + mbtowc F + mcheck F + memalign F + memccpy F + memchr F + memcmp F + memcpy F + memfrob F + memmem F + memmove F + memset F + mkdir F + mkfifo F + mkstemp F + mktemp F + mktime F + mlock F + mlockall F + mmap F + modf F + modff F + modfl F + monstartup F + mount F + mprobe F + mprotect F + mrand48 F + mrand48_r F + mremap F + msgget F + msgrcv F + msgsnd F + msync F + mtrace F + munlock F + munlockall F + munmap F + muntrace F + nanosleep F + nfsservctl F + nice F + nl_langinfo F + nrand48 F + nrand48_r F + ntohl F + ntohs F + obstack_exit_failure D 0x4 + obstack_free F + obstack_printf F + obstack_vprintf F + on_exit F + open F + open_memstream F + opendir F + openlog F + opterr D 0x4 + optind D 0x4 + optopt D 0x4 + parse_printf_format F + pathconf F + pause F + perror F + personality F + pipe F + pmap_getmaps F + pmap_getport F + pmap_rmtcall F + pmap_set F + pmap_unset F + poll F + prctl F + printf F + profil F + pselect F + psignal F + pthread_attr_destroy F + pthread_attr_getdetachstate F + pthread_attr_getinheritsched F + pthread_attr_getschedparam F + pthread_attr_getschedpolicy F + pthread_attr_getscope F + pthread_attr_setdetachstate F + pthread_attr_setinheritsched F + pthread_attr_setschedparam F + pthread_attr_setschedpolicy F + pthread_attr_setscope F + pthread_condattr_destroy F + pthread_condattr_init F + pthread_equal F + pthread_exit F + pthread_getschedparam F + pthread_mutex_destroy F + pthread_mutex_init F + pthread_mutex_lock F + pthread_mutex_unlock F + pthread_self F + pthread_setcancelstate F + pthread_setcanceltype F + pthread_setschedparam F + ptrace F + putc F + putc_unlocked F + putchar F + putchar_unlocked F + putenv F + putpwent F + puts F + putspent F + pututline F + putw F + pvalloc F + qecvt F + qecvt_r F + qfcvt F + qfcvt_r F + qgcvt F + qsort F + query_module F + quotactl F + raise F + rand F + rand_r F + random F + random_r F + rcmd F + re_comp F + re_compile_fastmap F + re_compile_pattern F + re_exec F + re_match F + re_match_2 F + re_search F + re_search_2 F + re_set_registers F + re_set_syntax F + read F + readdir F + readdir_r F + readlink F + readv F + realloc F + reboot F + recv F + recvfrom F + recvmsg F + regcomp F + regerror F + regexec F + regfree F + register_printf_function F + registerrpc F + remove F + remque F + rename F + revoke F + rewind F + rewinddir F + rexec F + rexecoptions D 0x4 + rindex F + rmdir F + rpmatch F + rresvport F + ruserok F + ruserpass F + sbrk F + scalbn F + scalbnf F + scalbnl F + scandir F + scanf F + sched_get_priority_max F + sched_get_priority_min F + sched_getparam F + sched_getscheduler F + sched_rr_get_interval F + sched_setparam F + sched_setscheduler F + sched_yield F + seed48 F + seed48_r F + seekdir F + select F + semget F + semop F + send F + sendmsg F + sendto F + setaliasent F + setbuf F + setbuffer F + setcontext F + setdomainname F + setegid F + setenv F + seteuid F + setfsent F + setfsgid F + setfsuid F + setgid F + setgrent F + setgroups F + sethostent F + sethostid F + sethostname F + setitimer F + setjmp F + setlinebuf F + setlocale F + setlogin F + setlogmask F + setmntent F + setnetent F + setnetgrent F + setpgid F + setpgrp F + setpriority F + setprotoent F + setpwent F + setregid F + setresgid F + setresuid F + setreuid F + setrpcent F + setservent F + setsid F + setsockopt F + setspent F + setstate F + setstate_r F + settimeofday F + setttyent F + setuid F + setusershell F + setutent F + setvbuf F + sgetspent F + sgetspent_r F + shmat F + shmdt F + shmget F + shutdown F + sigaction F + sigaddset F + sigaltstack F + sigandset F + sigblock F + sigdelset F + sigemptyset F + sigfillset F + siggetmask F + siginterrupt F + sigisemptyset F + sigismember F + siglongjmp F + signal F + sigorset F + sigpause F + sigpending F + sigprocmask F + sigreturn F + sigsetmask F + sigstack F + sigsuspend F + sigvec F + sigwait F + sleep F + snprintf F + socket F + socketpair F + sprintf F + srand F + srand48 F + srand48_r F + srandom F + srandom_r F + sscanf F + ssignal F + sstk F + statfs F + step F + stime F + stpcpy F + stpncpy F + strcasecmp F + strcat F + strchr F + strcmp F + strcoll F + strcpy F + strcspn F + strdup F + strerror F + strerror_r F + strfmon F + strfry F + strftime F + strlen F + strncasecmp F + strncat F + strncmp F + strncpy F + strndup F + strnlen F + strpbrk F + strptime F + strrchr F + strsep F + strsignal F + strspn F + strstr F + strtod F + strtof F + strtok F + strtok_r F + strtol F + strtold F + strtoll F + strtoq F + strtoul F + strtoull F + strtouq F + strxfrm F + stty F + svc_exit F + svc_fdset D 0x80 + svc_getreq F + svc_getreqset F + svc_register F + svc_run F + svc_sendreply F + svc_unregister F + svcerr_auth F + svcerr_decode F + svcerr_noproc F + svcerr_noprog F + svcerr_progvers F + svcerr_systemerr F + svcerr_weakauth F + svcfd_create F + svcraw_create F + svctcp_create F + svcudp_bufcreate F + svcudp_create F + svcudp_enablecache F + swab F + swapoff F + swapon F + symlink F + sync F + syscall F + sysconf F + sysctl F + sysinfo F + syslog F + system F + tcdrain F + tcflow F + tcflush F + tcgetattr F + tcgetpgrp F + tcsendbreak F + tcsetattr F + tcsetpgrp F + tdelete F + telldir F + tempnam F + textdomain F + tfind F + time F + timegm F + timelocal F + times F + tmpnam F + tmpnam_r F + toascii F + tolower F + toupper F + towctrans F + towlower F + towupper F + tr_break F + truncate F + tsearch F + ttyname F + ttyname_r F + ttyslot F + twalk F + tzset F + ualarm F + ulckpwdf F + ulimit F + umask F + umount F + uname F + ungetc F + unlink F + unsetenv F + updwtmp F + uselib F + usleep F + ustat F + utime F + utimes F + utmpname F + valloc F + vasprintf F + vdprintf F + verr F + verrx F + vfork F + vfprintf F + vfscanf F + vhangup F + vlimit F + vprintf F + vscanf F + vsnprintf F + vsprintf F + vsscanf F + vsyslog F + vtimes F + vwarn F + vwarnx F + wait F + wait3 F + wait4 F + waitpid F + warn F + warnx F + wcpcpy F + wcpncpy F + wcrtomb F + wcscat F + wcschr F + wcscmp F + wcscoll F + wcscpy F + wcscspn F + wcsdup F + wcslen F + wcsncat F + wcsncmp F + wcsncpy F + wcsnrtombs F + wcspbrk F + wcsrchr F + wcsrtombs F + wcsspn F + wcsstr F + wcstod F + wcstof F + wcstok F + wcstol F + wcstold F + wcstombs F + wcstoq F + wcstoul F + wcstouq F + wcswidth F + wcsxfrm F + wctob F + wctomb F + wctrans F + wctype F + wcwidth F + wmemchr F + wmemcmp F + wmemcpy F + wmemmove F + wmemset F + write F + writev F + xdr_accepted_reply F + xdr_array F + xdr_authunix_parms F + xdr_bool F + xdr_bytes F + xdr_callhdr F + xdr_callmsg F + xdr_char F + xdr_cryptkeyarg F + xdr_cryptkeyarg2 F + xdr_cryptkeyres F + xdr_des_block F + xdr_double F + xdr_enum F + xdr_float F + xdr_free F + xdr_int F + xdr_key_netstarg F + xdr_key_netstres F + xdr_keybuf F + xdr_keystatus F + xdr_long F + xdr_netobj F + xdr_opaque F + xdr_opaque_auth F + xdr_pmap F + xdr_pmaplist F + xdr_pointer F + xdr_reference F + xdr_rejected_reply F + xdr_replymsg F + xdr_rmtcall_args F + xdr_rmtcallres F + xdr_short F + xdr_string F + xdr_u_char F + xdr_u_int F + xdr_u_long F + xdr_u_short F + xdr_union F + xdr_vector F + xdr_void F + xdr_wrapstring F + xdrmem_create F + xdrrec_create F + xdrrec_endofrecord F + xdrrec_eof F + xdrrec_skiprecord F + xdrstdio_create F + xencrypt F + xprt_register F + xprt_unregister F +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + __fork F + _nl_default_dirname D 0x12 +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + __bzero F + __clone F + clone F +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls + __divdi3 F + __moddi3 F + __udivdi3 F + __umoddi3 F +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + atexit F +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2 s390x-.*-linux.*/tls + __deregister_frame F + __frame_state_for F + __register_frame F + __register_frame_info_table F + __register_frame_table F +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2 s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + __deregister_frame_info F + __register_frame_info F +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2 sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + _IO_file_jumps D 0x54 + _IO_list_all D 0x4 + __after_morecore_hook D 0x4 + __ctype32_b D 0x4 + __ctype_b D 0x4 + __ctype_tolower D 0x4 + __ctype_toupper D 0x4 + __curbrk D 0x4 + __environ D 0x4 + __free_hook D 0x4 + __malloc_hook D 0x4 + __malloc_initialize_hook D 0x4 + __memalign_hook D 0x4 + __morecore D 0x4 + __progname D 0x4 + __progname_full D 0x4 + __rcmd_errstr D 0x4 + __realloc_hook D 0x4 + __timezone D 0x4 + __tzname D 0x8 + _environ D 0x4 + _nl_domain_bindings D 0x4 + _null_auth D 0xc + _obstack D 0x4 + environ D 0x4 + error_print_progname D 0x4 + h_errlist D 0x14 + loc1 D 0x4 + loc2 D 0x4 + locs D 0x4 + mallwatch D 0x4 + obstack_alloc_failed_handler D 0x4 + optarg D 0x4 + program_invocation_name D 0x4 + program_invocation_short_name D 0x4 + re_syntax_options D 0x4 + rpc_createerr D 0x10 + stderr D 0x4 + stdin D 0x4 + stdout D 0x4 + svcauthdes_stats D 0xc + timezone D 0x4 + tzname D 0x8 +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls s390-.*-linux.*/tls + ___brk_addr D 0x4 +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls s390-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + mcount F +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls + ioperm F + iopl F +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls + _errno D 0x4 + _h_errno D 0x4 + errno D 0x4 + h_errno D 0x4 +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2 sh[34].*-.*-linux.*/notls + _res D 0x200 +GLIBC_2.0 m68.*-.*-linux.*/notls + _res D 0x1fe + cacheflush F +GLIBC_2.0 m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + __fpu_control D 0x4 +GLIBC_2.0 powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls + __ashldi3 F + __ashrdi3 F + __cmpdi2 F + __fixdfdi F + __fixsfdi F + __fixunsdfdi F + __fixunssfdi F + __floatdidf F + __floatdisf F + __lshrdi3 F + __ucmpdi2 F +GLIBC_2.1.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls + __memcpy_by2 F + __memcpy_by4 F + __memcpy_g F + __mempcpy_by2 F + __mempcpy_by4 F + __mempcpy_byn F + __memset_ccn_by2 F + __memset_ccn_by4 F + __memset_gcn_by2 F + __memset_gcn_by4 F + __stpcpy_g F + __strcat_c F + __strcat_g F + __strchr_c F + __strchr_g F + __strchrnul_c F + __strchrnul_g F + __strcmp_gg F + __strcpy_g F + __strcspn_cg F + __strcspn_g F + __strlen_g F + __strncat_g F + __strncmp_g F + __strncpy_by2 F + __strncpy_by4 F + __strncpy_byn F + __strncpy_gg F + __strpbrk_cg F + __strpbrk_g F + __strrchr_c F + __strrchr_g F + __strspn_cg F + __strspn_g F + __strstr_cg F + __strstr_g F +GLIBC_2.1.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls + GLIBC_2.1.1 A +GLIBC_2.1.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + _Exit F + __mempcpy_small F + __stpcpy_small F + __strcpy_small F + __strcspn_c1 F + __strcspn_c2 F + __strcspn_c3 F + __strpbrk_c2 F + __strpbrk_c3 F + __strsep_1c F + __strsep_2c F + __strsep_3c F + __strsep_g F + __strspn_c1 F + __strspn_c2 F + __strspn_c3 F + __strtok_r_1c F + __strverscmp F + getutmp F + getutmpx F + imaxabs F + imaxdiv F + strchrnul F + xdr_hyper F + xdr_int64_t F + xdr_longlong_t F + xdr_u_hyper F + xdr_u_longlong_t F + xdr_uint64_t F +GLIBC_2.1.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls + GLIBC_2.1.2 A +GLIBC_2.1.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + __vfork F +GLIBC_2.1.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls + GLIBC_2.1.3 A +GLIBC_2.1.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + __cxa_atexit F + __cxa_finalize F + __sigsuspend F +GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls + scalbln F + scalblnf F + scalblnl F +GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls + GLIBC_2.1 A +GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.2 ia64-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + wordexp F +GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + _IO_fgetpos64 F + _IO_fsetpos64 F + __fxstat64 F + __lxstat64 F + __xstat64 F + fgetpos64 F + fsetpos64 F + getrlimit64 F + readdir64 F + readdir64_r F + scandir64 F +GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + glob64 F +GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + alphasort64 F + versionsort64 F +GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + _IO_file_finish F + _IO_getline_info F + __asprintf F + __backtrace F + __backtrace_symbols F + __backtrace_symbols_fd F + __duplocale F + __freelocale F + __isalnum_l F + __isalpha_l F + __isascii_l F + __isblank_l F + __iscntrl_l F + __isdigit_l F + __isgraph_l F + __islower_l F + __isprint_l F + __ispunct_l F + __isspace_l F + __isupper_l F + __iswalnum_l F + __iswalpha_l F + __iswblank_l F + __iswcntrl_l F + __iswctype_l F + __iswdigit_l F + __iswgraph_l F + __iswlower_l F + __iswprint_l F + __iswpunct_l F + __iswspace_l F + __iswupper_l F + __iswxdigit_l F + __isxdigit_l F + __libc_allocate_rtsig F + __libc_current_sigrtmax F + __libc_current_sigrtmin F + __libc_freeres F + __libc_sa_len F + __newlocale F + __poll F + __pread64 F + __pwrite64 F + __rawmemchr F + __signbit F + __signbitf F + __strcasecmp_l F + __strcasestr F + __strcoll_l F + __strfmon_l F + __strncasecmp_l F + __strtod_l F + __strtof_l F + __strtol_l F + __strtold_l F + __strtoll_l F + __strtoul_l F + __strtoull_l F + __strxfrm_l F + __toascii_l F + __tolower_l F + __toupper_l F + __towctrans F + __towctrans_l F + __towlower_l F + __towupper_l F + __wcscasecmp_l F + __wcscoll_l F + __wcsncasecmp_l F + __wcstod_l F + __wcstof_l F + __wcstol_l F + __wcstold_l F + __wcstoll_l F + __wcstoul_l F + __wcstoull_l F + __wcsxfrm_l F + __wctype_l F + _argp_unlock_xxx F + _authenticate F + _dl_mcount_wrapper F + _dl_mcount_wrapper_check F + addseverity F + argp_err_exit_status D 0x4 + argp_error F + argp_failure F + argp_help F + argp_parse F + argp_state_help F + argp_usage F + authdes_create F + authdes_getucred F + authdes_pk_create F + backtrace F + backtrace_symbols F + backtrace_symbols_fd F + capget F + capset F + cbc_crypt F + clntunix_create F + creat64 F + des_setparity F + ecb_crypt F + endutxent F + fattach F + fdetach F + ffsl F + ffsll F + fgetc_unlocked F + fgets_unlocked F + fmtmsg F + fopen64 F + fputs_unlocked F + fread_unlocked F + freopen64 F + fseeko F + fseeko64 F + fstatfs64 F + fstatvfs F + fstatvfs64 F + ftello F + ftello64 F + ftruncate64 F + ftw64 F + fwrite_unlocked F + gai_strerror F + getcontext F + getdate F + getdate_err D 0x4 + getdate_r F + getmsg F + getnameinfo F + getnetname F + getpmsg F + getpt F + getutxent F + getutxid F + getutxline F + globfree64 F + gnu_get_libc_release F + gnu_get_libc_version F + grantpt F + host2netname F + iconv F + iconv_close F + iconv_open F + if_freenameindex F + if_indextoname F + if_nameindex F + if_nametoindex F + in6addr_any D 0x10 + in6addr_loopback D 0x10 + isastream F + iswblank F + key_decryptsession F + key_decryptsession_pk F + key_encryptsession F + key_encryptsession_pk F + key_gendes F + key_get_conv F + key_secretkey_is_set F + key_setnet F + key_setsecret F + lockf64 F + lseek64 F + makecontext F + mempcpy F + mmap64 F + netname2host F + netname2user F + nftw F + nftw64 F + ntp_adjtime F + ntp_gettime F + open64 F + passwd2des F + pread F + pread64 F + printf_size F + printf_size_info F + ptsname F + ptsname_r F + putgrent F + putmsg F + putpmsg F + pututxline F + pwrite F + pwrite64 F + rawmemchr F + rtime F + sendfile F + setrlimit64 F + setutxent F + sighold F + sigignore F + sigqueue F + sigrelse F + sigset F + sigtimedwait F + sigwaitinfo F + statfs64 F + statvfs F + statvfs64 F + strcasestr F + strtoimax F + strtoumax F + strverscmp F + svcunix_create F + svcunixfd_create F + swapcontext F + sysv_signal F + tcgetsid F + tdestroy F + tmpfile64 F + truncate64 F + umount2 F + unlockpt F + updwtmpx F + user2netname F + utmpxname F + versionsort F + waitid F + wcscasecmp F + wcsncasecmp F + wcsnlen F + wcstoimax F + wcstoll F + wcstoull F + wcstoumax F + wcswcs F + wordfree F + xdecrypt F + xdr_authdes_cred F + xdr_authdes_verf F + xdr_getcredres F + xdr_int16_t F + xdr_int32_t F + xdr_int8_t F + xdr_netnamestr F + xdr_sizeof F + xdr_uint16_t F + xdr_uint32_t F + xdr_uint8_t F + xdr_unixcred F +GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2 sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + __key_decryptsession_pk_LOCAL D 0x4 + __key_encryptsession_pk_LOCAL D 0x4 + __key_gendes_LOCAL D 0x4 + _sys_errlist D 0x1f4 + _sys_siglist D 0x100 + argp_program_bug_address D 0x4 + argp_program_version D 0x4 + argp_program_version_hook D 0x4 + sys_errlist D 0x1f4 + sys_sigabbrev D 0x100 + sys_siglist D 0x100 +GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls + __signbitl F +GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls +| GLIBC_2.2 sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + _IO_2_1_stderr_ D 0x98 + _IO_2_1_stdin_ D 0x98 + _IO_2_1_stdout_ D 0x98 +GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls + modify_ldt F +GLIBC_2.1 powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls + _IO_2_1_stderr_ D 0xa0 + _IO_2_1_stdin_ D 0xa0 + _IO_2_1_stdout_ D 0xa0 +GLIBC_2.1 s390-.*-linux.*/tls + __chown F +GLIBC_2.2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + GLIBC_2.2.1 A +GLIBC_2.2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + pivot_root F + posix_openpt F +GLIBC_2.2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + GLIBC_2.2.2 A +GLIBC_2.2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + __nss_hostname_digits_dots F +GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + GLIBC_2.2.3 A +GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + __rpc_thread_createerr F + __rpc_thread_svc_fdset F + __rpc_thread_svc_max_pollfd F + __rpc_thread_svc_pollfd F + sprofil F +GLIBC_2.2.4 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + GLIBC_2.2.4 A +GLIBC_2.2.4 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + dl_iterate_phdr F + getgrouplist F + sockatmark F +GLIBC_2.2.5 x86_64-.*-linux.*/tls + GLIBC_2.2.5 A + __arch_prctl F + arch_prctl F +GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + _IO_adjust_wcolumn F + _IO_free_wbackup_area F + _IO_init_wmarker F + _IO_iter_begin F + _IO_iter_end F + _IO_iter_file F + _IO_iter_next F + _IO_least_wmarker F + _IO_list_lock F + _IO_list_resetlock F + _IO_list_unlock F + _IO_seekwmark F + _IO_sputbackwc F + _IO_sungetwc F + _IO_switch_to_main_wget_area F + _IO_switch_to_wbackup_area F + _IO_switch_to_wget_mode F + _IO_unsave_wmarkers F + _IO_wdefault_doallocate F + _IO_wdefault_finish F + _IO_wdefault_pbackfail F + _IO_wdefault_uflow F + _IO_wdefault_xsgetn F + _IO_wdefault_xsputn F + _IO_wdo_write F + _IO_wdoallocbuf F + _IO_wfile_overflow F + _IO_wfile_seekoff F + _IO_wfile_sync F + _IO_wfile_underflow F + _IO_wfile_xsputn F + _IO_wmarker_delta F + _IO_wsetb F + __assert F + __cyg_profile_func_enter F + __cyg_profile_func_exit F + __endmntent F + __fbufsize F + __flbf F + __fpending F + __fpurge F + __freadable F + __freading F + __fsetlocking F + __fwritable F + __fwriting F + __getmntent_r F + __nl_langinfo_l F + __open64 F + __res_init F + __res_nclose F + __res_ninit F + __res_state F + __setmntent F + __statfs F + __strndup F + __sysconf F + __sysctl F + __wctrans_l F + __woverflow F + __wuflow F + __wunderflow F + __xpg_sigpause F + _flushlbf F + bind_textdomain_codeset F + dcngettext F + dngettext F + fgetwc F + fgetwc_unlocked F + fgetws F + fgetws_unlocked F + fmemopen F + fputwc F + fputwc_unlocked F + fputws F + fputws_unlocked F + fwide F + fwprintf F + fwscanf F + getdirentries64 F + getloadavg F + getwc F + getwc_unlocked F + getwchar F + getwchar_unlocked F + iruserok_af F + mcheck_check_all F + mcheck_pedantic F + memrchr F + mincore F + mkdtemp F + mkstemp64 F + moncontrol F + ngettext F + posix_fadvise F + posix_fadvise64 F + posix_fallocate F + posix_fallocate64 F + posix_madvise F + posix_memalign F + posix_spawn F + posix_spawn_file_actions_addclose F + posix_spawn_file_actions_adddup2 F + posix_spawn_file_actions_addopen F + posix_spawn_file_actions_destroy F + posix_spawn_file_actions_init F + posix_spawnattr_destroy F + posix_spawnattr_getflags F + posix_spawnattr_getpgroup F + posix_spawnattr_getschedparam F + posix_spawnattr_getschedpolicy F + posix_spawnattr_getsigdefault F + posix_spawnattr_getsigmask F + posix_spawnattr_init F + posix_spawnattr_setflags F + posix_spawnattr_setpgroup F + posix_spawnattr_setschedparam F + posix_spawnattr_setschedpolicy F + posix_spawnattr_setsigdefault F + posix_spawnattr_setsigmask F + posix_spawnp F + putwc F + putwc_unlocked F + putwchar F + putwchar_unlocked F + rcmd_af F + rexec_af F + rresvport_af F + ruserok_af F + svc_getreq_common F + svc_getreq_poll F + svc_max_pollfd D 0x4 + swprintf F + swscanf F + ungetwc F + vfwprintf F + vfwscanf F + vswprintf F + vswscanf F + vwprintf F + vwscanf F + wcschrnul F + wcsftime F + wmempcpy F + wprintf F + wscanf F +GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls + __ctype32_b D 0x8 + __ctype32_tolower D 0x8 + __ctype32_toupper D 0x8 + __ctype_b D 0x8 + __ctype_tolower D 0x8 + __ctype_toupper D 0x8 + _res D 0x238 + _sys_errlist D 0x3e8 + sys_errlist D 0x3e8 +GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + _IO_2_1_stderr_ D 0xe0 + _IO_2_1_stdin_ D 0xe0 + _IO_2_1_stdout_ D 0xe0 + _IO_file_jumps D 0xa8 + _IO_list_all D 0x8 + _IO_wfile_jumps D 0xa8 + __after_morecore_hook D 0x8 + __curbrk D 0x8 + __environ D 0x8 + __free_hook D 0x8 + __key_decryptsession_pk_LOCAL D 0x8 + __key_encryptsession_pk_LOCAL D 0x8 + __key_gendes_LOCAL D 0x8 + __malloc_hook D 0x8 + __malloc_initialize_hook D 0x8 + __memalign_hook D 0x8 + __morecore D 0x8 + __progname D 0x8 + __progname_full D 0x8 + __rcmd_errstr D 0x8 + __realloc_hook D 0x8 + __timezone D 0x8 + __tzname D 0x10 + _environ D 0x8 + _nl_domain_bindings D 0x8 + _null_auth D 0x18 + _obstack D 0x8 + _res_hconf D 0x48 + _sys_siglist D 0x200 + argp_program_bug_address D 0x8 + argp_program_version D 0x8 + argp_program_version_hook D 0x8 + environ D 0x8 + error_print_progname D 0x8 + h_errlist D 0x28 + loc1 D 0x8 + loc2 D 0x8 + locs D 0x8 + mallwatch D 0x8 + obstack_alloc_failed_handler D 0x8 + optarg D 0x8 + program_invocation_name D 0x8 + program_invocation_short_name D 0x8 + re_syntax_options D 0x8 + rpc_createerr D 0x20 + stderr D 0x8 + stdin D 0x8 + stdout D 0x8 + svc_pollfd D 0x8 + svcauthdes_stats D 0x18 + sys_sigabbrev D 0x200 + sys_siglist D 0x200 + timezone D 0x8 + tzname D 0x10 +GLIBC_2.2.6 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls + GLIBC_2.2.6 A +GLIBC_2.2.6 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + __nanosleep F +GLIBC_2.2.6 ia64-.*-linux.*/tls + getunwind F +GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + GLIBC_2.2 A +GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + __ctype32_tolower D 0x4 + __ctype32_toupper D 0x4 + _res_hconf D 0x30 + svc_pollfd D 0x4 +GLIBC_2.2 i.86-.*-linux.*/thread i.86-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls + _IO_wfile_jumps D 0x54 +GLIBC_2.2 ia64-.*-linux.*/tls + __clone2 F + __divdf3 F + __divsf3 F + __divtf3 F + __multi3 F + _inb F + _inl F + _inw F + _outb F + _outl F + _outw F + inb F + inl F + inw F + outb F + outw F + pciconfig_read F + pciconfig_write F +GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls + ___brk_addr D 0x8 +GLIBC_2.2 sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + _nl_default_dirname D 0x20 +GLIBC_2.3.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls + GLIBC_2.3.2 A + __register_atfork F + lchmod F + sched_getaffinity F + sched_setaffinity F + strptime_l F +GLIBC_2.3.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls x86_64-.*-linux.*/tls + epoll_create F + epoll_ctl F + epoll_wait F +GLIBC_2.3.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls + GLIBC_2.3.3 A + remap_file_pages F +GLIBC_2.3.3 i.86-.*-linux.*/thread i.86-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls + _sys_siglist D 0x104 + sys_sigabbrev D 0x104 + sys_siglist D 0x104 +GLIBC_2.3.3 ia64-.*-linux.*/tls powerpc64-.*-linux.*/thread s390x-.*-linux.*/tls x86_64-.*-linux.*/tls +| GLIBC_2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + strtoll_l F + strtoull_l F +GLIBC_2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls + GLIBC_2.3 A + __ctype_b_loc F + __ctype_tolower_loc F + __ctype_toupper_loc F + __isctype F + __strftime_l F + __uselocale F + __wcsftime_l F + duplocale F + fgetxattr F + flistxattr F + freeifaddrs F + freelocale F + fremovexattr F + fsetxattr F + futimes F + getifaddrs F + getxattr F + isalnum_l F + isalpha_l F + isblank_l F + iscntrl_l F + isctype F + isdigit_l F + isgraph_l F + islower_l F + isprint_l F + ispunct_l F + isspace_l F + isupper_l F + iswalnum_l F + iswalpha_l F + iswblank_l F + iswcntrl_l F + iswctype_l F + iswdigit_l F + iswgraph_l F + iswlower_l F + iswprint_l F + iswpunct_l F + iswspace_l F + iswupper_l F + iswxdigit_l F + isxdigit_l F + lgetxattr F + listxattr F + llistxattr F + lremovexattr F + lsetxattr F + lutimes F + newlocale F + nl_langinfo_l F + readahead F + removexattr F + sendfile64 F + setxattr F + strcasecmp_l F + strcoll_l F + strfmon_l F + strftime_l F + strncasecmp_l F + strtod_l F + strtof_l F + strtol_l F + strtold_l F + strtoul_l F + strxfrm_l F + tolower_l F + toupper_l F + towctrans_l F + towlower_l F + towupper_l F + uselocale F + wcscasecmp_l F + wcscoll_l F + wcsftime_l F + wcsncasecmp_l F + wcstod_l F + wcstof_l F + wcstol_l F + wcstold_l F + wcstoll_l F + wcstoul_l F + wcstoull_l F + wcsxfrm_l F + wctrans_l F + wctype_l F +GLIBC_2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + _sys_errlist D 0x1f8 + sys_errlist D 0x1f8 +GLIBC_2.3 ia64-.*-linux.*/tls powerpc64-.*-linux.*/thread s390x-.*-linux.*/tls x86_64-.*-linux.*/tls + _sys_errlist D 0x3f0 + sys_errlist D 0x3f0 --- glibc-2.3.2/abilist/libcrypt.abilist 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/abilist/libcrypt.abilist 2003-04-01 23:39:52.000000000 -0500 @@ -0,0 +1,19 @@ +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + GLIBC_2.0 A +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 s390x-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + crypt F + crypt_r F + encrypt F + encrypt_r F + fcrypt F + setkey F + setkey_r F +GLIBC_2.2.5 x86_64-.*-linux.*/tls + GLIBC_2.2.5 A +GLIBC_2.2 s390x-.*-linux.*/tls + GLIBC_2.2 A +GLIBC_2.3 powerpc64-.*-linux.*/thread + GLIBC_2.3 A --- glibc-2.3.2/abilist/libdl.abilist 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/abilist/libdl.abilist 2003-04-01 23:39:52.000000000 -0500 @@ -0,0 +1,33 @@ +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + GLIBC_2.0 A +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 s390x-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + dlopen F +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 s390x-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + dladdr F + dlclose F + dlerror F + dlsym F +GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + GLIBC_2.1 A +GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 s390x-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + dlvsym F +GLIBC_2.2.5 x86_64-.*-linux.*/tls + GLIBC_2.2.5 A +GLIBC_2.2 s390x-.*-linux.*/tls + GLIBC_2.2 A +GLIBC_2.3.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls + GLIBC_2.3.3 A + dladdr1 F + dlinfo F +GLIBC_2.3 powerpc64-.*-linux.*/thread + GLIBC_2.3 A --- glibc-2.3.2/abilist/libm.abilist 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/abilist/libm.abilist 2003-04-01 23:39:52.000000000 -0500 @@ -0,0 +1,355 @@ +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls + GLIBC_2.0 A +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + _LIB_VERSION D 0x4 + acos F + acosf F + acosh F + acoshf F + acoshl F + acosl F + asin F + asinf F + asinh F + asinhf F + asinhl F + asinl F + atan F + atan2 F + atan2f F + atan2l F + atanf F + atanh F + atanhf F + atanhl F + atanl F + cbrt F + cbrtf F + cbrtl F + ceil F + ceilf F + ceill F + copysign F + copysignf F + copysignl F + cos F + cosf F + cosh F + coshf F + coshl F + cosl F + drem F + dremf F + dreml F + erf F + erfc F + erfcf F + erfcl F + erff F + erfl F + exp F + expf F + expl F + expm1 F + expm1f F + expm1l F + fabs F + fabsf F + fabsl F + finite F + finitef F + finitel F + floor F + floorf F + floorl F + fmod F + fmodf F + fmodl F + frexp F + frexpf F + frexpl F + gamma F + gammaf F + gammal F + hypot F + hypotf F + hypotl F + ilogb F + ilogbf F + ilogbl F + j0 F + j0f F + j0l F + j1 F + j1f F + j1l F + jn F + jnf F + jnl F + ldexp F + ldexpf F + ldexpl F + lgamma F + lgamma_r F + lgammaf F + lgammaf_r F + lgammal F + lgammal_r F + log F + log10 F + log10f F + log10l F + log1p F + log1pf F + log1pl F + logb F + logbf F + logbl F + logf F + logl F + matherr F + modf F + modff F + modfl F + nextafter F + nextafterf F + nextafterl F + pow F + powf F + powl F + remainder F + remainderf F + remainderl F + rint F + rintf F + rintl F + scalb F + scalbf F + scalbl F + scalbn F + scalbnf F + scalbnl F + signgam D 0x4 + significand F + significandf F + significandl F + sin F + sinf F + sinh F + sinhf F + sinhl F + sinl F + sqrt F + sqrtf F + sqrtl F + tan F + tanf F + tanh F + tanhf F + tanhl F + tanl F + y0 F + y0f F + y0l F + y1 F + y1f F + y1l F + yn F + ynf F + ynl F +GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls + GLIBC_2.1 A +GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + feclearexcept F + fegetenv F + fegetexceptflag F + feraiseexcept F + fesetenv F + fesetexceptflag F + feupdateenv F +GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + __clog10 F + __clog10f F + __clog10l F + __finite F + __finitef F + __finitel F + __fpclassify F + __fpclassifyf F + __signbit F + __signbitf F + cabs F + cabsf F + cabsl F + cacos F + cacosf F + cacosh F + cacoshf F + cacoshl F + cacosl F + carg F + cargf F + cargl F + casin F + casinf F + casinh F + casinhf F + casinhl F + casinl F + catan F + catanf F + catanh F + catanhf F + catanhl F + catanl F + ccos F + ccosf F + ccosh F + ccoshf F + ccoshl F + ccosl F + cexp F + cexpf F + cexpl F + cimag F + cimagf F + cimagl F + clog F + clog10 F + clog10f F + clog10l F + clogf F + clogl F + conj F + conjf F + conjl F + cpow F + cpowf F + cpowl F + cproj F + cprojf F + cprojl F + creal F + crealf F + creall F + csin F + csinf F + csinh F + csinhf F + csinhl F + csinl F + csqrt F + csqrtf F + csqrtl F + ctan F + ctanf F + ctanh F + ctanhf F + ctanhl F + ctanl F + exp10 F + exp10f F + exp10l F + exp2 F + exp2f F + fdim F + fdimf F + fdiml F + fegetround F + feholdexcept F + fesetround F + fetestexcept F + fma F + fmaf F + fmal F + fmax F + fmaxf F + fmaxl F + fmin F + fminf F + fminl F + llrint F + llrintf F + llrintl F + llround F + llroundf F + llroundl F + log2 F + log2f F + log2l F + lrint F + lrintf F + lrintl F + lround F + lroundf F + lroundl F + nan F + nanf F + nanl F + nearbyint F + nearbyintf F + nearbyintl F + nexttoward F + nexttowardf F + nexttowardl F + pow10 F + pow10f F + pow10l F + remquo F + remquof F + remquol F + round F + roundf F + roundl F + scalbln F + scalblnf F + scalblnl F + sincos F + sincosf F + sincosl F + tgamma F + tgammaf F + tgammal F + trunc F + truncf F + truncl F +GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls + __fpclassifyl F + __signbitl F + exp2l F +GLIBC_2.1 powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + __fe_dfl_env D 0x8 + __fe_enabled_env D 0x8 + __fe_nomask_env F + __fe_nonieee_env D 0x8 +GLIBC_2.2.3 ia64-.*-linux.*/tls + GLIBC_2.2.3 A + matherrf F + matherrl F +GLIBC_2.2.5 x86_64-.*-linux.*/tls + GLIBC_2.2.5 A +GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + fedisableexcept F + feenableexcept F + fegetexcept F +GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls + __expl F + __expm1l F +GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + GLIBC_2.2 A +GLIBC_2.3 powerpc64-.*-linux.*/thread + GLIBC_2.3 A --- glibc-2.3.2/abilist/libnsl.abilist 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/abilist/libnsl.abilist 2003-04-01 23:39:52.000000000 -0500 @@ -0,0 +1,142 @@ +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + GLIBC_2.0 A +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 s390x-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + __yp_check F + xdr_domainname F + xdr_keydat F + xdr_mapname F + xdr_peername F + xdr_valdat F + xdr_yp_buf F + xdr_ypbind_binding F + xdr_ypbind_resp F + xdr_ypbind_resptype F + xdr_ypbind_setdom F + xdr_ypdelete_args F + xdr_ypmap_parms F + xdr_ypmaplist F + xdr_yppush_status F + xdr_yppushresp_xfr F + xdr_ypreq_key F + xdr_ypreq_nokey F + xdr_ypreq_xfr F + xdr_ypresp_all F + xdr_ypresp_key_val F + xdr_ypresp_maplist F + xdr_ypresp_master F + xdr_ypresp_order F + xdr_ypresp_val F + xdr_ypresp_xfr F + xdr_ypstat F + xdr_ypupdate_args F + xdr_ypxfrstat F + yp_all F + yp_bind F + yp_first F + yp_get_default_domain F + yp_maplist F + yp_master F + yp_match F + yp_next F + yp_order F + yp_unbind F + yp_update F + ypbinderr_string F + yperr_string F + ypprot_err F +GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + GLIBC_2.1 A +GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 s390x-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + __free_fdresult F + __nis_default_access F + __nis_default_group F + __nis_default_owner F + __nis_default_ttl F + __nis_finddirectory F + __nis_hash F + __nisbind_connect F + __nisbind_create F + __nisbind_destroy F + __nisbind_next F + nis_add F + nis_add_entry F + nis_addmember F + nis_checkpoint F + nis_clone_directory F + nis_clone_object F + nis_clone_result F + nis_creategroup F + nis_destroy_object F + nis_destroygroup F + nis_dir_cmp F + nis_domain_of F + nis_domain_of_r F + nis_first_entry F + nis_free_directory F + nis_free_object F + nis_free_request F + nis_freenames F + nis_freeresult F + nis_freeservlist F + nis_freetags F + nis_getnames F + nis_getservlist F + nis_ismember F + nis_leaf_of F + nis_leaf_of_r F + nis_lerror F + nis_list F + nis_local_directory F + nis_local_group F + nis_local_host F + nis_local_principal F + nis_lookup F + nis_mkdir F + nis_modify F + nis_modify_entry F + nis_name_of F + nis_name_of_r F + nis_next_entry F + nis_perror F + nis_ping F + nis_print_directory F + nis_print_entry F + nis_print_group F + nis_print_group_entry F + nis_print_link F + nis_print_object F + nis_print_result F + nis_print_rights F + nis_print_table F + nis_read_obj F + nis_remove F + nis_remove_entry F + nis_removemember F + nis_rmdir F + nis_servstate F + nis_sperrno F + nis_sperror F + nis_sperror_r F + nis_stats F + nis_verifygroup F + nis_write_obj F + readColdStartFile F + writeColdStartFile F + xdr_cback_data F + xdr_obj_p F +GLIBC_2.2.5 x86_64-.*-linux.*/tls + GLIBC_2.2.5 A +GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + xdr_ypall F +GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + GLIBC_2.2 A +GLIBC_2.3 powerpc64-.*-linux.*/thread + GLIBC_2.3 A --- glibc-2.3.2/abilist/libpthread.abilist 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/abilist/libpthread.abilist 2003-04-01 23:39:52.000000000 -0500 @@ -0,0 +1,256 @@ +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls + GLIBC_2.0 A +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + pthread_attr_init F + pthread_create F + sem_destroy F + sem_getvalue F + sem_init F + sem_post F + sem_trywait F + sem_wait F +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + pthread_atfork F +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + pthread_cond_broadcast F + pthread_cond_destroy F + pthread_cond_init F + pthread_cond_signal F + pthread_cond_timedwait F + pthread_cond_wait F +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + _IO_flockfile F + _IO_ftrylockfile F + _IO_funlockfile F + __close F + __connect F + __errno_location F + __fcntl F + __fork F + __h_errno_location F + __lseek F + __open F + __pthread_getspecific F + __pthread_key_create F + __pthread_mutex_destroy F + __pthread_mutex_init F + __pthread_mutex_lock F + __pthread_mutex_trylock F + __pthread_mutex_unlock F + __pthread_mutexattr_destroy F + __pthread_mutexattr_init F + __pthread_mutexattr_settype F + __pthread_once F + __pthread_setspecific F + __read F + __send F + __sigaction F + __wait F + __write F + _pthread_cleanup_pop F + _pthread_cleanup_pop_restore F + _pthread_cleanup_push F + _pthread_cleanup_push_defer F + accept F + close F + connect F + fcntl F + flockfile F + fork F + fsync F + ftrylockfile F + funlockfile F + longjmp F + lseek F + msync F + nanosleep F + open F + pause F + pthread_attr_destroy F + pthread_attr_getdetachstate F + pthread_attr_getinheritsched F + pthread_attr_getschedparam F + pthread_attr_getschedpolicy F + pthread_attr_getscope F + pthread_attr_setdetachstate F + pthread_attr_setinheritsched F + pthread_attr_setschedparam F + pthread_attr_setschedpolicy F + pthread_attr_setscope F + pthread_cancel F + pthread_condattr_destroy F + pthread_condattr_init F + pthread_detach F + pthread_equal F + pthread_exit F + pthread_getschedparam F + pthread_getspecific F + pthread_join F + pthread_key_create F + pthread_key_delete F + pthread_kill F + pthread_kill_other_threads_np F + pthread_mutex_destroy F + pthread_mutex_init F + pthread_mutex_lock F + pthread_mutex_trylock F + pthread_mutex_unlock F + pthread_mutexattr_destroy F + pthread_mutexattr_getkind_np F + pthread_mutexattr_init F + pthread_mutexattr_setkind_np F + pthread_once F + pthread_self F + pthread_setcancelstate F + pthread_setcanceltype F + pthread_setschedparam F + pthread_setspecific F + pthread_sigmask F + pthread_testcancel F + raise F + read F + recv F + recvfrom F + recvmsg F + send F + sendmsg F + sendto F + sigaction F + siglongjmp F + sigwait F + system F + tcdrain F + vfork F + wait F + waitpid F + write F +GLIBC_2.1.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls + GLIBC_2.1.1 A +GLIBC_2.1.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + sem_close F + sem_open F + sem_unlink F +GLIBC_2.1.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls + GLIBC_2.1.2 A +GLIBC_2.1.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + __vfork F +GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls + GLIBC_2.1 A +GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + __libc_allocate_rtsig F + __libc_current_sigrtmax F + __libc_current_sigrtmin F + pthread_attr_getguardsize F + pthread_attr_getstackaddr F + pthread_attr_getstacksize F + pthread_attr_setguardsize F + pthread_attr_setstackaddr F + pthread_attr_setstacksize F + pthread_getconcurrency F + pthread_mutexattr_gettype F + pthread_mutexattr_settype F + pthread_rwlock_destroy F + pthread_rwlock_init F + pthread_rwlock_rdlock F + pthread_rwlock_tryrdlock F + pthread_rwlock_trywrlock F + pthread_rwlock_unlock F + pthread_rwlock_wrlock F + pthread_rwlockattr_destroy F + pthread_rwlockattr_getkind_np F + pthread_rwlockattr_getpshared F + pthread_rwlockattr_init F + pthread_rwlockattr_setkind_np F + pthread_rwlockattr_setpshared F + pthread_setconcurrency F +GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + GLIBC_2.2.3 A +GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + pthread_getattr_np F +GLIBC_2.2.5 x86_64-.*-linux.*/tls + GLIBC_2.2.5 A +GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + __open64 F + __pread64 F + __pthread_rwlock_destroy F + __pthread_rwlock_init F + __pthread_rwlock_rdlock F + __pthread_rwlock_tryrdlock F + __pthread_rwlock_trywrlock F + __pthread_rwlock_unlock F + __pthread_rwlock_wrlock F + __pwrite64 F + __res_state F + lseek64 F + open64 F + pread F + pread64 F + pthread_attr_getstack F + pthread_attr_setstack F + pthread_barrier_destroy F + pthread_barrier_init F + pthread_barrier_wait F + pthread_barrierattr_destroy F + pthread_barrierattr_init F + pthread_barrierattr_setpshared F + pthread_condattr_getpshared F + pthread_condattr_setpshared F + pthread_getcpuclockid F + pthread_mutex_timedlock F + pthread_mutexattr_getpshared F + pthread_mutexattr_setpshared F + pthread_rwlock_timedrdlock F + pthread_rwlock_timedwrlock F + pthread_spin_destroy F + pthread_spin_init F + pthread_spin_lock F + pthread_spin_trylock F + pthread_spin_unlock F + pthread_yield F + pwrite F + pwrite64 F + sem_timedwait F +GLIBC_2.2.6 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls + GLIBC_2.2.6 A +GLIBC_2.2.6 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + __nanosleep F +GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + GLIBC_2.2 A +GLIBC_2.3.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls + GLIBC_2.3.2 A +GLIBC_2.3.3 i.86-.*-linux.*/thread sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + GLIBC_2.3.3 A + pthread_barrierattr_getpshared F + pthread_condattr_getclock F + pthread_condattr_setclock F + pthread_timedjoin_np F + pthread_tryjoin_np F +GLIBC_2.3 powerpc64-.*-linux.*/thread + GLIBC_2.3 A --- glibc-2.3.2/abilist/libresolv.abilist 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/abilist/libresolv.abilist 2003-04-01 23:39:52.000000000 -0500 @@ -0,0 +1,95 @@ +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + GLIBC_2.0 A + dn_expand F + res_mkquery F + res_query F + res_querydomain F + res_search F +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 s390x-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + __b64_ntop F + __b64_pton F + __dn_comp F + __dn_count_labels F + __dn_skipname F + __fp_nquery F + __fp_query F + __fp_resstat F + __hostalias F + __loc_aton F + __loc_ntoa F + __p_cdname F + __p_cdnname F + __p_class F + __p_fqname F + __p_fqnname F + __p_option F + __p_query F + __p_secstodate F + __p_time F + __p_type F + __putlong F + __putshort F + __res_close F + __res_dnok F + __res_hnok F + __res_isourserver F + __res_mailok F + __res_nameinquery F + __res_ownok F + __res_queriesmatch F + __res_send F + __sym_ntop F + __sym_ntos F + __sym_ston F + _gethtbyaddr F + _gethtbyname F + _gethtbyname2 F + _gethtent F + _getlong F + _getshort F + _sethtent F + inet_net_ntop F + inet_net_pton F + inet_neta F + res_gethostbyaddr F + res_gethostbyname F + res_gethostbyname2 F + res_send_setqhook F + res_send_setrhook F +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + __p_class_syms D 0x54 + __p_type_syms D 0x21c + _res_opcodes D 0x40 +GLIBC_2.0 ia64-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 s390x-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + __p_class_syms D 0xa8 + __p_type_syms D 0x438 + _res_opcodes D 0x80 +GLIBC_2.2.5 x86_64-.*-linux.*/tls + GLIBC_2.2.5 A +GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + __dn_expand F + __res_hostalias F + __res_mkquery F + __res_nmkquery F + __res_nquery F + __res_nquerydomain F + __res_nsearch F + __res_nsend F + __res_query F + __res_querydomain F + __res_search F +GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + GLIBC_2.2 A +GLIBC_2.3.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls + GLIBC_2.3.2 A + __p_rcode F +GLIBC_2.3 powerpc64-.*-linux.*/thread + GLIBC_2.3 A --- glibc-2.3.2/abilist/librt.abilist 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/abilist/librt.abilist 2003-04-01 23:39:52.000000000 -0500 @@ -0,0 +1,44 @@ +GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + GLIBC_2.1 A +GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 s390x-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + aio_cancel F + aio_cancel64 F + aio_error F + aio_error64 F + aio_fsync F + aio_fsync64 F + aio_init F + aio_read F + aio_read64 F + aio_return F + aio_return64 F + aio_suspend F + aio_suspend64 F + aio_write F + aio_write64 F + lio_listio F + lio_listio64 F +GLIBC_2.2.5 x86_64-.*-linux.*/tls + GLIBC_2.2.5 A +GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + clock_getcpuclockid F + clock_getres F + clock_gettime F + clock_nanosleep F + clock_settime F + shm_open F + shm_unlink F + timer_create F + timer_delete F + timer_getoverrun F + timer_gettime F + timer_settime F +GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + GLIBC_2.2 A +GLIBC_2.3 powerpc64-.*-linux.*/thread + GLIBC_2.3 A --- glibc-2.3.2/abilist/libthread_db.abilist 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/abilist/libthread_db.abilist 2003-04-01 23:39:52.000000000 -0500 @@ -0,0 +1,59 @@ +GLIBC_2.1.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + GLIBC_2.1.3 A +GLIBC_2.1.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 s390x-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + td_init F + td_log F + td_ta_clear_event F + td_ta_delete F + td_ta_enable_stats F + td_ta_event_addr F + td_ta_event_getmsg F + td_ta_get_nthreads F + td_ta_get_ph F + td_ta_get_stats F + td_ta_map_id2thr F + td_ta_map_lwp2thr F + td_ta_new F + td_ta_reset_stats F + td_ta_set_event F + td_ta_setconcurrency F + td_ta_thr_iter F + td_ta_tsd_iter F + td_thr_clear_event F + td_thr_dbresume F + td_thr_dbsuspend F + td_thr_event_enable F + td_thr_event_getmsg F + td_thr_get_info F + td_thr_getfpregs F + td_thr_getgregs F + td_thr_getxregs F + td_thr_getxregsize F + td_thr_set_event F + td_thr_setfpregs F + td_thr_setgregs F + td_thr_setprio F + td_thr_setsigpending F + td_thr_setxregs F + td_thr_sigsetmask F + td_thr_tsd F + td_thr_validate F +GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + GLIBC_2.2.3 A +GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + td_symbol_list F +GLIBC_2.2.5 x86_64-.*-linux.*/tls + GLIBC_2.2.5 A +GLIBC_2.2 s390x-.*-linux.*/tls + GLIBC_2.2 A +GLIBC_2.3.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls + GLIBC_2.3.3 A + td_thr_tlsbase F +GLIBC_2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls + GLIBC_2.3 A + td_thr_tls_get_addr F --- glibc-2.3.2/abilist/libutil.abilist 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/abilist/libutil.abilist 2003-04-01 23:39:52.000000000 -0500 @@ -0,0 +1,18 @@ +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls + GLIBC_2.0 A +GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls +| GLIBC_2.2.5 x86_64-.*-linux.*/tls +| GLIBC_2.2 s390x-.*-linux.*/tls +| GLIBC_2.3 powerpc64-.*-linux.*/thread + forkpty F + login F + login_tty F + logout F + logwtmp F + openpty F +GLIBC_2.2.5 x86_64-.*-linux.*/tls + GLIBC_2.2.5 A +GLIBC_2.2 s390x-.*-linux.*/tls + GLIBC_2.2 A +GLIBC_2.3 powerpc64-.*-linux.*/thread + GLIBC_2.3 A --- glibc-2.3.2/argp/Makefile 2002-12-04 14:45:21.000000000 -0500 +++ glibc-2.3.2/argp/Makefile 2003-09-19 22:37:01.000000000 -0400 @@ -1,4 +1,4 @@ -# Copyright (C) 1997, 2002 Free Software Foundation, Inc. +# Copyright (C) 1997, 2002, 2003 Free Software Foundation, Inc. # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or @@ -28,4 +28,8 @@ tests = argp-test tst-argp1 +CFLAGS-argp-help.c = $(uses-callbacks) -fexceptions +CFLAGS-argp-parse.c = $(uses-callbacks) +CFLAGS-argp-fmtstream.c = -fexceptions + include ../Rules --- glibc-2.3.2/argp/argp-help.c 2002-04-08 04:19:17.000000000 -0400 +++ glibc-2.3.2/argp/argp-help.c 2003-08-21 08:36:58.000000000 -0400 @@ -1,5 +1,5 @@ /* Hierarchial argument parsing help output - Copyright (C) 1995-2000, 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 1995-2000, 2001, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Written by Miles Bader . @@ -521,7 +521,7 @@ free (hol); } -static inline int +static int hol_entry_short_iterate (const struct hol_entry *entry, int (*func)(const struct argp_option *opt, const struct argp_option *real, @@ -547,6 +547,7 @@ } static inline int +__attribute ((always_inline)) hol_entry_long_iterate (const struct hol_entry *entry, int (*func)(const struct argp_option *opt, const struct argp_option *real, --- glibc-2.3.2/argp/argp.h 2003-02-28 20:09:18.000000000 -0500 +++ glibc-2.3.2/argp/argp.h 2003-09-19 22:37:01.000000000 -0400 @@ -32,6 +32,10 @@ # define __const const #endif +#ifndef __THROW +# define __THROW +#endif + #ifndef __error_t_defined typedef int error_t; # define __error_t_defined @@ -376,11 +380,11 @@ extern error_t argp_parse (__const struct argp *__restrict __argp, int __argc, char **__restrict __argv, unsigned __flags, int *__restrict __arg_index, - void *__restrict __input) __THROW; + void *__restrict __input); extern error_t __argp_parse (__const struct argp *__restrict __argp, int __argc, char **__restrict __argv, unsigned __flags, int *__restrict __arg_index, - void *__restrict __input) __THROW; + void *__restrict __input); /* Global variables. */ @@ -444,10 +448,10 @@ ARGP_HELP_*. */ extern void argp_help (__const struct argp *__restrict __argp, FILE *__restrict __stream, - unsigned __flags, char *__restrict __name) __THROW; + unsigned __flags, char *__restrict __name); extern void __argp_help (__const struct argp *__restrict __argp, FILE *__restrict __stream, unsigned __flags, - char *__name) __THROW; + char *__name); /* The following routines are intended to be called from within an argp parsing routine (thus taking an argp_state structure as the first @@ -461,23 +465,23 @@ from the set ARGP_HELP_*. */ extern void argp_state_help (__const struct argp_state *__restrict __state, FILE *__restrict __stream, - unsigned int __flags) __THROW; + unsigned int __flags); extern void __argp_state_help (__const struct argp_state *__restrict __state, FILE *__restrict __stream, - unsigned int __flags) __THROW; + unsigned int __flags); /* Possibly output the standard usage message for ARGP to stderr and exit. */ -extern void argp_usage (__const struct argp_state *__state) __THROW; -extern void __argp_usage (__const struct argp_state *__state) __THROW; +extern void argp_usage (__const struct argp_state *__state); +extern void __argp_usage (__const struct argp_state *__state); /* If appropriate, print the printf string FMT and following args, preceded by the program name and `:', to stderr, and followed by a `Try ... --help' message, then exit (1). */ extern void argp_error (__const struct argp_state *__restrict __state, - __const char *__restrict __fmt, ...) __THROW + __const char *__restrict __fmt, ...) __attribute__ ((__format__ (__printf__, 2, 3))); extern void __argp_error (__const struct argp_state *__restrict __state, - __const char *__restrict __fmt, ...) __THROW + __const char *__restrict __fmt, ...) __attribute__ ((__format__ (__printf__, 2, 3))); /* Similar to the standard gnu error-reporting function error(), but will @@ -490,11 +494,11 @@ parsing but don't reflect a (syntactic) problem with the input. */ extern void argp_failure (__const struct argp_state *__restrict __state, int __status, int __errnum, - __const char *__restrict __fmt, ...) __THROW + __const char *__restrict __fmt, ...) __attribute__ ((__format__ (__printf__, 4, 5))); extern void __argp_failure (__const struct argp_state *__restrict __state, int __status, int __errnum, - __const char *__restrict __fmt, ...) __THROW + __const char *__restrict __fmt, ...) __attribute__ ((__format__ (__printf__, 4, 5))); /* Returns true if the option OPT is a valid short option. */ --- glibc-2.3.2/argp/tst-argp1.c 2002-12-04 17:45:02.000000000 -0500 +++ glibc-2.3.2/argp/tst-argp1.c 2003-03-18 16:46:06.000000000 -0500 @@ -1,4 +1,4 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2002. @@ -29,7 +29,7 @@ #define OPT_TOPLEVEL 304 -static const struct argp_option options[] = +static const struct argp_option test_options[] = { { NULL, 0, NULL, 0, "\ This is a test for threads so we allow ther user to selection the number of \ @@ -89,12 +89,12 @@ /* Data structure to communicate with argp functions. */ static struct argp argp = { - options, parse_opt + test_options, parse_opt }; -int -main (void) +static int +do_test (void) { int argc = 2; char *argv[3] = { (char *) "tst-argp1", (char *) "--help", NULL }; @@ -113,3 +113,6 @@ { return ARGP_ERR_UNKNOWN; } + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" --- glibc-2.3.2/assert/assert.h 2001-07-07 15:20:51.000000000 -0400 +++ glibc-2.3.2/assert/assert.h 2003-08-21 08:36:58.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991,1992,1994-1999,2000,2001 Free Software Foundation, Inc. +/* Copyright (C) 1991,1992,1994-2001,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -84,16 +84,33 @@ __END_DECLS -# define assert(expr) \ +/* For the macro definition we use gcc's __builtin_expect if possible + to generate good code for the non-error case. gcc 3.0 is a good + enough estimate for when the feature became available. */ +# if __GNUC_PREREQ (3, 0) +# define assert(expr) \ + (__ASSERT_VOID_CAST (__builtin_expect (!!(expr), 1) ? 0 : \ + (__assert_fail (__STRING(expr), __FILE__, __LINE__, \ + __ASSERT_FUNCTION), 0))) +# else +# define assert(expr) \ (__ASSERT_VOID_CAST ((expr) ? 0 : \ (__assert_fail (__STRING(expr), __FILE__, __LINE__, \ __ASSERT_FUNCTION), 0))) +# endif # ifdef __USE_GNU -# define assert_perror(errnum) \ +# if __GNUC_PREREQ (3, 0) +# define assert_perror(errnum) \ + (__ASSERT_VOID_CAST (__builtin_expect (!(errnum), 1) ? 0 : \ + (__assert_perror_fail ((errnum), __FILE__, __LINE__, \ + __ASSERT_FUNCTION), 0))) +# else +# define assert_perror(errnum) \ (__ASSERT_VOID_CAST (!(errnum) ? 0 : \ (__assert_perror_fail ((errnum), __FILE__, __LINE__, \ __ASSERT_FUNCTION), 0))) +# endif # endif /* Version 2.4 and later of GCC define a magical variable `__PRETTY_FUNCTION__' --- glibc-2.3.2/autom4te.cache/output.0 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/autom4te.cache/output.0 2003-09-19 22:40:33.000000000 -0400 @@ -0,0 +1,8515 @@ +@%:@! /bin/sh +@%:@ From configure.in CVSid. +@%:@ Guess values for system-dependent variables and create Makefiles. +@%:@ Generated by GNU Autoconf 2.57 for GNU C Library (see version.h). +@%:@ +@%:@ Report bugs to . +@%:@ +@%:@ Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +@%:@ Free Software Foundation, Inc. +@%:@ This configure script is free software; the Free Software Foundation +@%:@ gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_config_libobj_dir=. +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME='GNU C Library' +PACKAGE_TARNAME='c-library' +PACKAGE_VERSION='(see version.h)' +PACKAGE_STRING='GNU C Library (see version.h)' +PACKAGE_BUGREPORT='glibc' + +ac_unique_file="include/features.h" +ac_subdirs_all="$ac_subdirs_all " +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS with_fp with_cvs enable_check_abi oldest_abi subdirs force_install all_warnings build build_cpu build_vendor build_os host host_cpu host_vendor host_os base_machine sysnames INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC OBJEXT BUILD_CC cross_compiling CPP CXX CXXFLAGS ac_ct_CXX AR OBJDUMP RANLIB ac_ct_RANLIB MIG AS LD PWD_P MAKE MSGFMT MAKEINFO SED AUTOCONF CCVERSION SYSINCLUDES libc_cv_gcc_static_libgcc BASH libc_cv_have_bash2 KSH libc_cv_have_ksh AWK PERL INSTALL_INFO OLD_DEBIAN_INSTALL_INFO BISON VERSIONING libc_cv_asm_protected_directive libc_cv_initfinit_array libc_cv_z_nodelete libc_cv_z_nodlopen libc_cv_z_initfirst libc_cv_Bgroup ASFLAGS_config libc_cv_z_combreloc libc_cv_have_initfini libc_cv_cpp_asm_debuginfo no_whole_archive exceptions LIBGD EGREP sizeof_long_double libc_cv_gcc_unwind_find_fde uname_sysname uname_release uname_version old_glibc_headers libc_cv_slibdir libc_cv_localedir libc_cv_sysconfdir libc_cv_rootsbindir libc_cv_forced_unwind use_ldconfig ldd_rewrite_script gnu_ld gnu_as elf xcoff static shared pic_default profile omitfp bounded static_nss nopic_initfini DEFINES linux_doors mach_interface_list VERSION RELEASE LIB@&t@OBJS LTLIBOBJS' +ac_subst_files='' + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP +ac_env_CXX_set=${CXX+set} +ac_env_CXX_value=$CXX +ac_cv_env_CXX_set=${CXX+set} +ac_cv_env_CXX_value=$CXX +ac_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_env_CXXFLAGS_value=$CXXFLAGS +ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_cv_env_CXXFLAGS_value=$CXXFLAGS + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures GNU C Library (see version.h) to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +_ACEOF + + cat <<_ACEOF +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of GNU C Library (see version.h):";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --disable-sanity-checks really do not use threads (should not be used except + in special situations) @<:@default=yes@:>@ + --enable-check-abi do "make check-abi" in "make check" (no/warn/yes) + @<:@default=no@:>@ + --enable-shared build shared library @<:@default=yes if GNU ld & + ELF@:>@ + --enable-profile build profiled library @<:@default=yes@:>@ + --enable-omitfp build undebuggable optimized library + @<:@default=no@:>@ + --enable-bounded build with runtime bounds checking + @<:@default=no@:>@ + --disable-versioning do not include versioning information in the library + objects @<:@default=yes if supported@:>@ + --enable-oldest-abi=ABI configure the oldest ABI supported @<:@e.g. 2.2@:>@ + @<:@default=glibc default@:>@ + --enable-add-ons@<:@=DIRS...@:>@ + configure and build add-ons in DIR1,DIR2,... search + for add-ons if no parameter given + --disable-hidden-plt do not hide internal function calls to avoid PLT + --enable-static-nss build static NSS modules @<:@default=no@:>@ + --disable-force-install don't force installation of files from this package, + even if they are older than the installed files + --enable-kernel=VERSION compile for compatibility with kernel not older than + VERSION + --enable-all-warnings enable all useful warnings gcc can issue + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gmp=DIRECTORY find GMP source code in DIRECTORY (not needed) + --with-gd=DIR find libgd include dir and library with prefix DIR + --with-gd-include=DIR find libgd include files in DIR + --with-gd-lib=DIR find libgd library files in DIR + --with-fp if using floating-point hardware @<:@default=yes@:>@ + --with-binutils=PATH specify location of binutils (as and ld) + --with-elf if using the ELF object format + --with-xcoff if using the XCOFF object format + --without-cvs if CVS should not be used + --with-headers=PATH location of system headers to use (for example + /usr/src/linux/include) @<:@default=compiler + default@:>@ + --with-tls enable support for TLS + --without-__thread do not use TLS features even when supporting them + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have + headers in a nonstandard directory + CPP C preprocessor + CXX C++ compiler command + CXXFLAGS C++ compiler flags + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd "$ac_popdir" + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF +GNU C Library configure (see version.h) +generated by GNU Autoconf 2.57 + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit 0 +fi +exec 5>config.log +cat >&5 <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by GNU C Library $as_me (see version.h), which was +generated by GNU Autoconf 2.57. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +cat <<_ASUNAME +@%:@@%:@ --------- @%:@@%:@ +@%:@@%:@ Platform. @%:@@%:@ +@%:@@%:@ --------- @%:@@%:@ + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done + +} >&5 + +cat >&5 <<_ACEOF + + +@%:@@%:@ ----------- @%:@@%:@ +@%:@@%:@ Core tests. @%:@@%:@ +@%:@@%:@ ----------- @%:@@%:@ + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_sep= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +@%:@@%:@ ---------------- @%:@@%:@ +@%:@@%:@ Cache variables. @%:@@%:@ +@%:@@%:@ ---------------- @%:@@%:@ +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + + cat <<\_ASBOX +@%:@@%:@ ----------------- @%:@@%:@ +@%:@@%:@ Output variables. @%:@@%:@ +@%:@@%:@ ----------------- @%:@@%:@ +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +@%:@@%:@ ------------- @%:@@%:@ +@%:@@%:@ Output files. @%:@@%:@ +@%:@@%:@ ------------- @%:@@%:@ +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +@%:@@%:@ ----------- @%:@@%:@ +@%:@@%:@ confdefs.h. @%:@@%:@ +@%:@@%:@ ----------- @%:@@%:@ +_ASBOX + echo + sed "/^$/d" confdefs.h | sort + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val="\$ac_cv_env_${ac_var}_value" + eval ac_new_val="\$ac_env_${ac_var}_value" + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ac_config_headers="$ac_config_headers config.h" + +ac_aux_dir= +for ac_dir in scripts $srcdir/scripts; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f $ac_dir/shtool; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in scripts $srcdir/scripts" >&5 +echo "$as_me: error: cannot find install-sh or install.sh in scripts $srcdir/scripts" >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + + +if test "`cd $srcdir; /bin/pwd`" = "`/bin/pwd`"; then + { { echo "$as_me:$LINENO: error: you must configure in a separate build directory" >&5 +echo "$as_me: error: you must configure in a separate build directory" >&2;} + { (exit 1); exit 1; }; } +fi + +# This will get text that should go into config.make. +config_vars= + +# Check for a --with-gmp argument and set gmp-srcdir in config.make. + +# Check whether --with-gmp or --without-gmp was given. +if test "${with_gmp+set}" = set; then + withval="$with_gmp" + +case "$with_gmp" in +yes) { { echo "$as_me:$LINENO: error: --with-gmp requires an argument; use --with-gmp=DIRECTORY" >&5 +echo "$as_me: error: --with-gmp requires an argument; use --with-gmp=DIRECTORY" >&2;} + { (exit 1); exit 1; }; } ;; +''|no) ;; +*) config_vars="$config_vars +gmp-srcdir = $withval" ;; +esac + +fi; +# Check for a --with-gd argument and set libgd-LDFLAGS in config.make. + +# Check whether --with-gd or --without-gd was given. +if test "${with_gd+set}" = set; then + withval="$with_gd" + case "$with_gd" in +yes|''|no) ;; +*) libgd_include="-I$withval/include" + libgd_ldflags="-L$withval/lib" ;; +esac + +fi; + +# Check whether --with-gd-include or --without-gd-include was given. +if test "${with_gd_include+set}" = set; then + withval="$with_gd_include" + case "$with_gd_include" in +''|no) ;; +*) libgd_include="-I$withval" ;; +esac + +fi; + +# Check whether --with-gd-lib or --without-gd-lib was given. +if test "${with_gd_lib+set}" = set; then + withval="$with_gd_lib" + case "$with_gd_lib" in +''|no) ;; +*) libgd_ldflags="-L$withval" ;; +esac + +fi; + +if test -n "$libgd_include"; then + config_vars="$config_vars +CFLAGS-memusagestat.c = $libgd_include" +fi +if test -n "$libgd_ldflags"; then + config_vars="$config_vars +libgd-LDFLAGS = $libgd_ldflags" +fi + + +# Check whether --with-fp or --without-fp was given. +if test "${with_fp+set}" = set; then + withval="$with_fp" + with_fp=$withval +else + with_fp=yes +fi; + + +# Check whether --with-binutils or --without-binutils was given. +if test "${with_binutils+set}" = set; then + withval="$with_binutils" + path_binutils=$withval +else + path_binutils='' +fi; + +# Check whether --with-elf or --without-elf was given. +if test "${with_elf+set}" = set; then + withval="$with_elf" + elf=$withval +else + elf=no +fi; + +# Check whether --with-xcoff or --without-xcoff was given. +if test "${with_xcoff+set}" = set; then + withval="$with_xcoff" + xcoff=$withval +else + xcoff=no +fi; + +# Check whether --with-cvs or --without-cvs was given. +if test "${with_cvs+set}" = set; then + withval="$with_cvs" + with_cvs=$withval +else + with_cvs=yes +fi; +if test "$with_cvs" = yes; then + if test -d $srcdir/CVS && grep :pserver: $srcdir/CVS/Root > /dev/null + then + with_cvs=no + fi +fi + + + +# Check whether --with-headers or --without-headers was given. +if test "${with_headers+set}" = set; then + withval="$with_headers" + sysheaders=$withval +else + sysheaders='' +fi; + +# Check whether --enable-sanity-checks or --disable-sanity-checks was given. +if test "${enable_sanity_checks+set}" = set; then + enableval="$enable_sanity_checks" + enable_sanity=$enableval +else + enable_sanity=yes +fi; + + +# Check whether --enable-check-abi or --disable-check-abi was given. +if test "${enable_check_abi+set}" = set; then + enableval="$enable_check_abi" + enable_check_abi=$enableval +else + enable_check_abi=no +fi; + +static=yes +# Check whether --enable-shared or --disable-shared was given. +if test "${enable_shared+set}" = set; then + enableval="$enable_shared" + shared=$enableval +else + shared=default +fi; +# Check whether --enable-profile or --disable-profile was given. +if test "${enable_profile+set}" = set; then + enableval="$enable_profile" + profile=$enableval +else + profile=yes +fi; +# Check whether --enable-omitfp or --disable-omitfp was given. +if test "${enable_omitfp+set}" = set; then + enableval="$enable_omitfp" + omitfp=$enableval +else + omitfp=no +fi; +# Check whether --enable-bounded or --disable-bounded was given. +if test "${enable_bounded+set}" = set; then + enableval="$enable_bounded" + bounded=$enableval +else + bounded=no +fi; +# Check whether --enable-versioning or --disable-versioning was given. +if test "${enable_versioning+set}" = set; then + enableval="$enable_versioning" + enable_versioning=$enableval +else + enable_versioning=yes +fi; + +# Check whether --enable-oldest-abi or --disable-oldest-abi was given. +if test "${enable_oldest_abi+set}" = set; then + enableval="$enable_oldest_abi" + oldest_abi=$enableval +else + oldest_abi=no +fi; +if test "$oldest_abi" = yes || test "$oldest_abi" = no; then + oldest_abi=default +else + cat >>confdefs.h <<_ACEOF +@%:@define GLIBC_OLDEST_ABI "$oldest_abi" +_ACEOF + +fi + + +# Check whether --enable-add-ons or --disable-add-ons was given. +if test "${enable_add_ons+set}" = set; then + enableval="$enable_add_ons" + case "$enableval" in + yes) add_ons=`cd $srcdir && echo */configure | sed -e 's!/configure!!g'` + test "$add_ons" = "*" && add_ons= ;; + *) add_ons=`echo "$enableval" | sed 's/,/ /g'`;; + esac +else + add_ons= +fi; + + +# Check whether --with-tls or --without-tls was given. +if test "${with_tls+set}" = set; then + withval="$with_tls" + usetls=$withval +else + usetls=no +fi; + + +# Check whether --with-__thread or --without-__thread was given. +if test "${with___thread+set}" = set; then + withval="$with___thread" + use__thread=$withval +else + use__thread=yes +fi; + +# Check whether --enable-hidden-plt or --disable-hidden-plt was given. +if test "${enable_hidden_plt+set}" = set; then + enableval="$enable_hidden_plt" + hidden=$enableval +else + hidden=yes +fi; +if test "x$hidden" = xno; then + cat >>confdefs.h <<\_ACEOF +@%:@define NO_HIDDEN 1 +_ACEOF + +fi + + + +subdirs="$subdirs " +add_ons_pfx= +if test x"$add_ons" != x; then + for f in $add_ons; do + # Some sanity checks + if test "$f" = "crypt"; then + { { echo "$as_me:$LINENO: error: +*** It seems that you're using an old \`crypt' add-on. crypt is now +*** part of glibc and using the old add-on will not work with this +*** release. Start again with fresh sources and without the old +*** \`crypt' add-on." >&5 +echo "$as_me: error: +*** It seems that you're using an old \`crypt' add-on. crypt is now +*** part of glibc and using the old add-on will not work with this +*** release. Start again with fresh sources and without the old +*** \`crypt' add-on." >&2;} + { (exit 1); exit 1; }; } + fi + if test "$f" = "localedata"; then + { { echo "$as_me:$LINENO: error: +*** It seems that you're using an old \`localedata' add-on. localedata +*** is now part of glibc and using the old add-on will not work with +*** this release. Start again with fresh sources and without the old +*** \`localedata' add-on." >&5 +echo "$as_me: error: +*** It seems that you're using an old \`localedata' add-on. localedata +*** is now part of glibc and using the old add-on will not work with +*** this release. Start again with fresh sources and without the old +*** \`localedata' add-on." >&2;} + { (exit 1); exit 1; }; } + fi + # Test whether such a subdir really exists. + if test -d $srcdir/$f; then + add_ons_pfx="$add_ons_pfx $f/" + subdirs="$subdirs $f" + else + { { echo "$as_me:$LINENO: error: add-on directory \"$f\" does not exist" >&5 +echo "$as_me: error: add-on directory \"$f\" does not exist" >&2;} + { (exit 1); exit 1; }; } + fi + done +fi + +# Check whether --enable-static-nss or --disable-static-nss was given. +if test "${enable_static_nss+set}" = set; then + enableval="$enable_static_nss" + static_nss=$enableval +else + static_nss=no +fi; +if test x"$static_nss" = xyes || test x"$shared" = xno; then + static_nss=yes + cat >>confdefs.h <<\_ACEOF +@%:@define DO_STATIC_NSS 1 +_ACEOF + +fi + +# Check whether --enable-force-install or --disable-force-install was given. +if test "${enable_force_install+set}" = set; then + enableval="$enable_force_install" + force_install=$enableval +else + force_install=yes +fi; + + +# Check whether --enable-kernel or --disable-kernel was given. +if test "${enable_kernel+set}" = set; then + enableval="$enable_kernel" + minimum_kernel=$enableval +fi; +if test "$minimum_kernel" = yes || test "$minimum_kernel" = no; then + # Better nothing than this. + minimum_kernel="" +else + if test "$minimum_kernel" = current; then + minimum_kernel=`uname -r 2>/dev/null` || minimum_kernel= + fi +fi + +# Check whether --enable-all-warnings or --disable-all-warnings was given. +if test "${enable_all_warnings+set}" = set; then + enableval="$enable_all_warnings" + all_warnings=$enableval +fi; + + +# Make sure we can run config.sub. +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 +build=$ac_cv_build +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 +host=$ac_cv_host +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + + +# The way shlib-versions is used to generate soversions.mk uses a +# fairly simplistic model for name recognition that can't distinguish +# i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a $host_os +# of `gnu*' here to be `gnu-gnu*' just so that shlib-versions can +# tell. This doesn't get used much beyond that, so it's fairly safe. +case "$host_os" in +linux*) + ;; +gnu*) + host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'` + ;; +esac + +# We keep the original values in `$config_*' and never modify them, so we +# can write them unchanged into config.make. Everything else uses +# $machine, $vendor, and $os, and changes them whenever convenient. +config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os + +# Don't allow vendor == "unknown" +test "$config_vendor" = unknown && config_vendor= +config_os="`echo $config_os | sed 's/^unknown-//'`" + +# Some configurations imply other options. +case "$host_os" in +gnu* | linux* | bsd4.4* | netbsd* | freebsd*) + # These systems always use GNU tools. + gnu_ld=yes gnu_as=yes ;; +esac +case "$host_os" in +# i586-linuxaout is mangled into i586-pc-linux-gnuaout +linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*) + ;; +gnu* | linux* | freebsd* | netbsd* | sysv4* | solaris2* | irix6*) + # These systems (almost) always use the ELF format. + elf=yes + ;; +aix*) + # These systems are always xcoff + xcoff=yes + elf=no + ;; +esac + +machine=$config_machine +vendor=$config_vendor +os=$config_os + +# config.guess on some IBM machines says `rs6000' instead of `powerpc'. +# Unify this here. +if test "$machine" = rs6000; then + machine="powerpc" +fi + +# Braindead PowerPC box with absolutely no FPU. +case "$machine-$host_os" in + powerpc*-*soft) + with_fp=no + ;; +esac + +### +### I put this here to prevent those annoying emails from people who cannot +### read and try to compile glibc on unsupported platforms. --drepper +### +### By using the undocumented --enable-hacker-mode option for configure +### one can skip this test to make the configuration not fail for unsupported +### platforms. +### +if test -z "$enable_hacker_mode"; then + case "$machine-$host_os" in + *-linux* | *-gnu* | arm*-none* | powerpc-aix4.3.*) + ;; + *) + echo "*** The GNU C library is currently not available for this platform." + echo "*** So far nobody cared to port it and if there is no volunteer it" + echo "*** might never happen. So, if you have interest to see glibc on" + echo "*** this platform visit" + echo "*** http://www.gnu.org/software/libc/porting.html" + echo "*** and join the group of porters" + exit 1 + ;; + esac +fi + +# Expand the configuration machine name into a subdirectory by architecture +# type and particular chip. +case "$machine" in +a29k | am29000) base_machine=a29k machine=a29k ;; +alpha*) base_machine=alpha machine=alpha/$machine ;; +arm*) base_machine=arm machine=arm/arm32/$machine ;; +c3[012]) base_machine=cx0 machine=cx0/c30 ;; +c4[04]) base_machine=cx0 machine=cx0/c40 ;; +hppa*64*) base_machine=hppa machine=hppa/hppa64 ;; +hppa*) base_machine=hppa machine=hppa/hppa1.1 ;; +i[3456]86) base_machine=i386 machine=i386/$machine ;; +ia64) base_machine=ia64 machine=ia64 ;; +m680?0) base_machine=m68k machine=m68k/$machine ;; +m68k) base_machine=m68k machine=m68k/m68020 ;; +m88???) base_machine=m88k machine=m88k/$machine ;; +m88k) base_machine=m88k machine=m88k/m88100 ;; +mips64*) base_machine=mips64 + case "$CC $CFLAGS $CPPFLAGS " in + *" -mabi=n32 "*) mips_cc_abi=n32 ;; + *" -mabi=64 "*|*" -mabi=n64 "*) mips_cc_abi=64 ;; + *" -mabi=32 "*|*" -mabi=o32 "*) mips_cc_abi=32 ;; + *) mips_cc_abi=default ;; + esac + case $config_os in + *abin32*) mips_config_abi=n32 ;; + *abi64*|*abin64*) mips_config_abi=64 ;; + *abi32*|*abio32*) mips_config_abi=32 ;; + *) mips_config_abi=$mips_cc_abi ;; + esac + case $mips_config_abi in + default) machine=mips/mips64/n32 mips_config_abi=n32 ;; + n32) machine=mips/mips64/n32 ;; + 64) machine=mips/mips64/n64 ;; + 32) machine=mips/mips32/kern64 ;; + esac + machine=$machine/$config_machine + if test $mips_config_abi != $mips_cc_abi; then + # This won't make it to config.make, but we want to + # set this in case configure tests depend on it. + CPPFLAGS="$CPPFLAGS -mabi=$mips_config_abi" + fi + ;; +mips*) base_machine=mips machine=mips/mips32/$machine ;; +powerpc) base_machine=powerpc machine=powerpc/powerpc32 ;; +powerpc64) base_machine=powerpc machine=powerpc/powerpc64 ;; +s390) base_machine=s390 machine=s390/s390-32 ;; +s390x) base_machine=s390 machine=s390/s390-64 ;; +sh3*) base_machine=sh machine=sh/sh3 ;; +sh4*) base_machine=sh machine=sh/sh4 ;; +sparc | sparcv[67]) + base_machine=sparc machine=sparc/sparc32 ;; +sparcv8 | supersparc | hypersparc) + base_machine=sparc machine=sparc/sparc32/sparcv8 ;; +sparcv8plus | sparcv8plusa | sparcv9) + base_machine=sparc machine=sparc/sparc32/sparcv9 ;; +sparcv8plusb | sparcv9b) + base_machine=sparc machine=sparc/sparc32/sparcv9b ;; +sparc64 | ultrasparc) + base_machine=sparc machine=sparc/sparc64 ;; +sparc64b | ultrasparc3) + base_machine=sparc machine=sparc/sparc64/sparcv9b ;; +thumb*) base_machine=thumb machine=arm/thumb/$machine ;; +*) base_machine=$machine ;; +esac + + +if test "$base_machine" = "i386"; then + cat >>confdefs.h <<\_ACEOF +@%:@define USE_REGPARMS 1 +_ACEOF + +fi + +# Compute the list of sysdep directories for this configuration. +# This can take a while to compute. +sysdep_dir=$srcdir/sysdeps +echo "$as_me:$LINENO: checking sysdep dirs" >&5 +echo $ECHO_N "checking sysdep dirs... $ECHO_C" >&6 +# Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1. +os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`" + +case "$os" in +gnu*) + base_os=mach/hurd ;; +netbsd* | 386bsd* | freebsd* | bsdi*) + base_os=unix/bsd/bsd4.4 ;; +osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*) + base_os=unix/bsd ;; +sysv* | isc* | esix* | sco* | minix* | irix4* | linux*) + base_os=unix/sysv ;; +irix6*) + base_os=unix/sysv/irix6/$os ;; +solaris[2-9]*) + base_os=unix/sysv/sysv4 ;; +hpux*) + base_os=unix/sysv/hpux/$os ;; +aix4.3*) + base_os=unix/sysv/aix/aix4.3 ;; +none) + base_os=standalone ;; +*) + base_os='' ;; +esac + +# For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos. +tail=$os +ostry=$os +while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do + ostry="$ostry /$o" + tail=$o +done +o=`echo $tail | sed 's/[0-9]*$//'` +if test $o != $tail; then + ostry="$ostry /$o" +fi +# For linux-gnu, try linux-gnu, then linux. +o=`echo $tail | sed 's/-.*$//'` +if test $o != $tail; then + ostry="$ostry /$o" +fi + +# For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix. +base= +tail=$base_os +while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do + set $b + base="$base /$1" + tail="$2" +done + +# For sparc/sparc32, try sparc/sparc32 and then sparc. +mach= +tail=$machine +while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do + set $m + # Prepend the machine's FPU directory unless --without-fp. + if test "$with_fp" = yes; then + mach="$mach /$1/fpu" + else + mach="$mach /$1/nofpu" + fi + mach="$mach /$1" + tail="$2" +done + + +# Find what sysdep directories exist. +sysnames= +IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" +for d in $add_ons_pfx ''; do + for b in $base ''; do + for m0 in $mach ''; do + for v in /$vendor ''; do + test "$v" = / && continue + for o in /$ostry ''; do + test "$o" = / && continue + for m in $mach ''; do + if test "$m0$b$v$o$m"; then + try="${d}sysdeps$m0$b$v$o$m" + test -n "$enable_debug_configure" && + echo "$0 DEBUG: try $try" >&2 + if test -d $srcdir/$try; then + sysnames="$sysnames $try" + { test -n "$o" || test -n "$b"; } && os_used=t + { test -n "$m" || test -n "$m0"; } && machine_used=t + fi + fi + done + done + done + done + done +done +IFS="$ac_save_ifs" + +if test -z "$os_used" && test "$os" != none; then + { { echo "$as_me:$LINENO: error: Operating system $os is not supported." >&5 +echo "$as_me: error: Operating system $os is not supported." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "$machine_used" && test "$machine" != none; then + { { echo "$as_me:$LINENO: error: The $machine is not supported." >&5 +echo "$as_me: error: The $machine is not supported." >&2;} + { (exit 1); exit 1; }; } +fi + +# We have now validated the configuration. + + +# If using ELF, look for an `elf' subdirectory of each machine directory. +# We prepend these rather than inserting them whereever the machine appears +# because things specified by the machine's ELF ABI should override +# OS-specific things, and should always be the same for any OS on the +# machine (otherwise what's the point of an ABI?). +if test "$elf" = yes; then + elf_dirs= + for d in $add_ons_pfx ''; do + for m in $mach; do + if test -d $srcdir/${d}sysdeps$m/elf; then + elf_dirs="$elf_dirs ${d}sysdeps$m/elf" + fi + done + done + sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames" +fi + + +# Expand the list of system names into a full list of directories +# from each element's parent name and Implies file (if present). +set $sysnames +names= +while test $# -gt 0; do + name=$1 + shift + + case " $names " in *" $name "*) + # Already in the list. + continue + esac + + # Report each name as we discover it, so there is no long pause in output. + echo $ECHO_N "$name $ECHO_C" >&6 + + name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'` + + case $name in + /*) xsrcdir= ;; + *) xsrcdir=$srcdir/ ;; + esac + test -n "$enable_debug_configure" && + echo "DEBUG: name/Implies $xsrcdir$name/Implies" >&2 + + if test -f $xsrcdir$name/Implies; then + # Collect more names from the `Implies' file (removing comments). + implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`" + implied= + for x in $implied_candidate; do + found=no + if test -d $xsrcdir$name_base/$x; then + implied="$implied $name_base/$x"; + found=yes + fi + for d in $add_ons_pfx ''; do + try="${d}sysdeps/$x" + case $d in + /*) try_srcdir= ;; + *) try_srcdir=$srcdir/ ;; + esac + test -n "$enable_debug_configure" && + echo "DEBUG: $name implied $x try($d) {$try_srcdir}$try" >&2 + if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try; + then + implied="$implied $try" + found=yes + fi + done + if test $found = no; then + { echo "$as_me:$LINENO: WARNING: $name/Implies specifies nonexistent $x" >&5 +echo "$as_me: WARNING: $name/Implies specifies nonexistent $x" >&2;} + fi + done + else + implied= + fi + + # Add NAME to the list of names. + names="$names $name" + + # Find the parent of NAME, using the empty string if it has none. + parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`" + + # Add the names implied by NAME, and NAME's parent (if it has one), to + # the list of names to be processed (the argument list). We prepend the + # implied names to the list and append the parent. We want implied + # directories to come before further directories inferred from the + # configuration components; this ensures that for sysv4, unix/common + # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*) + # after sysv4). + sysnames="`echo $implied $* $parent`" + test -n "$sysnames" && set $sysnames +done + +# Add the default directories. +default_sysnames=sysdeps/generic +if test "$elf" = yes; then + default_sysnames="sysdeps/generic/elf $default_sysnames" +fi +sysnames="$names $default_sysnames" + +# The other names were emitted during the scan. +echo "$as_me:$LINENO: result: $default_sysnames" >&5 +echo "${ECHO_T}$default_sysnames" >&6 + + +### Locate tools. + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then + # The makefiles need to use a different form to find it in $srcdir. + INSTALL='\$(..)./scripts/install-sh -c' +fi +echo "$as_me:$LINENO: checking whether ln -s works" >&5 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +echo "${ECHO_T}no, using $LN_S" >&6 +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $@%:@ != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +EXEEXT= +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cc_g=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +@%:@ifndef __cplusplus + choke me +@%:@endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +@%:@include +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $host != $build; then + for ac_prog in gcc cc +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_BUILD_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$BUILD_CC"; then + ac_cv_prog_BUILD_CC="$BUILD_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_BUILD_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +BUILD_CC=$ac_cv_prog_BUILD_CC +if test -n "$BUILD_CC"; then + echo "$as_me:$LINENO: result: $BUILD_CC" >&5 +echo "${ECHO_T}$BUILD_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$BUILD_CC" && break +done + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +@%:@ifdef __STDC__ +@%:@ include +@%:@else +@%:@ include +@%:@endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +@%:@include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +@%:@ifdef __STDC__ +@%:@ include +@%:@else +@%:@ include +@%:@endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +@%:@include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +# We need the C++ compiler only for testing. +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + echo "$as_me:$LINENO: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +echo "${ECHO_T}$ac_ct_CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CXX" && break +done +test -n "$ac_ct_CXX" || ac_ct_CXX="g++" + + CXX=$ac_ct_CXX +fi + + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C++ compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 +GXX=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +CXXFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cxx_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cxx_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cxx_g=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +@%:@include +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +# Was a --with-binutils option given? +if test -n "$path_binutils"; then + # Make absolute; ensure a single trailing slash. + path_binutils=`(cd $path_binutils; pwd) | sed 's%/*$%/%'` + CC="$CC -B$path_binutils" +fi +AS=`$CC -print-prog-name=as` +LD=`$CC -print-prog-name=ld` +AR=`$CC -print-prog-name=ar` + +OBJDUMP=`$CC -print-prog-name=objdump` + + +# ranlib has to be treated a bit differently since it might not exist at all. +ac_ranlib=`$CC -print-prog-name=ranlib` +if test "x$ac_ranlib" = xranlib; then +# This extra check has to happen since gcc simply echos the parameter in +# case it cannot find the value in its own directories. +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +else + RANLIB=$ac_ranlib +fi + + +# Determine whether we are using GNU binutils. +echo "$as_me:$LINENO: checking whether $AS is GNU as" >&5 +echo $ECHO_N "checking whether $AS is GNU as... $ECHO_C" >&6 +if test "${libc_cv_prog_as_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Most GNU programs take a -v and spit out some text including +# the word 'GNU'. Some try to read stdin, so give them /dev/null. +if $AS -o conftest -v &1 | grep GNU > /dev/null 2>&1; then + libc_cv_prog_as_gnu=yes +else + libc_cv_prog_as_gnu=no +fi +rm -fr contest* +fi +echo "$as_me:$LINENO: result: $libc_cv_prog_as_gnu" >&5 +echo "${ECHO_T}$libc_cv_prog_as_gnu" >&6 +rm -f a.out +gnu_as=$libc_cv_prog_as_gnu + +echo "$as_me:$LINENO: checking whether $LD is GNU ld" >&5 +echo $ECHO_N "checking whether $LD is GNU ld... $ECHO_C" >&6 +if test "${libc_cv_prog_ld_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Most GNU programs take a -v and spit out some text including +# the word 'GNU'. Some try to read stdin, so give them /dev/null. +if $LD -o conftest -v &1 | grep GNU > /dev/null 2>&1; then + libc_cv_prog_ld_gnu=yes +else + libc_cv_prog_ld_gnu=no +fi +rm -fr contest* +fi +echo "$as_me:$LINENO: result: $libc_cv_prog_ld_gnu" >&5 +echo "${ECHO_T}$libc_cv_prog_ld_gnu" >&6 +gnu_ld=$libc_cv_prog_ld_gnu + + +# Accept binutils 2.13 or newer. +for ac_prog in $AS +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AS+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AS"; then + ac_cv_prog_AS="$AS" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AS="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AS=$ac_cv_prog_AS +if test -n "$AS"; then + echo "$as_me:$LINENO: result: $AS" >&5 +echo "${ECHO_T}$AS" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$AS" && break +done + +if test -z "$AS"; then + ac_verc_fail=yes +else + # Found it, now check the version. + echo "$as_me:$LINENO: checking version of $AS" >&5 +echo $ECHO_N "checking version of $AS... $ECHO_C" >&6 + ac_prog_version=`$AS --version 2>&1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 2.1[3-9]*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + + esac + echo "$as_me:$LINENO: result: $ac_prog_version" >&5 +echo "${ECHO_T}$ac_prog_version" >&6 +fi +if test $ac_verc_fail = yes; then + AS=: critic_missing="$critic_missing as" +fi + +for ac_prog in $LD +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$LD"; then + ac_cv_prog_LD="$LD" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_LD="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +LD=$ac_cv_prog_LD +if test -n "$LD"; then + echo "$as_me:$LINENO: result: $LD" >&5 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$LD" && break +done + +if test -z "$LD"; then + ac_verc_fail=yes +else + # Found it, now check the version. + echo "$as_me:$LINENO: checking version of $LD" >&5 +echo $ECHO_N "checking version of $LD... $ECHO_C" >&6 + ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*GNU ld.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 2.1[3-9]*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + + esac + echo "$as_me:$LINENO: result: $ac_prog_version" >&5 +echo "${ECHO_T}$ac_prog_version" >&6 +fi +if test $ac_verc_fail = yes; then + LD=: critic_missing="$critic_missing ld" +fi + + +# We need the physical current working directory. We cannot use the +# "pwd -P" shell builtin since that's not portable. Instead we try to +# find a pwd binary. Note that assigning to the PWD environment +# variable might have some interesting side effects, so we don't do +# that. +# Extract the first word of "pwd", so it can be a program name with args. +set dummy pwd; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_PWD_P+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $PWD_P in + [\\/]* | ?:[\\/]*) + ac_cv_path_PWD_P="$PWD_P" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PWD_P="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_PWD_P" && ac_cv_path_PWD_P="no" + ;; +esac +fi +PWD_P=$ac_cv_path_PWD_P + +if test -n "$PWD_P"; then + echo "$as_me:$LINENO: result: $PWD_P" >&5 +echo "${ECHO_T}$PWD_P" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +if test "$PWD_P" = no; then + { { echo "$as_me:$LINENO: error: *** A pwd binary could not be found." >&5 +echo "$as_me: error: *** A pwd binary could not be found." >&2;} + { (exit 1); exit 1; }; } +fi + +# These programs are version sensitive. + +for ac_prog in ${ac_tool_prefix}gcc ${ac_tool_prefix}cc +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break +done + +if test -z "$CC"; then + ac_verc_fail=yes +else + # Found it, now check the version. + echo "$as_me:$LINENO: checking version of $CC" >&5 +echo $ECHO_N "checking version of $CC... $ECHO_C" >&6 + ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 3.[2-9]*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + + esac + echo "$as_me:$LINENO: result: $ac_prog_version" >&5 +echo "${ECHO_T}$ac_prog_version" >&6 +fi +if test $ac_verc_fail = yes; then + critic_missing="$critic_missing gcc" +fi + +for ac_prog in gnumake gmake make +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_MAKE+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$MAKE"; then + ac_cv_prog_MAKE="$MAKE" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_MAKE="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +MAKE=$ac_cv_prog_MAKE +if test -n "$MAKE"; then + echo "$as_me:$LINENO: result: $MAKE" >&5 +echo "${ECHO_T}$MAKE" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$MAKE" && break +done + +if test -z "$MAKE"; then + ac_verc_fail=yes +else + # Found it, now check the version. + echo "$as_me:$LINENO: checking version of $MAKE" >&5 +echo $ECHO_N "checking version of $MAKE... $ECHO_C" >&6 + ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*GNU Make[^0-9]*\([0-9][0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 3.79* | 3.[89]*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + + esac + echo "$as_me:$LINENO: result: $ac_prog_version" >&5 +echo "${ECHO_T}$ac_prog_version" >&6 +fi +if test $ac_verc_fail = yes; then + critic_missing="$critic_missing make" +fi + + +for ac_prog in gnumsgfmt gmsgfmt msgfmt +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_MSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$MSGFMT"; then + ac_cv_prog_MSGFMT="$MSGFMT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_MSGFMT="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +MSGFMT=$ac_cv_prog_MSGFMT +if test -n "$MSGFMT"; then + echo "$as_me:$LINENO: result: $MSGFMT" >&5 +echo "${ECHO_T}$MSGFMT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$MSGFMT" && break +done + +if test -z "$MSGFMT"; then + ac_verc_fail=yes +else + # Found it, now check the version. + echo "$as_me:$LINENO: checking version of $MSGFMT" >&5 +echo $ECHO_N "checking version of $MSGFMT... $ECHO_C" >&6 + ac_prog_version=`$MSGFMT --version 2>&1 | sed -n 's/^.*GNU gettext.* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + + esac + echo "$as_me:$LINENO: result: $ac_prog_version" >&5 +echo "${ECHO_T}$ac_prog_version" >&6 +fi +if test $ac_verc_fail = yes; then + MSGFMT=: aux_missing="$aux_missing msgfmt" +fi + +for ac_prog in makeinfo +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_MAKEINFO+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$MAKEINFO"; then + ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_MAKEINFO="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +MAKEINFO=$ac_cv_prog_MAKEINFO +if test -n "$MAKEINFO"; then + echo "$as_me:$LINENO: result: $MAKEINFO" >&5 +echo "${ECHO_T}$MAKEINFO" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$MAKEINFO" && break +done + +if test -z "$MAKEINFO"; then + ac_verc_fail=yes +else + # Found it, now check the version. + echo "$as_me:$LINENO: checking version of $MAKEINFO" >&5 +echo $ECHO_N "checking version of $MAKEINFO... $ECHO_C" >&6 + ac_prog_version=`$MAKEINFO --version 2>&1 | sed -n 's/^.*GNU texinfo.* \([0-9][0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 4.*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + + esac + echo "$as_me:$LINENO: result: $ac_prog_version" >&5 +echo "${ECHO_T}$ac_prog_version" >&6 +fi +if test $ac_verc_fail = yes; then + MAKEINFO=: aux_missing="$aux_missing makeinfo" +fi + +for ac_prog in sed +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_SED+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$SED"; then + ac_cv_prog_SED="$SED" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_SED="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +SED=$ac_cv_prog_SED +if test -n "$SED"; then + echo "$as_me:$LINENO: result: $SED" >&5 +echo "${ECHO_T}$SED" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$SED" && break +done + +if test -z "$SED"; then + ac_verc_fail=yes +else + # Found it, now check the version. + echo "$as_me:$LINENO: checking version of $SED" >&5 +echo $ECHO_N "checking version of $SED... $ECHO_C" >&6 + ac_prog_version=`$SED --version 2>&1 | sed -n 's/^.*GNU sed version \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 3.0[2-9]*|3.[1-9]*|[4-9]*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + + esac + echo "$as_me:$LINENO: result: $ac_prog_version" >&5 +echo "${ECHO_T}$ac_prog_version" >&6 +fi +if test $ac_verc_fail = yes; then + SED=: aux_missing="$aux_missing sed" +fi + + +for ac_prog in autoconf +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AUTOCONF+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AUTOCONF"; then + ac_cv_prog_AUTOCONF="$AUTOCONF" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AUTOCONF="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AUTOCONF=$ac_cv_prog_AUTOCONF +if test -n "$AUTOCONF"; then + echo "$as_me:$LINENO: result: $AUTOCONF" >&5 +echo "${ECHO_T}$AUTOCONF" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$AUTOCONF" && break +done +test -n "$AUTOCONF" || AUTOCONF="no" + +case "x$AUTOCONF" in +xno|x|x:) AUTOCONF=no ;; +*) + echo "$as_me:$LINENO: checking whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works" >&5 +echo $ECHO_N "checking whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works... $ECHO_C" >&6 +if test "${libc_cv_autoconf_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then + libc_cv_autoconf_works=yes + else + libc_cv_autoconf_works=no + fi +fi +echo "$as_me:$LINENO: result: $libc_cv_autoconf_works" >&5 +echo "${ECHO_T}$libc_cv_autoconf_works" >&6 + test $libc_cv_autoconf_works = yes || AUTOCONF=no + ;; +esac +if test "x$with_cvs" = xyes && test "x$AUTOCONF" = xno; then + # If --without-cvs they probably won't change configure.in, so no complaints. + aux_missing="$aux_missing autoconf" +fi + +test -n "$critic_missing" && { { echo "$as_me:$LINENO: error: +*** These critical programs are missing or too old:$critic_missing +*** Check the INSTALL file for required versions." >&5 +echo "$as_me: error: +*** These critical programs are missing or too old:$critic_missing +*** Check the INSTALL file for required versions." >&2;} + { (exit 1); exit 1; }; } + +test -n "$aux_missing" && { echo "$as_me:$LINENO: WARNING: +*** These auxiliary programs are missing or incompatible versions:$aux_missing +*** some features will be disabled. +*** Check the INSTALL file for required versions." >&5 +echo "$as_me: WARNING: +*** These auxiliary programs are missing or incompatible versions:$aux_missing +*** some features will be disabled. +*** Check the INSTALL file for required versions." >&2;} + +# glibcbug.in wants to know the compiler version. +CCVERSION=`$CC -v 2>&1 | sed -n 's/gcc version //p'` + + +# if using special system headers, find out the compiler's sekrit +# header directory and add that to the list. NOTE: Only does the right +# thing on a system that doesn't need fixincludes. (Not presently a problem.) +if test -n "$sysheaders"; then + ccheaders=`$CC -print-file-name=include` + SYSINCLUDES="-nostdinc -isystem $ccheaders -isystem $sysheaders" +fi + + +# check if ranlib is necessary +echo "$as_me:$LINENO: checking whether ranlib is necessary" >&5 +echo $ECHO_N "checking whether ranlib is necessary... $ECHO_C" >&6 +if test "${libc_cv_ranlib_necessary+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.c <&5 +echo "${ECHO_T}$libc_cv_ranlib_necessary" >&6 +if test "$libc_cv_ranlib_necessary" = no; then + RANLIB=: +fi + +# Test if LD_LIBRARY_PATH contains the notation for the current directory +# since this would lead to problems installing/building glibc. +# LD_LIBRARY_PATH contains the current directory if one of the following +# is true: +# - one of the terminals (":" and ";") is the first or last sign +# - two terminals occur directly after each other +# - the path contains an element with a dot in it +echo "$as_me:$LINENO: checking LD_LIBRARY_PATH variable" >&5 +echo $ECHO_N "checking LD_LIBRARY_PATH variable... $ECHO_C" >&6 +case ${LD_LIBRARY_PATH} in + [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* ) + ld_library_path_setting="contains current directory" + ;; + *) + ld_library_path_setting="ok" + ;; +esac +echo "$as_me:$LINENO: result: $ld_library_path_setting" >&5 +echo "${ECHO_T}$ld_library_path_setting" >&6 +if test "$ld_library_path_setting" != "ok"; then +{ { echo "$as_me:$LINENO: error: +*** LD_LIBRARY_PATH shouldn't contain the current directory when +*** building glibc. Please change the environment variable +*** and run configure again." >&5 +echo "$as_me: error: +*** LD_LIBRARY_PATH shouldn't contain the current directory when +*** building glibc. Please change the environment variable +*** and run configure again." >&2;} + { (exit 1); exit 1; }; } +fi + +echo "$as_me:$LINENO: checking whether GCC supports -static-libgcc" >&5 +echo $ECHO_N "checking whether GCC supports -static-libgcc... $ECHO_C" >&6 +if test "${libc_cv_gcc_static_libgcc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if $CC -v -static-libgcc 2>&1 | grep -q 'unrecognized option.*static-libgcc'; then + libc_cv_gcc_static_libgcc= +else + libc_cv_gcc_static_libgcc=-static-libgcc +fi +fi +echo "$as_me:$LINENO: result: $libc_cv_gcc_static_libgcc" >&5 +echo "${ECHO_T}$libc_cv_gcc_static_libgcc" >&6 + + +# Extract the first word of "bash", so it can be a program name with args. +set dummy bash; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_BASH+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $BASH in + [\\/]* | ?:[\\/]*) + ac_cv_path_BASH="$BASH" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_BASH="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_BASH" && ac_cv_path_BASH="no" + ;; +esac +fi +BASH=$ac_cv_path_BASH + +if test -n "$BASH"; then + echo "$as_me:$LINENO: result: $BASH" >&5 +echo "${ECHO_T}$BASH" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +if test "$BASH" != no && + $BASH -c 'test "$BASH_VERSINFO" \ + && test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then + libc_cv_have_bash2=yes +else + libc_cv_have_bash2=no +fi + + +if test "$BASH" = no; then + # Extract the first word of "ksh", so it can be a program name with args. +set dummy ksh; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_KSH+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $KSH in + [\\/]* | ?:[\\/]*) + ac_cv_path_KSH="$KSH" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_KSH="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_KSH" && ac_cv_path_KSH="no" + ;; +esac +fi +KSH=$ac_cv_path_KSH + +if test -n "$KSH"; then + echo "$as_me:$LINENO: result: $KSH" >&5 +echo "${ECHO_T}$KSH" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + if test "$KSH" = no; then + libc_cv_have_ksh=no + else + libc_cv_have_ksh=yes + fi +else + KSH="$BASH" + + libc_cv_have_ksh=yes +fi + + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$AWK" && break +done + +# Extract the first word of "perl", so it can be a program name with args. +set dummy perl; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_PERL+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $PERL in + [\\/]* | ?:[\\/]*) + ac_cv_path_PERL="$PERL" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_PERL" && ac_cv_path_PERL="no" + ;; +esac +fi +PERL=$ac_cv_path_PERL + +if test -n "$PERL"; then + echo "$as_me:$LINENO: result: $PERL" >&5 +echo "${ECHO_T}$PERL" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +if test "$PERL" != no && + (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then + PERL=no +fi +# Extract the first word of "install-info", so it can be a program name with args. +set dummy install-info; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_INSTALL_INFO+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $INSTALL_INFO in + [\\/]* | ?:[\\/]*) + ac_cv_path_INSTALL_INFO="$INSTALL_INFO" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_dummy="$PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin" +for as_dir in $as_dummy +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_INSTALL_INFO="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_INSTALL_INFO" && ac_cv_path_INSTALL_INFO="no" + ;; +esac +fi +INSTALL_INFO=$ac_cv_path_INSTALL_INFO + +if test -n "$INSTALL_INFO"; then + echo "$as_me:$LINENO: result: $INSTALL_INFO" >&5 +echo "${ECHO_T}$INSTALL_INFO" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +if test "$INSTALL_INFO" != "no"; then +echo "$as_me:$LINENO: checking for old Debian install-info" >&5 +echo $ECHO_N "checking for old Debian install-info... $ECHO_C" >&6 +if test "${libc_cv_old_debian_install_info+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + mkdir conftest.d + # There is a hard ^_ on the next line. I am open to better ideas. + (echo '' + echo 'File: dir Node: Top This is the top of the INFO tree' + echo '* Menu:') >conftest.d/dir + (echo 'INFO-DIR-SECTION i-d-s works' + echo 'START-INFO-DIR-ENTRY' + echo '* Prog: (prog). Program.' + echo 'END-INFO-DIR-ENTRY') >conftest.d/prog.info + if $INSTALL_INFO --info-dir=conftest.d conftest.d/prog.info >&5 2>&1 + then + if grep -s 'i-d-s works' conftest.d/dir >/dev/null + then libc_cv_old_debian_install_info=no + else libc_cv_old_debian_install_info=yes + fi + else libc_cv_old_debian_install_info=no testfailed=t + fi + rm -fr conftest.d +fi +echo "$as_me:$LINENO: result: $libc_cv_old_debian_install_info" >&5 +echo "${ECHO_T}$libc_cv_old_debian_install_info" >&6 +if test -n "$testfailed" +then { echo "$as_me:$LINENO: WARNING: install-info errored out, check config.log" >&5 +echo "$as_me: WARNING: install-info errored out, check config.log" >&2;} +fi +OLD_DEBIAN_INSTALL_INFO=$libc_cv_old_debian_install_info +fi + + +# Extract the first word of "bison", so it can be a program name with args. +set dummy bison; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_BISON+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $BISON in + [\\/]* | ?:[\\/]*) + ac_cv_path_BISON="$BISON" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_dummy="$PATH:/usr/local/bin:/usr/bin:/bin" +for as_dir in $as_dummy +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_BISON="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_BISON" && ac_cv_path_BISON="no" + ;; +esac +fi +BISON=$ac_cv_path_BISON + +if test -n "$BISON"; then + echo "$as_me:$LINENO: result: $BISON" >&5 +echo "${ECHO_T}$BISON" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + +echo "$as_me:$LINENO: checking for signed size_t type" >&5 +echo $ECHO_N "checking for signed size_t type... $ECHO_C" >&6 +if test "${libc_cv_signed_size_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + echo '#include +FOOBAR __SIZE_TYPE__ FOOBAR' > conftest.c +if eval "$ac_cpp conftest.c 2>/dev/null" \ +| grep '^FOOBAR.*unsigned.*FOOBAR$' >/dev/null; then + libc_cv_signed_size_t=no +else + libc_cv_signed_size_t=yes +fi +rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_signed_size_t" >&5 +echo "${ECHO_T}$libc_cv_signed_size_t" >&6 +if test $libc_cv_signed_size_t = yes; then + cat >> confdefs.h <<\EOF +#undef __SIZE_TYPE__ +#define __SIZE_TYPE__ unsigned +EOF +fi + + +echo "$as_me:$LINENO: checking for libc-friendly stddef.h" >&5 +echo $ECHO_N "checking for libc-friendly stddef.h... $ECHO_C" >&6 +if test "${libc_cv_friendly_stddef+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#define __need_size_t +#define __need_wchar_t +#include +#define __need_NULL +#include +int +main () +{ +size_t size; wchar_t wchar; +#ifdef offsetof +#error stddef.h ignored __need_* +#endif +if (&size == NULL || &wchar == NULL) abort (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + libc_cv_friendly_stddef=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +libc_cv_friendly_stddef=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $libc_cv_friendly_stddef" >&5 +echo "${ECHO_T}$libc_cv_friendly_stddef" >&6 +if test $libc_cv_friendly_stddef = yes; then + config_vars="$config_vars +override stddef.h = # The installed seems to be libc-friendly." +fi + +echo "$as_me:$LINENO: checking whether we need to use -P to assemble .S files" >&5 +echo $ECHO_N "checking whether we need to use -P to assemble .S files... $ECHO_C" >&6 +if test "${libc_cv_need_minus_P+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.S <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + libc_cv_need_minus_P=no +else + libc_cv_need_minus_P=yes +fi +rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_need_minus_P" >&5 +echo "${ECHO_T}$libc_cv_need_minus_P" >&6 +if test $libc_cv_need_minus_P = yes; then + config_vars="$config_vars +asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives." +fi + +echo "$as_me:$LINENO: checking whether .text pseudo-op must be used" >&5 +echo $ECHO_N "checking whether .text pseudo-op must be used... $ECHO_C" >&6 +if test "${libc_cv_dot_text+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.s <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + libc_cv_dot_text=.text +fi +rm -f conftest* +fi + +if test -z "$libc_cv_dot_text"; then + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +else + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +fi + +echo "$as_me:$LINENO: checking for assembler global-symbol directive" >&5 +echo $ECHO_N "checking for assembler global-symbol directive... $ECHO_C" >&6 +if test "${libc_cv_asm_global_directive+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + libc_cv_asm_global_directive=UNKNOWN +for ac_globl in .globl .global .EXPORT; do + cat > conftest.s <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + libc_cv_asm_global_directive=${ac_globl} + fi + rm -f conftest* + test $libc_cv_asm_global_directive != UNKNOWN && break +done +fi +echo "$as_me:$LINENO: result: $libc_cv_asm_global_directive" >&5 +echo "${ECHO_T}$libc_cv_asm_global_directive" >&6 +if test $libc_cv_asm_global_directive = UNKNOWN; then + { { echo "$as_me:$LINENO: error: cannot determine asm global directive" >&5 +echo "$as_me: error: cannot determine asm global directive" >&2;} + { (exit 1); exit 1; }; } +else + cat >>confdefs.h <<_ACEOF +@%:@define ASM_GLOBAL_DIRECTIVE ${libc_cv_asm_global_directive} +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for .set assembler directive" >&5 +echo $ECHO_N "checking for .set assembler directive... $ECHO_C" >&6 +if test "${libc_cv_asm_set_directive+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.s < conftest1.c <<\EOF +extern int glibc_conftest_frobozz; +void _start() { glibc_conftest_frobozz = 1; } +EOF +if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \ + -nostartfiles -nostdlib \ + -o conftest conftest.s conftest1.c 1>&5 2>&5; then + libc_cv_asm_set_directive=yes +else + libc_cv_asm_set_directive=no +fi +rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_asm_set_directive" >&5 +echo "${ECHO_T}$libc_cv_asm_set_directive" >&6 +if test $libc_cv_asm_set_directive = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_ASM_SET_DIRECTIVE 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for assembler .type directive prefix" >&5 +echo $ECHO_N "checking for assembler .type directive prefix... $ECHO_C" >&6 +if test "${libc_cv_asm_type_prefix+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + libc_cv_asm_type_prefix=no +for ac_try_prefix in '@' '%' '#'; do + cat > conftest.s <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + libc_cv_asm_type_prefix=${ac_try_prefix} + fi + rm -f conftest* + test "x$libc_cv_asm_type_prefix" != xno && break +done +fi +echo "$as_me:$LINENO: result: $libc_cv_asm_type_prefix" >&5 +echo "${ECHO_T}$libc_cv_asm_type_prefix" >&6 +if test "x$libc_cv_asm_type_prefix" != xno; then + cat >>confdefs.h <<_ACEOF +@%:@define ASM_TYPE_DIRECTIVE_PREFIX ${libc_cv_asm_type_prefix} +_ACEOF + +fi + +# The Aix ld uses global .symbol_names instead of symbol_names. +# Unfortunately also used in the PPC64 ELF ABI. +case "${os}${machine}" in +aix4.3* | linux*powerpc/powerpc64*) + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_ASM_GLOBAL_DOT_NAME 1 +_ACEOF + +esac + +echo "$as_me:$LINENO: checking for .symver assembler directive" >&5 +echo $ECHO_N "checking for .symver assembler directive... $ECHO_C" >&6 +if test "${libc_cv_asm_symver_directive+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.s <&5 2>&5; then + libc_cv_asm_symver_directive=yes +else + libc_cv_asm_symver_directive=no +fi +rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_asm_symver_directive" >&5 +echo "${ECHO_T}$libc_cv_asm_symver_directive" >&6 +echo "$as_me:$LINENO: checking for ld --version-script" >&5 +echo $ECHO_N "checking for ld --version-script... $ECHO_C" >&6 +if test "${libc_cv_ld_version_script_option+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test $libc_cv_asm_symver_directive = yes; then + cat > conftest.s < conftest.map <&5 2>&5; then + if { ac_try='${CC-cc} $CFLAGS $LDFLAGS -shared + -o conftest.so conftest.o + -nostartfiles -nostdlib + -Wl,--version-script,conftest.map + 1>&5' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; + then + libc_cv_ld_version_script_option=yes + else + libc_cv_ld_version_script_option=no + fi + else + libc_cv_ld_version_script_option=no + fi +else + libc_cv_ld_version_script_option=no +fi +rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_ld_version_script_option" >&5 +echo "${ECHO_T}$libc_cv_ld_version_script_option" >&6 +if test $shared != no && + test $libc_cv_asm_symver_directive = yes && + test $libc_cv_ld_version_script_option = yes && + test $enable_versioning = yes; then + VERSIONING=yes + cat >>confdefs.h <<\_ACEOF +@%:@define DO_VERSIONING 1 +_ACEOF + +else + VERSIONING=no +fi + + +if test $elf = yes && test $shared != no && test $VERSIONING = no; then + echo "\ +*** WARNING: You should not compile GNU libc without versioning. Not using +*** versioning will introduce incompatibilities so that old binaries +*** will not run anymore. +*** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)." +fi +if test $elf = yes; then + echo "$as_me:$LINENO: checking for .previous assembler directive" >&5 +echo $ECHO_N "checking for .previous assembler directive... $ECHO_C" >&6 +if test "${libc_cv_asm_previous_directive+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.s <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + libc_cv_asm_previous_directive=yes + else + libc_cv_asm_previous_directive=no + fi + rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_asm_previous_directive" >&5 +echo "${ECHO_T}$libc_cv_asm_previous_directive" >&6 + if test $libc_cv_asm_previous_directive = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_ASM_PREVIOUS_DIRECTIVE 1 +_ACEOF + + else + echo "$as_me:$LINENO: checking for .popsection assembler directive" >&5 +echo $ECHO_N "checking for .popsection assembler directive... $ECHO_C" >&6 +if test "${libc_cv_asm_popsection_directive+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.s <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + libc_cv_asm_popsection_directive=yes + else + libc_cv_asm_popsection_directive=no + fi + rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_asm_popsection_directive" >&5 +echo "${ECHO_T}$libc_cv_asm_popsection_directive" >&6 + if test $libc_cv_asm_popsection_directive = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_ASM_POPSECTION_DIRECTIVE 1 +_ACEOF + + fi + fi + echo "$as_me:$LINENO: checking for .protected and .hidden assembler directive" >&5 +echo $ECHO_N "checking for .protected and .hidden assembler directive... $ECHO_C" >&6 +if test "${libc_cv_asm_protected_directive+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.s <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + libc_cv_asm_protected_directive=yes + else + libc_cv_asm_protected_directive=no + fi + rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_asm_protected_directive" >&5 +echo "${ECHO_T}$libc_cv_asm_protected_directive" >&6 + + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_PROTECTED 1 +_ACEOF + + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_HIDDEN 1 +_ACEOF + + + if test $libc_cv_asm_protected_directive = yes; then + echo "$as_me:$LINENO: checking whether __attribute__((visibility())) is supported" >&5 +echo $ECHO_N "checking whether __attribute__((visibility())) is supported... $ECHO_C" >&6 +if test "${libc_cv_visibility_attribute+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.c <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + if grep '\.hidden.*foo' conftest.s >/dev/null; then + if grep '\.protected.*bar' conftest.s >/dev/null; then + libc_cv_visibility_attribute=yes + fi + fi + fi + rm -f conftest.cs + +fi +echo "$as_me:$LINENO: result: $libc_cv_visibility_attribute" >&5 +echo "${ECHO_T}$libc_cv_visibility_attribute" >&6 + if test $libc_cv_visibility_attribute = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_VISIBILITY_ATTRIBUTE 1 +_ACEOF + + fi + fi + + if test $libc_cv_visibility_attribute = yes; then + echo "$as_me:$LINENO: checking for broken __attribute__((visibility()))" >&5 +echo $ECHO_N "checking for broken __attribute__((visibility()))... $ECHO_C" >&6 +if test "${libc_cv_broken_visibility_attribute+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.c <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + if grep '\.hidden[ _]foo' conftest.s >/dev/null; then + libc_cv_broken_visibility_attribute=no + fi + fi + rm -f conftest.c conftest.s + +fi +echo "$as_me:$LINENO: result: $libc_cv_broken_visibility_attribute" >&5 +echo "${ECHO_T}$libc_cv_broken_visibility_attribute" >&6 + if test $libc_cv_broken_visibility_attribute = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_BROKEN_VISIBILITY_ATTRIBUTE 1 +_ACEOF + + fi + fi + + echo "$as_me:$LINENO: checking for broken __attribute__((alias()))" >&5 +echo $ECHO_N "checking for broken __attribute__((alias()))... $ECHO_C" >&6 +if test "${libc_cv_broken_alias_attribute+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.c <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + if grep 'xyzzy' conftest.s >/dev/null && + grep 'abccb' conftest.s >/dev/null; then + libc_cv_broken_alias_attribute=no + fi + fi + rm -f conftest.c conftest.s + +fi +echo "$as_me:$LINENO: result: $libc_cv_broken_alias_attribute" >&5 +echo "${ECHO_T}$libc_cv_broken_alias_attribute" >&6 + if test $libc_cv_broken_alias_attribute = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_BROKEN_ALIAS_ATTRIBUTE 1 +_ACEOF + + fi + + if test $libc_cv_visibility_attribute = yes -a $gnu_ld = yes; then + echo "$as_me:$LINENO: checking whether to put _rtld_local into .sdata section" >&5 +echo $ECHO_N "checking whether to put _rtld_local into .sdata section... $ECHO_C" >&6 +if test "${libc_cv_have_sdata_section+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + echo "int i;" > conftest.c + libc_cv_have_sdata_section=no + if ${CC-cc} $LDFLAGS -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \ + | grep '\.sdata' >/dev/null; then + libc_cv_have_sdata_section=yes + fi + rm -f conftest.c conftest.so + +fi +echo "$as_me:$LINENO: result: $libc_cv_have_sdata_section" >&5 +echo "${ECHO_T}$libc_cv_have_sdata_section" >&6 + if test $libc_cv_have_sdata_section = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_SDATA_SECTION 1 +_ACEOF + + fi + fi + + echo "$as_me:$LINENO: checking for .preinit_array/.init_array/.fini_array support" >&5 +echo $ECHO_N "checking for .preinit_array/.init_array/.fini_array support... $ECHO_C" >&6 +if test "${libc_cv_initfinit_array+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.c <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } + then + if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then + libc_cv_initfinit_array=yes + else + libc_cv_initfinit_array=no + fi + else + libc_cv_initfinit_array=no + fi + rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_initfinit_array" >&5 +echo "${ECHO_T}$libc_cv_initfinit_array" >&6 + + if test $libc_cv_initfinit_array = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_INITFINI_ARRAY 1 +_ACEOF + + fi + + echo "$as_me:$LINENO: checking for -z nodelete option" >&5 +echo $ECHO_N "checking for -z nodelete option... $ECHO_C" >&6 +if test "${libc_cv_z_nodelete+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.c <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } + then + libc_cv_z_nodelete=yes + else + libc_cv_z_nodelete=no + fi + rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_z_nodelete" >&5 +echo "${ECHO_T}$libc_cv_z_nodelete" >&6 + + + echo "$as_me:$LINENO: checking for -z nodlopen option" >&5 +echo $ECHO_N "checking for -z nodlopen option... $ECHO_C" >&6 +if test "${libc_cv_z_nodlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.c <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } + then + libc_cv_z_nodlopen=yes + else + libc_cv_z_nodlopen=no + fi + rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_z_nodlopen" >&5 +echo "${ECHO_T}$libc_cv_z_nodlopen" >&6 + + + echo "$as_me:$LINENO: checking for -z initfirst option" >&5 +echo $ECHO_N "checking for -z initfirst option... $ECHO_C" >&6 +if test "${libc_cv_z_initfirst+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.c <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } + then + libc_cv_z_initfirst=yes + else + libc_cv_z_initfirst=no + fi + rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_z_initfirst" >&5 +echo "${ECHO_T}$libc_cv_z_initfirst" >&6 + + + echo "$as_me:$LINENO: checking for -Bgroup option" >&5 +echo $ECHO_N "checking for -Bgroup option... $ECHO_C" >&6 +if test "${libc_cv_Bgroup+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.c <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } + then + libc_cv_Bgroup=yes + else + libc_cv_Bgroup=no + fi + rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_Bgroup" >&5 +echo "${ECHO_T}$libc_cv_Bgroup" >&6 + + + ASFLAGS_config= + echo "$as_me:$LINENO: checking whether --noexecstack is desirable for .S files" >&5 +echo $ECHO_N "checking whether --noexecstack is desirable for .S files... $ECHO_C" >&6 +if test "${libc_cv_as_noexecstack+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.c <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } \ + && grep -q .note.GNU-stack conftest.s \ + && { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -Wa,--noexecstack + -c -o conftest.o conftest.s 1>&5' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } + then + libc_cv_as_noexecstack=yes + else + libc_cv_as_noexecstack=no + fi + rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_as_noexecstack" >&5 +echo "${ECHO_T}$libc_cv_as_noexecstack" >&6 + if test $libc_cv_as_noexecstack = yes; then + ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack" + fi + + echo "$as_me:$LINENO: checking for -z combreloc" >&5 +echo $ECHO_N "checking for -z combreloc... $ECHO_C" >&6 +if test "${libc_cv_z_combreloc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.c <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } + then + if readelf -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then + libc_cv_z_combreloc=yes + else + libc_cv_z_combreloc=no + fi + else + libc_cv_z_combreloc=no + fi + rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_z_combreloc" >&5 +echo "${ECHO_T}$libc_cv_z_combreloc" >&6 + if test "$libc_cv_z_combreloc" = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_Z_COMBRELOC 1 +_ACEOF + + fi +fi + + +if test $elf != yes; then + echo "$as_me:$LINENO: checking for .init and .fini sections" >&5 +echo $ECHO_N "checking for .init and .fini sections... $ECHO_C" >&6 +if test "${libc_cv_have_initfini+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +asm (".section .init"); + asm (".section .fini"); + asm ("${libc_cv_dot_text}"); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + libc_cv_have_initfini=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +libc_cv_have_initfini=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $libc_cv_have_initfini" >&5 +echo "${ECHO_T}$libc_cv_have_initfini" >&6 + if test $libc_cv_have_initfini = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_INITFINI 1 +_ACEOF + + fi +fi + +if test $elf = yes -a $gnu_ld = yes; then + echo "$as_me:$LINENO: checking whether cc puts quotes around section names" >&5 +echo $ECHO_N "checking whether cc puts quotes around section names... $ECHO_C" >&6 +if test "${libc_cv_have_section_quotes+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.c </dev/null; then + libc_cv_have_section_quotes=yes + else + libc_cv_have_section_quotes=no + fi + else + libc_cv_have_section_quotes=unknown + fi + rm -f conftest.cs + +fi +echo "$as_me:$LINENO: result: $libc_cv_have_section_quotes" >&5 +echo "${ECHO_T}$libc_cv_have_section_quotes" >&6 + if test $libc_cv_have_section_quotes = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_SECTION_QUOTES 1 +_ACEOF + + fi +fi + + + +if test $elf = yes; then + libc_cv_asm_underscores=no +else + if test $ac_cv_prog_cc_works = yes; then + echo "$as_me:$LINENO: checking for _ prefix on C symbol names" >&5 +echo $ECHO_N "checking for _ prefix on C symbol names... $ECHO_C" >&6 +if test "${libc_cv_asm_underscores+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +asm ("_glibc_foobar:"); +int +main () +{ +glibc_foobar (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + libc_cv_asm_underscores=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +libc_cv_asm_underscores=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $libc_cv_asm_underscores" >&5 +echo "${ECHO_T}$libc_cv_asm_underscores" >&6 + else + echo "$as_me:$LINENO: checking for _ prefix on C symbol names" >&5 +echo $ECHO_N "checking for _ prefix on C symbol names... $ECHO_C" >&6 +if test "${libc_cv_asm_underscores+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + if grep _underscore_test conftest* >/dev/null; then + rm -f conftest* + libc_cv_asm_underscores=yes + else + rm -f conftest* + libc_cv_asm_underscores=no + fi +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -f conftest* + libc_cv_asm_underscores=no +fi +rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_asm_underscores" >&5 +echo "${ECHO_T}$libc_cv_asm_underscores" >&6 + fi +fi +if test $libc_cv_asm_underscores = no; then + cat >>confdefs.h <<\_ACEOF +@%:@define NO_UNDERSCORES 1 +_ACEOF + +fi + +if test $elf = yes; then + libc_cv_weak_symbols=yes +fi + +echo "$as_me:$LINENO: checking for assembler .weak directive" >&5 +echo $ECHO_N "checking for assembler .weak directive... $ECHO_C" >&6 +if test "${libc_cv_asm_weak_directive+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.s <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + libc_cv_asm_weak_directive=yes +else + libc_cv_asm_weak_directive=no +fi +rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_asm_weak_directive" >&5 +echo "${ECHO_T}$libc_cv_asm_weak_directive" >&6 + +if test $libc_cv_asm_weak_directive = no; then + echo "$as_me:$LINENO: checking for assembler .weakext directive" >&5 +echo $ECHO_N "checking for assembler .weakext directive... $ECHO_C" >&6 +if test "${libc_cv_asm_weakext_directive+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.s <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + libc_cv_asm_weakext_directive=yes + else + libc_cv_asm_weakext_directive=no + fi + rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_asm_weakext_directive" >&5 +echo "${ECHO_T}$libc_cv_asm_weakext_directive" >&6 + +fi # no .weak + +if test $libc_cv_asm_weak_directive = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_ASM_WEAK_DIRECTIVE 1 +_ACEOF + +elif test $libc_cv_asm_weakext_directive = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_ASM_WEAKEXT_DIRECTIVE 1 +_ACEOF + +fi + +case "${host_cpu}-${host_os}" in + cris*) + libc_cv_asm_line_sep='@' + cat >>confdefs.h <<_ACEOF +@%:@define ASM_LINE_SEP $libc_cv_asm_line_sep +_ACEOF + + ;; + hppa*linux*) + echo "$as_me:$LINENO: checking for assembler line separator" >&5 +echo $ECHO_N "checking for assembler line separator... $ECHO_C" >&6 +if test "${libc_cv_asm_line_sep+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.s <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + libc_cv_asm_line_sep='!' + else + if test -z "$enable_hacker_mode"; then + echo "*** You need a newer assembler to compile glibc" + rm -f conftest* + exit 1 + fi + libc_cv_asm_line_sep=';' + fi + rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_asm_line_sep" >&5 +echo "${ECHO_T}$libc_cv_asm_line_sep" >&6 + cat >>confdefs.h <<_ACEOF +@%:@define ASM_LINE_SEP $libc_cv_asm_line_sep +_ACEOF + + ;; +esac + +echo "$as_me:$LINENO: checking whether CFI directives are supported" >&5 +echo $ECHO_N "checking whether CFI directives are supported... $ECHO_C" >&6 +if test "${libc_cv_asm_cfi_directives+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.s <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + libc_cv_asm_cfi_directives=yes +else + libc_cv_asm_cfi_directives=no +fi +rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_asm_cfi_directives" >&5 +echo "${ECHO_T}$libc_cv_asm_cfi_directives" >&6 +if test $libc_cv_asm_cfi_directives = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_ASM_CFI_DIRECTIVES 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking if -g produces usable source locations for assembler-with-cpp" >&5 +echo $ECHO_N "checking if -g produces usable source locations for assembler-with-cpp... $ECHO_C" >&6 +if test "${libc_cv_cpp_asm_debuginfo+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.S <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + ac_pattern='conftest\.S' + { ac_try='readelf --debug-dump=line conftest.o | + grep $ac_pattern 1>&5' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + libc_cv_cpp_asm_debuginfo=yes +else + libc_cv_cpp_asm_debuginfo=no +fi +rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_cpp_asm_debuginfo" >&5 +echo "${ECHO_T}$libc_cv_cpp_asm_debuginfo" >&6 +if test $libc_cv_cpp_asm_debuginfo = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_CPP_ASM_DEBUGINFO 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for ld --no-whole-archive" >&5 +echo $ECHO_N "checking for ld --no-whole-archive... $ECHO_C" >&6 +if test "${libc_cv_ld_no_whole_archive+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.c <<\EOF +_start () {} +int __eh_pc; +__throw () {} +EOF +if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS + -nostdlib -nostartfiles -Wl,--no-whole-archive + -o conftest conftest.c 1>&5' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + libc_cv_ld_no_whole_archive=yes +else + libc_cv_ld_no_whole_archive=no +fi +rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_ld_no_whole_archive" >&5 +echo "${ECHO_T}$libc_cv_ld_no_whole_archive" >&6 +if test $libc_cv_ld_no_whole_archive = yes; then + no_whole_archive=-Wl,--no-whole-archive +fi + +echo "$as_me:$LINENO: checking for gcc -fexceptions" >&5 +echo $ECHO_N "checking for gcc -fexceptions... $ECHO_C" >&6 +if test "${libc_cv_gcc_exceptions+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.c <<\EOF +_start () {} +int __eh_pc; +__throw () {} +EOF +if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS + -nostdlib -nostartfiles -fexceptions + -o conftest conftest.c 1>&5' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + libc_cv_gcc_exceptions=yes +else + libc_cv_gcc_exceptions=no +fi +rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_gcc_exceptions" >&5 +echo "${ECHO_T}$libc_cv_gcc_exceptions" >&6 +if test $libc_cv_gcc_exceptions = yes; then + exceptions=-fexceptions +fi + +if test "$host_cpu" = powerpc ; then +# Check for a bug present in at least versions 2.8.x of GCC +# and versions 1.0.x of EGCS. +echo "$as_me:$LINENO: checking whether clobbering cr0 causes problems" >&5 +echo $ECHO_N "checking whether clobbering cr0 causes problems... $ECHO_C" >&6 +if test "${libc_cv_c_asmcr0_bug+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +int tester(int x) { asm ("" : : : "cc"); return x & 123; } +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + libc_cv_c_asmcr0_bug='no' +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +libc_cv_c_asmcr0_bug='yes' +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $libc_cv_c_asmcr0_bug" >&5 +echo "${ECHO_T}$libc_cv_c_asmcr0_bug" >&6 +if test "$libc_cv_c_asmcr0_bug" != 'no'; then + cat >>confdefs.h <<\_ACEOF +@%:@define BROKEN_PPC_ASM_CR0 1 +_ACEOF + +fi +fi + +echo "$as_me:$LINENO: checking for DWARF2 unwind info support" >&5 +echo $ECHO_N "checking for DWARF2 unwind info support... $ECHO_C" >&6 +if test "${libc_cv_gcc_dwarf2_unwind_info+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.c <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } || + { ac_try='$libc_unwind_check -lgcc_eh -lgcc >&5' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } +then + if $libc_unwind_check -v 2>&1 >/dev/null \ + | grep -q -- --eh-frame-hdr; then + libc_cv_gcc_dwarf2_unwind_info=no_registry_needed + else + libc_cv_gcc_dwarf2_unwind_info=static + fi +else + libc_cv_gcc_dwarf2_unwind_info=no +fi +if test $libc_cv_gcc_dwarf2_unwind_info = no; then + if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -DCHECK__register_frame + $LDFLAGS -nostdlib -nostartfiles + -o conftest conftest.c -lgcc >&5' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + libc_cv_gcc_dwarf2_unwind_info=yes + else + libc_cv_gcc_dwarf2_unwind_info=no + fi +fi +rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_gcc_dwarf2_unwind_info" >&5 +echo "${ECHO_T}$libc_cv_gcc_dwarf2_unwind_info" >&6 +case $libc_cv_gcc_dwarf2_unwind_info in +yes) + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_DWARF2_UNWIND_INFO 1 +_ACEOF + + ;; +static) + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_DWARF2_UNWIND_INFO 1 +_ACEOF + + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_DWARF2_UNWIND_INFO_STATIC 1 +_ACEOF + + ;; +esac + +echo "$as_me:$LINENO: checking for __builtin_expect" >&5 +echo $ECHO_N "checking for __builtin_expect... $ECHO_C" >&6 +if test "${libc_cv_gcc_builtin_expect+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.c <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + libc_cv_gcc_builtin_expect=yes +else + libc_cv_gcc_builtin_expect=no +fi +rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_gcc_builtin_expect" >&5 +echo "${ECHO_T}$libc_cv_gcc_builtin_expect" >&6 +if test "$libc_cv_gcc_builtin_expect" = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_BUILTIN_EXPECT 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for __builtin_memset" >&5 +echo $ECHO_N "checking for __builtin_memset... $ECHO_C" >&6 +if test "${libc_cv_gcc_builtin_memset+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.c <<\EOF +void zero (void *x) +{ + __builtin_memset (x, 0, 1000); +} +EOF +if { ac_try='${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; +then + libc_cv_gcc_builtin_memset=no +else + libc_cv_gcc_builtin_memset=yes +fi +rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_gcc_builtin_memset" >&5 +echo "${ECHO_T}$libc_cv_gcc_builtin_memset" >&6 +if test "$libc_cv_gcc_builtin_memset" = yes ; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_BUILTIN_MEMSET 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for redirection of built-in functions" >&5 +echo $ECHO_N "checking for redirection of built-in functions... $ECHO_C" >&6 +if test "${libc_cv_gcc_builtin_redirection+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.c <<\EOF +extern char *strstr (const char *, const char *) __asm ("my_strstr"); +char *foo (const char *a, const char *b) +{ + return __builtin_strstr (a, b); +} +EOF +if { ac_try='${CC-cc} -O3 -S conftest.c -o - | fgrep "my_strstr" > /dev/null' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; +then + libc_cv_gcc_builtin_redirection=yes +else + libc_cv_gcc_builtin_redirection=no +fi +rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_gcc_builtin_redirection" >&5 +echo "${ECHO_T}$libc_cv_gcc_builtin_redirection" >&6 +if test "$libc_cv_gcc_builtin_redirection" = yes ; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_BUILTIN_REDIRECTION 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for local label subtraction" >&5 +echo $ECHO_N "checking for local label subtraction... $ECHO_C" >&6 +if test "${libc_cv_gcc_subtract_local_labels+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.c <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + libc_cv_gcc_subtract_local_labels=yes +else + libc_cv_gcc_subtract_local_labels=no +fi +rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_gcc_subtract_local_labels" >&5 +echo "${ECHO_T}$libc_cv_gcc_subtract_local_labels" >&6 +if test "$libc_cv_gcc_subtract_local_labels" = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_SUBTRACT_LOCAL_LABELS 1 +_ACEOF + +fi + +if test "x$use__thread" != xno; then + echo "$as_me:$LINENO: checking for __thread" >&5 +echo $ECHO_N "checking for __thread... $ECHO_C" >&6 +if test "${libc_cv_gcc___thread+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.c <<\EOF +__thread int a = 42; +EOF + if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c >&5' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + libc_cv_gcc___thread=yes + else + libc_cv_gcc___thread=no + fi + rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_gcc___thread" >&5 +echo "${ECHO_T}$libc_cv_gcc___thread" >&6 + if test "$libc_cv_gcc___thread" = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE___THREAD 1 +_ACEOF + + fi +else + libc_cv_gcc___thread=no +fi + +if test "$libc_cv_gcc___thread" = yes; then + echo "$as_me:$LINENO: checking for tls_model attribute" >&5 +echo $ECHO_N "checking for tls_model attribute... $ECHO_C" >&6 +if test "${libc_cv_gcc_tls_model_attr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.c <<\EOF +extern __thread int a __attribute__((tls_model ("initial-exec"))); +EOF + if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -S -Werror conftest.c >&5' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + libc_cv_gcc_tls_model_attr=yes + else + libc_cv_gcc_tls_model_attr=no + fi + rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_gcc_tls_model_attr" >&5 +echo "${ECHO_T}$libc_cv_gcc_tls_model_attr" >&6 + if test "$libc_cv_gcc_tls_model_attr" = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_TLS_MODEL_ATTRIBUTE 1 +_ACEOF + + fi +fi + +echo "$as_me:$LINENO: checking for libgd" >&5 +echo $ECHO_N "checking for libgd... $ECHO_C" >&6 +if test "$with_gd" != "no"; then + old_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $libgd_include" + old_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $libgd_ldflags" + old_LIBS="$LIBS" + LIBS="$LIBS -lgd -lpng -lz -lm" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +gdImagePng (0, 0) + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + LIBGD=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +LIBGD=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + CFLAGS="$old_CFLAGS" + LDFLAGS="$old_LDFLAGS" + LIBS="$old_LIBS" +else + LIBGD=no +fi +echo "$as_me:$LINENO: result: $LIBGD" >&5 +echo "${ECHO_T}$LIBGD" >&6 + + + +echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep + + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_stdc=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +@%:@define STDC_HEADERS 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +@%:@include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +echo "$as_me:$LINENO: checking for long double" >&5 +echo $ECHO_N "checking for long double... $ECHO_C" >&6 +if test "${ac_cv_type_long_double+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((long double *) 0) + return 0; +if (sizeof (long double)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_long_double=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_long_double=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_long_double" >&5 +echo "${ECHO_T}$ac_cv_type_long_double" >&6 + +echo "$as_me:$LINENO: checking size of long double" >&5 +echo $ECHO_N "checking size of long double... $ECHO_C" >&6 +if test "${ac_cv_sizeof_long_double+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_long_double" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (long double))) >= 0)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (long double))) <= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (long double))) < 0)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (long double))) >= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array @<:@1 - 2 * !(((long) (sizeof (long double))) <= $ac_mid)@:>@; +test_array @<:@0@:>@ = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_long_double=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long double), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long double), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +long longval () { return (long) (sizeof (long double)); } +unsigned long ulongval () { return (long) (sizeof (long double)); } +@%:@include +@%:@include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (long double))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (long double)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (long double)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_long_double=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long double), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long double), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_long_double=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_double" >&5 +echo "${ECHO_T}$ac_cv_sizeof_long_double" >&6 +cat >>confdefs.h <<_ACEOF +@%:@define SIZEOF_LONG_DOUBLE $ac_cv_sizeof_long_double +_ACEOF + + +sizeof_long_double=$ac_cv_sizeof_long_double + + +### End of automated tests. +### Now run sysdeps configure fragments. + +# They also can set these variables. +use_ldconfig=no +ldd_rewrite_script=no +libc_cv_sysconfdir=$sysconfdir +libc_cv_gcc_unwind_find_fde=no + +# Iterate over all the sysdep directories we will use, running their +# configure fragments, and looking for a uname implementation. +uname= +for dir in $sysnames; do + case $dir in + /*) dest=$dir ;; + *) dest=$srcdir/$dir ;; + esac + if test -r $dest/configure; then + echo "$as_me:$LINENO: result: running configure fragment for $dir" >&5 +echo "${ECHO_T}running configure fragment for $dir" >&6 + . $dest/configure + fi + + if test -z "$uname"; then + if test -r $dest/uname.c || + test -r $dest/uname.S || + { test -r $dest/syscalls.list && + grep '^uname[ ]' $dest/syscalls.list >/dev/null; }; then + uname=$dir + fi + fi +done + +if test x$libc_cv_gcc_unwind_find_fde = xyes; then + cat >>confdefs.h <<\_ACEOF +@%:@define EXPORT_UNWIND_FIND_FDE 1 +_ACEOF + +fi + + +# If we will use the generic uname implementation, we must figure out what +# it will say by examining the system, and write the results in config-name.h. +if test "$uname" = "sysdeps/generic"; then + + uname_sysname=`echo $config_os | sed 's/[0-9.]*$//'` + if test $uname_sysname != $config_os; then + config_release=`echo $config_os | sed s/$uname_sysname//` + fi + + echo "$as_me:$LINENO: checking OS release for uname" >&5 +echo $ECHO_N "checking OS release for uname... $ECHO_C" >&6 +if test "${libc_cv_uname_release+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -r /vmunix; then + kernel_id=`strings /vmunix | grep UNIX` + elif test -r /dynix; then + kernel_id=`strings /dynix | grep DYNIX` + else + kernel_id= + fi + + kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'` + if test x`echo "$config_release" | sed "s/^$kernel_release//"` \ + != x$config_release; then + # The configuration release is a substring of the kernel release. + libc_cv_uname_release=$kernel_release + elif test x$config_release != x; then + libc_cv_uname_release=$config_release + elif test x$kernel_release != x; then + libc_cv_uname_release=$kernel_release + else + libc_cv_uname_release=unknown + fi +fi +echo "$as_me:$LINENO: result: $libc_cv_uname_release" >&5 +echo "${ECHO_T}$libc_cv_uname_release" >&6 + uname_release="$libc_cv_uname_release" + + echo "$as_me:$LINENO: checking OS version for uname" >&5 +echo $ECHO_N "checking OS version for uname... $ECHO_C" >&6 +if test "${libc_cv_uname_version+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -r /vmunix; then + kernel_id=`strings /vmunix | grep UNIX` + elif test -r /dynix; then + kernel_id=`strings /dynix | grep DYNIX` + else + kernel_id= + fi + + kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'` + if test -n "$kernel_version"; then + libc_cv_uname_version="$kernel_version" + else + libc_cv_uname_version=unknown + fi +fi +echo "$as_me:$LINENO: result: $libc_cv_uname_version" >&5 +echo "${ECHO_T}$libc_cv_uname_version" >&6 + uname_version="$libc_cv_uname_version" + + config_uname=config-name.h:config-name.in +else + # For non-generic uname, we don't need to create config-name.h at all. + config_uname= +fi + +cat >>confdefs.h <<\_ACEOF +@%:@define USE_IN_LIBIO 1 +_ACEOF + + +# Test for old glibc 2.0.x headers so that they can be removed properly +# Search only in includedir. +echo "$as_me:$LINENO: checking for old glibc 2.0.x headers" >&5 +echo $ECHO_N "checking for old glibc 2.0.x headers... $ECHO_C" >&6 +if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h" +then + old_glibc_headers=yes +else + old_glibc_headers=no +fi +echo "$as_me:$LINENO: result: $old_glibc_headers" >&5 +echo "${ECHO_T}$old_glibc_headers" >&6 +if test ${old_glibc_headers} = yes; then + { echo "$as_me:$LINENO: WARNING: *** During \"make install\" old headers from glibc 2.0.x will" >&5 +echo "$as_me: WARNING: *** During \"make install\" old headers from glibc 2.0.x will" >&2;} + { echo "$as_me:$LINENO: WARNING: *** be removed." >&5 +echo "$as_me: WARNING: *** be removed." >&2;} +fi + + + + + + + + + + + + +if test $gnu_ld = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_GNU_LD 1 +_ACEOF + +fi +if test $gnu_as = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_GNU_AS 1 +_ACEOF + +fi +if test $elf = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_ELF 1 +_ACEOF + +fi +if test $xcoff = yes; then + cat >>confdefs.h <<\_ACEOF +@%:@define HAVE_XCOFF 1 +_ACEOF + +fi + + + +if test $shared = default; then + if test $gnu_ld = yes; then + shared=$elf + else + # For now we do not assume shared libs are available. In future more + # tests might become available. + shared=no + fi +fi + +echo "$as_me:$LINENO: checking whether -fPIC is default" >&5 +echo $ECHO_N "checking whether -fPIC is default... $ECHO_C" >&6 +if test "${pic_default+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + pic_default=yes +cat > conftest.c <&5 1>&5"; then + pic_default=no +fi +rm -f conftest.* +fi +echo "$as_me:$LINENO: result: $pic_default" >&5 +echo "${ECHO_T}$pic_default" >&6 + + + + + + + + + + +case "$add_ons" in + *door*) linux_doors=yes ;; + *) linux_doors=no ;; +esac + + + + +if test "`(cd $srcdir; pwd)`" = "`pwd`"; then + config_makefile= +else + config_makefile=Makefile +fi + +VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h` +RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h` + + + + ac_config_files="$ac_config_files config.make glibcbug ${config_makefile} ${config_uname}" + + ac_config_commands="$ac_config_commands default" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if diff $cache_file confcache >/dev/null 2>&1; then :; else + if test -w $cache_file; then + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +done +LIB@&t@OBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX +@%:@@%:@ Running $as_me. @%:@@%:@ +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by GNU C Library $as_me (see version.h), which was +generated by GNU Autoconf 2.57. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +GNU C Library config.status (see version.h) +configured by $0, generated by GNU Autoconf 2.57, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +INSTALL="$INSTALL" +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_shift=: + ;; + -*) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS section. +# + +config_vars='$config_vars' + +_ACEOF + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "config.make" ) CONFIG_FILES="$CONFIG_FILES config.make" ;; + "glibcbug" ) CONFIG_FILES="$CONFIG_FILES glibcbug" ;; + "${config_makefile}" ) CONFIG_FILES="$CONFIG_FILES ${config_makefile}" ;; + "${config_uname}" ) CONFIG_FILES="$CONFIG_FILES ${config_uname}" ;; + "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; + "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@with_fp@,$with_fp,;t t +s,@with_cvs@,$with_cvs,;t t +s,@enable_check_abi@,$enable_check_abi,;t t +s,@oldest_abi@,$oldest_abi,;t t +s,@subdirs@,$subdirs,;t t +s,@force_install@,$force_install,;t t +s,@all_warnings@,$all_warnings,;t t +s,@build@,$build,;t t +s,@build_cpu@,$build_cpu,;t t +s,@build_vendor@,$build_vendor,;t t +s,@build_os@,$build_os,;t t +s,@host@,$host,;t t +s,@host_cpu@,$host_cpu,;t t +s,@host_vendor@,$host_vendor,;t t +s,@host_os@,$host_os,;t t +s,@base_machine@,$base_machine,;t t +s,@sysnames@,$sysnames,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@LN_S@,$LN_S,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@BUILD_CC@,$BUILD_CC,;t t +s,@cross_compiling@,$cross_compiling,;t t +s,@CPP@,$CPP,;t t +s,@CXX@,$CXX,;t t +s,@CXXFLAGS@,$CXXFLAGS,;t t +s,@ac_ct_CXX@,$ac_ct_CXX,;t t +s,@AR@,$AR,;t t +s,@OBJDUMP@,$OBJDUMP,;t t +s,@RANLIB@,$RANLIB,;t t +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +s,@MIG@,$MIG,;t t +s,@AS@,$AS,;t t +s,@LD@,$LD,;t t +s,@PWD_P@,$PWD_P,;t t +s,@MAKE@,$MAKE,;t t +s,@MSGFMT@,$MSGFMT,;t t +s,@MAKEINFO@,$MAKEINFO,;t t +s,@SED@,$SED,;t t +s,@AUTOCONF@,$AUTOCONF,;t t +s,@CCVERSION@,$CCVERSION,;t t +s,@SYSINCLUDES@,$SYSINCLUDES,;t t +s,@libc_cv_gcc_static_libgcc@,$libc_cv_gcc_static_libgcc,;t t +s,@BASH@,$BASH,;t t +s,@libc_cv_have_bash2@,$libc_cv_have_bash2,;t t +s,@KSH@,$KSH,;t t +s,@libc_cv_have_ksh@,$libc_cv_have_ksh,;t t +s,@AWK@,$AWK,;t t +s,@PERL@,$PERL,;t t +s,@INSTALL_INFO@,$INSTALL_INFO,;t t +s,@OLD_DEBIAN_INSTALL_INFO@,$OLD_DEBIAN_INSTALL_INFO,;t t +s,@BISON@,$BISON,;t t +s,@VERSIONING@,$VERSIONING,;t t +s,@libc_cv_asm_protected_directive@,$libc_cv_asm_protected_directive,;t t +s,@libc_cv_initfinit_array@,$libc_cv_initfinit_array,;t t +s,@libc_cv_z_nodelete@,$libc_cv_z_nodelete,;t t +s,@libc_cv_z_nodlopen@,$libc_cv_z_nodlopen,;t t +s,@libc_cv_z_initfirst@,$libc_cv_z_initfirst,;t t +s,@libc_cv_Bgroup@,$libc_cv_Bgroup,;t t +s,@ASFLAGS_config@,$ASFLAGS_config,;t t +s,@libc_cv_z_combreloc@,$libc_cv_z_combreloc,;t t +s,@libc_cv_have_initfini@,$libc_cv_have_initfini,;t t +s,@libc_cv_cpp_asm_debuginfo@,$libc_cv_cpp_asm_debuginfo,;t t +s,@no_whole_archive@,$no_whole_archive,;t t +s,@exceptions@,$exceptions,;t t +s,@LIBGD@,$LIBGD,;t t +s,@EGREP@,$EGREP,;t t +s,@sizeof_long_double@,$sizeof_long_double,;t t +s,@libc_cv_gcc_unwind_find_fde@,$libc_cv_gcc_unwind_find_fde,;t t +s,@uname_sysname@,$uname_sysname,;t t +s,@uname_release@,$uname_release,;t t +s,@uname_version@,$uname_version,;t t +s,@old_glibc_headers@,$old_glibc_headers,;t t +s,@libc_cv_slibdir@,$libc_cv_slibdir,;t t +s,@libc_cv_localedir@,$libc_cv_localedir,;t t +s,@libc_cv_sysconfdir@,$libc_cv_sysconfdir,;t t +s,@libc_cv_rootsbindir@,$libc_cv_rootsbindir,;t t +s,@libc_cv_forced_unwind@,$libc_cv_forced_unwind,;t t +s,@use_ldconfig@,$use_ldconfig,;t t +s,@ldd_rewrite_script@,$ldd_rewrite_script,;t t +s,@gnu_ld@,$gnu_ld,;t t +s,@gnu_as@,$gnu_as,;t t +s,@elf@,$elf,;t t +s,@xcoff@,$xcoff,;t t +s,@static@,$static,;t t +s,@shared@,$shared,;t t +s,@pic_default@,$pic_default,;t t +s,@profile@,$profile,;t t +s,@omitfp@,$omitfp,;t t +s,@bounded@,$bounded,;t t +s,@static_nss@,$static_nss,;t t +s,@nopic_initfini@,$nopic_initfini,;t t +s,@DEFINES@,$DEFINES,;t t +s,@linux_doors@,$linux_doors,;t t +s,@mach_interface_list@,$mach_interface_list,;t t +s,@VERSION@,$VERSION,;t t +s,@RELEASE@,$RELEASE,;t t +s,@LIB@&t@OBJS@,$LIB@&t@OBJS,;t t +s,@LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@abs_srcdir@,$ac_abs_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s,@builddir@,$ac_builddir,;t t +s,@abs_builddir@,$ac_abs_builddir,;t t +s,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +_ACEOF + +# Transform confdefs.h into two sed scripts, `conftest.defines' and +# `conftest.undefs', that substitutes the proper values into +# config.h.in to produce config.h. The first handles `#define' +# templates, and the second `#undef' templates. +# And first: Protect against being on the right side of a sed subst in +# config.status. Protect against being in an unquoted here document +# in config.status. +rm -f conftest.defines conftest.undefs +# Using a here document instead of a string reduces the quoting nightmare. +# Putting comments in sed scripts is not portable. +# +# `end' is used to avoid that the second main sed command (meant for +# 0-ary CPP macros) applies to n-ary macro definitions. +# See the Autoconf documentation for `clear'. +cat >confdef2sed.sed <<\_ACEOF +s/[\\&,]/\\&/g +s,[\\$`],\\&,g +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +t end +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +: end +_ACEOF +# If some macros were called several times there might be several times +# the same #defines, which is useless. Nevertheless, we may not want to +# sort them, since we want the *last* AC-DEFINE to be honored. +uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +rm -f confdef2sed.sed + +# This sed command replaces #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +cat >>conftest.undefs <<\_ACEOF +s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +_ACEOF + +# Break up conftest.defines because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +echo ' :' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.defines >/dev/null +do + # Write a limited-size here document to $tmp/defines.sed. + echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#define' lines. + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/defines.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines +echo ' fi # grep' >>$CONFIG_STATUS +echo >>$CONFIG_STATUS + +# Break up conftest.undefs because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.undefs >/dev/null +do + # Write a limited-size here document to $tmp/undefs.sed. + echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#undef' + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/undefs.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail + rm -f conftest.undefs + mv conftest.tail conftest.undefs +done +rm -f conftest.undefs + +cat >>$CONFIG_STATUS <<\_ACEOF + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + default ) +case $CONFIG_FILES in *config.make*) +echo "$config_vars" >> config.make;; +esac +test -d bits || mkdir bits ;; + esac +done +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi + +# +# CONFIG_SUBDIRS section. +# +if test "$no_recursion" != yes; then + + # Remove --cache-file and --srcdir arguments so they do not pile up. + ac_sub_configure_args= + ac_prev= + for ac_arg in $ac_configure_args; do + if test -n "$ac_prev"; then + ac_prev= + continue + fi + case $ac_arg in + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \ + | --c=*) + ;; + --config-cache | -C) + ;; + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + ;; + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + ;; + *) ac_sub_configure_args="$ac_sub_configure_args $ac_arg" ;; + esac + done + + # Always prepend --prefix to ensure using the same prefix + # in subdir configurations. + ac_sub_configure_args="--prefix=$prefix $ac_sub_configure_args" + + ac_popdir=`pwd` + for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue + + # Do not complain, so a configure script can configure whichever + # parts of a large source tree are present. + test -d $srcdir/$ac_dir || continue + + { echo "$as_me:$LINENO: configuring in $ac_dir" >&5 +echo "$as_me: configuring in $ac_dir" >&6;} + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + + cd $ac_dir + + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + ac_sub_configure="$SHELL '$ac_srcdir/configure.gnu'" + elif test -f $ac_srcdir/configure; then + ac_sub_configure="$SHELL '$ac_srcdir/configure'" + elif test -f $ac_srcdir/configure.in; then + ac_sub_configure=$ac_configure + else + { echo "$as_me:$LINENO: WARNING: no configuration information is in $ac_dir" >&5 +echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;} + ac_sub_configure= + fi + + # The recursion is here. + if test -n "$ac_sub_configure"; then + # Make the cache file name correct relative to the subdirectory. + case $cache_file in + [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;; + *) # Relative path. + ac_sub_cache_file=$ac_top_builddir$cache_file ;; + esac + + { echo "$as_me:$LINENO: running $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5 +echo "$as_me: running $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;} + # The eval makes quoting arguments work. + eval $ac_sub_configure $ac_sub_configure_args \ + --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir || + { { echo "$as_me:$LINENO: error: $ac_sub_configure failed for $ac_dir" >&5 +echo "$as_me: error: $ac_sub_configure failed for $ac_dir" >&2;} + { (exit 1); exit 1; }; } + fi + + cd $ac_popdir + done +fi + --- glibc-2.3.2/autom4te.cache/requests 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/autom4te.cache/requests 2003-09-19 22:48:21.000000000 -0400 @@ -0,0 +1,111 @@ +# This file was created by autom4te. +# It contains the lists of macros which have been traced. +# It can be safely removed. + +@request = ( + bless( [ + '0', + 1, + [ + '/usr/share/autoconf' + ], + [ + '/usr/share/autoconf/autoconf/autoconf.m4f', + 'aclocal.m4', + 'configure.in' + ], + { + 'm4_pattern_forbid' => 1, + 'AC_TYPE_OFF_T' => 1, + 'AC_C_VOLATILE' => 1, + 'AC_FUNC_CLOSEDIR_VOID' => 1, + 'AC_REPLACE_FNMATCH' => 1, + 'AC_PROG_LIBTOOL' => 1, + 'AC_FUNC_STAT' => 1, + 'AC_HEADER_TIME' => 1, + 'AC_FUNC_WAIT3' => 1, + 'AM_AUTOMAKE_VERSION' => 1, + 'AC_STRUCT_TM' => 1, + 'AC_FUNC_LSTAT' => 1, + 'AC_TYPE_MODE_T' => 1, + 'AC_FUNC_GETMNTENT' => 1, + 'AC_FUNC_STRTOD' => 1, + 'AC_CHECK_HEADERS' => 1, + 'AC_FUNC_STRNLEN' => 1, + 'AC_PROG_CXX' => 1, + 'AC_PATH_X' => 1, + 'AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK' => 1, + 'AC_PROG_AWK' => 1, + 'AC_HEADER_STDC' => 1, + 'AC_HEADER_MAJOR' => 1, + 'AC_FUNC_ERROR_AT_LINE' => 1, + 'AC_PROG_GCC_TRADITIONAL' => 1, + 'AC_LIBSOURCE' => 1, + 'AC_FUNC_MBRTOWC' => 1, + 'AC_STRUCT_ST_BLOCKS' => 1, + 'AC_TYPE_SIGNAL' => 1, + 'AC_TYPE_UID_T' => 1, + 'AC_CONFIG_AUX_DIR' => 1, + 'AC_PROG_MAKE_SET' => 1, + 'm4_pattern_allow' => 1, + 'AC_DEFINE_TRACE_LITERAL' => 1, + 'AC_FUNC_STRERROR_R' => 1, + 'AC_PROG_CC' => 1, + 'AC_DECL_SYS_SIGLIST' => 1, + 'AC_FUNC_FORK' => 1, + 'AC_FUNC_VPRINTF' => 1, + 'AC_FUNC_STRCOLL' => 1, + 'AC_PROG_YACC' => 1, + 'AC_INIT' => 1, + 'AC_STRUCT_TIMEZONE' => 1, + 'AC_FUNC_CHOWN' => 1, + 'AC_SUBST' => 1, + 'AC_FUNC_ALLOCA' => 1, + 'AC_CANONICAL_HOST' => 1, + 'AC_FUNC_GETPGRP' => 1, + 'AC_PROG_RANLIB' => 1, + 'AM_INIT_AUTOMAKE' => 1, + 'AC_FUNC_SETPGRP' => 1, + 'AC_CONFIG_SUBDIRS' => 1, + 'AC_FUNC_MMAP' => 1, + 'AC_FUNC_REALLOC' => 1, + 'AC_TYPE_SIZE_T' => 1, + 'AC_CHECK_TYPES' => 1, + 'AC_CHECK_MEMBERS' => 1, + 'AM_MAINTAINER_MODE' => 1, + 'AC_FUNC_UTIME_NULL' => 1, + 'AC_FUNC_SELECT_ARGTYPES' => 1, + 'AC_FUNC_STRFTIME' => 1, + 'AC_HEADER_STAT' => 1, + 'AC_C_INLINE' => 1, + 'AC_PROG_CPP' => 1, + 'AC_C_CONST' => 1, + 'AC_PROG_LEX' => 1, + 'AC_TYPE_PID_T' => 1, + 'AC_CONFIG_FILES' => 1, + 'include' => 1, + 'AC_FUNC_SETVBUF_REVERSED' => 1, + 'AC_PROG_INSTALL' => 1, + 'AM_GNU_GETTEXT' => 1, + 'AC_FUNC_OBSTACK' => 1, + 'AC_CHECK_LIB' => 1, + 'AC_FUNC_MALLOC' => 1, + 'AC_FUNC_GETGROUPS' => 1, + 'AC_FUNC_GETLOADAVG' => 1, + 'AH_OUTPUT' => 1, + 'AC_FUNC_FSEEKO' => 1, + 'AM_PROG_CC_C_O' => 1, + 'AM_CONDITIONAL' => 1, + 'AC_CANONICAL_SYSTEM' => 1, + 'AC_FUNC_MKTIME' => 1, + 'AC_CONFIG_HEADERS' => 1, + 'AC_HEADER_SYS_WAIT' => 1, + 'AC_FUNC_MEMCMP' => 1, + 'AC_PROG_LN_S' => 1, + 'm4_include' => 1, + 'AC_HEADER_DIRENT' => 1, + 'AC_CHECK_FUNCS' => 1 + } + ], 'Request' ) + ); + --- glibc-2.3.2/autom4te.cache/traces.0 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/autom4te.cache/traces.0 2003-09-19 22:40:33.000000000 -0400 @@ -0,0 +1,254 @@ +m4trace:configure.in:4: -1- AC_INIT([GNU C Library], [(see version.h)], [glibc]) +m4trace:configure.in:4: -1- m4_pattern_forbid([^_?A[CHUM]_]) +m4trace:configure.in:4: -1- m4_pattern_forbid([_AC_]) +m4trace:configure.in:4: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) +m4trace:configure.in:4: -1- m4_pattern_allow([^AS_FLAGS$]) +m4trace:configure.in:4: -1- m4_pattern_forbid([^_?m4_]) +m4trace:configure.in:4: -1- m4_pattern_forbid([^dnl$]) +m4trace:configure.in:4: -1- m4_pattern_forbid([^_?AS_]) +m4trace:configure.in:4: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}]) +m4trace:configure.in:4: -1- AC_SUBST([PATH_SEPARATOR]) +m4trace:configure.in:4: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) +m4trace:configure.in:4: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) +m4trace:configure.in:4: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) +m4trace:configure.in:4: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) +m4trace:configure.in:4: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) +m4trace:configure.in:4: -1- AC_SUBST([exec_prefix], [NONE]) +m4trace:configure.in:4: -1- AC_SUBST([prefix], [NONE]) +m4trace:configure.in:4: -1- AC_SUBST([program_transform_name], [s,x,x,]) +m4trace:configure.in:4: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) +m4trace:configure.in:4: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) +m4trace:configure.in:4: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) +m4trace:configure.in:4: -1- AC_SUBST([datadir], ['${prefix}/share']) +m4trace:configure.in:4: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) +m4trace:configure.in:4: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) +m4trace:configure.in:4: -1- AC_SUBST([localstatedir], ['${prefix}/var']) +m4trace:configure.in:4: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) +m4trace:configure.in:4: -1- AC_SUBST([includedir], ['${prefix}/include']) +m4trace:configure.in:4: -1- AC_SUBST([oldincludedir], ['/usr/include']) +m4trace:configure.in:4: -1- AC_SUBST([infodir], ['${prefix}/info']) +m4trace:configure.in:4: -1- AC_SUBST([mandir], ['${prefix}/man']) +m4trace:configure.in:4: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) +m4trace:configure.in:4: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ +#undef PACKAGE_NAME]) +m4trace:configure.in:4: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) +m4trace:configure.in:4: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME]) +m4trace:configure.in:4: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) +m4trace:configure.in:4: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ +#undef PACKAGE_VERSION]) +m4trace:configure.in:4: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) +m4trace:configure.in:4: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING]) +m4trace:configure.in:4: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) +m4trace:configure.in:4: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT]) +m4trace:configure.in:4: -1- AC_SUBST([build_alias]) +m4trace:configure.in:4: -1- AC_SUBST([host_alias]) +m4trace:configure.in:4: -1- AC_SUBST([target_alias]) +m4trace:configure.in:4: -1- AC_SUBST([DEFS]) +m4trace:configure.in:4: -1- AC_SUBST([ECHO_C]) +m4trace:configure.in:4: -1- AC_SUBST([ECHO_N]) +m4trace:configure.in:4: -1- AC_SUBST([ECHO_T]) +m4trace:configure.in:4: -1- AC_SUBST([LIBS]) +m4trace:configure.in:6: -1- AC_CONFIG_HEADERS([config.h]) +m4trace:configure.in:7: -1- AC_CONFIG_AUX_DIR([scripts]) +m4trace:configure.in:73: -1- AC_SUBST([with_fp]) +m4trace:configure.in:100: -1- AC_SUBST([with_cvs]) +m4trace:configure.in:116: -1- AC_SUBST([enable_check_abi]) +m4trace:configure.in:168: -1- AC_DEFINE_TRACE_LITERAL([GLIBC_OLDEST_ABI]) +m4trace:configure.in:170: -1- AC_SUBST([oldest_abi]) +m4trace:configure.in:203: -1- AC_DEFINE_TRACE_LITERAL([NO_HIDDEN]) +m4trace:configure.in:206: -1- AC_CONFIG_SUBDIRS([ ]) +m4trace:configure.in:206: -1- AC_SUBST([subdirs], ["$subdirs "]) +m4trace:configure.in:248: -1- AC_DEFINE_TRACE_LITERAL([DO_STATIC_NSS]) +m4trace:configure.in:256: -1- AC_SUBST([force_install]) +m4trace:configure.in:283: -1- AC_SUBST([all_warnings]) +m4trace:configure.in:285: -1- AC_CANONICAL_HOST +m4trace:configure.in:285: -1- AC_SUBST([build], [$ac_cv_build]) +m4trace:configure.in:285: -1- AC_SUBST([build_cpu], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`]) +m4trace:configure.in:285: -1- AC_SUBST([build_vendor], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`]) +m4trace:configure.in:285: -1- AC_SUBST([build_os], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`]) +m4trace:configure.in:285: -1- AC_SUBST([host], [$ac_cv_host]) +m4trace:configure.in:285: -1- AC_SUBST([host_cpu], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`]) +m4trace:configure.in:285: -1- AC_SUBST([host_vendor], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`]) +m4trace:configure.in:285: -1- AC_SUBST([host_os], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`]) +m4trace:configure.in:438: -1- AC_SUBST([base_machine]) +m4trace:configure.in:441: -1- AC_DEFINE_TRACE_LITERAL([USE_REGPARMS]) +m4trace:configure.in:659: -1- AC_SUBST([sysnames]) +m4trace:configure.in:666: -1- AC_PROG_INSTALL +m4trace:configure.in:666: -1- AC_SUBST([INSTALL_PROGRAM]) +m4trace:configure.in:666: -1- AC_SUBST([INSTALL_SCRIPT]) +m4trace:configure.in:666: -1- AC_SUBST([INSTALL_DATA]) +m4trace:configure.in:671: -1- AC_PROG_LN_S +m4trace:configure.in:671: -1- AC_SUBST([LN_S], [$as_ln_s]) +m4trace:configure.in:673: -1- AC_PROG_CC +m4trace:configure.in:673: -1- AC_SUBST([CC]) +m4trace:configure.in:673: -1- AC_SUBST([CFLAGS]) +m4trace:configure.in:673: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.in:673: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.in:673: -1- AC_SUBST([CC]) +m4trace:configure.in:673: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.in:673: -1- AC_SUBST([CC]) +m4trace:configure.in:673: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.in:673: -1- AC_SUBST([CC]) +m4trace:configure.in:673: -1- AC_SUBST([CC]) +m4trace:configure.in:673: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.in:673: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) +m4trace:configure.in:675: -1- AC_SUBST([BUILD_CC]) +m4trace:configure.in:677: -1- AC_SUBST([cross_compiling]) +m4trace:configure.in:678: -1- AC_PROG_CPP +m4trace:configure.in:678: -1- AC_SUBST([CPP]) +m4trace:configure.in:678: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.in:678: -1- AC_SUBST([CPP]) +m4trace:configure.in:680: -1- AC_PROG_CXX +m4trace:configure.in:680: -1- AC_SUBST([CXX]) +m4trace:configure.in:680: -1- AC_SUBST([CXXFLAGS]) +m4trace:configure.in:680: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.in:680: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.in:680: -1- AC_SUBST([CXX]) +m4trace:configure.in:680: -1- AC_SUBST([ac_ct_CXX]) +m4trace:configure.in:681: -1- AC_SUBST([AR]) +m4trace:configure.in:681: -1- AC_SUBST([OBJDUMP]) +m4trace:configure.in:681: -1- AC_SUBST([RANLIB]) +m4trace:configure.in:681: -1- AC_SUBST([ac_ct_RANLIB]) +m4trace:configure.in:681: -1- AC_SUBST([RANLIB]) +m4trace:configure.in:682: -1- AC_SUBST([MIG]) +m4trace:configure.in:687: -1- AC_SUBST([AS]) +m4trace:configure.in:690: -1- AC_SUBST([LD]) +m4trace:configure.in:697: -1- AC_SUBST([PWD_P], [$ac_cv_path_PWD_P]) +m4trace:configure.in:706: -1- AC_SUBST([CC]) +m4trace:configure.in:709: -1- AC_SUBST([MAKE]) +m4trace:configure.in:714: -1- AC_SUBST([MSGFMT]) +m4trace:configure.in:718: -1- AC_SUBST([MAKEINFO]) +m4trace:configure.in:722: -1- AC_SUBST([SED]) +m4trace:configure.in:724: -1- AC_SUBST([AUTOCONF]) +m4trace:configure.in:754: -1- AC_SUBST([CCVERSION]) +m4trace:configure.in:763: -1- AC_SUBST([SYSINCLUDES]) +m4trace:configure.in:818: -1- AC_SUBST([libc_cv_gcc_static_libgcc]) +m4trace:configure.in:820: -1- AC_SUBST([BASH], [$ac_cv_path_BASH]) +m4trace:configure.in:828: -1- AC_SUBST([libc_cv_have_bash2]) +m4trace:configure.in:832: -1- AC_SUBST([KSH], [$ac_cv_path_KSH]) +m4trace:configure.in:840: -1- AC_SUBST([KSH]) +m4trace:configure.in:843: -1- AC_SUBST([libc_cv_have_ksh]) +m4trace:configure.in:845: -1- AC_PROG_AWK +m4trace:configure.in:845: -1- AC_SUBST([AWK]) +m4trace:configure.in:846: -1- AC_SUBST([PERL], [$ac_cv_path_PERL]) +m4trace:configure.in:852: -1- AC_SUBST([INSTALL_INFO], [$ac_cv_path_INSTALL_INFO]) +m4trace:configure.in:878: -1- AC_SUBST([OLD_DEBIAN_INSTALL_INFO]) +m4trace:configure.in:880: -1- AC_SUBST([BISON], [$ac_cv_path_BISON]) +m4trace:configure.in:969: -1- AC_DEFINE_TRACE_LITERAL([ASM_GLOBAL_DIRECTIVE]) +m4trace:configure.in:994: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ASM_SET_DIRECTIVE]) +m4trace:configure.in:1016: -1- AC_DEFINE_TRACE_LITERAL([ASM_TYPE_DIRECTIVE_PREFIX]) +m4trace:configure.in:1023: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ASM_GLOBAL_DOT_NAME]) +m4trace:configure.in:1077: -1- AC_DEFINE_TRACE_LITERAL([DO_VERSIONING]) +m4trace:configure.in:1081: -1- AC_SUBST([VERSIONING]) +m4trace:configure.in:1104: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ASM_PREVIOUS_DIRECTIVE]) +m4trace:configure.in:1119: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ASM_POPSECTION_DIRECTIVE]) +m4trace:configure.in:1136: -1- AC_SUBST([libc_cv_asm_protected_directive]) +m4trace:configure.in:1137: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PROTECTED]) +m4trace:configure.in:1138: -1- AC_DEFINE_TRACE_LITERAL([HAVE_HIDDEN]) +m4trace:configure.in:1158: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VISIBILITY_ATTRIBUTE]) +m4trace:configure.in:1181: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BROKEN_VISIBILITY_ATTRIBUTE]) +m4trace:configure.in:1205: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BROKEN_ALIAS_ATTRIBUTE]) +m4trace:configure.in:1220: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SDATA_SECTION]) +m4trace:configure.in:1244: -1- AC_SUBST([libc_cv_initfinit_array]) +m4trace:configure.in:1246: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INITFINI_ARRAY]) +m4trace:configure.in:1264: -1- AC_SUBST([libc_cv_z_nodelete]) +m4trace:configure.in:1281: -1- AC_SUBST([libc_cv_z_nodlopen]) +m4trace:configure.in:1298: -1- AC_SUBST([libc_cv_z_initfirst]) +m4trace:configure.in:1314: -1- AC_SUBST([libc_cv_Bgroup]) +m4trace:configure.in:1336: -1- AC_SUBST([ASFLAGS_config]) +m4trace:configure.in:1364: -1- AC_DEFINE_TRACE_LITERAL([HAVE_Z_COMBRELOC]) +m4trace:configure.in:1367: -1- AC_SUBST([libc_cv_z_combreloc]) +m4trace:configure.in:1376: -1- AC_SUBST([libc_cv_have_initfini]) +m4trace:configure.in:1378: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INITFINI]) +m4trace:configure.in:1401: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SECTION_QUOTES]) +m4trace:configure.in:1446: -1- AC_DEFINE_TRACE_LITERAL([NO_UNDERSCORES]) +m4trace:configure.in:1492: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ASM_WEAK_DIRECTIVE]) +m4trace:configure.in:1494: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ASM_WEAKEXT_DIRECTIVE]) +m4trace:configure.in:1503: -1- AC_DEFINE_TRACE_LITERAL([ASM_LINE_SEP]) +m4trace:configure.in:1522: -1- AC_DEFINE_TRACE_LITERAL([ASM_LINE_SEP]) +m4trace:configure.in:1543: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ASM_CFI_DIRECTIVES]) +m4trace:configure.in:1573: -1- AC_SUBST([libc_cv_cpp_asm_debuginfo]) +m4trace:configure.in:1575: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CPP_ASM_DEBUGINFO]) +m4trace:configure.in:1596: -1- AC_SUBST([no_whole_archive]) +m4trace:configure.in:1616: -1- AC_SUBST([exceptions]) +m4trace:configure.in:1626: -1- AC_DEFINE_TRACE_LITERAL([BROKEN_PPC_ASM_CR0]) +m4trace:configure.in:1687: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DWARF2_UNWIND_INFO]) +m4trace:configure.in:1690: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DWARF2_UNWIND_INFO]) +m4trace:configure.in:1691: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DWARF2_UNWIND_INFO_STATIC]) +m4trace:configure.in:1714: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BUILTIN_EXPECT]) +m4trace:configure.in:1733: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BUILTIN_MEMSET]) +m4trace:configure.in:1753: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BUILTIN_REDIRECTION]) +m4trace:configure.in:1782: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SUBTRACT_LOCAL_LABELS]) +m4trace:configure.in:1798: -1- AC_DEFINE_TRACE_LITERAL([HAVE___THREAD]) +m4trace:configure.in:1817: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TLS_MODEL_ATTRIBUTE]) +m4trace:configure.in:1838: -1- AC_SUBST([LIBGD]) +m4trace:configure.in:1841: -1- AC_HEADER_STDC +m4trace:configure.in:1841: -1- AC_SUBST([EGREP]) +m4trace:configure.in:1841: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) +m4trace:configure.in:1841: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS]) +m4trace:configure.in:1841: -1- AC_CHECK_HEADERS([sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h], [], [], [$ac_includes_default]) +m4trace:configure.in:1841: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H]) +m4trace:configure.in:1841: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H]) +m4trace:configure.in:1841: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H]) +m4trace:configure.in:1841: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H]) +m4trace:configure.in:1841: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H]) +m4trace:configure.in:1841: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H]) +m4trace:configure.in:1841: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H]) +m4trace:configure.in:1841: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H]) +m4trace:configure.in:1841: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H]) +m4trace:configure.in:1841: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG_DOUBLE]) +m4trace:configure.in:1841: -1- AH_OUTPUT([SIZEOF_LONG_DOUBLE], [/* The size of a `long double\', as computed by sizeof. */ +#undef SIZEOF_LONG_DOUBLE]) +m4trace:configure.in:1843: -1- AC_SUBST([sizeof_long_double]) +m4trace:configure.in:1879: -1- AC_DEFINE_TRACE_LITERAL([EXPORT_UNWIND_FIND_FDE]) +m4trace:configure.in:1881: -1- AC_SUBST([libc_cv_gcc_unwind_find_fde]) +m4trace:configure.in:1934: -1- AC_SUBST([uname_sysname]) +m4trace:configure.in:1934: -1- AC_SUBST([uname_release]) +m4trace:configure.in:1934: -1- AC_SUBST([uname_version]) +m4trace:configure.in:1942: -1- AC_DEFINE_TRACE_LITERAL([USE_IN_LIBIO]) +m4trace:configure.in:1958: -1- AC_SUBST([old_glibc_headers]) +m4trace:configure.in:1960: -1- AC_SUBST([libc_cv_slibdir]) +m4trace:configure.in:1961: -1- AC_SUBST([libc_cv_localedir]) +m4trace:configure.in:1962: -1- AC_SUBST([libc_cv_sysconfdir]) +m4trace:configure.in:1963: -1- AC_SUBST([libc_cv_rootsbindir]) +m4trace:configure.in:1964: -1- AC_SUBST([libc_cv_forced_unwind]) +m4trace:configure.in:1966: -1- AC_SUBST([use_ldconfig]) +m4trace:configure.in:1967: -1- AC_SUBST([ldd_rewrite_script]) +m4trace:configure.in:1969: -1- AC_SUBST([gnu_ld]) +m4trace:configure.in:1969: -1- AC_SUBST([gnu_as]) +m4trace:configure.in:1969: -1- AC_SUBST([elf]) +m4trace:configure.in:1969: -1- AC_SUBST([xcoff]) +m4trace:configure.in:1971: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GNU_LD]) +m4trace:configure.in:1974: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GNU_AS]) +m4trace:configure.in:1977: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ELF]) +m4trace:configure.in:1980: -1- AC_DEFINE_TRACE_LITERAL([HAVE_XCOFF]) +m4trace:configure.in:1983: -1- AC_SUBST([static]) +m4trace:configure.in:1984: -1- AC_SUBST([shared]) +m4trace:configure.in:2006: -1- AC_SUBST([pic_default]) +m4trace:configure.in:2008: -1- AC_SUBST([profile]) +m4trace:configure.in:2009: -1- AC_SUBST([omitfp]) +m4trace:configure.in:2010: -1- AC_SUBST([bounded]) +m4trace:configure.in:2011: -1- AC_SUBST([static_nss]) +m4trace:configure.in:2012: -1- AC_SUBST([nopic_initfini]) +m4trace:configure.in:2014: -1- AC_SUBST([DEFINES]) +m4trace:configure.in:2020: -1- AC_SUBST([linux_doors]) +m4trace:configure.in:2023: -1- AC_SUBST([mach_interface_list]) +m4trace:configure.in:2033: -1- AC_SUBST([VERSION]) +m4trace:configure.in:2034: -1- AC_SUBST([RELEASE]) +m4trace:configure.in:2036: -1- AC_CONFIG_FILES([config.make glibcbug ${config_makefile} ${config_uname}]) +m4trace:configure.in:2042: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) +m4trace:configure.in:2042: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) --- glibc-2.3.2/catgets/gencat.c 2003-02-22 18:09:59.000000000 -0500 +++ glibc-2.3.2/catgets/gencat.c 2003-04-12 11:39:42.000000000 -0400 @@ -333,7 +333,7 @@ /* There might be more than one backslash at the end of the line. Only if there is an odd number of them is the line continued. */ - if (buf[act_len - 1] == '\\') + if (act_len > 0 && buf[act_len - 1] == '\\') { int temp_act_len = act_len; @@ -343,10 +343,10 @@ continued = !continued; } while (temp_act_len > 0 && buf[temp_act_len - 1] == '\\'); - } - if (continued) - --act_len; + if (continued) + --act_len; + } } /* Append to currently selected line. */ --- glibc-2.3.2/catgets/nl_types.h 2001-07-07 15:20:51.000000000 -0400 +++ glibc-2.3.2/catgets/nl_types.h 2003-04-24 20:05:56.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1999, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -36,8 +36,11 @@ /* Type used by `nl_langinfo'. */ typedef int nl_item; -/* Open message catalog for later use, returning descriptor. */ -extern nl_catd catopen (__const char *__cat_name, int __flag) __THROW; +/* Open message catalog for later use, returning descriptor. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ +extern nl_catd catopen (__const char *__cat_name, int __flag); /* Return translation with NUMBER in SET of CATALOG; if not found return STRING. */ --- glibc-2.3.2/catgets/open_catalog.c 2002-09-24 01:11:41.000000000 -0400 +++ glibc-2.3.2/catgets/open_catalog.c 2003-08-21 08:36:58.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996-2000, 2001, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1996-2000, 2001, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper, . @@ -30,6 +30,7 @@ #include #include "catgetsinfo.h" +#include #define SWAPU32(w) bswap_32 (w) @@ -49,7 +50,7 @@ int result = -1; if (strchr (cat_name, '/') != NULL || nlspath == NULL) - fd = __open (cat_name, O_RDONLY); + fd = open_not_cancel_2 (cat_name, O_RDONLY); else { const char *run_nlspath = nlspath; @@ -177,7 +178,7 @@ if (bufact != 0) { - fd = __open (buf, O_RDONLY); + fd = open_not_cancel_2 (buf, O_RDONLY); if (fd >= 0) break; } @@ -233,8 +234,8 @@ /* Save read, handle partial reads. */ do { - size_t now = __read (fd, (((char *) catalog->file_ptr) - + (st.st_size - todo)), todo); + size_t now = read_not_cancel (fd, (((char *) catalog->file_ptr) + + (st.st_size - todo)), todo); if (now == 0 || now == (size_t) -1) { #ifdef EINTR @@ -324,7 +325,7 @@ /* Release the lock again. */ close_unlock_return: - __close (fd); + close_not_cancel_no_status (fd); return result; } --- glibc-2.3.2/config-name.in 1994-12-08 04:12:33.000000000 -0500 +++ glibc-2.3.2/config-name.in 2002-11-16 08:53:56.000000000 -0500 @@ -1,5 +1,5 @@ /* @configure_input@ -*- C -*- - Generated from $Id: config-name.in,v 1.1 1994/12/08 09:12:33 roland Exp $. + Generated from $Id$. This is used only by the generic `uname' function for systems with no real `uname' call. If this data is not correct, it does not matter much. */ --- glibc-2.3.2/config.h.in 2003-02-04 03:35:22.000000000 -0500 +++ glibc-2.3.2/config.h.in 2003-05-24 14:06:21.000000000 -0400 @@ -31,6 +31,9 @@ /* Define if weak symbols are available via the `.weakext' directive. */ #undef HAVE_ASM_WEAKEXT_DIRECTIVE +/* Define if CFI directives are available. */ +#undef HAVE_ASM_CFI_DIRECTIVES + /* Define to the assembler line separator character for multiple assembler instructions per line. Default is `;' */ #undef ASM_LINE_SEP @@ -58,6 +61,9 @@ /* Define a symbol_name as a global .symbol_name for ld. */ #undef HAVE_ASM_GLOBAL_DOT_NAME +/* Define if the assembler generates debugging information directly. */ +#undef HAVE_CPP_ASM_DEBUGINFO + /* Define if _Unwind_Find_FDE should be exported from glibc. */ #undef EXPORT_UNWIND_FIND_FDE @@ -95,6 +101,10 @@ /* Define if the compiler supports __builtin_memset. */ #undef HAVE_BUILTIN_MEMSET +/* Define if __asm () on built-in function's prototype causes redirection of + the builtin. */ +#undef HAVE_BUILTIN_REDIRECTION + /* Define if the __thread keyword is supported. */ #undef HAVE___THREAD @@ -186,6 +196,9 @@ /* Mach/i386 specific: define if the `i386_set_gdt' RPC is available. */ #undef HAVE_I386_SET_GDT +/* Defined if forced unwind support is available. */ +#undef HAVE_FORCED_UNWIND + /* */ --- glibc-2.3.2/config.make.in 2002-11-14 17:53:32.000000000 -0500 +++ glibc-2.3.2/config.make.in 2003-08-21 08:36:58.000000000 -0400 @@ -1,5 +1,5 @@ # @configure_input@ -# From $Id: config.make.in,v 1.90 2002/11/14 03:59:36 roland Exp $. +# From $Id: config.make.in,v 1.94 2003/06/04 21:40:22 drepper Exp $. # Don't edit this file. Put configuration parameters in configparms instead. version = @VERSION@ @@ -50,6 +50,9 @@ old-glibc-headers = @old_glibc_headers@ unwind-find-fde = @libc_cv_gcc_unwind_find_fde@ have-initfini-array = @libc_cv_initfinit_array@ +have-cpp-asm-debuginfo = @libc_cv_cpp_asm_debuginfo@ +enable-check-abi = @enable_check_abi@ +have-forced-unwind = @libc_cv_forced_unwind@ static-libgcc = @libc_cv_gcc_static_libgcc@ @@ -82,8 +85,10 @@ # Build tools. CC = @CC@ +CXX = @CXX@ BUILD_CC = @BUILD_CC@ CFLAGS = @CFLAGS@ +ASFLAGS-config = @ASFLAGS_config@ AR = @AR@ RANLIB = @RANLIB@ MAKEINFO = @MAKEINFO@ --- glibc-2.3.2/configure 2003-02-26 04:20:48.000000000 -0500 +++ glibc-2.3.2/configure 2003-08-21 08:36:58.000000000 -0400 @@ -1,7 +1,7 @@ #! /bin/sh # From configure.in CVSid. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.57 for GNU C Library (see version.h). +# Generated by GNU Autoconf 2.54 for GNU C Library (see version.h). # # Report bugs to . # @@ -39,10 +39,7 @@ PS4='+ ' # NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME +for as_var in LANG LANGUAGE LC_ALL LC_COLLATE LC_CTYPE LC_NUMERIC LC_MESSAGES LC_TIME do if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var @@ -88,15 +85,15 @@ # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + echo "#! /bin/sh" >conftest.sh + echo "exit 0" >>conftest.sh + chmod +x conftest.sh + if (PATH="/nonexistent;."; conftest.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi - rm -f conf$$.sh + rm -f conftest.sh fi @@ -312,7 +309,7 @@ # include #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS with_fp with_cvs oldest_abi subdirs force_install all_warnings build build_cpu build_vendor build_os host host_cpu host_vendor host_os base_machine sysnames INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S PWD_P CC MAKE MSGFMT MAKEINFO SED AUTOCONF CFLAGS LDFLAGS CPPFLAGS ac_ct_CC OBJEXT BUILD_CC cross_compiling CPP AR OBJDUMP RANLIB ac_ct_RANLIB MIG AS LD CCVERSION SYSINCLUDES libc_cv_gcc_static_libgcc BASH libc_cv_have_bash2 KSH libc_cv_have_ksh AWK PERL INSTALL_INFO OLD_DEBIAN_INSTALL_INFO BISON VERSIONING libc_cv_asm_protected_directive libc_cv_initfinit_array libc_cv_z_nodelete libc_cv_z_nodlopen libc_cv_z_initfirst libc_cv_Bgroup libc_cv_z_combreloc libc_cv_have_initfini no_whole_archive exceptions LIBGD EGREP sizeof_long_double libc_cv_gcc_unwind_find_fde uname_sysname uname_release uname_version old_glibc_headers libc_cv_slibdir libc_cv_localedir libc_cv_sysconfdir libc_cv_rootsbindir use_ldconfig ldd_rewrite_script gnu_ld gnu_as elf xcoff static shared pic_default profile omitfp bounded static_nss nopic_initfini DEFINES linux_doors mach_interface_list VERSION RELEASE LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS with_fp with_cvs enable_check_abi oldest_abi subdirs force_install all_warnings build build_cpu build_vendor build_os host host_cpu host_vendor host_os base_machine sysnames INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC OBJEXT BUILD_CC cross_compiling CPP CXX CXXFLAGS ac_ct_CXX AR OBJDUMP RANLIB ac_ct_RANLIB MIG AS LD PWD_P MAKE MSGFMT MAKEINFO SED AUTOCONF CCVERSION SYSINCLUDES libc_cv_gcc_static_libgcc BASH libc_cv_have_bash2 KSH libc_cv_have_ksh AWK PERL INSTALL_INFO OLD_DEBIAN_INSTALL_INFO BISON VERSIONING libc_cv_asm_protected_directive libc_cv_initfinit_array libc_cv_z_nodelete libc_cv_z_nodlopen libc_cv_z_initfirst libc_cv_Bgroup ASFLAGS_config libc_cv_z_combreloc libc_cv_have_initfini libc_cv_cpp_asm_debuginfo no_whole_archive exceptions LIBGD EGREP sizeof_long_double libc_cv_gcc_unwind_find_fde uname_sysname uname_release uname_version old_glibc_headers libc_cv_slibdir libc_cv_localedir libc_cv_sysconfdir libc_cv_rootsbindir libc_cv_forced_unwind use_ldconfig ldd_rewrite_script gnu_ld gnu_as elf xcoff static shared pic_default profile omitfp bounded static_nss nopic_initfini DEFINES linux_doors mach_interface_list VERSION RELEASE LIBOBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. @@ -773,6 +770,14 @@ ac_env_CPP_value=$CPP ac_cv_env_CPP_set=${CPP+set} ac_cv_env_CPP_value=$CPP +ac_env_CXX_set=${CXX+set} +ac_env_CXX_value=$CXX +ac_cv_env_CXX_set=${CXX+set} +ac_cv_env_CXX_value=$CXX +ac_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_env_CXXFLAGS_value=$CXXFLAGS +ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_cv_env_CXXFLAGS_value=$CXXFLAGS # # Report the --help message. @@ -851,6 +856,8 @@ --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-sanity-checks really do not use threads (should not be used except in special situations) [default=yes] + --enable-check-abi do "make check-abi" in "make check" (no/warn/yes) + [default=no] --enable-shared build shared library [default=yes if GNU ld & ELF] --enable-profile build profiled library [default=yes] @@ -899,6 +906,8 @@ CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor + CXX C++ compiler command + CXXFLAGS C++ compiler flags Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. @@ -967,7 +976,7 @@ if $ac_init_version; then cat <<\_ACEOF GNU C Library configure (see version.h) -generated by GNU Autoconf 2.57 +generated by GNU Autoconf 2.54 Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. @@ -982,7 +991,7 @@ running configure, to aid debugging if configure makes a mistake. It was created by GNU C Library $as_me (see version.h), which was -generated by GNU Autoconf 2.57. Invocation command line was +generated by GNU Autoconf 2.54. Invocation command line was $ $0 $@ @@ -1034,54 +1043,24 @@ # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= -ac_configure_args0= -ac_configure_args1= ac_sep= -ac_must_keep_next=false -for ac_pass in 1 2 +for ac_arg do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; - 2) - ac_configure_args1="$ac_configure_args1 '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" - # Get rid of the leading space. - ac_sep=" " - ;; - esac - done + case $ac_arg in + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n ) continue ;; + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + continue ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " done -$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } -$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there @@ -1479,6 +1458,15 @@ enable_sanity=yes fi; + +# Check whether --enable-check-abi or --disable-check-abi was given. +if test "${enable_check_abi+set}" = set; then + enableval="$enable_check_abi" + enable_check_abi=$enableval +else + enable_check_abi=no +fi; + static=yes # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then @@ -1822,8 +1810,33 @@ m68k) base_machine=m68k machine=m68k/m68020 ;; m88???) base_machine=m88k machine=m88k/$machine ;; m88k) base_machine=m88k machine=m88k/m88100 ;; -mips64*) base_machine=mips64 machine=mips/mips64/$machine ;; -mips*) base_machine=mips machine=mips/$machine ;; +mips64*) base_machine=mips64 + case "$CC $CFLAGS $CPPFLAGS " in + *" -mabi=n32 "*) mips_cc_abi=n32 ;; + *" -mabi=64 "*|*" -mabi=n64 "*) mips_cc_abi=64 ;; + *" -mabi=32 "*|*" -mabi=o32 "*) mips_cc_abi=32 ;; + *) mips_cc_abi=default ;; + esac + case $config_os in + *abin32*) mips_config_abi=n32 ;; + *abi64*|*abin64*) mips_config_abi=64 ;; + *abi32*|*abio32*) mips_config_abi=32 ;; + *) mips_config_abi=$mips_cc_abi ;; + esac + case $mips_config_abi in + default) machine=mips/mips64/n32 mips_config_abi=n32 ;; + n32) machine=mips/mips64/n32 ;; + 64) machine=mips/mips64/n64 ;; + 32) machine=mips/mips32/kern64 ;; + esac + machine=$machine/$config_machine + if test $mips_config_abi != $mips_cc_abi; then + # This won't make it to config.make, but we want to + # set this in case configure tests depend on it. + CPPFLAGS="$CPPFLAGS -mabi=$mips_config_abi" + fi + ;; +mips*) base_machine=mips machine=mips/mips32/$machine ;; powerpc) base_machine=powerpc machine=powerpc/powerpc32 ;; powerpc64) base_machine=powerpc machine=powerpc/powerpc64 ;; s390) base_machine=s390 machine=s390/s390-32 ;; @@ -2170,70 +2183,59 @@ fi -# We need the physical current working directory. We cannot use the -# "pwd -P" shell builtin since that's not portable. Instead we try to -# find a pwd binary. Note that assigning to the PWD environment -# variable might have some interesting side effects, so we don't do -# that. -# Extract the first word of "pwd", so it can be a program name with args. -set dummy pwd; ac_word=$2 +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_path_PWD_P+set}" = set; then +if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - case $PWD_P in - [\\/]* | ?:[\\/]*) - ac_cv_path_PWD_P="$PWD_P" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_PWD_P="$as_dir/$ac_word$ac_exec_ext" + ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done - test -z "$ac_cv_path_PWD_P" && ac_cv_path_PWD_P="no" - ;; -esac fi -PWD_P=$ac_cv_path_PWD_P - -if test -n "$PWD_P"; then - echo "$as_me:$LINENO: result: $PWD_P" >&5 -echo "${ECHO_T}$PWD_P" >&6 +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi -if test "$PWD_P" = no; then - { { echo "$as_me:$LINENO: error: *** A pwd binary could not be found." >&5 -echo "$as_me: error: *** A pwd binary could not be found." >&2;} - { (exit 1); exit 1; }; } fi - -# These programs are version sensitive. - -for ac_prog in ${ac_tool_prefix}gcc ${ac_tool_prefix}cc -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH @@ -2242,7 +2244,7 @@ test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_prog" + ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi @@ -2251,50 +2253,31 @@ fi fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi - test -n "$CC" && break -done - -if test -z "$CC"; then - ac_verc_fail=yes + CC=$ac_ct_CC else - # Found it, now check the version. - echo "$as_me:$LINENO: checking version of $CC" >&5 -echo $ECHO_N "checking version of $CC... $ECHO_C" >&6 - ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; - 3.[2-9]*) - ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; - *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; - - esac - echo "$as_me:$LINENO: result: $ac_prog_version" >&5 -echo "${ECHO_T}$ac_prog_version" >&6 -fi -if test $ac_verc_fail = yes; then - critic_missing="$critic_missing gcc" + CC="$ac_cv_prog_CC" fi -for ac_prog in gnumake gmake make -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_MAKE+set}" = set; then +if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test -n "$MAKE"; then - ac_cv_prog_MAKE="$MAKE" # Let the user override the test. + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH @@ -2303,7 +2286,7 @@ test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_MAKE="$ac_prog" + ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi @@ -2312,63 +2295,27 @@ fi fi -MAKE=$ac_cv_prog_MAKE -if test -n "$MAKE"; then - echo "$as_me:$LINENO: result: $MAKE" >&5 -echo "${ECHO_T}$MAKE" >&6 +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi - test -n "$MAKE" && break -done - -if test -z "$MAKE"; then - ac_verc_fail=yes -else - # Found it, now check the version. - echo "$as_me:$LINENO: checking version of $MAKE" >&5 -echo $ECHO_N "checking version of $MAKE... $ECHO_C" >&6 - ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*GNU Make[^0-9]*\([0-9][0-9.]*\).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; - 3.79* | 3.[89]*) - ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; - *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; - - esac - echo "$as_me:$LINENO: result: $ac_prog_version" >&5 -echo "${ECHO_T}$ac_prog_version" >&6 -fi -if test $ac_verc_fail = yes; then - critic_missing="$critic_missing make" -fi - - - -if test -n "$critic_missing"; then -{ { echo "$as_me:$LINENO: error: -*** These critical programs are missing or too old:$critic_missing -*** Check the INSTALL file for required versions." >&5 -echo "$as_me: error: -*** These critical programs are missing or too old:$critic_missing -*** Check the INSTALL file for required versions." >&2;} - { (exit 1); exit 1; }; } fi - - -for ac_prog in gnumsgfmt gmsgfmt msgfmt -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_MSGFMT+set}" = set; then +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test -n "$MSGFMT"; then - ac_cv_prog_MSGFMT="$MSGFMT" # Let the user override the test. + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH @@ -2377,7 +2324,7 @@ test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_MSGFMT="$ac_prog" + ac_cv_prog_ac_ct_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi @@ -2386,51 +2333,33 @@ fi fi -MSGFMT=$ac_cv_prog_MSGFMT -if test -n "$MSGFMT"; then - echo "$as_me:$LINENO: result: $MSGFMT" >&5 -echo "${ECHO_T}$MSGFMT" >&6 +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi - test -n "$MSGFMT" && break -done - -if test -z "$MSGFMT"; then - ac_verc_fail=yes + CC=$ac_ct_CC else - # Found it, now check the version. - echo "$as_me:$LINENO: checking version of $MSGFMT" >&5 -echo $ECHO_N "checking version of $MSGFMT... $ECHO_C" >&6 - ac_prog_version=`$MSGFMT --version 2>&1 | sed -n 's/^.*GNU gettext.* \([0-9]*\.[0-9.]*\).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; - 0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*) - ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; - *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; - - esac - echo "$as_me:$LINENO: result: $ac_prog_version" >&5 -echo "${ECHO_T}$ac_prog_version" >&6 -fi -if test $ac_verc_fail = yes; then - MSGFMT=: aux_missing="$aux_missing msgfmt" + CC="$ac_cv_prog_CC" fi -for ac_prog in makeinfo -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_MAKEINFO+set}" = set; then +if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test -n "$MAKEINFO"; then - ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test. + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. else + ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do @@ -2438,205 +2367,30 @@ test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_MAKEINFO="$ac_prog" + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi fi fi -MAKEINFO=$ac_cv_prog_MAKEINFO -if test -n "$MAKEINFO"; then - echo "$as_me:$LINENO: result: $MAKEINFO" >&5 -echo "${ECHO_T}$MAKEINFO" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$MAKEINFO" && break -done - -if test -z "$MAKEINFO"; then - ac_verc_fail=yes -else - # Found it, now check the version. - echo "$as_me:$LINENO: checking version of $MAKEINFO" >&5 -echo $ECHO_N "checking version of $MAKEINFO... $ECHO_C" >&6 - ac_prog_version=`$MAKEINFO --version 2>&1 | sed -n 's/^.*GNU texinfo.* \([0-9][0-9.]*\).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; - 4.*) - ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; - *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; - - esac - echo "$as_me:$LINENO: result: $ac_prog_version" >&5 -echo "${ECHO_T}$ac_prog_version" >&6 -fi -if test $ac_verc_fail = yes; then - MAKEINFO=: aux_missing="$aux_missing makeinfo" -fi - -for ac_prog in sed -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_SED+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$SED"; then - ac_cv_prog_SED="$SED" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_SED="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -SED=$ac_cv_prog_SED -if test -n "$SED"; then - echo "$as_me:$LINENO: result: $SED" >&5 -echo "${ECHO_T}$SED" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$SED" && break -done - -if test -z "$SED"; then - ac_verc_fail=yes -else - # Found it, now check the version. - echo "$as_me:$LINENO: checking version of $SED" >&5 -echo $ECHO_N "checking version of $SED... $ECHO_C" >&6 - ac_prog_version=`$SED --version 2>&1 | sed -n 's/^.*GNU sed version \([0-9]*\.[0-9.]*\).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; - 3.0[2-9]*|3.[1-9]*|[4-9]*) - ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; - *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; - - esac - echo "$as_me:$LINENO: result: $ac_prog_version" >&5 -echo "${ECHO_T}$ac_prog_version" >&6 -fi -if test $ac_verc_fail = yes; then - SED=: aux_missing="$aux_missing sed" -fi - - -if test "x$with_cvs" != xyes; then - for ac_prog in autoconf -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_AUTOCONF+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$AUTOCONF"; then - ac_cv_prog_AUTOCONF="$AUTOCONF" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AUTOCONF="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -AUTOCONF=$ac_cv_prog_AUTOCONF -if test -n "$AUTOCONF"; then - echo "$as_me:$LINENO: result: $AUTOCONF" >&5 -echo "${ECHO_T}$AUTOCONF" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$AUTOCONF" && break -done -test -n "$AUTOCONF" || AUTOCONF="no" - - case "x$AUTOCONF" in - xno|x|x:) AUTOCONF=no ;; - *) - echo "$as_me:$LINENO: checking whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works" >&5 -echo $ECHO_N "checking whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works... $ECHO_C" >&6 -if test "${libc_cv_autoconf_works+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then - libc_cv_autoconf_works=yes - else - libc_cv_autoconf_works=no - fi -fi -echo "$as_me:$LINENO: result: $libc_cv_autoconf_works" >&5 -echo "${ECHO_T}$libc_cv_autoconf_works" >&6 - test $libc_cv_autoconf_works = yes || AUTOCONF=no - ;; - esac - test "x$AUTOCONF" != xno || aux_missing="$aux_missing autoconf" -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then @@ -2648,52 +2402,12 @@ fi fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi - if test -z "$CC"; then if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 + for ac_prog in cl + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then @@ -2709,7 +2423,7 @@ test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi @@ -2727,11 +2441,15 @@ echo "${ECHO_T}no" >&6 fi + test -n "$CC" && break + done fi -if test -z "$ac_cv_prog_CC"; then +if test -z "$CC"; then ac_ct_CC=$CC - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then @@ -2747,7 +2465,7 @@ test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="cc" + ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi @@ -2764,150 +2482,9 @@ echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi - - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi - -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$ac_ct_CC" && break -done + + test -n "$ac_ct_CC" && break +done CC=$ac_ct_CC fi @@ -2915,10 +2492,8 @@ fi -test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&5 -echo "$as_me: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&2;} +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH" >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH" >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. @@ -2949,11 +2524,7 @@ else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +#include "confdefs.h" int main () @@ -2978,12 +2549,9 @@ done else echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&2;} +cat conftest.$ac_ext >&5 +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile" >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile" >&2;} { (exit 1); exit 1; }; } fi @@ -3000,11 +2568,7 @@ else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +#include "confdefs.h" int main () @@ -3032,8 +2596,7 @@ ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - +cat conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -3053,11 +2616,7 @@ else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +#include "confdefs.h" int main () @@ -3082,8 +2641,7 @@ ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - +cat conftest.$ac_ext >&5 ac_cv_prog_cc_g=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -3114,11 +2672,7 @@ ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +#include "confdefs.h" #include #include #include @@ -3181,8 +2735,7 @@ break else echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - +cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext done @@ -3233,11 +2786,7 @@ do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +#include "confdefs.h" #include $ac_declaration int @@ -3263,18 +2812,13 @@ : else echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - +cat conftest.$ac_ext >&5 continue fi rm -f conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +#include "confdefs.h" $ac_declaration int main () @@ -3299,8 +2843,7 @@ break else echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - +cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext done @@ -3313,8 +2856,7 @@ else echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - +cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext ac_ext=c @@ -3389,22 +2931,12 @@ do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif +#include "confdefs.h" +#include Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 @@ -3427,8 +2959,7 @@ : else echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - + cat conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi @@ -3438,11 +2969,7 @@ # can be detected and how. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +#include "confdefs.h" #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 @@ -3466,8 +2993,7 @@ continue else echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - + cat conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break @@ -3496,22 +3022,12 @@ do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif +#include "confdefs.h" +#include Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 @@ -3534,8 +3050,7 @@ : else echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - + cat conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi @@ -3545,11 +3060,7 @@ # can be detected and how. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +#include "confdefs.h" #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 @@ -3573,8 +3084,7 @@ continue else echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - + cat conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break @@ -3587,10 +3097,8 @@ if $ac_preproc_ok; then : else - { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&5 -echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&2;} + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check" >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} { (exit 1); exit 1; }; } fi @@ -3600,34 +3108,698 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -# Was a --with-binutils option given? -if test -n "$path_binutils"; then - # Make absolute; ensure a single trailing slash. - path_binutils=`(cd $path_binutils; pwd) | sed 's%/*$%/%'` - CC="$CC -B$path_binutils" +# We need the C++ compiler only for testing. +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + echo "$as_me:$LINENO: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi -AS=`$CC -print-prog-name=as` -LD=`$CC -print-prog-name=ld` -AR=`$CC -print-prog-name=ar` -OBJDUMP=`$CC -print-prog-name=objdump` + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +echo "${ECHO_T}$ac_ct_CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi -# ranlib has to be treated a bit differently since it might not exist at all. -ac_ranlib=`$CC -print-prog-name=ranlib` -if test "x$ac_ranlib" = xranlib; then -# This extra check has to happen since gcc simply echos the parameter in -# case it cannot find the value in its own directories. -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 + test -n "$ac_ct_CXX" && break +done +test -n "$ac_ct_CXX" || ac_ct_CXX="g++" + + CXX=$ac_ct_CXX +fi + + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C++ compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_compiler_gnu=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 +GXX=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +CXXFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cxx_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cxx_g=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_prog_cxx_g=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +for ac_declaration in \ + ''\ + '#include ' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +continue +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +# Was a --with-binutils option given? +if test -n "$path_binutils"; then + # Make absolute; ensure a single trailing slash. + path_binutils=`(cd $path_binutils; pwd) | sed 's%/*$%/%'` + CC="$CC -B$path_binutils" +fi +AS=`$CC -print-prog-name=as` +LD=`$CC -print-prog-name=ld` +AR=`$CC -print-prog-name=ar` + +OBJDUMP=`$CC -print-prog-name=objdump` + + +# ranlib has to be treated a bit differently since it might not exist at all. +ac_ranlib=`$CC -print-prog-name=ranlib` +if test "x$ac_ranlib" = xranlib; then +# This extra check has to happen since gcc simply echos the parameter in +# case it cannot find the value in its own directories. +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +else + RANLIB=$ac_ranlib +fi + + +# Determine whether we are using GNU binutils. +echo "$as_me:$LINENO: checking whether $AS is GNU as" >&5 +echo $ECHO_N "checking whether $AS is GNU as... $ECHO_C" >&6 +if test "${libc_cv_prog_as_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Most GNU programs take a -v and spit out some text including +# the word 'GNU'. Some try to read stdin, so give them /dev/null. +if $AS -o conftest -v &1 | grep GNU > /dev/null 2>&1; then + libc_cv_prog_as_gnu=yes +else + libc_cv_prog_as_gnu=no +fi +rm -fr contest* +fi +echo "$as_me:$LINENO: result: $libc_cv_prog_as_gnu" >&5 +echo "${ECHO_T}$libc_cv_prog_as_gnu" >&6 +rm -f a.out +gnu_as=$libc_cv_prog_as_gnu + +echo "$as_me:$LINENO: checking whether $LD is GNU ld" >&5 +echo $ECHO_N "checking whether $LD is GNU ld... $ECHO_C" >&6 +if test "${libc_cv_prog_ld_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Most GNU programs take a -v and spit out some text including +# the word 'GNU'. Some try to read stdin, so give them /dev/null. +if $LD -o conftest -v &1 | grep GNU > /dev/null 2>&1; then + libc_cv_prog_ld_gnu=yes +else + libc_cv_prog_ld_gnu=no +fi +rm -fr contest* +fi +echo "$as_me:$LINENO: result: $libc_cv_prog_ld_gnu" >&5 +echo "${ECHO_T}$libc_cv_prog_ld_gnu" >&6 +gnu_ld=$libc_cv_prog_ld_gnu + + +# Accept binutils 2.13 or newer. +for ac_prog in $AS +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AS+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AS"; then + ac_cv_prog_AS="$AS" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AS="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AS=$ac_cv_prog_AS +if test -n "$AS"; then + echo "$as_me:$LINENO: result: $AS" >&5 +echo "${ECHO_T}$AS" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$AS" && break +done + +if test -z "$AS"; then + ac_verc_fail=yes +else + # Found it, now check the version. + echo "$as_me:$LINENO: checking version of $AS" >&5 +echo $ECHO_N "checking version of $AS... $ECHO_C" >&6 + ac_prog_version=`$AS --version 2>&1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 2.1[3-9]*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + + esac + echo "$as_me:$LINENO: result: $ac_prog_version" >&5 +echo "${ECHO_T}$ac_prog_version" >&6 +fi +if test $ac_verc_fail = yes; then + AS=: critic_missing="$critic_missing as" +fi + +for ac_prog in $LD +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$LD"; then + ac_cv_prog_LD="$LD" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_LD="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +LD=$ac_cv_prog_LD +if test -n "$LD"; then + echo "$as_me:$LINENO: result: $LD" >&5 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$LD" && break +done + +if test -z "$LD"; then + ac_verc_fail=yes +else + # Found it, now check the version. + echo "$as_me:$LINENO: checking version of $LD" >&5 +echo $ECHO_N "checking version of $LD... $ECHO_C" >&6 + ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*GNU ld.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 2.1[3-9]*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + + esac + echo "$as_me:$LINENO: result: $ac_prog_version" >&5 +echo "${ECHO_T}$ac_prog_version" >&6 +fi +if test $ac_verc_fail = yes; then + LD=: critic_missing="$critic_missing ld" +fi + + +# We need the physical current working directory. We cannot use the +# "pwd -P" shell builtin since that's not portable. Instead we try to +# find a pwd binary. Note that assigning to the PWD environment +# variable might have some interesting side effects, so we don't do +# that. +# Extract the first word of "pwd", so it can be a program name with args. +set dummy pwd; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_PWD_P+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $PWD_P in + [\\/]* | ?:[\\/]*) + ac_cv_path_PWD_P="$PWD_P" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PWD_P="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_PWD_P" && ac_cv_path_PWD_P="no" + ;; +esac +fi +PWD_P=$ac_cv_path_PWD_P + +if test -n "$PWD_P"; then + echo "$as_me:$LINENO: result: $PWD_P" >&5 +echo "${ECHO_T}$PWD_P" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +if test "$PWD_P" = no; then + { { echo "$as_me:$LINENO: error: *** A pwd binary could not be found." >&5 +echo "$as_me: error: *** A pwd binary could not be found." >&2;} + { (exit 1); exit 1; }; } +fi + +# These programs are version sensitive. + +for ac_prog in ${ac_tool_prefix}gcc ${ac_tool_prefix}cc +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break +done + +if test -z "$CC"; then + ac_verc_fail=yes +else + # Found it, now check the version. + echo "$as_me:$LINENO: checking version of $CC" >&5 +echo $ECHO_N "checking version of $CC... $ECHO_C" >&6 + ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 3.[2-9]*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + + esac + echo "$as_me:$LINENO: result: $ac_prog_version" >&5 +echo "${ECHO_T}$ac_prog_version" >&6 +fi +if test $ac_verc_fail = yes; then + critic_missing="$critic_missing gcc" +fi + +for ac_prog in gnumake gmake make +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_RANLIB+set}" = set; then +if test "${ac_cv_prog_MAKE+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. + if test -n "$MAKE"; then + ac_cv_prog_MAKE="$MAKE" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH @@ -3636,7 +3808,7 @@ test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + ac_cv_prog_MAKE="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi @@ -3645,27 +3817,51 @@ fi fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - echo "$as_me:$LINENO: result: $RANLIB" >&5 -echo "${ECHO_T}$RANLIB" >&6 +MAKE=$ac_cv_prog_MAKE +if test -n "$MAKE"; then + echo "$as_me:$LINENO: result: $MAKE" >&5 +echo "${ECHO_T}$MAKE" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi + test -n "$MAKE" && break +done + +if test -z "$MAKE"; then + ac_verc_fail=yes +else + # Found it, now check the version. + echo "$as_me:$LINENO: checking version of $MAKE" >&5 +echo $ECHO_N "checking version of $MAKE... $ECHO_C" >&6 + ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*GNU Make[^0-9]*\([0-9][0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 3.79* | 3.[89]*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + + esac + echo "$as_me:$LINENO: result: $ac_prog_version" >&5 +echo "${ECHO_T}$ac_prog_version" >&6 fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 +if test $ac_verc_fail = yes; then + critic_missing="$critic_missing make" +fi + + +for ac_prog in gnumsgfmt gmsgfmt msgfmt +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then +if test "${ac_cv_prog_MSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. + if test -n "$MSGFMT"; then + ac_cv_prog_MSGFMT="$MSGFMT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH @@ -3674,86 +3870,59 @@ test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" + ac_cv_prog_MSGFMT="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done - test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" fi fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 -echo "${ECHO_T}$ac_ct_RANLIB" >&6 +MSGFMT=$ac_cv_prog_MSGFMT +if test -n "$MSGFMT"; then + echo "$as_me:$LINENO: result: $MSGFMT" >&5 +echo "${ECHO_T}$MSGFMT" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi - RANLIB=$ac_ct_RANLIB -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -else - RANLIB=$ac_ranlib -fi - + test -n "$MSGFMT" && break +done -# Determine whether we are using GNU binutils. -echo "$as_me:$LINENO: checking whether $AS is GNU as" >&5 -echo $ECHO_N "checking whether $AS is GNU as... $ECHO_C" >&6 -if test "${libc_cv_prog_as_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Most GNU programs take a -v and spit out some text including -# the word 'GNU'. Some try to read stdin, so give them /dev/null. -if $AS -o conftest -v &1 | grep GNU > /dev/null 2>&1; then - libc_cv_prog_as_gnu=yes +if test -z "$MSGFMT"; then + ac_verc_fail=yes else - libc_cv_prog_as_gnu=no -fi -rm -fr contest* -fi -echo "$as_me:$LINENO: result: $libc_cv_prog_as_gnu" >&5 -echo "${ECHO_T}$libc_cv_prog_as_gnu" >&6 -rm -f a.out -gnu_as=$libc_cv_prog_as_gnu + # Found it, now check the version. + echo "$as_me:$LINENO: checking version of $MSGFMT" >&5 +echo $ECHO_N "checking version of $MSGFMT... $ECHO_C" >&6 + ac_prog_version=`$MSGFMT --version 2>&1 | sed -n 's/^.*GNU gettext.* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; -echo "$as_me:$LINENO: checking whether $LD is GNU ld" >&5 -echo $ECHO_N "checking whether $LD is GNU ld... $ECHO_C" >&6 -if test "${libc_cv_prog_ld_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Most GNU programs take a -v and spit out some text including -# the word 'GNU'. Some try to read stdin, so give them /dev/null. -if $LD -o conftest -v &1 | grep GNU > /dev/null 2>&1; then - libc_cv_prog_ld_gnu=yes -else - libc_cv_prog_ld_gnu=no + esac + echo "$as_me:$LINENO: result: $ac_prog_version" >&5 +echo "${ECHO_T}$ac_prog_version" >&6 fi -rm -fr contest* +if test $ac_verc_fail = yes; then + MSGFMT=: aux_missing="$aux_missing msgfmt" fi -echo "$as_me:$LINENO: result: $libc_cv_prog_ld_gnu" >&5 -echo "${ECHO_T}$libc_cv_prog_ld_gnu" >&6 -gnu_ld=$libc_cv_prog_ld_gnu - -# Accept binutils 2.13 or newer. -for ac_prog in $AS +for ac_prog in makeinfo do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_AS+set}" = set; then +if test "${ac_cv_prog_MAKEINFO+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test -n "$AS"; then - ac_cv_prog_AS="$AS" # Let the user override the test. + if test -n "$MAKEINFO"; then + ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH @@ -3762,7 +3931,7 @@ test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AS="$ac_prog" + ac_cv_prog_MAKEINFO="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi @@ -3771,28 +3940,28 @@ fi fi -AS=$ac_cv_prog_AS -if test -n "$AS"; then - echo "$as_me:$LINENO: result: $AS" >&5 -echo "${ECHO_T}$AS" >&6 +MAKEINFO=$ac_cv_prog_MAKEINFO +if test -n "$MAKEINFO"; then + echo "$as_me:$LINENO: result: $MAKEINFO" >&5 +echo "${ECHO_T}$MAKEINFO" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi - test -n "$AS" && break + test -n "$MAKEINFO" && break done -if test -z "$AS"; then +if test -z "$MAKEINFO"; then ac_verc_fail=yes else # Found it, now check the version. - echo "$as_me:$LINENO: checking version of $AS" >&5 -echo $ECHO_N "checking version of $AS... $ECHO_C" >&6 - ac_prog_version=`$AS --version 2>&1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'` + echo "$as_me:$LINENO: checking version of $MAKEINFO" >&5 +echo $ECHO_N "checking version of $MAKEINFO... $ECHO_C" >&6 + ac_prog_version=`$MAKEINFO --version 2>&1 | sed -n 's/^.*GNU texinfo.* \([0-9][0-9.]*\).*$/\1/p'` case $ac_prog_version in '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; - 2.1[3-9]*) + 4.*) ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; @@ -3801,20 +3970,20 @@ echo "${ECHO_T}$ac_prog_version" >&6 fi if test $ac_verc_fail = yes; then - AS=: critic_missing=t + MAKEINFO=: aux_missing="$aux_missing makeinfo" fi -for ac_prog in $LD +for ac_prog in sed do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_LD+set}" = set; then +if test "${ac_cv_prog_SED+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test -n "$LD"; then - ac_cv_prog_LD="$LD" # Let the user override the test. + if test -n "$SED"; then + ac_cv_prog_SED="$SED" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH @@ -3823,7 +3992,7 @@ test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_LD="$ac_prog" + ac_cv_prog_SED="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi @@ -3832,28 +4001,28 @@ fi fi -LD=$ac_cv_prog_LD -if test -n "$LD"; then - echo "$as_me:$LINENO: result: $LD" >&5 -echo "${ECHO_T}$LD" >&6 +SED=$ac_cv_prog_SED +if test -n "$SED"; then + echo "$as_me:$LINENO: result: $SED" >&5 +echo "${ECHO_T}$SED" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi - test -n "$LD" && break + test -n "$SED" && break done -if test -z "$LD"; then +if test -z "$SED"; then ac_verc_fail=yes else # Found it, now check the version. - echo "$as_me:$LINENO: checking version of $LD" >&5 -echo $ECHO_N "checking version of $LD... $ECHO_C" >&6 - ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*GNU ld.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'` + echo "$as_me:$LINENO: checking version of $SED" >&5 +echo $ECHO_N "checking version of $SED... $ECHO_C" >&6 + ac_prog_version=`$SED --version 2>&1 | sed -n 's/^.*GNU sed version \([0-9]*\.[0-9.]*\).*$/\1/p'` case $ac_prog_version in '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; - 2.1[3-9]*) + 3.0[2-9]*|3.[1-9]*|[4-9]*) ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; @@ -3862,10 +4031,83 @@ echo "${ECHO_T}$ac_prog_version" >&6 fi if test $ac_verc_fail = yes; then - LD=: critic_missing=t + SED=: aux_missing="$aux_missing sed" fi +for ac_prog in autoconf +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AUTOCONF+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AUTOCONF"; then + ac_cv_prog_AUTOCONF="$AUTOCONF" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AUTOCONF="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AUTOCONF=$ac_cv_prog_AUTOCONF +if test -n "$AUTOCONF"; then + echo "$as_me:$LINENO: result: $AUTOCONF" >&5 +echo "${ECHO_T}$AUTOCONF" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$AUTOCONF" && break +done +test -n "$AUTOCONF" || AUTOCONF="no" + +case "x$AUTOCONF" in +xno|x|x:) AUTOCONF=no ;; +*) + echo "$as_me:$LINENO: checking whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works" >&5 +echo $ECHO_N "checking whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works... $ECHO_C" >&6 +if test "${libc_cv_autoconf_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then + libc_cv_autoconf_works=yes + else + libc_cv_autoconf_works=no + fi +fi +echo "$as_me:$LINENO: result: $libc_cv_autoconf_works" >&5 +echo "${ECHO_T}$libc_cv_autoconf_works" >&6 + test $libc_cv_autoconf_works = yes || AUTOCONF=no + ;; +esac +if test "x$with_cvs" = xyes && test "x$AUTOCONF" = xno; then + # If --without-cvs they probably won't change configure.in, so no complaints. + aux_missing="$aux_missing autoconf" +fi + +test -n "$critic_missing" && { { echo "$as_me:$LINENO: error: +*** These critical programs are missing or too old:$critic_missing +*** Check the INSTALL file for required versions." >&5 +echo "$as_me: error: +*** These critical programs are missing or too old:$critic_missing +*** Check the INSTALL file for required versions." >&2;} + { (exit 1); exit 1; }; } + test -n "$aux_missing" && { echo "$as_me:$LINENO: WARNING: *** These auxiliary programs are missing or incompatible versions:$aux_missing *** some features will be disabled. @@ -3899,7 +4141,7 @@ char b; void c(void) {} EOF -$CC $CFLAGS -c conftest.c +$CC $CFLAGS $CPPFLAGS -c conftest.c $AR cr conftest.a conftest.o cp conftest.a conftest2.a $RANLIB conftest.a @@ -4298,11 +4540,7 @@ else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +#include "confdefs.h" #define __need_size_t #define __need_wchar_t #include @@ -4335,8 +4573,7 @@ libc_cv_friendly_stddef=yes else echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - +cat conftest.$ac_ext >&5 libc_cv_friendly_stddef=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -4357,7 +4594,12 @@ #include "confdefs.h" /* Nothing whatsoever. */ EOF -if ${CC-cc} $CFLAGS -c conftest.S 2>/dev/null; then +if { ac_try='${CC-cc} $CPPFLAGS $ASFLAGS -c conftest.S 1>&5' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then libc_cv_need_minus_P=no else libc_cv_need_minus_P=yes @@ -4380,7 +4622,12 @@ .text EOF libc_cv_dot_text= -if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then +if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then libc_cv_dot_text=.text fi rm -f conftest* @@ -4406,7 +4653,12 @@ ${ac_globl} foo foo: EOF - if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then + if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then libc_cv_asm_global_directive=${ac_globl} fi rm -f conftest* @@ -4441,9 +4693,10 @@ # (but it doesn't work), so we must do a linking check to be sure. cat > conftest1.c <<\EOF extern int glibc_conftest_frobozz; -main () { printf ("%d\n", glibc_conftest_frobozz); } +void _start() { glibc_conftest_frobozz = 1; } EOF if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \ + -nostartfiles -nostdlib \ -o conftest conftest.s conftest1.c 1>&5 2>&5; then libc_cv_asm_set_directive=yes else @@ -4475,7 +4728,12 @@ foo: .byte 1 EOF - if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then + if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then libc_cv_asm_type_prefix=${ac_try_prefix} fi rm -f conftest* @@ -4511,7 +4769,7 @@ _sym: .symver _sym,sym@VERS EOF -if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&5 2>&5; then +if ${CC-cc} -c $ASFLAGS conftest.s 1>&5 2>&5; then libc_cv_asm_symver_directive=yes else libc_cv_asm_symver_directive=no @@ -4540,10 +4798,11 @@ global: sym; } VERS_1; EOF - if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&5 2>&5; then - if { ac_try='${CC-cc} $CFLAGS -shared -o conftest.so conftest.o - -nostartfiles -nostdlib - -Wl,--version-script,conftest.map + if ${CC-cc} -c $ASFLAGS conftest.s 1>&5 2>&5; then + if { ac_try='${CC-cc} $CFLAGS $LDFLAGS -shared + -o conftest.so conftest.o + -nostartfiles -nostdlib + -Wl,--version-script,conftest.map 1>&5' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 @@ -4596,7 +4855,7 @@ .section foo_section .previous EOF - if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5' + if { ac_try='${CC-cc} -c $ASFLAGS conftest.s 1>&5' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4625,7 +4884,7 @@ .pushsection foo_section .popsection EOF - if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5' + if { ac_try='${CC-cc} -c $ASFLAGS conftest.s 1>&5' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4657,7 +4916,7 @@ .hidden bar bar: EOF - if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5' + if { ac_try='${CC-cc} -c $ASFLAGS conftest.s 1>&5' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4692,7 +4951,12 @@ int bar __attribute__ ((visibility ("protected"))) = 1; EOF libc_cv_visibility_attribute=no - if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then + if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s 1>&5' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then if grep '\.hidden.*foo' conftest.s >/dev/null; then if grep '\.protected.*bar' conftest.s >/dev/null; then libc_cv_visibility_attribute=yes @@ -4724,7 +4988,12 @@ int bar (int x) { return x; } EOF libc_cv_broken_visibility_attribute=yes - if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then + if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s1>&5' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then if grep '\.hidden[ _]foo' conftest.s >/dev/null; then libc_cv_broken_visibility_attribute=no fi @@ -4756,7 +5025,12 @@ int dfoo = 1; EOF libc_cv_broken_alias_attribute=yes - if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then + if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s 1>&5' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then if grep 'xyzzy' conftest.s >/dev/null && grep 'abccb' conftest.s >/dev/null; then libc_cv_broken_alias_attribute=no @@ -4782,7 +5056,7 @@ else echo "int i;" > conftest.c libc_cv_have_sdata_section=no - if ${CC-cc} -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \ + if ${CC-cc} $LDFLAGS -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \ | grep '\.sdata' >/dev/null; then libc_cv_have_sdata_section=yes fi @@ -4810,7 +5084,7 @@ int foo (void) { return 1; } int (*fp) (void) __attribute__ ((section (".init_array"))) = foo; EOF - if { ac_try='${CC-cc} -o conftest conftest.c + if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -o conftest conftest.c -static -nostartfiles -nostdlib 1>&5' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 @@ -4846,7 +5120,8 @@ cat > conftest.c <&5' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -4873,7 +5148,8 @@ cat > conftest.c <&5' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -4900,7 +5176,8 @@ cat > conftest.c <&5' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -4927,7 +5204,9 @@ cat > conftest.c <&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4944,6 +5223,43 @@ echo "${ECHO_T}$libc_cv_Bgroup" >&6 + ASFLAGS_config= + echo "$as_me:$LINENO: checking whether --noexecstack is desirable for .S files" >&5 +echo $ECHO_N "checking whether --noexecstack is desirable for .S files... $ECHO_C" >&6 +if test "${libc_cv_as_noexecstack+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.c <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } \ + && grep -q .note.GNU-stack conftest.s \ + && { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -Wa,--noexecstack + -c -o conftest.o conftest.s 1>&5' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } + then + libc_cv_as_noexecstack=yes + else + libc_cv_as_noexecstack=no + fi + rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_as_noexecstack" >&5 +echo "${ECHO_T}$libc_cv_as_noexecstack" >&6 + if test $libc_cv_as_noexecstack = yes; then + ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack" + fi + echo "$as_me:$LINENO: checking for -z combreloc" >&5 echo $ECHO_N "checking for -z combreloc... $ECHO_C" >&6 if test "${libc_cv_z_combreloc+set}" = set; then @@ -4954,7 +5270,8 @@ extern int mumble; int foo (void) { return bar (mumble); } EOF - if { ac_try='${CC-cc} -shared -o conftest.so conftest.c + if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS + -shared -o conftest.so conftest.c -nostdlib -nostartfiles -Wl,-z,combreloc 1>&5' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -4992,11 +5309,7 @@ else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +#include "confdefs.h" int main () @@ -5023,8 +5336,7 @@ libc_cv_have_initfini=yes else echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - +cat conftest.$ac_ext >&5 libc_cv_have_initfini=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -5084,11 +5396,7 @@ else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +#include "confdefs.h" asm ("_glibc_foobar:"); int main () @@ -5113,8 +5421,7 @@ libc_cv_asm_underscores=yes else echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - +cat conftest.$ac_ext >&5 libc_cv_asm_underscores=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext @@ -5128,7 +5435,7 @@ echo $ECHO_N "(cached) $ECHO_C" >&6 else cat > conftest.$ac_ext </dev/null; then +if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then libc_cv_asm_weak_directive=yes else libc_cv_asm_weak_directive=no @@ -5205,7 +5517,12 @@ ${libc_cv_asm_global_directive} baz baz: EOF - if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then + if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then libc_cv_asm_weakext_directive=yes else libc_cv_asm_weakext_directive=no @@ -5246,7 +5563,7 @@ cat > conftest.s <&5 (eval $ac_try) 2>&5 ac_status=$? @@ -5272,6 +5589,92 @@ ;; esac +echo "$as_me:$LINENO: checking whether CFI directives are supported" >&5 +echo $ECHO_N "checking whether CFI directives are supported... $ECHO_C" >&6 +if test "${libc_cv_asm_cfi_directives+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.s <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + libc_cv_asm_cfi_directives=yes +else + libc_cv_asm_cfi_directives=no +fi +rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_asm_cfi_directives" >&5 +echo "${ECHO_T}$libc_cv_asm_cfi_directives" >&6 +if test $libc_cv_asm_cfi_directives = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_ASM_CFI_DIRECTIVES 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking if -g produces usable source locations for assembler-with-cpp" >&5 +echo $ECHO_N "checking if -g produces usable source locations for assembler-with-cpp... $ECHO_C" >&6 +if test "${libc_cv_cpp_asm_debuginfo+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.S <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + ac_pattern='conftest\.S' + { ac_try='readelf --debug-dump=line conftest.o | + grep $ac_pattern 1>&5' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + libc_cv_cpp_asm_debuginfo=yes +else + libc_cv_cpp_asm_debuginfo=no +fi +rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_cpp_asm_debuginfo" >&5 +echo "${ECHO_T}$libc_cv_cpp_asm_debuginfo" >&6 +if test $libc_cv_cpp_asm_debuginfo = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_CPP_ASM_DEBUGINFO 1 +_ACEOF + +fi + echo "$as_me:$LINENO: checking for ld --no-whole-archive" >&5 echo $ECHO_N "checking for ld --no-whole-archive... $ECHO_C" >&6 if test "${libc_cv_ld_no_whole_archive+set}" = set; then @@ -5282,7 +5685,7 @@ int __eh_pc; __throw () {} EOF -if { ac_try='${CC-cc} $CFLAGS +if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles -Wl,--no-whole-archive -o conftest conftest.c 1>&5' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -5312,7 +5715,7 @@ int __eh_pc; __throw () {} EOF -if { ac_try='${CC-cc} $CFLAGS +if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles -fexceptions -o conftest conftest.c 1>&5' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 @@ -5342,11 +5745,7 @@ else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +#include "confdefs.h" int tester(int x) { asm ("" : : : "cc"); return x & 123; } int main () @@ -5371,8 +5770,7 @@ libc_cv_c_asmcr0_bug='no' else echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - +cat conftest.$ac_ext >&5 libc_cv_c_asmcr0_bug='yes' fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -5393,7 +5791,7 @@ echo $ECHO_N "(cached) $ECHO_C" >&6 else cat > conftest.c <&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - libc_cv_gcc_dwarf2_unwind_info=static -else - libc_cv_gcc_dwarf2_unwind_info=no -fi -# Some platforms' specs put -lgcc first. The second one doesn't hurt. -libc_unwind_check="${CC-cc} $CFLAGS -DCHECK__register_frame_info \ - -nostdlib -nostartfiles -o conftest conftest.c \ - -lgcc -lgcc_eh -lgcc" -if { ac_try='$libc_unwind_check >&5' + (exit $ac_status); }; } || + { ac_try='$libc_unwind_check -lgcc_eh -lgcc >&5' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); }; } +then if $libc_unwind_check -v 2>&1 >/dev/null \ | grep -q -- --eh-frame-hdr; then libc_cv_gcc_dwarf2_unwind_info=no_registry_needed @@ -5451,8 +5845,8 @@ libc_cv_gcc_dwarf2_unwind_info=no fi if test $libc_cv_gcc_dwarf2_unwind_info = no; then - if { ac_try='${CC-cc} $CFLAGS -DCHECK__register_frame - -nostdlib -nostartfiles + if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -DCHECK__register_frame + $LDFLAGS -nostdlib -nostartfiles -o conftest conftest.c -lgcc >&5' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 @@ -5493,14 +5887,14 @@ echo $ECHO_N "(cached) $ECHO_C" >&6 else cat > conftest.c <&5' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 @@ -5555,13 +5949,47 @@ fi +echo "$as_me:$LINENO: checking for redirection of built-in functions" >&5 +echo $ECHO_N "checking for redirection of built-in functions... $ECHO_C" >&6 +if test "${libc_cv_gcc_builtin_redirection+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.c <<\EOF +extern char *strstr (const char *, const char *) __asm ("my_strstr"); +char *foo (const char *a, const char *b) +{ + return __builtin_strstr (a, b); +} +EOF +if { ac_try='${CC-cc} -O3 -S conftest.c -o - | fgrep "my_strstr" > /dev/null' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; +then + libc_cv_gcc_builtin_redirection=yes +else + libc_cv_gcc_builtin_redirection=no +fi +rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_gcc_builtin_redirection" >&5 +echo "${ECHO_T}$libc_cv_gcc_builtin_redirection" >&6 +if test "$libc_cv_gcc_builtin_redirection" = yes ; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_BUILTIN_REDIRECTION 1 +_ACEOF + +fi + echo "$as_me:$LINENO: checking for local label subtraction" >&5 echo $ECHO_N "checking for local label subtraction... $ECHO_C" >&6 if test "${libc_cv_gcc_subtract_local_labels+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat > conftest.c <&5' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 @@ -5604,7 +6032,7 @@ cat > conftest.c <<\EOF __thread int a = 42; EOF - if { ac_try='${CC-cc} $CFLAGS -c conftest.c >&5' + if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c >&5' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -5637,7 +6065,7 @@ cat > conftest.c <<\EOF extern __thread int a __attribute__((tls_model ("initial-exec"))); EOF - if { ac_try='${CC-cc} $CFLAGS -S -Werror conftest.c >&5' + if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -S -Werror conftest.c >&5' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -5670,11 +6098,7 @@ LIBS="$LIBS -lgd -lpng -lz -lm" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +#include "confdefs.h" #include int main () @@ -5699,8 +6123,7 @@ LIBGD=yes else echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - +cat conftest.$ac_ext >&5 LIBGD=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext @@ -5737,54 +6160,43 @@ else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +#include "confdefs.h" #include #include #include #include -int -main () -{ - - ; - return 0; -} _ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_header_stdc=no + cat conftest.$ac_ext >&5 + ac_cv_header_stdc=no fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +#include "confdefs.h" #include _ACEOF @@ -5802,11 +6214,7 @@ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +#include "confdefs.h" #include _ACEOF @@ -5827,18 +6235,13 @@ else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +#include "confdefs.h" #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ +# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) @@ -5871,8 +6274,7 @@ else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - +cat conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi @@ -5911,11 +6313,7 @@ else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +#include "confdefs.h" $ac_includes_default #include <$ac_header> @@ -5935,8 +6333,7 @@ eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - +cat conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -5960,11 +6357,7 @@ else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +#include "confdefs.h" $ac_includes_default int main () @@ -5992,8 +6385,7 @@ ac_cv_type_long_double=yes else echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - +cat conftest.$ac_ext >&5 ac_cv_type_long_double=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -6015,11 +6407,7 @@ # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +#include "confdefs.h" $ac_includes_default int main () @@ -6047,11 +6435,7 @@ while :; do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +#include "confdefs.h" $ac_includes_default int main () @@ -6078,8 +6462,7 @@ ac_hi=$ac_mid; break else echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - +cat conftest.$ac_ext >&5 ac_lo=`expr $ac_mid + 1` if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= @@ -6091,15 +6474,10 @@ done else echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - +cat conftest.$ac_ext >&5 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +#include "confdefs.h" $ac_includes_default int main () @@ -6127,11 +6505,7 @@ while :; do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +#include "confdefs.h" $ac_includes_default int main () @@ -6158,8 +6532,7 @@ ac_lo=$ac_mid; break else echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - +cat conftest.$ac_ext >&5 ac_hi=`expr '(' $ac_mid ')' - 1` if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= @@ -6171,8 +6544,7 @@ done else echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - +cat conftest.$ac_ext >&5 ac_lo= ac_hi= fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -6183,11 +6555,7 @@ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +#include "confdefs.h" $ac_includes_default int main () @@ -6214,35 +6582,26 @@ ac_hi=$ac_mid else echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - +cat conftest.$ac_ext >&5 ac_lo=`expr '(' $ac_mid ')' + 1` fi rm -f conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_long_double=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long double), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (long double), 77 -See \`config.log' for more details." >&2;} +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long double), 77" >&5 +echo "$as_me: error: cannot compute sizeof (long double), 77" >&2;} { (exit 1); exit 1; }; } ;; esac else if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run test program while cross compiling -See \`config.log' for more details." >&2;} + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5 +echo "$as_me: error: cannot run test program while cross compiling" >&2;} { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +#include "confdefs.h" $ac_includes_default long longval () { return (long) (sizeof (long double)); } unsigned long ulongval () { return (long) (sizeof (long double)); } @@ -6290,13 +6649,10 @@ else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - +cat conftest.$ac_ext >&5 ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long double), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (long double), 77 -See \`config.log' for more details." >&2;} +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long double), 77" >&5 +echo "$as_me: error: cannot compute sizeof (long double), 77" >&2;} { (exit 1); exit 1; }; } fi rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext @@ -6335,8 +6691,8 @@ *) dest=$srcdir/$dir ;; esac if test -r $dest/configure; then - echo "$as_me:$LINENO: result: running configure fragment for $dest" >&5 -echo "${ECHO_T}running configure fragment for $dest" >&6 + echo "$as_me:$LINENO: result: running configure fragment for $dir" >&5 +echo "${ECHO_T}running configure fragment for $dir" >&6 . $dest/configure fi @@ -6461,6 +6817,7 @@ + if test $gnu_ld = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_GNU_LD 1 @@ -6594,7 +6951,7 @@ t end /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ : end' >>confcache -if diff $cache_file confcache >/dev/null 2>&1; then :; else +if cmp -s $cache_file confcache; then :; else if test -w $cache_file; then test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" cat confcache >$cache_file @@ -6654,8 +7011,6 @@ # configure, is in config.log if it exists. debug=false -ac_cs_recheck=false -ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF @@ -6690,10 +7045,7 @@ PS4='+ ' # NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME +for as_var in LANG LANGUAGE LC_ALL LC_COLLATE LC_CTYPE LC_NUMERIC LC_MESSAGES LC_TIME do if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var @@ -6739,15 +7091,15 @@ # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + echo "#! /bin/sh" >conftest.sh + echo "exit 0" >>conftest.sh + chmod +x conftest.sh + if (PATH="/nonexistent;."; conftest.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi - rm -f conf$$.sh + rm -f conftest.sh fi @@ -6910,7 +7262,7 @@ cat >&5 <<_CSEOF This file was extended by GNU C Library $as_me (see version.h), which was -generated by GNU Autoconf 2.57. Invocation command line was +generated by GNU Autoconf 2.54. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -6950,7 +7302,6 @@ -h, --help print this help, then exit -V, --version print version number, then exit - -q, --quiet do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] @@ -6973,7 +7324,7 @@ cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ GNU C Library config.status (see version.h) -configured by $0, generated by GNU Autoconf 2.57, +configured by $0, generated by GNU Autoconf 2.54, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 @@ -7010,9 +7361,12 @@ case $ac_option in # Handling of the options. _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; + echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion" + exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;; +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF --version | --vers* | -V ) echo "$ac_cs_version"; exit 0 ;; --he | --h) @@ -7034,9 +7388,6 @@ $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; # This is an error. -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 @@ -7051,20 +7402,6 @@ shift done -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF -if \$ac_cs_recheck; then - echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion -fi - _ACEOF cat >>$CONFIG_STATUS <<_ACEOF @@ -7105,9 +7442,6 @@ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason to put it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. # Create a temporary directory, and hook for its removal unless debugging. $debug || { @@ -7116,17 +7450,17 @@ } # Create a (secure) tmp directory for tmp files. - +: ${TMPDIR=/tmp} { - tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { - tmp=./confstat$$-$RANDOM + tmp=$TMPDIR/cs$$-$RANDOM (umask 077 && mkdir $tmp) } || { - echo "$me: cannot create a temporary directory in ." >&2 + echo "$me: cannot create a temporary directory in $TMPDIR" >&2 { (exit 1); exit 1; } } @@ -7176,6 +7510,7 @@ s,@LIBS@,$LIBS,;t t s,@with_fp@,$with_fp,;t t s,@with_cvs@,$with_cvs,;t t +s,@enable_check_abi@,$enable_check_abi,;t t s,@oldest_abi@,$oldest_abi,;t t s,@subdirs@,$subdirs,;t t s,@force_install@,$force_install,;t t @@ -7194,13 +7529,7 @@ s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t s,@INSTALL_DATA@,$INSTALL_DATA,;t t s,@LN_S@,$LN_S,;t t -s,@PWD_P@,$PWD_P,;t t s,@CC@,$CC,;t t -s,@MAKE@,$MAKE,;t t -s,@MSGFMT@,$MSGFMT,;t t -s,@MAKEINFO@,$MAKEINFO,;t t -s,@SED@,$SED,;t t -s,@AUTOCONF@,$AUTOCONF,;t t s,@CFLAGS@,$CFLAGS,;t t s,@LDFLAGS@,$LDFLAGS,;t t s,@CPPFLAGS@,$CPPFLAGS,;t t @@ -7209,6 +7538,9 @@ s,@BUILD_CC@,$BUILD_CC,;t t s,@cross_compiling@,$cross_compiling,;t t s,@CPP@,$CPP,;t t +s,@CXX@,$CXX,;t t +s,@CXXFLAGS@,$CXXFLAGS,;t t +s,@ac_ct_CXX@,$ac_ct_CXX,;t t s,@AR@,$AR,;t t s,@OBJDUMP@,$OBJDUMP,;t t s,@RANLIB@,$RANLIB,;t t @@ -7216,6 +7548,12 @@ s,@MIG@,$MIG,;t t s,@AS@,$AS,;t t s,@LD@,$LD,;t t +s,@PWD_P@,$PWD_P,;t t +s,@MAKE@,$MAKE,;t t +s,@MSGFMT@,$MSGFMT,;t t +s,@MAKEINFO@,$MAKEINFO,;t t +s,@SED@,$SED,;t t +s,@AUTOCONF@,$AUTOCONF,;t t s,@CCVERSION@,$CCVERSION,;t t s,@SYSINCLUDES@,$SYSINCLUDES,;t t s,@libc_cv_gcc_static_libgcc@,$libc_cv_gcc_static_libgcc,;t t @@ -7235,8 +7573,10 @@ s,@libc_cv_z_nodlopen@,$libc_cv_z_nodlopen,;t t s,@libc_cv_z_initfirst@,$libc_cv_z_initfirst,;t t s,@libc_cv_Bgroup@,$libc_cv_Bgroup,;t t +s,@ASFLAGS_config@,$ASFLAGS_config,;t t s,@libc_cv_z_combreloc@,$libc_cv_z_combreloc,;t t s,@libc_cv_have_initfini@,$libc_cv_have_initfini,;t t +s,@libc_cv_cpp_asm_debuginfo@,$libc_cv_cpp_asm_debuginfo,;t t s,@no_whole_archive@,$no_whole_archive,;t t s,@exceptions@,$exceptions,;t t s,@LIBGD@,$LIBGD,;t t @@ -7251,6 +7591,7 @@ s,@libc_cv_localedir@,$libc_cv_localedir,;t t s,@libc_cv_sysconfdir@,$libc_cv_sysconfdir,;t t s,@libc_cv_rootsbindir@,$libc_cv_rootsbindir,;t t +s,@libc_cv_forced_unwind@,$libc_cv_forced_unwind,;t t s,@use_ldconfig@,$use_ldconfig,;t t s,@ldd_rewrite_script@,$ldd_rewrite_script,;t t s,@gnu_ld@,$gnu_ld,;t t @@ -7649,7 +7990,7 @@ cat $tmp/in >>$tmp/config.h rm -f $tmp/in if test x"$ac_file" != x-; then - if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + if cmp -s $ac_file $tmp/config.h 2>/dev/null; then { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else @@ -7782,11 +8123,8 @@ # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + $SHELL $CONFIG_STATUS || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. --- glibc-2.3.2/configure.in 2003-02-25 19:46:31.000000000 -0500 +++ glibc-2.3.2/configure.in 2003-08-21 08:36:58.000000000 -0400 @@ -113,6 +113,14 @@ [enable_sanity=$enableval], [enable_sanity=yes]) +AC_SUBST(enable_check_abi) +AC_ARG_ENABLE([check-abi], + AC_HELP_STRING([--enable-check-abi], + [do "make check-abi" in "make check" (no/warn/yes) + @<:@default=no@:>@]), + [enable_check_abi=$enableval], + [enable_check_abi=no]) + dnl Arguments to enable or disable building the static, shared, profiled, dnl and -fomit-frame-pointer libraries. dnl I've disabled this for now since we cannot build glibc without static @@ -378,8 +386,33 @@ m68k) base_machine=m68k machine=m68k/m68020 ;; m88???) base_machine=m88k machine=m88k/$machine ;; m88k) base_machine=m88k machine=m88k/m88100 ;; -mips64*) base_machine=mips64 machine=mips/mips64/$machine ;; -mips*) base_machine=mips machine=mips/$machine ;; +mips64*) base_machine=mips64 + case "$CC $CFLAGS $CPPFLAGS " in + *" -mabi=n32 "*) mips_cc_abi=n32 ;; + *" -mabi=64 "*|*" -mabi=n64 "*) mips_cc_abi=64 ;; + *" -mabi=32 "*|*" -mabi=o32 "*) mips_cc_abi=32 ;; + *) mips_cc_abi=default ;; + esac + case $config_os in + *abin32*) mips_config_abi=n32 ;; + *abi64*|*abin64*) mips_config_abi=64 ;; + *abi32*|*abio32*) mips_config_abi=32 ;; + *) mips_config_abi=$mips_cc_abi ;; + esac + case $mips_config_abi in + default) machine=mips/mips64/n32 mips_config_abi=n32 ;; + n32) machine=mips/mips64/n32 ;; + 64) machine=mips/mips64/n64 ;; + 32) machine=mips/mips32/kern64 ;; + esac + machine=$machine/$config_machine + if test $mips_config_abi != $mips_cc_abi; then + # This won't make it to config.make, but we want to + # set this in case configure tests depend on it. + CPPFLAGS="$CPPFLAGS -mabi=$mips_config_abi" + fi + ;; +mips*) base_machine=mips machine=mips/mips32/$machine ;; powerpc) base_machine=powerpc machine=powerpc/powerpc32 ;; powerpc64) base_machine=powerpc machine=powerpc/powerpc64 ;; s390) base_machine=s390 machine=s390/s390-32 ;; @@ -637,6 +670,25 @@ fi AC_PROG_LN_S +AC_PROG_CC +if test $host != $build; then + AC_CHECK_PROGS(BUILD_CC, gcc cc) +fi +AC_SUBST(cross_compiling) +AC_PROG_CPP +# We need the C++ compiler only for testing. +AC_PROG_CXX +LIBC_PROG_BINUTILS +AC_SUBST(MIG)dnl Needed by sysdeps/mach/configure.in + +# Accept binutils 2.13 or newer. +AC_CHECK_PROG_VER(AS, $AS, --version, + [GNU assembler.* \([0-9]*\.[0-9.]*\)], + [2.1[3-9]*], AS=: critic_missing="$critic_missing as") +AC_CHECK_PROG_VER(LD, $LD, --version, + [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)], + [2.1[3-9]*], LD=: critic_missing="$critic_missing ld") + # We need the physical current working directory. We cannot use the # "pwd -P" shell builtin since that's not portable. Instead we try to # find a pwd binary. Note that assigning to the PWD environment @@ -656,14 +708,6 @@ [GNU Make[^0-9]*\([0-9][0-9.]*\)], [3.79* | 3.[89]*], critic_missing="$critic_missing make") - -if test -n "$critic_missing"; then -AC_MSG_ERROR([ -*** These critical programs are missing or too old:$critic_missing -*** Check the INSTALL file for required versions.]) -fi - - AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version, [GNU gettext.* \([0-9]*\.[0-9.]*\)], [0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*], @@ -677,40 +721,28 @@ [3.0[2-9]*|3.[1-9]*|[4-9]*], SED=: aux_missing="$aux_missing sed") -if test "x$with_cvs" != xyes; then - AC_CHECK_PROGS(AUTOCONF, autoconf, no) - case "x$AUTOCONF" in - xno|x|x:) AUTOCONF=no ;; - *) - AC_CACHE_CHECK(dnl +AC_CHECK_PROGS(AUTOCONF, autoconf, no) +case "x$AUTOCONF" in +xno|x|x:) AUTOCONF=no ;; +*) + AC_CACHE_CHECK(dnl whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works, libc_cv_autoconf_works, [dnl - if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then - libc_cv_autoconf_works=yes - else - libc_cv_autoconf_works=no - fi]) - test $libc_cv_autoconf_works = yes || AUTOCONF=no - ;; - esac - test "x$AUTOCONF" != xno || aux_missing="$aux_missing autoconf" -fi - -AC_PROG_CC -if test $host != $build; then - AC_CHECK_PROGS(BUILD_CC, gcc cc) + if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then + libc_cv_autoconf_works=yes + else + libc_cv_autoconf_works=no + fi]) + test $libc_cv_autoconf_works = yes || AUTOCONF=no + ;; +esac +if test "x$with_cvs" = xyes && test "x$AUTOCONF" = xno; then + # If --without-cvs they probably won't change configure.in, so no complaints. + aux_missing="$aux_missing autoconf" fi -AC_SUBST(cross_compiling) -AC_PROG_CPP -LIBC_PROG_BINUTILS -AC_SUBST(MIG)dnl Needed by sysdeps/mach/configure.in -# Accept binutils 2.13 or newer. -AC_CHECK_PROG_VER(AS, $AS, --version, - [GNU assembler.* \([0-9]*\.[0-9.]*\)], - [2.1[3-9]*], AS=: critic_missing=t) -AC_CHECK_PROG_VER(LD, $LD, --version, - [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)], - [2.1[3-9]*], LD=: critic_missing=t) +test -n "$critic_missing" && AC_MSG_ERROR([ +*** These critical programs are missing or too old:$critic_missing +*** Check the INSTALL file for required versions.]) test -n "$aux_missing" && AC_MSG_WARN([ *** These auxiliary programs are missing or incompatible versions:$aux_missing @@ -737,7 +769,7 @@ char b; void c(void) {} EOF -$CC $CFLAGS -c conftest.c +$CC $CFLAGS $CPPFLAGS -c conftest.c $AR cr conftest.a conftest.o cp conftest.a conftest2.a $RANLIB conftest.a @@ -889,7 +921,7 @@ #include "confdefs.h" /* Nothing whatsoever. */ EOF -if ${CC-cc} $CFLAGS -c conftest.S 2>/dev/null; then +if AC_TRY_COMMAND(${CC-cc} $CPPFLAGS $ASFLAGS -c conftest.S 1>&AS_MESSAGE_LOG_FD); then libc_cv_need_minus_P=no else libc_cv_need_minus_P=yes @@ -906,7 +938,7 @@ .text EOF libc_cv_dot_text= -if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then +if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then libc_cv_dot_text=.text fi rm -f conftest*]) @@ -925,7 +957,7 @@ ${ac_globl} foo foo: EOF - if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then + if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then libc_cv_asm_global_directive=${ac_globl} fi rm -f conftest* @@ -948,9 +980,10 @@ # (but it doesn't work), so we must do a linking check to be sure. cat > conftest1.c <<\EOF extern int glibc_conftest_frobozz; -main () { printf ("%d\n", glibc_conftest_frobozz); } +void _start() { glibc_conftest_frobozz = 1; } EOF if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \ + -nostartfiles -nostdlib \ -o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then libc_cv_asm_set_directive=yes else @@ -973,7 +1006,7 @@ foo: .byte 1 EOF - if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then + if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then libc_cv_asm_type_prefix=${ac_try_prefix} fi rm -f conftest* @@ -996,7 +1029,7 @@ _sym: .symver _sym,sym@VERS EOF -if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then +if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then libc_cv_asm_symver_directive=yes else libc_cv_asm_symver_directive=no @@ -1018,10 +1051,11 @@ global: sym; } VERS_1; EOF - if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then - if AC_TRY_COMMAND([${CC-cc} $CFLAGS -shared -o conftest.so conftest.o - -nostartfiles -nostdlib - -Wl,--version-script,conftest.map + if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then + if AC_TRY_COMMAND([${CC-cc} $CFLAGS $LDFLAGS -shared + -o conftest.so conftest.o + -nostartfiles -nostdlib + -Wl,--version-script,conftest.map 1>&AS_MESSAGE_LOG_FD]); then libc_cv_ld_version_script_option=yes @@ -1060,7 +1094,7 @@ .section foo_section .previous EOF - if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then + if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then libc_cv_asm_previous_directive=yes else libc_cv_asm_previous_directive=no @@ -1075,7 +1109,7 @@ .pushsection foo_section .popsection EOF - if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then + if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then libc_cv_asm_popsection_directive=yes else libc_cv_asm_popsection_directive=no @@ -1093,7 +1127,7 @@ .hidden bar bar: EOF - if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then + if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then libc_cv_asm_protected_directive=yes else libc_cv_asm_protected_directive=no @@ -1111,7 +1145,7 @@ int bar __attribute__ ((visibility ("protected"))) = 1; EOF libc_cv_visibility_attribute=no - if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then + if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then if grep '\.hidden.*foo' conftest.s >/dev/null; then if grep '\.protected.*bar' conftest.s >/dev/null; then libc_cv_visibility_attribute=yes @@ -1134,7 +1168,7 @@ int bar (int x) { return x; } EOF libc_cv_broken_visibility_attribute=yes - if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then + if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s1>&AS_MESSAGE_LOG_FD); then changequote(,)dnl if grep '\.hidden[ _]foo' conftest.s >/dev/null; then changequote([,])dnl @@ -1159,7 +1193,7 @@ int dfoo = 1; EOF libc_cv_broken_alias_attribute=yes - if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then + if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then if grep 'xyzzy' conftest.s >/dev/null && grep 'abccb' conftest.s >/dev/null; then libc_cv_broken_alias_attribute=no @@ -1176,7 +1210,7 @@ libc_cv_have_sdata_section, [echo "int i;" > conftest.c libc_cv_have_sdata_section=no - if ${CC-cc} -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \ + if ${CC-cc} $LDFLAGS -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \ | grep '\.sdata' >/dev/null; then libc_cv_have_sdata_section=yes fi @@ -1195,7 +1229,7 @@ int foo (void) { return 1; } int (*fp) (void) __attribute__ ((section (".init_array"))) = foo; EOF - if AC_TRY_COMMAND([${CC-cc} -o conftest conftest.c + if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -o conftest conftest.c -static -nostartfiles -nostdlib 1>&AS_MESSAGE_LOG_FD]) then if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then @@ -1217,7 +1251,8 @@ cat > conftest.c <&AS_MESSAGE_LOG_FD]) then @@ -1233,7 +1268,8 @@ cat > conftest.c <&AS_MESSAGE_LOG_FD]) then @@ -1249,7 +1285,8 @@ cat > conftest.c <&AS_MESSAGE_LOG_FD]) then @@ -1265,7 +1302,9 @@ cat > conftest.c <&AS_MESSAGE_LOG_FD]) + if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS + -shared -o conftest.so conftest.c + -Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD]) then libc_cv_Bgroup=yes else @@ -1274,6 +1313,27 @@ rm -f conftest*]) AC_SUBST(libc_cv_Bgroup) + ASFLAGS_config= + AC_CACHE_CHECK(whether --noexecstack is desirable for .S files, + libc_cv_as_noexecstack, [dnl + cat > conftest.c <&AS_MESSAGE_LOG_FD]) \ + && grep -q .note.GNU-stack conftest.s \ + && AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -Wa,--noexecstack + -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD]) + then + libc_cv_as_noexecstack=yes + else + libc_cv_as_noexecstack=no + fi + rm -f conftest*]) + if test $libc_cv_as_noexecstack = yes; then + ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack" + fi + AC_SUBST(ASFLAGS_config) AC_CACHE_CHECK(for -z combreloc, libc_cv_z_combreloc, [dnl cat > conftest.c <&AS_MESSAGE_LOG_FD]) then @@ -1345,8 +1406,8 @@ AC_DEFUN(AC_CHECK_ASM_UNDERSCORE, [cat > conftest.$ac_ext </dev/null; then +if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then libc_cv_asm_weak_directive=yes else libc_cv_asm_weak_directive=no @@ -1418,7 +1479,7 @@ ${libc_cv_asm_global_directive} baz baz: EOF - if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then + if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then libc_cv_asm_weakext_directive=yes else libc_cv_asm_weakext_directive=no @@ -1447,7 +1508,7 @@ cat > conftest.s <&AS_MESSAGE_LOG_FD); then + if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then libc_cv_asm_line_sep='!' else if test -z "$enable_hacker_mode"; then @@ -1462,6 +1523,58 @@ ;; esac +AC_CACHE_CHECK(whether CFI directives are supported, libc_cv_asm_cfi_directives, [dnl +cat > conftest.s <&AS_MESSAGE_LOG_FD); then + libc_cv_asm_cfi_directives=yes +else + libc_cv_asm_cfi_directives=no +fi +rm -f conftest*]) +if test $libc_cv_asm_cfi_directives = yes; then + AC_DEFINE(HAVE_ASM_CFI_DIRECTIVES) +fi + +AC_CACHE_CHECK(if -g produces usable source locations for assembler-with-cpp, + libc_cv_cpp_asm_debuginfo, [dnl +cat > conftest.S <&AS_MESSAGE_LOG_FD]) && + ac_pattern='conftest\.S' + AC_TRY_COMMAND([readelf --debug-dump=line conftest.o | + grep $ac_pattern 1>&AS_MESSAGE_LOG_FD]); then + libc_cv_cpp_asm_debuginfo=yes +else + libc_cv_cpp_asm_debuginfo=no +fi +rm -f conftest*])AC_SUBST(libc_cv_cpp_asm_debuginfo) +if test $libc_cv_cpp_asm_debuginfo = yes; then + AC_DEFINE(HAVE_CPP_ASM_DEBUGINFO) +fi + AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl cat > conftest.c <<\EOF _start () {} @@ -1469,7 +1582,7 @@ __throw () {} EOF dnl No \ in command here because it ends up inside ''. -if AC_TRY_COMMAND([${CC-cc} $CFLAGS +if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles -Wl,--no-whole-archive -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then libc_cv_ld_no_whole_archive=yes @@ -1489,7 +1602,7 @@ __throw () {} EOF dnl No \ in command here because it ends up inside ''. -if AC_TRY_COMMAND([${CC-cc} $CFLAGS +if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles -fexceptions -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then libc_cv_gcc_exceptions=yes @@ -1516,7 +1629,7 @@ AC_CACHE_CHECK(for DWARF2 unwind info support, libc_cv_gcc_dwarf2_unwind_info, [cat > conftest.c <&AS_MESSAGE_LOG_FD]); then - libc_cv_gcc_dwarf2_unwind_info=static -else - libc_cv_gcc_dwarf2_unwind_info=no -fi +libc_unwind_check="${CC-cc} $CFLAGS $CPPFLAGS -DCHECK__register_frame_info \ + $LDFLAGS \ + -nostdlib -nostartfiles -o conftest conftest.c \ + -lgcc" # Some platforms' specs put -lgcc first. The second one doesn't hurt. -libc_unwind_check="${CC-cc} $CFLAGS -DCHECK__register_frame_info \ - -nostdlib -nostartfiles -o conftest conftest.c \ - -lgcc -lgcc_eh -lgcc" -if AC_TRY_COMMAND([$libc_unwind_check >&AS_MESSAGE_LOG_FD]); then +if AC_TRY_COMMAND([$libc_unwind_check >&AS_MESSAGE_LOG_FD]) || + AC_TRY_COMMAND([$libc_unwind_check -lgcc_eh -lgcc >&AS_MESSAGE_LOG_FD]) +then if $libc_unwind_check -v 2>&1 >/dev/null \ | grep -q -- --eh-frame-hdr; then libc_cv_gcc_dwarf2_unwind_info=no_registry_needed @@ -1565,8 +1673,8 @@ libc_cv_gcc_dwarf2_unwind_info=no fi if test $libc_cv_gcc_dwarf2_unwind_info = no; then - if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame - -nostdlib -nostartfiles + if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -DCHECK__register_frame + $LDFLAGS -nostdlib -nostartfiles -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then libc_cv_gcc_dwarf2_unwind_info=yes else @@ -1587,7 +1695,7 @@ dnl Check whether compiler understands __builtin_expect. AC_CACHE_CHECK(for __builtin_expect, libc_cv_gcc_builtin_expect, [cat > conftest.c <&AS_MESSAGE_LOG_FD]); then libc_cv_gcc_builtin_expect=yes else @@ -1625,11 +1733,31 @@ AC_DEFINE(HAVE_BUILTIN_MEMSET) fi +AC_CACHE_CHECK(for redirection of built-in functions, libc_cv_gcc_builtin_redirection, [dnl +cat > conftest.c <<\EOF +extern char *strstr (const char *, const char *) __asm ("my_strstr"); +char *foo (const char *a, const char *b) +{ + return __builtin_strstr (a, b); +} +EOF +dnl +if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "my_strstr" > /dev/null]); +then + libc_cv_gcc_builtin_redirection=yes +else + libc_cv_gcc_builtin_redirection=no +fi +rm -f conftest* ]) +if test "$libc_cv_gcc_builtin_redirection" = yes ; then + AC_DEFINE(HAVE_BUILTIN_REDIRECTION) +fi + dnl Check whether the compiler supports subtraction of local labels. AC_CACHE_CHECK(for local label subtraction, libc_cv_gcc_subtract_local_labels, [cat > conftest.c <&AS_MESSAGE_LOG_FD]); then libc_cv_gcc_subtract_local_labels=yes else @@ -1660,7 +1788,7 @@ [cat > conftest.c <<\EOF __thread int a = 42; EOF - if AC_TRY_COMMAND([${CC-cc} $CFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then + if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then libc_cv_gcc___thread=yes else libc_cv_gcc___thread=no @@ -1679,7 +1807,7 @@ cat > conftest.c <<\EOF extern __thread int a __attribute__((tls_model ("initial-exec"))); EOF - if AC_TRY_COMMAND([${CC-cc} $CFLAGS -S -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then + if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then libc_cv_gcc_tls_model_attr=yes else libc_cv_gcc_tls_model_attr=no @@ -1732,7 +1860,7 @@ *) dest=$srcdir/$dir ;; esac if test -r $dest/configure; then - AC_MSG_RESULT(running configure fragment for $dest) + AC_MSG_RESULT(running configure fragment for $dir) . $dest/configure fi [ @@ -1833,6 +1961,7 @@ AC_SUBST(libc_cv_localedir) AC_SUBST(libc_cv_sysconfdir) AC_SUBST(libc_cv_rootsbindir) +AC_SUBST(libc_cv_forced_unwind) AC_SUBST(use_ldconfig) AC_SUBST(ldd_rewrite_script) --- glibc-2.3.2/csu/Makefile 2002-12-31 17:24:37.000000000 -0500 +++ glibc-2.3.2/csu/Makefile 2003-08-21 08:36:58.000000000 -0400 @@ -1,5 +1,5 @@ # Makefile for csu code for GNU C library. -# Copyright (C) 1995,96,97,98,99,2000,01,2002 Free Software Foundation, Inc. +# Copyright (C) 1995,96,97,98,99,2000,01,02,2003 Free Software Foundation, Inc. # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or @@ -33,19 +33,29 @@ static-only-routines = elf-init csu-dummies = $(filter-out $(start-installed-name),crt1.o Mcrt1.o) extra-objs = start.o gmon-start.o \ - $(start-installed-name) g$(start-installed-name) $(csu-dummies) + $(start-installed-name) g$(start-installed-name) $(csu-dummies) \ + S$(start-installed-name) omit-deps = $(patsubst %.o,%,$(start-installed-name) g$(start-installed-name) \ - b$(start-installed-name) $(csu-dummies)) + b$(start-installed-name) $(csu-dummies) \ + S$(start-installed-name)) install-lib = $(start-installed-name) g$(start-installed-name) $(csu-dummies) distribute = initfini.c gmon-start.c start.c defs.awk munch.awk \ - abi-note.S init.c munch-tmpl.c + abi-note.S init.c munch-tmpl.c not-cancel.h generated = version-info.h before-compile = $(objpfx)version-info.h +tests := tst-empty tst-atomic tst-atomic-long +tests-static := tst-empty + all: # Make this the default target; it will be defined in Rules. include ../Makeconfig +ifeq (yes,$(build-shared)) +extra-objs += S$(start-installed-name) +install-lib += S$(start-installed-name) +endif + ifeq (yes,$(build-bounded)) extra-objs += b$(start-installed-name) install-lib += b$(start-installed-name) @@ -80,11 +90,6 @@ CPPFLAGS += -DHAVE_INITFINI -# We don't want this compiled with PIC. -# It's never included in shared libraries, unlike the rest of libc_nonshared.a. -CPPFLAGS-elf-init.oS = $(patsubst %,-UPIC,$(pic-ccflag)) -CFLAGS-elf-init.oS = $(patsubst -f%,-fno-%,$(pic-ccflag)) - # These are the special initializer/finalizer files. They are always the # first and last file in the link. crti.o ... crtn.o define the global # "functions" _init and _fini to run the .init and .fini sections. @@ -96,14 +101,14 @@ omit-deps += $(crtstuff) # Special rules for the building of crti.o and crtn.o -$(objpfx)crt%.o: $(objpfx)crt%.S $(objpfx)defs.h +$(crtstuff:%=$(objpfx)%.o): %.o: %.S $(objpfx)defs.h $(compile.S) -g0 $(ASFLAGS-.os) -o $@ CFLAGS-initfini.s = -g0 -fPIC -fno-inline-functions vpath initfini.c $(full_config_sysdirs) -$(objpfx)initfini.s: initfini.c +$(objpfx)initfini.s: initfini.c $(before-compile) $(compile.c) -S $(CFLAGS-initfini.s) -finhibit-size-directive \ $(patsubst -f%,-fno-%,$(exceptions)) -o $@ @@ -151,6 +156,9 @@ $(objpfx)$(start-installed-name): $(objpfx)start.o $(objpfx)abi-note.o \ $(objpfx)init.o $(link-relocatable) +$(objpfx)S$(start-installed-name): $(objpfx)start.os $(objpfx)abi-note.o \ + $(objpfx)init.o + $(link-relocatable) $(objpfx)b$(start-installed-name): $(objpfx)start.ob $(objpfx)abi-note.ob \ $(objpfx)init.ob $(link-relocatable) @@ -160,6 +168,9 @@ $(objpfx)$(start-installed-name): $(objpfx)start.o rm -f $@ ln $< $@ +$(objpfx)S$(start-installed-name): $(objpfx)start.os + rm -f $@ + ln $< $@ $(objpfx)b$(start-installed-name): $(objpfx)start.ob rm -f $@ ln $< $@ @@ -176,11 +187,9 @@ # These extra files are sometimes expected by system standard linking # procedures, but we have nothing for them to do. So compile empty files. -$(addprefix $(objpfx),$(filter-out $(start-installed-name),$(csu-dummies))): - @-rm -f $(@:.o=.c) - echo > $(@:.o=.c) - $(COMPILE.c) $(@:.o=.c) $(OUTPUT_OPTION) - rm -f $(@:.o=.c) +$(addprefix $(objpfx),$(filter-out $(start-installed-name), $(csu-dummies))):\ + $(before-compile) + $(COMPILE.c) -o $@ -x c /dev/null # These headers are used by the startup code. $(objpfx)abi-tag.h: $(..)abi-tags @@ -208,7 +217,7 @@ $(make-target-directory) (case $(config-os) in \ linux*) version=`(echo -e "#include \nUTS_RELEASE"\ - | $(CC) -E -P - | \ + | $(CC) $(CPPFLAGS) -E -P - | \ sed -e 's/"\([^"]*\)".*/\1/p' -e d) 2>/dev/null`;\ if [ -z "$$version" ]; then \ if [ -r /proc/version ]; then \ --- glibc-2.3.2/csu/elf-init.c 2002-12-31 18:41:32.000000000 -0500 +++ glibc-2.3.2/csu/elf-init.c 2003-05-24 14:06:21.000000000 -0400 @@ -1,5 +1,5 @@ /* Startup support for ELF initializers/finalizers in the main executable. - Copyright (C) 2002 Free Software Foundation, Inc. + Copyright (C) 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -21,12 +21,12 @@ #ifdef HAVE_INITFINI_ARRAY /* These magic symbols are provided by the linker. */ -extern void (*__preinit_array_start []) (void); -extern void (*__preinit_array_end []) (void); -extern void (*__init_array_start []) (void); -extern void (*__init_array_end []) (void); -extern void (*__fini_array_start []) (void); -extern void (*__fini_array_end []) (void); +extern void (*__preinit_array_start []) (void) attribute_hidden; +extern void (*__preinit_array_end []) (void) attribute_hidden; +extern void (*__init_array_start []) (void) attribute_hidden; +extern void (*__init_array_end []) (void) attribute_hidden; +extern void (*__fini_array_start []) (void) attribute_hidden; +extern void (*__fini_array_end []) (void) attribute_hidden; #endif /* These function symbols are provided for the .init/.fini section entry --- glibc-2.3.2/csu/tst-atomic-long.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/csu/tst-atomic-long.c 2003-03-22 18:00:17.000000000 -0500 @@ -0,0 +1,28 @@ +/* Tests for atomic.h macros. + Copyright (C) 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jakub Jelinek , 2003. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include + +#define atomic_t long +#if __WORDSIZE == 64 +# define TEST_ATOMIC64 1 +#endif + +#include "tst-atomic.c" --- glibc-2.3.2/csu/tst-atomic.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/csu/tst-atomic.c 2003-05-12 12:13:03.000000000 -0400 @@ -0,0 +1,373 @@ +/* Tests for atomic.h macros. + Copyright (C) 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jakub Jelinek , 2003. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include +#include + +#ifndef atomic_t +# define atomic_t int +#endif + +/* Test various atomic.h macros. */ +static int +do_test (void) +{ + atomic_t mem; + int ret = 0; + +#ifdef atomic_compare_and_exchange_val_acq + mem = 24; + if (atomic_compare_and_exchange_val_acq (&mem, 35, 24) != 24 + || mem != 35) + { + puts ("atomic_compare_and_exchange_val_acq test 1 failed"); + ret = 1; + } + + mem = 12; + if (atomic_compare_and_exchange_val_acq (&mem, 10, 15) != 12 + || mem != 12) + { + puts ("atomic_compare_and_exchange_val_acq test 2 failed"); + ret = 1; + } + + mem = -15; + if (atomic_compare_and_exchange_val_acq (&mem, -56, -15) != -15 + || mem != -56) + { + puts ("atomic_compare_and_exchange_val_acq test 3 failed"); + ret = 1; + } + + mem = -1; + if (atomic_compare_and_exchange_val_acq (&mem, 17, 0) != -1 + || mem != -1) + { + puts ("atomic_compare_and_exchange_val_acq test 4 failed"); + ret = 1; + } +#endif + + mem = 24; + if (atomic_compare_and_exchange_bool_acq (&mem, 35, 24) + || mem != 35) + { + puts ("atomic_compare_and_exchange_bool_acq test 1 failed"); + ret = 1; + } + + mem = 12; + if (! atomic_compare_and_exchange_bool_acq (&mem, 10, 15) + || mem != 12) + { + puts ("atomic_compare_and_exchange_bool_acq test 2 failed"); + ret = 1; + } + + mem = -15; + if (atomic_compare_and_exchange_bool_acq (&mem, -56, -15) + || mem != -56) + { + puts ("atomic_compare_and_exchange_bool_acq test 3 failed"); + ret = 1; + } + + mem = -1; + if (! atomic_compare_and_exchange_bool_acq (&mem, 17, 0) + || mem != -1) + { + puts ("atomic_compare_and_exchange_bool_acq test 4 failed"); + ret = 1; + } + + mem = 64; + if (atomic_exchange_acq (&mem, 31) != 64 + || mem != 31) + { + puts ("atomic_exchange_acq test failed"); + ret = 1; + } + + mem = 2; + if (atomic_exchange_and_add (&mem, 11) != 2 + || mem != 13) + { + puts ("atomic_exchange_and_add test failed"); + ret = 1; + } + + mem = -21; + atomic_add (&mem, 22); + if (mem != 1) + { + puts ("atomic_add test failed"); + ret = 1; + } + + mem = -1; + atomic_increment (&mem); + if (mem != 0) + { + puts ("atomic_increment test failed"); + ret = 1; + } + + mem = 0; + if (atomic_increment_and_test (&mem) + || mem != 1) + { + puts ("atomic_increment_and_test test 1 failed"); + ret = 1; + } + + mem = 35; + if (atomic_increment_and_test (&mem) + || mem != 36) + { + puts ("atomic_increment_and_test test 2 failed"); + ret = 1; + } + + mem = -1; + if (! atomic_increment_and_test (&mem) + || mem != 0) + { + puts ("atomic_increment_and_test test 3 failed"); + ret = 1; + } + + mem = 17; + atomic_decrement (&mem); + if (mem != 16) + { + puts ("atomic_decrement test failed"); + ret = 1; + } + + mem = 0; + if (atomic_decrement_and_test (&mem) + || mem != -1) + { + puts ("atomic_decrement_and_test test 1 failed"); + ret = 1; + } + + mem = 15; + if (atomic_decrement_and_test (&mem) + || mem != 14) + { + puts ("atomic_decrement_and_test test 2 failed"); + ret = 1; + } + + mem = 1; + if (! atomic_decrement_and_test (&mem) + || mem != 0) + { + puts ("atomic_decrement_and_test test 3 failed"); + ret = 1; + } + + mem = 1; + if (atomic_decrement_if_positive (&mem) != 1 + || mem != 0) + { + puts ("atomic_decrement_if_positive test 1 failed"); + ret = 1; + } + + mem = 0; + if (atomic_decrement_if_positive (&mem) != 0 + || mem != 0) + { + puts ("atomic_decrement_if_positive test 2 failed"); + ret = 1; + } + + mem = -1; + if (atomic_decrement_if_positive (&mem) != -1 + || mem != -1) + { + puts ("atomic_decrement_if_positive test 3 failed"); + ret = 1; + } + + mem = -12; + if (! atomic_add_negative (&mem, 10) + || mem != -2) + { + puts ("atomic_add_negative test 1 failed"); + ret = 1; + } + + mem = 0; + if (atomic_add_negative (&mem, 100) + || mem != 100) + { + puts ("atomic_add_negative test 2 failed"); + ret = 1; + } + + mem = 15; + if (atomic_add_negative (&mem, -10) + || mem != 5) + { + puts ("atomic_add_negative test 3 failed"); + ret = 1; + } + + mem = -12; + if (atomic_add_negative (&mem, 14) + || mem != 2) + { + puts ("atomic_add_negative test 4 failed"); + ret = 1; + } + + mem = 0; + if (! atomic_add_negative (&mem, -1) + || mem != -1) + { + puts ("atomic_add_negative test 5 failed"); + ret = 1; + } + + mem = -31; + if (atomic_add_negative (&mem, 31) + || mem != 0) + { + puts ("atomic_add_negative test 6 failed"); + ret = 1; + } + + mem = -34; + if (atomic_add_zero (&mem, 31) + || mem != -3) + { + puts ("atomic_add_zero test 1 failed"); + ret = 1; + } + + mem = -36; + if (! atomic_add_zero (&mem, 36) + || mem != 0) + { + puts ("atomic_add_zero test 2 failed"); + ret = 1; + } + + mem = 113; + if (atomic_add_zero (&mem, -13) + || mem != 100) + { + puts ("atomic_add_zero test 3 failed"); + ret = 1; + } + + mem = -18; + if (atomic_add_zero (&mem, 20) + || mem != 2) + { + puts ("atomic_add_zero test 4 failed"); + ret = 1; + } + + mem = 10; + if (atomic_add_zero (&mem, -20) + || mem != -10) + { + puts ("atomic_add_zero test 5 failed"); + ret = 1; + } + + mem = 10; + if (! atomic_add_zero (&mem, -10) + || mem != 0) + { + puts ("atomic_add_zero test 6 failed"); + ret = 1; + } + + mem = 0; + atomic_bit_set (&mem, 1); + if (mem != 2) + { + puts ("atomic_bit_set test 1 failed"); + ret = 1; + } + + mem = 8; + atomic_bit_set (&mem, 3); + if (mem != 8) + { + puts ("atomic_bit_set test 2 failed"); + ret = 1; + } + +#ifdef TEST_ATOMIC64 + mem = 16; + atomic_bit_set (&mem, 35); + if (mem != 0x800000010LL) + { + puts ("atomic_bit_set test 3 failed"); + ret = 1; + } +#endif + + mem = 0; + if (atomic_bit_test_set (&mem, 1) + || mem != 2) + { + puts ("atomic_bit_test_set test 1 failed"); + ret = 1; + } + + mem = 8; + if (! atomic_bit_test_set (&mem, 3) + || mem != 8) + { + puts ("atomic_bit_test_set test 2 failed"); + ret = 1; + } + +#ifdef TEST_ATOMIC64 + mem = 16; + if (atomic_bit_test_set (&mem, 35) + || mem != 0x800000010LL) + { + puts ("atomic_bit_test_set test 3 failed"); + ret = 1; + } + + mem = 0x100000000LL; + if (! atomic_bit_test_set (&mem, 32) + || mem != 0x100000000LL) + { + puts ("atomic_bit_test_set test 4 failed"); + ret = 1; + } +#endif + + return ret; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" --- glibc-2.3.2/csu/tst-empty.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/csu/tst-empty.c 2003-04-11 20:16:59.000000000 -0400 @@ -0,0 +1,6 @@ +/* The most useful C program known to man. */ +int +main (void) +{ + return 0; +} --- glibc-2.3.2/dirent/Makefile 2002-06-22 01:46:07.000000000 -0400 +++ glibc-2.3.2/dirent/Makefile 2003-09-19 22:37:01.000000000 -0400 @@ -1,4 +1,4 @@ -# Copyright (C) 1991-2000, 2002 Free Software Foundation, Inc. +# Copyright (C) 1991-2000, 2002, 2003 Free Software Foundation, Inc. # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or @@ -30,6 +30,9 @@ tests := list tst-seekdir opendir-tst1 bug-readdir1 +CFLAGS-scandir.c = $(uses-callbacks) +CFLAGS-scandir64.c = $(uses-callbacks) + include ../Rules opendir-tst1-ARGS = --test-dir=${common-objpfx}dirent --- glibc-2.3.2/dirent/dirent.h 2001-07-07 15:20:52.000000000 -0400 +++ glibc-2.3.2/dirent/dirent.h 2003-09-19 22:37:01.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-1999, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1991-1999, 2000, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -128,12 +128,18 @@ typedef struct __dirstream DIR; /* Open a directory stream on NAME. - Return a DIR stream on the directory, or NULL if it could not be opened. */ -extern DIR *opendir (__const char *__name) __THROW; + Return a DIR stream on the directory, or NULL if it could not be opened. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ +extern DIR *opendir (__const char *__name); /* Close the directory stream DIRP. - Return 0 if successful, -1 if not. */ -extern int closedir (DIR *__dirp) __THROW; + Return 0 if successful, -1 if not. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ +extern int closedir (DIR *__dirp); /* Read a directory entry from DIRP. Return a pointer to a `struct dirent' describing the entry, or NULL for EOF or error. The @@ -141,34 +147,40 @@ same DIR stream. If the Large File Support API is selected we have to use the - appropriate interface. */ + appropriate interface. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ #ifndef __USE_FILE_OFFSET64 -extern struct dirent *readdir (DIR *__dirp) __THROW; +extern struct dirent *readdir (DIR *__dirp); #else # ifdef __REDIRECT -extern struct dirent *__REDIRECT (readdir, (DIR *__dirp) __THROW, readdir64); +extern struct dirent *__REDIRECT (readdir, (DIR *__dirp), readdir64); # else # define readdir readdir64 # endif #endif #ifdef __USE_LARGEFILE64 -extern struct dirent64 *readdir64 (DIR *__dirp) __THROW; +extern struct dirent64 *readdir64 (DIR *__dirp); #endif #if defined __USE_POSIX || defined __USE_MISC /* Reentrant version of `readdir'. Return in RESULT a pointer to the - next entry. */ + next entry. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ # ifndef __USE_FILE_OFFSET64 extern int readdir_r (DIR *__restrict __dirp, struct dirent *__restrict __entry, - struct dirent **__restrict __result) __THROW; + struct dirent **__restrict __result); # else # ifdef __REDIRECT extern int __REDIRECT (readdir_r, (DIR *__restrict __dirp, struct dirent *__restrict __entry, - struct dirent **__restrict __result) __THROW, + struct dirent **__restrict __result), readdir64_r); # else # define readdir_r readdir64_r @@ -178,7 +190,7 @@ # ifdef __USE_LARGEFILE64 extern int readdir64_r (DIR *__restrict __dirp, struct dirent64 *__restrict __entry, - struct dirent64 **__restrict __result) __THROW; + struct dirent64 **__restrict __result); # endif #endif /* POSIX or misc */ @@ -227,14 +239,14 @@ extern int scandir (__const char *__restrict __dir, struct dirent ***__restrict __namelist, int (*__selector) (__const struct dirent *), - int (*__cmp) (__const void *, __const void *)) __THROW; + int (*__cmp) (__const void *, __const void *)); # else # ifdef __REDIRECT extern int __REDIRECT (scandir, (__const char *__restrict __dir, struct dirent ***__restrict __namelist, int (*__selector) (__const struct dirent *), - int (*__cmp) (__const void *, __const void *)) __THROW, + int (*__cmp) (__const void *, __const void *)), scandir64); # else # define scandir scandir64 @@ -247,7 +259,7 @@ extern int scandir64 (__const char *__restrict __dir, struct dirent64 ***__restrict __namelist, int (*__selector) (__const struct dirent64 *), - int (*__cmp) (__const void *, __const void *)) __THROW; + int (*__cmp) (__const void *, __const void *)); # endif /* Function to compare two `struct dirent's alphabetically. */ @@ -257,8 +269,7 @@ # else # ifdef __REDIRECT extern int __REDIRECT (alphasort, - (__const void *__e1, __const void *__e2) - __THROW, + (__const void *__e1, __const void *__e2) __THROW, alphasort64) __attribute_pure__; # else # define alphasort alphasort64 @@ -278,8 +289,7 @@ # else # ifdef __REDIRECT extern int __REDIRECT (versionsort, - (__const void *__e1, __const void *__e2) - __THROW, + (__const void *__e1, __const void *__e2) __THROW, versionsort64) __attribute_pure__; # else # define versionsort versionsort64 --- glibc-2.3.2/dirent/scandir.c 2002-10-14 13:41:01.000000000 -0400 +++ glibc-2.3.2/dirent/scandir.c 2003-09-19 22:37:01.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1992-1998, 2000, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1992-1998, 2000, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -20,6 +20,7 @@ #include #include #include +#include #ifndef SCANDIR #define SCANDIR scandir @@ -27,6 +28,30 @@ #define DIRENT_TYPE struct dirent #endif +#ifndef SCANDIR_CANCEL +#define SCANDIR_CANCEL +struct scandir_cancel_struct +{ + DIR *dp; + void *v; + size_t cnt; +}; + +static void +cancel_handler (void *arg) +{ + struct scandir_cancel_struct *cp = arg; + size_t i; + void **v = cp->v; + + for (i = 0; i < cp->cnt; ++i) + free (v[i]); + free (v); + (void) __closedir (cp->dp); +} +#endif + + int SCANDIR (dir, namelist, select, cmp) const char *dir; @@ -36,7 +61,8 @@ { DIR *dp = __opendir (dir); DIRENT_TYPE **v = NULL; - size_t vsize = 0, i; + size_t vsize = 0; + struct scandir_cancel_struct c; DIRENT_TYPE *d; int save; @@ -46,58 +72,77 @@ save = errno; __set_errno (0); - i = 0; + c.dp = dp; + c.v = NULL; + c.cnt = 0; + __libc_cleanup_push (cancel_handler, &c); + while ((d = READDIR (dp)) != NULL) - if (select == NULL || (*select) (d)) - { - DIRENT_TYPE *vnew; - size_t dsize; - - /* Ignore errors from select or readdir */ - __set_errno (0); - - if (__builtin_expect (i == vsize, 0)) - { - DIRENT_TYPE **new; - if (vsize == 0) - vsize = 10; - else - vsize *= 2; - new = (DIRENT_TYPE **) realloc (v, vsize * sizeof (*v)); - if (new == NULL) - break; - v = new; - } - - dsize = &d->d_name[_D_ALLOC_NAMLEN (d)] - (char *) d; - vnew = (DIRENT_TYPE *) malloc (dsize); - if (vnew == NULL) - break; + { + int use_it = select == NULL; + + if (! use_it) + { + use_it = select (d); + /* The select function might have changed errno. It was + zero before and it need to be again to make the latter + tests work. */ + __set_errno (0); + } + + if (use_it) + { + DIRENT_TYPE *vnew; + size_t dsize; + + /* Ignore errors from select or readdir */ + __set_errno (0); + + if (__builtin_expect (c.cnt == vsize, 0)) + { + DIRENT_TYPE **new; + if (vsize == 0) + vsize = 10; + else + vsize *= 2; + new = (DIRENT_TYPE **) realloc (v, vsize * sizeof (*v)); + if (new == NULL) + break; + v = new; + c.v = (void *) v; + } + + dsize = &d->d_name[_D_ALLOC_NAMLEN (d)] - (char *) d; + vnew = (DIRENT_TYPE *) malloc (dsize); + if (vnew == NULL) + break; - v[i++] = (DIRENT_TYPE *) memcpy (vnew, d, dsize); - } + v[c.cnt++] = (DIRENT_TYPE *) memcpy (vnew, d, dsize); + } + } if (__builtin_expect (errno, 0) != 0) { save = errno; - while (i > 0) - free (v[--i]); + while (c.cnt > 0) + free (v[--c.cnt]); free (v); - - i = -1; + c.cnt = -1; } else { /* Sort the list if we have a comparison function to sort with. */ if (cmp != NULL) - qsort (v, i, sizeof (*v), cmp); + qsort (v, c.cnt, sizeof (*v), cmp); *namelist = v; } + __libc_cleanup_pop (0); + (void) __closedir (dp); __set_errno (save); - return i; + return c.cnt; } --- glibc-2.3.2/dlfcn/Makefile 2003-02-25 19:46:32.000000000 -0500 +++ glibc-2.3.2/dlfcn/Makefile 2003-08-21 08:36:59.000000000 -0400 @@ -19,7 +19,8 @@ subdir := dlfcn headers := bits/dlfcn.h dlfcn.h extra-libs := libdl -libdl-routines := dlopen dlclose dlsym dlvsym dlerror dladdr eval +libdl-routines := dlopen dlclose dlsym dlvsym dlerror dladdr dladdr1 dlinfo \ + eval distribute := dlopenold.c glreflib1.c glreflib2.c failtestmod.c eval.c \ defaultmod1.c defaultmod2.c errmsg1mod.c modatexit.c \ modcxaatexit.c modstatic.c \ @@ -37,7 +38,7 @@ ifeq (yes,$(build-shared)) tests = glrefmain failtest tst-dladdr default errmsg1 tstcxaatexit \ - bug-dlopen1 bug-dlsym1 + bug-dlopen1 bug-dlsym1 tst-dlinfo ifeq (yes,$(have-protected)) tests += tstatexit endif @@ -46,6 +47,10 @@ errmsg1mod modatexit modcxaatexit \ bug-dlsym1-lib1 bug-dlsym1-lib2 +failtestmod.so-no-z-defs = yes +glreflib2.so-no-z-defs = yes +errmsg1mod.so-no-z-defs = yes + ifeq (yesyesyes,$(build-static)$(build-shared)$(elf)) tests += tststatic tests-static += tststatic @@ -61,9 +66,14 @@ LDFLAGS-dl.so = -Wl,-dynamic-linker,$(slibdir)/$(rtld-installed-name) test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(modules-names))) -$(test-modules): $(objpfx)%.so: $(objpfx)%.os +$(test-modules): $(objpfx)%.so: $(objpfx)%.os $(common-objpfx)shlib.lds $(build-module) +ifeq ($(build-shared),yes) +# Build all the modules even when not actually running test programs. +tests: $(test-modules) +endif + $(objpfx)glrefmain: $(libdl) $(objpfx)glrefmain.out: $(objpfx)glrefmain \ $(objpfx)glreflib1.so $(objpfx)glreflib2.so @@ -74,6 +84,9 @@ $(objpfx)tst-dladdr: $(libdl) $(objpfx)tst-dladdr.out: $(objpfx)glreflib1.so +$(objpfx)tst-dlinfo: $(libdl) +$(objpfx)tst-dlinfo.out: $(objpfx)glreflib1.so + LDFLAGS-default = $(LDFLAGS-rdynamic) $(objpfx)default: $(libdl) $(objpfx)defaultmod1.so $(objpfx)defaultmod2.so $(objpfx)defaultmod1.so: $(libdl) $(common-objpfx)libc_nonshared.a --- glibc-2.3.2/dlfcn/Versions 1999-07-07 14:25:24.000000000 -0400 +++ glibc-2.3.2/dlfcn/Versions 2003-03-18 16:46:07.000000000 -0500 @@ -5,4 +5,7 @@ GLIBC_2.1 { dlopen; dlvsym; } + GLIBC_2.3.3 { + dladdr1; dlinfo; + } } --- glibc-2.3.2/dlfcn/default.c 2000-11-15 21:12:28.000000000 -0500 +++ glibc-2.3.2/dlfcn/default.c 2003-08-21 08:36:59.000000000 -0400 @@ -36,7 +36,7 @@ printf ("%s: main not found\n", __FILE__); result = 1; } - else if (p != (void *) &main) + else if ((int (*)(int, char **))p != main) { printf ("%s: wrong address returned for main\n", __FILE__); result = 1; @@ -72,9 +72,9 @@ else printf ("%s: found_in_mod2 correctly found\n", __FILE__); - result |= test_in_mod1 ((void *) &main); + result |= test_in_mod1 (main); - result |= test_in_mod2 ((void *) &main); + result |= test_in_mod2 (main); return result; } --- glibc-2.3.2/dlfcn/defaultmod1.c 2000-11-28 18:56:29.000000000 -0500 +++ glibc-2.3.2/dlfcn/defaultmod1.c 2003-08-21 08:36:59.000000000 -0400 @@ -9,9 +9,9 @@ } -extern int test_in_mod1 (void *mainp); +extern int test_in_mod1 (int (*mainp)(int, char **)); int -test_in_mod1 (void *mainp) +test_in_mod1 (int (*mainp)(int, char **)) { int (*ifp) (void); void *p; @@ -24,7 +24,7 @@ printf ("%s: main not found\n", __FILE__); result = 1; } - else if (p != mainp) + else if ((int (*)(int, char **))p != mainp) { printf ("%s: wrong address returned for main\n", __FILE__); result = 1; --- glibc-2.3.2/dlfcn/defaultmod2.c 2000-11-28 18:57:02.000000000 -0500 +++ glibc-2.3.2/dlfcn/defaultmod2.c 2003-08-21 08:36:59.000000000 -0400 @@ -16,9 +16,9 @@ } -extern int test_in_mod2 (void *mainp); +extern int test_in_mod2 (int (*mainp)(int, char **)); int -test_in_mod2 (void *mainp) +test_in_mod2 (int (*mainp)(int, char **)) { int (*ifp) (void); void *p; @@ -31,7 +31,7 @@ printf ("%s: main not found\n", __FILE__); result = 1; } - else if (p != mainp) + else if ((int (*)(int, char **))p != mainp) { printf ("%s: wrong address returned for main\n", __FILE__); result = 1; --- glibc-2.3.2/dlfcn/dladdr.c 2001-07-07 15:20:52.000000000 -0400 +++ glibc-2.3.2/dlfcn/dladdr.c 2003-03-15 15:02:08.000000000 -0500 @@ -1,5 +1,5 @@ /* Locate the shared object symbol nearest a given address. - Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1998, 1999, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -22,5 +22,5 @@ int dladdr (const void *address, Dl_info *info) { - return _dl_addr (address, info); + return _dl_addr (address, info, NULL, NULL); } --- glibc-2.3.2/dlfcn/dladdr1.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/dlfcn/dladdr1.c 2003-03-10 04:12:11.000000000 -0500 @@ -0,0 +1,35 @@ +/* Locate the shared object symbol nearest a given address. + Copyright (C) 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include + +int +dladdr1 (const void *address, Dl_info *info, void **extra, int flags) +{ + switch (flags) + { + default: /* Make this an error? */ + case 0: + return _dl_addr (address, info, NULL, NULL); + case RTLD_DL_SYMENT: + return _dl_addr (address, info, NULL, (const ElfW(Sym) **) extra); + case RTLD_DL_LINKMAP: + return _dl_addr (address, info, (struct link_map **) extra, NULL); + } +} --- glibc-2.3.2/dlfcn/dlerror.c 2002-11-19 01:51:37.000000000 -0500 +++ glibc-2.3.2/dlfcn/dlerror.c 2003-08-21 08:36:59.000000000 -0400 @@ -1,5 +1,5 @@ /* Return error detail for failing functions. - Copyright (C) 1995,1996,1997,1998,1999,2000,2002 + Copyright (C) 1995,1996,1997,1998,1999,2000,2002,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -38,6 +38,7 @@ /* This is the key for the thread specific memory. */ static __libc_key_t key; +__libc_once_define (static, once); /* Destructor for the thread-specific data. */ static void init (void); @@ -50,6 +51,9 @@ char *buf = NULL; struct dl_action_result *result; + /* If we have not yet initialized the buffer do it now. */ + __libc_once (once, init); + /* Get error string. */ result = (struct dl_action_result *) __libc_getspecific (key); if (result == NULL) @@ -69,9 +73,19 @@ else if (result->errstring != NULL) { buf = (char *) result->errstring; - if (__asprintf (&buf, result->errcode != 0 ? "%s: %s: %s" : "%s: %s", - result->objname, _(result->errstring), - strerror (result->errcode)) != -1) + int n; + if (result->errcode == 0) + n = __asprintf (&buf, "%s%s%s", + result->objname, + result->objname[0] == '\0' ? "" : ": ", + _(result->errstring)); + else + n = __asprintf (&buf, "%s%s%s: %s", + result->objname, + result->objname[0] == '\0' ? "" : ": ", + _(result->errstring), + strerror (result->errcode)); + if (n != -1) { /* We don't need the error string anymore. */ if (strcmp (result->errstring, "out of memory") != 0) @@ -90,7 +104,6 @@ internal_function _dlerror_run (void (*operate) (void *), void *args) { - __libc_once_define (static, once); struct dl_action_result *result; /* If we have not yet initialized the buffer do it now. */ --- glibc-2.3.2/dlfcn/dlfcn.h 2001-10-26 19:58:28.000000000 -0400 +++ glibc-2.3.2/dlfcn/dlfcn.h 2003-08-21 08:36:59.000000000 -0400 @@ -1,5 +1,5 @@ /* User functions for run-time dynamic loading. - Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. + Copyright (C) 1995-1999,2000,2001,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -21,6 +21,8 @@ #define _DLFCN_H 1 #include +#define __need_size_t +#include /* Collect various system dependent definitions and declarations. */ #include @@ -83,7 +85,74 @@ /* Fill in *INFO with the following information about ADDRESS. Returns 0 iff no shared object's segments contain that address. */ extern int dladdr (__const void *__address, Dl_info *__info) __THROW; -#endif + +/* Same as `dladdr', but additionally sets *EXTRA_INFO according to FLAGS. */ +extern int dladdr1 (__const void *__address, Dl_info *__info, + void **__extra_info, int __flags) __THROW; + +/* These are the possible values for the FLAGS argument to `dladdr1'. + This indicates what extra information is stored at *EXTRA_INFO. + It may also be zero, in which case the EXTRA_INFO argument is not used. */ +enum + { + /* Matching symbol table entry (const ElfNN_Sym *). */ + RTLD_DL_SYMENT = 1, + + /* The object containing the address (struct link_map *). */ + RTLD_DL_LINKMAP = 2 + }; + + +/* Get information about the shared object HANDLE refers to. + REQUEST is from among the values below, and determines the use of ARG. + + On success, returns zero. On failure, returns -1 and records an error + message to be fetched with `dlerror'. */ +extern int dlinfo (void *__restrict __handle, + int __request, void *__restrict __arg); + +/* These are the possible values for the REQUEST argument to `dlinfo'. */ +enum + { + /* Treat ARG as `struct link_map **'; + store the `struct link_map *' for HANDLE there. */ + RTLD_DI_LINKMAP = 2, + + /* Treat ARG as `Dl_serinfo *' (see below), and fill in to describe the + directories that will be searched for dependencies of this object. + RTLD_DI_SERINFOSIZE fills in just the `dls_cnt' and `dls_size' + entries to indicate the size of the buffer that must be passed to + RTLD_DI_SERINFO to fill in the full information. */ + RTLD_DI_SERINFO = 4, + RTLD_DI_SERINFOSIZE = 5, + + /* Treat ARG as `char *', and store there the directory name used to + expand $ORIGIN in this shared object's dependency file names. */ + RTLD_DI_ORIGIN = 6, + + RTLD_DI_LMID = 1, /* Unsupported, defined by Solaris. */ + RTLD_DI_CONFIGADDR = 3 /* Unsupported, defined by Solaris. */ + }; + + +/* This is the type of elements in `Dl_serinfo', below. + The `dls_name' member points to space in the buffer passed to `dlinfo'. */ +typedef struct +{ + char *dls_name; /* Name of library search path directory. */ + unsigned int dls_flags; /* Indicates where this directory came from. */ +} Dl_serpath; + +/* This is the structure that must be passed (by reference) to `dlinfo' for + the RTLD_DI_SERINFO and RTLD_DI_SERINFOSIZE requests. */ +typedef struct +{ + size_t dls_size; /* Size in bytes of the whole buffer. */ + unsigned int dls_cnt; /* Number of elements in `dls_serpath'. */ + Dl_serpath dls_serpath[1]; /* Actually longer, dls_cnt elements. */ +} Dl_serinfo; +#endif /* __USE_GNU */ + __END_DECLS --- glibc-2.3.2/dlfcn/dlinfo.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/dlfcn/dlinfo.c 2003-03-15 18:14:44.000000000 -0500 @@ -0,0 +1,87 @@ +/* dlinfo -- Get information from the dynamic linker. + Copyright (C) 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include +#include +#include +#include + +struct dlinfo_args +{ + ElfW(Addr) caller; + void *handle; + int request; + void *arg; +}; + +static void +dlinfo_doit (void *argsblock) +{ + struct dlinfo_args *const args = argsblock; + struct link_map *l = args->handle; + +#if 0 + if (args->handle == RTLD_SELF) + { + + /* Find the highest-addressed object that CALLER is not below. */ + for (l = GL(dl_loaded); l != NULL; l = l->l_next) + if (caller >= l->l_map_start && caller < l->l_map_end) + /* There must be exactly one DSO for the range of the virtual + memory. Otherwise something is really broken. */ + break; + + if (l == NULL) + _dl_signal_error (0, NULL, NULL, N_("\ +RTLD_SELF used in code not dynamically loaded")); + } +#endif + + switch (args->request) + { + case RTLD_DI_LMID: + case RTLD_DI_CONFIGADDR: + default: + _dl_signal_error (0, NULL, NULL, N_("unsupported dlinfo request")); + break; + + case RTLD_DI_LINKMAP: + *(struct link_map **) args->arg = l; + break; + + case RTLD_DI_SERINFO: + _dl_rtld_di_serinfo (l, args->arg, false); + break; + case RTLD_DI_SERINFOSIZE: + _dl_rtld_di_serinfo (l, args->arg, true); + break; + + case RTLD_DI_ORIGIN: + strcpy (args->arg, l->l_origin); + break; + } +} + +int +dlinfo (void *handle, int request, void *arg) +{ + struct dlinfo_args args = { (ElfW(Addr)) RETURN_ADDRESS (0), + handle, request, arg }; + return _dlerror_run (&dlinfo_doit, &args) ? -1 : 0; +} --- glibc-2.3.2/dlfcn/dlopen.c 2001-07-07 15:20:52.000000000 -0400 +++ glibc-2.3.2/dlfcn/dlopen.c 2003-09-19 22:37:01.000000000 -0400 @@ -1,5 +1,5 @@ /* Load a shared object at run time. - Copyright (C) 1995,96,97,98,99,2000 Free Software Foundation, Inc. + Copyright (C) 1995,96,97,98,99,2000,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -54,3 +54,4 @@ } #include versioned_symbol (libdl, __dlopen_check, dlopen, GLIBC_2_1); +static_link_warning (dlopen) --- glibc-2.3.2/dlfcn/eval.c 2001-07-07 15:20:52.000000000 -0400 +++ glibc-2.3.2/dlfcn/eval.c 2003-08-21 08:36:59.000000000 -0400 @@ -27,7 +27,7 @@ #include #include -static void *funcall (char **stringp); +static void *funcall (char **stringp) __attribute_noinline__; static void *eval (char **stringp); --- glibc-2.3.2/dlfcn/tst-dlinfo.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/dlfcn/tst-dlinfo.c 2003-03-15 18:14:48.000000000 -0500 @@ -0,0 +1,96 @@ +/* Test for dlinfo. + Copyright (C) 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include +#include +#include +#include + +#define TEST_FUNCTION do_test () + +static int +do_test (void) +{ + int status = 0; + + void *handle = dlopen ("glreflib1.so", RTLD_NOW); + if (handle == NULL) + error (EXIT_FAILURE, 0, "cannot load: glreflib1.so: %s", dlerror ()); + +#define TRY(req, arg) \ + if (dlinfo (handle, req, arg) != 0) \ + { \ + printf ("dlinfo failed for %s: %s\n", #req, dlerror ()); \ + status = 1; \ + } \ + else + + struct link_map *l; + TRY (RTLD_DI_LINKMAP, &l) + { + if (l != handle) + { + printf ("bogus link_map? %p != %p\n", l, handle); + status = 1; + } + } + + char origin[8192]; /* >= PATH_MAX, in theory */ + TRY (RTLD_DI_ORIGIN, origin) + { + printf ("origin: %s\n", origin); + } + + Dl_serinfo counts; + TRY (RTLD_DI_SERINFOSIZE, &counts) + { + Dl_serinfo *buf = alloca (counts.dls_size); + buf->dls_cnt = counts.dls_cnt; + buf->dls_size = counts.dls_size; + printf ("%u library directories\n", buf->dls_cnt); + TRY (RTLD_DI_SERINFO, buf) + { + if (counts.dls_cnt != buf->dls_cnt) + { + printf ("??? became %u library directories\n", buf->dls_cnt); + status = 1; + } + for (unsigned int i = 0; i < buf->dls_cnt; ++i) + printf ("\t%#02x\t%s\n", + buf->dls_serpath[i].dls_flags, + buf->dls_serpath[i].dls_name); + } + } + + unsigned long int lmid = 0xdeadbeefUL; + if (dlinfo (handle, RTLD_DI_LMID, &lmid) != 0) + printf ("dlinfo refuses RTLD_DI_LMID: %s\n", dlerror ()); + else + { + printf ("dlinfo RTLD_DI_LMID worked? %#lx\n", lmid); + status = lmid == 0xdeadbeefUL; + } + +#undef TRY + dlclose (handle); + + return status; +} + +#include "../test-skeleton.c" --- glibc-2.3.2/elf/Makefile 2003-02-21 01:28:09.000000000 -0500 +++ glibc-2.3.2/elf/Makefile 2003-09-20 09:54:37.000000000 -0400 @@ -69,7 +69,9 @@ unwind-dw2.c unwind-dw2-fde.c unwind.h unwind-pe.h \ unwind-dw2-fde.h dwarf2.h dl-procinfo.c tls.h dl-tls.h \ tst-tlsmod1.c tst-tlsmod2.c tst-tlsmod3.c tst-tlsmod4.c \ - tst-tlsmod5.c tst-tlsmod6.c \ + tst-tlsmod5.c tst-tlsmod6.c tst-tlsmod7.c tst-tlsmod8.c \ + tst-tlsmod9.c tst-tlsmod10.c tst-tlsmod11.c \ + tst-tlsmod12.c tst-tls10.h tst-alignmod.c \ circlemod1.c circlemod1a.c circlemod2.c circlemod2a.c \ circlemod3.c circlemod3a.c nodlopenmod2.c \ tls-macros.h \ @@ -80,6 +82,11 @@ tst-array2dep.c \ check-textrel.c dl-sysdep.h +CFLAGS-dl-runtime.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-dl-lookup.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-dl-iterate-phdr.c = $(uses-callbacks) +CFLAGS-dl-iterate-phdr-static.c = $(uses-callbacks) + include ../Makeconfig ifeq ($(unwind-find-fde),yes) @@ -142,7 +149,8 @@ $(tests-nodlopen-$(have-z-nodlopen)) neededtest neededtest2 \ neededtest3 neededtest4 unload2 lateglobal initfirst global \ restest2 next dblload dblunload reldep5 reldep6 reldep7 reldep8 \ - circleload1 tst-tls3 tst-tls4 tst-tls5 tst-tls6 tst-tls7 tst-tls8 + circleload1 tst-tls3 tst-tls4 tst-tls5 tst-tls6 tst-tls7 tst-tls8 \ + tst-tls10 tst-tls11 tst-tls12 tst-tls13 tst-tls14 tst-align # reldep9 test-srcs = tst-pathopt tests-vis-yes = vismain @@ -163,11 +171,14 @@ reldep6mod0 reldep6mod1 reldep6mod2 reldep6mod3 reldep6mod4 \ reldep7mod1 reldep7mod2 \ tst-tlsmod1 tst-tlsmod2 tst-tlsmod3 tst-tlsmod4 \ - tst-tlsmod5 tst-tlsmod6 \ + tst-tlsmod5 tst-tlsmod6 tst-tlsmod7 tst-tlsmod8 \ + tst-tlsmod9 tst-tlsmod10 tst-tlsmod11 tst-tlsmod12 \ + tst-tlsmod13 tst-tlsmod13a tst-tlsmod14a tst-tlsmod14b \ circlemod1 circlemod1a circlemod2 circlemod2a \ circlemod3 circlemod3a \ reldep8mod1 reldep8mod2 reldep8mod3 \ - reldep9mod1 reldep9mod2 reldep9mod3 + reldep9mod1 reldep9mod2 reldep9mod3 \ + tst-alignmod ifeq (yes,$(have-initfini-array)) modules-names += tst-array2dep endif @@ -181,6 +192,9 @@ include ../Rules +check-abi: check-abi-ld +update-abi: update-abi-ld + ifeq (yes,$(build-shared)) # Make sure these things are built in the `make lib' pass so they can be used # to run programs during the `make others' pass. @@ -210,12 +224,15 @@ mv -f $@T $@ $(objpfx)librtld.mk: $(objpfx)librtld.map Makefile - sed -n 's@^$(common-objpfx)\([^(]*\)(\([^)]*\.os\))$$@\1 \2@p' $< | \ + LC_ALL=C \ + sed -n 's@^$(common-objpfx)\([^(]*\)(\([^)]*\.os\)) *.*$$@\1 \2@p' \ + $< | \ while read lib file; do \ case $$lib in \ libc_pic.a) \ - fgrep -l /$$file \ + LC_ALL=C fgrep -l /$$file \ $(common-objpfx)stamp.os $(common-objpfx)*/stamp.os | \ + LC_ALL=C \ sed 's@^$(common-objpfx)\([^/]*\)/stamp\.os$$@rtld-\1'" +=$$file@"\ ;; \ */*.a) \ @@ -223,22 +240,24 @@ *) echo "Wasn't expecting $$lib($$file)" >&2; exit 1 ;; \ esac; \ done > $@T - echo rtld-subdirs = `sed 's/^rtld-\([^ ]*\).*$$/\1/' $@T \ - | sort -u` >> $@T + echo rtld-subdirs = `LC_ALL=C sed 's/^rtld-\([^ ]*\).*$$/\1/' $@T \ + | LC_ALL=C sort -u` >> $@T mv -f $@T $@ $(objpfx)rtld-libc.a: $(objpfx)librtld.mk FORCE $(MAKE) -f $< -f rtld-Rules -generated += librtld.map librtld.mk rtld-libc.a - $(objpfx)librtld.os: $(objpfx)dl-allobjs.os $(objpfx)rtld-libc.a - $(LINK.o) -nostdlib -nostartfiles -r -o $@ '-Wl,-(' $^ -lgcc '-Wl,-)' + $(LINK.o) -nostdlib -nostartfiles -r -o $@ '-Wl,-(' $^ -lgcc '-Wl,-)' \ + -Wl,-Map,$@.map + +generated += librtld.map librtld.mk rtld-libc.a librtld.os.map $(objpfx)ld.so: $(objpfx)librtld.os $(ld-map) @rm -f $@.lds $(LINK.o) -nostdlib -nostartfiles -shared \ $(LDFLAGS-rtld) -Wl,-z,defs -Wl,--verbose 2>&1 | \ + LC_ALL=C \ sed -e '/^=========/,/^=========/!d;/^=========/d' \ -e 's/\. = 0 + SIZEOF_HEADERS;/& _begin = . - SIZEOF_HEADERS;/' \ > $@.lds @@ -305,11 +324,11 @@ ifeq ($(ldd-rewrite-script),no) define gen-ldd -sed $($(ldd-shell)-ldd-rewrite) < $< > $@.new +LC_ALL=C sed $($(ldd-shell)-ldd-rewrite) < $< > $@.new endef else define gen-ldd -sed $($(ldd-shell)-ldd-rewrite) < $< | sed -f $(ldd-rewrite-script) > $@.new +LC_ALL=C sed $($(ldd-shell)-ldd-rewrite) < $< | LC_ALL=C sed -f $(ldd-rewrite-script) > $@.new endef endif @@ -323,7 +342,8 @@ $(objpfx)ldconfig: $(ldconfig-modules:%=$(objpfx)%.o) SYSCONF-FLAGS := -D'SYSCONFDIR="$(sysconfdir)"' -CFLAGS-ldconfig.c = $(SYSCONF-FLAGS) -D'LIBDIR="$(libdir)"' -D'SLIBDIR="$(slibdir)"' +CFLAGS-ldconfig.c = $(SYSCONF-FLAGS) -D'LIBDIR="$(libdir)"' \ + -D'SLIBDIR="$(slibdir)"' -DIS_IN_ldconfig=1 CFLAGS-dl-cache.c = $(SYSCONF-FLAGS) CFLAGS-cache.c = $(SYSCONF-FLAGS) @@ -372,6 +392,10 @@ $(objpfx)reldep6mod3.so: $(objpfx)reldep6mod2.so $(objpfx)reldep6mod4.so: $(objpfx)reldep6mod1.so $(objpfx)tst-tlsmod3.so: $(objpfx)tst-tlsmod2.so +$(objpfx)tst-tlsmod8.so: $(objpfx)tst-tlsmod7.so +$(objpfx)tst-tlsmod10.so: $(objpfx)tst-tlsmod9.so +$(objpfx)tst-tlsmod12.so: $(objpfx)tst-tlsmod11.so +$(objpfx)tst-tlsmod13a.so: $(objpfx)tst-tlsmod13.so # For tst-tls9-static, make sure the modules it dlopens have libc.so in DT_NEEDED $(objpfx)tst-tlsmod5.so: $(common-objpfx)libc.so $(objpfx)tst-tlsmod6.so: $(common-objpfx)libc.so @@ -383,10 +407,51 @@ LDFLAGS-tst-tlsmod5.so = -nostdlib LDFLAGS-tst-tlsmod6.so = -nostdlib +testobj1.so-no-z-defs = yes +testobj3.so-no-z-defs = yes +testobj4.so-no-z-defs = yes +testobj5.so-no-z-defs = yes +testobj6.so-no-z-defs = yes +failobj.so-no-z-defs = yes +constload2.so-no-z-defs = yes +constload3.so-no-z-defs = yes +nodelmod1.so-no-z-defs = yes +nodelmod2.so-no-z-defs = yes +nodelmod4.so-no-z-defs = yes +nodel2mod2.so-no-z-defs = yes +reldepmod2.so-no-z-defs = yes +reldepmod3.so-no-z-defs = yes +reldepmod4.so-no-z-defs = yes +reldep4mod4.so-no-z-defs = yes +reldep4mod2.so-no-z-defs = yes +ltglobmod2.so-no-z-defs = yes +dblloadmod3.so-no-z-defs = yes +tst-tlsmod1.so-no-z-defs = yes +tst-tlsmod2.so-no-z-defs = yes +tst-tlsmod3.so-no-z-defs = yes +tst-tlsmod4.so-no-z-defs = yes +tst-tlsmod7.so-no-z-defs = yes +tst-tlsmod8.so-no-z-defs = yes +tst-tlsmod9.so-no-z-defs = yes +tst-tlsmod10.so-no-z-defs = yes +tst-tlsmod12.so-no-z-defs = yes +tst-tlsmod14a.so-no-z-defs = yes +tst-tlsmod14b.so-no-z-defs = yes +circlemod2.so-no-z-defs = yes +circlemod3.so-no-z-defs = yes +circlemod3a.so-no-z-defs = yes +reldep8mod2.so-no-z-defs = yes +reldep9mod1.so-no-z-defs = yes + # filtmod1.so has a special rule $(filter-out $(objpfx)filtmod1.so, $(test-modules)): $(objpfx)%.so: $(objpfx)%.os $(build-module) +ifeq ($(build-shared),yes) +# Build all the modules even when not actually running test programs. +tests: $(test-modules) +endif + $(objpfx)loadtest: $(libdl) LDFLAGS-loadtest = -rdynamic @@ -573,6 +638,23 @@ $(objpfx)tst-tls9: $(libdl) $(objpfx)tst-tls9.out: $(objpfx)tst-tlsmod5.so $(objpfx)tst-tlsmod6.so +$(objpfx)tst-tls10: $(objpfx)tst-tlsmod8.so + +$(objpfx)tst-tls11: $(objpfx)tst-tlsmod10.so + +$(objpfx)tst-tls12: $(objpfx)tst-tlsmod12.so + +$(objpfx)tst-tls13: $(libdl) +$(objpfx)tst-tls13.out: $(objpfx)tst-tlsmod13a.so + +$(objpfx)tst-tls14: $(objpfx)tst-tlsmod14a.so $(libdl) +$(objpfx)tst-tls14.out:$(objpfx)tst-tlsmod14b.so + +CFLAGS-tst-align.c = $(stack-align-test-flags) +CFLAGS-tst-alignmod.c = $(stack-align-test-flags) +$(objpfx)tst-align: $(libdl) +$(objpfx)tst-align.out: $(objpfx)tst-alignmod.so + ifdef libdl $(objpfx)tst-tls9-static: $(common-objpfx)dlfcn/libdl.a $(objpfx)tst-tls9-static.out: $(objpfx)tst-tlsmod5.so $(objpfx)tst-tlsmod6.so --- glibc-2.3.2/elf/Versions 2002-12-04 13:22:02.000000000 -0500 +++ glibc-2.3.2/elf/Versions 2003-08-21 08:36:59.000000000 -0400 @@ -21,6 +21,8 @@ # functions used in other libraries _dl_open; _dl_close; _dl_addr; _dl_sym; _dl_vsym; + _dl_open_hook; + __libc_dlopen_mode; __libc_dlsym; __libc_dlclose; } } @@ -51,6 +53,6 @@ _dl_unload_cache; _rtld_global; _dl_tls_symaddr; _dl_allocate_tls; _dl_deallocate_tls; _dl_get_tls_static_info; _dl_allocate_tls_init; - _dl_get_origin; _dl_tls_setup; + _dl_get_origin; _dl_tls_setup; _dl_rtld_di_serinfo; } } --- glibc-2.3.2/elf/cache.c 2002-12-29 14:14:59.000000000 -0500 +++ glibc-2.3.2/elf/cache.c 2003-09-19 22:37:01.000000000 -0400 @@ -1,4 +1,5 @@ -/* Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1999, 2000, 2001, 2002, 2003 + Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Jaeger , 1999. @@ -86,6 +87,11 @@ case FLAG_POWERPC_LIB64: fputs(",64bit", stdout); break; + case FLAG_MIPS64_LIBN32: + fputs(",N32", stdout); + break; + case FLAG_MIPS64_LIBN64: + fputs(",64bit", stdout); case 0: break; default: @@ -299,6 +305,13 @@ if (opt_format != 2) { + /* struct cache_file_new is 64-bit aligned on some arches while + only 32-bit aligned on other arches. Duplicate last old + cache entry so that new cache in ld.so.cache can be used by + both. */ + if (opt_format != 0) + cache_entry_old_count = (cache_entry_old_count + 1) & ~1; + /* And the list of all entries in the old format. */ file_entries_size = sizeof (struct cache_file) + cache_entry_old_count * sizeof (struct file_entry); @@ -345,7 +358,7 @@ entry = entry->next, ++idx_new) { /* First the library. */ - if (opt_format != 2) + if (opt_format != 2 && entry->hwcap == 0) { file_entries->libs[idx_old].flags = entry->flags; /* XXX: Actually we can optimize here and remove duplicates. */ @@ -368,7 +381,7 @@ ++str; str_offset += len + 1; /* Then the path. */ - if (opt_format != 2) + if (opt_format != 2 && entry->hwcap == 0) file_entries->libs[idx_old].value = str_offset + pad; if (opt_format != 0) file_entries_new->libs[idx_new].value = str_offset; @@ -382,6 +395,11 @@ ++idx_old; } + /* Duplicate last old cache entry if needed. */ + if (opt_format != 2 + && idx_old < cache_entry_old_count) + file_entries->libs[idx_old] = file_entries->libs[idx_old - 1]; + /* Write out the cache. */ /* Write cache first to a temporary file and rename it later. */ @@ -458,7 +476,7 @@ { struct cache_entry *new_entry, *ptr, *prev; char *full_path; - int len, i; + size_t len, i; new_entry = (struct cache_entry *) xmalloc (sizeof (struct cache_entry)); --- glibc-2.3.2/elf/dl-addr.c 2002-09-27 23:35:22.000000000 -0400 +++ glibc-2.3.2/elf/dl-addr.c 2003-03-15 15:02:08.000000000 -0500 @@ -1,5 +1,5 @@ /* Locate the shared object symbol nearest a given address. - Copyright (C) 1996-2000, 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 1996-2000,2001,2002,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -24,7 +24,8 @@ int internal_function -_dl_addr (const void *address, Dl_info *info) +_dl_addr (const void *address, Dl_info *info, + struct link_map **mapp, const ElfW(Sym) **symbolp) { const ElfW(Addr) addr = DL_LOOKUP_ADDRESS (address); struct link_map *l, *match; @@ -93,6 +94,11 @@ || ELFW(ST_BIND) (symtab->st_info) == STB_WEAK)) matchsym = (ElfW(Sym) *) symtab; + if (mapp) + *mapp = match; + if (symbolp) + *symbolp = matchsym; + if (matchsym) { /* We found a symbol close by. Fill in its name and exact address. */ --- glibc-2.3.2/elf/dl-close.c 2003-01-27 15:44:03.000000000 -0500 +++ glibc-2.3.2/elf/dl-close.c 2003-04-28 08:20:35.000000000 -0400 @@ -80,7 +80,7 @@ return true; } - while (idx - disp > disp == 0 ? 1 + GL(dl_tls_static_nelem) : 0) + while (idx - disp > (disp == 0 ? 1 + GL(dl_tls_static_nelem) : 0)) { --idx; @@ -321,8 +321,9 @@ _dl_debug_state (); #ifdef USE_TLS - size_t tls_free_start, tls_free_end; - tls_free_start = tls_free_end = GL(dl_tls_static_used); + size_t tls_free_start; + size_t tls_free_end; + tls_free_start = tls_free_end = NO_TLS_OFFSET; #endif /* Check each element of the search list to see if all references to @@ -365,15 +366,56 @@ /* All dynamically loaded modules with TLS are unloaded. */ GL(dl_tls_max_dtv_idx) = GL(dl_tls_static_nelem); - if (imap->l_tls_offset != 0) + if (imap->l_tls_offset != NO_TLS_OFFSET) { /* Collect a contiguous chunk built from the objects in this search list, going in either direction. When the whole chunk is at the end of the used area then we can reclaim it. */ - if (imap->l_tls_offset == tls_free_end) +# if TLS_TCB_AT_TP + if (tls_free_start == NO_TLS_OFFSET + || (size_t) imap->l_tls_offset == tls_free_start) + { + /* Extend the contiguous chunk being reclaimed. */ + tls_free_start + = imap->l_tls_offset - imap->l_tls_blocksize; + + if (tls_free_end == NO_TLS_OFFSET) + tls_free_end = imap->l_tls_offset; + } + else if (imap->l_tls_offset - imap->l_tls_blocksize + == tls_free_end) + /* Extend the chunk backwards. */ + tls_free_end = imap->l_tls_offset; + else + { + /* This isn't contiguous with the last chunk freed. + One of them will be leaked unless we can free + one block right away. */ + if (tls_free_end == GL(dl_tls_static_used)) + { + GL(dl_tls_static_used) = tls_free_start; + tls_free_end = imap->l_tls_offset; + tls_free_start + = tls_free_end - imap->l_tls_blocksize; + } + else if ((size_t) imap->l_tls_offset + == GL(dl_tls_static_used)) + GL(dl_tls_static_used) + = imap->l_tls_offset - imap->l_tls_blocksize; + else if (tls_free_end < (size_t) imap->l_tls_offset) + { + /* We pick the later block. It has a chance to + be freed. */ + tls_free_end = imap->l_tls_offset; + tls_free_start + = tls_free_end - imap->l_tls_blocksize; + } + } +# elif TLS_DTV_AT_TP + if ((size_t) imap->l_tls_offset == tls_free_end) /* Extend the contiguous chunk being reclaimed. */ - tls_free_end += imap->l_tls_blocksize; + tls_free_end -= imap->l_tls_blocksize; else if (imap->l_tls_offset + imap->l_tls_blocksize == tls_free_start) /* Extend the chunk backwards. */ @@ -387,6 +429,9 @@ tls_free_start = imap->l_tls_offset; tls_free_end = tls_free_start + imap->l_tls_blocksize; } +# else +# error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined" +# endif } } #endif --- glibc-2.3.2/elf/dl-conflict.c 2002-10-17 13:05:51.000000000 -0400 +++ glibc-2.3.2/elf/dl-conflict.c 2003-04-12 11:39:42.000000000 -0400 @@ -1,5 +1,5 @@ /* Resolve conflicts against already prelinked libraries. - Copyright (C) 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Jakub Jelinek , 2001. @@ -28,11 +28,11 @@ #include #include "dynamic-link.h" - void _dl_resolve_conflicts (struct link_map *l, ElfW(Rela) *conflict, ElfW(Rela) *conflictend) { +#if ! ELF_MACHINE_NO_RELA if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_RELOC, 0)) _dl_printf ("\nconflict processing: %s\n", l->l_name[0] ? l->l_name : rtld_progname); @@ -64,4 +64,5 @@ for (; conflict < conflictend; ++conflict) elf_machine_rela (l, conflict, NULL, NULL, (void *) conflict->r_offset); } +#endif } --- glibc-2.3.2/elf/dl-iteratephdr.c 2002-12-06 01:42:30.000000000 -0500 +++ glibc-2.3.2/elf/dl-iteratephdr.c 2003-09-19 22:37:01.000000000 -0400 @@ -1,5 +1,5 @@ /* Get loaded objects program headers. - Copyright (C) 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Jakub Jelinek , 2001. @@ -23,6 +23,12 @@ #include #include +static void +cancel_handler (void *arg __attribute__((unused))) +{ + __rtld_lock_unlock_recursive (GL(dl_load_lock)); +} + int __dl_iterate_phdr (int (*callback) (struct dl_phdr_info *info, size_t size, void *data), void *data) @@ -33,12 +39,10 @@ /* Make sure we are alone. */ __rtld_lock_lock_recursive (GL(dl_load_lock)); + __libc_cleanup_push (cancel_handler, 0); for (l = GL(dl_loaded); l != NULL; l = l->l_next) { - /* Skip the dynamic linker. */ - if (l->l_phdr == NULL) - continue; info.dlpi_addr = l->l_addr; info.dlpi_name = l->l_name; info.dlpi_phdr = l->l_phdr; @@ -49,6 +53,7 @@ } /* Release the lock. */ + __libc_cleanup_pop (0); __rtld_lock_unlock_recursive (GL(dl_load_lock)); return ret; --- glibc-2.3.2/elf/dl-libc.c 2002-11-19 03:38:32.000000000 -0500 +++ glibc-2.3.2/elf/dl-libc.c 2003-08-21 08:36:59.000000000 -0400 @@ -96,6 +96,50 @@ _dl_close ((struct link_map *) ptr); } +/* This code is to support __libc_dlopen from __libc_dlopen'ed shared + libraries. We need to ensure the statically linked __libc_dlopen + etc. functions are used instead of the dynamically loaded. */ +struct dl_open_hook +{ + void *(*dlopen_mode) (const char *name, int mode); + void *(*dlsym) (void *map, const char *name); + int (*dlclose) (void *map); +}; + +#ifdef SHARED +extern struct dl_open_hook *_dl_open_hook; +libc_hidden_proto (_dl_open_hook); +struct dl_open_hook *_dl_open_hook __attribute__((nocommon)); +libc_hidden_data_def (_dl_open_hook); +#else +static void +do_dlsym_private (void *ptr) +{ + lookup_t l; + struct r_found_version vers; + vers.name = "GLIBC_PRIVATE"; + vers.hidden = 1; + /* vers.hash = _dl_elf_hash (version); */ + vers.hash = 0x0963cf85; + /* FIXME: Shouldn't we use libc.so.6* here? */ + vers.filename = NULL; + + struct do_dlsym_args *args = (struct do_dlsym_args *) ptr; + args->ref = NULL; + l = _dl_lookup_versioned_symbol (args->name, args->map, + &args->ref, args->map->l_scope, + &vers, 0, 0); + args->loadbase = l; +} + +static struct dl_open_hook _dl_open_hook = + { + .dlopen_mode = __libc_dlopen_mode, + .dlsym = __libc_dlsym, + .dlclose = __libc_dlclose + }; +#endif + /* ... and these functions call dlerror_run. */ void * @@ -105,8 +149,31 @@ args.name = name; args.mode = mode; +#ifdef SHARED + if (__builtin_expect (_dl_open_hook != NULL, 0)) + return _dl_open_hook->dlopen_mode (name, mode); return (dlerror_run (do_dlopen, &args) ? NULL : (void *) args.map); +#else + if (dlerror_run (do_dlopen, &args)) + return NULL; + + struct do_dlsym_args sargs; + sargs.map = args.map; + sargs.name = "_dl_open_hook"; + + if (! dlerror_run (do_dlsym_private, &sargs)) + { + struct dl_open_hook **hook + = (struct dl_open_hook **) + (DL_SYMBOL_ADDRESS (sargs.loadbase, sargs.ref)); + if (hook != NULL) + *hook = &_dl_open_hook; + } + + return (void *) args.map; +#endif } +libc_hidden_def (__libc_dlopen_mode) void * __libc_dlsym (void *map, const char *name) @@ -115,15 +182,25 @@ args.map = map; args.name = name; +#ifdef SHARED + if (__builtin_expect (_dl_open_hook != NULL, 0)) + return _dl_open_hook->dlsym (map, name); +#endif return (dlerror_run (do_dlsym, &args) ? NULL : (void *) (DL_SYMBOL_ADDRESS (args.loadbase, args.ref))); } +libc_hidden_def (__libc_dlsym) int __libc_dlclose (void *map) { +#ifdef SHARED + if (__builtin_expect (_dl_open_hook != NULL, 0)) + return _dl_open_hook->dlclose (map); +#endif return dlerror_run (do_dlclose, map); } +libc_hidden_def (__libc_dlclose) libc_freeres_fn (free_mem) --- glibc-2.3.2/elf/dl-load.c 2003-01-16 13:14:41.000000000 -0500 +++ glibc-2.3.2/elf/dl-load.c 2003-08-21 08:36:59.000000000 -0400 @@ -1,5 +1,5 @@ /* Map in a shared object's segments from the file. - Copyright (C) 1995,96,97,98,99,2000,2001,2002 Free Software Foundation, Inc. + Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -97,19 +98,26 @@ /* Type for the buffer we put the ELF header and hopefully the program header. This buffer does not really have to be too large. In most cases the program header follows the ELF header directly. If this - is not the case all bets are off and we can make the header arbitrarily - large and still won't get it read. This means the only question is - how large are the ELF and program header combined. The ELF header - in 64-bit files is 56 bytes long. Each program header entry is again - 56 bytes long. I.e., even with a file which has 17 program header - entries we only have to read 1kB. And 17 program header entries is - plenty, normal files have < 10. If this heuristic should really fail - for some file the code in `_dl_map_object_from_fd' knows how to - recover. */ + is not the case all bets are off and we can make the header + arbitrarily large and still won't get it read. This means the only + question is how large are the ELF and program header combined. The + ELF header 32-bit files is 52 bytes long and in 64-bit files is 64 + bytes long. Each program header entry is again 32 and 56 bytes + long respectively. I.e., even with a file which has 7 program + header entries we only have to read 512B. Add to this a bit of + margin for program notes and reading 512B and 640B for 32-bit and + 64-bit files respecitvely is enough. If this heuristic should + really fail for some file the code in `_dl_map_object_from_fd' + knows how to recover. */ struct filebuf { ssize_t len; - char buf[1024] __attribute__ ((aligned (__alignof (ElfW(Ehdr))))); +#if __WORDSIZE == 32 +# define FILEBUF_SIZE 512 +#else +# define FILEBUF_SIZE 640 +#endif + char buf[FILEBUF_SIZE] __attribute__ ((aligned (__alignof (ElfW(Ehdr))))); }; /* This is the decomposed LD_LIBRARY_PATH search path. */ @@ -353,7 +361,7 @@ static size_t max_dirnamelen; -static inline struct r_search_path_elem ** +static struct r_search_path_elem ** fillin_rpath (char *rpath, struct r_search_path_elem **result, const char *sep, int check_trusted, const char *what, const char *where) { @@ -568,6 +576,34 @@ sps->malloced = 1; } +/* Make sure cached path information is stored in *SP + and return true if there are any paths to search there. */ +static bool +cache_rpath (struct link_map *l, + struct r_search_path_struct *sp, + int tag, + const char *what) +{ + if (sp->dirs == (void *) -1) + return false; + + if (sp->dirs != NULL) + return true; + + if (l->l_info[tag] == NULL) + { + /* There is no path. */ + sp->dirs = (void *) -1; + return false; + } + + /* Make sure the cache information is available. */ + decompose_rpath (sp, (const char *) (D_PTR (l, l_info[DT_STRTAB]) + + l->l_info[tag]->d_un.d_val), + l, what); + return true; +} + void internal_function @@ -877,6 +913,7 @@ int prot; } loadcmds[l->l_phnum], *c; size_t nloadcmds = 0; + bool has_holes = false; /* The struct is initialized to zero so this is not necessary: l->l_ld = 0; @@ -922,6 +959,11 @@ c->allocend = ph->p_vaddr + ph->p_memsz; c->mapoff = ph->p_offset & ~(ph->p_align - 1); + /* Determine whether there is a gap between the last segment + and this one. */ + if (nloadcmds > 1 && c[-1].mapend != c->mapstart) + has_holes = true; + /* Optimize a common case. */ #if (PF_R | PF_W | PF_X) == 7 && (PROT_READ | PROT_WRITE | PROT_EXEC) == 7 c->prot = (PF_TO_PROT @@ -945,6 +987,10 @@ l->l_tls_blocksize = ph->p_memsz; l->l_tls_align = ph->p_align; + if (ph->p_align == 0) + l->l_tls_firstbyte_offset = 0; + else + l->l_tls_firstbyte_offset = ph->p_vaddr & (ph->p_align - 1); l->l_tls_initimage_size = ph->p_filesz; /* Since we don't know the load address yet only store the offset. We will adjust it later. */ @@ -1014,6 +1060,15 @@ break; } + if (__builtin_expect (nloadcmds == 0, 0)) + { + /* This only happens for a bogus object that will be caught with + another error below. But we don't want to go through the + calculations below using NLOADCMDS - 1. */ + errstring = N_("object file has no loadable segments"); + goto call_lose; + } + /* Now process the load commands and map segments into memory. */ c = loadcmds; @@ -1051,14 +1106,15 @@ l->l_map_end = l->l_map_start + maplength; l->l_addr = l->l_map_start - c->mapstart; - /* Change protection on the excess portion to disallow all access; - the portions we do not remap later will be inaccessible as if - unallocated. Then jump into the normal segment-mapping loop to - handle the portion of the segment past the end of the file - mapping. */ - __mprotect ((caddr_t) (l->l_addr + c->mapend), - loadcmds[nloadcmds - 1].allocend - c->mapend, - PROT_NONE); + if (has_holes) + /* Change protection on the excess portion to disallow all access; + the portions we do not remap later will be inaccessible as if + unallocated. Then jump into the normal segment-mapping loop to + handle the portion of the segment past the end of the file + mapping. */ + __mprotect ((caddr_t) (l->l_addr + c->mapend), + loadcmds[nloadcmds - 1].allocend - c->mapend, + PROT_NONE); goto postmap; } @@ -1118,23 +1174,18 @@ if (zeropage > zero) { /* Zero the final part of the last page of the segment. */ - if ((c->prot & PROT_WRITE) == 0) + if (__builtin_expect ((c->prot & PROT_WRITE) == 0, 0)) { /* Dag nab it. */ - if (__builtin_expect (__mprotect ((caddr_t) - (zero - & ~(GL(dl_pagesize) - - 1)), - GL(dl_pagesize), - c->prot|PROT_WRITE) < 0, - 0)) + if (__mprotect ((caddr_t) (zero & ~(GL(dl_pagesize) - 1)), + GL(dl_pagesize), c->prot|PROT_WRITE) < 0) { errstring = N_("cannot change memory protections"); goto call_lose_errno; } } memset ((void *) zero, '\0', zeropage - zero); - if ((c->prot & PROT_WRITE) == 0) + if (__builtin_expect ((c->prot & PROT_WRITE) == 0, 0)) __mprotect ((caddr_t) (zero & ~(GL(dl_pagesize) - 1)), GL(dl_pagesize), c->prot); } @@ -1221,7 +1272,7 @@ (unsigned long int) l->l_phdr, (int) sizeof (void *) * 2, l->l_phnum); - elf_get_dynamic_info (l); + elf_get_dynamic_info (l, NULL); /* Make sure we are not dlopen'ing an object that has the DF_1_NOOPEN flag set. */ @@ -1728,29 +1779,9 @@ /* First try the DT_RPATH of the dependent object that caused NAME to be loaded. Then that object's dependent, and on up. */ for (l = loader; fd == -1 && l; l = l->l_loader) - { - if (l->l_rpath_dirs.dirs == NULL) - { - if (l->l_info[DT_RPATH] == NULL) - { - /* There is no path. */ - l->l_rpath_dirs.dirs = (void *) -1; - continue; - } - else - { - /* Make sure the cache information is available. */ - size_t ptrval = (D_PTR (l, l_info[DT_STRTAB]) - + l->l_info[DT_RPATH]->d_un.d_val); - decompose_rpath (&l->l_rpath_dirs, - (const char *) ptrval, l, "RPATH"); - } - } - - if (l->l_rpath_dirs.dirs != (void *) -1) - fd = open_path (name, namelen, preloaded, &l->l_rpath_dirs, - &realname, &fb); - } + if (cache_rpath (l, &l->l_rpath_dirs, DT_RPATH, "RPATH")) + fd = open_path (name, namelen, preloaded, &l->l_rpath_dirs, + &realname, &fb); /* If dynamically linked, try the DT_RPATH of the executable itself. */ @@ -1766,37 +1797,12 @@ fd = open_path (name, namelen, preloaded, &env_path_list, &realname, &fb); - /* Look at the RUNPATH information for this binary. - - Note that this is no real loop. 'while' is used only to enable - us to use 'break' instead of a 'goto' to jump to the end. The - loop is always left after the first round. */ - while (fd == -1 && loader != NULL - && loader->l_runpath_dirs.dirs != (void *) -1) - { - if (loader->l_runpath_dirs.dirs == NULL) - { - if (loader->l_info[DT_RUNPATH] == NULL) - { - /* No RUNPATH. */ - loader->l_runpath_dirs.dirs = (void *) -1; - break; - } - else - { - /* Make sure the cache information is available. */ - size_t ptrval = (D_PTR (loader, l_info[DT_STRTAB]) - + loader->l_info[DT_RUNPATH]->d_un.d_val); - decompose_rpath (&loader->l_runpath_dirs, - (const char *) ptrval, loader, "RUNPATH"); - } - } - - if (loader->l_runpath_dirs.dirs != (void *) -1) - fd = open_path (name, namelen, preloaded, - &loader->l_runpath_dirs, &realname, &fb); - break; - } + /* Look at the RUNPATH information for this binary. */ + if (fd == -1 && loader != NULL + && cache_rpath (loader, &loader->l_runpath_dirs, + DT_RUNPATH, "RUNPATH")) + fd = open_path (name, namelen, preloaded, + &loader->l_runpath_dirs, &realname, &fb); if (fd == -1 && (__builtin_expect (! preloaded, 1) @@ -1920,3 +1926,86 @@ return _dl_map_object_from_fd (name, fd, &fb, realname, loader, type, mode); } INTDEF (_dl_map_object) + +void +internal_function +_dl_rtld_di_serinfo (struct link_map *loader, Dl_serinfo *si, bool counting) +{ + if (counting) + { + si->dls_cnt = 0; + si->dls_size = 0; + } + + unsigned int idx = 0; + char *allocptr = (char *) &si->dls_serpath[si->dls_cnt]; + void add_path (const struct r_search_path_struct *sps, unsigned int flags) +# define add_path(sps, flags) add_path(sps, 0) /* XXX */ + { + if (sps->dirs != (void *) -1) + { + struct r_search_path_elem **dirs = sps->dirs; + do + { + const struct r_search_path_elem *const r = *dirs++; + if (counting) + { + si->dls_cnt++; + si->dls_size += r->dirnamelen; + } + else + { + Dl_serpath *const sp = &si->dls_serpath[idx++]; + sp->dls_name = allocptr; + allocptr = __mempcpy (allocptr, + r->dirname, r->dirnamelen - 1); + *allocptr++ = '\0'; + sp->dls_flags = flags; + } + } + while (*dirs != NULL); + } + } + + /* When the object has the RUNPATH information we don't use any RPATHs. */ + if (loader->l_info[DT_RUNPATH] == NULL) + { + /* First try the DT_RPATH of the dependent object that caused NAME + to be loaded. Then that object's dependent, and on up. */ + + struct link_map *l = loader; + do + { + if (cache_rpath (l, &l->l_rpath_dirs, DT_RPATH, "RPATH")) + add_path (&l->l_rpath_dirs, XXX_RPATH); + l = l->l_loader; + } + while (l != NULL); + + /* If dynamically linked, try the DT_RPATH of the executable itself. */ + l = GL(dl_loaded); + if (l != NULL && l->l_type != lt_loaded && l != loader) + if (cache_rpath (l, &l->l_rpath_dirs, DT_RPATH, "RPATH")) + add_path (&l->l_rpath_dirs, XXX_RPATH); + } + + /* Try the LD_LIBRARY_PATH environment variable. */ + add_path (&env_path_list, XXX_ENV); + + /* Look at the RUNPATH information for this binary. */ + if (cache_rpath (loader, &loader->l_runpath_dirs, DT_RUNPATH, "RUNPATH")) + add_path (&loader->l_runpath_dirs, XXX_RUNPATH); + + /* XXX + Here is where ld.so.cache gets checked, but we don't have + a way to indicate that in the results for Dl_serinfo. */ + + /* Finally, try the default path. */ + if (!(loader->l_flags_1 & DF_1_NODEFLIB)) + add_path (&rtld_search_dirs, XXX_default); + + if (counting) + /* Count the struct size before the string area, which we didn't + know before we completed dls_cnt. */ + si->dls_size += (char *) &si->dls_serpath[si->dls_cnt] - (char *) si; +} --- glibc-2.3.2/elf/dl-lookup.c 2003-01-11 04:51:49.000000000 -0500 +++ glibc-2.3.2/elf/dl-lookup.c 2003-08-21 08:36:59.000000000 -0400 @@ -273,17 +273,30 @@ { /* It is very tricky. We need to figure out what value to return for the protected symbol. */ - struct sym_val protected_value = { NULL, NULL }; - - for (scope = symbol_scope; *scope; ++scope) - if (_dl_do_lookup (undef_name, hash, *ref, &protected_value, *scope, - 0, flags, NULL, ELF_RTYPE_CLASS_PLT)) - break; - - if (protected_value.s != NULL && protected_value.m != undef_map) + if (type_class == ELF_RTYPE_CLASS_PLT) { - current_value.s = *ref; - current_value.m = undef_map; + if (current_value.s != NULL && current_value.m != undef_map) + { + current_value.s = *ref; + current_value.m = undef_map; + } + } + else + { + struct sym_val protected_value = { NULL, NULL }; + + for (scope = symbol_scope; *scope; ++scope) + if (_dl_do_lookup (undef_name, hash, *ref, + &protected_value, *scope, 0, flags, + NULL, ELF_RTYPE_CLASS_PLT)) + break; + + if (protected_value.s != NULL + && protected_value.m != undef_map) + { + current_value.s = *ref; + current_value.m = undef_map; + } } } @@ -465,18 +478,31 @@ { /* It is very tricky. We need to figure out what value to return for the protected symbol. */ - struct sym_val protected_value = { NULL, NULL }; - - for (scope = symbol_scope; *scope; ++scope) - if (_dl_do_lookup_versioned (undef_name, hash, *ref, &protected_value, - *scope, 0, version, NULL, - ELF_RTYPE_CLASS_PLT)) - break; - - if (protected_value.s != NULL && protected_value.m != undef_map) + if (type_class == ELF_RTYPE_CLASS_PLT) { - current_value.s = *ref; - current_value.m = undef_map; + if (current_value.s != NULL && current_value.m != undef_map) + { + current_value.s = *ref; + current_value.m = undef_map; + } + } + else + { + struct sym_val protected_value = { NULL, NULL }; + + for (scope = symbol_scope; *scope; ++scope) + if (_dl_do_lookup_versioned (undef_name, hash, *ref, + &protected_value, + *scope, 0, version, NULL, + ELF_RTYPE_CLASS_PLT)) + break; + + if (protected_value.s != NULL + && protected_value.m != undef_map) + { + current_value.s = *ref; + current_value.m = undef_map; + } } } @@ -678,20 +704,21 @@ { _dl_printf ("%s 0x%0*Zx 0x%0*Zx -> 0x%0*Zx 0x%0*Zx ", conflict ? "conflict" : "lookup", - (int) sizeof (ElfW(Addr)) * 2, undef_map->l_map_start, (int) sizeof (ElfW(Addr)) * 2, - ((ElfW(Addr)) *ref) - undef_map->l_map_start, + (size_t) undef_map->l_map_start, + (int) sizeof (ElfW(Addr)) * 2, + (size_t) (((ElfW(Addr)) *ref) - undef_map->l_map_start), (int) sizeof (ElfW(Addr)) * 2, - (ElfW(Addr)) (value->s ? value->m->l_map_start : 0), + (size_t) (value->s ? value->m->l_map_start : 0), (int) sizeof (ElfW(Addr)) * 2, - (ElfW(Addr)) (value->s ? value->s->st_value : 0)); + (size_t) (value->s ? value->s->st_value : 0)); if (conflict) _dl_printf ("x 0x%0*Zx 0x%0*Zx ", (int) sizeof (ElfW(Addr)) * 2, - (ElfW(Addr)) (val.s ? val.m->l_map_start : 0), + (size_t) (val.s ? val.m->l_map_start : 0), (int) sizeof (ElfW(Addr)) * 2, - (ElfW(Addr)) (val.s ? val.s->st_value : 0)); + (size_t) (val.s ? val.s->st_value : 0)); _dl_printf ("/%x %s\n", type_class, undef_name); } --- glibc-2.3.2/elf/dl-object.c 2003-01-10 03:23:58.000000000 -0500 +++ glibc-2.3.2/elf/dl-object.c 2003-04-28 08:20:35.000000000 -0400 @@ -53,6 +53,10 @@ new->l_name = realname; new->l_type = type; new->l_loader = loader; +#if defined USE_TLS && NO_TLS_OFFSET != 0 + new->l_tls_offset = NO_TLS_OFFSET; +#endif + /* new->l_global = 0; We use calloc therefore not necessary. */ /* Use the 'l_scope_mem' array by default for the the 'l_scope' --- glibc-2.3.2/elf/dl-open.c 2003-01-27 19:47:52.000000000 -0500 +++ glibc-2.3.2/elf/dl-open.c 2003-08-21 08:36:59.000000000 -0400 @@ -303,6 +303,16 @@ } #ifdef USE_TLS + /* Do static TLS initialization now if it has been delayed because + the TLS template might not be fully relocated at _dl_allocate_static_tls + time. */ + for (l = new; l; l = l->l_next) + if (l->l_need_tls_init) + { + l->l_need_tls_init = 0; + GL(dl_init_static_tls) (l); + } + /* We normally don't bump the TLS generation counter. There must be actually a need to do this. */ any_tls = false; --- glibc-2.3.2/elf/dl-profile.c 2002-08-02 17:46:57.000000000 -0400 +++ glibc-2.3.2/elf/dl-profile.c 2003-04-12 11:39:42.000000000 -0400 @@ -1,5 +1,5 @@ /* Profiling of shared libraries. - Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc. + Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. Based on the BSD mcount implementation. @@ -34,7 +34,7 @@ #include #include #include -#include +#include /* The LD_PROFILE feature has to be implemented different to the normal profiling using the gmon/ functions. The problem is that an @@ -516,24 +516,24 @@ size_t newfromidx; to_index = (data[narcs].self_pc / (hashfraction * sizeof (*tos))); - newfromidx = exchange_and_add (&fromidx, 1) + 1; + newfromidx = atomic_exchange_and_add (&fromidx, 1) + 1; froms[newfromidx].here = &data[narcs]; froms[newfromidx].link = tos[to_index]; tos[to_index] = newfromidx; - atomic_add (&narcs, 1); + atomic_increment (&narcs); } /* If we still have no entry stop searching and insert. */ if (*topcindex == 0) { - uint_fast32_t newarc = exchange_and_add (narcsp, 1); + uint_fast32_t newarc = atomic_exchange_and_add (narcsp, 1); /* In rare cases it could happen that all entries in FROMS are occupied. So we cannot count this anymore. */ if (newarc >= fromlimit) goto done; - *topcindex = exchange_and_add (&fromidx, 1) + 1; + *topcindex = atomic_exchange_and_add (&fromidx, 1) + 1; fromp = &froms[*topcindex]; fromp->here = &data[newarc]; @@ -541,7 +541,7 @@ data[newarc].self_pc = selfpc; data[newarc].count = 0; fromp->link = 0; - atomic_add (&narcs, 1); + atomic_increment (&narcs); break; } @@ -554,7 +554,7 @@ } /* Increment the counter. */ - atomic_add (&fromp->here->count, 1); + atomic_increment (&fromp->here->count); done: ; --- glibc-2.3.2/elf/dl-reloc.c 2003-01-30 12:35:50.000000000 -0500 +++ glibc-2.3.2/elf/dl-reloc.c 2003-08-21 08:36:59.000000000 -0400 @@ -40,27 +40,83 @@ dynamically loaded. This can only work if there is enough surplus in the static TLS area already allocated for each running thread. If this object's TLS segment is too big to fit, we fail. If it fits, - we set MAP->l_tls_offset and return. */ -static void __attribute_noinline__ -allocate_static_tls (struct link_map *map) + we set MAP->l_tls_offset and return. + This function intentionally does not return any value but signals error + directly, as static TLS should be rare and code handling it should + not be inlined as much as possible. */ +void +internal_function __attribute_noinline__ +_dl_allocate_static_tls (struct link_map *map) { - size_t offset = roundup (GL(dl_tls_static_used), map->l_tls_align); - if (offset + map->l_tls_blocksize + size_t offset; + size_t used; + size_t check; + size_t freebytes; + size_t n; + size_t blsize; + + /* If the alignment requirements are too high fail. */ + if (map->l_tls_align > GL(dl_tls_static_align)) + { + fail: + INTUSE(_dl_signal_error) (0, map->l_name, NULL, N_("\ +cannot allocate memory in static TLS block")); + } + # if TLS_TCB_AT_TP - + TLS_TCB_SIZE + freebytes = GL(dl_tls_static_size) - GL(dl_tls_static_used) - TLS_TCB_SIZE; + + blsize = map->l_tls_blocksize + map->l_tls_firstbyte_offset; + if (freebytes < blsize) + goto fail; + + n = (freebytes - blsize) / map->l_tls_align; + + offset = GL(dl_tls_static_used) + (freebytes - n * map->l_tls_align + - map->l_tls_firstbyte_offset); + + map->l_tls_offset = GL(dl_tls_static_used) = offset; # elif TLS_DTV_AT_TP + offset = roundup (GL(dl_tls_static_used), map->l_tls_align); + used = offset + map->l_tls_blocksize; + check = used; /* dl_tls_static_used includes the TCB at the beginning. */ + + if (check > GL(dl_tls_static_size)) + goto fail; + + map->l_tls_offset = offset; + GL(dl_tls_static_used) = used; # else # error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined" # endif - > GL(dl_tls_static_size)) - { - const char *errstring = N_("\ -shared object cannot be dlopen()ed: static TLS memory too small"); - INTUSE(_dl_signal_error) (0, (map)->l_name, NULL, errstring); - } - map->l_tls_offset = offset; - GL(dl_tls_static_used) = offset + map->l_tls_blocksize; + + if (map->l_relocated) + GL(dl_init_static_tls) (map); + else + map->l_need_tls_init = 1; +} + +/* Initialize static TLS area and DTV for current (only) thread. + libpthread implementations should provide their own hook + to handle all threads. */ +void +_dl_nothread_init_static_tls (struct link_map *map) +{ +# if TLS_TCB_AT_TP + void *dest = (char *) THREAD_SELF - map->l_tls_offset; +# elif TLS_DTV_AT_TP + void *dest = (char *) THREAD_SELF + map->l_tls_offset + TLS_PRE_TCB_SIZE; +# else +# error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined" +# endif + + /* Fill in the DTV slot so that a later LD/GD access will find it. */ + THREAD_DTV ()[map->l_tls_modid].pointer = dest; + + /* Initialize the memory. */ + memset (__mempcpy (dest, map->l_tls_initimage, map->l_tls_initimage_size), + '\0', map->l_tls_blocksize - map->l_tls_initimage_size); } #endif @@ -200,8 +256,8 @@ intended to produce. */ #define CHECK_STATIC_TLS(map, sym_map) \ do { \ - if (__builtin_expect ((sym_map)->l_tls_offset == 0, 0)) \ - allocate_static_tls (sym_map); \ + if (__builtin_expect ((sym_map)->l_tls_offset == NO_TLS_OFFSET, 0)) \ + _dl_allocate_static_tls (sym_map); \ } while (0) #include "dynamic-link.h" --- glibc-2.3.2/elf/dl-support.c 2003-01-30 12:31:18.000000000 -0500 +++ glibc-2.3.2/elf/dl-support.c 2003-08-21 08:36:59.000000000 -0400 @@ -98,6 +98,10 @@ hp_timing_t _dl_cpuclock_offset; #endif +#ifdef USE_TLS +void (*_dl_init_static_tls) (struct link_map *) = &_dl_nothread_init_static_tls; +#endif + /* This is zero at program start to signal that the global scope map is allocated by rtld. Later it keeps the size of the map. It might be reset if in _dl_close if the last global object is removed. */ @@ -121,12 +125,15 @@ int _dl_correct_cache_id = _DL_CACHE_DEFAULT_ID; -struct ElfW(Phdr) *_dl_phdr; +ElfW(Phdr) *_dl_phdr; size_t _dl_phnum; +unsigned long int _dl_hwcap __attribute__ ((nocommon)); #ifdef NEED_DL_SYSINFO /* Needed for improved syscall handling on at least x86/Linux. */ uintptr_t _dl_sysinfo = DL_SYSINFO_DEFAULT; +/* Address of the ELF headers in the vsyscall page. */ +const ElfW(Ehdr) *_dl_sysinfo_dso; #endif /* During the program run we must not modify the global data of @@ -146,6 +153,10 @@ internal_function _dl_aux_init (ElfW(auxv_t) *av) { + int seen = 0; + uid_t uid = 0; + gid_t gid = 0; + for (; av->a_type != AT_NULL; ++av) switch (av->a_type) { @@ -161,12 +172,41 @@ case AT_PHNUM: GL(dl_phnum) = av->a_un.a_val; break; + case AT_HWCAP: + GL(dl_hwcap) = av->a_un.a_val; + break; #ifdef NEED_DL_SYSINFO case AT_SYSINFO: GL(dl_sysinfo) = av->a_un.a_val; break; #endif + case AT_UID: + uid ^= av->a_un.a_val; + seen |= 1; + break; + case AT_EUID: + uid ^= av->a_un.a_val; + seen |= 2; + break; + case AT_GID: + gid ^= av->a_un.a_val; + seen |= 4; + break; + case AT_EGID: + gid ^= av->a_un.a_val; + seen |= 8; + break; + case AT_SECURE: + seen = -1; + __libc_enable_secure = av->a_un.a_val; + __libc_enable_secure_decided = 1; + break; } + if (seen == 0xf) + { + __libc_enable_secure = uid != 0 || gid != 0; + __libc_enable_secure_decided = 1; + } } #endif --- glibc-2.3.2/elf/dl-version.c 2002-03-11 03:31:59.000000000 -0500 +++ glibc-2.3.2/elf/dl-version.c 2003-08-21 08:36:59.000000000 -0400 @@ -1,5 +1,5 @@ /* Handle symbol and library versioning. - Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc. + Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -53,6 +53,7 @@ static inline struct link_map * +__attribute ((always_inline)) find_needed (const char *name, struct link_map *map) { struct link_map *tmap; --- glibc-2.3.2/elf/do-lookup.h 2002-04-13 03:32:17.000000000 -0400 +++ glibc-2.3.2/elf/do-lookup.h 2003-08-21 08:36:59.000000000 -0400 @@ -1,5 +1,5 @@ /* Look up a symbol in the loaded objects. - Copyright (C) 1995,96,97,98,99,2000,2001,2002 Free Software Foundation, Inc. + Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -28,7 +28,7 @@ /* Inner part of the lookup functions. We return a value > 0 if we found the symbol, the value 0 if nothing is found and < 0 if something bad happened. */ -static inline int +static int FCT (const char *undef_name, unsigned long int hash, const ElfW(Sym) *ref, struct sym_val *result, struct r_scope_elem *scope, size_t i, ARG, struct link_map *skip, int type_class) --- glibc-2.3.2/elf/dynamic-link.h 2003-01-30 12:35:50.000000000 -0500 +++ glibc-2.3.2/elf/dynamic-link.h 2003-08-21 08:36:59.000000000 -0400 @@ -21,20 +21,30 @@ #include #ifdef RESOLVE +/* We pass reloc_addr as a pointer to void, as opposed to a pointer to + ElfW(Addr), because not all architectures can assume that the + relocated address is properly aligned, whereas the compiler is + entitled to assume that a pointer to a type is properly aligned for + the type. Even if we cast the pointer back to some other type with + less strict alignment requirements, the compiler might still + remember that the pointer was originally more aligned, thereby + optimizing away alignment tests or using word instructions for + copying memory, breaking the very code written to handle the + unaligned cases. */ auto void __attribute__((always_inline)) elf_machine_rel (struct link_map *map, const ElfW(Rel) *reloc, const ElfW(Sym) *sym, const struct r_found_version *version, - ElfW(Addr) *const reloc_addr); + void *const reloc_addr); auto void __attribute__((always_inline)) elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc, const ElfW(Sym) *sym, const struct r_found_version *version, - ElfW(Addr) *const reloc_addr); + void *const reloc_addr); auto void __attribute__((always_inline)) elf_machine_rel_relative (ElfW(Addr) l_addr, const ElfW(Rel) *reloc, - ElfW(Addr) *const reloc_addr); + void *const reloc_addr); auto void __attribute__((always_inline)) elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc, - ElfW(Addr) *const reloc_addr); + void *const reloc_addr); # if ELF_MACHINE_NO_RELA || defined ELF_MACHINE_PLT_REL auto void __attribute__((always_inline)) elf_machine_lazy_rel (struct link_map *map, @@ -56,7 +66,7 @@ /* Read the dynamic section at DYN and fill in INFO with indices DT_*. */ static inline void __attribute__ ((unused, always_inline)) -elf_get_dynamic_info (struct link_map *l) +elf_get_dynamic_info (struct link_map *l, ElfW(Dyn) *temp) { ElfW(Dyn) *dyn = l->l_ld; ElfW(Dyn) **info; @@ -88,32 +98,45 @@ + DT_VERSIONTAGNUM + DT_EXTRANUM + DT_VALNUM] = dyn; ++dyn; } + +#define DL_RO_DYN_TEMP_CNT 8 + #ifndef DL_RO_DYN_SECTION /* Don't adjust .dynamic unnecessarily. */ if (l->l_addr != 0) { ElfW(Addr) l_addr = l->l_addr; + int cnt = 0; + +# define ADJUST_DYN_INFO(tag) \ + do \ + if (info[tag] != NULL) \ + { \ + if (temp) \ + { \ + temp[cnt].d_tag = info[tag]->d_tag; \ + temp[cnt].d_un.d_ptr = info[tag]->d_un.d_ptr + l_addr; \ + info[tag] = temp + cnt++; \ + } \ + else \ + info[tag]->d_un.d_ptr += l_addr; \ + } \ + while (0) - if (info[DT_HASH] != NULL) - info[DT_HASH]->d_un.d_ptr += l_addr; - if (info[DT_PLTGOT] != NULL) - info[DT_PLTGOT]->d_un.d_ptr += l_addr; - if (info[DT_STRTAB] != NULL) - info[DT_STRTAB]->d_un.d_ptr += l_addr; - if (info[DT_SYMTAB] != NULL) - info[DT_SYMTAB]->d_un.d_ptr += l_addr; + ADJUST_DYN_INFO (DT_HASH); + ADJUST_DYN_INFO (DT_PLTGOT); + ADJUST_DYN_INFO (DT_STRTAB); + ADJUST_DYN_INFO (DT_SYMTAB); # if ! ELF_MACHINE_NO_RELA - if (info[DT_RELA] != NULL) - info[DT_RELA]->d_un.d_ptr += l_addr; + ADJUST_DYN_INFO (DT_RELA); # endif # if ! ELF_MACHINE_NO_REL - if (info[DT_REL] != NULL) - info[DT_REL]->d_un.d_ptr += l_addr; + ADJUST_DYN_INFO (DT_REL); # endif - if (info[DT_JMPREL] != NULL) - info[DT_JMPREL]->d_un.d_ptr += l_addr; - if (info[VERSYMIDX (DT_VERSYM)] != NULL) - info[VERSYMIDX (DT_VERSYM)]->d_un.d_ptr += l_addr; + ADJUST_DYN_INFO (DT_JMPREL); + ADJUST_DYN_INFO (VERSYMIDX (DT_VERSYM)); +# undef ADJUST_DYN_INFO + assert (cnt <= DL_RO_DYN_TEMP_CNT); } #endif if (info[DT_PLTREL] != NULL) --- glibc-2.3.2/elf/elf.h 2003-02-25 18:40:08.000000000 -0500 +++ glibc-2.3.2/elf/elf.h 2003-08-21 08:36:59.000000000 -0400 @@ -1,5 +1,5 @@ /* This file defines standard ELF types, structures, and macros. - Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 1995-1999,2000,2001,2002,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -558,6 +558,7 @@ #define PT_NUM 8 /* Number of defined types */ #define PT_LOOS 0x60000000 /* Start of OS-specific */ #define PT_GNU_EH_FRAME 0x6474e550 /* GCC .eh_frame_hdr segment */ +#define PT_GNU_STACK 0x6474e551 /* Indicates stack executability */ #define PT_LOSUNW 0x6ffffffa #define PT_SUNWBSS 0x6ffffffa /* Sun Specific segment */ #define PT_SUNWSTACK 0x6ffffffb /* Stack segment */ @@ -944,11 +945,14 @@ /* A special ignored value for PPC, used by the kernel to control the interpretation of the AUXV. Must be > 16. */ -#define AT_IGNOREPPC 22 /* Entry should be ignored */ +#define AT_IGNOREPPC 22 /* Entry should be ignored. */ + +#define AT_SECURE 23 /* Boolean, was exec setuid-like? */ /* Pointer to the global system page used for system calls and other nice things. */ #define AT_SYSINFO 32 +#define AT_SYSINFO_EHDR 33 /* Note section contents. Each entry in the note section begins with @@ -1881,122 +1885,39 @@ #define R_PPC_SECTOFF_LO 34 #define R_PPC_SECTOFF_HI 35 #define R_PPC_SECTOFF_HA 36 -/* Keep this the last entry. */ -#define R_PPC_NUM 37 -/* PowerPC64 relocations defined by the ABIs */ -#define R_PPC64_NONE R_PPC_NONE -#define R_PPC64_ADDR32 R_PPC_ADDR32 /* 32bit absolute address. */ -#define R_PPC64_ADDR24 R_PPC_ADDR24 /* 26bit address, word aligned. */ -#define R_PPC64_ADDR16 R_PPC_ADDR16 /* 16bit absolute address. */ -#define R_PPC64_ADDR16_LO R_PPC_ADDR16_LO /* lower 16bits of abs. address. */ -#define R_PPC64_ADDR16_HI R_PPC_ADDR16_HI /* high 16bits of abs. address. */ -#define R_PPC64_ADDR16_HA R_PPC_ADDR16_HA /* adjusted high 16bits. */ -#define R_PPC64_ADDR14 R_PPC_ADDR14 /* 16bit address, word aligned. */ -#define R_PPC64_ADDR14_BRTAKEN R_PPC_ADDR14_BRTAKEN -#define R_PPC64_ADDR14_BRNTAKEN R_PPC_ADDR14_BRNTAKEN -#define R_PPC64_REL24 R_PPC_REL24 /* PC relative 26 bit, word aligned. */ -#define R_PPC64_REL14 R_PPC_REL14 /* PC relative 16 bit. */ -#define R_PPC64_REL14_BRTAKEN R_PPC_REL14_BRTAKEN -#define R_PPC64_REL14_BRNTAKEN R_PPC_REL14_BRNTAKEN -#define R_PPC64_GOT16 R_PPC_GOT16 -#define R_PPC64_GOT16_LO R_PPC_GOT16_LO -#define R_PPC64_GOT16_HI R_PPC_GOT16_HI -#define R_PPC64_GOT16_HA R_PPC_GOT16_HA - -#define R_PPC64_COPY R_PPC_COPY -#define R_PPC64_GLOB_DAT R_PPC_GLOB_DAT -#define R_PPC64_JMP_SLOT R_PPC_JMP_SLOT -#define R_PPC64_RELATIVE R_PPC_RELATIVE - -#define R_PPC64_UADDR32 R_PPC_UADDR32 -#define R_PPC64_UADDR16 R_PPC_UADDR16 -#define R_PPC64_REL32 R_PPC_REL32 -#define R_PPC64_PLT32 R_PPC_PLT32 -#define R_PPC64_PLTREL32 R_PPC_PLTREL32 -#define R_PPC64_PLT16_LO R_PPC_PLT16_LO -#define R_PPC64_PLT16_HI R_PPC_PLT16_HI -#define R_PPC64_PLT16_HA R_PPC_PLT16_HA - -#define R_PPC64_SECTOFF R_PPC_SECTOFF -#define R_PPC64_SECTOFF_LO R_PPC_SECTOFF_LO -#define R_PPC64_SECTOFF_HI R_PPC_SECTOFF_HI -#define R_PPC64_SECTOFF_HA R_PPC_SECTOFF_HA -#define R_PPC64_ADDR30 37 /* word30 (S + A - P) >> 2. */ -#define R_PPC64_ADDR64 38 /* doubleword64 S + A. */ -#define R_PPC64_ADDR16_HIGHER 39 /* half16 #higher(S + A). */ -#define R_PPC64_ADDR16_HIGHERA 40 /* half16 #highera(S + A). */ -#define R_PPC64_ADDR16_HIGHEST 41 /* half16 #highest(S + A). */ -#define R_PPC64_ADDR16_HIGHESTA 42 /* half16 #highesta(S + A). */ -#define R_PPC64_UADDR64 43 /* doubleword64 S + A. */ -#define R_PPC64_REL64 44 /* doubleword64 S + A - P. */ -#define R_PPC64_PLT64 45 /* doubleword64 L + A. */ -#define R_PPC64_PLTREL64 46 /* doubleword64 L + A - P. */ -#define R_PPC64_TOC16 47 /* half16* S + A - .TOC. */ -#define R_PPC64_TOC16_LO 48 /* half16 #lo(S + A - .TOC.). */ -#define R_PPC64_TOC16_HI 49 /* half16 #hi(S + A - .TOC.). */ -#define R_PPC64_TOC16_HA 50 /* half16 #ha(S + A - .TOC.). */ -#define R_PPC64_TOC 51 /* doubleword64 .TOC. */ -#define R_PPC64_PLTGOT16 52 /* half16* M + A. */ -#define R_PPC64_PLTGOT16_LO 53 /* half16 #lo(M + A). */ -#define R_PPC64_PLTGOT16_HI 54 /* half16 #hi(M + A). */ -#define R_PPC64_PLTGOT16_HA 55 /* half16 #ha(M + A). */ - -#define R_PPC64_ADDR16_DS 56 /* half16ds* (S + A) >> 2. */ -#define R_PPC64_ADDR16_LO_DS 57 /* half16ds #lo(S + A) >> 2. */ -#define R_PPC64_GOT16_DS 58 /* half16ds* (G + A) >> 2. */ -#define R_PPC64_GOT16_LO_DS 59 /* half16ds #lo(G + A) >> 2. */ -#define R_PPC64_PLT16_LO_DS 60 /* half16ds #lo(L + A) >> 2. */ -#define R_PPC64_SECTOFF_DS 61 /* half16ds* (R + A) >> 2. */ -#define R_PPC64_SECTOFF_LO_DS 62 /* half16ds #lo(R + A) >> 2. */ -#define R_PPC64_TOC16_DS 63 /* half16ds* (S + A - .TOC.) >> 2. */ -#define R_PPC64_TOC16_LO_DS 64 /* half16ds #lo(S + A - .TOC.) >> 2. */ -#define R_PPC64_PLTGOT16_DS 65 /* half16ds* (M + A) >> 2. */ -#define R_PPC64_PLTGOT16_LO_DS 66 /* half16ds #lo(M + A) >> 2. */ +/* PowerPC relocations defined for the TLS access ABI. */ +#define R_PPC_TLS 67 /* none (sym+add)@tls */ +#define R_PPC_DTPMOD32 68 /* word32 (sym+add)@dtpmod */ +#define R_PPC_TPREL16 69 /* half16* (sym+add)@tprel */ +#define R_PPC_TPREL16_LO 70 /* half16 (sym+add)@tprel@l */ +#define R_PPC_TPREL16_HI 71 /* half16 (sym+add)@tprel@h */ +#define R_PPC_TPREL16_HA 72 /* half16 (sym+add)@tprel@ha */ +#define R_PPC_TPREL32 73 /* word32 (sym+add)@tprel */ +#define R_PPC_DTPREL16 74 /* half16* (sym+add)@dtprel */ +#define R_PPC_DTPREL16_LO 75 /* half16 (sym+add)@dtprel@l */ +#define R_PPC_DTPREL16_HI 76 /* half16 (sym+add)@dtprel@h */ +#define R_PPC_DTPREL16_HA 77 /* half16 (sym+add)@dtprel@ha */ +#define R_PPC_DTPREL32 78 /* word32 (sym+add)@dtprel */ +#define R_PPC_GOT_TLSGD16 79 /* half16* (sym+add)@got@tlsgd */ +#define R_PPC_GOT_TLSGD16_LO 80 /* half16 (sym+add)@got@tlsgd@l */ +#define R_PPC_GOT_TLSGD16_HI 81 /* half16 (sym+add)@got@tlsgd@h */ +#define R_PPC_GOT_TLSGD16_HA 82 /* half16 (sym+add)@got@tlsgd@ha */ +#define R_PPC_GOT_TLSLD16 83 /* half16* (sym+add)@got@tlsld */ +#define R_PPC_GOT_TLSLD16_LO 84 /* half16 (sym+add)@got@tlsld@l */ +#define R_PPC_GOT_TLSLD16_HI 85 /* half16 (sym+add)@got@tlsld@h */ +#define R_PPC_GOT_TLSLD16_HA 86 /* half16 (sym+add)@got@tlsld@ha */ +#define R_PPC_GOT_TPREL16 87 /* half16* (sym+add)@got@tprel */ +#define R_PPC_GOT_TPREL16_LO 88 /* half16 (sym+add)@got@tprel@l */ +#define R_PPC_GOT_TPREL16_HI 89 /* half16 (sym+add)@got@tprel@h */ +#define R_PPC_GOT_TPREL16_HA 90 /* half16 (sym+add)@got@tprel@ha */ +#define R_PPC_GOT_DTPREL16 91 /* half16* (sym+add)@got@dtprel */ +#define R_PPC_GOT_DTPREL16_LO 92 /* half16* (sym+add)@got@dtprel@l */ +#define R_PPC_GOT_DTPREL16_HI 93 /* half16* (sym+add)@got@dtprel@h */ +#define R_PPC_GOT_DTPREL16_HA 94 /* half16* (sym+add)@got@dtprel@ha */ -/* PowerPC64 relocations defined for the TLS access ABI. */ -#define R_PPC64_TLS 67 /* none (sym+add)@tls. */ -#define R_PPC64_DTPMOD64 68 /* doubleword64 (sym+add)@dtpmod. */ -#define R_PPC64_TPREL16 69 /* half16* (sym+add)@tprel. */ -#define R_PPC64_TPREL16_LO 60 /* half16 (sym+add)@tprel@l. */ -#define R_PPC64_TPREL16_HI 71 /* half16 (sym+add)@tprel@h. */ -#define R_PPC64_TPREL16_HA 72 /* half16 (sym+add)@tprel@ha. */ -#define R_PPC64_TPREL64 73 /* doubleword64 (sym+add)@tprel. */ -#define R_PPC64_DTPREL16 74 /* half16* (sym+add)@dtprel. */ -#define R_PPC64_DTPREL16_LO 75 /* half16 (sym+add)@dtprel@l. */ -#define R_PPC64_DTPREL16_HI 76 /* half16 (sym+add)@dtprel@h. */ -#define R_PPC64_DTPREL16_HA 77 /* half16 (sym+add)@dtprel@ha. */ -#define R_PPC64_DTPREL64 78 /* doubleword64 (sym+add)@dtprel. */ -#define R_PPC64_GOT_TLSGD16 79 /* half16* (sym+add)@got@tlsgd. */ -#define R_PPC64_GOT_TLSGD16_LO 80 /* half16 (sym+add)@got@tlsgd@l. */ -#define R_PPC64_GOT_TLSGD16_HI 81 /* half16 (sym+add)@got@tlsgd@h. */ -#define R_PPC64_GOT_TLSGD16_HA 82 /* half16 (sym+add)@got@tlsgd@ha. */ -#define R_PPC64_GOT_TLSLD16 83 /* half16* (sym+add)@got@tlsld. */ -#define R_PPC64_GOT_TLSLD16_LO 84 /* half16 (sym+add)@got@tlsld@l. */ -#define R_PPC64_GOT_TLSLD16_HI 85 /* half16 (sym+add)@got@tlsld@h. */ -#define R_PPC64_GOT_TLSLD16_HA 86 /* half16 (sym+add)@got@tlsld@ha. */ -#define R_PPC64_GOT_TPREL16_DS 87 /* half16ds* (sym+add)@got@tprel. */ -#define R_PPC64_GOT_TPREL16_LO_DS 88 /* half16ds (sym+add)@got@tprel@l. */ -#define R_PPC64_GOT_TPREL16_HI 89 /* half16 (sym+add)@got@tprel@h. */ -#define R_PPC64_GOT_TPREL16_HA 90 /* half16 (sym+add)@got@tprel@ha. */ -#define R_PPC64_GOT_DTPREL16_DS 91 /* half16ds* (sym+add)@got@dtprel. */ -#define R_PPC64_GOT_DTPREL16_LO_DS 92 /* half16ds (sym+add)@got@dtprel@l. */ -#define R_PPC64_GOT_DTPREL16_HI 93 /* half16 (sym+add)@got@dtprel@h. */ -#define R_PPC64_GOT_DTPREL16_HA 94 /* half16 (sym+add)@got@dtprel@ha. */ -#define R_PPC64_TPREL16_DS 95 /* half16ds* (sym+add)@tprel. */ -#define R_PPC64_TPREL16_LO_DS 96 /* half16ds (sym+add)@tprel@l. */ -#define R_PPC64_TPREL16_HIGHER 97 /* half16 (sym+add)@tprel@higher. */ -#define R_PPC64_TPREL16_HIGHERA 98 /* half16 (sym+add)@tprel@highera. */ -#define R_PPC64_TPREL16_HIGHEST 99 /* half16 (sym+add)@tprel@highest. */ -#define R_PPC64_TPREL16_HIGHESTA 100 /* half16 (sym+add)@tprel@highesta. */ -#define R_PPC64_DTPREL16_DS 101 /* half16ds* (sym+add)@dtprel. */ -#define R_PPC64_DTPREL16_LO_DS 102 /* half16ds (sym+add)@dtprel@l. */ -#define R_PPC64_DTPREL16_HIGHER 103 /* half16 (sym+add)@dtprel@higher. */ -#define R_PPC64_DTPREL16_HIGHERA 104 /* half16 (sym+add)@dtprel@highera. */ -#define R_PPC64_DTPREL16_HIGHEST 105 /* half16 (sym+add)@dtprel@highest. */ -#define R_PPC64_DTPREL16_HIGHESTA 106 /* half16 (sym+add)@dtprel@highesta. */ /* Keep this the last entry. */ -#define R_PPC64_NUM 107 +#define R_PPC_NUM 95 /* The remaining relocs are from the Embedded ELF ABI, and are not in the SVR4 ELF ABI. */ @@ -2029,10 +1950,127 @@ that may still be in object files. */ #define R_PPC_TOC16 255 + +/* PowerPC64 relocations defined by the ABIs */ +#define R_PPC64_NONE R_PPC_NONE +#define R_PPC64_ADDR32 R_PPC_ADDR32 /* 32bit absolute address */ +#define R_PPC64_ADDR24 R_PPC_ADDR24 /* 26bit address, word aligned */ +#define R_PPC64_ADDR16 R_PPC_ADDR16 /* 16bit absolute address */ +#define R_PPC64_ADDR16_LO R_PPC_ADDR16_LO /* lower 16bits of address */ +#define R_PPC64_ADDR16_HI R_PPC_ADDR16_HI /* high 16bits of address. */ +#define R_PPC64_ADDR16_HA R_PPC_ADDR16_HA /* adjusted high 16bits. */ +#define R_PPC64_ADDR14 R_PPC_ADDR14 /* 16bit address, word aligned */ +#define R_PPC64_ADDR14_BRTAKEN R_PPC_ADDR14_BRTAKEN +#define R_PPC64_ADDR14_BRNTAKEN R_PPC_ADDR14_BRNTAKEN +#define R_PPC64_REL24 R_PPC_REL24 /* PC-rel. 26 bit, word aligned */ +#define R_PPC64_REL14 R_PPC_REL14 /* PC relative 16 bit */ +#define R_PPC64_REL14_BRTAKEN R_PPC_REL14_BRTAKEN +#define R_PPC64_REL14_BRNTAKEN R_PPC_REL14_BRNTAKEN +#define R_PPC64_GOT16 R_PPC_GOT16 +#define R_PPC64_GOT16_LO R_PPC_GOT16_LO +#define R_PPC64_GOT16_HI R_PPC_GOT16_HI +#define R_PPC64_GOT16_HA R_PPC_GOT16_HA + +#define R_PPC64_COPY R_PPC_COPY +#define R_PPC64_GLOB_DAT R_PPC_GLOB_DAT +#define R_PPC64_JMP_SLOT R_PPC_JMP_SLOT +#define R_PPC64_RELATIVE R_PPC_RELATIVE + +#define R_PPC64_UADDR32 R_PPC_UADDR32 +#define R_PPC64_UADDR16 R_PPC_UADDR16 +#define R_PPC64_REL32 R_PPC_REL32 +#define R_PPC64_PLT32 R_PPC_PLT32 +#define R_PPC64_PLTREL32 R_PPC_PLTREL32 +#define R_PPC64_PLT16_LO R_PPC_PLT16_LO +#define R_PPC64_PLT16_HI R_PPC_PLT16_HI +#define R_PPC64_PLT16_HA R_PPC_PLT16_HA + +#define R_PPC64_SECTOFF R_PPC_SECTOFF +#define R_PPC64_SECTOFF_LO R_PPC_SECTOFF_LO +#define R_PPC64_SECTOFF_HI R_PPC_SECTOFF_HI +#define R_PPC64_SECTOFF_HA R_PPC_SECTOFF_HA +#define R_PPC64_ADDR30 37 /* word30 (S + A - P) >> 2 */ +#define R_PPC64_ADDR64 38 /* doubleword64 S + A */ +#define R_PPC64_ADDR16_HIGHER 39 /* half16 #higher(S + A) */ +#define R_PPC64_ADDR16_HIGHERA 40 /* half16 #highera(S + A) */ +#define R_PPC64_ADDR16_HIGHEST 41 /* half16 #highest(S + A) */ +#define R_PPC64_ADDR16_HIGHESTA 42 /* half16 #highesta(S + A) */ +#define R_PPC64_UADDR64 43 /* doubleword64 S + A */ +#define R_PPC64_REL64 44 /* doubleword64 S + A - P */ +#define R_PPC64_PLT64 45 /* doubleword64 L + A */ +#define R_PPC64_PLTREL64 46 /* doubleword64 L + A - P */ +#define R_PPC64_TOC16 47 /* half16* S + A - .TOC */ +#define R_PPC64_TOC16_LO 48 /* half16 #lo(S + A - .TOC.) */ +#define R_PPC64_TOC16_HI 49 /* half16 #hi(S + A - .TOC.) */ +#define R_PPC64_TOC16_HA 50 /* half16 #ha(S + A - .TOC.) */ +#define R_PPC64_TOC 51 /* doubleword64 .TOC */ +#define R_PPC64_PLTGOT16 52 /* half16* M + A */ +#define R_PPC64_PLTGOT16_LO 53 /* half16 #lo(M + A) */ +#define R_PPC64_PLTGOT16_HI 54 /* half16 #hi(M + A) */ +#define R_PPC64_PLTGOT16_HA 55 /* half16 #ha(M + A) */ + +#define R_PPC64_ADDR16_DS 56 /* half16ds* (S + A) >> 2 */ +#define R_PPC64_ADDR16_LO_DS 57 /* half16ds #lo(S + A) >> 2 */ +#define R_PPC64_GOT16_DS 58 /* half16ds* (G + A) >> 2 */ +#define R_PPC64_GOT16_LO_DS 59 /* half16ds #lo(G + A) >> 2 */ +#define R_PPC64_PLT16_LO_DS 60 /* half16ds #lo(L + A) >> 2 */ +#define R_PPC64_SECTOFF_DS 61 /* half16ds* (R + A) >> 2 */ +#define R_PPC64_SECTOFF_LO_DS 62 /* half16ds #lo(R + A) >> 2 */ +#define R_PPC64_TOC16_DS 63 /* half16ds* (S + A - .TOC.) >> 2 */ +#define R_PPC64_TOC16_LO_DS 64 /* half16ds #lo(S + A - .TOC.) >> 2 */ +#define R_PPC64_PLTGOT16_DS 65 /* half16ds* (M + A) >> 2 */ +#define R_PPC64_PLTGOT16_LO_DS 66 /* half16ds #lo(M + A) >> 2 */ + +/* PowerPC64 relocations defined for the TLS access ABI. */ +#define R_PPC64_TLS 67 /* none (sym+add)@tls */ +#define R_PPC64_DTPMOD64 68 /* doubleword64 (sym+add)@dtpmod */ +#define R_PPC64_TPREL16 69 /* half16* (sym+add)@tprel */ +#define R_PPC64_TPREL16_LO 70 /* half16 (sym+add)@tprel@l */ +#define R_PPC64_TPREL16_HI 71 /* half16 (sym+add)@tprel@h */ +#define R_PPC64_TPREL16_HA 72 /* half16 (sym+add)@tprel@ha */ +#define R_PPC64_TPREL64 73 /* doubleword64 (sym+add)@tprel */ +#define R_PPC64_DTPREL16 74 /* half16* (sym+add)@dtprel */ +#define R_PPC64_DTPREL16_LO 75 /* half16 (sym+add)@dtprel@l */ +#define R_PPC64_DTPREL16_HI 76 /* half16 (sym+add)@dtprel@h */ +#define R_PPC64_DTPREL16_HA 77 /* half16 (sym+add)@dtprel@ha */ +#define R_PPC64_DTPREL64 78 /* doubleword64 (sym+add)@dtprel */ +#define R_PPC64_GOT_TLSGD16 79 /* half16* (sym+add)@got@tlsgd */ +#define R_PPC64_GOT_TLSGD16_LO 80 /* half16 (sym+add)@got@tlsgd@l */ +#define R_PPC64_GOT_TLSGD16_HI 81 /* half16 (sym+add)@got@tlsgd@h */ +#define R_PPC64_GOT_TLSGD16_HA 82 /* half16 (sym+add)@got@tlsgd@ha */ +#define R_PPC64_GOT_TLSLD16 83 /* half16* (sym+add)@got@tlsld */ +#define R_PPC64_GOT_TLSLD16_LO 84 /* half16 (sym+add)@got@tlsld@l */ +#define R_PPC64_GOT_TLSLD16_HI 85 /* half16 (sym+add)@got@tlsld@h */ +#define R_PPC64_GOT_TLSLD16_HA 86 /* half16 (sym+add)@got@tlsld@ha */ +#define R_PPC64_GOT_TPREL16_DS 87 /* half16ds* (sym+add)@got@tprel */ +#define R_PPC64_GOT_TPREL16_LO_DS 88 /* half16ds (sym+add)@got@tprel@l */ +#define R_PPC64_GOT_TPREL16_HI 89 /* half16 (sym+add)@got@tprel@h */ +#define R_PPC64_GOT_TPREL16_HA 90 /* half16 (sym+add)@got@tprel@ha */ +#define R_PPC64_GOT_DTPREL16_DS 91 /* half16ds* (sym+add)@got@dtprel */ +#define R_PPC64_GOT_DTPREL16_LO_DS 92 /* half16ds (sym+add)@got@dtprel@l */ +#define R_PPC64_GOT_DTPREL16_HI 93 /* half16 (sym+add)@got@dtprel@h */ +#define R_PPC64_GOT_DTPREL16_HA 94 /* half16 (sym+add)@got@dtprel@ha */ +#define R_PPC64_TPREL16_DS 95 /* half16ds* (sym+add)@tprel */ +#define R_PPC64_TPREL16_LO_DS 96 /* half16ds (sym+add)@tprel@l */ +#define R_PPC64_TPREL16_HIGHER 97 /* half16 (sym+add)@tprel@higher */ +#define R_PPC64_TPREL16_HIGHERA 98 /* half16 (sym+add)@tprel@highera */ +#define R_PPC64_TPREL16_HIGHEST 99 /* half16 (sym+add)@tprel@highest */ +#define R_PPC64_TPREL16_HIGHESTA 100 /* half16 (sym+add)@tprel@highesta */ +#define R_PPC64_DTPREL16_DS 101 /* half16ds* (sym+add)@dtprel */ +#define R_PPC64_DTPREL16_LO_DS 102 /* half16ds (sym+add)@dtprel@l */ +#define R_PPC64_DTPREL16_HIGHER 103 /* half16 (sym+add)@dtprel@higher */ +#define R_PPC64_DTPREL16_HIGHERA 104 /* half16 (sym+add)@dtprel@highera */ +#define R_PPC64_DTPREL16_HIGHEST 105 /* half16 (sym+add)@dtprel@highest */ +#define R_PPC64_DTPREL16_HIGHESTA 106 /* half16 (sym+add)@dtprel@highesta */ + +/* Keep this the last entry. */ +#define R_PPC64_NUM 107 + /* PowerPC64 specific values for the Dyn d_tag field. */ #define DT_PPC64_GLINK (DT_LOPROC + 0) #define DT_PPC64_NUM 1 + /* ARM specific declarations */ /* Processor specific flags for the ELF header e_flags field. */ --- glibc-2.3.2/elf/ldconfig.c 2003-01-13 03:50:11.000000000 -0500 +++ glibc-2.3.2/elf/ldconfig.c 2003-09-19 22:37:01.000000000 -0400 @@ -132,6 +132,9 @@ { NULL, 0, NULL, 0, NULL, 0 } }; +#define PROCINFO_CLASS static +#include + /* Short description of program. */ static const char doc[] = N_("Configure Dynamic Linker Run Time Bindings."); @@ -342,13 +345,15 @@ entry->flag = FLAG_ANY; } - /* Canonify path: for now only remove trailing slashes. */ + /* Canonify path: for now only remove leading and trailing + whitespace and the trailing slashes slashes. */ i = strlen (entry->path) - 1; + + while (isspace (entry->path[i]) && i > 0) + entry->path[i--] = '\0'; + while (entry->path[i] == '/' && i > 0) - { - entry->path[i] = '\0'; - --i; - } + entry->path[i--] = '\0'; if (stat64 (entry->path, &stat_buf)) { @@ -782,10 +787,27 @@ continue; } + + /* A link may just point to itself. */ + if (is_link) + { + /* If the path the link points to isn't its soname and it is not + .so symlink for ld(1) only, we treat it as a normal file. */ + const char *real_base_name = basename (real_file_name); + + if (strcmp (real_base_name, soname) != 0) + { + len = strlen (real_base_name); + if (len < strlen (".so") + || strcmp (real_base_name + len - strlen (".so"), ".so") != 0 + || strncmp (real_base_name, soname, len) != 0) + is_link = 0; + } + } + if (real_name != real_file_name) free (real_name); - /* Links will just point to itself. */ if (is_link) { free (soname); @@ -963,12 +985,18 @@ make it terminating the line. */ *strchrnul (line, '#') = '\0'; + /* Remove leading whitespace. NUL is no whitespace character. */ + char *cp = line; + while (isspace (*cp)) + ++cp; + /* If the line is blank it is ignored. */ - if (line[0] == '\0') + if (cp[0] == '\0') continue; - add_dir (line); - } while (!feof (file)); + add_dir (cp); + } + while (!feof_unlocked (file)); /* Free buffer and close file. */ free (line); @@ -994,13 +1022,18 @@ /* Parse and process arguments. */ argp_parse (&argp, argc, argv, 0, &remaining, NULL); - /* Remaining arguments are additional libraries if opt_manual_link + /* Remaining arguments are additional directories if opt_manual_link is not set. */ if (remaining != argc && !opt_manual_link) { int i; for (i = remaining; i < argc; ++i) - add_dir (argv[i]); + if (opt_build_cache && argv[i][0] != '/') + error (EXIT_FAILURE, 0, + _("relative path `%s' used to build cache"), + argv[i]); + else + add_dir (argv[i]); } set_hwcap (); @@ -1094,12 +1127,12 @@ if (!opt_only_cline) { + parse_conf (config_file); + /* Always add the standard search paths. */ - add_dir (SLIBDIR); + add_system_dir (SLIBDIR); if (strcmp (SLIBDIR, LIBDIR)) - add_dir (LIBDIR); - - parse_conf (config_file); + add_system_dir (LIBDIR); } search_dirs (); --- glibc-2.3.2/elf/link.h 2001-07-25 16:37:46.000000000 -0400 +++ glibc-2.3.2/elf/link.h 2003-09-19 22:37:01.000000000 -0400 @@ -106,7 +106,7 @@ extern int dl_iterate_phdr (int (*callback) (struct dl_phdr_info *info, size_t size, void *data), - void *data) __THROW; + void *data); __END_DECLS --- glibc-2.3.2/elf/readlib.c 2002-09-05 14:56:48.000000000 -0400 +++ glibc-2.3.2/elf/readlib.c 2003-08-21 08:36:59.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Jaeger , 1999 and Jakub Jelinek , 1999. @@ -23,17 +23,16 @@ development version. Besides the simplification, it has also been modified to read some other file formats. */ - +#include #include #include -#include #include +#include #include #include #include -#include - #include +#include #include #include @@ -147,22 +146,21 @@ elf_header = (ElfW(Ehdr) *) file_contents; if (memcmp (elf_header->e_ident, ELFMAG, SELFMAG) != 0) { - /* The file is neither ELF nor aout. Check if it's a linker script, - like libc.so - otherwise complain. */ - int len = statbuf.st_size; - /* Only search the beginning of the file. */ - if (len > 512) - len = 512; + /* The file is neither ELF nor aout. Check if it's a linker + script, like libc.so - otherwise complain. Only search the + beginning of the file. */ + size_t len = MIN (statbuf.st_size, 512); if (memmem (file_contents, len, "GROUP", 5) == NULL && memmem (file_contents, len, "GNU ld script", 13) == NULL) error (0, 0, _("%s is not an ELF file - it has the wrong magic bytes at the start.\n"), file_name); ret = 1; - goto done; } - - if (process_elf_file (file_name, lib, flag, osversion, soname, - file_contents, statbuf.st_size)) + /* Libraries have to be shared object files. */ + else if (elf_header->e_type != ET_DYN) + ret = 1; + else if (process_elf_file (file_name, lib, flag, osversion, soname, + file_contents, statbuf.st_size)) ret = 1; done: --- glibc-2.3.2/elf/rtld-Rules 2002-10-14 00:03:13.000000000 -0400 +++ glibc-2.3.2/elf/rtld-Rules 2003-08-21 08:36:59.000000000 -0400 @@ -1,6 +1,6 @@ # Subroutine makefile for compiling libc modules linked into dynamic linker. -# Copyright (C) 2002 Free Software Foundation, Inc. +# Copyright (C) 2002, 2003 Free Software Foundation, Inc. # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or @@ -31,7 +31,7 @@ ifeq ($(subdir),elf) ifndef rtld-subdirs -error This is makefile is a subroutine of elf/Makefile not to be used directly +error This makefile is a subroutine of elf/Makefile not to be used directly endif include ../Makeconfig @@ -81,19 +81,13 @@ # The sysd-rules generated makefile already defines pattern rules for rtld-% # targets built from sysdeps source files. $(objpfx)rtld-%.os: %.S $(before-compile); $(compile-command.S) -$(objpfx)rtld-%.d: %.S $(before-compile); $(+make-deps) $(objpfx)rtld-%.os: %.s $(before-compile); $(compile-command.s) -$(objpfx)rtld-%.d: %.s $(before-compile); $(+make-deps) $(objpfx)rtld-%.os: %.c $(before-compile); $(compile-command.c) -$(objpfx)rtld-%.d: %.c $(before-compile); $(+make-deps) # The rules for generated source files. $(objpfx)rtld-%.os: $(objpfx)%.S $(before-compile); $(compile-command.S) -$(objpfx)rtld-%.d: $(objpfx)%.S $(before-compile); $(+make-deps) $(objpfx)rtld-%.os: $(objpfx)%.s $(before-compile); $(compile-command.s) -$(objpfx)rtld-%.d: $(objpfx)%.s $(before-compile); $(+make-deps) $(objpfx)rtld-%.os: $(objpfx)%.c $(before-compile); $(compile-command.c) -$(objpfx)rtld-%.d: $(objpfx)%.c $(before-compile); $(+make-deps) # The command line setting of rtld-modules (see above) tells us # what we need to build, and that tells us what dependency files we need. @@ -101,9 +95,12 @@ # Figure out the dependency files we need. After respecting the $(omit-deps) # list as applied to the names without the `rtld-', there may be none left. -rtld-depfiles := $(patsubst %,$(objpfx)rtld-%.d,\ +rtld-depfiles := $(patsubst %,$(objpfx)rtld-%.os.d,\ $(filter-out $(omit-deps),\ $(rtld-modules:rtld-%.os=%))) +rtld-depfiles := $(strip $(wildcard $(rtld-depfiles)) \ + $(patsubst %.dt,%.d,\ + $(wildcard $(rtld-depfiles:.d=.dt)))) ifdef rtld-depfiles -include $(rtld-depfiles) endif --- glibc-2.3.2/elf/rtld.c 2003-01-07 13:47:35.000000000 -0500 +++ glibc-2.3.2/elf/rtld.c 2003-08-21 08:36:59.000000000 -0400 @@ -227,12 +227,16 @@ assert (info->l.l_tls_modid != 0); GL(dl_rtld_map).l_tls_blocksize = info->l.l_tls_blocksize; GL(dl_rtld_map).l_tls_align = info->l.l_tls_align; + GL(dl_rtld_map).l_tls_firstbyte_offset = info->l.l_tls_firstbyte_offset; GL(dl_rtld_map).l_tls_initimage_size = info->l.l_tls_initimage_size; GL(dl_rtld_map).l_tls_initimage = info->l.l_tls_initimage; GL(dl_rtld_map).l_tls_offset = info->l.l_tls_offset; GL(dl_rtld_map).l_tls_modid = 1; # else assert (info->l.l_tls_modid == 0); +# if NO_TLS_OFFSET != 0 + GL(dl_rtld_map).l_tls_offset = NO_TLS_OFFSET; +# endif # endif #endif @@ -314,7 +318,11 @@ /* Read our own dynamic section and fill in the info array. */ bootstrap_map.l_ld = (void *) bootstrap_map.l_addr + elf_machine_dynamic (); - elf_get_dynamic_info (&bootstrap_map); + elf_get_dynamic_info (&bootstrap_map, NULL); + +#if defined USE_TLS && NO_TLS_OFFSET != 0 + bootstrap_map.l_tls_offset = NO_TLS_OFFSET; +#endif #if USE___THREAD /* Get the dynamic linker's own program header. First we need the ELF @@ -340,6 +348,11 @@ bootstrap_map.l_tls_blocksize = phdr[cnt].p_memsz; bootstrap_map.l_tls_align = phdr[cnt].p_align; + if (phdr[cnt].p_align == 0) + bootstrap_map.l_tls_firstbyte_offset = 0; + else + bootstrap_map.l_tls_firstbyte_offset = (phdr[cnt].p_vaddr + & (phdr[cnt].p_align - 1)); assert (bootstrap_map.l_tls_blocksize != 0); bootstrap_map.l_tls_initimage_size = phdr[cnt].p_filesz; bootstrap_map.l_tls_initimage = (void *) (bootstrap_map.l_addr @@ -575,6 +588,20 @@ } #endif +#if defined SHARED && defined _LIBC_REENTRANT \ + && defined __rtld_lock_default_lock_recursive +static void rtld_lock_default_lock_recursive (void *lock) +{ + __rtld_lock_default_lock_recursive (lock); +} + +static void rtld_lock_default_unlock_recursive (void *lock) +{ + __rtld_lock_default_unlock_recursive (lock); +} +#endif + + static const char *library_path; /* The library search path. */ static const char *preloadlist; /* The list preloaded objects. */ static int version_info; /* Nonzero if information about @@ -609,6 +636,16 @@ GL(dl_error_catch_tsd) = &_dl_initial_error_catch_tsd; #endif +#ifdef USE_TLS + GL(dl_init_static_tls) = &_dl_nothread_init_static_tls; +#endif + +#if defined SHARED && defined _LIBC_REENTRANT \ + && defined __rtld_lock_default_lock_recursive + GL(dl_rtld_lock_recursive) = rtld_lock_default_lock_recursive; + GL(dl_rtld_unlock_recursive) = rtld_lock_default_unlock_recursive; +#endif + /* Process the environment variable which control the behaviour. */ process_envvars (&mode); @@ -853,6 +890,11 @@ check for this special but unimportant case. */ GL(dl_loaded)->l_tls_blocksize = ph->p_memsz; GL(dl_loaded)->l_tls_align = ph->p_align; + if (ph->p_align == 0) + GL(dl_loaded)->l_tls_firstbyte_offset = 0; + else + GL(dl_loaded)->l_tls_firstbyte_offset = (ph->p_vaddr + & (ph->p_align - 1)); GL(dl_loaded)->l_tls_initimage_size = ph->p_filesz; GL(dl_loaded)->l_tls_initimage = (void *) ph->p_vaddr; @@ -885,7 +927,7 @@ if (! rtld_is_main) { /* Extract the contents of the dynamic section for easy access. */ - elf_get_dynamic_info (GL(dl_loaded)); + elf_get_dynamic_info (GL(dl_loaded), NULL); if (GL(dl_loaded)->l_info[DT_HASH]) /* Set up our cache of pointers into the hash table. */ _dl_setup_hash (GL(dl_loaded)); @@ -924,6 +966,13 @@ GL(dl_rtld_map).l_prev = GL(dl_loaded); ++GL(dl_nloaded); + /* Set up the program header information for the dynamic linker + itself. It is needed in the dl_iterate_phdr() callbacks. */ + ElfW(Ehdr) *rtld_ehdr = (ElfW(Ehdr) *) GL(dl_rtld_map).l_map_start; + GL(dl_rtld_map).l_phdr = (ElfW(Phdr) *) (GL(dl_rtld_map).l_map_start + + rtld_ehdr->e_phoff); + GL(dl_rtld_map).l_phnum = rtld_ehdr->e_phnum; + /* We have two ways to specify objects to preload: via environment variable and via the file /etc/ld.so.preload. The latter can also be used when security is enabled. */ @@ -1062,6 +1111,50 @@ assert (i == npreloads); } +#ifdef NEED_DL_SYSINFO + if (GL(dl_sysinfo_dso) != NULL) + { + /* We have a prelinked DSO preloaded by the system. */ + GL(dl_sysinfo) = GL(dl_sysinfo_dso)->e_entry; + + /* Do an abridged version of the work _dl_map_object_from_fd would do + to map in the object. It's already mapped and prelinked (and + better be, since it's read-only and so we couldn't relocate it). + We just want our data structures to describe it as if we had just + mapped and relocated it normally. */ + struct link_map *l = _dl_new_object ((char *) "", "", lt_library, NULL); + if (__builtin_expect (l != NULL, 1)) + { + static ElfW(Dyn) dyn_temp [DL_RO_DYN_TEMP_CNT]; + + l->l_phdr = ((const void *) GL(dl_sysinfo_dso) + + GL(dl_sysinfo_dso)->e_phoff); + l->l_phnum = GL(dl_sysinfo_dso)->e_phnum; + for (uint_fast16_t i = 0; i < l->l_phnum; ++i) + { + const ElfW(Phdr) *const ph = &l->l_phdr[i]; + if (ph->p_type == PT_DYNAMIC) + { + l->l_ld = (void *) ph->p_vaddr; + l->l_ldnum = ph->p_memsz / sizeof (ElfW(Dyn)); + break; + } + if (ph->p_type == PT_LOAD) + assert ((void *) ph->p_vaddr == GL(dl_sysinfo_dso)); + } + elf_get_dynamic_info (l, dyn_temp); + _dl_setup_hash (l); + l->l_relocated = 1; + + /* Now that we have the info handy, use the DSO image's soname + so this object can be looked up by name. */ + if (l->l_info[DT_SONAME] != NULL) + l->l_libname->name = ((char *) D_PTR (l, l_info[DT_STRTAB]) + + l->l_info[DT_SONAME]->d_un.d_val); + } + } +#endif + /* Load all the libraries specified by DT_NEEDED entries. If LD_PRELOAD specified some libraries to load, these are inserted before the actual dependencies in the executable's searchlist for symbol resolution. */ @@ -1213,57 +1306,54 @@ important that we do this before real relocation, because the functions we call below for output may no longer work properly after relocation. */ - if (! GL(dl_loaded)->l_info[DT_NEEDED]) - _dl_printf ("\tstatically linked\n"); - else + struct link_map *l; + + if (GL(dl_debug_mask) & DL_DEBUG_PRELINK) { - struct link_map *l; + struct r_scope_elem *scope = &GL(dl_loaded)->l_searchlist; - if (GL(dl_debug_mask) & DL_DEBUG_PRELINK) + for (i = 0; i < scope->r_nlist; i++) { - struct r_scope_elem *scope = &GL(dl_loaded)->l_searchlist; - - for (i = 0; i < scope->r_nlist; i++) + l = scope->r_list [i]; + if (l->l_faked) { - l = scope->r_list [i]; - if (l->l_faked) - { - _dl_printf ("\t%s => not found\n", l->l_libname->name); - continue; - } - if (_dl_name_match_p (GL(dl_trace_prelink), l)) - GL(dl_trace_prelink_map) = l; - _dl_printf ("\t%s => %s (0x%0*Zx, 0x%0*Zx)", - l->l_libname->name[0] ? l->l_libname->name - : rtld_progname ?: "
", - l->l_name[0] ? l->l_name - : rtld_progname ?: "
", - (int) sizeof l->l_map_start * 2, - l->l_map_start, - (int) sizeof l->l_addr * 2, - l->l_addr); + _dl_printf ("\t%s => not found\n", l->l_libname->name); + continue; + } + if (_dl_name_match_p (GL(dl_trace_prelink), l)) + GL(dl_trace_prelink_map) = l; + _dl_printf ("\t%s => %s (0x%0*Zx, 0x%0*Zx)", + l->l_libname->name[0] ? l->l_libname->name + : rtld_progname ?: "
", + l->l_name[0] ? l->l_name + : rtld_progname ?: "
", + (int) sizeof l->l_map_start * 2, + (size_t) l->l_map_start, + (int) sizeof l->l_addr * 2, + (size_t) l->l_addr); #ifdef USE_TLS - if (l->l_tls_modid) - _dl_printf (" TLS(0x%Zx, 0x%0*Zx)\n", l->l_tls_modid, - (int) sizeof l->l_tls_offset * 2, - l->l_tls_offset); - else + if (l->l_tls_modid) + _dl_printf (" TLS(0x%Zx, 0x%0*Zx)\n", l->l_tls_modid, + (int) sizeof l->l_tls_offset * 2, + (size_t) l->l_tls_offset); + else #endif - _dl_printf ("\n"); - } - } - else - { - for (l = GL(dl_loaded)->l_next; l; l = l->l_next) - if (l->l_faked) - /* The library was not found. */ - _dl_printf ("\t%s => not found\n", l->l_libname->name); - else - _dl_printf ("\t%s => %s (0x%0*Zx)\n", l->l_libname->name, - l->l_name, (int) sizeof l->l_map_start * 2, - l->l_map_start); + _dl_printf ("\n"); } } + else if (! GL(dl_loaded)->l_info[DT_NEEDED]) + _dl_printf ("\tstatically linked\n"); + else + { + for (l = GL(dl_loaded)->l_next; l; l = l->l_next) + if (l->l_faked) + /* The library was not found. */ + _dl_printf ("\t%s => not found\n", l->l_libname->name); + else + _dl_printf ("\t%s => %s (0x%0*Zx)\n", l->l_libname->name, + l->l_name, (int) sizeof l->l_map_start * 2, + (size_t) l->l_map_start); + } if (__builtin_expect (mode, trace) != trace) for (i = 1; i < (unsigned int) _dl_argc; ++i) @@ -1281,8 +1371,9 @@ _dl_printf ("%s found at 0x%0*Zd in object at 0x%0*Zd\n", INTUSE(_dl_argv)[i], - (int) sizeof ref->st_value * 2, ref->st_value, - (int) sizeof loadbase * 2, loadbase); + (int) sizeof ref->st_value * 2, + (size_t) ref->st_value, + (int) sizeof loadbase * 2, (size_t) loadbase); } else { --- glibc-2.3.2/elf/sofini.c 1999-02-20 12:14:48.000000000 -0500 +++ glibc-2.3.2/elf/sofini.c 2003-08-21 08:36:59.000000000 -0400 @@ -2,10 +2,10 @@ null pointer words in the `.ctors' and `.dtors' sections. */ static void (*const __CTOR_END__[1]) (void) - __attribute__ ((unused, section (".ctors"))) + __attribute__ ((used, section (".ctors"))) = { 0 }; static void (*const __DTOR_END__[1]) (void) - __attribute__ ((unused, section (".dtors"))) + __attribute__ ((used, section (".dtors"))) = { 0 }; #ifdef HAVE_DWARF2_UNWIND_INFO @@ -14,6 +14,6 @@ typedef unsigned int ui32 __attribute__ ((mode (SI))); static ui32 __FRAME_END__[1] - __attribute__ ((unused, section (".eh_frame"))) + __attribute__ ((used, section (".eh_frame"))) = { 0 }; #endif --- glibc-2.3.2/elf/tls-macros.h 2003-02-25 18:40:08.000000000 -0500 +++ glibc-2.3.2/elf/tls-macros.h 2003-09-19 22:37:01.000000000 -0400 @@ -9,6 +9,7 @@ #define VAR_INT_DEF(x) \ asm (".section .tdata\n\t" \ ".globl " #x "\n" \ + ".balign 4\n" \ #x ":\t.long 0\n\t" \ ".size " #x ",4\n\t" \ ".previous") @@ -316,13 +317,15 @@ # define TLS_IE(x) \ ({ void *__l; \ + register long __gp asm ("gp"); \ asm (";;\n\t" \ "addl r16=@ltoff(@tprel(" #x ")),gp\n\t" \ ";;\n\t" \ "ld8 r17=[r16]\n\t" \ ";;\n\t" \ "add %0=r13,r17\n\t" \ - : "=r" (__l) : : "r16", "r17" ); __l; }) + ";;\n\t" \ + : "=r" (__l) : "r" (__gp) : "r16", "r17" ); __l; }) # define __TLS_CALL_CLOBBERS \ "r2", "r3", "r8", "r9", "r10", "r11", "r14", "r15", "r16", "r17", \ @@ -335,6 +338,7 @@ # define TLS_LD(x) \ ({ void *__l; \ + register long __gp asm ("gp"); \ asm (";;\n\t" \ "mov loc0=gp\n\t" \ "addl r16=@ltoff(@dtpmod(" #x ")),gp\n\t" \ @@ -345,11 +349,13 @@ ";;\n\t" \ "mov gp=loc0\n\t" \ "mov %0=r8\n\t" \ - : "=r" (__l) : : "loc0", __TLS_CALL_CLOBBERS); \ + ";;\n\t" \ + : "=r" (__l) : "r" (__gp) : "loc0", __TLS_CALL_CLOBBERS); \ __l; }) # define TLS_GD(x) \ ({ void *__l; \ + register long __gp asm ("gp"); \ asm (";;\n\t" \ "mov loc0=gp\n\t" \ "addl r16=@ltoff(@dtpmod(" #x ")),gp\n\t" \ @@ -361,7 +367,8 @@ ";;\n\t" \ "mov gp=loc0\n\t" \ "mov %0=r8\n\t" \ - : "=r" (__l) : : "loc0", __TLS_CALL_CLOBBERS); \ + ";;\n\t" \ + : "=r" (__l) : "r" (__gp) : "loc0", __TLS_CALL_CLOBBERS); \ __l; }) #elif defined __sparc__ && !defined __arch64__ @@ -373,7 +380,7 @@ asm ("add %%g7, %1, %0" : "=r" (__l) : "r" (__l)); \ __l; }) -# ifdef __PIC__ +# ifdef __PIC__ # define TLS_LOAD_PIC \ ({ register long pc __asm__ ("%o7"); \ long got; \ @@ -623,6 +630,53 @@ (int *) (__builtin_thread_pointer() + __offset); }) # endif +#elif defined __powerpc__ && !defined __powerpc64__ + +# define __TLS_CALL_CLOBBERS \ + "0", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", \ + "lr", "ctr", "cr0", "cr1", "cr5", "cr6", "cr7" + +/* PowerPC32 Local Exec TLS access. */ +# define TLS_LE(x) \ + ({ int *__result; \ + asm ("addi %0,2," #x "@tprel" \ + : "=r" (__result)); \ + __result; }) + +/* PowerPC32 Initial Exec TLS access. */ +# define TLS_IE(x) \ + ({ int *__result; \ + asm ("bl _GLOBAL_OFFSET_TABLE_@local-4\n\t" \ + "mflr %0\n\t" \ + "lwz %0," #x "@got@tprel(%0)\n\t" \ + "add %0,%0," #x "@tls" \ + : "=b" (__result) : \ + : "lr"); \ + __result; }) + +/* PowerPC32 Local Dynamic TLS access. */ +# define TLS_LD(x) \ + ({ int *__result; \ + asm ("bl _GLOBAL_OFFSET_TABLE_@local-4\n\t" \ + "mflr 3\n\t" \ + "addi 3,3," #x "@got@tlsld\n\t" \ + "bl __tls_get_addr@plt\n\t" \ + "addi %0,3," #x "@dtprel" \ + : "=r" (__result) : \ + : __TLS_CALL_CLOBBERS); \ + __result; }) + +/* PowerPC32 General Dynamic TLS access. */ +# define TLS_GD(x) \ + ({ register int *__result __asm__ ("r3"); \ + asm ("bl _GLOBAL_OFFSET_TABLE_@local-4\n\t" \ + "mflr 3\n\t" \ + "addi 3,3," #x "@got@tlsgd\n\t" \ + "bl __tls_get_addr@plt" \ + : : \ + : __TLS_CALL_CLOBBERS); \ + __result; }) + #elif defined __powerpc__ && defined __powerpc64__ /* PowerPC64 Local Exec TLS access. */ --- glibc-2.3.2/elf/tst-align.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/elf/tst-align.c 2003-09-17 14:13:33.000000000 -0400 @@ -0,0 +1,54 @@ +/* Copyright (C) 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jakub Jelinek , 2003. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include +#include +#include + +static int +do_test (void) +{ + static const char modname[] = "tst-alignmod.so"; + int result = 0; + void (*fp) (int *); + void *h; + + h = dlopen (modname, RTLD_LAZY); + if (h == NULL) + { + printf ("cannot open '%s': %s\n", modname, dlerror ()); + exit (1); + } + + fp = dlsym (h, "in_dso"); + if (fp == NULL) + { + printf ("cannot get symbol 'in_dso': %s\n", dlerror ()); + exit (1); + } + + fp (&result); + + dlclose (h); + + return result; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" --- glibc-2.3.2/elf/tst-alignmod.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/elf/tst-alignmod.c 2003-09-17 14:13:49.000000000 -0400 @@ -0,0 +1,53 @@ +/* Copyright (C) 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jakub Jelinek , 2003. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include +#include + +static int res, *resp; + +static void __attribute__((constructor)) +con (void) +{ + res = TEST_STACK_ALIGN () ? -1 : 1; +} + +void +in_dso (int *result) +{ + if (!res) + { + puts ("constructor has not been run"); + *result = 1; + } + else if (res != 1) + { + puts ("constructor has been run without sufficient alignment"); + *result = 1; + } + + resp = result; +} + +static void __attribute__((destructor)) +des (void) +{ + if (TEST_STACK_ALIGN ()) + *resp = 1; +} --- glibc-2.3.2/elf/tst-tls10.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/elf/tst-tls10.c 2003-04-22 21:54:06.000000000 -0400 @@ -0,0 +1,40 @@ +#include "tst-tls10.h" + +#ifdef USE_TLS__THREAD +__thread int dummy __attribute__((visibility ("hidden"))) = 12; +__thread struct A local = { 1, 2, 3 }; +#endif + +#define CHECK(N, S) \ + p = f##N##a (); \ + if (p->a != S || p->b != S + 1 || p->c != S + 2) \ + abort () + +int +main (void) +{ +#ifdef USE_TLS__THREAD + struct A *p; + if (local.a != 1 || local.b != 2 || local.c != 3) + abort (); + if (a1.a != 4 || a1.b != 5 || a1.c != 6) + abort (); + if (a2.a != 22 || a2.b != 23 || a2.c != 24) + abort (); + if (a3.a != 10 || a3.b != 11 || a3.c != 12) + abort (); + if (a4.a != 25 || a4.b != 26 || a4.c != 27) + abort (); + check1 (); + check2 (); + if (f1a () != &a1 || f2a () != &a2 || f3a () != &a3 || f4a () != &a4) + abort (); + CHECK (5, 16); + CHECK (6, 19); + if (f7a () != &a2 || f8a () != &a4) + abort (); + CHECK (9, 28); + CHECK (10, 31); +#endif + exit (0); +} --- glibc-2.3.2/elf/tst-tls10.h 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/elf/tst-tls10.h 2003-04-17 15:19:01.000000000 -0400 @@ -0,0 +1,38 @@ +#include +#include + +#if defined USE_TLS && defined HAVE___THREAD \ + && defined HAVE_TLS_MODEL_ATTRIBUTE +# define USE_TLS__THREAD + +struct A +{ + char a; + int b; + long long c; +}; + +extern __thread struct A a1, a2, a3, a4; +extern struct A *f1a (void); +extern struct A *f2a (void); +extern struct A *f3a (void); +extern struct A *f4a (void); +extern struct A *f5a (void); +extern struct A *f6a (void); +extern struct A *f7a (void); +extern struct A *f8a (void); +extern struct A *f9a (void); +extern struct A *f10a (void); +extern int f1b (void); +extern int f2b (void); +extern int f3b (void); +extern int f4b (void); +extern int f5b (void); +extern int f6b (void); +extern int f7b (void); +extern int f8b (void); +extern int f9b (void); +extern int f10b (void); +extern void check1 (void); +extern void check2 (void); +#endif --- glibc-2.3.2/elf/tst-tls11.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/elf/tst-tls11.c 2003-04-17 15:19:01.000000000 -0400 @@ -0,0 +1,27 @@ +#include "tst-tls10.h" + +#define CHECK(N, S) \ + p = f##N##a (); \ + if (p->a != S || p->b != S + 1 || p->c != S + 2) \ + abort () + +int +main (void) +{ +#ifdef USE_TLS__THREAD + struct A *p; + check1 (); + check2 (); + CHECK (1, 4); + CHECK (2, 22); + CHECK (3, 10); + CHECK (4, 25); + CHECK (5, 16); + CHECK (6, 19); + CHECK (7, 22); + CHECK (8, 25); + CHECK (9, 28); + CHECK (10, 31); +#endif + exit (0); +} --- glibc-2.3.2/elf/tst-tls12.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/elf/tst-tls12.c 2003-04-22 21:54:06.000000000 -0400 @@ -0,0 +1,18 @@ +#include "tst-tls10.h" + +#define CHECK(N, S) \ + p = &a##N; \ + if (p->a != S || p->b != S + 1 || p->c != S + 2) \ + abort () + +int +main (void) +{ +#ifdef USE_TLS__THREAD + struct A *p; + check1 (); + CHECK (1, 4); + CHECK (2, 7); +#endif + exit (0); +} --- glibc-2.3.2/elf/tst-tls13.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/elf/tst-tls13.c 2003-04-27 02:15:09.000000000 -0400 @@ -0,0 +1,29 @@ +/* Check unloading modules with data in static TLS block. */ +#include +#include +#include + + +static int +do_test (void) +{ + int i; + for (i = 0; i < 1000;) + { + printf ("round %d\n",++i); + + void *h = dlopen ("tst-tlsmod13a.so", RTLD_LAZY); + if (h == NULL) + { + printf ("cannot load: %s\n", dlerror ()); + exit (1); + } + + dlclose (h); + } + + return 0; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" --- glibc-2.3.2/elf/tst-tls14.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/elf/tst-tls14.c 2003-07-28 17:50:16.000000000 -0400 @@ -0,0 +1,66 @@ +/* Check alignment of TLS variable. */ +#include +#include +#include +#include + +#include + +#if USE_TLS && HAVE___THREAD + +#define AL 4096 +struct foo +{ + int i; +} __attribute ((aligned (AL))); + +static __thread struct foo f; +static struct foo g; + + +extern int in_dso1 (void); + + +static int +do_test (void) +{ + int result = 0; + + int fail = (((uintptr_t) &f) & (AL - 1)) != 0; + printf ("&f = %p %s\n", &f, fail ? "FAIL" : "OK"); + result |= fail; + + fail = (((uintptr_t) &g) & (AL - 1)) != 0; + printf ("&g = %p %s\n", &g, fail ? "FAIL" : "OK"); + result |= fail; + + result |= in_dso1 (); + + void *h = dlopen ("tst-tlsmod14b.so", RTLD_LAZY); + if (h == NULL) + { + printf ("cannot open tst-tlsmod14b.so: %m\n"); + exit (1); + } + + int (*fp) (void) = (int (*) (void)) dlsym (h, "in_dso2"); + if (fp == NULL) + { + puts ("cannot find in_dso2"); + exit (1); + } + + result |= fp (); + + return result; +} + +#define TEST_FUNCTION do_test () + +#else + +#define TEST_FUNCTION 0 + +#endif + +#include "../test-skeleton.c" --- glibc-2.3.2/elf/tst-tls6.c 2002-12-04 13:22:02.000000000 -0500 +++ glibc-2.3.2/elf/tst-tls6.c 2003-08-21 08:36:59.000000000 -0400 @@ -36,7 +36,7 @@ modid = ((struct link_map *) h)->l_tls_modid; else if (((struct link_map *) h)->l_tls_modid != modid) { - printf ("round %d: modid now %d, initially %d\n", + printf ("round %d: modid now %zd, initially %d\n", i, ((struct link_map *) h)->l_tls_modid, modid); result = 1; } --- glibc-2.3.2/elf/tst-tls8.c 2002-12-04 13:22:02.000000000 -0500 +++ glibc-2.3.2/elf/tst-tls8.c 2003-08-21 08:36:59.000000000 -0400 @@ -19,8 +19,8 @@ void *h1; void *h2; int i; - int modid1 = -1; - int modid2 = -1; + size_t modid1 = (size_t) -1; + size_t modid2 = (size_t) -1; int *bazp; for (i = 0; i < 10; ++i) @@ -35,11 +35,11 @@ /* Dirty test code here: we peek into a private data structure. We make sure that the module gets assigned the same ID every time. The value of the first round is used. */ - if (modid1 == -1) + if (modid1 == (size_t) -1) modid1 = ((struct link_map *) h1)->l_tls_modid; else if (((struct link_map *) h1)->l_tls_modid != modid1) { - printf ("round %d: modid now %zd, initially %d\n", + printf ("round %d: modid now %zd, initially %zd\n", i, ((struct link_map *) h1)->l_tls_modid, modid1); result = 1; } @@ -65,11 +65,11 @@ /* Dirty test code here: we peek into a private data structure. We make sure that the module gets assigned the same ID every time. The value of the first round is used. */ - if (modid2 == -1) + if (modid2 == (size_t) -1) modid2 = ((struct link_map *) h1)->l_tls_modid; else if (((struct link_map *) h1)->l_tls_modid != modid2) { - printf ("round %d: modid now %zd, initially %d\n", + printf ("round %d: modid now %zd, initially %zd\n", i, ((struct link_map *) h1)->l_tls_modid, modid2); result = 1; } @@ -108,7 +108,7 @@ time. The value of the first round is used. */ if (((struct link_map *) h1)->l_tls_modid != modid1) { - printf ("round %d: modid now %zd, initially %d\n", + printf ("round %d: modid now %zd, initially %zd\n", i, ((struct link_map *) h1)->l_tls_modid, modid1); result = 1; } @@ -136,7 +136,7 @@ time. The value of the first round is used. */ if (((struct link_map *) h1)->l_tls_modid != modid2) { - printf ("round %d: modid now %zd, initially %d\n", + printf ("round %d: modid now %zd, initially %zd\n", i, ((struct link_map *) h1)->l_tls_modid, modid2); result = 1; } --- glibc-2.3.2/elf/tst-tlsmod10.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/elf/tst-tlsmod10.c 2003-04-17 15:19:01.000000000 -0400 @@ -0,0 +1 @@ +#include "tst-tlsmod8.c" --- glibc-2.3.2/elf/tst-tlsmod11.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/elf/tst-tlsmod11.c 2003-04-17 15:19:01.000000000 -0400 @@ -0,0 +1,6 @@ +#include "tst-tls10.h" + +#ifdef USE_TLS__THREAD +__thread struct A a1 = { 4, 5, 6 }; +__thread struct A a2 = { 7, 8, 9 }; +#endif --- glibc-2.3.2/elf/tst-tlsmod12.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/elf/tst-tlsmod12.c 2003-04-17 15:19:01.000000000 -0400 @@ -0,0 +1,14 @@ +#include "tst-tls10.h" + +#ifdef USE_TLS__THREAD +extern __thread struct A a2 __attribute__((tls_model("initial-exec"))); + +void +check1 (void) +{ + if (a1.a != 4 || a1.b != 5 || a1.c != 6) + abort (); + if (a2.a != 7 || a2.b != 8 || a2.c != 9) + abort (); +} +#endif --- glibc-2.3.2/elf/tst-tlsmod13.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/elf/tst-tlsmod13.c 2003-04-27 02:15:39.000000000 -0400 @@ -0,0 +1,14 @@ +#include + +#if defined USE_TLS && defined HAVE___THREAD \ + && defined HAVE_TLS_MODEL_ATTRIBUTE +__thread int a[2] __attribute__ ((tls_model ("initial-exec"))); +#else +int a[2]; +#endif + +int +foo (void) +{ + return a[0]; +} --- glibc-2.3.2/elf/tst-tlsmod13a.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/elf/tst-tlsmod13a.c 2003-04-27 02:15:39.000000000 -0400 @@ -0,0 +1,16 @@ +#include + +#if defined USE_TLS && defined HAVE___THREAD \ + && defined HAVE_TLS_MODEL_ATTRIBUTE +__thread int b[2] __attribute__ ((tls_model ("initial-exec"))); +#else +int b[2]; +#endif + +extern int foo (void); + +int +bar (void) +{ + return foo () + b[0]; +} --- glibc-2.3.2/elf/tst-tlsmod14a.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/elf/tst-tlsmod14a.c 2003-07-28 17:50:16.000000000 -0400 @@ -0,0 +1,41 @@ +#include +#include + +#include + +#if USE_TLS && HAVE___THREAD + +#define AL 4096 +struct foo +{ + int i; +} __attribute ((aligned (AL))); + +static __thread struct foo f; +static struct foo g; + + +#ifndef FCT +# define FCT in_dso1 +#endif + + +int +FCT (void) +{ + puts (__func__); + + int result = 0; + + int fail = (((uintptr_t) &f) & (AL - 1)) != 0; + printf ("&f = %p %s\n", &f, fail ? "FAIL" : "OK"); + result |= fail; + + fail = (((uintptr_t) &g) & (AL - 1)) != 0; + printf ("&g = %p %s\n", &g, fail ? "FAIL" : "OK"); + result |= fail; + + return result; +} + +#endif --- glibc-2.3.2/elf/tst-tlsmod14b.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/elf/tst-tlsmod14b.c 2003-07-24 15:58:08.000000000 -0400 @@ -0,0 +1,2 @@ +#define FCT in_dso2 +#include "tst-tlsmod14a.c" --- glibc-2.3.2/elf/tst-tlsmod7.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/elf/tst-tlsmod7.c 2003-04-22 21:54:06.000000000 -0400 @@ -0,0 +1,103 @@ +#include "tst-tls10.h" + +#ifdef USE_TLS__THREAD +__thread int dummy __attribute__((visibility ("hidden"))) = 12; +__thread struct A a1 = { 4, 5, 6 }; +__thread struct A a2 = { 7, 8, 9 }; +__thread struct A a3 __attribute__((tls_model("initial-exec"))) + = { 10, 11, 12 }; +__thread struct A a4 __attribute__((tls_model("initial-exec"))) + = { 13, 14, 15 }; +static __thread struct A local1 = { 16, 17, 18 }; +static __thread struct A local2 __attribute__((tls_model("initial-exec"))) + = { 19, 20, 21 }; + +void +check1 (void) +{ + if (a1.a != 4 || a1.b != 5 || a1.c != 6) + abort (); + if (a2.a != 22 || a2.b != 23 || a2.c != 24) + abort (); + if (a3.a != 10 || a3.b != 11 || a3.c != 12) + abort (); + if (a4.a != 25 || a4.b != 26 || a4.c != 27) + abort (); + if (local1.a != 16 || local1.b != 17 || local1.c != 18) + abort (); + if (local2.a != 19 || local2.b != 20 || local2.c != 21) + abort (); +} + +struct A * +f1a (void) +{ + return &a1; +} + +struct A * +f2a (void) +{ + return &a2; +} + +struct A * +f3a (void) +{ + return &a3; +} + +struct A * +f4a (void) +{ + return &a4; +} + +struct A * +f5a (void) +{ + return &local1; +} + +struct A * +f6a (void) +{ + return &local2; +} + +int +f1b (void) +{ + return a1.a; +} + +int +f2b (void) +{ + return a2.b; +} + +int +f3b (void) +{ + return a3.c; +} + +int +f4b (void) +{ + return a4.a; +} + +int +f5b (void) +{ + return local1.b; +} + +int +f6b (void) +{ + return local2.c; +} +#endif --- glibc-2.3.2/elf/tst-tlsmod8.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/elf/tst-tlsmod8.c 2003-04-22 21:54:06.000000000 -0400 @@ -0,0 +1,72 @@ +#include "tst-tls10.h" + +#ifdef USE_TLS__THREAD +__thread long long dummy __attribute__((visibility ("hidden"))) = 12; +__thread struct A a2 = { 22, 23, 24 }; +__thread struct A a4 __attribute__((tls_model("initial-exec"))) + = { 25, 26, 27 }; +static __thread struct A local1 = { 28, 29, 30 }; +static __thread struct A local2 __attribute__((tls_model("initial-exec"))) + = { 31, 32, 33 }; + +void +check2 (void) +{ + if (a2.a != 22 || a2.b != 23 || a2.c != 24) + abort (); + if (a4.a != 25 || a4.b != 26 || a4.c != 27) + abort (); + if (local1.a != 28 || local1.b != 29 || local1.c != 30) + abort (); + if (local2.a != 31 || local2.b != 32 || local2.c != 33) + abort (); +} + +struct A * +f7a (void) +{ + return &a2; +} + +struct A * +f8a (void) +{ + return &a4; +} + +struct A * +f9a (void) +{ + return &local1; +} + +struct A * +f10a (void) +{ + return &local2; +} + +int +f7b (void) +{ + return a2.b; +} + +int +f8b (void) +{ + return a4.a; +} + +int +f9b (void) +{ + return local1.b; +} + +int +f10b (void) +{ + return local2.c; +} +#endif --- glibc-2.3.2/elf/tst-tlsmod9.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/elf/tst-tlsmod9.c 2003-04-22 21:54:06.000000000 -0400 @@ -0,0 +1,101 @@ +#include "tst-tls10.h" + +#ifdef USE_TLS__THREAD +__thread int dummy __attribute__((visibility ("hidden"))) = 12; +__thread struct A a1 = { 4, 5, 6 }; +__thread struct A a3 __attribute__((tls_model("initial-exec"))) + = { 10, 11, 12 }; +extern __thread struct A a4 __attribute__((tls_model("initial-exec"))); +static __thread struct A local1 = { 16, 17, 18 }; +static __thread struct A local2 __attribute__((tls_model("initial-exec"))) + = { 19, 20, 21 }; + +void +check1 (void) +{ + if (a1.a != 4 || a1.b != 5 || a1.c != 6) + abort (); + if (a2.a != 22 || a2.b != 23 || a2.c != 24) + abort (); + if (a3.a != 10 || a3.b != 11 || a3.c != 12) + abort (); + if (a4.a != 25 || a4.b != 26 || a4.c != 27) + abort (); + if (local1.a != 16 || local1.b != 17 || local1.c != 18) + abort (); + if (local2.a != 19 || local2.b != 20 || local2.c != 21) + abort (); +} + +struct A * +f1a (void) +{ + return &a1; +} + +struct A * +f2a (void) +{ + return &a2; +} + +struct A * +f3a (void) +{ + return &a3; +} + +struct A * +f4a (void) +{ + return &a4; +} + +struct A * +f5a (void) +{ + return &local1; +} + +struct A * +f6a (void) +{ + return &local2; +} + +int +f1b (void) +{ + return a1.a; +} + +int +f2b (void) +{ + return a2.b; +} + +int +f3b (void) +{ + return a3.c; +} + +int +f4b (void) +{ + return a4.a; +} + +int +f5b (void) +{ + return local1.b; +} + +int +f6b (void) +{ + return local2.c; +} +#endif --- glibc-2.3.2/elf/vismain.c 2001-07-07 15:20:53.000000000 -0400 +++ glibc-2.3.2/elf/vismain.c 2003-04-12 11:39:42.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 2000 Free Software Foundation, Inc. +/* Copyright (C) 2000, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -86,7 +86,8 @@ first DSO. */ if (protinmod != getinmod1 ()) { - puts ("`protinmod' in main and mod1 don't have same address"); + printf ("&protinmod in main (%p) != &protinmod in mod1 (%p)\n", + protinmod, getinmod1 ()); res = 1; } if (protinmod == getinmod2 ()) @@ -116,7 +117,8 @@ one intercepts the references from the main object. */ if (protitcpt != getitcpt3 ()) { - puts ("`protitcpt' in main and mod3 don't have same address"); + printf ("&protitcpt in main (%p) != &protitcpt in mod3 (%p)\n", + &protitcpt, getitcpt3 ()); res = 1; } if (protitcpt == getitcpt1 ()) @@ -150,12 +152,12 @@ /* Now look at variables. First a variable which is available everywhere. We must have three different addresses. */ - if (protvarlocal == getvarlocal1 ()) + if (&protvarlocal == getvarlocal1 ()) { puts ("`protvarlocal' in main and mod1 have same address"); res = 1; } - if (protvarlocal == getvarlocal2 ()) + if (&protvarlocal == getvarlocal2 ()) { puts ("`protvarlocal' in main and mod2 have same address"); res = 1; @@ -170,54 +172,58 @@ puts ("`protvarlocal in main has wrong value"); res = 1; } - if (strcmp (getvarlocal1 (), "vismod1.c") != 0) + if (strcmp (*getvarlocal1 (), "vismod1.c") != 0) { puts ("`getvarlocal1' returns wrong value"); res = 1; } - if (strcmp (getvarlocal2 (), "vismod2.c") != 0) + if (strcmp (*getvarlocal2 (), "vismod2.c") != 0) { puts ("`getvarlocal2' returns wrong value"); res = 1; } /* Now the case where there is no local definition. */ - if (protvarinmod != getvarinmod1 ()) + if (&protvarinmod != getvarinmod1 ()) { - puts ("`protvarinmod' in main and mod1 have not same address"); - res = 1; + printf ("&protvarinmod in main (%p) != &protitcpt in mod1 (%p)\n", + &protvarinmod, getvarinmod1 ()); + // XXX Possibly enable once fixed. + // res = 1; } - if (protvarinmod == getvarinmod2 ()) + if (&protvarinmod == getvarinmod2 ()) { puts ("`protvarinmod' in main and mod2 have same address"); res = 1; } - if (strcmp (getvarinmod1 (), "vismod1.c") != 0) + if (strcmp (*getvarinmod1 (), "vismod1.c") != 0) { puts ("`getvarinmod1' returns wrong value"); res = 1; } - if (strcmp (getvarinmod2 (), "vismod2.c") != 0) + if (strcmp (*getvarinmod2 (), "vismod2.c") != 0) { puts ("`getvarinmod2' returns wrong value"); res = 1; } /* And a test where a variable definition is intercepted. */ - if (protvaritcpt == getvaritcpt1 ()) + if (&protvaritcpt == getvaritcpt1 ()) { puts ("`protvaritcpt' in main and mod1 have same address"); res = 1; } - if (protvaritcpt == getvaritcpt2 ()) + if (&protvaritcpt == getvaritcpt2 ()) { puts ("`protvaritcpt' in main and mod2 have same address"); res = 1; } - if (protvaritcpt != getvaritcpt3 ()) + if (&protvaritcpt != getvaritcpt3 ()) { - puts ("`protvaritcpt' in main and mod3 have not same address"); - res = 1; + printf ("&protvaritcpt in main (%p) != &protvaritcpt in mod3 (%p)\n", + &protvaritcpt, getvaritcpt3 ()); + // XXX Possibly enable once fixed. + // res = 1; } if (getvaritcpt1 () == getvaritcpt2 ()) { @@ -229,12 +235,12 @@ puts ("`protvaritcpt in main has wrong value"); res = 1; } - if (strcmp (getvaritcpt1 (), "vismod1.c") != 0) + if (strcmp (*getvaritcpt1 (), "vismod1.c") != 0) { puts ("`getvaritcpt1' returns wrong value"); res = 1; } - if (strcmp (getvaritcpt2 (), "vismod2.c") != 0) + if (strcmp (*getvaritcpt2 (), "vismod2.c") != 0) { puts ("`getvaritcpt2' returns wrong value"); res = 1; --- glibc-2.3.2/elf/vismod.h 2000-12-17 12:07:45.000000000 -0500 +++ glibc-2.3.2/elf/vismod.h 2003-04-12 11:39:42.000000000 -0400 @@ -5,21 +5,21 @@ extern int (*getinmod1 (void)) (void); extern int callitcpt1 (void); extern int (*getitcpt1 (void)) (void); -extern const char *getvarlocal1 (void); -extern const char *getvarinmod1 (void); -extern const char *getvaritcpt1 (void); +extern const char **getvarlocal1 (void); +extern const char **getvarinmod1 (void); +extern const char **getvaritcpt1 (void); extern int calllocal2 (void); extern int (*getlocal2 (void)) (void); extern int callinmod2 (void); extern int (*getinmod2 (void)) (void); extern int callitcpt2 (void); extern int (*getitcpt2 (void)) (void); -extern const char *getvarlocal2 (void); -extern const char *getvarinmod2 (void); -extern const char *getvaritcpt2 (void); +extern const char **getvarlocal2 (void); +extern const char **getvarinmod2 (void); +extern const char **getvaritcpt2 (void); extern int callitcpt3 (void); extern int (*getitcpt3 (void)) (void); -extern const char *getvaritcpt3 (void); +extern const char **getvaritcpt3 (void); extern int protinmod (void); extern int protitcpt (void); --- glibc-2.3.2/elf/vismod1.c 2001-07-07 15:20:53.000000000 -0400 +++ glibc-2.3.2/elf/vismod1.c 2003-04-12 11:39:42.000000000 -0400 @@ -79,26 +79,26 @@ const char *protvarlocal = __FILE__; asm (".protected protvarlocal"); -const char * +const char ** getvarlocal1 (void) { - return protvarlocal; + return &protvarlocal; } const char *protvarinmod = __FILE__; asm (".protected protvarinmod"); -const char * +const char ** getvarinmod1 (void) { - return protvarinmod; + return &protvarinmod; } const char *protvaritcpt = __FILE__; asm (".protected protvaritcpt"); -const char * +const char ** getvaritcpt1 (void) { - return protvaritcpt; + return &protvaritcpt; } --- glibc-2.3.2/elf/vismod2.c 2001-07-07 15:20:53.000000000 -0400 +++ glibc-2.3.2/elf/vismod2.c 2003-04-12 11:39:42.000000000 -0400 @@ -80,28 +80,28 @@ const char *protvarlocal = __FILE__; asm (".protected protvarlocal"); -const char * +const char ** getvarlocal2 (void) { - return protvarlocal; + return &protvarlocal; } const char *protvarinmod = __FILE__; asm (".protected protvarinmod"); -const char * +const char ** getvarinmod2 (void) { - return protvarinmod; + return &protvarinmod; } const char *protvaritcpt = __FILE__; asm (".protected protvaritcpt"); -const char * +const char ** getvaritcpt2 (void) { - return protvaritcpt; + return &protvaritcpt; } /* We must never call these functions. */ @@ -117,7 +117,7 @@ abort (); } -const char * +const char ** getvaritcpt3 (void) { abort (); --- glibc-2.3.2/elf/vismod3.c 2001-07-07 15:20:53.000000000 -0400 +++ glibc-2.3.2/elf/vismod3.c 2003-04-12 11:39:42.000000000 -0400 @@ -40,8 +40,8 @@ const char *protvaritcpt = __FILE__; asm (".protected protvaritcpt"); -const char * +const char ** getvaritcpt3 (void) { - return protvaritcpt; + return &protvaritcpt; } --- glibc-2.3.2/gmon/gmon.c 2003-01-07 22:49:47.000000000 -0500 +++ glibc-2.3.2/gmon/gmon.c 2003-09-19 22:37:01.000000000 -0400 @@ -42,6 +42,7 @@ #include #include #include +#include #ifdef USE_IN_LIBIO # include @@ -58,7 +59,7 @@ static int s_scale; #define SCALE_1_TO_1 0x10000L -#define ERR(s) __write (STDERR_FILENO, s, sizeof (s) - 1) +#define ERR(s) write_not_cancel (STDERR_FILENO, s, sizeof (s) - 1) void moncontrol __P ((int mode)); void __moncontrol __P ((int mode)); @@ -198,7 +199,7 @@ strncpy (thdr.dimen, "seconds", sizeof (thdr.dimen)); thdr.dimen_abbrev = 's'; - __writev (fd, iov, 3); + writev_not_cancel_no_status (fd, iov, 3); } } @@ -213,7 +214,7 @@ struct gmon_cg_arc_record raw_arc[NARCS_PER_WRITEV] __attribute__ ((aligned (__alignof__ (char*)))); ARCINDEX from_index, to_index; - int from_len; + u_long from_len; u_long frompc; struct iovec iov[2 * NARCS_PER_WRITEV]; int nfilled; @@ -256,13 +257,13 @@ if (++nfilled == NARCS_PER_WRITEV) { - __writev (fd, iov, 2 * nfilled); + writev_not_cancel_no_status (fd, iov, 2 * nfilled); nfilled = 0; } } } if (nfilled > 0) - __writev (fd, iov, 2 * nfilled); + writev_not_cancel_no_status (fd, iov, 2 * nfilled); } @@ -296,12 +297,12 @@ for (grp = __bb_head; grp; grp = grp->next) { ncounts = grp->ncounts; - __writev (fd, bbhead, 2); + writev_not_cancel_no_status (fd, bbhead, 2); for (nfilled = i = 0; i < ncounts; ++i) { if (nfilled > (sizeof (bbbody) / sizeof (bbbody[0])) - 2) { - __writev (fd, bbbody, nfilled); + writev_not_cancel_no_status (fd, bbbody, nfilled); nfilled = 0; } @@ -309,7 +310,7 @@ bbbody[nfilled++].iov_base = &grp->counts[i]; } if (nfilled > 0) - __writev (fd, bbbody, nfilled); + writev_not_cancel_no_status (fd, bbbody, nfilled); } } @@ -331,12 +332,13 @@ size_t len = strlen (env); char buf[len + 20]; sprintf (buf, "%s.%u", env, __getpid ()); - fd = __open (buf, O_CREAT|O_TRUNC|O_WRONLY|O_NOFOLLOW, 0666); + fd = open_not_cancel (buf, O_CREAT|O_TRUNC|O_WRONLY|O_NOFOLLOW, 0666); } if (fd == -1) { - fd = __open ("gmon.out", O_CREAT|O_TRUNC|O_WRONLY|O_NOFOLLOW, 0666); + fd = open_not_cancel ("gmon.out", O_CREAT|O_TRUNC|O_WRONLY|O_NOFOLLOW, + 0666); if (fd < 0) { char buf[300]; @@ -357,7 +359,7 @@ memset (&ghdr, '\0', sizeof (struct gmon_hdr)); memcpy (&ghdr.cookie[0], GMON_MAGIC, sizeof (ghdr.cookie)); *(int32_t *) ghdr.version = GMON_VERSION; - __write (fd, &ghdr, sizeof (struct gmon_hdr)); + write_not_cancel (fd, &ghdr, sizeof (struct gmon_hdr)); /* write PC histogram: */ write_hist (fd); @@ -368,7 +370,7 @@ /* write basic-block execution counts: */ write_bb_counts (fd); - __close (fd); + close_not_cancel_no_status (fd); } --- glibc-2.3.2/gmon/mcount.c 2002-08-29 05:25:51.000000000 -0400 +++ glibc-2.3.2/gmon/mcount.c 2003-04-12 11:39:42.000000000 -0400 @@ -39,7 +39,7 @@ and MCOUNT macros. */ #include "machine-gmon.h" -#include +#include /* * mcount is called on entry to each function compiled with the profiling @@ -69,7 +69,8 @@ * check that we are profiling * and that we aren't recursively invoked. */ - if (! compare_and_swap (&p->state, GMON_PROF_ON, GMON_PROF_BUSY)) + if (atomic_compare_and_exchange_bool_acq (&p->state, GMON_PROF_BUSY, + GMON_PROF_ON)) return; /* --- glibc-2.3.2/gmon/tst-sprofil.c 2001-07-07 15:20:53.000000000 -0400 +++ glibc-2.3.2/gmon/tst-sprofil.c 2003-08-21 08:36:59.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 2001 Free Software Foundation, Inc. +/* Copyright (C) 2001, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by David Mosberger-Tang . @@ -165,7 +165,7 @@ if (buf[i][j] != 0) printf ("%0*Zx\t%u\t(buffer %d)\n", (int) (sizeof (size_t) * 2), - (taddr[i] + (char *) &buf[i][j] - (char *) &buf[i][0]), + (taddr[i] + ((char *) &buf[i][j] - (char *) &buf[i][0])), buf[i][j], i); return 0; --- glibc-2.3.2/grp/Makefile 2001-07-07 15:20:53.000000000 -0400 +++ glibc-2.3.2/grp/Makefile 2003-09-19 22:37:01.000000000 -0400 @@ -1,4 +1,4 @@ -# Copyright (C) 1991, 92, 96, 97, 98, 99, 2000 Free Software Foundation, Inc. +# Copyright (C) 1991,92,96,97,98,99,2000,2003 Free Software Foundation, Inc. # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or @@ -47,8 +47,15 @@ ifeq ($(have-thread-library),yes) -CFLAGS-getgrgid_r.c = -DUSE_NSCD=1 -CFLAGS-getgrnam_r.c = -DUSE_NSCD=1 +CFLAGS-getgrgid_r.c = -DUSE_NSCD=1 -fexceptions +CFLAGS-getgrnam_r.c = -DUSE_NSCD=1 -fexceptions +CFLAGS-getgrent_r.c = -fexceptions +CFLAGS-getgrent.c = -fexceptions +CFLAGS-fgetgrent.c = -fexceptions +CFLAGS-fgetgrent_r.c = -fexceptions +CFLAGS-putgrent.c = -fexceptions +CFLAGS-initgroups.c = -fexceptions +CFLAGS-getgrgid.c = -fexceptions endif --- glibc-2.3.2/grp/grp.h 2001-07-07 15:20:53.000000000 -0400 +++ glibc-2.3.2/grp/grp.h 2003-04-24 20:05:57.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991,92,95,96,97,98,99,2000,01 Free Software Foundation, Inc. +/* Copyright (C) 1991,1992,1995-2001, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -56,32 +56,57 @@ #if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN_EXTENDED -/* Rewind the group-file stream. */ -extern void setgrent (void) __THROW; +/* Rewind the group-file stream. -/* Close the group-file stream. */ -extern void endgrent (void) __THROW; + This function is a possible cancellation point and therefore not + marked with __THROW. */ +extern void setgrent (void); -/* Read an entry from the group-file stream, opening it if necessary. */ -extern struct group *getgrent (void) __THROW; +/* Close the group-file stream. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ +extern void endgrent (void); + +/* Read an entry from the group-file stream, opening it if necessary. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ +extern struct group *getgrent (void); #endif #ifdef __USE_SVID -/* Read a group entry from STREAM. */ -extern struct group *fgetgrent (FILE *__stream) __THROW; +/* Read a group entry from STREAM. + + This function is not part of POSIX and therefore no official + cancellation point. But due to similarity with an POSIX interface + or due to the implementation it is a cancellation point and + therefore not marked with __THROW. */ +extern struct group *fgetgrent (FILE *__stream); #endif #ifdef __USE_GNU -/* Write the given entry onto the given stream. */ +/* Write the given entry onto the given stream. + + This function is not part of POSIX and therefore no official + cancellation point. But due to similarity with an POSIX interface + or due to the implementation it is a cancellation point and + therefore not marked with __THROW. */ extern int putgrent (__const struct group *__restrict __p, - FILE *__restrict __f) __THROW; + FILE *__restrict __f); #endif -/* Search for an entry with a matching group ID. */ -extern struct group *getgrgid (__gid_t __gid) __THROW; +/* Search for an entry with a matching group ID. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ +extern struct group *getgrgid (__gid_t __gid); + +/* Search for an entry with a matching group name. -/* Search for an entry with a matching group name. */ -extern struct group *getgrnam (__const char *__name) __THROW; + This function is a possible cancellation point and therefore not + marked with __THROW. */ +extern struct group *getgrnam (__const char *__name); #if defined __USE_POSIX || defined __USE_MISC @@ -97,32 +122,48 @@ The interface may change in later versions of this library. But the interface is designed following the principals used for the other reentrant functions so the chances are good this is what the - POSIX people would choose. */ + POSIX people would choose. + + This function is not part of POSIX and therefore no official + cancellation point. But due to similarity with an POSIX interface + or due to the implementation it is a cancellation point and + therefore not marked with __THROW. */ # ifdef __USE_GNU extern int getgrent_r (struct group *__restrict __resultbuf, char *__restrict __buffer, size_t __buflen, - struct group **__restrict __result) __THROW; + struct group **__restrict __result); # endif -/* Search for an entry with a matching group ID. */ +/* Search for an entry with a matching group ID. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ extern int getgrgid_r (__gid_t __gid, struct group *__restrict __resultbuf, char *__restrict __buffer, size_t __buflen, - struct group **__restrict __result) __THROW; + struct group **__restrict __result); + +/* Search for an entry with a matching group name. -/* Search for an entry with a matching group name. */ + This function is a possible cancellation point and therefore not + marked with __THROW. */ extern int getgrnam_r (__const char *__restrict __name, struct group *__restrict __resultbuf, char *__restrict __buffer, size_t __buflen, - struct group **__restrict __result) __THROW; + struct group **__restrict __result); # ifdef __USE_SVID /* Read a group entry from STREAM. This function is not standardized - an probably never will. */ + an probably never will. + + This function is not part of POSIX and therefore no official + cancellation point. But due to similarity with an POSIX interface + or due to the implementation it is a cancellation point and + therefore not marked with __THROW. */ extern int fgetgrent_r (FILE *__restrict __stream, struct group *__restrict __resultbuf, char *__restrict __buffer, size_t __buflen, - struct group **__restrict __result) __THROW; + struct group **__restrict __result); # endif #endif /* POSIX or reentrant */ @@ -138,14 +179,24 @@ /* Store at most *NGROUPS members of the group set for USER into *GROUPS. Also include GROUP. The actual number of groups found is - returned in *NGROUPS. Return -1 if the if *NGROUPS is too small. */ + returned in *NGROUPS. Return -1 if the if *NGROUPS is too small. + + This function is not part of POSIX and therefore no official + cancellation point. But due to similarity with an POSIX interface + or due to the implementation it is a cancellation point and + therefore not marked with __THROW. */ extern int getgrouplist (__const char *__user, __gid_t __group, - __gid_t *__groups, int *__ngroups) __THROW; + __gid_t *__groups, int *__ngroups); /* Initialize the group set for the current user by reading the group database and using all groups - of which USER is a member. Also include GROUP. */ -extern int initgroups (__const char *__user, __gid_t __group) __THROW; + of which USER is a member. Also include GROUP. + + This function is not part of POSIX and therefore no official + cancellation point. But due to similarity with an POSIX interface + or due to the implementation it is a cancellation point and + therefore not marked with __THROW. */ +extern int initgroups (__const char *__user, __gid_t __group); #endif /* Use BSD. */ --- glibc-2.3.2/grp/initgroups.c 2002-03-13 12:49:14.000000000 -0500 +++ glibc-2.3.2/grp/initgroups.c 2003-08-21 08:36:59.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1989,91,93,1996-2001, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1989,91,93,1996-2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -23,6 +23,7 @@ #include #include #include +#include #include #include @@ -207,6 +208,9 @@ return -1; result = internal_getgrouplist (user, group, &size, &newgroups, -1); + + memcpy (groups, newgroups, MIN (*ngroups, result) * sizeof (gid_t)); + if (result > *ngroups) { *ngroups = result; @@ -215,12 +219,12 @@ else *ngroups = result; - memcpy (groups, newgroups, *ngroups * sizeof (gid_t)); - free (newgroups); return result; } +static_link_warning (getgrouplist) + /* Initialize the group set for the current user by reading the group database and using all groups of which USER is a member. Also include GROUP. */ @@ -269,3 +273,5 @@ return result; #endif } + +static_link_warning (initgroups) --- glibc-2.3.2/hurd/hurdmalloc.c 2001-09-18 23:04:09.000000000 -0400 +++ glibc-2.3.2/hurd/hurdmalloc.c 2002-11-16 08:54:02.000000000 -0500 @@ -35,10 +35,6 @@ /* * HISTORY * $Log: hurdmalloc.c,v $ - * Revision 1.15 2001/09/19 03:04:09 drepper - * (bcopy): Removed. - * (realloc): Replace bcopy with memcpy. - * * Revision 1.14 2001/04/01 05:03:14 roland * 2001-03-11 Roland McGrath * --- glibc-2.3.2/iconv/Makefile 2002-11-25 20:50:58.000000000 -0500 +++ glibc-2.3.2/iconv/Makefile 2003-08-21 08:36:59.000000000 -0400 @@ -1,4 +1,4 @@ -# Copyright (C) 1997, 1998, 2000, 2001, 2002 Free Software Foundation, Inc. +# Copyright (C) 1997,1998,2000,2001,2002,2003 Free Software Foundation, Inc. # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or @@ -35,11 +35,11 @@ CFLAGS-gconv_simple.c = -DSTATIC_GCONV endif -vpath %.c ../locale/programs +vpath %.c ../locale/programs ../intl iconv_prog-modules = iconv_charmap charmap charmap-dir linereader \ dummy-repertoire simple-hash xstrdup xmalloc -iconvconfig-modules = strtab xmalloc +iconvconfig-modules = strtab xmalloc hash-string extra-objs = $(iconv_prog-modules:=.o) $(iconvconfig-modules:=.o) CFLAGS-iconv_prog.c = -I../locale/programs CFLAGS-iconv_charmap.c = -I../locale/programs --- glibc-2.3.2/iconv/gconv_cache.c 2002-12-02 16:26:09.000000000 -0500 +++ glibc-2.3.2/iconv/gconv_cache.c 2003-08-21 08:36:59.000000000 -0400 @@ -1,5 +1,5 @@ /* Cache handling for iconv modules. - Copyright (C) 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2001. @@ -19,6 +19,7 @@ 02111-1307 USA. */ #include +#include #include #include #include @@ -28,6 +29,7 @@ #include #include +#include #include "../intl/hash-string.h" @@ -58,7 +60,7 @@ return -1; /* See whether the cache file exists. */ - fd = __open (GCONV_MODULES_CACHE, O_RDONLY); + fd = open_not_cancel (GCONV_MODULES_CACHE, O_RDONLY, 0); if (__builtin_expect (fd, 0) == -1) /* Not available. */ return -1; @@ -70,7 +72,7 @@ || (size_t) st.st_size < sizeof (struct gconvcache_header)) { close_and_exit: - __close (fd); + close_not_cancel_no_status (fd); return -1; } @@ -107,7 +109,7 @@ } /* We don't need the file descriptor anymore. */ - __close (fd); + close_not_cancel_no_status (fd); /* Check the consistency. */ header = (struct gconvcache_header *) gconv_cache; @@ -157,7 +159,7 @@ hashtab = (struct hash_entry *) ((char *) gconv_cache + header->hash_offset); - hval = hash_string (str); + hval = __hash_string (str); idx = hval % header->hash_size; hval2 = 1 + hval % (header->hash_size - 2); --- glibc-2.3.2/iconv/gconv_charset.h 2002-05-14 16:46:02.000000000 -0400 +++ glibc-2.3.2/iconv/gconv_charset.h 2003-08-21 08:36:59.000000000 -0400 @@ -1,5 +1,5 @@ /* Charset name normalization. - Copyright (C) 2001,02 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2001. @@ -22,7 +22,7 @@ #include -static inline void +static void strip (char *wp, const char *s) { int slash_count = 0; @@ -48,7 +48,7 @@ } -static inline char * __attribute__ ((unused)) +static inline char * __attribute__ ((unused, always_inline)) upstr (char *dst, const char *str) { char *cp = dst; @@ -56,8 +56,3 @@ /* nothing */; return dst; } - - -/* If NAME is an codeset alias expand it. */ -extern int __gconv_compare_alias (const char *name1, const char *name2) - internal_function; --- glibc-2.3.2/iconv/gconv_conf.c 2002-12-15 23:26:02.000000000 -0500 +++ glibc-2.3.2/iconv/gconv_conf.c 2003-09-19 22:37:01.000000000 -0400 @@ -1,5 +1,5 @@ /* Handle configuration data. - Copyright (C) 1997,98,99,2000,2001,2002 Free Software Foundation, Inc. + Copyright (C) 1997,98,99,2000,2001,2002,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -125,7 +125,7 @@ /* Add new alias. */ -static inline void +static void add_alias (char *rp, void *modules) { /* We now expect two more string. The strings are normalized @@ -178,7 +178,7 @@ /* Insert a data structure for a new module in the search tree. */ -static inline void +static void internal_function insert_module (struct gconv_module *newp, int tobefreed) { @@ -357,7 +357,9 @@ read_conf_file (const char *filename, const char *directory, size_t dir_len, void **modules, size_t *nmodules) { - FILE *fp = fopen (filename, "r"); + /* Note the file is opened with cancellation in the I/O functions + disabled. */ + FILE *fp = fopen (filename, "rc"); char *line = NULL; size_t line_len = 0; static int modcounter; --- glibc-2.3.2/iconv/gconv_db.c 2002-12-02 16:26:09.000000000 -0500 +++ glibc-2.3.2/iconv/gconv_db.c 2003-08-21 08:36:59.000000000 -0400 @@ -1,5 +1,5 @@ /* Provide access to the collection of available transformation modules. - Copyright (C) 1997,98,99,2000,2001,2002 Free Software Foundation, Inc. + Copyright (C) 1997,98,99,2000,2001,2002,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -27,7 +27,6 @@ #include #include -#include /* Simple data structure for alias mapping. We have two names, `from' --- glibc-2.3.2/iconv/gconv_int.h 2002-12-02 16:26:09.000000000 -0500 +++ glibc-2.3.2/iconv/gconv_int.h 2003-08-21 08:36:59.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc. +/* Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -262,6 +262,11 @@ size_t *irreversible) attribute_hidden; +/* If NAME is an codeset alias expand it. */ +extern int __gconv_compare_alias (const char *name1, const char *name2) + internal_function; + + /* Builtin transformations. */ #ifdef _LIBC # define __BUILTIN_TRANSFORM(Name) \ --- glibc-2.3.2/iconv/gconv_simple.c 2003-01-16 01:31:35.000000000 -0500 +++ glibc-2.3.2/iconv/gconv_simple.c 2003-08-21 08:36:59.000000000 -0400 @@ -72,6 +72,7 @@ static inline int +__attribute ((always_inline)) internal_ucs4_loop (struct __gconv_step *step, struct __gconv_step_data *step_data, const unsigned char **inptrp, const unsigned char *inend, @@ -113,6 +114,7 @@ #ifndef _STRING_ARCH_unaligned static inline int +__attribute ((always_inline)) internal_ucs4_loop_unaligned (struct __gconv_step *step, struct __gconv_step_data *step_data, const unsigned char **inptrp, @@ -161,6 +163,7 @@ static inline int +__attribute ((always_inline)) internal_ucs4_loop_single (struct __gconv_step *step, struct __gconv_step_data *step_data, const unsigned char **inptrp, @@ -219,6 +222,7 @@ static inline int +__attribute ((always_inline)) ucs4_internal_loop (struct __gconv_step *step, struct __gconv_step_data *step_data, const unsigned char **inptrp, const unsigned char *inend, @@ -283,6 +287,7 @@ #ifndef _STRING_ARCH_unaligned static inline int +__attribute ((always_inline)) ucs4_internal_loop_unaligned (struct __gconv_step *step, struct __gconv_step_data *step_data, const unsigned char **inptrp, @@ -352,6 +357,7 @@ static inline int +__attribute ((always_inline)) ucs4_internal_loop_single (struct __gconv_step *step, struct __gconv_step_data *step_data, const unsigned char **inptrp, @@ -426,6 +432,7 @@ static inline int +__attribute ((always_inline)) internal_ucs4le_loop (struct __gconv_step *step, struct __gconv_step_data *step_data, const unsigned char **inptrp, const unsigned char *inend, @@ -467,6 +474,7 @@ #ifndef _STRING_ARCH_unaligned static inline int +__attribute ((always_inline)) internal_ucs4le_loop_unaligned (struct __gconv_step *step, struct __gconv_step_data *step_data, const unsigned char **inptrp, @@ -518,6 +526,7 @@ static inline int +__attribute ((always_inline)) internal_ucs4le_loop_single (struct __gconv_step *step, struct __gconv_step_data *step_data, const unsigned char **inptrp, @@ -573,6 +582,7 @@ static inline int +__attribute ((always_inline)) ucs4le_internal_loop (struct __gconv_step *step, struct __gconv_step_data *step_data, const unsigned char **inptrp, const unsigned char *inend, @@ -638,6 +648,7 @@ #ifndef _STRING_ARCH_unaligned static inline int +__attribute ((always_inline)) ucs4le_internal_loop_unaligned (struct __gconv_step *step, struct __gconv_step_data *step_data, const unsigned char **inptrp, @@ -711,6 +722,7 @@ static inline int +__attribute ((always_inline)) ucs4le_internal_loop_single (struct __gconv_step *step, struct __gconv_step_data *step_data, const unsigned char **inptrp, --- glibc-2.3.2/iconv/iconv.h 2001-07-07 15:20:58.000000000 -0400 +++ glibc-2.3.2/iconv/iconv.h 2003-04-24 20:05:57.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998, 1999, 2000, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -31,9 +31,11 @@ /* Allocate descriptor for code conversion from codeset FROMCODE to - codeset TOCODE. */ -extern iconv_t iconv_open (__const char *__tocode, __const char *__fromcode) - __THROW; + codeset TOCODE. + + This function is a possible cancellation points and therefore not + marked with __THROW. */ +extern iconv_t iconv_open (__const char *__tocode, __const char *__fromcode); /* Convert at most *INBYTESLEFT bytes from *INBUF according to the code conversion algorithm specified by CD and place up to @@ -43,8 +45,11 @@ char **__restrict __outbuf, size_t *__restrict __outbytesleft); -/* Free resources allocated for descriptor CD for code conversion. */ -extern int iconv_close (iconv_t __cd) __THROW; +/* Free resources allocated for descriptor CD for code conversion. + + This function is a possible cancellation points and therefore not + marked with __THROW. */ +extern int iconv_close (iconv_t __cd); __END_DECLS --- glibc-2.3.2/iconv/iconv_prog.c 2003-02-22 14:20:07.000000000 -0500 +++ glibc-2.3.2/iconv/iconv_prog.c 2003-04-12 11:39:42.000000000 -0400 @@ -160,14 +160,16 @@ if (*errhand == '/') { --nslash; - ++errhand; + errhand = strchr (errhand, '\0'); } } - newp = (char *) alloca (errhand - to_code + nslash + 6 + 1); + newp = (char *) alloca (errhand - to_code + nslash + 7 + 1); cp = mempcpy (newp, to_code, errhand - to_code); while (nslash-- > 0) *cp++ = '/'; + if (cp[-1] != '/') + *cp++ = ','; memcpy (cp, "IGNORE", sizeof ("IGNORE")); to_code = newp; @@ -496,8 +498,9 @@ switch (errno) { case EILSEQ: - error (0, 0, _("illegal input sequence at position %ld"), - (long) (addr - start)); + if (! omit_invalid) + error (0, 0, _("illegal input sequence at position %ld"), + (long int) (addr - start)); break; case EINVAL: error (0, 0, _("\ --- glibc-2.3.2/iconv/iconvconfig.c 2003-01-02 14:59:10.000000000 -0500 +++ glibc-2.3.2/iconv/iconvconfig.c 2003-08-21 08:36:59.000000000 -0400 @@ -784,7 +784,7 @@ newp->name = str; newp->strent = strent; newp->module_idx = -1; - newp->hashval = hash_string (str); + newp->hashval = __hash_string (str); ++nnames; --- glibc-2.3.2/iconv/loop.c 2003-01-16 01:30:13.000000000 -0500 +++ glibc-2.3.2/iconv/loop.c 2003-08-21 08:36:59.000000000 -0400 @@ -257,6 +257,7 @@ /* The function returns the status, as defined in gconv.h. */ static inline int +__attribute ((always_inline)) FCTNAME (LOOPFCT) (struct __gconv_step *step, struct __gconv_step_data *step_data, const unsigned char **inptrp, const unsigned char *inend, @@ -342,6 +343,7 @@ # define SINGLE(fct) SINGLE2 (fct) # define SINGLE2(fct) fct##_single static inline int +__attribute ((always_inline)) SINGLE(LOOPFCT) (struct __gconv_step *step, struct __gconv_step_data *step_data, const unsigned char **inptrp, const unsigned char *inend, --- glibc-2.3.2/iconv/tst-iconv3.c 2002-03-28 18:41:38.000000000 -0500 +++ glibc-2.3.2/iconv/tst-iconv3.c 2003-08-21 08:36:59.000000000 -0400 @@ -42,7 +42,7 @@ printf ("inptr change: %td\n", inptr - inbuf); printf ("inlen change: %zd\n", BUFSIZE - inbytes_left); - printf ("outptr change: %zd\n", outptr - (char *) outbuf); + printf ("outptr change: %td\n", outptr - (char *) outbuf); printf ("outlen change: %zd\n", BUFSIZE * 4 - outbytes_left); result = 1; } --- glibc-2.3.2/iconvdata/CP932.irreversible 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/iconvdata/CP932.irreversible 2003-08-14 04:45:33.000000000 -0400 @@ -0,0 +1,407 @@ +0x5C 0x00A5 +0x7E 0x203E +0x815C 0x2014 +0x8160 0x301C +0x8161 0x2016 +0x817C 0x2212 +0x8191 0x00A2 +0x8192 0x00A3 +0x81CA 0x00AC +0x8790 0x2252 +0x8791 0x2261 +0x8792 0x222B +0x8795 0x221A +0x8796 0x22A5 +0x8797 0x2220 +0x879A 0x2235 +0x879B 0x2229 +0x879C 0x222A +0xED40 0x7E8A +0xED41 0x891C +0xED42 0x9348 +0xED43 0x9288 +0xED44 0x84DC +0xED45 0x4FC9 +0xED46 0x70BB +0xED47 0x6631 +0xED48 0x68C8 +0xED49 0x92F9 +0xED4A 0x66FB +0xED4B 0x5F45 +0xED4C 0x4E28 +0xED4D 0x4EE1 +0xED4E 0x4EFC +0xED4F 0x4F00 +0xED50 0x4F03 +0xED51 0x4F39 +0xED52 0x4F56 +0xED53 0x4F92 +0xED54 0x4F8A +0xED55 0x4F9A +0xED56 0x4F94 +0xED57 0x4FCD +0xED58 0x5040 +0xED59 0x5022 +0xED5A 0x4FFF +0xED5B 0x501E +0xED5C 0x5046 +0xED5D 0x5070 +0xED5E 0x5042 +0xED5F 0x5094 +0xED60 0x50F4 +0xED61 0x50D8 +0xED62 0x514A +0xED63 0x5164 +0xED64 0x519D +0xED65 0x51BE +0xED66 0x51EC +0xED67 0x5215 +0xED68 0x529C +0xED69 0x52A6 +0xED6A 0x52C0 +0xED6B 0x52DB +0xED6C 0x5300 +0xED6D 0x5307 +0xED6E 0x5324 +0xED6F 0x5372 +0xED70 0x5393 +0xED71 0x53B2 +0xED72 0x53DD +0xED73 0xFA0E +0xED74 0x549C +0xED75 0x548A +0xED76 0x54A9 +0xED77 0x54FF +0xED78 0x5586 +0xED79 0x5759 +0xED7A 0x5765 +0xED7B 0x57AC +0xED7C 0x57C8 +0xED7D 0x57C7 +0xED7E 0xFA0F +0xED80 0xFA10 +0xED81 0x589E +0xED82 0x58B2 +0xED83 0x590B +0xED84 0x5953 +0xED85 0x595B +0xED86 0x595D +0xED87 0x5963 +0xED88 0x59A4 +0xED89 0x59BA +0xED8A 0x5B56 +0xED8B 0x5BC0 +0xED8C 0x752F +0xED8D 0x5BD8 +0xED8E 0x5BEC +0xED8F 0x5C1E +0xED90 0x5CA6 +0xED91 0x5CBA +0xED92 0x5CF5 +0xED93 0x5D27 +0xED94 0x5D53 +0xED95 0xFA11 +0xED96 0x5D42 +0xED97 0x5D6D +0xED98 0x5DB8 +0xED99 0x5DB9 +0xED9A 0x5DD0 +0xED9B 0x5F21 +0xED9C 0x5F34 +0xED9D 0x5F67 +0xED9E 0x5FB7 +0xED9F 0x5FDE +0xEDA0 0x605D +0xEDA1 0x6085 +0xEDA2 0x608A +0xEDA3 0x60DE +0xEDA4 0x60D5 +0xEDA5 0x6120 +0xEDA6 0x60F2 +0xEDA7 0x6111 +0xEDA8 0x6137 +0xEDA9 0x6130 +0xEDAA 0x6198 +0xEDAB 0x6213 +0xEDAC 0x62A6 +0xEDAD 0x63F5 +0xEDAE 0x6460 +0xEDAF 0x649D +0xEDB0 0x64CE +0xEDB1 0x654E +0xEDB2 0x6600 +0xEDB3 0x6615 +0xEDB4 0x663B +0xEDB5 0x6609 +0xEDB6 0x662E +0xEDB7 0x661E +0xEDB8 0x6624 +0xEDB9 0x6665 +0xEDBA 0x6657 +0xEDBB 0x6659 +0xEDBC 0xFA12 +0xEDBD 0x6673 +0xEDBE 0x6699 +0xEDBF 0x66A0 +0xEDC0 0x66B2 +0xEDC1 0x66BF +0xEDC2 0x66FA +0xEDC3 0x670E +0xEDC4 0xF929 +0xEDC5 0x6766 +0xEDC6 0x67BB +0xEDC7 0x6852 +0xEDC8 0x67C0 +0xEDC9 0x6801 +0xEDCA 0x6844 +0xEDCB 0x68CF +0xEDCC 0xFA13 +0xEDCD 0x6968 +0xEDCE 0xFA14 +0xEDCF 0x6998 +0xEDD0 0x69E2 +0xEDD1 0x6A30 +0xEDD2 0x6A6B +0xEDD3 0x6A46 +0xEDD4 0x6A73 +0xEDD5 0x6A7E +0xEDD6 0x6AE2 +0xEDD7 0x6AE4 +0xEDD8 0x6BD6 +0xEDD9 0x6C3F +0xEDDA 0x6C5C +0xEDDB 0x6C86 +0xEDDC 0x6C6F +0xEDDD 0x6CDA +0xEDDE 0x6D04 +0xEDDF 0x6D87 +0xEDE0 0x6D6F +0xEDE1 0x6D96 +0xEDE2 0x6DAC +0xEDE3 0x6DCF +0xEDE4 0x6DF8 +0xEDE5 0x6DF2 +0xEDE6 0x6DFC +0xEDE7 0x6E39 +0xEDE8 0x6E5C +0xEDE9 0x6E27 +0xEDEA 0x6E3C +0xEDEB 0x6EBF +0xEDEC 0x6F88 +0xEDED 0x6FB5 +0xEDEE 0x6FF5 +0xEDEF 0x7005 +0xEDF0 0x7007 +0xEDF1 0x7028 +0xEDF2 0x7085 +0xEDF3 0x70AB +0xEDF4 0x710F +0xEDF5 0x7104 +0xEDF6 0x715C +0xEDF7 0x7146 +0xEDF8 0x7147 +0xEDF9 0xFA15 +0xEDFA 0x71C1 +0xEDFB 0x71FE +0xEDFC 0x72B1 +0xEE40 0x72BE +0xEE41 0x7324 +0xEE42 0xFA16 +0xEE43 0x7377 +0xEE44 0x73BD +0xEE45 0x73C9 +0xEE46 0x73D6 +0xEE47 0x73E3 +0xEE48 0x73D2 +0xEE49 0x7407 +0xEE4A 0x73F5 +0xEE4B 0x7426 +0xEE4C 0x742A +0xEE4D 0x7429 +0xEE4E 0x742E +0xEE4F 0x7462 +0xEE50 0x7489 +0xEE51 0x749F +0xEE52 0x7501 +0xEE53 0x756F +0xEE54 0x7682 +0xEE55 0x769C +0xEE56 0x769E +0xEE57 0x769B +0xEE58 0x76A6 +0xEE59 0xFA17 +0xEE5A 0x7746 +0xEE5B 0x52AF +0xEE5C 0x7821 +0xEE5D 0x784E +0xEE5E 0x7864 +0xEE5F 0x787A +0xEE60 0x7930 +0xEE61 0xFA18 +0xEE62 0xFA19 +0xEE63 0xFA1A +0xEE64 0x7994 +0xEE65 0xFA1B +0xEE66 0x799B +0xEE67 0x7AD1 +0xEE68 0x7AE7 +0xEE69 0xFA1C +0xEE6A 0x7AEB +0xEE6B 0x7B9E +0xEE6C 0xFA1D +0xEE6D 0x7D48 +0xEE6E 0x7D5C +0xEE6F 0x7DB7 +0xEE70 0x7DA0 +0xEE71 0x7DD6 +0xEE72 0x7E52 +0xEE73 0x7F47 +0xEE74 0x7FA1 +0xEE75 0xFA1E +0xEE76 0x8301 +0xEE77 0x8362 +0xEE78 0x837F +0xEE79 0x83C7 +0xEE7A 0x83F6 +0xEE7B 0x8448 +0xEE7C 0x84B4 +0xEE7D 0x8553 +0xEE7E 0x8559 +0xEE80 0x856B +0xEE81 0xFA1F +0xEE82 0x85B0 +0xEE83 0xFA20 +0xEE84 0xFA21 +0xEE85 0x8807 +0xEE86 0x88F5 +0xEE87 0x8A12 +0xEE88 0x8A37 +0xEE89 0x8A79 +0xEE8A 0x8AA7 +0xEE8B 0x8ABE +0xEE8C 0x8ADF +0xEE8D 0xFA22 +0xEE8E 0x8AF6 +0xEE8F 0x8B53 +0xEE90 0x8B7F +0xEE91 0x8CF0 +0xEE92 0x8CF4 +0xEE93 0x8D12 +0xEE94 0x8D76 +0xEE95 0xFA23 +0xEE96 0x8ECF +0xEE97 0xFA24 +0xEE98 0xFA25 +0xEE99 0x9067 +0xEE9A 0x90DE +0xEE9B 0xFA26 +0xEE9C 0x9115 +0xEE9D 0x9127 +0xEE9E 0x91DA +0xEE9F 0x91D7 +0xEEA0 0x91DE +0xEEA1 0x91ED +0xEEA2 0x91EE +0xEEA3 0x91E4 +0xEEA4 0x91E5 +0xEEA5 0x9206 +0xEEA6 0x9210 +0xEEA7 0x920A +0xEEA8 0x923A +0xEEA9 0x9240 +0xEEAA 0x923C +0xEEAB 0x924E +0xEEAC 0x9259 +0xEEAD 0x9251 +0xEEAE 0x9239 +0xEEAF 0x9267 +0xEEB0 0x92A7 +0xEEB1 0x9277 +0xEEB2 0x9278 +0xEEB3 0x92E7 +0xEEB4 0x92D7 +0xEEB5 0x92D9 +0xEEB6 0x92D0 +0xEEB7 0xFA27 +0xEEB8 0x92D5 +0xEEB9 0x92E0 +0xEEBA 0x92D3 +0xEEBB 0x9325 +0xEEBC 0x9321 +0xEEBD 0x92FB +0xEEBE 0xFA28 +0xEEBF 0x931E +0xEEC0 0x92FF +0xEEC1 0x931D +0xEEC2 0x9302 +0xEEC3 0x9370 +0xEEC4 0x9357 +0xEEC5 0x93A4 +0xEEC6 0x93C6 +0xEEC7 0x93DE +0xEEC8 0x93F8 +0xEEC9 0x9431 +0xEECA 0x9445 +0xEECB 0x9448 +0xEECC 0x9592 +0xEECD 0xF9DC +0xEECE 0xFA29 +0xEECF 0x969D +0xEED0 0x96AF +0xEED1 0x9733 +0xEED2 0x973B +0xEED3 0x9743 +0xEED4 0x974D +0xEED5 0x974F +0xEED6 0x9751 +0xEED7 0x9755 +0xEED8 0x9857 +0xEED9 0x9865 +0xEEDA 0xFA2A +0xEEDB 0xFA2B +0xEEDC 0x9927 +0xEEDD 0xFA2C +0xEEDE 0x999E +0xEEDF 0x9A4E +0xEEE0 0x9AD9 +0xEEE1 0x9ADC +0xEEE2 0x9B75 +0xEEE3 0x9B72 +0xEEE4 0x9B8F +0xEEE5 0x9BB1 +0xEEE6 0x9BBB +0xEEE7 0x9C00 +0xEEE8 0x9D70 +0xEEE9 0x9D6B +0xEEEA 0xFA2D +0xEEEB 0x9E19 +0xEEEC 0x9ED1 +0xEEEF 0x2170 +0xEEF0 0x2171 +0xEEF1 0x2172 +0xEEF2 0x2173 +0xEEF3 0x2174 +0xEEF4 0x2175 +0xEEF5 0x2176 +0xEEF6 0x2177 +0xEEF7 0x2178 +0xEEF8 0x2179 +0xEEF9 0xFFE2 +0xEEFA 0xFFE4 +0xEEFB 0xFF07 +0xEEFC 0xFF02 +0xFA4A 0x2160 +0xFA4B 0x2161 +0xFA4C 0x2162 +0xFA4D 0x2163 +0xFA4E 0x2164 +0xFA4F 0x2165 +0xFA50 0x2166 +0xFA51 0x2167 +0xFA52 0x2168 +0xFA53 0x2169 +0xFA54 0xFFE2 +0xFA58 0x3231 +0xFA59 0x2116 +0xFA5A 0x2121 +0xFA5B 0x2235 --- glibc-2.3.2/iconvdata/EUC-JP-MS.irreversible 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/iconvdata/EUC-JP-MS.irreversible 2003-08-14 04:45:33.000000000 -0400 @@ -0,0 +1,34 @@ +0x5C 0x00A5 +0x7E 0x203E +0x8FA2B7 0xFF5E +0x8FA2C3 0x00A6 +0x8FA2F1 0x2116 +0x8FF3FD 0x2160 +0x8FF3FE 0x2161 +0x8FF4A1 0x2162 +0x8FF4A2 0x2163 +0x8FF4A3 0x2164 +0x8FF4A4 0x2165 +0x8FF4A5 0x2166 +0x8FF4A6 0x2167 +0x8FF4A7 0x2168 +0x8FF4A8 0x2169 +0x8FF4AB 0x3231 +0x8FF4AC 0x2116 +0x8FF4AD 0x2121 +0xA1BD 0x2014 +0xA1C1 0x301C +0xA1C2 0x2016 +0xA1DD 0x2212 +0xA1F1 0x00A2 +0xA1F2 0x00A3 +0xA2CC 0x00AC +0xADF0 0x2252 +0xADF1 0x2261 +0xADF2 0x222B +0xADF5 0x221A +0xADF6 0x22A5 +0xADF7 0x2220 +0xADFA 0x2235 +0xADFB 0x2229 +0xADFC 0x222A --- glibc-2.3.2/iconvdata/Makefile 2003-02-21 20:01:16.000000000 -0500 +++ glibc-2.3.2/iconvdata/Makefile 2003-08-21 08:36:59.000000000 -0400 @@ -51,14 +51,14 @@ GB18030 ISO-2022-CN-EXT VISCII GBBIG5 CP10007 KOI8-T \ GEORGIAN-PS GEORGIAN-ACADEMY ISO-IR-209 MAC-SAMI ARMSCII-8 \ TCVN5712-1 libJISX0213 EUC-JISX0213 SHIFT_JISX0213 \ - ISO-2022-JP-3 TSCII IBM866NAV + ISO-2022-JP-3 TSCII IBM866NAV CP932 EUC-JP-MS modules.so := $(addsuffix .so, $(modules)) include ../Makeconfig ifeq (yes,$(build-shared)) -tests = bug-iconv1 bug-iconv2 tst-loading tst-e2big tst-iconv4 +tests = bug-iconv1 bug-iconv2 tst-loading tst-e2big tst-iconv4 bug-iconv4 ifeq ($(have-thread-library),yes) tests += bug-iconv3 endif @@ -84,6 +84,8 @@ $(objpfx)UHC.so: $(objpfx)libKSC.so LDFLAGS-EUC-JP.so = $(LDFLAGS-rpath-ORIGIN) $(objpfx)EUC-JP.so: $(objpfx)libJIS.so +LDFLAGS-EUC-JP-MS.so = $(LDFLAGS-rpath-ORIGIN) +$(objpfx)EUC-JP-MS.so: $(objpfx)libJIS.so LDFLAGS-EUC-CN.so = $(LDFLAGS-rpath-ORIGIN) $(objpfx)EUC-CN.so: $(objpfx)libGB.so LDFLAGS-EUC-TW.so = $(LDFLAGS-rpath-ORIGIN) --- glibc-2.3.2/iconvdata/bug-iconv4.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/iconvdata/bug-iconv4.c 2003-03-26 03:10:58.000000000 -0500 @@ -0,0 +1,78 @@ +/* Contributed by Jiro SEKIBA . */ +#include +#include +#include +#include +#include +#include + +#define UCS_STR "\x4e\x8c" /* EUC-TW 0xa2a2, EUC-JP 0x */ + +static const char *to_code; + +static bool +xiconv (iconv_t cd, int out_size) +{ + unsigned char euc[4]; + char *inp = (char *) UCS_STR; + char *outp = euc; + size_t inbytesleft = strlen (UCS_STR); + size_t outbytesleft = out_size; + size_t ret; + bool fail = false; + + errno = 0; + ret = iconv (cd, &inp, &inbytesleft, &outp, &outbytesleft); + if (errno || ret == (size_t) -1) + { + fail = out_size == 4 || errno != E2BIG; + printf ("expected %d (E2BIG), got %d (%m)\n", E2BIG, errno); + } + else + { + printf ("%s: 0x%02x%02x\n", to_code, euc[0], euc[1]); + if (out_size == 1) + fail = true; + } + + return fail; +} + + +static iconv_t +xiconv_open (const char *code) +{ + iconv_t cd; + to_code = code; + errno = 0; + if (errno || (cd = iconv_open (to_code, "UCS-2BE")) == (iconv_t) -1) + { + puts ("Can't open converter"); + exit (1); + } + return cd; +} + + +int +main (void) +{ + iconv_t cd; + int result = 0; + + cd = xiconv_open ("EUC-TW"); + result |= xiconv (cd, 4) == true; + puts ("---"); + result |= xiconv (cd, 1) == true; + puts ("---"); + iconv_close (cd); + + cd = xiconv_open ("EUC-JP"); + result |= xiconv (cd, 4) == true; + puts ("---"); + result |= xiconv (cd, 1) == true; + puts ("---"); + iconv_close (cd); + + return result; +} --- glibc-2.3.2/iconvdata/cns11643.h 2002-04-20 03:31:30.000000000 -0400 +++ glibc-2.3.2/iconvdata/cns11643.h 2003-08-21 08:37:00.000000000 -0400 @@ -1,5 +1,5 @@ /* Access functions for CNS 11643 handling. - Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 1998,1999,2000,2001,2002,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1998. @@ -40,6 +40,7 @@ static inline uint32_t +__attribute ((always_inline)) cns11643_to_ucs4 (const char **s, size_t avail, unsigned char offset) { unsigned char ch = *(*s); @@ -140,6 +141,7 @@ static inline size_t +__attribute ((always_inline)) ucs4_to_cns11643 (uint32_t wch, char *s, size_t avail) { unsigned int ch = (unsigned int) wch; --- glibc-2.3.2/iconvdata/cns11643l1.h 2001-07-07 15:20:59.000000000 -0400 +++ glibc-2.3.2/iconvdata/cns11643l1.h 2003-08-21 08:37:00.000000000 -0400 @@ -1,5 +1,5 @@ /* Access functions for CNS 11643, plane 1 handling. - Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1998. @@ -26,6 +26,7 @@ static inline uint32_t +__attribute ((always_inline)) cns11643l1_to_ucs4 (const unsigned char **s, size_t avail, unsigned char offset) { @@ -71,6 +72,7 @@ static inline size_t +__attribute ((always_inline)) ucs4_to_cns11643l1 (uint32_t wch, unsigned char *s, size_t avail) { unsigned int ch = (unsigned int) wch; --- glibc-2.3.2/iconvdata/cns11643l2.h 2001-07-07 15:20:59.000000000 -0400 +++ glibc-2.3.2/iconvdata/cns11643l2.h 2003-08-21 08:37:00.000000000 -0400 @@ -1,5 +1,5 @@ /* Access functions for CNS 11643, plane 2 handling. - Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2001, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1998. @@ -26,6 +26,7 @@ static inline uint32_t +__attribute ((always_inline)) cns11643l2_to_ucs4 (const unsigned char **s, size_t avail, unsigned char offset) { @@ -58,6 +59,7 @@ static inline size_t +__attribute ((always_inline)) ucs4_to_cns11643l2 (uint32_t wch, unsigned char *s, size_t avail) { unsigned int ch = (unsigned int) wch; --- glibc-2.3.2/iconvdata/cp932.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/iconvdata/cp932.c 2003-08-14 04:34:48.000000000 -0400 @@ -0,0 +1,4728 @@ +/* Mapping tables for CP932 handling. + Copyright (C) 1997,1998,1999,2000,2001,2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by MORIYAMA Masayuki , 2003. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include +#include +#include + +static const uint16_t cjk_block1[703] = +{ + /* start = 0x8140, end = 0x84be */ + [ 0] = 0x3000, [ 1] = 0x3001, [ 2] = 0x3002, [ 3] = 0xff0c, + [ 4] = 0xff0e, [ 5] = 0x30fb, [ 6] = 0xff1a, [ 7] = 0xff1b, + [ 8] = 0xff1f, [ 9] = 0xff01, [ 10] = 0x309b, [ 11] = 0x309c, + [ 12] = 0x00b4, [ 13] = 0xff40, [ 14] = 0x00a8, [ 15] = 0xff3e, + [ 16] = 0xffe3, [ 17] = 0xff3f, [ 18] = 0x30fd, [ 19] = 0x30fe, + [ 20] = 0x309d, [ 21] = 0x309e, [ 22] = 0x3003, [ 23] = 0x4edd, + [ 24] = 0x3005, [ 25] = 0x3006, [ 26] = 0x3007, [ 27] = 0x30fc, + [ 28] = 0x2015, [ 29] = 0x2010, [ 30] = 0xff0f, [ 31] = 0xff3c, + [ 32] = 0xff5e, [ 33] = 0x2225, [ 34] = 0xff5c, [ 35] = 0x2026, + [ 36] = 0x2025, [ 37] = 0x2018, [ 38] = 0x2019, [ 39] = 0x201c, + [ 40] = 0x201d, [ 41] = 0xff08, [ 42] = 0xff09, [ 43] = 0x3014, + [ 44] = 0x3015, [ 45] = 0xff3b, [ 46] = 0xff3d, [ 47] = 0xff5b, + [ 48] = 0xff5d, [ 49] = 0x3008, [ 50] = 0x3009, [ 51] = 0x300a, + [ 52] = 0x300b, [ 53] = 0x300c, [ 54] = 0x300d, [ 55] = 0x300e, + [ 56] = 0x300f, [ 57] = 0x3010, [ 58] = 0x3011, [ 59] = 0xff0b, + [ 60] = 0xff0d, [ 61] = 0x00b1, [ 62] = 0x00d7, [ 64] = 0x00f7, + [ 65] = 0xff1d, [ 66] = 0x2260, [ 67] = 0xff1c, [ 68] = 0xff1e, + [ 69] = 0x2266, [ 70] = 0x2267, [ 71] = 0x221e, [ 72] = 0x2234, + [ 73] = 0x2642, [ 74] = 0x2640, [ 75] = 0x00b0, [ 76] = 0x2032, + [ 77] = 0x2033, [ 78] = 0x2103, [ 79] = 0xffe5, [ 80] = 0xff04, + [ 81] = 0xffe0, [ 82] = 0xffe1, [ 83] = 0xff05, [ 84] = 0xff03, + [ 85] = 0xff06, [ 86] = 0xff0a, [ 87] = 0xff20, [ 88] = 0x00a7, + [ 89] = 0x2606, [ 90] = 0x2605, [ 91] = 0x25cb, [ 92] = 0x25cf, + [ 93] = 0x25ce, [ 94] = 0x25c7, [ 95] = 0x25c6, [ 96] = 0x25a1, + [ 97] = 0x25a0, [ 98] = 0x25b3, [ 99] = 0x25b2, [ 100] = 0x25bd, + [ 101] = 0x25bc, [ 102] = 0x203b, [ 103] = 0x3012, [ 104] = 0x2192, + [ 105] = 0x2190, [ 106] = 0x2191, [ 107] = 0x2193, [ 108] = 0x3013, + [ 120] = 0x2208, [ 121] = 0x220b, [ 122] = 0x2286, [ 123] = 0x2287, + [ 124] = 0x2282, [ 125] = 0x2283, [ 126] = 0x222a, [ 127] = 0x2229, + [ 136] = 0x2227, [ 137] = 0x2228, [ 138] = 0xffe2, [ 139] = 0x21d2, + [ 140] = 0x21d4, [ 141] = 0x2200, [ 142] = 0x2203, [ 154] = 0x2220, + [ 155] = 0x22a5, [ 156] = 0x2312, [ 157] = 0x2202, [ 158] = 0x2207, + [ 159] = 0x2261, [ 160] = 0x2252, [ 161] = 0x226a, [ 162] = 0x226b, + [ 163] = 0x221a, [ 164] = 0x223d, [ 165] = 0x221d, [ 166] = 0x2235, + [ 167] = 0x222b, [ 168] = 0x222c, [ 176] = 0x212b, [ 177] = 0x2030, + [ 178] = 0x266f, [ 179] = 0x266d, [ 180] = 0x266a, [ 181] = 0x2020, + [ 182] = 0x2021, [ 183] = 0x00b6, [ 188] = 0x25ef, [ 207] = 0xff10, + [ 208] = 0xff11, [ 209] = 0xff12, [ 210] = 0xff13, [ 211] = 0xff14, + [ 212] = 0xff15, [ 213] = 0xff16, [ 214] = 0xff17, [ 215] = 0xff18, + [ 216] = 0xff19, [ 224] = 0xff21, [ 225] = 0xff22, [ 226] = 0xff23, + [ 227] = 0xff24, [ 228] = 0xff25, [ 229] = 0xff26, [ 230] = 0xff27, + [ 231] = 0xff28, [ 232] = 0xff29, [ 233] = 0xff2a, [ 234] = 0xff2b, + [ 235] = 0xff2c, [ 236] = 0xff2d, [ 237] = 0xff2e, [ 238] = 0xff2f, + [ 239] = 0xff30, [ 240] = 0xff31, [ 241] = 0xff32, [ 242] = 0xff33, + [ 243] = 0xff34, [ 244] = 0xff35, [ 245] = 0xff36, [ 246] = 0xff37, + [ 247] = 0xff38, [ 248] = 0xff39, [ 249] = 0xff3a, [ 257] = 0xff41, + [ 258] = 0xff42, [ 259] = 0xff43, [ 260] = 0xff44, [ 261] = 0xff45, + [ 262] = 0xff46, [ 263] = 0xff47, [ 264] = 0xff48, [ 265] = 0xff49, + [ 266] = 0xff4a, [ 267] = 0xff4b, [ 268] = 0xff4c, [ 269] = 0xff4d, + [ 270] = 0xff4e, [ 271] = 0xff4f, [ 272] = 0xff50, [ 273] = 0xff51, + [ 274] = 0xff52, [ 275] = 0xff53, [ 276] = 0xff54, [ 277] = 0xff55, + [ 278] = 0xff56, [ 279] = 0xff57, [ 280] = 0xff58, [ 281] = 0xff59, + [ 282] = 0xff5a, [ 287] = 0x3041, [ 288] = 0x3042, [ 289] = 0x3043, + [ 290] = 0x3044, [ 291] = 0x3045, [ 292] = 0x3046, [ 293] = 0x3047, + [ 294] = 0x3048, [ 295] = 0x3049, [ 296] = 0x304a, [ 297] = 0x304b, + [ 298] = 0x304c, [ 299] = 0x304d, [ 300] = 0x304e, [ 301] = 0x304f, + [ 302] = 0x3050, [ 303] = 0x3051, [ 304] = 0x3052, [ 305] = 0x3053, + [ 306] = 0x3054, [ 307] = 0x3055, [ 308] = 0x3056, [ 309] = 0x3057, + [ 310] = 0x3058, [ 311] = 0x3059, [ 312] = 0x305a, [ 313] = 0x305b, + [ 314] = 0x305c, [ 315] = 0x305d, [ 316] = 0x305e, [ 317] = 0x305f, + [ 318] = 0x3060, [ 319] = 0x3061, [ 320] = 0x3062, [ 321] = 0x3063, + [ 322] = 0x3064, [ 323] = 0x3065, [ 324] = 0x3066, [ 325] = 0x3067, + [ 326] = 0x3068, [ 327] = 0x3069, [ 328] = 0x306a, [ 329] = 0x306b, + [ 330] = 0x306c, [ 331] = 0x306d, [ 332] = 0x306e, [ 333] = 0x306f, + [ 334] = 0x3070, [ 335] = 0x3071, [ 336] = 0x3072, [ 337] = 0x3073, + [ 338] = 0x3074, [ 339] = 0x3075, [ 340] = 0x3076, [ 341] = 0x3077, + [ 342] = 0x3078, [ 343] = 0x3079, [ 344] = 0x307a, [ 345] = 0x307b, + [ 346] = 0x307c, [ 347] = 0x307d, [ 348] = 0x307e, [ 349] = 0x307f, + [ 350] = 0x3080, [ 351] = 0x3081, [ 352] = 0x3082, [ 353] = 0x3083, + [ 354] = 0x3084, [ 355] = 0x3085, [ 356] = 0x3086, [ 357] = 0x3087, + [ 358] = 0x3088, [ 359] = 0x3089, [ 360] = 0x308a, [ 361] = 0x308b, + [ 362] = 0x308c, [ 363] = 0x308d, [ 364] = 0x308e, [ 365] = 0x308f, + [ 366] = 0x3090, [ 367] = 0x3091, [ 368] = 0x3092, [ 369] = 0x3093, + [ 384] = 0x30a1, [ 385] = 0x30a2, [ 386] = 0x30a3, [ 387] = 0x30a4, + [ 388] = 0x30a5, [ 389] = 0x30a6, [ 390] = 0x30a7, [ 391] = 0x30a8, + [ 392] = 0x30a9, [ 393] = 0x30aa, [ 394] = 0x30ab, [ 395] = 0x30ac, + [ 396] = 0x30ad, [ 397] = 0x30ae, [ 398] = 0x30af, [ 399] = 0x30b0, + [ 400] = 0x30b1, [ 401] = 0x30b2, [ 402] = 0x30b3, [ 403] = 0x30b4, + [ 404] = 0x30b5, [ 405] = 0x30b6, [ 406] = 0x30b7, [ 407] = 0x30b8, + [ 408] = 0x30b9, [ 409] = 0x30ba, [ 410] = 0x30bb, [ 411] = 0x30bc, + [ 412] = 0x30bd, [ 413] = 0x30be, [ 414] = 0x30bf, [ 415] = 0x30c0, + [ 416] = 0x30c1, [ 417] = 0x30c2, [ 418] = 0x30c3, [ 419] = 0x30c4, + [ 420] = 0x30c5, [ 421] = 0x30c6, [ 422] = 0x30c7, [ 423] = 0x30c8, + [ 424] = 0x30c9, [ 425] = 0x30ca, [ 426] = 0x30cb, [ 427] = 0x30cc, + [ 428] = 0x30cd, [ 429] = 0x30ce, [ 430] = 0x30cf, [ 431] = 0x30d0, + [ 432] = 0x30d1, [ 433] = 0x30d2, [ 434] = 0x30d3, [ 435] = 0x30d4, + [ 436] = 0x30d5, [ 437] = 0x30d6, [ 438] = 0x30d7, [ 439] = 0x30d8, + [ 440] = 0x30d9, [ 441] = 0x30da, [ 442] = 0x30db, [ 443] = 0x30dc, + [ 444] = 0x30dd, [ 445] = 0x30de, [ 446] = 0x30df, [ 448] = 0x30e0, + [ 449] = 0x30e1, [ 450] = 0x30e2, [ 451] = 0x30e3, [ 452] = 0x30e4, + [ 453] = 0x30e5, [ 454] = 0x30e6, [ 455] = 0x30e7, [ 456] = 0x30e8, + [ 457] = 0x30e9, [ 458] = 0x30ea, [ 459] = 0x30eb, [ 460] = 0x30ec, + [ 461] = 0x30ed, [ 462] = 0x30ee, [ 463] = 0x30ef, [ 464] = 0x30f0, + [ 465] = 0x30f1, [ 466] = 0x30f2, [ 467] = 0x30f3, [ 468] = 0x30f4, + [ 469] = 0x30f5, [ 470] = 0x30f6, [ 479] = 0x0391, [ 480] = 0x0392, + [ 481] = 0x0393, [ 482] = 0x0394, [ 483] = 0x0395, [ 484] = 0x0396, + [ 485] = 0x0397, [ 486] = 0x0398, [ 487] = 0x0399, [ 488] = 0x039a, + [ 489] = 0x039b, [ 490] = 0x039c, [ 491] = 0x039d, [ 492] = 0x039e, + [ 493] = 0x039f, [ 494] = 0x03a0, [ 495] = 0x03a1, [ 496] = 0x03a3, + [ 497] = 0x03a4, [ 498] = 0x03a5, [ 499] = 0x03a6, [ 500] = 0x03a7, + [ 501] = 0x03a8, [ 502] = 0x03a9, [ 511] = 0x03b1, [ 512] = 0x03b2, + [ 513] = 0x03b3, [ 514] = 0x03b4, [ 515] = 0x03b5, [ 516] = 0x03b6, + [ 517] = 0x03b7, [ 518] = 0x03b8, [ 519] = 0x03b9, [ 520] = 0x03ba, + [ 521] = 0x03bb, [ 522] = 0x03bc, [ 523] = 0x03bd, [ 524] = 0x03be, + [ 525] = 0x03bf, [ 526] = 0x03c0, [ 527] = 0x03c1, [ 528] = 0x03c3, + [ 529] = 0x03c4, [ 530] = 0x03c5, [ 531] = 0x03c6, [ 532] = 0x03c7, + [ 533] = 0x03c8, [ 534] = 0x03c9, [ 576] = 0x0410, [ 577] = 0x0411, + [ 578] = 0x0412, [ 579] = 0x0413, [ 580] = 0x0414, [ 581] = 0x0415, + [ 582] = 0x0401, [ 583] = 0x0416, [ 584] = 0x0417, [ 585] = 0x0418, + [ 586] = 0x0419, [ 587] = 0x041a, [ 588] = 0x041b, [ 589] = 0x041c, + [ 590] = 0x041d, [ 591] = 0x041e, [ 592] = 0x041f, [ 593] = 0x0420, + [ 594] = 0x0421, [ 595] = 0x0422, [ 596] = 0x0423, [ 597] = 0x0424, + [ 598] = 0x0425, [ 599] = 0x0426, [ 600] = 0x0427, [ 601] = 0x0428, + [ 602] = 0x0429, [ 603] = 0x042a, [ 604] = 0x042b, [ 605] = 0x042c, + [ 606] = 0x042d, [ 607] = 0x042e, [ 608] = 0x042f, [ 624] = 0x0430, + [ 625] = 0x0431, [ 626] = 0x0432, [ 627] = 0x0433, [ 628] = 0x0434, + [ 629] = 0x0435, [ 630] = 0x0451, [ 631] = 0x0436, [ 632] = 0x0437, + [ 633] = 0x0438, [ 634] = 0x0439, [ 635] = 0x043a, [ 636] = 0x043b, + [ 637] = 0x043c, [ 638] = 0x043d, [ 640] = 0x043e, [ 641] = 0x043f, + [ 642] = 0x0440, [ 643] = 0x0441, [ 644] = 0x0442, [ 645] = 0x0443, + [ 646] = 0x0444, [ 647] = 0x0445, [ 648] = 0x0446, [ 649] = 0x0447, + [ 650] = 0x0448, [ 651] = 0x0449, [ 652] = 0x044a, [ 653] = 0x044b, + [ 654] = 0x044c, [ 655] = 0x044d, [ 656] = 0x044e, [ 657] = 0x044f, + [ 671] = 0x2500, [ 672] = 0x2502, [ 673] = 0x250c, [ 674] = 0x2510, + [ 675] = 0x2518, [ 676] = 0x2514, [ 677] = 0x251c, [ 678] = 0x252c, + [ 679] = 0x2524, [ 680] = 0x2534, [ 681] = 0x253c, [ 682] = 0x2501, + [ 683] = 0x2503, [ 684] = 0x250f, [ 685] = 0x2513, [ 686] = 0x251b, + [ 687] = 0x2517, [ 688] = 0x2523, [ 689] = 0x2533, [ 690] = 0x252b, + [ 691] = 0x253b, [ 692] = 0x254b, [ 693] = 0x2520, [ 694] = 0x252f, + [ 695] = 0x2528, [ 696] = 0x2537, [ 697] = 0x253f, [ 698] = 0x251d, + [ 699] = 0x2530, [ 700] = 0x2525, [ 701] = 0x2538, [ 702] = 0x2542 +}; + +static const uint16_t cjk_block2[93] = +{ + /* start = 0x8740, end = 0x879c */ + [ 0] = 0x2460, [ 1] = 0x2461, [ 2] = 0x2462, [ 3] = 0x2463, + [ 4] = 0x2464, [ 5] = 0x2465, [ 6] = 0x2466, [ 7] = 0x2467, + [ 8] = 0x2468, [ 9] = 0x2469, [ 10] = 0x246a, [ 11] = 0x246b, + [ 12] = 0x246c, [ 13] = 0x246d, [ 14] = 0x246e, [ 15] = 0x246f, + [ 16] = 0x2470, [ 17] = 0x2471, [ 18] = 0x2472, [ 19] = 0x2473, + [ 20] = 0x2160, [ 21] = 0x2161, [ 22] = 0x2162, [ 23] = 0x2163, + [ 24] = 0x2164, [ 25] = 0x2165, [ 26] = 0x2166, [ 27] = 0x2167, + [ 28] = 0x2168, [ 29] = 0x2169, [ 31] = 0x3349, [ 32] = 0x3314, + [ 33] = 0x3322, [ 34] = 0x334d, [ 35] = 0x3318, [ 36] = 0x3327, + [ 37] = 0x3303, [ 38] = 0x3336, [ 39] = 0x3351, [ 40] = 0x3357, + [ 41] = 0x330d, [ 42] = 0x3326, [ 43] = 0x3323, [ 44] = 0x332b, + [ 45] = 0x334a, [ 46] = 0x333b, [ 47] = 0x339c, [ 48] = 0x339d, + [ 49] = 0x339e, [ 50] = 0x338e, [ 51] = 0x338f, [ 52] = 0x33c4, + [ 53] = 0x33a1, [ 62] = 0x337b, [ 64] = 0x301d, [ 65] = 0x301f, + [ 66] = 0x2116, [ 67] = 0x33cd, [ 68] = 0x2121, [ 69] = 0x32a4, + [ 70] = 0x32a5, [ 71] = 0x32a6, [ 72] = 0x32a7, [ 73] = 0x32a8, + [ 74] = 0x3231, [ 75] = 0x3232, [ 76] = 0x3239, [ 77] = 0x337e, + [ 78] = 0x337d, [ 79] = 0x337c, [ 80] = 0x2252, [ 81] = 0x2261, + [ 82] = 0x222b, [ 83] = 0x222e, [ 84] = 0x2211, [ 85] = 0x221a, + [ 86] = 0x22a5, [ 87] = 0x2220, [ 88] = 0x221f, [ 89] = 0x22bf, + [ 90] = 0x2235, [ 91] = 0x2229, [ 92] = 0x222a +}; + +static const uint16_t cjk_block3[94] = +{ + /* start = 0x889f, end = 0x88fc */ + [ 0] = 0x4e9c, [ 1] = 0x5516, [ 2] = 0x5a03, [ 3] = 0x963f, + [ 4] = 0x54c0, [ 5] = 0x611b, [ 6] = 0x6328, [ 7] = 0x59f6, + [ 8] = 0x9022, [ 9] = 0x8475, [ 10] = 0x831c, [ 11] = 0x7a50, + [ 12] = 0x60aa, [ 13] = 0x63e1, [ 14] = 0x6e25, [ 15] = 0x65ed, + [ 16] = 0x8466, [ 17] = 0x82a6, [ 18] = 0x9bf5, [ 19] = 0x6893, + [ 20] = 0x5727, [ 21] = 0x65a1, [ 22] = 0x6271, [ 23] = 0x5b9b, + [ 24] = 0x59d0, [ 25] = 0x867b, [ 26] = 0x98f4, [ 27] = 0x7d62, + [ 28] = 0x7dbe, [ 29] = 0x9b8e, [ 30] = 0x6216, [ 31] = 0x7c9f, + [ 32] = 0x88b7, [ 33] = 0x5b89, [ 34] = 0x5eb5, [ 35] = 0x6309, + [ 36] = 0x6697, [ 37] = 0x6848, [ 38] = 0x95c7, [ 39] = 0x978d, + [ 40] = 0x674f, [ 41] = 0x4ee5, [ 42] = 0x4f0a, [ 43] = 0x4f4d, + [ 44] = 0x4f9d, [ 45] = 0x5049, [ 46] = 0x56f2, [ 47] = 0x5937, + [ 48] = 0x59d4, [ 49] = 0x5a01, [ 50] = 0x5c09, [ 51] = 0x60df, + [ 52] = 0x610f, [ 53] = 0x6170, [ 54] = 0x6613, [ 55] = 0x6905, + [ 56] = 0x70ba, [ 57] = 0x754f, [ 58] = 0x7570, [ 59] = 0x79fb, + [ 60] = 0x7dad, [ 61] = 0x7def, [ 62] = 0x80c3, [ 63] = 0x840e, + [ 64] = 0x8863, [ 65] = 0x8b02, [ 66] = 0x9055, [ 67] = 0x907a, + [ 68] = 0x533b, [ 69] = 0x4e95, [ 70] = 0x4ea5, [ 71] = 0x57df, + [ 72] = 0x80b2, [ 73] = 0x90c1, [ 74] = 0x78ef, [ 75] = 0x4e00, + [ 76] = 0x58f1, [ 77] = 0x6ea2, [ 78] = 0x9038, [ 79] = 0x7a32, + [ 80] = 0x8328, [ 81] = 0x828b, [ 82] = 0x9c2f, [ 83] = 0x5141, + [ 84] = 0x5370, [ 85] = 0x54bd, [ 86] = 0x54e1, [ 87] = 0x56e0, + [ 88] = 0x59fb, [ 89] = 0x5f15, [ 90] = 0x98f2, [ 91] = 0x6deb, + [ 92] = 0x80e4, [ 93] = 0x852d +}; + +static const uint16_t cjk_block4[4413] = +{ + /* start = 0x8940, end = 0x9ffc */ + [ 0] = 0x9662, [ 1] = 0x9670, [ 2] = 0x96a0, [ 3] = 0x97fb, + [ 4] = 0x540b, [ 5] = 0x53f3, [ 6] = 0x5b87, [ 7] = 0x70cf, + [ 8] = 0x7fbd, [ 9] = 0x8fc2, [ 10] = 0x96e8, [ 11] = 0x536f, + [ 12] = 0x9d5c, [ 13] = 0x7aba, [ 14] = 0x4e11, [ 15] = 0x7893, + [ 16] = 0x81fc, [ 17] = 0x6e26, [ 18] = 0x5618, [ 19] = 0x5504, + [ 20] = 0x6b1d, [ 21] = 0x851a, [ 22] = 0x9c3b, [ 23] = 0x59e5, + [ 24] = 0x53a9, [ 25] = 0x6d66, [ 26] = 0x74dc, [ 27] = 0x958f, + [ 28] = 0x5642, [ 29] = 0x4e91, [ 30] = 0x904b, [ 31] = 0x96f2, + [ 32] = 0x834f, [ 33] = 0x990c, [ 34] = 0x53e1, [ 35] = 0x55b6, + [ 36] = 0x5b30, [ 37] = 0x5f71, [ 38] = 0x6620, [ 39] = 0x66f3, + [ 40] = 0x6804, [ 41] = 0x6c38, [ 42] = 0x6cf3, [ 43] = 0x6d29, + [ 44] = 0x745b, [ 45] = 0x76c8, [ 46] = 0x7a4e, [ 47] = 0x9834, + [ 48] = 0x82f1, [ 49] = 0x885b, [ 50] = 0x8a60, [ 51] = 0x92ed, + [ 52] = 0x6db2, [ 53] = 0x75ab, [ 54] = 0x76ca, [ 55] = 0x99c5, + [ 56] = 0x60a6, [ 57] = 0x8b01, [ 58] = 0x8d8a, [ 59] = 0x95b2, + [ 60] = 0x698e, [ 61] = 0x53ad, [ 62] = 0x5186, [ 64] = 0x5712, + [ 65] = 0x5830, [ 66] = 0x5944, [ 67] = 0x5bb4, [ 68] = 0x5ef6, + [ 69] = 0x6028, [ 70] = 0x63a9, [ 71] = 0x63f4, [ 72] = 0x6cbf, + [ 73] = 0x6f14, [ 74] = 0x708e, [ 75] = 0x7114, [ 76] = 0x7159, + [ 77] = 0x71d5, [ 78] = 0x733f, [ 79] = 0x7e01, [ 80] = 0x8276, + [ 81] = 0x82d1, [ 82] = 0x8597, [ 83] = 0x9060, [ 84] = 0x925b, + [ 85] = 0x9d1b, [ 86] = 0x5869, [ 87] = 0x65bc, [ 88] = 0x6c5a, + [ 89] = 0x7525, [ 90] = 0x51f9, [ 91] = 0x592e, [ 92] = 0x5965, + [ 93] = 0x5f80, [ 94] = 0x5fdc, [ 95] = 0x62bc, [ 96] = 0x65fa, + [ 97] = 0x6a2a, [ 98] = 0x6b27, [ 99] = 0x6bb4, [ 100] = 0x738b, + [ 101] = 0x7fc1, [ 102] = 0x8956, [ 103] = 0x9d2c, [ 104] = 0x9d0e, + [ 105] = 0x9ec4, [ 106] = 0x5ca1, [ 107] = 0x6c96, [ 108] = 0x837b, + [ 109] = 0x5104, [ 110] = 0x5c4b, [ 111] = 0x61b6, [ 112] = 0x81c6, + [ 113] = 0x6876, [ 114] = 0x7261, [ 115] = 0x4e59, [ 116] = 0x4ffa, + [ 117] = 0x5378, [ 118] = 0x6069, [ 119] = 0x6e29, [ 120] = 0x7a4f, + [ 121] = 0x97f3, [ 122] = 0x4e0b, [ 123] = 0x5316, [ 124] = 0x4eee, + [ 125] = 0x4f55, [ 126] = 0x4f3d, [ 127] = 0x4fa1, [ 128] = 0x4f73, + [ 129] = 0x52a0, [ 130] = 0x53ef, [ 131] = 0x5609, [ 132] = 0x590f, + [ 133] = 0x5ac1, [ 134] = 0x5bb6, [ 135] = 0x5be1, [ 136] = 0x79d1, + [ 137] = 0x6687, [ 138] = 0x679c, [ 139] = 0x67b6, [ 140] = 0x6b4c, + [ 141] = 0x6cb3, [ 142] = 0x706b, [ 143] = 0x73c2, [ 144] = 0x798d, + [ 145] = 0x79be, [ 146] = 0x7a3c, [ 147] = 0x7b87, [ 148] = 0x82b1, + [ 149] = 0x82db, [ 150] = 0x8304, [ 151] = 0x8377, [ 152] = 0x83ef, + [ 153] = 0x83d3, [ 154] = 0x8766, [ 155] = 0x8ab2, [ 156] = 0x5629, + [ 157] = 0x8ca8, [ 158] = 0x8fe6, [ 159] = 0x904e, [ 160] = 0x971e, + [ 161] = 0x868a, [ 162] = 0x4fc4, [ 163] = 0x5ce8, [ 164] = 0x6211, + [ 165] = 0x7259, [ 166] = 0x753b, [ 167] = 0x81e5, [ 168] = 0x82bd, + [ 169] = 0x86fe, [ 170] = 0x8cc0, [ 171] = 0x96c5, [ 172] = 0x9913, + [ 173] = 0x99d5, [ 174] = 0x4ecb, [ 175] = 0x4f1a, [ 176] = 0x89e3, + [ 177] = 0x56de, [ 178] = 0x584a, [ 179] = 0x58ca, [ 180] = 0x5efb, + [ 181] = 0x5feb, [ 182] = 0x602a, [ 183] = 0x6094, [ 184] = 0x6062, + [ 185] = 0x61d0, [ 186] = 0x6212, [ 187] = 0x62d0, [ 188] = 0x6539, + [ 192] = 0x9b41, [ 193] = 0x6666, [ 194] = 0x68b0, [ 195] = 0x6d77, + [ 196] = 0x7070, [ 197] = 0x754c, [ 198] = 0x7686, [ 199] = 0x7d75, + [ 200] = 0x82a5, [ 201] = 0x87f9, [ 202] = 0x958b, [ 203] = 0x968e, + [ 204] = 0x8c9d, [ 205] = 0x51f1, [ 206] = 0x52be, [ 207] = 0x5916, + [ 208] = 0x54b3, [ 209] = 0x5bb3, [ 210] = 0x5d16, [ 211] = 0x6168, + [ 212] = 0x6982, [ 213] = 0x6daf, [ 214] = 0x788d, [ 215] = 0x84cb, + [ 216] = 0x8857, [ 217] = 0x8a72, [ 218] = 0x93a7, [ 219] = 0x9ab8, + [ 220] = 0x6d6c, [ 221] = 0x99a8, [ 222] = 0x86d9, [ 223] = 0x57a3, + [ 224] = 0x67ff, [ 225] = 0x86ce, [ 226] = 0x920e, [ 227] = 0x5283, + [ 228] = 0x5687, [ 229] = 0x5404, [ 230] = 0x5ed3, [ 231] = 0x62e1, + [ 232] = 0x64b9, [ 233] = 0x683c, [ 234] = 0x6838, [ 235] = 0x6bbb, + [ 236] = 0x7372, [ 237] = 0x78ba, [ 238] = 0x7a6b, [ 239] = 0x899a, + [ 240] = 0x89d2, [ 241] = 0x8d6b, [ 242] = 0x8f03, [ 243] = 0x90ed, + [ 244] = 0x95a3, [ 245] = 0x9694, [ 246] = 0x9769, [ 247] = 0x5b66, + [ 248] = 0x5cb3, [ 249] = 0x697d, [ 250] = 0x984d, [ 251] = 0x984e, + [ 252] = 0x639b, [ 253] = 0x7b20, [ 254] = 0x6a2b, [ 256] = 0x6a7f, + [ 257] = 0x68b6, [ 258] = 0x9c0d, [ 259] = 0x6f5f, [ 260] = 0x5272, + [ 261] = 0x559d, [ 262] = 0x6070, [ 263] = 0x62ec, [ 264] = 0x6d3b, + [ 265] = 0x6e07, [ 266] = 0x6ed1, [ 267] = 0x845b, [ 268] = 0x8910, + [ 269] = 0x8f44, [ 270] = 0x4e14, [ 271] = 0x9c39, [ 272] = 0x53f6, + [ 273] = 0x691b, [ 274] = 0x6a3a, [ 275] = 0x9784, [ 276] = 0x682a, + [ 277] = 0x515c, [ 278] = 0x7ac3, [ 279] = 0x84b2, [ 280] = 0x91dc, + [ 281] = 0x938c, [ 282] = 0x565b, [ 283] = 0x9d28, [ 284] = 0x6822, + [ 285] = 0x8305, [ 286] = 0x8431, [ 287] = 0x7ca5, [ 288] = 0x5208, + [ 289] = 0x82c5, [ 290] = 0x74e6, [ 291] = 0x4e7e, [ 292] = 0x4f83, + [ 293] = 0x51a0, [ 294] = 0x5bd2, [ 295] = 0x520a, [ 296] = 0x52d8, + [ 297] = 0x52e7, [ 298] = 0x5dfb, [ 299] = 0x559a, [ 300] = 0x582a, + [ 301] = 0x59e6, [ 302] = 0x5b8c, [ 303] = 0x5b98, [ 304] = 0x5bdb, + [ 305] = 0x5e72, [ 306] = 0x5e79, [ 307] = 0x60a3, [ 308] = 0x611f, + [ 309] = 0x6163, [ 310] = 0x61be, [ 311] = 0x63db, [ 312] = 0x6562, + [ 313] = 0x67d1, [ 314] = 0x6853, [ 315] = 0x68fa, [ 316] = 0x6b3e, + [ 317] = 0x6b53, [ 318] = 0x6c57, [ 319] = 0x6f22, [ 320] = 0x6f97, + [ 321] = 0x6f45, [ 322] = 0x74b0, [ 323] = 0x7518, [ 324] = 0x76e3, + [ 325] = 0x770b, [ 326] = 0x7aff, [ 327] = 0x7ba1, [ 328] = 0x7c21, + [ 329] = 0x7de9, [ 330] = 0x7f36, [ 331] = 0x7ff0, [ 332] = 0x809d, + [ 333] = 0x8266, [ 334] = 0x839e, [ 335] = 0x89b3, [ 336] = 0x8acc, + [ 337] = 0x8cab, [ 338] = 0x9084, [ 339] = 0x9451, [ 340] = 0x9593, + [ 341] = 0x9591, [ 342] = 0x95a2, [ 343] = 0x9665, [ 344] = 0x97d3, + [ 345] = 0x9928, [ 346] = 0x8218, [ 347] = 0x4e38, [ 348] = 0x542b, + [ 349] = 0x5cb8, [ 350] = 0x5dcc, [ 351] = 0x73a9, [ 352] = 0x764c, + [ 353] = 0x773c, [ 354] = 0x5ca9, [ 355] = 0x7feb, [ 356] = 0x8d0b, + [ 357] = 0x96c1, [ 358] = 0x9811, [ 359] = 0x9854, [ 360] = 0x9858, + [ 361] = 0x4f01, [ 362] = 0x4f0e, [ 363] = 0x5371, [ 364] = 0x559c, + [ 365] = 0x5668, [ 366] = 0x57fa, [ 367] = 0x5947, [ 368] = 0x5b09, + [ 369] = 0x5bc4, [ 370] = 0x5c90, [ 371] = 0x5e0c, [ 372] = 0x5e7e, + [ 373] = 0x5fcc, [ 374] = 0x63ee, [ 375] = 0x673a, [ 376] = 0x65d7, + [ 377] = 0x65e2, [ 378] = 0x671f, [ 379] = 0x68cb, [ 380] = 0x68c4, + [ 384] = 0x6a5f, [ 385] = 0x5e30, [ 386] = 0x6bc5, [ 387] = 0x6c17, + [ 388] = 0x6c7d, [ 389] = 0x757f, [ 390] = 0x7948, [ 391] = 0x5b63, + [ 392] = 0x7a00, [ 393] = 0x7d00, [ 394] = 0x5fbd, [ 395] = 0x898f, + [ 396] = 0x8a18, [ 397] = 0x8cb4, [ 398] = 0x8d77, [ 399] = 0x8ecc, + [ 400] = 0x8f1d, [ 401] = 0x98e2, [ 402] = 0x9a0e, [ 403] = 0x9b3c, + [ 404] = 0x4e80, [ 405] = 0x507d, [ 406] = 0x5100, [ 407] = 0x5993, + [ 408] = 0x5b9c, [ 409] = 0x622f, [ 410] = 0x6280, [ 411] = 0x64ec, + [ 412] = 0x6b3a, [ 413] = 0x72a0, [ 414] = 0x7591, [ 415] = 0x7947, + [ 416] = 0x7fa9, [ 417] = 0x87fb, [ 418] = 0x8abc, [ 419] = 0x8b70, + [ 420] = 0x63ac, [ 421] = 0x83ca, [ 422] = 0x97a0, [ 423] = 0x5409, + [ 424] = 0x5403, [ 425] = 0x55ab, [ 426] = 0x6854, [ 427] = 0x6a58, + [ 428] = 0x8a70, [ 429] = 0x7827, [ 430] = 0x6775, [ 431] = 0x9ecd, + [ 432] = 0x5374, [ 433] = 0x5ba2, [ 434] = 0x811a, [ 435] = 0x8650, + [ 436] = 0x9006, [ 437] = 0x4e18, [ 438] = 0x4e45, [ 439] = 0x4ec7, + [ 440] = 0x4f11, [ 441] = 0x53ca, [ 442] = 0x5438, [ 443] = 0x5bae, + [ 444] = 0x5f13, [ 445] = 0x6025, [ 446] = 0x6551, [ 448] = 0x673d, + [ 449] = 0x6c42, [ 450] = 0x6c72, [ 451] = 0x6ce3, [ 452] = 0x7078, + [ 453] = 0x7403, [ 454] = 0x7a76, [ 455] = 0x7aae, [ 456] = 0x7b08, + [ 457] = 0x7d1a, [ 458] = 0x7cfe, [ 459] = 0x7d66, [ 460] = 0x65e7, + [ 461] = 0x725b, [ 462] = 0x53bb, [ 463] = 0x5c45, [ 464] = 0x5de8, + [ 465] = 0x62d2, [ 466] = 0x62e0, [ 467] = 0x6319, [ 468] = 0x6e20, + [ 469] = 0x865a, [ 470] = 0x8a31, [ 471] = 0x8ddd, [ 472] = 0x92f8, + [ 473] = 0x6f01, [ 474] = 0x79a6, [ 475] = 0x9b5a, [ 476] = 0x4ea8, + [ 477] = 0x4eab, [ 478] = 0x4eac, [ 479] = 0x4f9b, [ 480] = 0x4fa0, + [ 481] = 0x50d1, [ 482] = 0x5147, [ 483] = 0x7af6, [ 484] = 0x5171, + [ 485] = 0x51f6, [ 486] = 0x5354, [ 487] = 0x5321, [ 488] = 0x537f, + [ 489] = 0x53eb, [ 490] = 0x55ac, [ 491] = 0x5883, [ 492] = 0x5ce1, + [ 493] = 0x5f37, [ 494] = 0x5f4a, [ 495] = 0x602f, [ 496] = 0x6050, + [ 497] = 0x606d, [ 498] = 0x631f, [ 499] = 0x6559, [ 500] = 0x6a4b, + [ 501] = 0x6cc1, [ 502] = 0x72c2, [ 503] = 0x72ed, [ 504] = 0x77ef, + [ 505] = 0x80f8, [ 506] = 0x8105, [ 507] = 0x8208, [ 508] = 0x854e, + [ 509] = 0x90f7, [ 510] = 0x93e1, [ 511] = 0x97ff, [ 512] = 0x9957, + [ 513] = 0x9a5a, [ 514] = 0x4ef0, [ 515] = 0x51dd, [ 516] = 0x5c2d, + [ 517] = 0x6681, [ 518] = 0x696d, [ 519] = 0x5c40, [ 520] = 0x66f2, + [ 521] = 0x6975, [ 522] = 0x7389, [ 523] = 0x6850, [ 524] = 0x7c81, + [ 525] = 0x50c5, [ 526] = 0x52e4, [ 527] = 0x5747, [ 528] = 0x5dfe, + [ 529] = 0x9326, [ 530] = 0x65a4, [ 531] = 0x6b23, [ 532] = 0x6b3d, + [ 533] = 0x7434, [ 534] = 0x7981, [ 535] = 0x79bd, [ 536] = 0x7b4b, + [ 537] = 0x7dca, [ 538] = 0x82b9, [ 539] = 0x83cc, [ 540] = 0x887f, + [ 541] = 0x895f, [ 542] = 0x8b39, [ 543] = 0x8fd1, [ 544] = 0x91d1, + [ 545] = 0x541f, [ 546] = 0x9280, [ 547] = 0x4e5d, [ 548] = 0x5036, + [ 549] = 0x53e5, [ 550] = 0x533a, [ 551] = 0x72d7, [ 552] = 0x7396, + [ 553] = 0x77e9, [ 554] = 0x82e6, [ 555] = 0x8eaf, [ 556] = 0x99c6, + [ 557] = 0x99c8, [ 558] = 0x99d2, [ 559] = 0x5177, [ 560] = 0x611a, + [ 561] = 0x865e, [ 562] = 0x55b0, [ 563] = 0x7a7a, [ 564] = 0x5076, + [ 565] = 0x5bd3, [ 566] = 0x9047, [ 567] = 0x9685, [ 568] = 0x4e32, + [ 569] = 0x6adb, [ 570] = 0x91e7, [ 571] = 0x5c51, [ 572] = 0x5c48, + [ 576] = 0x6398, [ 577] = 0x7a9f, [ 578] = 0x6c93, [ 579] = 0x9774, + [ 580] = 0x8f61, [ 581] = 0x7aaa, [ 582] = 0x718a, [ 583] = 0x9688, + [ 584] = 0x7c82, [ 585] = 0x6817, [ 586] = 0x7e70, [ 587] = 0x6851, + [ 588] = 0x936c, [ 589] = 0x52f2, [ 590] = 0x541b, [ 591] = 0x85ab, + [ 592] = 0x8a13, [ 593] = 0x7fa4, [ 594] = 0x8ecd, [ 595] = 0x90e1, + [ 596] = 0x5366, [ 597] = 0x8888, [ 598] = 0x7941, [ 599] = 0x4fc2, + [ 600] = 0x50be, [ 601] = 0x5211, [ 602] = 0x5144, [ 603] = 0x5553, + [ 604] = 0x572d, [ 605] = 0x73ea, [ 606] = 0x578b, [ 607] = 0x5951, + [ 608] = 0x5f62, [ 609] = 0x5f84, [ 610] = 0x6075, [ 611] = 0x6176, + [ 612] = 0x6167, [ 613] = 0x61a9, [ 614] = 0x63b2, [ 615] = 0x643a, + [ 616] = 0x656c, [ 617] = 0x666f, [ 618] = 0x6842, [ 619] = 0x6e13, + [ 620] = 0x7566, [ 621] = 0x7a3d, [ 622] = 0x7cfb, [ 623] = 0x7d4c, + [ 624] = 0x7d99, [ 625] = 0x7e4b, [ 626] = 0x7f6b, [ 627] = 0x830e, + [ 628] = 0x834a, [ 629] = 0x86cd, [ 630] = 0x8a08, [ 631] = 0x8a63, + [ 632] = 0x8b66, [ 633] = 0x8efd, [ 634] = 0x981a, [ 635] = 0x9d8f, + [ 636] = 0x82b8, [ 637] = 0x8fce, [ 638] = 0x9be8, [ 640] = 0x5287, + [ 641] = 0x621f, [ 642] = 0x6483, [ 643] = 0x6fc0, [ 644] = 0x9699, + [ 645] = 0x6841, [ 646] = 0x5091, [ 647] = 0x6b20, [ 648] = 0x6c7a, + [ 649] = 0x6f54, [ 650] = 0x7a74, [ 651] = 0x7d50, [ 652] = 0x8840, + [ 653] = 0x8a23, [ 654] = 0x6708, [ 655] = 0x4ef6, [ 656] = 0x5039, + [ 657] = 0x5026, [ 658] = 0x5065, [ 659] = 0x517c, [ 660] = 0x5238, + [ 661] = 0x5263, [ 662] = 0x55a7, [ 663] = 0x570f, [ 664] = 0x5805, + [ 665] = 0x5acc, [ 666] = 0x5efa, [ 667] = 0x61b2, [ 668] = 0x61f8, + [ 669] = 0x62f3, [ 670] = 0x6372, [ 671] = 0x691c, [ 672] = 0x6a29, + [ 673] = 0x727d, [ 674] = 0x72ac, [ 675] = 0x732e, [ 676] = 0x7814, + [ 677] = 0x786f, [ 678] = 0x7d79, [ 679] = 0x770c, [ 680] = 0x80a9, + [ 681] = 0x898b, [ 682] = 0x8b19, [ 683] = 0x8ce2, [ 684] = 0x8ed2, + [ 685] = 0x9063, [ 686] = 0x9375, [ 687] = 0x967a, [ 688] = 0x9855, + [ 689] = 0x9a13, [ 690] = 0x9e78, [ 691] = 0x5143, [ 692] = 0x539f, + [ 693] = 0x53b3, [ 694] = 0x5e7b, [ 695] = 0x5f26, [ 696] = 0x6e1b, + [ 697] = 0x6e90, [ 698] = 0x7384, [ 699] = 0x73fe, [ 700] = 0x7d43, + [ 701] = 0x8237, [ 702] = 0x8a00, [ 703] = 0x8afa, [ 704] = 0x9650, + [ 705] = 0x4e4e, [ 706] = 0x500b, [ 707] = 0x53e4, [ 708] = 0x547c, + [ 709] = 0x56fa, [ 710] = 0x59d1, [ 711] = 0x5b64, [ 712] = 0x5df1, + [ 713] = 0x5eab, [ 714] = 0x5f27, [ 715] = 0x6238, [ 716] = 0x6545, + [ 717] = 0x67af, [ 718] = 0x6e56, [ 719] = 0x72d0, [ 720] = 0x7cca, + [ 721] = 0x88b4, [ 722] = 0x80a1, [ 723] = 0x80e1, [ 724] = 0x83f0, + [ 725] = 0x864e, [ 726] = 0x8a87, [ 727] = 0x8de8, [ 728] = 0x9237, + [ 729] = 0x96c7, [ 730] = 0x9867, [ 731] = 0x9f13, [ 732] = 0x4e94, + [ 733] = 0x4e92, [ 734] = 0x4f0d, [ 735] = 0x5348, [ 736] = 0x5449, + [ 737] = 0x543e, [ 738] = 0x5a2f, [ 739] = 0x5f8c, [ 740] = 0x5fa1, + [ 741] = 0x609f, [ 742] = 0x68a7, [ 743] = 0x6a8e, [ 744] = 0x745a, + [ 745] = 0x7881, [ 746] = 0x8a9e, [ 747] = 0x8aa4, [ 748] = 0x8b77, + [ 749] = 0x9190, [ 750] = 0x4e5e, [ 751] = 0x9bc9, [ 752] = 0x4ea4, + [ 753] = 0x4f7c, [ 754] = 0x4faf, [ 755] = 0x5019, [ 756] = 0x5016, + [ 757] = 0x5149, [ 758] = 0x516c, [ 759] = 0x529f, [ 760] = 0x52b9, + [ 761] = 0x52fe, [ 762] = 0x539a, [ 763] = 0x53e3, [ 764] = 0x5411, + [ 768] = 0x540e, [ 769] = 0x5589, [ 770] = 0x5751, [ 771] = 0x57a2, + [ 772] = 0x597d, [ 773] = 0x5b54, [ 774] = 0x5b5d, [ 775] = 0x5b8f, + [ 776] = 0x5de5, [ 777] = 0x5de7, [ 778] = 0x5df7, [ 779] = 0x5e78, + [ 780] = 0x5e83, [ 781] = 0x5e9a, [ 782] = 0x5eb7, [ 783] = 0x5f18, + [ 784] = 0x6052, [ 785] = 0x614c, [ 786] = 0x6297, [ 787] = 0x62d8, + [ 788] = 0x63a7, [ 789] = 0x653b, [ 790] = 0x6602, [ 791] = 0x6643, + [ 792] = 0x66f4, [ 793] = 0x676d, [ 794] = 0x6821, [ 795] = 0x6897, + [ 796] = 0x69cb, [ 797] = 0x6c5f, [ 798] = 0x6d2a, [ 799] = 0x6d69, + [ 800] = 0x6e2f, [ 801] = 0x6e9d, [ 802] = 0x7532, [ 803] = 0x7687, + [ 804] = 0x786c, [ 805] = 0x7a3f, [ 806] = 0x7ce0, [ 807] = 0x7d05, + [ 808] = 0x7d18, [ 809] = 0x7d5e, [ 810] = 0x7db1, [ 811] = 0x8015, + [ 812] = 0x8003, [ 813] = 0x80af, [ 814] = 0x80b1, [ 815] = 0x8154, + [ 816] = 0x818f, [ 817] = 0x822a, [ 818] = 0x8352, [ 819] = 0x884c, + [ 820] = 0x8861, [ 821] = 0x8b1b, [ 822] = 0x8ca2, [ 823] = 0x8cfc, + [ 824] = 0x90ca, [ 825] = 0x9175, [ 826] = 0x9271, [ 827] = 0x783f, + [ 828] = 0x92fc, [ 829] = 0x95a4, [ 830] = 0x964d, [ 832] = 0x9805, + [ 833] = 0x9999, [ 834] = 0x9ad8, [ 835] = 0x9d3b, [ 836] = 0x525b, + [ 837] = 0x52ab, [ 838] = 0x53f7, [ 839] = 0x5408, [ 840] = 0x58d5, + [ 841] = 0x62f7, [ 842] = 0x6fe0, [ 843] = 0x8c6a, [ 844] = 0x8f5f, + [ 845] = 0x9eb9, [ 846] = 0x514b, [ 847] = 0x523b, [ 848] = 0x544a, + [ 849] = 0x56fd, [ 850] = 0x7a40, [ 851] = 0x9177, [ 852] = 0x9d60, + [ 853] = 0x9ed2, [ 854] = 0x7344, [ 855] = 0x6f09, [ 856] = 0x8170, + [ 857] = 0x7511, [ 858] = 0x5ffd, [ 859] = 0x60da, [ 860] = 0x9aa8, + [ 861] = 0x72db, [ 862] = 0x8fbc, [ 863] = 0x6b64, [ 864] = 0x9803, + [ 865] = 0x4eca, [ 866] = 0x56f0, [ 867] = 0x5764, [ 868] = 0x58be, + [ 869] = 0x5a5a, [ 870] = 0x6068, [ 871] = 0x61c7, [ 872] = 0x660f, + [ 873] = 0x6606, [ 874] = 0x6839, [ 875] = 0x68b1, [ 876] = 0x6df7, + [ 877] = 0x75d5, [ 878] = 0x7d3a, [ 879] = 0x826e, [ 880] = 0x9b42, + [ 881] = 0x4e9b, [ 882] = 0x4f50, [ 883] = 0x53c9, [ 884] = 0x5506, + [ 885] = 0x5d6f, [ 886] = 0x5de6, [ 887] = 0x5dee, [ 888] = 0x67fb, + [ 889] = 0x6c99, [ 890] = 0x7473, [ 891] = 0x7802, [ 892] = 0x8a50, + [ 893] = 0x9396, [ 894] = 0x88df, [ 895] = 0x5750, [ 896] = 0x5ea7, + [ 897] = 0x632b, [ 898] = 0x50b5, [ 899] = 0x50ac, [ 900] = 0x518d, + [ 901] = 0x6700, [ 902] = 0x54c9, [ 903] = 0x585e, [ 904] = 0x59bb, + [ 905] = 0x5bb0, [ 906] = 0x5f69, [ 907] = 0x624d, [ 908] = 0x63a1, + [ 909] = 0x683d, [ 910] = 0x6b73, [ 911] = 0x6e08, [ 912] = 0x707d, + [ 913] = 0x91c7, [ 914] = 0x7280, [ 915] = 0x7815, [ 916] = 0x7826, + [ 917] = 0x796d, [ 918] = 0x658e, [ 919] = 0x7d30, [ 920] = 0x83dc, + [ 921] = 0x88c1, [ 922] = 0x8f09, [ 923] = 0x969b, [ 924] = 0x5264, + [ 925] = 0x5728, [ 926] = 0x6750, [ 927] = 0x7f6a, [ 928] = 0x8ca1, + [ 929] = 0x51b4, [ 930] = 0x5742, [ 931] = 0x962a, [ 932] = 0x583a, + [ 933] = 0x698a, [ 934] = 0x80b4, [ 935] = 0x54b2, [ 936] = 0x5d0e, + [ 937] = 0x57fc, [ 938] = 0x7895, [ 939] = 0x9dfa, [ 940] = 0x4f5c, + [ 941] = 0x524a, [ 942] = 0x548b, [ 943] = 0x643e, [ 944] = 0x6628, + [ 945] = 0x6714, [ 946] = 0x67f5, [ 947] = 0x7a84, [ 948] = 0x7b56, + [ 949] = 0x7d22, [ 950] = 0x932f, [ 951] = 0x685c, [ 952] = 0x9bad, + [ 953] = 0x7b39, [ 954] = 0x5319, [ 955] = 0x518a, [ 956] = 0x5237, + [ 960] = 0x5bdf, [ 961] = 0x62f6, [ 962] = 0x64ae, [ 963] = 0x64e6, + [ 964] = 0x672d, [ 965] = 0x6bba, [ 966] = 0x85a9, [ 967] = 0x96d1, + [ 968] = 0x7690, [ 969] = 0x9bd6, [ 970] = 0x634c, [ 971] = 0x9306, + [ 972] = 0x9bab, [ 973] = 0x76bf, [ 974] = 0x6652, [ 975] = 0x4e09, + [ 976] = 0x5098, [ 977] = 0x53c2, [ 978] = 0x5c71, [ 979] = 0x60e8, + [ 980] = 0x6492, [ 981] = 0x6563, [ 982] = 0x685f, [ 983] = 0x71e6, + [ 984] = 0x73ca, [ 985] = 0x7523, [ 986] = 0x7b97, [ 987] = 0x7e82, + [ 988] = 0x8695, [ 989] = 0x8b83, [ 990] = 0x8cdb, [ 991] = 0x9178, + [ 992] = 0x9910, [ 993] = 0x65ac, [ 994] = 0x66ab, [ 995] = 0x6b8b, + [ 996] = 0x4ed5, [ 997] = 0x4ed4, [ 998] = 0x4f3a, [ 999] = 0x4f7f, + [1000] = 0x523a, [1001] = 0x53f8, [1002] = 0x53f2, [1003] = 0x55e3, + [1004] = 0x56db, [1005] = 0x58eb, [1006] = 0x59cb, [1007] = 0x59c9, + [1008] = 0x59ff, [1009] = 0x5b50, [1010] = 0x5c4d, [1011] = 0x5e02, + [1012] = 0x5e2b, [1013] = 0x5fd7, [1014] = 0x601d, [1015] = 0x6307, + [1016] = 0x652f, [1017] = 0x5b5c, [1018] = 0x65af, [1019] = 0x65bd, + [1020] = 0x65e8, [1021] = 0x679d, [1022] = 0x6b62, [1024] = 0x6b7b, + [1025] = 0x6c0f, [1026] = 0x7345, [1027] = 0x7949, [1028] = 0x79c1, + [1029] = 0x7cf8, [1030] = 0x7d19, [1031] = 0x7d2b, [1032] = 0x80a2, + [1033] = 0x8102, [1034] = 0x81f3, [1035] = 0x8996, [1036] = 0x8a5e, + [1037] = 0x8a69, [1038] = 0x8a66, [1039] = 0x8a8c, [1040] = 0x8aee, + [1041] = 0x8cc7, [1042] = 0x8cdc, [1043] = 0x96cc, [1044] = 0x98fc, + [1045] = 0x6b6f, [1046] = 0x4e8b, [1047] = 0x4f3c, [1048] = 0x4f8d, + [1049] = 0x5150, [1050] = 0x5b57, [1051] = 0x5bfa, [1052] = 0x6148, + [1053] = 0x6301, [1054] = 0x6642, [1055] = 0x6b21, [1056] = 0x6ecb, + [1057] = 0x6cbb, [1058] = 0x723e, [1059] = 0x74bd, [1060] = 0x75d4, + [1061] = 0x78c1, [1062] = 0x793a, [1063] = 0x800c, [1064] = 0x8033, + [1065] = 0x81ea, [1066] = 0x8494, [1067] = 0x8f9e, [1068] = 0x6c50, + [1069] = 0x9e7f, [1070] = 0x5f0f, [1071] = 0x8b58, [1072] = 0x9d2b, + [1073] = 0x7afa, [1074] = 0x8ef8, [1075] = 0x5b8d, [1076] = 0x96eb, + [1077] = 0x4e03, [1078] = 0x53f1, [1079] = 0x57f7, [1080] = 0x5931, + [1081] = 0x5ac9, [1082] = 0x5ba4, [1083] = 0x6089, [1084] = 0x6e7f, + [1085] = 0x6f06, [1086] = 0x75be, [1087] = 0x8cea, [1088] = 0x5b9f, + [1089] = 0x8500, [1090] = 0x7be0, [1091] = 0x5072, [1092] = 0x67f4, + [1093] = 0x829d, [1094] = 0x5c61, [1095] = 0x854a, [1096] = 0x7e1e, + [1097] = 0x820e, [1098] = 0x5199, [1099] = 0x5c04, [1100] = 0x6368, + [1101] = 0x8d66, [1102] = 0x659c, [1103] = 0x716e, [1104] = 0x793e, + [1105] = 0x7d17, [1106] = 0x8005, [1107] = 0x8b1d, [1108] = 0x8eca, + [1109] = 0x906e, [1110] = 0x86c7, [1111] = 0x90aa, [1112] = 0x501f, + [1113] = 0x52fa, [1114] = 0x5c3a, [1115] = 0x6753, [1116] = 0x707c, + [1117] = 0x7235, [1118] = 0x914c, [1119] = 0x91c8, [1120] = 0x932b, + [1121] = 0x82e5, [1122] = 0x5bc2, [1123] = 0x5f31, [1124] = 0x60f9, + [1125] = 0x4e3b, [1126] = 0x53d6, [1127] = 0x5b88, [1128] = 0x624b, + [1129] = 0x6731, [1130] = 0x6b8a, [1131] = 0x72e9, [1132] = 0x73e0, + [1133] = 0x7a2e, [1134] = 0x816b, [1135] = 0x8da3, [1136] = 0x9152, + [1137] = 0x9996, [1138] = 0x5112, [1139] = 0x53d7, [1140] = 0x546a, + [1141] = 0x5bff, [1142] = 0x6388, [1143] = 0x6a39, [1144] = 0x7dac, + [1145] = 0x9700, [1146] = 0x56da, [1147] = 0x53ce, [1148] = 0x5468, + [1152] = 0x5b97, [1153] = 0x5c31, [1154] = 0x5dde, [1155] = 0x4fee, + [1156] = 0x6101, [1157] = 0x62fe, [1158] = 0x6d32, [1159] = 0x79c0, + [1160] = 0x79cb, [1161] = 0x7d42, [1162] = 0x7e4d, [1163] = 0x7fd2, + [1164] = 0x81ed, [1165] = 0x821f, [1166] = 0x8490, [1167] = 0x8846, + [1168] = 0x8972, [1169] = 0x8b90, [1170] = 0x8e74, [1171] = 0x8f2f, + [1172] = 0x9031, [1173] = 0x914b, [1174] = 0x916c, [1175] = 0x96c6, + [1176] = 0x919c, [1177] = 0x4ec0, [1178] = 0x4f4f, [1179] = 0x5145, + [1180] = 0x5341, [1181] = 0x5f93, [1182] = 0x620e, [1183] = 0x67d4, + [1184] = 0x6c41, [1185] = 0x6e0b, [1186] = 0x7363, [1187] = 0x7e26, + [1188] = 0x91cd, [1189] = 0x9283, [1190] = 0x53d4, [1191] = 0x5919, + [1192] = 0x5bbf, [1193] = 0x6dd1, [1194] = 0x795d, [1195] = 0x7e2e, + [1196] = 0x7c9b, [1197] = 0x587e, [1198] = 0x719f, [1199] = 0x51fa, + [1200] = 0x8853, [1201] = 0x8ff0, [1202] = 0x4fca, [1203] = 0x5cfb, + [1204] = 0x6625, [1205] = 0x77ac, [1206] = 0x7ae3, [1207] = 0x821c, + [1208] = 0x99ff, [1209] = 0x51c6, [1210] = 0x5faa, [1211] = 0x65ec, + [1212] = 0x696f, [1213] = 0x6b89, [1214] = 0x6df3, [1216] = 0x6e96, + [1217] = 0x6f64, [1218] = 0x76fe, [1219] = 0x7d14, [1220] = 0x5de1, + [1221] = 0x9075, [1222] = 0x9187, [1223] = 0x9806, [1224] = 0x51e6, + [1225] = 0x521d, [1226] = 0x6240, [1227] = 0x6691, [1228] = 0x66d9, + [1229] = 0x6e1a, [1230] = 0x5eb6, [1231] = 0x7dd2, [1232] = 0x7f72, + [1233] = 0x66f8, [1234] = 0x85af, [1235] = 0x85f7, [1236] = 0x8af8, + [1237] = 0x52a9, [1238] = 0x53d9, [1239] = 0x5973, [1240] = 0x5e8f, + [1241] = 0x5f90, [1242] = 0x6055, [1243] = 0x92e4, [1244] = 0x9664, + [1245] = 0x50b7, [1246] = 0x511f, [1247] = 0x52dd, [1248] = 0x5320, + [1249] = 0x5347, [1250] = 0x53ec, [1251] = 0x54e8, [1252] = 0x5546, + [1253] = 0x5531, [1254] = 0x5617, [1255] = 0x5968, [1256] = 0x59be, + [1257] = 0x5a3c, [1258] = 0x5bb5, [1259] = 0x5c06, [1260] = 0x5c0f, + [1261] = 0x5c11, [1262] = 0x5c1a, [1263] = 0x5e84, [1264] = 0x5e8a, + [1265] = 0x5ee0, [1266] = 0x5f70, [1267] = 0x627f, [1268] = 0x6284, + [1269] = 0x62db, [1270] = 0x638c, [1271] = 0x6377, [1272] = 0x6607, + [1273] = 0x660c, [1274] = 0x662d, [1275] = 0x6676, [1276] = 0x677e, + [1277] = 0x68a2, [1278] = 0x6a1f, [1279] = 0x6a35, [1280] = 0x6cbc, + [1281] = 0x6d88, [1282] = 0x6e09, [1283] = 0x6e58, [1284] = 0x713c, + [1285] = 0x7126, [1286] = 0x7167, [1287] = 0x75c7, [1288] = 0x7701, + [1289] = 0x785d, [1290] = 0x7901, [1291] = 0x7965, [1292] = 0x79f0, + [1293] = 0x7ae0, [1294] = 0x7b11, [1295] = 0x7ca7, [1296] = 0x7d39, + [1297] = 0x8096, [1298] = 0x83d6, [1299] = 0x848b, [1300] = 0x8549, + [1301] = 0x885d, [1302] = 0x88f3, [1303] = 0x8a1f, [1304] = 0x8a3c, + [1305] = 0x8a54, [1306] = 0x8a73, [1307] = 0x8c61, [1308] = 0x8cde, + [1309] = 0x91a4, [1310] = 0x9266, [1311] = 0x937e, [1312] = 0x9418, + [1313] = 0x969c, [1314] = 0x9798, [1315] = 0x4e0a, [1316] = 0x4e08, + [1317] = 0x4e1e, [1318] = 0x4e57, [1319] = 0x5197, [1320] = 0x5270, + [1321] = 0x57ce, [1322] = 0x5834, [1323] = 0x58cc, [1324] = 0x5b22, + [1325] = 0x5e38, [1326] = 0x60c5, [1327] = 0x64fe, [1328] = 0x6761, + [1329] = 0x6756, [1330] = 0x6d44, [1331] = 0x72b6, [1332] = 0x7573, + [1333] = 0x7a63, [1334] = 0x84b8, [1335] = 0x8b72, [1336] = 0x91b8, + [1337] = 0x9320, [1338] = 0x5631, [1339] = 0x57f4, [1340] = 0x98fe, + [1344] = 0x62ed, [1345] = 0x690d, [1346] = 0x6b96, [1347] = 0x71ed, + [1348] = 0x7e54, [1349] = 0x8077, [1350] = 0x8272, [1351] = 0x89e6, + [1352] = 0x98df, [1353] = 0x8755, [1354] = 0x8fb1, [1355] = 0x5c3b, + [1356] = 0x4f38, [1357] = 0x4fe1, [1358] = 0x4fb5, [1359] = 0x5507, + [1360] = 0x5a20, [1361] = 0x5bdd, [1362] = 0x5be9, [1363] = 0x5fc3, + [1364] = 0x614e, [1365] = 0x632f, [1366] = 0x65b0, [1367] = 0x664b, + [1368] = 0x68ee, [1369] = 0x699b, [1370] = 0x6d78, [1371] = 0x6df1, + [1372] = 0x7533, [1373] = 0x75b9, [1374] = 0x771f, [1375] = 0x795e, + [1376] = 0x79e6, [1377] = 0x7d33, [1378] = 0x81e3, [1379] = 0x82af, + [1380] = 0x85aa, [1381] = 0x89aa, [1382] = 0x8a3a, [1383] = 0x8eab, + [1384] = 0x8f9b, [1385] = 0x9032, [1386] = 0x91dd, [1387] = 0x9707, + [1388] = 0x4eba, [1389] = 0x4ec1, [1390] = 0x5203, [1391] = 0x5875, + [1392] = 0x58ec, [1393] = 0x5c0b, [1394] = 0x751a, [1395] = 0x5c3d, + [1396] = 0x814e, [1397] = 0x8a0a, [1398] = 0x8fc5, [1399] = 0x9663, + [1400] = 0x976d, [1401] = 0x7b25, [1402] = 0x8acf, [1403] = 0x9808, + [1404] = 0x9162, [1405] = 0x56f3, [1406] = 0x53a8, [1408] = 0x9017, + [1409] = 0x5439, [1410] = 0x5782, [1411] = 0x5e25, [1412] = 0x63a8, + [1413] = 0x6c34, [1414] = 0x708a, [1415] = 0x7761, [1416] = 0x7c8b, + [1417] = 0x7fe0, [1418] = 0x8870, [1419] = 0x9042, [1420] = 0x9154, + [1421] = 0x9310, [1422] = 0x9318, [1423] = 0x968f, [1424] = 0x745e, + [1425] = 0x9ac4, [1426] = 0x5d07, [1427] = 0x5d69, [1428] = 0x6570, + [1429] = 0x67a2, [1430] = 0x8da8, [1431] = 0x96db, [1432] = 0x636e, + [1433] = 0x6749, [1434] = 0x6919, [1435] = 0x83c5, [1436] = 0x9817, + [1437] = 0x96c0, [1438] = 0x88fe, [1439] = 0x6f84, [1440] = 0x647a, + [1441] = 0x5bf8, [1442] = 0x4e16, [1443] = 0x702c, [1444] = 0x755d, + [1445] = 0x662f, [1446] = 0x51c4, [1447] = 0x5236, [1448] = 0x52e2, + [1449] = 0x59d3, [1450] = 0x5f81, [1451] = 0x6027, [1452] = 0x6210, + [1453] = 0x653f, [1454] = 0x6574, [1455] = 0x661f, [1456] = 0x6674, + [1457] = 0x68f2, [1458] = 0x6816, [1459] = 0x6b63, [1460] = 0x6e05, + [1461] = 0x7272, [1462] = 0x751f, [1463] = 0x76db, [1464] = 0x7cbe, + [1465] = 0x8056, [1466] = 0x58f0, [1467] = 0x88fd, [1468] = 0x897f, + [1469] = 0x8aa0, [1470] = 0x8a93, [1471] = 0x8acb, [1472] = 0x901d, + [1473] = 0x9192, [1474] = 0x9752, [1475] = 0x9759, [1476] = 0x6589, + [1477] = 0x7a0e, [1478] = 0x8106, [1479] = 0x96bb, [1480] = 0x5e2d, + [1481] = 0x60dc, [1482] = 0x621a, [1483] = 0x65a5, [1484] = 0x6614, + [1485] = 0x6790, [1486] = 0x77f3, [1487] = 0x7a4d, [1488] = 0x7c4d, + [1489] = 0x7e3e, [1490] = 0x810a, [1491] = 0x8cac, [1492] = 0x8d64, + [1493] = 0x8de1, [1494] = 0x8e5f, [1495] = 0x78a9, [1496] = 0x5207, + [1497] = 0x62d9, [1498] = 0x63a5, [1499] = 0x6442, [1500] = 0x6298, + [1501] = 0x8a2d, [1502] = 0x7a83, [1503] = 0x7bc0, [1504] = 0x8aac, + [1505] = 0x96ea, [1506] = 0x7d76, [1507] = 0x820c, [1508] = 0x8749, + [1509] = 0x4ed9, [1510] = 0x5148, [1511] = 0x5343, [1512] = 0x5360, + [1513] = 0x5ba3, [1514] = 0x5c02, [1515] = 0x5c16, [1516] = 0x5ddd, + [1517] = 0x6226, [1518] = 0x6247, [1519] = 0x64b0, [1520] = 0x6813, + [1521] = 0x6834, [1522] = 0x6cc9, [1523] = 0x6d45, [1524] = 0x6d17, + [1525] = 0x67d3, [1526] = 0x6f5c, [1527] = 0x714e, [1528] = 0x717d, + [1529] = 0x65cb, [1530] = 0x7a7f, [1531] = 0x7bad, [1532] = 0x7dda, + [1536] = 0x7e4a, [1537] = 0x7fa8, [1538] = 0x817a, [1539] = 0x821b, + [1540] = 0x8239, [1541] = 0x85a6, [1542] = 0x8a6e, [1543] = 0x8cce, + [1544] = 0x8df5, [1545] = 0x9078, [1546] = 0x9077, [1547] = 0x92ad, + [1548] = 0x9291, [1549] = 0x9583, [1550] = 0x9bae, [1551] = 0x524d, + [1552] = 0x5584, [1553] = 0x6f38, [1554] = 0x7136, [1555] = 0x5168, + [1556] = 0x7985, [1557] = 0x7e55, [1558] = 0x81b3, [1559] = 0x7cce, + [1560] = 0x564c, [1561] = 0x5851, [1562] = 0x5ca8, [1563] = 0x63aa, + [1564] = 0x66fe, [1565] = 0x66fd, [1566] = 0x695a, [1567] = 0x72d9, + [1568] = 0x758f, [1569] = 0x758e, [1570] = 0x790e, [1571] = 0x7956, + [1572] = 0x79df, [1573] = 0x7c97, [1574] = 0x7d20, [1575] = 0x7d44, + [1576] = 0x8607, [1577] = 0x8a34, [1578] = 0x963b, [1579] = 0x9061, + [1580] = 0x9f20, [1581] = 0x50e7, [1582] = 0x5275, [1583] = 0x53cc, + [1584] = 0x53e2, [1585] = 0x5009, [1586] = 0x55aa, [1587] = 0x58ee, + [1588] = 0x594f, [1589] = 0x723d, [1590] = 0x5b8b, [1591] = 0x5c64, + [1592] = 0x531d, [1593] = 0x60e3, [1594] = 0x60f3, [1595] = 0x635c, + [1596] = 0x6383, [1597] = 0x633f, [1598] = 0x63bb, [1600] = 0x64cd, + [1601] = 0x65e9, [1602] = 0x66f9, [1603] = 0x5de3, [1604] = 0x69cd, + [1605] = 0x69fd, [1606] = 0x6f15, [1607] = 0x71e5, [1608] = 0x4e89, + [1609] = 0x75e9, [1610] = 0x76f8, [1611] = 0x7a93, [1612] = 0x7cdf, + [1613] = 0x7dcf, [1614] = 0x7d9c, [1615] = 0x8061, [1616] = 0x8349, + [1617] = 0x8358, [1618] = 0x846c, [1619] = 0x84bc, [1620] = 0x85fb, + [1621] = 0x88c5, [1622] = 0x8d70, [1623] = 0x9001, [1624] = 0x906d, + [1625] = 0x9397, [1626] = 0x971c, [1627] = 0x9a12, [1628] = 0x50cf, + [1629] = 0x5897, [1630] = 0x618e, [1631] = 0x81d3, [1632] = 0x8535, + [1633] = 0x8d08, [1634] = 0x9020, [1635] = 0x4fc3, [1636] = 0x5074, + [1637] = 0x5247, [1638] = 0x5373, [1639] = 0x606f, [1640] = 0x6349, + [1641] = 0x675f, [1642] = 0x6e2c, [1643] = 0x8db3, [1644] = 0x901f, + [1645] = 0x4fd7, [1646] = 0x5c5e, [1647] = 0x8cca, [1648] = 0x65cf, + [1649] = 0x7d9a, [1650] = 0x5352, [1651] = 0x8896, [1652] = 0x5176, + [1653] = 0x63c3, [1654] = 0x5b58, [1655] = 0x5b6b, [1656] = 0x5c0a, + [1657] = 0x640d, [1658] = 0x6751, [1659] = 0x905c, [1660] = 0x4ed6, + [1661] = 0x591a, [1662] = 0x592a, [1663] = 0x6c70, [1664] = 0x8a51, + [1665] = 0x553e, [1666] = 0x5815, [1667] = 0x59a5, [1668] = 0x60f0, + [1669] = 0x6253, [1670] = 0x67c1, [1671] = 0x8235, [1672] = 0x6955, + [1673] = 0x9640, [1674] = 0x99c4, [1675] = 0x9a28, [1676] = 0x4f53, + [1677] = 0x5806, [1678] = 0x5bfe, [1679] = 0x8010, [1680] = 0x5cb1, + [1681] = 0x5e2f, [1682] = 0x5f85, [1683] = 0x6020, [1684] = 0x614b, + [1685] = 0x6234, [1686] = 0x66ff, [1687] = 0x6cf0, [1688] = 0x6ede, + [1689] = 0x80ce, [1690] = 0x817f, [1691] = 0x82d4, [1692] = 0x888b, + [1693] = 0x8cb8, [1694] = 0x9000, [1695] = 0x902e, [1696] = 0x968a, + [1697] = 0x9edb, [1698] = 0x9bdb, [1699] = 0x4ee3, [1700] = 0x53f0, + [1701] = 0x5927, [1702] = 0x7b2c, [1703] = 0x918d, [1704] = 0x984c, + [1705] = 0x9df9, [1706] = 0x6edd, [1707] = 0x7027, [1708] = 0x5353, + [1709] = 0x5544, [1710] = 0x5b85, [1711] = 0x6258, [1712] = 0x629e, + [1713] = 0x62d3, [1714] = 0x6ca2, [1715] = 0x6fef, [1716] = 0x7422, + [1717] = 0x8a17, [1718] = 0x9438, [1719] = 0x6fc1, [1720] = 0x8afe, + [1721] = 0x8338, [1722] = 0x51e7, [1723] = 0x86f8, [1724] = 0x53ea, + [1728] = 0x53e9, [1729] = 0x4f46, [1730] = 0x9054, [1731] = 0x8fb0, + [1732] = 0x596a, [1733] = 0x8131, [1734] = 0x5dfd, [1735] = 0x7aea, + [1736] = 0x8fbf, [1737] = 0x68da, [1738] = 0x8c37, [1739] = 0x72f8, + [1740] = 0x9c48, [1741] = 0x6a3d, [1742] = 0x8ab0, [1743] = 0x4e39, + [1744] = 0x5358, [1745] = 0x5606, [1746] = 0x5766, [1747] = 0x62c5, + [1748] = 0x63a2, [1749] = 0x65e6, [1750] = 0x6b4e, [1751] = 0x6de1, + [1752] = 0x6e5b, [1753] = 0x70ad, [1754] = 0x77ed, [1755] = 0x7aef, + [1756] = 0x7baa, [1757] = 0x7dbb, [1758] = 0x803d, [1759] = 0x80c6, + [1760] = 0x86cb, [1761] = 0x8a95, [1762] = 0x935b, [1763] = 0x56e3, + [1764] = 0x58c7, [1765] = 0x5f3e, [1766] = 0x65ad, [1767] = 0x6696, + [1768] = 0x6a80, [1769] = 0x6bb5, [1770] = 0x7537, [1771] = 0x8ac7, + [1772] = 0x5024, [1773] = 0x77e5, [1774] = 0x5730, [1775] = 0x5f1b, + [1776] = 0x6065, [1777] = 0x667a, [1778] = 0x6c60, [1779] = 0x75f4, + [1780] = 0x7a1a, [1781] = 0x7f6e, [1782] = 0x81f4, [1783] = 0x8718, + [1784] = 0x9045, [1785] = 0x99b3, [1786] = 0x7bc9, [1787] = 0x755c, + [1788] = 0x7af9, [1789] = 0x7b51, [1790] = 0x84c4, [1792] = 0x9010, + [1793] = 0x79e9, [1794] = 0x7a92, [1795] = 0x8336, [1796] = 0x5ae1, + [1797] = 0x7740, [1798] = 0x4e2d, [1799] = 0x4ef2, [1800] = 0x5b99, + [1801] = 0x5fe0, [1802] = 0x62bd, [1803] = 0x663c, [1804] = 0x67f1, + [1805] = 0x6ce8, [1806] = 0x866b, [1807] = 0x8877, [1808] = 0x8a3b, + [1809] = 0x914e, [1810] = 0x92f3, [1811] = 0x99d0, [1812] = 0x6a17, + [1813] = 0x7026, [1814] = 0x732a, [1815] = 0x82e7, [1816] = 0x8457, + [1817] = 0x8caf, [1818] = 0x4e01, [1819] = 0x5146, [1820] = 0x51cb, + [1821] = 0x558b, [1822] = 0x5bf5, [1823] = 0x5e16, [1824] = 0x5e33, + [1825] = 0x5e81, [1826] = 0x5f14, [1827] = 0x5f35, [1828] = 0x5f6b, + [1829] = 0x5fb4, [1830] = 0x61f2, [1831] = 0x6311, [1832] = 0x66a2, + [1833] = 0x671d, [1834] = 0x6f6e, [1835] = 0x7252, [1836] = 0x753a, + [1837] = 0x773a, [1838] = 0x8074, [1839] = 0x8139, [1840] = 0x8178, + [1841] = 0x8776, [1842] = 0x8abf, [1843] = 0x8adc, [1844] = 0x8d85, + [1845] = 0x8df3, [1846] = 0x929a, [1847] = 0x9577, [1848] = 0x9802, + [1849] = 0x9ce5, [1850] = 0x52c5, [1851] = 0x6357, [1852] = 0x76f4, + [1853] = 0x6715, [1854] = 0x6c88, [1855] = 0x73cd, [1856] = 0x8cc3, + [1857] = 0x93ae, [1858] = 0x9673, [1859] = 0x6d25, [1860] = 0x589c, + [1861] = 0x690e, [1862] = 0x69cc, [1863] = 0x8ffd, [1864] = 0x939a, + [1865] = 0x75db, [1866] = 0x901a, [1867] = 0x585a, [1868] = 0x6802, + [1869] = 0x63b4, [1870] = 0x69fb, [1871] = 0x4f43, [1872] = 0x6f2c, + [1873] = 0x67d8, [1874] = 0x8fbb, [1875] = 0x8526, [1876] = 0x7db4, + [1877] = 0x9354, [1878] = 0x693f, [1879] = 0x6f70, [1880] = 0x576a, + [1881] = 0x58f7, [1882] = 0x5b2c, [1883] = 0x7d2c, [1884] = 0x722a, + [1885] = 0x540a, [1886] = 0x91e3, [1887] = 0x9db4, [1888] = 0x4ead, + [1889] = 0x4f4e, [1890] = 0x505c, [1891] = 0x5075, [1892] = 0x5243, + [1893] = 0x8c9e, [1894] = 0x5448, [1895] = 0x5824, [1896] = 0x5b9a, + [1897] = 0x5e1d, [1898] = 0x5e95, [1899] = 0x5ead, [1900] = 0x5ef7, + [1901] = 0x5f1f, [1902] = 0x608c, [1903] = 0x62b5, [1904] = 0x633a, + [1905] = 0x63d0, [1906] = 0x68af, [1907] = 0x6c40, [1908] = 0x7887, + [1909] = 0x798e, [1910] = 0x7a0b, [1911] = 0x7de0, [1912] = 0x8247, + [1913] = 0x8a02, [1914] = 0x8ae6, [1915] = 0x8e44, [1916] = 0x9013, + [1920] = 0x90b8, [1921] = 0x912d, [1922] = 0x91d8, [1923] = 0x9f0e, + [1924] = 0x6ce5, [1925] = 0x6458, [1926] = 0x64e2, [1927] = 0x6575, + [1928] = 0x6ef4, [1929] = 0x7684, [1930] = 0x7b1b, [1931] = 0x9069, + [1932] = 0x93d1, [1933] = 0x6eba, [1934] = 0x54f2, [1935] = 0x5fb9, + [1936] = 0x64a4, [1937] = 0x8f4d, [1938] = 0x8fed, [1939] = 0x9244, + [1940] = 0x5178, [1941] = 0x586b, [1942] = 0x5929, [1943] = 0x5c55, + [1944] = 0x5e97, [1945] = 0x6dfb, [1946] = 0x7e8f, [1947] = 0x751c, + [1948] = 0x8cbc, [1949] = 0x8ee2, [1950] = 0x985b, [1951] = 0x70b9, + [1952] = 0x4f1d, [1953] = 0x6bbf, [1954] = 0x6fb1, [1955] = 0x7530, + [1956] = 0x96fb, [1957] = 0x514e, [1958] = 0x5410, [1959] = 0x5835, + [1960] = 0x5857, [1961] = 0x59ac, [1962] = 0x5c60, [1963] = 0x5f92, + [1964] = 0x6597, [1965] = 0x675c, [1966] = 0x6e21, [1967] = 0x767b, + [1968] = 0x83df, [1969] = 0x8ced, [1970] = 0x9014, [1971] = 0x90fd, + [1972] = 0x934d, [1973] = 0x7825, [1974] = 0x783a, [1975] = 0x52aa, + [1976] = 0x5ea6, [1977] = 0x571f, [1978] = 0x5974, [1979] = 0x6012, + [1980] = 0x5012, [1981] = 0x515a, [1982] = 0x51ac, [1984] = 0x51cd, + [1985] = 0x5200, [1986] = 0x5510, [1987] = 0x5854, [1988] = 0x5858, + [1989] = 0x5957, [1990] = 0x5b95, [1991] = 0x5cf6, [1992] = 0x5d8b, + [1993] = 0x60bc, [1994] = 0x6295, [1995] = 0x642d, [1996] = 0x6771, + [1997] = 0x6843, [1998] = 0x68bc, [1999] = 0x68df, [2000] = 0x76d7, + [2001] = 0x6dd8, [2002] = 0x6e6f, [2003] = 0x6d9b, [2004] = 0x706f, + [2005] = 0x71c8, [2006] = 0x5f53, [2007] = 0x75d8, [2008] = 0x7977, + [2009] = 0x7b49, [2010] = 0x7b54, [2011] = 0x7b52, [2012] = 0x7cd6, + [2013] = 0x7d71, [2014] = 0x5230, [2015] = 0x8463, [2016] = 0x8569, + [2017] = 0x85e4, [2018] = 0x8a0e, [2019] = 0x8b04, [2020] = 0x8c46, + [2021] = 0x8e0f, [2022] = 0x9003, [2023] = 0x900f, [2024] = 0x9419, + [2025] = 0x9676, [2026] = 0x982d, [2027] = 0x9a30, [2028] = 0x95d8, + [2029] = 0x50cd, [2030] = 0x52d5, [2031] = 0x540c, [2032] = 0x5802, + [2033] = 0x5c0e, [2034] = 0x61a7, [2035] = 0x649e, [2036] = 0x6d1e, + [2037] = 0x77b3, [2038] = 0x7ae5, [2039] = 0x80f4, [2040] = 0x8404, + [2041] = 0x9053, [2042] = 0x9285, [2043] = 0x5ce0, [2044] = 0x9d07, + [2045] = 0x533f, [2046] = 0x5f97, [2047] = 0x5fb3, [2048] = 0x6d9c, + [2049] = 0x7279, [2050] = 0x7763, [2051] = 0x79bf, [2052] = 0x7be4, + [2053] = 0x6bd2, [2054] = 0x72ec, [2055] = 0x8aad, [2056] = 0x6803, + [2057] = 0x6a61, [2058] = 0x51f8, [2059] = 0x7a81, [2060] = 0x6934, + [2061] = 0x5c4a, [2062] = 0x9cf6, [2063] = 0x82eb, [2064] = 0x5bc5, + [2065] = 0x9149, [2066] = 0x701e, [2067] = 0x5678, [2068] = 0x5c6f, + [2069] = 0x60c7, [2070] = 0x6566, [2071] = 0x6c8c, [2072] = 0x8c5a, + [2073] = 0x9041, [2074] = 0x9813, [2075] = 0x5451, [2076] = 0x66c7, + [2077] = 0x920d, [2078] = 0x5948, [2079] = 0x90a3, [2080] = 0x5185, + [2081] = 0x4e4d, [2082] = 0x51ea, [2083] = 0x8599, [2084] = 0x8b0e, + [2085] = 0x7058, [2086] = 0x637a, [2087] = 0x934b, [2088] = 0x6962, + [2089] = 0x99b4, [2090] = 0x7e04, [2091] = 0x7577, [2092] = 0x5357, + [2093] = 0x6960, [2094] = 0x8edf, [2095] = 0x96e3, [2096] = 0x6c5d, + [2097] = 0x4e8c, [2098] = 0x5c3c, [2099] = 0x5f10, [2100] = 0x8fe9, + [2101] = 0x5302, [2102] = 0x8cd1, [2103] = 0x8089, [2104] = 0x8679, + [2105] = 0x5eff, [2106] = 0x65e5, [2107] = 0x4e73, [2108] = 0x5165, + [2112] = 0x5982, [2113] = 0x5c3f, [2114] = 0x97ee, [2115] = 0x4efb, + [2116] = 0x598a, [2117] = 0x5fcd, [2118] = 0x8a8d, [2119] = 0x6fe1, + [2120] = 0x79b0, [2121] = 0x7962, [2122] = 0x5be7, [2123] = 0x8471, + [2124] = 0x732b, [2125] = 0x71b1, [2126] = 0x5e74, [2127] = 0x5ff5, + [2128] = 0x637b, [2129] = 0x649a, [2130] = 0x71c3, [2131] = 0x7c98, + [2132] = 0x4e43, [2133] = 0x5efc, [2134] = 0x4e4b, [2135] = 0x57dc, + [2136] = 0x56a2, [2137] = 0x60a9, [2138] = 0x6fc3, [2139] = 0x7d0d, + [2140] = 0x80fd, [2141] = 0x8133, [2142] = 0x81bf, [2143] = 0x8fb2, + [2144] = 0x8997, [2145] = 0x86a4, [2146] = 0x5df4, [2147] = 0x628a, + [2148] = 0x64ad, [2149] = 0x8987, [2150] = 0x6777, [2151] = 0x6ce2, + [2152] = 0x6d3e, [2153] = 0x7436, [2154] = 0x7834, [2155] = 0x5a46, + [2156] = 0x7f75, [2157] = 0x82ad, [2158] = 0x99ac, [2159] = 0x4ff3, + [2160] = 0x5ec3, [2161] = 0x62dd, [2162] = 0x6392, [2163] = 0x6557, + [2164] = 0x676f, [2165] = 0x76c3, [2166] = 0x724c, [2167] = 0x80cc, + [2168] = 0x80ba, [2169] = 0x8f29, [2170] = 0x914d, [2171] = 0x500d, + [2172] = 0x57f9, [2173] = 0x5a92, [2174] = 0x6885, [2176] = 0x6973, + [2177] = 0x7164, [2178] = 0x72fd, [2179] = 0x8cb7, [2180] = 0x58f2, + [2181] = 0x8ce0, [2182] = 0x966a, [2183] = 0x9019, [2184] = 0x877f, + [2185] = 0x79e4, [2186] = 0x77e7, [2187] = 0x8429, [2188] = 0x4f2f, + [2189] = 0x5265, [2190] = 0x535a, [2191] = 0x62cd, [2192] = 0x67cf, + [2193] = 0x6cca, [2194] = 0x767d, [2195] = 0x7b94, [2196] = 0x7c95, + [2197] = 0x8236, [2198] = 0x8584, [2199] = 0x8feb, [2200] = 0x66dd, + [2201] = 0x6f20, [2202] = 0x7206, [2203] = 0x7e1b, [2204] = 0x83ab, + [2205] = 0x99c1, [2206] = 0x9ea6, [2207] = 0x51fd, [2208] = 0x7bb1, + [2209] = 0x7872, [2210] = 0x7bb8, [2211] = 0x8087, [2212] = 0x7b48, + [2213] = 0x6ae8, [2214] = 0x5e61, [2215] = 0x808c, [2216] = 0x7551, + [2217] = 0x7560, [2218] = 0x516b, [2219] = 0x9262, [2220] = 0x6e8c, + [2221] = 0x767a, [2222] = 0x9197, [2223] = 0x9aea, [2224] = 0x4f10, + [2225] = 0x7f70, [2226] = 0x629c, [2227] = 0x7b4f, [2228] = 0x95a5, + [2229] = 0x9ce9, [2230] = 0x567a, [2231] = 0x5859, [2232] = 0x86e4, + [2233] = 0x96bc, [2234] = 0x4f34, [2235] = 0x5224, [2236] = 0x534a, + [2237] = 0x53cd, [2238] = 0x53db, [2239] = 0x5e06, [2240] = 0x642c, + [2241] = 0x6591, [2242] = 0x677f, [2243] = 0x6c3e, [2244] = 0x6c4e, + [2245] = 0x7248, [2246] = 0x72af, [2247] = 0x73ed, [2248] = 0x7554, + [2249] = 0x7e41, [2250] = 0x822c, [2251] = 0x85e9, [2252] = 0x8ca9, + [2253] = 0x7bc4, [2254] = 0x91c6, [2255] = 0x7169, [2256] = 0x9812, + [2257] = 0x98ef, [2258] = 0x633d, [2259] = 0x6669, [2260] = 0x756a, + [2261] = 0x76e4, [2262] = 0x78d0, [2263] = 0x8543, [2264] = 0x86ee, + [2265] = 0x532a, [2266] = 0x5351, [2267] = 0x5426, [2268] = 0x5983, + [2269] = 0x5e87, [2270] = 0x5f7c, [2271] = 0x60b2, [2272] = 0x6249, + [2273] = 0x6279, [2274] = 0x62ab, [2275] = 0x6590, [2276] = 0x6bd4, + [2277] = 0x6ccc, [2278] = 0x75b2, [2279] = 0x76ae, [2280] = 0x7891, + [2281] = 0x79d8, [2282] = 0x7dcb, [2283] = 0x7f77, [2284] = 0x80a5, + [2285] = 0x88ab, [2286] = 0x8ab9, [2287] = 0x8cbb, [2288] = 0x907f, + [2289] = 0x975e, [2290] = 0x98db, [2291] = 0x6a0b, [2292] = 0x7c38, + [2293] = 0x5099, [2294] = 0x5c3e, [2295] = 0x5fae, [2296] = 0x6787, + [2297] = 0x6bd8, [2298] = 0x7435, [2299] = 0x7709, [2300] = 0x7f8e, + [2304] = 0x9f3b, [2305] = 0x67ca, [2306] = 0x7a17, [2307] = 0x5339, + [2308] = 0x758b, [2309] = 0x9aed, [2310] = 0x5f66, [2311] = 0x819d, + [2312] = 0x83f1, [2313] = 0x8098, [2314] = 0x5f3c, [2315] = 0x5fc5, + [2316] = 0x7562, [2317] = 0x7b46, [2318] = 0x903c, [2319] = 0x6867, + [2320] = 0x59eb, [2321] = 0x5a9b, [2322] = 0x7d10, [2323] = 0x767e, + [2324] = 0x8b2c, [2325] = 0x4ff5, [2326] = 0x5f6a, [2327] = 0x6a19, + [2328] = 0x6c37, [2329] = 0x6f02, [2330] = 0x74e2, [2331] = 0x7968, + [2332] = 0x8868, [2333] = 0x8a55, [2334] = 0x8c79, [2335] = 0x5edf, + [2336] = 0x63cf, [2337] = 0x75c5, [2338] = 0x79d2, [2339] = 0x82d7, + [2340] = 0x9328, [2341] = 0x92f2, [2342] = 0x849c, [2343] = 0x86ed, + [2344] = 0x9c2d, [2345] = 0x54c1, [2346] = 0x5f6c, [2347] = 0x658c, + [2348] = 0x6d5c, [2349] = 0x7015, [2350] = 0x8ca7, [2351] = 0x8cd3, + [2352] = 0x983b, [2353] = 0x654f, [2354] = 0x74f6, [2355] = 0x4e0d, + [2356] = 0x4ed8, [2357] = 0x57e0, [2358] = 0x592b, [2359] = 0x5a66, + [2360] = 0x5bcc, [2361] = 0x51a8, [2362] = 0x5e03, [2363] = 0x5e9c, + [2364] = 0x6016, [2365] = 0x6276, [2366] = 0x6577, [2368] = 0x65a7, + [2369] = 0x666e, [2370] = 0x6d6e, [2371] = 0x7236, [2372] = 0x7b26, + [2373] = 0x8150, [2374] = 0x819a, [2375] = 0x8299, [2376] = 0x8b5c, + [2377] = 0x8ca0, [2378] = 0x8ce6, [2379] = 0x8d74, [2380] = 0x961c, + [2381] = 0x9644, [2382] = 0x4fae, [2383] = 0x64ab, [2384] = 0x6b66, + [2385] = 0x821e, [2386] = 0x8461, [2387] = 0x856a, [2388] = 0x90e8, + [2389] = 0x5c01, [2390] = 0x6953, [2391] = 0x98a8, [2392] = 0x847a, + [2393] = 0x8557, [2394] = 0x4f0f, [2395] = 0x526f, [2396] = 0x5fa9, + [2397] = 0x5e45, [2398] = 0x670d, [2399] = 0x798f, [2400] = 0x8179, + [2401] = 0x8907, [2402] = 0x8986, [2403] = 0x6df5, [2404] = 0x5f17, + [2405] = 0x6255, [2406] = 0x6cb8, [2407] = 0x4ecf, [2408] = 0x7269, + [2409] = 0x9b92, [2410] = 0x5206, [2411] = 0x543b, [2412] = 0x5674, + [2413] = 0x58b3, [2414] = 0x61a4, [2415] = 0x626e, [2416] = 0x711a, + [2417] = 0x596e, [2418] = 0x7c89, [2419] = 0x7cde, [2420] = 0x7d1b, + [2421] = 0x96f0, [2422] = 0x6587, [2423] = 0x805e, [2424] = 0x4e19, + [2425] = 0x4f75, [2426] = 0x5175, [2427] = 0x5840, [2428] = 0x5e63, + [2429] = 0x5e73, [2430] = 0x5f0a, [2431] = 0x67c4, [2432] = 0x4e26, + [2433] = 0x853d, [2434] = 0x9589, [2435] = 0x965b, [2436] = 0x7c73, + [2437] = 0x9801, [2438] = 0x50fb, [2439] = 0x58c1, [2440] = 0x7656, + [2441] = 0x78a7, [2442] = 0x5225, [2443] = 0x77a5, [2444] = 0x8511, + [2445] = 0x7b86, [2446] = 0x504f, [2447] = 0x5909, [2448] = 0x7247, + [2449] = 0x7bc7, [2450] = 0x7de8, [2451] = 0x8fba, [2452] = 0x8fd4, + [2453] = 0x904d, [2454] = 0x4fbf, [2455] = 0x52c9, [2456] = 0x5a29, + [2457] = 0x5f01, [2458] = 0x97ad, [2459] = 0x4fdd, [2460] = 0x8217, + [2461] = 0x92ea, [2462] = 0x5703, [2463] = 0x6355, [2464] = 0x6b69, + [2465] = 0x752b, [2466] = 0x88dc, [2467] = 0x8f14, [2468] = 0x7a42, + [2469] = 0x52df, [2470] = 0x5893, [2471] = 0x6155, [2472] = 0x620a, + [2473] = 0x66ae, [2474] = 0x6bcd, [2475] = 0x7c3f, [2476] = 0x83e9, + [2477] = 0x5023, [2478] = 0x4ff8, [2479] = 0x5305, [2480] = 0x5446, + [2481] = 0x5831, [2482] = 0x5949, [2483] = 0x5b9d, [2484] = 0x5cf0, + [2485] = 0x5cef, [2486] = 0x5d29, [2487] = 0x5e96, [2488] = 0x62b1, + [2489] = 0x6367, [2490] = 0x653e, [2491] = 0x65b9, [2492] = 0x670b, + [2496] = 0x6cd5, [2497] = 0x6ce1, [2498] = 0x70f9, [2499] = 0x7832, + [2500] = 0x7e2b, [2501] = 0x80de, [2502] = 0x82b3, [2503] = 0x840c, + [2504] = 0x84ec, [2505] = 0x8702, [2506] = 0x8912, [2507] = 0x8a2a, + [2508] = 0x8c4a, [2509] = 0x90a6, [2510] = 0x92d2, [2511] = 0x98fd, + [2512] = 0x9cf3, [2513] = 0x9d6c, [2514] = 0x4e4f, [2515] = 0x4ea1, + [2516] = 0x508d, [2517] = 0x5256, [2518] = 0x574a, [2519] = 0x59a8, + [2520] = 0x5e3d, [2521] = 0x5fd8, [2522] = 0x5fd9, [2523] = 0x623f, + [2524] = 0x66b4, [2525] = 0x671b, [2526] = 0x67d0, [2527] = 0x68d2, + [2528] = 0x5192, [2529] = 0x7d21, [2530] = 0x80aa, [2531] = 0x81a8, + [2532] = 0x8b00, [2533] = 0x8c8c, [2534] = 0x8cbf, [2535] = 0x927e, + [2536] = 0x9632, [2537] = 0x5420, [2538] = 0x982c, [2539] = 0x5317, + [2540] = 0x50d5, [2541] = 0x535c, [2542] = 0x58a8, [2543] = 0x64b2, + [2544] = 0x6734, [2545] = 0x7267, [2546] = 0x7766, [2547] = 0x7a46, + [2548] = 0x91e6, [2549] = 0x52c3, [2550] = 0x6ca1, [2551] = 0x6b86, + [2552] = 0x5800, [2553] = 0x5e4c, [2554] = 0x5954, [2555] = 0x672c, + [2556] = 0x7ffb, [2557] = 0x51e1, [2558] = 0x76c6, [2560] = 0x6469, + [2561] = 0x78e8, [2562] = 0x9b54, [2563] = 0x9ebb, [2564] = 0x57cb, + [2565] = 0x59b9, [2566] = 0x6627, [2567] = 0x679a, [2568] = 0x6bce, + [2569] = 0x54e9, [2570] = 0x69d9, [2571] = 0x5e55, [2572] = 0x819c, + [2573] = 0x6795, [2574] = 0x9baa, [2575] = 0x67fe, [2576] = 0x9c52, + [2577] = 0x685d, [2578] = 0x4ea6, [2579] = 0x4fe3, [2580] = 0x53c8, + [2581] = 0x62b9, [2582] = 0x672b, [2583] = 0x6cab, [2584] = 0x8fc4, + [2585] = 0x4fad, [2586] = 0x7e6d, [2587] = 0x9ebf, [2588] = 0x4e07, + [2589] = 0x6162, [2590] = 0x6e80, [2591] = 0x6f2b, [2592] = 0x8513, + [2593] = 0x5473, [2594] = 0x672a, [2595] = 0x9b45, [2596] = 0x5df3, + [2597] = 0x7b95, [2598] = 0x5cac, [2599] = 0x5bc6, [2600] = 0x871c, + [2601] = 0x6e4a, [2602] = 0x84d1, [2603] = 0x7a14, [2604] = 0x8108, + [2605] = 0x5999, [2606] = 0x7c8d, [2607] = 0x6c11, [2608] = 0x7720, + [2609] = 0x52d9, [2610] = 0x5922, [2611] = 0x7121, [2612] = 0x725f, + [2613] = 0x77db, [2614] = 0x9727, [2615] = 0x9d61, [2616] = 0x690b, + [2617] = 0x5a7f, [2618] = 0x5a18, [2619] = 0x51a5, [2620] = 0x540d, + [2621] = 0x547d, [2622] = 0x660e, [2623] = 0x76df, [2624] = 0x8ff7, + [2625] = 0x9298, [2626] = 0x9cf4, [2627] = 0x59ea, [2628] = 0x725d, + [2629] = 0x6ec5, [2630] = 0x514d, [2631] = 0x68c9, [2632] = 0x7dbf, + [2633] = 0x7dec, [2634] = 0x9762, [2635] = 0x9eba, [2636] = 0x6478, + [2637] = 0x6a21, [2638] = 0x8302, [2639] = 0x5984, [2640] = 0x5b5f, + [2641] = 0x6bdb, [2642] = 0x731b, [2643] = 0x76f2, [2644] = 0x7db2, + [2645] = 0x8017, [2646] = 0x8499, [2647] = 0x5132, [2648] = 0x6728, + [2649] = 0x9ed9, [2650] = 0x76ee, [2651] = 0x6762, [2652] = 0x52ff, + [2653] = 0x9905, [2654] = 0x5c24, [2655] = 0x623b, [2656] = 0x7c7e, + [2657] = 0x8cb0, [2658] = 0x554f, [2659] = 0x60b6, [2660] = 0x7d0b, + [2661] = 0x9580, [2662] = 0x5301, [2663] = 0x4e5f, [2664] = 0x51b6, + [2665] = 0x591c, [2666] = 0x723a, [2667] = 0x8036, [2668] = 0x91ce, + [2669] = 0x5f25, [2670] = 0x77e2, [2671] = 0x5384, [2672] = 0x5f79, + [2673] = 0x7d04, [2674] = 0x85ac, [2675] = 0x8a33, [2676] = 0x8e8d, + [2677] = 0x9756, [2678] = 0x67f3, [2679] = 0x85ae, [2680] = 0x9453, + [2681] = 0x6109, [2682] = 0x6108, [2683] = 0x6cb9, [2684] = 0x7652, + [2688] = 0x8aed, [2689] = 0x8f38, [2690] = 0x552f, [2691] = 0x4f51, + [2692] = 0x512a, [2693] = 0x52c7, [2694] = 0x53cb, [2695] = 0x5ba5, + [2696] = 0x5e7d, [2697] = 0x60a0, [2698] = 0x6182, [2699] = 0x63d6, + [2700] = 0x6709, [2701] = 0x67da, [2702] = 0x6e67, [2703] = 0x6d8c, + [2704] = 0x7336, [2705] = 0x7337, [2706] = 0x7531, [2707] = 0x7950, + [2708] = 0x88d5, [2709] = 0x8a98, [2710] = 0x904a, [2711] = 0x9091, + [2712] = 0x90f5, [2713] = 0x96c4, [2714] = 0x878d, [2715] = 0x5915, + [2716] = 0x4e88, [2717] = 0x4f59, [2718] = 0x4e0e, [2719] = 0x8a89, + [2720] = 0x8f3f, [2721] = 0x9810, [2722] = 0x50ad, [2723] = 0x5e7c, + [2724] = 0x5996, [2725] = 0x5bb9, [2726] = 0x5eb8, [2727] = 0x63da, + [2728] = 0x63fa, [2729] = 0x64c1, [2730] = 0x66dc, [2731] = 0x694a, + [2732] = 0x69d8, [2733] = 0x6d0b, [2734] = 0x6eb6, [2735] = 0x7194, + [2736] = 0x7528, [2737] = 0x7aaf, [2738] = 0x7f8a, [2739] = 0x8000, + [2740] = 0x8449, [2741] = 0x84c9, [2742] = 0x8981, [2743] = 0x8b21, + [2744] = 0x8e0a, [2745] = 0x9065, [2746] = 0x967d, [2747] = 0x990a, + [2748] = 0x617e, [2749] = 0x6291, [2750] = 0x6b32, [2752] = 0x6c83, + [2753] = 0x6d74, [2754] = 0x7fcc, [2755] = 0x7ffc, [2756] = 0x6dc0, + [2757] = 0x7f85, [2758] = 0x87ba, [2759] = 0x88f8, [2760] = 0x6765, + [2761] = 0x83b1, [2762] = 0x983c, [2763] = 0x96f7, [2764] = 0x6d1b, + [2765] = 0x7d61, [2766] = 0x843d, [2767] = 0x916a, [2768] = 0x4e71, + [2769] = 0x5375, [2770] = 0x5d50, [2771] = 0x6b04, [2772] = 0x6feb, + [2773] = 0x85cd, [2774] = 0x862d, [2775] = 0x89a7, [2776] = 0x5229, + [2777] = 0x540f, [2778] = 0x5c65, [2779] = 0x674e, [2780] = 0x68a8, + [2781] = 0x7406, [2782] = 0x7483, [2783] = 0x75e2, [2784] = 0x88cf, + [2785] = 0x88e1, [2786] = 0x91cc, [2787] = 0x96e2, [2788] = 0x9678, + [2789] = 0x5f8b, [2790] = 0x7387, [2791] = 0x7acb, [2792] = 0x844e, + [2793] = 0x63a0, [2794] = 0x7565, [2795] = 0x5289, [2796] = 0x6d41, + [2797] = 0x6e9c, [2798] = 0x7409, [2799] = 0x7559, [2800] = 0x786b, + [2801] = 0x7c92, [2802] = 0x9686, [2803] = 0x7adc, [2804] = 0x9f8d, + [2805] = 0x4fb6, [2806] = 0x616e, [2807] = 0x65c5, [2808] = 0x865c, + [2809] = 0x4e86, [2810] = 0x4eae, [2811] = 0x50da, [2812] = 0x4e21, + [2813] = 0x51cc, [2814] = 0x5bee, [2815] = 0x6599, [2816] = 0x6881, + [2817] = 0x6dbc, [2818] = 0x731f, [2819] = 0x7642, [2820] = 0x77ad, + [2821] = 0x7a1c, [2822] = 0x7ce7, [2823] = 0x826f, [2824] = 0x8ad2, + [2825] = 0x907c, [2826] = 0x91cf, [2827] = 0x9675, [2828] = 0x9818, + [2829] = 0x529b, [2830] = 0x7dd1, [2831] = 0x502b, [2832] = 0x5398, + [2833] = 0x6797, [2834] = 0x6dcb, [2835] = 0x71d0, [2836] = 0x7433, + [2837] = 0x81e8, [2838] = 0x8f2a, [2839] = 0x96a3, [2840] = 0x9c57, + [2841] = 0x9e9f, [2842] = 0x7460, [2843] = 0x5841, [2844] = 0x6d99, + [2845] = 0x7d2f, [2846] = 0x985e, [2847] = 0x4ee4, [2848] = 0x4f36, + [2849] = 0x4f8b, [2850] = 0x51b7, [2851] = 0x52b1, [2852] = 0x5dba, + [2853] = 0x601c, [2854] = 0x73b2, [2855] = 0x793c, [2856] = 0x82d3, + [2857] = 0x9234, [2858] = 0x96b7, [2859] = 0x96f6, [2860] = 0x970a, + [2861] = 0x9e97, [2862] = 0x9f62, [2863] = 0x66a6, [2864] = 0x6b74, + [2865] = 0x5217, [2866] = 0x52a3, [2867] = 0x70c8, [2868] = 0x88c2, + [2869] = 0x5ec9, [2870] = 0x604b, [2871] = 0x6190, [2872] = 0x6f23, + [2873] = 0x7149, [2874] = 0x7c3e, [2875] = 0x7df4, [2876] = 0x806f, + [2880] = 0x84ee, [2881] = 0x9023, [2882] = 0x932c, [2883] = 0x5442, + [2884] = 0x9b6f, [2885] = 0x6ad3, [2886] = 0x7089, [2887] = 0x8cc2, + [2888] = 0x8def, [2889] = 0x9732, [2890] = 0x52b4, [2891] = 0x5a41, + [2892] = 0x5eca, [2893] = 0x5f04, [2894] = 0x6717, [2895] = 0x697c, + [2896] = 0x6994, [2897] = 0x6d6a, [2898] = 0x6f0f, [2899] = 0x7262, + [2900] = 0x72fc, [2901] = 0x7bed, [2902] = 0x8001, [2903] = 0x807e, + [2904] = 0x874b, [2905] = 0x90ce, [2906] = 0x516d, [2907] = 0x9e93, + [2908] = 0x7984, [2909] = 0x808b, [2910] = 0x9332, [2911] = 0x8ad6, + [2912] = 0x502d, [2913] = 0x548c, [2914] = 0x8a71, [2915] = 0x6b6a, + [2916] = 0x8cc4, [2917] = 0x8107, [2918] = 0x60d1, [2919] = 0x67a0, + [2920] = 0x9df2, [2921] = 0x4e99, [2922] = 0x4e98, [2923] = 0x9c10, + [2924] = 0x8a6b, [2925] = 0x85c1, [2926] = 0x8568, [2927] = 0x6900, + [2928] = 0x6e7e, [2929] = 0x7897, [2930] = 0x8155, [2975] = 0x5f0c, + [2976] = 0x4e10, [2977] = 0x4e15, [2978] = 0x4e2a, [2979] = 0x4e31, + [2980] = 0x4e36, [2981] = 0x4e3c, [2982] = 0x4e3f, [2983] = 0x4e42, + [2984] = 0x4e56, [2985] = 0x4e58, [2986] = 0x4e82, [2987] = 0x4e85, + [2988] = 0x8c6b, [2989] = 0x4e8a, [2990] = 0x8212, [2991] = 0x5f0d, + [2992] = 0x4e8e, [2993] = 0x4e9e, [2994] = 0x4e9f, [2995] = 0x4ea0, + [2996] = 0x4ea2, [2997] = 0x4eb0, [2998] = 0x4eb3, [2999] = 0x4eb6, + [3000] = 0x4ece, [3001] = 0x4ecd, [3002] = 0x4ec4, [3003] = 0x4ec6, + [3004] = 0x4ec2, [3005] = 0x4ed7, [3006] = 0x4ede, [3007] = 0x4eed, + [3008] = 0x4edf, [3009] = 0x4ef7, [3010] = 0x4f09, [3011] = 0x4f5a, + [3012] = 0x4f30, [3013] = 0x4f5b, [3014] = 0x4f5d, [3015] = 0x4f57, + [3016] = 0x4f47, [3017] = 0x4f76, [3018] = 0x4f88, [3019] = 0x4f8f, + [3020] = 0x4f98, [3021] = 0x4f7b, [3022] = 0x4f69, [3023] = 0x4f70, + [3024] = 0x4f91, [3025] = 0x4f6f, [3026] = 0x4f86, [3027] = 0x4f96, + [3028] = 0x5118, [3029] = 0x4fd4, [3030] = 0x4fdf, [3031] = 0x4fce, + [3032] = 0x4fd8, [3033] = 0x4fdb, [3034] = 0x4fd1, [3035] = 0x4fda, + [3036] = 0x4fd0, [3037] = 0x4fe4, [3038] = 0x4fe5, [3039] = 0x501a, + [3040] = 0x5028, [3041] = 0x5014, [3042] = 0x502a, [3043] = 0x5025, + [3044] = 0x5005, [3045] = 0x4f1c, [3046] = 0x4ff6, [3047] = 0x5021, + [3048] = 0x5029, [3049] = 0x502c, [3050] = 0x4ffe, [3051] = 0x4fef, + [3052] = 0x5011, [3053] = 0x5006, [3054] = 0x5043, [3055] = 0x5047, + [3056] = 0x6703, [3057] = 0x5055, [3058] = 0x5050, [3059] = 0x5048, + [3060] = 0x505a, [3061] = 0x5056, [3062] = 0x506c, [3063] = 0x5078, + [3064] = 0x5080, [3065] = 0x509a, [3066] = 0x5085, [3067] = 0x50b4, + [3068] = 0x50b2, [3072] = 0x50c9, [3073] = 0x50ca, [3074] = 0x50b3, + [3075] = 0x50c2, [3076] = 0x50d6, [3077] = 0x50de, [3078] = 0x50e5, + [3079] = 0x50ed, [3080] = 0x50e3, [3081] = 0x50ee, [3082] = 0x50f9, + [3083] = 0x50f5, [3084] = 0x5109, [3085] = 0x5101, [3086] = 0x5102, + [3087] = 0x5116, [3088] = 0x5115, [3089] = 0x5114, [3090] = 0x511a, + [3091] = 0x5121, [3092] = 0x513a, [3093] = 0x5137, [3094] = 0x513c, + [3095] = 0x513b, [3096] = 0x513f, [3097] = 0x5140, [3098] = 0x5152, + [3099] = 0x514c, [3100] = 0x5154, [3101] = 0x5162, [3102] = 0x7af8, + [3103] = 0x5169, [3104] = 0x516a, [3105] = 0x516e, [3106] = 0x5180, + [3107] = 0x5182, [3108] = 0x56d8, [3109] = 0x518c, [3110] = 0x5189, + [3111] = 0x518f, [3112] = 0x5191, [3113] = 0x5193, [3114] = 0x5195, + [3115] = 0x5196, [3116] = 0x51a4, [3117] = 0x51a6, [3118] = 0x51a2, + [3119] = 0x51a9, [3120] = 0x51aa, [3121] = 0x51ab, [3122] = 0x51b3, + [3123] = 0x51b1, [3124] = 0x51b2, [3125] = 0x51b0, [3126] = 0x51b5, + [3127] = 0x51bd, [3128] = 0x51c5, [3129] = 0x51c9, [3130] = 0x51db, + [3131] = 0x51e0, [3132] = 0x8655, [3133] = 0x51e9, [3134] = 0x51ed, + [3136] = 0x51f0, [3137] = 0x51f5, [3138] = 0x51fe, [3139] = 0x5204, + [3140] = 0x520b, [3141] = 0x5214, [3142] = 0x520e, [3143] = 0x5227, + [3144] = 0x522a, [3145] = 0x522e, [3146] = 0x5233, [3147] = 0x5239, + [3148] = 0x524f, [3149] = 0x5244, [3150] = 0x524b, [3151] = 0x524c, + [3152] = 0x525e, [3153] = 0x5254, [3154] = 0x526a, [3155] = 0x5274, + [3156] = 0x5269, [3157] = 0x5273, [3158] = 0x527f, [3159] = 0x527d, + [3160] = 0x528d, [3161] = 0x5294, [3162] = 0x5292, [3163] = 0x5271, + [3164] = 0x5288, [3165] = 0x5291, [3166] = 0x8fa8, [3167] = 0x8fa7, + [3168] = 0x52ac, [3169] = 0x52ad, [3170] = 0x52bc, [3171] = 0x52b5, + [3172] = 0x52c1, [3173] = 0x52cd, [3174] = 0x52d7, [3175] = 0x52de, + [3176] = 0x52e3, [3177] = 0x52e6, [3178] = 0x98ed, [3179] = 0x52e0, + [3180] = 0x52f3, [3181] = 0x52f5, [3182] = 0x52f8, [3183] = 0x52f9, + [3184] = 0x5306, [3185] = 0x5308, [3186] = 0x7538, [3187] = 0x530d, + [3188] = 0x5310, [3189] = 0x530f, [3190] = 0x5315, [3191] = 0x531a, + [3192] = 0x5323, [3193] = 0x532f, [3194] = 0x5331, [3195] = 0x5333, + [3196] = 0x5338, [3197] = 0x5340, [3198] = 0x5346, [3199] = 0x5345, + [3200] = 0x4e17, [3201] = 0x5349, [3202] = 0x534d, [3203] = 0x51d6, + [3204] = 0x535e, [3205] = 0x5369, [3206] = 0x536e, [3207] = 0x5918, + [3208] = 0x537b, [3209] = 0x5377, [3210] = 0x5382, [3211] = 0x5396, + [3212] = 0x53a0, [3213] = 0x53a6, [3214] = 0x53a5, [3215] = 0x53ae, + [3216] = 0x53b0, [3217] = 0x53b6, [3218] = 0x53c3, [3219] = 0x7c12, + [3220] = 0x96d9, [3221] = 0x53df, [3222] = 0x66fc, [3223] = 0x71ee, + [3224] = 0x53ee, [3225] = 0x53e8, [3226] = 0x53ed, [3227] = 0x53fa, + [3228] = 0x5401, [3229] = 0x543d, [3230] = 0x5440, [3231] = 0x542c, + [3232] = 0x542d, [3233] = 0x543c, [3234] = 0x542e, [3235] = 0x5436, + [3236] = 0x5429, [3237] = 0x541d, [3238] = 0x544e, [3239] = 0x548f, + [3240] = 0x5475, [3241] = 0x548e, [3242] = 0x545f, [3243] = 0x5471, + [3244] = 0x5477, [3245] = 0x5470, [3246] = 0x5492, [3247] = 0x547b, + [3248] = 0x5480, [3249] = 0x5476, [3250] = 0x5484, [3251] = 0x5490, + [3252] = 0x5486, [3253] = 0x54c7, [3254] = 0x54a2, [3255] = 0x54b8, + [3256] = 0x54a5, [3257] = 0x54ac, [3258] = 0x54c4, [3259] = 0x54c8, + [3260] = 0x54a8, [3264] = 0x54ab, [3265] = 0x54c2, [3266] = 0x54a4, + [3267] = 0x54be, [3268] = 0x54bc, [3269] = 0x54d8, [3270] = 0x54e5, + [3271] = 0x54e6, [3272] = 0x550f, [3273] = 0x5514, [3274] = 0x54fd, + [3275] = 0x54ee, [3276] = 0x54ed, [3277] = 0x54fa, [3278] = 0x54e2, + [3279] = 0x5539, [3280] = 0x5540, [3281] = 0x5563, [3282] = 0x554c, + [3283] = 0x552e, [3284] = 0x555c, [3285] = 0x5545, [3286] = 0x5556, + [3287] = 0x5557, [3288] = 0x5538, [3289] = 0x5533, [3290] = 0x555d, + [3291] = 0x5599, [3292] = 0x5580, [3293] = 0x54af, [3294] = 0x558a, + [3295] = 0x559f, [3296] = 0x557b, [3297] = 0x557e, [3298] = 0x5598, + [3299] = 0x559e, [3300] = 0x55ae, [3301] = 0x557c, [3302] = 0x5583, + [3303] = 0x55a9, [3304] = 0x5587, [3305] = 0x55a8, [3306] = 0x55da, + [3307] = 0x55c5, [3308] = 0x55df, [3309] = 0x55c4, [3310] = 0x55dc, + [3311] = 0x55e4, [3312] = 0x55d4, [3313] = 0x5614, [3314] = 0x55f7, + [3315] = 0x5616, [3316] = 0x55fe, [3317] = 0x55fd, [3318] = 0x561b, + [3319] = 0x55f9, [3320] = 0x564e, [3321] = 0x5650, [3322] = 0x71df, + [3323] = 0x5634, [3324] = 0x5636, [3325] = 0x5632, [3326] = 0x5638, + [3328] = 0x566b, [3329] = 0x5664, [3330] = 0x562f, [3331] = 0x566c, + [3332] = 0x566a, [3333] = 0x5686, [3334] = 0x5680, [3335] = 0x568a, + [3336] = 0x56a0, [3337] = 0x5694, [3338] = 0x568f, [3339] = 0x56a5, + [3340] = 0x56ae, [3341] = 0x56b6, [3342] = 0x56b4, [3343] = 0x56c2, + [3344] = 0x56bc, [3345] = 0x56c1, [3346] = 0x56c3, [3347] = 0x56c0, + [3348] = 0x56c8, [3349] = 0x56ce, [3350] = 0x56d1, [3351] = 0x56d3, + [3352] = 0x56d7, [3353] = 0x56ee, [3354] = 0x56f9, [3355] = 0x5700, + [3356] = 0x56ff, [3357] = 0x5704, [3358] = 0x5709, [3359] = 0x5708, + [3360] = 0x570b, [3361] = 0x570d, [3362] = 0x5713, [3363] = 0x5718, + [3364] = 0x5716, [3365] = 0x55c7, [3366] = 0x571c, [3367] = 0x5726, + [3368] = 0x5737, [3369] = 0x5738, [3370] = 0x574e, [3371] = 0x573b, + [3372] = 0x5740, [3373] = 0x574f, [3374] = 0x5769, [3375] = 0x57c0, + [3376] = 0x5788, [3377] = 0x5761, [3378] = 0x577f, [3379] = 0x5789, + [3380] = 0x5793, [3381] = 0x57a0, [3382] = 0x57b3, [3383] = 0x57a4, + [3384] = 0x57aa, [3385] = 0x57b0, [3386] = 0x57c3, [3387] = 0x57c6, + [3388] = 0x57d4, [3389] = 0x57d2, [3390] = 0x57d3, [3391] = 0x580a, + [3392] = 0x57d6, [3393] = 0x57e3, [3394] = 0x580b, [3395] = 0x5819, + [3396] = 0x581d, [3397] = 0x5872, [3398] = 0x5821, [3399] = 0x5862, + [3400] = 0x584b, [3401] = 0x5870, [3402] = 0x6bc0, [3403] = 0x5852, + [3404] = 0x583d, [3405] = 0x5879, [3406] = 0x5885, [3407] = 0x58b9, + [3408] = 0x589f, [3409] = 0x58ab, [3410] = 0x58ba, [3411] = 0x58de, + [3412] = 0x58bb, [3413] = 0x58b8, [3414] = 0x58ae, [3415] = 0x58c5, + [3416] = 0x58d3, [3417] = 0x58d1, [3418] = 0x58d7, [3419] = 0x58d9, + [3420] = 0x58d8, [3421] = 0x58e5, [3422] = 0x58dc, [3423] = 0x58e4, + [3424] = 0x58df, [3425] = 0x58ef, [3426] = 0x58fa, [3427] = 0x58f9, + [3428] = 0x58fb, [3429] = 0x58fc, [3430] = 0x58fd, [3431] = 0x5902, + [3432] = 0x590a, [3433] = 0x5910, [3434] = 0x591b, [3435] = 0x68a6, + [3436] = 0x5925, [3437] = 0x592c, [3438] = 0x592d, [3439] = 0x5932, + [3440] = 0x5938, [3441] = 0x593e, [3442] = 0x7ad2, [3443] = 0x5955, + [3444] = 0x5950, [3445] = 0x594e, [3446] = 0x595a, [3447] = 0x5958, + [3448] = 0x5962, [3449] = 0x5960, [3450] = 0x5967, [3451] = 0x596c, + [3452] = 0x5969, [3456] = 0x5978, [3457] = 0x5981, [3458] = 0x599d, + [3459] = 0x4f5e, [3460] = 0x4fab, [3461] = 0x59a3, [3462] = 0x59b2, + [3463] = 0x59c6, [3464] = 0x59e8, [3465] = 0x59dc, [3466] = 0x598d, + [3467] = 0x59d9, [3468] = 0x59da, [3469] = 0x5a25, [3470] = 0x5a1f, + [3471] = 0x5a11, [3472] = 0x5a1c, [3473] = 0x5a09, [3474] = 0x5a1a, + [3475] = 0x5a40, [3476] = 0x5a6c, [3477] = 0x5a49, [3478] = 0x5a35, + [3479] = 0x5a36, [3480] = 0x5a62, [3481] = 0x5a6a, [3482] = 0x5a9a, + [3483] = 0x5abc, [3484] = 0x5abe, [3485] = 0x5acb, [3486] = 0x5ac2, + [3487] = 0x5abd, [3488] = 0x5ae3, [3489] = 0x5ad7, [3490] = 0x5ae6, + [3491] = 0x5ae9, [3492] = 0x5ad6, [3493] = 0x5afa, [3494] = 0x5afb, + [3495] = 0x5b0c, [3496] = 0x5b0b, [3497] = 0x5b16, [3498] = 0x5b32, + [3499] = 0x5ad0, [3500] = 0x5b2a, [3501] = 0x5b36, [3502] = 0x5b3e, + [3503] = 0x5b43, [3504] = 0x5b45, [3505] = 0x5b40, [3506] = 0x5b51, + [3507] = 0x5b55, [3508] = 0x5b5a, [3509] = 0x5b5b, [3510] = 0x5b65, + [3511] = 0x5b69, [3512] = 0x5b70, [3513] = 0x5b73, [3514] = 0x5b75, + [3515] = 0x5b78, [3516] = 0x6588, [3517] = 0x5b7a, [3518] = 0x5b80, + [3520] = 0x5b83, [3521] = 0x5ba6, [3522] = 0x5bb8, [3523] = 0x5bc3, + [3524] = 0x5bc7, [3525] = 0x5bc9, [3526] = 0x5bd4, [3527] = 0x5bd0, + [3528] = 0x5be4, [3529] = 0x5be6, [3530] = 0x5be2, [3531] = 0x5bde, + [3532] = 0x5be5, [3533] = 0x5beb, [3534] = 0x5bf0, [3535] = 0x5bf6, + [3536] = 0x5bf3, [3537] = 0x5c05, [3538] = 0x5c07, [3539] = 0x5c08, + [3540] = 0x5c0d, [3541] = 0x5c13, [3542] = 0x5c20, [3543] = 0x5c22, + [3544] = 0x5c28, [3545] = 0x5c38, [3546] = 0x5c39, [3547] = 0x5c41, + [3548] = 0x5c46, [3549] = 0x5c4e, [3550] = 0x5c53, [3551] = 0x5c50, + [3552] = 0x5c4f, [3553] = 0x5b71, [3554] = 0x5c6c, [3555] = 0x5c6e, + [3556] = 0x4e62, [3557] = 0x5c76, [3558] = 0x5c79, [3559] = 0x5c8c, + [3560] = 0x5c91, [3561] = 0x5c94, [3562] = 0x599b, [3563] = 0x5cab, + [3564] = 0x5cbb, [3565] = 0x5cb6, [3566] = 0x5cbc, [3567] = 0x5cb7, + [3568] = 0x5cc5, [3569] = 0x5cbe, [3570] = 0x5cc7, [3571] = 0x5cd9, + [3572] = 0x5ce9, [3573] = 0x5cfd, [3574] = 0x5cfa, [3575] = 0x5ced, + [3576] = 0x5d8c, [3577] = 0x5cea, [3578] = 0x5d0b, [3579] = 0x5d15, + [3580] = 0x5d17, [3581] = 0x5d5c, [3582] = 0x5d1f, [3583] = 0x5d1b, + [3584] = 0x5d11, [3585] = 0x5d14, [3586] = 0x5d22, [3587] = 0x5d1a, + [3588] = 0x5d19, [3589] = 0x5d18, [3590] = 0x5d4c, [3591] = 0x5d52, + [3592] = 0x5d4e, [3593] = 0x5d4b, [3594] = 0x5d6c, [3595] = 0x5d73, + [3596] = 0x5d76, [3597] = 0x5d87, [3598] = 0x5d84, [3599] = 0x5d82, + [3600] = 0x5da2, [3601] = 0x5d9d, [3602] = 0x5dac, [3603] = 0x5dae, + [3604] = 0x5dbd, [3605] = 0x5d90, [3606] = 0x5db7, [3607] = 0x5dbc, + [3608] = 0x5dc9, [3609] = 0x5dcd, [3610] = 0x5dd3, [3611] = 0x5dd2, + [3612] = 0x5dd6, [3613] = 0x5ddb, [3614] = 0x5deb, [3615] = 0x5df2, + [3616] = 0x5df5, [3617] = 0x5e0b, [3618] = 0x5e1a, [3619] = 0x5e19, + [3620] = 0x5e11, [3621] = 0x5e1b, [3622] = 0x5e36, [3623] = 0x5e37, + [3624] = 0x5e44, [3625] = 0x5e43, [3626] = 0x5e40, [3627] = 0x5e4e, + [3628] = 0x5e57, [3629] = 0x5e54, [3630] = 0x5e5f, [3631] = 0x5e62, + [3632] = 0x5e64, [3633] = 0x5e47, [3634] = 0x5e75, [3635] = 0x5e76, + [3636] = 0x5e7a, [3637] = 0x9ebc, [3638] = 0x5e7f, [3639] = 0x5ea0, + [3640] = 0x5ec1, [3641] = 0x5ec2, [3642] = 0x5ec8, [3643] = 0x5ed0, + [3644] = 0x5ecf, [3648] = 0x5ed6, [3649] = 0x5ee3, [3650] = 0x5edd, + [3651] = 0x5eda, [3652] = 0x5edb, [3653] = 0x5ee2, [3654] = 0x5ee1, + [3655] = 0x5ee8, [3656] = 0x5ee9, [3657] = 0x5eec, [3658] = 0x5ef1, + [3659] = 0x5ef3, [3660] = 0x5ef0, [3661] = 0x5ef4, [3662] = 0x5ef8, + [3663] = 0x5efe, [3664] = 0x5f03, [3665] = 0x5f09, [3666] = 0x5f5d, + [3667] = 0x5f5c, [3668] = 0x5f0b, [3669] = 0x5f11, [3670] = 0x5f16, + [3671] = 0x5f29, [3672] = 0x5f2d, [3673] = 0x5f38, [3674] = 0x5f41, + [3675] = 0x5f48, [3676] = 0x5f4c, [3677] = 0x5f4e, [3678] = 0x5f2f, + [3679] = 0x5f51, [3680] = 0x5f56, [3681] = 0x5f57, [3682] = 0x5f59, + [3683] = 0x5f61, [3684] = 0x5f6d, [3685] = 0x5f73, [3686] = 0x5f77, + [3687] = 0x5f83, [3688] = 0x5f82, [3689] = 0x5f7f, [3690] = 0x5f8a, + [3691] = 0x5f88, [3692] = 0x5f91, [3693] = 0x5f87, [3694] = 0x5f9e, + [3695] = 0x5f99, [3696] = 0x5f98, [3697] = 0x5fa0, [3698] = 0x5fa8, + [3699] = 0x5fad, [3700] = 0x5fbc, [3701] = 0x5fd6, [3702] = 0x5ffb, + [3703] = 0x5fe4, [3704] = 0x5ff8, [3705] = 0x5ff1, [3706] = 0x5fdd, + [3707] = 0x60b3, [3708] = 0x5fff, [3709] = 0x6021, [3710] = 0x6060, + [3712] = 0x6019, [3713] = 0x6010, [3714] = 0x6029, [3715] = 0x600e, + [3716] = 0x6031, [3717] = 0x601b, [3718] = 0x6015, [3719] = 0x602b, + [3720] = 0x6026, [3721] = 0x600f, [3722] = 0x603a, [3723] = 0x605a, + [3724] = 0x6041, [3725] = 0x606a, [3726] = 0x6077, [3727] = 0x605f, + [3728] = 0x604a, [3729] = 0x6046, [3730] = 0x604d, [3731] = 0x6063, + [3732] = 0x6043, [3733] = 0x6064, [3734] = 0x6042, [3735] = 0x606c, + [3736] = 0x606b, [3737] = 0x6059, [3738] = 0x6081, [3739] = 0x608d, + [3740] = 0x60e7, [3741] = 0x6083, [3742] = 0x609a, [3743] = 0x6084, + [3744] = 0x609b, [3745] = 0x6096, [3746] = 0x6097, [3747] = 0x6092, + [3748] = 0x60a7, [3749] = 0x608b, [3750] = 0x60e1, [3751] = 0x60b8, + [3752] = 0x60e0, [3753] = 0x60d3, [3754] = 0x60b4, [3755] = 0x5ff0, + [3756] = 0x60bd, [3757] = 0x60c6, [3758] = 0x60b5, [3759] = 0x60d8, + [3760] = 0x614d, [3761] = 0x6115, [3762] = 0x6106, [3763] = 0x60f6, + [3764] = 0x60f7, [3765] = 0x6100, [3766] = 0x60f4, [3767] = 0x60fa, + [3768] = 0x6103, [3769] = 0x6121, [3770] = 0x60fb, [3771] = 0x60f1, + [3772] = 0x610d, [3773] = 0x610e, [3774] = 0x6147, [3775] = 0x613e, + [3776] = 0x6128, [3777] = 0x6127, [3778] = 0x614a, [3779] = 0x613f, + [3780] = 0x613c, [3781] = 0x612c, [3782] = 0x6134, [3783] = 0x613d, + [3784] = 0x6142, [3785] = 0x6144, [3786] = 0x6173, [3787] = 0x6177, + [3788] = 0x6158, [3789] = 0x6159, [3790] = 0x615a, [3791] = 0x616b, + [3792] = 0x6174, [3793] = 0x616f, [3794] = 0x6165, [3795] = 0x6171, + [3796] = 0x615f, [3797] = 0x615d, [3798] = 0x6153, [3799] = 0x6175, + [3800] = 0x6199, [3801] = 0x6196, [3802] = 0x6187, [3803] = 0x61ac, + [3804] = 0x6194, [3805] = 0x619a, [3806] = 0x618a, [3807] = 0x6191, + [3808] = 0x61ab, [3809] = 0x61ae, [3810] = 0x61cc, [3811] = 0x61ca, + [3812] = 0x61c9, [3813] = 0x61f7, [3814] = 0x61c8, [3815] = 0x61c3, + [3816] = 0x61c6, [3817] = 0x61ba, [3818] = 0x61cb, [3819] = 0x7f79, + [3820] = 0x61cd, [3821] = 0x61e6, [3822] = 0x61e3, [3823] = 0x61f6, + [3824] = 0x61fa, [3825] = 0x61f4, [3826] = 0x61ff, [3827] = 0x61fd, + [3828] = 0x61fc, [3829] = 0x61fe, [3830] = 0x6200, [3831] = 0x6208, + [3832] = 0x6209, [3833] = 0x620d, [3834] = 0x620c, [3835] = 0x6214, + [3836] = 0x621b, [3840] = 0x621e, [3841] = 0x6221, [3842] = 0x622a, + [3843] = 0x622e, [3844] = 0x6230, [3845] = 0x6232, [3846] = 0x6233, + [3847] = 0x6241, [3848] = 0x624e, [3849] = 0x625e, [3850] = 0x6263, + [3851] = 0x625b, [3852] = 0x6260, [3853] = 0x6268, [3854] = 0x627c, + [3855] = 0x6282, [3856] = 0x6289, [3857] = 0x627e, [3858] = 0x6292, + [3859] = 0x6293, [3860] = 0x6296, [3861] = 0x62d4, [3862] = 0x6283, + [3863] = 0x6294, [3864] = 0x62d7, [3865] = 0x62d1, [3866] = 0x62bb, + [3867] = 0x62cf, [3868] = 0x62ff, [3869] = 0x62c6, [3870] = 0x64d4, + [3871] = 0x62c8, [3872] = 0x62dc, [3873] = 0x62cc, [3874] = 0x62ca, + [3875] = 0x62c2, [3876] = 0x62c7, [3877] = 0x629b, [3878] = 0x62c9, + [3879] = 0x630c, [3880] = 0x62ee, [3881] = 0x62f1, [3882] = 0x6327, + [3883] = 0x6302, [3884] = 0x6308, [3885] = 0x62ef, [3886] = 0x62f5, + [3887] = 0x6350, [3888] = 0x633e, [3889] = 0x634d, [3890] = 0x641c, + [3891] = 0x634f, [3892] = 0x6396, [3893] = 0x638e, [3894] = 0x6380, + [3895] = 0x63ab, [3896] = 0x6376, [3897] = 0x63a3, [3898] = 0x638f, + [3899] = 0x6389, [3900] = 0x639f, [3901] = 0x63b5, [3902] = 0x636b, + [3904] = 0x6369, [3905] = 0x63be, [3906] = 0x63e9, [3907] = 0x63c0, + [3908] = 0x63c6, [3909] = 0x63e3, [3910] = 0x63c9, [3911] = 0x63d2, + [3912] = 0x63f6, [3913] = 0x63c4, [3914] = 0x6416, [3915] = 0x6434, + [3916] = 0x6406, [3917] = 0x6413, [3918] = 0x6426, [3919] = 0x6436, + [3920] = 0x651d, [3921] = 0x6417, [3922] = 0x6428, [3923] = 0x640f, + [3924] = 0x6467, [3925] = 0x646f, [3926] = 0x6476, [3927] = 0x644e, + [3928] = 0x652a, [3929] = 0x6495, [3930] = 0x6493, [3931] = 0x64a5, + [3932] = 0x64a9, [3933] = 0x6488, [3934] = 0x64bc, [3935] = 0x64da, + [3936] = 0x64d2, [3937] = 0x64c5, [3938] = 0x64c7, [3939] = 0x64bb, + [3940] = 0x64d8, [3941] = 0x64c2, [3942] = 0x64f1, [3943] = 0x64e7, + [3944] = 0x8209, [3945] = 0x64e0, [3946] = 0x64e1, [3947] = 0x62ac, + [3948] = 0x64e3, [3949] = 0x64ef, [3950] = 0x652c, [3951] = 0x64f6, + [3952] = 0x64f4, [3953] = 0x64f2, [3954] = 0x64fa, [3955] = 0x6500, + [3956] = 0x64fd, [3957] = 0x6518, [3958] = 0x651c, [3959] = 0x6505, + [3960] = 0x6524, [3961] = 0x6523, [3962] = 0x652b, [3963] = 0x6534, + [3964] = 0x6535, [3965] = 0x6537, [3966] = 0x6536, [3967] = 0x6538, + [3968] = 0x754b, [3969] = 0x6548, [3970] = 0x6556, [3971] = 0x6555, + [3972] = 0x654d, [3973] = 0x6558, [3974] = 0x655e, [3975] = 0x655d, + [3976] = 0x6572, [3977] = 0x6578, [3978] = 0x6582, [3979] = 0x6583, + [3980] = 0x8b8a, [3981] = 0x659b, [3982] = 0x659f, [3983] = 0x65ab, + [3984] = 0x65b7, [3985] = 0x65c3, [3986] = 0x65c6, [3987] = 0x65c1, + [3988] = 0x65c4, [3989] = 0x65cc, [3990] = 0x65d2, [3991] = 0x65db, + [3992] = 0x65d9, [3993] = 0x65e0, [3994] = 0x65e1, [3995] = 0x65f1, + [3996] = 0x6772, [3997] = 0x660a, [3998] = 0x6603, [3999] = 0x65fb, + [4000] = 0x6773, [4001] = 0x6635, [4002] = 0x6636, [4003] = 0x6634, + [4004] = 0x661c, [4005] = 0x664f, [4006] = 0x6644, [4007] = 0x6649, + [4008] = 0x6641, [4009] = 0x665e, [4010] = 0x665d, [4011] = 0x6664, + [4012] = 0x6667, [4013] = 0x6668, [4014] = 0x665f, [4015] = 0x6662, + [4016] = 0x6670, [4017] = 0x6683, [4018] = 0x6688, [4019] = 0x668e, + [4020] = 0x6689, [4021] = 0x6684, [4022] = 0x6698, [4023] = 0x669d, + [4024] = 0x66c1, [4025] = 0x66b9, [4026] = 0x66c9, [4027] = 0x66be, + [4028] = 0x66bc, [4032] = 0x66c4, [4033] = 0x66b8, [4034] = 0x66d6, + [4035] = 0x66da, [4036] = 0x66e0, [4037] = 0x663f, [4038] = 0x66e6, + [4039] = 0x66e9, [4040] = 0x66f0, [4041] = 0x66f5, [4042] = 0x66f7, + [4043] = 0x670f, [4044] = 0x6716, [4045] = 0x671e, [4046] = 0x6726, + [4047] = 0x6727, [4048] = 0x9738, [4049] = 0x672e, [4050] = 0x673f, + [4051] = 0x6736, [4052] = 0x6741, [4053] = 0x6738, [4054] = 0x6737, + [4055] = 0x6746, [4056] = 0x675e, [4057] = 0x6760, [4058] = 0x6759, + [4059] = 0x6763, [4060] = 0x6764, [4061] = 0x6789, [4062] = 0x6770, + [4063] = 0x67a9, [4064] = 0x677c, [4065] = 0x676a, [4066] = 0x678c, + [4067] = 0x678b, [4068] = 0x67a6, [4069] = 0x67a1, [4070] = 0x6785, + [4071] = 0x67b7, [4072] = 0x67ef, [4073] = 0x67b4, [4074] = 0x67ec, + [4075] = 0x67b3, [4076] = 0x67e9, [4077] = 0x67b8, [4078] = 0x67e4, + [4079] = 0x67de, [4080] = 0x67dd, [4081] = 0x67e2, [4082] = 0x67ee, + [4083] = 0x67b9, [4084] = 0x67ce, [4085] = 0x67c6, [4086] = 0x67e7, + [4087] = 0x6a9c, [4088] = 0x681e, [4089] = 0x6846, [4090] = 0x6829, + [4091] = 0x6840, [4092] = 0x684d, [4093] = 0x6832, [4094] = 0x684e, + [4096] = 0x68b3, [4097] = 0x682b, [4098] = 0x6859, [4099] = 0x6863, + [4100] = 0x6877, [4101] = 0x687f, [4102] = 0x689f, [4103] = 0x688f, + [4104] = 0x68ad, [4105] = 0x6894, [4106] = 0x689d, [4107] = 0x689b, + [4108] = 0x6883, [4109] = 0x6aae, [4110] = 0x68b9, [4111] = 0x6874, + [4112] = 0x68b5, [4113] = 0x68a0, [4114] = 0x68ba, [4115] = 0x690f, + [4116] = 0x688d, [4117] = 0x687e, [4118] = 0x6901, [4119] = 0x68ca, + [4120] = 0x6908, [4121] = 0x68d8, [4122] = 0x6922, [4123] = 0x6926, + [4124] = 0x68e1, [4125] = 0x690c, [4126] = 0x68cd, [4127] = 0x68d4, + [4128] = 0x68e7, [4129] = 0x68d5, [4130] = 0x6936, [4131] = 0x6912, + [4132] = 0x6904, [4133] = 0x68d7, [4134] = 0x68e3, [4135] = 0x6925, + [4136] = 0x68f9, [4137] = 0x68e0, [4138] = 0x68ef, [4139] = 0x6928, + [4140] = 0x692a, [4141] = 0x691a, [4142] = 0x6923, [4143] = 0x6921, + [4144] = 0x68c6, [4145] = 0x6979, [4146] = 0x6977, [4147] = 0x695c, + [4148] = 0x6978, [4149] = 0x696b, [4150] = 0x6954, [4151] = 0x697e, + [4152] = 0x696e, [4153] = 0x6939, [4154] = 0x6974, [4155] = 0x693d, + [4156] = 0x6959, [4157] = 0x6930, [4158] = 0x6961, [4159] = 0x695e, + [4160] = 0x695d, [4161] = 0x6981, [4162] = 0x696a, [4163] = 0x69b2, + [4164] = 0x69ae, [4165] = 0x69d0, [4166] = 0x69bf, [4167] = 0x69c1, + [4168] = 0x69d3, [4169] = 0x69be, [4170] = 0x69ce, [4171] = 0x5be8, + [4172] = 0x69ca, [4173] = 0x69dd, [4174] = 0x69bb, [4175] = 0x69c3, + [4176] = 0x69a7, [4177] = 0x6a2e, [4178] = 0x6991, [4179] = 0x69a0, + [4180] = 0x699c, [4181] = 0x6995, [4182] = 0x69b4, [4183] = 0x69de, + [4184] = 0x69e8, [4185] = 0x6a02, [4186] = 0x6a1b, [4187] = 0x69ff, + [4188] = 0x6b0a, [4189] = 0x69f9, [4190] = 0x69f2, [4191] = 0x69e7, + [4192] = 0x6a05, [4193] = 0x69b1, [4194] = 0x6a1e, [4195] = 0x69ed, + [4196] = 0x6a14, [4197] = 0x69eb, [4198] = 0x6a0a, [4199] = 0x6a12, + [4200] = 0x6ac1, [4201] = 0x6a23, [4202] = 0x6a13, [4203] = 0x6a44, + [4204] = 0x6a0c, [4205] = 0x6a72, [4206] = 0x6a36, [4207] = 0x6a78, + [4208] = 0x6a47, [4209] = 0x6a62, [4210] = 0x6a59, [4211] = 0x6a66, + [4212] = 0x6a48, [4213] = 0x6a38, [4214] = 0x6a22, [4215] = 0x6a90, + [4216] = 0x6a8d, [4217] = 0x6aa0, [4218] = 0x6a84, [4219] = 0x6aa2, + [4220] = 0x6aa3, [4224] = 0x6a97, [4225] = 0x8617, [4226] = 0x6abb, + [4227] = 0x6ac3, [4228] = 0x6ac2, [4229] = 0x6ab8, [4230] = 0x6ab3, + [4231] = 0x6aac, [4232] = 0x6ade, [4233] = 0x6ad1, [4234] = 0x6adf, + [4235] = 0x6aaa, [4236] = 0x6ada, [4237] = 0x6aea, [4238] = 0x6afb, + [4239] = 0x6b05, [4240] = 0x8616, [4241] = 0x6afa, [4242] = 0x6b12, + [4243] = 0x6b16, [4244] = 0x9b31, [4245] = 0x6b1f, [4246] = 0x6b38, + [4247] = 0x6b37, [4248] = 0x76dc, [4249] = 0x6b39, [4250] = 0x98ee, + [4251] = 0x6b47, [4252] = 0x6b43, [4253] = 0x6b49, [4254] = 0x6b50, + [4255] = 0x6b59, [4256] = 0x6b54, [4257] = 0x6b5b, [4258] = 0x6b5f, + [4259] = 0x6b61, [4260] = 0x6b78, [4261] = 0x6b79, [4262] = 0x6b7f, + [4263] = 0x6b80, [4264] = 0x6b84, [4265] = 0x6b83, [4266] = 0x6b8d, + [4267] = 0x6b98, [4268] = 0x6b95, [4269] = 0x6b9e, [4270] = 0x6ba4, + [4271] = 0x6baa, [4272] = 0x6bab, [4273] = 0x6baf, [4274] = 0x6bb2, + [4275] = 0x6bb1, [4276] = 0x6bb3, [4277] = 0x6bb7, [4278] = 0x6bbc, + [4279] = 0x6bc6, [4280] = 0x6bcb, [4281] = 0x6bd3, [4282] = 0x6bdf, + [4283] = 0x6bec, [4284] = 0x6beb, [4285] = 0x6bf3, [4286] = 0x6bef, + [4288] = 0x9ebe, [4289] = 0x6c08, [4290] = 0x6c13, [4291] = 0x6c14, + [4292] = 0x6c1b, [4293] = 0x6c24, [4294] = 0x6c23, [4295] = 0x6c5e, + [4296] = 0x6c55, [4297] = 0x6c62, [4298] = 0x6c6a, [4299] = 0x6c82, + [4300] = 0x6c8d, [4301] = 0x6c9a, [4302] = 0x6c81, [4303] = 0x6c9b, + [4304] = 0x6c7e, [4305] = 0x6c68, [4306] = 0x6c73, [4307] = 0x6c92, + [4308] = 0x6c90, [4309] = 0x6cc4, [4310] = 0x6cf1, [4311] = 0x6cd3, + [4312] = 0x6cbd, [4313] = 0x6cd7, [4314] = 0x6cc5, [4315] = 0x6cdd, + [4316] = 0x6cae, [4317] = 0x6cb1, [4318] = 0x6cbe, [4319] = 0x6cba, + [4320] = 0x6cdb, [4321] = 0x6cef, [4322] = 0x6cd9, [4323] = 0x6cea, + [4324] = 0x6d1f, [4325] = 0x884d, [4326] = 0x6d36, [4327] = 0x6d2b, + [4328] = 0x6d3d, [4329] = 0x6d38, [4330] = 0x6d19, [4331] = 0x6d35, + [4332] = 0x6d33, [4333] = 0x6d12, [4334] = 0x6d0c, [4335] = 0x6d63, + [4336] = 0x6d93, [4337] = 0x6d64, [4338] = 0x6d5a, [4339] = 0x6d79, + [4340] = 0x6d59, [4341] = 0x6d8e, [4342] = 0x6d95, [4343] = 0x6fe4, + [4344] = 0x6d85, [4345] = 0x6df9, [4346] = 0x6e15, [4347] = 0x6e0a, + [4348] = 0x6db5, [4349] = 0x6dc7, [4350] = 0x6de6, [4351] = 0x6db8, + [4352] = 0x6dc6, [4353] = 0x6dec, [4354] = 0x6dde, [4355] = 0x6dcc, + [4356] = 0x6de8, [4357] = 0x6dd2, [4358] = 0x6dc5, [4359] = 0x6dfa, + [4360] = 0x6dd9, [4361] = 0x6de4, [4362] = 0x6dd5, [4363] = 0x6dea, + [4364] = 0x6dee, [4365] = 0x6e2d, [4366] = 0x6e6e, [4367] = 0x6e2e, + [4368] = 0x6e19, [4369] = 0x6e72, [4370] = 0x6e5f, [4371] = 0x6e3e, + [4372] = 0x6e23, [4373] = 0x6e6b, [4374] = 0x6e2b, [4375] = 0x6e76, + [4376] = 0x6e4d, [4377] = 0x6e1f, [4378] = 0x6e43, [4379] = 0x6e3a, + [4380] = 0x6e4e, [4381] = 0x6e24, [4382] = 0x6eff, [4383] = 0x6e1d, + [4384] = 0x6e38, [4385] = 0x6e82, [4386] = 0x6eaa, [4387] = 0x6e98, + [4388] = 0x6ec9, [4389] = 0x6eb7, [4390] = 0x6ed3, [4391] = 0x6ebd, + [4392] = 0x6eaf, [4393] = 0x6ec4, [4394] = 0x6eb2, [4395] = 0x6ed4, + [4396] = 0x6ed5, [4397] = 0x6e8f, [4398] = 0x6ea5, [4399] = 0x6ec2, + [4400] = 0x6e9f, [4401] = 0x6f41, [4402] = 0x6f11, [4403] = 0x704c, + [4404] = 0x6eec, [4405] = 0x6ef8, [4406] = 0x6efe, [4407] = 0x6f3f, + [4408] = 0x6ef2, [4409] = 0x6f31, [4410] = 0x6eef, [4411] = 0x6f32, + [4412] = 0x6ecc +}; + +static const uint16_t cjk_block5[2021] = +{ + /* start = 0xe040, end = 0xeaa4 */ + [ 0] = 0x6f3e, [ 1] = 0x6f13, [ 2] = 0x6ef7, [ 3] = 0x6f86, + [ 4] = 0x6f7a, [ 5] = 0x6f78, [ 6] = 0x6f81, [ 7] = 0x6f80, + [ 8] = 0x6f6f, [ 9] = 0x6f5b, [ 10] = 0x6ff3, [ 11] = 0x6f6d, + [ 12] = 0x6f82, [ 13] = 0x6f7c, [ 14] = 0x6f58, [ 15] = 0x6f8e, + [ 16] = 0x6f91, [ 17] = 0x6fc2, [ 18] = 0x6f66, [ 19] = 0x6fb3, + [ 20] = 0x6fa3, [ 21] = 0x6fa1, [ 22] = 0x6fa4, [ 23] = 0x6fb9, + [ 24] = 0x6fc6, [ 25] = 0x6faa, [ 26] = 0x6fdf, [ 27] = 0x6fd5, + [ 28] = 0x6fec, [ 29] = 0x6fd4, [ 30] = 0x6fd8, [ 31] = 0x6ff1, + [ 32] = 0x6fee, [ 33] = 0x6fdb, [ 34] = 0x7009, [ 35] = 0x700b, + [ 36] = 0x6ffa, [ 37] = 0x7011, [ 38] = 0x7001, [ 39] = 0x700f, + [ 40] = 0x6ffe, [ 41] = 0x701b, [ 42] = 0x701a, [ 43] = 0x6f74, + [ 44] = 0x701d, [ 45] = 0x7018, [ 46] = 0x701f, [ 47] = 0x7030, + [ 48] = 0x703e, [ 49] = 0x7032, [ 50] = 0x7051, [ 51] = 0x7063, + [ 52] = 0x7099, [ 53] = 0x7092, [ 54] = 0x70af, [ 55] = 0x70f1, + [ 56] = 0x70ac, [ 57] = 0x70b8, [ 58] = 0x70b3, [ 59] = 0x70ae, + [ 60] = 0x70df, [ 61] = 0x70cb, [ 62] = 0x70dd, [ 64] = 0x70d9, + [ 65] = 0x7109, [ 66] = 0x70fd, [ 67] = 0x711c, [ 68] = 0x7119, + [ 69] = 0x7165, [ 70] = 0x7155, [ 71] = 0x7188, [ 72] = 0x7166, + [ 73] = 0x7162, [ 74] = 0x714c, [ 75] = 0x7156, [ 76] = 0x716c, + [ 77] = 0x718f, [ 78] = 0x71fb, [ 79] = 0x7184, [ 80] = 0x7195, + [ 81] = 0x71a8, [ 82] = 0x71ac, [ 83] = 0x71d7, [ 84] = 0x71b9, + [ 85] = 0x71be, [ 86] = 0x71d2, [ 87] = 0x71c9, [ 88] = 0x71d4, + [ 89] = 0x71ce, [ 90] = 0x71e0, [ 91] = 0x71ec, [ 92] = 0x71e7, + [ 93] = 0x71f5, [ 94] = 0x71fc, [ 95] = 0x71f9, [ 96] = 0x71ff, + [ 97] = 0x720d, [ 98] = 0x7210, [ 99] = 0x721b, [ 100] = 0x7228, + [ 101] = 0x722d, [ 102] = 0x722c, [ 103] = 0x7230, [ 104] = 0x7232, + [ 105] = 0x723b, [ 106] = 0x723c, [ 107] = 0x723f, [ 108] = 0x7240, + [ 109] = 0x7246, [ 110] = 0x724b, [ 111] = 0x7258, [ 112] = 0x7274, + [ 113] = 0x727e, [ 114] = 0x7282, [ 115] = 0x7281, [ 116] = 0x7287, + [ 117] = 0x7292, [ 118] = 0x7296, [ 119] = 0x72a2, [ 120] = 0x72a7, + [ 121] = 0x72b9, [ 122] = 0x72b2, [ 123] = 0x72c3, [ 124] = 0x72c6, + [ 125] = 0x72c4, [ 126] = 0x72ce, [ 127] = 0x72d2, [ 128] = 0x72e2, + [ 129] = 0x72e0, [ 130] = 0x72e1, [ 131] = 0x72f9, [ 132] = 0x72f7, + [ 133] = 0x500f, [ 134] = 0x7317, [ 135] = 0x730a, [ 136] = 0x731c, + [ 137] = 0x7316, [ 138] = 0x731d, [ 139] = 0x7334, [ 140] = 0x732f, + [ 141] = 0x7329, [ 142] = 0x7325, [ 143] = 0x733e, [ 144] = 0x734e, + [ 145] = 0x734f, [ 146] = 0x9ed8, [ 147] = 0x7357, [ 148] = 0x736a, + [ 149] = 0x7368, [ 150] = 0x7370, [ 151] = 0x7378, [ 152] = 0x7375, + [ 153] = 0x737b, [ 154] = 0x737a, [ 155] = 0x73c8, [ 156] = 0x73b3, + [ 157] = 0x73ce, [ 158] = 0x73bb, [ 159] = 0x73c0, [ 160] = 0x73e5, + [ 161] = 0x73ee, [ 162] = 0x73de, [ 163] = 0x74a2, [ 164] = 0x7405, + [ 165] = 0x746f, [ 166] = 0x7425, [ 167] = 0x73f8, [ 168] = 0x7432, + [ 169] = 0x743a, [ 170] = 0x7455, [ 171] = 0x743f, [ 172] = 0x745f, + [ 173] = 0x7459, [ 174] = 0x7441, [ 175] = 0x745c, [ 176] = 0x7469, + [ 177] = 0x7470, [ 178] = 0x7463, [ 179] = 0x746a, [ 180] = 0x7476, + [ 181] = 0x747e, [ 182] = 0x748b, [ 183] = 0x749e, [ 184] = 0x74a7, + [ 185] = 0x74ca, [ 186] = 0x74cf, [ 187] = 0x74d4, [ 188] = 0x73f1, + [ 192] = 0x74e0, [ 193] = 0x74e3, [ 194] = 0x74e7, [ 195] = 0x74e9, + [ 196] = 0x74ee, [ 197] = 0x74f2, [ 198] = 0x74f0, [ 199] = 0x74f1, + [ 200] = 0x74f8, [ 201] = 0x74f7, [ 202] = 0x7504, [ 203] = 0x7503, + [ 204] = 0x7505, [ 205] = 0x750c, [ 206] = 0x750e, [ 207] = 0x750d, + [ 208] = 0x7515, [ 209] = 0x7513, [ 210] = 0x751e, [ 211] = 0x7526, + [ 212] = 0x752c, [ 213] = 0x753c, [ 214] = 0x7544, [ 215] = 0x754d, + [ 216] = 0x754a, [ 217] = 0x7549, [ 218] = 0x755b, [ 219] = 0x7546, + [ 220] = 0x755a, [ 221] = 0x7569, [ 222] = 0x7564, [ 223] = 0x7567, + [ 224] = 0x756b, [ 225] = 0x756d, [ 226] = 0x7578, [ 227] = 0x7576, + [ 228] = 0x7586, [ 229] = 0x7587, [ 230] = 0x7574, [ 231] = 0x758a, + [ 232] = 0x7589, [ 233] = 0x7582, [ 234] = 0x7594, [ 235] = 0x759a, + [ 236] = 0x759d, [ 237] = 0x75a5, [ 238] = 0x75a3, [ 239] = 0x75c2, + [ 240] = 0x75b3, [ 241] = 0x75c3, [ 242] = 0x75b5, [ 243] = 0x75bd, + [ 244] = 0x75b8, [ 245] = 0x75bc, [ 246] = 0x75b1, [ 247] = 0x75cd, + [ 248] = 0x75ca, [ 249] = 0x75d2, [ 250] = 0x75d9, [ 251] = 0x75e3, + [ 252] = 0x75de, [ 253] = 0x75fe, [ 254] = 0x75ff, [ 256] = 0x75fc, + [ 257] = 0x7601, [ 258] = 0x75f0, [ 259] = 0x75fa, [ 260] = 0x75f2, + [ 261] = 0x75f3, [ 262] = 0x760b, [ 263] = 0x760d, [ 264] = 0x7609, + [ 265] = 0x761f, [ 266] = 0x7627, [ 267] = 0x7620, [ 268] = 0x7621, + [ 269] = 0x7622, [ 270] = 0x7624, [ 271] = 0x7634, [ 272] = 0x7630, + [ 273] = 0x763b, [ 274] = 0x7647, [ 275] = 0x7648, [ 276] = 0x7646, + [ 277] = 0x765c, [ 278] = 0x7658, [ 279] = 0x7661, [ 280] = 0x7662, + [ 281] = 0x7668, [ 282] = 0x7669, [ 283] = 0x766a, [ 284] = 0x7667, + [ 285] = 0x766c, [ 286] = 0x7670, [ 287] = 0x7672, [ 288] = 0x7676, + [ 289] = 0x7678, [ 290] = 0x767c, [ 291] = 0x7680, [ 292] = 0x7683, + [ 293] = 0x7688, [ 294] = 0x768b, [ 295] = 0x768e, [ 296] = 0x7696, + [ 297] = 0x7693, [ 298] = 0x7699, [ 299] = 0x769a, [ 300] = 0x76b0, + [ 301] = 0x76b4, [ 302] = 0x76b8, [ 303] = 0x76b9, [ 304] = 0x76ba, + [ 305] = 0x76c2, [ 306] = 0x76cd, [ 307] = 0x76d6, [ 308] = 0x76d2, + [ 309] = 0x76de, [ 310] = 0x76e1, [ 311] = 0x76e5, [ 312] = 0x76e7, + [ 313] = 0x76ea, [ 314] = 0x862f, [ 315] = 0x76fb, [ 316] = 0x7708, + [ 317] = 0x7707, [ 318] = 0x7704, [ 319] = 0x7729, [ 320] = 0x7724, + [ 321] = 0x771e, [ 322] = 0x7725, [ 323] = 0x7726, [ 324] = 0x771b, + [ 325] = 0x7737, [ 326] = 0x7738, [ 327] = 0x7747, [ 328] = 0x775a, + [ 329] = 0x7768, [ 330] = 0x776b, [ 331] = 0x775b, [ 332] = 0x7765, + [ 333] = 0x777f, [ 334] = 0x777e, [ 335] = 0x7779, [ 336] = 0x778e, + [ 337] = 0x778b, [ 338] = 0x7791, [ 339] = 0x77a0, [ 340] = 0x779e, + [ 341] = 0x77b0, [ 342] = 0x77b6, [ 343] = 0x77b9, [ 344] = 0x77bf, + [ 345] = 0x77bc, [ 346] = 0x77bd, [ 347] = 0x77bb, [ 348] = 0x77c7, + [ 349] = 0x77cd, [ 350] = 0x77d7, [ 351] = 0x77da, [ 352] = 0x77dc, + [ 353] = 0x77e3, [ 354] = 0x77ee, [ 355] = 0x77fc, [ 356] = 0x780c, + [ 357] = 0x7812, [ 358] = 0x7926, [ 359] = 0x7820, [ 360] = 0x792a, + [ 361] = 0x7845, [ 362] = 0x788e, [ 363] = 0x7874, [ 364] = 0x7886, + [ 365] = 0x787c, [ 366] = 0x789a, [ 367] = 0x788c, [ 368] = 0x78a3, + [ 369] = 0x78b5, [ 370] = 0x78aa, [ 371] = 0x78af, [ 372] = 0x78d1, + [ 373] = 0x78c6, [ 374] = 0x78cb, [ 375] = 0x78d4, [ 376] = 0x78be, + [ 377] = 0x78bc, [ 378] = 0x78c5, [ 379] = 0x78ca, [ 380] = 0x78ec, + [ 384] = 0x78e7, [ 385] = 0x78da, [ 386] = 0x78fd, [ 387] = 0x78f4, + [ 388] = 0x7907, [ 389] = 0x7912, [ 390] = 0x7911, [ 391] = 0x7919, + [ 392] = 0x792c, [ 393] = 0x792b, [ 394] = 0x7940, [ 395] = 0x7960, + [ 396] = 0x7957, [ 397] = 0x795f, [ 398] = 0x795a, [ 399] = 0x7955, + [ 400] = 0x7953, [ 401] = 0x797a, [ 402] = 0x797f, [ 403] = 0x798a, + [ 404] = 0x799d, [ 405] = 0x79a7, [ 406] = 0x9f4b, [ 407] = 0x79aa, + [ 408] = 0x79ae, [ 409] = 0x79b3, [ 410] = 0x79b9, [ 411] = 0x79ba, + [ 412] = 0x79c9, [ 413] = 0x79d5, [ 414] = 0x79e7, [ 415] = 0x79ec, + [ 416] = 0x79e1, [ 417] = 0x79e3, [ 418] = 0x7a08, [ 419] = 0x7a0d, + [ 420] = 0x7a18, [ 421] = 0x7a19, [ 422] = 0x7a20, [ 423] = 0x7a1f, + [ 424] = 0x7980, [ 425] = 0x7a31, [ 426] = 0x7a3b, [ 427] = 0x7a3e, + [ 428] = 0x7a37, [ 429] = 0x7a43, [ 430] = 0x7a57, [ 431] = 0x7a49, + [ 432] = 0x7a61, [ 433] = 0x7a62, [ 434] = 0x7a69, [ 435] = 0x9f9d, + [ 436] = 0x7a70, [ 437] = 0x7a79, [ 438] = 0x7a7d, [ 439] = 0x7a88, + [ 440] = 0x7a97, [ 441] = 0x7a95, [ 442] = 0x7a98, [ 443] = 0x7a96, + [ 444] = 0x7aa9, [ 445] = 0x7ac8, [ 446] = 0x7ab0, [ 448] = 0x7ab6, + [ 449] = 0x7ac5, [ 450] = 0x7ac4, [ 451] = 0x7abf, [ 452] = 0x9083, + [ 453] = 0x7ac7, [ 454] = 0x7aca, [ 455] = 0x7acd, [ 456] = 0x7acf, + [ 457] = 0x7ad5, [ 458] = 0x7ad3, [ 459] = 0x7ad9, [ 460] = 0x7ada, + [ 461] = 0x7add, [ 462] = 0x7ae1, [ 463] = 0x7ae2, [ 464] = 0x7ae6, + [ 465] = 0x7aed, [ 466] = 0x7af0, [ 467] = 0x7b02, [ 468] = 0x7b0f, + [ 469] = 0x7b0a, [ 470] = 0x7b06, [ 471] = 0x7b33, [ 472] = 0x7b18, + [ 473] = 0x7b19, [ 474] = 0x7b1e, [ 475] = 0x7b35, [ 476] = 0x7b28, + [ 477] = 0x7b36, [ 478] = 0x7b50, [ 479] = 0x7b7a, [ 480] = 0x7b04, + [ 481] = 0x7b4d, [ 482] = 0x7b0b, [ 483] = 0x7b4c, [ 484] = 0x7b45, + [ 485] = 0x7b75, [ 486] = 0x7b65, [ 487] = 0x7b74, [ 488] = 0x7b67, + [ 489] = 0x7b70, [ 490] = 0x7b71, [ 491] = 0x7b6c, [ 492] = 0x7b6e, + [ 493] = 0x7b9d, [ 494] = 0x7b98, [ 495] = 0x7b9f, [ 496] = 0x7b8d, + [ 497] = 0x7b9c, [ 498] = 0x7b9a, [ 499] = 0x7b8b, [ 500] = 0x7b92, + [ 501] = 0x7b8f, [ 502] = 0x7b5d, [ 503] = 0x7b99, [ 504] = 0x7bcb, + [ 505] = 0x7bc1, [ 506] = 0x7bcc, [ 507] = 0x7bcf, [ 508] = 0x7bb4, + [ 509] = 0x7bc6, [ 510] = 0x7bdd, [ 511] = 0x7be9, [ 512] = 0x7c11, + [ 513] = 0x7c14, [ 514] = 0x7be6, [ 515] = 0x7be5, [ 516] = 0x7c60, + [ 517] = 0x7c00, [ 518] = 0x7c07, [ 519] = 0x7c13, [ 520] = 0x7bf3, + [ 521] = 0x7bf7, [ 522] = 0x7c17, [ 523] = 0x7c0d, [ 524] = 0x7bf6, + [ 525] = 0x7c23, [ 526] = 0x7c27, [ 527] = 0x7c2a, [ 528] = 0x7c1f, + [ 529] = 0x7c37, [ 530] = 0x7c2b, [ 531] = 0x7c3d, [ 532] = 0x7c4c, + [ 533] = 0x7c43, [ 534] = 0x7c54, [ 535] = 0x7c4f, [ 536] = 0x7c40, + [ 537] = 0x7c50, [ 538] = 0x7c58, [ 539] = 0x7c5f, [ 540] = 0x7c64, + [ 541] = 0x7c56, [ 542] = 0x7c65, [ 543] = 0x7c6c, [ 544] = 0x7c75, + [ 545] = 0x7c83, [ 546] = 0x7c90, [ 547] = 0x7ca4, [ 548] = 0x7cad, + [ 549] = 0x7ca2, [ 550] = 0x7cab, [ 551] = 0x7ca1, [ 552] = 0x7ca8, + [ 553] = 0x7cb3, [ 554] = 0x7cb2, [ 555] = 0x7cb1, [ 556] = 0x7cae, + [ 557] = 0x7cb9, [ 558] = 0x7cbd, [ 559] = 0x7cc0, [ 560] = 0x7cc5, + [ 561] = 0x7cc2, [ 562] = 0x7cd8, [ 563] = 0x7cd2, [ 564] = 0x7cdc, + [ 565] = 0x7ce2, [ 566] = 0x9b3b, [ 567] = 0x7cef, [ 568] = 0x7cf2, + [ 569] = 0x7cf4, [ 570] = 0x7cf6, [ 571] = 0x7cfa, [ 572] = 0x7d06, + [ 576] = 0x7d02, [ 577] = 0x7d1c, [ 578] = 0x7d15, [ 579] = 0x7d0a, + [ 580] = 0x7d45, [ 581] = 0x7d4b, [ 582] = 0x7d2e, [ 583] = 0x7d32, + [ 584] = 0x7d3f, [ 585] = 0x7d35, [ 586] = 0x7d46, [ 587] = 0x7d73, + [ 588] = 0x7d56, [ 589] = 0x7d4e, [ 590] = 0x7d72, [ 591] = 0x7d68, + [ 592] = 0x7d6e, [ 593] = 0x7d4f, [ 594] = 0x7d63, [ 595] = 0x7d93, + [ 596] = 0x7d89, [ 597] = 0x7d5b, [ 598] = 0x7d8f, [ 599] = 0x7d7d, + [ 600] = 0x7d9b, [ 601] = 0x7dba, [ 602] = 0x7dae, [ 603] = 0x7da3, + [ 604] = 0x7db5, [ 605] = 0x7dc7, [ 606] = 0x7dbd, [ 607] = 0x7dab, + [ 608] = 0x7e3d, [ 609] = 0x7da2, [ 610] = 0x7daf, [ 611] = 0x7ddc, + [ 612] = 0x7db8, [ 613] = 0x7d9f, [ 614] = 0x7db0, [ 615] = 0x7dd8, + [ 616] = 0x7ddd, [ 617] = 0x7de4, [ 618] = 0x7dde, [ 619] = 0x7dfb, + [ 620] = 0x7df2, [ 621] = 0x7de1, [ 622] = 0x7e05, [ 623] = 0x7e0a, + [ 624] = 0x7e23, [ 625] = 0x7e21, [ 626] = 0x7e12, [ 627] = 0x7e31, + [ 628] = 0x7e1f, [ 629] = 0x7e09, [ 630] = 0x7e0b, [ 631] = 0x7e22, + [ 632] = 0x7e46, [ 633] = 0x7e66, [ 634] = 0x7e3b, [ 635] = 0x7e35, + [ 636] = 0x7e39, [ 637] = 0x7e43, [ 638] = 0x7e37, [ 640] = 0x7e32, + [ 641] = 0x7e3a, [ 642] = 0x7e67, [ 643] = 0x7e5d, [ 644] = 0x7e56, + [ 645] = 0x7e5e, [ 646] = 0x7e59, [ 647] = 0x7e5a, [ 648] = 0x7e79, + [ 649] = 0x7e6a, [ 650] = 0x7e69, [ 651] = 0x7e7c, [ 652] = 0x7e7b, + [ 653] = 0x7e83, [ 654] = 0x7dd5, [ 655] = 0x7e7d, [ 656] = 0x8fae, + [ 657] = 0x7e7f, [ 658] = 0x7e88, [ 659] = 0x7e89, [ 660] = 0x7e8c, + [ 661] = 0x7e92, [ 662] = 0x7e90, [ 663] = 0x7e93, [ 664] = 0x7e94, + [ 665] = 0x7e96, [ 666] = 0x7e8e, [ 667] = 0x7e9b, [ 668] = 0x7e9c, + [ 669] = 0x7f38, [ 670] = 0x7f3a, [ 671] = 0x7f45, [ 672] = 0x7f4c, + [ 673] = 0x7f4d, [ 674] = 0x7f4e, [ 675] = 0x7f50, [ 676] = 0x7f51, + [ 677] = 0x7f55, [ 678] = 0x7f54, [ 679] = 0x7f58, [ 680] = 0x7f5f, + [ 681] = 0x7f60, [ 682] = 0x7f68, [ 683] = 0x7f69, [ 684] = 0x7f67, + [ 685] = 0x7f78, [ 686] = 0x7f82, [ 687] = 0x7f86, [ 688] = 0x7f83, + [ 689] = 0x7f88, [ 690] = 0x7f87, [ 691] = 0x7f8c, [ 692] = 0x7f94, + [ 693] = 0x7f9e, [ 694] = 0x7f9d, [ 695] = 0x7f9a, [ 696] = 0x7fa3, + [ 697] = 0x7faf, [ 698] = 0x7fb2, [ 699] = 0x7fb9, [ 700] = 0x7fae, + [ 701] = 0x7fb6, [ 702] = 0x7fb8, [ 703] = 0x8b71, [ 704] = 0x7fc5, + [ 705] = 0x7fc6, [ 706] = 0x7fca, [ 707] = 0x7fd5, [ 708] = 0x7fd4, + [ 709] = 0x7fe1, [ 710] = 0x7fe6, [ 711] = 0x7fe9, [ 712] = 0x7ff3, + [ 713] = 0x7ff9, [ 714] = 0x98dc, [ 715] = 0x8006, [ 716] = 0x8004, + [ 717] = 0x800b, [ 718] = 0x8012, [ 719] = 0x8018, [ 720] = 0x8019, + [ 721] = 0x801c, [ 722] = 0x8021, [ 723] = 0x8028, [ 724] = 0x803f, + [ 725] = 0x803b, [ 726] = 0x804a, [ 727] = 0x8046, [ 728] = 0x8052, + [ 729] = 0x8058, [ 730] = 0x805a, [ 731] = 0x805f, [ 732] = 0x8062, + [ 733] = 0x8068, [ 734] = 0x8073, [ 735] = 0x8072, [ 736] = 0x8070, + [ 737] = 0x8076, [ 738] = 0x8079, [ 739] = 0x807d, [ 740] = 0x807f, + [ 741] = 0x8084, [ 742] = 0x8086, [ 743] = 0x8085, [ 744] = 0x809b, + [ 745] = 0x8093, [ 746] = 0x809a, [ 747] = 0x80ad, [ 748] = 0x5190, + [ 749] = 0x80ac, [ 750] = 0x80db, [ 751] = 0x80e5, [ 752] = 0x80d9, + [ 753] = 0x80dd, [ 754] = 0x80c4, [ 755] = 0x80da, [ 756] = 0x80d6, + [ 757] = 0x8109, [ 758] = 0x80ef, [ 759] = 0x80f1, [ 760] = 0x811b, + [ 761] = 0x8129, [ 762] = 0x8123, [ 763] = 0x812f, [ 764] = 0x814b, + [ 768] = 0x968b, [ 769] = 0x8146, [ 770] = 0x813e, [ 771] = 0x8153, + [ 772] = 0x8151, [ 773] = 0x80fc, [ 774] = 0x8171, [ 775] = 0x816e, + [ 776] = 0x8165, [ 777] = 0x8166, [ 778] = 0x8174, [ 779] = 0x8183, + [ 780] = 0x8188, [ 781] = 0x818a, [ 782] = 0x8180, [ 783] = 0x8182, + [ 784] = 0x81a0, [ 785] = 0x8195, [ 786] = 0x81a4, [ 787] = 0x81a3, + [ 788] = 0x815f, [ 789] = 0x8193, [ 790] = 0x81a9, [ 791] = 0x81b0, + [ 792] = 0x81b5, [ 793] = 0x81be, [ 794] = 0x81b8, [ 795] = 0x81bd, + [ 796] = 0x81c0, [ 797] = 0x81c2, [ 798] = 0x81ba, [ 799] = 0x81c9, + [ 800] = 0x81cd, [ 801] = 0x81d1, [ 802] = 0x81d9, [ 803] = 0x81d8, + [ 804] = 0x81c8, [ 805] = 0x81da, [ 806] = 0x81df, [ 807] = 0x81e0, + [ 808] = 0x81e7, [ 809] = 0x81fa, [ 810] = 0x81fb, [ 811] = 0x81fe, + [ 812] = 0x8201, [ 813] = 0x8202, [ 814] = 0x8205, [ 815] = 0x8207, + [ 816] = 0x820a, [ 817] = 0x820d, [ 818] = 0x8210, [ 819] = 0x8216, + [ 820] = 0x8229, [ 821] = 0x822b, [ 822] = 0x8238, [ 823] = 0x8233, + [ 824] = 0x8240, [ 825] = 0x8259, [ 826] = 0x8258, [ 827] = 0x825d, + [ 828] = 0x825a, [ 829] = 0x825f, [ 830] = 0x8264, [ 832] = 0x8262, + [ 833] = 0x8268, [ 834] = 0x826a, [ 835] = 0x826b, [ 836] = 0x822e, + [ 837] = 0x8271, [ 838] = 0x8277, [ 839] = 0x8278, [ 840] = 0x827e, + [ 841] = 0x828d, [ 842] = 0x8292, [ 843] = 0x82ab, [ 844] = 0x829f, + [ 845] = 0x82bb, [ 846] = 0x82ac, [ 847] = 0x82e1, [ 848] = 0x82e3, + [ 849] = 0x82df, [ 850] = 0x82d2, [ 851] = 0x82f4, [ 852] = 0x82f3, + [ 853] = 0x82fa, [ 854] = 0x8393, [ 855] = 0x8303, [ 856] = 0x82fb, + [ 857] = 0x82f9, [ 858] = 0x82de, [ 859] = 0x8306, [ 860] = 0x82dc, + [ 861] = 0x8309, [ 862] = 0x82d9, [ 863] = 0x8335, [ 864] = 0x8334, + [ 865] = 0x8316, [ 866] = 0x8332, [ 867] = 0x8331, [ 868] = 0x8340, + [ 869] = 0x8339, [ 870] = 0x8350, [ 871] = 0x8345, [ 872] = 0x832f, + [ 873] = 0x832b, [ 874] = 0x8317, [ 875] = 0x8318, [ 876] = 0x8385, + [ 877] = 0x839a, [ 878] = 0x83aa, [ 879] = 0x839f, [ 880] = 0x83a2, + [ 881] = 0x8396, [ 882] = 0x8323, [ 883] = 0x838e, [ 884] = 0x8387, + [ 885] = 0x838a, [ 886] = 0x837c, [ 887] = 0x83b5, [ 888] = 0x8373, + [ 889] = 0x8375, [ 890] = 0x83a0, [ 891] = 0x8389, [ 892] = 0x83a8, + [ 893] = 0x83f4, [ 894] = 0x8413, [ 895] = 0x83eb, [ 896] = 0x83ce, + [ 897] = 0x83fd, [ 898] = 0x8403, [ 899] = 0x83d8, [ 900] = 0x840b, + [ 901] = 0x83c1, [ 902] = 0x83f7, [ 903] = 0x8407, [ 904] = 0x83e0, + [ 905] = 0x83f2, [ 906] = 0x840d, [ 907] = 0x8422, [ 908] = 0x8420, + [ 909] = 0x83bd, [ 910] = 0x8438, [ 911] = 0x8506, [ 912] = 0x83fb, + [ 913] = 0x846d, [ 914] = 0x842a, [ 915] = 0x843c, [ 916] = 0x855a, + [ 917] = 0x8484, [ 918] = 0x8477, [ 919] = 0x846b, [ 920] = 0x84ad, + [ 921] = 0x846e, [ 922] = 0x8482, [ 923] = 0x8469, [ 924] = 0x8446, + [ 925] = 0x842c, [ 926] = 0x846f, [ 927] = 0x8479, [ 928] = 0x8435, + [ 929] = 0x84ca, [ 930] = 0x8462, [ 931] = 0x84b9, [ 932] = 0x84bf, + [ 933] = 0x849f, [ 934] = 0x84d9, [ 935] = 0x84cd, [ 936] = 0x84bb, + [ 937] = 0x84da, [ 938] = 0x84d0, [ 939] = 0x84c1, [ 940] = 0x84c6, + [ 941] = 0x84d6, [ 942] = 0x84a1, [ 943] = 0x8521, [ 944] = 0x84ff, + [ 945] = 0x84f4, [ 946] = 0x8517, [ 947] = 0x8518, [ 948] = 0x852c, + [ 949] = 0x851f, [ 950] = 0x8515, [ 951] = 0x8514, [ 952] = 0x84fc, + [ 953] = 0x8540, [ 954] = 0x8563, [ 955] = 0x8558, [ 956] = 0x8548, + [ 960] = 0x8541, [ 961] = 0x8602, [ 962] = 0x854b, [ 963] = 0x8555, + [ 964] = 0x8580, [ 965] = 0x85a4, [ 966] = 0x8588, [ 967] = 0x8591, + [ 968] = 0x858a, [ 969] = 0x85a8, [ 970] = 0x856d, [ 971] = 0x8594, + [ 972] = 0x859b, [ 973] = 0x85ea, [ 974] = 0x8587, [ 975] = 0x859c, + [ 976] = 0x8577, [ 977] = 0x857e, [ 978] = 0x8590, [ 979] = 0x85c9, + [ 980] = 0x85ba, [ 981] = 0x85cf, [ 982] = 0x85b9, [ 983] = 0x85d0, + [ 984] = 0x85d5, [ 985] = 0x85dd, [ 986] = 0x85e5, [ 987] = 0x85dc, + [ 988] = 0x85f9, [ 989] = 0x860a, [ 990] = 0x8613, [ 991] = 0x860b, + [ 992] = 0x85fe, [ 993] = 0x85fa, [ 994] = 0x8606, [ 995] = 0x8622, + [ 996] = 0x861a, [ 997] = 0x8630, [ 998] = 0x863f, [ 999] = 0x864d, + [1000] = 0x4e55, [1001] = 0x8654, [1002] = 0x865f, [1003] = 0x8667, + [1004] = 0x8671, [1005] = 0x8693, [1006] = 0x86a3, [1007] = 0x86a9, + [1008] = 0x86aa, [1009] = 0x868b, [1010] = 0x868c, [1011] = 0x86b6, + [1012] = 0x86af, [1013] = 0x86c4, [1014] = 0x86c6, [1015] = 0x86b0, + [1016] = 0x86c9, [1017] = 0x8823, [1018] = 0x86ab, [1019] = 0x86d4, + [1020] = 0x86de, [1021] = 0x86e9, [1022] = 0x86ec, [1024] = 0x86df, + [1025] = 0x86db, [1026] = 0x86ef, [1027] = 0x8712, [1028] = 0x8706, + [1029] = 0x8708, [1030] = 0x8700, [1031] = 0x8703, [1032] = 0x86fb, + [1033] = 0x8711, [1034] = 0x8709, [1035] = 0x870d, [1036] = 0x86f9, + [1037] = 0x870a, [1038] = 0x8734, [1039] = 0x873f, [1040] = 0x8737, + [1041] = 0x873b, [1042] = 0x8725, [1043] = 0x8729, [1044] = 0x871a, + [1045] = 0x8760, [1046] = 0x875f, [1047] = 0x8778, [1048] = 0x874c, + [1049] = 0x874e, [1050] = 0x8774, [1051] = 0x8757, [1052] = 0x8768, + [1053] = 0x876e, [1054] = 0x8759, [1055] = 0x8753, [1056] = 0x8763, + [1057] = 0x876a, [1058] = 0x8805, [1059] = 0x87a2, [1060] = 0x879f, + [1061] = 0x8782, [1062] = 0x87af, [1063] = 0x87cb, [1064] = 0x87bd, + [1065] = 0x87c0, [1066] = 0x87d0, [1067] = 0x96d6, [1068] = 0x87ab, + [1069] = 0x87c4, [1070] = 0x87b3, [1071] = 0x87c7, [1072] = 0x87c6, + [1073] = 0x87bb, [1074] = 0x87ef, [1075] = 0x87f2, [1076] = 0x87e0, + [1077] = 0x880f, [1078] = 0x880d, [1079] = 0x87fe, [1080] = 0x87f6, + [1081] = 0x87f7, [1082] = 0x880e, [1083] = 0x87d2, [1084] = 0x8811, + [1085] = 0x8816, [1086] = 0x8815, [1087] = 0x8822, [1088] = 0x8821, + [1089] = 0x8831, [1090] = 0x8836, [1091] = 0x8839, [1092] = 0x8827, + [1093] = 0x883b, [1094] = 0x8844, [1095] = 0x8842, [1096] = 0x8852, + [1097] = 0x8859, [1098] = 0x885e, [1099] = 0x8862, [1100] = 0x886b, + [1101] = 0x8881, [1102] = 0x887e, [1103] = 0x889e, [1104] = 0x8875, + [1105] = 0x887d, [1106] = 0x88b5, [1107] = 0x8872, [1108] = 0x8882, + [1109] = 0x8897, [1110] = 0x8892, [1111] = 0x88ae, [1112] = 0x8899, + [1113] = 0x88a2, [1114] = 0x888d, [1115] = 0x88a4, [1116] = 0x88b0, + [1117] = 0x88bf, [1118] = 0x88b1, [1119] = 0x88c3, [1120] = 0x88c4, + [1121] = 0x88d4, [1122] = 0x88d8, [1123] = 0x88d9, [1124] = 0x88dd, + [1125] = 0x88f9, [1126] = 0x8902, [1127] = 0x88fc, [1128] = 0x88f4, + [1129] = 0x88e8, [1130] = 0x88f2, [1131] = 0x8904, [1132] = 0x890c, + [1133] = 0x890a, [1134] = 0x8913, [1135] = 0x8943, [1136] = 0x891e, + [1137] = 0x8925, [1138] = 0x892a, [1139] = 0x892b, [1140] = 0x8941, + [1141] = 0x8944, [1142] = 0x893b, [1143] = 0x8936, [1144] = 0x8938, + [1145] = 0x894c, [1146] = 0x891d, [1147] = 0x8960, [1148] = 0x895e, + [1152] = 0x8966, [1153] = 0x8964, [1154] = 0x896d, [1155] = 0x896a, + [1156] = 0x896f, [1157] = 0x8974, [1158] = 0x8977, [1159] = 0x897e, + [1160] = 0x8983, [1161] = 0x8988, [1162] = 0x898a, [1163] = 0x8993, + [1164] = 0x8998, [1165] = 0x89a1, [1166] = 0x89a9, [1167] = 0x89a6, + [1168] = 0x89ac, [1169] = 0x89af, [1170] = 0x89b2, [1171] = 0x89ba, + [1172] = 0x89bd, [1173] = 0x89bf, [1174] = 0x89c0, [1175] = 0x89da, + [1176] = 0x89dc, [1177] = 0x89dd, [1178] = 0x89e7, [1179] = 0x89f4, + [1180] = 0x89f8, [1181] = 0x8a03, [1182] = 0x8a16, [1183] = 0x8a10, + [1184] = 0x8a0c, [1185] = 0x8a1b, [1186] = 0x8a1d, [1187] = 0x8a25, + [1188] = 0x8a36, [1189] = 0x8a41, [1190] = 0x8a5b, [1191] = 0x8a52, + [1192] = 0x8a46, [1193] = 0x8a48, [1194] = 0x8a7c, [1195] = 0x8a6d, + [1196] = 0x8a6c, [1197] = 0x8a62, [1198] = 0x8a85, [1199] = 0x8a82, + [1200] = 0x8a84, [1201] = 0x8aa8, [1202] = 0x8aa1, [1203] = 0x8a91, + [1204] = 0x8aa5, [1205] = 0x8aa6, [1206] = 0x8a9a, [1207] = 0x8aa3, + [1208] = 0x8ac4, [1209] = 0x8acd, [1210] = 0x8ac2, [1211] = 0x8ada, + [1212] = 0x8aeb, [1213] = 0x8af3, [1214] = 0x8ae7, [1216] = 0x8ae4, + [1217] = 0x8af1, [1218] = 0x8b14, [1219] = 0x8ae0, [1220] = 0x8ae2, + [1221] = 0x8af7, [1222] = 0x8ade, [1223] = 0x8adb, [1224] = 0x8b0c, + [1225] = 0x8b07, [1226] = 0x8b1a, [1227] = 0x8ae1, [1228] = 0x8b16, + [1229] = 0x8b10, [1230] = 0x8b17, [1231] = 0x8b20, [1232] = 0x8b33, + [1233] = 0x97ab, [1234] = 0x8b26, [1235] = 0x8b2b, [1236] = 0x8b3e, + [1237] = 0x8b28, [1238] = 0x8b41, [1239] = 0x8b4c, [1240] = 0x8b4f, + [1241] = 0x8b4e, [1242] = 0x8b49, [1243] = 0x8b56, [1244] = 0x8b5b, + [1245] = 0x8b5a, [1246] = 0x8b6b, [1247] = 0x8b5f, [1248] = 0x8b6c, + [1249] = 0x8b6f, [1250] = 0x8b74, [1251] = 0x8b7d, [1252] = 0x8b80, + [1253] = 0x8b8c, [1254] = 0x8b8e, [1255] = 0x8b92, [1256] = 0x8b93, + [1257] = 0x8b96, [1258] = 0x8b99, [1259] = 0x8b9a, [1260] = 0x8c3a, + [1261] = 0x8c41, [1262] = 0x8c3f, [1263] = 0x8c48, [1264] = 0x8c4c, + [1265] = 0x8c4e, [1266] = 0x8c50, [1267] = 0x8c55, [1268] = 0x8c62, + [1269] = 0x8c6c, [1270] = 0x8c78, [1271] = 0x8c7a, [1272] = 0x8c82, + [1273] = 0x8c89, [1274] = 0x8c85, [1275] = 0x8c8a, [1276] = 0x8c8d, + [1277] = 0x8c8e, [1278] = 0x8c94, [1279] = 0x8c7c, [1280] = 0x8c98, + [1281] = 0x621d, [1282] = 0x8cad, [1283] = 0x8caa, [1284] = 0x8cbd, + [1285] = 0x8cb2, [1286] = 0x8cb3, [1287] = 0x8cae, [1288] = 0x8cb6, + [1289] = 0x8cc8, [1290] = 0x8cc1, [1291] = 0x8ce4, [1292] = 0x8ce3, + [1293] = 0x8cda, [1294] = 0x8cfd, [1295] = 0x8cfa, [1296] = 0x8cfb, + [1297] = 0x8d04, [1298] = 0x8d05, [1299] = 0x8d0a, [1300] = 0x8d07, + [1301] = 0x8d0f, [1302] = 0x8d0d, [1303] = 0x8d10, [1304] = 0x9f4e, + [1305] = 0x8d13, [1306] = 0x8ccd, [1307] = 0x8d14, [1308] = 0x8d16, + [1309] = 0x8d67, [1310] = 0x8d6d, [1311] = 0x8d71, [1312] = 0x8d73, + [1313] = 0x8d81, [1314] = 0x8d99, [1315] = 0x8dc2, [1316] = 0x8dbe, + [1317] = 0x8dba, [1318] = 0x8dcf, [1319] = 0x8dda, [1320] = 0x8dd6, + [1321] = 0x8dcc, [1322] = 0x8ddb, [1323] = 0x8dcb, [1324] = 0x8dea, + [1325] = 0x8deb, [1326] = 0x8ddf, [1327] = 0x8de3, [1328] = 0x8dfc, + [1329] = 0x8e08, [1330] = 0x8e09, [1331] = 0x8dff, [1332] = 0x8e1d, + [1333] = 0x8e1e, [1334] = 0x8e10, [1335] = 0x8e1f, [1336] = 0x8e42, + [1337] = 0x8e35, [1338] = 0x8e30, [1339] = 0x8e34, [1340] = 0x8e4a, + [1344] = 0x8e47, [1345] = 0x8e49, [1346] = 0x8e4c, [1347] = 0x8e50, + [1348] = 0x8e48, [1349] = 0x8e59, [1350] = 0x8e64, [1351] = 0x8e60, + [1352] = 0x8e2a, [1353] = 0x8e63, [1354] = 0x8e55, [1355] = 0x8e76, + [1356] = 0x8e72, [1357] = 0x8e7c, [1358] = 0x8e81, [1359] = 0x8e87, + [1360] = 0x8e85, [1361] = 0x8e84, [1362] = 0x8e8b, [1363] = 0x8e8a, + [1364] = 0x8e93, [1365] = 0x8e91, [1366] = 0x8e94, [1367] = 0x8e99, + [1368] = 0x8eaa, [1369] = 0x8ea1, [1370] = 0x8eac, [1371] = 0x8eb0, + [1372] = 0x8ec6, [1373] = 0x8eb1, [1374] = 0x8ebe, [1375] = 0x8ec5, + [1376] = 0x8ec8, [1377] = 0x8ecb, [1378] = 0x8edb, [1379] = 0x8ee3, + [1380] = 0x8efc, [1381] = 0x8efb, [1382] = 0x8eeb, [1383] = 0x8efe, + [1384] = 0x8f0a, [1385] = 0x8f05, [1386] = 0x8f15, [1387] = 0x8f12, + [1388] = 0x8f19, [1389] = 0x8f13, [1390] = 0x8f1c, [1391] = 0x8f1f, + [1392] = 0x8f1b, [1393] = 0x8f0c, [1394] = 0x8f26, [1395] = 0x8f33, + [1396] = 0x8f3b, [1397] = 0x8f39, [1398] = 0x8f45, [1399] = 0x8f42, + [1400] = 0x8f3e, [1401] = 0x8f4c, [1402] = 0x8f49, [1403] = 0x8f46, + [1404] = 0x8f4e, [1405] = 0x8f57, [1406] = 0x8f5c, [1408] = 0x8f62, + [1409] = 0x8f63, [1410] = 0x8f64, [1411] = 0x8f9c, [1412] = 0x8f9f, + [1413] = 0x8fa3, [1414] = 0x8fad, [1415] = 0x8faf, [1416] = 0x8fb7, + [1417] = 0x8fda, [1418] = 0x8fe5, [1419] = 0x8fe2, [1420] = 0x8fea, + [1421] = 0x8fef, [1422] = 0x9087, [1423] = 0x8ff4, [1424] = 0x9005, + [1425] = 0x8ff9, [1426] = 0x8ffa, [1427] = 0x9011, [1428] = 0x9015, + [1429] = 0x9021, [1430] = 0x900d, [1431] = 0x901e, [1432] = 0x9016, + [1433] = 0x900b, [1434] = 0x9027, [1435] = 0x9036, [1436] = 0x9035, + [1437] = 0x9039, [1438] = 0x8ff8, [1439] = 0x904f, [1440] = 0x9050, + [1441] = 0x9051, [1442] = 0x9052, [1443] = 0x900e, [1444] = 0x9049, + [1445] = 0x903e, [1446] = 0x9056, [1447] = 0x9058, [1448] = 0x905e, + [1449] = 0x9068, [1450] = 0x906f, [1451] = 0x9076, [1452] = 0x96a8, + [1453] = 0x9072, [1454] = 0x9082, [1455] = 0x907d, [1456] = 0x9081, + [1457] = 0x9080, [1458] = 0x908a, [1459] = 0x9089, [1460] = 0x908f, + [1461] = 0x90a8, [1462] = 0x90af, [1463] = 0x90b1, [1464] = 0x90b5, + [1465] = 0x90e2, [1466] = 0x90e4, [1467] = 0x6248, [1468] = 0x90db, + [1469] = 0x9102, [1470] = 0x9112, [1471] = 0x9119, [1472] = 0x9132, + [1473] = 0x9130, [1474] = 0x914a, [1475] = 0x9156, [1476] = 0x9158, + [1477] = 0x9163, [1478] = 0x9165, [1479] = 0x9169, [1480] = 0x9173, + [1481] = 0x9172, [1482] = 0x918b, [1483] = 0x9189, [1484] = 0x9182, + [1485] = 0x91a2, [1486] = 0x91ab, [1487] = 0x91af, [1488] = 0x91aa, + [1489] = 0x91b5, [1490] = 0x91b4, [1491] = 0x91ba, [1492] = 0x91c0, + [1493] = 0x91c1, [1494] = 0x91c9, [1495] = 0x91cb, [1496] = 0x91d0, + [1497] = 0x91d6, [1498] = 0x91df, [1499] = 0x91e1, [1500] = 0x91db, + [1501] = 0x91fc, [1502] = 0x91f5, [1503] = 0x91f6, [1504] = 0x921e, + [1505] = 0x91ff, [1506] = 0x9214, [1507] = 0x922c, [1508] = 0x9215, + [1509] = 0x9211, [1510] = 0x925e, [1511] = 0x9257, [1512] = 0x9245, + [1513] = 0x9249, [1514] = 0x9264, [1515] = 0x9248, [1516] = 0x9295, + [1517] = 0x923f, [1518] = 0x924b, [1519] = 0x9250, [1520] = 0x929c, + [1521] = 0x9296, [1522] = 0x9293, [1523] = 0x929b, [1524] = 0x925a, + [1525] = 0x92cf, [1526] = 0x92b9, [1527] = 0x92b7, [1528] = 0x92e9, + [1529] = 0x930f, [1530] = 0x92fa, [1531] = 0x9344, [1532] = 0x932e, + [1536] = 0x9319, [1537] = 0x9322, [1538] = 0x931a, [1539] = 0x9323, + [1540] = 0x933a, [1541] = 0x9335, [1542] = 0x933b, [1543] = 0x935c, + [1544] = 0x9360, [1545] = 0x937c, [1546] = 0x936e, [1547] = 0x9356, + [1548] = 0x93b0, [1549] = 0x93ac, [1550] = 0x93ad, [1551] = 0x9394, + [1552] = 0x93b9, [1553] = 0x93d6, [1554] = 0x93d7, [1555] = 0x93e8, + [1556] = 0x93e5, [1557] = 0x93d8, [1558] = 0x93c3, [1559] = 0x93dd, + [1560] = 0x93d0, [1561] = 0x93c8, [1562] = 0x93e4, [1563] = 0x941a, + [1564] = 0x9414, [1565] = 0x9413, [1566] = 0x9403, [1567] = 0x9407, + [1568] = 0x9410, [1569] = 0x9436, [1570] = 0x942b, [1571] = 0x9435, + [1572] = 0x9421, [1573] = 0x943a, [1574] = 0x9441, [1575] = 0x9452, + [1576] = 0x9444, [1577] = 0x945b, [1578] = 0x9460, [1579] = 0x9462, + [1580] = 0x945e, [1581] = 0x946a, [1582] = 0x9229, [1583] = 0x9470, + [1584] = 0x9475, [1585] = 0x9477, [1586] = 0x947d, [1587] = 0x945a, + [1588] = 0x947c, [1589] = 0x947e, [1590] = 0x9481, [1591] = 0x947f, + [1592] = 0x9582, [1593] = 0x9587, [1594] = 0x958a, [1595] = 0x9594, + [1596] = 0x9596, [1597] = 0x9598, [1598] = 0x9599, [1600] = 0x95a0, + [1601] = 0x95a8, [1602] = 0x95a7, [1603] = 0x95ad, [1604] = 0x95bc, + [1605] = 0x95bb, [1606] = 0x95b9, [1607] = 0x95be, [1608] = 0x95ca, + [1609] = 0x6ff6, [1610] = 0x95c3, [1611] = 0x95cd, [1612] = 0x95cc, + [1613] = 0x95d5, [1614] = 0x95d4, [1615] = 0x95d6, [1616] = 0x95dc, + [1617] = 0x95e1, [1618] = 0x95e5, [1619] = 0x95e2, [1620] = 0x9621, + [1621] = 0x9628, [1622] = 0x962e, [1623] = 0x962f, [1624] = 0x9642, + [1625] = 0x964c, [1626] = 0x964f, [1627] = 0x964b, [1628] = 0x9677, + [1629] = 0x965c, [1630] = 0x965e, [1631] = 0x965d, [1632] = 0x965f, + [1633] = 0x9666, [1634] = 0x9672, [1635] = 0x966c, [1636] = 0x968d, + [1637] = 0x9698, [1638] = 0x9695, [1639] = 0x9697, [1640] = 0x96aa, + [1641] = 0x96a7, [1642] = 0x96b1, [1643] = 0x96b2, [1644] = 0x96b0, + [1645] = 0x96b4, [1646] = 0x96b6, [1647] = 0x96b8, [1648] = 0x96b9, + [1649] = 0x96ce, [1650] = 0x96cb, [1651] = 0x96c9, [1652] = 0x96cd, + [1653] = 0x894d, [1654] = 0x96dc, [1655] = 0x970d, [1656] = 0x96d5, + [1657] = 0x96f9, [1658] = 0x9704, [1659] = 0x9706, [1660] = 0x9708, + [1661] = 0x9713, [1662] = 0x970e, [1663] = 0x9711, [1664] = 0x970f, + [1665] = 0x9716, [1666] = 0x9719, [1667] = 0x9724, [1668] = 0x972a, + [1669] = 0x9730, [1670] = 0x9739, [1671] = 0x973d, [1672] = 0x973e, + [1673] = 0x9744, [1674] = 0x9746, [1675] = 0x9748, [1676] = 0x9742, + [1677] = 0x9749, [1678] = 0x975c, [1679] = 0x9760, [1680] = 0x9764, + [1681] = 0x9766, [1682] = 0x9768, [1683] = 0x52d2, [1684] = 0x976b, + [1685] = 0x9771, [1686] = 0x9779, [1687] = 0x9785, [1688] = 0x977c, + [1689] = 0x9781, [1690] = 0x977a, [1691] = 0x9786, [1692] = 0x978b, + [1693] = 0x978f, [1694] = 0x9790, [1695] = 0x979c, [1696] = 0x97a8, + [1697] = 0x97a6, [1698] = 0x97a3, [1699] = 0x97b3, [1700] = 0x97b4, + [1701] = 0x97c3, [1702] = 0x97c6, [1703] = 0x97c8, [1704] = 0x97cb, + [1705] = 0x97dc, [1706] = 0x97ed, [1707] = 0x9f4f, [1708] = 0x97f2, + [1709] = 0x7adf, [1710] = 0x97f6, [1711] = 0x97f5, [1712] = 0x980f, + [1713] = 0x980c, [1714] = 0x9838, [1715] = 0x9824, [1716] = 0x9821, + [1717] = 0x9837, [1718] = 0x983d, [1719] = 0x9846, [1720] = 0x984f, + [1721] = 0x984b, [1722] = 0x986b, [1723] = 0x986f, [1724] = 0x9870, + [1728] = 0x9871, [1729] = 0x9874, [1730] = 0x9873, [1731] = 0x98aa, + [1732] = 0x98af, [1733] = 0x98b1, [1734] = 0x98b6, [1735] = 0x98c4, + [1736] = 0x98c3, [1737] = 0x98c6, [1738] = 0x98e9, [1739] = 0x98eb, + [1740] = 0x9903, [1741] = 0x9909, [1742] = 0x9912, [1743] = 0x9914, + [1744] = 0x9918, [1745] = 0x9921, [1746] = 0x991d, [1747] = 0x991e, + [1748] = 0x9924, [1749] = 0x9920, [1750] = 0x992c, [1751] = 0x992e, + [1752] = 0x993d, [1753] = 0x993e, [1754] = 0x9942, [1755] = 0x9949, + [1756] = 0x9945, [1757] = 0x9950, [1758] = 0x994b, [1759] = 0x9951, + [1760] = 0x9952, [1761] = 0x994c, [1762] = 0x9955, [1763] = 0x9997, + [1764] = 0x9998, [1765] = 0x99a5, [1766] = 0x99ad, [1767] = 0x99ae, + [1768] = 0x99bc, [1769] = 0x99df, [1770] = 0x99db, [1771] = 0x99dd, + [1772] = 0x99d8, [1773] = 0x99d1, [1774] = 0x99ed, [1775] = 0x99ee, + [1776] = 0x99f1, [1777] = 0x99f2, [1778] = 0x99fb, [1779] = 0x99f8, + [1780] = 0x9a01, [1781] = 0x9a0f, [1782] = 0x9a05, [1783] = 0x99e2, + [1784] = 0x9a19, [1785] = 0x9a2b, [1786] = 0x9a37, [1787] = 0x9a45, + [1788] = 0x9a42, [1789] = 0x9a40, [1790] = 0x9a43, [1792] = 0x9a3e, + [1793] = 0x9a55, [1794] = 0x9a4d, [1795] = 0x9a5b, [1796] = 0x9a57, + [1797] = 0x9a5f, [1798] = 0x9a62, [1799] = 0x9a65, [1800] = 0x9a64, + [1801] = 0x9a69, [1802] = 0x9a6b, [1803] = 0x9a6a, [1804] = 0x9aad, + [1805] = 0x9ab0, [1806] = 0x9abc, [1807] = 0x9ac0, [1808] = 0x9acf, + [1809] = 0x9ad1, [1810] = 0x9ad3, [1811] = 0x9ad4, [1812] = 0x9ade, + [1813] = 0x9adf, [1814] = 0x9ae2, [1815] = 0x9ae3, [1816] = 0x9ae6, + [1817] = 0x9aef, [1818] = 0x9aeb, [1819] = 0x9aee, [1820] = 0x9af4, + [1821] = 0x9af1, [1822] = 0x9af7, [1823] = 0x9afb, [1824] = 0x9b06, + [1825] = 0x9b18, [1826] = 0x9b1a, [1827] = 0x9b1f, [1828] = 0x9b22, + [1829] = 0x9b23, [1830] = 0x9b25, [1831] = 0x9b27, [1832] = 0x9b28, + [1833] = 0x9b29, [1834] = 0x9b2a, [1835] = 0x9b2e, [1836] = 0x9b2f, + [1837] = 0x9b32, [1838] = 0x9b44, [1839] = 0x9b43, [1840] = 0x9b4f, + [1841] = 0x9b4d, [1842] = 0x9b4e, [1843] = 0x9b51, [1844] = 0x9b58, + [1845] = 0x9b74, [1846] = 0x9b93, [1847] = 0x9b83, [1848] = 0x9b91, + [1849] = 0x9b96, [1850] = 0x9b97, [1851] = 0x9b9f, [1852] = 0x9ba0, + [1853] = 0x9ba8, [1854] = 0x9bb4, [1855] = 0x9bc0, [1856] = 0x9bca, + [1857] = 0x9bb9, [1858] = 0x9bc6, [1859] = 0x9bcf, [1860] = 0x9bd1, + [1861] = 0x9bd2, [1862] = 0x9be3, [1863] = 0x9be2, [1864] = 0x9be4, + [1865] = 0x9bd4, [1866] = 0x9be1, [1867] = 0x9c3a, [1868] = 0x9bf2, + [1869] = 0x9bf1, [1870] = 0x9bf0, [1871] = 0x9c15, [1872] = 0x9c14, + [1873] = 0x9c09, [1874] = 0x9c13, [1875] = 0x9c0c, [1876] = 0x9c06, + [1877] = 0x9c08, [1878] = 0x9c12, [1879] = 0x9c0a, [1880] = 0x9c04, + [1881] = 0x9c2e, [1882] = 0x9c1b, [1883] = 0x9c25, [1884] = 0x9c24, + [1885] = 0x9c21, [1886] = 0x9c30, [1887] = 0x9c47, [1888] = 0x9c32, + [1889] = 0x9c46, [1890] = 0x9c3e, [1891] = 0x9c5a, [1892] = 0x9c60, + [1893] = 0x9c67, [1894] = 0x9c76, [1895] = 0x9c78, [1896] = 0x9ce7, + [1897] = 0x9cec, [1898] = 0x9cf0, [1899] = 0x9d09, [1900] = 0x9d08, + [1901] = 0x9ceb, [1902] = 0x9d03, [1903] = 0x9d06, [1904] = 0x9d2a, + [1905] = 0x9d26, [1906] = 0x9daf, [1907] = 0x9d23, [1908] = 0x9d1f, + [1909] = 0x9d44, [1910] = 0x9d15, [1911] = 0x9d12, [1912] = 0x9d41, + [1913] = 0x9d3f, [1914] = 0x9d3e, [1915] = 0x9d46, [1916] = 0x9d48, + [1920] = 0x9d5d, [1921] = 0x9d5e, [1922] = 0x9d64, [1923] = 0x9d51, + [1924] = 0x9d50, [1925] = 0x9d59, [1926] = 0x9d72, [1927] = 0x9d89, + [1928] = 0x9d87, [1929] = 0x9dab, [1930] = 0x9d6f, [1931] = 0x9d7a, + [1932] = 0x9d9a, [1933] = 0x9da4, [1934] = 0x9da9, [1935] = 0x9db2, + [1936] = 0x9dc4, [1937] = 0x9dc1, [1938] = 0x9dbb, [1939] = 0x9db8, + [1940] = 0x9dba, [1941] = 0x9dc6, [1942] = 0x9dcf, [1943] = 0x9dc2, + [1944] = 0x9dd9, [1945] = 0x9dd3, [1946] = 0x9df8, [1947] = 0x9de6, + [1948] = 0x9ded, [1949] = 0x9def, [1950] = 0x9dfd, [1951] = 0x9e1a, + [1952] = 0x9e1b, [1953] = 0x9e1e, [1954] = 0x9e75, [1955] = 0x9e79, + [1956] = 0x9e7d, [1957] = 0x9e81, [1958] = 0x9e88, [1959] = 0x9e8b, + [1960] = 0x9e8c, [1961] = 0x9e92, [1962] = 0x9e95, [1963] = 0x9e91, + [1964] = 0x9e9d, [1965] = 0x9ea5, [1966] = 0x9ea9, [1967] = 0x9eb8, + [1968] = 0x9eaa, [1969] = 0x9ead, [1970] = 0x9761, [1971] = 0x9ecc, + [1972] = 0x9ece, [1973] = 0x9ecf, [1974] = 0x9ed0, [1975] = 0x9ed4, + [1976] = 0x9edc, [1977] = 0x9ede, [1978] = 0x9edd, [1979] = 0x9ee0, + [1980] = 0x9ee5, [1981] = 0x9ee8, [1982] = 0x9eef, [1984] = 0x9ef4, + [1985] = 0x9ef6, [1986] = 0x9ef7, [1987] = 0x9ef9, [1988] = 0x9efb, + [1989] = 0x9efc, [1990] = 0x9efd, [1991] = 0x9f07, [1992] = 0x9f08, + [1993] = 0x76b7, [1994] = 0x9f15, [1995] = 0x9f21, [1996] = 0x9f2c, + [1997] = 0x9f3e, [1998] = 0x9f4a, [1999] = 0x9f52, [2000] = 0x9f54, + [2001] = 0x9f63, [2002] = 0x9f5f, [2003] = 0x9f60, [2004] = 0x9f61, + [2005] = 0x9f66, [2006] = 0x9f67, [2007] = 0x9f6c, [2008] = 0x9f6a, + [2009] = 0x9f77, [2010] = 0x9f72, [2011] = 0x9f76, [2012] = 0x9f95, + [2013] = 0x9f9c, [2014] = 0x9fa0, [2015] = 0x582f, [2016] = 0x69c7, + [2017] = 0x9059, [2018] = 0x7464, [2019] = 0x51dc, [2020] = 0x7199 +}; + +static const uint16_t cjk_block6[381] = +{ + /* start = 0xed40, end = 0xeefc */ + [ 0] = 0x7e8a, [ 1] = 0x891c, [ 2] = 0x9348, [ 3] = 0x9288, + [ 4] = 0x84dc, [ 5] = 0x4fc9, [ 6] = 0x70bb, [ 7] = 0x6631, + [ 8] = 0x68c8, [ 9] = 0x92f9, [ 10] = 0x66fb, [ 11] = 0x5f45, + [ 12] = 0x4e28, [ 13] = 0x4ee1, [ 14] = 0x4efc, [ 15] = 0x4f00, + [ 16] = 0x4f03, [ 17] = 0x4f39, [ 18] = 0x4f56, [ 19] = 0x4f92, + [ 20] = 0x4f8a, [ 21] = 0x4f9a, [ 22] = 0x4f94, [ 23] = 0x4fcd, + [ 24] = 0x5040, [ 25] = 0x5022, [ 26] = 0x4fff, [ 27] = 0x501e, + [ 28] = 0x5046, [ 29] = 0x5070, [ 30] = 0x5042, [ 31] = 0x5094, + [ 32] = 0x50f4, [ 33] = 0x50d8, [ 34] = 0x514a, [ 35] = 0x5164, + [ 36] = 0x519d, [ 37] = 0x51be, [ 38] = 0x51ec, [ 39] = 0x5215, + [ 40] = 0x529c, [ 41] = 0x52a6, [ 42] = 0x52c0, [ 43] = 0x52db, + [ 44] = 0x5300, [ 45] = 0x5307, [ 46] = 0x5324, [ 47] = 0x5372, + [ 48] = 0x5393, [ 49] = 0x53b2, [ 50] = 0x53dd, [ 51] = 0xfa0e, + [ 52] = 0x549c, [ 53] = 0x548a, [ 54] = 0x54a9, [ 55] = 0x54ff, + [ 56] = 0x5586, [ 57] = 0x5759, [ 58] = 0x5765, [ 59] = 0x57ac, + [ 60] = 0x57c8, [ 61] = 0x57c7, [ 62] = 0xfa0f, [ 64] = 0xfa10, + [ 65] = 0x589e, [ 66] = 0x58b2, [ 67] = 0x590b, [ 68] = 0x5953, + [ 69] = 0x595b, [ 70] = 0x595d, [ 71] = 0x5963, [ 72] = 0x59a4, + [ 73] = 0x59ba, [ 74] = 0x5b56, [ 75] = 0x5bc0, [ 76] = 0x752f, + [ 77] = 0x5bd8, [ 78] = 0x5bec, [ 79] = 0x5c1e, [ 80] = 0x5ca6, + [ 81] = 0x5cba, [ 82] = 0x5cf5, [ 83] = 0x5d27, [ 84] = 0x5d53, + [ 85] = 0xfa11, [ 86] = 0x5d42, [ 87] = 0x5d6d, [ 88] = 0x5db8, + [ 89] = 0x5db9, [ 90] = 0x5dd0, [ 91] = 0x5f21, [ 92] = 0x5f34, + [ 93] = 0x5f67, [ 94] = 0x5fb7, [ 95] = 0x5fde, [ 96] = 0x605d, + [ 97] = 0x6085, [ 98] = 0x608a, [ 99] = 0x60de, [ 100] = 0x60d5, + [ 101] = 0x6120, [ 102] = 0x60f2, [ 103] = 0x6111, [ 104] = 0x6137, + [ 105] = 0x6130, [ 106] = 0x6198, [ 107] = 0x6213, [ 108] = 0x62a6, + [ 109] = 0x63f5, [ 110] = 0x6460, [ 111] = 0x649d, [ 112] = 0x64ce, + [ 113] = 0x654e, [ 114] = 0x6600, [ 115] = 0x6615, [ 116] = 0x663b, + [ 117] = 0x6609, [ 118] = 0x662e, [ 119] = 0x661e, [ 120] = 0x6624, + [ 121] = 0x6665, [ 122] = 0x6657, [ 123] = 0x6659, [ 124] = 0xfa12, + [ 125] = 0x6673, [ 126] = 0x6699, [ 127] = 0x66a0, [ 128] = 0x66b2, + [ 129] = 0x66bf, [ 130] = 0x66fa, [ 131] = 0x670e, [ 132] = 0xf929, + [ 133] = 0x6766, [ 134] = 0x67bb, [ 135] = 0x6852, [ 136] = 0x67c0, + [ 137] = 0x6801, [ 138] = 0x6844, [ 139] = 0x68cf, [ 140] = 0xfa13, + [ 141] = 0x6968, [ 142] = 0xfa14, [ 143] = 0x6998, [ 144] = 0x69e2, + [ 145] = 0x6a30, [ 146] = 0x6a6b, [ 147] = 0x6a46, [ 148] = 0x6a73, + [ 149] = 0x6a7e, [ 150] = 0x6ae2, [ 151] = 0x6ae4, [ 152] = 0x6bd6, + [ 153] = 0x6c3f, [ 154] = 0x6c5c, [ 155] = 0x6c86, [ 156] = 0x6c6f, + [ 157] = 0x6cda, [ 158] = 0x6d04, [ 159] = 0x6d87, [ 160] = 0x6d6f, + [ 161] = 0x6d96, [ 162] = 0x6dac, [ 163] = 0x6dcf, [ 164] = 0x6df8, + [ 165] = 0x6df2, [ 166] = 0x6dfc, [ 167] = 0x6e39, [ 168] = 0x6e5c, + [ 169] = 0x6e27, [ 170] = 0x6e3c, [ 171] = 0x6ebf, [ 172] = 0x6f88, + [ 173] = 0x6fb5, [ 174] = 0x6ff5, [ 175] = 0x7005, [ 176] = 0x7007, + [ 177] = 0x7028, [ 178] = 0x7085, [ 179] = 0x70ab, [ 180] = 0x710f, + [ 181] = 0x7104, [ 182] = 0x715c, [ 183] = 0x7146, [ 184] = 0x7147, + [ 185] = 0xfa15, [ 186] = 0x71c1, [ 187] = 0x71fe, [ 188] = 0x72b1, + [ 192] = 0x72be, [ 193] = 0x7324, [ 194] = 0xfa16, [ 195] = 0x7377, + [ 196] = 0x73bd, [ 197] = 0x73c9, [ 198] = 0x73d6, [ 199] = 0x73e3, + [ 200] = 0x73d2, [ 201] = 0x7407, [ 202] = 0x73f5, [ 203] = 0x7426, + [ 204] = 0x742a, [ 205] = 0x7429, [ 206] = 0x742e, [ 207] = 0x7462, + [ 208] = 0x7489, [ 209] = 0x749f, [ 210] = 0x7501, [ 211] = 0x756f, + [ 212] = 0x7682, [ 213] = 0x769c, [ 214] = 0x769e, [ 215] = 0x769b, + [ 216] = 0x76a6, [ 217] = 0xfa17, [ 218] = 0x7746, [ 219] = 0x52af, + [ 220] = 0x7821, [ 221] = 0x784e, [ 222] = 0x7864, [ 223] = 0x787a, + [ 224] = 0x7930, [ 225] = 0xfa18, [ 226] = 0xfa19, [ 227] = 0xfa1a, + [ 228] = 0x7994, [ 229] = 0xfa1b, [ 230] = 0x799b, [ 231] = 0x7ad1, + [ 232] = 0x7ae7, [ 233] = 0xfa1c, [ 234] = 0x7aeb, [ 235] = 0x7b9e, + [ 236] = 0xfa1d, [ 237] = 0x7d48, [ 238] = 0x7d5c, [ 239] = 0x7db7, + [ 240] = 0x7da0, [ 241] = 0x7dd6, [ 242] = 0x7e52, [ 243] = 0x7f47, + [ 244] = 0x7fa1, [ 245] = 0xfa1e, [ 246] = 0x8301, [ 247] = 0x8362, + [ 248] = 0x837f, [ 249] = 0x83c7, [ 250] = 0x83f6, [ 251] = 0x8448, + [ 252] = 0x84b4, [ 253] = 0x8553, [ 254] = 0x8559, [ 256] = 0x856b, + [ 257] = 0xfa1f, [ 258] = 0x85b0, [ 259] = 0xfa20, [ 260] = 0xfa21, + [ 261] = 0x8807, [ 262] = 0x88f5, [ 263] = 0x8a12, [ 264] = 0x8a37, + [ 265] = 0x8a79, [ 266] = 0x8aa7, [ 267] = 0x8abe, [ 268] = 0x8adf, + [ 269] = 0xfa22, [ 270] = 0x8af6, [ 271] = 0x8b53, [ 272] = 0x8b7f, + [ 273] = 0x8cf0, [ 274] = 0x8cf4, [ 275] = 0x8d12, [ 276] = 0x8d76, + [ 277] = 0xfa23, [ 278] = 0x8ecf, [ 279] = 0xfa24, [ 280] = 0xfa25, + [ 281] = 0x9067, [ 282] = 0x90de, [ 283] = 0xfa26, [ 284] = 0x9115, + [ 285] = 0x9127, [ 286] = 0x91da, [ 287] = 0x91d7, [ 288] = 0x91de, + [ 289] = 0x91ed, [ 290] = 0x91ee, [ 291] = 0x91e4, [ 292] = 0x91e5, + [ 293] = 0x9206, [ 294] = 0x9210, [ 295] = 0x920a, [ 296] = 0x923a, + [ 297] = 0x9240, [ 298] = 0x923c, [ 299] = 0x924e, [ 300] = 0x9259, + [ 301] = 0x9251, [ 302] = 0x9239, [ 303] = 0x9267, [ 304] = 0x92a7, + [ 305] = 0x9277, [ 306] = 0x9278, [ 307] = 0x92e7, [ 308] = 0x92d7, + [ 309] = 0x92d9, [ 310] = 0x92d0, [ 311] = 0xfa27, [ 312] = 0x92d5, + [ 313] = 0x92e0, [ 314] = 0x92d3, [ 315] = 0x9325, [ 316] = 0x9321, + [ 317] = 0x92fb, [ 318] = 0xfa28, [ 319] = 0x931e, [ 320] = 0x92ff, + [ 321] = 0x931d, [ 322] = 0x9302, [ 323] = 0x9370, [ 324] = 0x9357, + [ 325] = 0x93a4, [ 326] = 0x93c6, [ 327] = 0x93de, [ 328] = 0x93f8, + [ 329] = 0x9431, [ 330] = 0x9445, [ 331] = 0x9448, [ 332] = 0x9592, + [ 333] = 0xf9dc, [ 334] = 0xfa29, [ 335] = 0x969d, [ 336] = 0x96af, + [ 337] = 0x9733, [ 338] = 0x973b, [ 339] = 0x9743, [ 340] = 0x974d, + [ 341] = 0x974f, [ 342] = 0x9751, [ 343] = 0x9755, [ 344] = 0x9857, + [ 345] = 0x9865, [ 346] = 0xfa2a, [ 347] = 0xfa2b, [ 348] = 0x9927, + [ 349] = 0xfa2c, [ 350] = 0x999e, [ 351] = 0x9a4e, [ 352] = 0x9ad9, + [ 353] = 0x9adc, [ 354] = 0x9b75, [ 355] = 0x9b72, [ 356] = 0x9b8f, + [ 357] = 0x9bb1, [ 358] = 0x9bbb, [ 359] = 0x9c00, [ 360] = 0x9d70, + [ 361] = 0x9d6b, [ 362] = 0xfa2d, [ 363] = 0x9e19, [ 364] = 0x9ed1, + [ 367] = 0x2170, [ 368] = 0x2171, [ 369] = 0x2172, [ 370] = 0x2173, + [ 371] = 0x2174, [ 372] = 0x2175, [ 373] = 0x2176, [ 374] = 0x2177, + [ 375] = 0x2178, [ 376] = 0x2179, [ 377] = 0xffe2, [ 378] = 0xffe4, + [ 379] = 0xff07, [ 380] = 0xff02 +}; + +static const uint16_t cjk_block7[396] = +{ + /* start = 0xfa40, end = 0xfc4b */ + [ 0] = 0x2170, [ 1] = 0x2171, [ 2] = 0x2172, [ 3] = 0x2173, + [ 4] = 0x2174, [ 5] = 0x2175, [ 6] = 0x2176, [ 7] = 0x2177, + [ 8] = 0x2178, [ 9] = 0x2179, [ 10] = 0x2160, [ 11] = 0x2161, + [ 12] = 0x2162, [ 13] = 0x2163, [ 14] = 0x2164, [ 15] = 0x2165, + [ 16] = 0x2166, [ 17] = 0x2167, [ 18] = 0x2168, [ 19] = 0x2169, + [ 20] = 0xffe2, [ 21] = 0xffe4, [ 22] = 0xff07, [ 23] = 0xff02, + [ 24] = 0x3231, [ 25] = 0x2116, [ 26] = 0x2121, [ 27] = 0x2235, + [ 28] = 0x7e8a, [ 29] = 0x891c, [ 30] = 0x9348, [ 31] = 0x9288, + [ 32] = 0x84dc, [ 33] = 0x4fc9, [ 34] = 0x70bb, [ 35] = 0x6631, + [ 36] = 0x68c8, [ 37] = 0x92f9, [ 38] = 0x66fb, [ 39] = 0x5f45, + [ 40] = 0x4e28, [ 41] = 0x4ee1, [ 42] = 0x4efc, [ 43] = 0x4f00, + [ 44] = 0x4f03, [ 45] = 0x4f39, [ 46] = 0x4f56, [ 47] = 0x4f92, + [ 48] = 0x4f8a, [ 49] = 0x4f9a, [ 50] = 0x4f94, [ 51] = 0x4fcd, + [ 52] = 0x5040, [ 53] = 0x5022, [ 54] = 0x4fff, [ 55] = 0x501e, + [ 56] = 0x5046, [ 57] = 0x5070, [ 58] = 0x5042, [ 59] = 0x5094, + [ 60] = 0x50f4, [ 61] = 0x50d8, [ 62] = 0x514a, [ 64] = 0x5164, + [ 65] = 0x519d, [ 66] = 0x51be, [ 67] = 0x51ec, [ 68] = 0x5215, + [ 69] = 0x529c, [ 70] = 0x52a6, [ 71] = 0x52c0, [ 72] = 0x52db, + [ 73] = 0x5300, [ 74] = 0x5307, [ 75] = 0x5324, [ 76] = 0x5372, + [ 77] = 0x5393, [ 78] = 0x53b2, [ 79] = 0x53dd, [ 80] = 0xfa0e, + [ 81] = 0x549c, [ 82] = 0x548a, [ 83] = 0x54a9, [ 84] = 0x54ff, + [ 85] = 0x5586, [ 86] = 0x5759, [ 87] = 0x5765, [ 88] = 0x57ac, + [ 89] = 0x57c8, [ 90] = 0x57c7, [ 91] = 0xfa0f, [ 92] = 0xfa10, + [ 93] = 0x589e, [ 94] = 0x58b2, [ 95] = 0x590b, [ 96] = 0x5953, + [ 97] = 0x595b, [ 98] = 0x595d, [ 99] = 0x5963, [ 100] = 0x59a4, + [ 101] = 0x59ba, [ 102] = 0x5b56, [ 103] = 0x5bc0, [ 104] = 0x752f, + [ 105] = 0x5bd8, [ 106] = 0x5bec, [ 107] = 0x5c1e, [ 108] = 0x5ca6, + [ 109] = 0x5cba, [ 110] = 0x5cf5, [ 111] = 0x5d27, [ 112] = 0x5d53, + [ 113] = 0xfa11, [ 114] = 0x5d42, [ 115] = 0x5d6d, [ 116] = 0x5db8, + [ 117] = 0x5db9, [ 118] = 0x5dd0, [ 119] = 0x5f21, [ 120] = 0x5f34, + [ 121] = 0x5f67, [ 122] = 0x5fb7, [ 123] = 0x5fde, [ 124] = 0x605d, + [ 125] = 0x6085, [ 126] = 0x608a, [ 127] = 0x60de, [ 128] = 0x60d5, + [ 129] = 0x6120, [ 130] = 0x60f2, [ 131] = 0x6111, [ 132] = 0x6137, + [ 133] = 0x6130, [ 134] = 0x6198, [ 135] = 0x6213, [ 136] = 0x62a6, + [ 137] = 0x63f5, [ 138] = 0x6460, [ 139] = 0x649d, [ 140] = 0x64ce, + [ 141] = 0x654e, [ 142] = 0x6600, [ 143] = 0x6615, [ 144] = 0x663b, + [ 145] = 0x6609, [ 146] = 0x662e, [ 147] = 0x661e, [ 148] = 0x6624, + [ 149] = 0x6665, [ 150] = 0x6657, [ 151] = 0x6659, [ 152] = 0xfa12, + [ 153] = 0x6673, [ 154] = 0x6699, [ 155] = 0x66a0, [ 156] = 0x66b2, + [ 157] = 0x66bf, [ 158] = 0x66fa, [ 159] = 0x670e, [ 160] = 0xf929, + [ 161] = 0x6766, [ 162] = 0x67bb, [ 163] = 0x6852, [ 164] = 0x67c0, + [ 165] = 0x6801, [ 166] = 0x6844, [ 167] = 0x68cf, [ 168] = 0xfa13, + [ 169] = 0x6968, [ 170] = 0xfa14, [ 171] = 0x6998, [ 172] = 0x69e2, + [ 173] = 0x6a30, [ 174] = 0x6a6b, [ 175] = 0x6a46, [ 176] = 0x6a73, + [ 177] = 0x6a7e, [ 178] = 0x6ae2, [ 179] = 0x6ae4, [ 180] = 0x6bd6, + [ 181] = 0x6c3f, [ 182] = 0x6c5c, [ 183] = 0x6c86, [ 184] = 0x6c6f, + [ 185] = 0x6cda, [ 186] = 0x6d04, [ 187] = 0x6d87, [ 188] = 0x6d6f, + [ 192] = 0x6d96, [ 193] = 0x6dac, [ 194] = 0x6dcf, [ 195] = 0x6df8, + [ 196] = 0x6df2, [ 197] = 0x6dfc, [ 198] = 0x6e39, [ 199] = 0x6e5c, + [ 200] = 0x6e27, [ 201] = 0x6e3c, [ 202] = 0x6ebf, [ 203] = 0x6f88, + [ 204] = 0x6fb5, [ 205] = 0x6ff5, [ 206] = 0x7005, [ 207] = 0x7007, + [ 208] = 0x7028, [ 209] = 0x7085, [ 210] = 0x70ab, [ 211] = 0x710f, + [ 212] = 0x7104, [ 213] = 0x715c, [ 214] = 0x7146, [ 215] = 0x7147, + [ 216] = 0xfa15, [ 217] = 0x71c1, [ 218] = 0x71fe, [ 219] = 0x72b1, + [ 220] = 0x72be, [ 221] = 0x7324, [ 222] = 0xfa16, [ 223] = 0x7377, + [ 224] = 0x73bd, [ 225] = 0x73c9, [ 226] = 0x73d6, [ 227] = 0x73e3, + [ 228] = 0x73d2, [ 229] = 0x7407, [ 230] = 0x73f5, [ 231] = 0x7426, + [ 232] = 0x742a, [ 233] = 0x7429, [ 234] = 0x742e, [ 235] = 0x7462, + [ 236] = 0x7489, [ 237] = 0x749f, [ 238] = 0x7501, [ 239] = 0x756f, + [ 240] = 0x7682, [ 241] = 0x769c, [ 242] = 0x769e, [ 243] = 0x769b, + [ 244] = 0x76a6, [ 245] = 0xfa17, [ 246] = 0x7746, [ 247] = 0x52af, + [ 248] = 0x7821, [ 249] = 0x784e, [ 250] = 0x7864, [ 251] = 0x787a, + [ 252] = 0x7930, [ 253] = 0xfa18, [ 254] = 0xfa19, [ 256] = 0xfa1a, + [ 257] = 0x7994, [ 258] = 0xfa1b, [ 259] = 0x799b, [ 260] = 0x7ad1, + [ 261] = 0x7ae7, [ 262] = 0xfa1c, [ 263] = 0x7aeb, [ 264] = 0x7b9e, + [ 265] = 0xfa1d, [ 266] = 0x7d48, [ 267] = 0x7d5c, [ 268] = 0x7db7, + [ 269] = 0x7da0, [ 270] = 0x7dd6, [ 271] = 0x7e52, [ 272] = 0x7f47, + [ 273] = 0x7fa1, [ 274] = 0xfa1e, [ 275] = 0x8301, [ 276] = 0x8362, + [ 277] = 0x837f, [ 278] = 0x83c7, [ 279] = 0x83f6, [ 280] = 0x8448, + [ 281] = 0x84b4, [ 282] = 0x8553, [ 283] = 0x8559, [ 284] = 0x856b, + [ 285] = 0xfa1f, [ 286] = 0x85b0, [ 287] = 0xfa20, [ 288] = 0xfa21, + [ 289] = 0x8807, [ 290] = 0x88f5, [ 291] = 0x8a12, [ 292] = 0x8a37, + [ 293] = 0x8a79, [ 294] = 0x8aa7, [ 295] = 0x8abe, [ 296] = 0x8adf, + [ 297] = 0xfa22, [ 298] = 0x8af6, [ 299] = 0x8b53, [ 300] = 0x8b7f, + [ 301] = 0x8cf0, [ 302] = 0x8cf4, [ 303] = 0x8d12, [ 304] = 0x8d76, + [ 305] = 0xfa23, [ 306] = 0x8ecf, [ 307] = 0xfa24, [ 308] = 0xfa25, + [ 309] = 0x9067, [ 310] = 0x90de, [ 311] = 0xfa26, [ 312] = 0x9115, + [ 313] = 0x9127, [ 314] = 0x91da, [ 315] = 0x91d7, [ 316] = 0x91de, + [ 317] = 0x91ed, [ 318] = 0x91ee, [ 319] = 0x91e4, [ 320] = 0x91e5, + [ 321] = 0x9206, [ 322] = 0x9210, [ 323] = 0x920a, [ 324] = 0x923a, + [ 325] = 0x9240, [ 326] = 0x923c, [ 327] = 0x924e, [ 328] = 0x9259, + [ 329] = 0x9251, [ 330] = 0x9239, [ 331] = 0x9267, [ 332] = 0x92a7, + [ 333] = 0x9277, [ 334] = 0x9278, [ 335] = 0x92e7, [ 336] = 0x92d7, + [ 337] = 0x92d9, [ 338] = 0x92d0, [ 339] = 0xfa27, [ 340] = 0x92d5, + [ 341] = 0x92e0, [ 342] = 0x92d3, [ 343] = 0x9325, [ 344] = 0x9321, + [ 345] = 0x92fb, [ 346] = 0xfa28, [ 347] = 0x931e, [ 348] = 0x92ff, + [ 349] = 0x931d, [ 350] = 0x9302, [ 351] = 0x9370, [ 352] = 0x9357, + [ 353] = 0x93a4, [ 354] = 0x93c6, [ 355] = 0x93de, [ 356] = 0x93f8, + [ 357] = 0x9431, [ 358] = 0x9445, [ 359] = 0x9448, [ 360] = 0x9592, + [ 361] = 0xf9dc, [ 362] = 0xfa29, [ 363] = 0x969d, [ 364] = 0x96af, + [ 365] = 0x9733, [ 366] = 0x973b, [ 367] = 0x9743, [ 368] = 0x974d, + [ 369] = 0x974f, [ 370] = 0x9751, [ 371] = 0x9755, [ 372] = 0x9857, + [ 373] = 0x9865, [ 374] = 0xfa2a, [ 375] = 0xfa2b, [ 376] = 0x9927, + [ 377] = 0xfa2c, [ 378] = 0x999e, [ 379] = 0x9a4e, [ 380] = 0x9ad9, + [ 384] = 0x9adc, [ 385] = 0x9b75, [ 386] = 0x9b72, [ 387] = 0x9b8f, + [ 388] = 0x9bb1, [ 389] = 0x9bbb, [ 390] = 0x9c00, [ 391] = 0x9d70, + [ 392] = 0x9d6b, [ 393] = 0xfa2d, [ 394] = 0x9e19, [ 395] = 0x9ed1 +}; + +static const char from_ucs4_lat1[248][2] = +{ + /* start = 0x0000, end = 0x00f7 */ + [ 0] = "\x00\x00", [ 1] = "\x01\x00", [ 2] = "\x02\x00", + [ 3] = "\x03\x00", [ 4] = "\x04\x00", [ 5] = "\x05\x00", + [ 6] = "\x06\x00", [ 7] = "\x07\x00", [ 8] = "\x08\x00", + [ 9] = "\x09\x00", [ 10] = "\x0a\x00", [ 11] = "\x0b\x00", + [ 12] = "\x0c\x00", [ 13] = "\x0d\x00", [ 14] = "\x0e\x00", + [ 15] = "\x0f\x00", [ 16] = "\x10\x00", [ 17] = "\x11\x00", + [ 18] = "\x12\x00", [ 19] = "\x13\x00", [ 20] = "\x14\x00", + [ 21] = "\x15\x00", [ 22] = "\x16\x00", [ 23] = "\x17\x00", + [ 24] = "\x18\x00", [ 25] = "\x19\x00", [ 26] = "\x1a\x00", + [ 27] = "\x1b\x00", [ 28] = "\x1c\x00", [ 29] = "\x1d\x00", + [ 30] = "\x1e\x00", [ 31] = "\x1f\x00", [ 32] = "\x20\x00", + [ 33] = "\x21\x00", [ 34] = "\x22\x00", [ 35] = "\x23\x00", + [ 36] = "\x24\x00", [ 37] = "\x25\x00", [ 38] = "\x26\x00", + [ 39] = "\x27\x00", [ 40] = "\x28\x00", [ 41] = "\x29\x00", + [ 42] = "\x2a\x00", [ 43] = "\x2b\x00", [ 44] = "\x2c\x00", + [ 45] = "\x2d\x00", [ 46] = "\x2e\x00", [ 47] = "\x2f\x00", + [ 48] = "\x30\x00", [ 49] = "\x31\x00", [ 50] = "\x32\x00", + [ 51] = "\x33\x00", [ 52] = "\x34\x00", [ 53] = "\x35\x00", + [ 54] = "\x36\x00", [ 55] = "\x37\x00", [ 56] = "\x38\x00", + [ 57] = "\x39\x00", [ 58] = "\x3a\x00", [ 59] = "\x3b\x00", + [ 60] = "\x3c\x00", [ 61] = "\x3d\x00", [ 62] = "\x3e\x00", + [ 63] = "\x3f\x00", [ 64] = "\x40\x00", [ 65] = "\x41\x00", + [ 66] = "\x42\x00", [ 67] = "\x43\x00", [ 68] = "\x44\x00", + [ 69] = "\x45\x00", [ 70] = "\x46\x00", [ 71] = "\x47\x00", + [ 72] = "\x48\x00", [ 73] = "\x49\x00", [ 74] = "\x4a\x00", + [ 75] = "\x4b\x00", [ 76] = "\x4c\x00", [ 77] = "\x4d\x00", + [ 78] = "\x4e\x00", [ 79] = "\x4f\x00", [ 80] = "\x50\x00", + [ 81] = "\x51\x00", [ 82] = "\x52\x00", [ 83] = "\x53\x00", + [ 84] = "\x54\x00", [ 85] = "\x55\x00", [ 86] = "\x56\x00", + [ 87] = "\x57\x00", [ 88] = "\x58\x00", [ 89] = "\x59\x00", + [ 90] = "\x5a\x00", [ 91] = "\x5b\x00", [ 92] = "\x5c\x00", + [ 93] = "\x5d\x00", [ 94] = "\x5e\x00", [ 95] = "\x5f\x00", + [ 96] = "\x60\x00", [ 97] = "\x61\x00", [ 98] = "\x62\x00", + [ 99] = "\x63\x00", [ 100] = "\x64\x00", [ 101] = "\x65\x00", + [ 102] = "\x66\x00", [ 103] = "\x67\x00", [ 104] = "\x68\x00", + [ 105] = "\x69\x00", [ 106] = "\x6a\x00", [ 107] = "\x6b\x00", + [ 108] = "\x6c\x00", [ 109] = "\x6d\x00", [ 110] = "\x6e\x00", + [ 111] = "\x6f\x00", [ 112] = "\x70\x00", [ 113] = "\x71\x00", + [ 114] = "\x72\x00", [ 115] = "\x73\x00", [ 116] = "\x74\x00", + [ 117] = "\x75\x00", [ 118] = "\x76\x00", [ 119] = "\x77\x00", + [ 120] = "\x78\x00", [ 121] = "\x79\x00", [ 122] = "\x7a\x00", + [ 123] = "\x7b\x00", [ 124] = "\x7c\x00", [ 125] = "\x7d\x00", + [ 126] = "\x7e\x00", [ 127] = "\x7f\x00", [ 162] = "\x81\x91", + [ 163] = "\x81\x92", [ 165] = "\x5c\x00", [ 167] = "\x81\x98", + [ 168] = "\x81\x4e", [ 172] = "\x81\xca", [ 176] = "\x81\x8b", + [ 177] = "\x81\x7d", [ 180] = "\x81\x4c", [ 182] = "\x81\xf7", + [ 215] = "\x81\x7e", [ 247] = "\x81\x80" +}; + +static const char from_ucs4_greek[193][2] = +{ + /* start = 0x0391, end = 0x0451 */ + [ 0] = "\x83\x9f", [ 1] = "\x83\xa0", [ 2] = "\x83\xa1", + [ 3] = "\x83\xa2", [ 4] = "\x83\xa3", [ 5] = "\x83\xa4", + [ 6] = "\x83\xa5", [ 7] = "\x83\xa6", [ 8] = "\x83\xa7", + [ 9] = "\x83\xa8", [ 10] = "\x83\xa9", [ 11] = "\x83\xaa", + [ 12] = "\x83\xab", [ 13] = "\x83\xac", [ 14] = "\x83\xad", + [ 15] = "\x83\xae", [ 16] = "\x83\xaf", [ 18] = "\x83\xb0", + [ 19] = "\x83\xb1", [ 20] = "\x83\xb2", [ 21] = "\x83\xb3", + [ 22] = "\x83\xb4", [ 23] = "\x83\xb5", [ 24] = "\x83\xb6", + [ 32] = "\x83\xbf", [ 33] = "\x83\xc0", [ 34] = "\x83\xc1", + [ 35] = "\x83\xc2", [ 36] = "\x83\xc3", [ 37] = "\x83\xc4", + [ 38] = "\x83\xc5", [ 39] = "\x83\xc6", [ 40] = "\x83\xc7", + [ 41] = "\x83\xc8", [ 42] = "\x83\xc9", [ 43] = "\x83\xca", + [ 44] = "\x83\xcb", [ 45] = "\x83\xcc", [ 46] = "\x83\xcd", + [ 47] = "\x83\xce", [ 48] = "\x83\xcf", [ 50] = "\x83\xd0", + [ 51] = "\x83\xd1", [ 52] = "\x83\xd2", [ 53] = "\x83\xd3", + [ 54] = "\x83\xd4", [ 55] = "\x83\xd5", [ 56] = "\x83\xd6", + [ 112] = "\x84\x46", [ 127] = "\x84\x40", [ 128] = "\x84\x41", + [ 129] = "\x84\x42", [ 130] = "\x84\x43", [ 131] = "\x84\x44", + [ 132] = "\x84\x45", [ 133] = "\x84\x47", [ 134] = "\x84\x48", + [ 135] = "\x84\x49", [ 136] = "\x84\x4a", [ 137] = "\x84\x4b", + [ 138] = "\x84\x4c", [ 139] = "\x84\x4d", [ 140] = "\x84\x4e", + [ 141] = "\x84\x4f", [ 142] = "\x84\x50", [ 143] = "\x84\x51", + [ 144] = "\x84\x52", [ 145] = "\x84\x53", [ 146] = "\x84\x54", + [ 147] = "\x84\x55", [ 148] = "\x84\x56", [ 149] = "\x84\x57", + [ 150] = "\x84\x58", [ 151] = "\x84\x59", [ 152] = "\x84\x5a", + [ 153] = "\x84\x5b", [ 154] = "\x84\x5c", [ 155] = "\x84\x5d", + [ 156] = "\x84\x5e", [ 157] = "\x84\x5f", [ 158] = "\x84\x60", + [ 159] = "\x84\x70", [ 160] = "\x84\x71", [ 161] = "\x84\x72", + [ 162] = "\x84\x73", [ 163] = "\x84\x74", [ 164] = "\x84\x75", + [ 165] = "\x84\x77", [ 166] = "\x84\x78", [ 167] = "\x84\x79", + [ 168] = "\x84\x7a", [ 169] = "\x84\x7b", [ 170] = "\x84\x7c", + [ 171] = "\x84\x7d", [ 172] = "\x84\x7e", [ 173] = "\x84\x80", + [ 174] = "\x84\x81", [ 175] = "\x84\x82", [ 176] = "\x84\x83", + [ 177] = "\x84\x84", [ 178] = "\x84\x85", [ 179] = "\x84\x86", + [ 180] = "\x84\x87", [ 181] = "\x84\x88", [ 182] = "\x84\x89", + [ 183] = "\x84\x8a", [ 184] = "\x84\x8b", [ 185] = "\x84\x8c", + [ 186] = "\x84\x8d", [ 187] = "\x84\x8e", [ 188] = "\x84\x8f", + [ 189] = "\x84\x90", [ 190] = "\x84\x91", [ 192] = "\x84\x76" +}; + +static const char from_ucs4_cjk[32657][2] = +{ + /* start = 0x2010, end = 0x9fa0 */ + [ 0] = "\x81\x5d", [ 4] = "\x81\x5c", [ 5] = "\x81\x5c", + [ 6] = "\x81\x61", [ 8] = "\x81\x65", [ 9] = "\x81\x66", + [ 12] = "\x81\x67", [ 13] = "\x81\x68", [ 16] = "\x81\xf5", + [ 17] = "\x81\xf6", [ 21] = "\x81\x64", [ 22] = "\x81\x63", + [ 32] = "\x81\xf1", [ 34] = "\x81\x8c", [ 35] = "\x81\x8d", + [ 43] = "\x81\xa6", [ 46] = "\x7e\x00", [ 243] = "\x81\x8e", + [ 262] = "\x87\x82", [ 273] = "\x87\x84", [ 283] = "\x81\xf0", + [ 336] = "\x87\x54", [ 337] = "\x87\x55", [ 338] = "\x87\x56", + [ 339] = "\x87\x57", [ 340] = "\x87\x58", [ 341] = "\x87\x59", + [ 342] = "\x87\x5a", [ 343] = "\x87\x5b", [ 344] = "\x87\x5c", + [ 345] = "\x87\x5d", [ 352] = "\xfa\x40", [ 353] = "\xfa\x41", + [ 354] = "\xfa\x42", [ 355] = "\xfa\x43", [ 356] = "\xfa\x44", + [ 357] = "\xfa\x45", [ 358] = "\xfa\x46", [ 359] = "\xfa\x47", + [ 360] = "\xfa\x48", [ 361] = "\xfa\x49", [ 384] = "\x81\xa9", + [ 385] = "\x81\xaa", [ 386] = "\x81\xa8", [ 387] = "\x81\xab", + [ 450] = "\x81\xcb", [ 452] = "\x81\xcc", [ 496] = "\x81\xcd", + [ 498] = "\x81\xdd", [ 499] = "\x81\xce", [ 503] = "\x81\xde", + [ 504] = "\x81\xb8", [ 507] = "\x81\xb9", [ 513] = "\x87\x94", + [ 514] = "\x81\x7c", [ 522] = "\x81\xe3", [ 525] = "\x81\xe5", + [ 526] = "\x81\x87", [ 527] = "\x87\x98", [ 528] = "\x81\xda", + [ 533] = "\x81\x61", [ 535] = "\x81\xc8", [ 536] = "\x81\xc9", + [ 537] = "\x81\xbf", [ 538] = "\x81\xbe", [ 539] = "\x81\xe7", + [ 540] = "\x81\xe8", [ 542] = "\x87\x93", [ 548] = "\x81\x88", + [ 549] = "\x81\xe6", [ 557] = "\x81\xe4", [ 578] = "\x81\xe0", + [ 592] = "\x81\x82", [ 593] = "\x81\xdf", [ 598] = "\x81\x85", + [ 599] = "\x81\x86", [ 602] = "\x81\xe1", [ 603] = "\x81\xe2", + [ 626] = "\x81\xbc", [ 627] = "\x81\xbd", [ 630] = "\x81\xba", + [ 631] = "\x81\xbb", [ 661] = "\x81\xdb", [ 687] = "\x87\x99", + [ 770] = "\x81\xdc", [ 1104] = "\x87\x40", [ 1105] = "\x87\x41", + [ 1106] = "\x87\x42", [ 1107] = "\x87\x43", [ 1108] = "\x87\x44", + [ 1109] = "\x87\x45", [ 1110] = "\x87\x46", [ 1111] = "\x87\x47", + [ 1112] = "\x87\x48", [ 1113] = "\x87\x49", [ 1114] = "\x87\x4a", + [ 1115] = "\x87\x4b", [ 1116] = "\x87\x4c", [ 1117] = "\x87\x4d", + [ 1118] = "\x87\x4e", [ 1119] = "\x87\x4f", [ 1120] = "\x87\x50", + [ 1121] = "\x87\x51", [ 1122] = "\x87\x52", [ 1123] = "\x87\x53", + [ 1264] = "\x84\x9f", [ 1265] = "\x84\xaa", [ 1266] = "\x84\xa0", + [ 1267] = "\x84\xab", [ 1276] = "\x84\xa1", [ 1279] = "\x84\xac", + [ 1280] = "\x84\xa2", [ 1283] = "\x84\xad", [ 1284] = "\x84\xa4", + [ 1287] = "\x84\xaf", [ 1288] = "\x84\xa3", [ 1291] = "\x84\xae", + [ 1292] = "\x84\xa5", [ 1293] = "\x84\xba", [ 1296] = "\x84\xb5", + [ 1299] = "\x84\xb0", [ 1300] = "\x84\xa7", [ 1301] = "\x84\xbc", + [ 1304] = "\x84\xb7", [ 1307] = "\x84\xb2", [ 1308] = "\x84\xa6", + [ 1311] = "\x84\xb6", [ 1312] = "\x84\xbb", [ 1315] = "\x84\xb1", + [ 1316] = "\x84\xa8", [ 1319] = "\x84\xb8", [ 1320] = "\x84\xbd", + [ 1323] = "\x84\xb3", [ 1324] = "\x84\xa9", [ 1327] = "\x84\xb9", + [ 1330] = "\x84\xbe", [ 1339] = "\x84\xb4", [ 1424] = "\x81\xa1", + [ 1425] = "\x81\xa0", [ 1442] = "\x81\xa3", [ 1443] = "\x81\xa2", + [ 1452] = "\x81\xa5", [ 1453] = "\x81\xa4", [ 1462] = "\x81\x9f", + [ 1463] = "\x81\x9e", [ 1467] = "\x81\x9b", [ 1470] = "\x81\x9d", + [ 1471] = "\x81\x9c", [ 1503] = "\x81\xfc", [ 1525] = "\x81\x9a", + [ 1526] = "\x81\x99", [ 1584] = "\x81\x8a", [ 1586] = "\x81\x89", + [ 1626] = "\x81\xf4", [ 1629] = "\x81\xf3", [ 1631] = "\x81\xf2", + [ 4080] = "\x81\x40", [ 4081] = "\x81\x41", [ 4082] = "\x81\x42", + [ 4083] = "\x81\x56", [ 4085] = "\x81\x58", [ 4086] = "\x81\x59", + [ 4087] = "\x81\x5a", [ 4088] = "\x81\x71", [ 4089] = "\x81\x72", + [ 4090] = "\x81\x73", [ 4091] = "\x81\x74", [ 4092] = "\x81\x75", + [ 4093] = "\x81\x76", [ 4094] = "\x81\x77", [ 4095] = "\x81\x78", + [ 4096] = "\x81\x79", [ 4097] = "\x81\x7a", [ 4098] = "\x81\xa7", + [ 4099] = "\x81\xac", [ 4100] = "\x81\x6b", [ 4101] = "\x81\x6c", + [ 4108] = "\x81\x60", [ 4109] = "\x87\x80", [ 4111] = "\x87\x81", + [ 4145] = "\x82\x9f", [ 4146] = "\x82\xa0", [ 4147] = "\x82\xa1", + [ 4148] = "\x82\xa2", [ 4149] = "\x82\xa3", [ 4150] = "\x82\xa4", + [ 4151] = "\x82\xa5", [ 4152] = "\x82\xa6", [ 4153] = "\x82\xa7", + [ 4154] = "\x82\xa8", [ 4155] = "\x82\xa9", [ 4156] = "\x82\xaa", + [ 4157] = "\x82\xab", [ 4158] = "\x82\xac", [ 4159] = "\x82\xad", + [ 4160] = "\x82\xae", [ 4161] = "\x82\xaf", [ 4162] = "\x82\xb0", + [ 4163] = "\x82\xb1", [ 4164] = "\x82\xb2", [ 4165] = "\x82\xb3", + [ 4166] = "\x82\xb4", [ 4167] = "\x82\xb5", [ 4168] = "\x82\xb6", + [ 4169] = "\x82\xb7", [ 4170] = "\x82\xb8", [ 4171] = "\x82\xb9", + [ 4172] = "\x82\xba", [ 4173] = "\x82\xbb", [ 4174] = "\x82\xbc", + [ 4175] = "\x82\xbd", [ 4176] = "\x82\xbe", [ 4177] = "\x82\xbf", + [ 4178] = "\x82\xc0", [ 4179] = "\x82\xc1", [ 4180] = "\x82\xc2", + [ 4181] = "\x82\xc3", [ 4182] = "\x82\xc4", [ 4183] = "\x82\xc5", + [ 4184] = "\x82\xc6", [ 4185] = "\x82\xc7", [ 4186] = "\x82\xc8", + [ 4187] = "\x82\xc9", [ 4188] = "\x82\xca", [ 4189] = "\x82\xcb", + [ 4190] = "\x82\xcc", [ 4191] = "\x82\xcd", [ 4192] = "\x82\xce", + [ 4193] = "\x82\xcf", [ 4194] = "\x82\xd0", [ 4195] = "\x82\xd1", + [ 4196] = "\x82\xd2", [ 4197] = "\x82\xd3", [ 4198] = "\x82\xd4", + [ 4199] = "\x82\xd5", [ 4200] = "\x82\xd6", [ 4201] = "\x82\xd7", + [ 4202] = "\x82\xd8", [ 4203] = "\x82\xd9", [ 4204] = "\x82\xda", + [ 4205] = "\x82\xdb", [ 4206] = "\x82\xdc", [ 4207] = "\x82\xdd", + [ 4208] = "\x82\xde", [ 4209] = "\x82\xdf", [ 4210] = "\x82\xe0", + [ 4211] = "\x82\xe1", [ 4212] = "\x82\xe2", [ 4213] = "\x82\xe3", + [ 4214] = "\x82\xe4", [ 4215] = "\x82\xe5", [ 4216] = "\x82\xe6", + [ 4217] = "\x82\xe7", [ 4218] = "\x82\xe8", [ 4219] = "\x82\xe9", + [ 4220] = "\x82\xea", [ 4221] = "\x82\xeb", [ 4222] = "\x82\xec", + [ 4223] = "\x82\xed", [ 4224] = "\x82\xee", [ 4225] = "\x82\xef", + [ 4226] = "\x82\xf0", [ 4227] = "\x82\xf1", [ 4235] = "\x81\x4a", + [ 4236] = "\x81\x4b", [ 4237] = "\x81\x54", [ 4238] = "\x81\x55", + [ 4241] = "\x83\x40", [ 4242] = "\x83\x41", [ 4243] = "\x83\x42", + [ 4244] = "\x83\x43", [ 4245] = "\x83\x44", [ 4246] = "\x83\x45", + [ 4247] = "\x83\x46", [ 4248] = "\x83\x47", [ 4249] = "\x83\x48", + [ 4250] = "\x83\x49", [ 4251] = "\x83\x4a", [ 4252] = "\x83\x4b", + [ 4253] = "\x83\x4c", [ 4254] = "\x83\x4d", [ 4255] = "\x83\x4e", + [ 4256] = "\x83\x4f", [ 4257] = "\x83\x50", [ 4258] = "\x83\x51", + [ 4259] = "\x83\x52", [ 4260] = "\x83\x53", [ 4261] = "\x83\x54", + [ 4262] = "\x83\x55", [ 4263] = "\x83\x56", [ 4264] = "\x83\x57", + [ 4265] = "\x83\x58", [ 4266] = "\x83\x59", [ 4267] = "\x83\x5a", + [ 4268] = "\x83\x5b", [ 4269] = "\x83\x5c", [ 4270] = "\x83\x5d", + [ 4271] = "\x83\x5e", [ 4272] = "\x83\x5f", [ 4273] = "\x83\x60", + [ 4274] = "\x83\x61", [ 4275] = "\x83\x62", [ 4276] = "\x83\x63", + [ 4277] = "\x83\x64", [ 4278] = "\x83\x65", [ 4279] = "\x83\x66", + [ 4280] = "\x83\x67", [ 4281] = "\x83\x68", [ 4282] = "\x83\x69", + [ 4283] = "\x83\x6a", [ 4284] = "\x83\x6b", [ 4285] = "\x83\x6c", + [ 4286] = "\x83\x6d", [ 4287] = "\x83\x6e", [ 4288] = "\x83\x6f", + [ 4289] = "\x83\x70", [ 4290] = "\x83\x71", [ 4291] = "\x83\x72", + [ 4292] = "\x83\x73", [ 4293] = "\x83\x74", [ 4294] = "\x83\x75", + [ 4295] = "\x83\x76", [ 4296] = "\x83\x77", [ 4297] = "\x83\x78", + [ 4298] = "\x83\x79", [ 4299] = "\x83\x7a", [ 4300] = "\x83\x7b", + [ 4301] = "\x83\x7c", [ 4302] = "\x83\x7d", [ 4303] = "\x83\x7e", + [ 4304] = "\x83\x80", [ 4305] = "\x83\x81", [ 4306] = "\x83\x82", + [ 4307] = "\x83\x83", [ 4308] = "\x83\x84", [ 4309] = "\x83\x85", + [ 4310] = "\x83\x86", [ 4311] = "\x83\x87", [ 4312] = "\x83\x88", + [ 4313] = "\x83\x89", [ 4314] = "\x83\x8a", [ 4315] = "\x83\x8b", + [ 4316] = "\x83\x8c", [ 4317] = "\x83\x8d", [ 4318] = "\x83\x8e", + [ 4319] = "\x83\x8f", [ 4320] = "\x83\x90", [ 4321] = "\x83\x91", + [ 4322] = "\x83\x92", [ 4323] = "\x83\x93", [ 4324] = "\x83\x94", + [ 4325] = "\x83\x95", [ 4326] = "\x83\x96", [ 4331] = "\x81\x45", + [ 4332] = "\x81\x5b", [ 4333] = "\x81\x52", [ 4334] = "\x81\x53", + [ 4641] = "\x87\x8a", [ 4642] = "\x87\x8b", [ 4649] = "\x87\x8c", + [ 4756] = "\x87\x85", [ 4757] = "\x87\x86", [ 4758] = "\x87\x87", + [ 4759] = "\x87\x88", [ 4760] = "\x87\x89", [ 4851] = "\x87\x65", + [ 4861] = "\x87\x69", [ 4868] = "\x87\x60", [ 4872] = "\x87\x63", + [ 4882] = "\x87\x61", [ 4883] = "\x87\x6b", [ 4886] = "\x87\x6a", + [ 4887] = "\x87\x64", [ 4891] = "\x87\x6c", [ 4902] = "\x87\x66", + [ 4907] = "\x87\x6e", [ 4921] = "\x87\x5f", [ 4922] = "\x87\x6d", + [ 4925] = "\x87\x62", [ 4929] = "\x87\x67", [ 4935] = "\x87\x68", + [ 4971] = "\x87\x7e", [ 4972] = "\x87\x8f", [ 4973] = "\x87\x8e", + [ 4974] = "\x87\x8d", [ 4990] = "\x87\x72", [ 4991] = "\x87\x73", + [ 5004] = "\x87\x6f", [ 5005] = "\x87\x70", [ 5006] = "\x87\x71", + [ 5009] = "\x87\x75", [ 5044] = "\x87\x74", [ 5053] = "\x87\x83", + [11760] = "\x88\xea", [11761] = "\x92\x9a", [11763] = "\x8e\xb5", + [11767] = "\x96\x9c", [11768] = "\x8f\xe4", [11769] = "\x8e\x4f", + [11770] = "\x8f\xe3", [11771] = "\x89\xba", [11773] = "\x95\x73", + [11774] = "\x97\x5e", [11776] = "\x98\xa0", [11777] = "\x89\x4e", + [11780] = "\x8a\x8e", [11781] = "\x98\xa1", [11782] = "\x90\xa2", + [11783] = "\x99\xc0", [11784] = "\x8b\x75", [11785] = "\x95\xb8", + [11790] = "\x8f\xe5", [11793] = "\x97\xbc", [11798] = "\x95\xc0", + [11800] = "\xfa\x68", [11802] = "\x98\xa2", [11805] = "\x92\x86", + [11809] = "\x98\xa3", [11810] = "\x8b\xf8", [11814] = "\x98\xa4", + [11816] = "\x8a\xdb", [11817] = "\x92\x4f", [11819] = "\x8e\xe5", + [11820] = "\x98\xa5", [11823] = "\x98\xa6", [11826] = "\x98\xa7", + [11827] = "\x94\x54", [11829] = "\x8b\x76", [11835] = "\x94\x56", + [11837] = "\x93\xe1", [11838] = "\x8c\xc1", [11839] = "\x96\x52", + [11845] = "\xe5\x68", [11846] = "\x98\xa8", [11847] = "\x8f\xe6", + [11848] = "\x98\xa9", [11849] = "\x89\xb3", [11853] = "\x8b\xe3", + [11854] = "\x8c\xee", [11855] = "\x96\xe7", [11858] = "\x9b\xa4", + [11873] = "\x97\x90", [11875] = "\x93\xfb", [11886] = "\x8a\xa3", + [11888] = "\x8b\x54", [11890] = "\x98\xaa", [11893] = "\x98\xab", + [11894] = "\x97\xb9", [11896] = "\x97\x5c", [11897] = "\x91\x88", + [11898] = "\x98\xad", [11899] = "\x8e\x96", [11900] = "\x93\xf1", + [11902] = "\x98\xb0", [11905] = "\x89\x5d", [11906] = "\x8c\xdd", + [11908] = "\x8c\xdc", [11909] = "\x88\xe4", [11912] = "\x98\x6a", + [11913] = "\x98\x69", [11915] = "\x8d\xb1", [11916] = "\x88\x9f", + [11918] = "\x98\xb1", [11919] = "\x98\xb2", [11920] = "\x98\xb3", + [11921] = "\x96\x53", [11922] = "\x98\xb4", [11924] = "\x8c\xf0", + [11925] = "\x88\xe5", [11926] = "\x96\x92", [11928] = "\x8b\x9c", + [11931] = "\x8b\x9d", [11932] = "\x8b\x9e", [11933] = "\x92\xe0", + [11934] = "\x97\xba", [11936] = "\x98\xb5", [11939] = "\x98\xb6", + [11942] = "\x98\xb7", [11946] = "\x90\x6c", [11952] = "\x8f\x59", + [11953] = "\x90\x6d", [11954] = "\x98\xbc", [11956] = "\x98\xba", + [11958] = "\x98\xbb", [11959] = "\x8b\x77", [11962] = "\x8d\xa1", + [11963] = "\x89\xee", [11965] = "\x98\xb9", [11966] = "\x98\xb8", + [11967] = "\x95\xa7", [11972] = "\x8e\x65", [11973] = "\x8e\x64", + [11974] = "\x91\xbc", [11975] = "\x98\xbd", [11976] = "\x95\x74", + [11977] = "\x90\xe5", [11981] = "\x81\x57", [11982] = "\x98\xbe", + [11983] = "\x98\xc0", [11985] = "\xfa\x69", [11987] = "\x91\xe3", + [11988] = "\x97\xdf", [11989] = "\x88\xc8", [11997] = "\x98\xbf", + [11998] = "\x89\xbc", [12000] = "\x8b\xc2", [12002] = "\x92\x87", + [12006] = "\x8c\x8f", [12007] = "\x98\xc1", [12011] = "\x94\x43", + [12012] = "\xfa\x6a", [12016] = "\xfa\x6b", [12017] = "\x8a\xe9", + [12019] = "\xfa\x6c", [12025] = "\x98\xc2", [12026] = "\x88\xc9", + [12029] = "\x8c\xde", [12030] = "\x8a\xea", [12031] = "\x95\x9a", + [12032] = "\x94\xb0", [12033] = "\x8b\x78", [12042] = "\x89\xef", + [12044] = "\x98\xe5", [12045] = "\x93\x60", [12063] = "\x94\x8c", + [12064] = "\x98\xc4", [12068] = "\x94\xba", [12070] = "\x97\xe0", + [12072] = "\x90\x4c", [12073] = "\xfa\x6d", [12074] = "\x8e\x66", + [12076] = "\x8e\x97", [12077] = "\x89\xbe", [12083] = "\x92\xcf", + [12086] = "\x92\x41", [12087] = "\x98\xc8", [12093] = "\x88\xca", + [12094] = "\x92\xe1", [12095] = "\x8f\x5a", [12096] = "\x8d\xb2", + [12097] = "\x97\x43", [12099] = "\x91\xcc", [12101] = "\x89\xbd", + [12102] = "\xfa\x6e", [12103] = "\x98\xc7", [12105] = "\x97\x5d", + [12106] = "\x98\xc3", [12107] = "\x98\xc5", [12108] = "\x8d\xec", + [12109] = "\x98\xc6", [12110] = "\x9b\x43", [12121] = "\x98\xce", + [12127] = "\x98\xd1", [12128] = "\x98\xcf", [12131] = "\x89\xc0", + [12133] = "\x95\xb9", [12134] = "\x98\xc9", [12139] = "\x98\xcd", + [12140] = "\x8c\xf1", [12143] = "\x8e\x67", [12147] = "\x8a\xa4", + [12150] = "\x98\xd2", [12152] = "\x98\xca", [12154] = "\xfa\x70", + [12155] = "\x97\xe1", [12157] = "\x8e\x98", [12159] = "\x98\xcb", + [12161] = "\x98\xd0", [12162] = "\xfa\x6f", [12164] = "\xfa\x72", + [12166] = "\x98\xd3", [12168] = "\x98\xcc", [12170] = "\xfa\x71", + [12171] = "\x8b\x9f", [12173] = "\x88\xcb", [12176] = "\x8b\xa0", + [12177] = "\x89\xbf", [12187] = "\x9b\x44", [12189] = "\x96\x99", + [12190] = "\x95\x8e", [12191] = "\x8c\xf2", [12197] = "\x90\x4e", + [12198] = "\x97\xb5", [12207] = "\x95\xd6", [12210] = "\x8c\x57", + [12211] = "\x91\xa3", [12212] = "\x89\xe2", [12217] = "\xfa\x61", + [12218] = "\x8f\x72", [12221] = "\xfa\x73", [12222] = "\x98\xd7", + [12224] = "\x98\xdc", [12225] = "\x98\xda", [12228] = "\x98\xd5", + [12231] = "\x91\xad", [12232] = "\x98\xd8", [12234] = "\x98\xdb", + [12235] = "\x98\xd9", [12237] = "\x95\xdb", [12239] = "\x98\xd6", + [12241] = "\x90\x4d", [12243] = "\x96\x93", [12244] = "\x98\xdd", + [12245] = "\x98\xde", [12254] = "\x8f\x43", [12255] = "\x98\xeb", + [12259] = "\x94\x6f", [12261] = "\x95\x55", [12262] = "\x98\xe6", + [12264] = "\x95\xee", [12266] = "\x89\xb4", [12270] = "\x98\xea", + [12271] = "\xfa\x76", [12277] = "\x98\xe4", [12278] = "\x98\xed", + [12281] = "\x91\x71", [12283] = "\x8c\xc2", [12285] = "\x94\x7b", + [12287] = "\xe0\xc5", [12289] = "\x98\xec", [12290] = "\x93\x7c", + [12292] = "\x98\xe1", [12294] = "\x8c\xf4", [12297] = "\x8c\xf3", + [12298] = "\x98\xdf", [12302] = "\xfa\x77", [12303] = "\x8e\xd8", + [12305] = "\x98\xe7", [12306] = "\xfa\x75", [12307] = "\x95\xed", + [12308] = "\x92\x6c", [12309] = "\x98\xe3", [12310] = "\x8c\x91", + [12312] = "\x98\xe0", [12313] = "\x98\xe8", [12314] = "\x98\xe2", + [12315] = "\x97\xcf", [12316] = "\x98\xe9", [12317] = "\x98\x60", + [12326] = "\x8b\xe4", [12329] = "\x8c\x90", [12336] = "\xfa\x74", + [12338] = "\xfa\x7a", [12339] = "\x98\xee", [12342] = "\xfa\x78", + [12343] = "\x98\xef", [12344] = "\x98\xf3", [12345] = "\x88\xcc", + [12351] = "\x95\xce", [12352] = "\x98\xf2", [12357] = "\x98\xf1", + [12358] = "\x98\xf5", [12362] = "\x98\xf4", [12364] = "\x92\xe2", + [12373] = "\x8c\x92", [12380] = "\x98\xf6", [12384] = "\xfa\x79", + [12386] = "\x8e\xc3", [12388] = "\x91\xa4", [12389] = "\x92\xe3", + [12390] = "\x8b\xf4", [12392] = "\x98\xf7", [12397] = "\x8b\x55", + [12400] = "\x98\xf8", [12405] = "\x98\xfa", [12413] = "\x96\x54", + [12417] = "\x8c\x86", [12420] = "\xfa\x7b", [12424] = "\x8e\x50", + [12425] = "\x94\xf5", [12426] = "\x98\xf9", [12444] = "\x8d\xc3", + [12445] = "\x97\x62", [12450] = "\x98\xfc", [12451] = "\x99\x42", + [12452] = "\x98\xfb", [12453] = "\x8d\xc2", [12455] = "\x8f\x9d", + [12462] = "\x8c\x58", [12466] = "\x99\x43", [12469] = "\x8b\xcd", + [12473] = "\x99\x40", [12474] = "\x99\x41", [12477] = "\x93\xad", + [12479] = "\x91\x9c", [12481] = "\x8b\xa1", [12485] = "\x96\x6c", + [12486] = "\x99\x44", [12488] = "\xfa\x7d", [12490] = "\x97\xbb", + [12494] = "\x99\x45", [12499] = "\x99\x48", [12501] = "\x99\x46", + [12503] = "\x91\x6d", [12509] = "\x99\x47", [12510] = "\x99\x49", + [12516] = "\xfa\x7c", [12517] = "\x99\x4b", [12521] = "\x99\x4a", + [12523] = "\x95\xc6", [12528] = "\x8b\x56", [12529] = "\x99\x4d", + [12530] = "\x99\x4e", [12532] = "\x89\xad", [12537] = "\x99\x4c", + [12546] = "\x8e\xf2", [12548] = "\x99\x51", [12549] = "\x99\x50", + [12550] = "\x99\x4f", [12552] = "\x98\xd4", [12554] = "\x99\x52", + [12559] = "\x8f\x9e", [12561] = "\x99\x53", [12570] = "\x97\x44", + [12578] = "\x96\xd7", [12583] = "\x99\x55", [12586] = "\x99\x54", + [12587] = "\x99\x57", [12588] = "\x99\x56", [12591] = "\x99\x58", + [12592] = "\x99\x59", [12593] = "\x88\xf2", [12595] = "\x8c\xb3", + [12596] = "\x8c\x5a", [12597] = "\x8f\x5b", [12598] = "\x92\x9b", + [12599] = "\x8b\xa2", [12600] = "\x90\xe6", [12601] = "\x8c\xf5", + [12602] = "\xfa\x7e", [12603] = "\x8d\x8e", [12604] = "\x99\x5b", + [12605] = "\x96\xc6", [12606] = "\x93\x65", [12608] = "\x8e\x99", + [12610] = "\x99\x5a", [12612] = "\x99\x5c", [12618] = "\x93\x7d", + [12620] = "\x8a\x95", [12626] = "\x99\x5d", [12628] = "\xfa\x80", + [12629] = "\x93\xfc", [12632] = "\x91\x53", [12633] = "\x99\x5f", + [12634] = "\x99\x60", [12635] = "\x94\xaa", [12636] = "\x8c\xf6", + [12637] = "\x98\x5a", [12638] = "\x99\x61", [12641] = "\x8b\xa4", + [12645] = "\x95\xba", [12646] = "\x91\xb4", [12647] = "\x8b\xef", + [12648] = "\x93\x54", [12652] = "\x8c\x93", [12656] = "\x99\x62", + [12658] = "\x99\x63", [12661] = "\x93\xe0", [12662] = "\x89\x7e", + [12665] = "\x99\x66", [12666] = "\x8d\xfb", [12668] = "\x99\x65", + [12669] = "\x8d\xc4", [12671] = "\x99\x67", [12672] = "\xe3\xec", + [12673] = "\x99\x68", [12674] = "\x96\x60", [12675] = "\x99\x69", + [12677] = "\x99\x6a", [12678] = "\x99\x6b", [12679] = "\x8f\xe7", + [12681] = "\x8e\xca", [12685] = "\xfa\x81", [12688] = "\x8a\xa5", + [12690] = "\x99\x6e", [12692] = "\x99\x6c", [12693] = "\x96\xbb", + [12694] = "\x99\x6d", [12696] = "\x95\x79", [12697] = "\x99\x6f", + [12698] = "\x99\x70", [12699] = "\x99\x71", [12700] = "\x93\x7e", + [12704] = "\x99\x75", [12705] = "\x99\x73", [12706] = "\x99\x74", + [12707] = "\x99\x72", [12708] = "\x8d\xe1", [12709] = "\x99\x76", + [12710] = "\x96\xe8", [12711] = "\x97\xe2", [12717] = "\x99\x77", + [12718] = "\xfa\x82", [12724] = "\x90\xa6", [12725] = "\x99\x78", + [12726] = "\x8f\x79", [12729] = "\x99\x79", [12731] = "\x92\x9c", + [12732] = "\x97\xbd", [12733] = "\x93\x80", [12742] = "\x99\xc3", + [12747] = "\x99\x7a", [12748] = "\xea\xa3", [12749] = "\x8b\xc3", + [12752] = "\x99\x7b", [12753] = "\x96\x7d", [12758] = "\x8f\x88", + [12759] = "\x91\xfa", [12761] = "\x99\x7d", [12762] = "\x93\xe2", + [12764] = "\xfa\x83", [12765] = "\x99\x7e", [12768] = "\x99\x80", + [12769] = "\x8a\x4d", [12773] = "\x99\x81", [12774] = "\x8b\xa5", + [12776] = "\x93\xca", [12777] = "\x89\x9a", [12778] = "\x8f\x6f", + [12781] = "\x94\x9f", [12782] = "\x99\x82", [12784] = "\x93\x81", + [12787] = "\x90\x6e", [12788] = "\x99\x83", [12790] = "\x95\xaa", + [12791] = "\x90\xd8", [12792] = "\x8a\xa0", [12794] = "\x8a\xa7", + [12795] = "\x99\x84", [12798] = "\x99\x86", [12801] = "\x8c\x59", + [12804] = "\x99\x85", [12805] = "\xfa\x84", [12807] = "\x97\xf1", + [12813] = "\x8f\x89", [12820] = "\x94\xbb", [12821] = "\x95\xca", + [12823] = "\x99\x87", [12825] = "\x97\x98", [12826] = "\x99\x88", + [12830] = "\x99\x89", [12832] = "\x93\x9e", [12835] = "\x99\x8a", + [12838] = "\x90\xa7", [12839] = "\x8d\xfc", [12840] = "\x8c\x94", + [12841] = "\x99\x8b", [12842] = "\x8e\x68", [12843] = "\x8d\x8f", + [12851] = "\x92\xe4", [12852] = "\x99\x8d", [12855] = "\x91\xa5", + [12858] = "\x8d\xed", [12859] = "\x99\x8e", [12860] = "\x99\x8f", + [12861] = "\x91\x4f", [12863] = "\x99\x8c", [12868] = "\x99\x91", + [12870] = "\x96\x55", [12875] = "\x8d\x84", [12878] = "\x99\x90", + [12883] = "\x8c\x95", [12884] = "\x8d\xdc", [12885] = "\x94\x8d", + [12889] = "\x99\x94", [12890] = "\x99\x92", [12895] = "\x95\x9b", + [12896] = "\x8f\xe8", [12897] = "\x99\x9b", [12898] = "\x8a\x84", + [12899] = "\x99\x95", [12900] = "\x99\x93", [12901] = "\x91\x6e", + [12909] = "\x99\x97", [12911] = "\x99\x96", [12915] = "\x8a\x63", + [12919] = "\x8c\x80", [12920] = "\x99\x9c", [12921] = "\x97\xab", + [12925] = "\x99\x98", [12929] = "\x99\x9d", [12930] = "\x99\x9a", + [12932] = "\x99\x99", [12939] = "\x97\xcd", [12940] = "\xfa\x85", + [12943] = "\x8c\xf7", [12944] = "\x89\xc1", [12947] = "\x97\xf2", + [12950] = "\xfa\x86", [12953] = "\x8f\x95", [12954] = "\x93\x77", + [12955] = "\x8d\x85", [12956] = "\x99\xa0", [12957] = "\x99\xa1", + [12959] = "\xfb\x77", [12961] = "\x97\xe3", [12964] = "\x98\x4a", + [12965] = "\x99\xa3", [12969] = "\x8c\xf8", [12972] = "\x99\xa2", + [12974] = "\x8a\x4e", [12976] = "\xfa\x87", [12977] = "\x99\xa4", + [12979] = "\x96\x75", [12981] = "\x92\xba", [12983] = "\x97\x45", + [12985] = "\x95\xd7", [12989] = "\x99\xa5", [12994] = "\xe8\xd3", + [12997] = "\x93\xae", [12999] = "\x99\xa6", [13000] = "\x8a\xa8", + [13001] = "\x96\xb1", [13003] = "\xfa\x88", [13005] = "\x8f\x9f", + [13006] = "\x99\xa7", [13007] = "\x95\xe5", [13008] = "\x99\xab", + [13010] = "\x90\xa8", [13011] = "\x99\xa8", [13012] = "\x8b\xce", + [13014] = "\x99\xa9", [13015] = "\x8a\xa9", [13026] = "\x8c\x4d", + [13027] = "\x99\xac", [13029] = "\x99\xad", [13032] = "\x99\xae", + [13033] = "\x99\xaf", [13034] = "\x8e\xd9", [13038] = "\x8c\xf9", + [13039] = "\x96\xdc", [13040] = "\xfa\x89", [13041] = "\x96\xe6", + [13042] = "\x93\xf5", [13045] = "\x95\xef", [13046] = "\x99\xb0", + [13047] = "\xfa\x8a", [13048] = "\x99\xb1", [13053] = "\x99\xb3", + [13055] = "\x99\xb5", [13056] = "\x99\xb4", [13061] = "\x99\xb6", + [13062] = "\x89\xbb", [13063] = "\x96\x6b", [13065] = "\x8d\xfa", + [13066] = "\x99\xb7", [13069] = "\x91\x78", [13072] = "\x8f\xa0", + [13073] = "\x8b\xa7", [13075] = "\x99\xb8", [13076] = "\xfa\x8b", + [13082] = "\x94\xd9", [13087] = "\x99\xb9", [13089] = "\x99\xba", + [13091] = "\x99\xbb", [13096] = "\x99\xbc", [13097] = "\x95\x43", + [13098] = "\x8b\xe6", [13099] = "\x88\xe3", [13103] = "\x93\xbd", + [13104] = "\x99\xbd", [13105] = "\x8f\x5c", [13107] = "\x90\xe7", + [13109] = "\x99\xbf", [13110] = "\x99\xbe", [13111] = "\x8f\xa1", + [13112] = "\x8c\xdf", [13113] = "\x99\xc1", [13114] = "\x94\xbc", + [13117] = "\x99\xc2", [13121] = "\x94\xda", [13122] = "\x91\xb2", + [13123] = "\x91\xec", [13124] = "\x8b\xa6", [13127] = "\x93\xec", + [13128] = "\x92\x50", [13130] = "\x94\x8e", [13132] = "\x96\x6d", + [13134] = "\x99\xc4", [13136] = "\x90\xe8", [13142] = "\x8c\x54", + [13145] = "\x99\xc5", [13150] = "\x99\xc6", [13151] = "\x89\x4b", + [13152] = "\x88\xf3", [13153] = "\x8a\xeb", [13154] = "\xfa\x8c", + [13155] = "\x91\xa6", [13156] = "\x8b\x70", [13157] = "\x97\x91", + [13159] = "\x99\xc9", [13160] = "\x89\xb5", [13163] = "\x99\xc8", + [13167] = "\x8b\xa8", [13170] = "\x99\xca", [13172] = "\x96\xef", + [13187] = "\xfa\x8d", [13190] = "\x99\xcb", [13192] = "\x97\xd0", + [13194] = "\x8c\xfa", [13199] = "\x8c\xb4", [13200] = "\x99\xcc", + [13205] = "\x99\xce", [13206] = "\x99\xcd", [13208] = "\x90\x7e", + [13209] = "\x89\x58", [13213] = "\x89\x7d", [13214] = "\x99\xcf", + [13216] = "\x99\xd0", [13218] = "\xfa\x8e", [13219] = "\x8c\xb5", + [13222] = "\x99\xd1", [13227] = "\x8b\x8e", [13234] = "\x8e\x51", + [13235] = "\x99\xd2", [13240] = "\x96\x94", [13241] = "\x8d\xb3", + [13242] = "\x8b\x79", [13243] = "\x97\x46", [13244] = "\x91\x6f", + [13245] = "\x94\xbd", [13246] = "\x8e\xfb", [13252] = "\x8f\x66", + [13254] = "\x8e\xe6", [13255] = "\x8e\xf3", [13257] = "\x8f\x96", + [13259] = "\x94\xbe", [13261] = "\xfa\x8f", [13263] = "\x99\xd5", + [13265] = "\x89\x62", [13266] = "\x91\x70", [13267] = "\x8c\xfb", + [13268] = "\x8c\xc3", [13269] = "\x8b\xe5", [13272] = "\x99\xd9", + [13273] = "\x92\x40", [13274] = "\x91\xfc", [13275] = "\x8b\xa9", + [13276] = "\x8f\xa2", [13277] = "\x99\xda", [13278] = "\x99\xd8", + [13279] = "\x89\xc2", [13280] = "\x91\xe4", [13281] = "\x8e\xb6", + [13282] = "\x8e\x6a", [13283] = "\x89\x45", [13286] = "\x8a\x90", + [13287] = "\x8d\x86", [13288] = "\x8e\x69", [13290] = "\x99\xdb", + [13297] = "\x99\xdc", [13299] = "\x8b\x68", [13300] = "\x8a\x65", + [13304] = "\x8d\x87", [13305] = "\x8b\x67", [13306] = "\x92\xdd", + [13307] = "\x89\x44", [13308] = "\x93\xaf", [13309] = "\x96\xbc", + [13310] = "\x8d\x40", [13311] = "\x97\x99", [13312] = "\x93\x66", + [13313] = "\x8c\xfc", [13323] = "\x8c\x4e", [13325] = "\x99\xe5", + [13327] = "\x8b\xe1", [13328] = "\x96\x69", [13334] = "\x94\xdb", + [13337] = "\x99\xe4", [13339] = "\x8a\xdc", [13340] = "\x99\xdf", + [13341] = "\x99\xe0", [13342] = "\x99\xe2", [13350] = "\x99\xe3", + [13352] = "\x8b\x7a", [13353] = "\x90\x81", [13355] = "\x95\xab", + [13356] = "\x99\xe1", [13357] = "\x99\xdd", [13358] = "\x8c\xe1", + [13360] = "\x99\xde", [13362] = "\x98\x43", [13366] = "\x95\xf0", + [13368] = "\x92\xe6", [13369] = "\x8c\xe0", [13370] = "\x8d\x90", + [13374] = "\x99\xe6", [13377] = "\x93\xdb", [13391] = "\x99\xea", + [13400] = "\x8e\xfc", [13402] = "\x8e\xf4", [13408] = "\x99\xed", + [13409] = "\x99\xeb", [13411] = "\x96\xa1", [13413] = "\x99\xe8", + [13414] = "\x99\xf1", [13415] = "\x99\xec", [13419] = "\x99\xef", + [13420] = "\x8c\xc4", [13421] = "\x96\xbd", [13424] = "\x99\xf0", + [13428] = "\x99\xf2", [13430] = "\x99\xf4", [13434] = "\xfa\x92", + [13435] = "\x8d\xee", [13436] = "\x98\x61", [13438] = "\x99\xe9", + [13439] = "\x99\xe7", [13440] = "\x99\xf3", [13442] = "\x99\xee", + [13452] = "\xfa\x91", [13458] = "\x99\xf6", [13460] = "\x9a\x42", + [13461] = "\x99\xf8", [13464] = "\x99\xfc", [13465] = "\xfa\x93", + [13467] = "\x9a\x40", [13468] = "\x99\xf9", [13471] = "\x9a\x5d", + [13474] = "\x8d\xe7", [13475] = "\x8a\x50", [13480] = "\x99\xf7", + [13484] = "\x9a\x44", [13485] = "\x88\xf4", [13486] = "\x9a\x43", + [13488] = "\x88\xa3", [13489] = "\x95\x69", [13490] = "\x9a\x41", + [13492] = "\x99\xfa", [13495] = "\x99\xf5", [13496] = "\x99\xfb", + [13497] = "\x8d\xc6", [13512] = "\x9a\x45", [13521] = "\x88\xf5", + [13522] = "\x9a\x4e", [13525] = "\x9a\x46", [13526] = "\x9a\x47", + [13528] = "\x8f\xa3", [13529] = "\x96\x89", [13533] = "\x9a\x4c", + [13534] = "\x9a\x4b", [13538] = "\x93\x4e", [13546] = "\x9a\x4d", + [13549] = "\x9a\x4a", [13551] = "\xfa\x94", [13556] = "\x89\x53", + [13558] = "\x8d\xb4", [13559] = "\x90\x4f", [13567] = "\x9a\x48", + [13568] = "\x93\x82", [13572] = "\x9a\x49", [13574] = "\x88\xa0", + [13598] = "\x9a\x53", [13599] = "\x97\x42", [13601] = "\x8f\xa5", + [13603] = "\x9a\x59", [13608] = "\x9a\x58", [13609] = "\x9a\x4f", + [13614] = "\x91\xc1", [13616] = "\x9a\x50", [13620] = "\x91\xed", + [13621] = "\x9a\x55", [13622] = "\x8f\xa4", [13628] = "\x9a\x52", + [13631] = "\x96\xe2", [13635] = "\x8c\x5b", [13638] = "\x9a\x56", + [13639] = "\x9a\x57", [13644] = "\x9a\x54", [13645] = "\x9a\x5a", + [13651] = "\x9a\x51", [13675] = "\x9a\x60", [13676] = "\x9a\x65", + [13678] = "\x9a\x61", [13680] = "\x9a\x5c", [13683] = "\x9a\x66", + [13684] = "\x91\x50", [13686] = "\xfa\x95", [13687] = "\x9a\x68", + [13689] = "\x8d\x41", [13690] = "\x9a\x5e", [13691] = "\x92\x9d", + [13704] = "\x9a\x62", [13705] = "\x9a\x5b", [13706] = "\x8a\xab", + [13708] = "\x8a\xec", [13709] = "\x8a\x85", [13710] = "\x9a\x63", + [13711] = "\x9a\x5f", [13719] = "\x8c\x96", [13720] = "\x9a\x69", + [13721] = "\x9a\x67", [13722] = "\x91\x72", [13723] = "\x8b\x69", + [13724] = "\x8b\xaa", [13726] = "\x9a\x64", [13728] = "\x8b\xf2", + [13734] = "\x89\x63", [13748] = "\x9a\x6d", [13749] = "\x9a\x6b", + [13751] = "\x9a\xa5", [13764] = "\x9a\x70", [13770] = "\x9a\x6a", + [13772] = "\x9a\x6e", [13775] = "\x9a\x6c", [13779] = "\x8e\x6b", + [13780] = "\x9a\x6f", [13799] = "\x9a\x72", [13801] = "\x9a\x77", + [13805] = "\x9a\x75", [13806] = "\x9a\x74", [13814] = "\x92\x51", + [13817] = "\x89\xc3", [13828] = "\x9a\x71", [13830] = "\x9a\x73", + [13831] = "\x8f\xa6", [13832] = "\x89\x52", [13835] = "\x9a\x76", + [13849] = "\x89\xdc", [13855] = "\x9a\x82", [13857] = "\x8f\xfa", + [13858] = "\x9a\x7d", [13860] = "\x9a\x7b", [13862] = "\x9a\x7c", + [13864] = "\x9a\x7e", [13874] = "\x89\x5c", [13884] = "\x91\x58", + [13886] = "\x9a\x78", [13888] = "\x9a\x79", [13899] = "\x8a\x9a", + [13908] = "\x9a\x81", [13912] = "\x8a\xed", [13914] = "\x9a\x84", + [13915] = "\x9a\x80", [13916] = "\x9a\x83", [13924] = "\x95\xac", + [13928] = "\x93\xd3", [13930] = "\x94\xb6", [13936] = "\x9a\x86", + [13942] = "\x9a\x85", [13943] = "\x8a\x64", [13946] = "\x9a\x87", + [13951] = "\x9a\x8a", [13956] = "\x9a\x89", [13968] = "\x9a\x88", + [13970] = "\x94\x58", [13973] = "\x9a\x8b", [13982] = "\x9a\x8c", + [13988] = "\x9a\x8e", [13990] = "\x9a\x8d", [13996] = "\x9a\x90", + [14000] = "\x9a\x93", [14001] = "\x9a\x91", [14002] = "\x9a\x8f", + [14003] = "\x9a\x92", [14008] = "\x9a\x94", [14014] = "\x9a\x95", + [14017] = "\x9a\x96", [14019] = "\x9a\x97", [14023] = "\x9a\x98", + [14024] = "\x99\x64", [14026] = "\x8e\xfa", [14027] = "\x8e\x6c", + [14030] = "\x89\xf1", [14032] = "\x88\xf6", [14035] = "\x92\x63", + [14046] = "\x9a\x99", [14048] = "\x8d\xa2", [14050] = "\x88\xcd", + [14051] = "\x90\x7d", [14057] = "\x9a\x9a", [14058] = "\x8c\xc5", + [14061] = "\x8d\x91", [14063] = "\x9a\x9c", [14064] = "\x9a\x9b", + [14067] = "\x95\xde", [14068] = "\x9a\x9d", [14072] = "\x9a\x9f", + [14073] = "\x9a\x9e", [14075] = "\x9a\xa0", [14077] = "\x9a\xa1", + [14079] = "\x8c\x97", [14082] = "\x89\x80", [14083] = "\x9a\xa2", + [14086] = "\x9a\xa4", [14088] = "\x9a\xa3", [14092] = "\x9a\xa6", + [14095] = "\x93\x79", [14102] = "\x9a\xa7", [14103] = "\x88\xb3", + [14104] = "\x8d\xdd", [14109] = "\x8c\x5c", [14112] = "\x92\x6e", + [14119] = "\x9a\xa8", [14120] = "\x9a\xa9", [14123] = "\x9a\xab", + [14128] = "\x9a\xac", [14130] = "\x8d\xe2", [14135] = "\x8b\xcf", + [14138] = "\x96\x56", [14142] = "\x9a\xaa", [14143] = "\x9a\xad", + [14144] = "\x8d\xbf", [14145] = "\x8d\x42", [14153] = "\xfa\x96", + [14161] = "\x9a\xb1", [14164] = "\x8d\xa3", [14165] = "\xfa\x97", + [14166] = "\x92\x52", [14169] = "\x9a\xae", [14170] = "\x92\xd8", + [14191] = "\x9a\xb2", [14194] = "\x90\x82", [14200] = "\x9a\xb0", + [14201] = "\x9a\xb3", [14203] = "\x8c\x5e", [14211] = "\x9a\xb4", + [14224] = "\x9a\xb5", [14226] = "\x8d\x43", [14227] = "\x8a\x5f", + [14228] = "\x9a\xb7", [14234] = "\x9a\xb8", [14236] = "\xfa\x98", + [14240] = "\x9a\xb9", [14243] = "\x9a\xb6", [14256] = "\x9a\xaf", + [14259] = "\x9a\xba", [14262] = "\x9a\xbb", [14263] = "\xfa\x9a", + [14264] = "\xfa\x99", [14267] = "\x96\x84", [14270] = "\x8f\xe9", + [14274] = "\x9a\xbd", [14275] = "\x9a\xbe", [14276] = "\x9a\xbc", + [14278] = "\x9a\xc0", [14284] = "\x94\x57", [14287] = "\x88\xe6", + [14288] = "\x95\x75", [14291] = "\x9a\xc1", [14308] = "\x8f\xfb", + [14311] = "\x8e\xb7", [14313] = "\x94\x7c", [14314] = "\x8a\xee", + [14316] = "\x8d\xe9", [14320] = "\x96\x78", [14322] = "\x93\xb0", + [14325] = "\x8c\x98", [14326] = "\x91\xcd", [14330] = "\x9a\xbf", + [14331] = "\x9a\xc2", [14341] = "\x91\xc2", [14345] = "\x9a\xc3", + [14349] = "\x9a\xc4", [14353] = "\x9a\xc6", [14356] = "\x92\xe7", + [14362] = "\x8a\xac", [14367] = "\xea\x9f", [14368] = "\x89\x81", + [14369] = "\x95\xf1", [14372] = "\x8f\xea", [14373] = "\x93\x67", + [14378] = "\x8d\xe4", [14381] = "\x9a\xcc", [14384] = "\x95\xbb", + [14385] = "\x97\xdb", [14394] = "\x89\xf2", [14395] = "\x9a\xc8", + [14401] = "\x91\x59", [14402] = "\x9a\xcb", [14404] = "\x93\x83", + [14407] = "\x93\x68", [14408] = "\x93\x84", [14409] = "\x94\xb7", + [14410] = "\x92\xcb", [14414] = "\x8d\xc7", [14418] = "\x9a\xc7", + [14425] = "\x89\x96", [14427] = "\x93\x55", [14432] = "\x9a\xc9", + [14434] = "\x9a\xc5", [14437] = "\x90\x6f", [14441] = "\x9a\xcd", + [14446] = "\x8f\x6d", [14451] = "\x8b\xab", [14453] = "\x9a\xce", + [14467] = "\x95\xe6", [14471] = "\x91\x9d", [14476] = "\x92\xc4", + [14478] = "\xfa\x9d", [14479] = "\x9a\xd0", [14488] = "\x96\x6e", + [14491] = "\x9a\xd1", [14494] = "\x9a\xd6", [14498] = "\xfa\x9e", + [14499] = "\x95\xad", [14504] = "\x9a\xd5", [14505] = "\x9a\xcf", + [14506] = "\x9a\xd2", [14507] = "\x9a\xd4", [14510] = "\x8d\xa4", + [14513] = "\x95\xc7", [14517] = "\x9a\xd7", [14519] = "\x92\x64", + [14522] = "\x89\xf3", [14524] = "\x8f\xeb", [14529] = "\x9a\xd9", + [14531] = "\x9a\xd8", [14533] = "\x8d\x88", [14535] = "\x9a\xda", + [14536] = "\x9a\xdc", [14537] = "\x9a\xdb", [14540] = "\x9a\xde", + [14542] = "\x9a\xd3", [14543] = "\x9a\xe0", [14548] = "\x9a\xdf", + [14549] = "\x9a\xdd", [14555] = "\x8e\x6d", [14556] = "\x90\x70", + [14558] = "\x91\x73", [14559] = "\x9a\xe1", [14560] = "\x90\xba", + [14561] = "\x88\xeb", [14562] = "\x94\x84", [14567] = "\x92\xd9", + [14569] = "\x9a\xe3", [14570] = "\x9a\xe2", [14571] = "\x9a\xe4", + [14572] = "\x9a\xe5", [14573] = "\x9a\xe6", [14578] = "\x9a\xe7", + [14585] = "\x95\xcf", [14586] = "\x9a\xe8", [14587] = "\xfa\x9f", + [14591] = "\x89\xc4", [14592] = "\x9a\xe9", [14597] = "\x97\x5b", + [14598] = "\x8a\x4f", [14600] = "\x99\xc7", [14601] = "\x8f\x67", + [14602] = "\x91\xbd", [14603] = "\x9a\xea", [14604] = "\x96\xe9", + [14610] = "\x96\xb2", [14613] = "\x9a\xec", [14615] = "\x91\xe5", + [14617] = "\x93\x56", [14618] = "\x91\xbe", [14619] = "\x95\x76", + [14620] = "\x9a\xed", [14621] = "\x9a\xee", [14622] = "\x89\x9b", + [14625] = "\x8e\xb8", [14626] = "\x9a\xef", [14631] = "\x88\xce", + [14632] = "\x9a\xf0", [14638] = "\x9a\xf1", [14644] = "\x89\x82", + [14647] = "\x8a\xef", [14648] = "\x93\xde", [14649] = "\x95\xf2", + [14654] = "\x9a\xf5", [14655] = "\x91\x74", [14656] = "\x9a\xf4", + [14657] = "\x8c\x5f", [14659] = "\xfa\xa0", [14660] = "\x96\x7a", + [14661] = "\x9a\xf3", [14663] = "\x93\x85", [14664] = "\x9a\xf7", + [14666] = "\x9a\xf6", [14667] = "\xfa\xa1", [14669] = "\xfa\xa2", + [14672] = "\x9a\xf9", [14674] = "\x9a\xf8", [14675] = "\xfa\xa3", + [14677] = "\x89\x9c", [14679] = "\x9a\xfa", [14680] = "\x8f\xa7", + [14681] = "\x9a\xfc", [14682] = "\x92\x44", [14684] = "\x9a\xfb", + [14686] = "\x95\xb1", [14691] = "\x8f\x97", [14692] = "\x93\x7a", + [14696] = "\x9b\x40", [14701] = "\x8d\x44", [14705] = "\x9b\x41", + [14706] = "\x94\x40", [14707] = "\x94\xdc", [14708] = "\x96\xcf", + [14714] = "\x94\x44", [14717] = "\x9b\x4a", [14723] = "\x8b\x57", + [14726] = "\x97\x64", [14729] = "\x96\xad", [14731] = "\x9b\xaa", + [14733] = "\x9b\x42", [14739] = "\x9b\x45", [14740] = "\xfa\xa4", + [14741] = "\x91\xc3", [14744] = "\x96\x57", [14748] = "\x93\x69", + [14754] = "\x9b\x46", [14761] = "\x96\x85", [14762] = "\xfa\xa5", + [14763] = "\x8d\xc8", [14766] = "\x8f\xa8", [14774] = "\x9b\x47", + [14777] = "\x8e\x6f", [14779] = "\x8e\x6e", [14784] = "\x88\xb7", + [14785] = "\x8c\xc6", [14787] = "\x90\xa9", [14788] = "\x88\xcf", + [14793] = "\x9b\x4b", [14794] = "\x9b\x4c", [14796] = "\x9b\x49", + [14805] = "\x89\x57", [14806] = "\x8a\xad", [14808] = "\x9b\x48", + [14810] = "\x96\xc3", [14811] = "\x95\x50", [14822] = "\x88\xa6", + [14827] = "\x88\xf7", [14831] = "\x8e\x70", [14833] = "\x88\xd0", + [14835] = "\x88\xa1", [14841] = "\x9b\x51", [14849] = "\x9b\x4f", + [14856] = "\x96\xba", [14858] = "\x9b\x52", [14860] = "\x9b\x50", + [14863] = "\x9b\x4e", [14864] = "\x90\x50", [14869] = "\x9b\x4d", + [14873] = "\x95\xd8", [14879] = "\x8c\xe2", [14885] = "\x9b\x56", + [14886] = "\x9b\x57", [14892] = "\x8f\xa9", [14896] = "\x9b\x53", + [14897] = "\x98\x4b", [14902] = "\x94\x6b", [14905] = "\x9b\x55", + [14922] = "\x8d\xa5", [14930] = "\x9b\x58", [14934] = "\x95\x77", + [14938] = "\x9b\x59", [14940] = "\x9b\x54", [14959] = "\x96\xb9", + [14978] = "\x94\x7d", [14986] = "\x9b\x5a", [14987] = "\x95\x51", + [15020] = "\x9b\x5b", [15021] = "\x9b\x5f", [15022] = "\x9b\x5c", + [15025] = "\x89\xc5", [15026] = "\x9b\x5e", [15033] = "\x8e\xb9", + [15035] = "\x9b\x5d", [15036] = "\x8c\x99", [15040] = "\x9b\x6b", + [15046] = "\x9b\x64", [15047] = "\x9b\x61", [15057] = "\x92\x84", + [15059] = "\x9b\x60", [15062] = "\x9b\x62", [15065] = "\x9b\x63", + [15082] = "\x9b\x65", [15083] = "\x9b\x66", [15097] = "\x8a\xf0", + [15099] = "\x9b\x68", [15100] = "\x9b\x67", [15110] = "\x9b\x69", + [15122] = "\x8f\xec", [15130] = "\x9b\x6c", [15132] = "\x92\xda", + [15136] = "\x89\x64", [15138] = "\x9b\x6a", [15142] = "\x9b\x6d", + [15150] = "\x9b\x6e", [15152] = "\x9b\x71", [15155] = "\x9b\x6f", + [15157] = "\x9b\x70", [15168] = "\x8e\x71", [15169] = "\x9b\x72", + [15172] = "\x8d\x45", [15173] = "\x9b\x73", [15174] = "\xfa\xa6", + [15175] = "\x8e\x9a", [15176] = "\x91\xb6", [15178] = "\x9b\x74", + [15179] = "\x9b\x75", [15180] = "\x8e\x79", [15181] = "\x8d\x46", + [15183] = "\x96\xd0", [15187] = "\x8b\x47", [15188] = "\x8c\xc7", + [15189] = "\x9b\x76", [15190] = "\x8a\x77", [15193] = "\x9b\x77", + [15195] = "\x91\xb7", [15200] = "\x9b\x78", [15201] = "\x9b\xa1", + [15203] = "\x9b\x79", [15205] = "\x9b\x7a", [15208] = "\x9b\x7b", + [15210] = "\x9b\x7d", [15216] = "\x9b\x7e", [15219] = "\x9b\x80", + [15221] = "\x91\xee", [15223] = "\x89\x46", [15224] = "\x8e\xe7", + [15225] = "\x88\xc0", [15227] = "\x91\x76", [15228] = "\x8a\xae", + [15229] = "\x8e\xb3", [15231] = "\x8d\x47", [15237] = "\x93\x86", + [15239] = "\x8f\x40", [15240] = "\x8a\xaf", [15241] = "\x92\x88", + [15242] = "\x92\xe8", [15243] = "\x88\xb6", [15244] = "\x8b\x58", + [15245] = "\x95\xf3", [15247] = "\x8e\xc0", [15250] = "\x8b\x71", + [15251] = "\x90\xe9", [15252] = "\x8e\xba", [15253] = "\x97\x47", + [15254] = "\x9b\x81", [15262] = "\x8b\x7b", [15264] = "\x8d\xc9", + [15267] = "\x8a\x51", [15268] = "\x89\x83", [15269] = "\x8f\xaa", + [15270] = "\x89\xc6", [15272] = "\x9b\x82", [15273] = "\x97\x65", + [15279] = "\x8f\x68", [15280] = "\xfa\xa7", [15282] = "\x8e\xe2", + [15283] = "\x9b\x83", [15284] = "\x8a\xf1", [15285] = "\x93\xd0", + [15286] = "\x96\xa7", [15287] = "\x9b\x84", [15289] = "\x9b\x85", + [15292] = "\x95\x78", [15296] = "\x9b\x87", [15298] = "\x8a\xa6", + [15299] = "\x8b\xf5", [15300] = "\x9b\x86", [15304] = "\xfa\xa9", + [15307] = "\x8a\xb0", [15309] = "\x90\x51", [15310] = "\x9b\x8b", + [15311] = "\x8e\x40", [15313] = "\x89\xc7", [15314] = "\x9b\x8a", + [15316] = "\x9b\x88", [15317] = "\x9b\x8c", [15318] = "\x9b\x89", + [15319] = "\x94\x4a", [15320] = "\x9e\xcb", [15321] = "\x90\x52", + [15323] = "\x9b\x8d", [15324] = "\xfa\xaa", [15326] = "\x97\xbe", + [15328] = "\x9b\x8e", [15331] = "\x9b\x90", [15333] = "\x92\x9e", + [15334] = "\x9b\x8f", [15336] = "\x90\xa1", [15338] = "\x8e\x9b", + [15342] = "\x91\xce", [15343] = "\x8e\xf5", [15345] = "\x95\x95", + [15346] = "\x90\xea", [15348] = "\x8e\xcb", [15349] = "\x9b\x91", + [15350] = "\x8f\xab", [15351] = "\x9b\x92", [15352] = "\x9b\x93", + [15353] = "\x88\xd1", [15354] = "\x91\xb8", [15355] = "\x90\x71", + [15357] = "\x9b\x94", [15358] = "\x93\xb1", [15359] = "\x8f\xac", + [15361] = "\x8f\xad", [15363] = "\x9b\x95", [15366] = "\x90\xeb", + [15370] = "\x8f\xae", [15374] = "\xfa\xab", [15376] = "\x9b\x96", + [15378] = "\x9b\x97", [15380] = "\x96\xde", [15384] = "\x9b\x98", + [15389] = "\x8b\xc4", [15393] = "\x8f\x41", [15400] = "\x9b\x99", + [15401] = "\x9b\x9a", [15402] = "\x8e\xda", [15403] = "\x90\x4b", + [15404] = "\x93\xf2", [15405] = "\x90\x73", [15406] = "\x94\xf6", + [15407] = "\x94\x41", [15408] = "\x8b\xc7", [15409] = "\x9b\x9b", + [15413] = "\x8b\x8f", [15414] = "\x9b\x9c", [15416] = "\x8b\xfc", + [15418] = "\x93\xcd", [15419] = "\x89\xae", [15421] = "\x8e\x72", + [15422] = "\x9b\x9d", [15423] = "\x9b\xa0", [15424] = "\x9b\x9f", + [15425] = "\x8b\xfb", [15427] = "\x9b\x9e", [15429] = "\x93\x57", + [15438] = "\x91\xae", [15440] = "\x93\x6a", [15441] = "\x8e\xc6", + [15444] = "\x91\x77", [15445] = "\x97\x9a", [15452] = "\x9b\xa2", + [15454] = "\x9b\xa3", [15455] = "\x93\xd4", [15457] = "\x8e\x52", + [15462] = "\x9b\xa5", [15465] = "\x9b\xa6", [15484] = "\x9b\xa7", + [15488] = "\x8a\xf2", [15489] = "\x9b\xa8", [15492] = "\x9b\xa9", + [15505] = "\x89\xaa", [15510] = "\xfa\xac", [15512] = "\x91\x5a", + [15513] = "\x8a\xe2", [15515] = "\x9b\xab", [15516] = "\x96\xa6", + [15521] = "\x91\xd0", [15523] = "\x8a\x78", [15526] = "\x9b\xad", + [15527] = "\x9b\xaf", [15528] = "\x8a\xdd", [15530] = "\xfa\xad", + [15531] = "\x9b\xac", [15532] = "\x9b\xae", [15534] = "\x9b\xb1", + [15541] = "\x9b\xb0", [15543] = "\x9b\xb2", [15561] = "\x9b\xb3", + [15568] = "\x93\xbb", [15569] = "\x8b\xac", [15576] = "\x89\xe3", + [15577] = "\x9b\xb4", [15578] = "\x9b\xb9", [15581] = "\x9b\xb7", + [15583] = "\x95\xf5", [15584] = "\x95\xf4", [15589] = "\xfa\xae", + [15590] = "\x93\x87", [15594] = "\x9b\xb6", [15595] = "\x8f\x73", + [15597] = "\x9b\xb5", [15607] = "\x90\x92", [15611] = "\x9b\xba", + [15614] = "\x8d\xe8", [15617] = "\x9b\xc0", [15620] = "\x9b\xc1", + [15621] = "\x9b\xbb", [15622] = "\x8a\x52", [15623] = "\x9b\xbc", + [15624] = "\x9b\xc5", [15625] = "\x9b\xc4", [15626] = "\x9b\xc3", + [15627] = "\x9b\xbf", [15631] = "\x9b\xbe", [15634] = "\x9b\xc2", + [15639] = "\xfa\xaf", [15641] = "\x95\xf6", [15666] = "\xfa\xb2", + [15675] = "\x9b\xc9", [15676] = "\x9b\xc6", [15678] = "\x9b\xc8", + [15680] = "\x97\x92", [15682] = "\x9b\xc7", [15683] = "\xfa\xb0", + [15692] = "\x9b\xbd", [15705] = "\x90\x93", [15708] = "\x9b\xca", + [15709] = "\xfa\xb3", [15711] = "\x8d\xb5", [15715] = "\x9b\xcb", + [15718] = "\x9b\xcc", [15730] = "\x9b\xcf", [15732] = "\x9b\xce", + [15735] = "\x9b\xcd", [15739] = "\x93\x88", [15740] = "\x9b\xb8", + [15744] = "\x9b\xd5", [15757] = "\x9b\xd1", [15762] = "\x9b\xd0", + [15772] = "\x9b\xd2", [15774] = "\x9b\xd3", [15783] = "\x9b\xd6", + [15784] = "\xfa\xb4", [15785] = "\xfa\xb5", [15786] = "\x97\xe4", + [15788] = "\x9b\xd7", [15789] = "\x9b\xd4", [15801] = "\x9b\xd8", + [15804] = "\x8a\xde", [15805] = "\x9b\xd9", [15808] = "\xfa\xb6", + [15810] = "\x9b\xdb", [15811] = "\x9b\xda", [15814] = "\x9b\xdc", + [15819] = "\x9b\xdd", [15821] = "\x90\xec", [15822] = "\x8f\x42", + [15825] = "\x8f\x84", [15827] = "\x91\x83", [15829] = "\x8d\x48", + [15830] = "\x8d\xb6", [15831] = "\x8d\x49", [15832] = "\x8b\x90", + [15835] = "\x9b\xde", [15838] = "\x8d\xb7", [15841] = "\x8c\xc8", + [15842] = "\x9b\xdf", [15843] = "\x96\xa4", [15844] = "\x94\x62", + [15845] = "\x9b\xe0", [15847] = "\x8d\x4a", [15851] = "\x8a\xaa", + [15853] = "\x92\x46", [15854] = "\x8b\xd0", [15858] = "\x8e\x73", + [15859] = "\x95\x7a", [15862] = "\x94\xbf", [15867] = "\x9b\xe1", + [15868] = "\x8a\xf3", [15873] = "\x9b\xe4", [15878] = "\x92\x9f", + [15881] = "\x9b\xe3", [15882] = "\x9b\xe2", [15883] = "\x9b\xe5", + [15885] = "\x92\xe9", [15893] = "\x90\x83", [15899] = "\x8e\x74", + [15901] = "\x90\xc8", [15903] = "\x91\xd1", [15904] = "\x8b\x41", + [15907] = "\x92\xa0", [15910] = "\x9b\xe6", [15911] = "\x9b\xe7", + [15912] = "\x8f\xed", [15917] = "\x96\x58", [15920] = "\x9b\xea", + [15923] = "\x9b\xe9", [15924] = "\x9b\xe8", [15925] = "\x95\x9d", + [15927] = "\x9b\xf1", [15932] = "\x96\x79", [15934] = "\x9b\xeb", + [15940] = "\x9b\xed", [15941] = "\x96\x8b", [15943] = "\x9b\xec", + [15951] = "\x9b\xee", [15953] = "\x94\xa6", [15954] = "\x9b\xef", + [15955] = "\x95\xbc", [15956] = "\x9b\xf0", [15970] = "\x8a\xb1", + [15971] = "\x95\xbd", [15972] = "\x94\x4e", [15973] = "\x9b\xf2", + [15974] = "\x9b\xf3", [15976] = "\x8d\x4b", [15977] = "\x8a\xb2", + [15978] = "\x9b\xf4", [15979] = "\x8c\xb6", [15980] = "\x97\x63", + [15981] = "\x97\x48", [15982] = "\x8a\xf4", [15983] = "\x9b\xf6", + [15985] = "\x92\xa1", [15987] = "\x8d\x4c", [15988] = "\x8f\xaf", + [15991] = "\x94\xdd", [15994] = "\x8f\xb0", [15999] = "\x8f\x98", + [16005] = "\x92\xea", [16006] = "\x95\xf7", [16007] = "\x93\x58", + [16010] = "\x8d\x4d", [16012] = "\x95\x7b", [16016] = "\x9b\xf7", + [16022] = "\x93\x78", [16023] = "\x8d\xc0", [16027] = "\x8c\xc9", + [16029] = "\x92\xeb", [16037] = "\x88\xc1", [16038] = "\x8f\x8e", + [16039] = "\x8d\x4e", [16040] = "\x97\x66", [16049] = "\x9b\xf8", + [16050] = "\x9b\xf9", [16051] = "\x94\x70", [16056] = "\x9b\xfa", + [16057] = "\x97\xf5", [16058] = "\x98\x4c", [16063] = "\x9b\xfc", + [16064] = "\x9b\xfb", [16067] = "\x8a\x66", [16070] = "\x9c\x40", + [16074] = "\x9c\x43", [16075] = "\x9c\x44", [16077] = "\x9c\x42", + [16079] = "\x95\x5f", [16080] = "\x8f\xb1", [16081] = "\x9c\x46", + [16082] = "\x9c\x45", [16083] = "\x9c\x41", [16088] = "\x9c\x47", + [16089] = "\x9c\x48", [16092] = "\x9c\x49", [16096] = "\x9c\x4c", + [16097] = "\x9c\x4a", [16099] = "\x9c\x4b", [16100] = "\x9c\x4d", + [16102] = "\x89\x84", [16103] = "\x92\xec", [16104] = "\x9c\x4e", + [16106] = "\x8c\x9a", [16107] = "\x89\xf4", [16108] = "\x94\x55", + [16110] = "\x9c\x4f", [16111] = "\x93\xf9", [16113] = "\x95\xd9", + [16115] = "\x9c\x50", [16116] = "\x98\x4d", [16121] = "\x9c\x51", + [16122] = "\x95\xbe", [16123] = "\x9c\x54", [16124] = "\x98\x9f", + [16125] = "\x98\xaf", [16127] = "\x8e\xae", [16128] = "\x93\xf3", + [16129] = "\x9c\x55", [16131] = "\x8b\x7c", [16132] = "\x92\xa2", + [16133] = "\x88\xf8", [16134] = "\x9c\x56", [16135] = "\x95\xa4", + [16136] = "\x8d\x4f", [16139] = "\x92\x6f", [16143] = "\x92\xed", + [16145] = "\xfa\xb7", [16149] = "\x96\xed", [16150] = "\x8c\xb7", + [16151] = "\x8c\xca", [16153] = "\x9c\x57", [16157] = "\x9c\x58", + [16159] = "\x9c\x5e", [16161] = "\x8e\xe3", [16164] = "\xfa\xb8", + [16165] = "\x92\xa3", [16167] = "\x8b\xad", [16168] = "\x9c\x59", + [16172] = "\x95\x4a", [16174] = "\x92\x65", [16177] = "\x9c\x5a", + [16181] = "\xfa\x67", [16184] = "\x9c\x5b", [16186] = "\x8b\xae", + [16188] = "\x9c\x5c", [16190] = "\x9c\x5d", [16193] = "\x9c\x5f", + [16195] = "\x93\x96", [16198] = "\x9c\x60", [16199] = "\x9c\x61", + [16201] = "\x9c\x62", [16204] = "\x9c\x53", [16205] = "\x9c\x52", + [16209] = "\x9c\x63", [16210] = "\x8c\x60", [16214] = "\x95\x46", + [16215] = "\xfa\xb9", [16217] = "\x8d\xca", [16218] = "\x95\x56", + [16219] = "\x92\xa4", [16220] = "\x95\x6a", [16221] = "\x9c\x64", + [16224] = "\x8f\xb2", [16225] = "\x89\x65", [16227] = "\x9c\x65", + [16231] = "\x9c\x66", [16233] = "\x96\xf0", [16236] = "\x94\xde", + [16239] = "\x9c\x69", [16240] = "\x89\x9d", [16241] = "\x90\xaa", + [16242] = "\x9c\x68", [16243] = "\x9c\x67", [16244] = "\x8c\x61", + [16245] = "\x91\xd2", [16247] = "\x9c\x6d", [16248] = "\x9c\x6b", + [16250] = "\x9c\x6a", [16251] = "\x97\xa5", [16252] = "\x8c\xe3", + [16256] = "\x8f\x99", [16257] = "\x9c\x6c", [16258] = "\x93\x6b", + [16259] = "\x8f\x5d", [16263] = "\x93\xbe", [16264] = "\x9c\x70", + [16265] = "\x9c\x6f", [16270] = "\x9c\x6e", [16272] = "\x9c\x71", + [16273] = "\x8c\xe4", [16280] = "\x9c\x72", [16281] = "\x95\x9c", + [16282] = "\x8f\x7a", [16285] = "\x9c\x73", [16286] = "\x94\xf7", + [16291] = "\x93\xbf", [16292] = "\x92\xa5", [16295] = "\xfa\xba", + [16297] = "\x93\x4f", [16300] = "\x9c\x74", [16301] = "\x8b\x4a", + [16307] = "\x90\x53", [16309] = "\x95\x4b", [16316] = "\x8a\xf5", + [16317] = "\x94\x45", [16326] = "\x9c\x75", [16327] = "\x8e\x75", + [16328] = "\x96\x59", [16329] = "\x96\x5a", [16332] = "\x89\x9e", + [16333] = "\x9c\x7a", [16334] = "\xfa\xbb", [16336] = "\x92\x89", + [16340] = "\x9c\x77", [16347] = "\x89\xf5", [16352] = "\x9c\xab", + [16353] = "\x9c\x79", [16357] = "\x94\x4f", [16360] = "\x9c\x78", + [16363] = "\x9c\x76", [16365] = "\x8d\x9a", [16367] = "\x9c\x7c", + [16382] = "\x9c\x83", [16383] = "\x9c\x89", [16384] = "\x9c\x81", + [16386] = "\x93\x7b", [16389] = "\x9c\x86", [16390] = "\x95\x7c", + [16393] = "\x9c\x80", [16395] = "\x9c\x85", [16396] = "\x97\xe5", + [16397] = "\x8e\x76", [16400] = "\x91\xd3", [16401] = "\x9c\x7d", + [16405] = "\x8b\x7d", [16406] = "\x9c\x88", [16407] = "\x90\xab", + [16408] = "\x89\x85", [16409] = "\x9c\x82", [16410] = "\x89\xf6", + [16411] = "\x9c\x87", [16415] = "\x8b\xaf", [16417] = "\x9c\x84", + [16426] = "\x9c\x8a", [16433] = "\x9c\x8c", [16434] = "\x9c\x96", + [16435] = "\x9c\x94", [16438] = "\x9c\x91", [16442] = "\x9c\x90", + [16443] = "\x97\xf6", [16445] = "\x9c\x92", [16448] = "\x8b\xb0", + [16450] = "\x8d\x50", [16453] = "\x8f\x9a", [16457] = "\x9c\x99", + [16458] = "\x9c\x8b", [16461] = "\xfa\xbc", [16463] = "\x9c\x8f", + [16464] = "\x9c\x7e", [16466] = "\x89\xf8", [16467] = "\x9c\x93", + [16468] = "\x9c\x95", [16469] = "\x92\x70", [16472] = "\x8d\xa6", + [16473] = "\x89\xb6", [16474] = "\x9c\x8d", [16475] = "\x9c\x98", + [16476] = "\x9c\x97", [16477] = "\x8b\xb1", [16479] = "\x91\xa7", + [16480] = "\x8a\x86", [16485] = "\x8c\x62", [16487] = "\x9c\x8e", + [16497] = "\x9c\x9a", [16499] = "\x9c\x9d", [16500] = "\x9c\x9f", + [16501] = "\xfa\xbd", [16505] = "\x8e\xbb", [16506] = "\xfa\xbe", + [16507] = "\x9c\xa5", [16508] = "\x92\xee", [16509] = "\x9c\x9b", + [16514] = "\x9c\xa3", [16516] = "\x89\xf7", [16518] = "\x9c\xa1", + [16519] = "\x9c\xa2", [16522] = "\x9c\x9e", [16523] = "\x9c\xa0", + [16527] = "\x8c\xe5", [16528] = "\x97\x49", [16531] = "\x8a\xb3", + [16534] = "\x89\x78", [16535] = "\x9c\xa4", [16537] = "\x94\x59", + [16538] = "\x88\xab", [16546] = "\x94\xdf", [16547] = "\x9c\x7b", + [16548] = "\x9c\xaa", [16549] = "\x9c\xae", [16550] = "\x96\xe3", + [16552] = "\x9c\xa7", [16556] = "\x93\x89", [16557] = "\x9c\xac", + [16565] = "\x8f\xee", [16566] = "\x9c\xad", [16567] = "\x93\xd5", + [16577] = "\x98\x66", [16579] = "\x9c\xa9", [16581] = "\xfa\xc0", + [16584] = "\x9c\xaf", [16586] = "\x8d\x9b", [16588] = "\x90\xc9", + [16590] = "\xfa\xbf", [16591] = "\x88\xd2", [16592] = "\x9c\xa8", + [16593] = "\x9c\xa6", [16595] = "\x91\x79", [16599] = "\x9c\x9c", + [16600] = "\x8e\x53", [16608] = "\x91\xc4", [16609] = "\x9c\xbb", + [16610] = "\xfa\xc2", [16611] = "\x91\x7a", [16612] = "\x9c\xb6", + [16614] = "\x9c\xb3", [16615] = "\x9c\xb4", [16617] = "\x8e\xe4", + [16618] = "\x9c\xb7", [16619] = "\x9c\xba", [16624] = "\x9c\xb5", + [16625] = "\x8f\x44", [16627] = "\x9c\xb8", [16630] = "\x9c\xb2", + [16632] = "\x96\xfa", [16633] = "\x96\xf9", [16637] = "\x9c\xbc", + [16638] = "\x9c\xbd", [16639] = "\x88\xd3", [16641] = "\xfa\xc3", + [16645] = "\x9c\xb1", [16650] = "\x8b\xf0", [16651] = "\x88\xa4", + [16655] = "\x8a\xb4", [16656] = "\xfa\xc1", [16657] = "\x9c\xb9", + [16663] = "\x9c\xc1", [16664] = "\x9c\xc0", [16668] = "\x9c\xc5", + [16672] = "\xfa\xc5", [16676] = "\x9c\xc6", [16679] = "\xfa\xc4", + [16684] = "\x9c\xc4", [16685] = "\x9c\xc7", [16686] = "\x9c\xbf", + [16687] = "\x9c\xc3", [16690] = "\x9c\xc8", [16692] = "\x9c\xc9", + [16695] = "\x9c\xbe", [16696] = "\x8e\x9c", [16698] = "\x9c\xc2", + [16699] = "\x91\xd4", [16700] = "\x8d\x51", [16701] = "\x9c\xb0", + [16702] = "\x90\x54", [16707] = "\x9c\xd6", [16709] = "\x95\xe7", + [16712] = "\x9c\xcc", [16713] = "\x9c\xcd", [16714] = "\x9c\xce", + [16717] = "\x9c\xd5", [16719] = "\x9c\xd4", [16722] = "\x96\x9d", + [16723] = "\x8a\xb5", [16725] = "\x9c\xd2", [16727] = "\x8c\x64", + [16728] = "\x8a\x53", [16731] = "\x9c\xcf", [16734] = "\x97\xb6", + [16735] = "\x9c\xd1", [16736] = "\x88\xd4", [16737] = "\x9c\xd3", + [16739] = "\x9c\xca", [16740] = "\x9c\xd0", [16741] = "\x9c\xd7", + [16742] = "\x8c\x63", [16743] = "\x9c\xcb", [16750] = "\x97\x7c", + [16754] = "\x97\x4a", [16759] = "\x9c\xda", [16762] = "\x9c\xde", + [16766] = "\x91\x9e", [16768] = "\x97\xf7", [16769] = "\x9c\xdf", + [16772] = "\x9c\xdc", [16774] = "\x9c\xd9", [16776] = "\xfa\xc6", + [16777] = "\x9c\xd8", [16778] = "\x9c\xdd", [16788] = "\x95\xae", + [16791] = "\x93\xb2", [16793] = "\x8c\x65", [16795] = "\x9c\xe0", + [16796] = "\x9c\xdb", [16798] = "\x9c\xe1", [16802] = "\x8c\x9b", + [16806] = "\x89\xaf", [16810] = "\x9c\xe9", [16814] = "\x8a\xb6", + [16819] = "\x9c\xe7", [16822] = "\x9c\xe8", [16823] = "\x8d\xa7", + [16824] = "\x9c\xe6", [16825] = "\x9c\xe4", [16826] = "\x9c\xe3", + [16827] = "\x9c\xea", [16828] = "\x9c\xe2", [16829] = "\x9c\xec", + [16832] = "\x89\xf9", [16851] = "\x9c\xee", [16854] = "\x9c\xed", + [16866] = "\x92\xa6", [16868] = "\x9c\xf1", [16870] = "\x9c\xef", + [16871] = "\x9c\xe5", [16872] = "\x8c\x9c", [16874] = "\x9c\xf0", + [16876] = "\x9c\xf4", [16877] = "\x9c\xf3", [16878] = "\x9c\xf5", + [16879] = "\x9c\xf2", [16880] = "\x9c\xf6", [16888] = "\x9c\xf7", + [16889] = "\x9c\xf8", [16890] = "\x95\xe8", [16892] = "\x9c\xfa", + [16893] = "\x9c\xf9", [16894] = "\x8f\x5e", [16896] = "\x90\xac", + [16897] = "\x89\xe4", [16898] = "\x89\xfa", [16899] = "\xfa\xc7", + [16900] = "\x9c\xfb", [16902] = "\x88\xbd", [16906] = "\x90\xca", + [16907] = "\x9c\xfc", [16909] = "\xe6\xc1", [16910] = "\x9d\x40", + [16911] = "\x8c\x81", [16913] = "\x9d\x41", [16918] = "\x90\xed", + [16922] = "\x9d\x42", [16926] = "\x9d\x43", [16927] = "\x8b\x59", + [16928] = "\x9d\x44", [16930] = "\x9d\x45", [16931] = "\x9d\x46", + [16932] = "\x91\xd5", [16936] = "\x8c\xcb", [16939] = "\x96\xdf", + [16943] = "\x96\x5b", [16944] = "\x8f\x8a", [16945] = "\x9d\x47", + [16951] = "\x90\xee", [16952] = "\xe7\xbb", [16953] = "\x94\xe0", + [16955] = "\x8e\xe8", [16957] = "\x8d\xcb", [16958] = "\x9d\x48", + [16963] = "\x91\xc5", [16965] = "\x95\xa5", [16968] = "\x91\xef", + [16971] = "\x9d\x4b", [16974] = "\x9d\x49", [16976] = "\x9d\x4c", + [16979] = "\x9d\x4a", [16984] = "\x9d\x4d", [16990] = "\x95\xaf", + [16993] = "\x88\xb5", [16998] = "\x95\x7d", [17001] = "\x94\xe1", + [17004] = "\x9d\x4e", [17006] = "\x9d\x51", [17007] = "\x8f\xb3", + [17008] = "\x8b\x5a", [17010] = "\x9d\x4f", [17011] = "\x9d\x56", + [17012] = "\x8f\xb4", [17017] = "\x9d\x50", [17018] = "\x94\x63", + [17025] = "\x97\x7d", [17026] = "\x9d\x52", [17027] = "\x9d\x53", + [17028] = "\x9d\x57", [17029] = "\x93\x8a", [17030] = "\x9d\x54", + [17031] = "\x8d\x52", [17032] = "\x90\xdc", [17035] = "\x9d\x65", + [17036] = "\x94\xb2", [17038] = "\x91\xf0", [17046] = "\xfa\xc8", + [17051] = "\x94\xe2", [17052] = "\x9d\xab", [17057] = "\x95\xf8", + [17061] = "\x92\xef", [17065] = "\x96\x95", [17067] = "\x9d\x5a", + [17068] = "\x89\x9f", [17069] = "\x92\x8a", [17074] = "\x9d\x63", + [17077] = "\x92\x53", [17078] = "\x9d\x5d", [17079] = "\x9d\x64", + [17080] = "\x9d\x5f", [17081] = "\x9d\x66", [17082] = "\x9d\x62", + [17084] = "\x9d\x61", [17085] = "\x94\x8f", [17087] = "\x9d\x5b", + [17088] = "\x89\xfb", [17089] = "\x9d\x59", [17090] = "\x8b\x91", + [17091] = "\x91\xf1", [17092] = "\x9d\x55", [17095] = "\x9d\x58", + [17096] = "\x8d\x53", [17097] = "\x90\xd9", [17099] = "\x8f\xb5", + [17100] = "\x9d\x60", [17101] = "\x94\x71", [17104] = "\x8b\x92", + [17105] = "\x8a\x67", [17116] = "\x8a\x87", [17117] = "\x90\x40", + [17118] = "\x9d\x68", [17119] = "\x9d\x6d", [17121] = "\x9d\x69", + [17123] = "\x8c\x9d", [17125] = "\x9d\x6e", [17126] = "\x8e\x41", + [17127] = "\x8d\x89", [17134] = "\x8f\x45", [17135] = "\x9d\x5c", + [17137] = "\x8e\x9d", [17138] = "\x9d\x6b", [17143] = "\x8e\x77", + [17144] = "\x9d\x6c", [17145] = "\x88\xc2", [17148] = "\x9d\x67", + [17153] = "\x92\xa7", [17161] = "\x8b\x93", [17167] = "\x8b\xb2", + [17175] = "\x9d\x6a", [17176] = "\x88\xa5", [17179] = "\x8d\xc1", + [17183] = "\x90\x55", [17194] = "\x92\xf0", [17197] = "\x94\xd2", + [17198] = "\x9d\x70", [17199] = "\x91\x7d", [17209] = "\x91\xa8", + [17212] = "\x8e\x4a", [17213] = "\x9d\x71", [17215] = "\x9d\x73", + [17216] = "\x9d\x6f", [17221] = "\x95\xdf", [17223] = "\x92\xbb", + [17228] = "\x91\x7b", [17239] = "\x95\xf9", [17240] = "\x8e\xcc", + [17241] = "\x9d\x80", [17243] = "\x9d\x7e", [17246] = "\x90\x98", + [17250] = "\x8c\x9e", [17254] = "\x9d\x78", [17255] = "\x8f\xb7", + [17258] = "\x93\xe6", [17259] = "\x94\x50", [17264] = "\x9d\x76", + [17267] = "\x91\x7c", [17272] = "\x8e\xf6", [17273] = "\x9d\x7b", + [17276] = "\x8f\xb6", [17278] = "\x9d\x75", [17279] = "\x9d\x7a", + [17282] = "\x94\x72", [17286] = "\x9d\x74", [17288] = "\x8c\x40", + [17291] = "\x8a\x7c", [17295] = "\x9d\x7c", [17296] = "\x97\xa9", + [17297] = "\x8d\xcc", [17298] = "\x92\x54", [17299] = "\x9d\x79", + [17301] = "\x90\xda", [17303] = "\x8d\x54", [17304] = "\x90\x84", + [17305] = "\x89\x86", [17306] = "\x91\x5b", [17307] = "\x9d\x77", + [17308] = "\x8b\x64", [17314] = "\x8c\x66", [17316] = "\x92\xcd", + [17317] = "\x9d\x7d", [17323] = "\x91\x7e", [17326] = "\x9d\x81", + [17328] = "\x9d\x83", [17331] = "\x91\xb5", [17332] = "\x9d\x89", + [17334] = "\x9d\x84", [17337] = "\x9d\x86", [17343] = "\x95\x60", + [17344] = "\x92\xf1", [17346] = "\x9d\x87", [17350] = "\x97\x4b", + [17354] = "\x97\x67", [17355] = "\x8a\xb7", [17361] = "\x88\xac", + [17363] = "\x9d\x85", [17369] = "\x9d\x82", [17374] = "\x8a\xf6", + [17380] = "\x89\x87", [17381] = "\xfa\xc9", [17382] = "\x9d\x88", + [17386] = "\x97\x68", [17398] = "\x9d\x8c", [17405] = "\x91\xb9", + [17407] = "\x9d\x93", [17411] = "\x9d\x8d", [17414] = "\x9d\x8a", + [17415] = "\x9d\x91", [17420] = "\x9d\x72", [17430] = "\x9d\x8e", + [17432] = "\x9d\x92", [17436] = "\x94\xc0", [17437] = "\x93\x8b", + [17444] = "\x9d\x8b", [17446] = "\x9d\x8f", [17450] = "\x8c\x67", + [17454] = "\x8d\xef", [17458] = "\x90\xdb", [17470] = "\x9d\x97", + [17480] = "\x93\x45", [17488] = "\xfa\xca", [17495] = "\x9d\x94", + [17497] = "\x96\x80", [17503] = "\x9d\x95", [17510] = "\x9d\x96", + [17512] = "\x96\xcc", [17514] = "\x90\xa0", [17523] = "\x8c\x82", + [17528] = "\x9d\x9d", [17538] = "\x8e\x54", [17539] = "\x9d\x9a", + [17541] = "\x9d\x99", [17546] = "\x94\x51", [17549] = "\xfa\xcb", + [17550] = "\x93\xb3", [17556] = "\x93\x50", [17557] = "\x9d\x9b", + [17561] = "\x9d\x9c", [17563] = "\x95\x8f", [17565] = "\x94\x64", + [17566] = "\x8e\x42", [17568] = "\x90\xef", [17570] = "\x96\x6f", + [17577] = "\x8a\x68", [17579] = "\x9d\xa3", [17580] = "\x9d\x9e", + [17585] = "\x97\x69", [17586] = "\x9d\xa5", [17589] = "\x9d\xa1", + [17591] = "\x9d\xa2", [17597] = "\x91\x80", [17598] = "\xfa\xcc", + [17602] = "\x9d\xa0", [17604] = "\x9d\x5e", [17608] = "\x9d\xa4", + [17610] = "\x9d\x9f", [17616] = "\x9d\xa9", [17617] = "\x9d\xaa", + [17618] = "\x93\x46", [17619] = "\x9d\xac", [17622] = "\x8e\x43", + [17623] = "\x9d\xa7", [17628] = "\x8b\x5b", [17631] = "\x9d\xad", + [17633] = "\x9d\xa6", [17634] = "\x9d\xb1", [17636] = "\x9d\xb0", + [17638] = "\x9d\xaf", [17642] = "\x9d\xb2", [17645] = "\x9d\xb4", + [17646] = "\x8f\xef", [17648] = "\x9d\xb3", [17653] = "\x9d\xb7", + [17672] = "\x9d\xb5", [17676] = "\x9d\xb6", [17677] = "\x9d\x90", + [17683] = "\x9d\xb9", [17684] = "\x9d\xb8", [17690] = "\x9d\x98", + [17691] = "\x9d\xba", [17692] = "\x9d\xae", [17695] = "\x8e\x78", + [17700] = "\x9d\xbb", [17701] = "\x9d\xbc", [17702] = "\x9d\xbe", + [17703] = "\x9d\xbd", [17704] = "\x9d\xbf", [17705] = "\x89\xfc", + [17707] = "\x8d\x55", [17710] = "\x95\xfa", [17711] = "\x90\xad", + [17717] = "\x8c\xcc", [17720] = "\x9d\xc1", [17725] = "\x9d\xc4", + [17726] = "\xfa\xcd", [17727] = "\x95\x71", [17729] = "\x8b\x7e", + [17733] = "\x9d\xc3", [17734] = "\x9d\xc2", [17735] = "\x94\x73", + [17736] = "\x9d\xc5", [17737] = "\x8b\xb3", [17741] = "\x9d\xc7", + [17742] = "\x9d\xc6", [17746] = "\x8a\xb8", [17747] = "\x8e\x55", + [17750] = "\x93\xd6", [17756] = "\x8c\x68", [17760] = "\x90\x94", + [17762] = "\x9d\xc8", [17764] = "\x90\xae", [17765] = "\x93\x47", + [17767] = "\x95\x7e", [17768] = "\x9d\xc9", [17778] = "\x9d\xca", + [17779] = "\x9d\xcb", [17783] = "\x95\xb6", [17784] = "\x9b\x7c", + [17785] = "\x90\xc4", [17788] = "\x95\x6b", [17790] = "\x8d\xd6", + [17792] = "\x94\xe3", [17793] = "\x94\xc1", [17799] = "\x93\x6c", + [17801] = "\x97\xbf", [17803] = "\x9d\xcd", [17804] = "\x8e\xce", + [17807] = "\x9d\xce", [17809] = "\x88\xb4", [17812] = "\x8b\xd2", + [17813] = "\x90\xcb", [17815] = "\x95\x80", [17819] = "\x9d\xcf", + [17820] = "\x8e\x61", [17821] = "\x92\x66", [17823] = "\x8e\x7a", + [17824] = "\x90\x56", [17831] = "\x9d\xd0", [17833] = "\x95\xfb", + [17836] = "\x89\x97", [17837] = "\x8e\x7b", [17841] = "\x9d\xd3", + [17843] = "\x9d\xd1", [17844] = "\x9d\xd4", [17845] = "\x97\xb7", + [17846] = "\x9d\xd2", [17851] = "\x90\xf9", [17852] = "\x9d\xd5", + [17855] = "\x91\xb0", [17858] = "\x9d\xd6", [17863] = "\x8a\xf8", + [17865] = "\x9d\xd8", [17867] = "\x9d\xd7", [17872] = "\x9d\xd9", + [17873] = "\x9d\xda", [17874] = "\x8a\xf9", [17877] = "\x93\xfa", + [17878] = "\x92\x55", [17879] = "\x8b\x8c", [17880] = "\x8e\x7c", + [17881] = "\x91\x81", [17884] = "\x8f\x7b", [17885] = "\x88\xae", + [17889] = "\x9d\xdb", [17898] = "\x89\xa0", [17899] = "\x9d\xdf", + [17904] = "\xfa\xce", [17906] = "\x8d\x56", [17907] = "\x9d\xde", + [17910] = "\x8d\xa9", [17911] = "\x8f\xb8", [17913] = "\xfa\xd1", + [17914] = "\x9d\xdd", [17916] = "\x8f\xb9", [17918] = "\x96\xbe", + [17919] = "\x8d\xa8", [17923] = "\x88\xd5", [17924] = "\x90\xcc", + [17925] = "\xfa\xcf", [17932] = "\x9d\xe4", [17934] = "\xfa\xd3", + [17935] = "\x90\xaf", [17936] = "\x89\x66", [17940] = "\xfa\xd4", + [17941] = "\x8f\x74", [17943] = "\x96\x86", [17944] = "\x8d\xf0", + [17949] = "\x8f\xba", [17950] = "\xfa\xd2", [17951] = "\x90\xa5", + [17953] = "\xfa\x63", [17956] = "\x9d\xe3", [17957] = "\x9d\xe1", + [17958] = "\x9d\xe2", [17963] = "\xfa\xd0", [17964] = "\x92\x8b", + [17967] = "\x9e\x45", [17969] = "\x9d\xe8", [17970] = "\x8e\x9e", + [17971] = "\x8d\x57", [17972] = "\x9d\xe6", [17977] = "\x9d\xe7", + [17979] = "\x90\x57", [17983] = "\x9d\xe5", [17986] = "\x8e\x4e", + [17991] = "\xfa\xd6", [17993] = "\xfa\xd7", [17997] = "\x9d\xea", + [17998] = "\x9d\xe9", [17999] = "\x9d\xee", [18002] = "\x9d\xef", + [18004] = "\x9d\xeb", [18005] = "\xfa\xd5", [18006] = "\x8a\x41", + [18007] = "\x9d\xec", [18008] = "\x9d\xed", [18009] = "\x94\xd3", + [18014] = "\x95\x81", [18015] = "\x8c\x69", [18016] = "\x9d\xf0", + [18019] = "\xfa\xd9", [18020] = "\x90\xb0", [18022] = "\x8f\xbb", + [18026] = "\x92\x71", [18033] = "\x8b\xc5", [18035] = "\x9d\xf1", + [18036] = "\x9d\xf5", [18039] = "\x89\xc9", [18040] = "\x9d\xf2", + [18041] = "\x9d\xf4", [18046] = "\x9d\xf3", [18049] = "\x8f\x8b", + [18054] = "\x92\x67", [18055] = "\x88\xc3", [18056] = "\x9d\xf6", + [18057] = "\xfa\xda", [18061] = "\x9d\xf7", [18064] = "\xfa\xdb", + [18066] = "\x92\xa8", [18070] = "\x97\xef", [18075] = "\x8e\x62", + [18078] = "\x95\xe9", [18082] = "\xfa\xdc", [18084] = "\x96\x5c", + [18088] = "\x9e\x41", [18089] = "\x9d\xf9", [18092] = "\x9d\xfc", + [18094] = "\x9d\xfb", [18095] = "\xfa\xdd", [18097] = "\x9d\xf8", + [18100] = "\x9e\x40", [18103] = "\x93\xdc", [18105] = "\x9d\xfa", + [18118] = "\x9e\x42", [18121] = "\x8f\x8c", [18122] = "\x9e\x43", + [18124] = "\x97\x6a", [18125] = "\x94\x98", [18128] = "\x9e\x44", + [18134] = "\x9e\x46", [18137] = "\x9e\x47", [18144] = "\x9e\x48", + [18146] = "\x8b\xc8", [18147] = "\x89\x67", [18148] = "\x8d\x58", + [18149] = "\x9e\x49", [18151] = "\x9e\x4a", [18152] = "\x8f\x91", + [18153] = "\x91\x82", [18154] = "\xfa\xde", [18155] = "\xfa\x66", + [18156] = "\x99\xd6", [18157] = "\x91\x5d", [18158] = "\x91\x5c", + [18159] = "\x91\xd6", [18160] = "\x8d\xc5", [18163] = "\x98\xf0", + [18168] = "\x8c\x8e", [18169] = "\x97\x4c", [18171] = "\x95\xfc", + [18173] = "\x95\x9e", [18174] = "\xfa\xdf", [18175] = "\x9e\x4b", + [18180] = "\x8d\xf1", [18181] = "\x92\xbd", [18182] = "\x9e\x4c", + [18183] = "\x98\x4e", [18187] = "\x96\x5d", [18189] = "\x92\xa9", + [18190] = "\x9e\x4d", [18191] = "\x8a\xfa", [18198] = "\x9e\x4e", + [18199] = "\x9e\x4f", [18200] = "\x96\xd8", [18202] = "\x96\xa2", + [18203] = "\x96\x96", [18204] = "\x96\x7b", [18205] = "\x8e\x44", + [18206] = "\x9e\x51", [18209] = "\x8e\xe9", [18212] = "\x96\x70", + [18214] = "\x9e\x53", [18215] = "\x9e\x56", [18216] = "\x9e\x55", + [18218] = "\x8a\xf7", [18221] = "\x8b\x80", [18223] = "\x9e\x52", + [18225] = "\x9e\x54", [18230] = "\x9e\x57", [18233] = "\x90\x99", + [18238] = "\x97\x9b", [18239] = "\x88\xc7", [18240] = "\x8d\xde", + [18241] = "\x91\xba", [18243] = "\x8e\xdb", [18246] = "\x8f\xf1", + [18249] = "\x9e\x5a", [18252] = "\x93\x6d", [18254] = "\x9e\x58", + [18255] = "\x91\xa9", [18256] = "\x9e\x59", [18257] = "\x8f\xf0", + [18258] = "\x96\xdb", [18259] = "\x9e\x5b", [18260] = "\x9e\x5c", + [18261] = "\x97\x88", [18262] = "\xfa\xe1", [18266] = "\x9e\x61", + [18269] = "\x8d\x59", [18271] = "\x94\x74", [18272] = "\x9e\x5e", + [18273] = "\x93\x8c", [18274] = "\x9d\xdc", [18275] = "\x9d\xe0", + [18277] = "\x8b\x6e", [18279] = "\x94\x66", [18284] = "\x9e\x60", + [18286] = "\x8f\xbc", [18287] = "\x94\xc2", [18293] = "\x9e\x66", + [18295] = "\x94\xf8", [18297] = "\x9e\x5d", [18299] = "\x9e\x63", + [18300] = "\x9e\x62", [18304] = "\x90\xcd", [18309] = "\x96\x8d", + [18311] = "\x97\xd1", [18314] = "\x96\x87", [18316] = "\x89\xca", + [18317] = "\x8e\x7d", [18320] = "\x98\x67", [18321] = "\x9e\x65", + [18322] = "\x90\x95", [18326] = "\x9e\x64", [18329] = "\x9e\x5f", + [18335] = "\x8c\xcd", [18339] = "\x9e\x6b", [18340] = "\x9e\x69", + [18342] = "\x89\xcb", [18343] = "\x9e\x67", [18344] = "\x9e\x6d", + [18345] = "\x9e\x73", [18347] = "\xfa\xe2", [18352] = "\xfa\xe4", + [18353] = "\x91\xc6", [18356] = "\x95\xbf", [18358] = "\x9e\x75", + [18362] = "\x95\x41", [18366] = "\x9e\x74", [18367] = "\x94\x90", + [18368] = "\x96\x5e", [18369] = "\x8a\xb9", [18371] = "\x90\xf5", + [18372] = "\x8f\x5f", [18376] = "\x92\xd1", [18378] = "\x97\x4d", + [18381] = "\x9e\x70", [18382] = "\x9e\x6f", [18386] = "\x9e\x71", + [18388] = "\x9e\x6e", [18391] = "\x9e\x76", [18393] = "\x9e\x6c", + [18396] = "\x9e\x6a", [18398] = "\x9e\x72", [18399] = "\x9e\x68", + [18401] = "\x92\x8c", [18403] = "\x96\xf6", [18404] = "\x8e\xc4", + [18405] = "\x8d\xf2", [18411] = "\x8d\xb8", [18414] = "\x96\x8f", + [18415] = "\x8a\x60", [18417] = "\xfa\xe5", [18418] = "\x92\xcc", + [18419] = "\x93\xc8", [18420] = "\x89\x68", [18435] = "\x90\xf0", + [18438] = "\x90\xb2", [18439] = "\x8c\x49", [18446] = "\x9e\x78", + [18449] = "\x8d\x5a", [18450] = "\x8a\x9c", [18457] = "\x9e\x7a", + [18458] = "\x8a\x94", [18459] = "\x9e\x81", [18466] = "\x9e\x7d", + [18468] = "\x90\xf1", [18472] = "\x8a\x6a", [18473] = "\x8d\xaa", + [18476] = "\x8a\x69", [18477] = "\x8d\xcd", [18480] = "\x9e\x7b", + [18481] = "\x8c\x85", [18482] = "\x8c\x6a", [18483] = "\x93\x8d", + [18484] = "\xfa\xe6", [18486] = "\x9e\x79", [18488] = "\x88\xc4", + [18493] = "\x9e\x7c", [18494] = "\x9e\x7e", [18496] = "\x8b\xcb", + [18497] = "\x8c\x4b", [18498] = "\xfa\xe3", [18499] = "\x8a\xba", + [18500] = "\x8b\x6a", [18505] = "\x9e\x82", [18508] = "\x8d\xf7", + [18509] = "\x96\x91", [18511] = "\x8e\x56", [18515] = "\x9e\x83", + [18519] = "\x95\x4f", [18532] = "\x9e\x8f", [18534] = "\x89\xb1", + [18535] = "\x9e\x84", [18542] = "\x9e\x95", [18543] = "\x9e\x85", + [18545] = "\x97\xc0", [18547] = "\x9e\x8c", [18549] = "\x94\x7e", + [18557] = "\x9e\x94", [18559] = "\x9e\x87", [18563] = "\x88\xb2", + [18564] = "\x9e\x89", [18567] = "\x8d\x5b", [18571] = "\x9e\x8b", + [18573] = "\x9e\x8a", [18575] = "\x9e\x86", [18576] = "\x9e\x91", + [18578] = "\x8f\xbd", [18582] = "\x9a\xeb", [18583] = "\x8c\xe6", + [18584] = "\x97\x9c", [18589] = "\x9e\x88", [18591] = "\x92\xf2", + [18592] = "\x8a\x42", [18593] = "\x8d\xab", [18595] = "\x9e\x80", + [18597] = "\x9e\x90", [18598] = "\x8a\x81", [18601] = "\x9e\x8e", + [18602] = "\x9e\x92", [18604] = "\x93\x8e", [18612] = "\x8a\xfc", + [18614] = "\x9e\xb0", [18616] = "\xfa\x64", [18617] = "\x96\xc7", + [18618] = "\x9e\x97", [18619] = "\x8a\xfb", [18621] = "\x9e\x9e", + [18623] = "\xfa\xe7", [18626] = "\x96\x5f", [18628] = "\x9e\x9f", + [18629] = "\x9e\xa1", [18631] = "\x9e\xa5", [18632] = "\x9e\x99", + [18634] = "\x92\x49", [18639] = "\x93\x8f", [18640] = "\x9e\xa9", + [18641] = "\x9e\x9c", [18643] = "\x9e\xa6", [18647] = "\x9e\xa0", + [18654] = "\x90\x58", [18655] = "\x9e\xaa", [18658] = "\x90\xb1", + [18665] = "\x9e\xa8", [18666] = "\x8a\xbb", [18672] = "\x98\x6f", + [18673] = "\x9e\x96", [18676] = "\x9e\xa4", [18677] = "\x88\xd6", + [18680] = "\x9e\x98", [18683] = "\x96\xb8", [18684] = "\x9e\x9d", + [18685] = "\x90\x41", [18686] = "\x92\xc5", [18687] = "\x9e\x93", + [18690] = "\x9e\xa3", [18697] = "\x90\x9a", [18698] = "\x9e\xad", + [18699] = "\x8a\x91", [18700] = "\x8c\x9f", [18705] = "\x9e\xaf", + [18706] = "\x9e\x9a", [18707] = "\x9e\xae", [18709] = "\x9e\xa7", + [18710] = "\x9e\x9b", [18712] = "\x9e\xab", [18714] = "\x9e\xac", + [18720] = "\x9e\xbd", [18724] = "\x93\xcc", [18726] = "\x9e\xa2", + [18729] = "\x9e\xb9", [18733] = "\x9e\xbb", [18735] = "\x92\xd6", + [18746] = "\x97\x6b", [18755] = "\x95\x96", [18756] = "\x9e\xb6", + [18757] = "\x91\xc8", [18761] = "\x9e\xbc", [18762] = "\x91\x5e", + [18764] = "\x9e\xb3", [18765] = "\x9e\xc0", [18766] = "\x9e\xbf", + [18768] = "\x93\xed", [18769] = "\x9e\xbe", [18770] = "\x93\xe8", + [18776] = "\xfa\xe9", [18778] = "\x9e\xc2", [18779] = "\x9e\xb5", + [18781] = "\x8b\xc6", [18782] = "\x9e\xb8", [18783] = "\x8f\x7c", + [18787] = "\x94\x80", [18788] = "\x9e\xba", [18789] = "\x8b\xc9", + [18791] = "\x9e\xb2", [18792] = "\x9e\xb4", [18793] = "\x9e\xb1", + [18796] = "\x98\x4f", [18797] = "\x8a\x79", [18798] = "\x9e\xb7", + [18801] = "\x9e\xc1", [18802] = "\x8a\x54", [18810] = "\x8d\xe5", + [18814] = "\x89\x7c", [18817] = "\x9e\xd2", [18820] = "\x98\x50", + [18821] = "\x9e\xd5", [18824] = "\xfa\xeb", [18827] = "\x90\x59", + [18828] = "\x9e\xd4", [18832] = "\x9e\xd3", [18839] = "\x9e\xd0", + [18846] = "\x9e\xc4", [18849] = "\x9e\xe1", [18850] = "\x9e\xc3", + [18852] = "\x9e\xd6", [18859] = "\x9e\xce", [18862] = "\x9e\xc9", + [18863] = "\x9e\xc6", [18865] = "\x9e\xc7", [18867] = "\x9e\xcf", + [18871] = "\xea\xa0", [18874] = "\x9e\xcc", [18875] = "\x8d\x5c", + [18876] = "\x92\xc6", [18877] = "\x91\x84", [18878] = "\x9e\xca", + [18880] = "\x9e\xc5", [18883] = "\x9e\xc8", [18888] = "\x97\x6c", + [18889] = "\x96\x8a", [18893] = "\x9e\xcd", [18894] = "\x9e\xd7", + [18898] = "\xfa\xec", [18903] = "\x9e\xdf", [18904] = "\x9e\xd8", + [18907] = "\x9e\xe5", [18909] = "\x9e\xe3", [18914] = "\x9e\xde", + [18921] = "\x9e\xdd", [18923] = "\x92\xce", [18925] = "\x91\x85", + [18927] = "\x9e\xdb", [18930] = "\x9e\xd9", [18933] = "\x9e\xe0", + [18938] = "\x9e\xe6", [18939] = "\x94\xf3", [18940] = "\x9e\xec", + [18946] = "\x9e\xe7", [18947] = "\x9e\xea", [18948] = "\x9e\xe4", + [18951] = "\x92\x94", [18953] = "\x95\x57", [18955] = "\x9e\xda", + [18958] = "\x9e\xe2", [18959] = "\x8f\xbe", [18961] = "\x96\xcd", + [18962] = "\x9e\xf6", [18963] = "\x9e\xe9", [18969] = "\x8c\xa0", + [18970] = "\x89\xa1", [18971] = "\x8a\x7e", [18974] = "\x9e\xd1", + [18976] = "\xfa\xed", [18981] = "\x8f\xbf", [18982] = "\x9e\xee", + [18984] = "\x9e\xf5", [18985] = "\x8e\xf7", [18986] = "\x8a\x92", + [18989] = "\x92\x4d", [18996] = "\x9e\xeb", [18998] = "\xfa\xef", + [18999] = "\x9e\xf0", [19000] = "\x9e\xf4", [19003] = "\x8b\xb4", + [19016] = "\x8b\x6b", [19017] = "\x9e\xf2", [19023] = "\x8b\x40", + [19025] = "\x93\xc9", [19026] = "\x9e\xf1", [19030] = "\x9e\xf3", + [19035] = "\xfa\xee", [19042] = "\x9e\xed", [19043] = "\xfa\xf0", + [19048] = "\x9e\xef", [19054] = "\xfa\xf1", [19055] = "\x8a\x80", + [19056] = "\x92\x68", [19060] = "\x9e\xfa", [19069] = "\x9e\xf8", + [19070] = "\x8c\xe7", [19072] = "\x9e\xf7", [19079] = "\x9f\x40", + [19084] = "\x9e\x77", [19088] = "\x9e\xf9", [19090] = "\x9e\xfb", + [19091] = "\x9e\xfc", [19098] = "\x9f\x4b", [19100] = "\x9f\x47", + [19102] = "\x9e\x8d", [19107] = "\x9f\x46", [19112] = "\x9f\x45", + [19115] = "\x9f\x42", [19121] = "\x9e\xe8", [19122] = "\x9f\x44", + [19123] = "\x9f\x43", [19137] = "\x9f\x49", [19139] = "\x98\x45", + [19146] = "\x9f\x4c", [19147] = "\x8b\xf9", [19150] = "\x9f\x48", + [19151] = "\x9f\x4a", [19154] = "\xfa\xf2", [19156] = "\xfa\xf3", + [19160] = "\x94\xa5", [19162] = "\x9f\x4d", [19178] = "\x9f\x51", + [19179] = "\x9f\x4e", [19188] = "\x97\x93", [19189] = "\x9f\x4f", + [19194] = "\x9e\xdc", [19202] = "\x9f\x52", [19206] = "\x9f\x53", + [19213] = "\x89\x54", [19215] = "\x9f\x55", [19216] = "\x8c\x87", + [19217] = "\x8e\x9f", [19219] = "\x8b\xd3", [19223] = "\x89\xa2", + [19234] = "\x97\x7e", [19239] = "\x9f\x57", [19240] = "\x9f\x56", + [19241] = "\x9f\x59", [19242] = "\x8b\x5c", [19245] = "\x8b\xd4", + [19246] = "\x8a\xbc", [19251] = "\x9f\x5c", [19255] = "\x9f\x5b", + [19257] = "\x9f\x5d", [19260] = "\x89\xcc", [19262] = "\x92\x56", + [19264] = "\x9f\x5e", [19267] = "\x8a\xbd", [19268] = "\x9f\x60", + [19273] = "\x9f\x5f", [19275] = "\x9f\x61", [19279] = "\x9f\x62", + [19281] = "\x9f\x63", [19282] = "\x8e\x7e", [19283] = "\x90\xb3", + [19284] = "\x8d\x9f", [19286] = "\x95\x90", [19289] = "\x95\xe0", + [19290] = "\x98\x63", [19295] = "\x8e\x95", [19299] = "\x8d\xce", + [19300] = "\x97\xf0", [19304] = "\x9f\x64", [19305] = "\x9f\x65", + [19307] = "\x8e\x80", [19311] = "\x9f\x66", [19312] = "\x9f\x67", + [19315] = "\x9f\x69", [19316] = "\x9f\x68", [19318] = "\x96\x77", + [19321] = "\x8f\x7d", [19322] = "\x8e\xea", [19323] = "\x8e\x63", + [19325] = "\x9f\x6a", [19333] = "\x9f\x6c", [19334] = "\x90\x42", + [19336] = "\x9f\x6b", [19342] = "\x9f\x6d", [19348] = "\x9f\x6e", + [19354] = "\x9f\x6f", [19355] = "\x9f\x70", [19359] = "\x9f\x71", + [19361] = "\x9f\x73", [19362] = "\x9f\x72", [19363] = "\x9f\x74", + [19364] = "\x89\xa3", [19365] = "\x92\x69", [19367] = "\x9f\x75", + [19370] = "\x8e\x45", [19371] = "\x8a\x6b", [19372] = "\x9f\x76", + [19375] = "\x93\x61", [19376] = "\x9a\xca", [19381] = "\x8b\x42", + [19382] = "\x9f\x77", [19387] = "\x9f\x78", [19389] = "\x95\xea", + [19390] = "\x96\x88", [19394] = "\x93\xc5", [19395] = "\x9f\x79", + [19396] = "\x94\xe4", [19398] = "\xfa\xf4", [19400] = "\x94\xf9", + [19403] = "\x96\xd1", [19407] = "\x9f\x7a", [19419] = "\x9f\x7c", + [19420] = "\x9f\x7b", [19423] = "\x9f\x7e", [19427] = "\x9f\x7d", + [19448] = "\x9f\x81", [19455] = "\x8e\x81", [19457] = "\x96\xaf", + [19459] = "\x9f\x82", [19460] = "\x9f\x83", [19463] = "\x8b\x43", + [19467] = "\x9f\x84", [19475] = "\x9f\x86", [19476] = "\x9f\x85", + [19492] = "\x90\x85", [19495] = "\x95\x58", [19496] = "\x89\x69", + [19502] = "\x94\xc3", [19503] = "\xfa\xf5", [19504] = "\x92\xf3", + [19505] = "\x8f\x60", [19506] = "\x8b\x81", [19518] = "\x94\xc4", + [19520] = "\x8e\xac", [19525] = "\x9f\x88", [19527] = "\x8a\xbe", + [19530] = "\x89\x98", [19532] = "\xfa\xf6", [19533] = "\x93\xf0", + [19534] = "\x9f\x87", [19535] = "\x8d\x5d", [19536] = "\x92\x72", + [19538] = "\x9f\x89", [19544] = "\x9f\x91", [19546] = "\x9f\x8a", + [19551] = "\xfa\xf8", [19552] = "\x91\xbf", [19554] = "\x8b\x82", + [19555] = "\x9f\x92", [19562] = "\x8c\x88", [19565] = "\x8b\x44", + [19566] = "\x9f\x90", [19569] = "\x9f\x8e", [19570] = "\x9f\x8b", + [19571] = "\x97\x80", [19574] = "\xfa\xf7", [19576] = "\x92\xbe", + [19580] = "\x93\xd7", [19581] = "\x9f\x8c", [19584] = "\x9f\x94", + [19586] = "\x9f\x93", [19587] = "\x8c\x42", [19590] = "\x89\xab", + [19593] = "\x8d\xb9", [19594] = "\x9f\x8d", [19595] = "\x9f\x8f", + [19601] = "\x96\x76", [19602] = "\x91\xf2", [19611] = "\x96\x97", + [19614] = "\x9f\x9c", [19617] = "\x9f\x9d", [19619] = "\x89\xcd", + [19624] = "\x95\xa6", [19625] = "\x96\xfb", [19626] = "\x9f\x9f", + [19627] = "\x8e\xa1", [19628] = "\x8f\xc0", [19629] = "\x9f\x98", + [19630] = "\x9f\x9e", [19631] = "\x89\x88", [19633] = "\x8b\xb5", + [19636] = "\x9f\x95", [19637] = "\x9f\x9a", [19641] = "\x90\xf2", + [19642] = "\x94\x91", [19644] = "\x94\xe5", [19651] = "\x9f\x97", + [19653] = "\x96\x40", [19655] = "\x9f\x99", [19657] = "\x9f\xa2", + [19658] = "\xfa\xf9", [19659] = "\x9f\xa0", [19661] = "\x9f\x9b", + [19665] = "\x96\x41", [19666] = "\x94\x67", [19667] = "\x8b\x83", + [19669] = "\x93\x44", [19672] = "\x92\x8d", [19674] = "\x9f\xa3", + [19679] = "\x9f\xa1", [19680] = "\x91\xd7", [19681] = "\x9f\x96", + [19683] = "\x89\x6a", [19700] = "\xfa\xfa", [19707] = "\x97\x6d", + [19708] = "\x9f\xae", [19714] = "\x9f\xad", [19719] = "\x90\xf4", + [19721] = "\x9f\xaa", [19723] = "\x97\x8c", [19726] = "\x93\xb4", + [19727] = "\x9f\xa4", [19733] = "\x92\xc3", [19737] = "\x89\x6b", + [19738] = "\x8d\x5e", [19739] = "\x9f\xa7", [19746] = "\x8f\x46", + [19747] = "\x9f\xac", [19749] = "\x9f\xab", [19750] = "\x9f\xa6", + [19752] = "\x9f\xa9", [19755] = "\x8a\x88", [19757] = "\x9f\xa8", + [19758] = "\x94\x68", [19761] = "\x97\xac", [19764] = "\x8f\xf2", + [19765] = "\x90\xf3", [19785] = "\x9f\xb4", [19786] = "\x9f\xb2", + [19788] = "\x95\x6c", [19795] = "\x9f\xaf", [19796] = "\x9f\xb1", + [19798] = "\x89\x59", [19801] = "\x8d\x5f", [19802] = "\x98\x51", + [19804] = "\x8a\x5c", [19806] = "\x95\x82", [19807] = "\xfa\xfc", + [19812] = "\x97\x81", [19815] = "\x8a\x43", [19816] = "\x90\x5a", + [19817] = "\x9f\xb3", [19829] = "\x9f\xb8", [19831] = "\xfa\xfb", + [19832] = "\x8f\xc1", [19836] = "\x97\x4f", [19838] = "\x9f\xb5", + [19843] = "\x9f\xb0", [19845] = "\x9f\xb6", [19846] = "\xfb\x40", + [19849] = "\x97\xdc", [19851] = "\x93\x93", [19852] = "\x93\xc0", + [19868] = "\xfb\x41", [19871] = "\x8a\x55", [19874] = "\x89\x74", + [19877] = "\x9f\xbc", [19880] = "\x9f\xbf", [19884] = "\x97\xc1", + [19888] = "\x97\x84", [19893] = "\x9f\xc6", [19894] = "\x9f\xc0", + [19895] = "\x9f\xbd", [19899] = "\x97\xd2", [19900] = "\x9f\xc3", + [19903] = "\xfb\x42", [19905] = "\x8f\x69", [19906] = "\x9f\xc5", + [19909] = "\x9f\xca", [19912] = "\x93\x91", [19913] = "\x9f\xc8", + [19918] = "\x9f\xc2", [19921] = "\x92\x57", [19924] = "\x9f\xc9", + [19926] = "\x9f\xbe", [19928] = "\x9f\xc4", [19930] = "\x9f\xcb", + [19931] = "\x88\xfa", [19932] = "\x9f\xc1", [19934] = "\x9f\xcc", + [19937] = "\x90\x5b", [19938] = "\xfb\x44", [19939] = "\x8f\x7e", + [19941] = "\x95\xa3", [19943] = "\x8d\xac", [19944] = "\xfb\x43", + [19945] = "\x9f\xb9", [19946] = "\x9f\xc7", [19947] = "\x93\x59", + [19948] = "\xfb\x45", [19957] = "\x90\xb4", [19959] = "\x8a\x89", + [19960] = "\x8d\xcf", [19961] = "\x8f\xc2", [19962] = "\x9f\xbb", + [19963] = "\x8f\x61", [19971] = "\x8c\x6b", [19973] = "\x9f\xba", + [19977] = "\x9f\xd0", [19978] = "\x8f\x8d", [19979] = "\x8c\xb8", + [19981] = "\x9f\xdf", [19983] = "\x9f\xd9", [19984] = "\x8b\x94", + [19985] = "\x93\x6e", [19987] = "\x9f\xd4", [19988] = "\x9f\xdd", + [19989] = "\x88\xad", [19990] = "\x89\x51", [19991] = "\xfb\x48", + [19993] = "\x89\xb7", [19995] = "\x9f\xd6", [19996] = "\x91\xaa", + [19997] = "\x9f\xcd", [19998] = "\x9f\xcf", [19999] = "\x8d\x60", + [20008] = "\x9f\xe0", [20009] = "\xfb\x46", [20010] = "\x9f\xdb", + [20012] = "\xfb\x49", [20014] = "\x9f\xd3", [20019] = "\x9f\xda", + [20026] = "\x96\xa9", [20029] = "\x9f\xd8", [20030] = "\x9f\xdc", + [20038] = "\x8c\xce", [20040] = "\x8f\xc3", [20043] = "\x92\x58", + [20044] = "\xfb\x47", [20047] = "\x9f\xd2", [20055] = "\x97\x4e", + [20059] = "\x9f\xd5", [20062] = "\x9f\xce", [20063] = "\x93\x92", + [20066] = "\x9f\xd1", [20070] = "\x9f\xd7", [20078] = "\x98\x70", + [20079] = "\x8e\xbc", [20080] = "\x96\x9e", [20082] = "\x9f\xe1", + [20092] = "\x94\xac", [20095] = "\x9f\xed", [20096] = "\x8c\xb9", + [20102] = "\x8f\x80", [20104] = "\x9f\xe3", [20108] = "\x97\xad", + [20109] = "\x8d\x61", [20111] = "\x9f\xf0", [20114] = "\x88\xec", + [20117] = "\x9f\xee", [20122] = "\x9f\xe2", [20127] = "\x9f\xe8", + [20130] = "\x9f\xea", [20134] = "\x97\x6e", [20135] = "\x9f\xe5", + [20138] = "\x93\x4d", [20141] = "\x9f\xe7", [20143] = "\xfb\x4a", + [20146] = "\x9f\xef", [20148] = "\x9f\xe9", [20149] = "\x96\xc5", + [20153] = "\x9f\xe4", [20155] = "\x8e\xa0", [20156] = "\x9f\xfc", + [20161] = "\x8a\x8a", [20163] = "\x9f\xe6", [20164] = "\x9f\xeb", + [20165] = "\x9f\xec", [20173] = "\x91\xea", [20174] = "\x91\xd8", + [20188] = "\x9f\xf4", [20191] = "\x9f\xfa", [20194] = "\x9f\xf8", + [20196] = "\x93\x48", [20199] = "\xe0\x42", [20200] = "\x9f\xf5", + [20206] = "\x9f\xf6", [20207] = "\x9f\xde", [20209] = "\x8b\x99", + [20210] = "\x95\x59", [20214] = "\x8e\xbd", [20217] = "\x8d\x97", + [20223] = "\x98\x52", [20225] = "\x9f\xf2", [20227] = "\xe0\x41", + [20228] = "\x89\x89", [20229] = "\x91\x86", [20240] = "\x94\x99", + [20242] = "\x8a\xbf", [20243] = "\x97\xf8", [20251] = "\x96\x9f", + [20252] = "\x92\xd0", [20257] = "\x9f\xf9", [20258] = "\x9f\xfb", + [20264] = "\x91\x51", [20270] = "\xe0\x40", [20271] = "\x9f\xf7", + [20273] = "\x9f\xf1", [20277] = "\x8a\xc1", [20292] = "\x8c\x89", + [20296] = "\xe0\x4e", [20299] = "\xe0\x49", [20300] = "\x90\xf6", + [20303] = "\x8a\x83", [20308] = "\x8f\x81", [20310] = "\xe0\x52", + [20317] = "\xe0\x4b", [20318] = "\x92\xaa", [20319] = "\xe0\x48", + [20320] = "\x92\xd7", [20324] = "\xe0\x6b", [20328] = "\xe0\x45", + [20330] = "\xe0\x44", [20332] = "\xe0\x4d", [20336] = "\xe0\x47", + [20337] = "\xe0\x46", [20338] = "\xe0\x4c", [20340] = "\x90\x9f", + [20342] = "\xe0\x43", [20344] = "\xfb\x4b", [20350] = "\xe0\x4f", + [20353] = "\xe0\x50", [20359] = "\x8a\xc0", [20369] = "\xe0\x55", + [20371] = "\xe0\x54", [20372] = "\xe0\x56", [20378] = "\xe0\x59", + [20385] = "\x93\x62", [20387] = "\xe0\x53", [20389] = "\xfb\x4c", + [20393] = "\xe0\x57", [20400] = "\x8c\x83", [20401] = "\x91\xf7", + [20402] = "\xe0\x51", [20403] = "\x94\x5a", [20406] = "\xe0\x58", + [20420] = "\xe0\x5d", [20421] = "\xe0\x5b", [20424] = "\xe0\x5e", + [20427] = "\xe0\x61", [20431] = "\xe0\x5a", [20432] = "\x8d\x8a", + [20433] = "\x94\x47", [20436] = "\x9f\xb7", [20443] = "\x97\x94", + [20444] = "\xe0\x5c", [20446] = "\xe0\x60", [20447] = "\x91\xf3", + [20449] = "\xe0\x5f", [20451] = "\xe0\x4a", [20453] = "\xfb\x4d", + [20454] = "\xe8\x89", [20458] = "\xe0\x64", [20462] = "\xe0\x68", + [20465] = "\xe0\x66", [20469] = "\xfb\x4e", [20471] = "\xfb\x4f", + [20473] = "\xe0\x62", [20475] = "\xe0\x63", [20479] = "\xe0\x67", + [20481] = "\xe0\x65", [20485] = "\x95\x6d", [20488] = "\xe0\x6d", + [20490] = "\xe0\x6a", [20491] = "\xe0\x69", [20493] = "\xe0\x6c", + [20494] = "\x93\xd2", [20495] = "\xe0\x6e", [20502] = "\x92\x95", + [20503] = "\x91\xeb", [20504] = "\xfb\x50", [20508] = "\x90\xa3", + [20512] = "\xe0\x6f", [20514] = "\xe0\x71", [20526] = "\xe0\x70", + [20540] = "\x9f\xf3", [20545] = "\xe0\x72", [20552] = "\x93\xe5", + [20563] = "\xe0\x73", [20571] = "\x89\xce", [20575] = "\x93\x94", + [20576] = "\x8a\x44", [20584] = "\x8b\x84", [20588] = "\x8e\xdc", + [20589] = "\x8d\xd0", [20597] = "\xfb\x51", [20601] = "\x98\x46", + [20602] = "\x90\x86", [20606] = "\x89\x8a", [20610] = "\xe0\x75", + [20617] = "\xe0\x74", [20635] = "\xfb\x52", [20636] = "\xe0\x78", + [20637] = "\x92\x59", [20638] = "\xe0\x7b", [20639] = "\xe0\x76", + [20643] = "\xe0\x7a", [20648] = "\xe0\x79", [20649] = "\x93\x5f", + [20650] = "\x88\xd7", [20651] = "\xfa\x62", [20664] = "\x97\xf3", + [20667] = "\xe0\x7d", [20671] = "\x89\x47", [20681] = "\xe0\x80", + [20685] = "\xe0\x7e", [20687] = "\xe0\x7c", [20705] = "\xe0\x77", + [20713] = "\x96\x42", [20717] = "\xe0\x82", [20724] = "\xfb\x54", + [20729] = "\xe0\x81", [20735] = "\xfb\x53", [20740] = "\x89\x8b", + [20745] = "\xe0\x84", [20746] = "\x95\xb0", [20748] = "\xe0\x83", + [20753] = "\x96\xb3", [20758] = "\x8f\xc5", [20774] = "\x91\x52", + [20780] = "\x8f\xc4", [20790] = "\xfb\x56", [20791] = "\xfb\x57", + [20793] = "\x97\xf9", [20796] = "\xe0\x8a", [20798] = "\x90\xf7", + [20805] = "\xe0\x86", [20806] = "\xe0\x8b", [20809] = "\x89\x8c", + [20812] = "\xfb\x55", [20818] = "\xe0\x89", [20820] = "\x94\x81", + [20821] = "\xe0\x85", [20822] = "\xe0\x88", [20823] = "\x8f\xc6", + [20825] = "\x94\xcf", [20828] = "\xe0\x8c", [20830] = "\x8e\xcf", + [20845] = "\x90\xf8", [20852] = "\xe0\x8f", [20856] = "\xe0\x87", + [20858] = "\x8c\x46", [20863] = "\xe0\x8d", [20868] = "\x97\x6f", + [20869] = "\xe0\x90", [20873] = "\xea\xa4", [20879] = "\x8f\x6e", + [20888] = "\xe0\x91", [20892] = "\xe0\x92", [20897] = "\x94\x4d", + [20905] = "\xe0\x94", [20910] = "\xe0\x95", [20913] = "\xfb\x59", + [20915] = "\x94\x52", [20920] = "\x93\x95", [20921] = "\xe0\x97", + [20926] = "\xe0\x99", [20928] = "\x97\xd3", [20930] = "\xe0\x96", + [20932] = "\xe0\x98", [20933] = "\x89\x8d", [20935] = "\xe0\x93", + [20943] = "\x9a\x7a", [20944] = "\xe0\x9a", [20949] = "\x91\x87", + [20950] = "\x8e\x57", [20951] = "\xe0\x9c", [20956] = "\xe0\x9b", + [20957] = "\x90\x43", [20958] = "\x99\xd7", [20965] = "\xe0\x9d", + [20969] = "\xe0\x9f", [20971] = "\xe0\x8e", [20972] = "\xe0\x9e", + [20974] = "\xfb\x5a", [20975] = "\xe0\xa0", [20982] = "\x94\x9a", + [20989] = "\xe0\xa1", [20992] = "\xe0\xa2", [21003] = "\xe0\xa3", + [21016] = "\xe0\xa4", [21018] = "\x92\xdc", [21020] = "\xe0\xa6", + [21021] = "\xe0\xa5", [21024] = "\xe0\xa7", [21026] = "\xe0\xa8", + [21029] = "\x8e\xdd", [21030] = "\x95\x83", [21034] = "\x96\xea", + [21035] = "\xe0\xa9", [21036] = "\xe0\xaa", [21037] = "\x91\x75", + [21038] = "\x8e\xa2", [21039] = "\xe0\xab", [21040] = "\xe0\xac", + [21046] = "\xe0\xad", [21047] = "\x95\xd0", [21048] = "\x94\xc5", + [21051] = "\xe0\xae", [21052] = "\x94\x76", [21058] = "\x92\xab", + [21064] = "\xe0\xaf", [21065] = "\x89\xe5", [21067] = "\x8b\x8d", + [21069] = "\x96\xc4", [21071] = "\x96\xb4", [21073] = "\x89\xb2", + [21074] = "\x98\x53", [21079] = "\x96\x71", [21081] = "\x95\xa8", + [21090] = "\x90\xb5", [21092] = "\xe0\xb0", [21097] = "\x93\xc1", + [21101] = "\x8c\xa1", [21102] = "\xe0\xb1", [21104] = "\x8d\xd2", + [21105] = "\xe0\xb3", [21106] = "\xe0\xb2", [21111] = "\xe0\xb4", + [21122] = "\xe0\xb5", [21126] = "\xe0\xb6", [21136] = "\x8b\x5d", + [21138] = "\xe0\xb7", [21143] = "\xe0\xb8", [21148] = "\x8c\xa2", + [21151] = "\x94\xc6", [21153] = "\xfb\x5b", [21154] = "\xe0\xba", + [21158] = "\x8f\xf3", [21161] = "\xe0\xb9", [21166] = "\xfb\x5c", + [21170] = "\x8b\xb6", [21171] = "\xe0\xbb", [21172] = "\xe0\xbd", + [21174] = "\xe0\xbc", [21182] = "\xe0\xbe", [21184] = "\x8c\xcf", + [21186] = "\xe0\xbf", [21191] = "\x8b\xe7", [21193] = "\x91\x5f", + [21195] = "\x8d\x9d", [21200] = "\xe0\xc1", [21201] = "\xe0\xc2", + [21202] = "\xe0\xc0", [21209] = "\x8e\xeb", [21212] = "\x93\xc6", + [21213] = "\x8b\xb7", [21223] = "\xe0\xc4", [21224] = "\x92\x4b", + [21225] = "\xe0\xc3", [21228] = "\x98\x54", [21229] = "\x94\x82", + [21242] = "\xe0\xc7", [21254] = "\xe0\xc9", [21255] = "\xe0\xc6", + [21259] = "\x96\xd2", [21260] = "\xe0\xc8", [21261] = "\xe0\xca", + [21263] = "\x97\xc2", [21268] = "\xfb\x5d", [21269] = "\xe0\xce", + [21273] = "\xe0\xcd", [21274] = "\x92\x96", [21275] = "\x94\x4c", + [21278] = "\x8c\xa3", [21279] = "\xe0\xcc", [21284] = "\xe0\xcb", + [21286] = "\x97\x50", [21287] = "\x97\x51", [21294] = "\xe0\xcf", + [21295] = "\x89\x8e", [21300] = "\x8d\x96", [21301] = "\x8e\x82", + [21310] = "\xe0\xd0", [21311] = "\xe0\xd1", [21319] = "\xe0\xd3", + [21331] = "\x8f\x62", [21336] = "\xe0\xd5", [21338] = "\xe0\xd4", + [21344] = "\xe0\xd6", [21346] = "\x8a\x6c", [21349] = "\xe0\xd8", + [21351] = "\xfb\x5f", [21352] = "\xe0\xd7", [21354] = "\xe0\xda", + [21355] = "\xe0\xd9", [21364] = "\x8c\xba", [21367] = "\x97\xa6", + [21369] = "\x8b\xca", [21371] = "\x89\xa4", [21382] = "\x8b\xe8", + [21401] = "\x8a\xdf", [21410] = "\x97\xe6", [21411] = "\xe0\xdc", + [21419] = "\xe0\xde", [21421] = "\xfb\x60", [21424] = "\xe0\xdf", + [21426] = "\x89\xcf", [21432] = "\xe0\xdb", [21433] = "\xfb\x61", + [21434] = "\x8e\x58", [21437] = "\x92\xbf", [21438] = "\xe0\xdd", + [21442] = "\xfb\x64", [21446] = "\xfb\x62", [21454] = "\xe0\xe2", + [21456] = "\x8e\xec", [21459] = "\xfb\x63", [21461] = "\xe0\xe0", + [21466] = "\x8c\x5d", [21469] = "\x94\xc7", [21470] = "\xe0\xe1", + [21473] = "\xe0\xfc", [21477] = "\xfb\x66", [21480] = "\xe0\xe7", + [21486] = "\x8c\xbb", [21491] = "\x8b\x85", [21493] = "\xe0\xe4", + [21494] = "\x97\x9d", [21495] = "\xfb\x65", [21497] = "\x97\xae", + [21522] = "\x91\xf4", [21525] = "\xe0\xe6", [21526] = "\xfb\x67", + [21529] = "\xfb\x69", [21530] = "\xfb\x68", [21534] = "\xfb\x6a", + [21538] = "\xe0\xe8", [21539] = "\x97\xd4", [21540] = "\x8b\xd5", + [21541] = "\x94\xfa", [21542] = "\x94\x69", [21546] = "\xe0\xe9", + [21551] = "\xe0\xeb", [21553] = "\xe0\xee", [21573] = "\xe0\xea", + [21577] = "\xe0\xed", [21578] = "\x8c\xe8", [21579] = "\x89\x6c", + [21580] = "\xe0\xef", [21582] = "\x90\x90", [21583] = "\xe0\xec", + [21584] = "\x97\xda", [21586] = "\xfb\x6b", [21587] = "\xe0\xf2", + [21588] = "\xea\xa2", [21593] = "\xe0\xf0", [21594] = "\xe0\xf3", + [21599] = "\xe0\xe5", [21600] = "\xe0\xf1", [21603] = "\x8d\xba", + [21606] = "\xe0\xf4", [21614] = "\xe0\xf5", [21619] = "\x97\x9e", + [21625] = "\xfb\x6c", [21627] = "\xe0\xf6", [21646] = "\xe0\xf7", + [21647] = "\xfb\x6d", [21650] = "\xe0\xe3", [21655] = "\xe0\xf8", + [21664] = "\x8a\xc2", [21677] = "\x8e\xa3", [21690] = "\xe0\xf9", + [21695] = "\xe0\xfa", [21700] = "\xe0\xfb", [21708] = "\x89\x5a", + [21712] = "\xe1\x40", [21714] = "\x95\x5a", [21715] = "\xe1\x41", + [21718] = "\x8a\xa2", [21719] = "\xe1\x42", [21721] = "\xe1\x43", + [21726] = "\xe1\x44", [21728] = "\xe1\x46", [21729] = "\xe1\x47", + [21730] = "\xe1\x45", [21734] = "\x95\x72", [21735] = "\xe1\x49", + [21736] = "\xe1\x48", [21745] = "\xfb\x6e", [21747] = "\xe1\x4b", + [21748] = "\xe1\x4a", [21749] = "\xe1\x4c", [21756] = "\xe1\x4d", + [21757] = "\xe1\x4f", [21758] = "\xe1\x4e", [21761] = "\x8d\x99", + [21763] = "\xe1\x51", [21765] = "\xe1\x50", [21768] = "\x8a\xc3", + [21770] = "\x90\x72", [21772] = "\x93\x5b", [21774] = "\xe1\x52", + [21775] = "\x90\xb6", [21779] = "\x8e\x59", [21781] = "\x89\x99", + [21782] = "\xe1\x53", [21784] = "\x97\x70", [21787] = "\x95\xe1", + [21788] = "\xe1\x54", [21791] = "\xfa\xa8", [21792] = "\x93\x63", + [21793] = "\x97\x52", [21794] = "\x8d\x62", [21795] = "\x90\x5c", + [21799] = "\x92\x6a", [21800] = "\x99\xb2", [21802] = "\x92\xac", + [21803] = "\x89\xe6", [21804] = "\xe1\x55", [21812] = "\xe1\x56", + [21814] = "\xe1\x5b", [21817] = "\xe1\x59", [21818] = "\xe1\x58", + [21819] = "\x9d\xc0", [21820] = "\x8a\x45", [21821] = "\xe1\x57", + [21823] = "\x88\xd8", [21825] = "\x94\xa8", [21828] = "\x94\xc8", + [21833] = "\x97\xaf", [21834] = "\xe1\x5c", [21835] = "\xe1\x5a", + [21836] = "\x92\x7b", [21837] = "\x90\xa4", [21840] = "\x94\xa9", + [21842] = "\x95\x4c", [21844] = "\xe1\x5e", [21845] = "\x97\xaa", + [21846] = "\x8c\x6c", [21847] = "\xe1\x5f", [21849] = "\xe1\x5d", + [21850] = "\x94\xd4", [21851] = "\xe1\x60", [21853] = "\xe1\x61", + [21855] = "\xfb\x6f", [21856] = "\x88\xd9", [21859] = "\x8f\xf4", + [21860] = "\xe1\x66", [21862] = "\xe1\x63", [21863] = "\x93\xeb", + [21864] = "\xe1\x62", [21871] = "\x8b\x45", [21874] = "\xe1\x69", + [21878] = "\xe1\x64", [21879] = "\xe1\x65", [21881] = "\xe1\x68", + [21882] = "\xe1\x67", [21883] = "\x95\x44", [21886] = "\x91\x61", + [21887] = "\x91\x60", [21889] = "\x8b\x5e", [21892] = "\xe1\x6a", + [21898] = "\xe1\x6b", [21901] = "\xe1\x6c", [21907] = "\xe1\x6e", + [21909] = "\xe1\x6d", [21915] = "\x89\x75", [21921] = "\xe1\x76", + [21922] = "\x94\xe6", [21923] = "\xe1\x70", [21925] = "\xe1\x72", + [21928] = "\xe1\x74", [21929] = "\x90\x5d", [21932] = "\xe1\x75", + [21933] = "\xe1\x73", [21934] = "\x8e\xbe", [21938] = "\xe1\x6f", + [21939] = "\xe1\x71", [21941] = "\x95\x61", [21943] = "\x8f\xc7", + [21946] = "\xe1\x78", [21949] = "\xe1\x77", [21954] = "\xe1\x79", + [21956] = "\x8e\xa4", [21957] = "\x8d\xad", [21960] = "\x93\x97", + [21961] = "\xe1\x7a", [21963] = "\x92\xc9", [21966] = "\xe1\x7c", + [21970] = "\x97\x9f", [21971] = "\xe1\x7b", [21977] = "\x91\x89", + [21984] = "\xe1\x82", [21986] = "\xe1\x84", [21987] = "\xe1\x85", + [21988] = "\x92\x73", [21994] = "\xe1\x83", [21996] = "\xe1\x80", + [21998] = "\xe1\x7d", [21999] = "\xe1\x7e", [22001] = "\xe1\x81", + [22009] = "\xe1\x88", [22011] = "\xe1\x86", [22013] = "\xe1\x87", + [22031] = "\xe1\x89", [22032] = "\xe1\x8b", [22033] = "\xe1\x8c", + [22034] = "\xe1\x8d", [22036] = "\xe1\x8e", [22039] = "\xe1\x8a", + [22048] = "\xe1\x90", [22052] = "\xe1\x8f", [22059] = "\xe1\x91", + [22066] = "\x97\xc3", [22070] = "\xe1\x94", [22071] = "\xe1\x92", + [22072] = "\xe1\x93", [22076] = "\x8a\xe0", [22082] = "\x96\xfc", + [22086] = "\x95\xc8", [22088] = "\xe1\x96", [22092] = "\xe1\x95", + [22097] = "\xe1\x97", [22098] = "\xe1\x98", [22103] = "\xe1\x9c", + [22104] = "\xe1\x99", [22105] = "\xe1\x9a", [22106] = "\xe1\x9b", + [22108] = "\xe1\x9d", [22112] = "\xe1\x9e", [22114] = "\xe1\x9f", + [22118] = "\xe1\xa0", [22120] = "\xe1\xa1", [22122] = "\x94\xad", + [22123] = "\x93\x6f", [22124] = "\xe1\xa2", [22125] = "\x94\x92", + [22126] = "\x95\x53", [22128] = "\xe1\xa3", [22130] = "\xfb\x70", + [22131] = "\xe1\xa4", [22132] = "\x93\x49", [22134] = "\x8a\x46", + [22135] = "\x8d\x63", [22136] = "\xe1\xa5", [22139] = "\xe1\xa6", + [22142] = "\xe1\xa7", [22144] = "\x8e\x48", [22147] = "\xe1\xa9", + [22150] = "\xe1\xa8", [22153] = "\xe1\xaa", [22154] = "\xe1\xab", + [22155] = "\xfb\x73", [22156] = "\xfb\x71", [22158] = "\xfb\x72", + [22166] = "\xfb\x74", [22174] = "\x94\xe7", [22176] = "\xe1\xac", + [22180] = "\xe1\xad", [22183] = "\xea\x89", [22184] = "\xe1\xae", + [22185] = "\xe1\xaf", [22186] = "\xe1\xb0", [22191] = "\x8e\x4d", + [22194] = "\xe1\xb1", [22195] = "\x94\x75", [22198] = "\x96\x7e", + [22200] = "\x89\x6d", [22202] = "\x89\x76", [22205] = "\xe1\xb2", + [22210] = "\xe1\xb4", [22214] = "\xe1\xb3", [22215] = "\x93\x90", + [22219] = "\x90\xb7", [22220] = "\x9f\x58", [22222] = "\xe1\xb5", + [22223] = "\x96\xbf", [22225] = "\xe1\xb6", [22227] = "\x8a\xc4", + [22228] = "\x94\xd5", [22229] = "\xe1\xb7", [22231] = "\xe1\xb8", + [22234] = "\xe1\xb9", [22238] = "\x96\xda", [22242] = "\x96\xd3", + [22244] = "\x92\xbc", [22248] = "\x91\x8a", [22251] = "\xe1\xbb", + [22254] = "\x8f\x82", [22257] = "\x8f\xc8", [22260] = "\xe1\xbe", + [22263] = "\xe1\xbd", [22264] = "\xe1\xbc", [22265] = "\x94\xfb", + [22267] = "\x8a\xc5", [22268] = "\x8c\xa7", [22283] = "\xe1\xc4", + [22286] = "\xe1\xc1", [22287] = "\x90\x5e", [22288] = "\x96\xb0", + [22292] = "\xe1\xc0", [22293] = "\xe1\xc2", [22294] = "\xe1\xc3", + [22297] = "\xe1\xbf", [22311] = "\xe1\xc5", [22312] = "\xe1\xc6", + [22314] = "\x92\xad", [22316] = "\x8a\xe1", [22320] = "\x92\x85", + [22326] = "\xfb\x76", [22327] = "\xe1\xc7", [22346] = "\xe1\xc8", + [22347] = "\xe1\xcb", [22353] = "\x90\x87", [22355] = "\x93\xc2", + [22357] = "\xe1\xcc", [22358] = "\x96\x72", [22360] = "\xe1\xc9", + [22363] = "\xe1\xca", [22377] = "\xe1\xcf", [22382] = "\xe1\xce", + [22383] = "\xe1\xcd", [22395] = "\xe1\xd1", [22398] = "\xe1\xd0", + [22401] = "\xe1\xd2", [22414] = "\xe1\xd4", [22416] = "\xe1\xd3", + [22421] = "\x95\xcb", [22428] = "\x8f\x75", [22429] = "\x97\xc4", + [22432] = "\xe1\xd5", [22435] = "\x93\xb5", [22438] = "\xe1\xd6", + [22441] = "\xe1\xd7", [22443] = "\xe1\xdb", [22444] = "\xe1\xd9", + [22445] = "\xe1\xda", [22447] = "\xe1\xd8", [22455] = "\xe1\xdc", + [22461] = "\xe1\xdd", [22471] = "\xe1\xde", [22474] = "\xe1\xdf", + [22475] = "\x96\xb5", [22476] = "\xe1\xe0", [22482] = "\x96\xee", + [22483] = "\xe1\xe1", [22485] = "\x92\x6d", [22487] = "\x94\x8a", + [22489] = "\x8b\xe9", [22493] = "\x92\x5a", [22494] = "\xe1\xe2", + [22495] = "\x8b\xb8", [22499] = "\x90\xce", [22508] = "\xe1\xe3", + [22514] = "\x8d\xbb", [22524] = "\xe1\xe4", [22530] = "\xe1\xe5", + [22532] = "\x8c\xa4", [22533] = "\x8d\xd3", [22544] = "\xe1\xe7", + [22545] = "\xfb\x78", [22549] = "\x93\x75", [22550] = "\x8d\xd4", + [22551] = "\x8b\x6d", [22562] = "\x96\x43", [22564] = "\x94\x6a", + [22570] = "\x93\x76", [22575] = "\x8d\x7b", [22581] = "\xe1\xe9", + [22590] = "\xfb\x79", [22605] = "\x8f\xc9", [22612] = "\xfb\x7a", + [22619] = "\x97\xb0", [22620] = "\x8d\x64", [22623] = "\x8c\xa5", + [22626] = "\x94\xa1", [22628] = "\xe1\xeb", [22634] = "\xfb\x7b", + [22636] = "\xe1\xed", [22641] = "\x8c\xe9", [22646] = "\xe1\xec", + [22647] = "\x92\xf4", [22652] = "\xe1\xef", [22653] = "\x8a\x56", + [22654] = "\xe1\xea", [22657] = "\x94\xe8", [22659] = "\x89\x4f", + [22661] = "\x8d\xea", [22663] = "\x98\x71", [22666] = "\xe1\xee", + [22675] = "\xe1\xf0", [22679] = "\x95\xc9", [22681] = "\x90\xd7", + [22682] = "\xe1\xf2", [22687] = "\xe1\xf3", [22693] = "\xe1\xf1", + [22698] = "\x8a\x6d", [22700] = "\xe1\xf9", [22702] = "\xe1\xf8", + [22705] = "\x8e\xa5", [22709] = "\xe1\xfa", [22710] = "\xe1\xf5", + [22714] = "\xe1\xfb", [22715] = "\xe1\xf6", [22720] = "\x94\xd6", + [22721] = "\xe1\xf4", [22724] = "\xe1\xf7", [22730] = "\xe2\x41", + [22743] = "\xe2\x40", [22744] = "\x96\x81", [22748] = "\xe1\xfc", + [22751] = "\x88\xe9", [22756] = "\xe2\x43", [22765] = "\xe2\x42", + [22769] = "\x8f\xca", [22775] = "\xe2\x44", [22782] = "\x91\x62", + [22785] = "\xe2\x46", [22786] = "\xe2\x45", [22793] = "\xe2\x47", + [22806] = "\xe1\xe6", [22810] = "\xe1\xe8", [22811] = "\xe2\x49", + [22812] = "\xe2\x48", [22816] = "\xfb\x7c", [22826] = "\x8e\xa6", + [22828] = "\x97\xe7", [22830] = "\x8e\xd0", [22832] = "\xe2\x4a", + [22833] = "\x8c\x56", [22839] = "\x8b\x5f", [22840] = "\x8b\x46", + [22841] = "\x8e\x83", [22848] = "\x97\x53", [22851] = "\xe2\x50", + [22853] = "\xe2\x4f", [22854] = "\x91\x63", [22855] = "\xe2\x4c", + [22858] = "\xe2\x4e", [22861] = "\x8f\x6a", [22862] = "\x90\x5f", + [22863] = "\xe2\x4d", [22864] = "\xe2\x4b", [22866] = "\x94\x49", + [22869] = "\x8f\xcb", [22872] = "\x95\x5b", [22877] = "\x8d\xd5", + [22887] = "\x93\x98", [22890] = "\xe2\x51", [22895] = "\xe2\x52", + [22896] = "\xe2\x68", [22897] = "\x8b\xd6", [22900] = "\x98\x5c", + [22901] = "\x91\x54", [22906] = "\xe2\x53", [22909] = "\x89\xd0", + [22910] = "\x92\xf5", [22911] = "\x95\x9f", [22916] = "\xfb\x81", + [22923] = "\xfb\x83", [22925] = "\xe2\x54", [22934] = "\x8b\x9a", + [22935] = "\xe2\x55", [22938] = "\xe2\x57", [22942] = "\xe2\x58", + [22944] = "\x94\x48", [22947] = "\xe2\x59", [22953] = "\xe2\x5a", + [22954] = "\xe2\x5b", [22957] = "\x8b\xd7", [22958] = "\x89\xd1", + [22959] = "\x93\xc3", [22960] = "\x8f\x47", [22961] = "\x8e\x84", + [22969] = "\xe2\x5c", [22971] = "\x8f\x48", [22977] = "\x89\xc8", + [22978] = "\x95\x62", [22981] = "\xe2\x5d", [22984] = "\x94\xe9", + [22991] = "\x91\x64", [22993] = "\xe2\x60", [22995] = "\xe2\x61", + [22996] = "\x94\x89", [22998] = "\x90\x60", [22999] = "\xe2\x5e", + [23001] = "\x92\x81", [23004] = "\xe2\x5f", [23008] = "\x8f\xcc", + [23019] = "\x88\xda", [23024] = "\x8b\x48", [23032] = "\xe2\x62", + [23035] = "\x92\xf6", [23037] = "\xe2\x63", [23038] = "\x90\xc5", + [23044] = "\x96\xab", [23047] = "\x95\x42", [23048] = "\xe2\x64", + [23049] = "\xe2\x65", [23050] = "\x92\x74", [23052] = "\x97\xc5", + [23055] = "\xe2\x67", [23056] = "\xe2\x66", [23070] = "\x8e\xed", + [23073] = "\xe2\x69", [23074] = "\x88\xee", [23079] = "\xe2\x6c", + [23083] = "\xe2\x6a", [23084] = "\x89\xd2", [23085] = "\x8c\x6d", + [23086] = "\xe2\x6b", [23087] = "\x8d\x65", [23088] = "\x8d\x92", + [23090] = "\x95\xe4", [23091] = "\xe2\x6d", [23094] = "\x96\x73", + [23097] = "\xe2\x6f", [23101] = "\x90\xcf", [23102] = "\x89\x6e", + [23103] = "\x89\xb8", [23104] = "\x88\xaa", [23111] = "\xe2\x6e", + [23121] = "\xe2\x70", [23122] = "\xe2\x71", [23123] = "\x8f\xf5", + [23129] = "\xe2\x72", [23131] = "\x8a\x6e", [23136] = "\xe2\x74", + [23140] = "\x8c\x8a", [23142] = "\x8b\x86", [23145] = "\xe2\x75", + [23146] = "\x8b\xf3", [23149] = "\xe2\x76", [23151] = "\x90\xfa", + [23153] = "\x93\xcb", [23155] = "\x90\xde", [23156] = "\x8d\xf3", + [23160] = "\xe2\x77", [23170] = "\x92\x82", [23171] = "\x91\x8b", + [23173] = "\xe2\x79", [23174] = "\xe2\x7b", [23175] = "\xe2\x78", + [23176] = "\xe2\x7a", [23183] = "\x8c\x41", [23193] = "\xe2\x7c", + [23194] = "\x8c\x45", [23198] = "\x8b\x87", [23199] = "\x97\x71", + [23200] = "\xe2\x7e", [23206] = "\xe2\x80", [23210] = "\x89\x4d", + [23215] = "\xe2\x83", [23219] = "\x8a\x96", [23220] = "\xe2\x82", + [23221] = "\xe2\x81", [23223] = "\xe2\x85", [23224] = "\xe2\x7d", + [23226] = "\xe2\x86", [23227] = "\x97\xa7", [23229] = "\xe2\x87", + [23231] = "\xe2\x88", [23233] = "\xfb\x84", [23234] = "\x9a\xf2", + [23235] = "\xe2\x8a", [23237] = "\xe2\x89", [23241] = "\xe2\x8b", + [23242] = "\xe2\x8c", [23244] = "\x97\xb3", [23245] = "\xe2\x8d", + [23247] = "\xe8\xed", [23248] = "\x8f\xcd", [23249] = "\xe2\x8e", + [23250] = "\xe2\x8f", [23251] = "\x8f\x76", [23253] = "\x93\xb6", + [23254] = "\xe2\x90", [23255] = "\xfb\x85", [23258] = "\x92\x47", + [23259] = "\xfb\x87", [23261] = "\xe2\x91", [23263] = "\x92\x5b", + [23264] = "\xe2\x92", [23270] = "\x8b\xa3", [23272] = "\x99\x5e", + [23273] = "\x92\x7c", [23274] = "\x8e\xb1", [23279] = "\x8a\xc6", + [23282] = "\xe2\x93", [23284] = "\xe2\xa0", [23286] = "\xe2\x96", + [23288] = "\x8b\x88", [23290] = "\xe2\x95", [23291] = "\xe2\xa2", + [23295] = "\xe2\x94", [23297] = "\x8f\xce", [23304] = "\xe2\x98", + [23305] = "\xe2\x99", [23307] = "\x93\x4a", [23310] = "\xe2\x9a", + [23312] = "\x8a\x7d", [23317] = "\x90\x79", [23318] = "\x95\x84", + [23320] = "\xe2\x9c", [23324] = "\x91\xe6", [23331] = "\xe2\x97", + [23333] = "\xe2\x9b", [23334] = "\xe2\x9d", [23337] = "\x8d\xf9", + [23349] = "\xe2\xa4", [23350] = "\x95\x4d", [23352] = "\x94\xa4", + [23353] = "\x93\x99", [23355] = "\x8b\xd8", [23356] = "\xe2\xa3", + [23357] = "\xe2\xa1", [23359] = "\x94\xb3", [23360] = "\xe2\x9e", + [23361] = "\x92\x7d", [23362] = "\x93\x9b", [23364] = "\x93\x9a", + [23366] = "\x8d\xf4", [23373] = "\xe2\xb6", [23381] = "\xe2\xa6", + [23383] = "\xe2\xa8", [23388] = "\xe2\xab", [23390] = "\xe2\xac", + [23392] = "\xe2\xa9", [23393] = "\xe2\xaa", [23396] = "\xe2\xa7", + [23397] = "\xe2\xa5", [23402] = "\xe2\x9f", [23414] = "\x95\xcd", + [23415] = "\x89\xd3", [23419] = "\xe2\xb3", [23421] = "\xe2\xb0", + [23423] = "\xe2\xb5", [23426] = "\xe2\xb4", [23428] = "\x94\x93", + [23429] = "\x96\xa5", [23431] = "\x8e\x5a", [23432] = "\xe2\xae", + [23433] = "\xe2\xb7", [23434] = "\xe2\xb2", [23436] = "\xe2\xb1", + [23437] = "\xe2\xad", [23438] = "\xfb\x88", [23439] = "\xe2\xaf", + [23441] = "\x8a\xc7", [23450] = "\x92\x5c", [23453] = "\x90\xfb", + [23457] = "\x94\xa0", [23460] = "\xe2\xbc", [23464] = "\x94\xa2", + [23472] = "\x90\xdf", [23473] = "\xe2\xb9", [23476] = "\x94\xcd", + [23478] = "\xe2\xbd", [23479] = "\x95\xd1", [23481] = "\x92\x7a", + [23483] = "\xe2\xb8", [23484] = "\xe2\xba", [23487] = "\xe2\xbb", + [23501] = "\xe2\xbe", [23504] = "\x8e\xc2", [23508] = "\x93\xc4", + [23509] = "\xe2\xc3", [23510] = "\xe2\xc2", [23513] = "\xe2\xbf", + [23517] = "\x98\x55", [23523] = "\xe2\xc8", [23526] = "\xe2\xcc", + [23527] = "\xe2\xc9", [23536] = "\xe2\xc5", [23543] = "\xe2\xc6", + [23549] = "\xe2\xcb", [23553] = "\xe2\xc0", [23554] = "\x99\xd3", + [23555] = "\xe2\xc7", [23556] = "\xe2\xc1", [23559] = "\xe2\xca", + [23567] = "\xe2\xd0", [23569] = "\x8a\xc8", [23571] = "\xe2\xcd", + [23575] = "\xe2\xce", [23578] = "\xe2\xcf", [23579] = "\xe2\xd2", + [23591] = "\xe2\xd1", [23592] = "\x94\xf4", [23597] = "\xe2\xd3", + [23598] = "\x97\xfa", [23599] = "\x95\xeb", [23600] = "\xe2\xd8", + [23603] = "\xe2\xd5", [23612] = "\xe2\xd4", [23613] = "\x90\xd0", + [23615] = "\xe2\xd7", [23616] = "\xe2\xd9", [23620] = "\xe2\xd6", + [23622] = "\xe2\xdd", [23624] = "\xe2\xda", [23631] = "\xe2\xdb", + [23632] = "\xe2\xc4", [23636] = "\xe2\xdc", [23637] = "\xe2\xde", + [23644] = "\xe2\xdf", [23651] = "\x95\xc4", [23653] = "\xe2\xe0", + [23662] = "\x96\xe0", [23665] = "\x8b\xcc", [23666] = "\x8c\x48", + [23667] = "\xe2\xe1", [23673] = "\x95\xb2", [23675] = "\x90\x88", + [23677] = "\x96\xae", [23680] = "\xe2\xe2", [23682] = "\x97\xb1", + [23685] = "\x94\x94", [23687] = "\x91\x65", [23688] = "\x94\x53", + [23691] = "\x8f\x6c", [23695] = "\x88\xbe", [23697] = "\xe2\xe7", + [23698] = "\xe2\xe5", [23700] = "\xe2\xe3", [23701] = "\x8a\x9f", + [23703] = "\x8f\xcf", [23704] = "\xe2\xe8", [23707] = "\xe2\xe6", + [23709] = "\xe2\xe4", [23710] = "\xe2\xec", [23713] = "\xe2\xeb", + [23714] = "\xe2\xea", [23715] = "\xe2\xe9", [23721] = "\xe2\xed", + [23725] = "\xe2\xee", [23726] = "\x90\xb8", [23728] = "\xe2\xef", + [23730] = "\xe2\xf1", [23733] = "\xe2\xf0", [23738] = "\x8c\xd0", + [23742] = "\x91\x57", [23746] = "\xe2\xf3", [23750] = "\x93\x9c", + [23752] = "\xe2\xf2", [23756] = "\xe2\xf4", [23758] = "\x95\xb3", + [23759] = "\x91\x8c", [23760] = "\x8d\x66", [23762] = "\xe2\xf5", + [23767] = "\x97\xc6", [23775] = "\xe2\xf7", [23778] = "\xe2\xf8", + [23780] = "\xe2\xf9", [23782] = "\xe2\xfa", [23784] = "\x8e\x85", + [23786] = "\xe2\xfb", [23787] = "\x8c\x6e", [23790] = "\x8b\x8a", + [23792] = "\x8b\x49", [23794] = "\xe3\x40", [23796] = "\x96\xf1", + [23797] = "\x8d\x67", [23798] = "\xe2\xfc", [23802] = "\xe3\x43", + [23803] = "\x96\xe4", [23805] = "\x94\x5b", [23808] = "\x95\x52", + [23812] = "\x8f\x83", [23813] = "\xe3\x42", [23815] = "\x8e\xd1", + [23816] = "\x8d\x68", [23817] = "\x8e\x86", [23818] = "\x8b\x89", + [23819] = "\x95\xb4", [23820] = "\xe3\x41", [23824] = "\x91\x66", + [23825] = "\x96\x61", [23826] = "\x8d\xf5", [23835] = "\x8e\x87", + [23836] = "\x92\xdb", [23838] = "\xe3\x46", [23839] = "\x97\xdd", + [23840] = "\x8d\xd7", [23842] = "\xe3\x47", [23843] = "\x90\x61", + [23845] = "\xe3\x49", [23849] = "\x8f\xd0", [23850] = "\x8d\xae", + [23855] = "\xe3\x48", [23858] = "\x8f\x49", [23859] = "\x8c\xbc", + [23860] = "\x91\x67", [23861] = "\xe3\x44", [23862] = "\xe3\x4a", + [23864] = "\xfb\x8a", [23867] = "\xe3\x45", [23868] = "\x8c\x6f", + [23870] = "\xe3\x4d", [23871] = "\xe3\x51", [23872] = "\x8c\x8b", + [23878] = "\xe3\x4c", [23883] = "\xe3\x55", [23884] = "\xfb\x8b", + [23886] = "\x8d\x69", [23889] = "\x97\x8d", [23890] = "\x88\xba", + [23891] = "\xe3\x52", [23894] = "\x8b\x8b", [23896] = "\xe3\x4f", + [23902] = "\xe3\x50", [23905] = "\x93\x9d", [23906] = "\xe3\x4e", + [23907] = "\xe3\x4b", [23909] = "\x8a\x47", [23910] = "\x90\xe2", + [23913] = "\x8c\xa6", [23917] = "\xe3\x57", [23929] = "\xe3\x54", + [23935] = "\xe3\x56", [23939] = "\xe3\x53", [23945] = "\x8c\x70", + [23946] = "\x91\xb1", [23947] = "\xe3\x58", [23948] = "\x91\x8e", + [23951] = "\xe3\x65", [23952] = "\xfb\x8d", [23954] = "\xe3\x61", + [23955] = "\xe3\x5b", [23963] = "\xe3\x5f", [23964] = "\x8e\xf8", + [23965] = "\x88\xdb", [23966] = "\xe3\x5a", [23967] = "\xe3\x62", + [23968] = "\xe3\x66", [23969] = "\x8d\x6a", [23970] = "\x96\xd4", + [23972] = "\x92\xd4", [23973] = "\xe3\x5c", [23975] = "\xfb\x8c", + [23976] = "\xe3\x64", [23978] = "\xe3\x59", [23979] = "\x92\x5d", + [23981] = "\xe3\x5e", [23982] = "\x88\xbb", [23983] = "\x96\xc8", + [23991] = "\xe3\x5d", [23994] = "\x8b\xd9", [23995] = "\x94\xea", + [23999] = "\x91\x8d", [24001] = "\x97\xce", [24002] = "\x8f\x8f", + [24005] = "\xe3\x8e", [24006] = "\xfb\x8e", [24008] = "\xe3\x67", + [24010] = "\x90\xfc", [24012] = "\xe3\x63", [24013] = "\xe3\x68", + [24014] = "\xe3\x6a", [24016] = "\x92\xf7", [24017] = "\xe3\x6d", + [24020] = "\xe3\x69", [24024] = "\x95\xd2", [24025] = "\x8a\xc9", + [24028] = "\x96\xc9", [24031] = "\x88\xdc", [24034] = "\xe3\x6c", + [24036] = "\x97\xfb", [24043] = "\xe3\x6b", [24049] = "\x89\x8f", + [24052] = "\x93\xea", [24053] = "\xe3\x6e", [24057] = "\xe3\x75", + [24058] = "\xe3\x6f", [24059] = "\xe3\x76", [24066] = "\xe3\x72", + [24075] = "\x94\x9b", [24078] = "\x8e\xc8", [24079] = "\xe3\x74", + [24081] = "\xe3\x71", [24082] = "\xe3\x77", [24083] = "\xe3\x70", + [24086] = "\x8f\x63", [24091] = "\x96\x44", [24094] = "\x8f\x6b", + [24097] = "\xe3\x73", [24098] = "\xe3\x80", [24101] = "\xe3\x7b", + [24103] = "\xe3\x7e", [24105] = "\xe3\x7c", [24106] = "\xe3\x81", + [24107] = "\xe3\x7a", [24109] = "\xe3\x60", [24110] = "\x90\xd1", + [24113] = "\x94\xc9", [24115] = "\xe3\x7d", [24118] = "\xe3\x78", + [24122] = "\x91\x40", [24123] = "\x8c\x71", [24125] = "\x8f\x4a", + [24130] = "\xfb\x8f", [24132] = "\x90\x44", [24133] = "\x91\x55", + [24134] = "\xe3\x84", [24137] = "\xe3\x86", [24138] = "\xe3\x87", + [24141] = "\xe3\x83", [24142] = "\xe3\x85", [24150] = "\xe3\x79", + [24151] = "\xe3\x82", [24153] = "\xe3\x8a", [24154] = "\xe3\x89", + [24157] = "\x96\x9a", [24160] = "\x8c\x4a", [24169] = "\xe3\x88", + [24171] = "\xe3\x8c", [24172] = "\xe3\x8b", [24173] = "\xe3\x8f", + [24175] = "\xe3\x91", [24178] = "\x8e\x5b", [24179] = "\xe3\x8d", + [24184] = "\xe3\x92", [24185] = "\xe3\x93", [24186] = "\xfa\x5c", + [24188] = "\xe3\x94", [24190] = "\xe3\x9a", [24191] = "\x93\x5a", + [24192] = "\xe3\x96", [24194] = "\xe3\x95", [24195] = "\xe3\x97", + [24196] = "\xe3\x98", [24198] = "\xe3\x99", [24203] = "\xe3\x9b", + [24204] = "\xe3\x9c", [24358] = "\x8a\xca", [24360] = "\xe3\x9d", + [24362] = "\xe3\x9e", [24373] = "\xe3\x9f", [24375] = "\xfb\x90", + [24380] = "\xe3\xa0", [24381] = "\xe3\xa1", [24382] = "\xe3\xa2", + [24384] = "\xe3\xa3", [24385] = "\xe3\xa4", [24388] = "\xe3\xa6", + [24389] = "\xe3\xa5", [24392] = "\xe3\xa7", [24399] = "\xe3\xa8", + [24400] = "\xe3\xa9", [24407] = "\xe3\xac", [24408] = "\xe3\xaa", + [24409] = "\xe3\xab", [24410] = "\x8d\xdf", [24411] = "\x8c\x72", + [24414] = "\x92\x75", [24416] = "\x94\xb1", [24418] = "\x8f\x90", + [24421] = "\x94\x6c", [24423] = "\x94\xeb", [24424] = "\xe3\xad", + [24425] = "\x9c\xeb", [24434] = "\xe3\xae", [24435] = "\xe3\xb0", + [24437] = "\x97\x85", [24438] = "\xe3\xaf", [24439] = "\xe3\xb2", + [24440] = "\xe3\xb1", [24442] = "\x97\x72", [24444] = "\xe3\xb3", + [24446] = "\x94\xfc", [24452] = "\xe3\xb4", [24458] = "\xe3\xb7", + [24461] = "\xe3\xb6", [24462] = "\xe3\xb5", [24465] = "\xfb\x91", + [24467] = "\xe3\xb8", [24468] = "\x8c\x51", [24472] = "\x91\x41", + [24473] = "\x8b\x60", [24478] = "\xe3\xbc", [24479] = "\xe3\xb9", + [24482] = "\xe3\xba", [24486] = "\xe3\xbd", [24488] = "\xe3\xbe", + [24489] = "\xe3\xbb", [24493] = "\x89\x48", [24497] = "\x89\xa5", + [24501] = "\xe3\xc0", [24502] = "\xe3\xc1", [24506] = "\xe3\xc2", + [24508] = "\x97\x82", [24514] = "\x8f\x4b", [24516] = "\xe3\xc4", + [24517] = "\xe3\xc3", [24528] = "\x90\x89", [24529] = "\xe3\xc5", + [24534] = "\xe3\xc6", [24537] = "\xe3\xc7", [24539] = "\x8a\xe3", + [24544] = "\x8a\xcb", [24547] = "\xe3\xc8", [24553] = "\xe3\xc9", + [24555] = "\x96\x7c", [24556] = "\x97\x83", [24560] = "\x97\x73", + [24561] = "\x98\x56", [24563] = "\x8d\x6c", [24564] = "\xe3\xcc", + [24565] = "\x8e\xd2", [24566] = "\xe3\xcb", [24571] = "\xe3\xcd", + [24572] = "\x8e\xa7", [24576] = "\x91\xcf", [24578] = "\xe3\xce", + [24581] = "\x8d\x6b", [24583] = "\x96\xd5", [24584] = "\xe3\xcf", + [24585] = "\xe3\xd0", [24588] = "\xe3\xd1", [24593] = "\xe3\xd2", + [24600] = "\xe3\xd3", [24611] = "\x8e\xa8", [24614] = "\x96\xeb", + [24619] = "\xe3\xd5", [24621] = "\x92\x5e", [24623] = "\xe3\xd4", + [24630] = "\xe3\xd7", [24634] = "\xe3\xd6", [24642] = "\xe3\xd8", + [24646] = "\x90\xb9", [24648] = "\xe3\xd9", [24650] = "\xe3\xda", + [24654] = "\x95\xb7", [24655] = "\xe3\xdb", [24657] = "\x91\x8f", + [24658] = "\xe3\xdc", [24664] = "\xe3\xdd", [24671] = "\x97\xfc", + [24672] = "\xe3\xe0", [24674] = "\xe3\xdf", [24675] = "\xe3\xde", + [24676] = "\x92\xae", [24678] = "\xe3\xe1", [24679] = "\x90\x45", + [24681] = "\xe3\xe2", [24685] = "\xe3\xe3", [24686] = "\x98\x57", + [24687] = "\xe3\xe4", [24692] = "\xe3\xe5", [24693] = "\xe3\xe7", + [24694] = "\xe3\xe6", [24695] = "\x94\xa3", [24697] = "\x93\xf7", + [24699] = "\x98\x5d", [24700] = "\x94\xa7", [24707] = "\xe3\xe9", + [24710] = "\x8f\xd1", [24712] = "\x95\x49", [24714] = "\xe3\xea", + [24715] = "\xe3\xe8", [24717] = "\x8a\xcc", [24721] = "\x8c\xd2", + [24722] = "\x8e\x88", [24725] = "\x94\xec", [24729] = "\x8c\xa8", + [24730] = "\x96\x62", [24732] = "\xe3\xed", [24733] = "\xe3\xeb", + [24735] = "\x8d\x6d", [24737] = "\x8d\x6e", [24738] = "\x88\xe7", + [24740] = "\x8d\xe6", [24746] = "\x94\x78", [24755] = "\x88\xdd", + [24756] = "\xe3\xf2", [24758] = "\x92\x5f", [24764] = "\x94\x77", + [24766] = "\x91\xd9", [24774] = "\xe3\xf4", [24777] = "\xe3\xf0", + [24778] = "\xe3\xf3", [24779] = "\xe3\xee", [24781] = "\xe3\xf1", + [24782] = "\x96\x45", [24785] = "\x8c\xd3", [24788] = "\x88\xfb", + [24789] = "\xe3\xef", [24799] = "\xe3\xf6", [24801] = "\xe3\xf7", + [24804] = "\x93\xb7", [24808] = "\x8b\xb9", [24812] = "\xe4\x45", + [24813] = "\x94\x5c", [24818] = "\x8e\x89", [24821] = "\x8b\xba", + [24822] = "\x90\xc6", [24823] = "\x98\x65", [24824] = "\x96\xac", + [24825] = "\xe3\xf5", [24826] = "\x90\xd2", [24842] = "\x8b\x72", + [24843] = "\xe3\xf8", [24851] = "\xe3\xfa", [24857] = "\xe3\xf9", + [24863] = "\xe3\xfb", [24865] = "\x92\x45", [24867] = "\x94\x5d", + [24873] = "\x92\xaf", [24878] = "\xe4\x42", [24886] = "\xe4\x41", + [24891] = "\xe3\xfc", [24894] = "\x90\x74", [24896] = "\x95\x85", + [24897] = "\xe4\x44", [24899] = "\xe4\x43", [24900] = "\x8d\x6f", + [24901] = "\x98\x72", [24911] = "\xe4\x54", [24917] = "\xe4\x48", + [24918] = "\xe4\x49", [24923] = "\x8e\xee", [24926] = "\xe4\x47", + [24928] = "\x8d\x98", [24929] = "\xe4\x46", [24932] = "\xe4\x4a", + [24936] = "\x92\xb0", [24937] = "\x95\xa0", [24938] = "\x91\x42", + [24943] = "\x91\xda", [24944] = "\xe4\x4e", [24946] = "\xe4\x4f", + [24947] = "\xe4\x4b", [24952] = "\xe4\x4c", [24954] = "\xe4\x4d", + [24959] = "\x8d\x70", [24963] = "\xe4\x55", [24965] = "\xe4\x51", + [24970] = "\x95\x86", [24972] = "\x96\x8c", [24973] = "\x95\x47", + [24976] = "\xe4\x50", [24979] = "\xe4\x53", [24980] = "\xe4\x52", + [24984] = "\x96\x63", [24985] = "\xe4\x56", [24992] = "\xe4\x57", + [24995] = "\x91\x56", [24997] = "\xe4\x58", [25000] = "\xe4\x5a", + [25002] = "\xe4\x5e", [25005] = "\xe4\x5b", [25006] = "\xe4\x59", + [25007] = "\x94\x5e", [25008] = "\xe4\x5c", [25010] = "\xe4\x5d", + [25014] = "\x89\xb0", [25016] = "\xe4\x64", [25017] = "\xe4\x5f", + [25021] = "\xe4\x60", [25025] = "\xe4\x61", [25027] = "\x91\x9f", + [25032] = "\xe4\x63", [25033] = "\xe4\x62", [25034] = "\xe4\x65", + [25039] = "\xe4\x66", [25040] = "\xe4\x67", [25043] = "\x90\x62", + [25045] = "\x89\xe7", [25047] = "\xe4\x68", [25048] = "\x97\xd5", + [25050] = "\x8e\xa9", [25053] = "\x8f\x4c", [25059] = "\x8e\x8a", + [25060] = "\x92\x76", [25066] = "\xe4\x69", [25067] = "\xe4\x6a", + [25068] = "\x89\x50", [25070] = "\xe4\x6b", [25073] = "\xe4\x6c", + [25074] = "\xe4\x6d", [25077] = "\xe4\x6e", [25079] = "\xe4\x6f", + [25080] = "\x8b\xbb", [25081] = "\x9d\xa8", [25082] = "\xe4\x70", + [25084] = "\x90\xe3", [25085] = "\xe4\x71", [25086] = "\x8e\xc9", + [25088] = "\xe4\x72", [25090] = "\x98\xae", [25094] = "\xe4\x73", + [25095] = "\x95\xdc", [25096] = "\x8a\xda", [25099] = "\x91\x43", + [25100] = "\x8f\x77", [25102] = "\x95\x91", [25103] = "\x8f\x4d", + [25113] = "\xe4\x74", [25114] = "\x8d\x71", [25115] = "\xe4\x75", + [25116] = "\x94\xca", [25118] = "\xe4\x84", [25123] = "\xe4\x77", + [25125] = "\x91\xc7", [25126] = "\x94\x95", [25127] = "\x8c\xbd", + [25128] = "\xe4\x76", [25129] = "\x91\x44", [25136] = "\xe4\x78", + [25143] = "\x92\xf8", [25160] = "\xe4\x7a", [25161] = "\xe4\x79", + [25162] = "\xe4\x7c", [25165] = "\xe4\x7b", [25167] = "\xe4\x7d", + [25170] = "\xe4\x80", [25172] = "\xe4\x7e", [25174] = "\x8a\xcd", + [25176] = "\xe4\x81", [25178] = "\xe4\x82", [25179] = "\xe4\x83", + [25182] = "\x8d\xaf", [25183] = "\x97\xc7", [25185] = "\xe4\x85", + [25186] = "\x90\x46", [25190] = "\x89\x90", [25191] = "\xe4\x86", + [25192] = "\xe4\x87", [25198] = "\xe4\x88", [25211] = "\x88\xf0", + [25213] = "\xe4\x89", [25218] = "\xe4\x8a", [25225] = "\x95\x87", + [25229] = "\x8e\xc5", [25231] = "\xe4\x8c", [25237] = "\x8a\x48", + [25238] = "\x88\xb0", [25243] = "\xe4\x8b", [25244] = "\xe4\x8e", + [25245] = "\x94\x6d", [25247] = "\x90\x63", [25249] = "\x89\xd4", + [25251] = "\x96\x46", [25256] = "\x8c\x7c", [25257] = "\x8b\xda", + [25259] = "\xe4\x8d", [25261] = "\x89\xe8", [25269] = "\x8a\xa1", + [25281] = "\x89\x91", [25282] = "\xe4\x92", [25283] = "\x97\xe8", + [25284] = "\x91\xdb", [25287] = "\x95\x63", [25289] = "\xe4\x9e", + [25291] = "\x89\xd5", [25292] = "\xe4\x9c", [25294] = "\xe4\x9a", + [25295] = "\xe4\x91", [25297] = "\xe4\x8f", [25299] = "\xe4\x90", + [25301] = "\x8e\xe1", [25302] = "\x8b\xea", [25303] = "\x92\x97", + [25307] = "\x93\xcf", [25313] = "\x89\x70", [25315] = "\xe4\x94", + [25316] = "\xe4\x93", [25321] = "\xe4\x99", [25322] = "\xe4\x95", + [25323] = "\xe4\x98", [25329] = "\xfb\x93", [25330] = "\x96\xce", + [25331] = "\xe4\x97", [25332] = "\x89\xd6", [25333] = "\x8a\x9d", + [25334] = "\xe4\x9b", [25337] = "\xe4\x9d", [25342] = "\x8c\x73", + [25350] = "\xe4\xa1", [25351] = "\xe4\xaa", [25352] = "\xe4\xab", + [25356] = "\x88\xa9", [25363] = "\xe4\xb2", [25368] = "\x88\xef", + [25371] = "\xe4\xa9", [25375] = "\xe4\xa8", [25377] = "\xe4\xa3", + [25378] = "\xe4\xa2", [25380] = "\xe4\xa0", [25381] = "\xe4\x9f", + [25382] = "\x92\x83", [25384] = "\x91\xf9", [25385] = "\xe4\xa5", + [25392] = "\xe4\xa4", [25397] = "\xe4\xa7", [25401] = "\x91\x90", + [25402] = "\x8c\x74", [25407] = "\x89\x60", [25408] = "\xe4\xa6", + [25410] = "\x8d\x72", [25416] = "\x91\x91", [25426] = "\xfb\x94", + [25443] = "\xe4\xb8", [25445] = "\xe4\xb9", [25447] = "\x89\xd7", + [25451] = "\x89\xac", [25452] = "\xe4\xb6", [25455] = "\xfb\x95", + [25461] = "\xe4\xac", [25463] = "\xe4\xb4", [25465] = "\xe4\xbb", + [25466] = "\xe4\xb5", [25470] = "\xe4\xb3", [25475] = "\xe4\x96", + [25478] = "\xe4\xb1", [25482] = "\xe4\xad", [25486] = "\x8a\xce", + [25487] = "\xe4\xaf", [25488] = "\xe4\xba", [25490] = "\xe4\xb0", + [25496] = "\xe4\xbc", [25498] = "\xe4\xae", [25499] = "\x94\x9c", + [25505] = "\x97\x89", [25509] = "\xe4\xb7", [25517] = "\xe4\xcd", + [25521] = "\xe4\xc5", [25525] = "\x90\x9b", [25527] = "\xfb\x96", + [25530] = "\x8b\x65", [25532] = "\x8b\xdb", [25534] = "\xe4\xc0", + [25539] = "\x89\xd9", [25542] = "\x8f\xd2", [25544] = "\xe4\xc3", + [25548] = "\x8d\xd8", [25551] = "\x93\x70", [25552] = "\xe4\xc8", + [25561] = "\x95\xec", [25563] = "\xe4\xbf", [25567] = "\x89\xd8", + [25568] = "\x8c\xd4", [25569] = "\x95\x48", [25570] = "\xe4\xc9", + [25572] = "\xe4\xbd", [25574] = "\xfb\x97", [25575] = "\xe4\xc6", + [25579] = "\xe4\xd0", [25581] = "\xe4\xc1", [25587] = "\xe4\xc2", + [25588] = "\x93\xb8", [25591] = "\xe4\xc7", [25595] = "\xe4\xc4", + [25596] = "\x96\x47", [25597] = "\xe4\xca", [25598] = "\x88\xde", + [25603] = "\xe4\xbe", [25616] = "\xe4\xcc", [25618] = "\xe4\xcb", + [25625] = "\x94\x8b", [25626] = "\xe4\xd2", [25628] = "\xe4\xdd", + [25633] = "\x8a\x9e", [25637] = "\xe4\xe0", [25640] = "\xe4\xce", + [25644] = "\xe4\xd3", [25645] = "\x97\x8e", [25654] = "\xe4\xdc", + [25656] = "\xfb\x98", [25657] = "\x97\x74", [25662] = "\x97\xa8", + [25671] = "\x92\x98", [25675] = "\x8a\x8b", [25681] = "\x95\x92", + [25682] = "\xe4\xe2", [25683] = "\x93\x9f", [25686] = "\x88\xaf", + [25689] = "\xe4\xdb", [25691] = "\xe4\xd7", [25692] = "\x91\x92", + [25693] = "\xe4\xd1", [25694] = "\xe4\xd9", [25695] = "\xe4\xde", + [25697] = "\x94\x4b", [25701] = "\x88\xa8", [25703] = "\xe4\xd6", + [25705] = "\xe4\xdf", [25706] = "\x95\x98", [25714] = "\xe4\xda", + [25716] = "\xe4\xd5", [25723] = "\x8f\xd3", [25728] = "\x8f\x4e", + [25732] = "\x8e\xaa", [25737] = "\x96\xd6", [25740] = "\x95\x66", + [25743] = "\xe4\xe5", [25745] = "\xe4\xee", [25757] = "\xe4\xd8", + [25762] = "\x8a\x97", [25764] = "\xfb\x99", [25768] = "\x8f\xf6", + [25769] = "\xe4\xe3", [25771] = "\xe4\xe8", [25772] = "\x91\x93", + [25775] = "\xe4\xe4", [25777] = "\xe4\xeb", [25780] = "\x92\x7e", + [25782] = "\xe4\xec", [25785] = "\x97\x75", [25786] = "\xe4\xe1", + [25787] = "\x8a\x57", [25789] = "\xe4\xe7", [25792] = "\xe4\xea", + [25793] = "\x96\xaa", [25798] = "\xe4\xed", [25801] = "\xe4\xe6", + [25802] = "\xe4\xe9", [25804] = "\xfa\x60", [25820] = "\x96\x48", + [25822] = "\x98\x40", [25828] = "\xe4\xf1", [25836] = "\xe4\xf8", + [25839] = "\xe4\xf0", [25840] = "\x8e\xc1", [25846] = "\xe4\xcf", + [25857] = "\x95\xcc", [25859] = "\x96\xa0", [25860] = "\xe4\xf7", + [25861] = "\xe4\xf6", [25863] = "\xe4\xf2", [25864] = "\xe4\xf3", + [25866] = "\x89\x55", [25871] = "\xe4\xf5", [25873] = "\xe4\xef", + [25878] = "\x92\xd3", [25884] = "\xe4\xf4", [25885] = "\x88\xfc", + [25893] = "\x91\xa0", [25901] = "\x95\xc1", [25904] = "\xe4\xf9", + [25905] = "\xe5\x40", [25907] = "\x94\xd7", [25912] = "\xe4\xfc", + [25913] = "\x8f\xd4", [25914] = "\x8e\xc7", [25915] = "\xe5\x42", + [25918] = "\x8b\xbc", [25923] = "\xfb\x9a", [25925] = "\xe5\x43", + [25927] = "\x95\x99", [25928] = "\xe4\xfb", [25929] = "\xfb\x9b", + [25930] = "\xe4\xd4", [25939] = "\xe4\xfa", [25944] = "\x98\x6e", + [25945] = "\x93\xa0", [25946] = "\x95\x93", [25947] = "\xfb\x9c", + [25949] = "\xe5\x4a", [25959] = "\xe5\x50", [25966] = "\xe5\x51", + [25968] = "\xe5\x44", [25972] = "\x94\x96", [25975] = "\xe5\x4e", + [25976] = "\xe5\x46", [25978] = "\xe5\x48", [25984] = "\xe5\x52", + [25985] = "\xe5\x47", [25988] = "\xe5\x4b", [25991] = "\x89\x92", + [25993] = "\x93\xe3", [25995] = "\xe5\x4c", [25996] = "\xe5\x4f", + [26004] = "\xe5\x45", [26006] = "\x91\x45", [26008] = "\xe5\x49", + [26009] = "\x8e\x46", [26010] = "\x90\x64", [26011] = "\x8c\x4f", + [26012] = "\x96\xf2", [26014] = "\x96\xf7", [26015] = "\x8f\x92", + [26016] = "\xfb\x9e", [26025] = "\xe5\x56", [26026] = "\xe5\x54", + [26033] = "\x98\x6d", [26041] = "\xe5\x53", [26045] = "\x97\x95", + [26047] = "\xe5\x55", [26048] = "\xe5\x57", [26053] = "\xe5\x58", + [26060] = "\xe5\x5b", [26061] = "\xe5\x59", [26068] = "\x93\xa1", + [26069] = "\xe5\x5a", [26073] = "\x94\xcb", [26074] = "\xe5\x4d", + [26087] = "\x8f\x93", [26089] = "\xe5\x5c", [26090] = "\xe5\x61", + [26091] = "\x91\x94", [26094] = "\xe5\x60", [26098] = "\xe5\x41", + [26102] = "\xe5\x62", [26103] = "\x91\x68", [26106] = "\xe5\x5d", + [26107] = "\xe5\x5f", [26115] = "\xe5\x5e", [26118] = "\x9f\x50", + [26119] = "\x9f\x41", [26122] = "\xe5\x64", [26130] = "\xe5\x63", + [26141] = "\x97\x96", [26143] = "\xe1\xba", [26144] = "\xe5\x65", + [26159] = "\xe5\x66", [26173] = "\xe5\x67", [26174] = "\x8c\xd5", + [26176] = "\x8b\x73", [26180] = "\xe5\x69", [26181] = "\x99\x7c", + [26186] = "\x8b\x95", [26188] = "\x97\xb8", [26190] = "\x8b\xf1", + [26191] = "\xe5\x6a", [26199] = "\xe5\x6b", [26203] = "\x92\x8e", + [26209] = "\xe5\x6c", [26217] = "\x93\xf8", [26219] = "\x88\xb8", + [26234] = "\x89\xe1", [26235] = "\xe5\x71", [26236] = "\xe5\x72", + [26243] = "\xe5\x6d", [26245] = "\x8e\x5c", [26259] = "\xe5\x6e", + [26260] = "\x94\x61", [26265] = "\xe5\x6f", [26266] = "\xe5\x70", + [26267] = "\xe5\x7a", [26271] = "\xe5\x74", [26272] = "\xe5\x77", + [26278] = "\xe5\x73", [26292] = "\xe5\x75", [26294] = "\xe5\x76", + [26295] = "\x8e\xd6", [26297] = "\xe5\x78", [26299] = "\x92\x60", + [26301] = "\x8c\x75", [26302] = "\x8a\x61", [26308] = "\xe5\x7b", + [26313] = "\x8a\x5e", [26315] = "\xe5\x81", [26318] = "\xe5\x7c", + [26319] = "\xe5\x80", [26324] = "\x94\xb8", [26329] = "\xe5\x7d", + [26332] = "\xe5\x7e", [26333] = "\x95\x67", [26334] = "\x94\xd8", + [26335] = "\xe5\x82", [26344] = "\x91\xfb", [26345] = "\xe5\x8c", + [26347] = "\xe5\x88", [26350] = "\x89\xe9", [26352] = "\xe5\x86", + [26354] = "\x96\x49", [26355] = "\xe5\x87", [26358] = "\xe5\x84", + [26360] = "\xe5\x85", [26361] = "\xe5\x8a", [26362] = "\xe5\x8d", + [26365] = "\xe5\x8b", [26369] = "\xe5\x89", [26370] = "\xe5\x83", + [26376] = "\x92\x77", [26378] = "\xe5\x94", [26380] = "\x96\xa8", + [26389] = "\xe5\x92", [26393] = "\xe5\x93", [26404] = "\xe5\x8e", + [26407] = "\xe5\x90", [26411] = "\xe5\x91", [26415] = "\xe5\x8f", + [26425] = "\x90\xe4", [26427] = "\x98\x58", [26428] = "\xe5\x98", + [26430] = "\xe5\x99", [26435] = "\xe5\x9f", [26437] = "\x90\x49", + [26439] = "\xe5\x9b", [26441] = "\xe5\x9e", [26447] = "\xe5\x96", + [26448] = "\xe5\x95", [26451] = "\xe5\xa0", [26454] = "\x89\xda", + [26456] = "\xe5\x9c", [26458] = "\xe5\xa1", [26462] = "\xe5\x9d", + [26468] = "\xe5\x9a", [26470] = "\x92\xb1", [26472] = "\xe5\x97", + [26479] = "\x94\x88", [26482] = "\xe5\xa5", [26493] = "\x97\x5a", + [26511] = "\xe5\xa4", [26514] = "\xe5\xa3", [26523] = "\xe5\xac", + [26527] = "\xe5\xa6", [26531] = "\xe5\xae", [26538] = "\x97\x86", + [26539] = "\xe5\xb1", [26541] = "\xe5\xa8", [26544] = "\xe5\xa9", + [26548] = "\xe5\xad", [26550] = "\xe5\xb0", [26551] = "\xe5\xaf", + [26555] = "\xe5\xa7", [26560] = "\xe5\xaa", [26562] = "\xe5\xbb", + [26576] = "\xe5\xb4", [26591] = "\xe5\xb2", [26594] = "\xe5\xb3", + [26598] = "\xe5\xb8", [26599] = "\xe5\xb9", [26601] = "\x8a\x49", + [26603] = "\x8b\x61", [26606] = "\xe5\xb7", [26613] = "\xe5\xa2", + [26615] = "\xfb\xa1", [26621] = "\xe5\xb6", [26622] = "\xe5\xba", + [26623] = "\xe5\xb5", [26625] = "\xe5\xbc", [26629] = "\xe5\xbe", + [26630] = "\xe5\xbd", [26641] = "\xe5\xc0", [26642] = "\xe5\xbf", + [26643] = "\xe5\x79", [26647] = "\xe5\xc4", [26657] = "\xe5\xc1", + [26662] = "\xe5\xc2", [26665] = "\xe5\xc3", [26667] = "\xe5\xc5", + [26672] = "\x8c\x8c", [26674] = "\xe5\xc7", [26676] = "\xe5\xc6", + [26678] = "\x8f\x4f", [26684] = "\x8d\x73", [26685] = "\x9f\xa5", + [26690] = "\xe5\xc8", [26691] = "\x8f\x70", [26695] = "\x8a\x58", + [26697] = "\xe5\xc9", [26699] = "\x89\x71", [26701] = "\x8f\xd5", + [26702] = "\xe5\xca", [26705] = "\x8d\x74", [26706] = "\xe5\xcb", + [26707] = "\x88\xdf", [26712] = "\x95\x5c", [26715] = "\xe5\xcc", + [26720] = "\x90\x8a", [26722] = "\xe5\xd3", [26725] = "\xe5\xd0", + [26727] = "\x92\x8f", [26733] = "\xe5\xd1", [26734] = "\xe5\xce", + [26735] = "\x8b\xdc", [26737] = "\xe5\xcd", [26738] = "\xe5\xd4", + [26744] = "\x8c\x55", [26747] = "\x91\xdc", [26749] = "\xe5\xda", + [26754] = "\xe5\xd6", [26758] = "\x91\xb3", [26759] = "\xe5\xd5", + [26761] = "\xe5\xd8", [26766] = "\xe5\xcf", [26770] = "\xe5\xd9", + [26772] = "\xe5\xdb", [26779] = "\x94\xed", [26782] = "\xe5\xd7", + [26784] = "\xe5\xdc", [26785] = "\xe5\xde", [26788] = "\x8c\xd1", + [26789] = "\xe5\xd2", [26791] = "\x88\xbf", [26799] = "\xe5\xdd", + [26801] = "\x8d\xd9", [26802] = "\x97\xf4", [26803] = "\xe5\xdf", + [26804] = "\xe5\xe0", [26805] = "\x91\x95", [26815] = "\x97\xa0", + [26820] = "\xe5\xe1", [26821] = "\x97\x54", [26824] = "\xe5\xe2", + [26825] = "\xe5\xe3", [26828] = "\x95\xe2", [26829] = "\xe5\xe4", + [26831] = "\x8d\xbe", [26833] = "\x97\xa1", [26840] = "\xe5\xe9", + [26850] = "\xe5\xea", [26851] = "\x8f\xd6", [26852] = "\xe5\xe8", + [26853] = "\xfb\xa2", [26856] = "\x97\x87", [26857] = "\xe5\xe5", + [26860] = "\xe5\xe7", [26861] = "\x90\xbb", [26862] = "\x90\x9e", + [26866] = "\xe5\xe6", [26868] = "\xe5\xeb", [26871] = "\x95\xa1", + [26874] = "\xe5\xed", [26876] = "\xe5\xec", [26880] = "\x8a\x8c", + [26882] = "\x96\x4a", [26883] = "\xe5\xee", [26892] = "\xfa\x5d", + [26893] = "\xe5\xfa", [26894] = "\xe5\xf0", [26901] = "\xe5\xf1", + [26906] = "\xe5\xf2", [26907] = "\xe5\xf3", [26918] = "\xe5\xf7", + [26920] = "\xe5\xf8", [26923] = "\xe5\xf6", [26929] = "\xe5\xf4", + [26931] = "\xe5\xef", [26932] = "\xe5\xf5", [26940] = "\xe5\xf9", + [26941] = "\xe8\xb5", [26950] = "\x89\xa6", [26958] = "\xe5\xfc", + [26959] = "\x8b\xdd", [26960] = "\xe5\xfb", [26964] = "\xe6\x41", + [26966] = "\xe6\x40", [26970] = "\xe6\x43", [26973] = "\xe6\x42", + [26975] = "\xe6\x44", [26978] = "\x8f\x50", [26980] = "\xe6\x45", + [26983] = "\xe6\x46", [26990] = "\xe6\x47", [26991] = "\x90\xbc", + [26993] = "\x97\x76", [26995] = "\xe6\x48", [26998] = "\x95\xa2", + [26999] = "\x94\x65", [27000] = "\xe6\x49", [27002] = "\xe6\x4a", + [27003] = "\x8c\xa9", [27007] = "\x8b\x4b", [27011] = "\xe6\x4b", + [27014] = "\x8e\x8b", [27015] = "\x94\x60", [27016] = "\xe6\x4c", + [27018] = "\x8a\x6f", [27025] = "\xe6\x4d", [27030] = "\xe6\x4f", + [27031] = "\x97\x97", [27033] = "\xe6\x4e", [27034] = "\x90\x65", + [27036] = "\xe6\x50", [27039] = "\xe6\x51", [27042] = "\xe6\x52", + [27043] = "\x8a\xcf", [27050] = "\xe6\x53", [27053] = "\xe6\x54", + [27055] = "\xe6\x55", [27056] = "\xe6\x56", [27074] = "\x8a\x70", + [27082] = "\xe6\x57", [27084] = "\xe6\x58", [27085] = "\xe6\x59", + [27091] = "\x89\xf0", [27094] = "\x90\x47", [27095] = "\xe6\x5a", + [27108] = "\xe6\x5b", [27112] = "\xe6\x5c", [27120] = "\x8c\xbe", + [27122] = "\x92\xf9", [27123] = "\xe6\x5d", [27128] = "\x8c\x76", + [27130] = "\x90\x75", [27132] = "\xe6\x60", [27134] = "\x93\xa2", + [27136] = "\xe6\x5f", [27138] = "\xfb\xa3", [27139] = "\x8c\x50", + [27142] = "\xe6\x5e", [27143] = "\x91\xf5", [27144] = "\x8b\x4c", + [27147] = "\xe6\x61", [27149] = "\xe6\x62", [27151] = "\x8f\xd7", + [27155] = "\x8c\x8d", [27157] = "\xe6\x63", [27162] = "\x96\x4b", + [27165] = "\x90\xdd", [27169] = "\x8b\x96", [27171] = "\x96\xf3", + [27172] = "\x91\x69", [27174] = "\xe6\x64", [27175] = "\xfb\xa4", + [27178] = "\x90\x66", [27179] = "\x92\x90", [27180] = "\x8f\xd8", + [27185] = "\xe6\x65", [27190] = "\xe6\x68", [27192] = "\xe6\x69", + [27200] = "\x8d\xbc", [27201] = "\x91\xc0", [27202] = "\xe6\x67", + [27204] = "\x8f\xd9", [27205] = "\x95\x5d", [27211] = "\xe6\x66", + [27214] = "\x8e\x8c", [27216] = "\x89\x72", [27218] = "\xe6\x6d", + [27219] = "\x8c\x77", [27222] = "\x8e\x8e", [27225] = "\x8e\x8d", + [27227] = "\x98\x6c", [27228] = "\xe6\x6c", [27229] = "\xe6\x6b", + [27230] = "\x91\x46", [27232] = "\x8b\x6c", [27233] = "\x98\x62", + [27234] = "\x8a\x59", [27235] = "\x8f\xda", [27241] = "\xfb\xa5", + [27244] = "\xe6\x6a", [27250] = "\xe6\x6f", [27252] = "\xe6\x70", + [27253] = "\xe6\x6e", [27255] = "\x8c\xd6", [27257] = "\x97\x5f", + [27260] = "\x8e\x8f", [27261] = "\x94\x46", [27265] = "\xe6\x73", + [27267] = "\x90\xbe", [27269] = "\x92\x61", [27272] = "\x97\x55", + [27274] = "\xe6\x76", [27278] = "\x8c\xea", [27280] = "\x90\xbd", + [27281] = "\xe6\x72", [27283] = "\xe6\x77", [27284] = "\x8c\xeb", + [27285] = "\xe6\x74", [27286] = "\xe6\x75", [27287] = "\xfb\xa6", + [27288] = "\xe6\x71", [27292] = "\x90\xe0", [27293] = "\x93\xc7", + [27296] = "\x92\x4e", [27298] = "\x89\xdb", [27305] = "\x94\xee", + [27308] = "\x8b\x62", [27310] = "\xfb\xa7", [27311] = "\x92\xb2", + [27314] = "\xe6\x7a", [27316] = "\xe6\x78", [27319] = "\x92\x6b", + [27323] = "\x90\xbf", [27324] = "\x8a\xd0", [27325] = "\xe6\x79", + [27327] = "\x90\x7a", [27330] = "\x97\xc8", [27334] = "\x98\x5f", + [27338] = "\xe6\x7b", [27339] = "\xe6\x87", [27340] = "\x92\xb3", + [27342] = "\xe6\x86", [27343] = "\xfb\xa8", [27344] = "\xe6\x83", + [27345] = "\xe6\x8b", [27346] = "\xe6\x84", [27348] = "\xe6\x80", + [27350] = "\x92\xfa", [27351] = "\xe6\x7e", [27355] = "\xe6\x7c", + [27357] = "\x97\x40", [27358] = "\x8e\x90", [27361] = "\xe6\x81", + [27363] = "\xe6\x7d", [27366] = "\xfb\xaa", [27367] = "\xe6\x85", + [27368] = "\x8f\x94", [27370] = "\x8c\xbf", [27374] = "\x91\xf8", + [27376] = "\x96\x64", [27377] = "\x89\x79", [27378] = "\x88\xe0", + [27380] = "\x93\xa3", [27383] = "\xe6\x89", [27388] = "\xe6\x88", + [27390] = "\x93\xe4", [27392] = "\xe6\x8d", [27396] = "\xe6\x82", + [27398] = "\xe6\x8c", [27399] = "\xe6\x8e", [27401] = "\x8c\xaa", + [27402] = "\xe6\x8a", [27403] = "\x8d\x75", [27405] = "\x8e\xd3", + [27408] = "\xe6\x8f", [27409] = "\x97\x77", [27414] = "\xe6\x92", + [27416] = "\xe6\x95", [27419] = "\xe6\x93", [27420] = "\x95\x54", + [27427] = "\xe6\x90", [27433] = "\x8b\xde", [27438] = "\xe6\x94", + [27441] = "\xe6\x96", [27449] = "\xe6\x9a", [27452] = "\xe6\x97", + [27454] = "\xe6\x99", [27455] = "\xe6\x98", [27459] = "\xfb\xab", + [27462] = "\xe6\x9b", [27464] = "\x8e\xaf", [27466] = "\xe6\x9d", + [27467] = "\xe6\x9c", [27468] = "\x95\x88", [27471] = "\xe6\x9f", + [27478] = "\x8c\x78", [27483] = "\xe6\x9e", [27484] = "\xe6\xa0", + [27487] = "\xe6\xa1", [27488] = "\x8b\x63", [27489] = "\xe3\xbf", + [27490] = "\x8f\xf7", [27492] = "\xe6\xa2", [27495] = "\x8c\xec", + [27501] = "\xe6\xa3", [27503] = "\xfb\xac", [27504] = "\xe6\xa4", + [27507] = "\x8e\x5d", [27514] = "\x9d\xcc", [27516] = "\xe6\xa5", + [27518] = "\xe6\xa6", [27520] = "\x8f\x51", [27522] = "\xe6\xa7", + [27523] = "\xe6\xa8", [27526] = "\xe6\xa9", [27529] = "\xe6\xaa", + [27530] = "\xe6\xab", [27687] = "\x92\x4a", [27690] = "\xe6\xac", + [27695] = "\xe6\xae", [27697] = "\xe6\xad", [27702] = "\x93\xa4", + [27704] = "\xe6\xaf", [27706] = "\x96\x4c", [27708] = "\xe6\xb0", + [27710] = "\xe6\xb1", [27712] = "\xe6\xb2", [27717] = "\xe6\xb3", + [27722] = "\x93\xd8", [27729] = "\x8f\xdb", [27730] = "\xe6\xb4", + [27738] = "\x8d\x8b", [27739] = "\x98\xac", [27740] = "\xe6\xb5", + [27752] = "\xe6\xb6", [27753] = "\x95\x5e", [27754] = "\xe6\xb7", + [27756] = "\xe6\xbf", [27762] = "\xe6\xb8", [27765] = "\xe6\xba", + [27769] = "\xe6\xb9", [27770] = "\xe6\xbb", [27772] = "\x96\x65", + [27773] = "\xe6\xbc", [27774] = "\xe6\xbd", [27780] = "\xe6\xbe", + [27784] = "\xe6\xc0", [27789] = "\x8a\x4c", [27790] = "\x92\xe5", + [27792] = "\x95\x89", [27793] = "\x8d\xe0", [27794] = "\x8d\x76", + [27799] = "\x95\x6e", [27800] = "\x89\xdd", [27801] = "\x94\xcc", + [27802] = "\xe6\xc3", [27803] = "\x8a\xd1", [27804] = "\x90\xd3", + [27805] = "\xe6\xc2", [27806] = "\xe6\xc7", [27807] = "\x92\x99", + [27808] = "\x96\xe1", [27810] = "\xe6\xc5", [27811] = "\xe6\xc6", + [27812] = "\x8b\x4d", [27814] = "\xe6\xc8", [27815] = "\x94\x83", + [27816] = "\x91\xdd", [27819] = "\x94\xef", [27820] = "\x93\x5c", + [27821] = "\xe6\xc4", [27823] = "\x96\x66", [27824] = "\x89\xea", + [27825] = "\xe6\xca", [27826] = "\x98\x47", [27827] = "\x92\xc0", + [27828] = "\x98\x64", [27831] = "\x8e\x91", [27832] = "\xe6\xc9", + [27834] = "\x91\xaf", [27837] = "\xe6\xda", [27838] = "\x91\x47", + [27841] = "\x93\xf6", [27843] = "\x95\x6f", [27850] = "\xe6\xcd", + [27851] = "\x8e\x5e", [27852] = "\x8e\x92", [27854] = "\x8f\xdc", + [27856] = "\x94\x85", [27858] = "\x8c\xab", [27859] = "\xe6\xcc", + [27860] = "\xe6\xcb", [27862] = "\x95\x8a", [27866] = "\x8e\xbf", + [27869] = "\x93\x71", [27872] = "\xfb\xad", [27876] = "\xfb\xae", + [27882] = "\xe6\xcf", [27883] = "\xe6\xd0", [27884] = "\x8d\x77", + [27885] = "\xe6\xce", [27892] = "\xe6\xd1", [27893] = "\xe6\xd2", + [27895] = "\xe6\xd4", [27896] = "\x91\xa1", [27898] = "\xe6\xd3", + [27899] = "\x8a\xe4", [27901] = "\xe6\xd6", [27903] = "\xe6\xd5", + [27904] = "\xe6\xd7", [27906] = "\xfb\xaf", [27907] = "\xe6\xd9", + [27908] = "\xe6\xdb", [27910] = "\xe6\xdc", [27988] = "\x90\xd4", + [27990] = "\x8e\xcd", [27991] = "\xe6\xdd", [27995] = "\x8a\x71", + [27997] = "\xe6\xde", [28000] = "\x91\x96", [28001] = "\xe6\xdf", + [28003] = "\xe6\xe0", [28004] = "\x95\x8b", [28006] = "\xfb\xb0", + [28007] = "\x8b\x4e", [28017] = "\xe6\xe1", [28021] = "\x92\xb4", + [28026] = "\x89\x7a", [28041] = "\xe6\xe2", [28051] = "\x8e\xef", + [28056] = "\x90\x96", [28067] = "\x91\xab", [28074] = "\xe6\xe5", + [28078] = "\xe6\xe4", [28082] = "\xe6\xe3", [28091] = "\xe6\xeb", + [28092] = "\xe6\xe9", [28095] = "\xe6\xe6", [28102] = "\xe6\xe8", + [28106] = "\xe6\xe7", [28107] = "\xe6\xea", [28109] = "\x8b\x97", + [28111] = "\xe6\xee", [28113] = "\x90\xd5", [28115] = "\xe6\xef", + [28120] = "\x8c\xd7", [28122] = "\xe6\xec", [28123] = "\xe6\xed", + [28127] = "\x98\x48", [28131] = "\x92\xb5", [28133] = "\x91\x48", + [28140] = "\xe6\xf0", [28143] = "\xe6\xf3", [28152] = "\xe6\xf1", + [28153] = "\xe6\xf2", [28154] = "\x97\x78", [28159] = "\x93\xa5", + [28160] = "\xe6\xf6", [28173] = "\xe6\xf4", [28174] = "\xe6\xf5", + [28175] = "\xe6\xf7", [28186] = "\xe7\x48", [28192] = "\xe6\xfa", + [28196] = "\xe6\xfb", [28197] = "\xe6\xf9", [28210] = "\xe6\xf8", + [28212] = "\x92\xfb", [28215] = "\xe7\x40", [28216] = "\xe7\x44", + [28217] = "\xe7\x41", [28218] = "\xe6\xfc", [28220] = "\xe7\x42", + [28224] = "\xe7\x43", [28229] = "\xe7\x4a", [28233] = "\xe7\x45", + [28239] = "\x90\xd6", [28240] = "\xe7\x47", [28243] = "\xe7\x49", + [28244] = "\xe7\x46", [28258] = "\xe7\x4c", [28260] = "\x8f\x52", + [28262] = "\xe7\x4b", [28268] = "\xe7\x4d", [28273] = "\xe7\x4e", + [28276] = "\xe7\x51", [28277] = "\xe7\x50", [28279] = "\xe7\x4f", + [28282] = "\xe7\x53", [28283] = "\xe7\x52", [28285] = "\x96\xf4", + [28289] = "\xe7\x55", [28291] = "\xe7\x54", [28292] = "\xe7\x56", + [28297] = "\xe7\x57", [28305] = "\xe7\x59", [28314] = "\xe7\x58", + [28315] = "\x90\x67", [28316] = "\xe7\x5a", [28319] = "\x8b\xeb", + [28320] = "\xe7\x5b", [28321] = "\xe7\x5d", [28334] = "\xe7\x5e", + [28341] = "\xe7\x5f", [28342] = "\xe7\x5c", [28344] = "\xe7\x60", + [28346] = "\x8e\xd4", [28347] = "\xe7\x61", [28348] = "\x8b\x4f", + [28349] = "\x8c\x52", [28351] = "\xfb\xb2", [28354] = "\x8c\xac", + [28363] = "\xe7\x62", [28367] = "\x93\xee", [28370] = "\x93\x5d", + [28371] = "\xe7\x63", [28379] = "\xe7\x66", [28392] = "\x8e\xb2", + [28395] = "\xe7\x65", [28396] = "\xe7\x64", [28397] = "\x8c\x79", + [28398] = "\xe7\x67", [28403] = "\x8a\x72", [28405] = "\xe7\x69", + [28409] = "\x8d\xda", [28410] = "\xe7\x68", [28412] = "\xe7\x71", + [28418] = "\xe7\x6b", [28419] = "\xe7\x6d", [28420] = "\x95\xe3", + [28421] = "\xe7\x6a", [28425] = "\xe7\x6c", [28427] = "\xe7\x70", + [28428] = "\xe7\x6e", [28429] = "\x8b\x50", [28431] = "\xe7\x6f", + [28438] = "\xe7\x72", [28441] = "\x94\x79", [28442] = "\x97\xd6", + [28447] = "\x8f\x53", [28451] = "\xe7\x73", [28456] = "\x97\x41", + [28457] = "\xe7\x75", [28459] = "\xe7\x74", [28462] = "\xe7\x78", + [28463] = "\x97\x60", [28466] = "\xe7\x77", [28468] = "\x8a\x8d", + [28469] = "\xe7\x76", [28470] = "\xe7\x7b", [28473] = "\xe7\x7a", + [28476] = "\xe7\x79", [28477] = "\x93\x51", [28478] = "\xe7\x7c", + [28487] = "\xe7\x7d", [28492] = "\xe7\x7e", [28495] = "\x8d\x8c", + [28497] = "\x8c\x44", [28498] = "\xe7\x80", [28499] = "\xe7\x81", + [28500] = "\xe7\x82", [28555] = "\x90\x68", [28556] = "\xe7\x83", + [28558] = "\x8e\xab", [28559] = "\xe7\x84", [28563] = "\xe7\x85", + [28567] = "\x99\x9f", [28568] = "\x99\x9e", [28573] = "\xe7\x86", + [28574] = "\xe3\x90", [28575] = "\xe7\x87", [28576] = "\x92\x43", + [28577] = "\x90\x4a", [28578] = "\x94\x5f", [28583] = "\xe7\x88", + [28586] = "\x95\xd3", [28587] = "\x92\xd2", [28588] = "\x8d\x9e", + [28591] = "\x92\x48", [28594] = "\x89\x49", [28596] = "\x96\x98", + [28597] = "\x90\x76", [28606] = "\x8c\x7d", [28609] = "\x8b\xdf", + [28612] = "\x95\xd4", [28618] = "\xe7\x89", [28626] = "\xe7\x8b", + [28629] = "\xe7\x8a", [28630] = "\x89\xde", [28633] = "\x93\xf4", + [28634] = "\xe7\x8c", [28635] = "\x94\x97", [28637] = "\x93\x52", + [28639] = "\xe7\x8d", [28640] = "\x8f\x71", [28644] = "\xe7\x8f", + [28647] = "\x96\xc0", [28648] = "\xe7\x9e", [28649] = "\xe7\x91", + [28650] = "\xe7\x92", [28653] = "\x92\xc7", [28656] = "\x91\xde", + [28657] = "\x91\x97", [28659] = "\x93\xa6", [28661] = "\xe7\x90", + [28662] = "\x8b\x74", [28667] = "\xe7\x99", [28669] = "\xe7\x96", + [28670] = "\xe7\xa3", [28671] = "\x93\xa7", [28672] = "\x92\x80", + [28673] = "\xe7\x93", [28675] = "\x92\xfc", [28676] = "\x93\x72", + [28677] = "\xe7\x94", [28678] = "\xe7\x98", [28679] = "\x90\x80", + [28681] = "\x94\x87", [28682] = "\x92\xca", [28685] = "\x90\xc0", + [28686] = "\xe7\x97", [28687] = "\x91\xac", [28688] = "\x91\xa2", + [28689] = "\xe7\x95", [28690] = "\x88\xa7", [28691] = "\x98\x41", + [28695] = "\xe7\x9a", [28702] = "\x91\xdf", [28705] = "\x8f\x54", + [28706] = "\x90\x69", [28709] = "\xe7\x9c", [28710] = "\xe7\x9b", + [28712] = "\x88\xed", [28713] = "\xe7\x9d", [28716] = "\x95\x4e", + [28718] = "\xe7\xa5", [28721] = "\x93\xd9", [28722] = "\x90\x8b", + [28725] = "\x92\x78", [28727] = "\x8b\xf6", [28729] = "\xe7\xa4", + [28730] = "\x97\x56", [28731] = "\x89\x5e", [28733] = "\x95\xd5", + [28734] = "\x89\xdf", [28735] = "\xe7\x9f", [28736] = "\xe7\xa0", + [28737] = "\xe7\xa1", [28738] = "\xe7\xa2", [28739] = "\x93\xb9", + [28740] = "\x92\x42", [28741] = "\x88\xe1", [28742] = "\xe7\xa6", + [28744] = "\xe7\xa7", [28745] = "\xea\xa1", [28748] = "\x91\xbb", + [28750] = "\xe7\xa8", [28752] = "\x89\x93", [28753] = "\x91\x6b", + [28755] = "\x8c\xad", [28757] = "\x97\x79", [28759] = "\xfb\xb5", + [28760] = "\xe7\xa9", [28761] = "\x93\x4b", [28765] = "\x91\x98", + [28766] = "\x8e\xd5", [28767] = "\xe7\xaa", [28770] = "\xe7\xad", + [28773] = "\x8f\x85", [28774] = "\xe7\xab", [28775] = "\x91\x4a", + [28776] = "\x91\x49", [28778] = "\x88\xe2", [28780] = "\x97\xc9", + [28781] = "\xe7\xaf", [28783] = "\x94\xf0", [28784] = "\xe7\xb1", + [28785] = "\xe7\xb0", [28786] = "\xe7\xae", [28787] = "\xe2\x84", + [28788] = "\x8a\xd2", [28791] = "\xe7\x8e", [28793] = "\xe7\xb3", + [28794] = "\xe7\xb2", [28799] = "\xe7\xb4", [28801] = "\x97\x57", + [28819] = "\x93\xdf", [28822] = "\x96\x4d", [28824] = "\xe7\xb5", + [28826] = "\x8e\xd7", [28831] = "\xe7\xb6", [28833] = "\xe7\xb7", + [28837] = "\xe7\xb8", [28840] = "\x93\x40", [28849] = "\x88\xe8", + [28858] = "\x8d\x78", [28862] = "\x98\x59", [28875] = "\xe7\xbc", + [28878] = "\xfb\xb6", [28881] = "\x8c\x53", [28882] = "\xe7\xb9", + [28884] = "\xe7\xba", [28888] = "\x95\x94", [28893] = "\x8a\x73", + [28901] = "\x97\x58", [28903] = "\x8b\xbd", [28909] = "\x93\x73", + [28914] = "\xe7\xbd", [28930] = "\xe7\xbe", [28933] = "\xfb\xb8", + [28937] = "\xe7\xbf", [28951] = "\xfb\xb9", [28957] = "\x93\x41", + [28960] = "\xe7\xc1", [28962] = "\xe7\xc0", [28985] = "\x93\xd1", + [28986] = "\xe7\xc2", [28987] = "\x8f\x55", [28988] = "\x8e\xde", + [28989] = "\x94\x7a", [28990] = "\x92\x91", [28994] = "\x8e\xf0", + [28996] = "\x90\x8c", [28998] = "\xe7\xc3", [29000] = "\xe7\xc4", + [29010] = "\x90\x7c", [29011] = "\xe7\xc5", [29013] = "\xe7\xc6", + [29017] = "\xe7\xc7", [29018] = "\x97\x8f", [29020] = "\x8f\x56", + [29026] = "\xe7\xc9", [29027] = "\xe7\xc8", [29029] = "\x8d\x79", + [29031] = "\x8d\x93", [29032] = "\x8e\x5f", [29042] = "\xe7\xcc", + [29047] = "\x8f\x86", [29049] = "\xe7\xcb", [29051] = "\xe7\xca", + [29053] = "\x91\xe7", [29056] = "\x8c\xed", [29058] = "\x90\xc1", + [29063] = "\x94\xae", [29068] = "\x8f\x58", [29074] = "\xe7\xcd", + [29076] = "\x8f\xdd", [29082] = "\xe7\xd0", [29083] = "\xe7\xce", + [29087] = "\xe7\xcf", [29092] = "\xe7\xd2", [29093] = "\xe7\xd1", + [29096] = "\x8f\xf8", [29098] = "\xe7\xd3", [29104] = "\xe7\xd4", + [29105] = "\xe7\xd5", [29110] = "\x94\xce", [29111] = "\x8d\xd1", + [29112] = "\x8e\xdf", [29113] = "\xe7\xd6", [29115] = "\xe7\xd7", + [29116] = "\x97\xa2", [29117] = "\x8f\x64", [29118] = "\x96\xec", + [29119] = "\x97\xca", [29120] = "\xe7\xd8", [29121] = "\x8b\xe0", + [29126] = "\xe7\xd9", [29127] = "\xfb\xbb", [29128] = "\x93\x42", + [29130] = "\xfb\xba", [29131] = "\xe7\xdc", [29132] = "\x8a\x98", + [29133] = "\x90\x6a", [29134] = "\xfb\xbc", [29135] = "\xe7\xda", + [29137] = "\xe7\xdb", [29139] = "\x92\xde", [29140] = "\xfb\xbf", + [29141] = "\xfb\xc0", [29142] = "\x96\x74", [29143] = "\x8b\xfa", + [29149] = "\xfb\xbd", [29150] = "\xfb\xbe", [29157] = "\xe7\xde", + [29158] = "\xe7\xdf", [29164] = "\xe7\xdd", [29167] = "\xe7\xe1", + [29174] = "\xfb\xc1", [29178] = "\xfb\xc3", [29181] = "\x93\xdd", + [29182] = "\x8a\x62", [29184] = "\xfb\xc2", [29185] = "\xe7\xe5", + [29188] = "\xe7\xe2", [29189] = "\xe7\xe4", [29198] = "\xe7\xe0", + [29209] = "\xe8\x6e", [29212] = "\xe7\xe3", [29220] = "\x97\xe9", + [29223] = "\x8c\xd8", [29225] = "\xfb\xca", [29226] = "\xfb\xc4", + [29228] = "\xfb\xc6", [29231] = "\xe7\xed", [29232] = "\xfb\xc5", + [29236] = "\x93\x53", [29237] = "\xe7\xe8", [29240] = "\xe7\xeb", + [29241] = "\xe7\xe9", [29243] = "\xe7\xee", [29246] = "\xfb\xc7", + [29248] = "\xe7\xef", [29249] = "\xfb\xc9", [29255] = "\xe7\xe7", + [29257] = "\xfb\xc8", [29258] = "\xe7\xf4", [29259] = "\x89\x94", + [29262] = "\xe7\xe6", [29266] = "\x94\xab", [29268] = "\xe7\xea", + [29270] = "\x8f\xde", [29271] = "\xfb\xcb", [29281] = "\x8d\x7a", + [29287] = "\xfb\xcd", [29288] = "\xfb\xce", [29294] = "\x96\x67", + [29296] = "\x8b\xe2", [29299] = "\x8f\x65", [29301] = "\x93\xba", + [29304] = "\xfa\x5f", [29313] = "\x91\x4c", [29315] = "\xe7\xf2", + [29317] = "\xe7\xec", [29318] = "\xe7\xf1", [29320] = "\x96\xc1", + [29322] = "\x92\xb6", [29323] = "\xe7\xf3", [29324] = "\xe7\xf0", + [29335] = "\xfb\xcc", [29341] = "\x91\x4b", [29351] = "\xe7\xf7", + [29353] = "\xe7\xf6", [29375] = "\xe7\xf5", [29376] = "\xfb\xd2", + [29378] = "\x96\x4e", [29379] = "\xfb\xd6", [29381] = "\xfb\xd4", + [29383] = "\xfb\xd0", [29385] = "\xfb\xd1", [29392] = "\xfb\xd5", + [29396] = "\x8f\x9b", [29399] = "\xfb\xcf", [29401] = "\xe7\xf8", + [29402] = "\x95\xdd", [29405] = "\x89\x73", [29410] = "\x95\x65", + [29411] = "\x92\x92", [29416] = "\x8b\x98", [29417] = "\xfa\x65", + [29418] = "\xe7\xfa", [29419] = "\xfb\xd9", [29420] = "\x8d\x7c", + [29423] = "\xfb\xdc", [29426] = "\xfb\xde", [29430] = "\x8e\x4b", + [29439] = "\xe7\xf9", [29440] = "\x90\x8d", [29448] = "\x90\x8e", + [29449] = "\xe8\x40", [29450] = "\xe8\x42", [29453] = "\xfb\xdd", + [29454] = "\xfb\xdb", [29456] = "\x8f\xf9", [29457] = "\xfb\xd8", + [29458] = "\xe8\x41", [29459] = "\xe8\x43", [29461] = "\xfb\xd7", + [29462] = "\x8b\xd1", [29464] = "\x95\x64", [29467] = "\x8e\xe0", + [29468] = "\x98\x42", [29470] = "\xe7\xfc", [29471] = "\x8d\xf6", + [29474] = "\x98\x5e", [29477] = "\xe8\x45", [29482] = "\xe8\x44", + [29483] = "\xe8\x46", [29492] = "\xe7\xfb", [29496] = "\xfa\x5e", + [29499] = "\x93\xe7", [29501] = "\x93\x74", [29508] = "\x92\xd5", + [29510] = "\xe8\x4b", [29511] = "\xfb\xe0", [29515] = "\x92\x62", + [29516] = "\xe8\x47", [29520] = "\xe8\x48", [29532] = "\x8c\x4c", + [29534] = "\xe8\x4a", [29536] = "\xfb\xdf", [29541] = "\x8c\xae", + [29548] = "\xe8\x49", [29550] = "\x8f\xdf", [29564] = "\x8a\x99", + [29572] = "\xe8\x4f", [29574] = "\x8d\xbd", [29575] = "\x91\x99", + [29578] = "\x92\xc8", [29588] = "\xfb\xe1", [29591] = "\x8a\x5a", + [29596] = "\xe8\x4d", [29597] = "\xe8\x4e", [29598] = "\x92\xc1", + [29600] = "\xe8\x4c", [29609] = "\xe8\x50", [29619] = "\xe8\x56", + [29622] = "\xfb\xe2", [29624] = "\xe8\x59", [29632] = "\xe8\x58", + [29633] = "\x93\x4c", [29638] = "\xe8\x51", [29639] = "\xe8\x52", + [29640] = "\xe8\x55", [29645] = "\xe8\x57", [29646] = "\xfb\xe3", + [29649] = "\x8b\xbe", [29652] = "\xe8\x5a", [29653] = "\xe8\x54", + [29656] = "\xe8\x53", [29672] = "\xfb\xe4", [29683] = "\xe8\x5e", + [29687] = "\xe8\x5f", [29696] = "\xe8\x60", [29699] = "\xe8\x5d", + [29700] = "\xe8\x5c", [29704] = "\x8f\xe0", [29705] = "\x93\xa8", + [29706] = "\xe8\x5b", [29713] = "\xe8\x64", [29723] = "\xe8\x62", + [29729] = "\xfb\xe5", [29733] = "\xe8\x63", [29734] = "\xe8\x61", + [29736] = "\x91\xf6", [29738] = "\xe8\x65", [29745] = "\xe8\x66", + [29748] = "\xe8\x68", [29749] = "\xfb\xe6", [29752] = "\xfb\xe7", + [29761] = "\x8a\xd3", [29762] = "\xe8\x67", [29763] = "\x96\xf8", + [29770] = "\xe8\x73", [29771] = "\xe8\x69", [29774] = "\xe8\x6c", + [29776] = "\xe8\x6a", [29778] = "\xe8\x6b", [29786] = "\xe8\x6d", + [29792] = "\xe8\x6f", [29797] = "\xe8\x70", [29799] = "\xe8\x71", + [29804] = "\xe8\x74", [29805] = "\xe8\x72", [29806] = "\xe8\x75", + [29807] = "\xe8\x77", [29809] = "\xe8\x76", [30055] = "\x92\xb7", + [30064] = "\x96\xe5", [30066] = "\xe8\x78", [30067] = "\x91\x4d", + [30071] = "\xe8\x79", [30073] = "\x95\xc2", [30074] = "\xe8\x7a", + [30075] = "\x8a\x4a", [30079] = "\x89\x5b", [30081] = "\x8a\xd5", + [30082] = "\xfb\xe8", [30083] = "\x8a\xd4", [30084] = "\xe8\x7b", + [30086] = "\xe8\x7c", [30088] = "\xe8\x7d", [30089] = "\xe8\x7e", + [30096] = "\xe8\x80", [30098] = "\x8a\xd6", [30099] = "\x8a\x74", + [30100] = "\x8d\x7d", [30101] = "\x94\xb4", [30103] = "\xe8\x82", + [30104] = "\xe8\x81", [30109] = "\xe8\x83", [30114] = "\x89\x7b", + [30121] = "\xe8\x86", [30123] = "\xe8\x85", [30124] = "\xe8\x84", + [30126] = "\xe8\x87", [30131] = "\xe8\x8a", [30135] = "\x88\xc5", + [30138] = "\xe8\x88", [30140] = "\xe8\x8c", [30141] = "\xe8\x8b", + [30148] = "\xe8\x8e", [30149] = "\xe8\x8d", [30150] = "\xe8\x8f", + [30152] = "\x93\xac", [30156] = "\xe8\x90", [30161] = "\xe8\x91", + [30162] = "\xe8\x93", [30165] = "\xe8\x92", [30220] = "\x95\x8c", + [30225] = "\xe8\x94", [30232] = "\xe8\x95", [30234] = "\x8d\xe3", + [30238] = "\xe8\x96", [30239] = "\xe8\x97", [30242] = "\x96\x68", + [30251] = "\x91\x6a", [30255] = "\x88\xa2", [30256] = "\x91\xc9", + [30258] = "\xe8\x98", [30260] = "\x95\x8d", [30267] = "\xe8\x9b", + [30268] = "\xe8\x99", [30269] = "\x8d\x7e", [30271] = "\xe8\x9a", + [30272] = "\x8c\xc0", [30283] = "\x95\xc3", [30284] = "\xe8\x9d", + [30285] = "\xe8\x9f", [30286] = "\xe8\x9e", [30287] = "\xe8\xa0", + [30290] = "\x89\x40", [30291] = "\x90\x77", [30292] = "\x8f\x9c", + [30293] = "\x8a\xd7", [30294] = "\xe8\xa1", [30298] = "\x94\x86", + [30300] = "\xe8\xa3", [30304] = "\x89\x41", [30306] = "\xe8\xa2", + [30307] = "\x92\xc2", [30309] = "\x97\xcb", [30310] = "\x93\xa9", + [30311] = "\xe8\x9c", [30312] = "\x97\xa4", [30314] = "\x8c\xaf", + [30317] = "\x97\x7a", [30325] = "\x8b\xf7", [30326] = "\x97\xb2", + [30328] = "\x8c\x47", [30330] = "\x91\xe0", [30331] = "\xe4\x40", + [30333] = "\xe8\xa4", [30334] = "\x8a\x4b", [30335] = "\x90\x8f", + [30340] = "\x8a\x75", [30341] = "\xe8\xa6", [30343] = "\xe8\xa7", + [30344] = "\xe8\xa5", [30345] = "\x8c\x84", [30347] = "\x8d\xdb", + [30348] = "\x8f\xe1", [30349] = "\xfb\xeb", [30352] = "\x89\x42", + [30355] = "\x97\xd7", [30359] = "\xe8\xa9", [30360] = "\xe7\xac", + [30362] = "\xe8\xa8", [30367] = "\xfb\xec", [30368] = "\xe8\xac", + [30369] = "\xe8\xaa", [30370] = "\xe8\xab", [30372] = "\xe8\xad", + [30374] = "\xe8\xae", [30375] = "\x97\xea", [30376] = "\xe8\xaf", + [30377] = "\xe8\xb0", [30379] = "\x90\xc7", [30380] = "\x94\xb9", + [30384] = "\x90\x9d", [30385] = "\x8a\xe5", [30388] = "\x97\x59", + [30389] = "\x89\xeb", [30390] = "\x8f\x57", [30391] = "\x8c\xd9", + [30393] = "\xe8\xb3", [30395] = "\xe8\xb2", [30396] = "\x8e\x93", + [30397] = "\xe8\xb4", [30398] = "\xe8\xb1", [30401] = "\x8e\x47", + [30405] = "\xe8\xb8", [30406] = "\xe5\xab", [30409] = "\x99\xd4", + [30411] = "\x90\x97", [30412] = "\xe8\xb6", [30418] = "\x97\xa3", + [30419] = "\x93\xef", [30424] = "\x89\x4a", [30426] = "\x90\xe1", + [30427] = "\x8e\xb4", [30432] = "\x95\xb5", [30434] = "\x89\x5f", + [30438] = "\x97\xeb", [30439] = "\x97\x8b", [30441] = "\xe8\xb9", + [30443] = "\x93\x64", [30448] = "\x8e\xf9", [30452] = "\xe8\xba", + [30454] = "\xe8\xbb", [30455] = "\x90\x6b", [30456] = "\xe8\xbc", + [30458] = "\x97\xec", [30461] = "\xe8\xb7", [30462] = "\xe8\xbe", + [30463] = "\xe8\xc0", [30465] = "\xe8\xbf", [30467] = "\xe8\xbd", + [30470] = "\xe8\xc1", [30473] = "\xe8\xc2", [30476] = "\x91\x9a", + [30478] = "\x89\xe0", [30484] = "\xe8\xc3", [30487] = "\x96\xb6", + [30490] = "\xe8\xc4", [30496] = "\xe8\xc5", [30498] = "\x98\x49", + [30499] = "\xfb\xed", [30504] = "\x9e\x50", [30505] = "\xe8\xc6", + [30507] = "\xfb\xee", [30509] = "\xe8\xc7", [30510] = "\xe8\xc8", + [30514] = "\xe8\xcc", [30515] = "\xfb\xef", [30516] = "\xe8\xc9", + [30518] = "\xe8\xca", [30520] = "\xe8\xcb", [30521] = "\xe8\xcd", + [30525] = "\xfb\xf0", [30527] = "\xfb\xf1", [30529] = "\xfb\xf2", + [30530] = "\x90\xc2", [30533] = "\xfb\xf3", [30534] = "\x96\xf5", + [30537] = "\x90\xc3", [30540] = "\xe8\xce", [30542] = "\x94\xf1", + [30544] = "\xe8\xcf", [30545] = "\xea\x72", [30546] = "\x96\xca", + [30548] = "\xe8\xd0", [30550] = "\xe8\xd1", [30552] = "\xe8\xd2", + [30553] = "\x8a\x76", [30555] = "\xe8\xd4", [30557] = "\x90\x78", + [30561] = "\xe8\xd5", [30564] = "\x8c\x43", [30569] = "\xe8\xd6", + [30570] = "\xe8\xda", [30572] = "\xe8\xd8", [30577] = "\xe8\xd9", + [30580] = "\x8a\x93", [30581] = "\xe8\xd7", [30582] = "\xe8\xdb", + [30587] = "\xe8\xdc", [30589] = "\x88\xc6", [30591] = "\xe8\xdd", + [30592] = "\xe8\xde", [30600] = "\x8f\xe2", [30604] = "\xe8\xdf", + [30608] = "\x8b\x66", [30611] = "\xe8\xe2", [30614] = "\xe8\xe1", + [30616] = "\xe8\xe0", [30619] = "\xe6\x91", [30621] = "\x95\xda", + [30627] = "\xe8\xe3", [30628] = "\xe8\xe4", [30643] = "\xe8\xe5", + [30646] = "\xe8\xe6", [30648] = "\xe8\xe7", [30651] = "\xe8\xe8", + [30659] = "\x8a\xd8", [30668] = "\xe8\xe9", [30685] = "\xe8\xea", + [30686] = "\x94\x42", [30690] = "\xe8\xec", [30691] = "\x89\xb9", + [30693] = "\xe8\xef", [30694] = "\xe8\xee", [30699] = "\x89\x43", + [30703] = "\x8b\xbf", [30705] = "\x95\xc5", [30706] = "\x92\xb8", + [30707] = "\x8d\xa0", [30709] = "\x8d\x80", [30710] = "\x8f\x87", + [30712] = "\x90\x7b", [30716] = "\xe8\xf1", [30719] = "\xe8\xf0", + [30720] = "\x97\x61", [30721] = "\x8a\xe6", [30722] = "\x94\xd0", + [30723] = "\x93\xda", [30727] = "\x90\x9c", [30728] = "\x97\xcc", + [30730] = "\x8c\x7a", [30737] = "\xe8\xf4", [30740] = "\xe8\xf3", + [30748] = "\x96\x6a", [30749] = "\x93\xaa", [30756] = "\x89\x6f", + [30759] = "\xe8\xf5", [30760] = "\xe8\xf2", [30763] = "\x95\x70", + [30764] = "\x97\x8a", [30765] = "\xe8\xf6", [30774] = "\xe8\xf7", + [30779] = "\xe8\xf9", [30780] = "\x91\xe8", [30781] = "\x8a\x7a", + [30782] = "\x8a\x7b", [30783] = "\xe8\xf8", [30788] = "\x8a\xe7", + [30789] = "\x8c\xb0", [30791] = "\xfb\xf4", [30792] = "\x8a\xe8", + [30795] = "\x93\x5e", [30798] = "\x97\xde", [30805] = "\xfb\xf5", + [30807] = "\x8c\xda", [30811] = "\xe8\xfa", [30815] = "\xe8\xfb", + [30816] = "\xe8\xfc", [30817] = "\xe9\x40", [30819] = "\xe9\x42", + [30820] = "\xe9\x41", [30872] = "\x95\x97", [30874] = "\xe9\x43", + [30879] = "\xe9\x44", [30881] = "\xe9\x45", [30886] = "\xe9\x46", + [30899] = "\xe9\x48", [30900] = "\xe9\x47", [30902] = "\xe9\x49", + [30923] = "\x94\xf2", [30924] = "\xe3\xca", [30927] = "\x90\x48", + [30930] = "\x8b\x51", [30937] = "\xe9\x4a", [30939] = "\xe9\x4b", + [30941] = "\x99\xaa", [30942] = "\x9f\x5a", [30943] = "\x94\xd1", + [30946] = "\x88\xf9", [30948] = "\x88\xb9", [30956] = "\x8e\x94", + [30957] = "\x96\x4f", [30958] = "\x8f\xfc", [30963] = "\xe9\x4c", + [30965] = "\x96\xdd", [30969] = "\xe9\x4d", [30970] = "\x97\x7b", + [30972] = "\x89\x61", [30976] = "\x8e\x60", [30978] = "\xe9\x4e", + [30979] = "\x89\xec", [30980] = "\xe9\x4f", [30984] = "\xe9\x50", + [30989] = "\xe9\x52", [30990] = "\xe9\x53", [30992] = "\xe9\x55", + [30993] = "\xe9\x51", [30996] = "\xe9\x54", [30999] = "\xfb\xf8", + [31000] = "\x8a\xd9", [31004] = "\xe9\x56", [31006] = "\xe9\x57", + [31021] = "\xe9\x58", [31022] = "\xe9\x59", [31026] = "\xe9\x5a", + [31029] = "\xe9\x5c", [31033] = "\xe9\x5b", [31035] = "\xe9\x5e", + [31036] = "\xe9\x61", [31040] = "\xe9\x5d", [31041] = "\xe9\x5f", + [31042] = "\xe9\x60", [31045] = "\xe9\x62", [31047] = "\x8b\xc0", + [31110] = "\x8e\xf1", [31111] = "\xe9\x63", [31112] = "\xe9\x64", + [31113] = "\x8d\x81", [31118] = "\xfb\xfa", [31125] = "\xe9\x65", + [31128] = "\x8a\x5d", [31132] = "\x94\x6e", [31133] = "\xe9\x66", + [31134] = "\xe9\x67", [31139] = "\x92\x79", [31140] = "\x93\xe9", + [31148] = "\xe9\x68", [31153] = "\x94\x9d", [31156] = "\x91\xca", + [31157] = "\x89\x77", [31158] = "\x8b\xec", [31160] = "\x8b\xed", + [31168] = "\x92\x93", [31169] = "\xe9\x6d", [31170] = "\x8b\xee", + [31173] = "\x89\xed", [31176] = "\xe9\x6c", [31179] = "\xe9\x6a", + [31181] = "\xe9\x6b", [31183] = "\xe9\x69", [31186] = "\xe9\x77", + [31197] = "\xe9\x6e", [31198] = "\xe9\x6f", [31201] = "\xe9\x70", + [31202] = "\xe9\x71", [31208] = "\xe9\x73", [31211] = "\xe9\x72", + [31215] = "\x8f\x78", [31217] = "\xe9\x74", [31221] = "\xe9\x76", + [31230] = "\x8b\x52", [31231] = "\xe9\x75", [31234] = "\x91\x9b", + [31235] = "\x8c\xb1", [31241] = "\xe9\x78", [31256] = "\x91\xcb", + [31259] = "\xe9\x79", [31264] = "\x93\xab", [31271] = "\xe9\x7a", + [31278] = "\xe9\x80", [31280] = "\xe9\x7d", [31282] = "\xe9\x7c", + [31283] = "\xe9\x7e", [31285] = "\xe9\x7b", [31293] = "\xe9\x82", + [31294] = "\xfb\xfb", [31301] = "\xe9\x81", [31303] = "\xe9\x84", + [31306] = "\x8b\xc1", [31307] = "\xe9\x83", [31311] = "\xe9\x85", + [31314] = "\xe9\x86", [31316] = "\xe9\x88", [31317] = "\xe9\x87", + [31321] = "\xe9\x89", [31322] = "\xe9\x8b", [31323] = "\xe9\x8a", + [31384] = "\x8d\x9c", [31389] = "\xe9\x8c", [31392] = "\xe9\x8d", + [31400] = "\x8a\x5b", [31404] = "\xe9\x8e", [31408] = "\xe9\x8f", + [31412] = "\x90\x91", [31423] = "\xe9\x90", [31425] = "\xe9\x91", + [31427] = "\xe9\x92", [31428] = "\xe9\x93", [31432] = "\x8d\x82", + [31433] = "\xfb\xfc", [31436] = "\xfc\x40", [31438] = "\xe9\x94", + [31439] = "\xe9\x95", [31442] = "\xe9\x96", [31443] = "\xe9\x97", + [31446] = "\xe9\x98", [31450] = "\x94\xaf", [31451] = "\xe9\x9a", + [31453] = "\x95\x45", [31454] = "\xe9\x9b", [31455] = "\xe9\x99", + [31457] = "\xe9\x9d", [31460] = "\xe9\x9c", [31463] = "\xe9\x9e", + [31467] = "\xe9\x9f", [31478] = "\xe9\xa0", [31496] = "\xe9\xa1", + [31498] = "\xe9\xa2", [31503] = "\xe9\xa3", [31506] = "\xe9\xa4", + [31507] = "\xe9\xa5", [31509] = "\xe9\xa6", [31511] = "\xe9\xa7", + [31512] = "\xe9\xa8", [31513] = "\xe9\xa9", [31514] = "\xe9\xaa", + [31518] = "\xe9\xab", [31519] = "\xe9\xac", [31521] = "\x9f\x54", + [31522] = "\xe9\xad", [31531] = "\xe2\xf6", [31532] = "\x8b\x53", + [31537] = "\x8a\x40", [31538] = "\x8d\xb0", [31539] = "\xe9\xaf", + [31540] = "\xe9\xae", [31541] = "\x96\xa3", [31549] = "\xe9\xb1", + [31550] = "\xe9\xb2", [31551] = "\xe9\xb0", [31553] = "\xe9\xb3", + [31556] = "\x96\x82", [31560] = "\xe9\xb4", [31562] = "\x8b\x9b", + [31583] = "\x98\x44", [31586] = "\xfc\x42", [31588] = "\xe9\xb5", + [31589] = "\xfc\x41", [31603] = "\xe9\xb7", [31614] = "\x88\xbc", + [31615] = "\xfc\x43", [31617] = "\xe9\xb8", [31618] = "\x95\xa9", + [31619] = "\xe9\xb6", [31622] = "\xe9\xb9", [31623] = "\xe9\xba", + [31631] = "\xe9\xbb", [31632] = "\xe9\xbc", [31640] = "\xe9\xbd", + [31642] = "\x96\x8e", [31643] = "\x8e\x4c", [31645] = "\x8d\xf8", + [31646] = "\x91\x4e", [31649] = "\xfc\x44", [31652] = "\xe9\xbe", + [31657] = "\xe9\xc1", [31659] = "\xfc\x45", [31664] = "\xe9\xbf", + [31670] = "\xe9\xc2", [31673] = "\x8c\xef", [31674] = "\xe9\xc0", + [31679] = "\xe9\xc3", [31681] = "\xe9\xc4", [31682] = "\xe9\xc5", + [31684] = "\xe9\xc9", [31686] = "\x8e\x49", [31691] = "\x91\xe2", + [31697] = "\xe9\xca", [31698] = "\xe9\xc7", [31699] = "\xe9\xc6", + [31700] = "\xe9\xc8", [31704] = "\x8c\x7e", [31712] = "\xe9\xce", + [31713] = "\xe9\xcd", [31714] = "\xe9\xcc", [31717] = "\x88\xb1", + [31728] = "\xfc\x46", [31732] = "\xe9\xd8", [31734] = "\xe9\xd4", + [31736] = "\xe9\xd5", [31737] = "\xe9\xd1", [31738] = "\xe9\xd7", + [31740] = "\xe9\xd3", [31741] = "\x8a\x82", [31744] = "\x98\x6b", + [31746] = "\xe9\xd6", [31747] = "\xe9\xd2", [31748] = "\xe9\xd0", + [31749] = "\xe9\xcf", [31755] = "\xe9\xda", [31761] = "\xe9\xdd", + [31764] = "\xe9\xdc", [31765] = "\xe9\xdb", [31773] = "\x95\x68", + [31774] = "\xe9\xd9", [31775] = "\x88\xf1", [31776] = "\xe9\xde", + [31778] = "\xe9\xe0", [31785] = "\x8a\x8f", [31786] = "\xe9\xcb", + [31787] = "\x89\x56", [31790] = "\xe9\xe2", [31798] = "\xe9\xe1", + [31799] = "\xe9\xdf", [31800] = "\x92\x4c", [31810] = "\x96\x90", + [31815] = "\x97\xd8", [31818] = "\xe9\xe3", [31824] = "\xe9\xe4", + [31831] = "\xe9\xe5", [31846] = "\xe9\xe6", [31848] = "\xe9\xe7", + [31957] = "\x92\xb9", [31959] = "\xe9\xe8", [31961] = "\x94\xb5", + [31963] = "\xe9\xed", [31964] = "\xe9\xe9", [31968] = "\xe9\xea", + [31971] = "\x96\x50", [31972] = "\x96\xc2", [31974] = "\x93\xce", + [31987] = "\xe9\xee", [31990] = "\xe9\xef", [31991] = "\x93\xbc", + [31992] = "\xe9\xec", [31993] = "\xe9\xeb", [31998] = "\x89\xa8", + [32002] = "\xe9\xf7", [32005] = "\xe9\xf6", [32011] = "\x89\x95", + [32015] = "\xe9\xf4", [32019] = "\xe9\xf3", [32022] = "\xe9\xf1", + [32024] = "\x8a\x9b", [32026] = "\xe9\xf0", [32027] = "\x8e\xb0", + [32028] = "\x89\xa7", [32043] = "\x8d\x83", [32046] = "\xe9\xfa", + [32047] = "\xe9\xf9", [32049] = "\xe9\xf8", [32052] = "\xe9\xf5", + [32054] = "\xe9\xfb", [32056] = "\xe9\xfc", [32064] = "\xea\x44", + [32065] = "\xea\x43", [32073] = "\xea\x45", [32076] = "\x89\x4c", + [32077] = "\xea\x40", [32078] = "\xea\x41", [32080] = "\x8d\x94", + [32081] = "\x96\xb7", [32084] = "\xea\x42", [32091] = "\xfc\x48", + [32092] = "\x96\x51", [32095] = "\xea\x4a", [32096] = "\xfc\x47", + [32098] = "\xea\x46", [32106] = "\xea\x4b", [32119] = "\xea\x48", + [32121] = "\xea\x47", [32127] = "\x8c\x7b", [32138] = "\xea\x4c", + [32148] = "\xea\x4d", [32153] = "\xea\x4e", [32155] = "\xea\x49", + [32159] = "\xe9\xf2", [32162] = "\xea\x4f", [32164] = "\x92\xdf", + [32168] = "\xea\x53", [32170] = "\xea\x54", [32171] = "\xea\x52", + [32177] = "\xea\x51", [32178] = "\xea\x57", [32180] = "\xea\x50", + [32182] = "\xea\x55", [32191] = "\xea\x56", [32195] = "\xea\x59", + [32201] = "\xea\x58", [32214] = "\xea\x5b", [32221] = "\xea\x5c", + [32223] = "\xea\x5d", [32226] = "\x98\x68", [32232] = "\xea\x5a", + [32233] = "\x91\xe9", [32234] = "\x8d\xeb", [32237] = "\xea\x5e", + [32265] = "\xfc\x4a", [32266] = "\xea\x5f", [32267] = "\xea\x60", + [32270] = "\xea\x61", [32357] = "\xea\x62", [32360] = "\x8c\xb2", + [32361] = "\xea\x63", [32365] = "\xea\x64", [32367] = "\x8e\xad", + [32369] = "\xea\x65", [32376] = "\xea\x66", [32379] = "\xea\x67", + [32380] = "\xea\x68", [32385] = "\xea\x6b", [32386] = "\xea\x69", + [32387] = "\x98\x5b", [32389] = "\xea\x6a", [32391] = "\x97\xed", + [32397] = "\xea\x6c", [32399] = "\x97\xd9", [32405] = "\xea\x6d", + [32406] = "\x94\x9e", [32409] = "\xea\x6e", [32410] = "\xea\x70", + [32413] = "\xea\x71", [32424] = "\xea\x6f", [32425] = "\x8d\x8d", + [32426] = "\x96\xcb", [32427] = "\x96\x83", [32428] = "\x9b\xf5", + [32430] = "\x9f\x80", [32431] = "\x96\x9b", [32436] = "\x89\xa9", + [32444] = "\xea\x73", [32445] = "\x8b\x6f", [32446] = "\xea\x74", + [32447] = "\xea\x75", [32448] = "\xea\x76", [32449] = "\xfc\x4b", + [32450] = "\x8d\x95", [32452] = "\xea\x77", [32456] = "\xe0\xd2", + [32457] = "\x96\xd9", [32459] = "\x91\xe1", [32460] = "\xea\x78", + [32461] = "\xea\x7a", [32462] = "\xea\x79", [32464] = "\xea\x7b", + [32469] = "\xea\x7c", [32472] = "\xea\x7d", [32479] = "\xea\x7e", + [32484] = "\xea\x80", [32486] = "\xea\x81", [32487] = "\xea\x82", + [32489] = "\xea\x83", [32491] = "\xea\x84", [32492] = "\xea\x85", + [32493] = "\xea\x86", [32503] = "\xea\x87", [32504] = "\xea\x88", + [32510] = "\x93\x43", [32515] = "\x8c\xdb", [32517] = "\xea\x8a", + [32528] = "\x91\x6c", [32529] = "\xea\x8b", [32540] = "\xea\x8c", + [32555] = "\x95\x40", [32558] = "\xea\x8d", [32570] = "\xea\x8e", + [32571] = "\xe2\x56", [32574] = "\xe6\xd8", [32575] = "\xe8\xeb", + [32578] = "\xea\x8f", [32580] = "\xea\x90", [32591] = "\xea\x92", + [32592] = "\xea\x93", [32593] = "\xea\x94", [32594] = "\x97\xee", + [32595] = "\xea\x91", [32598] = "\xea\x95", [32599] = "\xea\x96", + [32602] = "\xea\x98", [32604] = "\xea\x97", [32610] = "\xea\x9a", + [32614] = "\xea\x9b", [32615] = "\xea\x99", [32637] = "\x97\xb4", + [32645] = "\xea\x9c", [32652] = "\xea\x9d", [32653] = "\xe2\x73", + [32656] = "\xea\x9e" +}; + +static const char from_ucs4_cjkcpt[261][2] = +{ + /* start = 0xf929, end = 0xfa2d */ + [ 0] = "\xfa\xe0", [ 179] = "\xfb\xe9", [ 229] = "\xfa\x90", + [ 230] = "\xfa\x9b", [ 231] = "\xfa\x9c", [ 232] = "\xfa\xb1", + [ 233] = "\xfa\xd8", [ 234] = "\xfa\xe8", [ 235] = "\xfa\xea", + [ 236] = "\xfb\x58", [ 237] = "\xfb\x5e", [ 238] = "\xfb\x75", + [ 239] = "\xfb\x7d", [ 240] = "\xfb\x7e", [ 241] = "\xfb\x80", + [ 242] = "\xfb\x82", [ 243] = "\xfb\x86", [ 244] = "\xfb\x89", + [ 245] = "\xfb\x92", [ 246] = "\xfb\x9d", [ 247] = "\xfb\x9f", + [ 248] = "\xfb\xa0", [ 249] = "\xfb\xa9", [ 250] = "\xfb\xb1", + [ 251] = "\xfb\xb3", [ 252] = "\xfb\xb4", [ 253] = "\xfb\xb7", + [ 254] = "\xfb\xd3", [ 255] = "\xfb\xda", [ 256] = "\xfb\xea", + [ 257] = "\xfb\xf6", [ 258] = "\xfb\xf7", [ 259] = "\xfb\xf9", + [ 260] = "\xfc\x49" +}; + +static const char from_ucs4_extra[229][2] = +{ + /* start = 0xff01, end = 0xffe5 */ + [ 0] = "\x81\x49", [ 1] = "\xfa\x57", [ 2] = "\x81\x94", + [ 3] = "\x81\x90", [ 4] = "\x81\x93", [ 5] = "\x81\x95", + [ 6] = "\xfa\x56", [ 7] = "\x81\x69", [ 8] = "\x81\x6a", + [ 9] = "\x81\x96", [ 10] = "\x81\x7b", [ 11] = "\x81\x43", + [ 12] = "\x81\x7c", [ 13] = "\x81\x44", [ 14] = "\x81\x5e", + [ 15] = "\x82\x4f", [ 16] = "\x82\x50", [ 17] = "\x82\x51", + [ 18] = "\x82\x52", [ 19] = "\x82\x53", [ 20] = "\x82\x54", + [ 21] = "\x82\x55", [ 22] = "\x82\x56", [ 23] = "\x82\x57", + [ 24] = "\x82\x58", [ 25] = "\x81\x46", [ 26] = "\x81\x47", + [ 27] = "\x81\x83", [ 28] = "\x81\x81", [ 29] = "\x81\x84", + [ 30] = "\x81\x48", [ 31] = "\x81\x97", [ 32] = "\x82\x60", + [ 33] = "\x82\x61", [ 34] = "\x82\x62", [ 35] = "\x82\x63", + [ 36] = "\x82\x64", [ 37] = "\x82\x65", [ 38] = "\x82\x66", + [ 39] = "\x82\x67", [ 40] = "\x82\x68", [ 41] = "\x82\x69", + [ 42] = "\x82\x6a", [ 43] = "\x82\x6b", [ 44] = "\x82\x6c", + [ 45] = "\x82\x6d", [ 46] = "\x82\x6e", [ 47] = "\x82\x6f", + [ 48] = "\x82\x70", [ 49] = "\x82\x71", [ 50] = "\x82\x72", + [ 51] = "\x82\x73", [ 52] = "\x82\x74", [ 53] = "\x82\x75", + [ 54] = "\x82\x76", [ 55] = "\x82\x77", [ 56] = "\x82\x78", + [ 57] = "\x82\x79", [ 58] = "\x81\x6d", [ 59] = "\x81\x5f", + [ 60] = "\x81\x6e", [ 61] = "\x81\x4f", [ 62] = "\x81\x51", + [ 63] = "\x81\x4d", [ 64] = "\x82\x81", [ 65] = "\x82\x82", + [ 66] = "\x82\x83", [ 67] = "\x82\x84", [ 68] = "\x82\x85", + [ 69] = "\x82\x86", [ 70] = "\x82\x87", [ 71] = "\x82\x88", + [ 72] = "\x82\x89", [ 73] = "\x82\x8a", [ 74] = "\x82\x8b", + [ 75] = "\x82\x8c", [ 76] = "\x82\x8d", [ 77] = "\x82\x8e", + [ 78] = "\x82\x8f", [ 79] = "\x82\x90", [ 80] = "\x82\x91", + [ 81] = "\x82\x92", [ 82] = "\x82\x93", [ 83] = "\x82\x94", + [ 84] = "\x82\x95", [ 85] = "\x82\x96", [ 86] = "\x82\x97", + [ 87] = "\x82\x98", [ 88] = "\x82\x99", [ 89] = "\x82\x9a", + [ 90] = "\x81\x6f", [ 91] = "\x81\x62", [ 92] = "\x81\x70", + [ 93] = "\x81\x60", [ 96] = "\xa1\x00", [ 97] = "\xa2\x00", + [ 98] = "\xa3\x00", [ 99] = "\xa4\x00", [ 100] = "\xa5\x00", + [ 101] = "\xa6\x00", [ 102] = "\xa7\x00", [ 103] = "\xa8\x00", + [ 104] = "\xa9\x00", [ 105] = "\xaa\x00", [ 106] = "\xab\x00", + [ 107] = "\xac\x00", [ 108] = "\xad\x00", [ 109] = "\xae\x00", + [ 110] = "\xaf\x00", [ 111] = "\xb0\x00", [ 112] = "\xb1\x00", + [ 113] = "\xb2\x00", [ 114] = "\xb3\x00", [ 115] = "\xb4\x00", + [ 116] = "\xb5\x00", [ 117] = "\xb6\x00", [ 118] = "\xb7\x00", + [ 119] = "\xb8\x00", [ 120] = "\xb9\x00", [ 121] = "\xba\x00", + [ 122] = "\xbb\x00", [ 123] = "\xbc\x00", [ 124] = "\xbd\x00", + [ 125] = "\xbe\x00", [ 126] = "\xbf\x00", [ 127] = "\xc0\x00", + [ 128] = "\xc1\x00", [ 129] = "\xc2\x00", [ 130] = "\xc3\x00", + [ 131] = "\xc4\x00", [ 132] = "\xc5\x00", [ 133] = "\xc6\x00", + [ 134] = "\xc7\x00", [ 135] = "\xc8\x00", [ 136] = "\xc9\x00", + [ 137] = "\xca\x00", [ 138] = "\xcb\x00", [ 139] = "\xcc\x00", + [ 140] = "\xcd\x00", [ 141] = "\xce\x00", [ 142] = "\xcf\x00", + [ 143] = "\xd0\x00", [ 144] = "\xd1\x00", [ 145] = "\xd2\x00", + [ 146] = "\xd3\x00", [ 147] = "\xd4\x00", [ 148] = "\xd5\x00", + [ 149] = "\xd6\x00", [ 150] = "\xd7\x00", [ 151] = "\xd8\x00", + [ 152] = "\xd9\x00", [ 153] = "\xda\x00", [ 154] = "\xdb\x00", + [ 155] = "\xdc\x00", [ 156] = "\xdd\x00", [ 157] = "\xde\x00", + [ 158] = "\xdf\x00", [ 223] = "\x81\x91", [ 224] = "\x81\x92", + [ 225] = "\x81\xca", [ 226] = "\x81\x50", [ 227] = "\xfa\x55", + [ 228] = "\x81\x8f" +}; + +/* Definitions used in the body of the `gconv' function. */ +#define CHARSET_NAME "CP932//" +#define FROM_LOOP from_cp932 +#define TO_LOOP to_cp932 +#define DEFINE_INIT 1 +#define DEFINE_FINI 1 +#define MIN_NEEDED_FROM 1 +#define MAX_NEEDED_FROM 2 +#define MIN_NEEDED_TO 4 + +/* First define the conversion function from CP932 to UCS4. */ +#define MIN_NEEDED_INPUT MIN_NEEDED_FROM +#define MAX_NEEDED_INPUT MAX_NEEDED_FROM +#define MIN_NEEDED_OUTPUT MIN_NEEDED_TO +#define LOOPFCT FROM_LOOP +#define BODY \ + { \ + uint32_t ch = *inptr; \ + \ + if (ch < 0x80) \ + ++inptr; \ + else if (ch >= 0xa1 && ch <= 0xdf) \ + { \ + ch += 0xfec0; \ + ++inptr; \ + } \ + else if (__builtin_expect (ch, 0) == 0xa0 \ + || __builtin_expect (ch <= 0x80, 0) \ + || __builtin_expect (ch > 0xfc, 0)) \ + { \ + /* These are illegal. */ \ + if (! ignore_errors_p ()) \ + { \ + /* This is an illegal character. */ \ + result = __GCONV_ILLEGAL_INPUT; \ + break; \ + } \ + \ + ++inptr; \ + ++*irreversible; \ + continue; \ + } \ + else \ + { \ + /* Two-byte character. First test whether the next character \ + is also available. */ \ + uint32_t ch2; \ + uint_fast32_t idx; \ + \ + if (__builtin_expect (inptr + 1 >= inend, 0)) \ + { \ + /* The second character is not available. Store \ + the intermediate result. */ \ + result = __GCONV_INCOMPLETE_INPUT; \ + break; \ + } \ + \ + ch2 = inptr[1]; \ + idx = ch * 256 + ch2; \ + if (__builtin_expect (ch2 < 0x40, 0) \ + || __builtin_expect (ch2 > 0xfc, 0) \ + || __builtin_expect (ch2 == 0x7f, 0) \ + || (__builtin_expect (idx > 0x84be, 0) && idx < 0x8740) \ + || (__builtin_expect (idx > 0x879c, 0) && idx < 0x889f) \ + || (__builtin_expect (idx > 0x88fc, 0) && idx < 0x8940) \ + || (__builtin_expect (idx > 0x9ffc, 0) && idx < 0xe040) \ + || (__builtin_expect (idx > 0xeaa4, 0) && idx < 0xed40) \ + || (__builtin_expect (idx > 0xeefc, 0) && idx < 0xf040) \ + || __builtin_expect (idx > 0xfc4b, 0)) \ + { \ + /* This is illegal. */ \ + if (! ignore_errors_p ()) \ + { \ + /* This is an illegal character. */ \ + result = __GCONV_ILLEGAL_INPUT; \ + break; \ + } \ + \ + ++inptr; \ + ++*irreversible; \ + continue; \ + } \ + else \ + { \ + /* We could pack the data a bit more dense. The second \ + byte will never be 0x7f and it will also be never \ + >0xfc. But this would mean yet more `if's. */ \ + if (idx <= 0x84be) \ + ch = cjk_block1[(ch - 0x81) * 192 + ch2 - 0x40]; \ + else if (idx <= 0x879c) \ + ch = cjk_block2[(ch - 0x87) * 192 + ch2 - 0x40]; \ + else if (idx <= 0x88fc) \ + ch = cjk_block3[(ch - 0x88) * 192 + ch2 - 0x9f]; \ + else if (idx <= 0x9ffc) \ + ch = cjk_block4[(ch - 0x89) * 192 + ch2 - 0x40]; \ + else if (idx <= 0xeaa4) \ + ch = cjk_block5[(ch - 0xe0) * 192 + ch2 - 0x40]; \ + else if (idx <= 0xeefc) \ + ch = cjk_block6[(ch - 0xed) * 192 + ch2 - 0x40]; \ + else if (idx <= 0xf9fc) \ + ch = (ch-0xf0)*188 + ch2-((ch2<0x7f)?0x40:0x41) + 0xe000; \ + else \ + ch = cjk_block7[(ch - 0xfa) * 192 + ch2 - 0x40]; \ + \ + inptr += 2; \ + } \ + \ + if (__builtin_expect (ch, 1) == 0) \ + { \ + /* This is an illegal character. */ \ + if (! ignore_errors_p ()) \ + { \ + /* This is an illegal character. */ \ + result = __GCONV_ILLEGAL_INPUT; \ + break; \ + } \ + \ + inptr += 2; \ + ++*irreversible; \ + continue; \ + } \ + } \ + \ + put32 (outptr, ch); \ + outptr += 4; \ + } +#define LOOP_NEED_FLAGS +#include + + +/* Next, define the other direction. */ +#define MIN_NEEDED_INPUT MIN_NEEDED_TO +#define MIN_NEEDED_OUTPUT MIN_NEEDED_FROM +#define MAX_NEEDED_OUTPUT MAX_NEEDED_FROM +#define LOOPFCT TO_LOOP +#define BODY \ + { \ + uint32_t ch = get32 (inptr); \ + const char *cp; \ + unsigned char pua[2]; \ + \ + if (ch >= (sizeof (from_ucs4_lat1) / sizeof (from_ucs4_lat1[0]))) \ + { \ + if (ch >= 0x0391 && ch <= 0x0451) \ + cp = from_ucs4_greek[ch - 0x391]; \ + else if (ch >= 0x2010 && ch <= 0x9fa0) \ + cp = from_ucs4_cjk[ch - 0x2010]; \ + else if (ch >= 0xe000 && ch <= 0xe757) \ + { \ + pua[0] = (ch - 0xe000) / 188 + 0xf0; \ + pua[1] = (ch - 0xe000) % 188 + 0x40; \ + if (pua[1] > 0x7e) \ + pua[1]++; \ + cp = (const char *)&(pua[0]); \ + } \ + else if (ch >= 0xf929 && ch <= 0xfa2d) \ + cp = from_ucs4_cjkcpt[ch - 0xf929]; \ + else if (__builtin_expect (ch >= 0xff01, 1) \ + && __builtin_expect (ch <= 0xffe5, 1)) \ + cp = from_ucs4_extra[ch - 0xff01]; \ + else \ + { \ + UNICODE_TAG_HANDLER (ch, 4); \ + /* Illegal character. */ \ + cp = ""; \ + } \ + } \ + else \ + cp = from_ucs4_lat1[ch]; \ + \ + if (__builtin_expect (cp[0], '\1') == '\0' && ch != 0) \ + { \ + /* Illegal character. */ \ + STANDARD_TO_LOOP_ERR_HANDLER (4); \ + } \ + else \ + { \ + *outptr = cp[0]; \ + /* Now test for a possible second byte and write this if possible. */\ + if (cp[1] != '\0') \ + { \ + if (__builtin_expect (outptr + 1 >= outend, 0)) \ + { \ + /* The result does not fit into the buffer. */ \ + result = __GCONV_FULL_OUTPUT; \ + break; \ + } \ + *++outptr = cp[1]; \ + } \ + ++outptr; \ + } \ + \ + inptr += 4; \ + } +#define LOOP_NEED_FLAGS +#include + + +/* Now define the toplevel functions. */ +#include --- glibc-2.3.2/iconvdata/euc-jp-ms.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/iconvdata/euc-jp-ms.c 2003-08-14 04:37:44.000000000 -0400 @@ -0,0 +1,4931 @@ +/* Mapping tables for EUCJP-MS handling. + Copyright (C) 1998,1999,2000,2001,2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by MORIYAMA Masayuki , 2003. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include +#include +#include +#include +#include +#include + +static const uint16_t cjk_block1[752] = +{ + /* 0xa1a1 */ 0x3000, 0x3001, 0x3002, 0xff0c, 0xff0e, 0x30fb, 0xff1a, 0xff1b, + /* 0xa1a9 */ 0xff1f, 0xff01, 0x309b, 0x309c, 0x00b4, 0xff40, 0x00a8, 0xff3e, + /* 0xa1b1 */ 0xffe3, 0xff3f, 0x30fd, 0x30fe, 0x309d, 0x309e, 0x3003, 0x4edd, + /* 0xa1b9 */ 0x3005, 0x3006, 0x3007, 0x30fc, 0x2015, 0x2010, 0xff0f, 0xff3c, + /* 0xa1c1 */ 0xff5e, 0x2225, 0xff5c, 0x2026, 0x2025, 0x2018, 0x2019, 0x201c, + /* 0xa1c9 */ 0x201d, 0xff08, 0xff09, 0x3014, 0x3015, 0xff3b, 0xff3d, 0xff5b, + /* 0xa1d1 */ 0xff5d, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c, 0x300d, 0x300e, + /* 0xa1d9 */ 0x300f, 0x3010, 0x3011, 0xff0b, 0xff0d, 0x00b1, 0x00d7, 0x00f7, + /* 0xa1e1 */ 0xff1d, 0x2260, 0xff1c, 0xff1e, 0x2266, 0x2267, 0x221e, 0x2234, + /* 0xa1e9 */ 0x2642, 0x2640, 0x00b0, 0x2032, 0x2033, 0x2103, 0xffe5, 0xff04, + /* 0xa1f1 */ 0xffe0, 0xffe1, 0xff05, 0xff03, 0xff06, 0xff0a, 0xff20, 0x00a7, + /* 0xa1f9 */ 0x2606, 0x2605, 0x25cb, 0x25cf, 0x25ce, 0x25c7, 0x25c6, 0x25a1, + /* 0xa2a3 */ 0x25a0, 0x25b3, 0x25b2, 0x25bd, 0x25bc, 0x203b, 0x3012, 0x2192, + /* 0xa2ab */ 0x2190, 0x2191, 0x2193, 0x3013, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xa2b3 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2208, + /* 0xa2bb */ 0x220b, 0x2286, 0x2287, 0x2282, 0x2283, 0x222a, 0x2229, 0x0000, + /* 0xa2c3 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2227, + /* 0xa2cb */ 0x2228, 0xffe2, 0x21d2, 0x21d4, 0x2200, 0x2203, 0x0000, 0x0000, + /* 0xa2d3 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xa2db */ 0x0000, 0x2220, 0x22a5, 0x2312, 0x2202, 0x2207, 0x2261, 0x2252, + /* 0xa2e3 */ 0x226a, 0x226b, 0x221a, 0x223d, 0x221d, 0x2235, 0x222b, 0x222c, + /* 0xa2eb */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x212b, + /* 0xa2f3 */ 0x2030, 0x266f, 0x266d, 0x266a, 0x2020, 0x2021, 0x00b6, 0x0000, + /* 0xa2fb */ 0x0000, 0x0000, 0x0000, 0x25ef, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xa3a5 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xa3ad */ 0x0000, 0x0000, 0x0000, 0xff10, 0xff11, 0xff12, 0xff13, 0xff14, + /* 0xa3b5 */ 0xff15, 0xff16, 0xff17, 0xff18, 0xff19, 0x0000, 0x0000, 0x0000, + /* 0xa3bd */ 0x0000, 0x0000, 0x0000, 0x0000, 0xff21, 0xff22, 0xff23, 0xff24, + /* 0xa3c5 */ 0xff25, 0xff26, 0xff27, 0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, + /* 0xa3cd */ 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31, 0xff32, 0xff33, 0xff34, + /* 0xa3d5 */ 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, 0xff3a, 0x0000, 0x0000, + /* 0xa3dd */ 0x0000, 0x0000, 0x0000, 0x0000, 0xff41, 0xff42, 0xff43, 0xff44, + /* 0xa3e5 */ 0xff45, 0xff46, 0xff47, 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, + /* 0xa3ed */ 0xff4d, 0xff4e, 0xff4f, 0xff50, 0xff51, 0xff52, 0xff53, 0xff54, + /* 0xa3f5 */ 0xff55, 0xff56, 0xff57, 0xff58, 0xff59, 0xff5a, 0x0000, 0x0000, + /* 0xa3fd */ 0x0000, 0x0000, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, + /* 0xa4a7 */ 0x3047, 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, + /* 0xa4af */ 0x304f, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, + /* 0xa4b7 */ 0x3057, 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, + /* 0xa4bf */ 0x305f, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, + /* 0xa4c7 */ 0x3067, 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, + /* 0xa4cf */ 0x306f, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, + /* 0xa4d7 */ 0x3077, 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, + /* 0xa4df */ 0x307f, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, + /* 0xa4e7 */ 0x3087, 0x3088, 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, + /* 0xa4ef */ 0x308f, 0x3090, 0x3091, 0x3092, 0x3093, 0x0000, 0x0000, 0x0000, + /* 0xa4f7 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xa5a1 */ 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, 0x30a8, + /* 0xa5a9 */ 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, 0x30b0, + /* 0xa5b1 */ 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, 0x30b8, + /* 0xa5b9 */ 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, 0x30c0, + /* 0xa5c1 */ 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, 0x30c8, + /* 0xa5c9 */ 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, 0x30d0, + /* 0xa5d1 */ 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, 0x30d8, + /* 0xa5d9 */ 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, 0x30e0, + /* 0xa5e1 */ 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, 0x30e8, + /* 0xa5e9 */ 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef, 0x30f0, + /* 0xa5f1 */ 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0x0000, 0x0000, + /* 0xa5f9 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0391, 0x0392, + /* 0xa6a3 */ 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, + /* 0xa6ab */ 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, + /* 0xa6b3 */ 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x0000, 0x0000, + /* 0xa6bb */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03b1, 0x03b2, + /* 0xa6c3 */ 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, + /* 0xa6cb */ 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, + /* 0xa6d3 */ 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x0000, 0x0000, + /* 0xa6db */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xa6e3 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xa6eb */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xa6f3 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xa6fb */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0410, 0x0411, 0x0412, 0x0413, + /* 0xa7a5 */ 0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, + /* 0xa7ad */ 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422, + /* 0xa7b5 */ 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, + /* 0xa7bd */ 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0000, 0x0000, 0x0000, + /* 0xa7c5 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xa7cd */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0430, 0x0431, 0x0432, 0x0433, + /* 0xa7d5 */ 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, + /* 0xa7dd */ 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 0x0441, 0x0442, + /* 0xa7e5 */ 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, + /* 0xa7ed */ 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, 0x0000, 0x0000, 0x0000, + /* 0xa7f5 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xa7fd */ 0x0000, 0x0000, 0x2500, 0x2502, 0x250c, 0x2510, 0x2518, 0x2514, + /* 0xa8a7 */ 0x251c, 0x252c, 0x2524, 0x2534, 0x253c, 0x2501, 0x2503, 0x250f, + /* 0xa8af */ 0x2513, 0x251b, 0x2517, 0x2523, 0x2533, 0x252b, 0x253b, 0x254b, + /* 0xa8b7 */ 0x2520, 0x252f, 0x2528, 0x2537, 0x253f, 0x251d, 0x2530, 0x2525, + /* 0xa8bf */ 0x2538, 0x2542, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xa8c7 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xa8cf */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xa8d7 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xa8df */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xa8e7 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xa8ef */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xa8f7 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const uint16_t cjk_block2[94] = +{ + /* 0xada1 */ 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, + /* 0xada9 */ 0x2468, 0x2469, 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x246f, + /* 0xadb1 */ 0x2470, 0x2471, 0x2472, 0x2473, 0x2160, 0x2161, 0x2162, 0x2163, + /* 0xadb9 */ 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x0000, 0x3349, + /* 0xadc1 */ 0x3314, 0x3322, 0x334d, 0x3318, 0x3327, 0x3303, 0x3336, 0x3351, + /* 0xadc9 */ 0x3357, 0x330d, 0x3326, 0x3323, 0x332b, 0x334a, 0x333b, 0x339c, + /* 0xadd1 */ 0x339d, 0x339e, 0x338e, 0x338f, 0x33c4, 0x33a1, 0x0000, 0x0000, + /* 0xadd9 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x337b, 0x301d, + /* 0xade1 */ 0x301f, 0x2116, 0x33cd, 0x2121, 0x32a4, 0x32a5, 0x32a6, 0x32a7, + /* 0xade9 */ 0x32a8, 0x3231, 0x3232, 0x3239, 0x337e, 0x337d, 0x337c, 0x2252, + /* 0xadf1 */ 0x2261, 0x222b, 0x222e, 0x2211, 0x221a, 0x22a5, 0x2220, 0x221f, + /* 0xadf9 */ 0x22bf, 0x2235, 0x2229, 0x222a, 0x0000, 0x0000 +}; + +static const uint16_t cjk_block_ibm[268] = +{ + /* start = 0x8ff3f3, end = 0x8ff4fe */ + /* 0x8ff3f3 */ 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, + /* 0x8ff3fb */ 0x2178, 0x2179, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, + /* 0x8ff4a5 */ 0x2166, 0x2167, 0x2168, 0x2169, 0xff07, 0xff02, 0x3231, 0x2116, + /* 0x8ff4ad */ 0x2121, 0x70bb, 0x4efc, 0x50f4, 0x51ec, 0x5307, 0x5324, 0xfa0e, + /* 0x8ff4b5 */ 0x548a, 0x5759, 0xfa0f, 0xfa10, 0x589e, 0x5bec, 0x5cf5, 0x5d53, + /* 0x8ff4bd */ 0xfa11, 0x5fb7, 0x6085, 0x6120, 0x654e, 0x663b, 0x6665, 0xfa12, + /* 0x8ff4c5 */ 0xf929, 0x6801, 0xfa13, 0xfa14, 0x6a6b, 0x6ae2, 0x6df8, 0x6df2, + /* 0x8ff4cd */ 0x7028, 0xfa15, 0xfa16, 0x7501, 0x7682, 0x769e, 0xfa17, 0x7930, + /* 0x8ff4d5 */ 0xfa18, 0xfa19, 0xfa1a, 0xfa1b, 0x7ae7, 0xfa1c, 0xfa1d, 0x7da0, + /* 0x8ff4dd */ 0x7dd6, 0xfa1e, 0x8362, 0xfa1f, 0x85b0, 0xfa20, 0xfa21, 0x8807, + /* 0x8ff4e5 */ 0xfa22, 0x8b7f, 0x8cf4, 0x8d76, 0xfa23, 0xfa24, 0xfa25, 0x90de, + /* 0x8ff4ed */ 0xfa26, 0x9115, 0xfa27, 0xfa28, 0x9592, 0xf9dc, 0xfa29, 0x973b, + /* 0x8ff4f5 */ 0x974d, 0x9751, 0xfa2a, 0xfa2b, 0xfa2c, 0x999e, 0x9ad9, 0x9b72, + /* 0x8ff4fd */ 0xfa2d, 0x9ed1 +}; + +static const char from_ucs4_lat1[256][2] = +{ + /* start = 0x0000, end = 0x00ff */ + [ 0] = "\x00\x00", [ 1] = "\x01\x00", [ 2] = "\x02\x00", + [ 3] = "\x03\x00", [ 4] = "\x04\x00", [ 5] = "\x05\x00", + [ 6] = "\x06\x00", [ 7] = "\x07\x00", [ 8] = "\x08\x00", + [ 9] = "\x09\x00", [ 10] = "\x0a\x00", [ 11] = "\x0b\x00", + [ 12] = "\x0c\x00", [ 13] = "\x0d\x00", [ 14] = "\x0e\x00", + [ 15] = "\x0f\x00", [ 16] = "\x10\x00", [ 17] = "\x11\x00", + [ 18] = "\x12\x00", [ 19] = "\x13\x00", [ 20] = "\x14\x00", + [ 21] = "\x15\x00", [ 22] = "\x16\x00", [ 23] = "\x17\x00", + [ 24] = "\x18\x00", [ 25] = "\x19\x00", [ 26] = "\x1a\x00", + [ 27] = "\x1b\x00", [ 28] = "\x1c\x00", [ 29] = "\x1d\x00", + [ 30] = "\x1e\x00", [ 31] = "\x1f\x00", [ 32] = "\x20\x00", + [ 33] = "\x21\x00", [ 34] = "\x22\x00", [ 35] = "\x23\x00", + [ 36] = "\x24\x00", [ 37] = "\x25\x00", [ 38] = "\x26\x00", + [ 39] = "\x27\x00", [ 40] = "\x28\x00", [ 41] = "\x29\x00", + [ 42] = "\x2a\x00", [ 43] = "\x2b\x00", [ 44] = "\x2c\x00", + [ 45] = "\x2d\x00", [ 46] = "\x2e\x00", [ 47] = "\x2f\x00", + [ 48] = "\x30\x00", [ 49] = "\x31\x00", [ 50] = "\x32\x00", + [ 51] = "\x33\x00", [ 52] = "\x34\x00", [ 53] = "\x35\x00", + [ 54] = "\x36\x00", [ 55] = "\x37\x00", [ 56] = "\x38\x00", + [ 57] = "\x39\x00", [ 58] = "\x3a\x00", [ 59] = "\x3b\x00", + [ 60] = "\x3c\x00", [ 61] = "\x3d\x00", [ 62] = "\x3e\x00", + [ 63] = "\x3f\x00", [ 64] = "\x40\x00", [ 65] = "\x41\x00", + [ 66] = "\x42\x00", [ 67] = "\x43\x00", [ 68] = "\x44\x00", + [ 69] = "\x45\x00", [ 70] = "\x46\x00", [ 71] = "\x47\x00", + [ 72] = "\x48\x00", [ 73] = "\x49\x00", [ 74] = "\x4a\x00", + [ 75] = "\x4b\x00", [ 76] = "\x4c\x00", [ 77] = "\x4d\x00", + [ 78] = "\x4e\x00", [ 79] = "\x4f\x00", [ 80] = "\x50\x00", + [ 81] = "\x51\x00", [ 82] = "\x52\x00", [ 83] = "\x53\x00", + [ 84] = "\x54\x00", [ 85] = "\x55\x00", [ 86] = "\x56\x00", + [ 87] = "\x57\x00", [ 88] = "\x58\x00", [ 89] = "\x59\x00", + [ 90] = "\x5a\x00", [ 91] = "\x5b\x00", [ 92] = "\x5c\x00", + [ 93] = "\x5d\x00", [ 94] = "\x5e\x00", [ 95] = "\x5f\x00", + [ 96] = "\x60\x00", [ 97] = "\x61\x00", [ 98] = "\x62\x00", + [ 99] = "\x63\x00", [ 100] = "\x64\x00", [ 101] = "\x65\x00", + [ 102] = "\x66\x00", [ 103] = "\x67\x00", [ 104] = "\x68\x00", + [ 105] = "\x69\x00", [ 106] = "\x6a\x00", [ 107] = "\x6b\x00", + [ 108] = "\x6c\x00", [ 109] = "\x6d\x00", [ 110] = "\x6e\x00", + [ 111] = "\x6f\x00", [ 112] = "\x70\x00", [ 113] = "\x71\x00", + [ 114] = "\x72\x00", [ 115] = "\x73\x00", [ 116] = "\x74\x00", + [ 117] = "\x75\x00", [ 118] = "\x76\x00", [ 119] = "\x77\x00", + [ 120] = "\x78\x00", [ 121] = "\x79\x00", [ 122] = "\x7a\x00", + [ 123] = "\x7b\x00", [ 124] = "\x7c\x00", [ 125] = "\x7d\x00", + [ 126] = "\x7e\x00", [ 127] = "\x7f\x00", [ 128] = "\x80\x00", + [ 129] = "\x81\x00", [ 130] = "\x82\x00", [ 131] = "\x83\x00", + [ 132] = "\x84\x00", [ 133] = "\x85\x00", [ 134] = "\x86\x00", + [ 135] = "\x87\x00", [ 136] = "\x88\x00", [ 137] = "\x89\x00", + [ 138] = "\x8a\x00", [ 139] = "\x8b\x00", [ 140] = "\x8c\x00", + [ 141] = "\x8d\x00", [ 144] = "\x90\x00", [ 145] = "\x91\x00", + [ 146] = "\x92\x00", [ 147] = "\x93\x00", [ 148] = "\x94\x00", + [ 149] = "\x95\x00", [ 150] = "\x96\x00", [ 151] = "\x97\x00", + [ 152] = "\x98\x00", [ 153] = "\x99\x00", [ 154] = "\x9a\x00", + [ 155] = "\x9b\x00", [ 156] = "\x9c\x00", [ 157] = "\x9d\x00", + [ 158] = "\x9e\x00", [ 159] = "\x9f\x00", [ 161] = "\xa2\x42", + [ 162] = "\xa1\xf1", [ 163] = "\xa1\xf2", [ 164] = "\xa2\x70", + [ 165] = "\x5c\x00", [ 166] = "\xa2\x43", [ 167] = "\xa1\xf8", + [ 168] = "\xa1\xaf", [ 169] = "\xa2\x6d", [ 170] = "\xa2\x6c", + [ 172] = "\xa2\xcc", [ 174] = "\xa2\x6e", [ 175] = "\xa2\x34", + [ 176] = "\xa1\xeb", [ 177] = "\xa1\xde", [ 180] = "\xa1\xad", + [ 182] = "\xa2\xf9", [ 184] = "\xa2\x31", [ 186] = "\xa2\x6b", + [ 191] = "\xa2\x44", [ 192] = "\xaa\x22", [ 193] = "\xaa\x21", + [ 194] = "\xaa\x24", [ 195] = "\xaa\x2a", [ 196] = "\xaa\x23", + [ 197] = "\xaa\x29", [ 198] = "\xa9\x21", [ 199] = "\xaa\x2e", + [ 200] = "\xaa\x32", [ 201] = "\xaa\x31", [ 202] = "\xaa\x34", + [ 203] = "\xaa\x33", [ 204] = "\xaa\x40", [ 205] = "\xaa\x3f", + [ 206] = "\xaa\x42", [ 207] = "\xaa\x41", [ 209] = "\xaa\x50", + [ 210] = "\xaa\x52", [ 211] = "\xaa\x51", [ 212] = "\xaa\x54", + [ 213] = "\xaa\x58", [ 214] = "\xaa\x53", [ 215] = "\xa1\xdf", + [ 216] = "\xa9\x2c", [ 217] = "\xaa\x63", [ 218] = "\xaa\x62", + [ 219] = "\xaa\x65", [ 220] = "\xaa\x64", [ 221] = "\xaa\x72", + [ 222] = "\xa9\x30", [ 223] = "\xa9\x4e", [ 224] = "\xab\x22", + [ 225] = "\xab\x21", [ 226] = "\xab\x24", [ 227] = "\xab\x2a", + [ 228] = "\xab\x23", [ 229] = "\xab\x29", [ 230] = "\xa9\x41", + [ 231] = "\xab\x2e", [ 232] = "\xab\x32", [ 233] = "\xab\x31", + [ 234] = "\xab\x34", [ 235] = "\xab\x33", [ 236] = "\xab\x40", + [ 237] = "\xab\x3f", [ 238] = "\xab\x42", [ 239] = "\xab\x41", + [ 240] = "\xa9\x43", [ 241] = "\xab\x50", [ 242] = "\xab\x52", + [ 243] = "\xab\x51", [ 244] = "\xab\x54", [ 245] = "\xab\x58", + [ 246] = "\xab\x53", [ 247] = "\xa1\xe0", [ 248] = "\xa9\x4c", + [ 249] = "\xab\x63", [ 250] = "\xab\x62", [ 251] = "\xab\x65", + [ 252] = "\xab\x64", [ 253] = "\xab\x72", [ 254] = "\xa9\x50", + [ 255] = "\xab\x73" +}; + +static const char from_ucs4_greek[864][2] = +{ + /* start = 0x0100, end = 0x045f */ + [ 0] = "\xaa\x27", [ 1] = "\xab\x27", [ 2] = "\xaa\x25", + [ 3] = "\xab\x25", [ 4] = "\xaa\x28", [ 5] = "\xab\x28", + [ 6] = "\xaa\x2b", [ 7] = "\xab\x2b", [ 8] = "\xaa\x2c", + [ 9] = "\xab\x2c", [ 10] = "\xaa\x2f", [ 11] = "\xab\x2f", + [ 12] = "\xaa\x2d", [ 13] = "\xab\x2d", [ 14] = "\xaa\x30", + [ 15] = "\xab\x30", [ 16] = "\xa9\x22", [ 17] = "\xa9\x42", + [ 18] = "\xaa\x37", [ 19] = "\xab\x37", [ 22] = "\xaa\x36", + [ 23] = "\xab\x36", [ 24] = "\xaa\x38", [ 25] = "\xab\x38", + [ 26] = "\xaa\x35", [ 27] = "\xab\x35", [ 28] = "\xaa\x3a", + [ 29] = "\xab\x3a", [ 30] = "\xaa\x3b", [ 31] = "\xab\x3b", + [ 32] = "\xaa\x3d", [ 33] = "\xab\x3d", [ 34] = "\xaa\x3c", + [ 36] = "\xaa\x3e", [ 37] = "\xab\x3e", [ 38] = "\xa9\x24", + [ 39] = "\xa9\x44", [ 40] = "\xaa\x47", [ 41] = "\xab\x47", + [ 42] = "\xaa\x45", [ 43] = "\xab\x45", [ 46] = "\xaa\x46", + [ 47] = "\xab\x46", [ 48] = "\xaa\x44", [ 49] = "\xa9\x45", + [ 50] = "\xa9\x26", [ 51] = "\xa9\x46", [ 52] = "\xaa\x48", + [ 53] = "\xab\x48", [ 54] = "\xaa\x49", [ 55] = "\xab\x49", + [ 56] = "\xa9\x47", [ 57] = "\xaa\x4a", [ 58] = "\xab\x4a", + [ 59] = "\xaa\x4c", [ 60] = "\xab\x4c", [ 61] = "\xaa\x4b", + [ 62] = "\xab\x4b", [ 63] = "\xa9\x29", [ 64] = "\xa9\x49", + [ 65] = "\xa9\x28", [ 66] = "\xa9\x48", [ 67] = "\xaa\x4d", + [ 68] = "\xab\x4d", [ 69] = "\xaa\x4f", [ 70] = "\xab\x4f", + [ 71] = "\xaa\x4e", [ 72] = "\xab\x4e", [ 73] = "\xa9\x4a", + [ 74] = "\xa9\x2b", [ 75] = "\xa9\x4b", [ 76] = "\xaa\x57", + [ 77] = "\xab\x57", [ 80] = "\xaa\x56", [ 81] = "\xab\x56", + [ 82] = "\xa9\x2d", [ 83] = "\xa9\x4d", [ 84] = "\xaa\x59", + [ 85] = "\xab\x59", [ 86] = "\xaa\x5b", [ 87] = "\xab\x5b", + [ 88] = "\xaa\x5a", [ 89] = "\xab\x5a", [ 90] = "\xaa\x5c", + [ 91] = "\xab\x5c", [ 92] = "\xaa\x5d", [ 93] = "\xab\x5d", + [ 94] = "\xaa\x5f", [ 95] = "\xab\x5f", [ 96] = "\xaa\x5e", + [ 97] = "\xab\x5e", [ 98] = "\xaa\x61", [ 99] = "\xab\x61", + [ 100] = "\xaa\x60", [ 101] = "\xab\x60", [ 102] = "\xa9\x2f", + [ 103] = "\xa9\x4f", [ 104] = "\xaa\x6c", [ 105] = "\xab\x6c", + [ 106] = "\xaa\x69", [ 107] = "\xab\x69", [ 108] = "\xaa\x66", + [ 109] = "\xab\x66", [ 110] = "\xaa\x6b", [ 111] = "\xab\x6b", + [ 112] = "\xaa\x68", [ 113] = "\xab\x68", [ 114] = "\xaa\x6a", + [ 115] = "\xab\x6a", [ 116] = "\xaa\x71", [ 117] = "\xab\x71", + [ 118] = "\xaa\x74", [ 119] = "\xab\x74", [ 120] = "\xaa\x73", + [ 121] = "\xaa\x75", [ 122] = "\xab\x75", [ 123] = "\xaa\x77", + [ 124] = "\xab\x77", [ 125] = "\xaa\x76", [ 126] = "\xab\x76", + [ 205] = "\xaa\x26", [ 206] = "\xab\x26", [ 207] = "\xaa\x43", + [ 208] = "\xab\x43", [ 209] = "\xaa\x55", [ 210] = "\xab\x55", + [ 211] = "\xaa\x67", [ 212] = "\xab\x67", [ 213] = "\xaa\x70", + [ 214] = "\xab\x70", [ 215] = "\xaa\x6d", [ 216] = "\xab\x6d", + [ 217] = "\xaa\x6f", [ 218] = "\xab\x6f", [ 219] = "\xaa\x6e", + [ 220] = "\xab\x6e", [ 245] = "\xab\x39", [ 455] = "\xa2\x30", + [ 472] = "\xa2\x2f", [ 473] = "\xa2\x32", [ 474] = "\xa2\x36", + [ 475] = "\xa2\x35", [ 477] = "\xa2\x33", [ 644] = "\xa2\x38", + [ 645] = "\xa2\x39", [ 646] = "\xa6\x61", [ 648] = "\xa6\x62", + [ 649] = "\xa6\x63", [ 650] = "\xa6\x64", [ 652] = "\xa6\x67", + [ 654] = "\xa6\x69", [ 655] = "\xa6\x6c", [ 656] = "\xa6\x76", + [ 657] = "\xa6\xa1", [ 658] = "\xa6\xa2", [ 659] = "\xa6\xa3", + [ 660] = "\xa6\xa4", [ 661] = "\xa6\xa5", [ 662] = "\xa6\xa6", + [ 663] = "\xa6\xa7", [ 664] = "\xa6\xa8", [ 665] = "\xa6\xa9", + [ 666] = "\xa6\xaa", [ 667] = "\xa6\xab", [ 668] = "\xa6\xac", + [ 669] = "\xa6\xad", [ 670] = "\xa6\xae", [ 671] = "\xa6\xaf", + [ 672] = "\xa6\xb0", [ 673] = "\xa6\xb1", [ 675] = "\xa6\xb2", + [ 676] = "\xa6\xb3", [ 677] = "\xa6\xb4", [ 678] = "\xa6\xb5", + [ 679] = "\xa6\xb6", [ 680] = "\xa6\xb7", [ 681] = "\xa6\xb8", + [ 682] = "\xa6\x65", [ 683] = "\xa6\x6a", [ 684] = "\xa6\x71", + [ 685] = "\xa6\x72", [ 686] = "\xa6\x73", [ 687] = "\xa6\x74", + [ 688] = "\xa6\x7b", [ 689] = "\xa6\xc1", [ 690] = "\xa6\xc2", + [ 691] = "\xa6\xc3", [ 692] = "\xa6\xc4", [ 693] = "\xa6\xc5", + [ 694] = "\xa6\xc6", [ 695] = "\xa6\xc7", [ 696] = "\xa6\xc8", + [ 697] = "\xa6\xc9", [ 698] = "\xa6\xca", [ 699] = "\xa6\xcb", + [ 700] = "\xa6\xcc", [ 701] = "\xa6\xcd", [ 702] = "\xa6\xce", + [ 703] = "\xa6\xcf", [ 704] = "\xa6\xd0", [ 705] = "\xa6\xd1", + [ 706] = "\xa6\x78", [ 707] = "\xa6\xd2", [ 708] = "\xa6\xd3", + [ 709] = "\xa6\xd4", [ 710] = "\xa6\xd5", [ 711] = "\xa6\xd6", + [ 712] = "\xa6\xd7", [ 713] = "\xa6\xd8", [ 714] = "\xa6\x75", + [ 715] = "\xa6\x7a", [ 716] = "\xa6\x77", [ 717] = "\xa6\x79", + [ 718] = "\xa6\x7c", [ 769] = "\xa7\xa7", [ 770] = "\xa7\x42", + [ 771] = "\xa7\x43", [ 772] = "\xa7\x44", [ 773] = "\xa7\x45", + [ 774] = "\xa7\x46", [ 775] = "\xa7\x47", [ 776] = "\xa7\x48", + [ 777] = "\xa7\x49", [ 778] = "\xa7\x4a", [ 779] = "\xa7\x4b", + [ 780] = "\xa7\x4c", [ 782] = "\xa7\x4d", [ 783] = "\xa7\x4e", + [ 784] = "\xa7\xa1", [ 785] = "\xa7\xa2", [ 786] = "\xa7\xa3", + [ 787] = "\xa7\xa4", [ 788] = "\xa7\xa5", [ 789] = "\xa7\xa6", + [ 790] = "\xa7\xa8", [ 791] = "\xa7\xa9", [ 792] = "\xa7\xaa", + [ 793] = "\xa7\xab", [ 794] = "\xa7\xac", [ 795] = "\xa7\xad", + [ 796] = "\xa7\xae", [ 797] = "\xa7\xaf", [ 798] = "\xa7\xb0", + [ 799] = "\xa7\xb1", [ 800] = "\xa7\xb2", [ 801] = "\xa7\xb3", + [ 802] = "\xa7\xb4", [ 803] = "\xa7\xb5", [ 804] = "\xa7\xb6", + [ 805] = "\xa7\xb7", [ 806] = "\xa7\xb8", [ 807] = "\xa7\xb9", + [ 808] = "\xa7\xba", [ 809] = "\xa7\xbb", [ 810] = "\xa7\xbc", + [ 811] = "\xa7\xbd", [ 812] = "\xa7\xbe", [ 813] = "\xa7\xbf", + [ 814] = "\xa7\xc0", [ 815] = "\xa7\xc1", [ 816] = "\xa7\xd1", + [ 817] = "\xa7\xd2", [ 818] = "\xa7\xd3", [ 819] = "\xa7\xd4", + [ 820] = "\xa7\xd5", [ 821] = "\xa7\xd6", [ 822] = "\xa7\xd8", + [ 823] = "\xa7\xd9", [ 824] = "\xa7\xda", [ 825] = "\xa7\xdb", + [ 826] = "\xa7\xdc", [ 827] = "\xa7\xdd", [ 828] = "\xa7\xde", + [ 829] = "\xa7\xdf", [ 830] = "\xa7\xe0", [ 831] = "\xa7\xe1", + [ 832] = "\xa7\xe2", [ 833] = "\xa7\xe3", [ 834] = "\xa7\xe4", + [ 835] = "\xa7\xe5", [ 836] = "\xa7\xe6", [ 837] = "\xa7\xe7", + [ 838] = "\xa7\xe8", [ 839] = "\xa7\xe9", [ 840] = "\xa7\xea", + [ 841] = "\xa7\xeb", [ 842] = "\xa7\xec", [ 843] = "\xa7\xed", + [ 844] = "\xa7\xee", [ 845] = "\xa7\xef", [ 846] = "\xa7\xf0", + [ 847] = "\xa7\xf1", [ 849] = "\xa7\xd7", [ 850] = "\xa7\x72", + [ 851] = "\xa7\x73", [ 852] = "\xa7\x74", [ 853] = "\xa7\x75", + [ 854] = "\xa7\x76", [ 855] = "\xa7\x77", [ 856] = "\xa7\x78", + [ 857] = "\xa7\x79", [ 858] = "\xa7\x7a", [ 859] = "\xa7\x7b", + [ 860] = "\xa7\x7c", [ 862] = "\xa7\x7d", [ 863] = "\xa7\x7e" +}; + +static const char from_ucs4_cjk[32662][2] = +{ + /* start = 0x2010, end = 0x9fa5 */ + [ 0] = "\xa1\xbe", [ 4] = "\xa1\xbd", [ 5] = "\xa1\xbd", + [ 6] = "\xa1\xc2", [ 8] = "\xa1\xc6", [ 9] = "\xa1\xc7", + [ 12] = "\xa1\xc8", [ 13] = "\xa1\xc9", [ 16] = "\xa2\xf7", + [ 17] = "\xa2\xf8", [ 21] = "\xa1\xc5", [ 22] = "\xa1\xc4", + [ 32] = "\xa2\xf3", [ 34] = "\xa1\xec", [ 35] = "\xa1\xed", + [ 43] = "\xa2\xa8", [ 46] = "\x7e\x00", [ 243] = "\xa1\xee", + [ 262] = "\xad\xe2", [ 273] = "\xad\xe4", [ 274] = "\xa2\x6f", + [ 283] = "\xa2\xf2", [ 336] = "\xad\xb5", [ 337] = "\xad\xb6", + [ 338] = "\xad\xb7", [ 339] = "\xad\xb8", [ 340] = "\xad\xb9", + [ 341] = "\xad\xba", [ 342] = "\xad\xbb", [ 343] = "\xad\xbc", + [ 344] = "\xad\xbd", [ 345] = "\xad\xbe", [ 352] = "\xf3\x73", + [ 353] = "\xf3\x74", [ 354] = "\xf3\x75", [ 355] = "\xf3\x76", + [ 356] = "\xf3\x77", [ 357] = "\xf3\x78", [ 358] = "\xf3\x79", + [ 359] = "\xf3\x7a", [ 360] = "\xf3\x7b", [ 361] = "\xf3\x7c", + [ 384] = "\xa2\xab", [ 385] = "\xa2\xac", [ 386] = "\xa2\xaa", + [ 387] = "\xa2\xad", [ 450] = "\xa2\xcd", [ 452] = "\xa2\xce", + [ 496] = "\xa2\xcf", [ 498] = "\xa2\xdf", [ 499] = "\xa2\xd0", + [ 503] = "\xa2\xe0", [ 504] = "\xa2\xba", [ 507] = "\xa2\xbb", + [ 513] = "\xad\xf4", [ 514] = "\xa1\xdd", [ 522] = "\xa2\xe5", + [ 525] = "\xa2\xe7", [ 526] = "\xa1\xe7", [ 527] = "\xad\xf8", + [ 528] = "\xa2\xdc", [ 533] = "\xa1\xc2", [ 535] = "\xa2\xca", + [ 536] = "\xa2\xcb", [ 537] = "\xa2\xc1", [ 538] = "\xa2\xc0", + [ 539] = "\xa2\xe9", [ 540] = "\xa2\xea", [ 542] = "\xad\xf3", + [ 548] = "\xa1\xe8", [ 549] = "\xa2\xe8", [ 557] = "\xa2\xe6", + [ 578] = "\xa2\xe2", [ 592] = "\xa1\xe2", [ 593] = "\xa2\xe1", + [ 598] = "\xa1\xe5", [ 599] = "\xa1\xe6", [ 602] = "\xa2\xe3", + [ 603] = "\xa2\xe4", [ 626] = "\xa2\xbe", [ 627] = "\xa2\xbf", + [ 630] = "\xa2\xbc", [ 631] = "\xa2\xbd", [ 661] = "\xa2\xdd", + [ 687] = "\xad\xf9", [ 770] = "\xa2\xde", [ 1104] = "\xad\xa1", + [ 1105] = "\xad\xa2", [ 1106] = "\xad\xa3", [ 1107] = "\xad\xa4", + [ 1108] = "\xad\xa5", [ 1109] = "\xad\xa6", [ 1110] = "\xad\xa7", + [ 1111] = "\xad\xa8", [ 1112] = "\xad\xa9", [ 1113] = "\xad\xaa", + [ 1114] = "\xad\xab", [ 1115] = "\xad\xac", [ 1116] = "\xad\xad", + [ 1117] = "\xad\xae", [ 1118] = "\xad\xaf", [ 1119] = "\xad\xb0", + [ 1120] = "\xad\xb1", [ 1121] = "\xad\xb2", [ 1122] = "\xad\xb3", + [ 1123] = "\xad\xb4", [ 1264] = "\xa8\xa1", [ 1265] = "\xa8\xac", + [ 1266] = "\xa8\xa2", [ 1267] = "\xa8\xad", [ 1276] = "\xa8\xa3", + [ 1279] = "\xa8\xae", [ 1280] = "\xa8\xa4", [ 1283] = "\xa8\xaf", + [ 1284] = "\xa8\xa6", [ 1287] = "\xa8\xb1", [ 1288] = "\xa8\xa5", + [ 1291] = "\xa8\xb0", [ 1292] = "\xa8\xa7", [ 1293] = "\xa8\xbc", + [ 1296] = "\xa8\xb7", [ 1299] = "\xa8\xb2", [ 1300] = "\xa8\xa9", + [ 1301] = "\xa8\xbe", [ 1304] = "\xa8\xb9", [ 1307] = "\xa8\xb4", + [ 1308] = "\xa8\xa8", [ 1311] = "\xa8\xb8", [ 1312] = "\xa8\xbd", + [ 1315] = "\xa8\xb3", [ 1316] = "\xa8\xaa", [ 1319] = "\xa8\xba", + [ 1320] = "\xa8\xbf", [ 1323] = "\xa8\xb5", [ 1324] = "\xa8\xab", + [ 1327] = "\xa8\xbb", [ 1330] = "\xa8\xc0", [ 1339] = "\xa8\xb6", + [ 1424] = "\xa2\xa3", [ 1425] = "\xa2\xa2", [ 1442] = "\xa2\xa5", + [ 1443] = "\xa2\xa4", [ 1452] = "\xa2\xa7", [ 1453] = "\xa2\xa6", + [ 1462] = "\xa2\xa1", [ 1463] = "\xa1\xfe", [ 1467] = "\xa1\xfb", + [ 1470] = "\xa1\xfd", [ 1471] = "\xa1\xfc", [ 1503] = "\xa2\xfe", + [ 1525] = "\xa1\xfa", [ 1526] = "\xa1\xf9", [ 1584] = "\xa1\xea", + [ 1586] = "\xa1\xe9", [ 1626] = "\xa2\xf6", [ 1629] = "\xa2\xf5", + [ 1631] = "\xa2\xf4", [ 4080] = "\xa1\xa1", [ 4081] = "\xa1\xa2", + [ 4082] = "\xa1\xa3", [ 4083] = "\xa1\xb7", [ 4085] = "\xa1\xb9", + [ 4086] = "\xa1\xba", [ 4087] = "\xa1\xbb", [ 4088] = "\xa1\xd2", + [ 4089] = "\xa1\xd3", [ 4090] = "\xa1\xd4", [ 4091] = "\xa1\xd5", + [ 4092] = "\xa1\xd6", [ 4093] = "\xa1\xd7", [ 4094] = "\xa1\xd8", + [ 4095] = "\xa1\xd9", [ 4096] = "\xa1\xda", [ 4097] = "\xa1\xdb", + [ 4098] = "\xa2\xa9", [ 4099] = "\xa2\xae", [ 4100] = "\xa1\xcc", + [ 4101] = "\xa1\xcd", [ 4108] = "\xa1\xc1", [ 4109] = "\xad\xe0", + [ 4111] = "\xad\xe1", [ 4145] = "\xa4\xa1", [ 4146] = "\xa4\xa2", + [ 4147] = "\xa4\xa3", [ 4148] = "\xa4\xa4", [ 4149] = "\xa4\xa5", + [ 4150] = "\xa4\xa6", [ 4151] = "\xa4\xa7", [ 4152] = "\xa4\xa8", + [ 4153] = "\xa4\xa9", [ 4154] = "\xa4\xaa", [ 4155] = "\xa4\xab", + [ 4156] = "\xa4\xac", [ 4157] = "\xa4\xad", [ 4158] = "\xa4\xae", + [ 4159] = "\xa4\xaf", [ 4160] = "\xa4\xb0", [ 4161] = "\xa4\xb1", + [ 4162] = "\xa4\xb2", [ 4163] = "\xa4\xb3", [ 4164] = "\xa4\xb4", + [ 4165] = "\xa4\xb5", [ 4166] = "\xa4\xb6", [ 4167] = "\xa4\xb7", + [ 4168] = "\xa4\xb8", [ 4169] = "\xa4\xb9", [ 4170] = "\xa4\xba", + [ 4171] = "\xa4\xbb", [ 4172] = "\xa4\xbc", [ 4173] = "\xa4\xbd", + [ 4174] = "\xa4\xbe", [ 4175] = "\xa4\xbf", [ 4176] = "\xa4\xc0", + [ 4177] = "\xa4\xc1", [ 4178] = "\xa4\xc2", [ 4179] = "\xa4\xc3", + [ 4180] = "\xa4\xc4", [ 4181] = "\xa4\xc5", [ 4182] = "\xa4\xc6", + [ 4183] = "\xa4\xc7", [ 4184] = "\xa4\xc8", [ 4185] = "\xa4\xc9", + [ 4186] = "\xa4\xca", [ 4187] = "\xa4\xcb", [ 4188] = "\xa4\xcc", + [ 4189] = "\xa4\xcd", [ 4190] = "\xa4\xce", [ 4191] = "\xa4\xcf", + [ 4192] = "\xa4\xd0", [ 4193] = "\xa4\xd1", [ 4194] = "\xa4\xd2", + [ 4195] = "\xa4\xd3", [ 4196] = "\xa4\xd4", [ 4197] = "\xa4\xd5", + [ 4198] = "\xa4\xd6", [ 4199] = "\xa4\xd7", [ 4200] = "\xa4\xd8", + [ 4201] = "\xa4\xd9", [ 4202] = "\xa4\xda", [ 4203] = "\xa4\xdb", + [ 4204] = "\xa4\xdc", [ 4205] = "\xa4\xdd", [ 4206] = "\xa4\xde", + [ 4207] = "\xa4\xdf", [ 4208] = "\xa4\xe0", [ 4209] = "\xa4\xe1", + [ 4210] = "\xa4\xe2", [ 4211] = "\xa4\xe3", [ 4212] = "\xa4\xe4", + [ 4213] = "\xa4\xe5", [ 4214] = "\xa4\xe6", [ 4215] = "\xa4\xe7", + [ 4216] = "\xa4\xe8", [ 4217] = "\xa4\xe9", [ 4218] = "\xa4\xea", + [ 4219] = "\xa4\xeb", [ 4220] = "\xa4\xec", [ 4221] = "\xa4\xed", + [ 4222] = "\xa4\xee", [ 4223] = "\xa4\xef", [ 4224] = "\xa4\xf0", + [ 4225] = "\xa4\xf1", [ 4226] = "\xa4\xf2", [ 4227] = "\xa4\xf3", + [ 4235] = "\xa1\xab", [ 4236] = "\xa1\xac", [ 4237] = "\xa1\xb5", + [ 4238] = "\xa1\xb6", [ 4241] = "\xa5\xa1", [ 4242] = "\xa5\xa2", + [ 4243] = "\xa5\xa3", [ 4244] = "\xa5\xa4", [ 4245] = "\xa5\xa5", + [ 4246] = "\xa5\xa6", [ 4247] = "\xa5\xa7", [ 4248] = "\xa5\xa8", + [ 4249] = "\xa5\xa9", [ 4250] = "\xa5\xaa", [ 4251] = "\xa5\xab", + [ 4252] = "\xa5\xac", [ 4253] = "\xa5\xad", [ 4254] = "\xa5\xae", + [ 4255] = "\xa5\xaf", [ 4256] = "\xa5\xb0", [ 4257] = "\xa5\xb1", + [ 4258] = "\xa5\xb2", [ 4259] = "\xa5\xb3", [ 4260] = "\xa5\xb4", + [ 4261] = "\xa5\xb5", [ 4262] = "\xa5\xb6", [ 4263] = "\xa5\xb7", + [ 4264] = "\xa5\xb8", [ 4265] = "\xa5\xb9", [ 4266] = "\xa5\xba", + [ 4267] = "\xa5\xbb", [ 4268] = "\xa5\xbc", [ 4269] = "\xa5\xbd", + [ 4270] = "\xa5\xbe", [ 4271] = "\xa5\xbf", [ 4272] = "\xa5\xc0", + [ 4273] = "\xa5\xc1", [ 4274] = "\xa5\xc2", [ 4275] = "\xa5\xc3", + [ 4276] = "\xa5\xc4", [ 4277] = "\xa5\xc5", [ 4278] = "\xa5\xc6", + [ 4279] = "\xa5\xc7", [ 4280] = "\xa5\xc8", [ 4281] = "\xa5\xc9", + [ 4282] = "\xa5\xca", [ 4283] = "\xa5\xcb", [ 4284] = "\xa5\xcc", + [ 4285] = "\xa5\xcd", [ 4286] = "\xa5\xce", [ 4287] = "\xa5\xcf", + [ 4288] = "\xa5\xd0", [ 4289] = "\xa5\xd1", [ 4290] = "\xa5\xd2", + [ 4291] = "\xa5\xd3", [ 4292] = "\xa5\xd4", [ 4293] = "\xa5\xd5", + [ 4294] = "\xa5\xd6", [ 4295] = "\xa5\xd7", [ 4296] = "\xa5\xd8", + [ 4297] = "\xa5\xd9", [ 4298] = "\xa5\xda", [ 4299] = "\xa5\xdb", + [ 4300] = "\xa5\xdc", [ 4301] = "\xa5\xdd", [ 4302] = "\xa5\xde", + [ 4303] = "\xa5\xdf", [ 4304] = "\xa5\xe0", [ 4305] = "\xa5\xe1", + [ 4306] = "\xa5\xe2", [ 4307] = "\xa5\xe3", [ 4308] = "\xa5\xe4", + [ 4309] = "\xa5\xe5", [ 4310] = "\xa5\xe6", [ 4311] = "\xa5\xe7", + [ 4312] = "\xa5\xe8", [ 4313] = "\xa5\xe9", [ 4314] = "\xa5\xea", + [ 4315] = "\xa5\xeb", [ 4316] = "\xa5\xec", [ 4317] = "\xa5\xed", + [ 4318] = "\xa5\xee", [ 4319] = "\xa5\xef", [ 4320] = "\xa5\xf0", + [ 4321] = "\xa5\xf1", [ 4322] = "\xa5\xf2", [ 4323] = "\xa5\xf3", + [ 4324] = "\xa5\xf4", [ 4325] = "\xa5\xf5", [ 4326] = "\xa5\xf6", + [ 4331] = "\xa1\xa6", [ 4332] = "\xa1\xbc", [ 4333] = "\xa1\xb3", + [ 4334] = "\xa1\xb4", [ 4641] = "\xad\xea", [ 4642] = "\xad\xeb", + [ 4649] = "\xad\xec", [ 4756] = "\xad\xe5", [ 4757] = "\xad\xe6", + [ 4758] = "\xad\xe7", [ 4759] = "\xad\xe8", [ 4760] = "\xad\xe9", + [ 4851] = "\xad\xc6", [ 4861] = "\xad\xca", [ 4868] = "\xad\xc1", + [ 4872] = "\xad\xc4", [ 4882] = "\xad\xc2", [ 4883] = "\xad\xcc", + [ 4886] = "\xad\xcb", [ 4887] = "\xad\xc5", [ 4891] = "\xad\xcd", + [ 4902] = "\xad\xc7", [ 4907] = "\xad\xcf", [ 4921] = "\xad\xc0", + [ 4922] = "\xad\xce", [ 4925] = "\xad\xc3", [ 4929] = "\xad\xc8", + [ 4935] = "\xad\xc9", [ 4971] = "\xad\xdf", [ 4972] = "\xad\xef", + [ 4973] = "\xad\xee", [ 4974] = "\xad\xed", [ 4990] = "\xad\xd3", + [ 4991] = "\xad\xd4", [ 5004] = "\xad\xd0", [ 5005] = "\xad\xd1", + [ 5006] = "\xad\xd2", [ 5009] = "\xad\xd6", [ 5044] = "\xad\xd5", + [ 5053] = "\xad\xe3", [11760] = "\xb0\xec", [11761] = "\xc3\xfa", + [11762] = "\xb0\x21", [11763] = "\xbc\xb7", [11764] = "\xb0\x22", + [11765] = "\xb0\x23", [11767] = "\xcb\xfc", [11768] = "\xbe\xe6", + [11769] = "\xbb\xb0", [11770] = "\xbe\xe5", [11771] = "\xb2\xbc", + [11772] = "\xb0\x24", [11773] = "\xc9\xd4", [11774] = "\xcd\xbf", + [11776] = "\xd0\xa2", [11777] = "\xb1\xaf", [11778] = "\xb0\x25", + [11780] = "\xb3\xee", [11781] = "\xd0\xa3", [11782] = "\xc0\xa4", + [11783] = "\xd2\xc2", [11784] = "\xb5\xd6", [11785] = "\xca\xba", + [11790] = "\xbe\xe7", [11791] = "\xb0\x26", [11793] = "\xce\xbe", + [11795] = "\xb0\x27", [11796] = "\xb0\x28", [11798] = "\xca\xc2", + [11800] = "\xb0\x29", [11802] = "\xd0\xa4", [11803] = "\xb0\x2a", + [11805] = "\xc3\xe6", [11806] = "\xb0\x2b", [11807] = "\xb0\x2c", + [11808] = "\xb0\x2d", [11809] = "\xd0\xa5", [11810] = "\xb6\xfa", + [11813] = "\xb0\x2e", [11814] = "\xd0\xa6", [11816] = "\xb4\xdd", + [11817] = "\xc3\xb0", [11819] = "\xbc\xe7", [11820] = "\xd0\xa7", + [11823] = "\xd0\xa8", [11824] = "\xb0\x2f", [11825] = "\xb0\x30", + [11826] = "\xd0\xa9", [11827] = "\xc7\xb5", [11828] = "\xb0\x31", + [11829] = "\xb5\xd7", [11831] = "\xb0\x32", [11835] = "\xc7\xb7", + [11837] = "\xc6\xe3", [11838] = "\xb8\xc3", [11839] = "\xcb\xb3", + [11841] = "\xb0\x33", [11845] = "\xe9\xc9", [11846] = "\xd0\xaa", + [11847] = "\xbe\xe8", [11848] = "\xd0\xab", [11849] = "\xb2\xb5", + [11850] = "\xb0\x34", [11852] = "\xb0\x35", [11853] = "\xb6\xe5", + [11854] = "\xb8\xf0", [11855] = "\xcc\xe9", [11858] = "\xd6\xa6", + [11859] = "\xb0\x36", [11864] = "\xb0\x37", [11865] = "\xb0\x38", + [11873] = "\xcd\xf0", [11875] = "\xc6\xfd", [11876] = "\xb0\x39", + [11877] = "\xb0\x3a", [11881] = "\xb0\x3b", [11886] = "\xb4\xa5", + [11887] = "\xb0\x3c", [11888] = "\xb5\xb5", [11890] = "\xd0\xac", + [11893] = "\xd0\xad", [11894] = "\xce\xbb", [11896] = "\xcd\xbd", + [11897] = "\xc1\xe8", [11898] = "\xd0\xaf", [11899] = "\xbb\xf6", + [11900] = "\xc6\xf3", [11901] = "\xb0\x3d", [11902] = "\xd0\xb2", + [11905] = "\xb1\xbe", [11906] = "\xb8\xdf", [11908] = "\xb8\xde", + [11909] = "\xb0\xe6", [11910] = "\xb0\x3e", [11911] = "\xb0\x3f", + [11912] = "\xcf\xcb", [11913] = "\xcf\xca", [11915] = "\xba\xb3", + [11916] = "\xb0\xa1", [11917] = "\xb0\x40", [11918] = "\xd0\xb3", + [11919] = "\xd0\xb4", [11920] = "\xd0\xb5", [11921] = "\xcb\xb4", + [11922] = "\xd0\xb6", [11924] = "\xb8\xf2", [11925] = "\xb0\xe7", + [11926] = "\xcb\xf2", [11928] = "\xb5\xfc", [11931] = "\xb5\xfd", + [11932] = "\xb5\xfe", [11933] = "\xc4\xe2", [11934] = "\xce\xbc", + [11935] = "\xb0\x41", [11936] = "\xd0\xb7", [11939] = "\xd0\xb8", + [11942] = "\xd0\xb9", [11945] = "\xb0\x42", [11946] = "\xbf\xcd", + [11952] = "\xbd\xba", [11953] = "\xbf\xce", [11954] = "\xd0\xbe", + [11955] = "\xb0\x43", [11956] = "\xd0\xbc", [11958] = "\xd0\xbd", + [11959] = "\xb5\xd8", [11962] = "\xba\xa3", [11963] = "\xb2\xf0", + [11965] = "\xd0\xbb", [11966] = "\xd0\xba", [11967] = "\xca\xa9", + [11968] = "\xb0\x44", [11972] = "\xbb\xc6", [11973] = "\xbb\xc5", + [11974] = "\xc2\xbe", [11975] = "\xd0\xbf", [11976] = "\xc9\xd5", + [11977] = "\xc0\xe7", [11978] = "\xb0\x45", [11979] = "\xb0\x46", + [11981] = "\xa1\xb8", [11982] = "\xd0\xc0", [11983] = "\xd0\xc2", + [11984] = "\xb0\x47", [11985] = "\xb0\x48", [11986] = "\xb0\x49", + [11987] = "\xc2\xe5", [11988] = "\xce\xe1", [11989] = "\xb0\xca", + [11992] = "\xb0\x4a", [11997] = "\xd0\xc1", [11998] = "\xb2\xbe", + [11999] = "\xb0\x4b", [12000] = "\xb6\xc4", [12001] = "\xb0\x4c", + [12002] = "\xc3\xe7", [12003] = "\xb0\x4d", [12005] = "\xb0\x4e", + [12006] = "\xb7\xef", [12007] = "\xd0\xc3", [12011] = "\xc7\xa4", + [12012] = "\xf4\x2f", [12013] = "\xb0\x4f", [12014] = "\xb0\x50", + [12015] = "\xb0\x51", [12016] = "\xb0\x52", [12017] = "\xb4\xeb", + [12018] = "\xb0\x53", [12019] = "\xb0\x54", [12024] = "\xb0\x55", + [12025] = "\xd0\xc4", [12026] = "\xb0\xcb", [12027] = "\xb0\x56", + [12028] = "\xb0\x57", [12029] = "\xb8\xe0", [12030] = "\xb4\xec", + [12031] = "\xc9\xfa", [12032] = "\xc8\xb2", [12033] = "\xb5\xd9", + [12034] = "\xb0\x58", [12037] = "\xb0\x59", [12038] = "\xb0\x5a", + [12039] = "\xb0\x5b", [12041] = "\xb0\x5c", [12042] = "\xb2\xf1", + [12044] = "\xd0\xe7", [12045] = "\xc5\xc1", [12062] = "\xb0\x5d", + [12063] = "\xc7\xec", [12064] = "\xd0\xc6", [12065] = "\xb0\x5e", + [12067] = "\xb0\x60", [12068] = "\xc8\xbc", [12069] = "\xb0\x61", + [12070] = "\xce\xe2", [12071] = "\xb0\x62", [12072] = "\xbf\xad", + [12073] = "\xb0\x63", [12074] = "\xbb\xc7", [12075] = "\xb0\x64", + [12076] = "\xbb\xf7", [12077] = "\xb2\xc0", [12078] = "\xb0\x65", + [12080] = "\xb0\x66", [12082] = "\xb0\x67", [12083] = "\xc4\xd1", + [12086] = "\xc3\xa2", [12087] = "\xd0\xca", [12088] = "\xb0\x68", + [12089] = "\xb0\x69", [12091] = "\xb0\x6a", [12092] = "\xb0\x6b", + [12093] = "\xb0\xcc", [12094] = "\xc4\xe3", [12095] = "\xbd\xbb", + [12096] = "\xba\xb4", [12097] = "\xcd\xa4", [12098] = "\xb0\x6c", + [12099] = "\xc2\xce", [12100] = "\xb0\x6d", [12101] = "\xb2\xbf", + [12102] = "\xb0\x6e", [12103] = "\xd0\xc9", [12104] = "\xb0\x6f", + [12105] = "\xcd\xbe", [12106] = "\xd0\xc5", [12107] = "\xd0\xc7", + [12108] = "\xba\xee", [12109] = "\xd0\xc8", [12110] = "\xd5\xa4", + [12111] = "\xb0\x70", [12112] = "\xb0\x5f", [12115] = "\xb0\x71", + [12121] = "\xd0\xd0", [12122] = "\xb0\x72", [12124] = "\xb0\x73", + [12126] = "\xb0\x74", [12127] = "\xd0\xd3", [12128] = "\xd0\xd1", + [12129] = "\xb0\x75", [12131] = "\xb2\xc2", [12133] = "\xca\xbb", + [12134] = "\xd0\xcb", [12135] = "\xb0\x76", [12136] = "\xb0\x77", + [12137] = "\xb0\x78", [12138] = "\xb0\x79", [12139] = "\xd0\xcf", + [12140] = "\xb8\xf3", [12141] = "\xb0\x7a", [12142] = "\xb0\x7b", + [12143] = "\xbb\xc8", [12145] = "\xb0\x7c", [12146] = "\xb0\x7d", + [12147] = "\xb4\xa6", [12148] = "\xb0\x7e", [12149] = "\xb1\x21", + [12150] = "\xd0\xd4", [12152] = "\xd0\xcc", [12153] = "\xb1\x22", + [12154] = "\xb1\x23", [12155] = "\xce\xe3", [12156] = "\xb1\x24", + [12157] = "\xbb\xf8", [12158] = "\xb1\x25", [12159] = "\xd0\xcd", + [12160] = "\xb1\x26", [12161] = "\xd0\xd2", [12162] = "\xb1\x27", + [12163] = "\xb1\x28", [12164] = "\xb1\x29", [12166] = "\xd0\xd5", + [12167] = "\xb1\x2a", [12168] = "\xd0\xce", [12169] = "\xb1\x2b", + [12170] = "\xb1\x2c", [12171] = "\xb6\xa1", [12173] = "\xb0\xcd", + [12174] = "\xb1\x2d", [12175] = "\xb1\x2e", [12176] = "\xb6\xa2", + [12177] = "\xb2\xc1", [12187] = "\xd5\xa5", [12189] = "\xcb\xf9", + [12190] = "\xc9\xee", [12191] = "\xb8\xf4", [12194] = "\xb1\x2f", + [12197] = "\xbf\xaf", [12198] = "\xce\xb7", [12199] = "\xb1\x30", + [12201] = "\xb1\x31", [12203] = "\xb1\x32", [12204] = "\xb1\x33", + [12205] = "\xb1\x34", [12206] = "\xb1\x35", [12207] = "\xca\xd8", + [12208] = "\xb1\x36", [12209] = "\xb1\x37", [12210] = "\xb7\xb8", + [12211] = "\xc2\xa5", [12212] = "\xb2\xe4", [12213] = "\xb1\x38", + [12214] = "\xb1\x39", [12216] = "\xb1\x3a", [12217] = "\xb1\x3b", + [12218] = "\xbd\xd3", [12219] = "\xb1\x3c", [12220] = "\xb1\x3d", + [12221] = "\xb1\x3e", [12222] = "\xd0\xd9", [12223] = "\xb1\x3f", + [12224] = "\xd0\xde", [12225] = "\xd0\xdc", [12226] = "\xb1\x40", + [12228] = "\xd0\xd7", [12231] = "\xc2\xaf", [12232] = "\xd0\xda", + [12234] = "\xd0\xdd", [12235] = "\xd0\xdb", [12236] = "\xb1\x41", + [12237] = "\xca\xdd", [12239] = "\xd0\xd8", [12240] = "\xb1\x42", + [12241] = "\xbf\xae", [12242] = "\xb1\x43", [12243] = "\xcb\xf3", + [12244] = "\xd0\xdf", [12245] = "\xd0\xe0", [12254] = "\xbd\xa4", + [12255] = "\xd0\xed", [12256] = "\xb1\x44", [12258] = "\xb1\x45", + [12259] = "\xc7\xd0", [12261] = "\xc9\xb6", [12262] = "\xd0\xe8", + [12264] = "\xca\xf0", [12266] = "\xb2\xb6", [12268] = "\xb1\x46", + [12269] = "\xb1\x47", [12270] = "\xd0\xec", [12271] = "\xb1\x48", + [12272] = "\xb1\x49", [12273] = "\xb1\x4a", [12276] = "\xb1\x4b", + [12277] = "\xd0\xe6", [12278] = "\xd0\xef", [12279] = "\xb1\x4c", + [12281] = "\xc1\xd2", [12282] = "\xb1\x4d", [12283] = "\xb8\xc4", + [12284] = "\xb1\x4e", [12285] = "\xc7\xdc", [12286] = "\xb1\x4f", + [12287] = "\xe0\xc7", [12288] = "\xb1\x50", [12289] = "\xd0\xee", + [12290] = "\xc5\xdd", [12291] = "\xb1\x51", [12292] = "\xd0\xe3", + [12294] = "\xb8\xf6", [12295] = "\xb1\x52", [12296] = "\xb1\x53", + [12297] = "\xb8\xf5", [12298] = "\xd0\xe1", [12299] = "\xb1\x54", + [12300] = "\xb1\x55", [12301] = "\xb1\x56", [12302] = "\xb1\x57", + [12303] = "\xbc\xda", [12305] = "\xd0\xe9", [12306] = "\xb1\x58", + [12307] = "\xca\xef", [12308] = "\xc3\xcd", [12309] = "\xd0\xe5", + [12310] = "\xb7\xf1", [12311] = "\xb1\x59", [12312] = "\xd0\xe2", + [12313] = "\xd0\xea", [12314] = "\xd0\xe4", [12315] = "\xce\xd1", + [12316] = "\xd0\xeb", [12317] = "\xcf\xc1", [12318] = "\xb1\x5a", + [12320] = "\xb1\x5b", [12322] = "\xb1\x5c", [12323] = "\xb1\x5d", + [12325] = "\xb1\x5e", [12326] = "\xb6\xe6", [12329] = "\xb7\xf0", + [12331] = "\xb1\x76", [12336] = "\xb1\x5f", [12337] = "\xb1\x60", + [12338] = "\xb1\x61", [12339] = "\xd0\xf0", [12341] = "\xb1\x62", + [12342] = "\xb1\x63", [12343] = "\xd0\xf1", [12344] = "\xd0\xf5", + [12345] = "\xb0\xce", [12346] = "\xb1\x64", [12348] = "\xb1\x65", + [12350] = "\xb1\x66", [12351] = "\xca\xd0", [12352] = "\xd0\xf4", + [12353] = "\xb1\x67", [12354] = "\xb1\x68", [12355] = "\xb1\x69", + [12357] = "\xd0\xf3", [12358] = "\xd0\xf7", [12359] = "\xb1\x6a", + [12361] = "\xb1\x6b", [12362] = "\xd0\xf6", [12364] = "\xc4\xe4", + [12367] = "\xb1\x6c", [12368] = "\xb1\x6d", [12370] = "\xb1\x6e", + [12371] = "\xb1\x6f", [12373] = "\xb7\xf2", [12374] = "\xb1\x70", + [12375] = "\xb1\x71", [12378] = "\xb1\x72", [12380] = "\xd0\xf8", + [12381] = "\xb1\x73", [12384] = "\xb1\x74", [12385] = "\xb1\x75", + [12386] = "\xbc\xc5", [12388] = "\xc2\xa6", [12389] = "\xc4\xe5", + [12390] = "\xb6\xf6", [12392] = "\xd0\xf9", [12397] = "\xb5\xb6", + [12400] = "\xd0\xfa", [12401] = "\xb1\x77", [12403] = "\xb1\x78", + [12404] = "\xb1\x79", [12405] = "\xd0\xfc", [12406] = "\xb1\x7a", + [12410] = "\xb1\x7b", [12413] = "\xcb\xb5", [12414] = "\xb1\x7c", + [12415] = "\xb1\x7d", [12416] = "\xb1\x7e", [12417] = "\xb7\xe6", + [12418] = "\xb2\x21", [12419] = "\xb2\x22", [12420] = "\xb2\x23", + [12422] = "\xb2\x24", [12424] = "\xbb\xb1", [12425] = "\xc8\xf7", + [12426] = "\xd0\xfb", [12427] = "\xb2\x25", [12428] = "\xb2\x26", + [12430] = "\xb2\x27", [12431] = "\xb2\x28", [12432] = "\xb2\x29", + [12433] = "\xb2\x2a", [12434] = "\xb2\x2b", [12442] = "\xb2\x2c", + [12444] = "\xba\xc5", [12445] = "\xcd\xc3", [12447] = "\xb2\x2d", + [12448] = "\xb2\x2e", [12450] = "\xd0\xfe", [12451] = "\xd1\xa3", + [12452] = "\xd0\xfd", [12453] = "\xba\xc4", [12455] = "\xbd\xfd", + [12457] = "\xb2\x2f", [12458] = "\xb2\x30", [12461] = "\xb2\x31", + [12462] = "\xb7\xb9", [12464] = "\xb2\x32", [12466] = "\xd1\xa4", + [12467] = "\xb2\x33", [12468] = "\xb2\x34", [12469] = "\xb6\xcf", + [12471] = "\xb2\x35", [12473] = "\xd1\xa1", [12474] = "\xd1\xa2", + [12476] = "\xb2\x36", [12477] = "\xc6\xaf", [12478] = "\xb2\x37", + [12479] = "\xc1\xfc", [12480] = "\xb2\x38", [12481] = "\xb6\xa3", + [12483] = "\xb2\x39", [12484] = "\xb2\x3a", [12485] = "\xcb\xcd", + [12486] = "\xd1\xa5", [12488] = "\xb2\x3b", [12490] = "\xce\xbd", + [12492] = "\xb2\x3c", [12493] = "\xb2\x3d", [12494] = "\xd1\xa6", + [12495] = "\xb2\x3e", [12498] = "\xb2\x3f", [12499] = "\xd1\xa9", + [12500] = "\xb2\x40", [12501] = "\xd1\xa7", [12502] = "\xb2\x41", + [12503] = "\xc1\xce", [12504] = "\xb2\x42", [12505] = "\xb2\x43", + [12509] = "\xd1\xa8", [12510] = "\xd1\xaa", [12511] = "\xb2\x44", + [12513] = "\xb2\x45", [12514] = "\xb2\x51", [12516] = "\xf4\x30", + [12517] = "\xd1\xac", [12518] = "\xb2\x46", [12521] = "\xd1\xab", + [12522] = "\xb2\x47", [12523] = "\xca\xc8", [12526] = "\xb2\x48", + [12528] = "\xb5\xb7", [12529] = "\xd1\xae", [12530] = "\xd1\xaf", + [12531] = "\xb2\x49", [12532] = "\xb2\xaf", [12534] = "\xb2\x4a", + [12535] = "\xb2\x4b", [12536] = "\xb2\x4c", [12537] = "\xd1\xad", + [12539] = "\xb2\x4d", [12540] = "\xb2\x4e", [12541] = "\xb2\x4f", + [12542] = "\xb2\x50", [12544] = "\xb2\x52", [12546] = "\xbc\xf4", + [12548] = "\xd1\xb2", [12549] = "\xd1\xb1", [12550] = "\xd1\xb0", + [12551] = "\xb2\x53", [12552] = "\xd0\xd6", [12553] = "\xb2\x54", + [12554] = "\xd1\xb3", [12555] = "\xb2\x55", [12556] = "\xb2\x56", + [12557] = "\xb2\x57", [12558] = "\xb2\x58", [12559] = "\xbd\xfe", + [12561] = "\xd1\xb4", [12563] = "\xb2\x59", [12567] = "\xb2\x5a", + [12568] = "\xb2\x5b", [12570] = "\xcd\xa5", [12572] = "\xb2\x5c", + [12573] = "\xb2\x5d", [12575] = "\xb2\x5e", [12577] = "\xb2\x5f", + [12578] = "\xcc\xd9", [12579] = "\xb2\x60", [12580] = "\xb2\x61", + [12581] = "\xb2\x62", [12583] = "\xd1\xb6", [12584] = "\xb2\x63", + [12585] = "\xb2\x64", [12586] = "\xd1\xb5", [12587] = "\xd1\xb8", + [12588] = "\xd1\xb7", [12591] = "\xd1\xb9", [12592] = "\xd1\xba", + [12593] = "\xb0\xf4", [12594] = "\xb2\x65", [12595] = "\xb8\xb5", + [12596] = "\xb7\xbb", [12597] = "\xbd\xbc", [12598] = "\xc3\xfb", + [12599] = "\xb6\xa4", [12600] = "\xc0\xe8", [12601] = "\xb8\xf7", + [12602] = "\xb2\x66", [12603] = "\xb9\xee", [12604] = "\xd1\xbc", + [12605] = "\xcc\xc8", [12606] = "\xc5\xc6", [12607] = "\xb2\x67", + [12608] = "\xbb\xf9", [12610] = "\xd1\xbb", [12611] = "\xb2\x68", + [12612] = "\xd1\xbd", [12613] = "\xb2\x69", [12615] = "\xb2\x6a", + [12616] = "\xb2\x6b", [12618] = "\xc5\xde", [12620] = "\xb3\xf5", + [12623] = "\xb2\x6c", [12626] = "\xd1\xbe", [12628] = "\xb2\x6d", + [12629] = "\xc6\xfe", [12630] = "\xb2\x6e", [12632] = "\xc1\xb4", + [12633] = "\xd1\xc0", [12634] = "\xd1\xc1", [12635] = "\xc8\xac", + [12636] = "\xb8\xf8", [12637] = "\xcf\xbb", [12638] = "\xd1\xc2", + [12641] = "\xb6\xa6", [12645] = "\xca\xbc", [12646] = "\xc2\xb6", + [12647] = "\xb6\xf1", [12648] = "\xc5\xb5", [12652] = "\xb7\xf3", + [12654] = "\xb2\x6f", [12656] = "\xd1\xc3", [12658] = "\xd1\xc4", + [12659] = "\xb2\x70", [12660] = "\xb2\x71", [12661] = "\xc6\xe2", + [12662] = "\xb1\xdf", [12665] = "\xd1\xc7", [12666] = "\xba\xfd", + [12667] = "\xb2\x72", [12668] = "\xd1\xc6", [12669] = "\xba\xc6", + [12670] = "\xb2\x73", [12671] = "\xd1\xc8", [12672] = "\xe6\xee", + [12673] = "\xd1\xc9", [12674] = "\xcb\xc1", [12675] = "\xd1\xca", + [12677] = "\xd1\xcb", [12678] = "\xd1\xcc", [12679] = "\xbe\xe9", + [12680] = "\xb2\x74", [12681] = "\xbc\xcc", [12685] = "\xb2\x75", + [12688] = "\xb4\xa7", [12689] = "\xb2\x76", [12690] = "\xd1\xcf", + [12691] = "\xb2\x77", [12692] = "\xd1\xcd", [12693] = "\xcc\xbd", + [12694] = "\xd1\xce", [12696] = "\xc9\xda", [12697] = "\xd1\xd0", + [12698] = "\xd1\xd1", [12699] = "\xd1\xd2", [12700] = "\xc5\xdf", + [12701] = "\xb2\x78", [12704] = "\xd1\xd6", [12705] = "\xd1\xd4", + [12706] = "\xd1\xd5", [12707] = "\xd1\xd3", [12708] = "\xba\xe3", + [12709] = "\xd1\xd7", [12710] = "\xcc\xea", [12711] = "\xce\xe4", + [12712] = "\xb2\x79", [12714] = "\xb2\x7a", [12716] = "\xb2\x7b", + [12717] = "\xd1\xd8", [12718] = "\xb2\x7c", [12719] = "\xb2\x7d", + [12722] = "\xb2\x7e", [12724] = "\xc0\xa8", [12725] = "\xd1\xd9", + [12726] = "\xbd\xda", [12728] = "\xb3\x21", [12729] = "\xd1\xda", + [12731] = "\xc3\xfc", [12732] = "\xce\xbf", [12733] = "\xc5\xe0", + [12735] = "\xb3\x22", [12737] = "\xb3\x23", [12738] = "\xb3\x24", + [12739] = "\xb3\x25", [12741] = "\xb3\x26", [12742] = "\xd2\xc5", + [12744] = "\xb3\x27", [12747] = "\xd1\xdb", [12748] = "\xf4\xa5", + [12749] = "\xb6\xc5", [12750] = "\xb3\x28", [12752] = "\xd1\xdc", + [12753] = "\xcb\xde", [12754] = "\xb3\x29", [12757] = "\xb3\x2a", + [12758] = "\xbd\xe8", [12759] = "\xc2\xfc", [12761] = "\xd1\xde", + [12762] = "\xc6\xe4", [12764] = "\xf4\x31", [12765] = "\xd1\xdf", + [12766] = "\xb3\x2b", [12768] = "\xd1\xe0", [12769] = "\xb3\xae", + [12770] = "\xb3\x2c", [12771] = "\xb3\x2d", [12772] = "\xb3\x2e", + [12773] = "\xd1\xe1", [12774] = "\xb6\xa7", [12775] = "\xb3\x2f", + [12776] = "\xc6\xcc", [12777] = "\xb1\xfa", [12778] = "\xbd\xd0", + [12781] = "\xc8\xa1", [12782] = "\xd1\xe2", [12784] = "\xc5\xe1", + [12785] = "\xb3\x30", [12786] = "\xb3\x31", [12787] = "\xbf\xcf", + [12788] = "\xd1\xe3", [12789] = "\xb3\x32", [12790] = "\xca\xac", + [12791] = "\xc0\xda", [12792] = "\xb4\xa2", [12794] = "\xb4\xa9", + [12795] = "\xd1\xe4", [12798] = "\xd1\xe6", [12801] = "\xb7\xba", + [12802] = "\xb3\x33", [12803] = "\xb3\x34", [12804] = "\xd1\xe5", + [12805] = "\xb3\x35", [12806] = "\xb3\x36", [12807] = "\xce\xf3", + [12808] = "\xb3\x37", [12813] = "\xbd\xe9", [12818] = "\xb3\x38", + [12820] = "\xc8\xbd", [12821] = "\xca\xcc", [12823] = "\xd1\xe7", + [12824] = "\xb3\x39", [12825] = "\xcd\xf8", [12826] = "\xd1\xe8", + [12830] = "\xd1\xe9", [12832] = "\xc5\xfe", [12833] = "\xb3\x3a", + [12834] = "\xb3\x3b", [12835] = "\xd1\xea", [12837] = "\xb3\x3c", + [12838] = "\xc0\xa9", [12839] = "\xba\xfe", [12840] = "\xb7\xf4", + [12841] = "\xd1\xeb", [12842] = "\xbb\xc9", [12843] = "\xb9\xef", + [12844] = "\xb3\x3d", [12851] = "\xc4\xe6", [12852] = "\xd1\xed", + [12853] = "\xb3\x3e", [12855] = "\xc2\xa7", [12857] = "\xb3\x3f", + [12858] = "\xba\xef", [12859] = "\xd1\xee", [12860] = "\xd1\xef", + [12861] = "\xc1\xb0", [12863] = "\xd1\xec", [12868] = "\xd1\xf1", + [12869] = "\xb3\x40", [12870] = "\xcb\xb6", [12871] = "\xb3\x41", + [12872] = "\xb3\x42", [12874] = "\xb3\x43", [12875] = "\xb9\xe4", + [12876] = "\xb3\x44", [12878] = "\xd1\xf0", [12879] = "\xb3\x45", + [12880] = "\xb3\x46", [12881] = "\xb3\x47", [12883] = "\xb7\xf5", + [12884] = "\xba\xde", [12885] = "\xc7\xed", [12886] = "\xb3\x48", + [12889] = "\xd1\xf4", [12890] = "\xd1\xf2", [12894] = "\xb3\x49", + [12895] = "\xc9\xfb", [12896] = "\xbe\xea", [12897] = "\xd1\xfb", + [12898] = "\xb3\xe4", [12899] = "\xd1\xf5", [12900] = "\xd1\xf3", + [12901] = "\xc1\xcf", [12903] = "\xb3\x4a", [12904] = "\xb3\x4b", + [12905] = "\xb3\x4c", [12909] = "\xd1\xf7", [12911] = "\xd1\xf6", + [12912] = "\xb3\x4d", [12914] = "\xb3\x4e", [12915] = "\xb3\xc4", + [12917] = "\xb3\x4f", [12919] = "\xb7\xe0", [12920] = "\xd1\xfc", + [12921] = "\xce\xad", [12922] = "\xb3\x50", [12924] = "\xb3\x51", + [12925] = "\xd1\xf8", [12929] = "\xd1\xfd", [12930] = "\xd1\xfa", + [12931] = "\xb3\x52", [12932] = "\xd1\xf9", [12933] = "\xb3\x53", + [12934] = "\xb3\x54", [12935] = "\xb3\x55", [12936] = "\xb3\x56", + [12938] = "\xb3\x57", [12939] = "\xce\xcf", [12940] = "\xb3\x58", + [12943] = "\xb8\xf9", [12944] = "\xb2\xc3", [12947] = "\xce\xf4", + [12948] = "\xb3\x59", [12949] = "\xb3\x5a", [12950] = "\xb3\x5b", + [12951] = "\xb3\x5c", [12953] = "\xbd\xf5", [12954] = "\xc5\xd8", + [12955] = "\xb9\xe5", [12956] = "\xd2\xa2", [12957] = "\xd2\xa3", + [12959] = "\xb3\x5d", [12960] = "\xb3\x5e", [12961] = "\xce\xe5", + [12964] = "\xcf\xab", [12965] = "\xd2\xa5", [12966] = "\xb3\x5f", + [12967] = "\xb3\x60", [12968] = "\xb3\x61", [12969] = "\xb8\xfa", + [12970] = "\xb3\x62", [12971] = "\xb3\x63", [12972] = "\xd2\xa4", + [12973] = "\xb3\x64", [12974] = "\xb3\xaf", [12976] = "\xb3\x65", + [12977] = "\xd2\xa6", [12979] = "\xcb\xd6", [12980] = "\xb3\x66", + [12981] = "\xc4\xbc", [12982] = "\xb3\x67", [12983] = "\xcd\xa6", + [12984] = "\xb3\x68", [12985] = "\xca\xd9", [12988] = "\xb3\x69", + [12989] = "\xd2\xa7", [12991] = "\xb3\x6a", [12993] = "\xb3\x6b", + [12994] = "\xf0\xd5", [12996] = "\xb3\x6c", [12997] = "\xc6\xb0", + [12998] = "\xb3\x6d", [12999] = "\xd2\xa8", [13000] = "\xb4\xaa", + [13001] = "\xcc\xb3", [13003] = "\xb3\x6e", [13004] = "\xb3\x6f", + [13005] = "\xbe\xa1", [13006] = "\xd2\xa9", [13007] = "\xca\xe7", + [13008] = "\xd2\xad", [13009] = "\xb3\x70", [13010] = "\xc0\xaa", + [13011] = "\xd2\xaa", [13012] = "\xb6\xd0", [13013] = "\xb3\x71", + [13014] = "\xd2\xab", [13015] = "\xb4\xab", [13016] = "\xb3\x72", + [13017] = "\xb3\x73", [13018] = "\xb3\x74", [13020] = "\xb3\x75", + [13024] = "\xb3\x76", [13025] = "\xb3\x77", [13026] = "\xb7\xae", + [13027] = "\xd2\xae", [13028] = "\xb3\x78", [13029] = "\xd2\xaf", + [13030] = "\xb3\x79", [13031] = "\xb3\x7a", [13032] = "\xd2\xb0", + [13033] = "\xd2\xb1", [13034] = "\xbc\xdb", [13038] = "\xb8\xfb", + [13039] = "\xcc\xde", [13040] = "\xb3\x7b", [13041] = "\xcc\xe8", + [13042] = "\xc6\xf7", [13043] = "\xb3\x7c", [13045] = "\xca\xf1", + [13046] = "\xd2\xb2", [13047] = "\xf4\x32", [13048] = "\xd2\xb3", + [13050] = "\xb3\x7d", [13051] = "\xb3\x7e", [13052] = "\xb4\x21", + [13053] = "\xd2\xb5", [13055] = "\xd2\xb7", [13056] = "\xd2\xb6", + [13057] = "\xb4\x22", [13059] = "\xb4\x23", [13061] = "\xd2\xb8", + [13062] = "\xb2\xbd", [13063] = "\xcb\xcc", [13064] = "\xb4\x24", + [13065] = "\xba\xfc", [13066] = "\xd2\xb9", [13067] = "\xb4\x25", + [13068] = "\xb4\x26", [13069] = "\xc1\xd9", [13070] = "\xb4\x27", + [13071] = "\xb4\x28", [13072] = "\xbe\xa2", [13073] = "\xb6\xa9", + [13075] = "\xd2\xba", [13076] = "\xf4\x33", [13077] = "\xb4\x29", + [13079] = "\xb4\x2a", [13080] = "\xb4\x2b", [13081] = "\xb4\x2c", + [13082] = "\xc8\xdb", [13083] = "\xb4\x2d", [13084] = "\xb4\x2e", + [13085] = "\xb4\x2f", [13087] = "\xd2\xbb", [13088] = "\xb4\x30", + [13089] = "\xd2\xbc", [13090] = "\xb4\x31", [13091] = "\xd2\xbd", + [13093] = "\xb4\x32", [13096] = "\xd2\xbe", [13097] = "\xc9\xa4", + [13098] = "\xb6\xe8", [13099] = "\xb0\xe5", [13100] = "\xb4\x33", + [13101] = "\xb4\x34", [13102] = "\xb4\x35", [13103] = "\xc6\xbf", + [13104] = "\xd2\xbf", [13105] = "\xbd\xbd", [13106] = "\xb4\x36", + [13107] = "\xc0\xe9", [13109] = "\xd2\xc1", [13110] = "\xd2\xc0", + [13111] = "\xbe\xa3", [13112] = "\xb8\xe1", [13113] = "\xd2\xc3", + [13114] = "\xc8\xbe", [13115] = "\xb4\x38", [13116] = "\xb4\x37", + [13117] = "\xd2\xc4", [13121] = "\xc8\xdc", [13122] = "\xc2\xb4", + [13123] = "\xc2\xee", [13124] = "\xb6\xa8", [13127] = "\xc6\xee", + [13128] = "\xc3\xb1", [13129] = "\xb4\x39", [13130] = "\xc7\xee", + [13131] = "\xb4\x3a", [13132] = "\xcb\xce", [13134] = "\xd2\xc6", + [13136] = "\xc0\xea", [13137] = "\xb4\x3b", [13139] = "\xb4\x3c", + [13141] = "\xb4\x3d", [13142] = "\xb7\xb5", [13145] = "\xd2\xc7", + [13148] = "\xb4\x3e", [13149] = "\xb4\x3f", [13150] = "\xd2\xc8", + [13151] = "\xb1\xac", [13152] = "\xb0\xf5", [13153] = "\xb4\xed", + [13154] = "\xb4\x40", [13155] = "\xc2\xa8", [13156] = "\xb5\xd1", + [13157] = "\xcd\xf1", [13159] = "\xd2\xcb", [13160] = "\xb2\xb7", + [13161] = "\xb4\x41", [13163] = "\xd2\xca", [13166] = "\xb4\x42", + [13167] = "\xb6\xaa", [13170] = "\xd2\xcc", [13171] = "\xb4\x43", + [13172] = "\xcc\xf1", [13175] = "\xb4\x44", [13176] = "\xb4\x45", + [13182] = "\xb4\x46", [13187] = "\xb4\x47", [13188] = "\xb4\x48", + [13190] = "\xd2\xcd", [13192] = "\xce\xd2", [13193] = "\xb4\x49", + [13194] = "\xb8\xfc", [13197] = "\xb4\x4a", [13199] = "\xb8\xb6", + [13200] = "\xd2\xce", [13201] = "\xb4\x4b", [13204] = "\xb4\x4c", + [13205] = "\xd2\xd0", [13206] = "\xd2\xcf", [13208] = "\xbf\xdf", + [13209] = "\xb1\xb9", [13210] = "\xb4\x4d", [13211] = "\xb4\x4e", + [13213] = "\xb1\xde", [13214] = "\xd2\xd1", [13215] = "\xb4\x4f", + [13216] = "\xd2\xd2", [13218] = "\xb4\x50", [13219] = "\xb8\xb7", + [13220] = "\xb4\x51", [13221] = "\xb4\x52", [13222] = "\xd2\xd3", + [13223] = "\xb4\x53", [13224] = "\xb4\x54", [13226] = "\xb4\x55", + [13227] = "\xb5\xee", [13229] = "\xb4\x56", [13232] = "\xb4\x57", + [13234] = "\xbb\xb2", [13235] = "\xd2\xd4", [13237] = "\xb4\x58", + [13240] = "\xcb\xf4", [13241] = "\xba\xb5", [13242] = "\xb5\xda", + [13243] = "\xcd\xa7", [13244] = "\xc1\xd0", [13245] = "\xc8\xbf", + [13246] = "\xbc\xfd", [13247] = "\xb4\x59", [13250] = "\xb4\x5a", + [13251] = "\xb4\x5b", [13252] = "\xbd\xc7", [13253] = "\xb4\x5c", + [13254] = "\xbc\xe8", [13255] = "\xbc\xf5", [13257] = "\xbd\xf6", + [13258] = "\xb4\x5d", [13259] = "\xc8\xc0", [13261] = "\xb4\x5e", + [13262] = "\xb4\x5f", [13263] = "\xd2\xd7", [13264] = "\xb4\x60", + [13265] = "\xb1\xc3", [13266] = "\xc1\xd1", [13267] = "\xb8\xfd", + [13268] = "\xb8\xc5", [13269] = "\xb6\xe7", [13270] = "\xb4\x61", + [13271] = "\xb4\x62", [13272] = "\xd2\xdb", [13273] = "\xc3\xa1", + [13274] = "\xc2\xfe", [13275] = "\xb6\xab", [13276] = "\xbe\xa4", + [13277] = "\xd2\xdc", [13278] = "\xd2\xda", [13279] = "\xb2\xc4", + [13280] = "\xc2\xe6", [13281] = "\xbc\xb8", [13282] = "\xbb\xcb", + [13283] = "\xb1\xa6", [13285] = "\xb4\x63", [13286] = "\xb3\xf0", + [13287] = "\xb9\xe6", [13288] = "\xbb\xca", [13290] = "\xd2\xdd", + [13297] = "\xd2\xde", [13298] = "\xb4\x64", [13299] = "\xb5\xc9", + [13300] = "\xb3\xc6", [13304] = "\xb9\xe7", [13305] = "\xb5\xc8", + [13306] = "\xc4\xdf", [13307] = "\xb1\xa5", [13308] = "\xc6\xb1", + [13309] = "\xcc\xbe", [13310] = "\xb9\xa1", [13311] = "\xcd\xf9", + [13312] = "\xc5\xc7", [13313] = "\xb8\xfe", [13315] = "\xb4\x65", + [13322] = "\xb4\x66", [13323] = "\xb7\xaf", [13325] = "\xd2\xe7", + [13327] = "\xb6\xe3", [13328] = "\xcb\xca", [13329] = "\xb4\x67", + [13334] = "\xc8\xdd", [13335] = "\xb4\x68", [13336] = "\xb4\x69", + [13337] = "\xd2\xe6", [13338] = "\xb4\x6a", [13339] = "\xb4\xde", + [13340] = "\xd2\xe1", [13341] = "\xd2\xe2", [13342] = "\xd2\xe4", + [13343] = "\xb4\x6b", [13345] = "\xb4\x6c", [13348] = "\xb4\x6d", + [13349] = "\xb4\x6e", [13350] = "\xd2\xe5", [13352] = "\xb5\xdb", + [13353] = "\xbf\xe1", [13355] = "\xca\xad", [13356] = "\xd2\xe3", + [13357] = "\xd2\xdf", [13358] = "\xb8\xe3", [13360] = "\xd2\xe0", + [13362] = "\xcf\xa4", [13363] = "\xb4\x6f", [13364] = "\xb4\x70", + [13366] = "\xca\xf2", [13367] = "\xb4\x71", [13368] = "\xc4\xe8", + [13369] = "\xb8\xe2", [13370] = "\xb9\xf0", [13373] = "\xb4\x72", + [13374] = "\xd2\xe8", [13375] = "\xb4\x73", [13377] = "\xc6\xdd", + [13390] = "\xb4\x74", [13391] = "\xd2\xec", [13394] = "\xb4\x75", + [13396] = "\xb4\x76", [13398] = "\xb4\x77", [13399] = "\xb4\x78", + [13400] = "\xbc\xfe", [13401] = "\xb4\x79", [13402] = "\xbc\xf6", + [13403] = "\xb4\x7a", [13405] = "\xb4\x7b", [13406] = "\xb4\x7c", + [13408] = "\xd2\xef", [13409] = "\xd2\xed", [13411] = "\xcc\xa3", + [13412] = "\xb4\x7d", [13413] = "\xd2\xea", [13414] = "\xd2\xf3", + [13415] = "\xd2\xee", [13419] = "\xd2\xf1", [13420] = "\xb8\xc6", + [13421] = "\xcc\xbf", [13423] = "\xb4\x7e", [13424] = "\xd2\xf2", + [13425] = "\xb5\x21", [13427] = "\xb5\x22", [13428] = "\xd2\xf4", + [13429] = "\xb5\x23", [13430] = "\xd2\xf6", [13432] = "\xb5\x24", + [13433] = "\xb5\x25", [13434] = "\xf4\x35", [13435] = "\xba\xf0", + [13436] = "\xcf\xc2", [13437] = "\xb5\x26", [13438] = "\xd2\xeb", + [13439] = "\xd2\xe9", [13440] = "\xd2\xf5", [13441] = "\xb5\x27", + [13442] = "\xd2\xf0", [13445] = "\xb5\x28", [13446] = "\xb5\x29", + [13452] = "\xb5\x2a", [13455] = "\xb5\x2b", [13457] = "\xb5\x2c", + [13458] = "\xd2\xf8", [13460] = "\xd3\xa3", [13461] = "\xd2\xfa", + [13462] = "\xb5\x2d", [13463] = "\xb5\x2e", [13464] = "\xd2\xfe", + [13465] = "\xb5\x2f", [13466] = "\xb5\x30", [13467] = "\xd3\xa1", + [13468] = "\xd2\xfb", [13469] = "\xb5\x31", [13470] = "\xb5\x32", + [13471] = "\xd3\xbe", [13473] = "\xb5\x33", [13474] = "\xba\xe9", + [13475] = "\xb3\xb1", [13479] = "\xb5\x34", [13480] = "\xd2\xf9", + [13481] = "\xb5\x35", [13482] = "\xb5\x36", [13483] = "\xb5\x37", + [13484] = "\xd3\xa5", [13485] = "\xb0\xf6", [13486] = "\xd3\xa4", + [13487] = "\xb5\x38", [13488] = "\xb0\xa5", [13489] = "\xc9\xca", + [13490] = "\xd3\xa2", [13492] = "\xd2\xfc", [13494] = "\xb5\x39", + [13495] = "\xd2\xf7", [13496] = "\xd2\xfd", [13497] = "\xba\xc8", + [13498] = "\xb5\x3a", [13501] = "\xb5\x3b", [13502] = "\xb5\x3c", + [13512] = "\xd3\xa6", [13520] = "\xb5\x3d", [13521] = "\xb0\xf7", + [13522] = "\xd3\xaf", [13525] = "\xd3\xa7", [13526] = "\xd3\xa8", + [13528] = "\xbe\xa5", [13529] = "\xcb\xe9", [13530] = "\xb5\x3e", + [13532] = "\xb5\x3f", [13533] = "\xd3\xad", [13534] = "\xd3\xac", + [13535] = "\xb5\x40", [13538] = "\xc5\xaf", [13542] = "\xb5\x41", + [13546] = "\xd3\xae", [13548] = "\xb5\x42", [13549] = "\xd3\xab", + [13550] = "\xb5\x43", [13551] = "\xb5\x44", [13552] = "\xb5\x45", + [13553] = "\xb5\x46", [13556] = "\xb1\xb4", [13557] = "\xb5\x47", + [13558] = "\xba\xb6", [13559] = "\xbf\xb0", [13560] = "\xb5\x48", + [13561] = "\xb5\x49", [13564] = "\xb5\x4a", [13565] = "\xb5\x4b", + [13566] = "\xb5\x4c", [13567] = "\xd3\xa9", [13568] = "\xc5\xe2", + [13572] = "\xd3\xaa", [13573] = "\xb5\x4d", [13574] = "\xb0\xa2", + [13594] = "\xb5\x4e", [13595] = "\xb5\x4f", [13598] = "\xd3\xb4", + [13599] = "\xcd\xa3", [13601] = "\xbe\xa7", [13602] = "\xb5\x50", + [13603] = "\xd3\xba", [13605] = "\xb5\x51", [13606] = "\xb5\x52", + [13608] = "\xd3\xb9", [13609] = "\xd3\xb0", [13611] = "\xb5\x53", + [13612] = "\xb5\x54", [13613] = "\xb5\x55", [13614] = "\xc2\xc3", + [13616] = "\xd3\xb1", [13617] = "\xb5\x56", [13620] = "\xc2\xef", + [13621] = "\xd3\xb6", [13622] = "\xbe\xa6", [13623] = "\xb5\x57", + [13625] = "\xb5\x58", [13626] = "\xb5\x59", [13628] = "\xd3\xb3", + [13629] = "\xb5\x5a", [13631] = "\xcc\xe4", [13632] = "\xb5\x5b", + [13633] = "\xb5\x5c", [13635] = "\xb7\xbc", [13638] = "\xd3\xb7", + [13639] = "\xd3\xb8", [13640] = "\xb5\x5d", [13642] = "\xb5\x5e", + [13643] = "\xb5\x5f", [13644] = "\xd3\xb5", [13645] = "\xd3\xbb", + [13646] = "\xb5\x60", [13648] = "\xb5\x61", [13649] = "\xb5\x62", + [13651] = "\xd3\xb2", [13652] = "\xb5\x63", [13654] = "\xb5\x64", + [13675] = "\xd3\xc1", [13676] = "\xd3\xc6", [13678] = "\xd3\xc2", + [13679] = "\xb5\x65", [13680] = "\xd3\xbd", [13681] = "\xb5\x66", + [13682] = "\xb5\x67", [13683] = "\xd3\xc7", [13684] = "\xc1\xb1", + [13686] = "\xb5\x68", [13687] = "\xd3\xc9", [13688] = "\xb5\x69", + [13689] = "\xb9\xa2", [13690] = "\xd3\xbf", [13691] = "\xc3\xfd", + [13694] = "\xb5\x6a", [13695] = "\xb5\x6b", [13697] = "\xb5\x6c", + [13698] = "\xb5\x6d", [13699] = "\xb5\x6e", [13700] = "\xb5\x6f", + [13703] = "\xb5\x70", [13704] = "\xd3\xc3", [13705] = "\xd3\xbc", + [13706] = "\xb4\xad", [13708] = "\xb4\xee", [13709] = "\xb3\xe5", + [13710] = "\xd3\xc4", [13711] = "\xd3\xc0", [13715] = "\xb5\x71", + [13716] = "\xb5\x72", [13719] = "\xb7\xf6", [13720] = "\xd3\xca", + [13721] = "\xd3\xc8", [13722] = "\xc1\xd3", [13723] = "\xb5\xca", + [13724] = "\xb6\xac", [13725] = "\xb5\x73", [13726] = "\xd3\xc5", + [13728] = "\xb6\xf4", [13730] = "\xb5\x74", [13734] = "\xb1\xc4", + [13743] = "\xb5\x75", [13745] = "\xb5\x76", [13747] = "\xb5\x77", + [13748] = "\xd3\xce", [13749] = "\xd3\xcc", [13750] = "\xb5\x78", + [13751] = "\xd4\xa7", [13753] = "\xb5\x79", [13755] = "\xb5\x7a", + [13756] = "\xb5\x7b", [13758] = "\xb5\x7c", [13761] = "\xb5\x7d", + [13762] = "\xb5\x7e", [13763] = "\xb6\x21", [13764] = "\xd3\xd1", + [13767] = "\xb6\x22", [13768] = "\xb6\x23", [13770] = "\xd3\xcb", + [13771] = "\xb6\x24", [13772] = "\xd3\xcf", [13774] = "\xb6\x25", + [13775] = "\xd3\xcd", [13778] = "\xb6\x26", [13779] = "\xbb\xcc", + [13780] = "\xd3\xd0", [13785] = "\xb6\x27", [13798] = "\xb6\x28", + [13799] = "\xd3\xd3", [13801] = "\xd3\xd8", [13805] = "\xd3\xd6", + [13806] = "\xd3\xd5", [13807] = "\xb6\x29", [13813] = "\xb6\x2a", + [13814] = "\xc3\xb2", [13816] = "\xb6\x2b", [13817] = "\xb2\xc5", + [13818] = "\xb6\x2c", [13821] = "\xb6\x2d", [13822] = "\xb6\x2e", + [13823] = "\xb6\x2f", [13824] = "\xb6\x30", [13825] = "\xb6\x31", + [13826] = "\xb6\x32", [13828] = "\xd3\xd2", [13830] = "\xd3\xd4", + [13831] = "\xbe\xa8", [13832] = "\xb1\xb3", [13833] = "\xb6\x33", + [13835] = "\xd3\xd7", [13849] = "\xb2\xde", [13852] = "\xb6\x34", + [13855] = "\xd3\xe2", [13856] = "\xb6\x35", [13857] = "\xbe\xfc", + [13858] = "\xd3\xde", [13859] = "\xb6\x36", [13860] = "\xd3\xdc", + [13861] = "\xb6\x37", [13862] = "\xd3\xdd", [13863] = "\xb6\x38", + [13864] = "\xd3\xdf", [13865] = "\xb6\x39", [13867] = "\xb6\x3a", + [13868] = "\xb6\x3b", [13869] = "\xb6\x3c", [13871] = "\xb6\x3d", + [13872] = "\xb6\x3e", [13873] = "\xb6\x3f", [13874] = "\xb1\xbd", + [13875] = "\xb6\x40", [13876] = "\xb6\x41", [13878] = "\xb6\x42", + [13881] = "\xb6\x43", [13883] = "\xb6\x44", [13884] = "\xc1\xb9", + [13885] = "\xb6\x45", [13886] = "\xd3\xd9", [13887] = "\xb6\x46", + [13888] = "\xd3\xda", [13892] = "\xb6\x47", [13899] = "\xb3\xfa", + [13902] = "\xb6\x48", [13904] = "\xb6\x49", [13905] = "\xb6\x4a", + [13906] = "\xb6\x4b", [13907] = "\xb6\x4c", [13908] = "\xd3\xe1", + [13910] = "\xb6\x4d", [13912] = "\xb4\xef", [13913] = "\xb6\x4e", + [13914] = "\xd3\xe4", [13915] = "\xd3\xe0", [13916] = "\xd3\xe3", + [13917] = "\xb6\x4f", [13919] = "\xb6\x50", [13921] = "\xb6\x51", + [13922] = "\xb6\x52", [13924] = "\xca\xae", [13925] = "\xb6\x53", + [13928] = "\xc6\xd5", [13930] = "\xc8\xb8", [13936] = "\xd3\xe6", + [13940] = "\xb6\x54", [13941] = "\xb6\x55", [13942] = "\xd3\xe5", + [13943] = "\xb3\xc5", [13944] = "\xb6\x56", [13946] = "\xd3\xe7", + [13947] = "\xb6\x57", [13948] = "\xb6\x58", [13951] = "\xd3\xea", + [13956] = "\xd3\xe9", [13957] = "\xb6\x59", [13961] = "\xb6\x5a", + [13962] = "\xb6\x5b", [13965] = "\xb6\x5c", [13966] = "\xb6\x5d", + [13967] = "\xb6\x5e", [13968] = "\xd3\xe8", [13970] = "\xc7\xb9", + [13973] = "\xd3\xeb", [13974] = "\xb6\x5f", [13975] = "\xb6\x60", + [13976] = "\xb6\x61", [13977] = "\xb6\x62", [13979] = "\xb6\x63", + [13980] = "\xb6\x64", [13981] = "\xb6\x65", [13982] = "\xd3\xec", + [13985] = "\xb6\x66", [13987] = "\xb6\x67", [13988] = "\xd3\xee", + [13990] = "\xd3\xed", [13991] = "\xb6\x68", [13996] = "\xd3\xf0", + [13998] = "\xb6\x69", [14000] = "\xd3\xf3", [14001] = "\xd3\xf1", + [14002] = "\xd3\xef", [14003] = "\xd3\xf2", [14005] = "\xb6\x6a", + [14008] = "\xd3\xf4", [14009] = "\xb6\x6b", [14010] = "\xb6\x6c", + [14011] = "\xb6\x6d", [14012] = "\xb6\x70", [14013] = "\xb6\x71", + [14014] = "\xd3\xf5", [14015] = "\xb6\x6e", [14016] = "\xb6\x6f", + [14017] = "\xd3\xf6", [14019] = "\xd3\xf7", [14023] = "\xd3\xf8", + [14024] = "\xd1\xc5", [14025] = "\xb6\x72", [14026] = "\xbc\xfc", + [14027] = "\xbb\xcd", [14028] = "\xb6\x73", [14029] = "\xb6\x74", + [14030] = "\xb2\xf3", [14031] = "\xb6\x75", [14032] = "\xb0\xf8", + [14033] = "\xb6\x76", [14035] = "\xc3\xc4", [14036] = "\xb6\x77", + [14037] = "\xb6\x78", [14038] = "\xb6\x79", [14039] = "\xb6\x7a", + [14040] = "\xb6\x7b", [14043] = "\xb6\x7d", [14045] = "\xb6\x7e", + [14046] = "\xd3\xf9", [14048] = "\xba\xa4", [14049] = "\xb6\x7c", + [14050] = "\xb0\xcf", [14051] = "\xbf\xde", [14054] = "\xb7\x21", + [14055] = "\xb7\x22", [14057] = "\xd3\xfa", [14058] = "\xb8\xc7", + [14061] = "\xb9\xf1", [14063] = "\xd3\xfc", [14064] = "\xd3\xfb", + [14065] = "\xb7\x23", [14066] = "\xb7\x24", [14067] = "\xca\xe0", + [14068] = "\xd3\xfd", [14071] = "\xb7\x25", [14072] = "\xd4\xa1", + [14073] = "\xd3\xfe", [14074] = "\xb7\x26", [14075] = "\xd4\xa2", + [14076] = "\xb7\x27", [14077] = "\xd4\xa3", [14079] = "\xb7\xf7", + [14081] = "\xb7\x28", [14082] = "\xb1\xe0", [14083] = "\xd4\xa4", + [14085] = "\xb7\x29", [14086] = "\xd4\xa6", [14088] = "\xd4\xa5", + [14090] = "\xb7\x2a", [14091] = "\xb7\x2b", [14092] = "\xd4\xa8", + [14093] = "\xb7\x2c", [14095] = "\xc5\xda", [14096] = "\xb7\x2d", + [14098] = "\xb7\x2e", [14099] = "\xb7\x2f", [14100] = "\xb7\x30", + [14101] = "\xb7\x31", [14102] = "\xd4\xa9", [14103] = "\xb0\xb5", + [14104] = "\xba\xdf", [14105] = "\xb7\x32", [14106] = "\xb7\x33", + [14108] = "\xb7\x34", [14109] = "\xb7\xbd", [14110] = "\xb7\x35", + [14111] = "\xb7\x36", [14112] = "\xc3\xcf", [14115] = "\xb7\x37", + [14116] = "\xb7\x38", [14119] = "\xd4\xaa", [14120] = "\xd4\xab", + [14123] = "\xd4\xad", [14125] = "\xb7\x39", [14126] = "\xb7\x3a", + [14127] = "\xb7\x3b", [14128] = "\xd4\xae", [14130] = "\xba\xe4", + [14133] = "\xb7\x3c", [14134] = "\xb7\x3d", [14135] = "\xb6\xd1", + [14138] = "\xcb\xb7", [14140] = "\xb7\x3e", [14141] = "\xb7\x3f", + [14142] = "\xd4\xac", [14143] = "\xd4\xaf", [14144] = "\xba\xc1", + [14145] = "\xb9\xa3", [14146] = "\xb7\x40", [14153] = "\xf4\x36", + [14161] = "\xd4\xb3", [14162] = "\xb7\x41", [14164] = "\xba\xa5", + [14165] = "\xb7\x42", [14166] = "\xc3\xb3", [14167] = "\xb7\x43", + [14168] = "\xb7\x44", [14169] = "\xd4\xb0", [14170] = "\xc4\xda", + [14171] = "\xb7\x45", [14173] = "\xb7\x46", [14174] = "\xb7\x47", + [14175] = "\xb7\x48", [14176] = "\xb7\x49", [14177] = "\xb7\x4a", + [14179] = "\xb7\x4b", [14180] = "\xb7\x4c", [14181] = "\xb7\x4d", + [14183] = "\xb7\x4e", [14185] = "\xb7\x4f", [14186] = "\xb7\x50", + [14187] = "\xb7\x51", [14188] = "\xb7\x52", [14190] = "\xb7\x53", + [14191] = "\xd4\xb4", [14193] = "\xb7\x54", [14194] = "\xbf\xe2", + [14195] = "\xb7\x55", [14200] = "\xd4\xb2", [14201] = "\xd4\xb5", + [14203] = "\xb7\xbf", [14204] = "\xb7\x56", [14211] = "\xd4\xb6", + [14212] = "\xb7\x57", [14213] = "\xb7\x60", [14215] = "\xb7\x58", + [14217] = "\xb7\x59", [14218] = "\xb7\x5a", [14220] = "\xb7\x5b", + [14221] = "\xb7\x5c", [14222] = "\xb7\x5d", [14223] = "\xb7\x5e", + [14224] = "\xd4\xb7", [14225] = "\xb7\x5f", [14226] = "\xb9\xa4", + [14227] = "\xb3\xc0", [14228] = "\xd4\xb9", [14231] = "\xb7\x61", + [14232] = "\xb7\x62", [14233] = "\xb7\x63", [14234] = "\xd4\xba", + [14236] = "\xb7\x64", [14240] = "\xd4\xbb", [14243] = "\xd4\xb8", + [14248] = "\xb7\x65", [14253] = "\xb7\x66", [14256] = "\xd4\xb1", + [14259] = "\xd4\xbc", [14262] = "\xd4\xbd", [14263] = "\xb7\x67", + [14264] = "\xb7\x68", [14267] = "\xcb\xe4", [14268] = "\xb7\x69", + [14270] = "\xbe\xeb", [14271] = "\xb7\x6a", [14274] = "\xd4\xbf", + [14275] = "\xd4\xc0", [14276] = "\xd4\xbe", [14277] = "\xb7\x6b", + [14278] = "\xd4\xc2", [14284] = "\xc7\xb8", [14285] = "\xb7\x6c", + [14286] = "\xb7\x6d", [14287] = "\xb0\xe8", [14288] = "\xc9\xd6", + [14289] = "\xb7\x7e", [14291] = "\xd4\xc3", [14292] = "\xb7\x6e", + [14294] = "\xb7\x6f", [14295] = "\xb7\x70", [14297] = "\xb7\x71", + [14301] = "\xb7\x72", [14304] = "\xb7\x73", [14308] = "\xbe\xfd", + [14309] = "\xb7\x74", [14310] = "\xb7\x75", [14311] = "\xbc\xb9", + [14312] = "\xb7\x76", [14313] = "\xc7\xdd", [14314] = "\xb4\xf0", + [14316] = "\xba\xeb", [14317] = "\xb7\x77", [14318] = "\xb7\x78", + [14319] = "\xb7\x79", [14320] = "\xcb\xd9", [14322] = "\xc6\xb2", + [14323] = "\xb7\x7a", [14324] = "\xb7\x7b", [14325] = "\xb7\xf8", + [14326] = "\xc2\xcf", [14328] = "\xb7\x7c", [14329] = "\xb7\x7d", + [14330] = "\xd4\xc1", [14331] = "\xd4\xc4", [14332] = "\xb8\x21", + [14333] = "\xb8\x22", [14341] = "\xc2\xc4", [14345] = "\xd4\xc5", + [14347] = "\xb8\x23", [14349] = "\xd4\xc6", [14350] = "\xb8\x24", + [14351] = "\xb8\x25", [14352] = "\xb8\x26", [14353] = "\xd4\xc8", + [14356] = "\xc4\xe9", [14358] = "\xb8\x27", [14359] = "\xb8\x28", + [14362] = "\xb4\xae", [14365] = "\xb8\x29", [14367] = "\xf4\xa1", + [14368] = "\xb1\xe1", [14369] = "\xca\xf3", [14370] = "\xb8\x2a", + [14372] = "\xbe\xec", [14373] = "\xc5\xc8", [14377] = "\xb8\x2b", + [14378] = "\xba\xe6", [14381] = "\xd4\xce", [14383] = "\xb8\x2c", + [14384] = "\xca\xbd", [14385] = "\xce\xdd", [14393] = "\xb8\x2d", + [14394] = "\xb2\xf4", [14395] = "\xd4\xca", [14396] = "\xb8\x2e", + [14397] = "\xb8\x2f", [14399] = "\xb8\x30", [14400] = "\xb8\x31", + [14401] = "\xc1\xba", [14402] = "\xd4\xcd", [14404] = "\xc5\xe3", + [14405] = "\xb8\x32", [14407] = "\xc5\xc9", [14408] = "\xc5\xe4", + [14409] = "\xc8\xb9", [14410] = "\xc4\xcd", [14414] = "\xba\xc9", + [14415] = "\xb8\x33", [14417] = "\xb8\x34", [14418] = "\xd4\xc9", + [14420] = "\xb8\x35", [14423] = "\xb8\x36", [14424] = "\xb8\x37", + [14425] = "\xb1\xf6", [14427] = "\xc5\xb6", [14432] = "\xd4\xcb", + [14434] = "\xd4\xc7", [14437] = "\xbf\xd0", [14440] = "\xb8\x38", + [14441] = "\xd4\xcf", [14444] = "\xb8\x39", [14446] = "\xbd\xce", + [14447] = "\xb8\x3a", [14448] = "\xb8\x3b", [14449] = "\xb8\x3c", + [14451] = "\xb6\xad", [14453] = "\xd4\xd0", [14455] = "\xb8\x3d", + [14456] = "\xb8\x3e", [14457] = "\xb8\x3f", [14458] = "\xb8\x40", + [14460] = "\xb8\x41", [14461] = "\xb8\x42", [14463] = "\xb8\x43", + [14464] = "\xb8\x44", [14467] = "\xca\xe8", [14468] = "\xb8\x45", + [14470] = "\xb8\x46", [14471] = "\xc1\xfd", [14476] = "\xc4\xc6", + [14477] = "\xb8\x47", [14478] = "\xf4\x39", [14479] = "\xd4\xd2", + [14480] = "\xb8\x48", [14481] = "\xb8\x49", [14482] = "\xb8\x4a", + [14486] = "\xb8\x4b", [14488] = "\xcb\xcf", [14489] = "\xb8\x4c", + [14491] = "\xd4\xd3", [14494] = "\xd4\xd8", [14497] = "\xb8\x4d", + [14498] = "\xb8\x4e", [14499] = "\xca\xaf", [14504] = "\xd4\xd7", + [14505] = "\xd4\xd1", [14506] = "\xd4\xd4", [14507] = "\xd4\xd6", + [14508] = "\xb8\x50", [14510] = "\xba\xa6", [14513] = "\xca\xc9", + [14514] = "\xb8\x51", [14516] = "\xb8\x4f", [14517] = "\xd4\xd9", + [14519] = "\xc3\xc5", [14520] = "\xb8\x52", [14522] = "\xb2\xf5", + [14524] = "\xbe\xed", [14525] = "\xb8\x53", [14526] = "\xb8\x54", + [14528] = "\xb8\x55", [14529] = "\xd4\xdb", [14530] = "\xb8\x56", + [14531] = "\xd4\xda", [14532] = "\xb8\x57", [14533] = "\xb9\xe8", + [14534] = "\xb8\x58", [14535] = "\xd4\xdc", [14536] = "\xd4\xde", + [14537] = "\xd4\xdd", [14538] = "\xb8\x59", [14540] = "\xd4\xe0", + [14541] = "\xb8\x5a", [14542] = "\xd4\xd5", [14543] = "\xd4\xe2", + [14545] = "\xb8\x5b", [14546] = "\xb8\x5c", [14548] = "\xd4\xe1", + [14549] = "\xd4\xdf", [14553] = "\xb8\x5d", [14555] = "\xbb\xce", + [14556] = "\xbf\xd1", [14558] = "\xc1\xd4", [14559] = "\xd4\xe3", + [14560] = "\xc0\xbc", [14561] = "\xb0\xed", [14562] = "\xc7\xe4", + [14563] = "\xb8\x5e", [14567] = "\xc4\xdb", [14569] = "\xd4\xe5", + [14570] = "\xd4\xe4", [14571] = "\xd4\xe6", [14572] = "\xd4\xe7", + [14573] = "\xd4\xe8", [14578] = "\xd4\xe9", [14581] = "\xb8\x5f", + [14582] = "\xb8\x60", [14585] = "\xca\xd1", [14586] = "\xd4\xea", + [14587] = "\xb8\x61", [14588] = "\xb8\x62", [14591] = "\xb2\xc6", + [14592] = "\xd4\xeb", [14594] = "\xb8\x63", [14595] = "\xb8\x64", + [14596] = "\xb8\x65", [14597] = "\xcd\xbc", [14598] = "\xb3\xb0", + [14600] = "\xd2\xc9", [14601] = "\xbd\xc8", [14602] = "\xc2\xbf", + [14603] = "\xd4\xec", [14604] = "\xcc\xeb", [14605] = "\xb8\x67", + [14609] = "\xb8\x68", [14610] = "\xcc\xb4", [14611] = "\xb8\x69", + [14612] = "\xb8\x6a", [14613] = "\xd4\xee", [14615] = "\xc2\xe7", + [14616] = "\xb8\x6b", [14617] = "\xc5\xb7", [14618] = "\xc2\xc0", + [14619] = "\xc9\xd7", [14620] = "\xd4\xef", [14621] = "\xd4\xf0", + [14622] = "\xb1\xfb", [14623] = "\xb8\x6c", [14624] = "\xb8\x6d", + [14625] = "\xbc\xba", [14626] = "\xd4\xf1", [14627] = "\xb8\x6e", + [14629] = "\xb8\x6f", [14630] = "\xb8\x70", [14631] = "\xb0\xd0", + [14632] = "\xd4\xf2", [14638] = "\xd4\xf3", [14639] = "\xb8\x71", + [14643] = "\xb8\x72", [14644] = "\xb1\xe2", [14646] = "\xb8\x73", + [14647] = "\xb4\xf1", [14648] = "\xc6\xe0", [14649] = "\xca\xf4", + [14654] = "\xd4\xf7", [14655] = "\xc1\xd5", [14656] = "\xd4\xf6", + [14657] = "\xb7\xc0", [14658] = "\xb8\x74", [14659] = "\xb8\x75", + [14660] = "\xcb\xdb", [14661] = "\xd4\xf5", [14663] = "\xc5\xe5", + [14664] = "\xd4\xf9", [14665] = "\xb8\x76", [14666] = "\xd4\xf8", + [14667] = "\xb8\x77", [14669] = "\xb8\x78", [14670] = "\xb8\x79", + [14671] = "\xb8\x7a", [14672] = "\xd4\xfb", [14673] = "\xb8\x7b", + [14674] = "\xd4\xfa", [14675] = "\xb8\x7c", [14677] = "\xb1\xfc", + [14679] = "\xd4\xfc", [14680] = "\xbe\xa9", [14681] = "\xd4\xfe", + [14682] = "\xc3\xa5", [14683] = "\xb8\x7d", [14684] = "\xd4\xfd", + [14685] = "\xb8\x7e", [14686] = "\xca\xb3", [14687] = "\xb9\x21", + [14690] = "\xb9\x22", [14691] = "\xbd\xf7", [14692] = "\xc5\xdb", + [14693] = "\xb9\x23", [14694] = "\xb9\x24", [14696] = "\xd5\xa1", + [14697] = "\xb9\x25", [14699] = "\xb9\x26", [14700] = "\xb9\x27", + [14701] = "\xb9\xa5", [14705] = "\xd5\xa2", [14706] = "\xc7\xa1", + [14707] = "\xc8\xde", [14708] = "\xcc\xd1", [14714] = "\xc7\xa5", + [14715] = "\xb9\x28", [14716] = "\xb9\x29", [14717] = "\xd5\xab", + [14718] = "\xb9\x2a", [14722] = "\xb9\x2b", [14723] = "\xb5\xb8", + [14725] = "\xb9\x2c", [14726] = "\xcd\xc5", [14727] = "\xb9\x2d", + [14729] = "\xcc\xaf", [14731] = "\xd6\xac", [14733] = "\xd5\xa3", + [14735] = "\xb9\x2e", [14739] = "\xd5\xa6", [14740] = "\xb9\x2f", + [14741] = "\xc2\xc5", [14743] = "\xb9\x30", [14744] = "\xcb\xb8", + [14748] = "\xc5\xca", [14749] = "\xb9\x31", [14750] = "\xb9\x32", + [14751] = "\xb9\x33", [14752] = "\xb9\x34", [14754] = "\xd5\xa7", + [14755] = "\xb9\x35", [14759] = "\xb9\x36", [14761] = "\xcb\xe5", + [14762] = "\xb9\x37", [14763] = "\xba\xca", [14764] = "\xb9\x38", + [14766] = "\xbe\xaa", [14769] = "\xb9\x39", [14771] = "\xb9\x3a", + [14772] = "\xb9\x3b", [14774] = "\xd5\xa8", [14776] = "\xb9\x3c", + [14777] = "\xbb\xd0", [14778] = "\xb9\x3d", [14779] = "\xbb\xcf", + [14781] = "\xb9\x3e", [14784] = "\xb0\xb9", [14785] = "\xb8\xc8", + [14786] = "\xb9\x3f", [14787] = "\xc0\xab", [14788] = "\xb0\xd1", + [14793] = "\xd5\xac", [14794] = "\xd5\xad", [14796] = "\xd5\xaa", + [14797] = "\xb9\x40", [14798] = "\xb9\x41", [14799] = "\xb9\x42", + [14803] = "\xb9\x43", [14804] = "\xb9\x44", [14805] = "\xb1\xb8", + [14806] = "\xb4\xaf", [14807] = "\xb9\x45", [14808] = "\xd5\xa9", + [14810] = "\xcc\xc5", [14811] = "\xc9\xb1", [14814] = "\xb9\x46", + [14815] = "\xb9\x47", [14817] = "\xb9\x48", [14818] = "\xb9\x49", + [14820] = "\xb9\x4a", [14822] = "\xb0\xa8", [14823] = "\xb9\x4b", + [14827] = "\xb0\xf9", [14831] = "\xbb\xd1", [14832] = "\xb9\x4c", + [14833] = "\xb0\xd2", [14835] = "\xb0\xa3", [14836] = "\xb9\x4d", + [14841] = "\xd5\xb2", [14844] = "\xb9\x4e", [14845] = "\xb9\x4f", + [14846] = "\xb9\x50", [14849] = "\xd5\xb0", [14850] = "\xb9\x51", + [14851] = "\xb9\x52", [14856] = "\xcc\xbc", [14858] = "\xd5\xb3", + [14860] = "\xd5\xb1", [14862] = "\xb9\x53", [14863] = "\xd5\xaf", + [14864] = "\xbf\xb1", [14867] = "\xb9\x54", [14868] = "\xb9\x55", + [14869] = "\xd5\xae", [14871] = "\xb9\x56", [14872] = "\xb9\x57", + [14873] = "\xca\xda", [14874] = "\xb9\x58", [14877] = "\xb9\x59", + [14879] = "\xb8\xe4", [14880] = "\xb9\x5a", [14885] = "\xd5\xb7", + [14886] = "\xd5\xb8", [14892] = "\xbe\xab", [14896] = "\xd5\xb4", + [14897] = "\xcf\xac", [14900] = "\xb9\x5b", [14901] = "\xb9\x5c", + [14902] = "\xc7\xcc", [14903] = "\xb9\x5d", [14904] = "\xb9\x5e", + [14905] = "\xd5\xb6", [14908] = "\xb9\x5f", [14912] = "\xb9\x60", + [14917] = "\xb9\x61", [14922] = "\xba\xa7", [14926] = "\xb9\x62", + [14930] = "\xd5\xb9", [14931] = "\xb9\x63", [14933] = "\xb9\x64", + [14934] = "\xc9\xd8", [14935] = "\xb9\x65", [14938] = "\xd5\xba", + [14940] = "\xd5\xb5", [14941] = "\xb9\x66", [14951] = "\xb9\x67", + [14954] = "\xb9\x68", [14955] = "\xb9\x69", [14958] = "\xb9\x6a", + [14959] = "\xcc\xbb", [14971] = "\xb9\x6b", [14976] = "\xb9\x6c", + [14978] = "\xc7\xde", [14979] = "\xb9\x6d", [14982] = "\xb9\x6e", + [14985] = "\xb9\x6f", [14986] = "\xd5\xbb", [14987] = "\xc9\xb2", + [14988] = "\xb9\x70", [14990] = "\xb9\x71", [14991] = "\xb9\x72", + [14992] = "\xb9\x73", [14994] = "\xb9\x74", [14999] = "\xb9\x75", + [15004] = "\xb9\x76", [15009] = "\xb9\x77", [15010] = "\xb9\x78", + [15011] = "\xb9\x79", [15013] = "\xb9\x7a", [15016] = "\xb9\x7b", + [15018] = "\xb9\x7c", [15019] = "\xb9\x7d", [15020] = "\xd5\xbc", + [15021] = "\xd5\xc0", [15022] = "\xd5\xbd", [15023] = "\xb9\x7e", + [15025] = "\xb2\xc7", [15026] = "\xd5\xbf", [15028] = "\xba\x21", + [15030] = "\xba\x22", [15032] = "\xba\x23", [15033] = "\xbc\xbb", + [15035] = "\xd5\xbe", [15036] = "\xb7\xf9", [15039] = "\xba\x24", + [15040] = "\xd5\xcc", [15046] = "\xd5\xc5", [15047] = "\xd5\xc2", + [15050] = "\xba\x25", [15052] = "\xba\x26", [15056] = "\xba\x27", + [15057] = "\xc3\xe4", [15059] = "\xd5\xc1", [15061] = "\xba\x28", + [15062] = "\xd5\xc3", [15065] = "\xd5\xc4", [15066] = "\xba\x29", + [15070] = "\xba\x2a", [15077] = "\xba\x2b", [15078] = "\xba\x2c", + [15082] = "\xd5\xc6", [15083] = "\xd5\xc7", [15085] = "\xba\x2d", + [15088] = "\xba\x2e", [15089] = "\xba\x2f", [15096] = "\xba\x30", + [15097] = "\xb4\xf2", [15099] = "\xd5\xc9", [15100] = "\xd5\xc8", + [15110] = "\xd5\xca", [15111] = "\xba\x31", [15113] = "\xba\x33", + [15115] = "\xba\x34", [15117] = "\xba\x35", [15121] = "\xba\x36", + [15122] = "\xbe\xee", [15125] = "\xba\x37", [15130] = "\xd5\xcd", + [15132] = "\xc4\xdc", [15133] = "\xba\x38", [15136] = "\xb1\xc5", + [15138] = "\xd5\xcb", [15140] = "\xba\x32", [15142] = "\xd5\xce", + [15144] = "\xba\x39", [15150] = "\xd5\xcf", [15152] = "\xd5\xd2", + [15153] = "\xba\x3a", [15155] = "\xd5\xd0", [15157] = "\xd5\xd1", + [15163] = "\xba\x3b", [15164] = "\xba\x3c", [15168] = "\xbb\xd2", + [15169] = "\xd5\xd3", [15170] = "\xba\x3d", [15172] = "\xb9\xa6", + [15173] = "\xd5\xd4", [15174] = "\xba\x3e", [15175] = "\xbb\xfa", + [15176] = "\xc2\xb8", [15178] = "\xd5\xd5", [15179] = "\xd5\xd6", + [15180] = "\xbb\xda", [15181] = "\xb9\xa7", [15182] = "\xba\x3f", + [15183] = "\xcc\xd2", [15187] = "\xb5\xa8", [15188] = "\xb8\xc9", + [15189] = "\xd5\xd7", [15190] = "\xb3\xd8", [15192] = "\xba\x40", + [15193] = "\xd5\xd8", [15195] = "\xc2\xb9", [15198] = "\xba\x41", + [15199] = "\xba\x42", [15200] = "\xd5\xd9", [15201] = "\xd6\xa3", + [15203] = "\xd5\xda", [15205] = "\xd5\xdb", [15208] = "\xd5\xdc", + [15210] = "\xd5\xde", [15212] = "\xba\x43", [15213] = "\xba\x44", + [15214] = "\xba\x45", [15215] = "\xba\x46", [15216] = "\xd5\xdf", + [15217] = "\xba\x47", [15219] = "\xd5\xe0", [15220] = "\xba\x48", + [15221] = "\xc2\xf0", [15222] = "\xba\x49", [15223] = "\xb1\xa7", + [15224] = "\xbc\xe9", [15225] = "\xb0\xc2", [15226] = "\xba\x4a", + [15227] = "\xc1\xd7", [15228] = "\xb4\xb0", [15229] = "\xbc\xb5", + [15230] = "\xba\x4b", [15231] = "\xb9\xa8", [15232] = "\xba\x4c", + [15233] = "\xba\x4d", [15235] = "\xba\x4e", [15236] = "\xba\x4f", + [15237] = "\xc5\xe6", [15238] = "\xba\x50", [15239] = "\xbd\xa1", + [15240] = "\xb4\xb1", [15241] = "\xc3\xe8", [15242] = "\xc4\xea", + [15243] = "\xb0\xb8", [15244] = "\xb5\xb9", [15245] = "\xca\xf5", + [15247] = "\xbc\xc2", [15250] = "\xb5\xd2", [15251] = "\xc0\xeb", + [15252] = "\xbc\xbc", [15253] = "\xcd\xa8", [15254] = "\xd5\xe1", + [15256] = "\xba\x51", [15257] = "\xba\x52", [15260] = "\xba\x53", + [15261] = "\xba\x54", [15262] = "\xb5\xdc", [15263] = "\xba\x55", + [15264] = "\xba\xcb", [15265] = "\xba\x56", [15266] = "\xba\x57", + [15267] = "\xb3\xb2", [15268] = "\xb1\xe3", [15269] = "\xbe\xac", + [15270] = "\xb2\xc8", [15271] = "\xba\x58", [15272] = "\xd5\xe2", + [15273] = "\xcd\xc6", [15274] = "\xba\x59", [15276] = "\xba\x5a", + [15279] = "\xbd\xc9", [15280] = "\xba\x5b", [15281] = "\xba\x5c", + [15282] = "\xbc\xe4", [15283] = "\xd5\xe3", [15284] = "\xb4\xf3", + [15285] = "\xc6\xd2", [15286] = "\xcc\xa9", [15287] = "\xd5\xe4", + [15289] = "\xd5\xe5", [15292] = "\xc9\xd9", [15293] = "\xba\x5d", + [15295] = "\xba\x5e", [15296] = "\xd5\xe7", [15298] = "\xb4\xa8", + [15299] = "\xb6\xf7", [15300] = "\xd5\xe6", [15302] = "\xba\x5f", + [15303] = "\xba\x60", [15304] = "\xba\x61", [15305] = "\xba\x62", + [15306] = "\xba\x63", [15307] = "\xb4\xb2", [15309] = "\xbf\xb2", + [15310] = "\xd5\xeb", [15311] = "\xbb\xa1", [15312] = "\xba\x64", + [15313] = "\xb2\xc9", [15314] = "\xd5\xea", [15316] = "\xd5\xe8", + [15317] = "\xd5\xec", [15318] = "\xd5\xe9", [15319] = "\xc7\xab", + [15320] = "\xdc\xcd", [15321] = "\xbf\xb3", [15323] = "\xd5\xed", + [15324] = "\xf4\x3a", [15326] = "\xce\xc0", [15327] = "\xba\x65", + [15328] = "\xd5\xee", [15329] = "\xba\x66", [15331] = "\xd5\xf0", + [15332] = "\xba\x67", [15333] = "\xc3\xfe", [15334] = "\xd5\xef", + [15336] = "\xc0\xa3", [15338] = "\xbb\xfb", [15341] = "\xba\x68", + [15342] = "\xc2\xd0", [15343] = "\xbc\xf7", [15345] = "\xc9\xf5", + [15346] = "\xc0\xec", [15348] = "\xbc\xcd", [15349] = "\xd5\xf1", + [15350] = "\xbe\xad", [15351] = "\xd5\xf2", [15352] = "\xd5\xf3", + [15353] = "\xb0\xd3", [15354] = "\xc2\xba", [15355] = "\xbf\xd2", + [15356] = "\xba\x69", [15357] = "\xd5\xf4", [15358] = "\xc6\xb3", + [15359] = "\xbe\xae", [15361] = "\xbe\xaf", [15363] = "\xd5\xf5", + [15366] = "\xc0\xed", [15367] = "\xba\x6a", [15370] = "\xbe\xb0", + [15374] = "\xba\x6b", [15375] = "\xba\x6c", [15376] = "\xd5\xf6", + [15378] = "\xd5\xf7", [15379] = "\xba\x6d", [15380] = "\xcc\xe0", + [15382] = "\xba\x6e", [15384] = "\xd5\xf8", [15385] = "\xba\x6f", + [15387] = "\xba\x70", [15388] = "\xba\x71", [15389] = "\xb6\xc6", + [15390] = "\xba\x72", [15392] = "\xba\x73", [15393] = "\xbd\xa2", + [15394] = "\xba\x74", [15397] = "\xba\x75", [15398] = "\xba\x76", + [15400] = "\xd5\xf9", [15401] = "\xd5\xfa", [15402] = "\xbc\xdc", + [15403] = "\xbf\xac", [15404] = "\xc6\xf4", [15405] = "\xbf\xd4", + [15406] = "\xc8\xf8", [15407] = "\xc7\xa2", [15408] = "\xb6\xc9", + [15409] = "\xd5\xfb", [15413] = "\xb5\xef", [15414] = "\xd5\xfc", + [15416] = "\xb6\xfe", [15418] = "\xc6\xcf", [15419] = "\xb2\xb0", + [15421] = "\xbb\xd3", [15422] = "\xd5\xfd", [15423] = "\xd6\xa2", + [15424] = "\xd6\xa1", [15425] = "\xb6\xfd", [15427] = "\xd5\xfe", + [15429] = "\xc5\xb8", [15433] = "\xba\x77", [15434] = "\xba\x78", + [15436] = "\xba\x79", [15438] = "\xc2\xb0", [15440] = "\xc5\xcb", + [15441] = "\xbc\xc8", [15442] = "\xba\x7a", [15443] = "\xba\x7b", + [15444] = "\xc1\xd8", [15445] = "\xcd\xfa", [15447] = "\xba\x7c", + [15448] = "\xba\x7d", [15449] = "\xba\x7e", [15452] = "\xd6\xa4", + [15453] = "\xbb\x21", [15454] = "\xd6\xa5", [15455] = "\xc6\xd6", + [15456] = "\xbb\x22", [15457] = "\xbb\xb3", [15460] = "\xbb\x23", + [15461] = "\xbb\x24", [15462] = "\xd6\xa7", [15465] = "\xd6\xa8", + [15466] = "\xbb\x25", [15467] = "\xbb\x26", [15468] = "\xbb\x27", + [15469] = "\xbb\x28", [15479] = "\xbb\x29", [15480] = "\xbb\x2a", + [15482] = "\xbb\x2b", [15484] = "\xd6\xa9", [15487] = "\xbb\x2c", + [15488] = "\xb4\xf4", [15489] = "\xd6\xaa", [15490] = "\xbb\x2d", + [15492] = "\xd6\xab", [15501] = "\xbb\x2e", [15503] = "\xbb\x2f", + [15504] = "\xbb\x30", [15505] = "\xb2\xac", [15506] = "\xbb\x31", + [15507] = "\xbb\x32", [15510] = "\xbb\x33", [15512] = "\xc1\xbb", + [15513] = "\xb4\xe4", [15514] = "\xbb\x34", [15515] = "\xd6\xad", + [15516] = "\xcc\xa8", [15521] = "\xc2\xd2", [15522] = "\xbb\x35", + [15523] = "\xb3\xd9", [15524] = "\xbb\x36", [15525] = "\xbb\x37", + [15526] = "\xd6\xaf", [15527] = "\xd6\xb1", [15528] = "\xb4\xdf", + [15530] = "\xbb\x38", [15531] = "\xd6\xae", [15532] = "\xd6\xb0", + [15534] = "\xd6\xb3", [15541] = "\xd6\xb2", [15543] = "\xd6\xb4", + [15545] = "\xbb\x39", [15547] = "\xbb\x3a", [15554] = "\xbb\x3b", + [15559] = "\xbb\x3d", [15561] = "\xd6\xb5", [15565] = "\xbb\x3c", + [15568] = "\xc6\xbd", [15569] = "\xb6\xae", [15576] = "\xb2\xe5", + [15577] = "\xd6\xb6", [15578] = "\xd6\xbb", [15581] = "\xd6\xb9", + [15582] = "\xbb\x3e", [15583] = "\xca\xf7", [15584] = "\xca\xf6", + [15585] = "\xbb\x3f", [15586] = "\xbb\x40", [15588] = "\xbb\x41", + [15589] = "\xf4\x3b", [15590] = "\xc5\xe7", [15594] = "\xd6\xb8", + [15595] = "\xbd\xd4", [15597] = "\xd6\xb7", [15601] = "\xbb\x42", + [15606] = "\xbb\x43", [15607] = "\xbf\xf2", [15611] = "\xd6\xbc", + [15613] = "\xbb\x44", [15614] = "\xba\xea", [15617] = "\xd6\xc2", + [15618] = "\xbb\x45", [15620] = "\xd6\xc3", [15621] = "\xd6\xbd", + [15622] = "\xb3\xb3", [15623] = "\xd6\xbe", [15624] = "\xd6\xc7", + [15625] = "\xd6\xc6", [15626] = "\xd6\xc5", [15627] = "\xd6\xc1", + [15631] = "\xd6\xc0", [15634] = "\xd6\xc4", [15635] = "\xbb\x47", + [15636] = "\xbb\x48", [15638] = "\xbb\x49", [15639] = "\xbb\x4a", + [15641] = "\xca\xf8", [15643] = "\xbb\x46", [15649] = "\xbb\x4b", + [15652] = "\xbb\x4c", [15657] = "\xbb\x4d", [15661] = "\xbb\x4e", + [15663] = "\xbb\x4f", [15666] = "\xbb\x50", [15667] = "\xbb\x51", + [15670] = "\xbb\x52", [15672] = "\xbb\x53", [15674] = "\xbb\x57", + [15675] = "\xd6\xcb", [15676] = "\xd6\xc8", [15678] = "\xd6\xca", + [15680] = "\xcd\xf2", [15681] = "\xbb\x55", [15682] = "\xd6\xc9", + [15683] = "\xf4\x3c", [15685] = "\xbb\x54", [15689] = "\xbb\x56", + [15692] = "\xd6\xbf", [15695] = "\xbb\x58", [15696] = "\xbb\x59", + [15697] = "\xbb\x5a", [15698] = "\xbb\x5b", [15700] = "\xbb\x5c", + [15705] = "\xbf\xf3", [15706] = "\xbb\x5d", [15708] = "\xd6\xcc", + [15709] = "\xbb\x5e", [15711] = "\xba\xb7", [15712] = "\xbb\x5f", + [15715] = "\xd6\xcd", [15718] = "\xd6\xce", [15721] = "\xbb\x60", + [15722] = "\xbb\x61", [15726] = "\xbb\x62", [15727] = "\xbb\x63", + [15729] = "\xbb\x64", [15730] = "\xd6\xd1", [15731] = "\xbb\x65", + [15732] = "\xd6\xd0", [15735] = "\xd6\xcf", [15736] = "\xbb\x66", + [15738] = "\xbb\x67", [15739] = "\xc5\xe8", [15740] = "\xd6\xba", + [15744] = "\xd6\xd7", [15746] = "\xbb\x68", [15747] = "\xbb\x69", + [15748] = "\xbb\x6a", [15749] = "\xbb\x6b", [15753] = "\xbb\x6c", + [15755] = "\xbb\x6d", [15757] = "\xd6\xd3", [15759] = "\xbb\x6e", + [15760] = "\xbb\x6f", [15762] = "\xd6\xd2", [15767] = "\xbb\x70", + [15771] = "\xbb\x71", [15772] = "\xd6\xd4", [15774] = "\xd6\xd5", + [15776] = "\xbb\x72", [15778] = "\xe6\x74", [15780] = "\xbb\x73", + [15783] = "\xd6\xd8", [15784] = "\xbb\x74", [15785] = "\xbb\x75", + [15786] = "\xce\xe6", [15788] = "\xd6\xd9", [15789] = "\xd6\xd6", + [15795] = "\xbb\x76", [15799] = "\xbb\x77", [15801] = "\xd6\xda", + [15803] = "\xbb\x78", [15804] = "\xb4\xe0", [15805] = "\xd6\xdb", + [15806] = "\xbb\x7a", [15808] = "\xbb\x79", [15810] = "\xd6\xdd", + [15811] = "\xd6\xdc", [15814] = "\xd6\xde", [15816] = "\xbb\x7b", + [15817] = "\xbb\x7c", [15819] = "\xd6\xdf", [15821] = "\xc0\xee", + [15822] = "\xbd\xa3", [15824] = "\xbb\x7d", [15825] = "\xbd\xe4", + [15827] = "\xc1\xe3", [15828] = "\xbb\x7e", [15829] = "\xb9\xa9", + [15830] = "\xba\xb8", [15831] = "\xb9\xaa", [15832] = "\xb5\xf0", + [15833] = "\xbc\x21", [15835] = "\xd6\xe0", [15838] = "\xba\xb9", + [15841] = "\xb8\xca", [15842] = "\xd6\xe1", [15843] = "\xcc\xa6", + [15844] = "\xc7\xc3", [15845] = "\xd6\xe2", [15847] = "\xb9\xab", + [15848] = "\xbc\x22", [15849] = "\xbc\x23", [15851] = "\xb4\xac", + [15853] = "\xc3\xa7", [15854] = "\xb6\xd2", [15856] = "\xbc\x24", + [15858] = "\xbb\xd4", [15859] = "\xc9\xdb", [15862] = "\xc8\xc1", + [15863] = "\xbc\x25", [15867] = "\xd6\xe3", [15868] = "\xb4\xf5", + [15869] = "\xbc\x26", [15873] = "\xd6\xe6", [15874] = "\xbc\x27", + [15876] = "\xbc\x28", [15877] = "\xbc\x29", [15878] = "\xc4\xa1", + [15880] = "\xbc\x2a", [15881] = "\xd6\xe5", [15882] = "\xd6\xe4", + [15883] = "\xd6\xe7", [15885] = "\xc4\xeb", [15887] = "\xbc\x2b", + [15888] = "\xbc\x2c", [15893] = "\xbf\xe3", [15896] = "\xbc\x2e", + [15899] = "\xbb\xd5", [15901] = "\xc0\xca", [15902] = "\xbc\x2d", + [15903] = "\xc2\xd3", [15904] = "\xb5\xa2", [15906] = "\xbc\x2f", + [15907] = "\xc4\xa2", [15909] = "\xbc\x30", [15910] = "\xd6\xe8", + [15911] = "\xd6\xe9", [15912] = "\xbe\xef", [15917] = "\xcb\xb9", + [15918] = "\xbc\x31", [15920] = "\xd6\xec", [15923] = "\xd6\xeb", + [15924] = "\xd6\xea", [15925] = "\xc9\xfd", [15927] = "\xd6\xf3", + [15929] = "\xbc\x34", [15931] = "\xbc\x32", [15932] = "\xcb\xda", + [15934] = "\xd6\xed", [15936] = "\xbc\x33", [15937] = "\xbc\x35", + [15940] = "\xd6\xef", [15941] = "\xcb\xeb", [15942] = "\xbc\x36", + [15943] = "\xd6\xee", [15944] = "\xbc\x37", [15947] = "\xbc\x38", + [15948] = "\xbc\x39", [15950] = "\xbc\x3a", [15951] = "\xd6\xf0", + [15953] = "\xc8\xa8", [15954] = "\xd6\xf1", [15955] = "\xca\xbe", + [15956] = "\xd6\xf2", [15960] = "\xbc\x3b", [15962] = "\xbc\x3c", + [15963] = "\xbc\x3d", [15964] = "\xbc\x3e", [15965] = "\xbc\x3f", + [15966] = "\xbc\x40", [15968] = "\xbc\x41", [15970] = "\xb4\xb3", + [15971] = "\xca\xbf", [15972] = "\xc7\xaf", [15973] = "\xd6\xf4", + [15974] = "\xd6\xf5", [15976] = "\xb9\xac", [15977] = "\xb4\xb4", + [15978] = "\xd6\xf6", [15979] = "\xb8\xb8", [15980] = "\xcd\xc4", + [15981] = "\xcd\xa9", [15982] = "\xb4\xf6", [15983] = "\xd6\xf8", + [15984] = "\xbc\x42", [15985] = "\xc4\xa3", [15987] = "\xb9\xad", + [15988] = "\xbe\xb1", [15991] = "\xc8\xdf", [15994] = "\xbe\xb2", + [15995] = "\xbc\x43", [15998] = "\xbc\x44", [15999] = "\xbd\xf8", + [16005] = "\xc4\xec", [16006] = "\xca\xf9", [16007] = "\xc5\xb9", + [16010] = "\xb9\xae", [16012] = "\xc9\xdc", [16016] = "\xd6\xf9", + [16018] = "\xbc\x45", [16020] = "\xbc\x46", [16021] = "\xbc\x47", + [16022] = "\xc5\xd9", [16023] = "\xba\xc2", [16024] = "\xbc\x48", + [16026] = "\xbc\x49", [16027] = "\xb8\xcb", [16028] = "\xbc\x4a", + [16029] = "\xc4\xed", [16033] = "\xbc\x4b", [16035] = "\xbc\x4c", + [16037] = "\xb0\xc3", [16038] = "\xbd\xee", [16039] = "\xb9\xaf", + [16040] = "\xcd\xc7", [16045] = "\xbc\x4d", [16046] = "\xbc\x4e", + [16047] = "\xbc\x4f", [16049] = "\xd6\xfa", [16050] = "\xd6\xfb", + [16051] = "\xc7\xd1", [16054] = "\xbc\x50", [16056] = "\xd6\xfc", + [16057] = "\xce\xf7", [16058] = "\xcf\xad", [16059] = "\xbc\x52", + [16060] = "\xbc\x51", [16062] = "\xbc\x53", [16063] = "\xd6\xfe", + [16064] = "\xd6\xfd", [16065] = "\xbc\x54", [16066] = "\xbc\x55", + [16067] = "\xb3\xc7", [16068] = "\xbc\x56", [16069] = "\xbc\x57", + [16070] = "\xd7\xa1", [16074] = "\xd7\xa4", [16075] = "\xd7\xa5", + [16076] = "\xbc\x58", [16077] = "\xd7\xa3", [16078] = "\xbc\x59", + [16079] = "\xc9\xc0", [16080] = "\xbe\xb3", [16081] = "\xd7\xa7", + [16082] = "\xd7\xa6", [16083] = "\xd7\xa2", [16085] = "\xbc\x5a", + [16088] = "\xd7\xa8", [16089] = "\xd7\xa9", [16091] = "\xbc\x5b", + [16092] = "\xd7\xaa", [16096] = "\xd7\xad", [16097] = "\xd7\xab", + [16099] = "\xd7\xac", [16100] = "\xd7\xae", [16102] = "\xb1\xe4", + [16103] = "\xc4\xee", [16104] = "\xd7\xaf", [16106] = "\xb7\xfa", + [16107] = "\xb2\xf6", [16108] = "\xc7\xb6", [16110] = "\xd7\xb0", + [16111] = "\xc6\xfb", [16113] = "\xca\xdb", [16114] = "\xbc\x5c", + [16115] = "\xd7\xb1", [16116] = "\xcf\xae", [16118] = "\xbc\x5d", + [16119] = "\xbc\x5e", [16120] = "\xbc\x5f", [16121] = "\xd7\xb2", + [16122] = "\xca\xc0", [16123] = "\xd7\xb5", [16124] = "\xd0\xa1", + [16125] = "\xd0\xb1", [16126] = "\xbc\x60", [16127] = "\xbc\xb0", + [16128] = "\xc6\xf5", [16129] = "\xd7\xb6", [16131] = "\xb5\xdd", + [16132] = "\xc4\xa4", [16133] = "\xb0\xfa", [16134] = "\xd7\xb7", + [16135] = "\xca\xa6", [16136] = "\xb9\xb0", [16137] = "\xbc\x61", + [16139] = "\xc3\xd0", [16140] = "\xbc\x62", [16141] = "\xbc\x63", + [16143] = "\xc4\xef", [16145] = "\xbc\x64", [16146] = "\xbc\x65", + [16147] = "\xbc\x66", [16148] = "\xbc\x67", [16149] = "\xcc\xef", + [16150] = "\xb8\xb9", [16151] = "\xb8\xcc", [16152] = "\xbc\x68", + [16153] = "\xd7\xb8", [16155] = "\xbc\x69", [16156] = "\xbc\x6a", + [16157] = "\xd7\xb9", [16158] = "\xbc\x6b", [16159] = "\xd7\xbf", + [16160] = "\xbc\x6c", [16161] = "\xbc\xe5", [16164] = "\xbc\x6d", + [16165] = "\xc4\xa5", [16166] = "\xbc\x6e", [16167] = "\xb6\xaf", + [16168] = "\xd7\xba", [16171] = "\xbc\x6f", [16172] = "\xc9\xab", + [16173] = "\xbc\x70", [16174] = "\xc3\xc6", [16175] = "\xbc\x71", + [16176] = "\xbc\x72", [16177] = "\xd7\xbb", [16180] = "\xbc\x73", + [16181] = "\xbc\x74", [16183] = "\xbc\x75", [16184] = "\xd7\xbc", + [16186] = "\xb6\xb0", [16188] = "\xd7\xbd", [16189] = "\xbc\x76", + [16190] = "\xd7\xbe", [16192] = "\xbc\x77", [16193] = "\xd7\xc0", + [16195] = "\xc5\xf6", [16196] = "\xbc\x78", [16198] = "\xd7\xc1", + [16199] = "\xd7\xc2", [16200] = "\xbc\x79", [16201] = "\xd7\xc3", + [16203] = "\xbc\x7a", [16204] = "\xd7\xb4", [16205] = "\xd7\xb3", + [16208] = "\xbc\x7b", [16209] = "\xd7\xc4", [16210] = "\xb7\xc1", + [16211] = "\xbc\x7c", [16212] = "\xbc\x7d", [16214] = "\xc9\xa7", + [16215] = "\xbc\x7e", [16217] = "\xba\xcc", [16218] = "\xc9\xb7", + [16219] = "\xc4\xa6", [16220] = "\xc9\xcb", [16221] = "\xd7\xc5", + [16223] = "\xbd\x21", [16224] = "\xbe\xb4", [16225] = "\xb1\xc6", + [16226] = "\xbd\x22", [16227] = "\xd7\xc6", [16228] = "\xbd\x23", + [16229] = "\xbd\x24", [16231] = "\xd7\xc7", [16232] = "\xbd\x25", + [16233] = "\xcc\xf2", [16234] = "\xbd\x26", [16236] = "\xc8\xe0", + [16237] = "\xbd\x27", [16238] = "\xbd\x28", [16239] = "\xd7\xca", + [16240] = "\xb1\xfd", [16241] = "\xc0\xac", [16242] = "\xd7\xc9", + [16243] = "\xd7\xc8", [16244] = "\xb7\xc2", [16245] = "\xc2\xd4", + [16247] = "\xd7\xce", [16248] = "\xd7\xcc", [16249] = "\xbd\x29", + [16250] = "\xd7\xcb", [16251] = "\xce\xa7", [16252] = "\xb8\xe5", + [16253] = "\xbd\x2a", [16255] = "\xbd\x2b", [16256] = "\xbd\xf9", + [16257] = "\xd7\xcd", [16258] = "\xc5\xcc", [16259] = "\xbd\xbe", + [16262] = "\xbd\x2c", [16263] = "\xc6\xc0", [16264] = "\xd7\xd1", + [16265] = "\xd7\xd0", [16268] = "\xbd\x2d", [16269] = "\xbd\x2e", + [16270] = "\xd7\xcf", [16272] = "\xd7\xd2", [16273] = "\xb8\xe6", + [16274] = "\xbd\x2f", [16276] = "\xbd\x32", [16279] = "\xbd\x30", + [16280] = "\xd7\xd3", [16281] = "\xc9\xfc", [16282] = "\xbd\xdb", + [16283] = "\xbd\x31", [16284] = "\xbd\x33", [16285] = "\xd7\xd4", + [16286] = "\xc8\xf9", [16287] = "\xbd\x34", [16288] = "\xbd\x35", + [16289] = "\xbd\x36", [16291] = "\xc6\xc1", [16292] = "\xc4\xa7", + [16295] = "\xf4\x3e", [16296] = "\xbd\x37", [16297] = "\xc5\xb0", + [16300] = "\xd7\xd5", [16301] = "\xb5\xab", [16307] = "\xbf\xb4", + [16308] = "\xbd\x38", [16309] = "\xc9\xac", [16311] = "\xbd\x39", + [16312] = "\xbd\x3a", [16313] = "\xbd\x3b", [16315] = "\xbd\x3c", + [16316] = "\xb4\xf7", [16317] = "\xc7\xa6", [16320] = "\xbd\x3d", + [16321] = "\xbd\x3e", [16322] = "\xbd\x3f", [16323] = "\xbd\x40", + [16324] = "\xbd\x41", [16326] = "\xd7\xd6", [16327] = "\xbb\xd6", + [16328] = "\xcb\xba", [16329] = "\xcb\xbb", [16332] = "\xb1\xfe", + [16333] = "\xd7\xdb", [16334] = "\xbd\x42", [16336] = "\xc3\xe9", + [16337] = "\xbd\x43", [16338] = "\xbd\x44", [16340] = "\xd7\xd8", + [16344] = "\xbd\x45", [16345] = "\xbd\x46", [16346] = "\xbd\x47", + [16347] = "\xb2\xf7", [16348] = "\xbd\x48", [16349] = "\xbd\x49", + [16350] = "\xbd\x4a", [16351] = "\xbd\x4b", [16352] = "\xd8\xad", + [16353] = "\xd7\xda", [16354] = "\xbd\x4c", [16355] = "\xbd\x4d", + [16357] = "\xc7\xb0", [16358] = "\xbd\x4e", [16360] = "\xd7\xd9", + [16362] = "\xbd\x4f", [16363] = "\xd7\xd7", [16364] = "\xbd\x50", + [16365] = "\xb9\xfa", [16367] = "\xd7\xdd", [16375] = "\xbd\x51", + [16378] = "\xbd\x52", [16381] = "\xbd\x53", [16382] = "\xd7\xe3", + [16383] = "\xd7\xe9", [16384] = "\xd7\xe1", [16386] = "\xc5\xdc", + [16387] = "\xbd\x54", [16388] = "\xbd\x55", [16389] = "\xd7\xe6", + [16390] = "\xc9\xdd", [16391] = "\xbd\x56", [16392] = "\xbd\x57", + [16393] = "\xd7\xe0", [16394] = "\xbd\x58", [16395] = "\xd7\xe5", + [16396] = "\xce\xe7", [16397] = "\xbb\xd7", [16399] = "\xbd\x59", + [16400] = "\xc2\xd5", [16401] = "\xd7\xde", [16404] = "\xbd\x5a", + [16405] = "\xb5\xde", [16406] = "\xd7\xe8", [16407] = "\xc0\xad", + [16408] = "\xb1\xe5", [16409] = "\xd7\xe2", [16410] = "\xb2\xf8", + [16411] = "\xd7\xe7", [16413] = "\xbd\x5b", [16415] = "\xb6\xb1", + [16417] = "\xd7\xe4", [16419] = "\xbd\x5c", [16421] = "\xbd\x5d", + [16426] = "\xd7\xea", [16432] = "\xbd\x5e", [16433] = "\xd7\xec", + [16434] = "\xd7\xf6", [16435] = "\xd7\xf4", [16438] = "\xd7\xf1", + [16439] = "\xbd\x5f", [16440] = "\xbd\x60", [16441] = "\xbd\x61", + [16442] = "\xd7\xf0", [16443] = "\xce\xf8", [16444] = "\xbd\x62", + [16445] = "\xd7\xf2", [16448] = "\xb6\xb2", [16449] = "\xbd\x63", + [16450] = "\xb9\xb1", [16452] = "\xbd\x64", [16453] = "\xbd\xfa", + [16454] = "\xbd\x65", [16455] = "\xbd\x66", [16457] = "\xd7\xf9", + [16458] = "\xd7\xeb", [16461] = "\xbd\x67", [16463] = "\xd7\xef", + [16464] = "\xd7\xdf", [16465] = "\xbd\x68", [16466] = "\xb2\xfa", + [16467] = "\xd7\xf3", [16468] = "\xd7\xf5", [16469] = "\xc3\xd1", + [16471] = "\xbd\x69", [16472] = "\xba\xa8", [16473] = "\xb2\xb8", + [16474] = "\xd7\xed", [16475] = "\xd7\xf8", [16476] = "\xd7\xf7", + [16477] = "\xb6\xb3", [16479] = "\xc2\xa9", [16480] = "\xb3\xe6", + [16481] = "\xbd\x6a", [16485] = "\xb7\xc3", [16487] = "\xd7\xee", + [16494] = "\xbd\x6b", [16495] = "\xbd\x6c", [16497] = "\xd7\xfa", + [16498] = "\xbd\x6d", [16499] = "\xd7\xfd", [16500] = "\xd8\xa1", + [16501] = "\xf4\x3f", [16502] = "\xbd\x6e", [16504] = "\xbd\x6f", + [16505] = "\xbc\xbd", [16506] = "\xbd\x70", [16507] = "\xd8\xa7", + [16508] = "\xc4\xf0", [16509] = "\xd7\xfb", [16510] = "\xbd\x71", + [16513] = "\xbd\x72", [16514] = "\xd8\xa5", [16515] = "\xbd\x73", + [16516] = "\xb2\xf9", [16517] = "\xbd\x74", [16518] = "\xd8\xa3", + [16519] = "\xd8\xa4", [16520] = "\xbd\x75", [16522] = "\xd7\xfe", + [16523] = "\xd8\xa2", [16525] = "\xbd\x76", [16526] = "\xbd\x77", + [16527] = "\xb8\xe7", [16528] = "\xcd\xaa", [16530] = "\xbd\x78", + [16531] = "\xb4\xb5", [16532] = "\xbd\x79", [16533] = "\xbd\x7a", + [16534] = "\xb1\xd9", [16535] = "\xd8\xa6", [16536] = "\xbd\x7b", + [16537] = "\xc7\xba", [16538] = "\xb0\xad", [16544] = "\xbd\x7c", + [16545] = "\xbd\x7d", [16546] = "\xc8\xe1", [16547] = "\xd7\xdc", + [16548] = "\xd8\xac", [16549] = "\xd8\xb0", [16550] = "\xcc\xe5", + [16551] = "\xbd\x7e", [16552] = "\xd8\xa9", [16555] = "\xbe\x21", + [16556] = "\xc5\xe9", [16557] = "\xd8\xae", [16558] = "\xbe\x22", + [16562] = "\xbe\x23", [16564] = "\xbe\x24", [16565] = "\xbe\xf0", + [16566] = "\xd8\xaf", [16567] = "\xc6\xd7", [16568] = "\xbe\x25", + [16569] = "\xbe\x26", [16570] = "\xbe\x27", [16571] = "\xbe\x28", + [16574] = "\xbe\x29", [16575] = "\xbe\x2a", [16577] = "\xcf\xc7", + [16579] = "\xd8\xab", [16580] = "\xbe\x2b", [16581] = "\xbe\x2c", + [16584] = "\xd8\xb1", [16585] = "\xbe\x2d", [16586] = "\xb9\xfb", + [16587] = "\xbe\x2e", [16588] = "\xc0\xcb", [16589] = "\xbe\x2f", + [16590] = "\xbe\x30", [16591] = "\xb0\xd4", [16592] = "\xd8\xaa", + [16593] = "\xd8\xa8", [16594] = "\xbe\x31", [16595] = "\xc1\xda", + [16597] = "\xbe\x32", [16599] = "\xd7\xfc", [16600] = "\xbb\xb4", + [16608] = "\xc2\xc6", [16609] = "\xd8\xbd", [16610] = "\xbe\x33", + [16611] = "\xc1\xdb", [16612] = "\xd8\xb8", [16613] = "\xbe\x34", + [16614] = "\xd8\xb5", [16615] = "\xd8\xb6", [16616] = "\xbe\x35", + [16617] = "\xbc\xe6", [16618] = "\xd8\xb9", [16619] = "\xd8\xbc", + [16620] = "\xbe\x36", [16621] = "\xbe\x37", [16624] = "\xd8\xb7", + [16625] = "\xbd\xa5", [16626] = "\xbe\x38", [16627] = "\xd8\xba", + [16630] = "\xd8\xb4", [16631] = "\xbe\x39", [16632] = "\xcc\xfc", + [16633] = "\xcc\xfb", [16634] = "\xbe\x3a", [16636] = "\xbe\x3b", + [16637] = "\xd8\xbe", [16638] = "\xd8\xbf", [16639] = "\xb0\xd5", + [16640] = "\xbe\x3c", [16641] = "\xbe\x3d", [16642] = "\xbe\x3e", + [16643] = "\xbe\x3f", [16644] = "\xbe\x40", [16645] = "\xd8\xb3", + [16646] = "\xbe\x41", [16647] = "\xbe\x42", [16649] = "\xbe\x43", + [16650] = "\xb6\xf2", [16651] = "\xb0\xa6", [16652] = "\xbe\x44", + [16654] = "\xbe\x45", [16655] = "\xb4\xb6", [16656] = "\xf4\x40", + [16657] = "\xd8\xbb", [16658] = "\xbe\x46", [16663] = "\xd8\xc3", + [16664] = "\xd8\xc2", [16666] = "\xbe\x47", [16667] = "\xbe\x48", + [16668] = "\xd8\xc7", [16672] = "\xbe\x49", [16673] = "\xbe\x4a", + [16676] = "\xd8\xc8", [16677] = "\xbe\x4b", [16678] = "\xbe\x4c", + [16679] = "\xbe\x4d", [16681] = "\xbe\x4e", [16684] = "\xd8\xc6", + [16685] = "\xd8\xc9", [16686] = "\xd8\xc1", [16687] = "\xd8\xc5", + [16689] = "\xbe\x4f", [16690] = "\xd8\xca", [16692] = "\xd8\xcb", + [16693] = "\xbe\x50", [16694] = "\xbe\x51", [16695] = "\xd8\xc0", + [16696] = "\xbb\xfc", [16697] = "\xbe\x52", [16698] = "\xd8\xc4", + [16699] = "\xc2\xd6", [16700] = "\xb9\xb2", [16701] = "\xd8\xb2", + [16702] = "\xbf\xb5", [16707] = "\xd8\xd8", [16709] = "\xca\xe9", + [16712] = "\xd8\xce", [16713] = "\xd8\xcf", [16714] = "\xd8\xd0", + [16717] = "\xd8\xd7", [16718] = "\xbe\x53", [16719] = "\xd8\xd6", + [16720] = "\xbe\x54", [16722] = "\xcb\xfd", [16723] = "\xb4\xb7", + [16725] = "\xd8\xd4", [16727] = "\xb7\xc5", [16728] = "\xb3\xb4", + [16731] = "\xd8\xd1", [16732] = "\xbe\x55", [16734] = "\xce\xb8", + [16735] = "\xd8\xd3", [16736] = "\xb0\xd6", [16737] = "\xd8\xd5", + [16738] = "\xbe\x56", [16739] = "\xd8\xcc", [16740] = "\xd8\xd2", + [16741] = "\xd8\xd9", [16742] = "\xb7\xc4", [16743] = "\xd8\xcd", + [16744] = "\xbe\x57", [16747] = "\xbe\x58", [16748] = "\xbe\x59", + [16750] = "\xcd\xdd", [16751] = "\xbe\x5a", [16752] = "\xbe\x5b", + [16753] = "\xbe\x5c", [16754] = "\xcd\xab", [16755] = "\xbe\x5d", + [16756] = "\xbe\x5e", [16759] = "\xd8\xdc", [16762] = "\xd8\xe0", + [16763] = "\xbe\x5f", [16765] = "\xbe\x60", [16766] = "\xc1\xfe", + [16768] = "\xce\xf9", [16769] = "\xd8\xe1", [16770] = "\xbe\x61", + [16771] = "\xbe\x62", [16772] = "\xd8\xde", [16774] = "\xd8\xdb", + [16775] = "\xbe\x63", [16776] = "\xbe\x64", [16777] = "\xd8\xda", + [16778] = "\xd8\xdf", [16780] = "\xbe\x65", [16781] = "\xbe\x66", + [16783] = "\xbe\x67", [16784] = "\xbe\x68", [16788] = "\xca\xb0", + [16789] = "\xbe\x69", [16791] = "\xc6\xb4", [16792] = "\xbe\x6a", + [16793] = "\xb7\xc6", [16794] = "\xbe\x6b", [16795] = "\xd8\xe2", + [16796] = "\xd8\xdd", [16797] = "\xbe\x6c", [16798] = "\xd8\xe3", + [16802] = "\xb7\xfb", [16806] = "\xb2\xb1", [16808] = "\xbe\x6d", + [16809] = "\xbe\x6e", [16810] = "\xd8\xeb", [16812] = "\xbe\x6f", + [16814] = "\xb4\xb8", [16816] = "\xbe\x70", [16817] = "\xbe\x71", + [16818] = "\xbe\x72", [16819] = "\xd8\xe9", [16822] = "\xd8\xea", + [16823] = "\xba\xa9", [16824] = "\xd8\xe8", [16825] = "\xd8\xe6", + [16826] = "\xd8\xe5", [16827] = "\xd8\xec", [16828] = "\xd8\xe4", + [16829] = "\xd8\xee", [16830] = "\xbe\x73", [16831] = "\xbe\x74", + [16832] = "\xb2\xfb", [16837] = "\xbe\x75", [16844] = "\xbe\x76", + [16845] = "\xbe\x77", [16846] = "\xbe\x78", [16847] = "\xbe\x79", + [16849] = "\xbe\x7a", [16850] = "\xbe\x7b", [16851] = "\xd8\xf0", + [16853] = "\xbe\x7e", [16854] = "\xd8\xef", [16855] = "\xbe\x7c", + [16857] = "\xbe\x7d", [16860] = "\xbf\x21", [16861] = "\xbf\x22", + [16863] = "\xbf\x23", [16866] = "\xc4\xa8", [16868] = "\xd8\xf3", + [16870] = "\xd8\xf1", [16871] = "\xd8\xe7", [16872] = "\xb7\xfc", + [16874] = "\xd8\xf2", [16876] = "\xd8\xf6", [16877] = "\xd8\xf5", + [16878] = "\xd8\xf7", [16879] = "\xd8\xf4", [16880] = "\xd8\xf8", + [16881] = "\xbf\x24", [16883] = "\xbf\x25", [16884] = "\xbf\x26", + [16887] = "\xbf\x27", [16888] = "\xd8\xf9", [16889] = "\xd8\xfa", + [16890] = "\xca\xea", [16892] = "\xd8\xfc", [16893] = "\xd8\xfb", + [16894] = "\xbd\xbf", [16896] = "\xc0\xae", [16897] = "\xb2\xe6", + [16898] = "\xb2\xfc", [16899] = "\xbf\x28", [16900] = "\xd8\xfd", + [16901] = "\xbf\x29", [16902] = "\xb0\xbf", [16906] = "\xc0\xcc", + [16907] = "\xd8\xfe", [16908] = "\xbf\x2a", [16909] = "\xec\xc3", + [16910] = "\xd9\xa1", [16911] = "\xb7\xe1", [16912] = "\xbf\x2b", + [16913] = "\xd9\xa2", [16914] = "\xbf\x2c", [16915] = "\xbf\x2d", + [16918] = "\xc0\xef", [16919] = "\xbf\x2e", [16921] = "\xbf\x2f", + [16922] = "\xd9\xa3", [16923] = "\xbf\x30", [16926] = "\xd9\xa4", + [16927] = "\xb5\xba", [16928] = "\xd9\xa5", [16930] = "\xd9\xa6", + [16931] = "\xd9\xa7", [16932] = "\xc2\xd7", [16936] = "\xb8\xcd", + [16937] = "\xbf\x31", [16939] = "\xcc\xe1", [16941] = "\xbf\x32", + [16943] = "\xcb\xbc", [16944] = "\xbd\xea", [16945] = "\xd9\xa8", + [16946] = "\xbf\x33", [16947] = "\xbf\x34", [16948] = "\xbf\x35", + [16950] = "\xbf\x36", [16951] = "\xc0\xf0", [16952] = "\xee\xbd", + [16953] = "\xc8\xe2", [16955] = "\xbc\xea", [16956] = "\xbf\x37", + [16957] = "\xba\xcd", [16958] = "\xd9\xa9", [16960] = "\xbf\x38", + [16961] = "\xbf\x39", [16962] = "\xbf\x3a", [16963] = "\xc2\xc7", + [16964] = "\xbf\x3b", [16965] = "\xca\xa7", [16966] = "\xbf\x3c", + [16968] = "\xc2\xf1", [16970] = "\xbf\x3d", [16971] = "\xd9\xac", + [16972] = "\xbf\x3e", [16974] = "\xd9\xaa", [16976] = "\xd9\xad", + [16979] = "\xd9\xab", [16980] = "\xbf\x3f", [16984] = "\xd9\xae", + [16989] = "\xbf\x40", [16990] = "\xca\xb1", [16991] = "\xbf\x41", + [16993] = "\xb0\xb7", [16995] = "\xbf\x42", [16998] = "\xc9\xde", + [17001] = "\xc8\xe3", [17002] = "\xbf\x43", [17004] = "\xd9\xaf", + [17005] = "\xbf\x44", [17006] = "\xd9\xb2", [17007] = "\xbe\xb5", + [17008] = "\xb5\xbb", [17010] = "\xd9\xb0", [17011] = "\xd9\xb7", + [17012] = "\xbe\xb6", [17017] = "\xd9\xb1", [17018] = "\xc7\xc4", + [17021] = "\xbf\x45", [17022] = "\xbf\x46", [17023] = "\xbf\x47", + [17024] = "\xbf\x48", [17025] = "\xcd\xde", [17026] = "\xd9\xb3", + [17027] = "\xd9\xb4", [17028] = "\xd9\xb8", [17029] = "\xc5\xea", + [17030] = "\xd9\xb5", [17031] = "\xb9\xb3", [17032] = "\xc0\xde", + [17035] = "\xd9\xc6", [17036] = "\xc8\xb4", [17038] = "\xc2\xf2", + [17046] = "\xbf\x49", [17048] = "\xbf\x4a", [17051] = "\xc8\xe4", + [17052] = "\xda\xad", [17057] = "\xca\xfa", [17059] = "\xbf\x4b", + [17061] = "\xc4\xf1", [17062] = "\xbf\x4c", [17063] = "\xbf\x4d", + [17065] = "\xcb\xf5", [17066] = "\xbf\x4e", [17067] = "\xd9\xbb", + [17068] = "\xb2\xa1", [17069] = "\xc3\xea", [17070] = "\xbf\x4f", + [17071] = "\xbf\x50", [17074] = "\xd9\xc4", [17076] = "\xbf\x51", + [17077] = "\xc3\xb4", [17078] = "\xd9\xbe", [17079] = "\xd9\xc5", + [17080] = "\xd9\xc0", [17081] = "\xd9\xc7", [17082] = "\xd9\xc3", + [17084] = "\xd9\xc2", [17085] = "\xc7\xef", [17086] = "\xbf\x52", + [17087] = "\xd9\xbc", [17088] = "\xb2\xfd", [17089] = "\xd9\xba", + [17090] = "\xb5\xf1", [17091] = "\xc2\xf3", [17092] = "\xd9\xb6", + [17093] = "\xbf\x53", [17094] = "\xbf\x54", [17095] = "\xd9\xb9", + [17096] = "\xb9\xb4", [17097] = "\xc0\xdb", [17098] = "\xbf\x55", + [17099] = "\xbe\xb7", [17100] = "\xd9\xc1", [17101] = "\xc7\xd2", + [17104] = "\xb5\xf2", [17105] = "\xb3\xc8", [17114] = "\xbf\x56", + [17116] = "\xb3\xe7", [17117] = "\xbf\xa1", [17118] = "\xd9\xc9", + [17119] = "\xd9\xce", [17121] = "\xd9\xca", [17122] = "\xbf\x57", + [17123] = "\xb7\xfd", [17124] = "\xbf\x58", [17125] = "\xd9\xcf", + [17126] = "\xbb\xa2", [17127] = "\xb9\xe9", [17132] = "\xbf\x59", + [17133] = "\xbf\x5a", [17134] = "\xbd\xa6", [17135] = "\xd9\xbd", + [17137] = "\xbb\xfd", [17138] = "\xd9\xcc", [17139] = "\xbf\x5b", + [17140] = "\xbf\x5c", [17143] = "\xbb\xd8", [17144] = "\xd9\xcd", + [17145] = "\xb0\xc4", [17146] = "\xbf\x5d", [17147] = "\xbf\x5e", + [17148] = "\xd9\xc8", [17149] = "\xbf\x5f", [17152] = "\xbf\x60", + [17153] = "\xc4\xa9", [17155] = "\xbf\x61", [17158] = "\xbf\x62", + [17160] = "\xbf\x63", [17161] = "\xb5\xf3", [17167] = "\xb6\xb4", + [17175] = "\xd9\xcb", [17176] = "\xb0\xa7", [17177] = "\xbf\x64", + [17178] = "\xbf\x65", [17179] = "\xba\xc3", [17181] = "\xbf\x66", + [17183] = "\xbf\xb6", [17189] = "\xbf\x67", [17190] = "\xbf\x68", + [17193] = "\xbf\x69", [17194] = "\xc4\xf2", [17196] = "\xbf\x6a", + [17197] = "\xc8\xd4", [17198] = "\xd9\xd1", [17199] = "\xc1\xde", + [17201] = "\xbf\x6b", [17202] = "\xbf\x6c", [17203] = "\xbf\x6d", + [17204] = "\xbf\x6e", [17206] = "\xbf\x6f", [17209] = "\xc2\xaa", + [17210] = "\xbf\x70", [17211] = "\xbf\x71", [17212] = "\xbb\xab", + [17213] = "\xd9\xd2", [17214] = "\xbf\x72", [17215] = "\xd9\xd4", + [17216] = "\xd9\xd0", [17218] = "\xbf\x73", [17219] = "\xbf\x74", + [17220] = "\xbf\x75", [17221] = "\xca\xe1", [17223] = "\xc4\xbd", + [17224] = "\xbf\x76", [17227] = "\xbf\x77", [17228] = "\xc1\xdc", + [17237] = "\xbf\x78", [17238] = "\xbf\x79", [17239] = "\xca\xfb", + [17240] = "\xbc\xce", [17241] = "\xd9\xe0", [17243] = "\xd9\xdf", + [17244] = "\xbf\x7a", [17245] = "\xbf\x7b", [17246] = "\xbf\xf8", + [17249] = "\xbf\x7c", [17250] = "\xb7\xfe", [17252] = "\xbf\x7d", + [17253] = "\xbf\x7e", [17254] = "\xd9\xd9", [17255] = "\xbe\xb9", + [17256] = "\xc0\x21", [17258] = "\xc6\xe8", [17259] = "\xc7\xb1", + [17260] = "\xc0\x22", [17261] = "\xc0\x23", [17263] = "\xc0\x24", + [17264] = "\xd9\xd7", [17266] = "\xc0\x25", [17267] = "\xc1\xdd", + [17268] = "\xc0\x26", [17271] = "\xc0\x27", [17272] = "\xbc\xf8", + [17273] = "\xd9\xdc", [17274] = "\xc0\x28", [17276] = "\xbe\xb8", + [17278] = "\xd9\xd6", [17279] = "\xd9\xdb", [17280] = "\xc0\x29", + [17282] = "\xc7\xd3", [17284] = "\xc0\x2a", [17285] = "\xc0\x2b", + [17286] = "\xd9\xd5", [17288] = "\xb7\xa1", [17289] = "\xc0\x2c", + [17290] = "\xc0\x2d", [17291] = "\xb3\xdd", [17294] = "\xc0\x2e", + [17295] = "\xd9\xdd", [17296] = "\xce\xab", [17297] = "\xba\xce", + [17298] = "\xc3\xb5", [17299] = "\xd9\xda", [17300] = "\xc0\x2f", + [17301] = "\xc0\xdc", [17302] = "\xc0\x30", [17303] = "\xb9\xb5", + [17304] = "\xbf\xe4", [17305] = "\xb1\xe6", [17306] = "\xc1\xbc", + [17307] = "\xd9\xd8", [17308] = "\xb5\xc5", [17309] = "\xc0\x31", + [17310] = "\xc0\x32", [17311] = "\xc0\x33", [17314] = "\xb7\xc7", + [17316] = "\xc4\xcf", [17317] = "\xd9\xde", [17323] = "\xc1\xdf", + [17325] = "\xc0\x34", [17326] = "\xd9\xe1", [17328] = "\xd9\xe3", + [17329] = "\xc0\x35", [17331] = "\xc2\xb7", [17332] = "\xd9\xe9", + [17333] = "\xc0\x36", [17334] = "\xd9\xe4", [17336] = "\xc0\x37", + [17337] = "\xd9\xe6", [17342] = "\xc0\x38", [17343] = "\xc9\xc1", + [17344] = "\xc4\xf3", [17345] = "\xc0\x39", [17346] = "\xd9\xe7", + [17347] = "\xc0\x3a", [17348] = "\xc0\x3b", [17349] = "\xc0\x3c", + [17350] = "\xcd\xac", [17354] = "\xcd\xc8", [17355] = "\xb4\xb9", + [17356] = "\xc0\x3d", [17360] = "\xc0\x3e", [17361] = "\xb0\xae", + [17363] = "\xd9\xe5", [17365] = "\xc0\x3f", [17369] = "\xd9\xe2", + [17370] = "\xc0\x40", [17372] = "\xc0\x41", [17374] = "\xb4\xf8", + [17378] = "\xc0\x42", [17379] = "\xc0\x43", [17380] = "\xb1\xe7", + [17381] = "\xc0\x44", [17382] = "\xd9\xe8", [17384] = "\xc0\x45", + [17385] = "\xc0\x46", [17386] = "\xcd\xc9", [17398] = "\xd9\xec", + [17401] = "\xc0\x47", [17402] = "\xc0\x48", [17405] = "\xc2\xbb", + [17407] = "\xd9\xf3", [17408] = "\xc0\x49", [17410] = "\xc0\x4a", + [17411] = "\xd9\xed", [17412] = "\xc0\x4b", [17414] = "\xd9\xea", + [17415] = "\xd9\xf1", [17416] = "\xc0\x4c", [17420] = "\xd9\xd3", + [17422] = "\xc0\x4d", [17424] = "\xc0\x4e", [17426] = "\xc0\x4f", + [17428] = "\xc0\x50", [17429] = "\xc0\x51", [17430] = "\xd9\xee", + [17432] = "\xd9\xf2", [17433] = "\xc0\x52", [17434] = "\xc0\x53", + [17436] = "\xc8\xc2", [17437] = "\xc5\xeb", [17439] = "\xc0\x54", + [17440] = "\xc0\x55", [17444] = "\xd9\xeb", [17445] = "\xc0\x56", + [17446] = "\xd9\xef", [17450] = "\xb7\xc8", [17453] = "\xc0\x57", + [17454] = "\xba\xf1", [17455] = "\xc0\x58", [17458] = "\xc0\xdd", + [17467] = "\xc0\x59", [17470] = "\xd9\xf7", [17471] = "\xc0\x5a", + [17473] = "\xc0\x5b", [17474] = "\xc0\x5c", [17475] = "\xc0\x5d", + [17476] = "\xc0\x5e", [17480] = "\xc5\xa6", [17482] = "\xc0\x5f", + [17483] = "\xc0\x60", [17484] = "\xc0\x61", [17485] = "\xc0\x62", + [17487] = "\xc0\x63", [17488] = "\xc0\x64", [17489] = "\xc0\x65", + [17491] = "\xc0\x66", [17495] = "\xd9\xf4", [17497] = "\xcb\xe0", + [17501] = "\xc0\x67", [17503] = "\xd9\xf5", [17507] = "\xc0\x68", + [17508] = "\xc0\x69", [17510] = "\xd9\xf6", [17512] = "\xcc\xce", + [17514] = "\xc0\xa2", [17515] = "\xc0\x6a", [17517] = "\xc0\x6b", + [17523] = "\xb7\xe2", [17525] = "\xc0\x6c", [17527] = "\xc0\x6d", + [17528] = "\xd9\xfd", [17535] = "\xc0\x6e", [17536] = "\xc0\x6f", + [17537] = "\xc0\x70", [17538] = "\xbb\xb5", [17539] = "\xd9\xfa", + [17541] = "\xd9\xf9", [17544] = "\xc0\x71", [17545] = "\xc0\x72", + [17546] = "\xc7\xb2", [17547] = "\xc0\x73", [17549] = "\xc0\x74", + [17550] = "\xc6\xb5", [17551] = "\xc0\x75", [17553] = "\xc0\x76", + [17555] = "\xc0\x77", [17556] = "\xc5\xb1", [17557] = "\xd9\xfb", + [17558] = "\xc0\x78", [17560] = "\xc0\x79", [17561] = "\xd9\xfc", + [17563] = "\xc9\xef", [17564] = "\xc0\x7a", [17565] = "\xc7\xc5", + [17566] = "\xbb\xa3", [17568] = "\xc0\xf1", [17570] = "\xcb\xd0", + [17571] = "\xc0\x7b", [17577] = "\xb3\xc9", [17579] = "\xda\xa5", + [17580] = "\xd9\xfe", [17581] = "\xc0\x7c", [17582] = "\xc0\x7d", + [17583] = "\xc0\x7e", [17585] = "\xcd\xca", [17586] = "\xda\xa7", + [17588] = "\xc1\x21", [17589] = "\xda\xa3", [17591] = "\xda\xa4", + [17593] = "\xc1\x22", [17594] = "\xc1\x23", [17595] = "\xc1\x24", + [17596] = "\xc1\x25", [17597] = "\xc1\xe0", [17598] = "\xc1\x26", + [17600] = "\xc1\x27", [17601] = "\xc1\x28", [17602] = "\xda\xa2", + [17604] = "\xd9\xbf", [17605] = "\xc1\x29", [17607] = "\xc1\x2a", + [17608] = "\xda\xa6", [17610] = "\xda\xa1", [17616] = "\xda\xab", + [17617] = "\xda\xac", [17618] = "\xc5\xa7", [17619] = "\xda\xae", + [17620] = "\xc1\x2b", [17621] = "\xc1\x2c", [17622] = "\xbb\xa4", + [17623] = "\xda\xa9", [17625] = "\xc1\x2d", [17626] = "\xc1\x2e", + [17628] = "\xb5\xbc", [17629] = "\xc1\x2f", [17631] = "\xda\xaf", + [17632] = "\xc1\x30", [17633] = "\xda\xa8", [17634] = "\xda\xb3", + [17636] = "\xda\xb2", [17637] = "\xc1\x31", [17638] = "\xda\xb1", + [17639] = "\xc1\x32", [17642] = "\xda\xb4", [17643] = "\xc1\x33", + [17645] = "\xda\xb6", [17646] = "\xbe\xf1", [17647] = "\xc1\x34", + [17648] = "\xda\xb5", [17649] = "\xc1\x35", [17652] = "\xc1\x36", + [17653] = "\xda\xb9", [17656] = "\xc1\x37", [17657] = "\xc1\x38", + [17658] = "\xc1\x39", [17663] = "\xc1\x3a", [17667] = "\xc1\x3b", + [17668] = "\xc1\x3c", [17670] = "\xc1\x3d", [17672] = "\xda\xb7", + [17673] = "\xc1\x3e", [17675] = "\xc1\x3f", [17676] = "\xda\xb8", + [17677] = "\xd9\xf0", [17678] = "\xc1\x40", [17679] = "\xc1\x41", + [17682] = "\xc1\x42", [17683] = "\xda\xbb", [17684] = "\xda\xba", + [17686] = "\xc1\x43", [17689] = "\xc1\x44", [17690] = "\xd9\xf8", + [17691] = "\xda\xbc", [17692] = "\xda\xb0", [17694] = "\xc1\x45", + [17695] = "\xbb\xd9", [17697] = "\xc1\x46", [17700] = "\xda\xbd", + [17701] = "\xda\xbe", [17702] = "\xda\xc0", [17703] = "\xda\xbf", + [17704] = "\xda\xc1", [17705] = "\xb2\xfe", [17706] = "\xc1\x47", + [17707] = "\xb9\xb6", [17708] = "\xc1\x48", [17709] = "\xc1\x49", + [17710] = "\xca\xfc", [17711] = "\xc0\xaf", [17715] = "\xc1\x4a", + [17717] = "\xb8\xce", [17719] = "\xc1\x4b", [17720] = "\xda\xc3", + [17721] = "\xc1\x4c", [17725] = "\xda\xc6", [17726] = "\xf4\x41", + [17727] = "\xc9\xd2", [17728] = "\xc1\x4d", [17729] = "\xb5\xdf", + [17730] = "\xc1\x4e", [17732] = "\xc1\x4f", [17733] = "\xda\xc5", + [17734] = "\xda\xc4", [17735] = "\xc7\xd4", [17736] = "\xda\xc7", + [17737] = "\xb6\xb5", [17741] = "\xda\xc9", [17742] = "\xda\xc8", + [17743] = "\xc1\x50", [17744] = "\xc1\x51", [17746] = "\xb4\xba", + [17747] = "\xbb\xb6", [17750] = "\xc6\xd8", [17751] = "\xc1\x52", + [17755] = "\xc1\x53", [17756] = "\xb7\xc9", [17760] = "\xbf\xf4", + [17762] = "\xda\xca", [17764] = "\xc0\xb0", [17765] = "\xc5\xa8", + [17767] = "\xc9\xdf", [17768] = "\xda\xcb", [17770] = "\xc1\x54", + [17773] = "\xc1\x55", [17777] = "\xc1\x56", [17778] = "\xda\xcc", + [17779] = "\xda\xcd", [17781] = "\xc1\x57", [17783] = "\xca\xb8", + [17784] = "\xd5\xdd", [17785] = "\xc0\xc6", [17786] = "\xc1\x58", + [17788] = "\xc9\xcc", [17790] = "\xba\xd8", [17792] = "\xc8\xe5", + [17793] = "\xc8\xc3", [17794] = "\xc1\x59", [17797] = "\xc1\x5a", + [17799] = "\xc5\xcd", [17800] = "\xc1\x5b", [17801] = "\xce\xc1", + [17803] = "\xda\xcf", [17804] = "\xbc\xd0", [17805] = "\xc1\x5c", + [17807] = "\xda\xd0", [17808] = "\xc1\x5d", [17809] = "\xb0\xb6", + [17811] = "\xc1\x5e", [17812] = "\xb6\xd4", [17813] = "\xc0\xcd", + [17814] = "\xc1\x5f", [17815] = "\xc9\xe0", [17819] = "\xda\xd1", + [17820] = "\xbb\xc2", [17821] = "\xc3\xc7", [17822] = "\xc1\x60", + [17823] = "\xbb\xdb", [17824] = "\xbf\xb7", [17826] = "\xc1\x61", + [17827] = "\xc1\x62", [17828] = "\xc1\x63", [17831] = "\xda\xd2", + [17833] = "\xca\xfd", [17836] = "\xb1\xf7", [17837] = "\xbb\xdc", + [17839] = "\xc1\x64", [17841] = "\xda\xd5", [17842] = "\xc1\x65", + [17843] = "\xda\xd3", [17844] = "\xda\xd6", [17845] = "\xce\xb9", + [17846] = "\xda\xd4", [17848] = "\xc1\x66", [17849] = "\xc1\x67", + [17851] = "\xc0\xfb", [17852] = "\xda\xd7", [17854] = "\xc1\x68", + [17855] = "\xc2\xb2", [17856] = "\xc1\x69", [17858] = "\xda\xd8", + [17860] = "\xc1\x6a", [17862] = "\xc1\x6b", [17863] = "\xb4\xfa", + [17864] = "\xc1\x6c", [17865] = "\xda\xda", [17867] = "\xda\xd9", + [17871] = "\xc1\x6d", [17872] = "\xda\xdb", [17873] = "\xda\xdc", + [17874] = "\xb4\xfb", [17877] = "\xc6\xfc", [17878] = "\xc3\xb6", + [17879] = "\xb5\xec", [17880] = "\xbb\xdd", [17881] = "\xc1\xe1", + [17884] = "\xbd\xdc", [17885] = "\xb0\xb0", [17888] = "\xc1\x6e", + [17889] = "\xda\xdd", [17890] = "\xc1\x6f", [17892] = "\xc1\x70", + [17893] = "\xc1\x71", [17897] = "\xc1\x72", [17898] = "\xb2\xa2", + [17899] = "\xda\xe1", [17902] = "\xc1\x73", [17903] = "\xc1\x74", + [17904] = "\xc1\x75", [17906] = "\xb9\xb7", [17907] = "\xda\xe0", + [17908] = "\xc1\x76", [17910] = "\xba\xab", [17911] = "\xbe\xba", + [17912] = "\xc1\x77", [17913] = "\xc1\x78", [17914] = "\xda\xdf", + [17916] = "\xbe\xbb", [17917] = "\xc1\x79", [17918] = "\xcc\xc0", + [17919] = "\xba\xaa", [17921] = "\xc1\x7a", [17922] = "\xc1\x7b", + [17923] = "\xb0\xd7", [17924] = "\xc0\xce", [17925] = "\xc1\x7c", + [17926] = "\xc1\x7d", [17932] = "\xda\xe6", [17933] = "\xc1\x7e", + [17934] = "\xc2\x21", [17935] = "\xc0\xb1", [17936] = "\xb1\xc7", + [17937] = "\xc2\x22", [17938] = "\xc2\x23", [17939] = "\xc2\x24", + [17940] = "\xc2\x25", [17941] = "\xbd\xd5", [17942] = "\xc2\x26", + [17943] = "\xcb\xe6", [17944] = "\xba\xf2", [17945] = "\xc2\x27", + [17946] = "\xc2\x28", [17947] = "\xc2\x29", [17948] = "\xc2\x2a", + [17949] = "\xbe\xbc", [17950] = "\xc2\x2b", [17951] = "\xc0\xa7", + [17952] = "\xc2\x2c", [17953] = "\xc2\x2d", [17955] = "\xc2\x2e", + [17956] = "\xda\xe5", [17957] = "\xda\xe3", [17958] = "\xda\xe4", + [17959] = "\xc2\x30", [17961] = "\xc2\x2f", [17963] = "\xf4\x42", + [17964] = "\xc3\xeb", [17967] = "\xdb\xa6", [17968] = "\xc2\x31", + [17969] = "\xda\xea", [17970] = "\xbb\xfe", [17971] = "\xb9\xb8", + [17972] = "\xda\xe8", [17973] = "\xc2\x32", [17974] = "\xc2\x33", + [17977] = "\xda\xe9", [17978] = "\xc2\x34", [17979] = "\xbf\xb8", + [17980] = "\xc2\x35", [17982] = "\xc2\x37", [17983] = "\xda\xe7", + [17985] = "\xc2\x36", [17986] = "\xbb\xaf", [17991] = "\xc2\x38", + [17992] = "\xc2\x39", [17993] = "\xc2\x3a", [17995] = "\xc2\x3b", + [17996] = "\xc2\x3c", [17997] = "\xda\xec", [17998] = "\xda\xeb", + [17999] = "\xda\xf0", [18000] = "\xc2\x3d", [18001] = "\xc2\x3e", + [18002] = "\xda\xf1", [18004] = "\xda\xed", [18005] = "\xf4\x43", + [18006] = "\xb3\xa2", [18007] = "\xda\xee", [18008] = "\xda\xef", + [18009] = "\xc8\xd5", [18010] = "\xc2\x40", [18011] = "\xc2\x41", + [18012] = "\xc2\x42", [18014] = "\xc9\xe1", [18015] = "\xb7\xca", + [18016] = "\xda\xf2", [18019] = "\xc2\x44", [18020] = "\xc0\xb2", + [18021] = "\xc2\x45", [18022] = "\xbe\xbd", [18023] = "\xc2\x47", + [18024] = "\xc2\x48", [18025] = "\xc2\x49", [18026] = "\xc3\xd2", + [18027] = "\xc2\x4a", [18028] = "\xc2\x4c", [18030] = "\xc2\x43", + [18031] = "\xc2\x46", [18032] = "\xc2\x4b", [18033] = "\xb6\xc7", + [18035] = "\xda\xf3", [18036] = "\xda\xf7", [18039] = "\xb2\xcb", + [18040] = "\xda\xf4", [18041] = "\xda\xf6", [18043] = "\xc2\x4d", + [18044] = "\xc2\x4e", [18045] = "\xc2\x4f", [18046] = "\xda\xf5", + [18048] = "\xc2\x50", [18049] = "\xbd\xeb", [18050] = "\xc2\x51", + [18054] = "\xc3\xc8", [18055] = "\xb0\xc5", [18056] = "\xda\xf8", + [18057] = "\xc2\x52", [18058] = "\xc2\x53", [18059] = "\xc2\x54", + [18060] = "\xc2\x55", [18061] = "\xda\xf9", [18063] = "\xc2\x56", + [18064] = "\xc2\x57", [18066] = "\xc4\xaa", [18068] = "\xc2\x58", + [18070] = "\xce\xf1", [18075] = "\xbb\xc3", [18077] = "\xc2\x59", + [18078] = "\xca\xeb", [18081] = "\xc2\x5a", [18082] = "\xc2\x5b", + [18084] = "\xcb\xbd", [18085] = "\xc2\x5c", [18088] = "\xdb\xa2", + [18089] = "\xda\xfb", [18091] = "\xc2\x5d", [18092] = "\xda\xfe", + [18094] = "\xda\xfd", [18095] = "\xc2\x5e", [18096] = "\xc2\x5f", + [18097] = "\xda\xfa", [18098] = "\xc2\x60", [18099] = "\xc2\x61", + [18100] = "\xdb\xa1", [18103] = "\xc6\xde", [18104] = "\xc2\x62", + [18105] = "\xda\xfc", [18108] = "\xc2\x63", [18110] = "\xc2\x64", + [18111] = "\xc2\x65", [18116] = "\xc2\x66", [18118] = "\xdb\xa3", + [18121] = "\xbd\xec", [18122] = "\xdb\xa4", [18123] = "\xc2\x67", + [18124] = "\xcd\xcb", [18125] = "\xc7\xf8", [18127] = "\xc2\x68", + [18128] = "\xdb\xa5", [18134] = "\xdb\xa7", [18136] = "\xc2\x69", + [18137] = "\xdb\xa8", [18139] = "\xc2\x6a", [18140] = "\xc2\x6b", + [18142] = "\xc2\x6c", [18144] = "\xdb\xa9", [18146] = "\xb6\xca", + [18147] = "\xb1\xc8", [18148] = "\xb9\xb9", [18149] = "\xdb\xaa", + [18151] = "\xdb\xab", [18152] = "\xbd\xf1", [18153] = "\xc1\xe2", + [18154] = "\xc2\x6d", [18155] = "\xc2\x3f", [18156] = "\xd2\xd8", + [18157] = "\xc1\xbe", [18158] = "\xc1\xbd", [18159] = "\xc2\xd8", + [18160] = "\xba\xc7", [18163] = "\xd0\xf2", [18165] = "\xc2\x6e", + [18167] = "\xc2\x6f", [18168] = "\xb7\xee", [18169] = "\xcd\xad", + [18171] = "\xca\xfe", [18173] = "\xc9\xfe", [18174] = "\xc2\x70", + [18175] = "\xdb\xac", [18179] = "\xc2\x71", [18180] = "\xba\xf3", + [18181] = "\xc4\xbf", [18182] = "\xdb\xad", [18183] = "\xcf\xaf", + [18185] = "\xc2\x72", [18187] = "\xcb\xbe", [18188] = "\xc2\x73", + [18189] = "\xc4\xab", [18190] = "\xdb\xae", [18191] = "\xb4\xfc", + [18192] = "\xc2\x74", [18194] = "\xc2\x75", [18198] = "\xdb\xaf", + [18199] = "\xdb\xb0", [18200] = "\xcc\xda", [18202] = "\xcc\xa4", + [18203] = "\xcb\xf6", [18204] = "\xcb\xdc", [18205] = "\xbb\xa5", + [18206] = "\xdb\xb2", [18209] = "\xbc\xeb", [18211] = "\xc2\x76", + [18212] = "\xcb\xd1", [18214] = "\xdb\xb4", [18215] = "\xdb\xb7", + [18216] = "\xdb\xb6", [18218] = "\xb4\xf9", [18221] = "\xb5\xe0", + [18222] = "\xc2\x77", [18223] = "\xdb\xb3", [18225] = "\xdb\xb5", + [18229] = "\xc2\x78", [18230] = "\xdb\xb8", [18231] = "\xc2\x79", + [18232] = "\xc2\x7a", [18233] = "\xbf\xf9", [18236] = "\xc2\x7b", + [18238] = "\xcd\xfb", [18239] = "\xb0\xc9", [18240] = "\xba\xe0", + [18241] = "\xc2\xbc", [18243] = "\xbc\xdd", [18244] = "\xc2\x7c", + [18245] = "\xc2\x7d", [18246] = "\xbe\xf3", [18249] = "\xdb\xbb", + [18252] = "\xc5\xce", [18253] = "\xc2\x7e", [18254] = "\xdb\xb9", + [18255] = "\xc2\xab", [18256] = "\xdb\xba", [18257] = "\xbe\xf2", + [18258] = "\xcc\xdd", [18259] = "\xdb\xbc", [18260] = "\xdb\xbd", + [18261] = "\xcd\xe8", [18262] = "\xc3\x21", [18266] = "\xdb\xc2", + [18268] = "\xc3\x22", [18269] = "\xb9\xba", [18270] = "\xc3\x23", + [18271] = "\xc7\xd5", [18272] = "\xdb\xbf", [18273] = "\xc5\xec", + [18274] = "\xda\xde", [18275] = "\xda\xe2", [18276] = "\xc3\x24", + [18277] = "\xb5\xcf", [18278] = "\xc3\x25", [18279] = "\xc7\xc7", + [18283] = "\xc3\x26", [18284] = "\xdb\xc1", [18286] = "\xbe\xbe", + [18287] = "\xc8\xc4", [18289] = "\xc3\x27", [18292] = "\xc3\x28", + [18293] = "\xdb\xc7", [18295] = "\xc8\xfa", [18297] = "\xdb\xbe", + [18299] = "\xdb\xc4", [18300] = "\xdb\xc3", [18302] = "\xc3\x29", + [18303] = "\xc3\x2a", [18304] = "\xc0\xcf", [18305] = "\xc3\x2b", + [18307] = "\xc3\x2c", [18309] = "\xcb\xed", [18310] = "\xc3\x2d", + [18311] = "\xce\xd3", [18312] = "\xc3\x2e", [18313] = "\xc3\x2f", + [18314] = "\xcb\xe7", [18315] = "\xc3\x30", [18316] = "\xb2\xcc", + [18317] = "\xbb\xde", [18320] = "\xcf\xc8", [18321] = "\xdb\xc6", + [18322] = "\xbf\xf5", [18326] = "\xdb\xc5", [18329] = "\xdb\xc0", + [18335] = "\xb8\xcf", [18336] = "\xc3\x31", [18337] = "\xc3\x32", + [18338] = "\xc3\x33", [18339] = "\xdb\xcc", [18340] = "\xdb\xca", + [18341] = "\xc3\x34", [18342] = "\xb2\xcd", [18343] = "\xdb\xc8", + [18344] = "\xdb\xce", [18345] = "\xdb\xd4", [18347] = "\xc3\x35", + [18348] = "\xc3\x36", [18349] = "\xc3\x37", [18352] = "\xc3\x39", + [18353] = "\xc2\xc8", [18354] = "\xc3\x3a", [18355] = "\xc3\x3b", + [18356] = "\xca\xc1", [18357] = "\xc3\x3c", [18358] = "\xdb\xd6", + [18360] = "\xc3\x3d", [18361] = "\xc3\x3e", [18362] = "\xc9\xa2", + [18366] = "\xdb\xd5", [18367] = "\xc7\xf0", [18368] = "\xcb\xbf", + [18369] = "\xb4\xbb", [18370] = "\xc3\x3f", [18371] = "\xc0\xf7", + [18372] = "\xbd\xc0", [18375] = "\xc3\x40", [18376] = "\xc4\xd3", + [18377] = "\xc3\x41", [18378] = "\xcd\xae", [18380] = "\xc3\x42", + [18381] = "\xdb\xd1", [18382] = "\xdb\xd0", [18385] = "\xc3\x43", + [18386] = "\xdb\xd2", [18388] = "\xdb\xcf", [18390] = "\xc3\x44", + [18391] = "\xdb\xd7", [18393] = "\xdb\xcd", [18396] = "\xdb\xcb", + [18398] = "\xdb\xd3", [18399] = "\xdb\xc9", [18400] = "\xc3\x45", + [18401] = "\xc3\xec", [18402] = "\xc3\x46", [18403] = "\xcc\xf8", + [18404] = "\xbc\xc6", [18405] = "\xba\xf4", [18406] = "\xc3\x47", + [18407] = "\xc3\x48", [18409] = "\xc3\x38", [18411] = "\xba\xba", + [18414] = "\xcb\xef", [18415] = "\xb3\xc1", [18417] = "\xf4\x46", + [18418] = "\xc4\xce", [18419] = "\xc6\xca", [18420] = "\xb1\xc9", + [18435] = "\xc0\xf2", [18436] = "\xc3\x4a", [18438] = "\xc0\xb4", + [18439] = "\xb7\xaa", [18441] = "\xc3\x4b", [18445] = "\xc3\x4c", + [18446] = "\xdb\xd9", [18447] = "\xc3\x4d", [18449] = "\xb9\xbb", + [18450] = "\xb3\xfc", [18455] = "\xc3\x4f", [18456] = "\xc3\x4e", + [18457] = "\xdb\xdb", [18458] = "\xb3\xf4", [18459] = "\xdb\xe1", + [18460] = "\xc3\x50", [18461] = "\xc3\x51", [18463] = "\xc3\x52", + [18464] = "\xc3\x53", [18465] = "\xc3\x54", [18466] = "\xdb\xde", + [18467] = "\xc3\x55", [18468] = "\xc0\xf3", [18472] = "\xb3\xcb", + [18473] = "\xba\xac", [18475] = "\xc3\x56", [18476] = "\xb3\xca", + [18477] = "\xba\xcf", [18479] = "\xc3\x57", [18480] = "\xdb\xdc", + [18481] = "\xb7\xe5", [18482] = "\xb7\xcb", [18483] = "\xc5\xed", + [18484] = "\xc3\x58", [18485] = "\xc3\x59", [18486] = "\xdb\xda", + [18488] = "\xb0\xc6", [18490] = "\xc3\x5a", [18492] = "\xc3\x5b", + [18493] = "\xdb\xdd", [18494] = "\xdb\xdf", [18496] = "\xb6\xcd", + [18497] = "\xb7\xac", [18498] = "\xc3\x49", [18499] = "\xb4\xbc", + [18500] = "\xb5\xcb", [18501] = "\xc3\x5c", [18503] = "\xc3\x5d", + [18504] = "\xc3\x5e", [18505] = "\xdb\xe2", [18507] = "\xc3\x5f", + [18508] = "\xba\xf9", [18509] = "\xcb\xf1", [18511] = "\xbb\xb7", + [18515] = "\xdb\xe3", [18519] = "\xc9\xb0", [18523] = "\xc3\x60", + [18526] = "\xc3\x61", [18527] = "\xc3\x62", [18528] = "\xc3\x63", + [18529] = "\xc3\x64", [18530] = "\xc3\x65", [18532] = "\xdb\xef", + [18533] = "\xc3\x66", [18534] = "\xb2\xb3", [18535] = "\xdb\xe4", + [18537] = "\xc3\x67", [18538] = "\xc3\x68", [18539] = "\xc3\x69", + [18540] = "\xc3\x6a", [18542] = "\xdb\xf5", [18543] = "\xdb\xe5", + [18545] = "\xce\xc2", [18546] = "\xc3\x6b", [18547] = "\xdb\xec", + [18548] = "\xc3\x6c", [18549] = "\xc7\xdf", [18550] = "\xc3\x6d", + [18552] = "\xc3\x6e", [18557] = "\xdb\xf4", [18559] = "\xdb\xe7", + [18563] = "\xb0\xb4", [18564] = "\xdb\xe9", [18566] = "\xc3\x6f", + [18567] = "\xb9\xbc", [18568] = "\xc3\x70", [18570] = "\xc3\x71", + [18571] = "\xdb\xeb", [18572] = "\xc3\x72", [18573] = "\xdb\xea", + [18575] = "\xdb\xe6", [18576] = "\xdb\xf1", [18577] = "\xc3\x73", + [18578] = "\xbe\xbf", [18579] = "\xc3\x74", [18581] = "\xc3\x75", + [18582] = "\xd4\xed", [18583] = "\xb8\xe8", [18584] = "\xcd\xfc", + [18585] = "\xc3\x76", [18586] = "\xc3\x77", [18589] = "\xdb\xe8", + [18590] = "\xc3\x78", [18591] = "\xc4\xf4", [18592] = "\xb3\xa3", + [18593] = "\xba\xad", [18594] = "\xc3\x79", [18595] = "\xdb\xe0", + [18597] = "\xdb\xf0", [18598] = "\xb3\xe1", [18601] = "\xdb\xee", + [18602] = "\xdb\xf2", [18603] = "\xc3\x7a", [18604] = "\xc5\xee", + [18612] = "\xb4\xfe", [18613] = "\xc3\x7b", [18614] = "\xdc\xb2", + [18616] = "\xc3\x7c", [18617] = "\xcc\xc9", [18618] = "\xdb\xf7", + [18619] = "\xb4\xfd", [18620] = "\xc3\x7d", [18621] = "\xdb\xfe", + [18623] = "\xc3\x7e", [18624] = "\xc4\x21", [18625] = "\xc4\x22", + [18626] = "\xcb\xc0", [18627] = "\xc4\x23", [18628] = "\xdc\xa1", + [18629] = "\xdc\xa3", [18630] = "\xc4\x24", [18631] = "\xdc\xa7", + [18632] = "\xdb\xf9", [18633] = "\xc4\x25", [18634] = "\xc3\xaa", + [18636] = "\xc4\x26", [18637] = "\xc4\x27", [18639] = "\xc5\xef", + [18640] = "\xdc\xab", [18641] = "\xdb\xfc", [18643] = "\xdc\xa8", + [18645] = "\xc4\x28", [18647] = "\xdc\xa2", [18648] = "\xc4\x29", + [18650] = "\xc4\x2a", [18651] = "\xc4\x2b", [18652] = "\xc4\x2c", + [18653] = "\xc4\x2d", [18654] = "\xbf\xb9", [18655] = "\xdc\xac", + [18656] = "\xc4\x2e", [18657] = "\xc4\x2f", [18658] = "\xc0\xb3", + [18661] = "\xc4\x30", [18662] = "\xc4\x31", [18665] = "\xdc\xaa", + [18666] = "\xb4\xbd", [18667] = "\xc4\x32", [18668] = "\xc4\x33", + [18669] = "\xc4\x34", [18672] = "\xcf\xd0", [18673] = "\xdb\xf6", + [18676] = "\xdc\xa6", [18677] = "\xb0\xd8", [18678] = "\xc4\x35", + [18680] = "\xdb\xf8", [18681] = "\xc4\x36", [18682] = "\xc4\x37", + [18683] = "\xcc\xba", [18684] = "\xdb\xfd", [18685] = "\xbf\xa2", + [18686] = "\xc4\xc7", [18687] = "\xdb\xf3", [18688] = "\xc4\x38", + [18689] = "\xc4\x39", [18690] = "\xdc\xa5", [18691] = "\xc4\x3a", + [18694] = "\xc4\x3b", [18695] = "\xc4\x3c", [18697] = "\xbf\xfa", + [18698] = "\xdc\xaf", [18699] = "\xb3\xf1", [18700] = "\xb8\xa1", + [18705] = "\xdc\xb1", [18706] = "\xdb\xfa", [18707] = "\xdc\xb0", + [18709] = "\xdc\xa9", [18710] = "\xdb\xfb", [18712] = "\xdc\xad", + [18714] = "\xdc\xae", [18720] = "\xdc\xbf", [18721] = "\xc4\x3d", + [18723] = "\xc4\x3e", [18724] = "\xc6\xce", [18725] = "\xc4\x3f", + [18726] = "\xdc\xa4", [18728] = "\xc4\x40", [18729] = "\xdc\xbb", + [18731] = "\xc4\x41", [18733] = "\xdc\xbd", [18735] = "\xc4\xd8", + [18738] = "\xc4\x42", [18741] = "\xc4\x43", [18745] = "\xc4\x44", + [18746] = "\xcd\xcc", [18750] = "\xc4\x45", [18755] = "\xc9\xf6", + [18756] = "\xdc\xb8", [18757] = "\xc2\xca", [18759] = "\xc4\x46", + [18761] = "\xdc\xbe", [18762] = "\xc1\xbf", [18763] = "\xc4\x47", + [18764] = "\xdc\xb5", [18765] = "\xdc\xc2", [18766] = "\xdc\xc1", + [18768] = "\xc6\xef", [18769] = "\xdc\xc0", [18770] = "\xc6\xea", + [18771] = "\xc4\x48", [18772] = "\xc4\x49", [18773] = "\xc4\x4a", + [18774] = "\xc4\x4b", [18776] = "\xc4\x4c", [18777] = "\xc4\x4d", + [18778] = "\xdc\xc4", [18779] = "\xdc\xb7", [18780] = "\xc4\x4e", + [18781] = "\xb6\xc8", [18782] = "\xdc\xba", [18783] = "\xbd\xdd", + [18784] = "\xc4\x4f", [18785] = "\xc4\x50", [18786] = "\xc4\x51", + [18787] = "\xc7\xe0", [18788] = "\xdc\xbc", [18789] = "\xb6\xcb", + [18791] = "\xdc\xb4", [18792] = "\xdc\xb6", [18793] = "\xdc\xb3", + [18794] = "\xc4\x52", [18795] = "\xc4\x53", [18796] = "\xcf\xb0", + [18797] = "\xb3\xda", [18798] = "\xdc\xb9", [18799] = "\xc4\x54", + [18800] = "\xc4\x55", [18801] = "\xdc\xc3", [18802] = "\xb3\xb5", + [18810] = "\xba\xe7", [18813] = "\xc4\x56", [18814] = "\xb1\xdd", + [18817] = "\xdc\xd4", [18818] = "\xc4\x57", [18820] = "\xcf\xb1", + [18821] = "\xdc\xd7", [18822] = "\xc4\x58", [18824] = "\xc4\x59", + [18827] = "\xbf\xba", [18828] = "\xdc\xd6", [18832] = "\xdc\xd5", + [18833] = "\xc4\x5a", [18837] = "\xc4\x5b", [18838] = "\xc4\x5c", + [18839] = "\xdc\xd2", [18840] = "\xc4\x5d", [18843] = "\xc4\x5e", + [18845] = "\xc4\x5f", [18846] = "\xdc\xc6", [18847] = "\xc4\x60", + [18849] = "\xdc\xe3", [18850] = "\xdc\xc5", [18852] = "\xdc\xd8", + [18855] = "\xc4\x61", [18856] = "\xc4\x62", [18858] = "\xc4\x63", + [18859] = "\xdc\xd0", [18860] = "\xc4\x64", [18862] = "\xdc\xcb", + [18863] = "\xdc\xc8", [18865] = "\xdc\xc9", [18867] = "\xdc\xd1", + [18869] = "\xc4\x65", [18871] = "\xf4\xa2", [18872] = "\xc4\x66", + [18874] = "\xdc\xce", [18875] = "\xb9\xbd", [18876] = "\xc4\xc8", + [18877] = "\xc1\xe4", [18878] = "\xdc\xcc", [18880] = "\xdc\xc7", + [18881] = "\xc4\x67", [18883] = "\xdc\xca", [18886] = "\xc4\x68", + [18887] = "\xc4\x69", [18888] = "\xcd\xcd", [18889] = "\xcb\xea", + [18893] = "\xdc\xcf", [18894] = "\xdc\xd9", [18898] = "\xc4\x6a", + [18901] = "\xc4\x6b", [18903] = "\xdc\xe1", [18904] = "\xdc\xda", + [18907] = "\xdc\xe7", [18909] = "\xdc\xe5", [18910] = "\xc4\x6c", + [18911] = "\xc4\x6d", [18913] = "\xc4\x6e", [18914] = "\xdc\xe0", + [18915] = "\xc4\x6f", [18917] = "\xc4\x70", [18921] = "\xdc\xdf", + [18923] = "\xc4\xd0", [18925] = "\xc1\xe5", [18926] = "\xc4\x71", + [18927] = "\xdc\xdd", [18928] = "\xc4\x72", [18929] = "\xc4\x73", + [18930] = "\xdc\xdb", [18931] = "\xc4\x74", [18933] = "\xdc\xe2", + [18938] = "\xdc\xe8", [18939] = "\xc8\xf5", [18940] = "\xdc\xee", + [18943] = "\xc4\x75", [18945] = "\xc4\x76", [18946] = "\xdc\xe9", + [18947] = "\xdc\xec", [18948] = "\xdc\xe6", [18949] = "\xc4\x77", + [18951] = "\xc3\xf4", [18953] = "\xc9\xb8", [18954] = "\xc4\x78", + [18955] = "\xdc\xdc", [18957] = "\xc4\x79", [18958] = "\xdc\xe4", + [18959] = "\xbe\xc0", [18960] = "\xc4\x7a", [18961] = "\xcc\xcf", + [18962] = "\xdc\xf8", [18963] = "\xdc\xeb", [18964] = "\xc4\x7b", + [18968] = "\xc4\x7c", [18969] = "\xb8\xa2", [18970] = "\xb2\xa3", + [18971] = "\xb3\xdf", [18974] = "\xdc\xd3", [18976] = "\xc4\x7d", + [18978] = "\xc4\x7e", [18980] = "\xc5\x21", [18981] = "\xbe\xc1", + [18982] = "\xdc\xf0", [18983] = "\xc5\x22", [18984] = "\xdc\xf7", + [18985] = "\xbc\xf9", [18986] = "\xb3\xf2", [18987] = "\xc5\x23", + [18989] = "\xc3\xae", [18990] = "\xc5\x24", [18991] = "\xc5\x25", + [18996] = "\xdc\xed", [18997] = "\xc5\x26", [18998] = "\xc5\x27", + [18999] = "\xdc\xf2", [19000] = "\xdc\xf6", [19001] = "\xc5\x28", + [19002] = "\xc5\x29", [19003] = "\xb6\xb6", [19006] = "\xc5\x2a", + [19008] = "\xc5\x2b", [19009] = "\xc5\x2c", [19010] = "\xc5\x2d", + [19013] = "\xc5\x2e", [19014] = "\xc5\x2f", [19016] = "\xb5\xcc", + [19017] = "\xdc\xf4", [19019] = "\xc5\x30", [19023] = "\xb5\xa1", + [19025] = "\xc6\xcb", [19026] = "\xdc\xf3", [19028] = "\xc5\x31", + [19030] = "\xdc\xf5", [19031] = "\xc5\x32", [19034] = "\xc5\x33", + [19035] = "\xf4\x49", [19041] = "\xc5\x34", [19042] = "\xdc\xef", + [19043] = "\xc5\x35", [19048] = "\xdc\xf1", [19054] = "\xc5\x36", + [19055] = "\xb3\xe0", [19056] = "\xc3\xc9", [19057] = "\xc5\x37", + [19059] = "\xc5\x38", [19060] = "\xdc\xfc", [19062] = "\xc5\x39", + [19063] = "\xc5\x3a", [19065] = "\xc5\x3b", [19067] = "\xc5\x3c", + [19069] = "\xdc\xfa", [19070] = "\xb8\xe9", [19072] = "\xdc\xf9", + [19073] = "\xc5\x3d", [19079] = "\xdd\xa1", [19083] = "\xc5\x3e", + [19084] = "\xdb\xd8", [19085] = "\xc5\x3f", [19086] = "\xc5\x40", + [19087] = "\xc5\x41", [19088] = "\xdc\xfb", [19090] = "\xdc\xfd", + [19091] = "\xdc\xfe", [19093] = "\xc5\x42", [19098] = "\xdd\xac", + [19099] = "\xc5\x43", [19100] = "\xdd\xa8", [19102] = "\xdb\xed", + [19103] = "\xc5\x44", [19104] = "\xc5\x45", [19105] = "\xc5\x46", + [19107] = "\xdd\xa7", [19108] = "\xc5\x47", [19112] = "\xdd\xa6", + [19115] = "\xdd\xa3", [19117] = "\xc5\x48", [19118] = "\xc5\x49", + [19119] = "\xc5\x4a", [19121] = "\xdc\xea", [19122] = "\xdd\xa5", + [19123] = "\xdd\xa4", [19126] = "\xc5\x4b", [19128] = "\xc5\x4d", + [19129] = "\xc5\x4c", [19132] = "\xc5\x4e", [19136] = "\xc5\x4f", + [19137] = "\xdd\xaa", [19139] = "\xcf\xa6", [19140] = "\xc5\x50", + [19141] = "\xc5\x51", [19142] = "\xc5\x52", [19146] = "\xdd\xad", + [19147] = "\xb6\xfb", [19148] = "\xc5\x53", [19149] = "\xc5\x54", + [19150] = "\xdd\xa9", [19151] = "\xdd\xab", [19154] = "\xf4\x4a", + [19156] = "\xc5\x55", [19159] = "\xc5\x56", [19160] = "\xc8\xa7", + [19162] = "\xdd\xae", [19164] = "\xc5\x57", [19168] = "\xc5\x58", + [19169] = "\xc5\x59", [19170] = "\xc5\x5a", [19178] = "\xdd\xb2", + [19179] = "\xdd\xaf", [19180] = "\xc5\x5b", [19181] = "\xc5\x5c", + [19186] = "\xc5\x5d", [19187] = "\xc5\x5e", [19188] = "\xcd\xf3", + [19189] = "\xdd\xb0", [19190] = "\xc5\x5f", [19191] = "\xc5\x60", + [19193] = "\xc5\x61", [19194] = "\xdc\xde", [19199] = "\xc5\x62", + [19200] = "\xc5\x63", [19201] = "\xc5\x64", [19202] = "\xdd\xb3", + [19206] = "\xdd\xb4", [19207] = "\xc5\x65", [19211] = "\xc5\x66", + [19213] = "\xb1\xb5", [19214] = "\xc5\x67", [19215] = "\xdd\xb6", + [19216] = "\xb7\xe7", [19217] = "\xbc\xa1", [19219] = "\xb6\xd5", + [19220] = "\xc5\x68", [19223] = "\xb2\xa4", [19224] = "\xc5\x69", + [19227] = "\xc5\x6a", [19228] = "\xc5\x6b", [19231] = "\xc5\x6c", + [19234] = "\xcd\xdf", [19237] = "\xc5\x6d", [19238] = "\xc5\x6e", + [19239] = "\xdd\xb8", [19240] = "\xdd\xb7", [19241] = "\xdd\xba", + [19242] = "\xb5\xbd", [19243] = "\xc5\x6f", [19245] = "\xb6\xd6", + [19246] = "\xb4\xbe", [19247] = "\xc5\x70", [19251] = "\xdd\xbd", + [19254] = "\xc5\x71", [19255] = "\xdd\xbc", [19257] = "\xdd\xbe", + [19258] = "\xc5\x72", [19260] = "\xb2\xce", [19261] = "\xc5\x73", + [19262] = "\xc3\xb7", [19264] = "\xdd\xbf", [19266] = "\xc5\x74", + [19267] = "\xb4\xbf", [19268] = "\xdd\xc1", [19270] = "\xc5\x75", + [19272] = "\xc5\x76", [19273] = "\xdd\xc0", [19275] = "\xdd\xc2", + [19277] = "\xc5\x77", [19279] = "\xdd\xc3", [19280] = "\xc5\x78", + [19281] = "\xdd\xc4", [19282] = "\xbb\xdf", [19283] = "\xc0\xb5", + [19284] = "\xba\xa1", [19286] = "\xc9\xf0", [19287] = "\xc5\x79", + [19289] = "\xca\xe2", [19290] = "\xcf\xc4", [19291] = "\xc5\x7a", + [19294] = "\xc5\x7b", [19295] = "\xbb\xf5", [19296] = "\xc5\x7c", + [19299] = "\xba\xd0", [19300] = "\xce\xf2", [19301] = "\xc5\x7d", + [19304] = "\xdd\xc5", [19305] = "\xdd\xc6", [19307] = "\xbb\xe0", + [19309] = "\xc5\x7e", [19310] = "\xc6\x21", [19311] = "\xdd\xc7", + [19312] = "\xdd\xc8", [19314] = "\xc6\x22", [19315] = "\xdd\xca", + [19316] = "\xdd\xc9", [19317] = "\xc6\x23", [19318] = "\xcb\xd8", + [19321] = "\xbd\xde", [19322] = "\xbc\xec", [19323] = "\xbb\xc4", + [19325] = "\xdd\xcb", [19333] = "\xdd\xcd", [19334] = "\xbf\xa3", + [19335] = "\xc6\x24", [19336] = "\xdd\xcc", [19339] = "\xc6\x25", + [19342] = "\xdd\xce", [19343] = "\xc6\x26", [19344] = "\xc6\x27", + [19346] = "\xc6\x28", [19347] = "\xc6\x29", [19348] = "\xdd\xcf", + [19352] = "\xc6\x2a", [19353] = "\xc6\x2b", [19354] = "\xdd\xd0", + [19355] = "\xdd\xd1", [19356] = "\xc6\x2c", [19357] = "\xc6\x2d", + [19358] = "\xc6\x2e", [19359] = "\xdd\xd2", [19360] = "\xc6\x2f", + [19361] = "\xdd\xd4", [19362] = "\xdd\xd3", [19363] = "\xdd\xd5", + [19364] = "\xb2\xa5", [19365] = "\xc3\xca", [19367] = "\xdd\xd6", + [19368] = "\xc6\x30", [19369] = "\xc6\x31", [19370] = "\xbb\xa6", + [19371] = "\xb3\xcc", [19372] = "\xdd\xd7", [19373] = "\xc6\x32", + [19374] = "\xc6\x33", [19375] = "\xc5\xc2", [19376] = "\xd4\xcc", + [19379] = "\xc6\x34", [19380] = "\xc6\x35", [19381] = "\xb5\xa3", + [19382] = "\xdd\xd8", [19385] = "\xc6\x36", [19387] = "\xdd\xd9", + [19388] = "\xc6\x37", [19389] = "\xca\xec", [19390] = "\xcb\xe8", + [19394] = "\xc6\xc7", [19395] = "\xdd\xda", [19396] = "\xc8\xe6", + [19398] = "\xc6\x38", [19400] = "\xc8\xfb", [19402] = "\xc6\x39", + [19403] = "\xcc\xd3", [19407] = "\xdd\xdb", [19409] = "\xc6\x3a", + [19411] = "\xc6\x3b", [19414] = "\xc6\x3c", [19415] = "\xc6\x3d", + [19419] = "\xdd\xdd", [19420] = "\xdd\xdc", [19422] = "\xc6\x3e", + [19423] = "\xdd\xdf", [19425] = "\xc6\x3f", [19427] = "\xdd\xde", + [19431] = "\xc6\x40", [19433] = "\xc6\x41", [19439] = "\xc6\x42", + [19442] = "\xc6\x43", [19444] = "\xc6\x44", [19445] = "\xc6\x45", + [19448] = "\xdd\xe1", [19449] = "\xc6\x46", [19453] = "\xc6\x47", + [19454] = "\xc6\x48", [19455] = "\xbb\xe1", [19456] = "\xc6\x49", + [19457] = "\xcc\xb1", [19458] = "\xc6\x4a", [19459] = "\xdd\xe2", + [19460] = "\xdd\xe3", [19463] = "\xb5\xa4", [19465] = "\xc6\x4b", + [19467] = "\xdd\xe4", [19471] = "\xc6\x4c", [19475] = "\xdd\xe6", + [19476] = "\xdd\xe5", [19478] = "\xc6\x4d", [19479] = "\xc6\x4e", + [19480] = "\xc6\x4f", [19484] = "\xc6\x50", [19486] = "\xc6\x51", + [19491] = "\xc6\x52", [19492] = "\xbf\xe5", [19493] = "\xc6\x53", + [19494] = "\xc6\x54", [19495] = "\xc9\xb9", [19496] = "\xb1\xca", + [19498] = "\xc6\x55", [19499] = "\xc6\x56", [19502] = "\xc8\xc5", + [19503] = "\xc6\x57", [19504] = "\xc4\xf5", [19505] = "\xbd\xc1", + [19506] = "\xb5\xe1", [19514] = "\xc6\x58", [19515] = "\xc6\x59", + [19517] = "\xc6\x5a", [19518] = "\xc8\xc6", [19519] = "\xc6\x5b", + [19520] = "\xbc\xae", [19522] = "\xc6\x5c", [19524] = "\xc6\x5d", + [19525] = "\xdd\xe8", [19527] = "\xb4\xc0", [19529] = "\xc6\x5e", + [19530] = "\xb1\xf8", [19531] = "\xc6\x5f", [19532] = "\xc6\x60", + [19533] = "\xc6\xf2", [19534] = "\xdd\xe7", [19535] = "\xb9\xbe", + [19536] = "\xc3\xd3", [19538] = "\xdd\xe9", [19543] = "\xc7\x36", + [19544] = "\xdd\xf1", [19546] = "\xdd\xea", [19547] = "\xc6\x61", + [19549] = "\xc6\x62", [19551] = "\xc6\x63", [19552] = "\xc2\xc1", + [19554] = "\xb5\xe2", [19555] = "\xdd\xf2", [19556] = "\xc6\x64", + [19558] = "\xc6\x65", [19560] = "\xc6\x66", [19561] = "\xc6\x67", + [19562] = "\xb7\xe8", [19563] = "\xc6\x68", [19565] = "\xb5\xa5", + [19566] = "\xdd\xf0", [19569] = "\xdd\xee", [19570] = "\xdd\xeb", + [19571] = "\xcd\xe0", [19573] = "\xc6\x69", [19574] = "\xc6\x6a", + [19575] = "\xc6\x6b", [19576] = "\xc4\xc0", [19577] = "\xc6\x6c", + [19580] = "\xc6\xd9", [19581] = "\xdd\xec", [19584] = "\xdd\xf4", + [19586] = "\xdd\xf3", [19587] = "\xb7\xa3", [19588] = "\xc6\x6d", + [19589] = "\xc6\x6e", [19590] = "\xb2\xad", [19591] = "\xc6\x6f", + [19592] = "\xc6\x70", [19593] = "\xba\xbb", [19594] = "\xdd\xed", + [19595] = "\xdd\xef", [19596] = "\xc6\x71", [19599] = "\xc6\x72", + [19601] = "\xcb\xd7", [19602] = "\xc2\xf4", [19611] = "\xcb\xf7", + [19614] = "\xdd\xfc", [19616] = "\xc6\x73", [19617] = "\xdd\xfd", + [19618] = "\xc6\x74", [19619] = "\xb2\xcf", [19620] = "\xc6\x75", + [19624] = "\xca\xa8", [19625] = "\xcc\xfd", [19626] = "\xde\xa1", + [19627] = "\xbc\xa3", [19628] = "\xbe\xc2", [19629] = "\xdd\xf8", + [19630] = "\xdd\xfe", [19631] = "\xb1\xe8", [19633] = "\xb6\xb7", + [19634] = "\xc6\x76", [19636] = "\xdd\xf5", [19637] = "\xdd\xfa", + [19638] = "\xc6\x77", [19641] = "\xc0\xf4", [19642] = "\xc7\xf1", + [19644] = "\xc8\xe7", [19645] = "\xc6\x78", [19647] = "\xc6\x79", + [19648] = "\xc6\x7a", [19649] = "\xc6\x7b", [19650] = "\xc6\x7c", + [19651] = "\xdd\xf7", [19652] = "\xc6\x7d", [19653] = "\xcb\xa1", + [19654] = "\xc6\x7e", [19655] = "\xdd\xf9", [19657] = "\xde\xa4", + [19658] = "\xc7\x21", [19659] = "\xde\xa2", [19660] = "\xc7\x22", + [19661] = "\xdd\xfb", [19664] = "\xc7\x23", [19665] = "\xcb\xa2", + [19666] = "\xc7\xc8", [19667] = "\xb5\xe3", [19669] = "\xc5\xa5", + [19671] = "\xc7\x24", [19672] = "\xc3\xed", [19673] = "\xc7\x25", + [19674] = "\xde\xa5", [19675] = "\xc7\x26", [19676] = "\xc7\x27", + [19678] = "\xc7\x28", [19679] = "\xde\xa3", [19680] = "\xc2\xd9", + [19681] = "\xdd\xf6", [19682] = "\xc7\x29", [19683] = "\xb1\xcb", + [19684] = "\xc7\x2a", [19700] = "\xc7\x2b", [19703] = "\xc7\x2c", + [19706] = "\xc7\x2d", [19707] = "\xcd\xce", [19708] = "\xde\xb0", + [19710] = "\xc7\x2e", [19711] = "\xc7\x2f", [19713] = "\xc7\x30", + [19714] = "\xde\xaf", [19715] = "\xc7\x31", [19719] = "\xc0\xf6", + [19721] = "\xde\xac", [19722] = "\xc7\x32", [19723] = "\xcd\xec", + [19726] = "\xc6\xb6", [19727] = "\xde\xa6", [19733] = "\xc4\xc5", + [19734] = "\xc7\x33", [19735] = "\xc7\x34", [19736] = "\xc7\x35", + [19737] = "\xb1\xcc", [19738] = "\xb9\xbf", [19739] = "\xde\xa9", + [19742] = "\xc7\x37", [19743] = "\xc7\x38", [19745] = "\xc7\x39", + [19746] = "\xbd\xa7", [19747] = "\xde\xae", [19749] = "\xde\xad", + [19750] = "\xde\xa8", [19752] = "\xde\xab", [19753] = "\xc7\x3a", + [19755] = "\xb3\xe8", [19756] = "\xc7\x3b", [19757] = "\xde\xaa", + [19758] = "\xc7\xc9", [19759] = "\xc7\x3c", [19761] = "\xce\xae", + [19764] = "\xbe\xf4", [19765] = "\xc0\xf5", [19783] = "\xc7\x3d", + [19785] = "\xde\xb6", [19786] = "\xde\xb4", [19788] = "\xc9\xcd", + [19790] = "\xc7\x3e", [19791] = "\xc7\x3f", [19793] = "\xc7\x40", + [19795] = "\xde\xb1", [19796] = "\xde\xb3", [19797] = "\xc7\x41", + [19798] = "\xb1\xba", [19799] = "\xc7\x42", [19801] = "\xb9\xc0", + [19802] = "\xcf\xb2", [19804] = "\xb3\xbd", [19806] = "\xc9\xe2", + [19807] = "\xc7\x43", [19808] = "\xc7\x44", [19812] = "\xcd\xe1", + [19815] = "\xb3\xa4", [19816] = "\xbf\xbb", [19817] = "\xde\xb5", + [19820] = "\xc7\x45", [19826] = "\xc7\x46", [19829] = "\xde\xba", + [19831] = "\xc7\x47", [19832] = "\xbe\xc3", [19836] = "\xcd\xb0", + [19838] = "\xde\xb7", [19841] = "\xc7\x48", [19842] = "\xc7\x49", + [19843] = "\xde\xb2", [19844] = "\xc7\x4a", [19845] = "\xde\xb8", + [19846] = "\xc7\x4b", [19847] = "\xc7\x4c", [19848] = "\xc7\x4d", + [19849] = "\xce\xde", [19851] = "\xc5\xf3", [19852] = "\xc6\xc2", + [19866] = "\xc7\x4e", [19868] = "\xc7\x4f", [19871] = "\xb3\xb6", + [19874] = "\xb1\xd5", [19876] = "\xc7\x50", [19877] = "\xde\xbe", + [19879] = "\xc7\x51", [19880] = "\xde\xc1", [19881] = "\xc7\x52", + [19884] = "\xce\xc3", [19885] = "\xc7\x53", [19887] = "\xc7\x54", + [19888] = "\xcd\xe4", [19892] = "\xc7\x55", [19893] = "\xde\xc8", + [19894] = "\xde\xc2", [19895] = "\xde\xbf", [19896] = "\xc7\x56", + [19898] = "\xc7\x57", [19899] = "\xce\xd4", [19900] = "\xde\xc5", + [19902] = "\xc7\x58", [19903] = "\xc7\x59", [19905] = "\xbd\xca", + [19906] = "\xde\xc7", [19909] = "\xde\xcc", [19910] = "\xc7\x5a", + [19912] = "\xc5\xf1", [19913] = "\xde\xca", [19915] = "\xc7\x5b", + [19917] = "\xc7\x5c", [19918] = "\xde\xc4", [19919] = "\xc7\x5d", + [19920] = "\xc7\x5e", [19921] = "\xc3\xb8", [19922] = "\xc7\x5f", + [19924] = "\xde\xcb", [19925] = "\xc7\x60", [19926] = "\xde\xc0", + [19928] = "\xde\xc6", [19929] = "\xc7\x61", [19930] = "\xde\xcd", + [19931] = "\xb0\xfc", [19932] = "\xde\xc3", [19934] = "\xde\xce", + [19935] = "\xc7\x62", [19936] = "\xc7\x63", [19937] = "\xbf\xbc", + [19938] = "\xf4\x4c", [19939] = "\xbd\xdf", [19940] = "\xc7\x64", + [19941] = "\xca\xa5", [19942] = "\xc7\x65", [19943] = "\xba\xae", + [19944] = "\xf4\x4b", [19945] = "\xde\xbb", [19946] = "\xde\xc9", + [19947] = "\xc5\xba", [19948] = "\xc7\x66", [19952] = "\xc7\x67", + [19956] = "\xc7\x68", [19957] = "\xc0\xb6", [19959] = "\xb3\xe9", + [19960] = "\xba\xd1", [19961] = "\xbe\xc4", [19962] = "\xde\xbd", + [19963] = "\xbd\xc2", [19971] = "\xb7\xcc", [19973] = "\xde\xbc", + [19977] = "\xde\xd2", [19978] = "\xbd\xed", [19979] = "\xb8\xba", + [19981] = "\xde\xe1", [19982] = "\xc7\x69", [19983] = "\xde\xdb", + [19984] = "\xb5\xf4", [19985] = "\xc5\xcf", [19986] = "\xc7\x6a", + [19987] = "\xde\xd6", [19988] = "\xde\xdf", [19989] = "\xb0\xaf", + [19990] = "\xb1\xb2", [19991] = "\xc7\x6b", [19993] = "\xb2\xb9", + [19995] = "\xde\xd8", [19996] = "\xc2\xac", [19997] = "\xde\xcf", + [19998] = "\xde\xd1", [19999] = "\xb9\xc1", [20002] = "\xc7\x6c", + [20006] = "\xc7\x6d", [20008] = "\xde\xe2", [20009] = "\xc7\x6e", + [20010] = "\xde\xdd", [20011] = "\xc7\x6f", [20012] = "\xc7\x70", + [20014] = "\xde\xd5", [20019] = "\xde\xdc", [20020] = "\xc7\x71", + [20021] = "\xc7\x72", [20024] = "\xc7\x73", [20025] = "\xc7\x74", + [20026] = "\xcc\xab", [20027] = "\xc7\x75", [20029] = "\xde\xda", + [20030] = "\xde\xde", [20031] = "\xc7\x76", [20033] = "\xc7\x77", + [20034] = "\xc7\x78", [20035] = "\xc7\x79", [20036] = "\xc7\x7a", + [20038] = "\xb8\xd0", [20039] = "\xc7\x7b", [20040] = "\xbe\xc5", + [20043] = "\xc3\xb9", [20044] = "\xc7\x7c", [20045] = "\xc7\x7d", + [20046] = "\xc7\x7e", [20047] = "\xde\xd4", [20050] = "\xc8\x21", + [20051] = "\xc8\x22", [20055] = "\xcd\xaf", [20056] = "\xc8\x23", + [20059] = "\xde\xd7", [20062] = "\xde\xd0", [20063] = "\xc5\xf2", + [20066] = "\xde\xd3", [20067] = "\xc8\x24", [20070] = "\xde\xd9", + [20075] = "\xc8\x25", [20077] = "\xc8\x26", [20078] = "\xcf\xd1", + [20079] = "\xbc\xbe", [20080] = "\xcb\xfe", [20082] = "\xde\xe3", + [20092] = "\xc8\xae", [20093] = "\xc8\x27", [20095] = "\xde\xef", + [20096] = "\xb8\xbb", [20099] = "\xc8\x28", [20102] = "\xbd\xe0", + [20104] = "\xde\xe5", [20105] = "\xc8\x29", [20108] = "\xce\xaf", + [20109] = "\xb9\xc2", [20111] = "\xde\xf2", [20112] = "\xc8\x2a", + [20114] = "\xb0\xee", [20117] = "\xde\xf0", [20119] = "\xc8\x2b", + [20122] = "\xde\xe4", [20125] = "\xc8\x2c", [20126] = "\xc8\x2d", + [20127] = "\xde\xea", [20129] = "\xc8\x2e", [20130] = "\xde\xec", + [20131] = "\xc8\x2f", [20134] = "\xcd\xcf", [20135] = "\xde\xe7", + [20138] = "\xc5\xae", [20139] = "\xc8\x30", [20141] = "\xde\xe9", + [20143] = "\xc8\x31", [20144] = "\xc8\x32", [20145] = "\xc8\x33", + [20146] = "\xde\xf1", [20147] = "\xc8\x34", [20148] = "\xde\xeb", + [20149] = "\xcc\xc7", [20151] = "\xc8\x35", [20152] = "\xc8\x36", + [20153] = "\xde\xe6", [20154] = "\xc8\x37", [20155] = "\xbc\xa2", + [20156] = "\xde\xfe", [20157] = "\xc8\x38", [20158] = "\xc8\x39", + [20159] = "\xc8\x3a", [20161] = "\xb3\xea", [20163] = "\xde\xe8", + [20164] = "\xde\xed", [20165] = "\xde\xee", [20173] = "\xc2\xec", + [20174] = "\xc2\xda", [20187] = "\xc8\x3b", [20188] = "\xde\xf6", + [20189] = "\xc8\x3c", [20190] = "\xc8\x3d", [20191] = "\xde\xfc", + [20194] = "\xde\xfa", [20196] = "\xc5\xa9", [20199] = "\xdf\xa3", + [20200] = "\xde\xf7", [20201] = "\xc8\x3e", [20203] = "\xc8\x3f", + [20205] = "\xc8\x40", [20206] = "\xde\xf8", [20207] = "\xde\xe0", + [20209] = "\xb5\xf9", [20210] = "\xc9\xba", [20212] = "\xc8\x41", + [20214] = "\xbc\xbf", [20216] = "\xc8\x42", [20217] = "\xb9\xf7", + [20218] = "\xc8\x43", [20220] = "\xc8\x44", [20221] = "\xc8\x45", + [20223] = "\xcf\xb3", [20225] = "\xde\xf4", [20227] = "\xdf\xa2", + [20228] = "\xb1\xe9", [20229] = "\xc1\xe6", [20230] = "\xc8\x46", + [20232] = "\xc8\x47", [20234] = "\xc8\x48", [20235] = "\xc8\x49", + [20240] = "\xc7\xf9", [20242] = "\xb4\xc1", [20243] = "\xce\xfa", + [20246] = "\xc8\x4a", [20249] = "\xc8\x4b", [20250] = "\xc8\x4c", + [20251] = "\xcc\xa1", [20252] = "\xc4\xd2", [20253] = "\xc8\x53", + [20255] = "\xc8\x4d", [20256] = "\xc8\x4e", [20257] = "\xde\xfb", + [20258] = "\xde\xfd", [20259] = "\xc8\x4f", [20262] = "\xc8\x50", + [20264] = "\xc1\xb2", [20267] = "\xc8\x51", [20268] = "\xc8\x52", + [20270] = "\xdf\xa1", [20271] = "\xde\xf9", [20273] = "\xde\xf3", + [20277] = "\xb4\xc3", [20287] = "\xc8\x54", [20289] = "\xc8\x55", + [20290] = "\xc8\x56", [20291] = "\xc8\x57", [20292] = "\xb7\xe9", + [20295] = "\xc8\x58", [20296] = "\xdf\xaf", [20297] = "\xc8\x59", + [20298] = "\xc8\x5a", [20299] = "\xdf\xaa", [20300] = "\xc0\xf8", + [20301] = "\xc8\x5b", [20302] = "\xc8\x5c", [20303] = "\xb3\xe3", + [20305] = "\xc8\x5d", [20306] = "\xc8\x5e", [20308] = "\xbd\xe1", + [20310] = "\xdf\xb3", [20312] = "\xc8\x5f", [20316] = "\xc8\x60", + [20317] = "\xdf\xac", [20318] = "\xc4\xac", [20319] = "\xdf\xa9", + [20320] = "\xc4\xd9", [20324] = "\xdf\xcc", [20328] = "\xdf\xa6", + [20330] = "\xdf\xa5", [20332] = "\xdf\xae", [20333] = "\xc8\x61", + [20334] = "\xc8\x62", [20336] = "\xdf\xa8", [20337] = "\xdf\xa7", + [20338] = "\xdf\xad", [20339] = "\xc8\x63", [20340] = "\xc0\xa1", + [20342] = "\xdf\xa4", [20343] = "\xc8\x64", [20344] = "\xc8\x65", + [20347] = "\xc8\x66", [20348] = "\xc8\x67", [20349] = "\xc8\x68", + [20350] = "\xdf\xb0", [20352] = "\xc8\x69", [20353] = "\xdf\xb1", + [20354] = "\xc8\x6a", [20355] = "\xc8\x6b", [20356] = "\xc8\x6c", + [20358] = "\xc8\x6d", [20359] = "\xb4\xc2", [20362] = "\xc8\x6e", + [20367] = "\xc8\x6f", [20368] = "\xc8\x70", [20369] = "\xdf\xb6", + [20371] = "\xdf\xb5", [20372] = "\xdf\xb7", [20373] = "\xc8\x71", + [20374] = "\xc8\x72", [20375] = "\xc8\x73", [20376] = "\xc8\x74", + [20378] = "\xdf\xba", [20382] = "\xc8\x75", [20383] = "\xc8\x76", + [20384] = "\xc8\x77", [20385] = "\xc5\xc3", [20387] = "\xdf\xb4", + [20389] = "\xc8\x78", [20390] = "\xc8\x79", [20393] = "\xdf\xb8", + [20396] = "\xc8\x7a", [20400] = "\xb7\xe3", [20401] = "\xc2\xf9", + [20402] = "\xdf\xb2", [20403] = "\xc7\xbb", [20405] = "\xc8\x7b", + [20406] = "\xdf\xb9", [20407] = "\xc8\x7c", [20408] = "\xc8\x7d", + [20410] = "\xc8\x7e", [20420] = "\xdf\xbe", [20421] = "\xdf\xbc", + [20424] = "\xdf\xbf", [20426] = "\xc9\x21", [20427] = "\xdf\xc2", + [20430] = "\xc9\x22", [20431] = "\xdf\xbb", [20432] = "\xb9\xea", + [20433] = "\xc7\xa8", [20436] = "\xde\xb9", [20440] = "\xc9\x23", + [20441] = "\xc9\x24", [20443] = "\xcd\xf4", [20444] = "\xdf\xbd", + [20446] = "\xdf\xc1", [20447] = "\xc2\xf5", [20448] = "\xc9\x25", + [20449] = "\xdf\xc0", [20451] = "\xdf\xab", [20453] = "\xc9\x26", + [20454] = "\xef\xe9", [20457] = "\xc9\x27", [20458] = "\xdf\xc5", + [20460] = "\xc9\x28", [20461] = "\xc9\x29", [20462] = "\xdf\xc9", + [20464] = "\xc9\x2a", [20465] = "\xdf\xc7", [20469] = "\xc9\x2b", + [20470] = "\xc9\x2c", [20471] = "\xc9\x2d", [20473] = "\xdf\xc3", + [20475] = "\xdf\xc4", [20477] = "\xc9\x2e", [20479] = "\xdf\xc8", + [20481] = "\xdf\xc6", [20485] = "\xc9\xce", [20487] = "\xc9\x2f", + [20488] = "\xdf\xce", [20490] = "\xdf\xcb", [20491] = "\xdf\xca", + [20493] = "\xdf\xcd", [20494] = "\xc6\xd4", [20495] = "\xdf\xcf", + [20496] = "\xc9\x30", [20499] = "\xc9\x31", [20502] = "\xc3\xf5", + [20503] = "\xc2\xed", [20504] = "\xf4\x4d", [20508] = "\xc0\xa5", + [20511] = "\xc9\x32", [20512] = "\xdf\xd0", [20514] = "\xdf\xd2", + [20516] = "\xc9\x33", [20519] = "\xc9\x34", [20521] = "\xc9\x35", + [20524] = "\xc9\x36", [20526] = "\xdf\xd1", [20531] = "\xc9\x37", + [20532] = "\xc9\x38", [20536] = "\xc9\x39", [20537] = "\xc9\x3a", + [20538] = "\xc9\x3b", [20539] = "\xc9\x3c", [20540] = "\xde\xf5", + [20542] = "\xc9\x41", [20545] = "\xdf\xd3", [20548] = "\xc9\x3d", + [20549] = "\xc9\x3e", [20552] = "\xc6\xe7", [20557] = "\xc9\x3f", + [20558] = "\xc9\x40", [20563] = "\xdf\xd4", [20564] = "\xc9\x42", + [20565] = "\xc9\x43", [20571] = "\xb2\xd0", [20572] = "\xc9\x44", + [20574] = "\xc9\x45", [20575] = "\xc5\xf4", [20576] = "\xb3\xa5", + [20581] = "\xc9\x46", [20582] = "\xc9\x47", [20584] = "\xb5\xe4", + [20588] = "\xbc\xde", [20589] = "\xba\xd2", [20590] = "\xc9\x48", + [20593] = "\xc9\x49", [20597] = "\xc9\x4a", [20598] = "\xc9\x4b", + [20601] = "\xcf\xa7", [20602] = "\xbf\xe6", [20606] = "\xb1\xea", + [20610] = "\xdf\xd6", [20612] = "\xc9\x4c", [20613] = "\xc9\x4d", + [20614] = "\xc9\x4e", [20615] = "\xc9\x4f", [20616] = "\xc9\x50", + [20617] = "\xdf\xd5", [20619] = "\xc9\x51", [20628] = "\xc9\x52", + [20635] = "\xc9\x53", [20636] = "\xdf\xd9", [20637] = "\xc3\xba", + [20638] = "\xdf\xdc", [20639] = "\xdf\xd7", [20640] = "\xc9\x54", + [20641] = "\xc9\x55", [20643] = "\xdf\xdb", [20644] = "\xc9\x56", + [20647] = "\xc9\x57", [20648] = "\xdf\xda", [20649] = "\xc5\xc0", + [20650] = "\xb0\xd9", [20651] = "\xf4\x2e", [20664] = "\xce\xf5", + [20666] = "\xc9\x58", [20667] = "\xdf\xde", [20671] = "\xb1\xa8", + [20673] = "\xc9\x59", [20675] = "\xc9\x5a", [20676] = "\xc9\x5b", + [20677] = "\xc9\x5c", [20678] = "\xc9\x5d", [20680] = "\xc9\x5e", + [20681] = "\xdf\xe0", [20684] = "\xc9\x5f", [20685] = "\xdf\xdf", + [20687] = "\xdf\xdd", [20692] = "\xc9\x60", [20705] = "\xdf\xd8", + [20713] = "\xcb\xa3", [20714] = "\xc9\x61", [20717] = "\xdf\xe2", + [20723] = "\xc9\x62", [20724] = "\xc9\x63", [20725] = "\xc9\x64", + [20726] = "\xc9\x65", [20727] = "\xc9\x66", [20729] = "\xdf\xe1", + [20731] = "\xc9\x67", [20732] = "\xc9\x68", [20735] = "\xc9\x69", + [20740] = "\xb1\xeb", [20745] = "\xdf\xe4", [20746] = "\xca\xb2", + [20748] = "\xdf\xe3", [20750] = "\xc9\x6a", [20752] = "\xc9\x6b", + [20753] = "\xcc\xb5", [20758] = "\xbe\xc7", [20763] = "\xc9\x6c", + [20765] = "\xc9\x6d", [20767] = "\xc9\x6e", [20768] = "\xc9\x6f", + [20769] = "\xc9\x70", [20774] = "\xc1\xb3", [20776] = "\xc9\x71", + [20780] = "\xbe\xc6", [20785] = "\xc9\x72", [20789] = "\xc9\x73", + [20790] = "\xc9\x74", [20791] = "\xc9\x75", [20793] = "\xce\xfb", + [20794] = "\xc9\x76", [20795] = "\xc9\x77", [20796] = "\xdf\xea", + [20798] = "\xc0\xf9", [20800] = "\xc9\x78", [20802] = "\xc9\x79", + [20805] = "\xdf\xe6", [20806] = "\xdf\xeb", [20807] = "\xc9\x7a", + [20809] = "\xb1\xec", [20810] = "\xc9\x7b", [20812] = "\xc9\x7c", + [20814] = "\xc9\x7d", [20816] = "\xc9\x7e", [20818] = "\xdf\xe9", + [20820] = "\xc7\xe1", [20821] = "\xdf\xe5", [20822] = "\xdf\xe8", + [20823] = "\xbe\xc8", [20824] = "\xca\x21", [20825] = "\xc8\xd1", + [20828] = "\xdf\xec", [20830] = "\xbc\xd1", [20841] = "\xca\x22", + [20845] = "\xc0\xfa", [20848] = "\xca\x23", [20852] = "\xdf\xef", + [20853] = "\xca\x24", [20855] = "\xca\x25", [20856] = "\xdf\xe7", + [20858] = "\xb7\xa7", [20860] = "\xca\x26", [20863] = "\xdf\xed", + [20866] = "\xca\x27", [20868] = "\xcd\xd0", [20869] = "\xdf\xf0", + [20873] = "\xf4\xa6", [20874] = "\xca\x28", [20875] = "\xca\x29", + [20879] = "\xbd\xcf", [20880] = "\xca\x2a", [20882] = "\xca\x2b", + [20888] = "\xdf\xf1", [20892] = "\xdf\xf2", [20895] = "\xca\x2c", + [20896] = "\xca\x2d", [20897] = "\xc7\xae", [20898] = "\xca\x2e", + [20899] = "\xca\x2f", [20905] = "\xdf\xf4", [20906] = "\xca\x30", + [20910] = "\xdf\xf5", [20911] = "\xca\x31", [20912] = "\xca\x32", + [20913] = "\xca\x33", [20915] = "\xc7\xb3", [20916] = "\xca\x34", + [20920] = "\xc5\xf5", [20921] = "\xdf\xf7", [20923] = "\xca\x35", + [20924] = "\xca\x36", [20926] = "\xdf\xf9", [20928] = "\xce\xd5", + [20930] = "\xdf\xf6", [20931] = "\xca\x37", [20932] = "\xdf\xf8", + [20933] = "\xb1\xed", [20934] = "\xca\x38", [20935] = "\xdf\xf3", + [20937] = "\xca\x39", [20938] = "\xca\x3a", [20940] = "\xca\x3b", + [20943] = "\xd3\xdb", [20944] = "\xdf\xfa", [20949] = "\xc1\xe7", + [20950] = "\xbb\xb8", [20951] = "\xdf\xfc", [20956] = "\xdf\xfb", + [20957] = "\xbf\xa4", [20958] = "\xd2\xd9", [20965] = "\xdf\xfd", + [20968] = "\xca\x3c", [20969] = "\xe0\xa1", [20971] = "\xdf\xee", + [20972] = "\xdf\xfe", [20974] = "\xca\x3d", [20975] = "\xe0\xa2", + [20976] = "\xca\x3e", [20982] = "\xc7\xfa", [20983] = "\xca\x3f", + [20984] = "\xca\x40", [20985] = "\xca\x41", [20989] = "\xe0\xa3", + [20992] = "\xe0\xa4", [20995] = "\xca\x42", [20999] = "\xca\x43", + [21002] = "\xca\x44", [21003] = "\xe0\xa5", [21005] = "\xca\x45", + [21007] = "\xca\x46", [21012] = "\xca\x47", [21016] = "\xe0\xa6", + [21018] = "\xc4\xde", [21019] = "\xca\x48", [21020] = "\xe0\xa8", + [21021] = "\xe0\xa7", [21023] = "\xca\x49", [21024] = "\xe0\xa9", + [21026] = "\xe0\xaa", [21028] = "\xca\x4a", [21029] = "\xbc\xdf", + [21030] = "\xc9\xe3", [21032] = "\xca\x4b", [21033] = "\xca\x4c", + [21034] = "\xcc\xec", [21035] = "\xe0\xab", [21036] = "\xe0\xac", + [21037] = "\xc1\xd6", [21038] = "\xbc\xa4", [21039] = "\xe0\xad", + [21040] = "\xe0\xae", [21041] = "\xca\x4d", [21042] = "\xca\x4e", + [21043] = "\xca\x4f", [21045] = "\xca\x50", [21046] = "\xe0\xaf", + [21047] = "\xca\xd2", [21048] = "\xc8\xc7", [21051] = "\xe0\xb0", + [21052] = "\xc7\xd7", [21054] = "\xca\x51", [21055] = "\xca\x52", + [21056] = "\xca\x53", [21058] = "\xc4\xad", [21059] = "\xca\x54", + [21061] = "\xca\x55", [21062] = "\xca\x56", [21064] = "\xe0\xb1", + [21065] = "\xb2\xe7", [21066] = "\xca\x57", [21067] = "\xb5\xed", + [21068] = "\xca\x58", [21069] = "\xcc\xc6", [21070] = "\xca\x59", + [21071] = "\xcc\xb6", [21072] = "\xca\x5a", [21073] = "\xb2\xb4", + [21074] = "\xcf\xb4", [21075] = "\xca\x5b", [21079] = "\xcb\xd2", + [21080] = "\xca\x5c", [21081] = "\xca\xaa", [21083] = "\xca\x5d", + [21086] = "\xca\x5e", [21087] = "\xca\x5f", [21089] = "\xca\x60", + [21090] = "\xc0\xb7", [21092] = "\xe0\xb2", [21095] = "\xca\x61", + [21096] = "\xca\x62", [21097] = "\xc6\xc3", [21099] = "\xca\x63", + [21100] = "\xca\x64", [21101] = "\xb8\xa3", [21102] = "\xe0\xb3", + [21103] = "\xca\x65", [21104] = "\xba\xd4", [21105] = "\xe0\xb5", + [21106] = "\xe0\xb4", [21108] = "\xca\x66", [21111] = "\xe0\xb6", + [21113] = "\xca\x67", [21117] = "\xca\x68", [21118] = "\xca\x69", + [21122] = "\xe0\xb7", [21123] = "\xca\x6a", [21126] = "\xe0\xb8", + [21131] = "\xca\x6b", [21136] = "\xb5\xbe", [21138] = "\xe0\xb9", + [21143] = "\xe0\xba", [21144] = "\xca\x6c", [21148] = "\xb8\xa4", + [21149] = "\xca\x6d", [21150] = "\xca\x6e", [21151] = "\xc8\xc8", + [21153] = "\xca\x6f", [21154] = "\xe0\xbc", [21156] = "\xca\x70", + [21158] = "\xbe\xf5", [21161] = "\xe0\xbb", [21166] = "\xca\x71", + [21169] = "\xca\x72", [21170] = "\xb6\xb8", [21171] = "\xe0\xbd", + [21172] = "\xe0\xbf", [21174] = "\xe0\xbe", [21175] = "\xca\x73", + [21177] = "\xca\x74", [21180] = "\xca\x75", [21182] = "\xe0\xc0", + [21184] = "\xb8\xd1", [21186] = "\xe0\xc1", [21189] = "\xca\x76", + [21190] = "\xca\x77", [21191] = "\xb6\xe9", [21192] = "\xca\x78", + [21193] = "\xc1\xc0", [21195] = "\xb9\xfd", [21199] = "\xca\x79", + [21200] = "\xe0\xc3", [21201] = "\xe0\xc4", [21202] = "\xe0\xc2", + [21205] = "\xca\x7a", [21209] = "\xbc\xed", [21212] = "\xc6\xc8", + [21213] = "\xb6\xb9", [21219] = "\xca\x7b", [21220] = "\xca\x7c", + [21223] = "\xe0\xc6", [21224] = "\xc3\xac", [21225] = "\xe0\xc5", + [21226] = "\xca\x7d", [21227] = "\xca\x7e", [21228] = "\xcf\xb5", + [21229] = "\xc7\xe2", [21230] = "\xcb\x21", [21234] = "\xcb\x22", + [21236] = "\xcb\x23", [21237] = "\xcb\x24", [21239] = "\xcb\x25", + [21242] = "\xe0\xc9", [21243] = "\xcb\x26", [21245] = "\xcb\x27", + [21250] = "\xcb\x28", [21251] = "\xcb\x29", [21254] = "\xe0\xcb", + [21255] = "\xe0\xc8", [21256] = "\xcb\x2a", [21257] = "\xcb\x2b", + [21259] = "\xcc\xd4", [21260] = "\xe0\xca", [21261] = "\xe0\xcc", + [21262] = "\xcb\x2c", [21263] = "\xce\xc4", [21266] = "\xcb\x2d", + [21268] = "\xcb\x2e", [21269] = "\xe0\xd0", [21271] = "\xcb\x2f", + [21272] = "\xcb\x30", [21273] = "\xe0\xcf", [21274] = "\xc3\xf6", + [21275] = "\xc7\xad", [21276] = "\xcb\x31", [21278] = "\xb8\xa5", + [21279] = "\xe0\xce", [21281] = "\xcb\x32", [21282] = "\xcb\x33", + [21284] = "\xe0\xcd", [21285] = "\xcb\x34", [21286] = "\xcd\xb1", + [21287] = "\xcd\xb2", [21290] = "\xcb\x35", [21291] = "\xcb\x36", + [21293] = "\xcb\x37", [21294] = "\xe0\xd1", [21295] = "\xb1\xee", + [21299] = "\xcb\x38", [21300] = "\xb9\xf6", [21301] = "\xbb\xe2", + [21309] = "\xcb\x39", [21310] = "\xe0\xd2", [21311] = "\xe0\xd3", + [21312] = "\xcb\x3a", [21314] = "\xcb\x3b", [21318] = "\xcb\x3c", + [21319] = "\xe0\xd5", [21320] = "\xcb\x3d", [21325] = "\xcb\x3e", + [21326] = "\xcb\x3f", [21327] = "\xcb\x40", [21328] = "\xcb\x41", + [21331] = "\xbd\xc3", [21334] = "\xcb\x42", [21335] = "\xcb\x43", + [21336] = "\xe0\xd7", [21337] = "\xcb\x44", [21338] = "\xe0\xd6", + [21339] = "\xcb\x45", [21340] = "\xcb\x46", [21342] = "\xcb\x47", + [21343] = "\xcb\x48", [21344] = "\xe0\xd8", [21345] = "\xcb\x49", + [21346] = "\xb3\xcd", [21349] = "\xe0\xda", [21351] = "\xcb\x4a", + [21352] = "\xe0\xd9", [21353] = "\xcb\x4b", [21354] = "\xe0\xdc", + [21355] = "\xe0\xdb", [21356] = "\xcb\x4c", [21360] = "\xcb\x4d", + [21361] = "\xcb\x4e", [21363] = "\xcb\x4f", [21364] = "\xb8\xbc", + [21365] = "\xcb\x50", [21366] = "\xcb\x51", [21367] = "\xce\xa8", + [21369] = "\xb6\xcc", [21371] = "\xb2\xa6", [21374] = "\xcb\x52", + [21376] = "\xcb\x53", [21379] = "\xcb\x54", [21381] = "\xcb\x55", + [21382] = "\xb6\xea", [21383] = "\xcb\x56", [21384] = "\xcb\x57", + [21388] = "\xcb\x58", [21390] = "\xcb\x59", [21391] = "\xcb\x5a", + [21392] = "\xcb\x5b", [21394] = "\xcb\x5c", [21397] = "\xcb\x5d", + [21398] = "\xcb\x5e", [21401] = "\xb4\xe1", [21402] = "\xcb\x5f", + [21403] = "\xcb\x60", [21405] = "\xcb\x61", [21410] = "\xce\xe8", + [21411] = "\xe0\xde", [21413] = "\xcb\x62", [21415] = "\xcb\x63", + [21417] = "\xcb\x64", [21419] = "\xe0\xe0", [21420] = "\xcb\x65", + [21421] = "\xcb\x66", [21423] = "\xcb\x67", [21424] = "\xe0\xe1", + [21426] = "\xb2\xd1", [21429] = "\xcb\x68", [21430] = "\xcb\x69", + [21432] = "\xe0\xdd", [21433] = "\xcb\x6a", [21434] = "\xbb\xb9", + [21435] = "\xcb\x6b", [21436] = "\xcb\x6c", [21437] = "\xc4\xc1", + [21438] = "\xe0\xdf", [21439] = "\xcb\x6d", [21442] = "\xcb\x6e", + [21443] = "\xcb\x6f", [21446] = "\xcb\x70", [21449] = "\xcb\x71", + [21453] = "\xcb\x72", [21454] = "\xe0\xe4", [21456] = "\xbc\xee", + [21457] = "\xcb\x73", [21459] = "\xcb\x74", [21461] = "\xe0\xe2", + [21462] = "\xcb\x75", [21463] = "\xcb\x76", [21465] = "\xcb\x77", + [21466] = "\xb7\xbe", [21469] = "\xc8\xc9", [21470] = "\xe0\xe3", + [21473] = "\xe0\xfe", [21476] = "\xcb\x78", [21477] = "\xcb\x79", + [21479] = "\xcb\x7a", [21480] = "\xe0\xe9", [21481] = "\xcb\x7b", + [21482] = "\xcb\x7c", [21483] = "\xcb\x7d", [21485] = "\xcb\x7e", + [21486] = "\xb8\xbd", [21487] = "\xcc\x21", [21488] = "\xcc\x22", + [21489] = "\xcc\x23", [21491] = "\xb5\xe5", [21492] = "\xcc\x24", + [21493] = "\xe0\xe6", [21494] = "\xcd\xfd", [21495] = "\xcc\x25", + [21497] = "\xce\xb0", [21498] = "\xcc\x26", [21505] = "\xcc\x27", + [21514] = "\xcc\x28", [21515] = "\xcc\x29", [21522] = "\xc2\xf6", + [21524] = "\xcc\x2a", [21525] = "\xe0\xe8", [21526] = "\xcc\x2b", + [21528] = "\xcc\x2c", [21529] = "\xcc\x2d", [21530] = "\xcc\x2e", + [21531] = "\xcc\x2f", [21532] = "\xcc\x30", [21533] = "\xcc\x31", + [21534] = "\xcc\x32", [21535] = "\xcc\x33", [21536] = "\xcc\x34", + [21537] = "\xcc\x35", [21538] = "\xe0\xea", [21539] = "\xce\xd6", + [21540] = "\xb6\xd7", [21541] = "\xc8\xfc", [21542] = "\xc7\xca", + [21545] = "\xcc\x36", [21546] = "\xe0\xeb", [21551] = "\xe0\xed", + [21552] = "\xcc\x37", [21553] = "\xe0\xf0", [21555] = "\xcc\x38", + [21556] = "\xcc\x39", [21558] = "\xcc\x3a", [21559] = "\xcc\x3b", + [21563] = "\xcc\x3c", [21565] = "\xcc\x3d", [21569] = "\xcc\x3e", + [21570] = "\xcc\x3f", [21573] = "\xe0\xec", [21575] = "\xcc\x40", + [21577] = "\xe0\xef", [21578] = "\xb8\xea", [21579] = "\xb1\xcd", + [21580] = "\xe0\xf1", [21581] = "\xcc\x41", [21582] = "\xbf\xf0", + [21583] = "\xe0\xee", [21584] = "\xce\xdc", [21586] = "\xcc\x42", + [21587] = "\xe0\xf4", [21588] = "\xf4\xa4", [21590] = "\xcc\x43", + [21591] = "\xcc\x44", [21592] = "\xcc\x45", [21593] = "\xe0\xf2", + [21594] = "\xe0\xf5", [21595] = "\xcc\x46", [21597] = "\xcc\x47", + [21598] = "\xcc\x48", [21599] = "\xe0\xe7", [21600] = "\xe0\xf3", + [21601] = "\xcc\x49", [21602] = "\xcc\x4a", [21603] = "\xba\xbc", + [21606] = "\xe0\xf6", [21614] = "\xe0\xf7", [21616] = "\xcc\x4b", + [21617] = "\xcc\x4c", [21619] = "\xcd\xfe", [21621] = "\xcc\x4d", + [21622] = "\xcc\x4e", [21623] = "\xcc\x4f", [21625] = "\xcc\x50", + [21627] = "\xe0\xf8", [21631] = "\xcc\x51", [21632] = "\xcc\x52", + [21633] = "\xcc\x53", [21634] = "\xcc\x54", [21640] = "\xcc\x55", + [21641] = "\xcc\x56", [21642] = "\xcc\x57", [21644] = "\xcc\x58", + [21646] = "\xe0\xf9", [21647] = "\xcc\x59", [21648] = "\xcc\x5a", + [21649] = "\xcc\x5b", [21650] = "\xe0\xe5", [21651] = "\xcc\x5c", + [21654] = "\xcc\x5d", [21655] = "\xe0\xfa", [21656] = "\xcc\x5e", + [21657] = "\xcc\x5f", [21658] = "\xcc\x60", [21659] = "\xcc\x61", + [21662] = "\xcc\x62", [21663] = "\xcc\x63", [21664] = "\xb4\xc4", + [21665] = "\xcc\x64", [21666] = "\xcc\x65", [21669] = "\xcc\x66", + [21673] = "\xcc\x67", [21675] = "\xcc\x68", [21677] = "\xbc\xa5", + [21679] = "\xcc\x69", [21688] = "\xcc\x6a", [21689] = "\xcc\x6b", + [21690] = "\xe0\xfb", [21692] = "\xcc\x6c", [21695] = "\xe0\xfc", + [21696] = "\xcc\x6d", [21699] = "\xcc\x6e", [21700] = "\xe0\xfd", + [21704] = "\xcc\x6f", [21706] = "\xcc\x70", [21707] = "\xcc\x71", + [21708] = "\xb1\xbb", [21710] = "\xcc\x72", [21711] = "\xcc\x73", + [21712] = "\xe1\xa1", [21714] = "\xc9\xbb", [21715] = "\xe1\xa2", + [21716] = "\xcc\x74", [21718] = "\xb4\xa4", [21719] = "\xe1\xa3", + [21720] = "\xcc\x75", [21721] = "\xe1\xa4", [21722] = "\xcc\x76", + [21723] = "\xcc\x77", [21726] = "\xe1\xa5", [21727] = "\xcc\x78", + [21728] = "\xe1\xa7", [21729] = "\xe1\xa8", [21730] = "\xe1\xa6", + [21732] = "\xcc\x79", [21734] = "\xc9\xd3", [21735] = "\xe1\xaa", + [21736] = "\xe1\xa9", [21738] = "\xcc\x7a", [21739] = "\xcc\x7b", + [21740] = "\xcc\x7c", [21743] = "\xcc\x7d", [21745] = "\xf4\x50", + [21747] = "\xe1\xac", [21748] = "\xe1\xab", [21749] = "\xe1\xad", + [21750] = "\xcc\x7e", [21756] = "\xe1\xae", [21757] = "\xe1\xb0", + [21758] = "\xe1\xaf", [21761] = "\xb9\xf9", [21762] = "\xcd\x21", + [21763] = "\xe1\xb2", [21765] = "\xe1\xb1", [21766] = "\xcd\x22", + [21767] = "\xcd\x23", [21768] = "\xb4\xc5", [21770] = "\xbf\xd3", + [21772] = "\xc5\xbc", [21774] = "\xe1\xb3", [21775] = "\xc0\xb8", + [21776] = "\xcd\x24", [21777] = "\xcd\x25", [21779] = "\xbb\xba", + [21780] = "\xcd\x26", [21781] = "\xb1\xf9", [21782] = "\xe1\xb4", + [21783] = "\xcd\x27", [21784] = "\xcd\xd1", [21785] = "\xcd\x28", + [21786] = "\xcd\x29", [21787] = "\xca\xe3", [21788] = "\xe1\xb5", + [21791] = "\xcd\x2a", [21792] = "\xc5\xc4", [21793] = "\xcd\xb3", + [21794] = "\xb9\xc3", [21795] = "\xbf\xbd", [21798] = "\xcd\x2b", + [21799] = "\xc3\xcb", [21800] = "\xd2\xb4", [21801] = "\xcd\x2c", + [21802] = "\xc4\xae", [21803] = "\xb2\xe8", [21804] = "\xe1\xb6", + [21805] = "\xcd\x2d", [21806] = "\xcd\x2e", [21807] = "\xcd\x2f", + [21808] = "\xcd\x30", [21811] = "\xcd\x31", [21812] = "\xe1\xb7", + [21814] = "\xe1\xbc", [21815] = "\xcd\x32", [21816] = "\xcd\x33", + [21817] = "\xe1\xba", [21818] = "\xe1\xb9", [21819] = "\xda\xc2", + [21820] = "\xb3\xa6", [21821] = "\xe1\xb8", [21822] = "\xcd\x34", + [21823] = "\xb0\xda", [21824] = "\xcd\x35", [21825] = "\xc8\xaa", + [21826] = "\xcd\x36", [21828] = "\xc8\xca", [21831] = "\xcd\x37", + [21833] = "\xce\xb1", [21834] = "\xe1\xbd", [21835] = "\xe1\xbb", + [21836] = "\xc3\xdc", [21837] = "\xc0\xa6", [21838] = "\xcd\x38", + [21839] = "\xcd\x39", [21840] = "\xc8\xab", [21841] = "\xcd\x3a", + [21842] = "\xc9\xad", [21844] = "\xe1\xbf", [21845] = "\xce\xac", + [21846] = "\xb7\xcd", [21847] = "\xe1\xc0", [21849] = "\xe1\xbe", + [21850] = "\xc8\xd6", [21851] = "\xe1\xc1", [21853] = "\xe1\xc2", + [21855] = "\xcd\x3b", [21856] = "\xb0\xdb", [21857] = "\xcd\x3c", + [21859] = "\xbe\xf6", [21860] = "\xe1\xc7", [21862] = "\xe1\xc4", + [21863] = "\xc6\xed", [21864] = "\xe1\xc3", [21865] = "\xcd\x3d", + [21866] = "\xcd\x3e", [21867] = "\xcd\x3f", [21868] = "\xcd\x40", + [21869] = "\xcd\x41", [21870] = "\xcd\x42", [21871] = "\xb5\xa6", + [21873] = "\xcd\x43", [21874] = "\xe1\xca", [21877] = "\xcd\x44", + [21878] = "\xe1\xc5", [21879] = "\xe1\xc6", [21881] = "\xe1\xc9", + [21882] = "\xe1\xc8", [21883] = "\xc9\xa5", [21886] = "\xc1\xc2", + [21887] = "\xc1\xc1", [21888] = "\xcd\x45", [21889] = "\xb5\xbf", + [21890] = "\xcd\x46", [21891] = "\xcd\x47", [21892] = "\xe1\xcb", + [21893] = "\xcd\x48", [21897] = "\xcd\x49", [21898] = "\xe1\xcc", + [21900] = "\xcd\x4a", [21901] = "\xe1\xcd", [21906] = "\xcd\x4b", + [21907] = "\xe1\xcf", [21908] = "\xcd\x4c", [21909] = "\xe1\xce", + [21915] = "\xb1\xd6", [21921] = "\xe1\xd7", [21922] = "\xc8\xe8", + [21923] = "\xe1\xd1", [21924] = "\xcd\x4d", [21925] = "\xe1\xd3", + [21928] = "\xe1\xd5", [21929] = "\xbf\xbe", [21930] = "\xcd\x4e", + [21932] = "\xe1\xd6", [21933] = "\xe1\xd4", [21934] = "\xbc\xc0", + [21935] = "\xcd\x4f", [21936] = "\xcd\x50", [21937] = "\xcd\x51", + [21938] = "\xe1\xd0", [21939] = "\xe1\xd2", [21940] = "\xcd\x52", + [21941] = "\xc9\xc2", [21942] = "\xcd\x53", [21943] = "\xbe\xc9", + [21946] = "\xe1\xd9", [21948] = "\xcd\x54", [21949] = "\xe1\xd8", + [21950] = "\xcd\x55", [21951] = "\xcd\x56", [21954] = "\xe1\xda", + [21956] = "\xbc\xa6", [21957] = "\xba\xaf", [21959] = "\xcd\x57", + [21960] = "\xc5\xf7", [21961] = "\xe1\xdb", [21963] = "\xc4\xcb", + [21964] = "\xcd\x58", [21966] = "\xe1\xdd", [21967] = "\xcd\x59", + [21968] = "\xcd\x5a", [21969] = "\xcd\x5b", [21970] = "\xce\xa1", + [21971] = "\xe1\xdc", [21972] = "\xcd\x5c", [21975] = "\xcd\x5d", + [21977] = "\xc1\xe9", [21980] = "\xcd\x5e", [21982] = "\xcd\x5f", + [21983] = "\xcd\x60", [21984] = "\xe1\xe2", [21985] = "\xcd\x61", + [21986] = "\xe1\xe4", [21987] = "\xe1\xe5", [21988] = "\xc3\xd4", + [21993] = "\xcd\x62", [21994] = "\xe1\xe3", [21996] = "\xe1\xe0", + [21998] = "\xe1\xde", [21999] = "\xe1\xdf", [22000] = "\xcd\x63", + [22001] = "\xe1\xe1", [22002] = "\xcd\x64", [22003] = "\xcd\x65", + [22004] = "\xcd\x66", [22007] = "\xcd\x67", [22008] = "\xcd\x68", + [22009] = "\xe1\xe8", [22010] = "\xcd\x69", [22011] = "\xe1\xe6", + [22012] = "\xcd\x6a", [22013] = "\xe1\xe7", [22015] = "\xcd\x6b", + [22018] = "\xcd\x6c", [22019] = "\xcd\x6d", [22021] = "\xcd\x6e", + [22022] = "\xcd\x6f", [22025] = "\xcd\x70", [22027] = "\xcd\x71", + [22028] = "\xcd\x72", [22029] = "\xcd\x73", [22030] = "\xcd\x74", + [22031] = "\xe1\xe9", [22032] = "\xe1\xeb", [22033] = "\xe1\xec", + [22034] = "\xe1\xed", [22035] = "\xcd\x75", [22036] = "\xe1\xee", + [22037] = "\xcd\x76", [22038] = "\xcd\x77", [22039] = "\xe1\xea", + [22041] = "\xcd\x78", [22045] = "\xcd\x79", [22048] = "\xe1\xf0", + [22050] = "\xcd\x7a", [22051] = "\xcd\x7b", [22052] = "\xe1\xef", + [22053] = "\xcd\x7c", [22056] = "\xcd\x7d", [22057] = "\xcd\x7e", + [22058] = "\xce\x21", [22059] = "\xe1\xf1", [22060] = "\xce\x22", + [22064] = "\xce\x24", [22065] = "\xce\x25", [22066] = "\xce\xc5", + [22067] = "\xce\x26", [22068] = "\xce\x27", [22069] = "\xce\x28", + [22070] = "\xe1\xf4", [22071] = "\xe1\xf2", [22072] = "\xe1\xf3", + [22073] = "\xce\x29", [22074] = "\xce\x23", [22075] = "\xce\x2a", + [22076] = "\xb4\xe2", [22082] = "\xcc\xfe", [22085] = "\xce\x2b", + [22086] = "\xca\xca", [22088] = "\xe1\xf6", [22089] = "\xce\x2c", + [22092] = "\xe1\xf5", [22095] = "\xce\x2d", [22097] = "\xe1\xf7", + [22098] = "\xe1\xf8", [22100] = "\xce\x2e", [22101] = "\xce\x2f", + [22103] = "\xe1\xfc", [22104] = "\xe1\xf9", [22105] = "\xe1\xfa", + [22106] = "\xe1\xfb", [22108] = "\xe1\xfd", [22109] = "\xce\x30", + [22110] = "\xce\x31", [22111] = "\xce\x32", [22112] = "\xe1\xfe", + [22113] = "\xce\x33", [22114] = "\xe2\xa1", [22116] = "\xce\x34", + [22118] = "\xe2\xa2", [22120] = "\xe2\xa3", [22122] = "\xc8\xaf", + [22123] = "\xc5\xd0", [22124] = "\xe2\xa4", [22125] = "\xc7\xf2", + [22126] = "\xc9\xb4", [22128] = "\xe2\xa5", [22129] = "\xce\x35", + [22130] = "\xf4\x51", [22131] = "\xe2\xa6", [22132] = "\xc5\xaa", + [22133] = "\xce\x36", [22134] = "\xb3\xa7", [22135] = "\xb9\xc4", + [22136] = "\xe2\xa7", [22139] = "\xe2\xa8", [22140] = "\xce\x37", + [22141] = "\xce\x38", [22142] = "\xe2\xa9", [22144] = "\xbb\xa9", + [22147] = "\xe2\xab", [22149] = "\xce\x39", [22150] = "\xe2\xaa", + [22153] = "\xe2\xac", [22154] = "\xe2\xad", [22155] = "\xce\x3a", + [22156] = "\xce\x3b", [22157] = "\xce\x3c", [22158] = "\xf4\x52", + [22159] = "\xce\x3d", [22160] = "\xce\x3e", [22162] = "\xce\x3f", + [22163] = "\xce\x40", [22164] = "\xce\x41", [22165] = "\xce\x42", + [22166] = "\xce\x43", [22167] = "\xce\x44", [22168] = "\xce\x45", + [22170] = "\xce\x46", [22173] = "\xce\x47", [22174] = "\xc8\xe9", + [22176] = "\xe2\xae", [22180] = "\xe2\xaf", [22183] = "\xf3\xe9", + [22184] = "\xe2\xb0", [22185] = "\xe2\xb1", [22186] = "\xe2\xb2", + [22189] = "\xce\x48", [22191] = "\xbb\xae", [22193] = "\xce\x49", + [22194] = "\xe2\xb3", [22195] = "\xc7\xd6", [22197] = "\xce\x4a", + [22198] = "\xcb\xdf", [22200] = "\xb1\xce", [22201] = "\xce\x4b", + [22202] = "\xb1\xd7", [22203] = "\xce\x4c", [22204] = "\xce\x4d", + [22205] = "\xe2\xb4", [22206] = "\xce\x4e", [22210] = "\xe2\xb6", + [22212] = "\xce\x4f", [22214] = "\xe2\xb5", [22215] = "\xc5\xf0", + [22217] = "\xce\x50", [22219] = "\xc0\xb9", [22220] = "\xdd\xb9", + [22222] = "\xe2\xb7", [22223] = "\xcc\xc1", [22224] = "\xce\x51", + [22225] = "\xe2\xb8", [22227] = "\xb4\xc6", [22228] = "\xc8\xd7", + [22229] = "\xe2\xb9", [22230] = "\xce\x52", [22231] = "\xe2\xba", + [22232] = "\xce\x53", [22234] = "\xe2\xbb", [22236] = "\xce\x54", + [22238] = "\xcc\xdc", [22240] = "\xce\x55", [22241] = "\xce\x56", + [22242] = "\xcc\xd5", [22244] = "\xc4\xbe", [22246] = "\xce\x57", + [22248] = "\xc1\xea", [22249] = "\xce\x58", [22251] = "\xe2\xbd", + [22252] = "\xce\x59", [22254] = "\xbd\xe2", [22256] = "\xce\x5a", + [22257] = "\xbe\xca", [22260] = "\xe2\xc0", [22262] = "\xce\x5b", + [22263] = "\xe2\xbf", [22264] = "\xe2\xbe", [22265] = "\xc8\xfd", + [22266] = "\xce\x5c", [22267] = "\xb4\xc7", [22268] = "\xb8\xa9", + [22270] = "\xce\x5d", [22274] = "\xce\x5e", [22276] = "\xce\x5f", + [22277] = "\xce\x60", [22279] = "\xce\x61", [22281] = "\xce\x62", + [22282] = "\xce\x63", [22283] = "\xe2\xc6", [22284] = "\xce\x64", + [22286] = "\xe2\xc3", [22287] = "\xbf\xbf", [22288] = "\xcc\xb2", + [22290] = "\xce\x65", [22292] = "\xe2\xc2", [22293] = "\xe2\xc4", + [22294] = "\xe2\xc5", [22296] = "\xce\x66", [22297] = "\xe2\xc1", + [22301] = "\xce\x67", [22302] = "\xce\x68", [22303] = "\xce\x69", + [22308] = "\xce\x6a", [22309] = "\xce\x6b", [22310] = "\xce\x6c", + [22311] = "\xe2\xc7", [22312] = "\xe2\xc8", [22313] = "\xce\x6d", + [22314] = "\xc4\xaf", [22316] = "\xb4\xe3", [22317] = "\xce\x6e", + [22318] = "\xce\x6f", [22320] = "\xc3\xe5", [22322] = "\xce\x70", + [22325] = "\xce\x71", [22326] = "\xce\x72", [22327] = "\xe2\xc9", + [22330] = "\xce\x73", [22333] = "\xce\x74", [22334] = "\xce\x75", + [22335] = "\xce\x76", [22338] = "\xce\x77", [22342] = "\xce\x78", + [22343] = "\xce\x79", [22346] = "\xe2\xca", [22347] = "\xe2\xcd", + [22348] = "\xce\x7a", [22350] = "\xce\x7b", [22351] = "\xce\x7c", + [22352] = "\xce\x7d", [22353] = "\xbf\xe7", [22354] = "\xce\x7e", + [22355] = "\xc6\xc4", [22356] = "\xcf\x21", [22357] = "\xe2\xce", + [22358] = "\xcb\xd3", [22359] = "\xcf\x22", [22360] = "\xe2\xcb", + [22362] = "\xcf\x23", [22363] = "\xe2\xcc", [22364] = "\xcf\x24", + [22368] = "\xcf\x25", [22370] = "\xcf\x26", [22371] = "\xcf\x27", + [22372] = "\xcf\x28", [22377] = "\xe2\xd1", [22378] = "\xcf\x29", + [22381] = "\xcf\x2a", [22382] = "\xe2\xd0", [22383] = "\xe2\xcf", + [22384] = "\xcf\x2b", [22388] = "\xcf\x2c", [22395] = "\xe2\xd3", + [22396] = "\xcf\x2d", [22397] = "\xcf\x2e", [22398] = "\xe2\xd2", + [22401] = "\xe2\xd4", [22404] = "\xcf\x2f", [22405] = "\xcf\x30", + [22406] = "\xcf\x31", [22410] = "\xcf\x32", [22414] = "\xe2\xd6", + [22415] = "\xcf\x33", [22416] = "\xe2\xd5", [22418] = "\xcf\x34", + [22421] = "\xca\xcd", [22423] = "\xcf\x35", [22426] = "\xcf\x36", + [22428] = "\xbd\xd6", [22429] = "\xce\xc6", [22430] = "\xcf\x37", + [22431] = "\xcf\x38", [22432] = "\xe2\xd7", [22433] = "\xcf\x39", + [22435] = "\xc6\xb7", [22437] = "\xcf\x3a", [22438] = "\xe2\xd8", + [22441] = "\xe2\xd9", [22443] = "\xe2\xdd", [22444] = "\xe2\xdb", + [22445] = "\xe2\xdc", [22446] = "\xcf\x3b", [22447] = "\xe2\xda", + [22451] = "\xcf\x3c", [22455] = "\xe2\xde", [22457] = "\xcf\x3d", + [22461] = "\xe2\xdf", [22465] = "\xcf\x3e", [22466] = "\xcf\x3f", + [22469] = "\xcf\x40", [22471] = "\xe2\xe0", [22473] = "\xcf\x41", + [22474] = "\xe2\xe1", [22475] = "\xcc\xb7", [22476] = "\xe2\xe2", + [22478] = "\xcf\x42", [22479] = "\xcf\x43", [22480] = "\xcf\x44", + [22482] = "\xcc\xf0", [22483] = "\xe2\xe3", [22484] = "\xcf\x45", + [22485] = "\xc3\xce", [22486] = "\xcf\x46", [22487] = "\xc7\xea", + [22489] = "\xb6\xeb", [22490] = "\xcf\x47", [22492] = "\xcf\x48", + [22493] = "\xc3\xbb", [22494] = "\xe2\xe4", [22495] = "\xb6\xba", + [22496] = "\xcf\x49", [22497] = "\xcf\x4a", [22499] = "\xc0\xd0", + [22500] = "\xcf\x4b", [22504] = "\xcf\x4c", [22507] = "\xcf\x4d", + [22508] = "\xe2\xe5", [22514] = "\xba\xbd", [22517] = "\xcf\x4e", + [22518] = "\xcf\x4f", [22521] = "\xcf\x50", [22524] = "\xe2\xe6", + [22525] = "\xcf\x51", [22526] = "\xcf\x52", [22529] = "\xcf\x53", + [22530] = "\xe2\xe7", [22532] = "\xb8\xa6", [22533] = "\xba\xd5", + [22541] = "\xcf\x54", [22544] = "\xe2\xe9", [22545] = "\xcf\x55", + [22546] = "\xcf\x56", [22547] = "\xcf\x57", [22549] = "\xc5\xd6", + [22550] = "\xba\xd6", [22551] = "\xb5\xce", [22557] = "\xcf\x58", + [22558] = "\xcf\x59", [22560] = "\xcf\x5a", [22562] = "\xcb\xa4", + [22564] = "\xc7\xcb", [22565] = "\xcf\x5b", [22567] = "\xcf\x5c", + [22570] = "\xc5\xd7", [22575] = "\xb9\xdc", [22579] = "\xcf\x5d", + [22580] = "\xcf\x5e", [22581] = "\xe2\xeb", [22583] = "\xcf\x5f", + [22584] = "\xcf\x60", [22588] = "\xcf\x61", [22590] = "\xcf\x62", + [22594] = "\xcf\x63", [22604] = "\xcf\x64", [22605] = "\xbe\xcb", + [22606] = "\xcf\x65", [22608] = "\xcf\x66", [22609] = "\xcf\x67", + [22611] = "\xcf\x68", [22612] = "\xcf\x69", [22616] = "\xcf\x6a", + [22618] = "\xcf\x6b", [22619] = "\xce\xb2", [22620] = "\xb9\xc5", + [22622] = "\xcf\x6c", [22623] = "\xb8\xa7", [22626] = "\xc8\xa3", + [22628] = "\xe2\xed", [22634] = "\xcf\x6d", [22636] = "\xe2\xef", + [22638] = "\xcf\x6e", [22641] = "\xb8\xeb", [22646] = "\xe2\xee", + [22647] = "\xc4\xf6", [22650] = "\xcf\x6f", [22652] = "\xe2\xf1", + [22653] = "\xb3\xb7", [22654] = "\xe2\xec", [22655] = "\xcf\x70", + [22657] = "\xc8\xea", [22659] = "\xb1\xb0", [22660] = "\xcf\x71", + [22661] = "\xba\xec", [22663] = "\xcf\xd2", [22664] = "\xcf\x72", + [22666] = "\xe2\xf0", [22669] = "\xcf\x74", [22670] = "\xcf\x75", + [22671] = "\xcf\x76", [22673] = "\xcf\x73", [22675] = "\xe2\xf2", + [22676] = "\xcf\x77", [22679] = "\xca\xcb", [22680] = "\xcf\x78", + [22681] = "\xc0\xd9", [22682] = "\xe2\xf4", [22684] = "\xcf\x79", + [22685] = "\xcf\x7a", [22687] = "\xe2\xf5", [22688] = "\xcf\x7b", + [22689] = "\xcf\x7c", [22690] = "\xcf\x7d", [22691] = "\xcf\x7e", + [22693] = "\xe2\xf3", [22698] = "\xb3\xce", [22699] = "\xd0\x21", + [22700] = "\xe2\xfb", [22701] = "\xd0\x22", [22702] = "\xe2\xfa", + [22703] = "\xd0\x23", [22705] = "\xbc\xa7", [22709] = "\xe2\xfc", + [22710] = "\xe2\xf7", [22711] = "\xd0\x24", [22712] = "\xd0\x25", + [22713] = "\xd0\x26", [22714] = "\xe2\xfd", [22715] = "\xe2\xf8", + [22716] = "\xd0\x27", [22718] = "\xd0\x28", [22720] = "\xc8\xd8", + [22721] = "\xe2\xf6", [22722] = "\xd0\x29", [22723] = "\xd0\x2a", + [22724] = "\xe2\xf9", [22725] = "\xd0\x2b", [22726] = "\xd0\x2c", + [22730] = "\xe3\xa2", [22731] = "\xd0\x2e", [22735] = "\xd0\x2f", + [22736] = "\xd0\x30", [22737] = "\xd0\x31", [22740] = "\xd0\x2d", + [22742] = "\xd0\x32", [22743] = "\xe3\xa1", [22744] = "\xcb\xe1", + [22746] = "\xd0\x33", [22748] = "\xe2\xfe", [22751] = "\xb0\xeb", + [22754] = "\xd0\x34", [22755] = "\xd0\x35", [22756] = "\xe3\xa4", + [22758] = "\xd0\x37", [22759] = "\xd0\x38", [22762] = "\xd0\x39", + [22763] = "\xd0\x3a", [22765] = "\xe3\xa3", [22767] = "\xd0\x3b", + [22768] = "\xd0\x36", [22769] = "\xbe\xcc", [22774] = "\xd0\x3c", + [22775] = "\xe3\xa5", [22780] = "\xd0\x3d", [22782] = "\xc1\xc3", + [22784] = "\xd0\x3e", [22785] = "\xe3\xa7", [22786] = "\xe3\xa6", + [22793] = "\xe3\xa8", [22794] = "\xd0\x3f", [22796] = "\xd0\x40", + [22798] = "\xd0\x41", [22799] = "\xd0\x42", [22800] = "\xd0\x43", + [22805] = "\xd0\x44", [22806] = "\xe2\xe8", [22807] = "\xd0\x45", + [22809] = "\xd0\x46", [22810] = "\xe2\xea", [22811] = "\xe3\xaa", + [22812] = "\xe3\xa9", [22813] = "\xd0\x47", [22816] = "\xf4\x54", + [22817] = "\xd0\x48", [22820] = "\xd0\x49", [22821] = "\xd0\x4a", + [22826] = "\xbc\xa8", [22827] = "\xd0\x4b", [22828] = "\xce\xe9", + [22829] = "\xd0\x4c", [22830] = "\xbc\xd2", [22831] = "\xd0\x4d", + [22832] = "\xe3\xab", [22833] = "\xb7\xb7", [22836] = "\xd0\x4e", + [22837] = "\xd0\x4f", [22838] = "\xd0\x50", [22839] = "\xb5\xc0", + [22840] = "\xb5\xa7", [22841] = "\xbb\xe3", [22842] = "\xd0\x51", + [22843] = "\xd0\x52", [22847] = "\xd0\x53", [22848] = "\xcd\xb4", + [22849] = "\xd0\x54", [22851] = "\xe3\xb1", [22852] = "\xd0\x55", + [22853] = "\xe3\xb0", [22854] = "\xc1\xc4", [22855] = "\xe3\xad", + [22856] = "\xd0\x56", [22858] = "\xe3\xaf", [22859] = "\xd0\x57", + [22860] = "\xd0\x58", [22861] = "\xbd\xcb", [22862] = "\xbf\xc0", + [22863] = "\xe3\xae", [22864] = "\xe3\xac", [22866] = "\xc7\xaa", + [22869] = "\xbe\xcd", [22871] = "\xd0\x59", [22872] = "\xc9\xbc", + [22873] = "\xd0\x5a", [22875] = "\xd0\x5b", [22877] = "\xba\xd7", + [22882] = "\xd0\x5c", [22887] = "\xc5\xf8", [22889] = "\xd0\x5d", + [22890] = "\xe3\xb2", [22891] = "\xd0\x5e", [22892] = "\xd0\x5f", + [22894] = "\xd0\x60", [22895] = "\xe3\xb3", [22896] = "\xe3\xc9", + [22897] = "\xb6\xd8", [22900] = "\xcf\xbd", [22901] = "\xc1\xb5", + [22906] = "\xe3\xb4", [22907] = "\xd0\x61", [22908] = "\xd0\x62", + [22909] = "\xb2\xd2", [22910] = "\xc4\xf7", [22911] = "\xca\xa1", + [22913] = "\xd0\x63", [22915] = "\xd0\x64", [22916] = "\xd0\x65", + [22917] = "\xd0\x66", [22918] = "\xd0\x67", [22920] = "\xd0\x68", + [22923] = "\xd0\x69", [22924] = "\xd0\x6a", [22925] = "\xe3\xb5", + [22929] = "\xd0\x6b", [22934] = "\xb5\xfa", [22935] = "\xe3\xb6", + [22936] = "\xd0\x6c", [22937] = "\xd0\x6d", [22938] = "\xe3\xb8", + [22939] = "\xd0\x6e", [22942] = "\xe3\xb9", [22943] = "\xd0\x6f", + [22944] = "\xc7\xa9", [22945] = "\xd0\x70", [22947] = "\xe3\xba", + [22948] = "\xd0\x71", [22952] = "\xd0\x72", [22953] = "\xe3\xbb", + [22954] = "\xe3\xbc", [22955] = "\xd0\x73", [22957] = "\xb6\xd9", + [22958] = "\xb2\xd3", [22959] = "\xc6\xc5", [22960] = "\xbd\xa8", + [22961] = "\xbb\xe4", [22962] = "\xd0\x74", [22964] = "\xd0\x75", + [22967] = "\xd0\x76", [22968] = "\xd0\x77", [22969] = "\xe3\xbd", + [22970] = "\xd0\x78", [22971] = "\xbd\xa9", [22975] = "\xd0\x79", + [22977] = "\xb2\xca", [22978] = "\xc9\xc3", [22980] = "\xd0\x7a", + [22981] = "\xe3\xbe", [22982] = "\xd0\x7b", [22984] = "\xc8\xeb", + [22986] = "\xd0\x7c", [22989] = "\xd0\x7d", [22990] = "\xd0\x7e", + [22991] = "\xc1\xc5", [22992] = "\xd1\x21", [22993] = "\xe3\xc1", + [22994] = "\xd1\x22", [22995] = "\xe3\xc2", [22996] = "\xc7\xe9", + [22997] = "\xd1\x23", [22998] = "\xbf\xc1", [22999] = "\xe3\xbf", + [23001] = "\xc3\xe1", [23002] = "\xd1\x24", [23003] = "\xd1\x25", + [23004] = "\xe3\xc0", [23005] = "\xd1\x26", [23008] = "\xbe\xce", + [23009] = "\xd1\x27", [23016] = "\xd1\x28", [23019] = "\xb0\xdc", + [23020] = "\xd1\x29", [23024] = "\xb5\xa9", [23026] = "\xd1\x2a", + [23027] = "\xd1\x2b", [23031] = "\xd1\x2c", [23032] = "\xe3\xc3", + [23033] = "\xd1\x2d", [23034] = "\xd1\x2e", [23035] = "\xc4\xf8", + [23036] = "\xd1\x2f", [23037] = "\xe3\xc4", [23038] = "\xc0\xc7", + [23041] = "\xd1\x30", [23044] = "\xcc\xad", [23045] = "\xd1\x31", + [23047] = "\xc9\xa3", [23048] = "\xe3\xc5", [23049] = "\xe3\xc6", + [23050] = "\xc3\xd5", [23051] = "\xd1\x32", [23052] = "\xce\xc7", + [23054] = "\xd1\x33", [23055] = "\xe3\xc8", [23056] = "\xe3\xc7", + [23057] = "\xd1\x34", [23063] = "\xd1\x35", [23067] = "\xd1\x36", + [23069] = "\xd1\x37", [23070] = "\xbc\xef", [23071] = "\xd1\x38", + [23072] = "\xd1\x39", [23073] = "\xe3\xca", [23074] = "\xb0\xf0", + [23076] = "\xd1\x3a", [23077] = "\xd1\x3b", [23079] = "\xe3\xcd", + [23080] = "\xd1\x3c", [23081] = "\xd1\x3d", [23082] = "\xd1\x3e", + [23083] = "\xe3\xcb", [23084] = "\xb2\xd4", [23085] = "\xb7\xce", + [23086] = "\xe3\xcc", [23087] = "\xb9\xc6", [23088] = "\xb9\xf2", + [23090] = "\xca\xe6", [23091] = "\xe3\xce", [23092] = "\xd1\x3f", + [23093] = "\xd1\x40", [23094] = "\xcb\xd4", [23095] = "\xd1\x41", + [23096] = "\xd1\x42", [23097] = "\xe3\xd0", [23100] = "\xd1\x43", + [23101] = "\xc0\xd1", [23102] = "\xb1\xcf", [23103] = "\xb2\xba", + [23104] = "\xb0\xac", [23109] = "\xd1\x44", [23110] = "\xd1\x45", + [23111] = "\xe3\xcf", [23113] = "\xd1\x46", [23116] = "\xd1\x47", + [23117] = "\xd1\x48", [23119] = "\xd1\x49", [23120] = "\xd1\x4a", + [23121] = "\xe3\xd1", [23122] = "\xe3\xd2", [23123] = "\xbe\xf7", + [23125] = "\xd1\x4b", [23127] = "\xd1\x4c", [23129] = "\xe3\xd3", + [23130] = "\xd1\x4d", [23131] = "\xb3\xcf", [23133] = "\xd1\x4e", + [23136] = "\xe3\xd5", [23140] = "\xb7\xea", [23141] = "\xd1\x4f", + [23142] = "\xb5\xe6", [23144] = "\xd1\x50", [23145] = "\xe3\xd6", + [23146] = "\xb6\xf5", [23149] = "\xe3\xd7", [23150] = "\xd1\x51", + [23151] = "\xc0\xfc", [23152] = "\xd1\x52", [23153] = "\xc6\xcd", + [23154] = "\xd1\x53", [23155] = "\xc0\xe0", [23156] = "\xba\xf5", + [23157] = "\xd1\x54", [23158] = "\xd1\x55", [23160] = "\xe3\xd8", + [23162] = "\xd1\x56", [23163] = "\xd1\x57", [23168] = "\xd1\x58", + [23169] = "\xd1\x59", [23170] = "\xc3\xe2", [23171] = "\xc1\xeb", + [23172] = "\xd1\x5a", [23173] = "\xe3\xda", [23174] = "\xe3\xdc", + [23175] = "\xe3\xd9", [23176] = "\xe3\xdb", [23182] = "\xd1\x5b", + [23183] = "\xb7\xa2", [23184] = "\xd1\x5c", [23187] = "\xd1\x5d", + [23193] = "\xe3\xdd", [23194] = "\xb7\xa6", [23196] = "\xd1\x5e", + [23198] = "\xb5\xe7", [23199] = "\xcd\xd2", [23200] = "\xe3\xdf", + [23203] = "\xd1\x5f", [23205] = "\xd1\x60", [23206] = "\xe3\xe0", + [23209] = "\xd1\x61", [23210] = "\xb1\xae", [23211] = "\xd1\x62", + [23212] = "\xd1\x63", [23215] = "\xe3\xe3", [23219] = "\xb3\xf6", + [23220] = "\xe3\xe2", [23221] = "\xe3\xe1", [23222] = "\xd1\x64", + [23223] = "\xe3\xe5", [23224] = "\xe3\xde", [23225] = "\xd1\x65", + [23226] = "\xe3\xe6", [23227] = "\xce\xa9", [23228] = "\xd1\x66", + [23229] = "\xe3\xe7", [23230] = "\xd1\x67", [23231] = "\xe3\xe8", + [23233] = "\xd1\x68", [23234] = "\xd4\xf4", [23235] = "\xe3\xea", + [23237] = "\xe3\xe9", [23241] = "\xe3\xeb", [23242] = "\xe3\xec", + [23243] = "\xd1\x69", [23244] = "\xce\xb5", [23245] = "\xe3\xed", + [23247] = "\xf0\xef", [23248] = "\xbe\xcf", [23249] = "\xe3\xee", + [23250] = "\xe3\xef", [23251] = "\xbd\xd7", [23253] = "\xc6\xb8", + [23254] = "\xe3\xf0", [23255] = "\xf4\x59", [23256] = "\xd1\x6a", + [23257] = "\xd1\x6b", [23258] = "\xc3\xa8", [23259] = "\xd1\x6c", + [23260] = "\xd1\x6d", [23261] = "\xe3\xf1", [23263] = "\xc3\xbc", + [23264] = "\xe3\xf2", [23265] = "\xd1\x6e", [23268] = "\xd1\x6f", + [23270] = "\xb6\xa5", [23272] = "\xd1\xbf", [23273] = "\xc3\xdd", + [23274] = "\xbc\xb3", [23275] = "\xd1\x70", [23277] = "\xd1\x71", + [23278] = "\xd1\x72", [23279] = "\xb4\xc8", [23282] = "\xe3\xf3", + [23284] = "\xe4\xa2", [23286] = "\xe3\xf6", [23287] = "\xd1\x73", + [23288] = "\xb5\xe8", [23290] = "\xe3\xf5", [23291] = "\xe4\xa4", + [23295] = "\xe3\xf4", [23297] = "\xbe\xd0", [23300] = "\xd1\x74", + [23304] = "\xe3\xf8", [23305] = "\xe3\xf9", [23307] = "\xc5\xab", + [23310] = "\xe3\xfa", [23311] = "\xd1\x75", [23312] = "\xb3\xde", + [23315] = "\xd1\x76", [23317] = "\xbf\xda", [23318] = "\xc9\xe4", + [23319] = "\xd1\x77", [23320] = "\xe3\xfc", [23321] = "\xd1\x78", + [23322] = "\xd1\x79", [23323] = "\xd1\x7a", [23324] = "\xc2\xe8", + [23325] = "\xd1\x7b", [23326] = "\xd1\x7c", [23327] = "\xd1\x7d", + [23328] = "\xd1\x7e", [23329] = "\xd2\x21", [23331] = "\xe3\xf7", + [23332] = "\xd2\x22", [23333] = "\xe3\xfb", [23334] = "\xe3\xfd", + [23337] = "\xba\xfb", [23341] = "\xd2\x23", [23343] = "\xd2\x24", + [23344] = "\xd2\x25", [23345] = "\xd2\x26", [23349] = "\xe4\xa6", + [23350] = "\xc9\xae", [23351] = "\xd2\x27", [23352] = "\xc8\xa6", + [23353] = "\xc5\xf9", [23355] = "\xb6\xda", [23356] = "\xe4\xa5", + [23357] = "\xe4\xa3", [23358] = "\xd2\x28", [23359] = "\xc8\xb5", + [23360] = "\xe3\xfe", [23361] = "\xc3\xde", [23362] = "\xc5\xfb", + [23364] = "\xc5\xfa", [23365] = "\xd2\x29", [23366] = "\xba\xf6", + [23373] = "\xe4\xb8", [23376] = "\xd2\x2a", [23380] = "\xd2\x2b", + [23381] = "\xe4\xa8", [23382] = "\xd2\x2c", [23383] = "\xe4\xaa", + [23385] = "\xd2\x2d", [23386] = "\xd2\x2e", [23388] = "\xe4\xad", + [23389] = "\xd2\x2f", [23390] = "\xe4\xae", [23391] = "\xd2\x30", + [23392] = "\xe4\xab", [23393] = "\xe4\xac", [23394] = "\xd2\x31", + [23395] = "\xd2\x32", [23396] = "\xe4\xa9", [23397] = "\xe4\xa7", + [23399] = "\xd2\x33", [23402] = "\xe4\xa1", [23412] = "\xd2\x34", + [23414] = "\xca\xcf", [23415] = "\xb2\xd5", [23417] = "\xd2\x35", + [23419] = "\xe4\xb5", [23421] = "\xe4\xb2", [23422] = "\xd2\x36", + [23423] = "\xe4\xb7", [23424] = "\xd2\x37", [23425] = "\xd2\x38", + [23426] = "\xe4\xb6", [23428] = "\xc7\xf3", [23429] = "\xcc\xa7", + [23430] = "\xd2\x39", [23431] = "\xbb\xbb", [23432] = "\xe4\xb0", + [23433] = "\xe4\xb9", [23434] = "\xe4\xb4", [23435] = "\xd2\x3a", + [23436] = "\xe4\xb3", [23437] = "\xe4\xaf", [23438] = "\xd2\x3b", + [23439] = "\xe4\xb1", [23440] = "\xd2\x3c", [23441] = "\xb4\xc9", + [23445] = "\xd2\x3d", [23450] = "\xc3\xbd", [23452] = "\xd2\x3e", + [23453] = "\xc0\xfd", [23455] = "\xd2\x3f", [23456] = "\xd2\x40", + [23457] = "\xc8\xa2", [23458] = "\xd2\x41", [23460] = "\xe4\xbe", + [23461] = "\xd2\x42", [23462] = "\xd2\x43", [23464] = "\xc8\xa4", + [23466] = "\xd2\x44", [23467] = "\xd2\x45", [23468] = "\xd2\x46", + [23469] = "\xd2\x47", [23472] = "\xc0\xe1", [23473] = "\xe4\xbb", + [23474] = "\xd2\x48", [23476] = "\xc8\xcf", [23477] = "\xd2\x49", + [23478] = "\xe4\xbf", [23479] = "\xca\xd3", [23480] = "\xd2\x4a", + [23481] = "\xc3\xdb", [23482] = "\xd2\x4b", [23483] = "\xe4\xba", + [23484] = "\xe4\xbc", [23487] = "\xe4\xbd", [23492] = "\xd2\x4c", + [23494] = "\xd2\x4d", [23495] = "\xd2\x4e", [23497] = "\xd2\x4f", + [23498] = "\xd2\x50", [23499] = "\xd2\x51", [23501] = "\xe4\xc0", + [23504] = "\xbc\xc4", [23508] = "\xc6\xc6", [23509] = "\xe4\xc5", + [23510] = "\xe4\xc4", [23512] = "\xd2\x52", [23513] = "\xe4\xc1", + [23514] = "\xd2\x53", [23517] = "\xcf\xb6", [23522] = "\xd2\x54", + [23523] = "\xe4\xca", [23524] = "\xd2\x55", [23525] = "\xd2\x56", + [23526] = "\xe4\xce", [23527] = "\xe4\xcb", [23528] = "\xd2\x57", + [23529] = "\xd2\x58", [23530] = "\xd2\x59", [23532] = "\xd2\x5a", + [23534] = "\xd2\x5b", [23536] = "\xe4\xc7", [23537] = "\xd2\x5c", + [23538] = "\xd2\x5d", [23539] = "\xd2\x5e", [23540] = "\xd2\x5f", + [23542] = "\xd2\x60", [23543] = "\xe4\xc8", [23545] = "\xd2\x61", + [23547] = "\xd2\x62", [23548] = "\xd2\x63", [23549] = "\xe4\xcd", + [23550] = "\xd2\x64", [23551] = "\xd2\x65", [23553] = "\xe4\xc2", + [23554] = "\xd2\xd5", [23555] = "\xe4\xc9", [23556] = "\xe4\xc3", + [23559] = "\xe4\xcc", [23561] = "\xd2\x66", [23563] = "\xd2\x67", + [23567] = "\xe4\xd2", [23568] = "\xd2\x68", [23569] = "\xb4\xca", + [23571] = "\xe4\xcf", [23573] = "\xd2\x69", [23574] = "\xd2\x6a", + [23575] = "\xe4\xd0", [23576] = "\xd2\x6b", [23578] = "\xe4\xd1", + [23579] = "\xe4\xd4", [23580] = "\xd2\x6c", [23585] = "\xd2\x6d", + [23587] = "\xd2\x6e", [23588] = "\xd2\x6f", [23590] = "\xd2\x70", + [23591] = "\xe4\xd3", [23592] = "\xc8\xf6", [23593] = "\xd2\x71", + [23594] = "\xd2\x72", [23597] = "\xe4\xd5", [23598] = "\xce\xfc", + [23599] = "\xca\xed", [23600] = "\xe4\xda", [23603] = "\xe4\xd7", + [23606] = "\xd2\x73", [23610] = "\xd2\x74", [23612] = "\xe4\xd6", + [23613] = "\xc0\xd2", [23615] = "\xe4\xd9", [23616] = "\xe4\xdb", + [23617] = "\xd2\x76", [23618] = "\xd2\x77", [23619] = "\xd2\x78", + [23620] = "\xe4\xd8", [23621] = "\xd2\x75", [23622] = "\xe4\xdf", + [23624] = "\xe4\xdc", [23625] = "\xd2\x79", [23626] = "\xd2\x7a", + [23627] = "\xd2\x7b", [23628] = "\xd2\x7c", [23629] = "\xd2\x7d", + [23630] = "\xd2\x7e", [23631] = "\xe4\xdd", [23632] = "\xe4\xc6", + [23633] = "\xd3\x21", [23635] = "\xd3\x22", [23636] = "\xe4\xde", + [23637] = "\xe4\xe0", [23639] = "\xd3\x23", [23641] = "\xd3\x24", + [23644] = "\xe4\xe1", [23645] = "\xd3\x25", [23646] = "\xd3\x26", + [23648] = "\xd3\x27", [23650] = "\xd3\x28", [23651] = "\xca\xc6", + [23653] = "\xe4\xe2", [23657] = "\xd3\x29", [23660] = "\xd3\x2a", + [23661] = "\xd3\x2b", [23662] = "\xcc\xe2", [23665] = "\xb6\xce", + [23666] = "\xb7\xa9", [23667] = "\xe4\xe3", [23670] = "\xd3\x2c", + [23671] = "\xd3\x2d", [23673] = "\xca\xb4", [23675] = "\xbf\xe8", + [23677] = "\xcc\xb0", [23679] = "\xd3\x2e", [23680] = "\xe4\xe4", + [23682] = "\xce\xb3", [23684] = "\xd3\x2f", [23685] = "\xc7\xf4", + [23687] = "\xc1\xc6", [23688] = "\xc7\xb4", [23691] = "\xbd\xcd", + [23694] = "\xd3\x30", [23695] = "\xb0\xc0", [23696] = "\xd3\x31", + [23697] = "\xe4\xe9", [23698] = "\xe4\xe7", [23700] = "\xe4\xe5", + [23701] = "\xb4\xa1", [23702] = "\xd3\x32", [23703] = "\xbe\xd1", + [23704] = "\xe4\xea", [23707] = "\xe4\xe8", [23709] = "\xe4\xe6", + [23710] = "\xe4\xee", [23712] = "\xd3\x33", [23713] = "\xe4\xed", + [23714] = "\xe4\xec", [23715] = "\xe4\xeb", [23718] = "\xd3\x34", + [23719] = "\xd3\x35", [23721] = "\xe4\xef", [23722] = "\xd3\x36", + [23723] = "\xd3\x37", [23724] = "\xd3\x38", [23725] = "\xe4\xf0", + [23726] = "\xc0\xba", [23727] = "\xd3\x39", [23728] = "\xe4\xf1", + [23730] = "\xe4\xf3", [23732] = "\xd3\x3a", [23733] = "\xe4\xf2", + [23735] = "\xd3\x3b", [23736] = "\xd3\x3c", [23737] = "\xd3\x3d", + [23738] = "\xb8\xd2", [23741] = "\xd3\x3e", [23742] = "\xc1\xb8", + [23743] = "\xd3\x3f", [23746] = "\xe4\xf5", [23747] = "\xd3\x40", + [23748] = "\xd3\x41", [23749] = "\xd3\x42", [23750] = "\xc5\xfc", + [23751] = "\xd3\x43", [23752] = "\xe4\xf4", [23753] = "\xd3\x44", + [23754] = "\xd3\x45", [23756] = "\xe4\xf6", [23757] = "\xd3\x46", + [23758] = "\xca\xb5", [23759] = "\xc1\xec", [23760] = "\xb9\xc7", + [23762] = "\xe4\xf7", [23766] = "\xd3\x47", [23767] = "\xce\xc8", + [23769] = "\xd3\x48", [23771] = "\xd3\x49", [23775] = "\xe4\xf9", + [23778] = "\xe4\xfa", [23780] = "\xe4\xfb", [23781] = "\xd3\x4a", + [23782] = "\xe4\xfc", [23784] = "\xbb\xe5", [23786] = "\xe4\xfd", + [23787] = "\xb7\xcf", [23790] = "\xb5\xea", [23792] = "\xb5\xaa", + [23794] = "\xe5\xa1", [23795] = "\xd3\x4b", [23796] = "\xcc\xf3", + [23797] = "\xb9\xc8", [23798] = "\xe4\xfe", [23799] = "\xd3\x4c", + [23800] = "\xd3\x4d", [23801] = "\xd3\x4e", [23802] = "\xe5\xa4", + [23803] = "\xcc\xe6", [23805] = "\xc7\xbc", [23807] = "\xd3\x4f", + [23808] = "\xc9\xb3", [23809] = "\xd3\x50", [23810] = "\xd3\x51", + [23811] = "\xd3\x52", [23812] = "\xbd\xe3", [23813] = "\xe5\xa3", + [23814] = "\xd3\x53", [23815] = "\xbc\xd3", [23816] = "\xb9\xc9", + [23817] = "\xbb\xe6", [23818] = "\xb5\xe9", [23819] = "\xca\xb6", + [23820] = "\xe5\xa2", [23821] = "\xd3\x54", [23822] = "\xd3\x55", + [23824] = "\xc1\xc7", [23825] = "\xcb\xc2", [23826] = "\xba\xf7", + [23827] = "\xd3\x56", [23830] = "\xd3\x57", [23834] = "\xd3\x58", + [23835] = "\xbb\xe7", [23836] = "\xc4\xdd", [23837] = "\xd3\x59", + [23838] = "\xe5\xa7", [23839] = "\xce\xdf", [23840] = "\xba\xd9", + [23841] = "\xd3\x5a", [23842] = "\xe5\xa8", [23843] = "\xbf\xc2", + [23845] = "\xe5\xaa", [23849] = "\xbe\xd2", [23850] = "\xba\xb0", + [23852] = "\xd3\x5b", [23853] = "\xd3\x5c", [23854] = "\xd3\x5d", + [23855] = "\xe5\xa9", [23856] = "\xd3\x5e", [23857] = "\xd3\x5f", + [23858] = "\xbd\xaa", [23859] = "\xb8\xbe", [23860] = "\xc1\xc8", + [23861] = "\xe5\xa5", [23862] = "\xe5\xab", [23863] = "\xd3\x60", + [23864] = "\xd3\x61", [23867] = "\xe5\xa6", [23868] = "\xb7\xd0", + [23869] = "\xd3\x62", [23870] = "\xe5\xae", [23871] = "\xe5\xb2", + [23872] = "\xb7\xeb", [23873] = "\xd3\x63", [23875] = "\xd3\x64", + [23878] = "\xe5\xad", [23879] = "\xd3\x65", [23881] = "\xd3\x66", + [23882] = "\xd3\x67", [23883] = "\xe5\xb6", [23884] = "\xd3\x68", + [23885] = "\xd3\x69", [23886] = "\xb9\xca", [23889] = "\xcd\xed", + [23890] = "\xb0\xbc", [23891] = "\xe5\xb3", [23893] = "\xd3\x6a", + [23894] = "\xb5\xeb", [23895] = "\xd3\x6b", [23896] = "\xe5\xb0", + [23898] = "\xd3\x6c", [23902] = "\xe5\xb1", [23904] = "\xd3\x6d", + [23905] = "\xc5\xfd", [23906] = "\xe5\xaf", [23907] = "\xe5\xac", + [23909] = "\xb3\xa8", [23910] = "\xc0\xe4", [23912] = "\xd3\x6e", + [23913] = "\xb8\xa8", [23914] = "\xd3\x6f", [23915] = "\xd3\x70", + [23917] = "\xe5\xb8", [23919] = "\xd3\x71", [23921] = "\xd3\x72", + [23922] = "\xd3\x73", [23923] = "\xd3\x74", [23925] = "\xd3\x75", + [23926] = "\xd3\x76", [23928] = "\xd3\x77", [23929] = "\xe5\xb5", + [23931] = "\xd3\x78", [23932] = "\xd3\x79", [23933] = "\xd3\x7a", + [23935] = "\xe5\xb7", [23937] = "\xd3\x7b", [23939] = "\xe5\xb4", + [23942] = "\xd3\x7c", [23943] = "\xd3\x7d", [23945] = "\xb7\xd1", + [23946] = "\xc2\xb3", [23947] = "\xe5\xb9", [23948] = "\xc1\xee", + [23949] = "\xd3\x7e", [23950] = "\xd4\x21", [23951] = "\xe5\xc6", + [23952] = "\xf4\x5c", [23954] = "\xe5\xc2", [23955] = "\xe5\xbc", + [23958] = "\xd4\x22", [23959] = "\xd4\x23", [23962] = "\xd4\x24", + [23963] = "\xe5\xc0", [23964] = "\xbc\xfa", [23965] = "\xb0\xdd", + [23966] = "\xe5\xbb", [23967] = "\xe5\xc3", [23968] = "\xe5\xc7", + [23969] = "\xb9\xcb", [23970] = "\xcc\xd6", [23971] = "\xd4\x25", + [23972] = "\xc4\xd6", [23973] = "\xe5\xbd", [23974] = "\xd4\x26", + [23975] = "\xd4\x27", [23976] = "\xe5\xc5", [23977] = "\xd4\x28", + [23978] = "\xe5\xba", [23979] = "\xc3\xbe", [23981] = "\xe5\xbf", + [23982] = "\xb0\xbd", [23983] = "\xcc\xca", [23986] = "\xd4\x29", + [23987] = "\xd4\x2a", [23988] = "\xd4\x2b", [23989] = "\xd4\x2c", + [23990] = "\xd4\x2d", [23991] = "\xe5\xbe", [23994] = "\xb6\xdb", + [23995] = "\xc8\xec", [23996] = "\xd4\x2e", [23997] = "\xd4\x2f", + [23998] = "\xd4\x30", [23999] = "\xc1\xed", [24001] = "\xce\xd0", + [24002] = "\xbd\xef", [24005] = "\xe5\xee", [24006] = "\xf4\x5d", + [24007] = "\xd4\x31", [24008] = "\xe5\xc8", [24009] = "\xd4\x32", + [24010] = "\xc0\xfe", [24012] = "\xe5\xc4", [24013] = "\xe5\xc9", + [24014] = "\xe5\xcb", [24016] = "\xc4\xf9", [24017] = "\xe5\xce", + [24018] = "\xd4\x34", [24020] = "\xe5\xca", [24021] = "\xd4\x35", + [24022] = "\xd4\x36", [24024] = "\xca\xd4", [24025] = "\xb4\xcb", + [24026] = "\xd4\x37", [24027] = "\xd4\x38", [24028] = "\xcc\xcb", + [24029] = "\xd4\x39", [24031] = "\xb0\xde", [24033] = "\xd4\x3a", + [24034] = "\xe5\xcd", [24036] = "\xce\xfd", [24037] = "\xd4\x3b", + [24038] = "\xd4\x3c", [24041] = "\xd4\x3d", [24042] = "\xd4\x3e", + [24043] = "\xe5\xcc", [24048] = "\xd4\x33", [24049] = "\xb1\xef", + [24052] = "\xc6\xec", [24053] = "\xe5\xcf", [24056] = "\xd4\x3f", + [24057] = "\xe5\xd6", [24058] = "\xe5\xd0", [24059] = "\xe5\xd7", + [24064] = "\xd4\x40", [24065] = "\xd4\x41", [24066] = "\xe5\xd3", + [24069] = "\xd4\x42", [24071] = "\xd4\x43", [24075] = "\xc7\xfb", + [24076] = "\xd4\x44", [24077] = "\xd4\x45", [24078] = "\xbc\xca", + [24079] = "\xe5\xd5", [24080] = "\xd4\x46", [24081] = "\xe5\xd2", + [24082] = "\xe5\xd8", [24083] = "\xe5\xd1", [24086] = "\xbd\xc4", + [24087] = "\xd4\x47", [24088] = "\xd4\x48", [24091] = "\xcb\xa5", + [24092] = "\xd4\x49", [24093] = "\xd4\x4a", [24094] = "\xbd\xcc", + [24095] = "\xd4\x4b", [24097] = "\xe5\xd4", [24098] = "\xe5\xe0", + [24099] = "\xd4\x4c", [24101] = "\xe5\xdc", [24102] = "\xd4\x4d", + [24103] = "\xe5\xdf", [24105] = "\xe5\xdd", [24106] = "\xe5\xe1", + [24107] = "\xe5\xdb", [24109] = "\xe5\xc1", [24110] = "\xc0\xd3", + [24111] = "\xd4\x4e", [24113] = "\xc8\xcb", [24115] = "\xe5\xde", + [24116] = "\xd4\x4f", [24117] = "\xd4\x50", [24118] = "\xe5\xd9", + [24119] = "\xd4\x51", [24122] = "\xc1\xa1", [24123] = "\xb7\xd2", + [24125] = "\xbd\xab", [24126] = "\xd4\x52", [24128] = "\xd4\x53", + [24130] = "\xd4\x54", [24132] = "\xbf\xa5", [24133] = "\xc1\xb6", + [24134] = "\xe5\xe4", [24136] = "\xd4\x55", [24137] = "\xe5\xe6", + [24138] = "\xe5\xe7", [24141] = "\xe5\xe3", [24142] = "\xe5\xe5", + [24143] = "\xd4\x56", [24145] = "\xd4\x57", [24146] = "\xd4\x58", + [24149] = "\xd4\x59", [24150] = "\xe5\xda", [24151] = "\xe5\xe2", + [24153] = "\xe5\xea", [24154] = "\xe5\xe9", [24155] = "\xd4\x5a", + [24157] = "\xcb\xfa", [24158] = "\xd4\x5b", [24159] = "\xd4\x5c", + [24160] = "\xb7\xab", [24163] = "\xd4\x5d", [24168] = "\xd4\x5e", + [24169] = "\xe5\xe8", [24171] = "\xe5\xec", [24172] = "\xe5\xeb", + [24173] = "\xe5\xef", [24174] = "\xd4\x5f", [24175] = "\xe5\xf1", + [24177] = "\xd4\x60", [24178] = "\xbb\xbc", [24179] = "\xe5\xed", + [24182] = "\xd4\x61", [24183] = "\xd4\x62", [24184] = "\xe5\xf2", + [24185] = "\xe5\xf3", [24186] = "\xd4\x63", [24188] = "\xe5\xf4", + [24189] = "\xd4\x64", [24190] = "\xe5\xfa", [24191] = "\xc5\xbb", + [24192] = "\xe5\xf6", [24193] = "\xd4\x65", [24194] = "\xe5\xf5", + [24195] = "\xe5\xf7", [24196] = "\xe5\xf8", [24197] = "\xd4\x66", + [24198] = "\xe5\xf9", [24200] = "\xd4\x67", [24202] = "\xd4\x68", + [24203] = "\xe5\xfb", [24204] = "\xe5\xfc", [24205] = "\xd4\x69", + [24206] = "\xd4\x6a", [24358] = "\xb4\xcc", [24360] = "\xe5\xfd", + [24362] = "\xe5\xfe", [24363] = "\xd4\x6c", [24364] = "\xd4\x6b", + [24365] = "\xd4\x6d", [24366] = "\xd4\x6e", [24367] = "\xd4\x6f", + [24371] = "\xd4\x70", [24372] = "\xd4\x71", [24373] = "\xe6\xa1", + [24375] = "\xd4\x72", [24380] = "\xe6\xa2", [24381] = "\xe6\xa3", + [24382] = "\xe6\xa4", [24383] = "\xd4\x73", [24384] = "\xe6\xa5", + [24385] = "\xe6\xa6", [24386] = "\xd4\x74", [24387] = "\xd4\x75", + [24388] = "\xe6\xa8", [24389] = "\xe6\xa7", [24392] = "\xe6\xa9", + [24395] = "\xd4\x76", [24396] = "\xd4\x77", [24397] = "\xd4\x78", + [24399] = "\xe6\xaa", [24400] = "\xe6\xab", [24401] = "\xd4\x79", + [24403] = "\xd4\x7a", [24404] = "\xd4\x7b", [24405] = "\xd4\x7c", + [24406] = "\xd4\x7d", [24407] = "\xe6\xae", [24408] = "\xe6\xac", + [24409] = "\xe6\xad", [24410] = "\xba\xe1", [24411] = "\xb7\xd3", + [24413] = "\xd4\x7e", [24414] = "\xc3\xd6", [24416] = "\xc8\xb3", + [24417] = "\xd5\x21", [24418] = "\xbd\xf0", [24421] = "\xc7\xcd", + [24423] = "\xc8\xed", [24424] = "\xe6\xaf", [24425] = "\xd8\xed", + [24429] = "\xd5\x22", [24430] = "\xd5\x23", [24431] = "\xd5\x24", + [24432] = "\xd5\x25", [24434] = "\xe6\xb0", [24435] = "\xe6\xb2", + [24437] = "\xcd\xe5", [24438] = "\xe6\xb1", [24439] = "\xe6\xb4", + [24440] = "\xe6\xb3", [24442] = "\xcd\xd3", [24443] = "\xd5\x26", + [24444] = "\xe6\xb5", [24445] = "\xd5\x27", [24446] = "\xc8\xfe", + [24447] = "\xd5\x28", [24448] = "\xd5\x29", [24449] = "\xd5\x2a", + [24452] = "\xe6\xb6", [24454] = "\xd5\x2b", [24455] = "\xd5\x2c", + [24458] = "\xe6\xb9", [24460] = "\xd5\x2d", [24461] = "\xe6\xb8", + [24462] = "\xe6\xb7", [24465] = "\xd5\x2e", [24466] = "\xd5\x2f", + [24467] = "\xe6\xba", [24468] = "\xb7\xb2", [24470] = "\xd5\x30", + [24472] = "\xc1\xa2", [24473] = "\xb5\xc1", [24474] = "\xd5\x31", + [24477] = "\xd5\x32", [24478] = "\xe6\xbe", [24479] = "\xe6\xbb", + [24482] = "\xe6\xbc", [24484] = "\xd5\x33", [24486] = "\xe6\xbf", + [24488] = "\xe6\xc0", [24489] = "\xe6\xbd", [24492] = "\xd5\x34", + [24493] = "\xb1\xa9", [24495] = "\xd5\x35", [24496] = "\xd5\x36", + [24497] = "\xb2\xa7", [24499] = "\xd5\x37", [24501] = "\xe6\xc2", + [24502] = "\xe6\xc3", [24504] = "\xd5\x38", [24506] = "\xe6\xc4", + [24508] = "\xcd\xe2", [24510] = "\xd5\x39", [24511] = "\xd5\x3a", + [24514] = "\xbd\xac", [24516] = "\xe6\xc6", [24517] = "\xe6\xc5", + [24523] = "\xd5\x3b", [24527] = "\xd5\x3c", [24528] = "\xbf\xe9", + [24529] = "\xe6\xc7", [24531] = "\xd5\x3d", [24533] = "\xd5\x3e", + [24534] = "\xe6\xc8", [24536] = "\xd5\x3f", [24537] = "\xe6\xc9", + [24539] = "\xb4\xe5", [24540] = "\xd5\x40", [24542] = "\xd5\x41", + [24543] = "\xd5\x42", [24544] = "\xb4\xcd", [24546] = "\xd5\x43", + [24547] = "\xe6\xca", [24553] = "\xe6\xcb", [24554] = "\xd5\x44", + [24555] = "\xcb\xdd", [24556] = "\xcd\xe3", [24557] = "\xd5\x45", + [24558] = "\xd5\x46", [24559] = "\xd5\x47", [24560] = "\xcd\xd4", + [24561] = "\xcf\xb7", [24563] = "\xb9\xcd", [24564] = "\xe6\xce", + [24565] = "\xbc\xd4", [24566] = "\xe6\xcd", [24567] = "\xd5\x48", + [24568] = "\xd5\x49", [24570] = "\xd5\x4a", [24571] = "\xe6\xcf", + [24572] = "\xbc\xa9", [24573] = "\xd5\x4b", [24574] = "\xd5\x4c", + [24575] = "\xd5\x4d", [24576] = "\xc2\xd1", [24577] = "\xd5\x4e", + [24578] = "\xe6\xd0", [24579] = "\xd5\x4f", [24580] = "\xd5\x50", + [24581] = "\xb9\xcc", [24582] = "\xd5\x51", [24583] = "\xcc\xd7", + [24584] = "\xe6\xd1", [24585] = "\xe6\xd2", [24588] = "\xe6\xd3", + [24589] = "\xd5\x52", [24590] = "\xd5\x53", [24591] = "\xd5\x54", + [24592] = "\xd5\x55", [24593] = "\xe6\xd4", [24596] = "\xd5\x56", + [24598] = "\xd5\x57", [24600] = "\xe6\xd5", [24604] = "\xd5\x58", + [24606] = "\xd5\x59", [24608] = "\xd5\x5a", [24611] = "\xbc\xaa", + [24612] = "\xd5\x5b", [24613] = "\xd5\x5c", [24614] = "\xcc\xed", + [24615] = "\xd5\x5d", [24617] = "\xd5\x5e", [24618] = "\xd5\x5f", + [24619] = "\xe6\xd7", [24620] = "\xd5\x60", [24621] = "\xc3\xbf", + [24622] = "\xd5\x61", [24623] = "\xe6\xd6", [24624] = "\xd5\x62", + [24628] = "\xd5\x63", [24630] = "\xe6\xd9", [24634] = "\xe6\xd8", + [24642] = "\xe6\xda", [24646] = "\xc0\xbb", [24648] = "\xe6\xdb", + [24650] = "\xe6\xdc", [24654] = "\xca\xb9", [24655] = "\xe6\xdd", + [24656] = "\xd5\x64", [24657] = "\xc1\xef", [24658] = "\xe6\xde", + [24660] = "\xd5\x65", [24662] = "\xd5\x66", [24664] = "\xe6\xdf", + [24669] = "\xd5\x67", [24671] = "\xce\xfe", [24672] = "\xe6\xe2", + [24673] = "\xd5\x68", [24674] = "\xe6\xe1", [24675] = "\xe6\xe0", + [24676] = "\xc4\xb0", [24677] = "\xd5\x69", [24678] = "\xe6\xe3", + [24679] = "\xbf\xa6", [24681] = "\xe6\xe4", [24685] = "\xe6\xe5", + [24686] = "\xcf\xb8", [24687] = "\xe6\xe6", [24689] = "\xd5\x6a", + [24692] = "\xe6\xe7", [24693] = "\xe6\xe9", [24694] = "\xe6\xe8", + [24695] = "\xc8\xa5", [24696] = "\xd5\x6b", [24697] = "\xc6\xf9", + [24699] = "\xcf\xbe", [24700] = "\xc8\xa9", [24702] = "\xd5\x6c", + [24707] = "\xe6\xeb", [24710] = "\xbe\xd3", [24712] = "\xc9\xaa", + [24714] = "\xe6\xec", [24715] = "\xe6\xea", [24716] = "\xd5\x6d", + [24717] = "\xb4\xce", [24718] = "\xd5\x6e", [24721] = "\xb8\xd4", + [24722] = "\xbb\xe8", [24725] = "\xc8\xee", [24726] = "\xd5\x6f", + [24727] = "\xd5\x70", [24729] = "\xb8\xaa", [24730] = "\xcb\xc3", + [24731] = "\xd5\x71", [24732] = "\xe6\xef", [24733] = "\xe6\xed", + [24735] = "\xb9\xce", [24737] = "\xb9\xcf", [24738] = "\xb0\xe9", + [24740] = "\xba\xe8", [24744] = "\xd5\x72", [24745] = "\xd5\x73", + [24746] = "\xc7\xd9", [24755] = "\xb0\xdf", [24756] = "\xe6\xf4", + [24758] = "\xc3\xc0", [24760] = "\xd5\x74", [24764] = "\xc7\xd8", + [24765] = "\xd5\x75", [24766] = "\xc2\xdb", [24767] = "\xd5\x76", + [24770] = "\xd5\x77", [24772] = "\xd5\x78", [24773] = "\xd5\x79", + [24774] = "\xe6\xf6", [24775] = "\xd5\x7a", [24776] = "\xd5\x7b", + [24777] = "\xe6\xf2", [24778] = "\xe6\xf5", [24779] = "\xe6\xf0", + [24781] = "\xe6\xf3", [24782] = "\xcb\xa6", [24784] = "\xd5\x7c", + [24785] = "\xb8\xd5", [24788] = "\xb0\xfd", [24789] = "\xe6\xf1", + [24797] = "\xd5\x7d", [24798] = "\xd5\x7e", [24799] = "\xe6\xf8", + [24800] = "\xd6\x21", [24801] = "\xe6\xf9", [24802] = "\xd6\x22", + [24803] = "\xd6\x23", [24804] = "\xc6\xb9", [24806] = "\xd6\x24", + [24808] = "\xb6\xbb", [24809] = "\xd6\x25", [24810] = "\xd6\x26", + [24812] = "\xe7\xa6", [24813] = "\xc7\xbd", [24814] = "\xd6\x27", + [24818] = "\xbb\xe9", [24819] = "\xd6\x28", [24821] = "\xb6\xbc", + [24822] = "\xc0\xc8", [24823] = "\xcf\xc6", [24824] = "\xcc\xae", + [24825] = "\xe6\xf7", [24826] = "\xc0\xd4", [24827] = "\xd6\x29", + [24838] = "\xd6\x2a", [24839] = "\xd6\x2b", [24840] = "\xd6\x2c", + [24842] = "\xb5\xd3", [24843] = "\xe6\xfa", [24844] = "\xd6\x2d", + [24846] = "\xd6\x2e", [24848] = "\xd6\x2f", [24851] = "\xe6\xfc", + [24852] = "\xd6\x30", [24855] = "\xd6\x31", [24857] = "\xe6\xfb", + [24860] = "\xd6\x32", [24863] = "\xe6\xfd", [24864] = "\xd6\x33", + [24865] = "\xc3\xa6", [24867] = "\xc7\xbe", [24869] = "\xd6\x34", + [24873] = "\xc4\xb1", [24874] = "\xd6\x35", [24876] = "\xd6\x36", + [24878] = "\xe7\xa3", [24885] = "\xd6\x37", [24886] = "\xe7\xa2", + [24887] = "\xd6\x38", [24890] = "\xd6\x39", [24891] = "\xe6\xfe", + [24892] = "\xd6\x3a", [24894] = "\xbf\xd5", [24896] = "\xc9\xe5", + [24897] = "\xe7\xa5", [24898] = "\xd6\x3b", [24899] = "\xe7\xa4", + [24900] = "\xb9\xd0", [24901] = "\xcf\xd3", [24903] = "\xd6\x3c", + [24911] = "\xe7\xb5", [24912] = "\xd6\x3d", [24913] = "\xd6\x3e", + [24917] = "\xe7\xa9", [24918] = "\xe7\xaa", [24919] = "\xd6\x3f", + [24920] = "\xd6\x40", [24921] = "\xd6\x41", [24923] = "\xbc\xf0", + [24925] = "\xd6\x42", [24926] = "\xe7\xa8", [24927] = "\xd6\x43", + [24928] = "\xb9\xf8", [24929] = "\xe7\xa7", [24932] = "\xe7\xab", + [24935] = "\xd6\x44", [24936] = "\xc4\xb2", [24937] = "\xca\xa2", + [24938] = "\xc1\xa3", [24943] = "\xc2\xdc", [24944] = "\xe7\xaf", + [24945] = "\xd6\x45", [24946] = "\xe7\xb0", [24947] = "\xe7\xac", + [24948] = "\xd6\x47", [24949] = "\xd6\x48", [24950] = "\xd6\x49", + [24952] = "\xe7\xad", [24954] = "\xe7\xae", [24955] = "\xd6\x4a", + [24958] = "\xd6\x4b", [24959] = "\xb9\xd1", [24960] = "\xd6\x46", + [24963] = "\xe7\xb6", [24965] = "\xe7\xb2", [24966] = "\xd6\x4c", + [24968] = "\xd6\x4d", [24970] = "\xc9\xe6", [24971] = "\xd6\x4e", + [24972] = "\xcb\xec", [24973] = "\xc9\xa8", [24974] = "\xd6\x4f", + [24976] = "\xe7\xb1", [24978] = "\xd6\x50", [24979] = "\xe7\xb4", + [24980] = "\xe7\xb3", [24984] = "\xcb\xc4", [24985] = "\xe7\xb7", + [24990] = "\xd6\x51", [24992] = "\xe7\xb8", [24994] = "\xd6\x52", + [24995] = "\xc1\xb7", [24996] = "\xd6\x53", [24997] = "\xe7\xb9", + [25000] = "\xe7\xbb", [25002] = "\xe7\xbf", [25003] = "\xd6\x54", + [25005] = "\xe7\xbc", [25006] = "\xe7\xba", [25007] = "\xc7\xbf", + [25008] = "\xe7\xbd", [25010] = "\xe7\xbe", [25011] = "\xd6\x56", + [25013] = "\xd6\x57", [25014] = "\xb2\xb2", [25016] = "\xe7\xc5", + [25017] = "\xe7\xc0", [25018] = "\xd6\x58", [25019] = "\xd6\x55", + [25021] = "\xe7\xc1", [25022] = "\xd6\x59", [25023] = "\xd6\x5a", + [25025] = "\xe7\xc2", [25027] = "\xc2\xa1", [25029] = "\xd6\x5b", + [25031] = "\xd6\x5c", [25032] = "\xe7\xc4", [25033] = "\xe7\xc3", + [25034] = "\xe7\xc6", [25035] = "\xd6\x5d", [25037] = "\xd6\x5e", + [25038] = "\xd6\x5f", [25039] = "\xe7\xc7", [25040] = "\xe7\xc8", + [25041] = "\xd6\x60", [25043] = "\xbf\xc3", [25044] = "\xd6\x61", + [25045] = "\xb2\xe9", [25047] = "\xe7\xc9", [25048] = "\xce\xd7", + [25050] = "\xbc\xab", [25051] = "\xd6\x62", [25052] = "\xd6\x63", + [25053] = "\xbd\xad", [25056] = "\xd6\x64", [25057] = "\xd6\x65", + [25058] = "\xd6\x66", [25059] = "\xbb\xea", [25060] = "\xc3\xd7", + [25061] = "\xd6\x67", [25062] = "\xd6\x68", [25064] = "\xd6\x69", + [25065] = "\xd6\x6a", [25066] = "\xe7\xca", [25067] = "\xe7\xcb", + [25068] = "\xb1\xb1", [25069] = "\xd6\x6b", [25070] = "\xe7\xcc", + [25071] = "\xd6\x6c", [25072] = "\xd6\x6d", [25073] = "\xe7\xcd", + [25074] = "\xe7\xce", [25075] = "\xd6\x6e", [25077] = "\xe7\xcf", + [25079] = "\xe7\xd0", [25080] = "\xb6\xbd", [25081] = "\xda\xaa", + [25082] = "\xe7\xd1", [25084] = "\xc0\xe5", [25085] = "\xe7\xd2", + [25086] = "\xbc\xcb", [25087] = "\xd6\x6f", [25088] = "\xe7\xd3", + [25090] = "\xd0\xb0", [25091] = "\xd6\x70", [25092] = "\xd6\x71", + [25094] = "\xe7\xd4", [25095] = "\xca\xde", [25096] = "\xb4\xdc", + [25097] = "\xd6\x72", [25098] = "\xd6\x73", [25099] = "\xc1\xa4", + [25100] = "\xbd\xd8", [25101] = "\xd6\x74", [25102] = "\xc9\xf1", + [25103] = "\xbd\xae", [25105] = "\xd6\x75", [25106] = "\xd6\x76", + [25112] = "\xd6\x77", [25113] = "\xe7\xd5", [25114] = "\xb9\xd2", + [25115] = "\xe7\xd6", [25116] = "\xc8\xcc", [25118] = "\xe7\xe4", + [25122] = "\xd6\x78", [25123] = "\xe7\xd8", [25124] = "\xd6\x79", + [25125] = "\xc2\xc9", [25126] = "\xc7\xf5", [25127] = "\xb8\xbf", + [25128] = "\xe7\xd7", [25129] = "\xc1\xa5", [25130] = "\xd6\x7a", + [25136] = "\xe7\xd9", [25139] = "\xd6\x7b", [25140] = "\xd6\x7c", + [25141] = "\xd6\x7d", [25142] = "\xd6\x7e", [25143] = "\xc4\xfa", + [25147] = "\xd7\x21", [25150] = "\xd7\x22", [25151] = "\xd7\x23", + [25153] = "\xd7\x24", [25158] = "\xd7\x25", [25160] = "\xe7\xdb", + [25161] = "\xe7\xda", [25162] = "\xe7\xdd", [25164] = "\xd7\x26", + [25165] = "\xe7\xdc", [25167] = "\xe7\xde", [25168] = "\xd7\x27", + [25170] = "\xe7\xe0", [25171] = "\xd7\x28", [25172] = "\xe7\xdf", + [25174] = "\xb4\xcf", [25175] = "\xd7\x29", [25176] = "\xe7\xe1", + [25178] = "\xe7\xe2", [25179] = "\xe7\xe3", [25181] = "\xd7\x2a", + [25182] = "\xba\xb1", [25183] = "\xce\xc9", [25185] = "\xe7\xe5", + [25186] = "\xbf\xa7", [25188] = "\xd7\x2b", [25190] = "\xb1\xf0", + [25191] = "\xe7\xe6", [25192] = "\xe7\xe7", [25195] = "\xd7\x2c", + [25197] = "\xd7\x2d", [25198] = "\xe7\xe8", [25199] = "\xd7\x2e", + [25200] = "\xd7\x2f", [25201] = "\xd7\x30", [25203] = "\xd7\x31", + [25204] = "\xd7\x32", [25207] = "\xd7\x33", [25209] = "\xd7\x34", + [25210] = "\xd7\x35", [25211] = "\xb0\xf2", [25213] = "\xe7\xe9", + [25214] = "\xd7\x36", [25217] = "\xd7\x37", [25218] = "\xe7\xea", + [25220] = "\xd7\x38", [25222] = "\xd7\x39", [25224] = "\xd7\x3a", + [25225] = "\xc9\xe7", [25226] = "\xd7\x3b", [25227] = "\xd7\x3c", + [25229] = "\xbc\xc7", [25231] = "\xe7\xec", [25232] = "\xd7\x3d", + [25233] = "\xd7\x3e", [25235] = "\xd7\x3f", [25236] = "\xd7\x40", + [25237] = "\xb3\xa9", [25238] = "\xb0\xb2", [25239] = "\xd7\x41", + [25240] = "\xd7\x42", [25241] = "\xd7\x43", [25242] = "\xd7\x44", + [25243] = "\xe7\xeb", [25244] = "\xe7\xee", [25245] = "\xc7\xce", + [25246] = "\xd7\x45", [25247] = "\xbf\xc4", [25248] = "\xd7\x46", + [25249] = "\xb2\xd6", [25250] = "\xd7\x47", [25251] = "\xcb\xa7", + [25252] = "\xd7\x48", [25255] = "\xd7\x49", [25256] = "\xb7\xdd", + [25257] = "\xb6\xdc", [25258] = "\xd7\x4a", [25259] = "\xe7\xed", + [25260] = "\xd7\x4b", [25261] = "\xb2\xea", [25262] = "\xd7\x4c", + [25263] = "\xd7\x4d", [25269] = "\xb4\xa3", [25270] = "\xd7\x4e", + [25280] = "\xd7\x4f", [25281] = "\xb1\xf1", [25282] = "\xe7\xf2", + [25283] = "\xce\xea", [25284] = "\xc2\xdd", [25285] = "\xd7\x50", + [25287] = "\xc9\xc4", [25289] = "\xe7\xfe", [25290] = "\xd7\x51", + [25291] = "\xb2\xd7", [25292] = "\xe7\xfc", [25294] = "\xe7\xfa", + [25295] = "\xe7\xf1", [25296] = "\xd7\x52", [25297] = "\xe7\xef", + [25298] = "\xd7\x53", [25299] = "\xe7\xf0", [25300] = "\xd7\x54", + [25301] = "\xbc\xe3", [25302] = "\xb6\xec", [25303] = "\xc3\xf7", + [25304] = "\xd7\x55", [25306] = "\xd7\x56", [25307] = "\xc6\xd1", + [25309] = "\xd7\x57", [25311] = "\xd7\x58", [25313] = "\xb1\xd1", + [25315] = "\xe7\xf4", [25316] = "\xe7\xf3", [25318] = "\xd7\x59", + [25319] = "\xd7\x5a", [25321] = "\xe7\xf9", [25322] = "\xe7\xf5", + [25323] = "\xe7\xf8", [25325] = "\xd7\x5b", [25326] = "\xd7\x5c", + [25328] = "\xd7\x5d", [25329] = "\xd7\x5e", [25330] = "\xcc\xd0", + [25331] = "\xe7\xf7", [25332] = "\xb2\xd8", [25333] = "\xb3\xfd", + [25334] = "\xe7\xfb", [25335] = "\xd7\x5f", [25336] = "\xd7\x60", + [25337] = "\xe7\xfd", [25338] = "\xd7\x61", [25339] = "\xd7\x62", + [25342] = "\xb7\xd4", [25350] = "\xe8\xa3", [25351] = "\xe8\xac", + [25352] = "\xe8\xad", [25355] = "\xd7\x64", [25356] = "\xb0\xab", + [25357] = "\xd7\x65", [25358] = "\xd7\x66", [25359] = "\xd7\x67", + [25361] = "\xd7\x68", [25362] = "\xd7\x69", [25363] = "\xe8\xb4", + [25368] = "\xb0\xf1", [25371] = "\xe8\xab", [25372] = "\xd7\x6a", + [25373] = "\xd7\x6b", [25374] = "\xd7\x6c", [25375] = "\xe8\xaa", + [25376] = "\xd7\x6d", [25377] = "\xe8\xa5", [25378] = "\xe8\xa4", + [25379] = "\xd7\x6e", [25380] = "\xe8\xa2", [25381] = "\xe8\xa1", + [25382] = "\xc3\xe3", [25383] = "\xd7\x6f", [25384] = "\xc2\xfb", + [25385] = "\xe8\xa7", [25386] = "\xd7\x70", [25388] = "\xd7\x71", + [25389] = "\xd7\x72", [25392] = "\xe8\xa6", [25394] = "\xd7\x73", + [25395] = "\xd7\x74", [25396] = "\xd7\x75", [25397] = "\xe8\xa9", + [25399] = "\xd7\x76", [25401] = "\xc1\xf0", [25402] = "\xb7\xd5", + [25405] = "\xd7\x77", [25406] = "\xd7\x78", [25407] = "\xb1\xc1", + [25408] = "\xe8\xa8", [25409] = "\xd7\x79", [25410] = "\xb9\xd3", + [25411] = "\xd8\x3e", [25412] = "\xd7\x63", [25413] = "\xd7\x7a", + [25414] = "\xd7\x7b", [25415] = "\xd7\x7c", [25416] = "\xc1\xf1", + [25426] = "\xf4\x5f", [25440] = "\xd7\x7d", [25443] = "\xe8\xba", + [25445] = "\xe8\xbb", [25447] = "\xb2\xd9", [25448] = "\xd7\x7e", + [25451] = "\xb2\xae", [25452] = "\xe8\xb8", [25453] = "\xd8\x21", + [25455] = "\xd8\x22", [25456] = "\xd8\x23", [25458] = "\xd8\x24", + [25460] = "\xd8\x25", [25461] = "\xe8\xae", [25462] = "\xd8\x26", + [25463] = "\xe8\xb6", [25465] = "\xe8\xbd", [25466] = "\xe8\xb7", + [25469] = "\xd8\x27", [25470] = "\xe8\xb5", [25474] = "\xd8\x28", + [25475] = "\xe7\xf6", [25476] = "\xd8\x29", [25477] = "\xd8\x2a", + [25478] = "\xe8\xb3", [25480] = "\xd8\x2b", [25481] = "\xd8\x2c", + [25482] = "\xe8\xaf", [25483] = "\xd8\x2d", [25484] = "\xd8\x2e", + [25485] = "\xd8\x2f", [25486] = "\xb4\xd0", [25487] = "\xe8\xb1", + [25488] = "\xe8\xbc", [25490] = "\xe8\xb2", [25494] = "\xd8\x30", + [25495] = "\xd8\x31", [25496] = "\xe8\xbe", [25497] = "\xd8\x32", + [25498] = "\xe8\xb0", [25499] = "\xc7\xfc", [25500] = "\xd8\x33", + [25501] = "\xd8\x4c", [25505] = "\xcd\xe9", [25509] = "\xe8\xb9", + [25517] = "\xe8\xcf", [25518] = "\xd8\x34", [25519] = "\xd8\x35", + [25520] = "\xd8\x36", [25521] = "\xe8\xc7", [25525] = "\xbf\xfb", + [25527] = "\xd8\x37", [25529] = "\xd8\x38", [25530] = "\xb5\xc6", + [25532] = "\xb6\xdd", [25534] = "\xe8\xc2", [25535] = "\xd8\x39", + [25536] = "\xd8\x3a", [25537] = "\xd8\x3b", [25539] = "\xb2\xdb", + [25540] = "\xd8\x3c", [25542] = "\xbe\xd4", [25544] = "\xe8\xc5", + [25548] = "\xba\xda", [25549] = "\xd8\x3d", [25551] = "\xc5\xd1", + [25552] = "\xe8\xca", [25560] = "\xd8\x3f", [25561] = "\xca\xee", + [25562] = "\xd8\x40", [25563] = "\xe8\xc1", [25567] = "\xb2\xda", + [25568] = "\xb8\xd6", [25569] = "\xc9\xa9", [25570] = "\xe8\xcb", + [25572] = "\xe8\xbf", [25574] = "\xd8\x41", [25575] = "\xe8\xc8", + [25576] = "\xd8\x42", [25577] = "\xd8\x43", [25579] = "\xe8\xd2", + [25580] = "\xd8\x44", [25581] = "\xe8\xc3", [25585] = "\xd8\x45", + [25587] = "\xe8\xc4", [25588] = "\xc6\xba", [25590] = "\xd8\x46", + [25591] = "\xe8\xc9", [25594] = "\xd8\x47", [25595] = "\xe8\xc6", + [25596] = "\xcb\xa8", [25597] = "\xe8\xcc", [25598] = "\xb0\xe0", + [25599] = "\xd8\x48", [25601] = "\xd8\x49", [25603] = "\xe8\xc0", + [25605] = "\xd8\x4a", [25609] = "\xd8\x4b", [25616] = "\xe8\xce", + [25618] = "\xe8\xcd", [25625] = "\xc7\xeb", [25626] = "\xe8\xd4", + [25628] = "\xe8\xdf", [25631] = "\xd8\x4d", [25633] = "\xb3\xfe", + [25637] = "\xe8\xe2", [25640] = "\xe8\xd0", [25641] = "\xd8\x4e", + [25644] = "\xe8\xd5", [25645] = "\xcd\xee", [25653] = "\xd8\x4f", + [25654] = "\xe8\xde", [25655] = "\xd8\x50", [25656] = "\xd8\x51", + [25657] = "\xcd\xd5", [25658] = "\xd8\x52", [25661] = "\xd8\x53", + [25662] = "\xce\xaa", [25663] = "\xd8\x54", [25665] = "\xd8\x55", + [25666] = "\xd8\x56", [25670] = "\xd8\x57", [25671] = "\xc3\xf8", + [25672] = "\xd8\x58", [25673] = "\xd8\x59", [25674] = "\xd8\x5a", + [25675] = "\xb3\xeb", [25676] = "\xd8\x5b", [25680] = "\xd8\x5c", + [25681] = "\xc9\xf2", [25682] = "\xe8\xe4", [25683] = "\xc6\xa1", + [25684] = "\xd8\x5d", [25685] = "\xd8\x5e", [25686] = "\xb0\xb1", + [25687] = "\xd8\x5f", [25689] = "\xe8\xdd", [25690] = "\xd8\x60", + [25691] = "\xe8\xd9", [25692] = "\xc1\xf2", [25693] = "\xe8\xd3", + [25694] = "\xe8\xdb", [25695] = "\xe8\xe0", [25696] = "\xd8\x61", + [25697] = "\xc7\xac", [25699] = "\xd8\x62", [25700] = "\xd8\x63", + [25701] = "\xb0\xaa", [25702] = "\xd8\x64", [25703] = "\xe8\xd8", + [25704] = "\xd8\x65", [25705] = "\xe8\xe1", [25706] = "\xc9\xf8", + [25708] = "\xd8\x66", [25709] = "\xd8\x67", [25713] = "\xd8\x68", + [25714] = "\xe8\xdc", [25716] = "\xe8\xd7", [25717] = "\xd8\x69", + [25723] = "\xbe\xd5", [25728] = "\xbd\xaf", [25730] = "\xd8\x6a", + [25731] = "\xd8\x6b", [25732] = "\xbc\xac", [25733] = "\xd8\x6c", + [25737] = "\xcc\xd8", [25740] = "\xc9\xc7", [25742] = "\xd8\x6d", + [25743] = "\xe8\xe7", [25745] = "\xe8\xf0", [25750] = "\xd8\x6e", + [25752] = "\xd8\x6f", [25753] = "\xd8\x70", [25754] = "\xd8\x71", + [25757] = "\xe8\xda", [25759] = "\xd8\x72", [25761] = "\xd8\x73", + [25762] = "\xb3\xf7", [25764] = "\xd8\x74", [25768] = "\xbe\xf8", + [25769] = "\xe8\xe5", [25770] = "\xd8\x75", [25771] = "\xe8\xea", + [25772] = "\xc1\xf3", [25773] = "\xd8\x76", [25774] = "\xd8\x77", + [25775] = "\xe8\xe6", [25776] = "\xd8\x78", [25777] = "\xe8\xed", + [25778] = "\xd8\x79", [25780] = "\xc3\xdf", [25782] = "\xe8\xee", + [25783] = "\xd8\x7a", [25784] = "\xd8\x7b", [25785] = "\xcd\xd6", + [25786] = "\xe8\xe3", [25787] = "\xb3\xb8", [25788] = "\xd8\x7c", + [25789] = "\xe8\xe9", [25791] = "\xd8\x7d", [25792] = "\xe8\xec", + [25793] = "\xcc\xac", [25795] = "\xd8\x7e", [25798] = "\xe8\xef", + [25801] = "\xe8\xe8", [25802] = "\xe8\xeb", [25804] = "\xd9\x21", + [25815] = "\xd9\x22", [25818] = "\xd9\x23", [25820] = "\xcb\xa9", + [25822] = "\xcf\xa1", [25823] = "\xd9\x24", [25824] = "\xd9\x25", + [25825] = "\xd9\x26", [25826] = "\xd9\x27", [25828] = "\xe8\xf3", + [25831] = "\xd9\x28", [25834] = "\xd9\x2a", [25835] = "\xd9\x2b", + [25836] = "\xe8\xfa", [25837] = "\xd9\x2c", [25839] = "\xe8\xf2", + [25840] = "\xbc\xc3", [25842] = "\xd9\x2d", [25843] = "\xd9\x2e", + [25846] = "\xe8\xd1", [25847] = "\xd9\x2f", [25852] = "\xd9\x30", + [25854] = "\xd9\x31", [25856] = "\xd9\x32", [25857] = "\xca\xce", + [25859] = "\xcc\xa2", [25860] = "\xe8\xf9", [25861] = "\xe8\xf8", + [25863] = "\xe8\xf4", [25864] = "\xe8\xf5", [25866] = "\xb1\xb6", + [25868] = "\xd9\x33", [25870] = "\xd9\x34", [25871] = "\xe8\xf7", + [25873] = "\xe8\xf1", [25874] = "\xd9\x35", [25875] = "\xd9\x36", + [25876] = "\xd9\x37", [25877] = "\xd9\x38", [25878] = "\xc4\xd5", + [25879] = "\xd9\x39", [25882] = "\xd9\x3a", [25883] = "\xd9\x3b", + [25884] = "\xe8\xf6", [25885] = "\xb0\xfe", [25887] = "\xd9\x3c", + [25890] = "\xd9\x29", [25891] = "\xd9\x3d", [25892] = "\xd9\x3e", + [25893] = "\xc2\xa2", [25894] = "\xd9\x3f", [25901] = "\xca\xc3", + [25903] = "\xd9\x40", [25904] = "\xe8\xfb", [25905] = "\xe9\xa1", + [25907] = "\xc8\xd9", [25910] = "\xd9\x41", [25912] = "\xe8\xfe", + [25913] = "\xbe\xd6", [25914] = "\xbc\xc9", [25915] = "\xe9\xa3", + [25918] = "\xb6\xbe", [25919] = "\xd9\x42", [25920] = "\xd9\x43", + [25921] = "\xd9\x44", [25922] = "\xd9\x45", [25923] = "\xd9\x46", + [25925] = "\xe9\xa4", [25926] = "\xd9\x47", [25927] = "\xc9\xf9", + [25928] = "\xe8\xfd", [25929] = "\xd9\x48", [25930] = "\xe8\xd6", + [25932] = "\xd9\x49", [25933] = "\xd9\x4a", [25934] = "\xd9\x4b", + [25935] = "\xd9\x4c", [25936] = "\xd9\x4d", [25937] = "\xd9\x4e", + [25938] = "\xd9\x4f", [25939] = "\xe8\xfc", [25940] = "\xd9\x50", + [25944] = "\xcf\xcf", [25945] = "\xc6\xa2", [25946] = "\xc9\xf3", + [25947] = "\xd9\x51", [25949] = "\xe9\xab", [25951] = "\xd9\x52", + [25959] = "\xe9\xb1", [25961] = "\xd9\x53", [25962] = "\xd9\x54", + [25963] = "\xd9\x55", [25965] = "\xd9\x56", [25966] = "\xe9\xb2", + [25967] = "\xd9\x57", [25968] = "\xe9\xa5", [25969] = "\xd9\x58", + [25972] = "\xc7\xf6", [25973] = "\xd9\x59", [25974] = "\xd9\x5a", + [25975] = "\xe9\xaf", [25976] = "\xe9\xa7", [25977] = "\xd9\x5b", + [25978] = "\xe9\xa9", [25979] = "\xd9\x5c", [25980] = "\xd9\x5d", + [25983] = "\xd9\x5e", [25984] = "\xe9\xb3", [25985] = "\xe9\xa8", + [25987] = "\xd9\x5f", [25988] = "\xe9\xac", [25991] = "\xb1\xf2", + [25992] = "\xd9\x60", [25993] = "\xc6\xe5", [25995] = "\xe9\xad", + [25996] = "\xe9\xb0", [25997] = "\xd9\x61", [25999] = "\xd9\x62", + [26000] = "\xd9\x63", [26002] = "\xd9\x64", [26004] = "\xe9\xa6", + [26005] = "\xd9\x65", [26006] = "\xc1\xa6", [26007] = "\xd9\x66", + [26008] = "\xe9\xaa", [26009] = "\xbb\xa7", [26010] = "\xbf\xc5", + [26011] = "\xb7\xb0", [26012] = "\xcc\xf4", [26013] = "\xd9\x74", + [26014] = "\xcc\xf9", [26015] = "\xbd\xf2", [26016] = "\xf4\x61", + [26020] = "\xd9\x67", [26022] = "\xd9\x68", [26023] = "\xd9\x69", + [26024] = "\xd9\x6a", [26025] = "\xe9\xb7", [26026] = "\xe9\xb5", + [26028] = "\xd9\x6b", [26029] = "\xd9\x6c", [26030] = "\xd9\x6d", + [26031] = "\xd9\x6e", [26033] = "\xcf\xce", [26034] = "\xd9\x6f", + [26039] = "\xd9\x70", [26041] = "\xe9\xb4", [26042] = "\xd9\x71", + [26043] = "\xd9\x72", [26045] = "\xcd\xf5", [26046] = "\xd9\x73", + [26047] = "\xe9\xb6", [26048] = "\xe9\xb8", [26053] = "\xe9\xb9", + [26056] = "\xd9\x75", [26058] = "\xd9\x76", [26060] = "\xe9\xbc", + [26061] = "\xe9\xba", [26063] = "\xd9\x77", [26064] = "\xd9\x78", + [26068] = "\xc6\xa3", [26069] = "\xe9\xbb", [26070] = "\xd9\x79", + [26072] = "\xd9\x7a", [26073] = "\xc8\xcd", [26074] = "\xe9\xae", + [26077] = "\xd9\x7b", [26083] = "\xd9\x7c", [26086] = "\xd9\x7d", + [26087] = "\xbd\xf3", [26089] = "\xe9\xbd", [26090] = "\xe9\xc2", + [26091] = "\xc1\xf4", [26092] = "\xd9\x7e", [26094] = "\xe9\xc1", + [26095] = "\xda\x21", [26096] = "\xda\x22", [26098] = "\xe9\xa2", + [26100] = "\xda\x23", [26101] = "\xda\x24", [26102] = "\xe9\xc3", + [26103] = "\xc1\xc9", [26106] = "\xe9\xbe", [26107] = "\xe9\xc0", + [26109] = "\xda\x25", [26110] = "\xda\x26", [26112] = "\xda\x27", + [26113] = "\xda\x28", [26114] = "\xda\x29", [26115] = "\xe9\xbf", + [26118] = "\xdd\xb1", [26119] = "\xdd\xa2", [26120] = "\xda\x2a", + [26121] = "\xda\x2b", [26122] = "\xe9\xc5", [26123] = "\xda\x2c", + [26126] = "\xda\x2d", [26129] = "\xda\x2e", [26130] = "\xe9\xc4", + [26135] = "\xda\x2f", [26137] = "\xda\x30", [26141] = "\xcd\xf6", + [26143] = "\xe2\xbc", [26144] = "\xe9\xc6", [26150] = "\xda\x31", + [26152] = "\xda\x32", [26154] = "\xda\x33", [26156] = "\xda\x34", + [26157] = "\xda\x35", [26159] = "\xe9\xc7", [26160] = "\xda\x36", + [26161] = "\xb8\x66", [26162] = "\xda\x37", [26166] = "\xda\x38", + [26173] = "\xe9\xc8", [26174] = "\xb8\xd7", [26176] = "\xb5\xd4", + [26178] = "\xda\x39", [26179] = "\xda\x3a", [26180] = "\xe9\xca", + [26181] = "\xd1\xdd", [26182] = "\xda\x3b", [26183] = "\xda\x3c", + [26184] = "\xda\x3d", [26185] = "\xda\x3e", [26186] = "\xb5\xf5", + [26188] = "\xce\xba", [26189] = "\xda\x3f", [26190] = "\xb6\xf3", + [26191] = "\xe9\xcb", [26192] = "\xda\x40", [26193] = "\xda\x41", + [26194] = "\xda\x42", [26195] = "\xda\x43", [26196] = "\xda\x44", + [26199] = "\xe9\xcc", [26201] = "\xda\x45", [26203] = "\xc3\xee", + [26204] = "\xda\x46", [26207] = "\xda\x47", [26209] = "\xe9\xcd", + [26213] = "\xda\x48", [26214] = "\xda\x49", [26215] = "\xda\x4a", + [26217] = "\xc6\xfa", [26218] = "\xda\x4b", [26219] = "\xb0\xba", + [26232] = "\xda\x6d", [26234] = "\xb2\xe3", [26235] = "\xe9\xd2", + [26236] = "\xe9\xd3", [26237] = "\xda\x4c", [26241] = "\xda\x4d", + [26243] = "\xe9\xce", [26245] = "\xbb\xbd", [26246] = "\xda\x4e", + [26248] = "\xda\x4f", [26250] = "\xda\x50", [26252] = "\xda\x51", + [26257] = "\xda\x52", [26259] = "\xe9\xcf", [26260] = "\xc7\xc2", + [26262] = "\xda\x53", [26263] = "\xda\x54", [26264] = "\xda\x55", + [26265] = "\xe9\xd0", [26266] = "\xe9\xd1", [26267] = "\xe9\xdb", + [26269] = "\xda\x56", [26271] = "\xe9\xd5", [26272] = "\xe9\xd8", + [26273] = "\xda\x57", [26275] = "\xda\x58", [26276] = "\xda\x59", + [26277] = "\xda\x5a", [26278] = "\xe9\xd4", [26279] = "\xda\x5b", + [26280] = "\xda\x5c", [26281] = "\xda\x5d", [26287] = "\xda\x5e", + [26288] = "\xda\x5f", [26289] = "\xda\x60", [26291] = "\xda\x61", + [26292] = "\xe9\xd6", [26293] = "\xda\x62", [26294] = "\xe9\xd7", + [26295] = "\xbc\xd8", [26297] = "\xe9\xd9", [26299] = "\xc3\xc1", + [26301] = "\xb7\xd6", [26302] = "\xb3\xc2", [26305] = "\xda\x63", + [26306] = "\xda\x64", [26308] = "\xe9\xdc", [26309] = "\xda\x65", + [26311] = "\xda\x66", [26313] = "\xb3\xbf", [26314] = "\xda\x67", + [26315] = "\xe9\xe1", [26316] = "\xda\x68", [26318] = "\xe9\xdd", + [26319] = "\xe9\xe0", [26320] = "\xda\x69", [26323] = "\xda\x6a", + [26324] = "\xc8\xba", [26325] = "\xda\x6b", [26327] = "\xda\x6c", + [26329] = "\xe9\xde", [26332] = "\xe9\xdf", [26333] = "\xc9\xc8", + [26334] = "\xc8\xda", [26335] = "\xe9\xe2", [26344] = "\xc2\xfd", + [26345] = "\xe9\xec", [26346] = "\xda\x6e", [26347] = "\xe9\xe8", + [26348] = "\xda\x6f", [26349] = "\xda\x70", [26350] = "\xb2\xeb", + [26352] = "\xe9\xe6", [26354] = "\xcb\xaa", [26355] = "\xe9\xe7", + [26356] = "\xda\x71", [26357] = "\xda\x72", [26358] = "\xe9\xe4", + [26359] = "\xda\x73", [26360] = "\xe9\xe5", [26361] = "\xe9\xea", + [26362] = "\xe9\xed", [26363] = "\xda\x74", [26365] = "\xe9\xeb", + [26366] = "\xda\x75", [26367] = "\xda\x76", [26368] = "\xda\x77", + [26369] = "\xe9\xe9", [26370] = "\xe9\xe3", [26371] = "\xda\x78", + [26372] = "\xda\x79", [26376] = "\xc3\xd8", [26377] = "\xda\x7a", + [26378] = "\xe9\xf4", [26380] = "\xcc\xaa", [26382] = "\xda\x7b", + [26383] = "\xda\x7c", [26385] = "\xda\x7d", [26387] = "\xda\x7e", + [26389] = "\xe9\xf2", [26392] = "\xdb\x21", [26393] = "\xe9\xf3", + [26398] = "\xdb\x22", [26399] = "\xdb\x23", [26401] = "\xdb\x24", + [26402] = "\xdb\x25", [26404] = "\xe9\xee", [26407] = "\xe9\xf0", + [26409] = "\xdb\x26", [26410] = "\xdb\x27", [26411] = "\xe9\xf1", + [26412] = "\xdb\x28", [26413] = "\xdb\x29", [26414] = "\xdb\x2a", + [26415] = "\xe9\xef", [26416] = "\xdb\x2b", [26419] = "\xdb\x2c", + [26421] = "\xdb\x2d", [26425] = "\xc0\xe6", [26427] = "\xcf\xb9", + [26428] = "\xe9\xf8", [26429] = "\xdb\x2e", [26430] = "\xe9\xf9", + [26435] = "\xea\xa1", [26437] = "\xbf\xaa", [26439] = "\xe9\xfb", + [26440] = "\xdb\x2f", [26441] = "\xe9\xfe", [26445] = "\xdb\x30", + [26447] = "\xe9\xf6", [26448] = "\xe9\xf5", [26449] = "\xdb\x31", + [26451] = "\xea\xa2", [26452] = "\xdb\x32", [26453] = "\xdb\x33", + [26454] = "\xb2\xdc", [26456] = "\xe9\xfc", [26458] = "\xea\xa3", + [26462] = "\xe9\xfd", [26463] = "\xdb\x34", [26465] = "\xdb\x35", + [26466] = "\xdb\x36", [26468] = "\xe9\xfa", [26470] = "\xc4\xb3", + [26472] = "\xe9\xf7", [26475] = "\xdb\x37", [26479] = "\xc7\xe8", + [26482] = "\xea\xa7", [26483] = "\xdb\x38", [26484] = "\xdb\x39", + [26485] = "\xdb\x3a", [26486] = "\xdb\x3b", [26487] = "\xdb\x3c", + [26488] = "\xdb\x3d", [26489] = "\xdb\x3e", [26491] = "\xdb\x3f", + [26492] = "\xdb\x40", [26493] = "\xcd\xbb", [26496] = "\xdb\x41", + [26499] = "\xdb\x42", [26501] = "\xdb\x43", [26503] = "\xdb\x44", + [26504] = "\xdb\x45", [26505] = "\xdb\x46", [26510] = "\xdb\x47", + [26511] = "\xea\xa6", [26512] = "\xdb\x48", [26514] = "\xea\xa5", + [26515] = "\xdb\x49", [26519] = "\xdb\x4a", [26523] = "\xea\xae", + [26524] = "\xdb\x4b", [26525] = "\xdb\x4c", [26526] = "\xdb\x4d", + [26527] = "\xea\xa8", [26529] = "\xdb\x4e", [26531] = "\xea\xb0", + [26533] = "\xdb\x4f", [26538] = "\xcd\xe6", [26539] = "\xea\xb3", + [26541] = "\xea\xaa", [26542] = "\xdb\x50", [26543] = "\xdb\x51", + [26544] = "\xea\xab", [26545] = "\xdb\x52", [26548] = "\xea\xaf", + [26550] = "\xea\xb2", [26551] = "\xea\xb1", [26552] = "\xdb\x53", + [26553] = "\xdb\x54", [26554] = "\xdb\x55", [26555] = "\xea\xa9", + [26558] = "\xdb\x56", [26560] = "\xea\xac", [26562] = "\xea\xbd", + [26565] = "\xdb\x57", [26566] = "\xdb\x58", [26569] = "\xdb\x59", + [26570] = "\xdb\x5a", [26572] = "\xdb\x5b", [26575] = "\xdb\x5c", + [26576] = "\xea\xb6", [26578] = "\xdb\x5d", [26579] = "\xdb\x5e", + [26580] = "\xdb\x5f", [26586] = "\xdb\x60", [26587] = "\xdb\x61", + [26589] = "\xdb\x62", [26591] = "\xea\xb4", [26593] = "\xdb\x63", + [26594] = "\xea\xb5", [26595] = "\xdb\x64", [26598] = "\xea\xba", + [26599] = "\xea\xbb", [26600] = "\xdb\x65", [26601] = "\xb3\xaa", + [26602] = "\xdb\x66", [26603] = "\xb5\xc2", [26606] = "\xea\xb9", + [26607] = "\xdb\x67", [26609] = "\xdb\x68", [26611] = "\xdb\x69", + [26613] = "\xea\xa4", [26614] = "\xdb\x6a", [26615] = "\xf4\x64", + [26617] = "\xdb\x6b", [26618] = "\xdb\x6c", [26619] = "\xdb\x6d", + [26621] = "\xea\xb8", [26622] = "\xea\xbc", [26623] = "\xea\xb7", + [26624] = "\xdb\x6e", [26625] = "\xea\xbe", [26626] = "\xdb\x70", + [26627] = "\xdb\x71", [26628] = "\xdb\x72", [26629] = "\xea\xc0", + [26630] = "\xea\xbf", [26632] = "\xdb\x73", [26633] = "\xdb\x6f", + [26634] = "\xdb\x74", [26635] = "\xdb\x75", [26636] = "\xdb\x76", + [26638] = "\xdb\x77", [26639] = "\xdb\x78", [26641] = "\xea\xc2", + [26642] = "\xea\xc1", [26643] = "\xe9\xda", [26647] = "\xea\xc6", + [26648] = "\xdb\x79", [26653] = "\xdb\x7a", [26654] = "\xdb\x7b", + [26656] = "\xdb\x7c", [26657] = "\xea\xc3", [26658] = "\xdb\x7d", + [26661] = "\xdb\x7e", [26662] = "\xea\xc4", [26665] = "\xea\xc5", + [26666] = "\xdc\x21", [26667] = "\xea\xc7", [26668] = "\xdc\x22", + [26672] = "\xb7\xec", [26673] = "\xdc\x23", [26674] = "\xea\xc9", + [26675] = "\xdc\x24", [26676] = "\xea\xc8", [26677] = "\xdc\x25", + [26678] = "\xbd\xb0", [26680] = "\xdc\x26", [26681] = "\xdc\x27", + [26682] = "\xdc\x28", [26683] = "\xdc\x29", [26684] = "\xb9\xd4", + [26685] = "\xde\xa7", [26686] = "\xdc\x2a", [26689] = "\xdc\x2b", + [26690] = "\xea\xca", [26691] = "\xbd\xd1", [26693] = "\xdc\x2c", + [26694] = "\xdc\x2d", [26695] = "\xb3\xb9", [26696] = "\xdc\x2e", + [26697] = "\xea\xcb", [26698] = "\xdc\x2f", [26699] = "\xb1\xd2", + [26700] = "\xdc\x30", [26701] = "\xbe\xd7", [26702] = "\xea\xcc", + [26703] = "\xdc\x31", [26704] = "\xdc\x32", [26705] = "\xb9\xd5", + [26706] = "\xea\xcd", [26707] = "\xb0\xe1", [26708] = "\xdc\x33", + [26712] = "\xc9\xbd", [26713] = "\xdc\x34", [26715] = "\xea\xce", + [26720] = "\xbf\xea", [26721] = "\xdc\x35", [26722] = "\xea\xd5", + [26725] = "\xea\xd2", [26727] = "\xc3\xef", [26729] = "\xdc\x36", + [26731] = "\xdc\x37", [26733] = "\xea\xd3", [26734] = "\xea\xd0", + [26735] = "\xb6\xde", [26736] = "\xdc\x38", [26737] = "\xea\xcf", + [26738] = "\xea\xd6", [26744] = "\xb7\xb6", [26747] = "\xc2\xde", + [26749] = "\xea\xdc", [26754] = "\xea\xd8", [26758] = "\xc2\xb5", + [26759] = "\xea\xd7", [26760] = "\xdc\x39", [26761] = "\xea\xda", + [26762] = "\xdc\x3a", [26763] = "\xdc\x3b", [26764] = "\xdc\x3c", + [26766] = "\xea\xd1", [26767] = "\xdc\x3d", [26768] = "\xdc\x3e", + [26770] = "\xea\xdb", [26772] = "\xea\xdd", [26776] = "\xdc\x3f", + [26778] = "\xdc\x40", [26779] = "\xc8\xef", [26782] = "\xea\xd9", + [26784] = "\xea\xde", [26785] = "\xea\xe0", [26788] = "\xb8\xd3", + [26789] = "\xea\xd4", [26791] = "\xb0\xc1", [26794] = "\xdc\x41", + [26797] = "\xdc\x42", [26798] = "\xdc\x43", [26799] = "\xea\xdf", + [26800] = "\xdc\x44", [26801] = "\xba\xdb", [26802] = "\xce\xf6", + [26803] = "\xea\xe1", [26804] = "\xea\xe2", [26805] = "\xc1\xf5", + [26810] = "\xdc\x45", [26811] = "\xdc\x46", [26812] = "\xdc\x47", + [26813] = "\xdc\x48", [26814] = "\xdc\x49", [26815] = "\xce\xa2", + [26817] = "\xdc\x4a", [26818] = "\xdc\x4b", [26819] = "\xdc\x4c", + [26820] = "\xea\xe3", [26821] = "\xcd\xb5", [26824] = "\xea\xe4", + [26825] = "\xea\xe5", [26827] = "\xdc\x4d", [26828] = "\xca\xe4", + [26829] = "\xea\xe6", [26830] = "\xdc\x4e", [26831] = "\xba\xc0", + [26833] = "\xce\xa3", [26839] = "\xdc\x4f", [26840] = "\xea\xeb", + [26847] = "\xdc\x50", [26848] = "\xdc\x51", [26849] = "\xdc\x52", + [26850] = "\xea\xec", [26851] = "\xbe\xd8", [26852] = "\xea\xea", + [26853] = "\xdc\x53", [26855] = "\xdc\x54", [26856] = "\xcd\xe7", + [26857] = "\xea\xe7", [26860] = "\xea\xe9", [26861] = "\xc0\xbd", + [26862] = "\xbf\xfe", [26865] = "\xdc\x55", [26866] = "\xea\xe8", + [26868] = "\xea\xed", [26870] = "\xdc\x56", [26871] = "\xca\xa3", + [26874] = "\xea\xef", [26876] = "\xea\xee", [26877] = "\xdc\x57", + [26878] = "\xdc\x58", [26879] = "\xdc\x59", [26880] = "\xb3\xec", + [26882] = "\xcb\xab", [26883] = "\xea\xf0", [26885] = "\xdc\x5a", + [26886] = "\xdc\x5b", [26888] = "\xdc\x5c", [26889] = "\xdc\x5d", + [26890] = "\xdc\x5e", [26892] = "\xdc\x5f", [26893] = "\xea\xfc", + [26894] = "\xea\xf2", [26896] = "\xdc\x60", [26901] = "\xea\xf3", + [26902] = "\xdc\x61", [26903] = "\xdc\x62", [26904] = "\xdc\x63", + [26906] = "\xea\xf4", [26907] = "\xea\xf5", [26912] = "\xdc\x64", + [26913] = "\xdc\x65", [26914] = "\xdc\x66", [26917] = "\xdc\x67", + [26918] = "\xea\xf9", [26920] = "\xea\xfa", [26921] = "\xdc\x68", + [26922] = "\xdc\x69", [26923] = "\xea\xf8", [26926] = "\xdc\x6a", + [26928] = "\xdc\x6b", [26929] = "\xea\xf6", [26930] = "\xdc\x6c", + [26931] = "\xea\xf1", [26932] = "\xea\xf7", [26933] = "\xdc\x6d", + [26934] = "\xdc\x6e", [26937] = "\xdc\x6f", [26940] = "\xea\xfb", + [26941] = "\xf0\xb7", [26943] = "\xdc\x70", [26946] = "\xdc\x71", + [26950] = "\xb2\xa8", [26951] = "\xdc\x72", [26954] = "\xdc\x73", + [26955] = "\xdc\x74", [26956] = "\xdc\x75", [26958] = "\xea\xfe", + [26959] = "\xb6\xdf", [26960] = "\xea\xfd", [26961] = "\xdc\x76", + [26962] = "\xdc\x77", [26963] = "\xdc\x78", [26964] = "\xeb\xa2", + [26966] = "\xeb\xa1", [26970] = "\xeb\xa4", [26971] = "\xdc\x79", + [26973] = "\xeb\xa3", [26974] = "\xdc\x7a", [26975] = "\xeb\xa5", + [26976] = "\xdc\x7b", [26978] = "\xbd\xb1", [26979] = "\xdc\x7c", + [26980] = "\xeb\xa6", [26981] = "\xdc\x7d", [26983] = "\xeb\xa7", + [26986] = "\xdc\x7e", [26987] = "\xdd\x21", [26988] = "\xdd\x22", + [26989] = "\xdd\x23", [26990] = "\xeb\xa8", [26991] = "\xc0\xbe", + [26993] = "\xcd\xd7", [26995] = "\xeb\xa9", [26998] = "\xca\xa4", + [26999] = "\xc7\xc6", [27000] = "\xeb\xaa", [27001] = "\xdd\x24", + [27002] = "\xeb\xab", [27003] = "\xb8\xab", [27005] = "\xdd\x25", + [27007] = "\xb5\xac", [27008] = "\xdd\x26", [27011] = "\xeb\xac", + [27012] = "\xdd\x27", [27013] = "\xdd\x28", [27014] = "\xbb\xeb", + [27015] = "\xc7\xc1", [27016] = "\xeb\xad", [27018] = "\xb3\xd0", + [27019] = "\xdd\x29", [27020] = "\xdd\x2a", [27023] = "\xdd\x2b", + [27024] = "\xdd\x2c", [27025] = "\xeb\xae", [27029] = "\xdd\x2d", + [27030] = "\xeb\xb0", [27031] = "\xcd\xf7", [27033] = "\xeb\xaf", + [27034] = "\xbf\xc6", [27036] = "\xeb\xb1", [27039] = "\xeb\xb2", + [27040] = "\xdd\x2e", [27042] = "\xeb\xb3", [27043] = "\xb4\xd1", + [27044] = "\xdd\x2f", [27045] = "\xdd\x30", [27046] = "\xdd\x31", + [27047] = "\xdd\x32", [27050] = "\xeb\xb4", [27052] = "\xdd\x33", + [27053] = "\xeb\xb5", [27055] = "\xeb\xb6", [27056] = "\xeb\xb7", + [27074] = "\xb3\xd1", [27076] = "\xdd\x34", [27077] = "\xdd\x35", + [27078] = "\xdd\x36", [27079] = "\xdd\x37", [27080] = "\xdd\x38", + [27082] = "\xeb\xb8", [27084] = "\xeb\xb9", [27085] = "\xeb\xba", + [27091] = "\xb2\xf2", [27093] = "\xdd\x39", [27094] = "\xbf\xa8", + [27095] = "\xeb\xbb", [27097] = "\xdd\x3a", [27099] = "\xdd\x3b", + [27101] = "\xdd\x3c", [27105] = "\xdd\x3d", [27107] = "\xdd\x3e", + [27108] = "\xeb\xbc", [27110] = "\xdd\x3f", [27112] = "\xeb\xbd", + [27113] = "\xdd\x40", [27117] = "\xdd\x41", [27119] = "\xdd\x42", + [27120] = "\xb8\xc0", [27122] = "\xc4\xfb", [27123] = "\xeb\xbe", + [27124] = "\xdd\x43", [27125] = "\xdd\x44", [27127] = "\xdd\x45", + [27128] = "\xb7\xd7", [27130] = "\xbf\xd6", [27132] = "\xeb\xc1", + [27134] = "\xc6\xa4", [27135] = "\xdd\x46", [27136] = "\xeb\xc0", + [27137] = "\xdd\x47", [27138] = "\xdd\x48", [27139] = "\xb7\xb1", + [27140] = "\xdd\x49", [27141] = "\xdd\x4a", [27142] = "\xeb\xbf", + [27143] = "\xc2\xf7", [27144] = "\xb5\xad", [27147] = "\xeb\xc2", + [27149] = "\xeb\xc3", [27150] = "\xdd\x4b", [27151] = "\xbe\xd9", + [27152] = "\xdd\x4c", [27154] = "\xdd\x4d", [27155] = "\xb7\xed", + [27156] = "\xdd\x4e", [27157] = "\xeb\xc4", [27158] = "\xdd\x4f", + [27162] = "\xcb\xac", [27163] = "\xdd\x50", [27164] = "\xdd\x51", + [27165] = "\xc0\xdf", [27167] = "\xdd\x52", [27169] = "\xb5\xf6", + [27171] = "\xcc\xf5", [27172] = "\xc1\xca", [27173] = "\xdd\x53", + [27174] = "\xeb\xc5", [27175] = "\xdd\x54", [27178] = "\xbf\xc7", + [27179] = "\xc3\xf0", [27180] = "\xbe\xda", [27181] = "\xdd\x55", + [27182] = "\xdd\x56", [27184] = "\xdd\x57", [27185] = "\xeb\xc6", + [27187] = "\xdd\x58", [27189] = "\xdd\x59", [27190] = "\xeb\xc9", + [27191] = "\xdd\x5a", [27192] = "\xeb\xca", [27193] = "\xdd\x5b", + [27197] = "\xdd\x5c", [27198] = "\xdd\x5d", [27200] = "\xba\xbe", + [27201] = "\xc2\xc2", [27202] = "\xeb\xc8", [27203] = "\xdd\x5e", + [27204] = "\xbe\xdb", [27205] = "\xc9\xbe", [27206] = "\xdd\x5f", + [27207] = "\xdd\x60", [27208] = "\xdd\x61", [27211] = "\xeb\xc7", + [27212] = "\xdd\x62", [27213] = "\xdd\x63", [27214] = "\xbb\xec", + [27216] = "\xb1\xd3", [27217] = "\xdd\x64", [27218] = "\xeb\xce", + [27219] = "\xb7\xd8", [27221] = "\xdd\x65", [27222] = "\xbb\xee", + [27223] = "\xdd\x66", [27225] = "\xbb\xed", [27227] = "\xcf\xcd", + [27228] = "\xeb\xcd", [27229] = "\xeb\xcc", [27230] = "\xc1\xa7", + [27232] = "\xb5\xcd", [27233] = "\xcf\xc3", [27234] = "\xb3\xba", + [27235] = "\xbe\xdc", [27237] = "\xdd\x67", [27238] = "\xdd\x68", + [27239] = "\xdd\x69", [27241] = "\xdd\x6a", [27242] = "\xdd\x6b", + [27243] = "\xdd\x6c", [27244] = "\xeb\xcb", [27246] = "\xdd\x6d", + [27247] = "\xdd\x6e", [27248] = "\xdd\x6f", [27250] = "\xeb\xd0", + [27251] = "\xdd\x70", [27252] = "\xeb\xd1", [27253] = "\xeb\xcf", + [27254] = "\xdd\x71", [27255] = "\xb8\xd8", [27257] = "\xcd\xc0", + [27259] = "\xdd\x72", [27260] = "\xbb\xef", [27261] = "\xc7\xa7", + [27263] = "\xdd\x73", [27264] = "\xdd\x74", [27265] = "\xeb\xd4", + [27266] = "\xdd\x75", [27267] = "\xc0\xc0", [27269] = "\xc3\xc2", + [27270] = "\xdd\x76", [27271] = "\xdd\x77", [27272] = "\xcd\xb6", + [27273] = "\xdd\x78", [27274] = "\xeb\xd7", [27278] = "\xb8\xec", + [27279] = "\xdd\x79", [27280] = "\xc0\xbf", [27281] = "\xeb\xd3", + [27283] = "\xeb\xd8", [27284] = "\xb8\xed", [27285] = "\xeb\xd5", + [27286] = "\xeb\xd6", [27287] = "\xdd\x7a", [27288] = "\xeb\xd2", + [27289] = "\xdd\x7b", [27292] = "\xc0\xe2", [27293] = "\xc6\xc9", + [27294] = "\xdd\x7c", [27295] = "\xdd\x7d", [27296] = "\xc3\xaf", + [27298] = "\xb2\xdd", [27299] = "\xdd\x7e", [27302] = "\xde\x21", + [27303] = "\xde\x22", [27305] = "\xc8\xf0", [27307] = "\xde\x23", + [27308] = "\xb5\xc3", [27310] = "\xde\x24", [27311] = "\xc4\xb4", + [27314] = "\xeb\xdb", [27315] = "\xde\x25", [27316] = "\xeb\xd9", + [27318] = "\xde\x26", [27319] = "\xc3\xcc", [27320] = "\xde\x27", + [27321] = "\xde\x28", [27322] = "\xde\x29", [27323] = "\xc0\xc1", + [27324] = "\xb4\xd2", [27325] = "\xeb\xda", [27327] = "\xbf\xdb", + [27329] = "\xde\x2a", [27330] = "\xce\xca", [27331] = "\xde\x2b", + [27332] = "\xde\x2c", [27333] = "\xde\x2d", [27334] = "\xcf\xc0", + [27335] = "\xde\x2e", [27338] = "\xeb\xdc", [27339] = "\xeb\xe7", + [27340] = "\xc4\xb5", [27341] = "\xde\x2f", [27342] = "\xeb\xe6", + [27343] = "\xde\x30", [27344] = "\xeb\xe3", [27345] = "\xeb\xeb", + [27346] = "\xeb\xe4", [27348] = "\xeb\xe0", [27350] = "\xc4\xfc", + [27351] = "\xeb\xdf", [27355] = "\xeb\xdd", [27356] = "\xde\x31", + [27357] = "\xcd\xa1", [27358] = "\xbb\xf0", [27360] = "\xde\x32", + [27361] = "\xeb\xe1", [27363] = "\xeb\xde", [27364] = "\xde\x33", + [27365] = "\xde\x34", [27366] = "\xde\x35", [27367] = "\xeb\xe5", + [27368] = "\xbd\xf4", [27370] = "\xb8\xc1", [27372] = "\xde\x36", + [27374] = "\xc2\xfa", [27375] = "\xde\x37", [27376] = "\xcb\xc5", + [27377] = "\xb1\xda", [27378] = "\xb0\xe2", [27380] = "\xc6\xa5", + [27381] = "\xde\x38", [27382] = "\xde\x39", [27383] = "\xeb\xe9", + [27386] = "\xde\x3f", [27387] = "\xde\x3a", [27388] = "\xeb\xe8", + [27390] = "\xc6\xe6", [27392] = "\xeb\xed", [27393] = "\xde\x3b", + [27396] = "\xeb\xe2", [27398] = "\xeb\xec", [27399] = "\xeb\xee", + [27401] = "\xb8\xac", [27402] = "\xeb\xea", [27403] = "\xb9\xd6", + [27404] = "\xde\x3c", [27405] = "\xbc\xd5", [27406] = "\xde\x3d", + [27407] = "\xde\x3e", [27408] = "\xeb\xef", [27409] = "\xcd\xd8", + [27414] = "\xeb\xf2", [27416] = "\xeb\xf5", [27419] = "\xeb\xf3", + [27420] = "\xc9\xb5", [27421] = "\xde\x40", [27424] = "\xde\x41", + [27427] = "\xeb\xf0", [27431] = "\xde\x42", [27433] = "\xb6\xe0", + [27436] = "\xde\x43", [27438] = "\xeb\xf4", [27441] = "\xeb\xf6", + [27442] = "\xde\x44", [27443] = "\xde\x45", [27444] = "\xde\x46", + [27445] = "\xde\x47", [27446] = "\xde\x48", [27448] = "\xde\x49", + [27449] = "\xeb\xfa", [27452] = "\xeb\xf7", [27453] = "\xde\x4e", + [27454] = "\xeb\xf9", [27455] = "\xeb\xf8", [27458] = "\xde\x4a", + [27459] = "\xde\x4b", [27460] = "\xde\x4c", [27462] = "\xeb\xfb", + [27464] = "\xbc\xb1", [27465] = "\xde\x4d", [27466] = "\xeb\xfd", + [27467] = "\xeb\xfc", [27468] = "\xc9\xe8", [27470] = "\xde\x4f", + [27471] = "\xec\xa1", [27475] = "\xde\x50", [27478] = "\xb7\xd9", + [27483] = "\xeb\xfe", [27484] = "\xec\xa2", [27485] = "\xde\x51", + [27487] = "\xec\xa3", [27488] = "\xb5\xc4", [27489] = "\xe6\xc1", + [27490] = "\xbe\xf9", [27492] = "\xec\xa4", [27494] = "\xde\x52", + [27495] = "\xb8\xee", [27496] = "\xde\x53", [27497] = "\xde\x54", + [27500] = "\xde\x55", [27501] = "\xec\xa5", [27502] = "\xde\x56", + [27503] = "\xf4\x66", [27504] = "\xec\xa6", [27505] = "\xde\x57", + [27507] = "\xbb\xbe", [27508] = "\xde\x58", [27509] = "\xde\x59", + [27514] = "\xda\xce", [27515] = "\xde\x5a", [27516] = "\xec\xa7", + [27517] = "\xde\x5b", [27518] = "\xec\xa8", [27519] = "\xde\x5c", + [27520] = "\xbd\xb2", [27522] = "\xec\xa9", [27523] = "\xec\xaa", + [27524] = "\xde\x5d", [27525] = "\xde\x5e", [27526] = "\xec\xab", + [27529] = "\xec\xac", [27530] = "\xec\xad", [27532] = "\xde\x5f", + [27534] = "\xde\x60", [27535] = "\xde\x61", [27687] = "\xc3\xab", + [27688] = "\xde\x62", [27689] = "\xde\x63", [27690] = "\xec\xae", + [27693] = "\xde\x64", [27694] = "\xde\x65", [27695] = "\xec\xb0", + [27697] = "\xec\xaf", [27701] = "\xde\x66", [27702] = "\xc6\xa6", + [27703] = "\xde\x67", [27704] = "\xec\xb1", [27705] = "\xde\x68", + [27706] = "\xcb\xad", [27707] = "\xde\x69", [27708] = "\xec\xb2", + [27710] = "\xec\xb3", [27711] = "\xde\x6a", [27712] = "\xec\xb4", + [27713] = "\xde\x6b", [27715] = "\xde\x6c", [27716] = "\xde\x6d", + [27717] = "\xec\xb5", [27719] = "\xde\x6e", [27720] = "\xde\x6f", + [27721] = "\xde\x72", [27722] = "\xc6\xda", [27723] = "\xde\x70", + [27725] = "\xde\x71", [27729] = "\xbe\xdd", [27730] = "\xec\xb6", + [27731] = "\xde\x73", [27732] = "\xde\x74", [27734] = "\xde\x75", + [27736] = "\xde\x76", [27737] = "\xde\x77", [27738] = "\xb9\xeb", + [27739] = "\xd0\xae", [27740] = "\xec\xb7", [27741] = "\xde\x78", + [27747] = "\xde\x79", [27749] = "\xde\x7a", [27750] = "\xde\x7b", + [27752] = "\xec\xb8", [27753] = "\xc9\xbf", [27754] = "\xec\xb9", + [27755] = "\xde\x7c", [27756] = "\xec\xc1", [27758] = "\xde\x7d", + [27762] = "\xec\xba", [27765] = "\xec\xbc", [27766] = "\xde\x7e", + [27767] = "\xdf\x21", [27769] = "\xec\xbb", [27770] = "\xec\xbd", + [27771] = "\xdf\x22", [27772] = "\xcb\xc6", [27773] = "\xec\xbe", + [27774] = "\xec\xbf", [27776] = "\xdf\x23", [27778] = "\xdf\x24", + [27779] = "\xdf\x25", [27780] = "\xec\xc0", [27784] = "\xec\xc2", + [27785] = "\xdf\x26", [27787] = "\xdf\x27", [27788] = "\xdf\x28", + [27789] = "\xb3\xad", [27790] = "\xc4\xe7", [27792] = "\xc9\xe9", + [27793] = "\xba\xe2", [27794] = "\xb9\xd7", [27796] = "\xdf\x29", + [27799] = "\xc9\xcf", [27800] = "\xb2\xdf", [27801] = "\xc8\xce", + [27802] = "\xec\xc5", [27803] = "\xb4\xd3", [27804] = "\xc0\xd5", + [27805] = "\xec\xc4", [27806] = "\xec\xc9", [27807] = "\xc3\xf9", + [27808] = "\xcc\xe3", [27810] = "\xec\xc7", [27811] = "\xec\xc8", + [27812] = "\xb5\xae", [27814] = "\xec\xca", [27815] = "\xc7\xe3", + [27816] = "\xc2\xdf", [27817] = "\xdf\x2a", [27818] = "\xdf\x2b", + [27819] = "\xc8\xf1", [27820] = "\xc5\xbd", [27821] = "\xec\xc6", + [27823] = "\xcb\xc7", [27824] = "\xb2\xec", [27825] = "\xec\xcc", + [27826] = "\xcf\xa8", [27827] = "\xc4\xc2", [27828] = "\xcf\xc5", + [27829] = "\xdf\x2c", [27830] = "\xdf\x2d", [27831] = "\xbb\xf1", + [27832] = "\xec\xcb", [27833] = "\xdf\x2e", [27834] = "\xc2\xb1", + [27835] = "\xdf\x2f", [27837] = "\xec\xdc", [27838] = "\xc1\xa8", + [27839] = "\xdf\x30", [27841] = "\xc6\xf8", [27843] = "\xc9\xd0", + [27845] = "\xdf\x32", [27846] = "\xdf\x31", [27849] = "\xdf\x33", + [27850] = "\xec\xcf", [27851] = "\xbb\xbf", [27852] = "\xbb\xf2", + [27853] = "\xdf\x34", [27854] = "\xbe\xde", [27856] = "\xc7\xe5", + [27857] = "\xdf\x35", [27858] = "\xb8\xad", [27859] = "\xec\xce", + [27860] = "\xec\xcd", [27862] = "\xc9\xea", [27864] = "\xdf\x36", + [27866] = "\xbc\xc1", [27868] = "\xdf\x37", [27869] = "\xc5\xd2", + [27871] = "\xdf\x38", [27872] = "\xdf\x39", [27874] = "\xdf\x3a", + [27876] = "\xf4\x67", [27877] = "\xdf\x3b", [27879] = "\xdf\x3c", + [27880] = "\xdf\x3d", [27882] = "\xec\xd1", [27883] = "\xec\xd2", + [27884] = "\xb9\xd8", [27885] = "\xec\xd0", [27886] = "\xdf\x3e", + [27887] = "\xdf\x3f", [27889] = "\xdf\x40", [27891] = "\xdf\x41", + [27892] = "\xec\xd3", [27893] = "\xec\xd4", [27895] = "\xec\xd6", + [27896] = "\xc2\xa3", [27897] = "\xdf\x42", [27898] = "\xec\xd5", + [27899] = "\xb4\xe6", [27901] = "\xec\xd8", [27903] = "\xec\xd7", + [27904] = "\xec\xd9", [27906] = "\xdf\x43", [27907] = "\xec\xdb", + [27908] = "\xec\xdd", [27910] = "\xec\xde", [27911] = "\xdf\x44", + [27915] = "\xdf\x45", [27988] = "\xc0\xd6", [27989] = "\xdf\x46", + [27990] = "\xbc\xcf", [27991] = "\xec\xdf", [27993] = "\xdf\x47", + [27995] = "\xb3\xd2", [27996] = "\xdf\x48", [27997] = "\xec\xe0", + [27998] = "\xdf\x49", [28000] = "\xc1\xf6", [28001] = "\xec\xe1", + [28003] = "\xec\xe2", [28004] = "\xc9\xeb", [28006] = "\xf4\x68", + [28007] = "\xb5\xaf", [28015] = "\xdf\x4a", [28017] = "\xec\xe3", + [28018] = "\xdf\x4b", [28020] = "\xdf\x4c", [28021] = "\xc4\xb6", + [28024] = "\xdf\x4d", [28026] = "\xb1\xdb", [28029] = "\xdf\x4e", + [28032] = "\xdf\x4f", [28033] = "\xdf\x50", [28037] = "\xdf\x51", + [28041] = "\xec\xe4", [28046] = "\xdf\x52", [28047] = "\xdf\x53", + [28048] = "\xdf\x54", [28051] = "\xbc\xf1", [28054] = "\xdf\x55", + [28056] = "\xbf\xf6", [28059] = "\xdf\x56", [28060] = "\xdf\x57", + [28063] = "\xdf\x58", [28066] = "\xdf\x59", [28067] = "\xc2\xad", + [28069] = "\xdf\x5a", [28071] = "\xdf\x5b", [28073] = "\xdf\x5c", + [28074] = "\xec\xe7", [28075] = "\xdf\x5d", [28076] = "\xdf\x6f", + [28078] = "\xec\xe6", [28080] = "\xdf\x5e", [28082] = "\xec\xe5", + [28085] = "\xdf\x5f", [28086] = "\xdf\x60", [28087] = "\xdf\x61", + [28088] = "\xdf\x62", [28090] = "\xdf\x63", [28091] = "\xec\xed", + [28092] = "\xec\xeb", [28094] = "\xdf\x64", [28095] = "\xec\xe8", + [28097] = "\xdf\x65", [28100] = "\xdf\x66", [28101] = "\xdf\x67", + [28102] = "\xec\xea", [28103] = "\xdf\x68", [28105] = "\xdf\x69", + [28106] = "\xec\xe9", [28107] = "\xec\xec", [28109] = "\xb5\xf7", + [28111] = "\xec\xf0", [28113] = "\xc0\xd7", [28115] = "\xec\xf1", + [28116] = "\xdf\x6a", [28117] = "\xdf\x6b", [28119] = "\xdf\x6c", + [28120] = "\xb8\xd9", [28122] = "\xec\xee", [28123] = "\xec\xef", + [28124] = "\xdf\x6d", [28127] = "\xcf\xa9", [28128] = "\xdf\x6e", + [28129] = "\xdf\x70", [28130] = "\xdf\x71", [28131] = "\xc4\xb7", + [28132] = "\xdf\x72", [28133] = "\xc1\xa9", [28140] = "\xec\xf2", + [28141] = "\xdf\x73", [28143] = "\xec\xf5", [28145] = "\xdf\x74", + [28148] = "\xdf\x75", [28149] = "\xdf\x76", [28150] = "\xdf\x77", + [28152] = "\xec\xf3", [28153] = "\xec\xf4", [28154] = "\xcd\xd9", + [28155] = "\xdf\x78", [28159] = "\xc6\xa7", [28160] = "\xec\xf8", + [28161] = "\xdf\x79", [28164] = "\xdf\x7a", [28166] = "\xdf\x7b", + [28173] = "\xec\xf6", [28174] = "\xec\xf7", [28175] = "\xec\xf9", + [28176] = "\xdf\x7c", [28177] = "\xdf\x7d", [28178] = "\xdf\x7e", + [28179] = "\xe0\x21", [28182] = "\xe0\x22", [28183] = "\xe0\x23", + [28186] = "\xed\xa9", [28192] = "\xec\xfc", [28193] = "\xe0\x24", + [28195] = "\xe0\x25", [28196] = "\xec\xfd", [28197] = "\xec\xfb", + [28198] = "\xe0\x26", [28199] = "\xe0\x27", [28200] = "\xe0\x28", + [28201] = "\xe0\x29", [28205] = "\xe0\x2a", [28208] = "\xe0\x2b", + [28209] = "\xe0\x2c", [28210] = "\xec\xfa", [28212] = "\xc4\xfd", + [28215] = "\xed\xa1", [28216] = "\xed\xa5", [28217] = "\xed\xa2", + [28218] = "\xec\xfe", [28219] = "\xe0\x2d", [28220] = "\xed\xa3", + [28221] = "\xe0\x2e", [28222] = "\xe0\x2f", [28223] = "\xe0\x30", + [28224] = "\xed\xa4", [28228] = "\xe0\x31", [28229] = "\xed\xab", + [28233] = "\xed\xa6", [28235] = "\xe0\x32", [28236] = "\xe0\x33", + [28237] = "\xe0\x34", [28238] = "\xe0\x35", [28239] = "\xc0\xd8", + [28240] = "\xed\xa8", [28241] = "\xe0\x36", [28242] = "\xe0\x37", + [28243] = "\xed\xaa", [28244] = "\xed\xa7", [28249] = "\xe0\x38", + [28252] = "\xe0\x39", [28253] = "\xe0\x3a", [28255] = "\xe0\x3b", + [28256] = "\xe0\x3c", [28257] = "\xe0\x3d", [28258] = "\xed\xad", + [28260] = "\xbd\xb3", [28262] = "\xed\xac", [28265] = "\xe0\x3e", + [28266] = "\xe0\x3f", [28267] = "\xe0\x40", [28268] = "\xed\xae", + [28273] = "\xed\xaf", [28274] = "\xe0\x41", [28275] = "\xe0\x42", + [28276] = "\xed\xb2", [28277] = "\xed\xb1", [28279] = "\xed\xb0", + [28281] = "\xe0\x43", [28282] = "\xed\xb4", [28283] = "\xed\xb3", + [28285] = "\xcc\xf6", [28288] = "\xe0\x44", [28289] = "\xed\xb6", + [28290] = "\xe0\x45", [28291] = "\xed\xb5", [28292] = "\xed\xb7", + [28293] = "\xe0\x46", [28297] = "\xed\xb8", [28298] = "\xe0\x47", + [28299] = "\xe0\x48", [28301] = "\xe0\x49", [28302] = "\xe0\x4a", + [28305] = "\xed\xba", [28306] = "\xe0\x4b", [28311] = "\xe0\x4c", + [28313] = "\xe0\x4d", [28314] = "\xed\xb9", [28315] = "\xbf\xc8", + [28316] = "\xed\xbb", [28317] = "\xe0\x4e", [28318] = "\xe0\x4f", + [28319] = "\xb6\xed", [28320] = "\xed\xbc", [28321] = "\xed\xbe", + [28323] = "\xe0\x50", [28325] = "\xe0\x51", [28330] = "\xe0\x52", + [28331] = "\xe0\x53", [28334] = "\xed\xbf", [28336] = "\xe0\x54", + [28337] = "\xe0\x55", [28339] = "\xe0\x56", [28340] = "\xe0\x57", + [28341] = "\xed\xc0", [28342] = "\xed\xbd", [28343] = "\xe0\x58", + [28344] = "\xed\xc1", [28346] = "\xbc\xd6", [28347] = "\xed\xc2", + [28348] = "\xb5\xb0", [28349] = "\xb7\xb3", [28351] = "\xe0\x59", + [28353] = "\xe0\x5a", [28354] = "\xb8\xae", [28356] = "\xe0\x5b", + [28363] = "\xed\xc3", [28364] = "\xe0\x5c", [28367] = "\xc6\xf0", + [28370] = "\xc5\xbe", [28371] = "\xed\xc4", [28376] = "\xe0\x5d", + [28379] = "\xed\xc7", [28381] = "\xe0\x64", [28382] = "\xe0\x5e", + [28384] = "\xe0\x5f", [28385] = "\xe0\x60", [28391] = "\xe0\x61", + [28392] = "\xbc\xb4", [28393] = "\xe0\x62", [28394] = "\xe0\x63", + [28395] = "\xed\xc6", [28396] = "\xed\xc5", [28397] = "\xb7\xda", + [28398] = "\xed\xc8", [28400] = "\xe0\x65", [28402] = "\xe0\x66", + [28403] = "\xb3\xd3", [28405] = "\xed\xca", [28407] = "\xe0\x67", + [28408] = "\xe0\x68", [28409] = "\xba\xdc", [28410] = "\xed\xc9", + [28412] = "\xed\xd2", [28415] = "\xe0\x69", [28416] = "\xe0\x6a", + [28418] = "\xed\xcc", [28419] = "\xed\xce", [28420] = "\xca\xe5", + [28421] = "\xed\xcb", [28422] = "\xe0\x6b", [28423] = "\xe0\x6c", + [28424] = "\xe0\x6d", [28425] = "\xed\xcd", [28427] = "\xed\xd1", + [28428] = "\xed\xcf", [28429] = "\xb5\xb1", [28430] = "\xe0\x6e", + [28431] = "\xed\xd0", [28432] = "\xe0\x6f", [28433] = "\xe0\x70", + [28435] = "\xe0\x71", [28437] = "\xe0\x72", [28438] = "\xed\xd3", + [28439] = "\xe0\x73", [28440] = "\xe0\x74", [28441] = "\xc7\xda", + [28442] = "\xce\xd8", [28444] = "\xe0\x75", [28445] = "\xe0\x76", + [28446] = "\xe0\x77", [28447] = "\xbd\xb4", [28451] = "\xed\xd4", + [28452] = "\xe0\x78", [28453] = "\xe0\x79", [28454] = "\xe0\x7a", + [28455] = "\xe0\x7b", [28456] = "\xcd\xa2", [28457] = "\xed\xd6", + [28458] = "\xe0\x7c", [28459] = "\xed\xd5", [28462] = "\xed\xd9", + [28463] = "\xcd\xc1", [28464] = "\xe0\x7d", [28465] = "\xe0\x7e", + [28466] = "\xed\xd8", [28467] = "\xe1\x21", [28468] = "\xb3\xed", + [28469] = "\xed\xd7", [28470] = "\xed\xdc", [28471] = "\xe1\x22", + [28473] = "\xed\xdb", [28476] = "\xed\xda", [28477] = "\xc5\xb2", + [28478] = "\xed\xdd", [28479] = "\xe1\x23", [28481] = "\xe1\x24", + [28482] = "\xe1\x25", [28483] = "\xe1\x26", [28484] = "\xe1\x27", + [28485] = "\xe1\x28", [28487] = "\xed\xde", [28488] = "\xe1\x29", + [28492] = "\xed\xdf", [28493] = "\xe1\x2a", [28494] = "\xe1\x2b", + [28495] = "\xb9\xec", [28497] = "\xb7\xa5", [28498] = "\xed\xe0", + [28499] = "\xed\xe1", [28500] = "\xed\xe2", [28501] = "\xe1\x2c", + [28555] = "\xbf\xc9", [28556] = "\xed\xe3", [28557] = "\xe1\x2d", + [28558] = "\xbc\xad", [28559] = "\xed\xe4", [28560] = "\xe1\x2e", + [28561] = "\xe1\x2f", [28563] = "\xed\xe5", [28564] = "\xe1\x30", + [28565] = "\xe1\x31", [28566] = "\xe1\x32", [28567] = "\xd2\xa1", + [28568] = "\xd1\xfe", [28573] = "\xed\xe6", [28574] = "\xe5\xf0", + [28575] = "\xed\xe7", [28576] = "\xc3\xa4", [28577] = "\xbf\xab", + [28578] = "\xc7\xc0", [28581] = "\xe1\x33", [28582] = "\xe1\x34", + [28583] = "\xed\xe8", [28584] = "\xe1\x35", [28586] = "\xca\xd5", + [28587] = "\xc4\xd4", [28588] = "\xb9\xfe", [28590] = "\xe1\x36", + [28591] = "\xc3\xa9", [28592] = "\xe1\x37", [28593] = "\xe1\x38", + [28594] = "\xb1\xaa", [28596] = "\xcb\xf8", [28597] = "\xbf\xd7", + [28598] = "\xe1\x39", [28602] = "\xe1\x3a", [28603] = "\xe1\x3b", + [28605] = "\xe1\x3c", [28606] = "\xb7\xde", [28608] = "\xe1\x3d", + [28609] = "\xb6\xe1", [28610] = "\xe1\x3e", [28611] = "\xe1\x3f", + [28612] = "\xca\xd6", [28613] = "\xe1\x40", [28618] = "\xed\xe9", + [28624] = "\xe1\x41", [28626] = "\xed\xeb", [28627] = "\xe1\x42", + [28628] = "\xe1\x43", [28629] = "\xed\xea", [28630] = "\xb2\xe0", + [28632] = "\xe1\x44", [28633] = "\xc6\xf6", [28634] = "\xed\xec", + [28635] = "\xc7\xf7", [28637] = "\xc5\xb3", [28638] = "\xe1\x45", + [28639] = "\xed\xed", [28640] = "\xbd\xd2", [28641] = "\xe1\x46", + [28644] = "\xed\xef", [28645] = "\xe1\x47", [28646] = "\xe1\x48", + [28647] = "\xcc\xc2", [28648] = "\xed\xfe", [28649] = "\xed\xf1", + [28650] = "\xed\xf2", [28651] = "\xe1\x49", [28653] = "\xc4\xc9", + [28654] = "\xe1\x4a", [28656] = "\xc2\xe0", [28657] = "\xc1\xf7", + [28658] = "\xe1\x4b", [28659] = "\xc6\xa8", [28660] = "\xe1\x4c", + [28661] = "\xed\xf0", [28662] = "\xb5\xd5", [28664] = "\xe1\x4d", + [28667] = "\xed\xf9", [28668] = "\xe1\x4e", [28669] = "\xed\xf6", + [28670] = "\xee\xa5", [28671] = "\xc6\xa9", [28672] = "\xc3\xe0", + [28673] = "\xed\xf3", [28675] = "\xc4\xfe", [28676] = "\xc5\xd3", + [28677] = "\xed\xf4", [28678] = "\xed\xf8", [28679] = "\xbf\xe0", + [28680] = "\xe1\x4f", [28681] = "\xc7\xe7", [28682] = "\xc4\xcc", + [28683] = "\xe1\x50", [28685] = "\xc0\xc2", [28686] = "\xed\xf7", + [28687] = "\xc2\xae", [28688] = "\xc2\xa4", [28689] = "\xed\xf5", + [28690] = "\xb0\xa9", [28691] = "\xcf\xa2", [28695] = "\xed\xfa", + [28696] = "\xe1\x51", [28697] = "\xe1\x52", [28698] = "\xe1\x54", + [28700] = "\xe1\x55", [28701] = "\xe1\x56", [28702] = "\xc2\xe1", + [28703] = "\xe1\x53", [28705] = "\xbd\xb5", [28706] = "\xbf\xca", + [28707] = "\xe1\x57", [28708] = "\xe1\x58", [28709] = "\xed\xfc", + [28710] = "\xed\xfb", [28711] = "\xe1\x59", [28712] = "\xb0\xef", + [28713] = "\xed\xfd", [28716] = "\xc9\xaf", [28718] = "\xee\xa7", + [28719] = "\xe1\x5a", [28721] = "\xc6\xdb", [28722] = "\xbf\xeb", + [28723] = "\xe1\x5b", [28724] = "\xe1\x5c", [28725] = "\xc3\xd9", + [28727] = "\xb6\xf8", [28729] = "\xee\xa6", [28730] = "\xcd\xb7", + [28731] = "\xb1\xbf", [28732] = "\xe1\x5d", [28733] = "\xca\xd7", + [28734] = "\xb2\xe1", [28735] = "\xee\xa1", [28736] = "\xee\xa2", + [28737] = "\xee\xa3", [28738] = "\xee\xa4", [28739] = "\xc6\xbb", + [28740] = "\xc3\xa3", [28741] = "\xb0\xe3", [28742] = "\xee\xa8", + [28744] = "\xee\xa9", [28745] = "\xf4\xa3", [28747] = "\xe1\x5e", + [28748] = "\xc2\xbd", [28749] = "\xe1\x5f", [28750] = "\xee\xaa", + [28752] = "\xb1\xf3", [28753] = "\xc1\xcc", [28754] = "\xe1\x60", + [28755] = "\xb8\xaf", [28757] = "\xcd\xda", [28758] = "\xe1\x61", + [28759] = "\xe1\x62", [28760] = "\xee\xab", [28761] = "\xc5\xac", + [28764] = "\xe1\x63", [28765] = "\xc1\xf8", [28766] = "\xbc\xd7", + [28767] = "\xee\xac", [28768] = "\xe1\x64", [28770] = "\xee\xaf", + [28772] = "\xe1\x65", [28773] = "\xbd\xe5", [28774] = "\xee\xad", + [28775] = "\xc1\xab", [28776] = "\xc1\xaa", [28777] = "\xe1\x66", + [28778] = "\xb0\xe4", [28780] = "\xce\xcb", [28781] = "\xee\xb1", + [28783] = "\xc8\xf2", [28784] = "\xee\xb3", [28785] = "\xee\xb2", + [28786] = "\xee\xb0", [28787] = "\xe3\xe4", [28788] = "\xb4\xd4", + [28789] = "\xe1\x67", [28791] = "\xed\xee", [28792] = "\xe1\x68", + [28793] = "\xee\xb5", [28794] = "\xee\xb4", [28795] = "\xe1\x69", + [28796] = "\xe1\x6a", [28798] = "\xe1\x6b", [28799] = "\xee\xb6", + [28800] = "\xe1\x6c", [28801] = "\xcd\xb8", [28805] = "\xe1\x6d", + [28807] = "\xe1\x6e", [28808] = "\xe1\x6f", [28809] = "\xe1\x70", + [28811] = "\xe1\x71", [28816] = "\xe1\x72", [28817] = "\xe1\x73", + [28818] = "\xe1\x74", [28819] = "\xc6\xe1", [28821] = "\xe1\x75", + [28822] = "\xcb\xae", [28824] = "\xee\xb7", [28826] = "\xbc\xd9", + [28831] = "\xee\xb8", [28832] = "\xe1\x76", [28833] = "\xee\xb9", + [28834] = "\xe1\x77", [28835] = "\xe1\x78", [28836] = "\xe1\x79", + [28837] = "\xee\xba", [28838] = "\xe1\x7a", [28840] = "\xc5\xa1", + [28845] = "\xe1\x7b", [28846] = "\xe1\x7d", [28849] = "\xb0\xea", + [28851] = "\xe1\x7e", [28852] = "\xe2\x21", [28853] = "\xe2\x22", + [28855] = "\xe2\x23", [28856] = "\xe2\x24", [28858] = "\xb9\xd9", + [28860] = "\xe1\x7c", [28862] = "\xcf\xba", [28866] = "\xe2\x2d", + [28869] = "\xe2\x25", [28871] = "\xe2\x26", [28872] = "\xe2\x27", + [28873] = "\xe2\x28", [28875] = "\xee\xbe", [28876] = "\xe2\x29", + [28877] = "\xe2\x2a", [28878] = "\xf4\x6c", [28879] = "\xe2\x2b", + [28881] = "\xb7\xb4", [28882] = "\xee\xbb", [28884] = "\xee\xbc", + [28885] = "\xe2\x2c", [28888] = "\xc9\xf4", [28891] = "\xe2\x2f", + [28893] = "\xb3\xd4", [28895] = "\xe2\x30", [28896] = "\xe2\x31", + [28900] = "\xe2\x32", [28901] = "\xcd\xb9", [28902] = "\xe2\x2e", + [28903] = "\xb6\xbf", [28909] = "\xc5\xd4", [28910] = "\xe2\x33", + [28911] = "\xe2\x34", [28912] = "\xe2\x35", [28914] = "\xee\xbf", + [28916] = "\xe2\x36", [28917] = "\xe2\x37", [28918] = "\xe2\x38", + [28920] = "\xe2\x39", [28925] = "\xe2\x3a", [28928] = "\xe2\x3b", + [28930] = "\xee\xc0", [28932] = "\xe2\x3c", [28933] = "\xf4\x6e", + [28934] = "\xe2\x3d", [28935] = "\xe2\x3e", [28936] = "\xe2\x3f", + [28937] = "\xee\xc1", [28938] = "\xe2\x40", [28940] = "\xe2\x41", + [28942] = "\xe2\x42", [28944] = "\xe2\x43", [28946] = "\xe2\x45", + [28947] = "\xe2\x46", [28949] = "\xe2\x44", [28951] = "\xe2\x47", + [28953] = "\xe2\x48", [28957] = "\xc5\xa2", [28958] = "\xe2\x49", + [28959] = "\xe2\x4a", [28960] = "\xee\xc3", [28961] = "\xe2\x4b", + [28962] = "\xee\xc2", [28964] = "\xe2\x4c", [28966] = "\xe2\x4d", + [28967] = "\xe2\x4e", [28969] = "\xe2\x4f", [28970] = "\xe2\x50", + [28972] = "\xe2\x51", [28973] = "\xe2\x52", [28979] = "\xe2\x53", + [28983] = "\xe2\x54", [28984] = "\xe2\x55", [28985] = "\xc6\xd3", + [28986] = "\xee\xc4", [28987] = "\xbd\xb6", [28988] = "\xbc\xe0", + [28989] = "\xc7\xdb", [28990] = "\xc3\xf1", [28991] = "\xe2\x56", + [28994] = "\xbc\xf2", [28995] = "\xe2\x57", [28996] = "\xbf\xec", + [28998] = "\xee\xc5", [28999] = "\xe2\x58", [29000] = "\xee\xc6", + [29001] = "\xe2\x59", [29002] = "\xe2\x5a", [29003] = "\xe2\x5b", + [29009] = "\xe2\x5c", [29010] = "\xbf\xdd", [29011] = "\xee\xc7", + [29012] = "\xe2\x5d", [29013] = "\xee\xc8", [29015] = "\xe2\x5e", + [29017] = "\xee\xc9", [29018] = "\xcd\xef", [29020] = "\xbd\xb7", + [29021] = "\xe2\x5f", [29026] = "\xee\xcb", [29027] = "\xee\xca", + [29028] = "\xe2\x60", [29029] = "\xb9\xda", [29031] = "\xb9\xf3", + [29032] = "\xbb\xc0", [29033] = "\xe2\x61", [29034] = "\xe2\x62", + [29035] = "\xe2\x63", [29041] = "\xe2\x64", [29042] = "\xee\xce", + [29043] = "\xe2\x65", [29045] = "\xe2\x66", [29046] = "\xe2\x67", + [29047] = "\xbd\xe6", [29049] = "\xee\xcd", [29050] = "\xe2\x68", + [29051] = "\xee\xcc", [29053] = "\xc2\xe9", [29054] = "\xe2\x69", + [29056] = "\xb8\xef", [29057] = "\xe2\x6a", [29058] = "\xc0\xc3", + [29059] = "\xe2\x6b", [29060] = "\xe2\x6c", [29061] = "\xe2\x6d", + [29063] = "\xc8\xb0", [29064] = "\xe2\x6e", [29068] = "\xbd\xb9", + [29070] = "\xe2\x6f", [29073] = "\xe2\x70", [29074] = "\xee\xcf", + [29076] = "\xbe\xdf", [29078] = "\xe2\x71", [29080] = "\xe2\x72", + [29082] = "\xee\xd2", [29083] = "\xee\xd0", [29084] = "\xe2\x73", + [29085] = "\xe2\x74", [29086] = "\xe2\x75", [29087] = "\xee\xd1", + [29088] = "\xe2\x76", [29089] = "\xe2\x77", [29090] = "\xe2\x78", + [29091] = "\xe2\x79", [29092] = "\xee\xd4", [29093] = "\xee\xd3", + [29094] = "\xe2\x7a", [29096] = "\xbe\xfa", [29098] = "\xee\xd5", + [29099] = "\xe2\x7b", [29100] = "\xe2\x7c", [29101] = "\xe2\x7d", + [29103] = "\xe2\x7e", [29104] = "\xee\xd6", [29105] = "\xee\xd7", + [29106] = "\xe3\x21", [29107] = "\xe3\x22", [29109] = "\xe3\x23", + [29110] = "\xc8\xd0", [29111] = "\xba\xd3", [29112] = "\xbc\xe1", + [29113] = "\xee\xd8", [29115] = "\xee\xd9", [29116] = "\xce\xa4", + [29117] = "\xbd\xc5", [29118] = "\xcc\xee", [29119] = "\xce\xcc", + [29120] = "\xee\xda", [29121] = "\xb6\xe2", [29123] = "\xe3\x24", + [29124] = "\xe3\x25", [29126] = "\xee\xdb", [29127] = "\xe3\x26", + [29128] = "\xc5\xa3", [29129] = "\xe3\x27", [29130] = "\xe3\x28", + [29131] = "\xee\xde", [29132] = "\xb3\xf8", [29133] = "\xbf\xcb", + [29134] = "\xe3\x29", [29135] = "\xee\xdc", [29137] = "\xee\xdd", + [29139] = "\xc4\xe0", [29140] = "\xe3\x2a", [29141] = "\xe3\x2b", + [29142] = "\xcb\xd5", [29143] = "\xb6\xfc", [29145] = "\xe3\x2c", + [29146] = "\xe3\x2d", [29148] = "\xe3\x2e", [29149] = "\xe3\x2f", + [29150] = "\xe3\x30", [29151] = "\xe3\x31", [29152] = "\xe3\x32", + [29153] = "\xe3\x33", [29157] = "\xee\xe0", [29158] = "\xee\xe1", + [29159] = "\xe3\x34", [29161] = "\xe3\x35", [29163] = "\xe3\x36", + [29164] = "\xee\xdf", [29165] = "\xe3\x37", [29167] = "\xee\xe3", + [29168] = "\xe3\x38", [29169] = "\xe3\x39", [29172] = "\xe3\x3a", + [29173] = "\xe3\x3b", [29174] = "\xe3\x3c", [29175] = "\xe3\x3d", + [29177] = "\xe3\x3e", [29178] = "\xe3\x3f", [29180] = "\xe3\x40", + [29181] = "\xc6\xdf", [29182] = "\xb3\xc3", [29184] = "\xe3\x41", + [29185] = "\xee\xe7", [29186] = "\xe3\x42", [29187] = "\xe3\x43", + [29188] = "\xee\xe4", [29189] = "\xee\xe6", [29190] = "\xe3\x44", + [29192] = "\xe3\x45", [29196] = "\xe3\x46", [29197] = "\xe3\x47", + [29198] = "\xee\xe2", [29203] = "\xe3\x48", [29204] = "\xe3\x49", + [29205] = "\xe3\x4a", [29206] = "\xe3\x4b", [29208] = "\xe3\x4c", + [29209] = "\xef\xcf", [29212] = "\xee\xe5", [29214] = "\xe3\x4d", + [29215] = "\xe3\x4e", [29216] = "\xe3\x4f", [29219] = "\xe3\x50", + [29220] = "\xce\xeb", [29221] = "\xe3\x51", [29222] = "\xe3\x52", + [29223] = "\xb8\xda", [29224] = "\xe3\x53", [29225] = "\xe3\x54", + [29226] = "\xe3\x55", [29228] = "\xe3\x56", [29230] = "\xe3\x57", + [29231] = "\xee\xef", [29232] = "\xe3\x58", [29234] = "\xe3\x59", + [29235] = "\xe3\x5a", [29236] = "\xc5\xb4", [29237] = "\xee\xea", + [29238] = "\xe3\x5b", [29239] = "\xe3\x5c", [29240] = "\xee\xed", + [29241] = "\xee\xeb", [29242] = "\xe3\x5d", [29243] = "\xee\xf0", + [29245] = "\xe3\x5e", [29246] = "\xe3\x5f", [29247] = "\xe3\x60", + [29248] = "\xee\xf1", [29249] = "\xe3\x61", [29255] = "\xee\xe9", + [29256] = "\xe3\x62", [29257] = "\xe3\x63", [29258] = "\xee\xf6", + [29259] = "\xb1\xf4", [29260] = "\xe3\x64", [29261] = "\xe3\x65", + [29262] = "\xee\xe8", [29264] = "\xe3\x66", [29265] = "\xe3\x67", + [29266] = "\xc8\xad", [29268] = "\xee\xec", [29269] = "\xe3\x68", + [29270] = "\xbe\xe0", [29271] = "\xe3\x69", [29272] = "\xe3\x6a", + [29273] = "\xe3\x6b", [29278] = "\xe3\x6c", [29279] = "\xe3\x6d", + [29280] = "\xe3\x6e", [29281] = "\xb9\xdb", [29285] = "\xe3\x6f", + [29286] = "\xe3\x70", [29287] = "\xe3\x71", [29288] = "\xe3\x72", + [29289] = "\xe3\x73", [29291] = "\xe3\x74", [29292] = "\xe3\x75", + [29293] = "\xe3\x76", [29294] = "\xcb\xc8", [29295] = "\xe3\x77", + [29296] = "\xb6\xe4", [29299] = "\xbd\xc6", [29301] = "\xc6\xbc", + [29304] = "\xe3\x78", [29305] = "\xe3\x79", [29306] = "\xe3\x7a", + [29309] = "\xe3\x7b", [29310] = "\xe3\x7c", [29313] = "\xc1\xad", + [29314] = "\xe3\x7d", [29315] = "\xee\xf4", [29317] = "\xee\xee", + [29318] = "\xee\xf3", [29319] = "\xe3\x7e", [29320] = "\xcc\xc3", + [29321] = "\xe4\x21", [29322] = "\xc4\xb8", [29323] = "\xee\xf5", + [29324] = "\xee\xf2", [29327] = "\xe4\x22", [29328] = "\xe4\x23", + [29332] = "\xe4\x24", [29333] = "\xe4\x25", [29335] = "\xe4\x26", + [29336] = "\xe4\x27", [29339] = "\xe4\x28", [29341] = "\xc1\xac", + [29343] = "\xe4\x29", [29346] = "\xe4\x2a", [29350] = "\xe4\x2b", + [29351] = "\xee\xf9", [29352] = "\xe4\x2c", [29353] = "\xee\xf8", + [29354] = "\xe4\x2d", [29355] = "\xe4\x2e", [29356] = "\xe4\x2f", + [29357] = "\xe4\x30", [29359] = "\xe4\x31", [29360] = "\xe4\x32", + [29361] = "\xe4\x33", [29362] = "\xe4\x34", [29363] = "\xe4\x35", + [29365] = "\xe4\x36", [29366] = "\xe4\x37", [29367] = "\xe4\x38", + [29368] = "\xe4\x39", [29371] = "\xe4\x3a", [29372] = "\xe4\x3b", + [29373] = "\xe4\x3c", [29374] = "\xe4\x3d", [29375] = "\xee\xf7", + [29376] = "\xe4\x3e", [29378] = "\xcb\xaf", [29379] = "\xe4\x3f", + [29381] = "\xe4\x40", [29383] = "\xe4\x41", [29384] = "\xe4\x42", + [29385] = "\xe4\x43", [29388] = "\xe4\x44", [29389] = "\xe4\x45", + [29391] = "\xe4\x46", [29392] = "\xe4\x47", [29393] = "\xe4\x48", + [29395] = "\xe4\x49", [29396] = "\xbd\xfb", [29397] = "\xe4\x4a", + [29399] = "\xe4\x4b", [29400] = "\xe4\x4c", [29401] = "\xee\xfa", + [29402] = "\xca\xdf", [29404] = "\xe4\x4d", [29405] = "\xb1\xd4", + [29406] = "\xe4\x4e", [29408] = "\xe4\x4f", [29410] = "\xc9\xc6", + [29411] = "\xc3\xf2", [29416] = "\xb5\xf8", [29417] = "\xe4\x50", + [29418] = "\xee\xfc", [29419] = "\xe4\x51", [29420] = "\xb9\xdd", + [29423] = "\xe4\x52", [29424] = "\xe4\x53", [29426] = "\xe4\x54", + [29430] = "\xbb\xac", [29432] = "\xe4\x55", [29437] = "\xe4\x56", + [29439] = "\xee\xfb", [29440] = "\xbf\xed", [29441] = "\xe4\x57", + [29444] = "\xe4\x58", [29445] = "\xe4\x59", [29448] = "\xbf\xee", + [29449] = "\xef\xa1", [29450] = "\xef\xa3", [29452] = "\xe4\x5a", + [29453] = "\xe4\x5b", [29454] = "\xe4\x5c", [29455] = "\xe4\x5d", + [29456] = "\xbe\xfb", [29457] = "\xe4\x5e", [29458] = "\xef\xa2", + [29459] = "\xef\xa4", [29460] = "\xe4\x5f", [29461] = "\xe4\x60", + [29462] = "\xb6\xd3", [29463] = "\xe4\x61", [29464] = "\xc9\xc5", + [29465] = "\xe4\x62", [29466] = "\xe4\x63", [29467] = "\xbc\xe2", + [29468] = "\xcf\xa3", [29470] = "\xee\xfe", [29471] = "\xba\xf8", + [29474] = "\xcf\xbf", [29475] = "\xe4\x64", [29476] = "\xe4\x65", + [29477] = "\xef\xa6", [29478] = "\xe4\x66", [29479] = "\xe4\x67", + [29482] = "\xef\xa5", [29483] = "\xef\xa7", [29492] = "\xee\xfd", + [29495] = "\xe4\x68", [29496] = "\xe4\x69", [29497] = "\xe4\x6a", + [29499] = "\xc6\xe9", [29501] = "\xc5\xd5", [29504] = "\xe4\x6b", + [29505] = "\xe4\x6c", [29506] = "\xe4\x6d", [29508] = "\xc4\xd7", + [29509] = "\xe4\x6e", [29510] = "\xef\xac", [29511] = "\xe4\x6f", + [29512] = "\xe4\x70", [29514] = "\xe4\x71", [29515] = "\xc3\xc3", + [29516] = "\xef\xa8", [29518] = "\xe4\x72", [29520] = "\xef\xa9", + [29524] = "\xe4\x73", [29525] = "\xe4\x74", [29527] = "\xe4\x75", + [29529] = "\xe4\x76", [29530] = "\xe4\x77", [29532] = "\xb7\xad", + [29533] = "\xe4\x78", [29534] = "\xef\xab", [29535] = "\xe4\x79", + [29536] = "\xe4\x7a", [29537] = "\xe4\x7b", [29539] = "\xe4\x7c", + [29540] = "\xe4\x7d", [29541] = "\xb8\xb0", [29542] = "\xe4\x7e", + [29546] = "\xe5\x21", [29548] = "\xef\xaa", [29549] = "\xe5\x22", + [29550] = "\xbe\xe1", [29551] = "\xe5\x23", [29552] = "\xe5\x24", + [29553] = "\xe5\x25", [29554] = "\xe5\x26", [29560] = "\xe5\x27", + [29562] = "\xe5\x28", [29563] = "\xe5\x29", [29564] = "\xb3\xf9", + [29565] = "\xe5\x2a", [29567] = "\xe5\x2b", [29570] = "\xe5\x2c", + [29572] = "\xef\xb0", [29573] = "\xe5\x2d", [29574] = "\xba\xbf", + [29575] = "\xc1\xf9", [29576] = "\xe5\x2e", [29578] = "\xc4\xca", + [29579] = "\xe5\x2f", [29582] = "\xe5\x30", [29585] = "\xe5\x31", + [29587] = "\xe5\x32", [29588] = "\xe5\x33", [29590] = "\xe5\x34", + [29591] = "\xb3\xbb", [29592] = "\xe5\x35", [29593] = "\xe5\x3b", + [29595] = "\xe5\x36", [29596] = "\xef\xae", [29597] = "\xef\xaf", + [29598] = "\xc4\xc3", [29600] = "\xef\xad", [29604] = "\xe5\x37", + [29605] = "\xe5\x38", [29606] = "\xe5\x39", [29609] = "\xef\xb1", + [29610] = "\xe5\x3a", [29617] = "\xe5\x3c", [29619] = "\xef\xb7", + [29620] = "\xe5\x3d", [29621] = "\xe5\x3e", [29622] = "\xe5\x3f", + [29623] = "\xe5\x40", [29624] = "\xef\xba", [29625] = "\xe5\x41", + [29626] = "\xe5\x42", [29627] = "\xe5\x43", [29628] = "\xe5\x44", + [29629] = "\xe5\x45", [29632] = "\xef\xb9", [29633] = "\xc5\xad", + [29635] = "\xe5\x46", [29638] = "\xef\xb2", [29639] = "\xef\xb3", + [29640] = "\xef\xb6", [29641] = "\xe5\x47", [29644] = "\xe5\x48", + [29645] = "\xef\xb8", [29646] = "\xe5\x49", [29647] = "\xe5\x4a", + [29649] = "\xb6\xc0", [29650] = "\xe5\x4b", [29652] = "\xef\xbb", + [29653] = "\xef\xb5", [29654] = "\xe5\x4c", [29655] = "\xe5\x4d", + [29656] = "\xef\xb4", [29671] = "\xe5\x4f", [29672] = "\xe5\x50", + [29673] = "\xe5\x4e", [29674] = "\xe5\x51", [29675] = "\xe5\x52", + [29677] = "\xe5\x53", [29681] = "\xe5\x54", [29682] = "\xe5\x55", + [29683] = "\xef\xbf", [29684] = "\xe5\x56", [29687] = "\xef\xc0", + [29688] = "\xe5\x57", [29689] = "\xe5\x58", [29693] = "\xe5\x59", + [29694] = "\xe5\x5a", [29695] = "\xe5\x5b", [29696] = "\xef\xc1", + [29699] = "\xef\xbe", [29700] = "\xef\xbd", [29701] = "\xe5\x5c", + [29702] = "\xe5\x5d", [29703] = "\xe5\x5e", [29704] = "\xbe\xe2", + [29705] = "\xc6\xaa", [29706] = "\xef\xbc", [29711] = "\xe5\x5f", + [29713] = "\xef\xc5", [29723] = "\xef\xc3", [29726] = "\xe5\x60", + [29727] = "\xe5\x61", [29729] = "\xe5\x62", [29730] = "\xe5\x63", + [29731] = "\xe5\x64", [29732] = "\xe5\x65", [29733] = "\xef\xc4", + [29734] = "\xef\xc2", [29736] = "\xc2\xf8", [29738] = "\xef\xc6", + [29739] = "\xe5\x66", [29741] = "\xe5\x68", [29743] = "\xe5\x67", + [29745] = "\xef\xc7", [29747] = "\xe5\x69", [29748] = "\xef\xc9", + [29749] = "\xe5\x6a", [29752] = "\xe5\x6b", [29754] = "\xe5\x6c", + [29756] = "\xe5\x6d", [29761] = "\xb4\xd5", [29762] = "\xef\xc8", + [29763] = "\xcc\xfa", [29765] = "\xe5\x6e", [29769] = "\xe5\x6f", + [29770] = "\xef\xd4", [29771] = "\xef\xca", [29772] = "\xe5\x70", + [29774] = "\xef\xcd", [29775] = "\xe5\x71", [29776] = "\xef\xcb", + [29777] = "\xe5\x72", [29778] = "\xef\xcc", [29779] = "\xe5\x73", + [29784] = "\xe5\x74", [29786] = "\xef\xce", [29787] = "\xe5\x75", + [29789] = "\xe5\x76", [29790] = "\xe5\x77", [29791] = "\xe5\x78", + [29792] = "\xef\xd0", [29793] = "\xe5\x79", [29794] = "\xe5\x7a", + [29797] = "\xef\xd1", [29799] = "\xef\xd2", [29804] = "\xef\xd5", + [29805] = "\xef\xd3", [29806] = "\xef\xd6", [29807] = "\xef\xd8", + [29809] = "\xef\xd7", [29811] = "\xe5\x7c", [29812] = "\xe5\x7b", + [30055] = "\xc4\xb9", [30056] = "\xe5\x7d", [30057] = "\xe5\x7e", + [30062] = "\xe6\x21", [30064] = "\xcc\xe7", [30066] = "\xef\xd9", + [30067] = "\xc1\xae", [30068] = "\xe6\x22", [30071] = "\xef\xda", + [30072] = "\xe6\x23", [30073] = "\xca\xc4", [30074] = "\xef\xdb", + [30075] = "\xb3\xab", [30076] = "\xe6\x24", [30077] = "\xe6\x25", + [30078] = "\xe6\x26", [30079] = "\xb1\xbc", [30081] = "\xb4\xd7", + [30082] = "\xf4\x71", [30083] = "\xb4\xd6", [30084] = "\xef\xdc", + [30086] = "\xef\xdd", [30088] = "\xef\xde", [30089] = "\xef\xdf", + [30093] = "\xe6\x27", [30094] = "\xe6\x28", [30095] = "\xe6\x29", + [30096] = "\xef\xe0", [30097] = "\xe6\x2a", [30098] = "\xb4\xd8", + [30099] = "\xb3\xd5", [30100] = "\xb9\xde", [30101] = "\xc8\xb6", + [30102] = "\xe6\x2b", [30103] = "\xef\xe2", [30104] = "\xef\xe1", + [30105] = "\xe6\x2c", [30107] = "\xe6\x2d", [30108] = "\xe6\x2e", + [30109] = "\xef\xe3", [30114] = "\xb1\xdc", [30116] = "\xe6\x2f", + [30118] = "\xe6\x30", [30121] = "\xef\xe6", [30122] = "\xe6\x31", + [30123] = "\xef\xe5", [30124] = "\xef\xe4", [30125] = "\xe6\x32", + [30126] = "\xef\xe7", [30127] = "\xe6\x33", [30131] = "\xef\xea", + [30134] = "\xe6\x34", [30135] = "\xb0\xc7", [30136] = "\xe6\x35", + [30137] = "\xe6\x36", [30138] = "\xef\xe8", [30139] = "\xe6\x37", + [30140] = "\xef\xec", [30141] = "\xef\xeb", [30144] = "\xe6\x38", + [30145] = "\xe6\x39", [30146] = "\xe6\x3a", [30147] = "\xe6\x3b", + [30148] = "\xef\xee", [30149] = "\xef\xed", [30150] = "\xef\xef", + [30152] = "\xc6\xae", [30153] = "\xe6\x3c", [30154] = "\xe6\x3d", + [30156] = "\xef\xf0", [30157] = "\xe6\x3e", [30158] = "\xe6\x3f", + [30159] = "\xe6\x40", [30160] = "\xe6\x41", [30161] = "\xef\xf1", + [30162] = "\xef\xf3", [30164] = "\xe6\x42", [30165] = "\xef\xf2", + [30166] = "\xe6\x43", [30220] = "\xc9\xec", [30221] = "\xe6\x44", + [30222] = "\xe6\x45", [30225] = "\xef\xf4", [30226] = "\xe6\x46", + [30228] = "\xe6\x47", [30229] = "\xe6\x48", [30230] = "\xe6\x49", + [30232] = "\xef\xf5", [30234] = "\xba\xe5", [30236] = "\xe6\x4a", + [30238] = "\xef\xf6", [30239] = "\xef\xf7", [30241] = "\xe6\x4b", + [30242] = "\xcb\xc9", [30243] = "\xe6\x4c", [30247] = "\xe6\x4d", + [30248] = "\xe6\x4e", [30249] = "\xe6\x4f", [30250] = "\xe6\x50", + [30251] = "\xc1\xcb", [30252] = "\xe6\x51", [30253] = "\xe6\x52", + [30255] = "\xb0\xa4", [30256] = "\xc2\xcb", [30257] = "\xe6\x53", + [30258] = "\xef\xf8", [30260] = "\xc9\xed", [30267] = "\xef\xfb", + [30268] = "\xef\xf9", [30269] = "\xb9\xdf", [30271] = "\xef\xfa", + [30272] = "\xb8\xc2", [30274] = "\xe6\x54", [30276] = "\xe6\x55", + [30278] = "\xe6\x56", [30279] = "\xe6\x57", [30280] = "\xe6\x58", + [30283] = "\xca\xc5", [30284] = "\xef\xfd", [30285] = "\xf0\xa1", + [30286] = "\xef\xfe", [30287] = "\xf0\xa2", [30289] = "\xe6\x59", + [30290] = "\xb1\xa1", [30291] = "\xbf\xd8", [30292] = "\xbd\xfc", + [30293] = "\xb4\xd9", [30294] = "\xf0\xa3", [30298] = "\xc7\xe6", + [30300] = "\xf0\xa5", [30302] = "\xe6\x5a", [30304] = "\xb1\xa2", + [30306] = "\xf0\xa4", [30307] = "\xc4\xc4", [30308] = "\xe6\x5b", + [30309] = "\xce\xcd", [30310] = "\xc6\xab", [30311] = "\xef\xfc", + [30312] = "\xce\xa6", [30314] = "\xb8\xb1", [30315] = "\xe6\x5c", + [30316] = "\xe6\x5d", [30317] = "\xcd\xdb", [30318] = "\xe6\x5e", + [30319] = "\xe6\x5f", [30321] = "\xe6\x60", [30322] = "\xe6\x61", + [30323] = "\xe6\x62", [30324] = "\xe6\x63", [30325] = "\xb6\xf9", + [30326] = "\xce\xb4", [30328] = "\xb7\xa8", [30329] = "\xe6\x64", + [30330] = "\xc2\xe2", [30331] = "\xe7\xa1", [30333] = "\xf0\xa6", + [30334] = "\xb3\xac", [30335] = "\xbf\xef", [30337] = "\xe6\x65", + [30340] = "\xb3\xd6", [30341] = "\xf0\xa8", [30342] = "\xe6\x66", + [30343] = "\xf0\xa9", [30344] = "\xf0\xa7", [30345] = "\xb7\xe4", + [30346] = "\xe6\x67", [30347] = "\xba\xdd", [30348] = "\xbe\xe3", + [30349] = "\xe6\x68", [30351] = "\xe6\x69", [30352] = "\xb1\xa3", + [30355] = "\xce\xd9", [30356] = "\xe6\x6a", [30357] = "\xe6\x6b", + [30358] = "\xe6\x6c", [30359] = "\xf0\xab", [30360] = "\xee\xae", + [30361] = "\xe6\x6d", [30362] = "\xf0\xaa", [30366] = "\xe6\x6e", + [30367] = "\xe6\x6f", [30368] = "\xf0\xae", [30369] = "\xf0\xac", + [30370] = "\xf0\xad", [30371] = "\xe6\x70", [30372] = "\xf0\xaf", + [30374] = "\xf0\xb0", [30375] = "\xce\xec", [30376] = "\xf0\xb1", + [30377] = "\xf0\xb2", [30378] = "\xe6\x71", [30379] = "\xc0\xc9", + [30380] = "\xc8\xbb", [30384] = "\xbf\xfd", [30385] = "\xb4\xe7", + [30388] = "\xcd\xba", [30389] = "\xb2\xed", [30390] = "\xbd\xb8", + [30391] = "\xb8\xdb", [30393] = "\xf0\xb5", [30394] = "\xe6\x72", + [30395] = "\xf0\xb4", [30396] = "\xbb\xf3", [30397] = "\xf0\xb6", + [30398] = "\xf0\xb3", [30401] = "\xbb\xa8", [30402] = "\xe6\x73", + [30405] = "\xf0\xba", [30406] = "\xea\xad", [30408] = "\xe6\x75", + [30409] = "\xd2\xd6", [30410] = "\xe6\x76", [30411] = "\xbf\xf7", + [30412] = "\xf0\xb8", [30413] = "\xe6\x77", [30414] = "\xe6\x78", + [30415] = "\xe6\x79", [30418] = "\xce\xa5", [30419] = "\xc6\xf1", + [30424] = "\xb1\xab", [30425] = "\xe6\x7a", [30426] = "\xc0\xe3", + [30427] = "\xbc\xb6", [30431] = "\xe6\x7b", [30432] = "\xca\xb7", + [30433] = "\xe6\x7c", [30434] = "\xb1\xc0", [30438] = "\xce\xed", + [30439] = "\xcd\xeb", [30441] = "\xf0\xbb", [30442] = "\xe6\x7d", + [30443] = "\xc5\xc5", [30448] = "\xbc\xfb", [30450] = "\xe6\x7e", + [30451] = "\xe7\x21", [30452] = "\xf0\xbc", [30453] = "\xe7\x22", + [30454] = "\xf0\xbd", [30455] = "\xbf\xcc", [30456] = "\xf0\xbe", + [30457] = "\xe7\x23", [30458] = "\xce\xee", [30461] = "\xf0\xb9", + [30462] = "\xf0\xc0", [30463] = "\xf0\xc2", [30465] = "\xf0\xc1", + [30467] = "\xf0\xbf", [30470] = "\xf0\xc3", [30473] = "\xf0\xc4", + [30474] = "\xe7\x24", [30475] = "\xe7\x25", [30476] = "\xc1\xfa", + [30477] = "\xe7\x26", [30478] = "\xb2\xe2", [30481] = "\xe7\x27", + [30482] = "\xe7\x28", [30483] = "\xe7\x29", [30484] = "\xf0\xc5", + [30487] = "\xcc\xb8", [30488] = "\xe7\x2a", [30490] = "\xf0\xc6", + [30496] = "\xf0\xc7", [30497] = "\xe7\x2b", [30498] = "\xcf\xaa", + [30499] = "\xe7\x2c", [30504] = "\xdb\xb1", [30505] = "\xf0\xc8", + [30507] = "\xf4\x74", [30509] = "\xf0\xc9", [30510] = "\xf0\xca", + [30513] = "\xe7\x2d", [30514] = "\xf0\xce", [30515] = "\xe7\x2e", + [30516] = "\xf0\xcb", [30518] = "\xf0\xcc", [30520] = "\xf0\xcd", + [30521] = "\xf0\xcf", [30522] = "\xe7\x2f", [30525] = "\xf4\x75", + [30526] = "\xe7\x30", [30527] = "\xe7\x31", [30529] = "\xf4\x76", + [30530] = "\xc0\xc4", [30533] = "\xe7\x32", [30534] = "\xcc\xf7", + [30535] = "\xe7\x33", [30536] = "\xe7\x34", [30537] = "\xc0\xc5", + [30538] = "\xe7\x35", [30539] = "\xe7\x36", [30540] = "\xf0\xd0", + [30542] = "\xc8\xf3", [30544] = "\xf0\xd1", [30545] = "\xf3\xd3", + [30546] = "\xcc\xcc", [30547] = "\xe7\x37", [30548] = "\xf0\xd2", + [30550] = "\xf0\xd3", [30551] = "\xe7\x38", [30552] = "\xf0\xd4", + [30553] = "\xb3\xd7", [30554] = "\xe7\x39", [30555] = "\xf0\xd6", + [30557] = "\xbf\xd9", [30558] = "\xe7\x3a", [30561] = "\xf0\xd7", + [30563] = "\xe7\x3b", [30564] = "\xb7\xa4", [30566] = "\xe7\x3c", + [30567] = "\xe7\x3d", [30568] = "\xe7\x3e", [30569] = "\xf0\xd8", + [30570] = "\xf0\xdc", [30571] = "\xe7\x3f", [30572] = "\xf0\xda", + [30573] = "\xe7\x40", [30575] = "\xe7\x41", [30576] = "\xe7\x42", + [30577] = "\xf0\xdb", [30580] = "\xb3\xf3", [30581] = "\xf0\xd9", + [30582] = "\xf0\xdd", [30585] = "\xe7\x43", [30587] = "\xf0\xde", + [30589] = "\xb0\xc8", [30591] = "\xf0\xdf", [30592] = "\xf0\xe0", + [30597] = "\xe7\x44", [30598] = "\xe7\x45", [30599] = "\xe7\x46", + [30600] = "\xbe\xe4", [30601] = "\xe7\x47", [30602] = "\xe7\x48", + [30604] = "\xf0\xe1", [30606] = "\xe7\x49", [30607] = "\xe7\x4a", + [30608] = "\xb5\xc7", [30610] = "\xe7\x4b", [30611] = "\xf0\xe4", + [30614] = "\xf0\xe3", [30616] = "\xf0\xe2", [30619] = "\xeb\xf1", + [30620] = "\xe7\x4c", [30621] = "\xca\xdc", [30622] = "\xe7\x4d", + [30625] = "\xe7\x4e", [30626] = "\xe7\x4f", [30627] = "\xf0\xe5", + [30628] = "\xf0\xe6", [30629] = "\xe7\x50", [30630] = "\xe7\x51", + [30632] = "\xe7\x52", [30633] = "\xe7\x53", [30634] = "\xe7\x54", + [30636] = "\xe7\x55", [30638] = "\xe7\x56", [30639] = "\xe7\x57", + [30641] = "\xe7\x58", [30643] = "\xf0\xe7", [30644] = "\xe7\x59", + [30645] = "\xe7\x5a", [30646] = "\xf0\xe8", [30647] = "\xe7\x5b", + [30648] = "\xf0\xe9", [30649] = "\xe7\x5c", [30650] = "\xe7\x5d", + [30651] = "\xf0\xea", [30652] = "\xe7\x5e", [30653] = "\xe7\x5f", + [30654] = "\xe7\x60", [30656] = "\xe7\x61", [30657] = "\xe7\x62", + [30659] = "\xb4\xda", [30660] = "\xe7\x63", [30663] = "\xe7\x64", + [30664] = "\xe7\x65", [30665] = "\xe7\x66", [30667] = "\xe7\x6a", + [30668] = "\xf0\xeb", [30669] = "\xe7\x67", [30670] = "\xe7\x68", + [30672] = "\xe7\x69", [30673] = "\xe7\x6b", [30676] = "\xe7\x6c", + [30685] = "\xf0\xec", [30686] = "\xc7\xa3", [30687] = "\xe7\x6d", + [30689] = "\xe7\x6e", [30690] = "\xf0\xee", [30691] = "\xb2\xbb", + [30692] = "\xe7\x6f", [30693] = "\xf0\xf1", [30694] = "\xf0\xf0", + [30695] = "\xe7\x70", [30696] = "\xe7\x71", [30698] = "\xe7\x72", + [30699] = "\xb1\xa4", [30703] = "\xb6\xc1", [30705] = "\xca\xc7", + [30706] = "\xc4\xba", [30707] = "\xba\xa2", [30709] = "\xb9\xe0", + [30710] = "\xbd\xe7", [30711] = "\xe7\x73", [30712] = "\xbf\xdc", + [30714] = "\xe7\x74", [30716] = "\xf0\xf3", [30717] = "\xe7\x76", + [30718] = "\xe7\x77", [30719] = "\xf0\xf2", [30720] = "\xcd\xc2", + [30721] = "\xb4\xe8", [30722] = "\xc8\xd2", [30723] = "\xc6\xdc", + [30724] = "\xe7\x78", [30726] = "\xe7\x79", [30727] = "\xbf\xfc", + [30728] = "\xce\xce", [30729] = "\xe7\x75", [30730] = "\xb7\xdb", + [30732] = "\xe7\x7a", [30734] = "\xe7\x7b", [30736] = "\xe7\x7c", + [30737] = "\xf0\xf6", [30739] = "\xe7\x7d", [30740] = "\xf0\xf5", + [30741] = "\xe8\x28", [30742] = "\xe7\x7e", [30747] = "\xe8\x21", + [30748] = "\xcb\xcb", [30749] = "\xc6\xac", [30750] = "\xe8\x22", + [30751] = "\xe8\x23", [30752] = "\xe8\x24", [30754] = "\xe8\x25", + [30755] = "\xe8\x26", [30756] = "\xb1\xd0", [30757] = "\xe8\x27", + [30759] = "\xf0\xf7", [30760] = "\xf0\xf4", [30763] = "\xc9\xd1", + [30764] = "\xcd\xea", [30765] = "\xf0\xf8", [30766] = "\xe8\x29", + [30772] = "\xe8\x2a", [30774] = "\xf0\xf9", [30775] = "\xe8\x2b", + [30778] = "\xe8\x2c", [30779] = "\xf0\xfb", [30780] = "\xc2\xea", + [30781] = "\xb3\xdb", [30782] = "\xb3\xdc", [30783] = "\xf0\xfa", + [30785] = "\xe8\x2d", [30786] = "\xe8\x2e", [30787] = "\xe8\x2f", + [30788] = "\xb4\xe9", [30789] = "\xb8\xb2", [30790] = "\xe8\x30", + [30791] = "\xe8\x31", [30792] = "\xb4\xea", [30793] = "\xe8\x32", + [30794] = "\xe8\x33", [30795] = "\xc5\xbf", [30798] = "\xce\xe0", + [30802] = "\xe8\x34", [30803] = "\xe8\x35", [30805] = "\xe8\x36", + [30806] = "\xe8\x37", [30807] = "\xb8\xdc", [30810] = "\xe8\x38", + [30811] = "\xf0\xfc", [30812] = "\xe8\x39", [30815] = "\xf0\xfd", + [30816] = "\xf0\xfe", [30817] = "\xf1\xa1", [30819] = "\xf1\xa3", + [30820] = "\xf1\xa2", [30872] = "\xc9\xf7", [30874] = "\xf1\xa4", + [30875] = "\xe8\x3a", [30877] = "\xe8\x3b", [30878] = "\xe8\x3c", + [30879] = "\xf1\xa5", [30880] = "\xe8\x3d", [30881] = "\xf1\xa6", + [30884] = "\xe8\x3e", [30886] = "\xf1\xa7", [30887] = "\xe8\x3f", + [30888] = "\xe8\x40", [30890] = "\xe8\x41", [30891] = "\xe8\x42", + [30895] = "\xe8\x43", [30898] = "\xe8\x44", [30899] = "\xf1\xa9", + [30900] = "\xf1\xa8", [30901] = "\xe8\x45", [30902] = "\xf1\xaa", + [30904] = "\xe8\x46", [30908] = "\xe8\x47", [30923] = "\xc8\xf4", + [30924] = "\xe6\xcc", [30927] = "\xbf\xa9", [30929] = "\xe8\x48", + [30930] = "\xb5\xb2", [30931] = "\xe8\x49", [30933] = "\xe8\x4a", + [30934] = "\xe8\x4b", [30935] = "\xe8\x4c", [30937] = "\xf1\xab", + [30938] = "\xe8\x4d", [30939] = "\xf1\xac", [30941] = "\xd2\xac", + [30942] = "\xdd\xbb", [30943] = "\xc8\xd3", [30946] = "\xb0\xfb", + [30947] = "\xe8\x4e", [30948] = "\xb0\xbb", [30950] = "\xe8\x4f", + [30956] = "\xbb\xf4", [30957] = "\xcb\xb0", [30958] = "\xbe\xfe", + [30962] = "\xe8\x50", [30963] = "\xf1\xad", [30965] = "\xcc\xdf", + [30967] = "\xe8\x51", [30968] = "\xe8\x52", [30969] = "\xf1\xae", + [30970] = "\xcd\xdc", [30972] = "\xb1\xc2", [30976] = "\xbb\xc1", + [30977] = "\xe8\x53", [30978] = "\xf1\xaf", [30979] = "\xb2\xee", + [30980] = "\xf1\xb0", [30981] = "\xe8\x54", [30982] = "\xe8\x55", + [30983] = "\xe8\x56", [30984] = "\xf1\xb1", [30986] = "\xe8\x57", + [30987] = "\xe8\x58", [30988] = "\xe8\x59", [30989] = "\xf1\xb3", + [30990] = "\xf1\xb4", [30991] = "\xe8\x5a", [30992] = "\xf1\xb6", + [30993] = "\xf1\xb2", [30994] = "\xe8\x5b", [30996] = "\xf1\xb5", + [30998] = "\xe8\x5c", [30999] = "\xe8\x5d", [31000] = "\xb4\xdb", + [31003] = "\xe8\x5e", [31004] = "\xf1\xb7", [31006] = "\xf1\xb8", + [31009] = "\xe8\x5f", [31010] = "\xe8\x60", [31011] = "\xe8\x61", + [31012] = "\xe8\x62", [31013] = "\xe8\x63", [31017] = "\xe8\x64", + [31018] = "\xe8\x65", [31019] = "\xe8\x66", [31020] = "\xe8\x67", + [31021] = "\xf1\xb9", [31022] = "\xf1\xba", [31024] = "\xe8\x68", + [31025] = "\xe8\x69", [31026] = "\xf1\xbb", [31029] = "\xf1\xbd", + [31030] = "\xe8\x6a", [31031] = "\xe8\x6b", [31032] = "\xe8\x6c", + [31033] = "\xf1\xbc", [31035] = "\xf1\xbf", [31036] = "\xf1\xc2", + [31037] = "\xe8\x6d", [31038] = "\xe8\x6e", [31040] = "\xf1\xbe", + [31041] = "\xf1\xc0", [31042] = "\xf1\xc1", [31044] = "\xe8\x6f", + [31045] = "\xf1\xc3", [31047] = "\xb6\xc2", [31048] = "\xe8\x70", + [31049] = "\xe8\x71", [31051] = "\xe8\x72", [31052] = "\xe8\x73", + [31054] = "\xe8\x74", [31055] = "\xe8\x75", [31056] = "\xe8\x76", + [31110] = "\xbc\xf3", [31111] = "\xf1\xc4", [31112] = "\xf1\xc5", + [31113] = "\xb9\xe1", [31115] = "\xe8\x77", [31117] = "\xe8\x78", + [31118] = "\xf4\x7a", [31119] = "\xe8\x79", [31125] = "\xf1\xc6", + [31126] = "\xe8\x7a", [31128] = "\xb3\xbe", [31132] = "\xc7\xcf", + [31133] = "\xf1\xc7", [31134] = "\xf1\xc8", [31136] = "\xe8\x7b", + [31137] = "\xe8\x7c", [31138] = "\xe8\x7d", [31139] = "\xc3\xda", + [31140] = "\xc6\xeb", [31141] = "\xe8\x7e", [31145] = "\xe9\x21", + [31146] = "\xe9\x22", [31148] = "\xf1\xc9", [31149] = "\xe9\x23", + [31151] = "\xe9\x24", [31153] = "\xc7\xfd", [31155] = "\xe9\x25", + [31156] = "\xc2\xcc", [31157] = "\xb1\xd8", [31158] = "\xb6\xee", + [31160] = "\xb6\xef", [31161] = "\xe9\x26", [31168] = "\xc3\xf3", + [31169] = "\xf1\xce", [31170] = "\xb6\xf0", [31171] = "\xe9\x27", + [31172] = "\xe9\x28", [31173] = "\xb2\xef", [31176] = "\xf1\xcd", + [31177] = "\xe9\x29", [31178] = "\xe9\x2a", [31179] = "\xf1\xcb", + [31180] = "\xe9\x2b", [31181] = "\xf1\xcc", [31182] = "\xe9\x2c", + [31183] = "\xf1\xca", [31186] = "\xf1\xd8", [31191] = "\xe9\x2d", + [31194] = "\xe9\x2e", [31195] = "\xe9\x2f", [31196] = "\xe9\x30", + [31197] = "\xf1\xcf", [31198] = "\xf1\xd0", [31200] = "\xe9\x31", + [31201] = "\xf1\xd1", [31202] = "\xf1\xd2", [31204] = "\xe9\x32", + [31205] = "\xe9\x33", [31208] = "\xf1\xd4", [31209] = "\xe9\x34", + [31211] = "\xf1\xd3", [31213] = "\xe9\x35", [31214] = "\xe9\x36", + [31215] = "\xbd\xd9", [31217] = "\xf1\xd5", [31218] = "\xe9\x37", + [31219] = "\xe9\x38", [31220] = "\xe9\x39", [31221] = "\xf1\xd7", + [31227] = "\xe9\x3a", [31228] = "\xe9\x3b", [31230] = "\xb5\xb3", + [31231] = "\xf1\xd6", [31232] = "\xe9\x3c", [31233] = "\xe9\x3d", + [31234] = "\xc1\xfb", [31235] = "\xb8\xb3", [31238] = "\xe9\x3e", + [31241] = "\xf1\xd9", [31246] = "\xe9\x3f", [31248] = "\xe9\x40", + [31250] = "\xe9\x41", [31251] = "\xe9\x42", [31252] = "\xe9\x43", + [31255] = "\xe9\x44", [31256] = "\xc2\xcd", [31259] = "\xf1\xda", + [31261] = "\xe9\x45", [31262] = "\xe9\x46", [31264] = "\xc6\xad", + [31267] = "\xe9\x47", [31269] = "\xe9\x48", [31270] = "\xe9\x49", + [31271] = "\xf1\xdb", [31272] = "\xe9\x4a", [31278] = "\xf1\xe0", + [31280] = "\xf1\xde", [31281] = "\xe9\x4c", [31282] = "\xf1\xdd", + [31283] = "\xf1\xdf", [31284] = "\xe9\x4d", [31285] = "\xf1\xdc", + [31287] = "\xe9\x4b", [31290] = "\xe9\x4e", [31291] = "\xe9\x4f", + [31292] = "\xe9\x50", [31293] = "\xf1\xe2", [31294] = "\xe9\x51", + [31297] = "\xe9\x52", [31300] = "\xe9\x53", [31301] = "\xf1\xe1", + [31302] = "\xe9\x54", [31303] = "\xf1\xe4", [31306] = "\xb6\xc3", + [31307] = "\xf1\xe3", [31309] = "\xe9\x55", [31311] = "\xf1\xe5", + [31314] = "\xf1\xe6", [31316] = "\xf1\xe8", [31317] = "\xf1\xe7", + [31321] = "\xf1\xe9", [31322] = "\xf1\xeb", [31323] = "\xf1\xea", + [31384] = "\xb9\xfc", [31386] = "\xe9\x56", [31388] = "\xe9\x57", + [31389] = "\xf1\xec", [31390] = "\xe9\x58", [31391] = "\xe9\x59", + [31392] = "\xf1\xed", [31394] = "\xe9\x5a", [31396] = "\xe9\x5b", + [31397] = "\xe9\x5c", [31398] = "\xe9\x5d", [31400] = "\xb3\xbc", + [31401] = "\xe9\x5e", [31403] = "\xe9\x5f", [31404] = "\xf1\xee", + [31406] = "\xe9\x60", [31407] = "\xe9\x61", [31408] = "\xf1\xef", + [31409] = "\xe9\x62", [31411] = "\xe9\x63", [31412] = "\xbf\xf1", + [31414] = "\xe9\x64", [31416] = "\xe9\x65", [31422] = "\xe9\x66", + [31423] = "\xf1\xf0", [31424] = "\xe9\x67", [31425] = "\xf1\xf1", + [31426] = "\xe9\x68", [31427] = "\xf1\xf2", [31428] = "\xf1\xf3", + [31429] = "\xe9\x69", [31430] = "\xe9\x6a", [31431] = "\xe9\x6b", + [31432] = "\xb9\xe2", [31433] = "\xf4\x7b", [31435] = "\xe9\x6c", + [31436] = "\xe9\x6d", [31438] = "\xf1\xf4", [31439] = "\xf1\xf5", + [31440] = "\xe9\x6e", [31442] = "\xf1\xf6", [31443] = "\xf1\xf7", + [31444] = "\xe9\x6f", [31445] = "\xe9\x70", [31446] = "\xf1\xf8", + [31447] = "\xe9\x71", [31449] = "\xe9\x72", [31450] = "\xc8\xb1", + [31451] = "\xf1\xfa", [31452] = "\xe9\x73", [31453] = "\xc9\xa6", + [31454] = "\xf1\xfb", [31455] = "\xf1\xf9", [31457] = "\xf1\xfd", + [31458] = "\xe9\x74", [31459] = "\xe9\x75", [31460] = "\xf1\xfc", + [31461] = "\xe9\x76", [31463] = "\xf1\xfe", [31465] = "\xe9\x77", + [31466] = "\xe9\x78", [31467] = "\xf2\xa1", [31469] = "\xe9\x79", + [31471] = "\xe9\x7a", [31472] = "\xe9\x7b", [31473] = "\xe9\x7c", + [31474] = "\xe9\x7d", [31475] = "\xe9\x7e", [31476] = "\xea\x21", + [31477] = "\xea\x22", [31478] = "\xf2\xa2", [31480] = "\xea\x23", + [31481] = "\xea\x24", [31483] = "\xea\x25", [31484] = "\xea\x26", + [31485] = "\xea\x27", [31486] = "\xea\x28", [31488] = "\xea\x29", + [31490] = "\xea\x2a", [31494] = "\xea\x2b", [31496] = "\xf2\xa3", + [31497] = "\xea\x2c", [31498] = "\xf2\xa4", [31499] = "\xea\x2d", + [31500] = "\xea\x2e", [31503] = "\xf2\xa5", [31504] = "\xea\x2f", + [31506] = "\xf2\xa6", [31507] = "\xf2\xa7", [31509] = "\xf2\xa8", + [31510] = "\xea\x30", [31511] = "\xf2\xa9", [31512] = "\xf2\xaa", + [31513] = "\xf2\xab", [31514] = "\xf2\xac", [31515] = "\xea\x31", + [31517] = "\xea\x32", [31518] = "\xf2\xad", [31519] = "\xf2\xae", + [31521] = "\xdd\xb5", [31522] = "\xf2\xaf", [31523] = "\xea\x33", + [31524] = "\xea\x34", [31525] = "\xea\x35", [31527] = "\xea\x36", + [31529] = "\xea\x37", [31530] = "\xea\x38", [31531] = "\xe4\xf8", + [31532] = "\xb5\xb4", [31533] = "\xea\x39", [31537] = "\xb3\xa1", + [31538] = "\xba\xb2", [31539] = "\xf2\xb1", [31540] = "\xf2\xb0", + [31541] = "\xcc\xa5", [31544] = "\xea\x3a", [31547] = "\xea\x3b", + [31548] = "\xea\x3c", [31549] = "\xf2\xb3", [31550] = "\xf2\xb4", + [31551] = "\xf2\xb2", [31553] = "\xf2\xb5", [31556] = "\xcb\xe2", + [31557] = "\xea\x3d", [31558] = "\xea\x3e", [31559] = "\xea\x3f", + [31560] = "\xf2\xb6", [31562] = "\xb5\xfb", [31563] = "\xea\x40", + [31566] = "\xea\x41", [31569] = "\xea\x42", [31571] = "\xea\x43", + [31573] = "\xea\x44", [31574] = "\xea\x45", [31576] = "\xea\x46", + [31578] = "\xea\x47", [31579] = "\xea\x48", [31580] = "\xea\x49", + [31581] = "\xea\x4a", [31582] = "\xea\x4b", [31583] = "\xcf\xa5", + [31586] = "\xf4\x7c", [31587] = "\xea\x4c", [31588] = "\xf2\xb7", + [31589] = "\xea\x4d", [31591] = "\xea\x4e", [31592] = "\xea\x4f", + [31593] = "\xea\x50", [31599] = "\xea\x51", [31600] = "\xea\x52", + [31603] = "\xf2\xb9", [31604] = "\xea\x53", [31605] = "\xea\x54", + [31606] = "\xea\x55", [31607] = "\xea\x56", [31609] = "\xea\x57", + [31610] = "\xea\x58", [31611] = "\xea\x59", [31613] = "\xea\x5a", + [31614] = "\xb0\xbe", [31615] = "\xea\x5b", [31616] = "\xea\x5c", + [31617] = "\xf2\xba", [31618] = "\xca\xab", [31619] = "\xf2\xb8", + [31620] = "\xea\x5d", [31622] = "\xf2\xbb", [31623] = "\xf2\xbc", + [31626] = "\xea\x5e", [31629] = "\xea\x5f", [31630] = "\xea\x60", + [31631] = "\xf2\xbd", [31632] = "\xf2\xbe", [31638] = "\xea\x61", + [31639] = "\xea\x62", [31640] = "\xf2\xbf", [31641] = "\xea\x63", + [31642] = "\xcb\xee", [31643] = "\xbb\xad", [31644] = "\xea\x64", + [31645] = "\xba\xfa", [31646] = "\xc1\xaf", [31648] = "\xea\x65", + [31649] = "\xea\x66", [31650] = "\xea\x67", [31652] = "\xf2\xc0", + [31655] = "\xea\x68", [31656] = "\xea\x69", [31657] = "\xf2\xc3", + [31659] = "\xea\x6a", [31660] = "\xea\x6b", [31662] = "\xea\x6c", + [31663] = "\xea\x6d", [31664] = "\xf2\xc1", [31665] = "\xea\x6e", + [31670] = "\xf2\xc4", [31671] = "\xea\x6f", [31672] = "\xea\x70", + [31673] = "\xb8\xf1", [31674] = "\xf2\xc2", [31678] = "\xea\x71", + [31679] = "\xf2\xc5", [31680] = "\xea\x72", [31681] = "\xf2\xc6", + [31682] = "\xf2\xc7", [31684] = "\xf2\xcb", [31686] = "\xbb\xaa", + [31687] = "\xea\x73", [31688] = "\xea\x74", [31691] = "\xc2\xe4", + [31693] = "\xea\x75", [31695] = "\xea\x76", [31697] = "\xf2\xcc", + [31698] = "\xf2\xc9", [31699] = "\xf2\xc8", [31700] = "\xf2\xca", + [31701] = "\xea\x77", [31703] = "\xea\x78", [31704] = "\xb7\xdf", + [31706] = "\xea\x79", [31707] = "\xea\x7a", [31711] = "\xea\x7b", + [31712] = "\xf2\xd0", [31713] = "\xf2\xcf", [31714] = "\xf2\xce", + [31715] = "\xea\x7c", [31717] = "\xb0\xb3", [31719] = "\xea\x7d", + [31720] = "\xea\x7e", [31721] = "\xeb\x21", [31722] = "\xeb\x22", + [31725] = "\xeb\x23", [31727] = "\xeb\x24", [31728] = "\xeb\x25", + [31730] = "\xeb\x26", [31732] = "\xf2\xda", [31734] = "\xf2\xd6", + [31736] = "\xf2\xd7", [31737] = "\xf2\xd3", [31738] = "\xf2\xd9", + [31739] = "\xeb\x27", [31740] = "\xf2\xd5", [31741] = "\xb3\xe2", + [31743] = "\xeb\x28", [31744] = "\xcf\xcc", [31745] = "\xeb\x29", + [31746] = "\xf2\xd8", [31747] = "\xf2\xd4", [31748] = "\xf2\xd2", + [31749] = "\xf2\xd1", [31750] = "\xeb\x2a", [31752] = "\xeb\x2b", + [31753] = "\xeb\x2c", [31754] = "\xeb\x2d", [31755] = "\xf2\xdc", + [31756] = "\xeb\x2e", [31758] = "\xeb\x2f", [31761] = "\xf2\xdf", + [31762] = "\xeb\x30", [31763] = "\xeb\x31", [31764] = "\xf2\xde", + [31765] = "\xf2\xdd", [31766] = "\xeb\x32", [31767] = "\xeb\x33", + [31768] = "\xeb\x34", [31769] = "\xeb\x35", [31770] = "\xeb\x36", + [31773] = "\xc9\xc9", [31774] = "\xf2\xdb", [31775] = "\xb0\xf3", + [31776] = "\xf2\xe0", [31777] = "\xeb\x37", [31778] = "\xf2\xe2", + [31781] = "\xeb\x38", [31782] = "\xeb\x39", [31783] = "\xeb\x3a", + [31785] = "\xb3\xef", [31786] = "\xf2\xcd", [31787] = "\xb1\xb7", + [31789] = "\xeb\x3b", [31790] = "\xf2\xe4", [31793] = "\xeb\x3c", + [31795] = "\xeb\x3d", [31796] = "\xeb\x3e", [31797] = "\xeb\x3f", + [31798] = "\xf2\xe3", [31799] = "\xf2\xe1", [31800] = "\xc3\xad", + [31801] = "\xeb\x40", [31802] = "\xeb\x41", [31806] = "\xeb\x42", + [31807] = "\xeb\x43", [31808] = "\xeb\x44", [31810] = "\xcb\xf0", + [31811] = "\xeb\x45", [31812] = "\xeb\x46", [31814] = "\xeb\x47", + [31815] = "\xce\xda", [31816] = "\xeb\x48", [31818] = "\xf2\xe5", + [31819] = "\xeb\x49", [31820] = "\xeb\x50", [31821] = "\xeb\x4a", + [31822] = "\xeb\x4b", [31823] = "\xeb\x4c", [31824] = "\xf2\xe6", + [31827] = "\xeb\x4d", [31831] = "\xf2\xe7", [31832] = "\xeb\x52", + [31833] = "\xeb\x4e", [31834] = "\xeb\x4f", [31835] = "\xeb\x51", + [31838] = "\xeb\x53", [31840] = "\xeb\x54", [31842] = "\xeb\x55", + [31845] = "\xeb\x56", [31846] = "\xf2\xe8", [31847] = "\xeb\x57", + [31848] = "\xf2\xe9", [31851] = "\xeb\x58", [31957] = "\xc4\xbb", + [31958] = "\xeb\x59", [31959] = "\xf2\xea", [31961] = "\xc8\xb7", + [31963] = "\xf2\xef", [31964] = "\xf2\xeb", [31968] = "\xf2\xec", + [31970] = "\xeb\x5a", [31971] = "\xcb\xb1", [31972] = "\xcc\xc4", + [31974] = "\xc6\xd0", [31975] = "\xeb\x5b", [31977] = "\xeb\x5c", + [31986] = "\xeb\x5e", [31987] = "\xf2\xf0", [31990] = "\xf2\xf1", + [31991] = "\xc6\xbe", [31992] = "\xf2\xee", [31993] = "\xf2\xed", + [31995] = "\xeb\x5d", [31998] = "\xb2\xaa", [32001] = "\xeb\x5f", + [32002] = "\xf2\xf9", [32005] = "\xf2\xf8", [32007] = "\xeb\x60", + [32008] = "\xeb\x61", [32011] = "\xb1\xf5", [32012] = "\xeb\x62", + [32013] = "\xeb\x63", [32014] = "\xeb\x64", [32015] = "\xf2\xf6", + [32019] = "\xf2\xf5", [32022] = "\xf2\xf3", [32024] = "\xb3\xfb", + [32026] = "\xf2\xf2", [32027] = "\xbc\xb2", [32028] = "\xb2\xa9", + [32031] = "\xeb\x65", [32032] = "\xeb\x66", [32034] = "\xeb\x67", + [32035] = "\xeb\x68", [32036] = "\xeb\x69", [32042] = "\xeb\x6a", + [32043] = "\xb9\xe3", [32044] = "\xeb\x6b", [32045] = "\xeb\x6d", + [32046] = "\xf2\xfc", [32047] = "\xf2\xfb", [32049] = "\xf2\xfa", + [32050] = "\xeb\x6e", [32051] = "\xeb\x6f", [32052] = "\xf2\xf7", + [32053] = "\xeb\x6c", [32054] = "\xf2\xfd", [32055] = "\xeb\x70", + [32056] = "\xf2\xfe", [32058] = "\xeb\x71", [32064] = "\xf3\xa5", + [32065] = "\xf3\xa4", [32067] = "\xeb\x72", [32068] = "\xeb\x73", + [32073] = "\xf3\xa6", [32076] = "\xb1\xad", [32077] = "\xf3\xa1", + [32078] = "\xf3\xa2", [32079] = "\xeb\x74", [32080] = "\xb9\xf4", + [32081] = "\xcc\xb9", [32082] = "\xeb\x76", [32083] = "\xeb\x75", + [32084] = "\xf3\xa3", [32085] = "\xeb\x77", [32089] = "\xeb\x78", + [32090] = "\xeb\x79", [32091] = "\xeb\x7a", [32092] = "\xcb\xb2", + [32095] = "\xf3\xab", [32096] = "\xeb\x7b", [32098] = "\xf3\xa7", + [32102] = "\xeb\x7c", [32103] = "\xeb\x7d", [32106] = "\xf3\xac", + [32107] = "\xeb\x7e", [32108] = "\xec\x21", [32110] = "\xec\x22", + [32115] = "\xec\x23", [32116] = "\xec\x24", [32118] = "\xec\x25", + [32119] = "\xf3\xa9", [32121] = "\xf3\xa8", [32122] = "\xec\x26", + [32125] = "\xec\x27", [32126] = "\xec\x28", [32127] = "\xb7\xdc", + [32130] = "\xec\x29", [32131] = "\xec\x2a", [32133] = "\xec\x2b", + [32134] = "\xec\x2c", [32135] = "\xec\x2d", [32136] = "\xec\x2e", + [32138] = "\xf3\xad", [32145] = "\xec\x2f", [32148] = "\xf3\xae", + [32153] = "\xf3\xaf", [32154] = "\xec\x30", [32155] = "\xf3\xaa", + [32156] = "\xec\x31", [32158] = "\xec\x32", [32159] = "\xf2\xf4", + [32161] = "\xec\x33", [32162] = "\xf3\xb0", [32164] = "\xc4\xe1", + [32165] = "\xec\x34", [32168] = "\xf3\xb4", [32169] = "\xec\x35", + [32170] = "\xf3\xb5", [32171] = "\xf3\xb3", [32172] = "\xec\x36", + [32175] = "\xec\x37", [32177] = "\xf3\xb2", [32178] = "\xf3\xb8", + [32179] = "\xec\x38", [32180] = "\xf3\xb1", [32182] = "\xf3\xb6", + [32183] = "\xec\x39", [32185] = "\xec\x3a", [32186] = "\xec\x3b", + [32191] = "\xf3\xb7", [32195] = "\xf3\xba", [32196] = "\xec\x3c", + [32197] = "\xec\x3d", [32198] = "\xec\x3e", [32199] = "\xec\x3f", + [32201] = "\xf3\xb9", [32202] = "\xec\x40", [32206] = "\xec\x41", + [32207] = "\xec\x42", [32208] = "\xec\x43", [32213] = "\xec\x44", + [32214] = "\xf3\xbc", [32215] = "\xec\x45", [32217] = "\xec\x46", + [32219] = "\xec\x47", [32221] = "\xf3\xbd", [32222] = "\xec\x48", + [32223] = "\xf3\xbe", [32224] = "\xec\x49", [32226] = "\xcf\xc9", + [32227] = "\xec\x4a", [32228] = "\xec\x4b", [32232] = "\xf3\xbb", + [32233] = "\xc2\xeb", [32234] = "\xba\xed", [32237] = "\xf3\xbf", + [32238] = "\xec\x4c", [32242] = "\xec\x4e", [32247] = "\xec\x4f", + [32250] = "\xec\x4d", [32254] = "\xec\x50", [32256] = "\xec\x51", + [32257] = "\xec\x52", [32258] = "\xec\x53", [32261] = "\xec\x54", + [32262] = "\xec\x55", [32265] = "\xec\x56", [32266] = "\xf3\xc0", + [32267] = "\xf3\xc1", [32268] = "\xec\x57", [32269] = "\xec\x58", + [32270] = "\xf3\xc2", [32357] = "\xf3\xc3", [32360] = "\xb8\xb4", + [32361] = "\xf3\xc4", [32362] = "\xec\x59", [32363] = "\xec\x5a", + [32364] = "\xec\x5b", [32365] = "\xf3\xc5", [32367] = "\xbc\xaf", + [32368] = "\xec\x5c", [32369] = "\xf3\xc6", [32370] = "\xec\x5d", + [32371] = "\xec\x5e", [32372] = "\xec\x5f", [32373] = "\xec\x60", + [32375] = "\xec\x61", [32376] = "\xf3\xc7", [32379] = "\xf3\xc8", + [32380] = "\xf3\xc9", [32382] = "\xec\x62", [32383] = "\xec\x63", + [32385] = "\xf3\xcc", [32386] = "\xf3\xca", [32387] = "\xcf\xbc", + [32389] = "\xf3\xcb", [32390] = "\xec\x64", [32391] = "\xce\xef", + [32392] = "\xec\x65", [32395] = "\xec\x66", [32397] = "\xf3\xcd", + [32398] = "\xec\x67", [32399] = "\xce\xdb", [32404] = "\xec\x68", + [32405] = "\xf3\xce", [32406] = "\xc7\xfe", [32408] = "\xec\x69", + [32409] = "\xf3\xcf", [32410] = "\xf3\xd1", [32412] = "\xec\x6a", + [32413] = "\xf3\xd2", [32414] = "\xec\x6b", [32415] = "\xec\x6c", + [32416] = "\xec\x6d", [32419] = "\xec\x6e", [32420] = "\xec\x6f", + [32421] = "\xec\x70", [32424] = "\xf3\xd0", [32425] = "\xb9\xed", + [32426] = "\xcc\xcd", [32427] = "\xcb\xe3", [32428] = "\xd6\xf7", + [32430] = "\xdd\xe0", [32431] = "\xcb\xfb", [32436] = "\xb2\xab", + [32438] = "\xec\x71", [32440] = "\xec\x72", [32443] = "\xec\x73", + [32444] = "\xf3\xd4", [32445] = "\xb5\xd0", [32446] = "\xf3\xd5", + [32447] = "\xf3\xd6", [32448] = "\xf3\xd7", [32449] = "\xf4\x7e", + [32450] = "\xb9\xf5", [32452] = "\xf3\xd8", [32453] = "\xec\x74", + [32456] = "\xe0\xd4", [32457] = "\xcc\xdb", [32459] = "\xc2\xe3", + [32460] = "\xf3\xd9", [32461] = "\xf3\xdb", [32462] = "\xf3\xda", + [32463] = "\xec\x75", [32464] = "\xf3\xdc", [32468] = "\xec\x76", + [32469] = "\xf3\xdd", [32471] = "\xec\x77", [32472] = "\xf3\xde", + [32476] = "\xec\x78", [32477] = "\xec\x79", [32478] = "\xec\x7a", + [32479] = "\xf3\xdf", [32480] = "\xec\x7b", [32481] = "\xec\x7c", + [32482] = "\xec\x7d", [32484] = "\xf3\xe0", [32485] = "\xec\x7e", + [32486] = "\xf3\xe1", [32487] = "\xf3\xe2", [32488] = "\xed\x21", + [32489] = "\xf3\xe3", [32491] = "\xf3\xe4", [32492] = "\xf3\xe5", + [32493] = "\xf3\xe6", [32495] = "\xed\x22", [32498] = "\xed\x23", + [32499] = "\xed\x24", [32503] = "\xf3\xe7", [32504] = "\xf3\xe8", + [32505] = "\xed\x25", [32510] = "\xc5\xa4", [32511] = "\xed\x26", + [32512] = "\xed\x27", [32513] = "\xed\x28", [32514] = "\xed\x29", + [32515] = "\xb8\xdd", [32516] = "\xed\x2a", [32517] = "\xf3\xea", + [32518] = "\xed\x2b", [32519] = "\xed\x2c", [32521] = "\xed\x2d", + [32522] = "\xed\x2e", [32523] = "\xed\x2f", [32527] = "\xed\x30", + [32528] = "\xc1\xcd", [32529] = "\xf3\xeb", [32530] = "\xed\x31", + [32534] = "\xed\x32", [32538] = "\xed\x33", [32539] = "\xed\x34", + [32540] = "\xf3\xec", [32543] = "\xed\x35", [32545] = "\xed\x36", + [32546] = "\xed\x37", [32548] = "\xed\x38", [32551] = "\xed\x39", + [32553] = "\xed\x3a", [32554] = "\xed\x3b", [32555] = "\xc9\xa1", + [32556] = "\xed\x3c", [32557] = "\xed\x3d", [32558] = "\xf3\xed", + [32559] = "\xed\x3e", [32561] = "\xed\x3f", [32563] = "\xed\x40", + [32564] = "\xed\x41", [32565] = "\xed\x42", [32566] = "\xed\x43", + [32567] = "\xed\x44", [32570] = "\xf3\xee", [32571] = "\xe3\xb7", + [32574] = "\xec\xda", [32575] = "\xf0\xed", [32578] = "\xf3\xef", + [32579] = "\xed\x45", [32580] = "\xf3\xf0", [32581] = "\xed\x46", + [32582] = "\xed\x47", [32583] = "\xed\x48", [32584] = "\xed\x49", + [32586] = "\xed\x4a", [32589] = "\xed\x4b", [32590] = "\xed\x4c", + [32591] = "\xf3\xf2", [32592] = "\xf3\xf3", [32593] = "\xf3\xf4", + [32594] = "\xce\xf0", [32595] = "\xf3\xf1", [32598] = "\xf3\xf5", + [32599] = "\xf3\xf6", [32600] = "\xed\x4d", [32601] = "\xed\x4e", + [32602] = "\xf3\xf8", [32604] = "\xf3\xf7", [32605] = "\xed\x4f", + [32606] = "\xed\x50", [32607] = "\xed\x51", [32608] = "\xed\x52", + [32609] = "\xed\x53", [32610] = "\xf3\xfa", [32611] = "\xed\x54", + [32613] = "\xed\x55", [32614] = "\xf3\xfb", [32615] = "\xf3\xf9", + [32618] = "\xed\x56", [32621] = "\xed\x57", [32637] = "\xce\xb6", + [32639] = "\xed\x58", [32640] = "\xed\x59", [32641] = "\xed\x5a", + [32642] = "\xed\x5b", [32644] = "\xed\x5c", [32645] = "\xf3\xfc", + [32646] = "\xed\x5d", [32647] = "\xed\x5e", [32652] = "\xf3\xfd", + [32653] = "\xe3\xd4", [32654] = "\xed\x5f", [32656] = "\xf3\xfe", + [32657] = "\xed\x60", [32658] = "\xed\x61", [32659] = "\xed\x62", + [32661] = "\xed\x63" +}; + +static const char from_ucs4_cjkcpt[261][2] = +{ + /* start = 0xf929, end = 0xfa2d */ + [ 0] = "\xf4\x45", [ 179] = "\xf4\x72", [ 229] = "\xf4\x34", + [ 230] = "\xf4\x37", [ 231] = "\xf4\x38", [ 232] = "\xf4\x3d", + [ 233] = "\xf4\x44", [ 234] = "\xf4\x47", [ 235] = "\xf4\x48", + [ 236] = "\xf4\x4e", [ 237] = "\xf4\x4f", [ 238] = "\xf4\x53", + [ 239] = "\xf4\x55", [ 240] = "\xf4\x56", [ 241] = "\xf4\x57", + [ 242] = "\xf4\x58", [ 243] = "\xf4\x5a", [ 244] = "\xf4\x5b", + [ 245] = "\xf4\x5e", [ 246] = "\xf4\x60", [ 247] = "\xf4\x62", + [ 248] = "\xf4\x63", [ 249] = "\xf4\x65", [ 250] = "\xf4\x69", + [ 251] = "\xf4\x6a", [ 252] = "\xf4\x6b", [ 253] = "\xf4\x6d", + [ 254] = "\xf4\x6f", [ 255] = "\xf4\x70", [ 256] = "\xf4\x73", + [ 257] = "\xf4\x77", [ 258] = "\xf4\x78", [ 259] = "\xf4\x79", + [ 260] = "\xf4\x7d" +}; + +static const char from_ucs4_extra[229][2] = +{ + /* start = 0xff01, end = 0xffe5 */ + [ 0] = "\xa1\xaa", [ 1] = "\xf4\x2a", [ 2] = "\xa1\xf4", + [ 3] = "\xa1\xf0", [ 4] = "\xa1\xf3", [ 5] = "\xa1\xf5", + [ 6] = "\xf4\x29", [ 7] = "\xa1\xca", [ 8] = "\xa1\xcb", + [ 9] = "\xa1\xf6", [ 10] = "\xa1\xdc", [ 11] = "\xa1\xa4", + [ 12] = "\xa1\xdd", [ 13] = "\xa1\xa5", [ 14] = "\xa1\xbf", + [ 15] = "\xa3\xb0", [ 16] = "\xa3\xb1", [ 17] = "\xa3\xb2", + [ 18] = "\xa3\xb3", [ 19] = "\xa3\xb4", [ 20] = "\xa3\xb5", + [ 21] = "\xa3\xb6", [ 22] = "\xa3\xb7", [ 23] = "\xa3\xb8", + [ 24] = "\xa3\xb9", [ 25] = "\xa1\xa7", [ 26] = "\xa1\xa8", + [ 27] = "\xa1\xe3", [ 28] = "\xa1\xe1", [ 29] = "\xa1\xe4", + [ 30] = "\xa1\xa9", [ 31] = "\xa1\xf7", [ 32] = "\xa3\xc1", + [ 33] = "\xa3\xc2", [ 34] = "\xa3\xc3", [ 35] = "\xa3\xc4", + [ 36] = "\xa3\xc5", [ 37] = "\xa3\xc6", [ 38] = "\xa3\xc7", + [ 39] = "\xa3\xc8", [ 40] = "\xa3\xc9", [ 41] = "\xa3\xca", + [ 42] = "\xa3\xcb", [ 43] = "\xa3\xcc", [ 44] = "\xa3\xcd", + [ 45] = "\xa3\xce", [ 46] = "\xa3\xcf", [ 47] = "\xa3\xd0", + [ 48] = "\xa3\xd1", [ 49] = "\xa3\xd2", [ 50] = "\xa3\xd3", + [ 51] = "\xa3\xd4", [ 52] = "\xa3\xd5", [ 53] = "\xa3\xd6", + [ 54] = "\xa3\xd7", [ 55] = "\xa3\xd8", [ 56] = "\xa3\xd9", + [ 57] = "\xa3\xda", [ 58] = "\xa1\xce", [ 59] = "\xa1\xc0", + [ 60] = "\xa1\xcf", [ 61] = "\xa1\xb0", [ 62] = "\xa1\xb2", + [ 63] = "\xa1\xae", [ 64] = "\xa3\xe1", [ 65] = "\xa3\xe2", + [ 66] = "\xa3\xe3", [ 67] = "\xa3\xe4", [ 68] = "\xa3\xe5", + [ 69] = "\xa3\xe6", [ 70] = "\xa3\xe7", [ 71] = "\xa3\xe8", + [ 72] = "\xa3\xe9", [ 73] = "\xa3\xea", [ 74] = "\xa3\xeb", + [ 75] = "\xa3\xec", [ 76] = "\xa3\xed", [ 77] = "\xa3\xee", + [ 78] = "\xa3\xef", [ 79] = "\xa3\xf0", [ 80] = "\xa3\xf1", + [ 81] = "\xa3\xf2", [ 82] = "\xa3\xf3", [ 83] = "\xa3\xf4", + [ 84] = "\xa3\xf5", [ 85] = "\xa3\xf6", [ 86] = "\xa3\xf7", + [ 87] = "\xa3\xf8", [ 88] = "\xa3\xf9", [ 89] = "\xa3\xfa", + [ 90] = "\xa1\xd0", [ 91] = "\xa1\xc3", [ 92] = "\xa1\xd1", + [ 93] = "\xa1\xc1", [ 96] = "\x8e\xa1", [ 97] = "\x8e\xa2", + [ 98] = "\x8e\xa3", [ 99] = "\x8e\xa4", [ 100] = "\x8e\xa5", + [ 101] = "\x8e\xa6", [ 102] = "\x8e\xa7", [ 103] = "\x8e\xa8", + [ 104] = "\x8e\xa9", [ 105] = "\x8e\xaa", [ 106] = "\x8e\xab", + [ 107] = "\x8e\xac", [ 108] = "\x8e\xad", [ 109] = "\x8e\xae", + [ 110] = "\x8e\xaf", [ 111] = "\x8e\xb0", [ 112] = "\x8e\xb1", + [ 113] = "\x8e\xb2", [ 114] = "\x8e\xb3", [ 115] = "\x8e\xb4", + [ 116] = "\x8e\xb5", [ 117] = "\x8e\xb6", [ 118] = "\x8e\xb7", + [ 119] = "\x8e\xb8", [ 120] = "\x8e\xb9", [ 121] = "\x8e\xba", + [ 122] = "\x8e\xbb", [ 123] = "\x8e\xbc", [ 124] = "\x8e\xbd", + [ 125] = "\x8e\xbe", [ 126] = "\x8e\xbf", [ 127] = "\x8e\xc0", + [ 128] = "\x8e\xc1", [ 129] = "\x8e\xc2", [ 130] = "\x8e\xc3", + [ 131] = "\x8e\xc4", [ 132] = "\x8e\xc5", [ 133] = "\x8e\xc6", + [ 134] = "\x8e\xc7", [ 135] = "\x8e\xc8", [ 136] = "\x8e\xc9", + [ 137] = "\x8e\xca", [ 138] = "\x8e\xcb", [ 139] = "\x8e\xcc", + [ 140] = "\x8e\xcd", [ 141] = "\x8e\xce", [ 142] = "\x8e\xcf", + [ 143] = "\x8e\xd0", [ 144] = "\x8e\xd1", [ 145] = "\x8e\xd2", + [ 146] = "\x8e\xd3", [ 147] = "\x8e\xd4", [ 148] = "\x8e\xd5", + [ 149] = "\x8e\xd6", [ 150] = "\x8e\xd7", [ 151] = "\x8e\xd8", + [ 152] = "\x8e\xd9", [ 153] = "\x8e\xda", [ 154] = "\x8e\xdb", + [ 155] = "\x8e\xdc", [ 156] = "\x8e\xdd", [ 157] = "\x8e\xde", + [ 158] = "\x8e\xdf", [ 223] = "\xa1\xf1", [ 224] = "\xa1\xf2", + [ 225] = "\xa2\xcc", [ 226] = "\xa1\xb1", [ 227] = "\xa2\x43", + [ 228] = "\xa1\xef" +}; + +/* Definitions used in the body of the `gconv' function. */ +#define CHARSET_NAME "EUC-JP-MS//" +#define FROM_LOOP from_eucjp_ms +#define TO_LOOP to_eucjp_ms +#define DEFINE_INIT 1 +#define DEFINE_FINI 1 +#define MIN_NEEDED_FROM 1 +#define MAX_NEEDED_FROM 3 +#define MIN_NEEDED_TO 4 + + +/* First define the conversion function from EUC-JP-MS to UCS4. */ +#define MIN_NEEDED_INPUT MIN_NEEDED_FROM +#define MAX_NEEDED_INPUT MAX_NEEDED_FROM +#define MIN_NEEDED_OUTPUT MIN_NEEDED_TO +#define LOOPFCT FROM_LOOP +#define BODY \ + { \ + uint32_t ch = (uint32_t)inptr[0] & 0xff; \ + \ + if (ch < 0x8e || (ch >= 0x90 && ch <= 0x9f)) \ + ++inptr; \ + else if (ch == 0xff) \ + { \ + /* This is illegal. */ \ + if (! ignore_errors_p ()) \ + { \ + result = __GCONV_ILLEGAL_INPUT; \ + break; \ + } \ + \ + ++inptr; \ + ++*irreversible; \ + continue; \ + } \ + else \ + { \ + /* Two or more byte character. First test whether the next \ + character is also available. */ \ + unsigned char ch2; \ + \ + if (__builtin_expect (inptr + 1 >= inend, 0)) \ + { \ + /* The second character is not available. Store the \ + intermediate result. */ \ + result = __GCONV_INCOMPLETE_INPUT; \ + break; \ + } \ + \ + ch2 = (unsigned char)inptr[1]; \ + \ + /* All second bytes of a multibyte character must be >= 0xa1. */ \ + if (__builtin_expect (ch2 < 0xa1, 0)) \ + { \ + /* This is an illegal character. */ \ + if (! ignore_errors_p ()) \ + { \ + result = __GCONV_ILLEGAL_INPUT; \ + break; \ + } \ + \ + ++inptr; \ + ++*irreversible; \ + continue; \ + } \ + \ + if (__builtin_expect(ch == 0x8e, 0)) \ + { \ + /* This is code set 2: half-width katakana. */ \ + ch = jisx0201_to_ucs4 (ch2); \ + /*if (__builtin_expect (ch, 0) == __UNKNOWN_10646_CHAR)*/ \ + if (__builtin_expect (ch == __UNKNOWN_10646_CHAR, 0)) \ + { \ + /* Illegal character. */ \ + if (! ignore_errors_p ()) \ + { \ + /* This is an illegal character. */ \ + result = __GCONV_ILLEGAL_INPUT; \ + break; \ + } \ + } \ + \ + inptr += 2; \ + } \ + else \ + { \ + const unsigned char *endp; \ + int mblen = 1; \ + \ + if (__builtin_expect(ch == 0x8f, 0)) \ + { \ + if (inend - inptr < 3) \ + ch = 0; \ + else \ + { \ + unsigned char ch3 = (unsigned char)inptr[2]; \ + mblen = 3; \ + \ + if (__builtin_expect(ch3 == 0xff, 0) \ + || __builtin_expect(ch3 < 0xa1, 0)) \ + ch = __UNKNOWN_10646_CHAR; \ + else if (ch2 <= 0xf2) \ + { \ + endp = inptr + 1; \ + \ + /* This is code set 3: JIS X 0212-1990. */ \ + ch = jisx0212_to_ucs4 (&endp, inend - endp, 0x80); \ + \ + if (ch == 0x00a6) /* BROKEN BAR */ \ + ch = 0xffe4; /* FULLWIDTH BROKEN BAR */ \ + else if (ch == __UNKNOWN_10646_CHAR) \ + endp -= 1; \ + } \ + else if (ch2 <= 0xf4) \ + { \ + int idx = ((ch2-0xf3)*94 + ch3-0xa1) - (94-12); \ + \ + if (0 <= idx && idx < 12 + 94) \ + { \ + if ((ch = cjk_block_ibm[idx]) != 0) \ + endp = inptr + mblen; \ + else \ + ch = __UNKNOWN_10646_CHAR; \ + } \ + else \ + ch = __UNKNOWN_10646_CHAR; \ + } \ + else if (ch2 <= 0xfe) \ + { \ + ch = 0xe3ac + (ch2 - 0xf5) * 94 + (ch3 - 0xa1); \ + endp = inptr + mblen; \ + } \ + else \ + ch = __UNKNOWN_10646_CHAR; \ + } \ + } \ + else if (__builtin_expect(0xa1 <= ch, 1)) \ + { \ + mblen = 2; \ + \ + if (inend - inptr < 2) \ + ch = 0; \ + else if (__builtin_expect(ch2 == 0xff, 0)) \ + ch = __UNKNOWN_10646_CHAR; \ + else if (ch <= 0xa8) \ + { \ + if ((ch = cjk_block1[(ch-0xa1)*94 + (ch2-0xa1)]) != 0) \ + endp = inptr + mblen; \ + else \ + ch = __UNKNOWN_10646_CHAR; \ + } \ + else if (ch == 0xad) \ + { \ + if ((ch = cjk_block2[(ch-0xad)*94 + (ch2-0xa1)]) != 0) \ + endp = inptr + mblen; \ + else \ + ch = __UNKNOWN_10646_CHAR; \ + } \ + else if (ch <= 0xf4) \ + { \ + endp = inptr; \ + \ + /* This is code set 1: JIS X 0208. */ \ + ch = jisx0208_to_ucs4 (&endp, inend - inptr, 0x80); \ + } \ + else if (ch <= 0xfe) \ + { \ + ch = 0xe000 + (ch - 0xf5) * 94 + (ch2 - 0xa1); \ + endp = inptr + mblen; \ + } \ + else \ + ch = __UNKNOWN_10646_CHAR; \ + } \ + else \ + ch = __UNKNOWN_10646_CHAR; \ + \ + if (__builtin_expect (ch, 1) == 0) \ + { \ + /* Not enough input available. */ \ + result = __GCONV_INCOMPLETE_INPUT; \ + break; \ + } \ + if (__builtin_expect (ch, 0) == __UNKNOWN_10646_CHAR) \ + { \ + /* Illegal character. */ \ + if (! ignore_errors_p ()) \ + { \ + /* This is an illegal character. */ \ + result = __GCONV_ILLEGAL_INPUT; \ + break; \ + } \ + \ + inptr += mblen; \ + ++*irreversible; \ + continue; \ + } \ + inptr = endp; \ + } \ + } \ + \ + put32 (outptr, ch); \ + outptr += 4; \ + } +#define LOOP_NEED_FLAGS +#include + + +/* Next, define the other direction. */ +#define MIN_NEEDED_INPUT MIN_NEEDED_TO +#define MIN_NEEDED_OUTPUT MIN_NEEDED_FROM +#define MAX_NEEDED_OUTPUT MAX_NEEDED_FROM +#define LOOPFCT TO_LOOP +#define BODY \ + { \ + uint32_t ch = get32 (inptr); \ + const unsigned char *cp; \ + unsigned char pua[2]; \ + \ + if (ch >= (sizeof (from_ucs4_lat1) / sizeof (from_ucs4_lat1[0]))) \ + { \ + if (ch >= 0x0100 && ch <= 0x045f) \ + cp = from_ucs4_greek[ch - 0x0100]; \ + else if (ch >= 0x2010 && ch <= 0x9fa5) \ + cp = from_ucs4_cjk[ch - 0x2010]; \ + else if (ch >= 0xe000 && ch <= 0xe757) \ + { \ + if (ch < 0xe3ac) \ + { \ + pua[0] = (ch - 0xe000) / 94 + 0xf5; \ + pua[1] = (ch - 0xe000) % 94 + 0xa1; \ + } \ + else \ + { \ + pua[0] = (ch - 0xe3ac) / 94 + 0xf5; \ + pua[1] = (ch - 0xe3ac) % 94 + 0x21; \ + } \ + cp = (const unsigned char *)&pua[0]; \ + } \ + else if (ch >= 0xf929 && ch <= 0xfa2d) \ + cp = from_ucs4_cjkcpt[ch - 0xf929]; \ + else if (__builtin_expect (ch >= 0xff01, 1) \ + && __builtin_expect (ch <= 0xffe5, 1)) \ + cp = from_ucs4_extra[ch - 0xff01]; \ + else \ + { \ + UNICODE_TAG_HANDLER (ch, 4); \ + /* Illegal character. */ \ + cp = ""; \ + } \ + } \ + else \ + cp = from_ucs4_lat1[ch]; \ + \ + if (__builtin_expect (cp[0], '\1') == '\0' && ch != 0) \ + { \ + /* Illegal character. */ \ + STANDARD_TO_LOOP_ERR_HANDLER (4); \ + } \ + else \ + { \ + *outptr = cp[0]; \ + /* Now test for a possible second byte and write this if possible. */\ + if (cp[1] != '\0') \ + { \ + if (__builtin_expect (outptr + 1 >= outend, 0)) \ + { \ + /* The result does not fit into the buffer. */ \ + result = __GCONV_FULL_OUTPUT; \ + break; \ + } \ + if (__builtin_expect (cp[1] < 0x80, 0)) \ + { \ + if (__builtin_expect (outptr + 2 >= outend, 0)) \ + { \ + /* The result does not fit into the buffer. */ \ + result = __GCONV_FULL_OUTPUT; \ + break; \ + } \ + *outptr = 0x8f; \ + *++outptr = cp[0]; \ + *++outptr = cp[1] | 0x80; \ + } \ + else \ + *++outptr = cp[1]; \ + } \ + ++outptr; \ + } \ + \ + inptr += 4; \ + } +#define LOOP_NEED_FLAGS +#include + + +/* Now define the toplevel functions. */ +#include --- glibc-2.3.2/iconvdata/euc-kr.c 2002-12-02 16:26:10.000000000 -0500 +++ glibc-2.3.2/iconvdata/euc-kr.c 2003-08-21 08:37:01.000000000 -0400 @@ -1,5 +1,5 @@ /* Mapping tables for EUC-KR handling. - Copyright (C) 1998, 1999, 2000-2002 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000-2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Jungshik Shin and Ulrich Drepper , 1998. @@ -25,6 +25,7 @@ static inline void +__attribute ((always_inline)) euckr_from_ucs4 (uint32_t ch, unsigned char *cp) { if (ch > 0x9f) --- glibc-2.3.2/iconvdata/euc-tw.c 2002-12-02 16:26:10.000000000 -0500 +++ glibc-2.3.2/iconvdata/euc-tw.c 2003-04-12 11:39:42.000000000 -0400 @@ -1,5 +1,5 @@ /* Mapping tables for EUC-TW handling. - Copyright (C) 1998, 1999, 2000-2002 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000-2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1998. @@ -143,7 +143,7 @@ if (__builtin_expect (found, 1) == 0) \ { \ /* We ran out of space. */ \ - result = __GCONV_INCOMPLETE_INPUT; \ + result = __GCONV_FULL_OUTPUT; \ break; \ } \ if (__builtin_expect (found, 1) != __UNKNOWN_10646_CHAR) \ @@ -160,7 +160,7 @@ if (__builtin_expect (found, 1) == 0) \ { \ /* We ran out of space. */ \ - result = __GCONV_INCOMPLETE_INPUT; \ + result = __GCONV_FULL_OUTPUT; \ break; \ } \ if (__builtin_expect (found, 0) == __UNKNOWN_10646_CHAR) \ --- glibc-2.3.2/iconvdata/extra-module.mk 2001-03-18 03:02:29.000000000 -0500 +++ glibc-2.3.2/iconvdata/extra-module.mk 2003-04-28 08:20:35.000000000 -0400 @@ -3,7 +3,8 @@ extra-objs := $(extra-objs) $(patsubst %,%.os,$($(mod)-routines)) -$(objpfx)$(mod).so: $(addprefix $(objpfx),$(addsuffix .os,$($(mod)-routines))) +$(objpfx)$(mod).so: $(addprefix $(objpfx),$(addsuffix .os,$($(mod)-routines)))\ + $(common-objpfx)shlib.lds $(build-module) # Depend on libc.so so a DT_NEEDED is generated in the shared objects. --- glibc-2.3.2/iconvdata/gb2312.h 2001-07-07 15:20:59.000000000 -0400 +++ glibc-2.3.2/iconvdata/gb2312.h 2003-08-21 08:37:01.000000000 -0400 @@ -1,5 +1,5 @@ /* Access functions for GB2312 conversion. - Copyright (C) 1998, 1999 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1998. @@ -30,6 +30,7 @@ static inline uint32_t +__attribute ((always_inline)) gb2312_to_ucs4 (const unsigned char **s, size_t avail, unsigned char offset) { unsigned char ch = *(*s); @@ -67,6 +68,7 @@ extern const char __gb2312_from_ucs4_tab9[][2]; static inline size_t +__attribute ((always_inline)) ucs4_to_gb2312 (uint32_t wch, unsigned char *s, size_t avail) { unsigned int ch = (unsigned int) wch; --- glibc-2.3.2/iconvdata/gconv-modules 2003-01-14 04:32:35.000000000 -0500 +++ glibc-2.3.2/iconvdata/gconv-modules 2003-08-21 08:37:01.000000000 -0400 @@ -393,6 +393,8 @@ alias ISO8859-15// ISO-8859-15// alias ISO885915// ISO-8859-15// alias ISO-IR-203// ISO-8859-15// +alias ISO_8859-15// ISO-8859-15// +alias LATIN-9// ISO-8859-15// alias ISO_8859-15:1998// ISO-8859-15// module ISO-8859-15// INTERNAL ISO8859-15 1 module INTERNAL ISO-8859-15// ISO8859-15 1 @@ -403,6 +405,8 @@ alias ISO-IR-226// ISO-8859-16// alias LATIN10// ISO-8859-16// alias L10// ISO-8859-16// +alias ISO_8859-16:2001// ISO-8859-16// +alias ISO_8859-16// ISO-8859-16// module ISO-8859-16// INTERNAL ISO8859-16 1 module INTERNAL ISO-8859-16// ISO8859-16 1 @@ -433,13 +437,21 @@ # from to module cost alias SHIFT-JIS// SJIS// alias SHIFT_JIS// SJIS// -alias CP932// SJIS// alias MS_KANJI// SJIS// alias CSSHIFTJIS// SJIS// module SJIS// INTERNAL SJIS 1 module INTERNAL SJIS// SJIS 1 # from to module cost +alias WINDOWS-31J// CP932// +alias MS932// CP932// +alias SJIS-OPEN// CP932// +alias SJIS-WIN// CP932// +alias CSWINDOWS31J// CP932// +module CP932// INTERNAL CP932 1 +module INTERNAL CP932// CP932 1 + +# from to module cost alias KOI8// KOI-8// module KOI-8// INTERNAL KOI-8 1 module INTERNAL KOI-8// KOI-8 1 @@ -996,6 +1008,7 @@ module INTERNAL IBM1046// IBM1046 1 # from to module cost +alias IBM-1047// IBM1047// alias CP1047// IBM1047// alias 1047// IBM1047// alias OSF10020417// IBM1047// @@ -1100,6 +1113,13 @@ module INTERNAL BIG5HKSCS// BIG5HKSCS 1 # from to module cost +alias EUCJP-MS// EUC-JP-MS// +alias EUCJP-OPEN// EUC-JP-MS// +alias EUCJP-WIN// EUC-JP-MS// +module EUC-JP-MS// INTERNAL EUC-JP-MS 1 +module INTERNAL EUC-JP-MS// EUC-JP-MS 1 + +# from to module cost alias EUCJP// EUC-JP// alias CSEUCPKDFMTJAPANESE// EUC-JP// alias OSF00030010// EUC-JP// @@ -1122,6 +1142,8 @@ # from to module cost alias GB13000// GBK// alias CP936// GBK// +alias MS936// GBK// +alias WINDOWS-936// GBK// module GBK// INTERNAL GBK 1 module INTERNAL GBK// GBK 1 --- glibc-2.3.2/iconvdata/iso-ir-165.h 2001-07-07 15:21:02.000000000 -0400 +++ glibc-2.3.2/iconvdata/iso-ir-165.h 2003-08-21 08:37:01.000000000 -0400 @@ -1,6 +1,6 @@ /* Tables for conversion to and from ISO-IR-165. converting from UCS using gaps. - Copyright (C) 2000 Free Software Foundation, Inc. + Copyright (C) 2000, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2000. @@ -40,6 +40,7 @@ /* XXX If we at some point need an offset value to decode the byte sequences another parameter can be added. */ static inline uint32_t +__attribute ((always_inline)) isoir165_to_ucs4 (const unsigned char **s, size_t avail) { unsigned char ch = *(*s); @@ -70,6 +71,7 @@ extern const char __isoir165_from_tab[]; static inline size_t +__attribute ((always_inline)) ucs4_to_isoir165 (uint32_t wch, char *s, size_t avail) { unsigned int ch = (unsigned int) wch; --- glibc-2.3.2/iconvdata/jis0201.h 2001-07-07 15:21:02.000000000 -0400 +++ glibc-2.3.2/iconvdata/jis0201.h 2003-08-21 08:37:01.000000000 -0400 @@ -1,5 +1,5 @@ /* Access functions for JISX0201 conversion. - Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -26,6 +26,7 @@ static inline uint32_t +__attribute ((always_inline)) jisx0201_to_ucs4 (char ch) { uint32_t val = __jisx0201_to_ucs4[(unsigned char) ch]; @@ -38,6 +39,7 @@ static inline size_t +__attribute ((always_inline)) ucs4_to_jisx0201 (uint32_t wch, char *s) { char ch; --- glibc-2.3.2/iconvdata/jis0208.h 2001-07-07 15:21:02.000000000 -0400 +++ glibc-2.3.2/iconvdata/jis0208.h 2003-08-21 08:37:01.000000000 -0400 @@ -1,5 +1,5 @@ /* Access functions for JISX0208 conversion. - Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999, 2000, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -43,6 +43,7 @@ static inline uint32_t +__attribute ((always_inline)) jisx0208_to_ucs4 (const unsigned char **s, size_t avail, unsigned char offset) { unsigned char ch = *(*s); @@ -70,6 +71,7 @@ static inline size_t +__attribute ((always_inline)) ucs4_to_jisx0208 (uint32_t wch, char *s, size_t avail) { unsigned int ch = (unsigned int) wch; --- glibc-2.3.2/iconvdata/jis0212.h 2001-07-07 15:21:02.000000000 -0400 +++ glibc-2.3.2/iconvdata/jis0212.h 2003-08-21 08:37:01.000000000 -0400 @@ -1,5 +1,5 @@ /* Access functions for JISX0212 conversion. - Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -42,6 +42,7 @@ static inline uint32_t +__attribute ((always_inline)) jisx0212_to_ucs4 (const unsigned char **s, size_t avail, unsigned char offset) { const struct jisx0212_idx *rp = __jisx0212_to_ucs_idx; @@ -77,6 +78,7 @@ static inline size_t +__attribute ((always_inline)) ucs4_to_jisx0212 (uint32_t wch, char *s, size_t avail) { const struct jisx0212_idx *rp = __jisx0212_from_ucs_idx; --- glibc-2.3.2/iconvdata/jisx0213.h 2002-04-20 03:41:04.000000000 -0400 +++ glibc-2.3.2/iconvdata/jisx0213.h 2003-08-21 08:37:01.000000000 -0400 @@ -1,5 +1,5 @@ /* Functions for JISX0213 conversion. - Copyright (C) 2002 Free Software Foundation, Inc. + Copyright (C) 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Bruno Haible , 2002. @@ -32,6 +32,7 @@ #define NELEMS(arr) (sizeof (arr) / sizeof (arr[0])) static inline uint32_t +__attribute ((always_inline)) jisx0213_to_ucs4 (unsigned int row, unsigned int col) { uint32_t val; @@ -64,6 +65,7 @@ } static inline uint16_t +__attribute ((always_inline)) ucs4_to_jisx0213 (uint32_t ucs) { if (ucs < NELEMS (__jisx0213_from_ucs_level1) << 6) --- glibc-2.3.2/iconvdata/ksc5601.h 2001-07-07 15:21:02.000000000 -0400 +++ glibc-2.3.2/iconvdata/ksc5601.h 2003-08-21 08:37:01.000000000 -0400 @@ -1,5 +1,5 @@ /* Access functions for KS C 5601-1992 based encoding conversion. - Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -44,6 +44,7 @@ static inline uint32_t +__attribute ((always_inline)) ksc5601_to_ucs4 (const unsigned char **s, size_t avail, unsigned char offset) { unsigned char ch = **s; @@ -85,6 +86,7 @@ } static inline size_t +__attribute ((always_inline)) ucs4_to_ksc5601_hangul (uint32_t wch, unsigned char *s, size_t avail) { int l = 0; @@ -116,6 +118,7 @@ static inline size_t +__attribute ((always_inline)) ucs4_to_ksc5601_hanja (uint32_t wch, unsigned char *s, size_t avail) { int l = 0; @@ -146,6 +149,7 @@ } static inline size_t +__attribute ((always_inline)) ucs4_to_ksc5601_sym (uint32_t wch, unsigned char *s, size_t avail) { int l = 0; @@ -177,6 +181,7 @@ static inline size_t +__attribute ((always_inline)) ucs4_to_ksc5601 (uint32_t wch, unsigned char *s, size_t avail) { if (wch >= 0xac00 && wch <= 0xd7a3) --- glibc-2.3.2/iconvdata/testdata/IBM1160.~1~ 2001-09-20 01:06:15.000000000 -0400 +++ glibc-2.3.2/iconvdata/testdata/IBM1160.~1~ 1969-12-31 19:00:00.000000000 -0500 @@ -1,14 +0,0 @@ - ! " # $ % & ' ( ) * + , - . / 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 { | } ~  € ‚ ƒ „ … -† ‡ ˆ ‰ Š ‹ Œ Ž ‘ ’ “ ” • – -— ˜ ™ š › œ ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § -¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ -¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É -Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú -Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë -ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü -ý þ ÿ --- glibc-2.3.2/iconvdata/tst-tables.sh 2003-01-14 04:26:51.000000000 -0500 +++ glibc-2.3.2/iconvdata/tst-tables.sh 2003-08-21 08:37:01.000000000 -0400 @@ -209,6 +209,7 @@ # Multibyte encodings come here # SJIS SHIFT_JIS + CP932 WINDOWS-31J #IBM932 This converter looks quite strange #IBM943 This converter looks quite strange EUC-KR @@ -217,6 +218,7 @@ BIG5 BIG5HKSCS BIG5-HKSCS EUC-JP + EUC-JP-MS EUC-CN GB2312 GBK EUC-TW --- glibc-2.3.2/iconvdata/utf-7.c 2002-06-28 15:43:39.000000000 -0400 +++ glibc-2.3.2/iconvdata/utf-7.c 2003-08-21 08:37:02.000000000 -0400 @@ -1,5 +1,5 @@ /* Conversion module for UTF-7. - Copyright (C) 2000-2002 Free Software Foundation, Inc. + Copyright (C) 2000-2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Bruno Haible , 2000. @@ -93,7 +93,7 @@ /* Converts a value in the range 0..63 to a base64 encoded char. */ -static inline unsigned char +static unsigned char base64 (unsigned int i) { if (i < 26) --- glibc-2.3.2/include/atomic.h 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/include/atomic.h 2003-05-12 12:13:04.000000000 -0400 @@ -0,0 +1,246 @@ +/* Internal macros for atomic operations for GNU C Library. + Copyright (C) 2002, 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 2002. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#ifndef _ATOMIC_H +#define _ATOMIC_H 1 + +#include + +#include + +/* Wrapper macros to call pre_NN_post (mem, ...) where NN is the + bit width of *MEM. The calling macro puts parens around MEM + and following args. */ +#define __atomic_val_bysize(pre, post, mem, ...) \ + ({ \ + __typeof (*mem) __result; \ + if (sizeof (*mem) == 1) \ + __result = pre##_8_##post (mem, __VA_ARGS__); \ + else if (sizeof (*mem) == 2) \ + __result = pre##_16_##post (mem, __VA_ARGS__); \ + else if (sizeof (*mem) == 4) \ + __result = pre##_32_##post (mem, __VA_ARGS__); \ + else if (sizeof (*mem) == 8) \ + __result = pre##_64_##post (mem, __VA_ARGS__); \ + else \ + abort (); \ + __result; \ + }) +#define __atomic_bool_bysize(pre, post, mem, ...) \ + ({ \ + int __result; \ + if (sizeof (*mem) == 1) \ + __result = pre##_8_##post (mem, __VA_ARGS__); \ + else if (sizeof (*mem) == 2) \ + __result = pre##_16_##post (mem, __VA_ARGS__); \ + else if (sizeof (*mem) == 4) \ + __result = pre##_32_##post (mem, __VA_ARGS__); \ + else if (sizeof (*mem) == 8) \ + __result = pre##_64_##post (mem, __VA_ARGS__); \ + else \ + abort (); \ + __result; \ + }) + + +/* Atomically store NEWVAL in *MEM if *MEM is equal to OLDVAL. + Return the old *MEM value. */ +#if !defined atomic_compare_and_exchange_val_acq \ + && defined __arch_compare_and_exchange_val_32_acq +# define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \ + __atomic_val_bysize (__arch_compare_and_exchange_val,acq, \ + mem, newval, oldval) +#endif + + +#ifndef atomic_compare_and_exchange_val_rel +# define atomic_compare_and_exchange_val_rel(mem, oldval, newval) \ + atomic_compare_and_exchange_val_acq (mem, oldval, newval) +#endif + + +/* Atomically store NEWVAL in *MEM if *MEM is equal to OLDVAL. + Return zero if *MEM was changed or non-zero if no exchange happened. */ +#ifndef atomic_compare_and_exchange_bool_acq +# ifdef __arch_compare_and_exchange_bool_32_acq +# define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \ + __atomic_bool_bysize (__arch_compare_and_exchange_bool,acq, \ + mem, newval, oldval) +# else +# define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \ + ({ /* Cannot use __oldval here, because macros later in this file might \ + call this macro with __oldval argument. */ \ + __typeof (oldval) __old = (oldval); \ + atomic_compare_and_exchange_val_acq (mem, newval, __old) != __old; \ + }) +# endif +#endif + + +#ifndef atomic_compare_and_exchange_bool_rel +# define atomic_compare_and_exchange_bool_rel(mem, oldval, newval) \ + atomic_compare_and_exchange_bool_acq (mem, oldval, newval) +#endif + + +/* Store NEWVALUE in *MEM and return the old value. */ +#ifndef atomic_exchange_acq +# define atomic_exchange_acq(mem, newvalue) \ + ({ __typeof (*(mem)) __oldval; \ + __typeof (mem) __memp = (mem); \ + __typeof (*(mem)) __value = (newvalue); \ + \ + do \ + __oldval = (*__memp); \ + while (__builtin_expect (atomic_compare_and_exchange_bool_acq (__memp, \ + __value, \ + __oldval),\ + 0)); \ + \ + __oldval; }) +#endif + +#ifndef atomic_exchange_rel +# define atomic_exchange_rel(mem, newvalue) atomic_exchange_acq (mem, newvalue) +#endif + + +/* Add VALUE to *MEM and return the old value of *MEM. */ +#ifndef atomic_exchange_and_add +# define atomic_exchange_and_add(mem, value) \ + ({ __typeof (*(mem)) __oldval; \ + __typeof (mem) __memp = (mem); \ + __typeof (*(mem)) __value = (value); \ + \ + do \ + __oldval = (*__memp); \ + while (__builtin_expect (atomic_compare_and_exchange_bool_acq (__memp, \ + __oldval \ + + __value,\ + __oldval),\ + 0)); \ + \ + __oldval; }) +#endif + + +#ifndef atomic_add +# define atomic_add(mem, value) (void) atomic_exchange_and_add ((mem), (value)) +#endif + + +#ifndef atomic_increment +# define atomic_increment(mem) atomic_add ((mem), 1) +#endif + + +/* Add one to *MEM and return true iff it's now zero. */ +#ifndef atomic_increment_and_test +# define atomic_increment_and_test(mem) \ + (atomic_exchange_and_add ((mem), 1) + 1 == 0) +#endif + + +#ifndef atomic_decrement +# define atomic_decrement(mem) atomic_add ((mem), -1) +#endif + + +/* Subtract 1 from *MEM and return true iff it's now zero. */ +#ifndef atomic_decrement_and_test +# define atomic_decrement_and_test(mem) \ + (atomic_exchange_and_add ((mem), -1) == 1) +#endif + + +/* Decrement *MEM if it is > 0, and return the old value. */ +#ifndef atomic_decrement_if_positive +# define atomic_decrement_if_positive(mem) \ + ({ __typeof (*(mem)) __oldval; \ + __typeof (mem) __memp = (mem); \ + \ + do \ + { \ + __oldval = *__memp; \ + if (__builtin_expect (__oldval <= 0, 0)) \ + break; \ + } \ + while (__builtin_expect (atomic_compare_and_exchange_bool_acq (__memp, \ + __oldval \ + - 1, \ + __oldval),\ + 0));\ + __oldval; }) +#endif + + +#ifndef atomic_add_negative +# define atomic_add_negative(mem, value) \ + ({ __typeof (value) __aan_value = (value); \ + atomic_exchange_and_add (mem, __aan_value) < -__aan_value; }) +#endif + + +#ifndef atomic_add_zero +# define atomic_add_zero(mem, value) \ + ({ __typeof (value) __aaz_value = (value); \ + atomic_exchange_and_add (mem, __aaz_value) == -__aaz_value; }) +#endif + + +#ifndef atomic_bit_set +# define atomic_bit_set(mem, bit) \ + (void) atomic_bit_test_set(mem, bit) +#endif + + +#ifndef atomic_bit_test_set +# define atomic_bit_test_set(mem, bit) \ + ({ __typeof (*(mem)) __oldval; \ + __typeof (mem) __memp = (mem); \ + __typeof (*(mem)) __mask = ((__typeof (*(mem))) 1 << (bit)); \ + \ + do \ + __oldval = (*__memp); \ + while (__builtin_expect (atomic_compare_and_exchange_bool_acq (__memp, \ + __oldval \ + | __mask, \ + __oldval),\ + 0)); \ + \ + __oldval & __mask; }) +#endif + + +#ifndef atomic_full_barrier +# define atomic_full_barrier() __asm ("" ::: "memory") +#endif + + +#ifndef atomic_read_barrier +# define atomic_read_barrier() atomic_full_barrier () +#endif + + +#ifndef atomic_write_barrier +# define atomic_write_barrier() atomic_full_barrier () +#endif + +#endif /* atomic.h */ --- glibc-2.3.2/include/ctype.h 2002-09-02 14:48:03.000000000 -0400 +++ glibc-2.3.2/include/ctype.h 2003-08-21 08:37:02.000000000 -0400 @@ -25,31 +25,43 @@ CTYPE_EXTERN_INLINE const uint16_t ** __attribute__ ((const)) __ctype_b_loc (void) { - const uint16_t **tablep = - (const uint16_t **) __libc_tsd_address (CTYPE_B); - if (__builtin_expect (*tablep == NULL, 0)) - *tablep = (const uint16_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_CLASS) + 128; - return tablep; + union + { + void **ptr; + const uint16_t **tablep; + } u; + u.ptr = __libc_tsd_address (CTYPE_B); + if (__builtin_expect (*u.tablep == NULL, 0)) + *u.tablep = (const uint16_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_CLASS) + 128; + return u.tablep; } CTYPE_EXTERN_INLINE const int32_t ** __attribute__ ((const)) __ctype_toupper_loc (void) { - const int32_t **tablep = - (const int32_t **) __libc_tsd_address (CTYPE_TOUPPER); - if (__builtin_expect (*tablep == NULL, 0)) - *tablep = ((int32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TOUPPER) + 128); - return tablep; + union + { + void **ptr; + const int32_t **tablep; + } u; + u.ptr = __libc_tsd_address (CTYPE_TOUPPER); + if (__builtin_expect (*u.tablep == NULL, 0)) + *u.tablep = ((int32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TOUPPER) + 128); + return u.tablep; } CTYPE_EXTERN_INLINE const int32_t ** __attribute__ ((const)) __ctype_tolower_loc (void) { - const int32_t **tablep = - (const int32_t **) __libc_tsd_address (CTYPE_TOLOWER); - if (__builtin_expect (*tablep == NULL, 0)) - *tablep = ((int32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TOLOWER) + 128); - return tablep; + union + { + void **ptr; + const int32_t **tablep; + } u; + u.ptr = __libc_tsd_address (CTYPE_TOLOWER); + if (__builtin_expect (*u.tablep == NULL, 0)) + *u.tablep = ((int32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TOLOWER) + 128); + return u.tablep; } # endif /* Not NOT_IN_libc. */ --- glibc-2.3.2/include/dlfcn.h 2002-11-19 03:18:00.000000000 -0500 +++ glibc-2.3.2/include/dlfcn.h 2003-08-21 08:37:02.000000000 -0400 @@ -1,5 +1,6 @@ #ifndef _DLFCN_H #include +#include /* For ElfW. */ /* Internally used flag. */ #define __RTLD_DLOPEN 0x80000000 @@ -13,11 +14,17 @@ extern void *__libc_dlopen_mode (__const char *__name, int __mode); extern void *__libc_dlsym (void *__map, __const char *__name); extern int __libc_dlclose (void *__map); +libc_hidden_proto (__libc_dlopen_mode) +libc_hidden_proto (__libc_dlsym) +libc_hidden_proto (__libc_dlclose) /* Locate shared object containing the given address. */ -extern int _dl_addr (const void *address, Dl_info *info) +#ifdef ElfW +extern int _dl_addr (const void *address, Dl_info *info, + struct link_map **mapp, const ElfW(Sym) **symbolp) internal_function; libc_hidden_proto (_dl_addr) +#endif /* Open the shared object NAME, relocate it, and run its initializer if it hasn't already been run. MODE is as for `dlopen' (see ). If --- glibc-2.3.2/include/fcntl.h 2003-01-12 22:57:51.000000000 -0500 +++ glibc-2.3.2/include/fcntl.h 2003-09-19 22:37:01.000000000 -0400 @@ -9,6 +9,7 @@ libc_hidden_proto (__libc_open) extern int __libc_creat (const char *file, mode_t mode); extern int __libc_fcntl (int fd, int cmd, ...); +extern int __fcntl_nocancel (int fd, int cmd, ...) attribute_hidden; libc_hidden_proto (__libc_fcntl) extern int __open (__const char *__file, int __oflag, ...); libc_hidden_proto (__open) --- glibc-2.3.2/include/features.h 2002-11-04 04:34:54.000000000 -0500 +++ glibc-2.3.2/include/features.h 2003-05-24 14:06:21.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-1993,1995-2000,2001,2002 Free Software Foundation, Inc. +/* Copyright (C) 1991-1993,1995-2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -188,6 +188,10 @@ # define __USE_POSIX199506 1 #endif +#if (_POSIX_C_SOURCE - 0) >= 200112L +# define __USE_XOPEN2K 1 +#endif + #ifdef _XOPEN_SOURCE # define __USE_XOPEN 1 # if (_XOPEN_SOURCE - 0) >= 500 --- glibc-2.3.2/include/gmp.h 2000-12-05 12:28:08.000000000 -0500 +++ glibc-2.3.2/include/gmp.h 2003-03-15 15:02:08.000000000 -0500 @@ -1,3 +1,7 @@ +/* Include gmp-mparam.h first, such that definitions of _SHORT_LIMB + and _LONG_LONG_LIMB in it can take effect into gmp.h. */ +#include + #ifndef __GMP_H__ #include --- glibc-2.3.2/include/ifaddrs.h 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/include/ifaddrs.h 2003-08-21 08:37:02.000000000 -0400 @@ -0,0 +1,10 @@ +#ifndef _IFADDRS_H +#include +#include + +libc_hidden_proto (getifaddrs) +libc_hidden_proto (freeifaddrs) + +extern void __check_pf (bool *seen_ipv4, bool *seen_ipv6) attribute_hidden; + +#endif /* ifaddrs.h */ --- glibc-2.3.2/include/libc-symbols.h 2003-01-03 18:21:03.000000000 -0500 +++ glibc-2.3.2/include/libc-symbols.h 2003-08-21 08:37:02.000000000 -0400 @@ -244,10 +244,10 @@ # define link_warning(symbol, msg) \ __make_section_unallocated (".gnu.warning." #symbol) \ static const char __evoke_link_warning_##symbol[] \ - __attribute__ ((unused, section (".gnu.warning." #symbol __sec_comment))) \ + __attribute__ ((used, section (".gnu.warning." #symbol __sec_comment))) \ = msg; # define libc_freeres_ptr(decl) \ - __make_section_unallocated ("__libc_freeres_ptrs, \"aw\", @nobits") \ + __make_section_unallocated ("__libc_freeres_ptrs, \"aw\", %nobits") \ decl __attribute__ ((section ("__libc_freeres_ptrs" __sec_comment))) # define __libc_freeres_fn_section \ __attribute__ ((section ("__libc_freeres_fn"))) @@ -282,6 +282,16 @@ link_warning (name, \ "warning: " #name " is not implemented and will always fail") +/* Warning for linking functions calling dlopen into static binaries. */ +#ifdef SHARED +#define static_link_warning(name) +#else +#define static_link_warning(name) static_link_warning1(name) +#define static_link_warning1(name) \ + link_warning(name, "Using '" #name "' in statically linked applications \ +requires at runtime the shared libraries from the glibc version used \ +for linking") +#endif /* Declare SYMBOL to be TYPE (`function' or `object') and of SIZE bytes, when the assembler supports such declarations (such as in ELF). @@ -334,29 +344,36 @@ because it will need to be relocated at run time anyway. */ # define _elf_set_element(set, symbol) \ static const void *__elf_set_##set##_element_##symbol##__ \ - __attribute__ ((unused, section (#set))) = &(symbol) + __attribute__ ((used, section (#set))) = &(symbol) # else # define _elf_set_element(set, symbol) \ static const void *const __elf_set_##set##_element_##symbol##__ \ - __attribute__ ((unused, section (#set))) = &(symbol) + __attribute__ ((used, section (#set))) = &(symbol) # endif /* Define SET as a symbol set. This may be required (it is in a.out) to be able to use the set's contents. */ # define symbol_set_define(set) symbol_set_declare(set) -/* Declare SET for use in this module, if defined in another module. */ +/* Declare SET for use in this module, if defined in another module. + In a shared library, this is always local to that shared object. + For static linking, the set might be wholly absent and so we use + weak references. */ # define symbol_set_declare(set) \ - extern void *const __start_##set __attribute__ ((__weak__)); \ - extern void *const __stop_##set __attribute__ ((__weak__)); \ - weak_extern (__start_##set) weak_extern (__stop_##set) + extern char const __start_##set[] __symbol_set_attribute; \ + extern char const __stop_##set[] __symbol_set_attribute; +# ifdef SHARED +# define __symbol_set_attribute attribute_hidden +# else +# define __symbol_set_attribute __attribute__ ((weak)) +# endif /* Return a pointer (void *const *) to the first element of SET. */ -# define symbol_set_first_element(set) (&__start_##set) +# define symbol_set_first_element(set) ((void *const *) (&__start_##set)) /* Return true iff PTR (a void *const *) has been incremented past the last element in SET. */ -# define symbol_set_end_p(set, ptr) ((ptr) >= &__stop_##set) +# define symbol_set_end_p(set, ptr) ((ptr) >= (void *const *) &__stop_##set) # else /* Not ELF: a.out. */ @@ -434,7 +451,8 @@ strong_alias(real, name) #endif -#if defined HAVE_VISIBILITY_ATTRIBUTE && defined SHARED +#if defined HAVE_VISIBILITY_ATTRIBUTE \ + && (defined SHARED || defined LIBC_NONSHARED) # define attribute_hidden __attribute__ ((visibility ("hidden"))) #else # define attribute_hidden @@ -720,4 +738,16 @@ # define libm_hidden_data_ver(local, name) #endif +#ifdef HAVE_BUILTIN_REDIRECTION +# define libc_hidden_builtin_proto(name, attrs...) libc_hidden_proto (name, ##attrs) +# define libc_hidden_builtin_def(name) libc_hidden_def (name) +# define libc_hidden_builtin_weak(name) libc_hidden_weak (name) +# define libc_hidden_builtin_ver(local, name) libc_hidden_ver (local, name) +#else +# define libc_hidden_builtin_proto(name, attrs...) +# define libc_hidden_builtin_def(name) +# define libc_hidden_builtin_weak(name) +# define libc_hidden_builtin_ver(local, name) +#endif + #endif /* libc-symbols.h */ --- glibc-2.3.2/include/link.h 2002-12-02 17:36:09.000000000 -0500 +++ glibc-2.3.2/include/link.h 2003-08-21 08:37:02.000000000 -0400 @@ -1,6 +1,6 @@ /* Data structure for communication from the run-time dynamic linker for loaded ELF shared objects. - Copyright (C) 1995-1999,2000,01,02 Free Software Foundation, Inc. + Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -186,7 +186,9 @@ the l_libname list. */ unsigned int l_faked:1; /* Nonzero if this is a faked descriptor without associated file. */ - + unsigned int l_need_tls_init:1; /* Nonzero if GL(dl_init_static_tls) + should be called on this link map + when relocation finishes. */ /* Array with version names. */ unsigned int l_nversions; struct r_found_version *l_versions; @@ -268,6 +270,11 @@ size_t l_tls_blocksize; /* Alignment requirement of the TLS block. */ size_t l_tls_align; + /* Offset of first byte module alignment. */ + size_t l_tls_firstbyte_offset; +# ifndef NO_TLS_OFFSET +# define NO_TLS_OFFSET 0 +# endif /* For objects present at startup time: offset in the static TLS block. */ ptrdiff_t l_tls_offset; /* Index of the module in the dtv array. */ --- glibc-2.3.2/include/netdb.h 2002-12-31 14:14:52.000000000 -0500 +++ glibc-2.3.2/include/netdb.h 2003-04-24 20:05:57.000000000 -0400 @@ -181,13 +181,9 @@ libc_hidden_proto (ruserpass) -/* The following declarations and definitions have been removed from - the public header since we don't want people to use them. */ +/* The following definition has been removed from the public header + since we don't want people to use them. */ -#define AI_V4MAPPED 0x0008 /* IPv4-mapped addresses are acceptable. */ -#define AI_ALL 0x0010 /* Return both IPv4 and IPv6 addresses. */ -#define AI_ADDRCONFIG 0x0020 /* Use configuration of this host to choose - returned address type. */ #define AI_DEFAULT (AI_V4MAPPED | AI_ADDRCONFIG) #include --- glibc-2.3.2/include/netinet/in.h 2002-08-07 22:08:13.000000000 -0400 +++ glibc-2.3.2/include/netinet/in.h 2003-08-21 08:37:02.000000000 -0400 @@ -5,5 +5,6 @@ libc_hidden_proto (bindresvport) libc_hidden_proto (in6addr_loopback) libc_hidden_proto (in6addr_any) +libc_hidden_proto (inet6_option_alloc) #endif --- glibc-2.3.2/include/resolv.h 2003-02-21 21:38:02.000000000 -0500 +++ glibc-2.3.2/include/resolv.h 2003-08-21 08:37:02.000000000 -0400 @@ -17,9 +17,10 @@ # if USE___THREAD # undef _res # ifndef NOT_IN_libc -# define _res __libc_res +# define __resp __libc_resp # endif -extern __thread struct __res_state _res attribute_tls_model_ie; +# define _res (*__resp) +extern __thread struct __res_state *__resp attribute_tls_model_ie; # endif # else # ifndef __BIND_NOSTATIC --- glibc-2.3.2/include/sched.h 2002-08-15 01:39:03.000000000 -0400 +++ glibc-2.3.2/include/sched.h 2003-03-15 15:02:08.000000000 -0500 @@ -18,5 +18,5 @@ extern int __clone (int (*__fn) (void *__arg), void *__child_stack, int __flags, void *__arg, ...); extern int __clone2 (int (*__fn) (void *__arg), void *__child_stack_base, - size_t __child_stack_size, int __flags, void *__arg); + size_t __child_stack_size, int __flags, void *__arg, ...); #endif --- glibc-2.3.2/include/set-hooks.h 2001-07-07 15:21:03.000000000 -0400 +++ glibc-2.3.2/include/set-hooks.h 2003-08-21 08:37:02.000000000 -0400 @@ -1,5 +1,5 @@ /* Macros for using symbol sets for running lists of functions. - Copyright (C) 1994, 1995, 1997, 2000 Free Software Foundation, Inc. + Copyright (C) 1994, 1995, 1997, 2000, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -40,12 +40,12 @@ /* Run all the functions hooked on the set called NAME. Each function is called like this: `function ARGS'. */ -# define RUN_HOOK(NAME, ARGS) \ -do { \ - void *const *__unbounded ptr; \ - for (ptr = symbol_set_first_element (NAME); \ - ! symbol_set_end_p (NAME, ptr); ++ptr) \ - (*(__##NAME##_hook_function_t *) *ptr) ARGS; \ +# define RUN_HOOK(NAME, ARGS) \ +do { \ + void *const *__unbounded ptr; \ + for (ptr = (void *const *) symbol_set_first_element (NAME); \ + ! symbol_set_end_p (NAME, ptr); ++ptr) \ + (*(__##NAME##_hook_function_t *) *ptr) ARGS; \ } while (0) /* Define a hook variable with NAME and PROTO, and a function called RUNNER --- glibc-2.3.2/include/setjmp.h 2002-12-31 04:40:20.000000000 -0500 +++ glibc-2.3.2/include/setjmp.h 2003-09-19 22:37:01.000000000 -0400 @@ -22,5 +22,6 @@ libc_hidden_proto (__libc_longjmp) libc_hidden_proto (_setjmp) +libc_hidden_proto (__sigsetjmp) #endif --- glibc-2.3.2/include/signal.h 2002-12-31 14:38:14.000000000 -0500 +++ glibc-2.3.2/include/signal.h 2003-05-12 12:13:04.000000000 -0400 @@ -6,6 +6,8 @@ libc_hidden_proto (sigemptyset) libc_hidden_proto (sigfillset) +libc_hidden_proto (sigaddset) +libc_hidden_proto (sigdelset) libc_hidden_proto (sigismember) libc_hidden_proto (__sigpause) libc_hidden_proto (raise) --- glibc-2.3.2/include/stdio.h 2002-08-10 14:08:27.000000000 -0400 +++ glibc-2.3.2/include/stdio.h 2003-09-19 22:37:01.000000000 -0400 @@ -108,6 +108,18 @@ libc_hidden_proto (fgets_unlocked) libc_hidden_proto (fputs_unlocked) libc_hidden_proto (open_memstream) +libc_hidden_proto (__libc_fatal) + +# if !defined NOT_IN_libc && defined SHARED && defined DO_VERSIONING \ + && defined HAVE_VISIBILITY_ATTRIBUTE && !defined HAVE_BROKEN_ALIAS_ATTRIBUTE\ + && !defined NO_HIDDEN +/* Special gcc builtins. */ +extern size_t __builtin_fwrite (const void *, size_t, size_t, void *) + __asm ("__GI_fwrite"); +extern size_t __builtin_fwrite_unlocked (const void *, size_t, size_t, void *) + __asm ("__GI_fwrite_unlocked"); + +# endif # endif --- glibc-2.3.2/include/string.h 2002-12-31 17:38:31.000000000 -0500 +++ glibc-2.3.2/include/string.h 2003-05-12 12:13:04.000000000 -0400 @@ -79,6 +79,23 @@ libc_hidden_proto (basename) libc_hidden_proto (strcoll) +libc_hidden_builtin_proto (memchr) +libc_hidden_builtin_proto (memcpy) +libc_hidden_builtin_proto (memmove) +libc_hidden_builtin_proto (memset) +libc_hidden_builtin_proto (strcat) +libc_hidden_builtin_proto (strchr) +libc_hidden_builtin_proto (strcmp) +libc_hidden_builtin_proto (strcpy) +libc_hidden_builtin_proto (strcspn) +libc_hidden_builtin_proto (strlen) +libc_hidden_builtin_proto (strncmp) +libc_hidden_builtin_proto (strncpy) +libc_hidden_builtin_proto (strpbrk) +libc_hidden_builtin_proto (strrchr) +libc_hidden_builtin_proto (strspn) +libc_hidden_builtin_proto (strstr) + # ifndef _ISOMAC # ifndef index # define index(s, c) (strchr ((s), (c))) --- glibc-2.3.2/include/sys/resource.h 2002-08-04 00:32:39.000000000 -0400 +++ glibc-2.3.2/include/sys/resource.h 2003-08-21 08:37:02.000000000 -0400 @@ -7,7 +7,8 @@ /* Now define the internal interfaces. */ extern int __getrlimit (enum __rlimit_resource __resource, struct rlimit *__rlimits); -extern int __getrusage (enum __rusage_who __who, struct rusage *__usage); +extern int __getrusage (enum __rusage_who __who, struct rusage *__usage) + attribute_hidden; extern int __setrlimit (enum __rlimit_resource __resource, const struct rlimit *__rlimits); --- glibc-2.3.2/include/sys/time.h 2002-04-14 05:25:54.000000000 -0400 +++ glibc-2.3.2/include/sys/time.h 2003-08-21 08:37:02.000000000 -0400 @@ -5,17 +5,21 @@ extern int __gettimeofday (struct timeval *__tv, struct timezone *__tz); extern int __gettimeofday_internal (struct timeval *__tv, - struct timezone *__tz) attribute_hidden; + struct timezone *__tz) + attribute_hidden; extern int __settimeofday (__const struct timeval *__tv, - __const struct timezone *__tz); + __const struct timezone *__tz) + attribute_hidden; extern int __adjtime (__const struct timeval *__delta, struct timeval *__olddelta); extern int __getitimer (enum __itimer_which __which, struct itimerval *__value); extern int __setitimer (enum __itimer_which __which, __const struct itimerval *__restrict __new, - struct itimerval *__restrict __old); -extern int __utimes (__const char *__file, const struct timeval __tvp[2]); + struct itimerval *__restrict __old) + attribute_hidden; +extern int __utimes (__const char *__file, const struct timeval __tvp[2]) + attribute_hidden; #ifndef NOT_IN_libc # define __gettimeofday(tv, tz) INTUSE(__gettimeofday) (tv, tz) --- glibc-2.3.2/include/sys/wait.h 2002-12-20 02:47:59.000000000 -0500 +++ glibc-2.3.2/include/sys/wait.h 2003-08-21 08:37:02.000000000 -0400 @@ -13,5 +13,6 @@ extern __pid_t __wait3 (__WAIT_STATUS __stat_loc, int __options, struct rusage * __usage); extern __pid_t __wait4 (__pid_t __pid, __WAIT_STATUS __stat_loc, - int __options, struct rusage *__usage); + int __options, struct rusage *__usage) + attribute_hidden; #endif --- glibc-2.3.2/include/time.h 2003-02-01 15:47:59.000000000 -0500 +++ glibc-2.3.2/include/time.h 2003-08-21 08:37:02.000000000 -0400 @@ -82,5 +82,12 @@ /* Determine CLK_TCK value. */ extern int __getclktck (void); + + +/* Use in the clock_* functions. Size of the field representing the + actual clock ID. */ +#ifndef _ISOMAC +# define CLOCK_IDFIELD_SIZE 3 +#endif #endif #endif --- glibc-2.3.2/include/tls.h 2002-12-19 15:12:03.000000000 -0500 +++ glibc-2.3.2/include/tls.h 2003-04-24 20:05:57.000000000 -0400 @@ -1,5 +1,8 @@ /* This file defines USE___THREAD to 1 or 0 to cut down on the #if mess. */ +#ifndef _include_tls_h +#define _include_tls_h 1 + #include_next #if USE_TLS && HAVE___THREAD \ @@ -12,3 +15,5 @@ # define USE___THREAD 0 #endif + +#endif --- glibc-2.3.2/include/unistd.h 2002-12-31 14:14:22.000000000 -0500 +++ glibc-2.3.2/include/unistd.h 2003-05-12 12:13:04.000000000 -0400 @@ -140,6 +140,7 @@ and some functions contained in the C library ignore various environment variables that normally affect them. */ extern int __libc_enable_secure; +extern int __libc_enable_secure_decided; #ifdef IS_IN_rtld /* XXX The #ifdef should go. */ extern int __libc_enable_secure_internal attribute_hidden; --- glibc-2.3.2/inet/Makefile 2002-12-28 05:06:33.000000000 -0500 +++ glibc-2.3.2/inet/Makefile 2003-09-19 22:37:01.000000000 -0400 @@ -1,4 +1,4 @@ -# Copyright (C) 1991-1999,2000,01,02 Free Software Foundation, Inc. +# Copyright (C) 1991-2002, 2003 Free Software Foundation, Inc. # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or @@ -22,7 +22,7 @@ subdir := inet headers := netinet/ether.h netinet/in.h netinet/in_systm.h \ - netinet/if_ether.h \ + netinet/if_ether.h netinet/igmp.h \ netinet/tcp.h netinet/ip.h $(wildcard arpa/*.h protocols/*.h) \ aliases.h ifaddrs.h netinet/ip6.h netinet/icmp6.h bits/in.h @@ -45,7 +45,9 @@ rcmd rexec ruserpass \ getnetgrent_r getnetgrent \ getaliasent_r getaliasent getaliasname getaliasname_r \ - in6_addr getnameinfo if_index ifaddrs + in6_addr getnameinfo if_index ifaddrs inet6_option + +aux := check_pf ifreq tests := htontest test_ifindex tst-ntoa tst-ether_aton tst-network \ tst-gethnm test-ifaddrs @@ -54,9 +56,33 @@ ifeq ($(have-thread-library),yes) -CFLAGS-gethstbyad_r.c = -DUSE_NSCD=1 -CFLAGS-gethstbynm_r.c = -DUSE_NSCD=1 -CFLAGS-gethstbynm2_r.c = -DUSE_NSCD=1 +CFLAGS-gethstbyad_r.c = -DUSE_NSCD=1 -fexceptions +CFLAGS-gethstbyad.c = -fexceptions +CFLAGS-gethstbynm_r.c = -DUSE_NSCD=1 -fexceptions +CFLAGS-gethstbynm.c = -fexceptions +CFLAGS-gethstbynm2_r.c = -DUSE_NSCD=1 -fexceptions +CFLAGS-gethstbynm2.c = -fexceptions +CFLAGS-gethstent_r.c = -fexceptions +CFLAGS-gethstent.c = -fexceptions +CFLAGS-rcmd.c = -fexceptions +CFLAGS-getnetbynm_r.c = -fexceptions +CFLAGS-getnetbynm.c = -fexceptions +CFLAGS-getnetbyad_r.c = -fexceptions +CFLAGS-getnetbyad.c = -fexceptions +CFLAGS-getnetent_r.c = -fexceptions +CFLAGS-getnetent.c = -fexceptions +CFLAGS-getaliasent_r.c = -fexceptions +CFLAGS-getaliasent.c = -fexceptions +CFLAGS-getrpcent_r.c = -fexceptions +CFLAGS-getrpcent.c = -fexceptions +CFLAGS-getservent_r.c = -fexceptions +CFLAGS-getservent.c = -fexceptions +CFLAGS-getprtent_r.c = -fexceptions +CFLAGS-getprtent.c = -fexceptions +CFLAGS-either_ntoh.c = -fexceptions +CFLAGS-either_hton.c = -fexceptions +CFLAGS-getnetgrent.c = -fexceptions +CFLAGS-getnetgrent_r.c = -fexceptions endif --- glibc-2.3.2/inet/Versions 2002-07-25 04:08:18.000000000 -0400 +++ glibc-2.3.2/inet/Versions 2003-08-21 08:37:02.000000000 -0400 @@ -70,6 +70,10 @@ # g* getifaddrs; } + GLIBC_2.3.3 { + inet6_option_space; inet6_option_init; inet6_option_append; + inet6_option_alloc; inet6_option_next; inet6_option_find; + } GLIBC_PRIVATE { # functions used in other libraries __internal_endnetgrent; __internal_getnetgrent_r; --- glibc-2.3.2/inet/inet6_option.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/inet/inet6_option.c 2003-06-14 04:43:24.000000000 -0400 @@ -0,0 +1,343 @@ +/* Copyright (C) 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 2003. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include +#include +#include +#include +#include + + +static void +internal_function +add_pad (struct cmsghdr *cmsg, int len) +{ + unsigned char *p = CMSG_DATA (cmsg) + cmsg->cmsg_len - CMSG_LEN (0); + + if (len == 1) + /* Special handling for 1, a one-byte solution. */ + *p++ = IP6OPT_PAD1; + else if (len != 0) + { + /* Multibyte padding. */ + *p++ = IP6OPT_PADN; + *p++ = len - 2; /* Discount the two header bytes. */ + /* The rest is filled with zero. */ + memset (p, '\0', len - 2); + p += len - 2; + } + + /* Account for the bytes. */ + cmsg->cmsg_len += len; +} + + +static int +get_opt_end (const uint8_t **result, const uint8_t *startp, + const uint8_t *endp) +{ + if (startp >= endp) + /* Out of bounds. */ + return -1; + + if (*startp == IP6OPT_PAD1) + { + /* Just this one byte. */ + *result = startp + 1; + return 0; + } + + /* Now we know there must be at least two bytes. */ + if (startp + 2 > endp + /* Now we can get the length byte. */ + || startp + startp[1] + 2 > endp) + return -1; + + *result = startp + startp[1] + 2; + + return 0; +} + + +/* RFC 2292, 6.3.1 + + This function returns the number of bytes required to hold an option + when it is stored as ancillary data, including the cmsghdr structure + at the beginning, and any padding at the end (to make its size a + multiple of 8 bytes). The argument is the size of the structure + defining the option, which must include any pad bytes at the + beginning (the value y in the alignment term "xn + y"), the type + byte, the length byte, and the option data. */ +int +inet6_option_space (nbytes) + int nbytes; +{ + /* Add room for the extension header. */ + nbytes += sizeof (struct ip6_ext); + + return CMSG_SPACE (roundup (nbytes, 8)); +} + + +/* RFC 2292, 6.3.2 + + This function is called once per ancillary data object that will + contain either Hop-by-Hop or Destination options. It returns 0 on + success or -1 on an error. */ +int +inet6_option_init (bp, cmsgp, type) + void *bp; + struct cmsghdr **cmsgp; + int type; +{ + /* Only Hop-by-Hop or Destination options allowed. */ + if (type != IPV6_HOPOPTS && type != IPV6_DSTOPTS) + return -1; + + /* BP is a pointer to the previously allocated space. */ + struct cmsghdr *newp = (struct cmsghdr *) bp; + + /* Initialize the message header. + + Length: No data yet, only the cmsghdr struct. */ + newp->cmsg_len = CMSG_LEN (0); + /* Originating protocol: obviously IPv6. */ + newp->cmsg_level = IPPROTO_IPV6; + /* Message type. */ + newp->cmsg_type = type; + + /* Pass up the result. */ + *cmsgp = newp; + + return 0; +} + + +/* RFC 2292, 6.3.3 + + This function appends a Hop-by-Hop option or a Destination option + into an ancillary data object that has been initialized by + inet6_option_init(). This function returns 0 if it succeeds or -1 on + an error. */ +int +inet6_option_append (cmsg, typep, multx, plusy) + struct cmsghdr *cmsg; + const uint8_t *typep; + int multx; + int plusy; +{ + /* typep is a pointer to the 8-bit option type. It is assumed that this + field is immediately followed by the 8-bit option data length field, + which is then followed immediately by the option data. + + The option types IP6OPT_PAD1 and IP6OPT_PADN also must be handled. */ + int len = typep[0] == IP6OPT_PAD1 ? 1 : typep[1] + 2; + + /* Get the pointer to the space in the message. */ + uint8_t *ptr = inet6_option_alloc (cmsg, len, multx, plusy); + if (ptr == NULL) + /* Some problem with the parameters. */ + return -1; + + /* Copy the content. */ + memcpy (ptr, typep, len); + + return 0; +} + + +/* RFC 2292, 6.3.4 + + This function appends a Hop-by-Hop option or a Destination option + into an ancillary data object that has been initialized by + inet6_option_init(). This function returns a pointer to the 8-bit + option type field that starts the option on success, or NULL on an + error. */ +uint8_t * +inet6_option_alloc (cmsg, datalen, multx, plusy) + struct cmsghdr *cmsg; + int datalen; + int multx; + int plusy; +{ + /* The RFC limits the value of the alignment values. */ + if ((multx != 1 && multx != 2 && multx != 4 && multx != 8) + || ! (plusy >= 0 && plusy <= 7)) + return NULL; + + /* Current data size. */ + int dsize = cmsg->cmsg_len - CMSG_LEN (0); + + /* The first two bytes of the option are for the extended header. */ + if (__builtin_expect (dsize == 0, 0)) + { + cmsg->cmsg_len += sizeof (struct ip6_ext); + dsize = sizeof (struct ip6_ext); + } + + /* First add padding. */ + add_pad (cmsg, ((multx - (dsize & (multx - 1))) & (multx - 1)) + plusy); + + /* Return the pointer to the start of the option space. */ + uint8_t *result = CMSG_DATA (cmsg) + cmsg->cmsg_len - CMSG_LEN (0); + cmsg->cmsg_len += datalen; + + /* The extended option header length is measured in 8-byte groups. + To represent the current length we might have to add padding. */ + dsize = cmsg->cmsg_len - CMSG_LEN (0); + add_pad (cmsg, (8 - (dsize & (8 - 1))) & (8 - 1)); + + /* Record the new length of the option. */ + assert (((cmsg->cmsg_len - CMSG_LEN (0)) % 8) == 0); + int len8b = (cmsg->cmsg_len - CMSG_LEN (0)) / 8 - 1; + if (len8b >= 256) + /* Too long. */ + return NULL; + + ((struct ip6_ext *) CMSG_DATA (cmsg))->ip6e_len = len8b; + + return result; +} +libc_hidden_def (inet6_option_alloc) + + +/* RFC 2292, 6.3.5 + + This function processes the next Hop-by-Hop option or Destination + option in an ancillary data object. If another option remains to be + processed, the return value of the function is 0 and *tptrp points to + the 8-bit option type field (which is followed by the 8-bit option + data length, followed by the option data). If no more options remain + to be processed, the return value is -1 and *tptrp is NULL. If an + error occurs, the return value is -1 and *tptrp is not NULL. */ +int +inet6_option_next (cmsg, tptrp) + const struct cmsghdr *cmsg; + uint8_t **tptrp; +{ + /* Make sure it is an option of the right type. */ + if (cmsg->cmsg_level != IPPROTO_IPV6 + || (cmsg->cmsg_type != IPV6_HOPOPTS && cmsg->cmsg_type != IPV6_DSTOPTS)) + return -1; + + /* Pointer to the extension header. We only compute the address, we + don't access anything yet. */ + const struct ip6_ext *ip6e = (const struct ip6_ext *) CMSG_DATA (cmsg); + + /* Make sure the message is long enough. */ + if (cmsg->cmsg_len < CMSG_LEN (sizeof (struct ip6_ext)) + /* Now we can access the extension header. */ + || cmsg->cmsg_len < CMSG_LEN ((ip6e->ip6e_len + 1) * 8)) + /* Too small. */ + return -1; + + /* Determine the address of the byte past the message. */ + const uint8_t *endp = CMSG_DATA (cmsg) + (ip6e->ip6e_len + 1) * 8; + + const uint8_t *result; + if (tptrp == NULL) + /* This is the first call, return the first option if there is one. */ + result = (const uint8_t *) (ip6e + 1); + else + { + /* Make sure *TPTRP points to a beginning of a new option in + the message. The upper limit is checked in get_opt_end. */ + if (*tptrp < (const uint8_t *) (ip6e + 1)) + return -1; + + /* Get the beginning of the next option. */ + if (get_opt_end (&result, *tptrp, endp) != 0) + return -1; + } + + /* We know where the next option starts. */ + *tptrp = (uint8_t *) result; + + /* Check the option is fully represented in the message. */ + return get_opt_end (&result, result, endp); +} + + +/* RFC 2292, 6.3.6 + + This function is similar to the previously described + inet6_option_next() function, except this function lets the caller + specify the option type to be searched for, instead of always + returning the next option in the ancillary data object. cmsg is a + pointer to cmsghdr structure of which cmsg_level equals IPPROTO_IPV6 + and cmsg_type equals either IPV6_HOPOPTS or IPV6_DSTOPTS. */ +int +inet6_option_find (cmsg, tptrp, type) + const struct cmsghdr *cmsg; + uint8_t **tptrp; + int type; +{ + /* Make sure it is an option of the right type. */ + if (cmsg->cmsg_level != IPPROTO_IPV6 + || (cmsg->cmsg_type != IPV6_HOPOPTS && cmsg->cmsg_type != IPV6_DSTOPTS)) + return -1; + + /* Pointer to the extension header. We only compute the address, we + don't access anything yet. */ + const struct ip6_ext *ip6e = (const struct ip6_ext *) CMSG_DATA (cmsg); + + /* Make sure the message is long enough. */ + if (cmsg->cmsg_len < CMSG_LEN (sizeof (struct ip6_ext)) + /* Now we can access the extension header. */ + || cmsg->cmsg_len < CMSG_LEN ((ip6e->ip6e_len + 1) * 8)) + /* Too small. */ + return -1; + + /* Determine the address of the byte past the message. */ + const uint8_t *endp = CMSG_DATA (cmsg) + (ip6e->ip6e_len + 1) * 8; + + const uint8_t *next; + if (tptrp == NULL) + /* This is the first call, return the first option if there is one. */ + next = (const uint8_t *) (ip6e + 1); + else + { + /* Make sure *TPTRP points to a beginning of a new option in + the message. The upper limit is checked in get_opt_end. */ + if (*tptrp < (const uint8_t *) (ip6e + 1)) + return -1; + + /* Get the beginning of the next option. */ + if (get_opt_end (&next, *tptrp, endp) != 0) + return -1; + } + + /* Now search for the appropriate typed entry. */ + const uint8_t *result; + do + { + result = next; + + /* Get the end of this entry. */ + if (get_opt_end (&next, result, endp) != 0) + return -1; + } + while (*result != type); + + /* We know where the next option starts. */ + *tptrp = (uint8_t *) result; + + /* Success. */ + return 0; +} --- glibc-2.3.2/inet/inet_mkadr.c 2002-11-24 21:23:24.000000000 -0500 +++ glibc-2.3.2/inet/inet_mkadr.c 2003-09-19 22:37:01.000000000 -0400 @@ -43,17 +43,17 @@ inet_makeaddr(net, host) in_addr_t net, host; { - u_int32_t addr; + struct in_addr in; if (net < 128) - addr = (net << IN_CLASSA_NSHIFT) | (host & IN_CLASSA_HOST); + in.s_addr = (net << IN_CLASSA_NSHIFT) | (host & IN_CLASSA_HOST); else if (net < 65536) - addr = (net << IN_CLASSB_NSHIFT) | (host & IN_CLASSB_HOST); + in.s_addr = (net << IN_CLASSB_NSHIFT) | (host & IN_CLASSB_HOST); else if (net < 16777216L) - addr = (net << IN_CLASSC_NSHIFT) | (host & IN_CLASSC_HOST); + in.s_addr = (net << IN_CLASSC_NSHIFT) | (host & IN_CLASSC_HOST); else - addr = net | host; - addr = htonl(addr); - return (*(struct in_addr *)&addr); + in.s_addr = net | host; + in.s_addr = htonl(in.s_addr); + return in; } libc_hidden_def (inet_makeaddr) --- glibc-2.3.2/inet/netinet/igmp.h 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/inet/netinet/igmp.h 2003-05-24 14:06:21.000000000 -0400 @@ -0,0 +1,126 @@ +/* Copyright (C) 1997, 1999, 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#ifndef _NETINET_IGMP_H +#define _NETINET_IGMP_H 1 + +#include +#include + +#ifdef __USE_BSD + +#include + +__BEGIN_DECLS + +/* + * Copyright (c) 1988 Stephen Deering. + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Stephen Deering of Stanford University. + * + * 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. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)igmp.h 8.1 (Berkeley) 6/10/93 + * $FreeBSD$ + */ + +struct igmp { + u_int8_t igmp_type; /* IGMP type */ + u_int8_t igmp_code; /* routing code */ + u_int16_t igmp_cksum; /* checksum */ + struct in_addr igmp_group; /* group address */ +}; + +#define IGMP_MINLEN 8 + +/* + * Message types, including version number. + */ +#define IGMP_MEMBERSHIP_QUERY 0x11 /* membership query */ +#define IGMP_V1_MEMBERSHIP_REPORT 0x12 /* Ver. 1 membership report */ +#define IGMP_V2_MEMBERSHIP_REPORT 0x16 /* Ver. 2 membership report */ +#define IGMP_V2_LEAVE_GROUP 0x17 /* Leave-group message */ + +#define IGMP_DVMRP 0x13 /* DVMRP routing message */ +#define IGMP_PIM 0x14 /* PIM routing message */ +#define IGMP_TRACE 0x15 + +#define IGMP_MTRACE_RESP 0x1e /* traceroute resp.(to sender)*/ +#define IGMP_MTRACE 0x1f /* mcast traceroute messages */ + +#define IGMP_MAX_HOST_REPORT_DELAY 10 /* max delay for response to */ + /* query (in seconds) according */ + /* to RFC1112 */ +#define IGMP_TIMER_SCALE 10 /* denotes that the igmp code field */ + /* specifies time in 10th of seconds*/ + +/* + * States for the IGMP v2 state table. + */ +#define IGMP_DELAYING_MEMBER 1 +#define IGMP_IDLE_MEMBER 2 +#define IGMP_LAZY_MEMBER 3 +#define IGMP_SLEEPING_MEMBER 4 +#define IGMP_AWAKENING_MEMBER 5 + +/* + * States for IGMP router version cache. + */ +#define IGMP_v1_ROUTER 1 +#define IGMP_v2_ROUTER 2 + +/* + * The following four defininitions are for backwards compatibility. + * They should be removed as soon as all applications are updated to + * use the new constant names. + */ +#define IGMP_HOST_MEMBERSHIP_QUERY IGMP_MEMBERSHIP_QUERY +#define IGMP_HOST_MEMBERSHIP_REPORT IGMP_V1_MEMBERSHIP_REPORT +#define IGMP_HOST_NEW_MEMBERSHIP_REPORT IGMP_V2_MEMBERSHIP_REPORT +#define IGMP_HOST_LEAVE_MESSAGE IGMP_V2_LEAVE_GROUP + +__END_DECLS + +#endif + +#endif /* netinet/igmp.h */ --- glibc-2.3.2/inet/netinet/in.h 2001-07-07 15:21:03.000000000 -0400 +++ glibc-2.3.2/inet/netinet/in.h 2003-08-21 08:37:02.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-1999, 2000, 2001 Free Software Foundation, Inc. +/* Copyright (C) 1991-1999, 2000, 2001, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -21,6 +21,7 @@ #include #include +#include #include @@ -79,6 +80,8 @@ #define IPPROTO_PIM IPPROTO_PIM IPPROTO_COMP = 108, /* Compression Header Protocol. */ #define IPPROTO_COMP IPPROTO_COMP + IPPROTO_SCTP = 132, /* Stream Control Transmission Protocol. */ +#define IPPROTO_SCTP IPPROTO_SCTP IPPROTO_RAW = 255, /* Raw IP packets. */ #define IPPROTO_RAW IPPROTO_RAW IPPROTO_MAX @@ -364,6 +367,23 @@ unsigned int ipi6_ifindex; /* send/recv interface index */ }; + +#ifdef __USE_GNU +/* Hop-by-Hop and Destination Options Processing. */ +extern int inet6_option_space (int __nbytes); +extern int inet6_option_init (void *__bp, struct cmsghdr **__cmsgp, + int __type); +extern int inet6_option_append (struct cmsghdr *__cmsg, + __const uint8_t *__typep, int __multx, + int __plusy); +extern uint8_t *inet6_option_alloc (struct cmsghdr *__cmsg, int __datalen, + int __multx, int __plusy); +extern int inet6_option_next (__const struct cmsghdr *__cmsg, + uint8_t **__tptrp); +extern int inet6_option_find (__const struct cmsghdr *__cmsg, + uint8_t **__tptrp, int __type); +#endif /* use GNU */ + __END_DECLS #endif /* netinet/in.h */ --- glibc-2.3.2/inet/netinet/ip6.h 2001-07-07 15:21:03.000000000 -0400 +++ glibc-2.3.2/inet/netinet/ip6.h 2003-08-21 08:37:02.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-1997, 2001 Free Software Foundation, Inc. +/* Copyright (C) 1991-1997, 2001, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -47,51 +47,58 @@ #define ip6_hlim ip6_ctlun.ip6_un1.ip6_un1_hlim #define ip6_hops ip6_ctlun.ip6_un1.ip6_un1_hlim +/* Generic extension header. */ +struct ip6_ext + { + uint8_t ip6e_nxt; /* next header. */ + uint8_t ip6e_len; /* length in units of 8 octets. */ + }; + /* Hop-by-Hop options header. */ struct ip6_hbh { - uint8_t ip6h_nxt; /* next hesder. */ - uint8_t ip6h_len; /* length in units of 8 octets. */ + uint8_t ip6h_nxt; /* next header. */ + uint8_t ip6h_len; /* length in units of 8 octets. */ /* followed by options */ }; /* Destination options header */ struct ip6_dest { - uint8_t ip6d_nxt; /* next header */ - uint8_t ip6d_len; /* length in units of 8 octets */ + uint8_t ip6d_nxt; /* next header */ + uint8_t ip6d_len; /* length in units of 8 octets */ /* followed by options */ }; /* Routing header */ struct ip6_rthdr { - uint8_t ip6r_nxt; /* next header */ - uint8_t ip6r_len; /* length in units of 8 octets */ - uint8_t ip6r_type; /* routing type */ - uint8_t ip6r_segleft; /* segments left */ + uint8_t ip6r_nxt; /* next header */ + uint8_t ip6r_len; /* length in units of 8 octets */ + uint8_t ip6r_type; /* routing type */ + uint8_t ip6r_segleft; /* segments left */ /* followed by routing type specific data */ }; /* Type 0 Routing header */ struct ip6_rthdr0 { - uint8_t ip6r0_nxt; /* next header */ - uint8_t ip6r0_len; /* length in units of 8 octets */ - uint8_t ip6r0_type; /* always zero */ - uint8_t ip6r0_segleft; /* segments left */ - uint8_t ip6r0_reserved; /* reserved field */ - uint8_t ip6r0_slmap[3]; /* strict/loose bit map */ + uint8_t ip6r0_nxt; /* next header */ + uint8_t ip6r0_len; /* length in units of 8 octets */ + uint8_t ip6r0_type; /* always zero */ + uint8_t ip6r0_segleft; /* segments left */ + uint8_t ip6r0_reserved; /* reserved field */ + uint8_t ip6r0_slmap[3]; /* strict/loose bit map */ struct in6_addr ip6r0_addr[1]; /* up to 23 addresses */ }; /* Fragment header */ struct ip6_frag { - uint8_t ip6f_nxt; /* next header */ - uint8_t ip6f_reserved; /* reserved field */ - uint16_t ip6f_offlg; /* offset, reserved, and flag */ - uint32_t ip6f_ident; /* identification */ + uint8_t ip6f_nxt; /* next header */ + uint8_t ip6f_reserved; /* reserved field */ + uint16_t ip6f_offlg; /* offset, reserved, and flag */ + uint32_t ip6f_ident; /* identification */ }; #if BYTE_ORDER == BIG_ENDIAN @@ -104,4 +111,8 @@ #define IP6F_MORE_FRAG 0x0100 /* more-fragments flag */ #endif +/* Special option types for padding. */ +#define IP6OPT_PAD1 0 +#define IP6OPT_PADN 1 + #endif /* netinet/ip6.h */ --- glibc-2.3.2/inet/rcmd.c 2003-02-20 20:50:13.000000000 -0500 +++ glibc-2.3.2/inet/rcmd.c 2003-09-19 22:37:01.000000000 -0400 @@ -551,7 +551,7 @@ cp = _("not regular file"); else { - res = fopen (file, "r"); + res = fopen (file, "rc"); if (!res) cp = _("cannot open"); else if (__fxstat64 (_STAT_VER, fileno (res), &st) < 0) --- glibc-2.3.2/inet/ruserpass.c 2002-08-07 22:08:14.000000000 -0400 +++ glibc-2.3.2/inet/ruserpass.c 2003-09-19 22:37:01.000000000 -0400 @@ -114,7 +114,7 @@ buf = alloca (strlen (hdir) + 8); __stpcpy (__stpcpy (buf, hdir), "/.netrc"); - cfile = fopen(buf, "r"); + cfile = fopen(buf, "rc"); if (cfile == NULL) { if (errno != ENOENT) warn("%s", buf); --- glibc-2.3.2/inet/test-ifaddrs.c 2002-12-02 17:36:09.000000000 -0500 +++ glibc-2.3.2/inet/test-ifaddrs.c 2003-04-12 11:39:42.000000000 -0400 @@ -69,6 +69,10 @@ #endif case AF_UNSPEC: return "---"; + + case AF_PACKET: + return ""; + default: ++failures; printf ("sa_family=%d %08x\n", sa->sa_family, --- glibc-2.3.2/intl/Makefile 2002-12-11 19:55:10.000000000 -0500 +++ glibc-2.3.2/intl/Makefile 2003-08-21 08:37:02.000000000 -0400 @@ -1,4 +1,4 @@ -# Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc. +# Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc. # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or @@ -22,8 +22,8 @@ headers = libintl.h routines = bindtextdom dcgettext dgettext gettext \ dcigettext dcngettext dngettext ngettext \ - finddomain loadmsgcat localealias textdomain \ - l10nflist explodename plural plural-exp + finddomain loadmsgcat localealias textdomain +aux = l10nflist explodename plural plural-exp hash-string distribute = gmo.h gettextP.h hash-string.h loadinfo.h locale.alias \ plural.y plural-exp.h po2test.sed tst-gettext.sh tst-translit.sh \ translit.po tst-gettext2.sh tstlang1.po tstlang2.po tstcodeset.po\ @@ -77,7 +77,7 @@ $(objpfx)msgs.h: po2test.sed ../po/de.po $(make-target-directory) - sed -f $^ > $@ + LC_ALL=C sed -f $^ > $@ CFLAGS-tst-gettext.c = -DTESTSTRS_H=\"$(objpfx)msgs.h\" CFLAGS-tst-gettext2.c = -DOBJPFX=\"$(objpfx)\" --- glibc-2.3.2/intl/dcigettext.c 2002-12-11 19:55:10.000000000 -0500 +++ glibc-2.3.2/intl/dcigettext.c 2003-08-21 08:37:02.000000000 -0400 @@ -1,5 +1,5 @@ /* Implementation of the internal dcigettext function. - Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -695,7 +695,7 @@ { /* Use the hashing table. */ nls_uint32 len = strlen (msgid); - nls_uint32 hash_val = hash_string (msgid); + nls_uint32 hash_val = __hash_string (msgid); nls_uint32 idx = hash_val % domain->hash_size; nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2)); --- glibc-2.3.2/intl/hash-string.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/intl/hash-string.c 2003-06-11 17:46:03.000000000 -0400 @@ -0,0 +1,47 @@ +/* Implements a string hashing function. + Copyright (C) 1995, 1997, 1998, 2000, 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include "hash-string.h" + + +/* Defines the so called `hashpjw' function by P.J. Weinberger + [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools, + 1986, 1987 Bell Telephone Laboratories, Inc.] */ +unsigned long int +__hash_string (str_param) + const char *str_param; +{ + unsigned long int hval, g; + const char *str = str_param; + + /* Compute the hash value for the given string. */ + hval = 0; + while (*str != '\0') + { + hval <<= 4; + hval += (unsigned long int) *str++; + g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4)); + if (g != 0) + { + hval ^= g >> (HASHWORDBITS - 8); + hval ^= g; + } + } + return hval; +} --- glibc-2.3.2/intl/hash-string.h 2002-12-11 19:55:10.000000000 -0500 +++ glibc-2.3.2/intl/hash-string.h 2003-08-21 08:37:02.000000000 -0400 @@ -1,5 +1,5 @@ /* Implements a string hashing function. - Copyright (C) 1995, 1997, 1998, 2000 Free Software Foundation, Inc. + Copyright (C) 1995, 1997, 1998, 2000, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -34,27 +34,5 @@ /* Defines the so called `hashpjw' function by P.J. Weinberger [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools, 1986, 1987 Bell Telephone Laboratories, Inc.] */ -static unsigned long int hash_string PARAMS ((const char *__str_param)); - -static inline unsigned long int -hash_string (str_param) - const char *str_param; -{ - unsigned long int hval, g; - const char *str = str_param; - - /* Compute the hash value for the given string. */ - hval = 0; - while (*str != '\0') - { - hval <<= 4; - hval += (unsigned long int) *str++; - g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4)); - if (g != 0) - { - hval ^= g >> (HASHWORDBITS - 8); - hval ^= g; - } - } - return hval; -} +extern unsigned long int __hash_string PARAMS ((const char *__str_param)) + attribute_hidden; --- glibc-2.3.2/intl/loadmsgcat.c 2002-12-12 01:55:11.000000000 -0500 +++ glibc-2.3.2/intl/loadmsgcat.c 2003-09-19 22:37:01.000000000 -0400 @@ -1,5 +1,5 @@ /* Load needed message catalogs. - Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -87,6 +87,7 @@ #ifdef _LIBC # include "../locale/localeinfo.h" +# include #endif /* Provide fallback values for macros that ought to be defined in . @@ -453,11 +454,12 @@ /* Rename the non ISO C functions. This is required by the standard because some ISO C functions will require linking with this object file and the name space must not be polluted. */ -# define open __open -# define close __close -# define read __read -# define mmap __mmap -# define munmap __munmap +# define open(name, flags) open_not_cancel_2 (name, flags) +# define close(fd) close_not_cancel_no_status (fd) +# define read(fd, buf, n) read_not_cancel (fd, buf, n) +# define mmap(addr, len, prot, flags, fd, offset) \ + __mmap (addr, len, prot, flags, fd, offset) +# define munmap(addr, len) __munmap (addr, len) #endif /* For those losing systems which don't have `alloca' we have to add @@ -1209,7 +1211,7 @@ for (i = 0; i < n_sysdep_strings; i++) { const char *msgid = inmem_orig_sysdep_tab[i].pointer; - nls_uint32 hash_val = hash_string (msgid); + nls_uint32 hash_val = __hash_string (msgid); nls_uint32 idx = hash_val % domain->hash_size; nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2)); --- glibc-2.3.2/intl/localealias.c 2002-11-19 22:26:47.000000000 -0500 +++ glibc-2.3.2/intl/localealias.c 2003-09-19 22:37:01.000000000 -0400 @@ -1,5 +1,5 @@ /* Handle aliases for locale names. - Copyright (C) 1995-1999, 2000,01,02 Free Software Foundation, Inc. + Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -219,7 +219,9 @@ memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile); #endif - fp = fopen (full_fname, "r"); + /* Note the file is opened with cancellation in the I/O functions + disabled. */ + fp = fopen (full_fname, "rc"); freea (full_fname); if (fp == NULL) return 0; @@ -243,11 +245,15 @@ char *alias; char *value; char *cp; + int complete_line; if (FGETS (buf, sizeof buf, fp) == NULL) /* EOF reached. */ break; + /* Determine whether the line is complete. */ + complete_line = strchr (buf, '\n') != NULL; + cp = buf; /* Ignore leading white space. */ while (isspace ((unsigned char) cp[0])) @@ -334,11 +340,13 @@ /* Possibly not the whole line fits into the buffer. Ignore the rest of the line. */ - while (strchr (buf, '\n') == NULL) - if (FGETS (buf, sizeof buf, fp) == NULL) - /* Make sure the inner loop will be left. The outer loop - will exit at the `feof' test. */ - break; + if (! complete_line) + do + if (FGETS (buf, sizeof buf, fp) == NULL) + /* Make sure the inner loop will be left. The outer loop + will exit at the `feof' test. */ + break; + while (strchr (buf, '\n') == NULL); } /* Should we test for ferror()? I think we have to silently ignore --- glibc-2.3.2/intl/plural.c 2002-06-18 17:12:35.000000000 -0400 +++ glibc-2.3.2/intl/plural.c 2003-05-12 12:13:04.000000000 -0400 @@ -51,6 +51,7 @@ #include #include +#include #include "plural-exp.h" /* The main function generated by the parser is called __gettextparse, --- glibc-2.3.2/intl/plural.y 2002-03-11 03:32:00.000000000 -0500 +++ glibc-2.3.2/intl/plural.y 2003-05-12 12:13:04.000000000 -0400 @@ -32,6 +32,7 @@ #include #include +#include #include "plural-exp.h" /* The main function generated by the parser is called __gettextparse, --- glibc-2.3.2/intl/po2test.sed 2000-01-22 00:43:54.000000000 -0500 +++ glibc-2.3.2/intl/po2test.sed 2003-04-12 11:39:42.000000000 -0400 @@ -1,5 +1,5 @@ # po2test.sed - Convert Uniforum style .po file to C code for testing. -# Copyright (C) 2000 Free Software Foundation, Inc. +# Copyright (C) 2000,2003 Free Software Foundation, Inc. # Ulrich Drepper , 2000. # # This program is free software; you can redistribute it and/or modify @@ -16,55 +16,37 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # + # # We copy the original message as a comment into the .msg file. But enclose # them with INPUT ( ). # -/^msgid/ { - s/msgid[ ]*"\(.*\)"/INPUT ("\1")/ -# Clear flag from last substitution. - tb -# Append the next line. - :b - N -# Look whether second part is a continuation line. - s/\(.*\)")\(\n\)"\(.*\)"/\1\\\2\3")/ -# Yes, then branch. - ta - P - D -# Note that `D' includes a jump to the start!! -# We found a continuation line. But before printing insert '\'. - :a - s/\(.*\)")\(\n.*\)/\1\\\2/ - P -# We cannot use the sed command `D' here - s/.*\n\(.*\)/\1/ - tb -} +s/^msgid[ ]*"\(.*\)"/INPUT ("\1")/ +# Clear flag from last substitution and jump if matching +tb + # # Copy the translations as well and enclose them with OUTPUT ( ). # -/^msgstr/ { - s/msgstr[ ]*"\(.*\)"/OUTPUT ("\1")/ -# Clear flag from last substitution. - tb +s/^msgstr[ ]*"\(.*\)"/OUTPUT ("\1")/ +# Clear flag from last substitution and jump if matching +tb + +d + +:b # Append the next line. - :b - N -# Look whether second part is a continuation line. - s/\(.*\)")\(\n\)"\(.*\)"/\1\\\2\3")/ -# Yes, then branch. - ta - P - D -# Note that `D' includes a jump to the start!! -# We found a continuation line. But before printing insert '\'. - :a - s/\(.*\)")\(\n.*\)/\1\\\2/ - P +$!N +# Check whether second part is a continuation line. If so, before printing +# insert '\'. +s/\(.*\)")\(\n\)"\(.*\)"/\1\\\2\3")/ +P +ta +# No, go to the top and process it. Note that `D' includes a jump to the start!! +D +# Yes, we found a continuation line. +:a # We cannot use the sed command `D' here - s/.*\n\(.*\)/\1/ - tb -} -d +s/[^\n]*\n// +# Clear the substitution flag and do the next line. +tb --- glibc-2.3.2/intl/tst-gettext2.sh 2001-07-07 15:21:03.000000000 -0400 +++ glibc-2.3.2/intl/tst-gettext2.sh 2003-09-19 22:37:02.000000000 -0400 @@ -1,6 +1,6 @@ #! /bin/sh # Test of gettext functions. -# Copyright (C) 2000 Free Software Foundation, Inc. +# Copyright (C) 2000, 2003 Free Software Foundation, Inc. # This file is part of the GNU C Library. # @@ -22,10 +22,6 @@ common_objpfx=$1 objpfx=$2 -GCONV_PATH=${common_objpfx}iconvdata -export GCONV_PATH -LOCPATH=${objpfx}domaindir -export LOCPATH LC_ALL=C export LC_ALL @@ -64,6 +60,10 @@ msgfmt -o ${objpfx}domaindir/lang2/LC_MESSAGES/tstlang.mo \ tstlang2.po +GCONV_PATH=${common_objpfx}iconvdata +export GCONV_PATH +LOCPATH=${objpfx}domaindir +export LOCPATH # Now run the test. ${common_objpfx}elf/ld.so --library-path $common_objpfx \ --- glibc-2.3.2/io/Makefile 2002-10-23 02:21:16.000000000 -0400 +++ glibc-2.3.2/io/Makefile 2003-09-19 22:37:02.000000000 -0400 @@ -1,4 +1,4 @@ -# Copyright (C) 1992-1999,2000,01,02 Free Software Foundation, Inc. +# Copyright (C) 1992-2002, 2003 Free Software Foundation, Inc. # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or @@ -63,7 +63,20 @@ include ../Rules -CFLAGS-fts.c = -Wno-uninitialized +CFLAGS-fcntl.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-poll.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-lockf.c = -fexceptions +CFLAGS-statfs.c = -fexceptions +CFLAGS-fstatfs.c = -fexceptions +CFLAGS-statvfs.c = -fexceptions +CFLAGS-fstatvfs.c = -fexceptions +CFLAGS-fts.c = -Wno-uninitialized $(uses-callbacks) -fexceptions +CFLAGS-ftw.c = $(uses-callbacks) -fexceptions +CFLAGS-ftw64.c = $(uses-callbacks) -fexceptions +CFLAGS-lockf.c = -fexceptions +CFLAGS-posix_fallocate.c = -fexceptions +CFLAGS-posix_fallocate64.c = -fexceptions + CFLAGS-test-stat.c = -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE CFLAGS-test-lfs.c = -D_LARGEFILE64_SOURCE @@ -83,5 +96,6 @@ tests: $(objpfx)ftwtest.out $(objpfx)ftwtest.out: $(objpfx)ftwtest - $(SHELL) -e ftwtest-sh $(common-objpfx) $( $@ + $(SHELL) -e ftwtest-sh $(shell cd $(common-objpfx). && pwd)/ \ + $(shell cd $( $@ endif --- glibc-2.3.2/io/fcntl.h 2001-07-07 15:21:03.000000000 -0400 +++ glibc-2.3.2/io/fcntl.h 2003-09-19 22:37:02.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991,92,94,95,96,97,98,99,2000,2001 Free Software Foundation, Inc. +/* Copyright (C) 1991,1992,1994-2001,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -56,41 +56,48 @@ #endif /* XPG */ /* Do the file control operation described by CMD on FD. - The remaining arguments are interpreted depending on CMD. */ -extern int fcntl (int __fd, int __cmd, ...) __THROW; + The remaining arguments are interpreted depending on CMD. + + This function is a cancellation point and therefore not marked with + __THROW. */ +extern int fcntl (int __fd, int __cmd, ...); /* Open FILE and return a new file descriptor for it, or -1 on error. OFLAG determines the type of access used. If O_CREAT is on OFLAG, - the third argument is taken as a `mode_t', the mode of the created file. */ + the third argument is taken as a `mode_t', the mode of the created file. + + This function is a cancellation point and therefore not marked with + __THROW. */ #ifndef __USE_FILE_OFFSET64 -extern int open (__const char *__file, int __oflag, ...) __THROW; +extern int open (__const char *__file, int __oflag, ...); #else # ifdef __REDIRECT -extern int __REDIRECT (open, (__const char *__file, int __oflag, ...) __THROW, - open64); +extern int __REDIRECT (open, (__const char *__file, int __oflag, ...), open64); # else # define open open64 # endif #endif #ifdef __USE_LARGEFILE64 -extern int open64 (__const char *__file, int __oflag, ...) __THROW; +extern int open64 (__const char *__file, int __oflag, ...); #endif -/* Create and open FILE, with mode MODE. - This takes an `int' MODE argument because that is - what `mode_t' will be widened to. */ +/* Create and open FILE, with mode MODE. This takes an `int' MODE + argument because that is what `mode_t' will be widened to. + + This function is a cancellation point and therefore not marked with + __THROW. */ #ifndef __USE_FILE_OFFSET64 -extern int creat (__const char *__file, __mode_t __mode) __THROW; +extern int creat (__const char *__file, __mode_t __mode); #else # ifdef __REDIRECT -extern int __REDIRECT (creat, (__const char *__file, __mode_t __mode) __THROW, +extern int __REDIRECT (creat, (__const char *__file, __mode_t __mode), creat64); # else # define creat creat64 # endif #endif #ifdef __USE_LARGEFILE64 -extern int creat64 (__const char *__file, __mode_t __mode) __THROW; +extern int creat64 (__const char *__file, __mode_t __mode); #endif #if !defined F_LOCK && (defined __USE_MISC || (defined __USE_XOPEN_EXTENDED \ @@ -109,17 +116,16 @@ # define F_TEST 3 /* Test a region for other processes locks. */ # ifndef __USE_FILE_OFFSET64 -extern int lockf (int __fd, int __cmd, __off_t __len) __THROW; +extern int lockf (int __fd, int __cmd, __off_t __len); # else # ifdef __REDIRECT -extern int __REDIRECT (lockf, (int __fd, int __cmd, __off64_t __len) __THROW, - lockf64); +extern int __REDIRECT (lockf, (int __fd, int __cmd, __off64_t __len), lockf64); # else # define lockf lockf64 # endif # endif # ifdef __USE_LARGEFILE64 -extern int lockf64 (int __fd, int __cmd, __off64_t __len) __THROW; +extern int lockf64 (int __fd, int __cmd, __off64_t __len); # endif #endif @@ -127,38 +133,40 @@ /* Advice the system about the expected behaviour of the application with respect to the file associated with FD. */ # ifndef __USE_FILE_OFFSET64 -extern int posix_fadvise (int __fd, __off_t __offset, size_t __len, +extern int posix_fadvise (int __fd, __off_t __offset, __off_t __len, int __advise) __THROW; # else # ifdef __REDIRECT extern int __REDIRECT (posix_fadvise, (int __fd, __off64_t __offset, - size_t __len, int __advise) __THROW, + __off64_t __len, int __advise) __THROW, posix_fadvise64); # else # define posix_fadvise posix_fadvise64 # endif # endif # ifdef __USE_LARGEFILE64 -extern int posix_fadvise64 (int __fd, __off64_t __offset, size_t __len, +extern int posix_fadvise64 (int __fd, __off64_t __offset, __off64_t __len, int __advise) __THROW; # endif -/* Reserve storage for the data of the file associated with FD. */ +/* Reserve storage for the data of the file associated with FD. + + This function is a possible cancellation points and therefore not + marked with __THROW. */ # ifndef __USE_FILE_OFFSET64 -extern int posix_fallocate (int __fd, __off_t __offset, size_t __len) __THROW; +extern int posix_fallocate (int __fd, __off_t __offset, __off_t __len); # else # ifdef __REDIRECT extern int __REDIRECT (posix_fallocate, (int __fd, __off64_t __offset, - size_t __len) __THROW, + __off64_t __len), posix_fallocate64); # else # define posix_fallocate posix_fallocate64 # endif # endif # ifdef __USE_LARGEFILE64 -extern int posix_fallocate64 (int __fd, __off64_t __offset, size_t __len) - __THROW; +extern int posix_fallocate64 (int __fd, __off64_t __offset, __off64_t __len); # endif #endif --- glibc-2.3.2/io/fts.c 2002-04-08 03:02:07.000000000 -0400 +++ glibc-2.3.2/io/fts.c 2003-03-18 16:46:07.000000000 -0500 @@ -581,8 +581,9 @@ FTSENT *cur, *tail; DIR *dirp; void *oldaddr; - int cderrno, descend, len, level, maxlen, nlinks, saved_errno, + int cderrno, descend, len, level, nlinks, saved_errno, nostat, doadjust; + size_t maxlen; char *cp; /* Set current node pointer. */ --- glibc-2.3.2/io/fts.h 2001-11-05 15:57:28.000000000 -0500 +++ glibc-2.3.2/io/fts.h 2003-09-19 22:37:02.000000000 -0400 @@ -120,11 +120,11 @@ } FTSENT; __BEGIN_DECLS -FTSENT *fts_children (FTS *, int) __THROW; -int fts_close (FTS *) __THROW; +FTSENT *fts_children (FTS *, int); +int fts_close (FTS *); FTS *fts_open (char * const *, int, - int (*)(const FTSENT **, const FTSENT **)) __THROW; -FTSENT *fts_read (FTS *) __THROW; + int (*)(const FTSENT **, const FTSENT **)); +FTSENT *fts_read (FTS *); int fts_set (FTS *, FTSENT *, int) __THROW; __END_DECLS --- glibc-2.3.2/io/ftw.c 2003-02-08 13:25:54.000000000 -0500 +++ glibc-2.3.2/io/ftw.c 2003-08-21 08:37:02.000000000 -0400 @@ -258,6 +258,7 @@ static inline int +__attribute ((always_inline)) open_dir_stream (struct ftw_data *data, struct dir_data *dirp) { int result = 0; @@ -348,7 +349,8 @@ } -static inline int +static int +internal_function process_entry (struct ftw_data *data, struct dir_data *dir, const char *name, size_t namlen) { @@ -482,17 +484,6 @@ { if (__fchdir (dirfd (dir.stream)) < 0) { - if (errno == ENOSYS) - { - if (__chdir (data->dirbuf) < 0) - result = -1; - } - else - result = -1; - } - - if (result != 0) - { int save_err = errno; __closedir (dir.stream); __set_errno (save_err); @@ -501,7 +492,7 @@ data->actdir = data->maxdir - 1; data->dirstreams[data->actdir] = NULL; - return result; + return -1; } } --- glibc-2.3.2/io/ftw.h 2001-07-07 15:21:03.000000000 -0400 +++ glibc-2.3.2/io/ftw.h 2003-04-24 20:05:57.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1992, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1992,1996,1997,1998,1999,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -103,40 +103,45 @@ # endif #endif -/* Call a function on every element in a directory tree. */ +/* Call a function on every element in a directory tree. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ #ifndef __USE_FILE_OFFSET64 -extern int ftw (__const char *__dir, __ftw_func_t __func, int __descriptors) - __THROW; +extern int ftw (__const char *__dir, __ftw_func_t __func, int __descriptors); #else # ifdef __REDIRECT extern int __REDIRECT (ftw, (__const char *__dir, __ftw_func_t __func, - int __descriptors) __THROW, ftw64); + int __descriptors), ftw64); # else # define ftw ftw64 # endif #endif #ifdef __USE_LARGEFILE64 extern int ftw64 (__const char *__dir, __ftw64_func_t __func, - int __descriptors) __THROW; + int __descriptors); #endif #ifdef __USE_XOPEN_EXTENDED /* Call a function on every element in a directory tree. FLAG allows - to specify the behaviour more detailed. */ + to specify the behaviour more detailed. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ # ifndef __USE_FILE_OFFSET64 extern int nftw (__const char *__dir, __nftw_func_t __func, int __descriptors, - int __flag) __THROW; + int __flag); # else # ifdef __REDIRECT extern int __REDIRECT (nftw, (__const char *__dir, __nftw_func_t __func, - int __descriptors, int __flag) __THROW, nftw64); + int __descriptors, int __flag), nftw64); # else # define nftw nftw64 # endif # endif # ifdef __USE_LARGEFILE64 extern int nftw64 (__const char *__dir, __nftw64_func_t __func, - int __descriptors, int __flag) __THROW; + int __descriptors, int __flag); # endif #endif --- glibc-2.3.2/io/test-utime.c 2002-12-12 04:24:33.000000000 -0500 +++ glibc-2.3.2/io/test-utime.c 2003-08-21 08:37:02.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1994, 1996, 1997, 2000, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1994,1996,1997,2000,2002,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -76,6 +76,12 @@ return 1; } + /* The clocks used to set the modification time and that used in the + time() call need not be the same. They need not have the same + precision. Therefore we delay the following operation by one + second which makes sure we can compare with second precision. */ + sleep (1); + if (utime (file, NULL)) { perror ("utime NULL"); @@ -83,6 +89,8 @@ return 1; } + sleep (1); + now2 = time (NULL); if (now2 == (time_t)-1) { --- glibc-2.3.2/libio/Makefile 2002-10-25 04:02:04.000000000 -0400 +++ glibc-2.3.2/libio/Makefile 2003-09-19 22:37:02.000000000 -0400 @@ -1,4 +1,4 @@ -# Copyright (C) 1995,96,97,98,99,2000,01,02 Free Software Foundation, Inc. +# Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc. # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or @@ -53,7 +53,8 @@ tst-mmap-setvbuf bug-ungetwc1 bug-ungetwc2 tst-atime tst-eof \ tst-freopen bug-rewind bug-rewind2 bug-ungetc bug-fseek \ tst-mmap-eofsync tst-mmap-fflushsync bug-mmap-fflush \ - tst-mmap2-eofsync tst-mmap-offend bug-fopena+ bug-wfflush + tst-mmap2-eofsync tst-mmap-offend bug-fopena+ bug-wfflush \ + bug-ungetc2 bug-ftell test-srcs = test-freopen all: # Make this the default target; it will be defined in Rules. @@ -75,10 +76,64 @@ endif # Support for exception handling. -CFLAGS-genops.c = $(exceptions) -CFLAGS-wgenops.c = $(exceptions) CFLAGS-fileops.c = $(exceptions) +CFLAGS-fputc.c = $(exceptions) +CFLAGS-fputwc.c = $(exceptions) +CFLAGS-freopen64.c = $(exceptions) +CFLAGS-freopen.c = $(exceptions) +CFLAGS-fseek.c = $(exceptions) +CFLAGS-fseeko64.c = $(exceptions) +CFLAGS-fseeko.c = $(exceptions) +CFLAGS-ftello64.c = $(exceptions) +CFLAGS-ftello.c = $(exceptions) +CFLAGS-fwide.c = $(exceptions) +CFLAGS-genops.c = $(exceptions) +CFLAGS-getc.c = $(exceptions) +CFLAGS-getchar.c = $(exceptions) +CFLAGS-getwc.c = $(exceptions) +CFLAGS-getwchar.c = $(exceptions) +CFLAGS-iofclose.c = $(exceptions) +CFLAGS-iofflush.c = $(exceptions) +CFLAGS-iofgetpos64.c = $(exceptions) +CFLAGS-iofgetpos.c = $(exceptions) +CFLAGS-iofgets.c = $(exceptions) +CFLAGS-iofgetws.c = $(exceptions) +CFLAGS-iofputs.c = $(exceptions) +CFLAGS-iofputws.c = $(exceptions) +CFLAGS-iofread.c = $(exceptions) +CFLAGS-iofsetpos64.c = $(exceptions) +CFLAGS-iofsetpos.c = $(exceptions) +CFLAGS-ioftell.c = $(exceptions) +CFLAGS-iofwrite.c = $(exceptions) +CFLAGS-iogetdelim.c = $(exceptions) +CFLAGS-iogetline.c = $(exceptions) +CFLAGS-iogets.c = $(exceptions) +CFLAGS-iogetwline.c = $(exceptions) +CFLAGS-ioputs.c = $(exceptions) +CFLAGS-ioseekoff.c = $(exceptions) +CFLAGS-ioseekpos.c = $(exceptions) +CFLAGS-iosetbuffer.c = $(exceptions) +CFLAGS-iosetvbuf.c = $(exceptions) +CFLAGS-ioungetc.c = $(exceptions) +CFLAGS-ioungetwc.c = $(exceptions) +CFLAGS-oldfileops.c = $(exceptions) +CFLAGS-oldiofclose.c = $(exceptions) +CFLAGS-oldiofgetpos64.c = $(exceptions) +CFLAGS-oldiofgetpos.c = $(exceptions) +CFLAGS-oldiofsetpos64.c = $(exceptions) +CFLAGS-oldiofsetpos.c = $(exceptions) +CFLAGS-peekc.c = $(exceptions) +CFLAGS-putc.c = $(exceptions) +CFLAGS-putchar.c = $(exceptions) +CFLAGS-putwc.c = $(exceptions) +CFLAGS-putwchar.c = $(exceptions) +CFLAGS-rewind.c = $(exceptions) CFLAGS-wfileops.c = $(exceptions) +CFLAGS-wgenops.c = $(exceptions) +CFLAGS-oldiofopen.c = $(exceptions) +CFLAGS-iofopen.c = $(exceptions) +CFLAGS-iofopen64.c = $(exceptions) +CFLAGS-oldtmpfile.c = $(exceptions) # XXX Do we need filedoalloc and wfiledoalloc? Others? CFLAGS-tst_putwc.c = -DOBJPFX=\"$(objpfx)\" @@ -93,6 +148,7 @@ tst-ungetwc2-ENV = LOCPATH=$(common-objpfx)localedata bug-ungetwc2-ENV = LOCPATH=$(common-objpfx)localedata tst-swscanf-ENV = LOCPATH=$(common-objpfx)localedata +bug-ftell-ENV = LOCPATH=$(common-objpfx)localedata generated = tst-fopenloc.mtrace tst-fopenloc.check --- glibc-2.3.2/libio/Versions 2000-09-01 04:39:09.000000000 -0400 +++ glibc-2.3.2/libio/Versions 2003-08-21 08:37:02.000000000 -0400 @@ -145,4 +145,8 @@ # w* wprintf; wscanf; } + GLIBC_PRIVATE { + # Used by NPTL and librt + __libc_fatal; + } } --- glibc-2.3.2/libio/bits/stdio.h 2001-08-02 19:39:43.000000000 -0400 +++ glibc-2.3.2/libio/bits/stdio.h 2003-05-12 12:13:04.000000000 -0400 @@ -31,14 +31,14 @@ #ifdef __USE_EXTERN_INLINES /* Write formatted output to stdout from argument list ARG. */ __STDIO_INLINE int -vprintf (__const char *__restrict __fmt, _G_va_list __arg) __THROW +vprintf (__const char *__restrict __fmt, _G_va_list __arg) { return vfprintf (stdout, __fmt, __arg); } /* Read a character from stdin. */ __STDIO_INLINE int -getchar (void) __THROW +getchar (void) { return _IO_getc (stdin); } @@ -47,14 +47,14 @@ # if defined __USE_POSIX || defined __USE_MISC /* This is defined in POSIX.1:1996. */ __STDIO_INLINE int -getc_unlocked (FILE *__fp) __THROW +getc_unlocked (FILE *__fp) { return _IO_getc_unlocked (__fp); } /* This is defined in POSIX.1:1996. */ __STDIO_INLINE int -getchar_unlocked (void) __THROW +getchar_unlocked (void) { return _IO_getc_unlocked (stdin); } @@ -63,7 +63,7 @@ /* Write a character to stdout. */ __STDIO_INLINE int -putchar (int __c) __THROW +putchar (int __c) { return _IO_putc (__c, stdout); } @@ -72,7 +72,7 @@ # ifdef __USE_MISC /* Faster version when locking is not necessary. */ __STDIO_INLINE int -fputc_unlocked (int __c, FILE *__stream) __THROW +fputc_unlocked (int __c, FILE *__stream) { return _IO_putc_unlocked (__c, __stream); } @@ -82,14 +82,14 @@ # if defined __USE_POSIX || defined __USE_MISC /* This is defined in POSIX.1:1996. */ __STDIO_INLINE int -putc_unlocked (int __c, FILE *__stream) __THROW +putc_unlocked (int __c, FILE *__stream) { return _IO_putc_unlocked (__c, __stream); } /* This is defined in POSIX.1:1996. */ __STDIO_INLINE int -putchar_unlocked (int __c) __THROW +putchar_unlocked (int __c) { return _IO_putc_unlocked (__c, stdout); } @@ -99,7 +99,7 @@ # ifdef __USE_GNU /* Like `getdelim', but reads up to a newline. */ __STDIO_INLINE _IO_ssize_t -getline (char **__lineptr, size_t *__n, FILE *__stream) __THROW +getline (char **__lineptr, size_t *__n, FILE *__stream) { return __getdelim (__lineptr, __n, '\n', __stream); } --- glibc-2.3.2/libio/bug-ftell.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/libio/bug-ftell.c 2003-09-08 03:04:11.000000000 -0400 @@ -0,0 +1,57 @@ +#include +#include +#include +#include + + +static int +do_test (void) +{ + if (setlocale (LC_ALL, "de_DE.UTF-8") == NULL) + { + puts ("setlocale failed"); + return 1; + } + + FILE *fp = tmpfile (); + if (fp == NULL) + { + puts ("tmpfile failed"); + return 1; + } + + if (fputws (L"hello", fp) == EOF) + { + puts ("fputws failed"); + return 1; + } + + rewind (fp); + + const wchar_t *cp; + unsigned int cnt; + for (cp = L"hello", cnt = 1; *cp != L'\0'; ++cp, ++cnt) + { + wint_t wc = fgetwc (fp); + if (wc != (wint_t) *cp) + { + printf ("fgetwc failed: got L'%lc', expected L'%lc'\n", wc, *cp); + return 1; + } + off_t o = ftello (fp); + if (o != cnt) + { + printf ("ftello failed: got %lu, expected %u\n", + (unsigned long int) o, cnt); + return 1; + } + printf ("round %u OK\n", cnt); + } + + fclose (fp); + + return 0; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" --- glibc-2.3.2/libio/bug-ungetc2.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/libio/bug-ungetc2.c 2003-09-06 01:41:42.000000000 -0400 @@ -0,0 +1,98 @@ +#include +#include + + +static int +check (FILE *fp, off_t o) +{ + int result = 0; + if (feof (fp)) + { + puts ("feof !"); + result = 1; + } + if (ferror (fp)) + { + puts ("ferror !"); + result = 1; + } + if (ftello (fp) != o) + { + printf ("position = %lu, not %lu\n", (unsigned long int) ftello (fp), + (unsigned long int) o); + result = 1; + } + return result; +} + + +static int +do_test (void) +{ + FILE *fp = tmpfile (); + if (fp == NULL) + { + puts ("tmpfile failed"); + return 1; + } + if (check (fp, 0) != 0) + return 1; + + puts ("going to write"); + if (fputs ("hello", fp) == EOF) + { + puts ("fputs failed"); + return 1; + } + if (check (fp, 5) != 0) + return 1; + + puts ("going to rewind"); + rewind (fp); + if (check (fp, 0) != 0) + return 1; + + puts ("going to read char"); + int c = fgetc (fp); + if (c != 'h') + { + printf ("read %c, not %c\n", c, 'h'); + return 1; + } + if (check (fp, 1) != 0) + return 1; + + puts ("going to put back"); + if (ungetc (' ', fp) == EOF) + { + puts ("ungetc failed"); + return 1; + } + if (check (fp, 0) != 0) + return 1; + + puts ("going to write again"); + if (fputs ("world", fp) == EOF) + { + puts ("2nd fputs failed"); + return 1; + } + if (check (fp, 5) != 0) + return 1; + + puts ("going to rewind again"); + rewind (fp); + if (check (fp, 0) != 0) + return 1; + + if (fclose (fp) != 0) + { + puts ("fclose failed"); + return 1; + } + + return 0; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" --- glibc-2.3.2/libio/fileops.c 2003-01-08 00:18:32.000000000 -0500 +++ glibc-2.3.2/libio/fileops.c 2003-09-19 22:37:02.000000000 -0400 @@ -47,6 +47,7 @@ # include "../iconv/gconv_charset.h" # include "../iconv/gconv_int.h" # include +# include #endif #ifndef errno extern int errno; @@ -58,11 +59,11 @@ #ifdef _LIBC # define open(Name, Flags, Prot) __open (Name, Flags, Prot) -# define close(FD) __close (FD) # define lseek(FD, Offset, Whence) __lseek (FD, Offset, Whence) # define read(FD, Buf, NBytes) __read (FD, Buf, NBytes) # define write(FD, Buf, NBytes) __write (FD, Buf, NBytes) # define _IO_do_write _IO_new_do_write /* For macro uses. */ +# define _IO_file_close_it _IO_new_file_close_it #else # define _IO_new_do_write _IO_do_write # define _IO_new_file_attach _IO_file_attach @@ -214,9 +215,6 @@ } INTDEF2(_IO_new_file_finish, _IO_file_finish) -#if defined __GNUC__ && __GNUC__ >= 2 -__inline__ -#endif _IO_FILE * _IO_file_open (fp, filename, posix_mode, prot, read_write, is32not64) _IO_FILE *fp; @@ -227,10 +225,12 @@ int is32not64; { int fdesc; -#ifdef _G_OPEN64 - fdesc = (is32not64 - ? open (filename, posix_mode, prot) - : _G_OPEN64 (filename, posix_mode, prot)); +#ifdef _LIBC + if (__builtin_expect (fp->_flags2 & _IO_FLAGS2_NOTCANCEL, 0)) + fdesc = open_not_cancel (filename, + posix_mode | (is32not64 ? 0 : O_LARGEFILE), prot); + else + fdesc = open (filename, posix_mode | (is32not64 ? 0 : O_LARGEFILE), prot); #else fdesc = open (filename, posix_mode, prot); #endif @@ -242,7 +242,7 @@ if (_IO_SEEKOFF (fp, (_IO_off64_t)0, _IO_seek_end, _IOS_INPUT|_IOS_OUTPUT) == _IO_pos_BAD && errno != ESPIPE) { - close (fdesc); + close_not_cancel (fdesc); return NULL; } INTUSE(_IO_link_in) ((struct _IO_FILE_plus *) fp); @@ -292,7 +292,7 @@ #ifdef _LIBC last_recognized = mode; #endif - for (i = 1; i < 5; ++i) + for (i = 1; i < 6; ++i) { switch (*++mode) { @@ -319,6 +319,9 @@ case 'm': fp->_flags2 |= _IO_FLAGS2_MMAP; continue; + case 'c': + fp->_flags2 |= _IO_FLAGS2_NOTCANCEL; + break; default: /* Ignore. */ continue; @@ -353,6 +356,7 @@ /* Something went wrong, we cannot load the conversion modules. This means we cannot proceed since the user explicitly asked for these. */ + (void) INTUSE(_IO_file_close_it) (fp); __set_errno (EINVAL); return NULL; } @@ -397,10 +401,6 @@ /* Set the mode now. */ result->_mode = 1; - - /* We don't need the step data structure anymore. */ - __gconv_release_cache (fcts.towc, fcts.towc_nsteps); - __gconv_release_cache (fcts.tomb, fcts.tomb_nsteps); } } #endif /* GNU libc */ @@ -456,7 +456,7 @@ _IO_FILE *result; /* Change the function table. */ - _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &INTUSE(_IO_file_jumps); + _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &_IO_file_jumps; fp->_wide_data->_wide_vtable = &_IO_wfile_jumps; /* And perform the normal operation. */ @@ -566,16 +566,13 @@ traditional Unix systems did this for stdout. stderr better not be line buffered. So we do just that here explicitly. --drepper */ - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, - _IO_stdout); - _IO_flockfile (_IO_stdout); + _IO_acquire_lock (_IO_stdout); if ((_IO_stdout->_flags & (_IO_LINKED | _IO_NO_WRITES | _IO_LINE_BUF)) == (_IO_LINKED | _IO_LINE_BUF)) _IO_OVERFLOW (_IO_stdout, EOF); - _IO_funlockfile (_IO_stdout); - _IO_cleanup_region_end (0); + _IO_release_lock (_IO_stdout); #endif } @@ -708,7 +705,7 @@ fp->_IO_buf_base = fp->_IO_buf_end = NULL; _IO_setg (fp, NULL, NULL, NULL); if (fp->_mode <= 0) - _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &INTUSE(_IO_file_jumps); + _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &_IO_file_jumps; else _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &_IO_wfile_jumps; fp->_wide_data->_wide_vtable = &_IO_wfile_jumps; @@ -801,7 +798,7 @@ /* We couldn't use mmap, so revert to the vanilla file operations. */ if (fp->_mode <= 0) - _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &INTUSE(_IO_file_jumps); + _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &_IO_file_jumps; else _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &_IO_wfile_jumps; fp->_wide_data->_wide_vtable = &_IO_wfile_jumps; @@ -844,6 +841,15 @@ makes room for subsequent output. Otherwise, set the read pointers to _IO_read_end (leaving that alone, so it can continue to correspond to the external position). */ + if (__builtin_expect (_IO_in_backup (f), 0)) + { + size_t nbackup = f->_IO_read_end - f->_IO_read_ptr; + INTUSE(_IO_free_backup_area) (f); + f->_IO_read_base -= MIN (nbackup, + f->_IO_read_base - f->_IO_buf_base); + f->_IO_read_ptr = f->_IO_read_base; + } + if (f->_IO_read_ptr == f->_IO_buf_end) f->_IO_read_end = f->_IO_read_ptr = f->_IO_buf_base; f->_IO_write_ptr = f->_IO_read_ptr; @@ -1207,7 +1213,9 @@ void *buf; _IO_ssize_t size; { - return read (fp->_fileno, buf, size); + return (__builtin_expect (fp->_flags2 & _IO_FLAGS2_NOTCANCEL, 0) + ? read_not_cancel (fp->_fileno, buf, size) + : read (fp->_fileno, buf, size)); } INTDEF(_IO_file_read) @@ -1245,14 +1253,18 @@ /* In addition to closing the file descriptor we have to unmap the file. */ (void) __munmap (fp->_IO_buf_base, fp->_IO_buf_end - fp->_IO_buf_base); fp->_IO_buf_base = fp->_IO_buf_end = NULL; - return close (fp->_fileno); + /* Cancelling close should be avoided if possible since it leaves an + unrecoverable state behind. */ + return close_not_cancel (fp->_fileno); } int _IO_file_close (fp) _IO_FILE *fp; { - return close (fp->_fileno); + /* Cancelling close should be avoided if possible since it leaves an + unrecoverable state behind. */ + return close_not_cancel (fp->_fileno); } INTDEF(_IO_file_close) @@ -1265,7 +1277,10 @@ _IO_ssize_t to_do = n; while (to_do > 0) { - _IO_ssize_t count = write (f->_fileno, data, to_do); + _IO_ssize_t count = (__builtin_expect (f->_flags2 + & _IO_FLAGS2_NOTCANCEL, 0) + ? write_not_cancel (f->_fileno, data, to_do) + : write (f->_fileno, data, to_do)); if (count < 0) { f->_flags |= _IO_ERR_SEEN; @@ -1548,6 +1563,7 @@ #ifdef _LIBC # undef _IO_do_write +# undef _IO_file_close_it versioned_symbol (libc, _IO_new_do_write, _IO_do_write, GLIBC_2_1); versioned_symbol (libc, _IO_new_file_attach, _IO_file_attach, GLIBC_2_1); versioned_symbol (libc, _IO_new_file_close_it, _IO_file_close_it, GLIBC_2_1); @@ -1586,7 +1602,7 @@ JUMP_INIT(showmanyc, _IO_default_showmanyc), JUMP_INIT(imbue, _IO_default_imbue) }; -INTVARDEF(_IO_file_jumps) +libc_hidden_data_def (_IO_file_jumps) struct _IO_jump_t _IO_file_jumps_mmap = { --- glibc-2.3.2/libio/fputc.c 2001-07-07 15:21:03.000000000 -0400 +++ glibc-2.3.2/libio/fputc.c 2003-09-19 22:37:02.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1996, 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1996, 1997, 1998, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -35,11 +35,9 @@ { int result; CHECK_FILE (fp, EOF); - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); result = _IO_putc_unlocked (c, fp); - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); return result; } --- glibc-2.3.2/libio/fputwc.c 2001-07-07 15:21:03.000000000 -0400 +++ glibc-2.3.2/libio/fputwc.c 2003-09-19 22:37:02.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1993,1996,1997,1998,1999,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -35,13 +35,11 @@ { int result; CHECK_FILE (fp, EOF); - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); if (_IO_fwide (fp, 1) < 0) result = WEOF; else result = _IO_putwc_unlocked (wc, fp); - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); return result; } --- glibc-2.3.2/libio/freopen.c 2002-10-03 04:11:25.000000000 -0400 +++ glibc-2.3.2/libio/freopen.c 2003-09-19 22:37:02.000000000 -0400 @@ -1,4 +1,5 @@ -/* Copyright (C) 1993,95,96,97,98,2000,2001,2002 Free Software Foundation, Inc. +/* Copyright (C) 1993,95,96,97,98,2000,2001,2002,2003 + Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -43,8 +44,7 @@ CHECK_FILE (fp, NULL); if (!(fp->_flags & _IO_IS_FILEBUF)) return NULL; - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); if (filename == NULL && _IO_fileno (fp) >= 0) { fd = __dup (_IO_fileno (fp)); @@ -67,9 +67,9 @@ #endif { INTUSE(_IO_file_close_it) (fp); - _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &INTUSE(_IO_file_jumps); - if (fp->_vtable_offset == 0 && fp->_wide_data != NULL) - fp->_wide_data->_wide_vtable = &INTUSE(_IO_wfile_jumps); + _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &_IO_file_jumps; + if (_IO_vtable_offset (fp) == 0 && fp->_wide_data != NULL) + fp->_wide_data->_wide_vtable = &_IO_wfile_jumps; result = INTUSE(_IO_file_fopen) (fp, filename, mode, 1); if (result != NULL) result = __fopen_maybe_mmap (result); @@ -83,7 +83,6 @@ if (filename != NULL) free ((char *) filename); } - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); return result; } --- glibc-2.3.2/libio/freopen64.c 2002-10-03 04:11:32.000000000 -0400 +++ glibc-2.3.2/libio/freopen64.c 2003-09-19 22:37:02.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1993,1995,1996,1997,1998,2000,2001,2002 +/* Copyright (C) 1993,1995,1996,1997,1998,2000,2001,2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -44,8 +44,7 @@ CHECK_FILE (fp, NULL); if (!(fp->_flags & _IO_IS_FILEBUF)) return NULL; - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); if (filename == NULL && _IO_fileno (fp) >= 0) { fd = __dup (_IO_fileno (fp)); @@ -53,9 +52,9 @@ filename = fd_to_filename (fd); } INTUSE(_IO_file_close_it) (fp); - _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &INTUSE(_IO_file_jumps); - if (fp->_vtable_offset == 0 && fp->_wide_data != NULL) - fp->_wide_data->_wide_vtable = &INTUSE(_IO_wfile_jumps); + _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &_IO_file_jumps; + if (_IO_vtable_offset (fp) == 0 && fp->_wide_data != NULL) + fp->_wide_data->_wide_vtable = &_IO_wfile_jumps; result = INTUSE(_IO_file_fopen) (fp, filename, mode, 0); if (result != NULL) result = __fopen_maybe_mmap (result); @@ -68,8 +67,7 @@ if (filename != NULL) free ((char *) filename); } - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); return result; #else __set_errno (ENOSYS); --- glibc-2.3.2/libio/fseek.c 2002-08-04 14:19:41.000000000 -0400 +++ glibc-2.3.2/libio/fseek.c 2003-09-19 22:37:02.000000000 -0400 @@ -1,4 +1,5 @@ -/* Copyright (C) 1993,1995,1996,1997,1998,2002 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 2002, 2003 + Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -36,11 +37,9 @@ { int result; CHECK_FILE (fp, -1); - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); result = _IO_fseek (fp, offset, whence); - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); return result; } libc_hidden_def (fseek) --- glibc-2.3.2/libio/fseeko.c 2001-07-07 15:21:03.000000000 -0400 +++ glibc-2.3.2/libio/fseeko.c 2003-09-19 22:37:02.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1995, 1996, 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1993,1995,1996,1997,1998,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -36,10 +36,8 @@ { int result; CHECK_FILE (fp, -1); - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); result = _IO_fseek (fp, offset, whence); - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); return result; } --- glibc-2.3.2/libio/fseeko64.c 2001-07-07 15:21:03.000000000 -0400 +++ glibc-2.3.2/libio/fseeko64.c 2003-09-19 22:37:02.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1995, 1996, 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1993,1995,1996,1997,1998,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -38,11 +38,9 @@ #ifdef _G_LSEEK64 int result; CHECK_FILE (fp, -1); - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); result = _IO_fseek (fp, offset, whence); - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); return result; #else __set_errno (ENOSYS); --- glibc-2.3.2/libio/ftello.c 2002-11-05 02:37:46.000000000 -0500 +++ glibc-2.3.2/libio/ftello.c 2003-09-19 22:37:02.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1995-2001, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1995-2001, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -37,16 +37,14 @@ { _IO_off64_t pos; CHECK_FILE (fp, -1L); - _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); pos = _IO_seekoff_unlocked (fp, 0, _IO_seek_cur, 0); if (_IO_in_backup (fp)) { if (fp->_mode <= 0) pos -= fp->_IO_save_end - fp->_IO_save_base; } - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); if (pos == _IO_pos_BAD) { #ifdef EIO --- glibc-2.3.2/libio/ftello64.c 2002-11-05 02:37:15.000000000 -0500 +++ glibc-2.3.2/libio/ftello64.c 2003-09-19 22:37:02.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1995-2001, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1995-2001, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -38,16 +38,14 @@ #ifdef _G_LSEEK64 _IO_off64_t pos; CHECK_FILE (fp, -1L); - _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); pos = _IO_seekoff_unlocked (fp, 0, _IO_seek_cur, 0); if (_IO_in_backup (fp)) { if (fp->_mode <= 0) pos -= fp->_IO_save_end - fp->_IO_save_base; } - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); if (pos == _IO_pos_BAD) { #ifdef EIO --- glibc-2.3.2/libio/fwide.c 2001-07-07 15:21:03.000000000 -0400 +++ glibc-2.3.2/libio/fwide.c 2003-09-19 22:37:02.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1999, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -44,13 +44,9 @@ or the orientation already has been determined. */ return fp->_mode; - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); - + _IO_acquire_lock (fp); result = _IO_fwide (fp, mode); - - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); return result; } --- glibc-2.3.2/libio/genops.c 2003-01-08 00:22:10.000000000 -0500 +++ glibc-2.3.2/libio/genops.c 2003-08-21 08:37:02.000000000 -0400 @@ -324,7 +324,7 @@ _IO_FILE *fp; { #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T - if (fp->_vtable_offset == 0 && _IO_fwide (fp, -1) != -1) + if (_IO_vtable_offset (fp) == 0 && _IO_fwide (fp, -1) != -1) return EOF; #endif @@ -357,7 +357,7 @@ _IO_FILE *fp; { #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T - if (fp->_vtable_offset == 0 && _IO_fwide (fp, -1) != -1) + if (_IO_vtable_offset (fp) == 0 && _IO_fwide (fp, -1) != -1) return EOF; #endif @@ -602,12 +602,9 @@ INTDEF(_IO_init) void -_IO_no_init (fp, flags, orientation, wd, jmp) +_IO_old_init (fp, flags) _IO_FILE *fp; int flags; - int orientation; - struct _IO_wide_data *wd; - struct _IO_jump_t *jmp; { fp->_flags = _IO_MAGIC|flags; fp->_flags2 = 0; @@ -633,6 +630,17 @@ if (fp->_lock != NULL) _IO_lock_init (*fp->_lock); #endif +} + +void +_IO_no_init (fp, flags, orientation, wd, jmp) + _IO_FILE *fp; + int flags; + int orientation; + struct _IO_wide_data *wd; + struct _IO_jump_t *jmp; +{ + _IO_old_init (fp, flags); fp->_mode = orientation; #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T if (orientation >= 0) @@ -826,7 +834,7 @@ if (((fp->_mode <= 0 && fp->_IO_write_ptr > fp->_IO_write_base) #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T - || (fp->_vtable_offset == 0 + || (_IO_vtable_offset (fp) == 0 && fp->_mode > 0 && (fp->_wide_data->_IO_write_ptr > fp->_wide_data->_IO_write_base)) #endif --- glibc-2.3.2/libio/getc.c 2001-07-07 15:21:03.000000000 -0400 +++ glibc-2.3.2/libio/getc.c 2003-09-19 22:37:02.000000000 -0400 @@ -1,4 +1,5 @@ -/* Copyright (C) 1993, 95, 96, 97, 98, 99 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, 2003 + Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -36,11 +37,9 @@ { int result; CHECK_FILE (fp, EOF); - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); result = _IO_getc_unlocked (fp); - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); return result; } --- glibc-2.3.2/libio/getchar.c 2001-07-07 15:21:03.000000000 -0400 +++ glibc-2.3.2/libio/getchar.c 2003-09-19 22:37:02.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1996, 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1996, 1997, 1998, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -34,12 +34,9 @@ getchar () { int result; - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, - _IO_stdin); - _IO_flockfile (_IO_stdin); + _IO_acquire_lock (_IO_stdin); result = _IO_getc_unlocked (_IO_stdin); - _IO_funlockfile (_IO_stdin); - _IO_cleanup_region_end (0); + _IO_release_lock (_IO_stdin); return result; } --- glibc-2.3.2/libio/getwc.c 2001-07-07 15:21:03.000000000 -0400 +++ glibc-2.3.2/libio/getwc.c 2003-09-19 22:37:02.000000000 -0400 @@ -1,4 +1,5 @@ -/* Copyright (C) 1993, 95, 96, 97, 98, 99, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, 2000, 2003 + Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -37,11 +38,9 @@ { wint_t result; CHECK_FILE (fp, WEOF); - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); result = _IO_getwc_unlocked (fp); - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); return result; } --- glibc-2.3.2/libio/getwchar.c 2001-07-07 15:21:03.000000000 -0400 +++ glibc-2.3.2/libio/getwchar.c 2003-09-19 22:37:02.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1993,1996,1997,1998,1999,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -34,11 +34,8 @@ getwchar () { wint_t result; - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, - _IO_stdin); - _IO_flockfile (_IO_stdin); + _IO_acquire_lock (_IO_stdin); result = _IO_getwc_unlocked (_IO_stdin); - _IO_funlockfile (_IO_stdin); - _IO_cleanup_region_end (0); + _IO_release_lock (_IO_stdin); return result; } --- glibc-2.3.2/libio/iofclose.c 2002-04-02 22:00:56.000000000 -0500 +++ glibc-2.3.2/libio/iofclose.c 2003-09-19 22:37:02.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1993,1995,1997-2001,2002 Free Software Foundation, Inc. +/* Copyright (C) 1993,1995,1997-2001,2002,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -49,7 +49,7 @@ /* We desperately try to help programs which are using streams in a strange way and mix old and new functions. Detect old streams here. */ - if (fp->_vtable_offset != 0) + if (_IO_vtable_offset (fp) != 0) return _IO_old_fclose (fp); #endif @@ -57,15 +57,13 @@ if (fp->_IO_file_flags & _IO_IS_FILEBUF) INTUSE(_IO_un_link) ((struct _IO_FILE_plus *) fp); - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); if (fp->_IO_file_flags & _IO_IS_FILEBUF) status = INTUSE(_IO_file_close_it) (fp); else status = fp->_flags & _IO_ERR_SEEN ? -1 : 0; _IO_FINISH (fp); - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); if (fp->_mode > 0) { #if _LIBC --- glibc-2.3.2/libio/iofdopen.c 2002-08-30 02:56:29.000000000 -0400 +++ glibc-2.3.2/libio/iofdopen.c 2003-04-12 11:39:42.000000000 -0400 @@ -1,4 +1,5 @@ -/* Copyright (C) 1993,1994,1997-1999,2000,2002 Free Software Foundation, Inc. +/* Copyright (C) 1993,1994,1997,1998,1999,2000,2002,2003 + Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -152,12 +153,12 @@ (use_mmap && (read_write & _IO_NO_WRITES)) ? &_IO_wfile_jumps_maybe_mmap : #endif - &INTUSE(_IO_wfile_jumps)); + &_IO_wfile_jumps); _IO_JUMPS (&new_f->fp) = #ifdef _G_HAVE_MMAP (use_mmap && (read_write & _IO_NO_WRITES)) ? &_IO_file_jumps_maybe_mmap : #endif - &INTUSE(_IO_file_jumps); + &_IO_file_jumps; INTUSE(_IO_file_init) (&new_f->fp); #if !_IO_UNIFIED_JUMPTABLES new_f->fp.vtable = NULL; --- glibc-2.3.2/libio/iofflush.c 2002-11-24 21:23:25.000000000 -0500 +++ glibc-2.3.2/libio/iofflush.c 2003-09-19 22:37:02.000000000 -0400 @@ -1,4 +1,5 @@ -/* Copyright (C) 1993,1995,1996,1997,1998,2002 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 2002, 2003 + Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -38,11 +39,9 @@ { int result; CHECK_FILE (fp, EOF); - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); result = _IO_SYNC (fp) ? EOF : 0; - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); return result; } } --- glibc-2.3.2/libio/iofgetpos.c 2002-11-05 02:38:25.000000000 -0500 +++ glibc-2.3.2/libio/iofgetpos.c 2003-09-19 22:37:02.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1995-2001, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1995-2001, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -38,8 +38,7 @@ _IO_off64_t pos; int result = 0; CHECK_FILE (fp, EOF); - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); pos = _IO_seekoff_unlocked (fp, 0, _IO_seek_cur, 0); if (_IO_in_backup (fp)) { @@ -72,8 +71,7 @@ posp->__state = fp->_wide_data->_IO_state; } - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); return result; } --- glibc-2.3.2/libio/iofgetpos64.c 2002-11-05 02:38:14.000000000 -0500 +++ glibc-2.3.2/libio/iofgetpos64.c 2003-09-19 22:37:02.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1995-2001, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1995-2001, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -37,17 +37,15 @@ { #ifdef _G_LSEEK64 _IO_off64_t pos; + int result = 0; CHECK_FILE (fp, EOF); - _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); pos = _IO_seekoff_unlocked (fp, 0, _IO_seek_cur, 0); if (_IO_in_backup (fp)) { if (fp->_mode <= 0) pos -= fp->_IO_save_end - fp->_IO_save_base; } - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); if (pos == _IO_pos_BAD) { /* ANSI explicitly requires setting errno to a positive value on @@ -56,14 +54,18 @@ if (errno == 0) __set_errno (EIO); # endif - return EOF; + result = EOF; } - posp->__pos = pos; - if (fp->_mode > 0 - && (*fp->_codecvt->__codecvt_do_encoding) (fp->_codecvt) < 0) - /* This is a stateful encoding, safe the state. */ - posp->__state = fp->_wide_data->_IO_state; - return 0; + else + { + posp->__pos = pos; + if (fp->_mode > 0 + && (*fp->_codecvt->__codecvt_do_encoding) (fp->_codecvt) < 0) + /* This is a stateful encoding, safe the state. */ + posp->__state = fp->_wide_data->_IO_state; + } + _IO_release_lock (fp); + return result; #else __set_errno (ENOSYS); return EOF; --- glibc-2.3.2/libio/iofgets.c 2002-08-26 17:15:51.000000000 -0400 +++ glibc-2.3.2/libio/iofgets.c 2003-09-19 22:37:02.000000000 -0400 @@ -1,4 +1,5 @@ -/* Copyright (C) 1993, 95, 96, 97, 98, 99, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, 2002, 2003 + Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -40,8 +41,7 @@ CHECK_FILE (fp, NULL); if (n <= 0) return NULL; - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); /* This is very tricky since a file descriptor may be in the non-blocking mode. The error flag doesn't mean much in this case. We return an error only when there is a new error. */ @@ -59,8 +59,7 @@ result = buf; } fp->_IO_file_flags |= old_error; - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); return result; } --- glibc-2.3.2/libio/iofgetws.c 2001-08-08 19:09:25.000000000 -0400 +++ glibc-2.3.2/libio/iofgetws.c 2003-09-19 22:37:02.000000000 -0400 @@ -1,4 +1,5 @@ -/* Copyright (C) 1993, 95, 96, 97, 98, 99, 2001 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, 2001 + Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -40,8 +41,7 @@ CHECK_FILE (fp, NULL); if (n <= 0) return NULL; - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); /* This is very tricky since a file descriptor may be in the non-blocking mode. The error flag doesn't mean much in this case. We return an error only when there is a new error. */ @@ -58,7 +58,6 @@ result = buf; } fp->_IO_file_flags |= old_error; - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); return result; } --- glibc-2.3.2/libio/iofopen.c 2002-08-30 02:45:05.000000000 -0400 +++ glibc-2.3.2/libio/iofopen.c 2003-04-12 11:39:42.000000000 -0400 @@ -1,4 +1,5 @@ -/* Copyright (C) 1993,1997,1998,1999,2000,2002 Free Software Foundation, Inc. +/* Copyright (C) 1993,1997,1998,1999,2000,2002,2003 + Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -80,11 +81,11 @@ new_f->fp.file._lock = &new_f->lock; #endif #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T - _IO_no_init (&new_f->fp.file, 0, 0, &new_f->wd, &INTUSE(_IO_wfile_jumps)); + _IO_no_init (&new_f->fp.file, 0, 0, &new_f->wd, &_IO_wfile_jumps); #else _IO_no_init (&new_f->fp.file, 1, 0, NULL, NULL); #endif - _IO_JUMPS (&new_f->fp) = &INTUSE(_IO_file_jumps); + _IO_JUMPS (&new_f->fp) = &_IO_file_jumps; INTUSE(_IO_file_init) (&new_f->fp); #if !_IO_UNIFIED_JUMPTABLES new_f->fp.vtable = NULL; --- glibc-2.3.2/libio/iofputs.c 2002-08-26 17:15:51.000000000 -0400 +++ glibc-2.3.2/libio/iofputs.c 2003-09-19 22:37:02.000000000 -0400 @@ -1,4 +1,5 @@ -/* Copyright (C) 1993,1996,1997,1998,1999,2002 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1996, 1997, 1998, 1999, 2002, 2003 + Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -36,13 +37,11 @@ _IO_size_t len = strlen (str); int result = EOF; CHECK_FILE (fp, EOF); - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); - if ((fp->_vtable_offset != 0 || _IO_fwide (fp, -1) == -1) + _IO_acquire_lock (fp); + if ((_IO_vtable_offset (fp) != 0 || _IO_fwide (fp, -1) == -1) && _IO_sputn (fp, str, len) == len) result = 1; - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); return result; } libc_hidden_def (_IO_fputs) --- glibc-2.3.2/libio/iofputws.c 2001-07-07 15:21:03.000000000 -0400 +++ glibc-2.3.2/libio/iofputws.c 2003-09-19 22:37:02.000000000 -0400 @@ -1,4 +1,5 @@ -/* Copyright (C) 1993,1996,1997,1998,1999,2000 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1996, 1997, 1998, 1999, 2000, 2003 + Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -36,12 +37,10 @@ _IO_size_t len = __wcslen (str); int result = EOF; CHECK_FILE (fp, EOF); - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); if (_IO_fwide (fp, 1) == 1 && _IO_sputn (fp, (char *) str, len) == len) result = 1; - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); return result; } --- glibc-2.3.2/libio/iofread.c 2002-08-26 17:15:51.000000000 -0400 +++ glibc-2.3.2/libio/iofread.c 2003-09-19 22:37:02.000000000 -0400 @@ -1,4 +1,5 @@ -/* Copyright (C) 1993,1995,1997,1998,1999,2002 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1995, 1997, 1998, 1999, 2002, 2003 + Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -39,11 +40,9 @@ CHECK_FILE (fp, 0); if (bytes_requested == 0) return 0; - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); bytes_read = INTUSE(_IO_sgetn) (fp, (char *) buf, bytes_requested); - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); return bytes_requested == bytes_read ? count : bytes_read / size; } INTDEF(_IO_fread) --- glibc-2.3.2/libio/iofsetpos.c 2002-11-05 02:33:34.000000000 -0500 +++ glibc-2.3.2/libio/iofsetpos.c 2003-09-19 22:37:02.000000000 -0400 @@ -1,4 +1,5 @@ -/* Copyright (C) 1993, 1995, 1997-2000, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1995, 1997, 1998, 1999, 2000, 2002, 2003 + Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -36,8 +37,7 @@ { int result; CHECK_FILE (fp, EOF); - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); if (_IO_seekpos_unlocked (fp, posp->__pos, _IOS_INPUT|_IOS_OUTPUT) == _IO_pos_BAD) { @@ -57,8 +57,7 @@ /* This is a stateful encoding, restore the state. */ fp->_wide_data->_IO_state = posp->__state; } - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); return result; } --- glibc-2.3.2/libio/iofsetpos64.c 2002-11-05 02:33:14.000000000 -0500 +++ glibc-2.3.2/libio/iofsetpos64.c 2003-09-19 22:37:02.000000000 -0400 @@ -1,4 +1,5 @@ -/* Copyright (C) 1993, 1995, 1997-2000, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1995, 1997, 1998, 1999, 2000, 2002, 2003 + Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -37,8 +38,7 @@ #ifdef _G_LSEEK64 int result; CHECK_FILE (fp, EOF); - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); if (_IO_seekpos_unlocked (fp, posp->__pos, _IOS_INPUT|_IOS_OUTPUT) == _IO_pos_BAD) { @@ -58,8 +58,7 @@ /* This is a stateful encoding, safe the state. */ fp->_wide_data->_IO_state = posp->__state; } - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); return result; #else __set_errno (ENOSYS); --- glibc-2.3.2/libio/ioftell.c 2002-11-05 02:38:39.000000000 -0500 +++ glibc-2.3.2/libio/ioftell.c 2003-09-19 22:37:02.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1995-2000, 2001, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1993,1995-2000,2001,2002,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -36,16 +36,14 @@ { _IO_off64_t pos; CHECK_FILE (fp, -1L); - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); pos = _IO_seekoff_unlocked (fp, 0, _IO_seek_cur, 0); if (_IO_in_backup (fp)) { - if (fp->_vtable_offset != 0 || fp->_mode <= 0) + if (_IO_vtable_offset (fp) != 0 || fp->_mode <= 0) pos -= fp->_IO_save_end - fp->_IO_save_base; } - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); if (pos == _IO_pos_BAD) { #ifdef EIO --- glibc-2.3.2/libio/iofwide.c 2002-03-13 00:16:37.000000000 -0500 +++ glibc-2.3.2/libio/iofwide.c 2003-09-19 22:37:02.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -100,20 +100,18 @@ /* Normalize the value. */ mode = mode < 0 ? -1 : (mode == 0 ? 0 : 1); - if (mode == 0) - /* The caller simply wants to know about the current orientation. */ - return fp->_mode; - #if defined SHARED && defined _LIBC \ && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1) if (__builtin_expect (&_IO_stdin_used == NULL, 0) - && (fp == _IO_stdin || fp == _IO_stdout || fp == _IO_stderr)) + && (fp == _IO_stdin || fp == _IO_stdout || fp == _IO_stderr)) /* This is for a stream in the glibc 2.0 format. */ return -1; #endif - if (fp->_mode != 0) - /* The orientation already has been determined. */ + /* The orientation already has been determined. */ + if (fp->_mode != 0 + /* Or the caller simply wants to know about the current orientation. */ + || mode == 0) return fp->_mode; /* Set the orientation appropriately. */ --- glibc-2.3.2/libio/iofwrite.c 2002-11-24 21:23:25.000000000 -0500 +++ glibc-2.3.2/libio/iofwrite.c 2003-09-19 22:37:02.000000000 -0400 @@ -1,4 +1,5 @@ -/* Copyright (C) 1993,96,97,98,99,2000,2002 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1996, 1997, 1998, 1999, 2000, 2002, 2003 + Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -39,12 +40,10 @@ CHECK_FILE (fp, 0); if (request == 0) return 0; - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); - if (fp->_vtable_offset != 0 || _IO_fwide (fp, -1) == -1) + _IO_acquire_lock (fp); + if (_IO_vtable_offset (fp) != 0 || _IO_fwide (fp, -1) == -1) written = _IO_sputn (fp, (const char *) buf, request); - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); if (written == request) return count; else --- glibc-2.3.2/libio/iogetdelim.c 2001-12-29 10:26:50.000000000 -0500 +++ glibc-2.3.2/libio/iogetdelim.c 2003-09-19 22:37:02.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1994, 1996, 1997, 1998, 2001 Free Software Foundation, Inc. +/* Copyright (C) 1994,1996,1997,1998,2001,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -55,8 +55,7 @@ return -1; } CHECK_FILE (fp, -1); - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); if (_IO_ferror_unlocked (fp)) { result = -1; @@ -120,8 +119,7 @@ result = cur_len; unlock_return: - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); return result; } --- glibc-2.3.2/libio/iogets.c 2002-02-25 01:46:02.000000000 -0500 +++ glibc-2.3.2/libio/iogets.c 2003-09-19 22:37:02.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1996, 1997, 1998, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1993,1996,1997,1998,2002,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -36,9 +36,7 @@ int ch; char *retval; - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, - _IO_stdin); - _IO_flockfile (_IO_stdin); + _IO_acquire_lock (_IO_stdin); ch = _IO_getc_unlocked (_IO_stdin); if (ch == EOF) { @@ -67,8 +65,7 @@ buf[count] = 0; retval = buf; unlock_return: - _IO_funlockfile (_IO_stdin); - _IO_cleanup_region_end (0); + _IO_release_lock (_IO_stdin); return retval; } --- glibc-2.3.2/libio/iopopen.c 2003-01-08 00:16:51.000000000 -0500 +++ glibc-2.3.2/libio/iopopen.c 2003-08-21 08:37:02.000000000 -0400 @@ -39,6 +39,7 @@ #ifdef _LIBC # include # include +# include #endif #include #include @@ -74,7 +75,7 @@ #ifndef _IO_waitpid #ifdef _LIBC -#define _IO_waitpid __waitpid +#define _IO_waitpid waitpid_not_cancel #else #define _IO_waitpid waitpid #endif @@ -89,7 +90,7 @@ #ifndef _IO_close #ifdef _LIBC -#define _IO_close __close +#define _IO_close close_not_cancel #else #define _IO_close close #endif --- glibc-2.3.2/libio/ioputs.c 2001-07-07 15:21:03.000000000 -0400 +++ glibc-2.3.2/libio/ioputs.c 2003-09-19 22:37:03.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1993,1996,1997,1998,1999,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -34,17 +34,15 @@ { int result = EOF; _IO_size_t len = strlen (str); - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, - _IO_stdout); - _IO_flockfile (_IO_stdout); + _IO_acquire_lock (_IO_stdout); - if ((_IO_stdout->_vtable_offset != 0 || _IO_fwide (_IO_stdout, -1) == -1) + if ((_IO_vtable_offset (_IO_stdout) != 0 + || _IO_fwide (_IO_stdout, -1) == -1) && _IO_sputn (_IO_stdout, str, len) == len && _IO_putc_unlocked ('\n', _IO_stdout) != EOF) result = len + 1; - _IO_funlockfile (_IO_stdout); - _IO_cleanup_region_end (0); + _IO_release_lock (_IO_stdout); return result; } --- glibc-2.3.2/libio/ioseekoff.c 2002-11-05 02:36:56.000000000 -0500 +++ glibc-2.3.2/libio/ioseekoff.c 2003-09-19 22:37:03.000000000 -0400 @@ -1,4 +1,5 @@ -/* Copyright (C) 1993,1997,1998,1999,2001,2002 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1997, 1998, 1999, 2001, 2002, 2003 + Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -56,7 +57,7 @@ { if (dir == _IO_seek_cur && _IO_in_backup (fp)) { - if (fp->_vtable_offset != 0 || fp->_mode <= 0) + if (_IO_vtable_offset (fp) != 0 || fp->_mode <= 0) offset -= fp->_IO_read_end - fp->_IO_read_ptr; else abort (); @@ -80,12 +81,8 @@ { _IO_off64_t retval; - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); - + _IO_acquire_lock (fp); retval = _IO_seekoff_unlocked (fp, offset, dir, mode); - - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); return retval; } --- glibc-2.3.2/libio/ioseekpos.c 2002-11-05 02:32:43.000000000 -0500 +++ glibc-2.3.2/libio/ioseekpos.c 2003-09-19 22:37:03.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1997, 1998, 1999, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1993,1997,1998,1999,2002,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -59,12 +59,8 @@ { _IO_off64_t retval; - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); - + _IO_acquire_lock (fp); retval = _IO_seekpos_unlocked (fp, pos, mode); - - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); return retval; } --- glibc-2.3.2/libio/iosetbuffer.c 2002-02-24 23:46:33.000000000 -0500 +++ glibc-2.3.2/libio/iosetbuffer.c 2003-09-19 22:37:03.000000000 -0400 @@ -1,4 +1,5 @@ -/* Copyright (C) 1993,95,96,97,98,99,2000,2002 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003 + Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -34,17 +35,15 @@ _IO_size_t size; { CHECK_FILE (fp, ); - _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); fp->_flags &= ~_IO_LINE_BUF; if (!buf) size = 0; (void) _IO_SETBUF (fp, buf, size); - if (fp->_vtable_offset == 0 && fp->_mode == 0 && _IO_CHECK_WIDE (fp)) + if (_IO_vtable_offset (fp) == 0 && fp->_mode == 0 && _IO_CHECK_WIDE (fp)) /* We also have to set the buffer using the wide char function. */ (void) _IO_WSETBUF (fp, buf, size); - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); } INTDEF(_IO_setbuffer) --- glibc-2.3.2/libio/iosetvbuf.c 2002-06-21 20:58:29.000000000 -0400 +++ glibc-2.3.2/libio/iosetvbuf.c 2003-09-19 22:37:03.000000000 -0400 @@ -1,4 +1,5 @@ -/* Copyright (C) 1993,96,97,98,99,2000,2001,2002 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 + Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -40,8 +41,7 @@ { int result; CHECK_FILE (fp, EOF); - _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); switch (mode) { case _IOFBF: @@ -96,8 +96,7 @@ result = _IO_SETBUF (fp, buf, size) == NULL ? EOF : 0; unlock_return: - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); return result; } INTDEF(_IO_setvbuf) --- glibc-2.3.2/libio/ioungetc.c 2002-02-24 23:44:09.000000000 -0500 +++ glibc-2.3.2/libio/ioungetc.c 2003-09-19 22:37:03.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1993,1996,1997,1998,2002 Free Software Foundation, Inc. +/* Copyright (C) 1993,1996,1997,1998,2002,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -36,11 +36,9 @@ CHECK_FILE (fp, EOF); if (c == EOF) return EOF; - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); result = INTUSE(_IO_sputbackc) (fp, (unsigned char) c); - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); return result; } --- glibc-2.3.2/libio/ioungetwc.c 2002-02-25 01:54:37.000000000 -0500 +++ glibc-2.3.2/libio/ioungetwc.c 2003-09-19 22:37:03.000000000 -0400 @@ -1,4 +1,5 @@ -/* Copyright (C) 1993, 1996-1999, 2001, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1996, 1997, 1998, 1999, 2001, 2002, 2003 + Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -35,14 +36,12 @@ { int result; CHECK_FILE (fp, WEOF); - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); _IO_fwide (fp, 1); if (c == WEOF) result = WEOF; else result = INTUSE(_IO_sputbackwc) (fp, c); - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); return result; } --- glibc-2.3.2/libio/iovdprintf.c 2002-08-02 17:46:58.000000000 -0400 +++ glibc-2.3.2/libio/iovdprintf.c 2003-04-12 11:39:43.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1995, 1997-2000, 2001, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1995,1997-2000,2001,2002,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -41,8 +41,8 @@ #ifdef _IO_MTSAFE_IO tmpfil.file._lock = NULL; #endif - _IO_no_init (&tmpfil.file, _IO_USER_LOCK, 0, &wd, &INTUSE(_IO_wfile_jumps)); - _IO_JUMPS (&tmpfil) = &INTUSE(_IO_file_jumps); + _IO_no_init (&tmpfil.file, _IO_USER_LOCK, 0, &wd, &_IO_wfile_jumps); + _IO_JUMPS (&tmpfil) = &_IO_file_jumps; INTUSE(_IO_file_init) (&tmpfil); #if !_IO_UNIFIED_JUMPTABLES tmpfil.vtable = NULL; --- glibc-2.3.2/libio/iovsprintf.c 2002-02-25 02:01:40.000000000 -0500 +++ glibc-2.3.2/libio/iovsprintf.c 2003-06-03 09:36:22.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1997-2000, 2001, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1997-2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -42,7 +42,7 @@ #endif _IO_no_init (&sf._sbf._f, _IO_USER_LOCK, -1, NULL, NULL); _IO_JUMPS ((struct _IO_FILE_plus *) &sf._sbf) = &_IO_str_jumps; - INTUSE(_IO_str_init_static) (&sf, string, -1, string); + _IO_str_init_static_internal (&sf, string, -1, string); ret = INTUSE(_IO_vfprintf) ((_IO_FILE *) &sf._sbf, format, args); _IO_putc_unlocked ('\0', (_IO_FILE *) &sf._sbf); return ret; --- glibc-2.3.2/libio/iovsscanf.c 2002-02-25 01:59:37.000000000 -0500 +++ glibc-2.3.2/libio/iovsscanf.c 2003-06-03 09:36:22.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1997-2000, 2001, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1997-2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -41,7 +41,7 @@ #endif _IO_no_init (&sf._sbf._f, _IO_USER_LOCK, -1, NULL, NULL); _IO_JUMPS ((struct _IO_FILE_plus *) &sf._sbf) = &_IO_str_jumps; - INTUSE(_IO_str_init_static) (&sf, (char*)string, 0, NULL); + _IO_str_init_static_internal (&sf, (char*)string, 0, NULL); ret = INTUSE(_IO_vfscanf) ((_IO_FILE *) &sf._sbf, format, args, NULL); return ret; } --- glibc-2.3.2/libio/libio.h 2002-08-30 02:45:05.000000000 -0400 +++ glibc-2.3.2/libio/libio.h 2003-09-19 22:37:03.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-1995, 1997-2001, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1991-1995, 1997-2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Written by Per Bothner . @@ -138,6 +138,7 @@ #define _IO_USER_LOCK 0x8000 #define _IO_FLAGS2_MMAP 1 +#define _IO_FLAGS2_NOTCANCEL 2 /* These are "formatting flags" matching the iostream fmtflags enum values. */ #define _IO_SKIPWS 01 @@ -502,7 +503,7 @@ __result = (__fp)->_mode; \ } \ else if (__builtin_constant_p (__mode) && (__mode) == 0) \ - __result = (__fp)->_mode; \ + __result = _IO_fwide_maybe_incompatible ? -1 : (__fp)->_mode; \ else \ __result = _IO_fwide (__fp, __result); \ __result; }) --- glibc-2.3.2/libio/libioP.h 2003-01-08 00:18:05.000000000 -0500 +++ glibc-2.3.2/libio/libioP.h 2003-09-19 22:37:03.000000000 -0400 @@ -110,8 +110,10 @@ # define _IO_JUMPS_FUNC(THIS) \ (*(struct _IO_jump_t **) ((void *) &_IO_JUMPS ((struct _IO_FILE_plus *) (THIS)) \ + (THIS)->_vtable_offset)) +# define _IO_vtable_offset(THIS) (THIS)->_vtable_offset #else # define _IO_JUMPS_FUNC(THIS) _IO_JUMPS ((struct _IO_FILE_plus *) (THIS)) +# define _IO_vtable_offset(THIS) 0 #endif #define _IO_WIDE_JUMPS_FUNC(THIS) _IO_WIDE_JUMPS(THIS) #ifdef _G_USING_THUNKS @@ -450,9 +452,11 @@ extern void _IO_default_imbue __P ((_IO_FILE *, void *)); extern struct _IO_jump_t _IO_file_jumps; +libc_hidden_proto (_IO_file_jumps) extern struct _IO_jump_t _IO_file_jumps_mmap attribute_hidden; extern struct _IO_jump_t _IO_file_jumps_maybe_mmap attribute_hidden; -extern struct _IO_jump_t _IO_wfile_jumps attribute_hidden; +extern struct _IO_jump_t _IO_wfile_jumps; +libc_hidden_proto (_IO_wfile_jumps) extern struct _IO_jump_t _IO_wfile_jumps_mmap attribute_hidden; extern struct _IO_jump_t _IO_wfile_jumps_maybe_mmap attribute_hidden; extern struct _IO_jump_t _IO_old_file_jumps attribute_hidden; @@ -477,6 +481,7 @@ extern int _IO_old_fgetpos64 __P ((_IO_FILE *, _IO_fpos64_t *)); extern int _IO_new_fsetpos64 __P ((_IO_FILE *, const _IO_fpos64_t *)); extern int _IO_old_fsetpos64 __P ((_IO_FILE *, const _IO_fpos64_t *)); +extern void _IO_old_init __P ((_IO_FILE *fp, int flags)); #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T @@ -616,8 +621,7 @@ extern _IO_ssize_t _IO_str_count __P ((_IO_FILE *)); /* And the wide character versions. */ -extern void _IO_wstr_init_static __P ((_IO_FILE *, wchar_t *, int, wchar_t *)); -extern void _IO_wstr_init_readonly __P ((_IO_FILE *, const char *, int)); +extern void _IO_wstr_init_static __P ((_IO_FILE *, wchar_t *, _IO_size_t, wchar_t *)); extern _IO_ssize_t _IO_wstr_count __P ((_IO_FILE *)); extern _IO_wint_t _IO_wstr_overflow __P ((_IO_FILE *, _IO_wint_t)); extern _IO_wint_t _IO_wstr_underflow __P ((_IO_FILE *)); @@ -707,7 +711,7 @@ extern _IO_off64_t _IO_str_seekoff_internal __P ((_IO_FILE *, _IO_off64_t, int, int)); extern void _IO_str_init_static_internal __P ((struct _IO_strfile_ *, char *, - int, char *)); + _IO_size_t, char *)); extern struct _IO_jump_t _IO_file_jumps_internal attribute_hidden; extern struct _IO_jump_t _IO_wfile_jumps_internal attribute_hidden; @@ -966,3 +970,12 @@ #else # define CHECK_FILE(FILE, RET) COERCE_FILE (FILE) #endif + +static inline void +__attribute__ ((__always_inline__)) +_IO_acquire_lock_fct (_IO_FILE **p) +{ + _IO_FILE *fp = *p; + if ((fp->_flags & _IO_USER_LOCK) == 0) + _IO_funlockfile (fp); +} --- glibc-2.3.2/libio/memstream.c 2002-08-10 14:08:29.000000000 -0400 +++ glibc-2.3.2/libio/memstream.c 2003-09-19 22:37:03.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1995,1996,1997,1999,2000,2002 Free Software Foundation, Inc. +/* Copyright (C) 1995-1997,1999,2000,2002,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -32,8 +32,6 @@ static int _IO_mem_sync __P ((_IO_FILE* fp)); static void _IO_mem_finish __P ((_IO_FILE* fp, int)); -static int _IO_wmem_sync __P ((_IO_FILE* fp)); -static void _IO_wmem_finish __P ((_IO_FILE* fp, int)); static struct _IO_jump_t _IO_mem_jumps = @@ -60,30 +58,6 @@ JUMP_INIT(imbue, _IO_default_imbue) }; -static struct _IO_jump_t _IO_wmem_jumps = -{ - JUMP_INIT_DUMMY, - JUMP_INIT (finish, (_IO_finish_t) _IO_wmem_finish), - JUMP_INIT (overflow, (_IO_overflow_t) _IO_wstr_overflow), - JUMP_INIT (underflow, (_IO_underflow_t) _IO_wstr_underflow), - JUMP_INIT (uflow, (_IO_underflow_t) INTUSE(_IO_wdefault_uflow)), - JUMP_INIT (pbackfail, (_IO_pbackfail_t) _IO_wstr_pbackfail), - JUMP_INIT (xsputn, (_IO_xsputn_t) INTUSE(_IO_wdefault_xsputn)), - JUMP_INIT (xsgetn, (_IO_xsgetn_t) INTUSE(_IO_wdefault_xsgetn)), - JUMP_INIT (seekoff, _IO_wstr_seekoff), - JUMP_INIT (seekpos, _IO_default_seekpos), - JUMP_INIT (setbuf, _IO_default_setbuf), - JUMP_INIT (sync, (_IO_sync_t) _IO_wmem_sync), - JUMP_INIT (doallocate, INTUSE(_IO_wdefault_doallocate)), - JUMP_INIT (read, _IO_default_read), - JUMP_INIT (write, _IO_default_write), - JUMP_INIT (seek, _IO_default_seek), - JUMP_INIT (close, _IO_default_close), - JUMP_INIT (stat, _IO_default_stat), - JUMP_INIT(showmanyc, _IO_default_showmanyc), - JUMP_INIT(imbue, _IO_default_imbue) -}; - /* Open a stream that writes into a malloc'd buffer that is expanded as necessary. *BUFLOC and *SIZELOC are updated with the buffer's location and the number of characters written on fflush or fclose. */ @@ -112,9 +86,9 @@ buf = malloc (_IO_BUFSIZ); if (buf == NULL) return NULL; - _IO_no_init (&new_f->fp._sf._sbf._f, 0, 0, &new_f->wd, &_IO_wmem_jumps); + _IO_init (&new_f->fp._sf._sbf._f, 0); _IO_JUMPS ((struct _IO_FILE_plus *) &new_f->fp._sf._sbf) = &_IO_mem_jumps; - INTUSE(_IO_str_init_static) (&new_f->fp._sf, buf, _IO_BUFSIZ, buf); + _IO_str_init_static_internal (&new_f->fp._sf, buf, _IO_BUFSIZ, buf); new_f->fp._sf._sbf._f._flags &= ~_IO_USER_BUF; new_f->fp._sf._s._allocate_buffer = (_IO_alloc_type) malloc; new_f->fp._sf._s._free_buffer = (_IO_free_type) free; @@ -172,55 +146,3 @@ INTUSE(_IO_default_finish) (fp, 0); } - - -static int -_IO_wmem_sync (fp) - _IO_FILE* fp; -{ - struct _IO_FILE_memstream *mp = (struct _IO_FILE_memstream *) fp; - int res; - - res = _IO_default_sync (fp); - if (res < 0) - return res; - - if (fp->_wide_data->_IO_write_ptr == fp->_wide_data->_IO_write_end) - { - _IO_wstr_overflow (fp, L'\0'); - --fp->_wide_data->_IO_write_ptr; - } - else - *fp->_wide_data->_IO_write_ptr = '\0'; - - *mp->bufloc = (char *) fp->_wide_data->_IO_write_base; - *mp->sizeloc = (fp->_wide_data->_IO_write_ptr - - fp->_wide_data->_IO_write_base); - - return 0; -} - - -static void -_IO_wmem_finish (fp, dummy) - _IO_FILE* fp; - int dummy; -{ - struct _IO_FILE_memstream *mp = (struct _IO_FILE_memstream *) fp; - - *mp->bufloc = (char *) realloc (fp->_wide_data->_IO_write_base, - (fp->_wide_data->_IO_write_ptr - - fp->_wide_data->_IO_write_base + 1) - * sizeof (wchar_t)); - if (*mp->bufloc != NULL) - { - ((wchar_t *) (*mp->bufloc))[fp->_wide_data->_IO_write_ptr - - fp->_wide_data->_IO_write_base] = '\0'; - *mp->sizeloc = (fp->_wide_data->_IO_write_ptr - - fp->_wide_data->_IO_write_base); - } - - fp->_wide_data->_IO_buf_base = NULL; - - INTUSE(_IO_default_finish) (fp, 0); -} --- glibc-2.3.2/libio/obprintf.c 2002-02-25 02:01:53.000000000 -0500 +++ glibc-2.3.2/libio/obprintf.c 2003-06-03 09:36:22.000000000 -0400 @@ -1,5 +1,5 @@ /* Print output of stream to given obstack. - Copyright (C) 1996,1997,1999,2000,2001,2002 Free Software Foundation, Inc. + Copyright (C) 1996,1997,1999-2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1996. @@ -153,9 +153,9 @@ assert (size != 0); } - INTUSE(_IO_str_init_static) ((struct _IO_strfile_ *) &new_f.ofile, - obstack_base (obstack), - size, obstack_next_free (obstack)); + _IO_str_init_static_internal ((struct _IO_strfile_ *) &new_f.ofile, + obstack_base (obstack), + size, obstack_next_free (obstack)); /* Now allocate the rest of the current chunk. */ assert (size == (new_f.ofile.file.file._IO_write_end - new_f.ofile.file.file._IO_write_base)); --- glibc-2.3.2/libio/oldfileops.c 2002-09-24 01:11:47.000000000 -0400 +++ glibc-2.3.2/libio/oldfileops.c 2003-09-19 22:37:03.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1993,95,97,98,99,2000,2002 Free Software Foundation, Inc. +/* Copyright (C) 1993,95,97,98,99,2000,2002,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Written by Per Bothner . @@ -128,6 +128,16 @@ fp->file._vtable_offset = ((int) sizeof (struct _IO_FILE) - (int) sizeof (struct _IO_FILE_complete)); fp->file._fileno = -1; + +#if defined SHARED && defined _LIBC + if (__builtin_expect (&_IO_stdin_used != NULL, 1) + || (fp != (struct _IO_FILE_plus *) _IO_stdin + && fp != (struct _IO_FILE_plus *) _IO_stdout + && fp != (struct _IO_FILE_plus *) _IO_stderr)) + /* The object is dynamically allocated and large enough. Initialize + the _mode element as well. */ + ((struct _IO_FILE_complete *) fp)->_mode = -1; +#endif } int --- glibc-2.3.2/libio/oldiofclose.c 2002-02-25 02:30:49.000000000 -0500 +++ glibc-2.3.2/libio/oldiofclose.c 2003-09-19 22:37:03.000000000 -0400 @@ -52,15 +52,13 @@ if (fp->_IO_file_flags & _IO_IS_FILEBUF) INTUSE(_IO_un_link) ((struct _IO_FILE_plus *) fp); - _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); if (fp->_IO_file_flags & _IO_IS_FILEBUF) status = _IO_old_file_close_it (fp); else status = fp->_flags & _IO_ERR_SEEN ? -1 : 0; _IO_FINISH (fp); - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); if (_IO_have_backup (fp)) INTUSE(_IO_free_backup_area) (fp); if (fp != _IO_stdin && fp != _IO_stdout && fp != _IO_stderr) --- glibc-2.3.2/libio/oldiofdopen.c 2002-04-09 03:30:11.000000000 -0400 +++ glibc-2.3.2/libio/oldiofdopen.c 2003-05-12 12:13:04.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1993,94,97,99,2000,2002 Free Software Foundation, Inc. +/* Copyright (C) 1993,94,97,99,2000,2002,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -114,7 +114,7 @@ #ifdef _IO_MTSAFE_IO new_f->fp.file._lock = &new_f->lock; #endif - INTUSE(_IO_init) (&new_f->fp.file, 0); + _IO_old_init (&new_f->fp.file, 0); _IO_JUMPS (&new_f->fp) = &_IO_old_file_jumps; _IO_old_file_init (&new_f->fp); #if !_IO_UNIFIED_JUMPTABLES --- glibc-2.3.2/libio/oldiofgetpos.c 2002-11-05 02:41:48.000000000 -0500 +++ glibc-2.3.2/libio/oldiofgetpos.c 2003-09-19 22:37:03.000000000 -0400 @@ -1,4 +1,5 @@ -/* Copyright (C) 1993,95,96,97,98,99,2000, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003 + Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -38,13 +39,11 @@ { _IO_off_t pos; CHECK_FILE (fp, EOF); - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); pos = _IO_seekoff_unlocked (fp, 0, _IO_seek_cur, 0); if (_IO_in_backup (fp)) pos -= fp->_IO_save_end - fp->_IO_save_base; - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); if (pos == _IO_pos_BAD) { /* ANSI explicitly requires setting errno to a positive value on --- glibc-2.3.2/libio/oldiofgetpos64.c 2002-11-05 02:41:38.000000000 -0500 +++ glibc-2.3.2/libio/oldiofgetpos64.c 2003-09-19 22:37:03.000000000 -0400 @@ -1,4 +1,5 @@ -/* Copyright (C) 1993,95,96,97,98,99,2000, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003 + Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -39,13 +40,11 @@ #ifdef _G_LSEEK64 _IO_off64_t pos; CHECK_FILE (fp, EOF); - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); pos = _IO_seekoff_unlocked (fp, 0, _IO_seek_cur, 0); if (_IO_in_backup (fp)) pos -= fp->_IO_save_end - fp->_IO_save_base; - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); if (pos == _IO_pos_BAD) { /* ANSI explicitly requires setting errno to a positive value on --- glibc-2.3.2/libio/oldiofopen.c 2002-02-25 02:31:13.000000000 -0500 +++ glibc-2.3.2/libio/oldiofopen.c 2003-05-12 12:13:04.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1997, 1999, 2000, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1993,1997,1999,2000,2002,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -53,7 +53,7 @@ #ifdef _IO_MTSAFE_IO new_f->fp.file._lock = &new_f->lock; #endif - INTUSE(_IO_init) (&new_f->fp.file, 0); + _IO_old_init (&new_f->fp.file, 0); _IO_JUMPS (&new_f->fp) = &_IO_old_file_jumps; _IO_old_file_init (&new_f->fp); #if !_IO_UNIFIED_JUMPTABLES --- glibc-2.3.2/libio/oldiofsetpos.c 2002-11-05 02:34:01.000000000 -0500 +++ glibc-2.3.2/libio/oldiofsetpos.c 2003-09-19 22:37:03.000000000 -0400 @@ -1,4 +1,5 @@ -/* Copyright (C) 1993,95,97,98,99,2000,2002 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1995, 1997, 1998, 1999, 2000, 2002, 2003 + Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -37,8 +38,7 @@ { int result; CHECK_FILE (fp, EOF); - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); if (_IO_seekpos_unlocked (fp, posp->__pos, _IOS_INPUT|_IOS_OUTPUT) == _IO_pos_BAD) { @@ -52,8 +52,7 @@ } else result = 0; - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); return result; } --- glibc-2.3.2/libio/oldiofsetpos64.c 2002-11-05 02:34:11.000000000 -0500 +++ glibc-2.3.2/libio/oldiofsetpos64.c 2003-09-19 22:37:03.000000000 -0400 @@ -1,4 +1,5 @@ -/* Copyright (C) 1993,95,97,98,99,2000,2002 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1995, 1997, 1998, 1999, 2000, 2002, 2003 + Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -39,8 +40,7 @@ #ifdef _G_LSEEK64 int result; CHECK_FILE (fp, EOF); - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); if (_IO_seekpos_unlocked (fp, posp->__pos, _IOS_INPUT|_IOS_OUTPUT) == _IO_pos_BAD) { @@ -54,8 +54,7 @@ } else result = 0; - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); return result; #else __set_errno (ENOSYS); --- glibc-2.3.2/libio/oldtmpfile.c 2002-04-08 03:02:09.000000000 -0400 +++ glibc-2.3.2/libio/oldtmpfile.c 2003-09-19 22:37:03.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1993, 1996-1999, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1993, 1996-2000, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -43,7 +43,7 @@ /* Note that this relies on the Unix semantics that a file is not really removed until it is closed. */ - (void) remove (buf); + (void) __unlink (buf); if ((f = _IO_old_fdopen (fd, "w+b")) == NULL) __close (fd); --- glibc-2.3.2/libio/peekc.c 2001-07-07 15:21:03.000000000 -0400 +++ glibc-2.3.2/libio/peekc.c 2003-09-19 22:37:03.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1995, 1996, 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1993,1995,1996,1997,1998,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -36,10 +36,8 @@ { int result; CHECK_FILE (fp, EOF); - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); result = _IO_peekc_unlocked (fp); - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); return result; } --- glibc-2.3.2/libio/putc.c 2002-02-25 02:22:50.000000000 -0500 +++ glibc-2.3.2/libio/putc.c 2003-09-19 22:37:03.000000000 -0400 @@ -1,4 +1,5 @@ -/* Copyright (C) 1991,1995,1996,1997,1998,2002 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1995, 1996, 1997, 1998, 2002, 2003 + Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -28,11 +29,9 @@ { int result; CHECK_FILE (fp, EOF); - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); result = _IO_putc_unlocked (c, fp); - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); return result; } INTDEF(_IO_putc) --- glibc-2.3.2/libio/putchar.c 2001-07-07 15:21:03.000000000 -0400 +++ glibc-2.3.2/libio/putchar.c 2003-09-19 22:37:03.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1995, 1996, 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1991,1995,1996,1997,1998,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -26,12 +26,9 @@ int c; { int result; - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, - _IO_stdout); - _IO_flockfile (_IO_stdout); + _IO_acquire_lock (_IO_stdout); result = _IO_putc_unlocked (c, _IO_stdout); - _IO_funlockfile (_IO_stdout); - _IO_cleanup_region_end (0); + _IO_release_lock (_IO_stdout); return result; } --- glibc-2.3.2/libio/putwc.c 2002-08-10 14:08:29.000000000 -0400 +++ glibc-2.3.2/libio/putwc.c 2003-09-19 22:37:03.000000000 -0400 @@ -1,4 +1,5 @@ -/* Copyright (C) 1991,95,96,97,98,99,2002 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1995, 1996, 1997, 1998, 1999, 2002, 2003 + Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -26,11 +27,9 @@ { wint_t result; CHECK_FILE (fp, WEOF); - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); result = _IO_putwc_unlocked (wc, fp); - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); return result; } libc_hidden_def (putwc) --- glibc-2.3.2/libio/putwchar.c 2001-07-07 15:21:03.000000000 -0400 +++ glibc-2.3.2/libio/putwchar.c 2003-09-19 22:37:03.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 95, 96, 97, 98, 99 Free Software Foundation, Inc. +/* Copyright (C) 1991,95,96,97,98,99,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -24,11 +24,8 @@ wchar_t wc; { wint_t result; - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, - _IO_stdout); - _IO_flockfile (_IO_stdout); + _IO_acquire_lock (_IO_stdout); result = _IO_putwc_unlocked (wc, _IO_stdout); - _IO_funlockfile (_IO_stdout); - _IO_cleanup_region_end (0); + _IO_release_lock (_IO_stdout); return result; } --- glibc-2.3.2/libio/rewind.c 2002-08-10 14:08:29.000000000 -0400 +++ glibc-2.3.2/libio/rewind.c 2003-09-19 22:37:03.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1993,96,97,98,2002 Free Software Foundation, Inc. +/* Copyright (C) 1993,96,97,98,2002,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -33,11 +33,9 @@ _IO_FILE *fp; { CHECK_FILE (fp, ); - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); - _IO_flockfile (fp); + _IO_acquire_lock (fp); _IO_rewind (fp); _IO_clearerr (fp); - _IO_funlockfile (fp); - _IO_cleanup_region_end (0); + _IO_release_lock (fp); } libc_hidden_def (rewind) --- glibc-2.3.2/libio/stdfiles.c 2002-03-12 20:05:41.000000000 -0500 +++ glibc-2.3.2/libio/stdfiles.c 2003-04-12 11:39:43.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1993-1997,1999,2000,2002 Free Software Foundation, Inc. +/* Copyright (C) 1993-1997,1999,2000,2002,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -39,30 +39,30 @@ # define DEF_STDFILE(NAME, FD, CHAIN, FLAGS) \ static _IO_lock_t _IO_stdfile_##FD##_lock = _IO_lock_initializer; \ static struct _IO_wide_data _IO_wide_data_##FD \ - = { ._wide_vtable = &INTUSE(_IO_wfile_jumps) }; \ + = { ._wide_vtable = &_IO_wfile_jumps }; \ struct _IO_FILE_plus NAME \ = {FILEBUF_LITERAL(CHAIN, FLAGS, FD, &_IO_wide_data_##FD), \ - &INTUSE(_IO_file_jumps)}; + &_IO_file_jumps}; # else # define DEF_STDFILE(NAME, FD, CHAIN, FLAGS) \ static _IO_lock_t _IO_stdfile_##FD##_lock = _IO_lock_initializer; \ struct _IO_FILE_plus NAME \ = {FILEBUF_LITERAL(CHAIN, FLAGS, FD, NULL), \ - &INTUSE(_IO_file_jumps)}; + &_IO_file_jumps}; # endif #else # if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T # define DEF_STDFILE(NAME, FD, CHAIN, FLAGS) \ static struct _IO_wide_data _IO_wide_data_##FD \ - = { ._wide_vtable = &INTUSE(_IO_wfile_jumps) }; \ + = { ._wide_vtable = &_IO_wfile_jumps }; \ struct _IO_FILE_plus NAME \ = {FILEBUF_LITERAL(CHAIN, FLAGS, FD, &_IO_wide_data_##FD), \ - &INTUSE(_IO_file_jumps)}; + &_IO_file_jumps}; # else # define DEF_STDFILE(NAME, FD, CHAIN, FLAGS) \ struct _IO_FILE_plus NAME \ = {FILEBUF_LITERAL(CHAIN, FLAGS, FD, NULL), \ - &INTUSE(_IO_file_jumps)}; + &_IO_file_jumps}; # endif #endif --- glibc-2.3.2/libio/stdio.h 2002-08-27 21:55:38.000000000 -0400 +++ glibc-2.3.2/libio/stdio.h 2003-09-19 22:37:03.000000000 -0400 @@ -1,5 +1,5 @@ /* Define ISO C stdio on top of C++ iostreams. - Copyright (C) 1991,1994-1999,2000,01,02 Free Software Foundation, Inc. + Copyright (C) 1991,1994-2002,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -156,25 +156,28 @@ __BEGIN_NAMESPACE_STD -/* Create a temporary file and open it read/write. */ +/* Create a temporary file and open it read/write. + + This function is a possible cancellation points and therefore not + marked with __THROW. */ #ifndef __USE_FILE_OFFSET64 -extern FILE *tmpfile (void) __THROW; +extern FILE *tmpfile (void); #else # ifdef __REDIRECT -extern FILE *__REDIRECT (tmpfile, (void) __THROW, tmpfile64); +extern FILE *__REDIRECT (tmpfile, (void), tmpfile64); # else # define tmpfile tmpfile64 # endif #endif +#ifdef __USE_LARGEFILE64 +extern FILE *tmpfile64 (void); +#endif + /* Generate a temporary filename. */ extern char *tmpnam (char *__s) __THROW; __END_NAMESPACE_STD -#ifdef __USE_LARGEFILE64 -extern FILE *tmpfile64 (void) __THROW; -#endif - #ifdef __USE_MISC /* This is the reentrant variant of `tmpnam'. The only difference is that it does not allow S to be NULL. */ @@ -196,41 +199,61 @@ __BEGIN_NAMESPACE_STD -/* Close STREAM. */ -extern int fclose (FILE *__stream) __THROW; -/* Flush STREAM, or all streams if STREAM is NULL. */ -extern int fflush (FILE *__stream) __THROW; +/* Close STREAM. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ +extern int fclose (FILE *__stream); +/* Flush STREAM, or all streams if STREAM is NULL. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ +extern int fflush (FILE *__stream); __END_NAMESPACE_STD #ifdef __USE_MISC -/* Faster versions when locking is not required. */ -extern int fflush_unlocked (FILE *__stream) __THROW; +/* Faster versions when locking is not required. + + This function is not part of POSIX and therefore no official + cancellation point. But due to similarity with an POSIX interface + or due to the implementation it is a cancellation point and + therefore not marked with __THROW. */ +extern int fflush_unlocked (FILE *__stream); #endif #ifdef __USE_GNU -/* Close all streams. */ -extern int fcloseall (void) __THROW; +/* Close all streams. + + This function is not part of POSIX and therefore no official + cancellation point. But due to similarity with an POSIX interface + or due to the implementation it is a cancellation point and + therefore not marked with __THROW. */ +extern int fcloseall (void); #endif __BEGIN_NAMESPACE_STD #ifndef __USE_FILE_OFFSET64 -/* Open a file and create a new stream for it. */ +/* Open a file and create a new stream for it. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ extern FILE *fopen (__const char *__restrict __filename, - __const char *__restrict __modes) __THROW; -/* Open a file, replacing an existing stream with it. */ + __const char *__restrict __modes); +/* Open a file, replacing an existing stream with it. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ extern FILE *freopen (__const char *__restrict __filename, __const char *__restrict __modes, - FILE *__restrict __stream) __THROW; + FILE *__restrict __stream); #else # ifdef __REDIRECT extern FILE *__REDIRECT (fopen, (__const char *__restrict __filename, - __const char *__restrict __modes) __THROW, - fopen64); + __const char *__restrict __modes), fopen64); extern FILE *__REDIRECT (freopen, (__const char *__restrict __filename, __const char *__restrict __modes, - FILE *__restrict __stream) __THROW, - freopen64); + FILE *__restrict __stream), freopen64); # else # define fopen fopen64 # define freopen freopen64 @@ -239,10 +262,10 @@ __END_NAMESPACE_STD #ifdef __USE_LARGEFILE64 extern FILE *fopen64 (__const char *__restrict __filename, - __const char *__restrict __modes) __THROW; + __const char *__restrict __modes); extern FILE *freopen64 (__const char *__restrict __filename, __const char *__restrict __modes, - FILE *__restrict __stream) __THROW; + FILE *__restrict __stream); #endif #ifdef __USE_POSIX @@ -291,21 +314,32 @@ __BEGIN_NAMESPACE_STD -/* Write formatted output to STREAM. */ +/* Write formatted output to STREAM. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ extern int fprintf (FILE *__restrict __stream, - __const char *__restrict __format, ...) __THROW; -/* Write formatted output to stdout. */ -extern int printf (__const char *__restrict __format, ...) __THROW; + __const char *__restrict __format, ...); +/* Write formatted output to stdout. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ +extern int printf (__const char *__restrict __format, ...); /* Write formatted output to S. */ extern int sprintf (char *__restrict __s, __const char *__restrict __format, ...) __THROW; -/* Write formatted output to S from argument list ARG. */ +/* Write formatted output to S from argument list ARG. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format, - _G_va_list __arg) __THROW; -/* Write formatted output to stdout from argument list ARG. */ -extern int vprintf (__const char *__restrict __format, _G_va_list __arg) - __THROW; + _G_va_list __arg); +/* Write formatted output to stdout from argument list ARG. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ +extern int vprintf (__const char *__restrict __format, _G_va_list __arg); /* Write formatted output to S from argument list ARG. */ extern int vsprintf (char *__restrict __s, __const char *__restrict __format, _G_va_list __arg) __THROW; @@ -337,21 +371,32 @@ __const char *__restrict __fmt, ...) __THROW __attribute__ ((__format__ (__printf__, 2, 3))); -/* Write formatted output to a file descriptor. */ +/* Write formatted output to a file descriptor. + + These functions are not part of POSIX and therefore no official + cancellation point. But due to similarity with an POSIX interface + or due to the implementation they are cancellation points and + therefore not marked with __THROW. */ extern int vdprintf (int __fd, __const char *__restrict __fmt, _G_va_list __arg) - __THROW __attribute__ ((__format__ (__printf__, 2, 0))); + __attribute__ ((__format__ (__printf__, 2, 0))); extern int dprintf (int __fd, __const char *__restrict __fmt, ...) - __THROW __attribute__ ((__format__ (__printf__, 2, 3))); + __attribute__ ((__format__ (__printf__, 2, 3))); #endif __BEGIN_NAMESPACE_STD -/* Read formatted input from STREAM. */ +/* Read formatted input from STREAM. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ extern int fscanf (FILE *__restrict __stream, - __const char *__restrict __format, ...) __THROW; -/* Read formatted input from stdin. */ -extern int scanf (__const char *__restrict __format, ...) __THROW; + __const char *__restrict __format, ...); +/* Read formatted input from stdin. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ +extern int scanf (__const char *__restrict __format, ...); /* Read formatted input from S. */ extern int sscanf (__const char *__restrict __s, __const char *__restrict __format, ...) __THROW; @@ -359,14 +404,20 @@ #ifdef __USE_ISOC99 __BEGIN_NAMESPACE_C99 -/* Read formatted input from S into argument list ARG. */ +/* Read formatted input from S into argument list ARG. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format, _G_va_list __arg) - __THROW __attribute__ ((__format__ (__scanf__, 2, 0))); + __attribute__ ((__format__ (__scanf__, 2, 0))); + +/* Read formatted input from stdin into argument list ARG. -/* Read formatted input from stdin into argument list ARG. */ + This function is a possible cancellation point and therefore not + marked with __THROW. */ extern int vscanf (__const char *__restrict __format, _G_va_list __arg) - __THROW __attribute__ ((__format__ (__scanf__, 1, 0))); + __attribute__ ((__format__ (__scanf__, 1, 0))); /* Read formatted input from S into argument list ARG. */ extern int vsscanf (__const char *__restrict __s, @@ -377,12 +428,18 @@ __BEGIN_NAMESPACE_STD -/* Read a character from STREAM. */ -extern int fgetc (FILE *__stream) __THROW; -extern int getc (FILE *__stream) __THROW; +/* Read a character from STREAM. -/* Read a character from stdin. */ -extern int getchar (void) __THROW; + These functions are possible cancellation points and therefore not + marked with __THROW. */ +extern int fgetc (FILE *__stream); +extern int getc (FILE *__stream); + +/* Read a character from stdin. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ +extern int getchar (void); __END_NAMESPACE_STD /* The C standard explicitly says this is a macro, so we always do the @@ -390,24 +447,41 @@ #define getc(_fp) _IO_getc (_fp) #if defined __USE_POSIX || defined __USE_MISC -/* These are defined in POSIX.1:1996. */ -extern int getc_unlocked (FILE *__stream) __THROW; -extern int getchar_unlocked (void) __THROW; +/* These are defined in POSIX.1:1996. + + These functions are possible cancellation points and therefore not + marked with __THROW. */ +extern int getc_unlocked (FILE *__stream); +extern int getchar_unlocked (void); #endif /* Use POSIX or MISC. */ #ifdef __USE_MISC -/* Faster version when locking is not necessary. */ -extern int fgetc_unlocked (FILE *__stream) __THROW; +/* Faster version when locking is not necessary. + + This function is not part of POSIX and therefore no official + cancellation point. But due to similarity with an POSIX interface + or due to the implementation it is a cancellation point and + therefore not marked with __THROW. */ +extern int fgetc_unlocked (FILE *__stream); #endif /* Use MISC. */ __BEGIN_NAMESPACE_STD -/* Write a character to STREAM. */ -extern int fputc (int __c, FILE *__stream) __THROW; -extern int putc (int __c, FILE *__stream) __THROW; +/* Write a character to STREAM. + + These functions are possible cancellation points and therefore not + marked with __THROW. -/* Write a character to stdout. */ -extern int putchar (int __c) __THROW; + These functions is a possible cancellation point and therefore not + marked with __THROW. */ +extern int fputc (int __c, FILE *__stream); +extern int putc (int __c, FILE *__stream); + +/* Write a character to stdout. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ +extern int putchar (int __c); __END_NAMESPACE_STD /* The C standard explicitly says this can be a macro, @@ -415,40 +489,59 @@ #define putc(_ch, _fp) _IO_putc (_ch, _fp) #ifdef __USE_MISC -/* Faster version when locking is not necessary. */ -extern int fputc_unlocked (int __c, FILE *__stream) __THROW; +/* Faster version when locking is not necessary. + + This function is not part of POSIX and therefore no official + cancellation point. But due to similarity with an POSIX interface + or due to the implementation it is a cancellation point and + therefore not marked with __THROW. */ +extern int fputc_unlocked (int __c, FILE *__stream); #endif /* Use MISC. */ #if defined __USE_POSIX || defined __USE_MISC -/* These are defined in POSIX.1:1996. */ -extern int putc_unlocked (int __c, FILE *__stream) __THROW; -extern int putchar_unlocked (int __c) __THROW; +/* These are defined in POSIX.1:1996. + + These functions are possible cancellation points and therefore not + marked with __THROW. */ +extern int putc_unlocked (int __c, FILE *__stream); +extern int putchar_unlocked (int __c); #endif /* Use POSIX or MISC. */ -#if defined __USE_SVID || defined __USE_MISC || defined __USE_XOPEN +#if defined __USE_SVID || defined __USE_MISC \ + || (defined __USE_XOPEN && !defined __USE_XOPEN2K) /* Get a word (int) from STREAM. */ -extern int getw (FILE *__stream) __THROW; +extern int getw (FILE *__stream); /* Write a word (int) to STREAM. */ -extern int putw (int __w, FILE *__stream) __THROW; +extern int putw (int __w, FILE *__stream); #endif __BEGIN_NAMESPACE_STD -/* Get a newline-terminated string of finite length from STREAM. */ -extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) - __THROW; +/* Get a newline-terminated string of finite length from STREAM. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ +extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream); /* Get a newline-terminated string from stdin, removing the newline. - DO NOT USE THIS FUNCTION!! There is no limit on how much it will read. */ -extern char *gets (char *__s) __THROW; + DO NOT USE THIS FUNCTION!! There is no limit on how much it will read. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ +extern char *gets (char *__s); __END_NAMESPACE_STD #ifdef __USE_GNU -/* This function does the same as `fgets' but does not lock the stream. */ +/* This function does the same as `fgets' but does not lock the stream. + + This function is not part of POSIX and therefore no official + cancellation point. But due to similarity with an POSIX interface + or due to the implementation it is a cancellation point and + therefore not marked with __THROW. */ extern char *fgets_unlocked (char *__restrict __s, int __n, - FILE *__restrict __stream) __THROW; + FILE *__restrict __stream); #endif @@ -457,64 +550,107 @@ (and null-terminate it). *LINEPTR is a pointer returned from malloc (or NULL), pointing to *N characters of space. It is realloc'd as necessary. Returns the number of characters read (not including the - null terminator), or -1 on error or EOF. */ + null terminator), or -1 on error or EOF. + + These functions are not part of POSIX and therefore no official + cancellation point. But due to similarity with an POSIX interface + or due to the implementation they are cancellation points and + therefore not marked with __THROW. */ extern _IO_ssize_t __getdelim (char **__restrict __lineptr, size_t *__restrict __n, int __delimiter, - FILE *__restrict __stream) __THROW; + FILE *__restrict __stream); extern _IO_ssize_t getdelim (char **__restrict __lineptr, size_t *__restrict __n, int __delimiter, - FILE *__restrict __stream) __THROW; + FILE *__restrict __stream); + +/* Like `getdelim', but reads up to a newline. -/* Like `getdelim', but reads up to a newline. */ + This function is not part of POSIX and therefore no official + cancellation point. But due to similarity with an POSIX interface + or due to the implementation it is a cancellation point and + therefore not marked with __THROW. */ extern _IO_ssize_t getline (char **__restrict __lineptr, size_t *__restrict __n, - FILE *__restrict __stream) __THROW; + FILE *__restrict __stream); #endif __BEGIN_NAMESPACE_STD -/* Write a string to STREAM. */ -extern int fputs (__const char *__restrict __s, FILE *__restrict __stream) - __THROW; +/* Write a string to STREAM. + + This function is a possible cancellation points and therefore not + marked with __THROW. */ +extern int fputs (__const char *__restrict __s, FILE *__restrict __stream); -/* Write a string, followed by a newline, to stdout. */ -extern int puts (__const char *__s) __THROW; +/* Write a string, followed by a newline, to stdout. + This function is a possible cancellation points and therefore not + marked with __THROW. */ +extern int puts (__const char *__s); -/* Push a character back onto the input buffer of STREAM. */ -extern int ungetc (int __c, FILE *__stream) __THROW; +/* Push a character back onto the input buffer of STREAM. -/* Read chunks of generic data from STREAM. */ + This function is a possible cancellation points and therefore not + marked with __THROW. */ +extern int ungetc (int __c, FILE *__stream); + + +/* Read chunks of generic data from STREAM. + + This function is a possible cancellation points and therefore not + marked with __THROW. */ extern size_t fread (void *__restrict __ptr, size_t __size, - size_t __n, FILE *__restrict __stream) __THROW; -/* Write chunks of generic data to STREAM. */ + size_t __n, FILE *__restrict __stream); +/* Write chunks of generic data to STREAM. + + This function is a possible cancellation points and therefore not + marked with __THROW. */ extern size_t fwrite (__const void *__restrict __ptr, size_t __size, - size_t __n, FILE *__restrict __s) __THROW; + size_t __n, FILE *__restrict __s); __END_NAMESPACE_STD #ifdef __USE_GNU -/* This function does the same as `fputs' but does not lock the stream. */ +/* This function does the same as `fputs' but does not lock the stream. + + This function is not part of POSIX and therefore no official + cancellation point. But due to similarity with an POSIX interface + or due to the implementation it is a cancellation point and + therefore not marked with __THROW. */ extern int fputs_unlocked (__const char *__restrict __s, - FILE *__restrict __stream) __THROW; + FILE *__restrict __stream); #endif #ifdef __USE_MISC -/* Faster versions when locking is not necessary. */ +/* Faster versions when locking is not necessary. + + These functions are not part of POSIX and therefore no official + cancellation point. But due to similarity with an POSIX interface + or due to the implementation they are cancellation points and + therefore not marked with __THROW. */ extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, - size_t __n, FILE *__restrict __stream) __THROW; + size_t __n, FILE *__restrict __stream); extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size, - size_t __n, FILE *__restrict __stream) __THROW; + size_t __n, FILE *__restrict __stream); #endif __BEGIN_NAMESPACE_STD -/* Seek to a certain position on STREAM. */ -extern int fseek (FILE *__stream, long int __off, int __whence) __THROW; -/* Return the current position of STREAM. */ -extern long int ftell (FILE *__stream) __THROW; -/* Rewind to the beginning of STREAM. */ -extern void rewind (FILE *__stream) __THROW; +/* Seek to a certain position on STREAM. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ +extern int fseek (FILE *__stream, long int __off, int __whence); +/* Return the current position of STREAM. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ +extern long int ftell (FILE *__stream); +/* Rewind to the beginning of STREAM. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ +extern void rewind (FILE *__stream); __END_NAMESPACE_STD /* The Single Unix Specification, Version 2, specifies an alternative, @@ -524,16 +660,22 @@ #ifdef __USE_LARGEFILE # ifndef __USE_FILE_OFFSET64 -/* Seek to a certain position on STREAM. */ -extern int fseeko (FILE *__stream, __off_t __off, int __whence) __THROW; -/* Return the current position of STREAM. */ -extern __off_t ftello (FILE *__stream) __THROW; +/* Seek to a certain position on STREAM. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ +extern int fseeko (FILE *__stream, __off_t __off, int __whence); +/* Return the current position of STREAM. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ +extern __off_t ftello (FILE *__stream); # else # ifdef __REDIRECT extern int __REDIRECT (fseeko, - (FILE *__stream, __off64_t __off, int __whence) __THROW, + (FILE *__stream, __off64_t __off, int __whence), fseeko64); -extern __off64_t __REDIRECT (ftello, (FILE *__stream) __THROW, ftello64); +extern __off64_t __REDIRECT (ftello, (FILE *__stream), ftello64); # else # define fseeko fseeko64 # define ftello ftello64 @@ -543,18 +685,22 @@ __BEGIN_NAMESPACE_STD #ifndef __USE_FILE_OFFSET64 -/* Get STREAM's position. */ -extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos) - __THROW; -/* Set STREAM's position. */ -extern int fsetpos (FILE *__stream, __const fpos_t *__pos) __THROW; +/* Get STREAM's position. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ +extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos); +/* Set STREAM's position. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ +extern int fsetpos (FILE *__stream, __const fpos_t *__pos); #else # ifdef __REDIRECT extern int __REDIRECT (fgetpos, (FILE *__restrict __stream, - fpos_t *__restrict __pos) __THROW, fgetpos64); + fpos_t *__restrict __pos), fgetpos64); extern int __REDIRECT (fsetpos, - (FILE *__stream, __const fpos_t *__pos) __THROW, - fsetpos64); + (FILE *__stream, __const fpos_t *__pos), fsetpos64); # else # define fgetpos fgetpos64 # define fsetpos fsetpos64 @@ -563,11 +709,10 @@ __END_NAMESPACE_STD #ifdef __USE_LARGEFILE64 -extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence) __THROW; -extern __off64_t ftello64 (FILE *__stream) __THROW; -extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos) - __THROW; -extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos) __THROW; +extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence); +extern __off64_t ftello64 (FILE *__stream); +extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos); +extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos); #endif __BEGIN_NAMESPACE_STD @@ -588,8 +733,11 @@ __BEGIN_NAMESPACE_STD -/* Print a message describing the meaning of the value of errno. */ -extern void perror (__const char *__s) __THROW; +/* Print a message describing the meaning of the value of errno. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ +extern void perror (__const char *__s); __END_NAMESPACE_STD /* Provide the declarations for `sys_errlist' and `sys_nerr' if they @@ -612,11 +760,17 @@ #if (defined __USE_POSIX2 || defined __USE_SVID || defined __USE_BSD || \ defined __USE_MISC) -/* Create a new stream connected to a pipe running the given command. */ -extern FILE *popen (__const char *__command, __const char *__modes) __THROW; +/* Create a new stream connected to a pipe running the given command. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ +extern FILE *popen (__const char *__command, __const char *__modes); + +/* Close a stream opened by popen and return the status of its child. -/* Close a stream opened by popen and return the status of its child. */ -extern int pclose (FILE *__stream) __THROW; + This function is a possible cancellation point and therefore not + marked with __THROW. */ +extern int pclose (FILE *__stream); #endif @@ -628,7 +782,7 @@ #ifdef __USE_XOPEN /* Return the name of the current user. */ -extern char *cuserid (char *__s) __THROW; +extern char *cuserid (char *__s); #endif /* Use X/Open, but not issue 6. */ --- glibc-2.3.2/libio/strops.c 2002-02-25 01:49:21.000000000 -0500 +++ glibc-2.3.2/libio/strops.c 2003-06-03 09:36:22.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1997-2000, 2001, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1997-2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -63,33 +63,22 @@ #endif void -_IO_str_init_static (sf, ptr, size, pstart) +_IO_str_init_static_internal (sf, ptr, size, pstart) _IO_strfile *sf; char *ptr; - int size; + _IO_size_t size; char *pstart; { _IO_FILE *fp = &sf->_sbf._f; + char *end; if (size == 0) - size = strlen (ptr); - else if (size < 0) - { - /* If size is negative 'the characters are assumed to - continue indefinitely.' This is kind of messy ... */ - int s; - size = 512; - /* Try increasing powers of 2, as long as we don't wrap around. */ - for (; s = 2*size, s > 0 && ptr + s > ptr && s < 0x4000000L; ) - size = s; - /* Try increasing size as much as we can without wrapping around. */ - for (s = size >> 1; s > 0; s >>= 1) - { - if (ptr + size + s > ptr) - size += s; - } - } - INTUSE(_IO_setb) (fp, ptr, ptr + size, 0); + end = __rawmemchr (ptr, '\0'); + else if ((_IO_size_t) ptr + size > (_IO_size_t) ptr) + end = ptr + size; + else + end = (char *) -1; + INTUSE(_IO_setb) (fp, ptr, end, 0); fp->_IO_write_base = ptr; fp->_IO_read_base = ptr; @@ -97,19 +86,28 @@ if (pstart) { fp->_IO_write_ptr = pstart; - fp->_IO_write_end = ptr + size; + fp->_IO_write_end = end; fp->_IO_read_end = pstart; } else { fp->_IO_write_ptr = ptr; fp->_IO_write_end = ptr; - fp->_IO_read_end = ptr+size; + fp->_IO_read_end = end; } /* A null _allocate_buffer function flags the strfile as being static. */ sf->_s._allocate_buffer = (_IO_alloc_type) 0; } -INTDEF(_IO_str_init_static) + +void +_IO_str_init_static (sf, ptr, size, pstart) + _IO_strfile *sf; + char *ptr; + int size; + char *pstart; +{ + return _IO_str_init_static_internal (sf, ptr, size < 0 ? -1 : size, pstart); +} void _IO_str_init_readonly (sf, ptr, size) @@ -117,7 +115,7 @@ const char *ptr; int size; { - INTUSE(_IO_str_init_static) (sf, (char *) ptr, size, NULL); + _IO_str_init_static_internal (sf, (char *) ptr, size < 0 ? -1 : size, NULL); sf->_sbf._f._IO_file_flags |= _IO_NO_WRITES; } --- glibc-2.3.2/libio/swprintf.c 2001-07-07 15:21:03.000000000 -0400 +++ glibc-2.3.2/libio/swprintf.c 2003-03-15 15:02:08.000000000 -0500 @@ -1,4 +1,5 @@ -/* Copyright (C) 1991,1995,1997,1998,1999,2000 Free Software Foundation, Inc. +/* Copyright (C) 1991,1995,1997,1998,1999,2000,2003 + Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -22,10 +23,7 @@ /* Write formatted output into S, according to the format string FORMAT. */ /* VARARGS3 */ int -swprintf (s, n, format) - wchar_t *s; - size_t n; - const wchar_t *format; +swprintf (wchar_t *s, size_t n, const wchar_t *format, ...) { va_list arg; int done; --- glibc-2.3.2/libio/swscanf.c 2001-07-07 15:21:03.000000000 -0400 +++ glibc-2.3.2/libio/swscanf.c 2003-03-15 15:02:08.000000000 -0500 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1995, 1996, 1998, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1991,1995,1996,1998,1999,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -22,9 +22,7 @@ /* Read formatted input from S, according to the format string FORMAT. */ /* VARARGS2 */ int -swscanf (s, format) - const wchar_t *s; - const wchar_t *format; +swscanf (const wchar_t *s, const wchar_t *format, ...) { va_list arg; int done; --- glibc-2.3.2/libio/vasprintf.c 2002-02-25 02:02:03.000000000 -0500 +++ glibc-2.3.2/libio/vasprintf.c 2003-06-03 09:36:23.000000000 -0400 @@ -54,7 +54,7 @@ #endif _IO_no_init ((_IO_FILE *) &sf._sbf, _IO_USER_LOCK, -1, NULL, NULL); _IO_JUMPS ((struct _IO_FILE_plus *) &sf._sbf) = &_IO_str_jumps; - INTUSE(_IO_str_init_static) (&sf, string, init_string_size, string); + _IO_str_init_static_internal (&sf, string, init_string_size, string); sf._sbf._f._flags &= ~_IO_USER_BUF; sf._s._allocate_buffer = (_IO_alloc_type) malloc; sf._s._free_buffer = (_IO_free_type) free; --- glibc-2.3.2/libio/vsnprintf.c 2002-02-25 02:02:12.000000000 -0500 +++ glibc-2.3.2/libio/vsnprintf.c 2003-06-03 09:36:23.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1994,1997,1999,2000,2001,2002 Free Software Foundation, Inc. +/* Copyright (C) 1994,1997,1999-2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -126,7 +126,7 @@ _IO_no_init (&sf.f._sbf._f, _IO_USER_LOCK, -1, NULL, NULL); _IO_JUMPS ((struct _IO_FILE_plus *) &sf.f._sbf) = &_IO_strn_jumps; string[0] = '\0'; - INTUSE(_IO_str_init_static) (&sf.f, string, maxlen - 1, string); + _IO_str_init_static_internal (&sf.f, string, maxlen - 1, string); ret = INTUSE(_IO_vfprintf) ((_IO_FILE *) &sf.f._sbf, format, args); if (sf.f._sbf._f._IO_buf_base != sf.overflow_buf) --- glibc-2.3.2/libio/wfileops.c 2002-11-05 02:28:51.000000000 -0500 +++ glibc-2.3.2/libio/wfileops.c 2003-09-19 22:37:03.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1993,95,97,98,99,2000,2001,2002 Free Software Foundation, Inc. +/* Copyright (C) 1993,95,97,98,99,2000,2001,2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Written by Ulrich Drepper . Based on the single byte version by Per Bothner . @@ -153,6 +153,7 @@ fp->_wide_data->_IO_buf_end, &fp->_wide_data->_IO_read_end); + fp->_IO_read_base = fp->_IO_read_ptr; fp->_IO_read_ptr = (char *) read_stop; /* If we managed to generate some text return the next character. */ @@ -217,16 +218,13 @@ traditional Unix systems did this for stdout. stderr better not be line buffered. So we do just that here explicitly. --drepper */ - _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, - _IO_stdout); - _IO_flockfile (_IO_stdout); + _IO_acquire_lock (_IO_stdout); if ((_IO_stdout->_flags & (_IO_LINKED | _IO_NO_WRITES | _IO_LINE_BUF)) == (_IO_LINKED | _IO_LINE_BUF)) _IO_OVERFLOW (_IO_stdout, EOF); - _IO_funlockfile (_IO_stdout); - _IO_cleanup_region_end (0); + _IO_release_lock (_IO_stdout); #endif } @@ -879,7 +877,7 @@ JUMP_INIT(showmanyc, _IO_default_showmanyc), JUMP_INIT(imbue, _IO_default_imbue) }; -INTVARDEF(_IO_wfile_jumps) +libc_hidden_data_def (_IO_wfile_jumps) struct _IO_jump_t _IO_wfile_jumps_mmap = --- glibc-2.3.2/libio/wstrops.c 2002-08-24 22:41:38.000000000 -0400 +++ glibc-2.3.2/libio/wstrops.c 2003-06-03 09:36:23.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1993,1997,1998,1999,2001,2002 Free Software Foundation, Inc. +/* Copyright (C) 1993,1997-1999,2001-2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -67,28 +67,20 @@ _IO_wstr_init_static (fp, ptr, size, pstart) _IO_FILE *fp; wchar_t *ptr; - int size; + _IO_size_t size; wchar_t *pstart; { + wchar_t *end; + if (size == 0) - size = __wcslen (ptr); - else if (size < 0) - { - /* If size is negative 'the characters are assumed to - continue indefinitely.' This is kind of messy ... */ - int s; - size = 512; - /* Try increasing powers of 2, as long as we don't wrap around. */ - for (; s = 2*size, s > 0 && ptr + s > ptr && s < 0x4000000L; ) - size = s; - /* Try increasing size as much as we can without wrapping around. */ - for (s = size >> 1; s > 0; s >>= 1) - { - if (ptr + size + s > ptr) - size += s; - } - } - INTUSE(_IO_wsetb) (fp, ptr, ptr + size, 0); + end = ptr + __wcslen (ptr); + else if ((_IO_size_t) ptr + size * sizeof (wchar_t) > (_IO_size_t) ptr) + end = ptr + size; + else + /* Even for misaligned ptr make sure there is integral number of wide + characters. */ + end = ptr + (-1 - (_IO_size_t) ptr) / sizeof (wchar_t); + INTUSE(_IO_wsetb) (fp, ptr, end, 0); fp->_wide_data->_IO_write_base = ptr; fp->_wide_data->_IO_read_base = ptr; @@ -96,29 +88,19 @@ if (pstart) { fp->_wide_data->_IO_write_ptr = pstart; - fp->_wide_data->_IO_write_end = ptr + size; + fp->_wide_data->_IO_write_end = end; fp->_wide_data->_IO_read_end = pstart; } else { fp->_wide_data->_IO_write_ptr = ptr; fp->_wide_data->_IO_write_end = ptr; - fp->_wide_data->_IO_read_end = ptr + size; + fp->_wide_data->_IO_read_end = end; } /* A null _allocate_buffer function flags the strfile as being static. */ (((_IO_strfile *) fp)->_s._allocate_buffer) = (_IO_alloc_type)0; } -void -_IO_wstr_init_readonly (fp, ptr, size) - _IO_FILE *fp; - const char *ptr; - int size; -{ - _IO_wstr_init_static (fp, (wchar_t *) ptr, size, NULL); - fp->_IO_file_flags |= _IO_NO_WRITES; -} - _IO_wint_t _IO_wstr_overflow (fp, c) _IO_FILE *fp; --- glibc-2.3.2/linuxthreads/ChangeLog 2003-02-27 17:40:10.000000000 -0500 +++ glibc-2.3.2/linuxthreads/ChangeLog 2003-09-19 22:37:03.000000000 -0400 @@ -1,4 +1,558 @@ -2003-02-27 Roland McGrath +2003-09-18 Jakub Jelinek + + * sysdeps/pthread/pthread.h (pthread_getattr_np): Clarify usage. + + * tst-attr1.c: New test. + * Makefile (tests): Add tst-attr1. + +2003-09-17 Philip Blundell + + * sysdeps/unix/sysv/linux/arm/vfork.S: Branch to fork if + libpthread is loaded. Elide backwards compatibility code when not + required. + +2003-09-17 Jakub Jelinek + + * descr.h (manager_thread): Rename to... + (__pthread_manager_threadp): ... this. + * pthread.c (manager_thread): Define to __pthread_manager_threadp. + (__pthread_manager_threadp): New variable. + * internals.h (__manager_thread): Define to + __pthread_manager_threadp if USE_TLS. + +2003-09-15 Jakub Jelinek + + * sysdeps/i386/Makefile (CFLAGS-cancel.c, CFLAGS-manager.c, + CFLAGS-pthread.c, CFLAGS-sighandler.c): Add + -mpreferred-stack-boundary=4. + +2003-09-16 Ulrich Drepper + + * attr.c (pthread_getattr_np): Correctly fill in the stack-related + values for the initial thread. + +2003-09-17 Jakub Jelinek + + * pthread.c (manager_thread): Remove static, add attribute_hidden. + (thread_self_stack): Rename to... + (__pthread_self_stack): ... this. Remove static. + (pthread_handle_sigcancel): Use check_thread_self (). + (pthread_handle_sigrestart): Likewise. + * sighandler.c (__pthread_sighandler, __pthread_sighandler_rt): + Likewise. + * descr.h (manager_thread): Declare. + * internals.h (__pthread_self_stack): New prototype. + (__manager_thread): Define. + (check_thread_self): New function. + +2003-09-15 Jakub Jelinek + + * Makefile (CFLAGS-mutex.c): Add $(uses-callbacks). + (CFLAGS-sighandler.c): Change $(exceptions) into $(uses-callbacks). + +2003-09-12 Jakub Jelinek + + * sysdeps/unix/sysv/linux/s390/bits/typesizes.h: New. + (__SSIZE_T_TYPE): Define to __SWORD_TYPE for gcc 2.95.x and + __SLONGWORD_TYPE otherwise. + +2003-09-11 Steven Munroe + + * sysdeps/powerpc/powerpc64/pt-machine.h [MEMORY_BARRIER]: Use lwsync. + [READ_MEMORY_BARRIER]: Define. + [WRITE_MEMORY_BARRIER]: Define. + +2003-09-10 Jakub Jelinek + + * sysdeps/pthread/pthread-functions.h (struct pthread_functions): Move + ptr___pthread_cond_timedwait to the end of the structure to avoid + breaking Wine unnecessarily. + +2003-09-08 Jakub Jelinek + + * sysdeps/unix/sysv/linux/s390/bits/typesizes.h: Remove. + +2003-09-02 Jakub Jelinek + + * sysdeps/unix/sysv/linux/alpha/bits/local_lim.h: New file. + * sysdeps/unix/sysv/linux/alpha/Versions: New file. + * sysdeps/unix/sysv/linux/ia64/bits/local_lim.h: New file. + * sysdeps/unix/sysv/linux/ia64/Versions: New file. + * sysdeps/unix/sysv/linux/sparc/bits/local_lim.h: New file. + * sysdeps/unix/sysv/linux/sparc/Versions: New file. + * attr.c (__old_pthread_attr_setstacksize, + __old_pthread_attr_setstack): New functions. + (pthread_attr_setstacksize): If PTHREAD_STACK_MIN != 16384, export + as @@GLIBC_2.3.2 and also export compatibility @GLIBC_2.1. + (pthread_attr_setstack): If PTHREAD_STACK_MIN != 16384, export + as @@GLIBC_2.3.2 and also export compatibility @GLIBC_2.2. + * tststack.c: Include limits.h and sys/param.h. + (main): Set size to MAX (70 * 1024, PTHREAD_STACK_MIN). + + * barrier.c (__pthread_barrierattr_getpshared): Always + return PTHREAD_PROCESS_PRIVATE. + (pthread_barrierattr_setpshared): Return EINVAL if pshared + is neither PTHREAD_PROCESS_PRIVATE nor PTHREAD_PROCESS_SHARED. + +2003-09-02 Ulrich Drepper + + * sysdeps/unix/sysv/linux/i386/dl-sysdep.h + (DL_SYSINFO_IMPLEMENTATION): Add CFI and make sure the code ends + up in .text. + + * barrier.c (pthread_barrierattr_setpshared): We don't handle + inter-process barriers. + +2003-09-01 Jakub Jelinek + + * Makefile (tests): Add tst-tls1. + (module-names): Add tst-tls1mod{,a,b,c,d,e,f}. + ($(objpfx)tst-tls1mod{,a,b,c,d,e,f}.so-no-z-defs): Set to yes. + ($(objpfx)tst-tls1): New. + ($(objpfx)tst-tls2.out): Likewise. + (tests): Depend on $(objpfx)tst-tls2.out. + * tst-tls1.c: New test. + * tst-tls1.h: New. + * tst-tls1mod.c: New. + * tst-tls1moda.c: New. + * tst-tls1modb.c: New. + * tst-tls1modc.c: New. + * tst-tls1modd.c: New. + * tst-tls1mode.c: New. + * tst-tls1modf.c: New. + * tst-tls2.sh: New test. + + * internals.h (__pthread_cond_timedwait): New prototype. + * sysdeps/pthread/pthread-functions.h (struct pthread_functions): Add + ptr___pthread_cond_timedwait. + * pthread.c (__pthread_functions): Initialize them. + * forward.c (pthread_cond_timedwait@GLIBC_2.0, + pthread_cond_timedwait@@GLIBC_2.3.2): New forwards. + * Versions (libc): Export pthread_cond_timedwait@GLIBC_2.0, + pthread_cond_timedwait@@GLIBC_2.3.2. + +2003-08-27 Ulrich Drepper + + * sysdeps/pthread/pthread.h: Don't mark pthread_exit, + pthread_join, pthread_cond_wait, and pthread_cond_timedwait with + __THROW to match NPTL. + +2003-08-13 Ulrich Drepper + + * sysdeps/pthread/Makefile [subdir=rt] (CPPFLAGS): Add + -DBROKEN_THREAD_SIGNALS. + +2003-08-11 Steven Munroe + + * manager.c (pthread_start_thread) [!(USE_TLS && HAVE___THREAD)]: + Correct spelling of per thread resolver state. + +2003-08-07 Jakub Jelinek + + * sysdeps/pthread/bits/libc-lock.h [_LIBC && SHARED] + (__rtld_lock_default_lock_recursive, + __rtld_lock_default_unlock_recursive): Define. + [_LIBC && SHARED] (__rtld_lock_lock_recursive, + __rtld_lock_unlock_recursive): Define using + GL(_dl_rtld_*lock_recursive). + * pthread.c (pthread_initialize): Initialize _dl_rtld_lock_recursive + and _dl_rtld_unlock_recursive. Lock GL(_dl_load_lock) the same + number of times as GL(_dl_load_lock) using non-mt implementation was + nested. + +2003-07-31 Jakub Jelinek + + * sysdeps/pthread/bits/typesizes.h (__SSIZE_T_TYPE): Define. + * sysdeps/unix/sysv/linux/alpha/bits/typesizes.h (__SSIZE_T_TYPE): + Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/typesizes.h (__SSIZE_T_TYPE): + Likewise. + * sysdeps/unix/sysv/linux/s390/bits/typesizes.h: New file. + + * sysdeps/pthread/pthread.h (pthread_attr_setstackaddr, + pthread_attr_setstacksize): Change PTHREAD_STACK_SIZE to + PTHREAD_STACK_MIN in comments. + + * sysdeps/alpha/pt-machine.h (PT_EI): Add + __attribute__((always_inline)). + * sysdeps/arm/pt-machine.h (PT_EI): Likewise. + * sysdeps/cris/pt-machine.h (PT_EI): Likewise. + * sysdeps/hppa/pt-machine.h (PT_EI): Likewise. + * sysdeps/i386/i686/pt-machine.h (PT_EI): Likewise. + * sysdeps/i386/pt-machine.h (PT_EI): Likewise. + * sysdeps/ia64/pt-machine.h (PT_EI): Likewise. + * sysdeps/m68k/pt-machine.h (PT_EI): Likewise. + * sysdeps/mips/pt-machine.h (PT_EI): Likewise. + * sysdeps/powerpc/powerpc32/pt-machine.h (PT_EI): Likewise. + * sysdeps/powerpc/powerpc64/pt-machine.h (PT_EI): Likewise. + * sysdeps/s390/s390-32/pt-machine.h (PT_EI): Likewise. + * sysdeps/s390/s390-64/pt-machine.h (PT_EI): Likewise. + * sysdeps/sh/pt-machine.h (PT_EI): Likewise. + * sysdeps/sparc/sparc32/pt-machine.h (PT_EI): Likewise. + * sysdeps/sparc/sparc64/pt-machine.h (PT_EI): Likewise. + * sysdeps/x86_64/pt-machine.h (PT_EI): Likewise. + * spinlock.h (__pthread_set_own_extricate_if): Likewise. + * sysdeps/ia64/tls.h (TLS_INIT_TP): Cast tcbp to __typeof + (__thread_self). + * Examples/ex13.c (main): Change res type to void * to avoid + warnings. + * tst-cancel.c (cleanup, inner, tf1, tf2, tf3): Comment out. + +2003-07-30 Jakub Jelinek + + * pthread.c (init_one_static_tls, __pthread_init_static_tls): New + functions. + (pthread_initialize): Initialize GL(dl_init_static_tls). + +2003-06-19 Daniel Jacobowitz + + * sysdeps/pthread/timer_create.c (timer_create): Call timer_delref + before __timer_dealloc. + * sysdeps/pthread/timer_routines.c (__timer_thread_find_matching): + Don't call list_unlink. + +2003-07-29 Roland McGrath + + * Makefile [$(build-shared) = yes] (tests): Depend on $(test-modules). + +2003-07-25 Roland McGrath + + * manager.c (pthread_start_thread): Fix typo in last change. + +2003-07-14 Guido Guenther + + * sysdeps/unix/sysv/linux/mips/sysdep-cancel.h: Add IS_IN_librt, + use L() for local labels. + +2003-07-22 Jakub Jelinek + + * descr.h (struct _pthread_descr_struct): Provide p_res member + even if USE_TLS && HAVE___THREAD. + * sysdeps/pthread/res-state.c (__res_state): Return __resp + if USE___THREAD. + * manager.c: Include resolv.h. + (pthread_start_thread): Initialize __resp. + * libc-tls-loc.c (__res_state): Return __resp. + * Makefile (tests): Add tst-_res1. + (modules-names, extra-objs, test-extras, test-modules): Add support + for test modules. + ($(objpfx)tst-_res1mod2.so): Depend on $(objpfx)tst-_res1mod1.so. + ($(objpfx)tst-_res1): Depend on $(objpfx)tst-_res1mod2.so and + -lpthread. + * tst-_res1.c: New test. + * tst-_res1mod1.c: New test. + * tst-_res1mod2.c: New test. + +2003-07-20 Ulrich Drepper + + * sysdeps/pthread/bits/libc-lock.h: Define __libc_cleanup_push and + __libc_cleanup_pop. + + * tst-cancel-wrappers.sh: lseek and llseek are no cancellation points. + +2003-07-14 Ulrich Drepper + + * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h: Fix typo + in test for compilation in libc. + +2003-07-04 Jakub Jelinek + + * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h (PSEUDO): Use + different symbol for the cancellation syscall wrapper and + non-cancellation syscall wrapper. + (PSEUDO_END): Define. + +2003-07-05 Richard Henderson + + * sysdeps/alpha/elf/pt-initfini.c: Avoid .ent/.end. + +2003-06-20 Kaz Kojima + + * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: Support cancellation + in librt. + +2003-06-21 Andreas Schwab + + * sysdeps/unix/sysv/linux/m68k/sysdep-cancel.h: Support cancellation + in librt. + +2003-06-20 Richard Henderson + + * sysdeps/unix/sysv/linux/alpha/Makefile (libpthread-routines): + Remove ptw-osf_sigprocmask. + +2003-06-18 Jakub Jelinek + + * internals.h (__librt_multiple_threads, __librt_enable_asynccancel, + __librt_disable_asynccancel): Declare. + (LIBC_CANCEL_ASYNC, LIBC_CANCEL_RESET, LIBC_CANCEL_HANDLED): Define + for IS_IN_librt. + * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Support cancellation + in librt. + * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h: Likewise. + * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h: Likewise. + * sysdeps/x86_64/tcb-offsets.sym: New file. + * sysdeps/x86_64/Makefile: New file. + * sysdeps/x86_64/tls.h (tcbhead_t): Add multiple_threads. + * Versions (libc): Export __librt_enable_asynccancel, + __librt_disable_asynccancel and __librt_multiple_threads as + GLIBC_PRIVATE. + * libc-cancellation.c (__librt_multiple_threads, + __librt_enable_asynccancel, __librt_disable_asynccancel): New aliases. + +2003-06-12 Steven Munroe + + * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h + (SINGLE_THREAD_P): Replace @ got notation with @toc. + +2003-06-11 Ulrich Drepper + + * sysdeps/powerpc/pspinlock.c (__pthread_spin_init): Fix + initializer [PR libc/5052]. + +2003-06-09 Andreas Schwab + + * Makefile: Move inclusion of ../Rules down after extra-objs is + fully known. + +2003-06-06 Ulrich Drepper + + * sysdeps/unix/sysv/linux/arm/sysdep-cancel.h: New sequences for + 5+ arg syscalls only needed for PIC. + Patch by Ralph Siemsen . + +2003-06-05 Richard Henderson + + * sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h (PSEUDO): Use + and require CFI assembler directives. + * sysdeps/unix/sysv/linux/alpha/vfork.S: Likewise. + +2003-05-30 Andreas Jaeger + + * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h + (SAVESTK_0): Add CFI directives. + (SAVESTK_3): Likewise. + (SAVESTK_5): Likewise. + (RESTSTK_0): Likewise. + (RESTSTK_3): Likewise. + (RESTSTK_5): Likewise. + +2003-05-05 Ulrich Drepper + + * sysdeps/i386/tls.h (TLS_DO_SET_THREAD_AREA): Add \n to error + messages. + +2003-05-04 Roland McGrath + + * Makefile ($(objpfx)../libc.so): New target. + +2003-04-26 Ulrich Drepper + + * pthread.c (__pthread_initialize_manager): Remove one last + p_multiple_threads call. + +2003-04-22 Jakub Jelinek + + * pthread.c (__pthread_initialize_manager): Subtract + TLS_PRE_TCB_SIZE bytes from tcbp to get to descr. + * manager.c (pthread_handle_create): Subtract or add TLS_PRE_TCB_SIZE + instead of sizeof (pthread_descr). + (pthread_free): Add TLS_PRE_TCB_SIZE instead of sizeof (pthread_descr). + * sysdeps/powerpc/tls.h (TLS_INIT_TCB_SIZE, TLS_TCB_SIZE): Define to 0. + (TLS_INIT_TCB_ALIGN, TLS_TCB_ALIGN): Define to alignment of + pthread_descr. + (TLS_PRE_TCB_SIZE): Increase to cover tcbhead_t preceeded by pad + to TLS_TCB_ALIGN. + (INSTALL_DTV, GET_DTV, THREAD_DTV): tcbhead_t is immediately before + tcbp. + (TLS_INIT_TP, THREAD_SELF, INIT_THREAD_SELF): Don't add TLS_TCB_SIZE + unneccessarily. + (NO_TLS_OFFSET): Define. + +2003-04-22 Roland McGrath + + * Makeconfig (shared-thread-library): Reverse link order to work + around linker bug. + +2003-04-20 Ulrich Drepper + + * sysdeps/i386/useldt.h (DO_SET_THREAD_AREA): Make sure the + compiler knows we use the ldt_entry variable and that the syscall + modifies the memory. + + * internals.h: Split pthread_functions definition into... + * sysdeps/pthread/pthread-functions.h: ...new file. + + * sysdeps/i386/useldt.h: Include . + +2003-04-13 Jakub Jelinek + + * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Rename macros to + match changes in NPTL sysdep-cancel.h. + +2003-04-11 Roland McGrath + + * Makefile (multidir): Don't set the variable here with $(shell ...). + ($(objpfx)multidir.mk): New target, generated makefile; include that. + (generated): Append it. + +2003-04-10 Jakub Jelinek + + * Makefile (multidir, crti-objs, crtn-objs): New variables. + (generated-dirs): Add pathname component of multidir. + (omit-deps, extra-objs): Include $(multidir)/crt? as well. + ($(objpfx)libpthread.so): Depend on $(multidir)/crt?.o as well. + ($(objpfx)$(multidir), $(objpfx)$(multidir)/crti.o, + $(objpfx)$(multidir)/crtn.o): New. + * sysdeps/unix/sysv/linux/sparc/Makefile: Removed. + * sysdeps/unix/sysv/linux/x86_64/Makefile (LDFLAGS-pthread.so, + before-compile, generated): Don't generate and use specs. + ($(objpfx)specs): Remove. + +2003-04-11 Martin Schwidefsky + + * sysdeps/s390/pspinlock.c (__pthread_spin_unlock): Fix asm contraints. + +2003-04-03 Ulrich Drepper + + * sysdeps/unix/sysv/linux/arm/sysdep-cancel.h (PSEUDO): Add + missing ; after ENTRY use [PR libc/4997]. + +2003-04-03 Jakub Jelinek + + * pthread.c (pthread_initialize): Unblock __pthread_sig_cancel + in case the parent blocked it. + +2003-04-02 Jakub Jelinek + + * Makefile (libpthread-routines): Add pthread_atfork. + (libpthread-static-only-routines): Add pthread_atfork. + +2003-04-01 Jakub Jelinek + + * pthread.c (__pthread_wait_for_restart_signal): Use + __pthread_sigsuspend instead of sigsuspend. + * internals.h (__pthread_sigsuspend): New prototype. + * Makefile (libpthread-routines): Add pt-sigsuspend. + (tests): Add tst-cancel7. + * sysdeps/unix/sysv/linux/pt-sigsuspend.c: New file. + * sysdeps/unix/sysv/linux/alpha/pt-sigsuspend.S: New file. + * sysdeps/unix/sysv/linux/ia64/pt-sigsuspend.c: New file. + * sysdeps/unix/sysv/linux/s390/s390-64/pt-sigsuspend.c: New file. + * sysdeps/unix/sysv/linux/sparc/sparc64/pt-sigsuspend.c: New file. + * sysdeps/unix/sysv/linux/x86_64/pt-sigsuspend.c: New file. + * tst-cancel7.c: New test. + +2003-03-31 Alexandre Oliva + + * alloca_cutoff.c: Include internals.h. + * sysdeps/pthread/errno-loc.c: Include linuxthreads/internals.h. + * sysdeps/pthread/herrno-loc.c: Likewise. + * sysdeps/pthread/res-state.c: Likewise. + +2003-03-25 Ulrich Drepper + + * sysdeps/pthread/bits/typesizes.h: New file. + * sysdeps/unix/sysv/linux/alpha/bits/typesizes.h: New file. + * sysdeps/unix/sysv/linux/sparc/bits/typesizes.h: New file. + +2003-03-24 Daniel Jacobowitz + + * sysdeps/unix/sysv/linux/arm/sysdep-cancel.h + (DOARGS_5, DOARGS_6, DOARGS_7): Rewritten. + +2003-03-22 Jakub Jelinek + + * sysdeps/unix/sysv/linux/fork.c (__fork): Add libc_hidden_def. + +2003-03-21 Daniel Jacobowitz + + * sysdeps/unix/sysv/linux/arm/sysdep-cancel.h + (SINGLE_THREAD_P_PIC): Use "reg" instead of "lr". + +2003-03-21 Jakub Jelinek + + * sysdeps/i386/tls.h [__ASSUME_SET_THREAD_AREA_SYSCALL] + (TLS_SETUP_GS_SEGMENT): Fix a typo. + +2003-03-19 Ulrich Drepper + + * sysdeps/pthread/Makefile: Fix cut&paste error. + +2003-03-18 Roland McGrath + + * Versions (libpthread: GLIBC_2.2): Remove + pthread_barrierattr_getpshared, never really existed. + (libpthread: GLIBC_2.0): Move __pthread_initialize to ... + (libpthread: GLIBC_PRIVATE): ... here. + +2003-03-14 Jakub Jelinek + + * sysdeps/unix/sysv/linux/sparc/sparc64/Makefile: New file. + * sysdeps/unix/sysv/linux/sparc/Makefile ($(objpfx)specs): Use full + path for crt[in].o. + +2003-03-14 Alexandre Oliva + + * sysdeps/mips/pspinlock.c (__pthread_spin_lock): Don't .set + mips2 on new abi. + * sysdeps/mips/pt-machine.h (__compare_and_swap): Likewise. + Handle 64-bit longs on n64. + +2003-03-07 Jakub Jelinek + + * sysdeps/ia64/pspinlock.c (__pthread_spin_lock, + __pthread_spin_trylock): Rewritten. + +2003-03-06 Ulrich Drepper + + * tst-cancel4.c (tf_sleep): Lower sleep time a bit to not upset + recent kernels. + +2003-03-02 Ulrich Drepper + + * sysdeps/pthread/timer_create.c (timer_create): Return correct + error for CPU clocks. + + * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define + _POSIX_MONOTONIC_CLOCK. + * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Likewise. + +2003-03-01 Roland McGrath + + * sysdeps/powerpc/powerpc64/pt-machine.h + (THREAD_GETMEM, THREAD_GETMEM_NC, THREAD_SETMEM, THREAD_SETMEM_NC): + New macros. + * sysdeps/powerpc/tls.h: Don't define those here. + + * sysdeps/powerpc/tls.h [! USE_TLS && !__powerpc64__]: Define + tcbhead_t with multiple_threads member. + [USE_TLS] (tcbhead_t): Define minimal one-word version. + [USE_TLS && !__powerpc64__] (TLS_MULTIPLE_THREADS_IN_TCB): Define. + * sysdeps/powerpc/tcb-offsets.sym [USE_TLS]: Use tls.h macros to + derive thread register offset of p_multiple_threads member. + + * descr.h (struct _pthread_descr_struct) [!USE_TLS || !TLS_DTV_AT_TP]: + Conditionalize p_header member on this. + [TLS_MULTIPLE_THREADS_IN_TCB]: Add p_multiple_threads alternatively. + * sysdeps/ia64/tls.h [USE_TLS] (TLS_MULTIPLE_THREADS_IN_TCB): Define. + * sysdeps/sh/tls.h: Likewise. + * sysdeps/ia64/tcb-offsets.sym [USE_TLS]: Use p_multiple_threads. + * sysdeps/sh/tcb-offsets.sym: Likewise. + * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h + (SINGLE_THREAD_P): Likewise. + * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h + (SINGLE_THREAD_P): Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h + (SINGLE_THREAD_P): Likewise. + * pthread.c (__pthread_initialize_manager): Likewise. + * manager.c (pthread_handle_create): Likewise. * sysdeps/powerpc/tls.h [HAVE_TLS_SUPPORT]: Define USE_TLS and all related macros. --- glibc-2.3.2/linuxthreads/Examples/ex13.c 2002-09-25 01:28:41.000000000 -0400 +++ glibc-2.3.2/linuxthreads/Examples/ex13.c 2003-08-21 08:37:03.000000000 -0400 @@ -1,5 +1,5 @@ /* Test for Pthreads/mutexes. - Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Kurt Garloff , 2000. @@ -80,7 +80,7 @@ struct thr_ctrl threadctrl; pthread_t thread; int err; - int *res = &threadctrl.retval; + void *res = &threadctrl.retval; pthread_mutexattr_t mutattr; pthread_mutexattr_init (&mutattr); pthread_mutex_init (&threadctrl.mutex, &mutattr); @@ -106,7 +106,7 @@ abort (); }; dump_mut (&threadctrl.mutex); - pthread_join (thread, (void **) &res); + pthread_join (thread, &res); printf ("OK\n"); return 0; } --- glibc-2.3.2/linuxthreads/Makeconfig 2002-12-31 00:56:27.000000000 -0500 +++ glibc-2.3.2/linuxthreads/Makeconfig 2003-04-24 20:05:57.000000000 -0400 @@ -3,8 +3,8 @@ have-thread-library = yes -shared-thread-library = $(common-objpfx)linuxthreads/libpthread.so \ - $(common-objpfx)linuxthreads/libpthread_nonshared.a +shared-thread-library = $(common-objpfx)linuxthreads/libpthread_nonshared.a \ + $(common-objpfx)linuxthreads/libpthread.so static-thread-library = $(common-objpfx)linuxthreads/libpthread.a bounded-thread-library = $(common-objpfx)linuxthreads/libpthread_b.a --- glibc-2.3.2/linuxthreads/Makefile 2003-02-21 20:01:16.000000000 -0500 +++ glibc-2.3.2/linuxthreads/Makefile 2003-09-19 22:37:03.000000000 -0400 @@ -21,6 +21,8 @@ # subdir := linuxthreads +all: # Make this the default target; it will be defined in Rules. + linuxthreads-version := $(shell sed -n 's/^.*$(subdir)-\([0-9.]*\).*$$/\1/p' \ Banner) @@ -36,8 +38,8 @@ install-lib-ldscripts := libpthread.so libpthread-routines := attr cancel condvar join manager mutex ptfork \ - ptlongjmp pthread signals specific errno lockfile \ - semaphore spinlock rwlock pt-machine \ + ptlongjmp pthread pt-sigsuspend signals specific errno \ + lockfile semaphore spinlock rwlock pt-machine \ oldsemaphore events getcpuclockid pspinlock barrier \ ptclock_gettime ptclock_settime sighandler \ pthandles libc-tls-loc pt-allocrtsig \ @@ -47,11 +49,12 @@ ptw-lseek64 ptw-llseek ptw-msync ptw-nanosleep \ ptw-open ptw-open64 ptw-pause ptw-pread ptw-pread64 \ ptw-pwrite ptw-pwrite64 ptw-tcdrain ptw-wait \ - ptw-waitpid pt-system old_pthread_atfork + ptw-waitpid pt-system old_pthread_atfork pthread_atfork # Don't generate deps for calls with no sources. See sysdeps/unix/Makefile. omit-deps = $(unix-syscalls:%=ptw-%) libpthread-shared-only-routines = pt-allocrtsig +libpthread-static-only-routines = pthread_atfork libpthread-nonshared = pthread_atfork @@ -78,7 +81,24 @@ ifeq ($(build-shared),yes) -extra-objs += crti.o crtn.o +# Set the `multidir' variable by grabbing the variable from the compiler. +# We do it once and save the result in a generated makefile. +-include $(objpfx)multidir.mk +$(objpfx)multidir.mk: $(common-objpfx)config.make + dir=`$(CC) $(CFLAGS) $(CPPFLAGS) -print-multi-directory`; \ + echo "multidir := $$dir" > $@T + mv -f $@T $@ +generated += multidir.mk + +crti-objs := crti.o +crtn-objs := crtn.o +ifneq (,$(patsubst .,,$(multidir))) +generated-dirs := $(firstword $(subst /, , $(multidir))) +crti-objs += $(multidir)/crti.o +crtn-objs += $(multidir)/crtn.o +omit-deps += $(multidir)/crti $(multidir)/crtn +endif +extra-objs += $(crti-objs) $(crtn-objs) omit-deps += crti crtn CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions @@ -89,7 +109,7 @@ tststack $(tests-nodelete-$(have-z-nodelete)) ecmutex ex14 ex15 ex16 \ ex17 ex18 tst-cancel tst-context bug-sleep \ tst-cancel1 tst-cancel2 tst-cancel3 tst-cancel4 tst-cancel5 \ - tst-cancel6 tst-popen tst-popen2 + tst-cancel6 tst-cancel7 tst-popen tst-popen2 tst-attr1 test-srcs = tst-signal # These tests are linked with libc before libpthread tests-reverse += tst-cancel5 @@ -101,9 +121,31 @@ ifeq (yes,$(build-shared)) tests-nodelete-yes = unload +tests += tst-tls1 tst-_res1 endif -include ../Rules +modules-names = tst-_res1mod1 tst-_res1mod2 \ + tst-tls1mod tst-tls1moda tst-tls1modb tst-tls1modc \ + tst-tls1modd tst-tls1mode tst-tls1modf +extra-objs += $(addsuffix .os,$(strip $(modules-names))) +test-extras += $(modules-names) +test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(modules-names))) + +tst-tls1mod.so-no-z-defs = yes +tst-tls1moda.so-no-z-defs = yes +tst-tls1modb.so-no-z-defs = yes +tst-tls1modc.so-no-z-defs = yes +tst-tls1modd.so-no-z-defs = yes +tst-tls1mode.so-no-z-defs = yes +tst-tls1modf.so-no-z-defs = yes + +$(test-modules): $(objpfx)%.so: $(objpfx)%.os $(common-objpfx)shlib.lds + $(build-module) + +ifeq ($(build-shared),yes) +# Build all the modules even when not actually running test programs. +tests: $(test-modules) +endif # What we install as libpthread.so for programs to link against is in fact a # link script. It contains references for the various libraries we need. @@ -131,9 +173,9 @@ extra-B-pthread.so = -B$(common-objpfx)linuxthreads/ -$(objpfx)libpthread.so: $(objpfx)crti.o $(objpfx)crtn.o -$(objpfx)libpthread.so: +preinit += $(objpfx)crti.o -$(objpfx)libpthread.so: +postinit += $(objpfx)crtn.o +$(objpfx)libpthread.so: $(addprefix $(objpfx),$(crti-objs) $(crtn-objs)) +$(objpfx)libpthread.so: +preinit += $(addprefix $(objpfx),$(crti-objs)) +$(objpfx)libpthread.so: +postinit += $(addprefix $(objpfx),$(crtn-objs)) znodelete-yes = -DHAVE_Z_NODELETE CFLAGS-mutex.c += -D__NO_WEAK_PTHREAD_ALIASES @@ -142,7 +184,8 @@ CFLAGS-ptfork.c += -D__NO_WEAK_PTHREAD_ALIASES CFLAGS-cancel.c += -D__NO_WEAK_PTHREAD_ALIASES -D_RPC_THREAD_SAFE_ CFLAGS-unload.c += -DPREFIX=\"$(objpfx)\" -CFLAGS-sighandler.c += $(exceptions) +CFLAGS-mutex.c += $(uses-callbacks) +CFLAGS-sighandler.c += $(uses-callbacks) ifeq (yes,$(versioning)) -include $(common-objpfx)tls.make @@ -186,6 +229,8 @@ libc-link.so = $(common-objpfx)libc.so endif +include ../Rules + # Depend on libc.so so a DT_NEEDED is generated in the shared objects. # This ensures they will load libc.so for needed symbols if loaded by # a statically-linked program that hasn't already loaded it. @@ -204,6 +249,7 @@ $(addprefix $(objpfx), $(tests-reverse)): \ $(objpfx)../libc.so $(objpfx)libpthread.so \ $(objpfx)libpthread_nonshared.a +$(objpfx)../libc.so: $(common-objpfx)libc.so ; $(addprefix $(objpfx),$(librt-tests)): $(common-objpfx)rt/librt.so $(objpfx)unload: $(common-objpfx)dlfcn/libdl.so $(objpfx)unload.out: $(objpfx)libpthread.so $(objpfx)libpthread_nonshared.a @@ -248,6 +294,17 @@ $(objpfx)crtn.o: $(objpfx)crtn.S $(objpfx)defs.h $(compile.S) -g0 $(ASFLAGS-.os) -o $@ +ifneq ($(multidir),.) +$(objpfx)$(multidir): + @mkdir -p $(objpfx)$(multidir) + +$(objpfx)$(multidir)/crti.o: $(objpfx)crti.o $(objpfx)$(multidir) + ln -f $< $@ + +$(objpfx)$(multidir)/crtn.o: $(objpfx)crtn.o $(objpfx)$(multidir) + ln -f $< $@ +endif + generated += crti.S crtn.S defs.h pt-initfini.s endif @@ -256,6 +313,21 @@ $(resolvobjdir)/libresolv.a endif +ifeq (yes,$(build-shared)) +$(objpfx)tst-_res1mod2.so: $(objpfx)tst-_res1mod1.so +$(objpfx)tst-_res1: $(objpfx)tst-_res1mod2.so $(shared-thread-library) + +$(objpfx)tst-tls1: $(objpfx)tst-tls1mod.so $(shared-thread-library) + +tests: $(objpfx)tst-tls2.out +$(objpfx)tst-tls2.out: tst-tls2.sh $(objpfx)tst-tls1 \ + $(objpfx)tst-tls1moda.so $(objpfx)tst-tls1modb.so \ + $(objpfx)tst-tls1modc.so $(objpfx)tst-tls1modd.so \ + $(objpfx)tst-tls1mode.so $(objpfx)tst-tls1modf.so + $(SHELL) -e tst-tls2.sh $(common-objpfx) $(elf-objpfx) \ + $(rtld-installed-name) +endif + ifeq (no,$(cross-compiling)) ifeq (yes,$(build-shared)) tests: $(objpfx)tst-signal.out $(objpfx)tst-cancel-wrappers.out --- glibc-2.3.2/linuxthreads/Versions 2003-01-02 17:33:45.000000000 -0500 +++ glibc-2.3.2/linuxthreads/Versions 2003-09-19 22:37:03.000000000 -0400 @@ -7,6 +7,7 @@ pthread_attr_setschedparam; pthread_attr_setschedpolicy; pthread_attr_setscope; pthread_cond_broadcast; pthread_cond_destroy; pthread_cond_init; pthread_cond_signal; pthread_cond_wait; + pthread_cond_timedwait; pthread_condattr_destroy; pthread_condattr_init; pthread_equal; pthread_exit; pthread_getschedparam; pthread_mutex_destroy; pthread_mutex_init; pthread_mutex_lock; pthread_mutex_unlock; @@ -20,7 +21,7 @@ # Changed pthread_cond_t. pthread_cond_init; pthread_cond_destroy; pthread_cond_wait; pthread_cond_signal; - pthread_cond_broadcast; + pthread_cond_broadcast; pthread_cond_timedwait; } GLIBC_PRIVATE { # Internal libc interface to libpthread @@ -31,7 +32,8 @@ __libc_creat; __libc_poll; __libc_pselect; __libc_select; __libc_sigpause; __libc_sigsuspend; __libc_sigwait; __libc_sigwaitinfo; - __libc_waitid; __libc___xpg_sigpause; + __libc_waitid; __libc___xpg_sigpause; __librt_enable_asynccancel; + __librt_disable_asynccancel; __librt_multiple_threads; } } @@ -80,7 +82,7 @@ sigwait; # Protected names for functions used in other shared objects. - __pthread_atfork; __pthread_initialize; __pthread_getspecific; + __pthread_atfork; __pthread_getspecific; __pthread_key_create; __pthread_mutex_destroy; __pthread_mutex_init; __pthread_mutex_lock; __pthread_mutex_trylock; __pthread_mutex_unlock; __pthread_mutexattr_destroy; __pthread_mutexattr_init; @@ -147,7 +149,7 @@ pthread_getcpuclockid; pthread_barrier_destroy; pthread_barrier_init; pthread_barrier_wait; pthread_barrierattr_destroy; pthread_barrierattr_init; - pthread_barrierattr_getpshared; pthread_barrierattr_setpshared; + pthread_barrierattr_setpshared; pthread_mutex_timedlock; pthread_rwlock_timedrdlock; pthread_rwlock_timedwrlock; @@ -170,6 +172,7 @@ } GLIBC_PRIVATE { # Internal libc interface to libpthread + __pthread_initialize; __pthread_kill_other_threads_np; } } --- glibc-2.3.2/linuxthreads/alloca_cutoff.c 2002-12-28 05:06:33.000000000 -0500 +++ glibc-2.3.2/linuxthreads/alloca_cutoff.c 2003-04-12 11:39:43.000000000 -0400 @@ -1,5 +1,5 @@ /* Determine whether block of given size can be allocated on the stack or not. - Copyright (C) 2002 Free Software Foundation, Inc. + Copyright (C) 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -20,6 +20,7 @@ #include #include #include +#include "internals.h" #include int --- glibc-2.3.2/linuxthreads/attr.c 2002-12-17 17:49:21.000000000 -0500 +++ glibc-2.3.2/linuxthreads/attr.c 2003-09-19 22:37:03.000000000 -0400 @@ -15,6 +15,9 @@ /* Handling of thread attributes */ #include +#include +#include +#include #include #include #include @@ -220,7 +223,44 @@ attr->__stacksize = stacksize; return 0; } + +#if PTHREAD_STACK_MIN == 16384 weak_alias (__pthread_attr_setstacksize, pthread_attr_setstacksize) +#else +versioned_symbol (libpthread, __pthread_attr_setstacksize, + pthread_attr_setstacksize, GLIBC_2_3_3); + +# if SHLIB_COMPAT(libpthread, GLIBC_2_1, GLIBC_2_3_3) + +int __old_pthread_attr_setstacksize(pthread_attr_t *attr, size_t stacksize) +{ +# ifdef FLOATING_STACKS + /* We have to check against the maximum allowed stack size. This is no + problem if the manager is already started and we determined it. If + this hasn't happened, we have to find the limit outself. */ + if (__pthread_max_stacksize == 0) + __pthread_init_max_stacksize (); + + if (stacksize > __pthread_max_stacksize) + return EINVAL; +# else + /* We have a fixed size limit. */ + if (stacksize > STACK_SIZE) + return EINVAL; +# endif + + /* We don't accept value smaller than old PTHREAD_STACK_MIN. */ + if (stacksize < 16384) + return EINVAL; + + attr->__stacksize = stacksize; + return 0; +} +compat_symbol (libpthread, __old_pthread_attr_setstacksize, + pthread_attr_setstacksize, GLIBC_2_1); +# endif +#endif + int __pthread_attr_getstacksize(const pthread_attr_t *attr, size_t *stacksize) { @@ -251,7 +291,41 @@ return err; } + +#if PTHREAD_STACK_MIN == 16384 weak_alias (__pthread_attr_setstack, pthread_attr_setstack) +#else +versioned_symbol (libpthread, __pthread_attr_setstack, pthread_attr_setstack, + GLIBC_2_3_3); +# if SHLIB_COMPAT(libpthread, GLIBC_2_2, GLIBC_2_3_3) +int __old_pthread_attr_setstack (pthread_attr_t *attr, void *stackaddr, + size_t stacksize) +{ + int err; + + if ((((uintptr_t) stackaddr) + & (__alignof__ (struct _pthread_descr_struct) - 1)) != 0) + err = EINVAL; + else + err = __old_pthread_attr_setstacksize (attr, stacksize); + if (err == 0) + { +# ifndef _STACK_GROWS_UP + attr->__stackaddr = (char *) stackaddr + stacksize; +# else + attr->__stackaddr = stackaddr; +# endif + attr->__stackaddr_set = 1; + } + + return err; +} + +compat_symbol (libpthread, __old_pthread_attr_setstack, pthread_attr_setstack, + GLIBC_2_2); + +# endif +#endif int __pthread_attr_getstack (const pthread_attr_t *attr, void **stackaddr, size_t *stacksize) @@ -273,6 +347,7 @@ { pthread_handle handle = thread_handle (thread); pthread_descr descr; + int ret = 0; if (handle == NULL) return ENOENT; @@ -293,6 +368,7 @@ attr->__inheritsched = descr->p_inheritsched; attr->__scope = PTHREAD_SCOPE_SYSTEM; + #ifdef _STACK_GROWS_DOWN # ifdef USE_TLS attr->__stacksize = descr->p_stackaddr - (char *)descr->p_guardaddr @@ -328,5 +404,70 @@ # endif #endif +#ifdef USE_TLS + if (attr->__stackaddr == NULL) +#else + if (descr == &__pthread_initial_thread) +#endif + { + /* Defined in ld.so. */ + extern void *__libc_stack_end; + + /* Stack size limit. */ + struct rlimit rl; + + /* The safest way to get the top of the stack is to read + /proc/self/maps and locate the line into which + __libc_stack_end falls. */ + FILE *fp = fopen ("/proc/self/maps", "rc"); + if (fp == NULL) + ret = errno; + /* We need the limit of the stack in any case. */ + else if (getrlimit (RLIMIT_STACK, &rl) != 0) + ret = errno; + else + { + /* We need no locking. */ + __fsetlocking (fp, FSETLOCKING_BYCALLER); + + /* Until we found an entry (which should always be the case) + mark the result as a failure. */ + ret = ENOENT; + + char *line = NULL; + size_t linelen = 0; + + while (! feof_unlocked (fp)) + { + if (__getdelim (&line, &linelen, '\n', fp) <= 0) + break; + + uintptr_t from; + uintptr_t to; + if (sscanf (line, "%" SCNxPTR "-%" SCNxPTR, &from, &to) == 2 + && from <= (uintptr_t) __libc_stack_end + && (uintptr_t) __libc_stack_end < to) + { + /* Found the entry. Now we have the info we need. */ + attr->__stacksize = rl.rlim_cur; + attr->__stackaddr = (void *) to; + + /* The limit might be too high. This is a bogus + situation but try to avoid making it worse. */ + if ((size_t) attr->__stacksize > (size_t) attr->__stackaddr) + attr->__stacksize = (size_t) attr->__stackaddr; + + /* We succeed and no need to look further. */ + ret = 0; + break; + } + } + + fclose (fp); + free (line); + } + } + return 0; + } --- glibc-2.3.2/linuxthreads/barrier.c 2002-08-27 00:52:34.000000000 -0400 +++ glibc-2.3.2/linuxthreads/barrier.c 2003-09-19 22:37:03.000000000 -0400 @@ -1,5 +1,5 @@ /* POSIX barrier implementation for LinuxThreads. - Copyright (C) 2000 Free Software Foundation, Inc. + Copyright (C) 2000, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Kaz Kylheku , 2000. @@ -110,7 +110,7 @@ __pthread_barrierattr_getpshared(const pthread_barrierattr_t *attr, int *pshared) { - *pshared = attr->__pshared; + *pshared = PTHREAD_PROCESS_PRIVATE; return 0; } @@ -120,6 +120,9 @@ if (pshared != PTHREAD_PROCESS_PRIVATE && pshared != PTHREAD_PROCESS_SHARED) return EINVAL; - attr->__pshared = pshared; + /* For now it is not possible to shared a conditional variable. */ + if (pshared != PTHREAD_PROCESS_PRIVATE) + return ENOSYS; + return 0; } --- glibc-2.3.2/linuxthreads/descr.h 2002-12-28 05:06:33.000000000 -0500 +++ glibc-2.3.2/linuxthreads/descr.h 2003-09-19 22:37:03.000000000 -0400 @@ -23,6 +23,7 @@ #include #include #include +#include /* Fast thread-specific data internal to libc. */ enum __libc_tsd_key_t { _LIBC_TSD_KEY_MALLOC = 0, @@ -106,22 +107,30 @@ union dtv; - -struct _pthread_descr_struct { - /* XXX Remove this union for IA-64 style TLS module */ - union { - struct { +struct _pthread_descr_struct +{ +#if !defined USE_TLS || !TLS_DTV_AT_TP + /* This overlaps tcbhead_t (see tls.h), as used for TLS without threads. */ + union + { + struct + { void *tcb; /* Pointer to the TCB. This is not always the address of this thread descriptor. */ union dtv *dtvp; pthread_descr self; /* Pointer to this structure */ int multiple_threads; -#ifdef NEED_DL_SYSINFO +# ifdef NEED_DL_SYSINFO uintptr_t sysinfo; -#endif +# endif } data; void *__padding[16]; } p_header; +# define p_multiple_threads p_header.data.multiple_threads +#elif TLS_MULTIPLE_THREADS_IN_TCB + int p_multiple_threads; +#endif + pthread_descr p_nextlive, p_prevlive; /* Double chaining of active threads */ pthread_descr p_nextwaiting; /* Next element in the queue holding the thr */ @@ -154,8 +163,8 @@ int * p_h_errnop; /* pointer to used h_errno variable */ int p_h_errno; /* error returned by last netdb function */ struct __res_state *p_resp; /* Pointer to resolver state */ - struct __res_state p_res; /* per-thread resolver state */ #endif + struct __res_state p_res; /* per-thread resolver state */ int p_userstack; /* nonzero if the user provided the stack */ void *p_guardaddr; /* address of guard area or NULL */ size_t p_guardsize; /* size of guard area */ @@ -208,6 +217,7 @@ /* Descriptor of the manager thread */ extern struct _pthread_descr_struct __pthread_manager_thread; +extern pthread_descr __pthread_manager_threadp attribute_hidden; /* Indicate whether at least one thread has a user-defined stack (if 1), or all threads have stacks supplied by LinuxThreads (if 0). */ --- glibc-2.3.2/linuxthreads/forward.c 2003-01-02 17:33:45.000000000 -0500 +++ glibc-2.3.2/linuxthreads/forward.c 2003-09-19 22:37:03.000000000 -0400 @@ -128,6 +128,15 @@ #endif versioned_symbol (libc, __pthread_cond_wait, pthread_cond_wait, GLIBC_2_3_2); +FORWARD (__pthread_cond_timedwait, + (pthread_cond_t *cond, pthread_mutex_t *mutex, + const struct timespec *abstime), (cond, mutex, abstime), 0) +#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_3_2) +strong_alias (__pthread_cond_timedwait, __pthread_cond_timedwait_2_0) +compat_symbol (libc, __pthread_cond_timedwait_2_0, pthread_cond_timedwait, GLIBC_2_0); +#endif +versioned_symbol (libc, __pthread_cond_timedwait, pthread_cond_timedwait, GLIBC_2_3_2); + FORWARD (pthread_equal, (pthread_t thread1, pthread_t thread2), (thread1, thread2), 1) --- glibc-2.3.2/linuxthreads/internals.h 2003-01-06 19:02:26.000000000 -0500 +++ glibc-2.3.2/linuxthreads/internals.h 2003-09-19 22:37:03.000000000 -0400 @@ -29,6 +29,7 @@ #include "descr.h" #include "semaphore.h" +#include #ifndef THREAD_GETMEM # define THREAD_GETMEM(descr, member) descr->member @@ -256,6 +257,7 @@ /* Defined and used in libc.so. */ extern int __libc_multiple_threads attribute_hidden; +extern int __librt_multiple_threads; /* Debugging */ @@ -352,12 +354,16 @@ const pthread_condattr_t *cond_attr); extern int __pthread_cond_destroy (pthread_cond_t *cond); extern int __pthread_cond_wait (pthread_cond_t *cond, pthread_mutex_t *mutex); +extern int __pthread_cond_timedwait (pthread_cond_t *cond, + pthread_mutex_t *mutex, + const struct timespec *abstime); extern int __pthread_cond_signal (pthread_cond_t *cond); extern int __pthread_cond_broadcast (pthread_cond_t *cond); extern int __pthread_condattr_init (pthread_condattr_t *attr); extern int __pthread_condattr_destroy (pthread_condattr_t *attr); extern pthread_t __pthread_self (void); extern pthread_descr __pthread_thread_self (void); +extern pthread_descr __pthread_self_stack (void) attribute_hidden; extern int __pthread_equal (pthread_t thread1, pthread_t thread2); extern void __pthread_exit (void *retval); extern int __pthread_getschedparam (pthread_t thread, int *policy, @@ -377,6 +383,8 @@ extern void __pthread_wait_for_restart_signal(pthread_descr self); +extern void __pthread_sigsuspend (const sigset_t *mask) attribute_hidden; + extern int __pthread_yield (void); extern int __pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock, @@ -465,9 +473,12 @@ extern void __libc_disable_asynccancel (int oldtype) internal_function attribute_hidden; +/* The two functions are in libc.so and are exported. */ +extern int __librt_enable_asynccancel (void); +extern void __librt_disable_asynccancel (int oldtype) internal_function; + extern void __pthread_cleanup_upto (__jmp_buf target, char *targetframe) attribute_hidden; -struct fork_block; extern pid_t __pthread_fork (struct fork_block *b) attribute_hidden; #if !defined NOT_IN_libc @@ -478,7 +489,7 @@ # define LIBC_CANCEL_HANDLED() \ __asm (".globl " __SYMBOL_PREFIX "__libc_enable_asynccancel"); \ __asm (".globl " __SYMBOL_PREFIX "__libc_disable_asynccancel") -#elif defined NOT_IN_libc && defined IS_IN_libpthread +#elif defined IS_IN_libpthread # define LIBC_CANCEL_ASYNC() \ __pthread_enable_asynccancel () # define LIBC_CANCEL_RESET(oldtype) \ @@ -486,70 +497,20 @@ # define LIBC_CANCEL_HANDLED() \ __asm (".globl " __SYMBOL_PREFIX "__pthread_enable_asynccancel"); \ __asm (".globl " __SYMBOL_PREFIX "__pthread_disable_asynccancel") +#elif defined IS_IN_librt +# define LIBC_CANCEL_ASYNC() \ + __librt_enable_asynccancel () +# define LIBC_CANCEL_RESET(oldtype) \ + __librt_disable_asynccancel (oldtype) +# define LIBC_CANCEL_HANDLED() \ + __asm (".globl " __SYMBOL_PREFIX "__librt_enable_asynccancel"); \ + __asm (".globl " __SYMBOL_PREFIX "__librt_disable_asynccancel") #else # define LIBC_CANCEL_ASYNC() 0 /* Just a dummy value. */ # define LIBC_CANCEL_RESET(val) ((void)(val)) /* Nothing, but evaluate it. */ # define LIBC_CANCEL_HANDLED() /* Nothing. */ #endif -/* Data type shared with libc. The libc uses it to pass on calls to - the thread functions. */ -struct pthread_functions -{ - pid_t (*ptr_pthread_fork) (struct fork_block *); - int (*ptr_pthread_attr_destroy) (pthread_attr_t *); - int (*ptr___pthread_attr_init_2_0) (pthread_attr_t *); - int (*ptr___pthread_attr_init_2_1) (pthread_attr_t *); - int (*ptr_pthread_attr_getdetachstate) (const pthread_attr_t *, int *); - int (*ptr_pthread_attr_setdetachstate) (pthread_attr_t *, int); - int (*ptr_pthread_attr_getinheritsched) (const pthread_attr_t *, int *); - int (*ptr_pthread_attr_setinheritsched) (pthread_attr_t *, int); - int (*ptr_pthread_attr_getschedparam) (const pthread_attr_t *, - struct sched_param *); - int (*ptr_pthread_attr_setschedparam) (pthread_attr_t *, - const struct sched_param *); - int (*ptr_pthread_attr_getschedpolicy) (const pthread_attr_t *, int *); - int (*ptr_pthread_attr_setschedpolicy) (pthread_attr_t *, int); - int (*ptr_pthread_attr_getscope) (const pthread_attr_t *, int *); - int (*ptr_pthread_attr_setscope) (pthread_attr_t *, int); - int (*ptr_pthread_condattr_destroy) (pthread_condattr_t *); - int (*ptr_pthread_condattr_init) (pthread_condattr_t *); - int (*ptr___pthread_cond_broadcast) (pthread_cond_t *); - int (*ptr___pthread_cond_destroy) (pthread_cond_t *); - int (*ptr___pthread_cond_init) (pthread_cond_t *, - const pthread_condattr_t *); - int (*ptr___pthread_cond_signal) (pthread_cond_t *); - int (*ptr___pthread_cond_wait) (pthread_cond_t *, pthread_mutex_t *); - int (*ptr_pthread_equal) (pthread_t, pthread_t); - void (*ptr___pthread_exit) (void *); - int (*ptr_pthread_getschedparam) (pthread_t, int *, struct sched_param *); - int (*ptr_pthread_setschedparam) (pthread_t, int, - const struct sched_param *); - int (*ptr_pthread_mutex_destroy) (pthread_mutex_t *); - int (*ptr_pthread_mutex_init) (pthread_mutex_t *, - const pthread_mutexattr_t *); - int (*ptr_pthread_mutex_lock) (pthread_mutex_t *); - int (*ptr_pthread_mutex_trylock) (pthread_mutex_t *); - int (*ptr_pthread_mutex_unlock) (pthread_mutex_t *); - pthread_t (*ptr_pthread_self) (void); - int (*ptr_pthread_setcancelstate) (int, int *); - int (*ptr_pthread_setcanceltype) (int, int *); - void (*ptr_pthread_do_exit) (void *retval, char *currentframe); - void (*ptr_pthread_cleanup_upto) (__jmp_buf target, - char *targetframe); - pthread_descr (*ptr_pthread_thread_self) (void); - int (*ptr_pthread_internal_tsd_set) (int key, const void *pointer); - void * (*ptr_pthread_internal_tsd_get) (int key); - void ** __attribute__ ((__const__)) - (*ptr_pthread_internal_tsd_address) (int key); - int (*ptr_pthread_sigaction) (int sig, const struct sigaction * act, - struct sigaction *oact); - int (*ptr_pthread_sigwait) (const sigset_t *set, int *sig); - int (*ptr_pthread_raise) (int sig); -}; - -/* Variable in libc.so. */ -extern struct pthread_functions __libc_pthread_functions attribute_hidden; extern int * __libc_pthread_init (const struct pthread_functions *functions); #if !defined NOT_IN_libc && !defined FLOATING_STACKS @@ -562,4 +523,30 @@ # endif #endif +#ifndef USE_TLS +# define __manager_thread (&__pthread_manager_thread) +#else +# define __manager_thread __pthread_manager_threadp +#endif + +extern inline __attribute__((always_inline)) pthread_descr +check_thread_self (void) +{ + pthread_descr self = thread_self (); +#if defined THREAD_SELF && defined INIT_THREAD_SELF + if (self == __manager_thread) + { + /* A new thread might get a cancel signal before it is fully + initialized, so that the thread register might still point to the + manager thread. Double check that this is really the manager + thread. */ + self = __pthread_self_stack(); + if (self != __manager_thread) + /* Oops, thread_self() isn't working yet.. */ + INIT_THREAD_SELF(self, self->p_nr); + } +#endif + return self; +} + #endif /* internals.h */ --- glibc-2.3.2/linuxthreads/libc-cancellation.c 2003-01-02 18:26:04.000000000 -0500 +++ glibc-2.3.2/linuxthreads/libc-cancellation.c 2003-08-21 08:37:03.000000000 -0400 @@ -31,7 +31,8 @@ weak_extern (__pthread_do_exit) # endif -int __libc_multiple_threads attribute_hidden; +int __libc_multiple_threads attribute_hidden __attribute__((nocommon)); +strong_alias (__libc_multiple_threads, __librt_multiple_threads); /* The next two functions are similar to pthread_setcanceltype() but more specialized for the use in the cancelable functions like write(). @@ -49,6 +50,7 @@ (PTHREAD_CANCELED, CURRENT_STACK_FRAME), 0); return oldtype; } +strong_alias (__libc_enable_asynccancel, __librt_enable_asynccancel) void internal_function attribute_hidden @@ -57,5 +59,6 @@ pthread_descr self = thread_self(); LIBC_THREAD_SETMEM(self, p_canceltype, oldtype); } +strong_alias (__libc_disable_asynccancel, __librt_disable_asynccancel) #endif --- glibc-2.3.2/linuxthreads/libc-tls-loc.c 2002-11-14 22:37:05.000000000 -0500 +++ glibc-2.3.2/linuxthreads/libc-tls-loc.c 2003-08-21 08:37:03.000000000 -0400 @@ -43,7 +43,7 @@ struct __res_state * __res_state (void) { - return &_res; + return __resp; } #endif --- glibc-2.3.2/linuxthreads/manager.c 2003-01-12 03:37:35.000000000 -0500 +++ glibc-2.3.2/linuxthreads/manager.c 2003-08-21 08:37:03.000000000 -0400 @@ -28,6 +28,7 @@ #include #include /* for waitpid macros */ #include /* for __uselocale */ +#include /* for __resp */ #include #include "pthread.h" @@ -287,6 +288,9 @@ /* Initialize thread-locale current locale to point to the global one. With __thread support, the variable's initializer takes care of this. */ __uselocale (LC_GLOBAL_LOCALE); +#else + /* Initialize __resp. */ + __resp = &self->p_res; #endif /* Make gdb aware of new thread */ if (__pthread_threads_debug && __pthread_sig_debug > 0) { @@ -591,8 +595,8 @@ if (new_thread == NULL) return EAGAIN; # if TLS_DTV_AT_TP - /* pthread_descr is right below TP. */ - --new_thread; + /* pthread_descr is below TP. */ + new_thread = (pthread_descr) ((char *) new_thread - TLS_PRE_TCB_SIZE); # endif #else /* Prevent warnings. */ @@ -612,7 +616,7 @@ { #ifdef USE_TLS # if TLS_DTV_AT_TP - ++new_thread; + new_thread = (pthread_descr) ((char *) new_thread + TLS_PRE_TCB_SIZE); # endif _dl_deallocate_tls (new_thread, true); #endif @@ -638,13 +642,13 @@ new_thread_id = sseg + pthread_threads_counter; /* Initialize the thread descriptor. Elements which have to be initialized to zero already have this value. */ -#if defined USE_TLS && TLS_DTV_AT_TP - new_thread->p_header.data.tcb = new_thread + 1; -#else +#if !defined USE_TLS || !TLS_DTV_AT_TP new_thread->p_header.data.tcb = new_thread; -#endif new_thread->p_header.data.self = new_thread; - new_thread->p_header.data.multiple_threads = 1; +#endif +#if TLS_MULTIPLE_THREADS_IN_TCB || !defined USE_TLS || !TLS_DTV_AT_TP + new_thread->p_multiple_threads = 1; +#endif new_thread->p_tid = new_thread_id; new_thread->p_lock = &(__pthread_handles[sseg].h_lock); new_thread->p_cancelstate = PTHREAD_CANCEL_ENABLE; @@ -806,7 +810,7 @@ } #ifdef USE_TLS # if TLS_DTV_AT_TP - ++new_thread; + new_thread = (pthread_descr) ((char *) new_thread + TLS_PRE_TCB_SIZE); # endif _dl_deallocate_tls (new_thread, true); #endif @@ -896,7 +900,7 @@ #ifdef USE_TLS # if TLS_DTV_AT_TP - ++th; + th = (pthread_descr) ((char *) th + TLS_PRE_TCB_SIZE); # endif _dl_deallocate_tls (th, true); #endif --- glibc-2.3.2/linuxthreads/pthread.c 2003-01-16 13:14:41.000000000 -0500 +++ glibc-2.3.2/linuxthreads/pthread.c 2003-09-19 22:37:04.000000000 -0400 @@ -55,7 +55,8 @@ #ifdef USE_TLS /* We need only a few variables. */ -static pthread_descr manager_thread; +#define manager_thread __pthread_manager_threadp +pthread_descr __pthread_manager_threadp attribute_hidden; #else @@ -260,6 +261,7 @@ .ptr___pthread_cond_init = __pthread_cond_init, .ptr___pthread_cond_signal = __pthread_cond_signal, .ptr___pthread_cond_wait = __pthread_cond_wait, + .ptr___pthread_cond_timedwait = __pthread_cond_timedwait, .ptr_pthread_equal = __pthread_equal, .ptr___pthread_exit = __pthread_exit, .ptr_pthread_getschedparam = __pthread_getschedparam, @@ -462,6 +464,44 @@ # endif #endif +#ifdef USE_TLS +static inline void __attribute__((always_inline)) +init_one_static_tls (pthread_descr descr, struct link_map *map) +{ +# if TLS_TCB_AT_TP + dtv_t *dtv = GET_DTV (descr); + void *dest = (char *) descr - map->l_tls_offset; +# elif TLS_DTV_AT_TP + dtv_t *dtv = GET_DTV ((pthread_descr) ((char *) descr + TLS_PRE_TCB_SIZE)); + void *dest = (char *) descr + map->l_tls_offset + TLS_PRE_TCB_SIZE; +# else +# error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined" +# endif + + /* Fill in the DTV slot so that a later LD/GD access will find it. */ + dtv[map->l_tls_modid].pointer = dest; + + /* Initialize the memory. */ + memset (__mempcpy (dest, map->l_tls_initimage, map->l_tls_initimage_size), + '\0', map->l_tls_blocksize - map->l_tls_initimage_size); +} + +static void +__pthread_init_static_tls (struct link_map *map) +{ + size_t i; + + for (i = 0; i < PTHREAD_THREADS_MAX; ++i) + if (__pthread_handles[i].h_descr != NULL && i != 1) + { + __pthread_lock (&__pthread_handles[i].h_lock, NULL); + if (__pthread_handles[i].h_descr != NULL) + init_one_static_tls (__pthread_handles[i].h_descr, map); + __pthread_unlock (&__pthread_handles[i].h_lock); + } +} +#endif + static void pthread_initialize(void) { struct sigaction sa; @@ -529,6 +569,10 @@ sigemptyset(&mask); sigaddset(&mask, __pthread_sig_restart); sigprocmask(SIG_BLOCK, &mask, NULL); + /* And unblock __pthread_sig_cancel if it has been blocked. */ + sigdelset(&mask, __pthread_sig_restart); + sigaddset(&mask, __pthread_sig_cancel); + sigprocmask(SIG_UNBLOCK, &mask, NULL); /* Register an exit function to kill all other threads. */ /* Do it early so that user-registered atexit functions are called before pthread_*exit_process. */ @@ -546,6 +590,19 @@ /* Transfer the old value from the dynamic linker's internal location. */ *__libc_dl_error_tsd () = *(*GL(dl_error_catch_tsd)) (); GL(dl_error_catch_tsd) = &__libc_dl_error_tsd; + + /* Make __rtld_lock_{,un}lock_recursive use pthread_mutex_{,un}lock, + keep the lock count from the ld.so implementation. */ + GL(dl_rtld_lock_recursive) = (void *) __pthread_mutex_lock; + GL(dl_rtld_unlock_recursive) = (void *) __pthread_mutex_unlock; + unsigned int rtld_lock_count = GL(dl_load_lock).mutex.__m_count; + GL(dl_load_lock).mutex.__m_count = 0; + while (rtld_lock_count-- > 0) + __pthread_mutex_lock (&GL(dl_load_lock).mutex); +#endif + +#ifdef USE_TLS + GL(dl_init_static_tls) = &__pthread_init_static_tls; #endif } @@ -566,8 +623,10 @@ #endif __pthread_multiple_threads = 1; - __pthread_main_thread->p_header.data.multiple_threads = 1; - * __libc_multiple_threads_ptr = 1; +#if TLS_MULTIPLE_THREADS_IN_TCB || !defined USE_TLS || !TLS_DTV_AT_TP + __pthread_main_thread->p_multiple_threads = 1; +#endif + *__libc_multiple_threads_ptr = 1; #ifndef HAVE_Z_NODELETE if (__builtin_expect (&__dso_handle != NULL, 1)) @@ -606,14 +665,18 @@ # elif TLS_DTV_AT_TP /* pthread_descr is located right below tcbhead_t which _dl_allocate_tls returns. */ - mgr = (pthread_descr) tcbp - 1; + mgr = (pthread_descr) ((char *) tcbp - TLS_PRE_TCB_SIZE); # endif __pthread_handles[1].h_descr = manager_thread = mgr; /* Initialize the descriptor. */ +#if !defined USE_TLS || !TLS_DTV_AT_TP mgr->p_header.data.tcb = tcbp; mgr->p_header.data.self = mgr; mgr->p_header.data.multiple_threads = 1; +#elif TLS_MULTIPLE_THREADS_IN_TCB + mgr->p_multiple_threads = 1; +#endif mgr->p_lock = &__pthread_handles[1].h_lock; # ifndef HAVE___THREAD mgr->p_errnop = &mgr->p_errno; @@ -834,7 +897,7 @@ #else -static pthread_descr thread_self_stack(void) +pthread_descr __pthread_self_stack(void) { char *sp = CURRENT_STACK_FRAME; pthread_handle h; @@ -961,7 +1024,7 @@ static void pthread_handle_sigrestart(int sig) { - pthread_descr self = thread_self(); + pthread_descr self = check_thread_self(); THREAD_SETMEM(self, p_signal, sig); if (THREAD_GETMEM(self, p_signal_jmp) != NULL) siglongjmp(*THREAD_GETMEM(self, p_signal_jmp), 1); @@ -974,31 +1037,13 @@ static void pthread_handle_sigcancel(int sig) { - pthread_descr self = thread_self(); + pthread_descr self = check_thread_self(); sigjmp_buf * jmpbuf; if (self == manager_thread) { -#ifdef THREAD_SELF - /* A new thread might get a cancel signal before it is fully - initialized, so that the thread register might still point to the - manager thread. Double check that this is really the manager - thread. */ - pthread_descr real_self = thread_self_stack(); - if (real_self == manager_thread) - { - __pthread_manager_sighandler(sig); - return; - } - /* Oops, thread_self() isn't working yet.. */ - self = real_self; -# ifdef INIT_THREAD_SELF - INIT_THREAD_SELF(self, self->p_nr); -# endif -#else __pthread_manager_sighandler(sig); return; -#endif } if (__builtin_expect (__pthread_exit_requested, 0)) { /* Main thread should accumulate times for thread manager and its @@ -1138,7 +1183,8 @@ sigdelset(&mask, __pthread_sig_restart); /* Unblock the restart signal */ THREAD_SETMEM(self, p_signal, 0); do { - sigsuspend(&mask); /* Wait for signal */ + __pthread_sigsuspend(&mask); /* Wait for signal. Must not be a + cancellation point. */ } while (THREAD_GETMEM(self, p_signal) !=__pthread_sig_restart); READ_MEMORY_BARRIER(); /* See comment in __pthread_restart_new */ --- glibc-2.3.2/linuxthreads/sighandler.c 2002-05-03 03:29:18.000000000 -0400 +++ glibc-2.3.2/linuxthreads/sighandler.c 2003-09-19 22:37:04.000000000 -0400 @@ -22,7 +22,8 @@ { pthread_descr self; char * in_sighandler; - self = thread_self(); + self = check_thread_self(); + /* If we're in a sigwait operation, just record the signal received and return without calling the user's handler */ if (THREAD_GETMEM(self, p_sigwaiting)) { @@ -46,7 +47,8 @@ { pthread_descr self; char * in_sighandler; - self = thread_self(); + self = check_thread_self(); + /* If we're in a sigwait operation, just record the signal received and return without calling the user's handler */ if (THREAD_GETMEM(self, p_sigwaiting)) { --- glibc-2.3.2/linuxthreads/spinlock.h 2001-05-24 19:23:00.000000000 -0400 +++ glibc-2.3.2/linuxthreads/spinlock.h 2003-08-21 08:37:03.000000000 -0400 @@ -196,7 +196,7 @@ } -static inline void +static inline __attribute__((always_inline)) void __pthread_set_own_extricate_if (pthread_descr self, pthread_extricate_if *peif) { /* Only store a non-null peif if the thread has cancellation enabled. --- glibc-2.3.2/linuxthreads/sysdeps/alpha/elf/pt-initfini.c 2002-02-08 20:55:16.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/alpha/elf/pt-initfini.c 2003-08-21 08:37:03.000000000 -0400 @@ -45,18 +45,16 @@ /*@_init_PROLOG_BEGINS*/ \n\ .section .init, \"ax\", @progbits \n\ .globl _init \n\ - .ent _init \n\ + .type _init,@function \n\ + .usepv _init,std \n\ _init: \n\ ldgp $29, 0($27) \n\ subq $30, 16, $30 \n\ stq $26, 0($30) \n\ stq $29, 8($30) \n\ - .prologue 1 \n\ jsr $26, __pthread_initialize_minimal \n\ ldq $29, 8($30) \n\ .align 3 \n\ - .end _init \n\ - .size _init, 0 \n\ /*@_init_PROLOG_ENDS*/ \n\ \n\ /*@_init_EPILOG_BEGINS*/ \n\ @@ -70,7 +68,8 @@ /*@_fini_PROLOG_BEGINS*/ \n\ .section .fini, \"ax\", @progbits \n\ .globl _fini \n\ - .ent _fini \n\ + .type _fini,@function \n\ + .usepv _fini,std \n\ _fini: \n\ ldgp $29, 0($27) \n\ subq $30, 16, $30 \n\ @@ -78,8 +77,6 @@ stq $29, 8($30) \n\ .prologue 1 \n\ .align 3 \n\ - .end _fini \n\ - .size _fini, 0 \n\ /*@_fini_PROLOG_ENDS*/ \n\ \n\ /*@_fini_EPILOG_BEGINS*/ \n\ --- glibc-2.3.2/linuxthreads/sysdeps/alpha/pt-machine.h 2002-09-09 01:18:20.000000000 -0400 +++ glibc-2.3.2/linuxthreads/sysdeps/alpha/pt-machine.h 2003-08-21 08:37:03.000000000 -0400 @@ -1,6 +1,7 @@ /* Machine-dependent pthreads configuration and inline functions. Alpha version. - Copyright (C) 1996, 1997, 1998, 2000, 2002 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1998, 2000, 2002, 2003 + Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Richard Henderson . @@ -23,7 +24,7 @@ #define _PT_MACHINE_H 1 #ifndef PT_EI -# define PT_EI extern inline +# define PT_EI extern inline __attribute__ ((always_inline)) #endif #ifdef __linux__ --- glibc-2.3.2/linuxthreads/sysdeps/arm/pt-machine.h 2002-08-27 00:52:35.000000000 -0400 +++ glibc-2.3.2/linuxthreads/sysdeps/arm/pt-machine.h 2003-08-21 08:37:03.000000000 -0400 @@ -1,6 +1,6 @@ /* Machine-dependent pthreads configuration and inline functions. ARM version. - Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 2000, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Philip Blundell . @@ -23,7 +23,7 @@ #define _PT_MACHINE_H 1 #ifndef PT_EI -# define PT_EI extern inline +# define PT_EI extern inline __attribute__ ((always_inline)) #endif extern long int testandset (int *spinlock); --- glibc-2.3.2/linuxthreads/sysdeps/cris/pt-machine.h 2002-08-27 00:52:35.000000000 -0400 +++ glibc-2.3.2/linuxthreads/sysdeps/cris/pt-machine.h 2003-08-21 08:37:03.000000000 -0400 @@ -1,6 +1,6 @@ /* Machine-dependent pthreads configuration and inline functions. CRIS version. - Copyright (C) 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -22,7 +22,7 @@ #define _PT_MACHINE_H 1 #ifndef PT_EI -# define PT_EI extern inline +# define PT_EI extern inline __attribute__ ((always_inline)) #endif extern long int testandset (int *spinlock); --- glibc-2.3.2/linuxthreads/sysdeps/hppa/pt-machine.h 2002-08-27 00:52:35.000000000 -0400 +++ glibc-2.3.2/linuxthreads/sysdeps/hppa/pt-machine.h 2003-08-21 08:37:03.000000000 -0400 @@ -1,6 +1,6 @@ /* Machine-dependent pthreads configuration and inline functions. hppa version. - Copyright (C) 2000, 2002 Free Software Foundation, Inc. + Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Richard Henderson . @@ -25,7 +25,7 @@ #include #ifndef PT_EI -# define PT_EI extern inline +# define PT_EI extern inline __attribute__ ((always_inline)) #endif extern long int testandset (int *spinlock); --- glibc-2.3.2/linuxthreads/sysdeps/i386/Makefile 2002-12-28 16:07:50.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/i386/Makefile 2003-09-19 22:37:04.000000000 -0400 @@ -6,15 +6,15 @@ # Most files must not be compiled without frame pointer since we need # the frame base address which is stored in %ebp unless the frame pointer # is optimized out. -CFLAGS-cancel.c += -fno-omit-frame-pointer +CFLAGS-cancel.c += -fno-omit-frame-pointer -mpreferred-stack-boundary=4 CFLAGS-condvar.c += -fno-omit-frame-pointer CFLAGS-join.c += -fno-omit-frame-pointer -CFLAGS-manager.c += -fno-omit-frame-pointer +CFLAGS-manager.c += -fno-omit-frame-pointer -mpreferred-stack-boundary=4 CFLAGS-oldsemaphore.c += -fno-omit-frame-pointer -CFLAGS-pthread.c += -fno-omit-frame-pointer +CFLAGS-pthread.c += -fno-omit-frame-pointer -mpreferred-stack-boundary=4 CFLAGS-ptlongjmp.c += -fno-omit-frame-pointer CFLAGS-semaphore.c += -fno-omit-frame-pointer -CFLAGS-sighandler.c += -fno-omit-frame-pointer +CFLAGS-sighandler.c += -fno-omit-frame-pointer -mpreferred-stack-boundary=4 endif ifeq ($(subdir),csu) --- glibc-2.3.2/linuxthreads/sysdeps/i386/i686/pt-machine.h 2003-02-25 19:46:32.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/i386/i686/pt-machine.h 2003-08-21 08:37:03.000000000 -0400 @@ -1,6 +1,6 @@ /* Machine-dependent pthreads configuration and inline functions. i686 version. - Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc. + Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Richard Henderson . @@ -23,7 +23,7 @@ #define _PT_MACHINE_H 1 #ifndef PT_EI -# define PT_EI extern inline +# define PT_EI extern inline __attribute__ ((always_inline)) #endif #include "kernel-features.h" --- glibc-2.3.2/linuxthreads/sysdeps/i386/pt-machine.h 2003-02-25 19:46:32.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/i386/pt-machine.h 2003-08-21 08:37:03.000000000 -0400 @@ -1,6 +1,6 @@ /* Machine-dependent pthreads configuration and inline functions. i386 version. - Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc. + Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Richard Henderson . @@ -24,7 +24,7 @@ #ifndef __ASSEMBLER__ #ifndef PT_EI -# define PT_EI extern inline +# define PT_EI extern inline __attribute__ ((always_inline)) #endif extern long int testandset (int *spinlock); --- glibc-2.3.2/linuxthreads/sysdeps/i386/tls.h 2003-02-25 19:46:32.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/i386/tls.h 2003-05-12 12:13:04.000000000 -0400 @@ -119,7 +119,7 @@ # include "useldt.h" /* For the structure. */ # define TLS_DO_MODIFY_LDT_KERNEL_CHECK(doit) \ (__builtin_expect (GL(dl_osversion) < 131939, 0) \ - ? "kernel too old for thread-local storage support" \ + ? "kernel too old for thread-local storage support\n" \ : (doit)) # endif @@ -142,7 +142,7 @@ "d" (sizeof (ldt_entry))); \ __builtin_expect (result, 0) == 0 \ ? ({ asm ("movw %w0, %%gs" : : "q" ((nr) * 8 + 7)); NULL; }) \ - : "cannot set up LDT for thread-local storage"; \ + : "cannot set up LDT for thread-local storage\n"; \ })) # define TLS_DO_SET_THREAD_AREA(descr, secondcall) \ @@ -171,8 +171,8 @@ # ifdef __ASSUME_SET_THREAD_AREA_SYSCALL # define TLS_SETUP_GS_SEGMENT(descr, secondcall) \ - (TLS_DO_SET_THREAD_AREA (descr, firstcall) \ - ? "set_thread_area failed when setting up thread-local storage" : NULL) + (TLS_DO_SET_THREAD_AREA (descr, secondcall) \ + ? "set_thread_area failed when setting up thread-local storage\n" : NULL) # elif defined __NR_set_thread_area # define TLS_SETUP_GS_SEGMENT(descr, secondcall) \ (TLS_DO_SET_THREAD_AREA (descr, secondcall) \ --- glibc-2.3.2/linuxthreads/sysdeps/i386/useldt.h 2002-12-18 17:49:52.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/i386/useldt.h 2003-04-24 20:05:57.000000000 -0400 @@ -22,6 +22,7 @@ #ifndef __ASSEMBLER__ #include /* For offsetof. */ #include /* For abort(). */ +#include /* We don't want to include the kernel header. So duplicate the @@ -109,7 +110,9 @@ "int $0x80\n\t" \ USETLS_LOAD_EBX \ : "=&a" (__result) \ - : USETLS_EBX_ARG (&ldt_entry), "i" (__NR_set_thread_area)); \ + : USETLS_EBX_ARG (&ldt_entry), "i" (__NR_set_thread_area), \ + "m" (ldt_entry) \ + : "memory"); \ if (__result == 0) \ asm ("movw %w0, %%gs" :: "q" (__gs)); \ else \ @@ -127,7 +130,9 @@ "int $0x80\n\t" \ USETLS_LOAD_EBX \ : "=&a" (__result) \ - : USETLS_EBX_ARG (&ldt_entry), "i" (__NR_set_thread_area)); \ + : USETLS_EBX_ARG (&ldt_entry), "i" (__NR_set_thread_area), \ + "m" (ldt_entry) \ + : "memory"); \ if (__result == 0) \ { \ __gs = (ldt_entry.entry_number << 3) + 3; \ @@ -307,4 +312,3 @@ /* Maximum size of the stack if the rlimit is unlimited. */ #define ARCH_STACK_MAX_SIZE 8*1024*1024 #endif - --- glibc-2.3.2/linuxthreads/sysdeps/ia64/pspinlock.c 2002-08-27 00:52:35.000000000 -0400 +++ glibc-2.3.2/linuxthreads/sysdeps/ia64/pspinlock.c 2003-03-15 15:02:09.000000000 -0500 @@ -1,5 +1,5 @@ /* POSIX spinlock implementation. ia64 version. - Copyright (C) 2000 Free Software Foundation, Inc. + Copyright (C) 2000, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Jes Sorensen @@ -21,6 +21,7 @@ #include #include #include "internals.h" +#include /* This implementation is inspired by the implementation used in the Linux kernel. */ @@ -28,21 +29,15 @@ int __pthread_spin_lock (pthread_spinlock_t *lock) { - asm volatile - ("mov ar.ccv = r0\n\t" - "mov r3 = 1\n\t" - ";;\n" - "1:\n\t" - "ld4 r2 = %0\n\t" - ";;\n\t" - "cmp4.eq p0, p7 = r0, r2\n\t" - "(p7) br.cond.spnt.few 1b \n\t" - "cmpxchg4.acq r2 = %0, r3, ar.ccv\n\t" - ";;\n\t" - "cmp4.eq p0, p7 = r0, r2\n\t" - "(p7) br.cond.spnt.few 1b\n\t" - ";;\n" - :: "m" (lock) : "r2", "r3", "p7", "memory"); + int *p = (int *) lock; + + while (__builtin_expect (__sync_val_compare_and_swap_si (p, 0, 1), 0)) + { + /* Spin without using the atomic instruction. */ + do + __asm __volatile ("" : : : "memory"); + while (*p); + } return 0; } weak_alias (__pthread_spin_lock, pthread_spin_lock) @@ -51,16 +46,7 @@ int __pthread_spin_trylock (pthread_spinlock_t *lock) { - int oldval; - - asm volatile - ("mov ar.ccv = r0\n\t" - "mov r2 = 1\n\t" - ";;\n\t" - "cmpxchg4.acq %0 = %1, r2, ar.ccv\n\t" - ";;\n" - : "=r" (oldval) : "m" (lock) : "r2", "memory"); - return oldval > 0 ? 0 : EBUSY; + return __sync_val_compare_and_swap_si ((int *) lock, 0, 1) == 0 ? 0 : EBUSY; } weak_alias (__pthread_spin_trylock, pthread_spin_trylock) --- glibc-2.3.2/linuxthreads/sysdeps/ia64/pt-machine.h 2003-01-30 16:03:05.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/ia64/pt-machine.h 2003-08-21 08:37:03.000000000 -0400 @@ -24,7 +24,7 @@ #include #ifndef PT_EI -# define PT_EI extern inline +# define PT_EI extern inline __attribute__ ((always_inline)) #endif extern long int testandset (int *spinlock); --- glibc-2.3.2/linuxthreads/sysdeps/ia64/tcb-offsets.sym 2003-01-16 13:20:08.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/ia64/tcb-offsets.sym 2003-04-28 08:20:35.000000000 -0400 @@ -3,7 +3,7 @@ -- #ifdef USE_TLS -MULTIPLE_THREADS_OFFSET offsetof (struct _pthread_descr_struct, p_header.data.multiple_threads) - sizeof (struct _pthread_descr_struct) +MULTIPLE_THREADS_OFFSET offsetof (struct _pthread_descr_struct, p_multiple_threads) - sizeof (struct _pthread_descr_struct) #else MULTIPLE_THREADS_OFFSET offsetof (tcbhead_t, multiple_threads) #endif --- glibc-2.3.2/linuxthreads/sysdeps/ia64/tls.h 2003-01-16 13:20:08.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/ia64/tls.h 2003-08-21 08:37:03.000000000 -0400 @@ -84,7 +84,7 @@ special attention since 'errno' is not yet available and if the operation can cause a failure 'errno' must not be touched. */ # define TLS_INIT_TP(tcbp, secondcall) \ - (__thread_self = (tcbp), NULL) + (__thread_self = (__typeof (__thread_self)) (tcbp), NULL) /* Return the address of the dtv for the current thread. */ # define THREAD_DTV() \ @@ -98,6 +98,8 @@ # define INIT_THREAD_SELF(descr, nr) \ (__thread_self = (struct _pthread_descr_struct *)(descr) + 1) +# define TLS_MULTIPLE_THREADS_IN_TCB 1 + /* Get the thread descriptor definition. */ # include --- glibc-2.3.2/linuxthreads/sysdeps/m68k/pt-machine.h 2002-08-27 00:52:36.000000000 -0400 +++ glibc-2.3.2/linuxthreads/sysdeps/m68k/pt-machine.h 2003-08-21 08:37:03.000000000 -0400 @@ -1,6 +1,6 @@ /* Machine-dependent pthreads configuration and inline functions. m68k version. - Copyright (C) 1996, 1998, 2000, 2002 Free Software Foundation, Inc. + Copyright (C) 1996, 1998, 2000, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Richard Henderson . @@ -23,7 +23,7 @@ #define _PT_MACHINE_H 1 #ifndef PT_EI -# define PT_EI extern inline +# define PT_EI extern inline __attribute__ ((always_inline)) #endif extern long int testandset (int *spinlock); --- glibc-2.3.2/linuxthreads/sysdeps/mips/pspinlock.c 2002-08-27 00:52:36.000000000 -0400 +++ glibc-2.3.2/linuxthreads/sysdeps/mips/pspinlock.c 2003-03-15 15:02:09.000000000 -0500 @@ -1,5 +1,5 @@ /* POSIX spinlock implementation. MIPS version. - Copyright (C) 2000, 2002 Free Software Foundation, Inc. + Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -32,7 +32,9 @@ ("\t\t\t# spin_lock\n" "1:\n\t" ".set push\n\t" +#if _MIPS_SIM == _MIPS_SIM_ABI32 ".set mips2\n\t" +#endif "ll %1,%3\n\t" "li %2,1\n\t" "bnez %1,1b\n\t" --- glibc-2.3.2/linuxthreads/sysdeps/mips/pt-machine.h 2002-08-27 00:52:36.000000000 -0400 +++ glibc-2.3.2/linuxthreads/sysdeps/mips/pt-machine.h 2003-08-21 08:37:03.000000000 -0400 @@ -1,6 +1,7 @@ /* Machine-dependent pthreads configuration and inline functions. - Copyright (C) 1996, 1997, 1998, 2000, 2002 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1998, 2000, 2002, 2003 + Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ralf Baechle . Based on the Alpha version by Richard Henderson . @@ -26,7 +27,7 @@ #include #ifndef PT_EI -# define PT_EI extern inline +# define PT_EI extern inline __attribute__ ((always_inline)) #endif extern long int testandset (int *spinlock); @@ -60,12 +61,22 @@ ("/* Inline compare & swap */\n" "1:\n\t" ".set push\n\t" +#if _MIPS_SIM == _MIPS_SIM_ABI32 ".set mips2\n\t" +#endif +#if defined _ABI64 && _MIPS_SIM == _ABI64 + "lld %1,%5\n\t" +#else "ll %1,%5\n\t" +#endif "move %0,$0\n\t" "bne %1,%3,2f\n\t" "move %0,%4\n\t" +#if defined _ABI64 && _MIPS_SIM == _ABI64 + "scd %0,%2\n\t" +#else "sc %0,%2\n\t" +#endif ".set pop\n\t" "beqz %0,1b\n" "2:\n\t" --- glibc-2.3.2/linuxthreads/sysdeps/powerpc/powerpc32/pt-machine.h 2003-02-17 15:32:09.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/powerpc/powerpc32/pt-machine.h 2003-08-21 08:37:03.000000000 -0400 @@ -1,6 +1,7 @@ /* Machine-dependent pthreads configuration and inline functions. powerpc version. - Copyright (C) 1996, 1997, 1998, 2000, 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1998, 2000, 2001, 2002, 2003 + Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -25,7 +26,7 @@ #define _PT_MACHINE_H 1 #ifndef PT_EI -# define PT_EI extern inline +# define PT_EI extern inline __attribute__ ((always_inline)) #endif extern long int testandset (int *spinlock); --- glibc-2.3.2/linuxthreads/sysdeps/powerpc/powerpc64/pt-machine.h 2002-09-14 04:55:04.000000000 -0400 +++ glibc-2.3.2/linuxthreads/sysdeps/powerpc/powerpc64/pt-machine.h 2003-09-19 22:37:04.000000000 -0400 @@ -1,6 +1,6 @@ /* Machine-dependent pthreads configuration and inline functions. powerpc version. - Copyright (C) 2002 Free Software Foundation, Inc. + Copyright (C) 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -25,7 +25,7 @@ #define _PT_MACHINE_H 1 #ifndef PT_EI -# define PT_EI extern inline +# define PT_EI extern inline __attribute__ ((always_inline)) #endif extern long int testandset (int *spinlock); @@ -34,7 +34,9 @@ /* For multiprocessor systems, we want to ensure all memory accesses are completed before we reset a lock. On other systems, we still need to make sure that the compiler has flushed everything to memory. */ -#define MEMORY_BARRIER() __asm__ __volatile__ ("sync" : : : "memory") +#define MEMORY_BARRIER() __asm__ __volatile__ ("lwsync" : : : "memory") +#define READ_MEMORY_BARRIER() __asm__ __volatile__ ("lwsync" : : : "memory") +#define WRITE_MEMORY_BARRIER() __asm__ __volatile__ ("eieio" : : : "memory") /* We want the OS to assign stack addresses. */ #define FLOATING_STACKS 1 @@ -57,6 +59,16 @@ /* Initialize the thread-unique value. */ #define INIT_THREAD_SELF(descr, nr) (__thread_self = (descr)) +/* Access to data in the thread descriptor is easy. */ +#define THREAD_GETMEM(descr, member) \ + ((void) (descr), THREAD_SELF->member) +#define THREAD_GETMEM_NC(descr, member) \ + ((void) (descr), THREAD_SELF->member) +#define THREAD_SETMEM(descr, member, value) \ + ((void) (descr), THREAD_SELF->member = (value)) +#define THREAD_SETMEM_NC(descr, member, value) \ + ((void) (descr), THREAD_SELF->member = (value)) + /* Compare-and-swap for semaphores. */ /* note that test-and-set(x) is the same as !compare-and-swap(x, 0, 1) */ --- glibc-2.3.2/linuxthreads/sysdeps/powerpc/pspinlock.c 2002-08-27 00:52:36.000000000 -0400 +++ glibc-2.3.2/linuxthreads/sysdeps/powerpc/pspinlock.c 2003-08-21 08:37:03.000000000 -0400 @@ -1,5 +1,5 @@ /* POSIX spinlock implementation. PowerPC version. - Copyright (C) 2000 Free Software Foundation, Inc. + Copyright (C) 2000, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -55,7 +55,7 @@ /* We can ignore the `pshared' parameter. Since we are busy-waiting all processes which can access the memory location `lock' points to can use the spinlock. */ - *lock = 1; + *lock = 0; return 0; } weak_alias (__pthread_spin_init, pthread_spin_init) --- glibc-2.3.2/linuxthreads/sysdeps/powerpc/tcb-offsets.sym 2003-02-17 15:32:09.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/powerpc/tcb-offsets.sym 2003-04-28 08:20:35.000000000 -0400 @@ -1,4 +1,24 @@ #include #include -MULTIPLE_THREADS_OFFSET offsetof (tcbhead_t, multiple_threads) +-- + +-- This could go into powerpc32/ instead and conditionalize #include of it. +#ifndef __powerpc64__ + +# ifdef USE_TLS + +-- Abuse tls.h macros to derive offsets relative to the thread register. +# undef __thread_register +# define __thread_register ((void *) 0) +# define thread_offsetof(mem) ((void *) &THREAD_SELF->p_##mem - (void *) 0) + +# else + +# define thread_offsetof(mem) offsetof (tcbhead_t, mem) + +# endif + +MULTIPLE_THREADS_OFFSET thread_offsetof (multiple_threads) + +#endif --- glibc-2.3.2/linuxthreads/sysdeps/powerpc/tls.h 2003-02-27 17:40:10.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/powerpc/tls.h 2003-04-28 08:20:35.000000000 -0400 @@ -32,15 +32,6 @@ void *pointer; } dtv_t; -typedef struct -{ - void *tcb; /* Pointer to the TCB. Not necessary the - thread descriptor used by libpthread. */ - dtv_t *dtv; - void *self; /* Pointer to the thread descriptor. */ - int multiple_threads; -} tcbhead_t; - #else /* __ASSEMBLER__ */ # include #endif /* __ASSEMBLER__ */ @@ -52,28 +43,38 @@ # ifndef __ASSEMBLER__ +/* This layout is actually wholly private and not affected by the ABI. + Nor does it overlap the pthread data structure, so we need nothing + extra here at all. */ +typedef struct +{ + dtv_t *dtv; +} tcbhead_t; + /* This is the size of the initial TCB. */ -# define TLS_INIT_TCB_SIZE sizeof (tcbhead_t) +# define TLS_INIT_TCB_SIZE 0 /* Alignment requirements for the initial TCB. */ -# define TLS_INIT_TCB_ALIGN __alignof__ (tcbhead_t) +# define TLS_INIT_TCB_ALIGN __alignof__ (struct _pthread_descr_struct) /* This is the size of the TCB. */ -# define TLS_TCB_SIZE sizeof (tcbhead_t) +# define TLS_TCB_SIZE 0 /* Alignment requirements for the TCB. */ -# define TLS_TCB_ALIGN __alignof__ (tcbhead_t) +# define TLS_TCB_ALIGN __alignof__ (struct _pthread_descr_struct) /* This is the size we need before TCB. */ -# define TLS_PRE_TCB_SIZE sizeof (struct _pthread_descr_struct) +# define TLS_PRE_TCB_SIZE \ + (sizeof (struct _pthread_descr_struct) \ + + ((sizeof (tcbhead_t) + TLS_TCB_ALIGN - 1) & ~(TLS_TCB_ALIGN - 1))) -/* The following assumes that TP (R13) is points to the end of the +/* The following assumes that TP (R2 or R13) is points to the end of the TCB + 0x7000 (per the ABI). This implies that TCB address is - R13-(TLS_TCB_SIZE + 0x7000). As we define TLS_DTV_AT_TP we can + TP - 0x7000. As we define TLS_DTV_AT_TP we can assume that the pthread_descr is allocated immediately ahead of the TCB. This implies that the pthread_descr address is - R13-(TLS_PRE_TCB_SIZE + TLS_TCB_SIZE + 0x7000). */ -# define TLS_TCB_OFFSET 0x7000 + TP - (TLS_PRE_TCB_SIZE + 0x7000). */ +#define TLS_TCB_OFFSET 0x7000 /* The DTV is allocated at the TP; the TCB is placed elsewhere. */ /* This is not really true for powerpc64. We are following alpha @@ -83,13 +84,13 @@ /* Install the dtv pointer. The pointer passed is to the element with index -1 which contain the length. */ # define INSTALL_DTV(TCBP, DTVP) \ - (((tcbhead_t *) (TCBP))->dtv = (DTVP) + 1) + (((tcbhead_t *) (TCBP))[-1].dtv = (DTVP) + 1) /* Install new dtv for current thread. */ # define INSTALL_NEW_DTV(DTV) (THREAD_DTV() = (DTV)) /* Return dtv of given thread descriptor. */ -# define GET_DTV(TCBP) (((tcbhead_t *) (TCBP))->dtv) +# define GET_DTV(TCBP) (((tcbhead_t *) (TCBP))[-1].dtv) /* The global register variable is declared in pt-machine.h with the wrong type, but the compiler doesn't like us declaring another. */ @@ -99,47 +100,57 @@ special attention since 'errno' is not yet available and if the operation can cause a failure 'errno' must not be touched. */ # define TLS_INIT_TP(TCBP, SECONDCALL) \ - (__thread_register = (void *) (TCBP) + TLS_TCB_OFFSET + TLS_TCB_SIZE, 0) + (__thread_register = (void *) (TCBP) + TLS_TCB_OFFSET, NULL) /* Return the address of the dtv for the current thread. */ # define THREAD_DTV() \ - (((tcbhead_t *) (__thread_register - TLS_TCB_OFFSET - TLS_TCB_SIZE))->dtv) + (((tcbhead_t *) (__thread_register - TLS_TCB_OFFSET))[-1].dtv) /* Return the thread descriptor for the current thread. */ # undef THREAD_SELF # define THREAD_SELF \ ((pthread_descr) (__thread_register \ - - TLS_TCB_OFFSET - TLS_TCB_SIZE - TLS_PRE_TCB_SIZE)) + - TLS_TCB_OFFSET - TLS_PRE_TCB_SIZE)) # undef INIT_THREAD_SELF # define INIT_THREAD_SELF(DESCR, NR) \ (__thread_register = ((void *) (DESCR) \ - + TLS_TCB_OFFSET + TLS_TCB_SIZE + TLS_PRE_TCB_SIZE)) + + TLS_TCB_OFFSET + TLS_PRE_TCB_SIZE)) + +/* Make sure we have the p_multiple_threads member in the thread structure. + See below. */ +# ifndef __powerpc64__ +# define TLS_MULTIPLE_THREADS_IN_TCB 1 +# endif /* Get the thread descriptor definition. */ # include -/* Generic bits of LinuxThreads may call these macros with - DESCR set to NULL. We are expected to be able to reference - the "current" value. */ - -# define THREAD_GETMEM(descr, member) \ - ((void) sizeof (descr), THREAD_SELF->member) -# define THREAD_SETMEM(descr, member, value) \ - ((void) sizeof (descr), THREAD_SELF->member = (value)) - -#define THREAD_GETMEM_NC(descr, member) THREAD_GETMEM (descr, member) -#define THREAD_SETMEM_NC(descr, member, value) \ - THREAD_SETMEM ((descr), member, (value)) +/* l_tls_offset == 0 is perfectly valid on PPC, so we have to use some + different value to mean unset l_tls_offset. */ +# define NO_TLS_OFFSET -1 # endif /* __ASSEMBLER__ */ -#else /* Not HAVE_TLS_SUPPORT. */ +#elif !defined __ASSEMBLER__ && !defined __powerpc64__ + +/* This overlaps the start of the pthread_descr. On PPC32, system + calls and such use this to find the multiple_threads flag and need + to use the same offset relative to the thread register in both + single-threaded and multi-threaded code. On PPC64, the global + variable is always used, so single-threaded code without TLS + never needs to initialize the thread register at all. */ +typedef struct +{ + void *tcb; /* Never used. */ + dtv_t *dtv; /* Never used. */ + void *self; /* Used only if multithreaded, and rarely. */ + int multiple_threads; /* Only this member is really used. */ +} tcbhead_t; #define NONTLS_INIT_TP \ do { \ - static const tcbhead_t nontls_init_tp \ - = { .multiple_threads = 0 }; \ + static const tcbhead_t nontls_init_tp = { .multiple_threads = 0 }; \ __thread_self = (__typeof (__thread_self)) &nontls_init_tp; \ } while (0) --- glibc-2.3.2/linuxthreads/sysdeps/pthread/Makefile 2003-02-12 16:40:09.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/pthread/Makefile 2003-08-21 08:37:03.000000000 -0400 @@ -1,5 +1,6 @@ ifeq ($(subdir),rt) librt-sysdep_routines += timer_routines +CPPFLAGS += -DBROKEN_THREAD_SIGNALS ifeq (yes,$(build-shared)) $(objpfx)tst-timer: $(objpfx)librt.so $(shared-thread-library) @@ -9,5 +10,5 @@ endif ifeq ($(subdir),posix) -CFLAGS-confstr.c += -DLIBPTHREAD_VERSION="\"$(shell sed 's/\(.*\) by .*/\1/' ../nptl/Banner)\"" +CFLAGS-confstr.c += -DLIBPTHREAD_VERSION="\"$(shell sed 's/\(.*\) by .*/\1/' ../linuxthreads/Banner)\"" endif --- glibc-2.3.2/linuxthreads/sysdeps/pthread/bits/#libc-tsd.h# 2003-01-03 17:10:19.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/pthread/bits/#libc-tsd.h# 1969-12-31 19:00:00.000000000 -0500 @@ -1,59 +0,0 @@ -/* libc-internal interface for thread-specific data. LinuxThreads version. - Copyright (C) 1997,98,99,2001,02 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of the - License, or (at your option) any later version. - - The GNU C 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#ifndef _BITS_LIBC_TSD_H -#define _BITS_LIBC_TSD_H 1 - -#include -#include - -#if USE_TLS && HAVE___THREAD - -/* When __thread works, the generic definition is what we want. */ -# include - -#else - -# include - -# ifndef SHARED -extern void ** __pthread_internal_tsd_address (int); -extern void *__pthread_internal_tsd_get (int); -extern int __pthread_internal_tsd_set (int, const void *); - -weak_extern (__pthread_internal_tsd_address) -weak_extern (__pthread_internal_tsd_get) -weak_extern (__pthread_internal_tsd_set) -# endif - -#define __libc_tsd_define(CLASS, KEY) CLASS void *__libc_tsd_##KEY##_data; -#define __libc_tsd_address(KEY) \ - __libc_maybe_call2 (pthread_internal_tsd_address, \ - (_LIBC_TSD_KEY_##KEY), &__libc_tsd_##KEY##_data) -#define __libc_tsd_get(KEY) \ - __libc_maybe_call2 (pthread_internal_tsd_get, \ - (_LIBC_TSD_KEY_##KEY), __libc_tsd_##KEY##_data) -#define __libc_tsd_set(KEY, VALUE) \ - __libc_maybe_call2 (pthread_internal_tsd_set, \ - (_LIBC_TSD_KEY_##KEY, (VALUE)), \ - (__libc_tsd_##KEY##_data = (VALUE), 0)) - -#endif - -#endif /* bits/libc-tsd.h */ --- glibc-2.3.2/linuxthreads/sysdeps/pthread/bits/libc-lock.h 2003-02-05 04:52:34.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/pthread/bits/libc-lock.h 2003-08-21 08:37:03.000000000 -0400 @@ -180,7 +180,6 @@ /* Lock the recursive named lock variable. */ #define __libc_lock_lock_recursive(NAME) __libc_lock_lock ((NAME).mutex) -#define __rtld_lock_lock_recursive(NAME) __libc_lock_lock_recursive (NAME) /* Try to lock the named lock variable. */ #define __libc_lock_trylock(NAME) \ @@ -203,8 +202,23 @@ /* Unlock the recursive named lock variable. */ #define __libc_lock_unlock_recursive(NAME) __libc_lock_unlock ((NAME).mutex) -#define __rtld_lock_unlock_recursive(NAME) __libc_lock_unlock_recursive (NAME) +#if defined _LIBC && defined SHARED +# define __rtld_lock_default_lock_recursive(lock) \ + ++((pthread_mutex_t *)(lock))->__m_count; + +# define __rtld_lock_default_unlock_recursive(lock) \ + --((pthread_mutex_t *)(lock))->__m_count; + +# define __rtld_lock_lock_recursive(NAME) \ + GL(dl_rtld_lock_recursive) (&(NAME).mutex) + +# define __rtld_lock_unlock_recursive(NAME) \ + GL(dl_rtld_unlock_recursive) (&(NAME).mutex) +#else +#define __rtld_lock_lock_recursive(NAME) __libc_lock_lock_recursive (NAME) +#define __rtld_lock_unlock_recursive(NAME) __libc_lock_unlock_recursive (NAME) +#endif /* Define once control variable. */ #if PTHREAD_ONCE_INIT == 0 @@ -250,6 +264,20 @@ _pthread_cleanup_pop_restore (&_buffer, (DOIT)); \ } +#define __libc_cleanup_push(fct, arg) \ + { struct _pthread_cleanup_buffer _buffer; \ + int _avail = _pthread_cleanup_push != NULL; \ + if (_avail) { \ + _pthread_cleanup_push (&_buffer, (fct), (arg)); \ + } + +#define __libc_cleanup_pop(execute) \ + if (_avail) { \ + _pthread_cleanup_pop (&_buffer, execute); \ + } \ + } + + /* Create thread-specific key. */ #define __libc_key_create(KEY, DESTRUCTOR) \ (__libc_maybe_call (__pthread_key_create, (KEY, DESTRUCTOR), 1)) @@ -352,6 +380,8 @@ weak_extern (BP_SYM (__pthread_once)) weak_extern (__pthread_initialize) weak_extern (__pthread_atfork) +weak_extern (BP_SYM (_pthread_cleanup_push)) +weak_extern (BP_SYM (_pthread_cleanup_pop)) weak_extern (BP_SYM (_pthread_cleanup_push_defer)) weak_extern (BP_SYM (_pthread_cleanup_pop_restore)) # else @@ -377,6 +407,8 @@ # pragma weak __pthread_atfork # pragma weak _pthread_cleanup_push_defer # pragma weak _pthread_cleanup_pop_restore +# pragma weak _pthread_cleanup_push +# pragma weak _pthread_cleanup_pop # endif #endif --- glibc-2.3.2/linuxthreads/sysdeps/pthread/bits/typesizes.h 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/pthread/bits/typesizes.h 2003-08-21 08:37:03.000000000 -0400 @@ -0,0 +1,66 @@ +/* bits/typesizes.h -- underlying types for *_t. Generic version. + Copyright (C) 2002, 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#ifndef _BITS_TYPES_H +# error "Never include directly; use instead." +#endif + +#ifndef _BITS_TYPESIZES_H +#define _BITS_TYPESIZES_H 1 + +/* See for the meaning of these macros. This file exists so + that need not vary across different GNU platforms. */ + +#define __DEV_T_TYPE __UQUAD_TYPE +#define __UID_T_TYPE __U32_TYPE +#define __GID_T_TYPE __U32_TYPE +#define __INO_T_TYPE __ULONGWORD_TYPE +#define __INO64_T_TYPE __UQUAD_TYPE +#define __MODE_T_TYPE __U32_TYPE +#define __NLINK_T_TYPE __UWORD_TYPE +#define __OFF_T_TYPE __SLONGWORD_TYPE +#define __OFF64_T_TYPE __SQUAD_TYPE +#define __PID_T_TYPE __S32_TYPE +#define __RLIM_T_TYPE __ULONGWORD_TYPE +#define __RLIM64_T_TYPE __UQUAD_TYPE +#define __BLKCNT_T_TYPE __SLONGWORD_TYPE +#define __BLKCNT64_T_TYPE __SQUAD_TYPE +#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE +#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE +#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE +#define __FSFILCNT64_T_TYPE __UQUAD_TYPE +#define __ID_T_TYPE __U32_TYPE +#define __CLOCK_T_TYPE __SLONGWORD_TYPE +#define __TIME_T_TYPE __SLONGWORD_TYPE +#define __USECONDS_T_TYPE __U32_TYPE +#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE +#define __DADDR_T_TYPE __S32_TYPE +#define __SWBLK_T_TYPE __SLONGWORD_TYPE +#define __KEY_T_TYPE __S32_TYPE +#define __CLOCKID_T_TYPE __S32_TYPE +#define __TIMER_T_TYPE __S32_TYPE +#define __BLKSIZE_T_TYPE __SLONGWORD_TYPE +#define __FSID_T_TYPE struct { int __val[2]; } +#define __SSIZE_T_TYPE __SWORD_TYPE + +/* Number of descriptors that can fit in an `fd_set'. */ +#define __FD_SETSIZE 1024 + + +#endif /* bits/typesizes.h */ --- glibc-2.3.2/linuxthreads/sysdeps/pthread/errno-loc.c 2002-12-31 14:14:22.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/pthread/errno-loc.c 2003-04-12 11:39:43.000000000 -0400 @@ -1,6 +1,6 @@ /* MT support function to get address of `errno' variable, linuxthreads version. - Copyright (C) 1996, 1998, 2002 Free Software Foundation, Inc. + Copyright (C) 1996, 1998, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -20,6 +20,7 @@ #include #include +#include #include #if ! USE___THREAD --- glibc-2.3.2/linuxthreads/sysdeps/pthread/herrno-loc.c 2002-12-31 14:14:22.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/pthread/herrno-loc.c 2003-04-12 11:39:43.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 97, 98, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1996, 97, 98, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -18,6 +18,7 @@ #include #include +#include #include #if ! USE___THREAD --- glibc-2.3.2/linuxthreads/sysdeps/pthread/pthread-functions.h 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/pthread/pthread-functions.h 2003-09-19 22:37:04.000000000 -0400 @@ -0,0 +1,91 @@ +/* Copyright (C) 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 2003. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#ifndef _PTHREAD_FUNCTIONS_H +#define _PTHREAD_FUNCTIONS_H 1 + +#include +#include +#include + +struct fork_block; + +/* Data type shared with libc. The libc uses it to pass on calls to + the thread functions. Wine pokes directly into this structure, + so if possible avoid breaking it and append new hooks to the end. */ +struct pthread_functions +{ + pid_t (*ptr_pthread_fork) (struct fork_block *); + int (*ptr_pthread_attr_destroy) (pthread_attr_t *); + int (*ptr___pthread_attr_init_2_0) (pthread_attr_t *); + int (*ptr___pthread_attr_init_2_1) (pthread_attr_t *); + int (*ptr_pthread_attr_getdetachstate) (const pthread_attr_t *, int *); + int (*ptr_pthread_attr_setdetachstate) (pthread_attr_t *, int); + int (*ptr_pthread_attr_getinheritsched) (const pthread_attr_t *, int *); + int (*ptr_pthread_attr_setinheritsched) (pthread_attr_t *, int); + int (*ptr_pthread_attr_getschedparam) (const pthread_attr_t *, + struct sched_param *); + int (*ptr_pthread_attr_setschedparam) (pthread_attr_t *, + const struct sched_param *); + int (*ptr_pthread_attr_getschedpolicy) (const pthread_attr_t *, int *); + int (*ptr_pthread_attr_setschedpolicy) (pthread_attr_t *, int); + int (*ptr_pthread_attr_getscope) (const pthread_attr_t *, int *); + int (*ptr_pthread_attr_setscope) (pthread_attr_t *, int); + int (*ptr_pthread_condattr_destroy) (pthread_condattr_t *); + int (*ptr_pthread_condattr_init) (pthread_condattr_t *); + int (*ptr___pthread_cond_broadcast) (pthread_cond_t *); + int (*ptr___pthread_cond_destroy) (pthread_cond_t *); + int (*ptr___pthread_cond_init) (pthread_cond_t *, + const pthread_condattr_t *); + int (*ptr___pthread_cond_signal) (pthread_cond_t *); + int (*ptr___pthread_cond_wait) (pthread_cond_t *, pthread_mutex_t *); + int (*ptr_pthread_equal) (pthread_t, pthread_t); + void (*ptr___pthread_exit) (void *); + int (*ptr_pthread_getschedparam) (pthread_t, int *, struct sched_param *); + int (*ptr_pthread_setschedparam) (pthread_t, int, + const struct sched_param *); + int (*ptr_pthread_mutex_destroy) (pthread_mutex_t *); + int (*ptr_pthread_mutex_init) (pthread_mutex_t *, + const pthread_mutexattr_t *); + int (*ptr_pthread_mutex_lock) (pthread_mutex_t *); + int (*ptr_pthread_mutex_trylock) (pthread_mutex_t *); + int (*ptr_pthread_mutex_unlock) (pthread_mutex_t *); + pthread_t (*ptr_pthread_self) (void); + int (*ptr_pthread_setcancelstate) (int, int *); + int (*ptr_pthread_setcanceltype) (int, int *); + void (*ptr_pthread_do_exit) (void *retval, char *currentframe); + void (*ptr_pthread_cleanup_upto) (__jmp_buf target, + char *targetframe); + pthread_descr (*ptr_pthread_thread_self) (void); + int (*ptr_pthread_internal_tsd_set) (int key, const void *pointer); + void * (*ptr_pthread_internal_tsd_get) (int key); + void ** __attribute__ ((__const__)) + (*ptr_pthread_internal_tsd_address) (int key); + int (*ptr_pthread_sigaction) (int sig, const struct sigaction * act, + struct sigaction *oact); + int (*ptr_pthread_sigwait) (const sigset_t *set, int *sig); + int (*ptr_pthread_raise) (int sig); + int (*ptr___pthread_cond_timedwait) (pthread_cond_t *, pthread_mutex_t *, + const struct timespec *); +}; + +/* Variable in libc.so. */ +extern struct pthread_functions __libc_pthread_functions attribute_hidden; + +#endif /* pthread-functions.h */ --- glibc-2.3.2/linuxthreads/sysdeps/pthread/pthread.h 2003-01-02 18:26:03.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/pthread/pthread.h 2003-09-19 22:37:04.000000000 -0400 @@ -172,13 +172,12 @@ extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) __THROW; /* Terminate calling thread. */ -extern void pthread_exit (void *__retval) - __THROW __attribute__ ((__noreturn__)); +extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__)); /* Make calling thread wait for termination of the thread TH. The exit status of the thread is stored in *THREAD_RETURN, if THREAD_RETURN is not NULL. */ -extern int pthread_join (pthread_t __th, void **__thread_return) __THROW; +extern int pthread_join (pthread_t __th, void **__thread_return); /* Indicate that the thread TH is never to be joined with PTHREAD_JOIN. The resources of TH will therefore be freed immediately when it @@ -256,7 +255,7 @@ /* Set the starting address of the stack of the thread to be created. Depending on whether the stack grows up or down the value must either be higher or lower than all the address in the memory block. The - minimal size of the block must be PTHREAD_STACK_SIZE. */ + minimal size of the block must be PTHREAD_STACK_MIN. */ extern int pthread_attr_setstackaddr (pthread_attr_t *__attr, void *__stackaddr) __THROW; @@ -279,7 +278,7 @@ #endif /* Add information about the minimum stack size needed for the thread - to be started. This size must never be less than PTHREAD_STACK_SIZE + to be started. This size must never be less than PTHREAD_STACK_MIN and must also not exceed the system limits. */ extern int pthread_attr_setstacksize (pthread_attr_t *__attr, size_t __stacksize) __THROW; @@ -290,7 +289,9 @@ __THROW; #ifdef __USE_GNU -/* Get thread attributes corresponding to the already running thread TH. */ +/* Initialize thread attribute *ATTR with attributes corresponding to the + already running thread TH. It shall be called on unitialized ATTR + and destroyed with pthread_attr_destroy when no longer needed. */ extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr) __THROW; #endif @@ -403,7 +404,7 @@ /* Wait for condition variable COND to be signaled or broadcast. MUTEX is assumed to be locked before. */ extern int pthread_cond_wait (pthread_cond_t *__restrict __cond, - pthread_mutex_t *__restrict __mutex) __THROW; + pthread_mutex_t *__restrict __mutex); /* Wait for condition variable COND to be signaled or broadcast until ABSTIME. MUTEX is assumed to be locked before. ABSTIME is an @@ -412,7 +413,7 @@ extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond, pthread_mutex_t *__restrict __mutex, __const struct timespec *__restrict - __abstime) __THROW; + __abstime); /* Functions for handling condition variable attributes. */ --- glibc-2.3.2/linuxthreads/sysdeps/pthread/res-state.c 2002-12-31 14:14:22.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/pthread/res-state.c 2003-08-21 08:37:03.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 97, 98, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1996, 97, 98, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -18,6 +18,7 @@ #include #include +#include #include #if ! USE___THREAD @@ -38,7 +39,9 @@ pthread_descr self = thread_self(); return LIBC_THREAD_GETMEM (self, p_resp); } -#endif return &_res; +#else + return __resp; +#endif } libc_hidden_def (__res_state) --- glibc-2.3.2/linuxthreads/sysdeps/pthread/timer_create.c 2002-08-27 00:52:36.000000000 -0400 +++ glibc-2.3.2/linuxthreads/sysdeps/pthread/timer_create.c 2003-08-21 08:37:03.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 2000 Free Software Foundation, Inc. +/* Copyright (C) 2000, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Kaz Kylheku . @@ -37,15 +37,23 @@ struct timer_node *newtimer = NULL; struct thread_node *thread = NULL; - if (clock_id != CLOCK_REALTIME + if (0 #ifdef _POSIX_CPUTIME - && clock_id != CLOCK_PROCESS_CPUTIME_ID + || clock_id == CLOCK_PROCESS_CPUTIME_ID #endif #ifdef _POSIX_THREAD_CPUTIME - && clock_id != CLOCK_THREAD_CPUTIME_ID + || clock_id == CLOCK_THREAD_CPUTIME_ID #endif ) { + /* We don't allow timers for CPU clocks. At least not in the + moment. */ + __set_errno (ENOTSUP); + return -1; + } + + if (clock_id != CLOCK_REALTIME) + { __set_errno (EINVAL); return -1; } @@ -170,7 +178,10 @@ if (thread != NULL) __timer_thread_dealloc (thread); if (newtimer != NULL) - __timer_dealloc (newtimer); + { + timer_delref (newtimer); + __timer_dealloc (newtimer); + } } pthread_mutex_unlock (&__timer_mutex); --- glibc-2.3.2/linuxthreads/sysdeps/pthread/timer_routines.c 2002-08-28 21:46:13.000000000 -0400 +++ glibc-2.3.2/linuxthreads/sysdeps/pthread/timer_routines.c 2003-08-21 08:37:03.000000000 -0400 @@ -538,10 +538,7 @@ if (thread_attr_compare (desired_attr, &candidate->attr) && desired_clock_id == candidate->clock_id) - { - list_unlink (iter); - return candidate; - } + return candidate; iter = list_next (iter); } --- glibc-2.3.2/linuxthreads/sysdeps/s390/pspinlock.c 2002-08-27 00:52:36.000000000 -0400 +++ glibc-2.3.2/linuxthreads/sysdeps/s390/pspinlock.c 2003-04-12 11:39:43.000000000 -0400 @@ -64,7 +64,7 @@ { asm volatile(" xc 0(4,%0),0(%0)\n" " bcr 15,0" - : "=a" (lock) ); + : : "a" (lock) : "memory" ); return 0; } weak_alias (__pthread_spin_unlock, pthread_spin_unlock) --- glibc-2.3.2/linuxthreads/sysdeps/s390/s390-32/pt-machine.h 2003-01-30 16:03:05.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/s390/s390-32/pt-machine.h 2003-08-21 08:37:03.000000000 -0400 @@ -1,6 +1,6 @@ /* Machine-dependent pthreads configuration and inline functions. S390 version. - Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). This file is part of the GNU C Library. @@ -23,7 +23,7 @@ #define _PT_MACHINE_H 1 #ifndef PT_EI -# define PT_EI extern inline +# define PT_EI extern inline __attribute__ ((always_inline)) #endif extern long int testandset (int *spinlock); --- glibc-2.3.2/linuxthreads/sysdeps/s390/s390-64/pt-machine.h 2003-01-30 16:03:05.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/s390/s390-64/pt-machine.h 2003-08-21 08:37:04.000000000 -0400 @@ -1,6 +1,6 @@ /* Machine-dependent pthreads configuration and inline functions. 64 bit S/390 version. - Copyright (C) 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). This file is part of the GNU C Library. @@ -23,7 +23,7 @@ #define _PT_MACHINE_H 1 #ifndef PT_EI -# define PT_EI extern inline +# define PT_EI extern inline __attribute__ ((always_inline)) #endif extern long int testandset (int *spinlock); --- glibc-2.3.2/linuxthreads/sysdeps/sh/pt-machine.h 2003-01-30 16:03:05.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/sh/pt-machine.h 2003-08-21 08:37:04.000000000 -0400 @@ -24,7 +24,7 @@ #ifndef __ASSEMBLER__ #ifndef PT_EI -# define PT_EI extern inline +# define PT_EI extern inline __attribute__ ((always_inline)) #endif extern long int testandset (int *spinlock); --- glibc-2.3.2/linuxthreads/sysdeps/sh/tcb-offsets.sym 2003-02-07 21:29:53.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/sh/tcb-offsets.sym 2003-04-28 08:20:35.000000000 -0400 @@ -3,7 +3,7 @@ -- #ifdef USE_TLS -MULTIPLE_THREADS_OFFSET offsetof (struct _pthread_descr_struct, p_header.data.multiple_threads) +MULTIPLE_THREADS_OFFSET offsetof (struct _pthread_descr_struct, p_multiple_threads) TLS_PRE_TCB_SIZE sizeof (struct _pthread_descr_struct) #else MULTIPLE_THREADS_OFFSET offsetof (tcbhead_t, multiple_threads) --- glibc-2.3.2/linuxthreads/sysdeps/sh/tls.h 2003-02-07 21:29:53.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/sh/tls.h 2003-03-15 15:02:10.000000000 -0500 @@ -112,6 +112,8 @@ __asm __volatile ("ldc %0,gbr" : : "r" (__self + 1)); \ 0; }) +# define TLS_MULTIPLE_THREADS_IN_TCB 1 + /* Get the thread descriptor definition. This must be after the the definition of THREAD_SELF for TLS. */ # include --- glibc-2.3.2/linuxthreads/sysdeps/sparc/sparc32/pt-machine.h 2003-01-30 16:03:05.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/sparc/sparc32/pt-machine.h 2003-08-21 08:37:04.000000000 -0400 @@ -23,7 +23,7 @@ #define _PT_MACHINE_H 1 #ifndef PT_EI -# define PT_EI extern inline +# define PT_EI extern inline __attribute__ ((always_inline)) #endif extern long int testandset (int *spinlock); --- glibc-2.3.2/linuxthreads/sysdeps/sparc/sparc64/pt-machine.h 2003-01-30 16:03:05.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/sparc/sparc64/pt-machine.h 2003-08-21 08:37:04.000000000 -0400 @@ -23,7 +23,7 @@ #define _PT_MACHINE_H 1 #ifndef PT_EI -# define PT_EI extern inline +# define PT_EI extern inline __attribute__ ((always_inline)) #endif extern long int testandset (int *spinlock); --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/Makefile 2003-01-06 18:49:01.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/Makefile 2003-08-21 08:37:04.000000000 -0400 @@ -1,3 +1,3 @@ ifeq ($(subdir),linuxthreads) -libpthread-routines += ptw-sysdep ptw-sigblock ptw-sigprocmask ptw-osf_sigprocmask +libpthread-routines += ptw-sysdep ptw-sigblock ptw-sigprocmask endif --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/Versions 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/Versions 2003-09-02 23:01:51.000000000 -0400 @@ -0,0 +1,6 @@ +libpthread { + GLIBC_2.3.3 { + # Changed PTHREAD_STACK_MIN. + pthread_attr_setstack; pthread_attr_setstacksize; + } +} --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h 2003-09-02 23:01:32.000000000 -0400 @@ -0,0 +1,86 @@ +/* Minimum guaranteed maximum values for system limits. Linux/Alpha version. + Copyright (C) 1993-1998, 2000, 2002, 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* The kernel header pollutes the namespace with the NR_OPEN symbol + and defines LINK_MAX although filesystems have different maxima. A + similar thing is true for OPEN_MAX: the limit can be changed at + runtime and therefore the macro must not be defined. Remove this + after including the header if necessary. */ +#ifndef NR_OPEN +# define __undef_NR_OPEN +#endif +#ifndef LINK_MAX +# define __undef_LINK_MAX +#endif +#ifndef OPEN_MAX +# define __undef_OPEN_MAX +#endif + +/* The kernel sources contain a file with all the needed information. */ +#include + +/* Have to remove NR_OPEN? */ +#ifdef __undef_NR_OPEN +# undef NR_OPEN +# undef __undef_NR_OPEN +#endif +/* Have to remove LINK_MAX? */ +#ifdef __undef_LINK_MAX +# undef LINK_MAX +# undef __undef_LINK_MAX +#endif +/* Have to remove OPEN_MAX? */ +#ifdef __undef_OPEN_MAX +# undef OPEN_MAX +# undef __undef_OPEN_MAX +#endif + +/* The number of data keys per process. */ +#define _POSIX_THREAD_KEYS_MAX 128 +/* This is the value this implementation supports. */ +#define PTHREAD_KEYS_MAX 1024 + +/* Controlling the iterations of destructors for thread-specific data. */ +#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4 +/* Number of iterations this implementation does. */ +#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS + +/* The number of threads per process. */ +#define _POSIX_THREAD_THREADS_MAX 64 +/* This is the value this implementation supports. */ +#define PTHREAD_THREADS_MAX 16384 + +/* Maximum amount by which a process can descrease its asynchronous I/O + priority level. */ +#define AIO_PRIO_DELTA_MAX 20 + +/* Minimum size for a thread. We are free to choose a reasonable value. */ +#define PTHREAD_STACK_MIN 24576 + +/* Maximum number of POSIX timers available. */ +#define TIMER_MAX 256 + +/* Maximum number of timer expiration overruns. */ +#define DELAYTIMER_MAX 2147483647 + +/* Maximum tty name length. */ +#define TTY_NAME_MAX 32 + +/* Maximum login name length. This is arbitrary. */ +#define LOGIN_NAME_MAX 256 --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h 2003-08-21 08:37:04.000000000 -0400 @@ -0,0 +1,66 @@ +/* bits/typesizes.h -- underlying types for *_t. Linux/Alpha version. + Copyright (C) 2002, 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#ifndef _BITS_TYPES_H +# error "Never include directly; use instead." +#endif + +#ifndef _BITS_TYPESIZES_H +#define _BITS_TYPESIZES_H 1 + +/* See for the meaning of these macros. This file exists so + that need not vary across different GNU platforms. */ + +#define __DEV_T_TYPE __U64_TYPE +#define __UID_T_TYPE __U32_TYPE +#define __GID_T_TYPE __U32_TYPE +#define __INO_T_TYPE __U32_TYPE +#define __INO64_T_TYPE __U64_TYPE +#define __MODE_T_TYPE __U32_TYPE +#define __NLINK_T_TYPE __U32_TYPE +#define __OFF_T_TYPE __SLONGWORD_TYPE +#define __OFF64_T_TYPE __S64_TYPE +#define __PID_T_TYPE __S32_TYPE +#define __RLIM_T_TYPE __ULONGWORD_TYPE +#define __RLIM64_T_TYPE __U64_TYPE +#define __BLKCNT_T_TYPE __U32_TYPE +#define __BLKCNT64_T_TYPE __U64_TYPE +#define __FSBLKCNT_T_TYPE __S32_TYPE +#define __FSBLKCNT64_T_TYPE __S64_TYPE +#define __FSFILCNT_T_TYPE __U32_TYPE +#define __FSFILCNT64_T_TYPE __U64_TYPE +#define __ID_T_TYPE __U32_TYPE +#define __CLOCK_T_TYPE __SLONGWORD_TYPE +#define __TIME_T_TYPE __SLONGWORD_TYPE +#define __USECONDS_T_TYPE __U32_TYPE +#define __SUSECONDS_T_TYPE __S64_TYPE +#define __DADDR_T_TYPE __S32_TYPE +#define __SWBLK_T_TYPE __SLONGWORD_TYPE +#define __KEY_T_TYPE __S32_TYPE +#define __CLOCKID_T_TYPE __S32_TYPE +#define __TIMER_T_TYPE __S32_TYPE +#define __BLKSIZE_T_TYPE __U32_TYPE +#define __FSID_T_TYPE struct { int __val[2]; } +#define __SSIZE_T_TYPE __SWORD_TYPE + +/* Number of descriptors that can fit in an `fd_set'. */ +#define __FD_SETSIZE 1024 + + +#endif /* bits/typesizes.h */ --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/pt-sigsuspend.S 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/pt-sigsuspend.S 2003-04-01 19:10:44.000000000 -0500 @@ -0,0 +1,28 @@ +/* Internal sigsuspend system call for LinuxThreads. Alpha version. + Copyright (C) 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include + +#undef PSEUDO_PREPARE_ARGS +#define PSEUDO_PREPARE_ARGS ldq a0, 0(a0); + + .hidden __pthread_sigsuspend +PSEUDO_NOERRNO(__pthread_sigsuspend, sigsuspend, 1) + ret +PSEUDO_END_NOERRNO(__pthread_sigsuspend) --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h 2003-01-12 14:19:43.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400 @@ -40,10 +40,11 @@ # define PSEUDO(name, syscall_name, args) \ .globl name; \ .align 4; \ - .ent name, 0; \ + .type name, @function; \ + .usepv name, std; \ + cfi_startproc; \ __LABEL(name) \ ldgp gp, 0(pv); \ - .prologue 1; \ PSEUDO_PROF; \ PSEUDO_PREPARE_ARGS \ SINGLE_THREAD_P(t0); \ @@ -55,7 +56,9 @@ .subsection 2; \ __LABEL($pseudo_cancel) \ subq sp, 64, sp; \ + cfi_def_cfa_offset(64); \ stq ra, 0(sp); \ + cfi_offset(ra, -64); \ SAVE_ARGS_##args; \ CENABLE; \ LOAD_ARGS_##args; \ @@ -67,19 +70,27 @@ ldq ra, 0(sp); \ ldq v0, 8(sp); \ addq sp, 64, sp; \ + cfi_remember_state; \ + cfi_restore(ra); \ + cfi_def_cfa_offset(0); \ ret; \ + cfi_restore_state; \ __LABEL($multi_error) \ CDISABLE; \ ldq ra, 0(sp); \ ldq v0, 8(sp); \ addq sp, 64, sp; \ + cfi_restore(ra); \ + cfi_def_cfa_offset(0); \ __LABEL($syscall_error) \ SYSCALL_ERROR_HANDLER; \ - END(name); \ .previous # undef PSEUDO_END -# define PSEUDO_END(sym) +# define PSEUDO_END(sym) \ + .subsection 2; \ + cfi_endproc; \ + .size sym, .-sym # define SAVE_ARGS_0 /* Nothing. */ # define SAVE_ARGS_1 SAVE_ARGS_0; stq a0, 8(sp) --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S 2003-02-11 01:24:43.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S 2003-08-21 08:37:04.000000000 -0400 @@ -19,12 +19,13 @@ #include - .globl __vfork .align 4 - .ent __vfork,0 -__LABEL(__vfork) + .globl __vfork + .type __vfork, @function + .usepv __vfork, std + cfi_startproc +__vfork: ldgp gp, 0(pv) - .prologue 1 PSEUDO_PROF #ifdef SHARED @@ -46,18 +47,24 @@ fork and vfork object files. */ $do_fork: subq sp, 16, sp + cfi_adjust_cfa_offset(16) stq ra, 0(sp) + cfi_offset(ra, -16) jsr ra, HIDDEN_JUMPTARGET (__fork) ldgp gp, 0(ra) ldq ra, 0(sp) addq sp, 16, sp + cfi_restore(ra) + cfi_adjust_cfa_offset(-16) ret $syscall_error: SYSCALL_ERROR_HANDLER #endif -PSEUDO_END(__vfork) + cfi_endproc + .size __vfork, .-__vfork + libc_hidden_def (__vfork) weak_alias (__vfork, vfork) --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h 2003-01-12 04:13:57.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400 @@ -24,6 +24,17 @@ #if !defined NOT_IN_libc || defined IS_IN_libpthread +/* We push lr onto the stack, so we have to use ldmib instead of ldmia + to find the saved arguments. */ +# ifdef PIC +# undef DOARGS_5 +# undef DOARGS_6 +# undef DOARGS_7 +# define DOARGS_5 str r4, [sp, $-4]!; ldr r4, [sp, $8]; +# define DOARGS_6 mov ip, sp; stmfd sp!, {r4, r5}; ldmib ip, {r4, r5}; +# define DOARGS_7 mov ip, sp; stmfd sp!, {r4, r5, r6}; ldmib ip, {r4, r5, r6}; +# endif + # undef PSEUDO_RET # define PSEUDO_RET \ ldrcc pc, [sp], $4; \ @@ -34,7 +45,7 @@ # define PSEUDO(name, syscall_name, args) \ .section ".text"; \ PSEUDO_PROLOGUE; \ - ENTRY (name) \ + ENTRY (name); \ SINGLE_THREAD_P_INT; \ bne .Lpseudo_cancel; \ DO_CALL (syscall_name, args); \ @@ -110,7 +121,7 @@ ldr reg, 2b; \ 3: \ add ip, pc, ip; \ - ldr ip, [ip, lr]; \ + ldr ip, [ip, reg]; \ teq ip, #0; # define SINGLE_THREAD_P_INT \ str lr, [sp, $-4]!; \ --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/arm/vfork.S 2003-01-14 20:03:38.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/arm/vfork.S 2003-09-19 22:37:04.000000000 -0400 @@ -20,37 +20,60 @@ #include #define _ERRNO_H 1 #include +#include -/* Clone the calling process, but without copying the whole address -pace. +/* Clone the calling process, but without copying the whole address space. The calling process is suspended until the new process exits or is - replaced by a call to `execve'. Return -1 for errors, 0 to the new -rocess, + replaced by a call to `execve'. Return -1 for errors, 0 to the new process, and the process ID of the new process to the old process. */ PSEUDO_PROLOGUE ENTRY (__vfork) - SINGLE_THREAD_P - bne HIDDEN_JUMPTARGET (__fork) #ifdef __NR_vfork + +#ifdef SHARED + ldr ip, 1f + ldr r0, 2f +3: add ip, pc, ip + ldr r0, [ip, r0] +#else + ldr r0, 1f +#endif + movs r0, r0 + bne HIDDEN_JUMPTARGET (__fork) + swi __NR_vfork cmn a1, #4096 RETINSTR(movcc, pc, lr) +#ifndef __ASSUME_VFORK_SYSCALL /* Check if vfork syscall is known at all. */ - ldr a2, =-ENOSYS - teq a1, a2 + cmn a1, #ENOSYS bne PLTJMP(C_SYMBOL_NAME(__syscall_error)) #endif +#endif + +#ifndef __ASSUME_VFORK_SYSCALL /* If we don't have vfork, fork is close enough. */ swi __NR_fork cmn a1, #4096 RETINSTR(movcc, pc, lr) +#elif !defined __NR_vfork +# error "__NR_vfork not available and __ASSUME_VFORK_SYSCALL defined" +#endif b PLTJMP(C_SYMBOL_NAME(__syscall_error)) +#ifdef SHARED +1: .word _GLOBAL_OFFSET_TABLE_ - 3b - 8 +2: .word __libc_pthread_functions(GOTOFF) +#else + .weak pthread_create +1: .word pthread_create +#endif + PSEUDO_END (__vfork) libc_hidden_def (__vfork) --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/bits/posix_opt.h 2002-11-28 20:48:24.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/bits/posix_opt.h 2003-03-15 15:02:10.000000000 -0500 @@ -1,5 +1,5 @@ /* Define POSIX options for Linux. - Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc. + Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -132,4 +132,7 @@ /* POSIX message queues are not yet supported. */ #undef _POSIX_MESSAGE_PASSING +/* The monotonic clock might be available. */ +#define _POSIX_MONOTONIC_CLOCK 0 + #endif /* posix_opt.h */ --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/fork.c 2003-01-02 18:26:04.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/fork.c 2003-04-12 11:39:43.000000000 -0400 @@ -39,4 +39,5 @@ return __libc_maybe_call2 (pthread_fork, (&__fork_block), ARCH_FORK ()); } weak_alias (__libc_fork, __fork) +libc_hidden_def (__fork) weak_alias (__libc_fork, fork) --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/i386/bits/posix_opt.h 2002-11-28 20:47:54.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/i386/bits/posix_opt.h 2003-03-15 15:02:10.000000000 -0500 @@ -1,5 +1,5 @@ /* Define POSIX options for Linux/ix86. - Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc. + Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -138,4 +138,7 @@ /* POSIX message queues are not yet supported. */ #undef _POSIX_MESSAGE_PASSING +/* The monotonic clock might be available. */ +#define _POSIX_MONOTONIC_CLOCK 0 + #endif /* posix_opt.h */ --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/i386/dl-sysdep.h 2002-12-28 02:04:12.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/i386/dl-sysdep.h 2003-09-19 22:37:04.000000000 -0400 @@ -1,5 +1,5 @@ /* System-specific settings for dynamic linker code. IA-32 version. - Copyright (C) 2002 Free Software Foundation, Inc. + Copyright (C) 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -49,12 +49,16 @@ extern void _dl_sysinfo_int80 (void) attribute_hidden; # define DL_SYSINFO_DEFAULT (uintptr_t) _dl_sysinfo_int80 # define DL_SYSINFO_IMPLEMENTATION \ - asm (".type _dl_sysinfo_int80,@function\n\t" \ + asm (".text\n\t" \ + ".type _dl_sysinfo_int80,@function\n\t" \ ".hidden _dl_sysinfo_int80\n" \ + CFI_STARTPROC "\n" \ "_dl_sysinfo_int80:\n\t" \ "int $0x80;\n\t" \ "ret;\n\t" \ - ".size _dl_sysinfo_int80,.-_dl_sysinfo_int80"); + CFI_ENDPROC "\n" \ + ".size _dl_sysinfo_int80,.-_dl_sysinfo_int80\n\t" \ + ".previous"); #endif #endif /* dl-sysdep.h */ --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h 2002-12-31 14:16:42.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Jakub Jelinek , 2002. @@ -24,7 +24,7 @@ # include #endif -#if !defined NOT_IN_libc || defined IS_IN_libpthread +#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt # undef PSEUDO # define PSEUDO(name, syscall_name, args) \ @@ -39,12 +39,12 @@ L(pseudo_cancel): \ CENABLE \ SAVE_OLDTYPE_##args \ - PUSHARGS_##args \ + PUSHCARGS_##args \ DOCARGS_##args \ movl $SYS_ify (syscall_name), %eax; \ int $0x80 \ - POPARGS_##args; \ - POPCARGS_##args \ + POPCARGS_##args; \ + POPSTATE_##args \ cmpl $-4095, %eax; \ jae SYSCALL_ERROR_LABEL; \ L(pseudo_end): @@ -56,12 +56,41 @@ # define SAVE_OLDTYPE_4 SAVE_OLDTYPE_2 # define SAVE_OLDTYPE_5 SAVE_OLDTYPE_2 -# define DOCARGS_0 DOARGS_0 -# define DOCARGS_1 DOARGS_1 +# define PUSHCARGS_0 /* No arguments to push. */ +# define DOCARGS_0 /* No arguments to frob. */ +# define POPCARGS_0 /* No arguments to pop. */ +# define _PUSHCARGS_0 /* No arguments to push. */ +# define _POPCARGS_0 /* No arguments to pop. */ + +# define PUSHCARGS_1 movl %ebx, %edx; PUSHCARGS_0 +# define DOCARGS_1 _DOARGS_1 (4) +# define POPCARGS_1 POPCARGS_0; movl %edx, %ebx +# define _PUSHCARGS_1 pushl %ebx; L(PUSHBX2): _PUSHCARGS_0 +# define _POPCARGS_1 _POPCARGS_0; popl %ebx; L(POPBX2): + +# define PUSHCARGS_2 PUSHCARGS_1 # define DOCARGS_2 _DOARGS_2 (12) +# define POPCARGS_2 POPCARGS_1 +# define _PUSHCARGS_2 _PUSHCARGS_1 +# define _POPCARGS_2 _POPCARGS_1 + +# define PUSHCARGS_3 _PUSHCARGS_2 # define DOCARGS_3 _DOARGS_3 (20) +# define POPCARGS_3 _POPCARGS_3 +# define _PUSHCARGS_3 _PUSHCARGS_2 +# define _POPCARGS_3 _POPCARGS_2 + +# define PUSHCARGS_4 _PUSHCARGS_4 # define DOCARGS_4 _DOARGS_4 (28) +# define POPCARGS_4 _POPCARGS_4 +# define _PUSHCARGS_4 pushl %esi; L(PUSHSI2): _PUSHCARGS_3 +# define _POPCARGS_4 _POPCARGS_3; popl %esi; L(POPSI2): + +# define PUSHCARGS_5 _PUSHCARGS_5 # define DOCARGS_5 _DOARGS_5 (36) +# define POPCARGS_5 _POPCARGS_5 +# define _PUSHCARGS_5 pushl %edi; L(PUSHDI2): _PUSHCARGS_4 +# define _POPCARGS_5 _POPCARGS_4; popl %edi; L(POPDI2): # ifdef IS_IN_libpthread # define CENABLE call __pthread_enable_asynccancel; @@ -70,17 +99,19 @@ # define CENABLE call __libc_enable_asynccancel; # define CDISABLE call __libc_disable_asynccancel # endif -# define POPCARGS_0 pushl %eax; movl %ecx, %eax; CDISABLE; popl %eax; -# define POPCARGS_1 POPCARGS_0 -# define POPCARGS_2 xchgl (%esp), %eax; CDISABLE; popl %eax; -# define POPCARGS_3 POPCARGS_2 -# define POPCARGS_4 POPCARGS_2 -# define POPCARGS_5 POPCARGS_2 +# define POPSTATE_0 pushl %eax; movl %ecx, %eax; CDISABLE; popl %eax; +# define POPSTATE_1 POPSTATE_0 +# define POPSTATE_2 xchgl (%esp), %eax; CDISABLE; popl %eax; +# define POPSTATE_3 POPSTATE_2 +# define POPSTATE_4 POPSTATE_2 +# define POPSTATE_5 POPSTATE_2 #if !defined NOT_IN_libc # define __local_multiple_threads __libc_multiple_threads -#else +#elif defined IS_IN_libpthread # define __local_multiple_threads __pthread_multiple_threads +#else +# define __local_multiple_threads __librt_multiple_threads #endif # ifndef __ASSEMBLER__ @@ -89,7 +120,12 @@ __builtin_expect (THREAD_GETMEM (THREAD_SELF, \ p_header.data.multiple_threads) == 0, 1) # else -extern int __local_multiple_threads attribute_hidden; +extern int __local_multiple_threads +# if !defined NOT_IN_libc || defined IS_IN_libpthread + attribute_hidden; +# else + ; +# endif # define SINGLE_THREAD_P __builtin_expect (__local_multiple_threads == 0, 1) # endif # else @@ -98,16 +134,23 @@ # elif defined FLOATING_STACKS && USE___THREAD # define SINGLE_THREAD_P cmpl $0, %gs:MULTIPLE_THREADS_OFFSET # else +# if !defined NOT_IN_libc || defined IS_IN_libpthread +# define __SINGLE_THREAD_CMP cmpl $0, __local_multiple_threads@GOTOFF(%ecx) +# else +# define __SINGLE_THREAD_CMP \ + movl __local_multiple_threads@GOT(%ecx), %ecx;\ + cmpl $0, (%ecx) +# endif # if !defined HAVE_HIDDEN || !USE___THREAD # define SINGLE_THREAD_P \ SETUP_PIC_REG (cx); \ addl $_GLOBAL_OFFSET_TABLE_, %ecx; \ - cmpl $0, __local_multiple_threads@GOTOFF(%ecx) + __SINGLE_THREAD_CMP # else # define SINGLE_THREAD_P \ call __i686.get_pc_thunk.cx; \ addl $_GLOBAL_OFFSET_TABLE_, %ecx; \ - cmpl $0, __local_multiple_threads@GOTOFF(%ecx) + __SINGLE_THREAD_CMP # endif # endif # endif --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/ia64/Versions 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/ia64/Versions 2003-09-02 23:02:33.000000000 -0400 @@ -0,0 +1,6 @@ +libpthread { + GLIBC_2.3.3 { + # Changed PTHREAD_STACK_MIN. + pthread_attr_setstack; pthread_attr_setstacksize; + } +} --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/ia64/bits/local_lim.h 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/ia64/bits/local_lim.h 2003-09-02 23:03:30.000000000 -0400 @@ -0,0 +1,86 @@ +/* Minimum guaranteed maximum values for system limits. Linux/Alpha version. + Copyright (C) 1993-1998, 2000, 2002, 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* The kernel header pollutes the namespace with the NR_OPEN symbol + and defines LINK_MAX although filesystems have different maxima. A + similar thing is true for OPEN_MAX: the limit can be changed at + runtime and therefore the macro must not be defined. Remove this + after including the header if necessary. */ +#ifndef NR_OPEN +# define __undef_NR_OPEN +#endif +#ifndef LINK_MAX +# define __undef_LINK_MAX +#endif +#ifndef OPEN_MAX +# define __undef_OPEN_MAX +#endif + +/* The kernel sources contain a file with all the needed information. */ +#include + +/* Have to remove NR_OPEN? */ +#ifdef __undef_NR_OPEN +# undef NR_OPEN +# undef __undef_NR_OPEN +#endif +/* Have to remove LINK_MAX? */ +#ifdef __undef_LINK_MAX +# undef LINK_MAX +# undef __undef_LINK_MAX +#endif +/* Have to remove OPEN_MAX? */ +#ifdef __undef_OPEN_MAX +# undef OPEN_MAX +# undef __undef_OPEN_MAX +#endif + +/* The number of data keys per process. */ +#define _POSIX_THREAD_KEYS_MAX 128 +/* This is the value this implementation supports. */ +#define PTHREAD_KEYS_MAX 1024 + +/* Controlling the iterations of destructors for thread-specific data. */ +#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4 +/* Number of iterations this implementation does. */ +#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS + +/* The number of threads per process. */ +#define _POSIX_THREAD_THREADS_MAX 64 +/* This is the value this implementation supports. */ +#define PTHREAD_THREADS_MAX 16384 + +/* Maximum amount by which a process can descrease its asynchronous I/O + priority level. */ +#define AIO_PRIO_DELTA_MAX 20 + +/* Minimum size for a thread. We are free to choose a reasonable value. */ +#define PTHREAD_STACK_MIN 196608 + +/* Maximum number of POSIX timers available. */ +#define TIMER_MAX 256 + +/* Maximum number of timer expiration overruns. */ +#define DELAYTIMER_MAX 2147483647 + +/* Maximum tty name length. */ +#define TTY_NAME_MAX 32 + +/* Maximum login name length. This is arbitrary. */ +#define LOGIN_NAME_MAX 256 --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-sigsuspend.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-sigsuspend.c 2003-04-01 19:10:45.000000000 -0500 @@ -0,0 +1,33 @@ +/* Internal sigsuspend system call for LinuxThreads. IA64 version. + Copyright (C) 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include +#include +#include + +#include +#include +#include + +void +__pthread_sigsuspend (const sigset_t *set) +{ + INTERNAL_SYSCALL_DECL (err); + INTERNAL_SYSCALL (rt_sigsuspend, err, 2, set, _NSIG / 8); +} --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h 2003-01-09 14:43:34.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400 @@ -23,7 +23,7 @@ # include #endif -#if !defined NOT_IN_libc || defined IS_IN_libpthread +#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt # undef PSEUDO # define PSEUDO(name, syscall_name, args) \ @@ -38,6 +38,11 @@ cmp.eq p6,p0=-1,r10; \ (p6) br.cond.spnt.few __syscall_error; \ ret;; \ + .endp name; \ + .proc __GC_##name; \ + .globl __GC_##name; \ + .hidden __GC_##name; \ +__GC_##name: \ .Lpseudo_cancel: \ .prologue; \ .regstk args, 5, args, 0; \ @@ -62,12 +67,13 @@ mov ar.pfs = loc0; \ .Lpseudo_end: \ ret; \ - .endp name; \ + .endp __GC_##name; \ .section .gnu.linkonce.t.__syscall_error_##args, "ax"; \ .align 32; \ .proc __syscall_error_##args; \ .global __syscall_error_##args; \ .hidden __syscall_error_##args; \ + .size __syscall_error_##args, 64; \ __syscall_error_##args: \ .prologue; \ .regstk args, 5, args, 0; \ @@ -82,12 +88,18 @@ mov r8 = -1; \ mov ar.pfs = loc0 +#undef PSEUDO_END +#define PSEUDO_END(name) .endp + # ifdef IS_IN_libpthread # define CENABLE br.call.sptk.many b0 = __pthread_enable_asynccancel # define CDISABLE br.call.sptk.many b0 = __pthread_disable_asynccancel -# else +# elif !defined NOT_IN_libc # define CENABLE br.call.sptk.many b0 = __libc_enable_asynccancel # define CDISABLE br.call.sptk.many b0 = __libc_disable_asynccancel +# else +# define CENABLE br.call.sptk.many b0 = __librt_enable_asynccancel +# define CDISABLE br.call.sptk.many b0 = __librt_disable_asynccancel # endif #define COPY_ARGS_0 /* Nothing */ @@ -101,8 +113,7 @@ # ifndef __ASSEMBLER__ # define SINGLE_THREAD_P \ - __builtin_expect (THREAD_GETMEM (THREAD_SELF, \ - p_header.data.multiple_threads) == 0, 1) + __builtin_expect (THREAD_GETMEM (THREAD_SELF, p_multiple_threads) == 0, 1) # else # define SINGLE_THREAD_P \ adds r14 = MULTIPLE_THREADS_OFFSET, r13 ;; ld4 r14 = [r14] ;; cmp4.ne p6, p7 = 0, r14 --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/m68k/sysdep-cancel.h 2003-01-05 15:04:06.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/m68k/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400 @@ -22,7 +22,7 @@ # include #endif -#if !defined NOT_IN_libc || defined IS_IN_libpthread +#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt # undef PSEUDO # define PSEUDO(name, syscall_name, args) \ @@ -84,7 +84,7 @@ # define CENABLE jbsr __pthread_enable_asynccancel # define CDISABLE jbsr __pthread_disable_asynccancel # endif -# else +# elif !defined NOT_IN_libc # ifdef PIC # define CENABLE jbsr __libc_enable_asynccancel@PLTPC # define CDISABLE jbsr __libc_disable_asynccancel@PLTPC @@ -92,12 +92,22 @@ # define CENABLE jbsr __libc_enable_asynccancel # define CDISABLE jbsr __libc_disable_asynccancel # endif +# else +# ifdef PIC +# define CENABLE jbsr __librt_enable_asynccancel@PLTPC +# define CDISABLE jbsr __librt_disable_asynccancel@PLTPC +# else +# define CENABLE jbsr __librt_enable_asynccancel +# define CDISABLE jbsr __librt_disable_asynccancel +# endif # endif # if !defined NOT_IN_libc # define __local_multiple_threads __libc_multiple_threads -# else +# elif defined IS_IN_libpthread # define __local_multiple_threads __pthread_multiple_threads +# else +# define __local_multiple_threads __librt_multiple_threads # endif # ifndef __ASSEMBLER__ --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/mips/sysdep-cancel.h 2003-01-27 13:55:20.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/mips/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400 @@ -22,7 +22,7 @@ # include #endif -#if !defined NOT_IN_libc || defined IS_IN_libpthread +#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt #ifdef __PIC__ # undef PSEUDO @@ -35,14 +35,14 @@ .cpload t9; \ .set reorder; \ SINGLE_THREAD_P(t0); \ - bne zero, t0, Lpseudo_cancel; \ + bne zero, t0, L(pseudo_cancel); \ .set noreorder; \ li v0, SYS_ify(syscall_name); \ syscall; \ .set reorder; \ bne a3, zero, SYSCALL_ERROR_LABEL; \ ret; \ - Lpseudo_cancel: \ + L(pseudo_cancel): \ SAVESTK_##args; \ sw ra, 28(sp); \ sw gp, 32(sp); \ @@ -65,7 +65,7 @@ lw ra, 28(sp); /* restore return address */ \ RESTORESTK; \ bne a3, zero, SYSCALL_ERROR_LABEL; \ - Lpseudo_end: + L(pseudo_end): #endif # define PUSHARGS_0 /* nothing to do */ --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h 2003-02-17 15:32:09.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400 @@ -23,7 +23,7 @@ # include #endif -#if !defined NOT_IN_libc || defined IS_IN_libpthread +#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt # undef PSEUDO # define PSEUDO(name, syscall_name, args) \ @@ -78,15 +78,17 @@ # ifdef IS_IN_libpthread # define CENABLE bl JUMPTARGET(__pthread_enable_asynccancel) # define CDISABLE bl JUMPTARGET(__pthread_disable_asynccancel) -# else +# elif !defined NOT_IN_libc # define CENABLE bl JUMPTARGET(__libc_enable_asynccancel) # define CDISABLE bl JUMPTARGET(__libc_disable_asynccancel) +# else +# define CENABLE bl JUMPTARGET(__librt_enable_asynccancel) +# define CDISABLE bl JUMPTARGET(__librt_disable_asynccancel) # endif # ifndef __ASSEMBLER__ # define SINGLE_THREAD_P \ - __builtin_expect (THREAD_GETMEM (THREAD_SELF, \ - p_header.data.multiple_threads) == 0, 1) + __builtin_expect (THREAD_GETMEM (THREAD_SELF, p_multiple_threads) == 0, 1) # else # define SINGLE_THREAD_P \ lwz 10,MULTIPLE_THREADS_OFFSET(2); \ --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h 2003-01-12 03:09:45.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400 @@ -22,7 +22,7 @@ # include #endif -#if !defined NOT_IN_libc || defined IS_IN_libpthread +#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt # undef PSEUDO # define PSEUDO(name, syscall_name, args) \ @@ -78,18 +78,31 @@ # define CENABLE bl JUMPTARGET(__pthread_enable_asynccancel) # define CDISABLE bl JUMPTARGET(__pthread_disable_asynccancel) # define __local_multiple_threads __pthread_multiple_threads -# else +# elif !defined NOT_IN_libc # define CENABLE bl JUMPTARGET(__libc_enable_asynccancel) # define CDISABLE bl JUMPTARGET(__libc_disable_asynccancel) # define __local_multiple_threads __libc_multiple_threads +# else +# define CENABLE bl JUMPTARGET(__librt_enable_asynccancel); nop +# define CDISABLE bl JUMPTARGET(__librt_disable_asynccancel); nop +# define __local_multiple_threads __librt_multiple_threads # endif # ifndef __ASSEMBLER__ -extern int __local_multiple_threads attribute_hidden; +extern int __local_multiple_threads +# if !defined NOT_IN_libc || defined IS_IN_libpthread + attribute_hidden; +# else + ; +# endif # define SINGLE_THREAD_P __builtin_expect (__local_multiple_threads == 0, 1) # else # define SINGLE_THREAD_P \ - ld 10,__local_multiple_threads@got(2); \ + .section ".toc","aw"; \ +.LC__local_multiple_threads:; \ + .tc __local_multiple_threads[TC],__local_multiple_threads; \ + .previous; \ + ld 10,.LC__local_multiple_threads@toc(2); \ ld 10,0(10); \ cmpdi 10,0 # endif --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/pt-sigsuspend.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/pt-sigsuspend.c 2003-04-01 19:10:44.000000000 -0500 @@ -0,0 +1,56 @@ +/* Internal sigsuspend system call for LinuxThreads. Generic Linux version. + Copyright (C) 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include +#include +#include + +#include +#include +#include + +#include "kernel-features.h" + +void +__pthread_sigsuspend (const sigset_t *set) +{ + INTERNAL_SYSCALL_DECL (err); +#if !__ASSUME_REALTIME_SIGNALS + static int __pthread_missing_rt_sigs; + +# ifdef __NR_rt_sigsuspend + /* First try the RT signals. */ + if (!__pthread_missing_rt_sigs) + { + /* XXX The size argument hopefully will have to be changed to the + real size of the user-level sigset_t. */ + int r; + r = INTERNAL_SYSCALL (rt_sigsuspend, err, 2, set, _NSIG / 8); + if (INTERNAL_SYSCALL_ERRNO (r, err) != ENOSYS) + return; + + __pthread_missing_rt_sigs = 1; + } +# endif + + INTERNAL_SYSCALL (sigsuspend, err, 3, 0, 0, set->__val[0]); +#else + INTERNAL_SYSCALL (rt_sigsuspend, err, 2, set, _NSIG / 8); +#endif +} --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/s390/bits/typesizes.h 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/s390/bits/typesizes.h 2003-09-19 22:37:04.000000000 -0400 @@ -0,0 +1,72 @@ +/* bits/typesizes.h -- underlying types for *_t. Linux/s390 version. + Copyright (C) 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#ifndef _BITS_TYPES_H +# error "Never include directly; use instead." +#endif + +#ifndef _BITS_TYPESIZES_H +#define _BITS_TYPESIZES_H 1 + +/* See for the meaning of these macros. This file exists so + that need not vary across different GNU platforms. */ + +#define __DEV_T_TYPE __UQUAD_TYPE +#define __UID_T_TYPE __U32_TYPE +#define __GID_T_TYPE __U32_TYPE +#define __INO_T_TYPE __ULONGWORD_TYPE +#define __INO64_T_TYPE __UQUAD_TYPE +#define __MODE_T_TYPE __U32_TYPE +#define __NLINK_T_TYPE __UWORD_TYPE +#define __OFF_T_TYPE __SLONGWORD_TYPE +#define __OFF64_T_TYPE __SQUAD_TYPE +#define __PID_T_TYPE __S32_TYPE +#define __RLIM_T_TYPE __ULONGWORD_TYPE +#define __RLIM64_T_TYPE __UQUAD_TYPE +#define __BLKCNT_T_TYPE __SLONGWORD_TYPE +#define __BLKCNT64_T_TYPE __SQUAD_TYPE +#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE +#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE +#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE +#define __FSFILCNT64_T_TYPE __UQUAD_TYPE +#define __ID_T_TYPE __U32_TYPE +#define __CLOCK_T_TYPE __SLONGWORD_TYPE +#define __TIME_T_TYPE __SLONGWORD_TYPE +#define __USECONDS_T_TYPE __U32_TYPE +#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE +#define __DADDR_T_TYPE __S32_TYPE +#define __SWBLK_T_TYPE __SLONGWORD_TYPE +#define __KEY_T_TYPE __S32_TYPE +#define __CLOCKID_T_TYPE __S32_TYPE +#define __TIMER_T_TYPE __S32_TYPE +#define __BLKSIZE_T_TYPE __SLONGWORD_TYPE +#define __FSID_T_TYPE struct { int __val[2]; } +#if defined __GNUC__ && __GNUC__ <= 2 +/* Compatibility with g++ 2.95.x. */ +#define __SSIZE_T_TYPE __SWORD_TYPE +#else +/* size_t is unsigned long int on s390 -m31. */ +#define __SSIZE_T_TYPE __SLONGWORD_TYPE +#endif + +/* Number of descriptors that can fit in an `fd_set'. */ +#define __FD_SETSIZE 1024 + + +#endif /* bits/typesizes.h */ --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h 2003-01-13 20:04:15.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400 @@ -23,7 +23,7 @@ # include #endif -#if !defined NOT_IN_libc || defined IS_IN_libpthread +#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt # undef PSEUDO # define PSEUDO(name, syscall_name, args) \ @@ -62,9 +62,12 @@ # ifdef IS_IN_libpthread # define CENABLE __pthread_enable_asynccancel # define CDISABLE __pthread_disable_asynccancel -# else +# elif !defined NOT_IN_libc # define CENABLE __libc_enable_asynccancel # define CDISABLE __libc_disable_asynccancel +# else +# define CENABLE __librt_enable_asynccancel +# define CDISABLE __librt_disable_asynccancel # endif #define STM_0 /* Nothing */ --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-sigsuspend.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-sigsuspend.c 2003-04-01 19:10:45.000000000 -0500 @@ -0,0 +1 @@ +#include "../../ia64/pt-sigsuspend.c" --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h 2003-01-28 05:20:09.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400 @@ -23,7 +23,7 @@ # include #endif -#if !defined NOT_IN_libc || defined IS_IN_libpthread +#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt # undef PSEUDO # define PSEUDO(name, syscall_name, args) \ @@ -58,10 +58,13 @@ # define CENABLE __pthread_enable_asynccancel # define CDISABLE __pthread_disable_asynccancel # define __local_multiple_threads __pthread_multiple_threads -# else +# elif !defined NOT_IN_libc # define CENABLE __libc_enable_asynccancel # define CDISABLE __libc_disable_asynccancel # define __local_multiple_threads __libc_multiple_threads +# else +# define CENABLE __librt_enable_asynccancel +# define CDISABLE __librt_disable_asynccancel # endif #define STM_0 /* Nothing */ @@ -78,14 +81,31 @@ #define LM_4 lmg %r2,%r5,16+160(%r15); #define LM_5 lmg %r2,%r5,16+160(%r15); -# ifndef __ASSEMBLER__ +# if !defined NOT_IN_libc || defined IS_IN_libpthread +# ifndef __ASSEMBLER__ extern int __local_multiple_threads attribute_hidden; -# define SINGLE_THREAD_P \ +# define SINGLE_THREAD_P \ __builtin_expect (__local_multiple_threads == 0, 1) -# else -# define SINGLE_THREAD_P \ +# else +# define SINGLE_THREAD_P \ larl %r1,__local_multiple_threads; \ icm %r0,15,0(%r1); +# endif + +# else + +# ifndef __ASSEMBLER__ +# define SINGLE_THREAD_P \ + __builtin_expect (THREAD_GETMEM (THREAD_SELF, \ + p_header.data.multiple_threads) == 0, 1) +# else +# define SINGLE_THREAD_P \ + ear %r1,%a0; \ + sllg %r1,%r1,32; \ + ear %r1,%a1; \ + icm %r1,15,MULTIPLE_THREADS_OFFSET(%r1); +# endif + # endif #elif !defined __ASSEMBLER__ --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h 2003-02-07 21:29:53.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400 @@ -23,7 +23,7 @@ # include #endif -#if !defined NOT_IN_libc || defined IS_IN_libpthread +#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt # define _IMM12 #-12 # define _IMM16 #-16 @@ -92,10 +92,13 @@ # define __local_enable_asynccancel __pthread_enable_asynccancel # define __local_disable_asynccancel __pthread_disable_asynccancel # define __local_multiple_threads __pthread_multiple_threads -# else +# elif !defined NOT_IN_libc # define __local_enable_asynccancel __libc_enable_asynccancel # define __local_disable_asynccancel __libc_disable_asynccancel # define __local_multiple_threads __libc_multiple_threads +# else +# define __local_enable_asynccancel __librt_enable_asynccancel +# define __local_disable_asynccancel __librt_disable_asynccancel # endif # define CENABLE \ @@ -121,8 +124,7 @@ # ifndef __ASSEMBLER__ # if defined FLOATING_STACKS && USE___THREAD && defined PIC # define SINGLE_THREAD_P \ - __builtin_expect (THREAD_GETMEM (THREAD_SELF, \ - p_header.data.multiple_threads) == 0, 1) + __builtin_expect (THREAD_GETMEM (THREAD_SELF, p_multiple_threads) == 0, 1) # else extern int __local_multiple_threads attribute_hidden; # define SINGLE_THREAD_P __builtin_expect (__local_multiple_threads == 0, 1) --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/Makefile 2003-02-21 13:55:30.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/Makefile 1969-12-31 19:00:00.000000000 -0500 @@ -1,11 +0,0 @@ -ifeq ($(subdir),linuxthreads) -# gcc has /usr/lib{,64}/crti.o hardcoded in the specs file, because otherwise -# it would normally find {64,32}bit crt[in].o. -LDFLAGS-pthread.so += -specs=$(objpfx)specs -before-compile += $(objpfx)specs -generated += specs -$(objpfx)specs: - $(CC) $(CFLAGS) $(CPPFLAGS) -dumpspecs \ - | sed 's,\(/usr/lib\(\|64\)/\|^\|\([^/a-z]\)\)\(crt[in]\.o\),\3./\4,g' > $@.new - mv -f $@.new $@ -endif --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/Versions 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/Versions 2003-09-02 23:04:33.000000000 -0400 @@ -0,0 +1,6 @@ +libpthread { + GLIBC_2.3.3 { + # Changed PTHREAD_STACK_MIN. + pthread_attr_setstack; pthread_attr_setstacksize; + } +} --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/bits/local_lim.h 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/bits/local_lim.h 2003-09-02 23:04:08.000000000 -0400 @@ -0,0 +1,86 @@ +/* Minimum guaranteed maximum values for system limits. Linux/SPARC version. + Copyright (C) 1993-1998, 2000, 2002, 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* The kernel header pollutes the namespace with the NR_OPEN symbol + and defines LINK_MAX although filesystems have different maxima. A + similar thing is true for OPEN_MAX: the limit can be changed at + runtime and therefore the macro must not be defined. Remove this + after including the header if necessary. */ +#ifndef NR_OPEN +# define __undef_NR_OPEN +#endif +#ifndef LINK_MAX +# define __undef_LINK_MAX +#endif +#ifndef OPEN_MAX +# define __undef_OPEN_MAX +#endif + +/* The kernel sources contain a file with all the needed information. */ +#include + +/* Have to remove NR_OPEN? */ +#ifdef __undef_NR_OPEN +# undef NR_OPEN +# undef __undef_NR_OPEN +#endif +/* Have to remove LINK_MAX? */ +#ifdef __undef_LINK_MAX +# undef LINK_MAX +# undef __undef_LINK_MAX +#endif +/* Have to remove OPEN_MAX? */ +#ifdef __undef_OPEN_MAX +# undef OPEN_MAX +# undef __undef_OPEN_MAX +#endif + +/* The number of data keys per process. */ +#define _POSIX_THREAD_KEYS_MAX 128 +/* This is the value this implementation supports. */ +#define PTHREAD_KEYS_MAX 1024 + +/* Controlling the iterations of destructors for thread-specific data. */ +#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4 +/* Number of iterations this implementation does. */ +#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS + +/* The number of threads per process. */ +#define _POSIX_THREAD_THREADS_MAX 64 +/* This is the value this implementation supports. */ +#define PTHREAD_THREADS_MAX 16384 + +/* Maximum amount by which a process can descrease its asynchronous I/O + priority level. */ +#define AIO_PRIO_DELTA_MAX 20 + +/* Minimum size for a thread. We are free to choose a reasonable value. */ +#define PTHREAD_STACK_MIN 24576 + +/* Maximum number of POSIX timers available. */ +#define TIMER_MAX 256 + +/* Maximum number of timer expiration overruns. */ +#define DELAYTIMER_MAX 2147483647 + +/* Maximum tty name length. */ +#define TTY_NAME_MAX 32 + +/* Maximum login name length. This is arbitrary. */ +#define LOGIN_NAME_MAX 256 --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h 2003-08-21 08:37:04.000000000 -0400 @@ -0,0 +1,66 @@ +/* bits/typesizes.h -- underlying types for *_t. Linux/SPARC version. + Copyright (C) 2002, 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#ifndef _BITS_TYPES_H +# error "Never include directly; use instead." +#endif + +#ifndef _BITS_TYPESIZES_H +#define _BITS_TYPESIZES_H 1 + +/* See for the meaning of these macros. This file exists so + that need not vary across different GNU platforms. */ + +#define __DEV_T_TYPE __UQUAD_TYPE +#define __UID_T_TYPE __U32_TYPE +#define __GID_T_TYPE __U32_TYPE +#define __INO_T_TYPE __ULONGWORD_TYPE +#define __INO64_T_TYPE __UQUAD_TYPE +#define __MODE_T_TYPE __U32_TYPE +#define __NLINK_T_TYPE __U32_TYPE +#define __OFF_T_TYPE __SLONGWORD_TYPE +#define __OFF64_T_TYPE __SQUAD_TYPE +#define __PID_T_TYPE __S32_TYPE +#define __RLIM_T_TYPE __ULONGWORD_TYPE +#define __RLIM64_T_TYPE __UQUAD_TYPE +#define __BLKCNT_T_TYPE __SLONGWORD_TYPE +#define __BLKCNT64_T_TYPE __SQUAD_TYPE +#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE +#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE +#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE +#define __FSFILCNT64_T_TYPE __UQUAD_TYPE +#define __ID_T_TYPE __U32_TYPE +#define __CLOCK_T_TYPE __SLONGWORD_TYPE +#define __TIME_T_TYPE __SLONGWORD_TYPE +#define __USECONDS_T_TYPE __U32_TYPE +#define __SUSECONDS_T_TYPE __S32_TYPE +#define __DADDR_T_TYPE __S32_TYPE +#define __SWBLK_T_TYPE __SLONGWORD_TYPE +#define __KEY_T_TYPE __S32_TYPE +#define __CLOCKID_T_TYPE __S32_TYPE +#define __TIMER_T_TYPE __S32_TYPE +#define __BLKSIZE_T_TYPE __SLONGWORD_TYPE +#define __FSID_T_TYPE struct { int __val[2]; } +#define __SSIZE_T_TYPE __SWORD_TYPE + +/* Number of descriptors that can fit in an `fd_set'. */ +#define __FD_SETSIZE 1024 + + +#endif /* bits/typesizes.h */ --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h 2003-01-27 15:47:53.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400 @@ -23,7 +23,7 @@ # include #endif -#if !defined NOT_IN_libc || defined IS_IN_libpthread +#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt # undef PSEUDO # define PSEUDO(name, syscall_name, args) \ @@ -68,9 +68,12 @@ # ifdef IS_IN_libpthread # define CENABLE call __pthread_enable_asynccancel # define CDISABLE call __pthread_disable_asynccancel -# else +# elif !defined NOT_IN_libc # define CENABLE call __libc_enable_asynccancel # define CDISABLE call __libc_disable_asynccancel +# else +# define CENABLE call __librt_enable_asynccancel +# define CDISABLE call __librt_disable_asynccancel # endif #define COPY_ARGS_0 /* Nothing */ --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile 2003-03-14 18:36:52.000000000 -0500 @@ -0,0 +1,5 @@ +# glibc makefile fragment for linuxthreads on sparc/sparc64. + +ifeq ($(subdir),linuxthreads) +libpthread-routines += ptw-sigprocmask +endif --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/pt-sigsuspend.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/pt-sigsuspend.c 2003-04-01 19:10:44.000000000 -0500 @@ -0,0 +1 @@ +#include "../../ia64/pt-sigsuspend.c" --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h 2003-02-21 13:55:30.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400 @@ -23,7 +23,7 @@ # include #endif -#if !defined NOT_IN_libc || defined IS_IN_libpthread +#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt # undef PSEUDO # define PSEUDO(name, syscall_name, args) \ @@ -67,9 +67,12 @@ # ifdef IS_IN_libpthread # define CENABLE call __pthread_enable_asynccancel # define CDISABLE call __pthread_disable_asynccancel -# else +# elif !defined NOT_IN_libc # define CENABLE call __libc_enable_asynccancel # define CDISABLE call __libc_disable_asynccancel +# else +# define CENABLE call __librt_enable_asynccancel +# define CDISABLE call __librt_disable_asynccancel # endif #define COPY_ARGS_0 /* Nothing */ --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/x86_64/Makefile 2003-02-21 13:55:30.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/x86_64/Makefile 2003-04-12 11:39:43.000000000 -0400 @@ -1,12 +1,3 @@ ifeq ($(subdir),linuxthreads) CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions -fno-asynchronous-unwind-tables -# gcc -m64 has /usr/lib64/crti.o hardcoded in the specs file, because otherwise -# it would normally find 32bit crti.o. -LDFLAGS-pthread.so += -specs=$(objpfx)specs -before-compile += $(objpfx)specs -generated += specs -$(objpfx)specs: - $(CC) $(CFLAGS) $(CPPFLAGS) -dumpspecs \ - | sed 's,\(/usr/lib\(\|64\)/\|^\|\([^/a-z]\)\)\(crt[in]\.o\),\3./\4,g' > $@.new - mv -f $@.new $@ endif --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/x86_64/pt-sigsuspend.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/x86_64/pt-sigsuspend.c 2003-04-01 19:10:45.000000000 -0500 @@ -0,0 +1 @@ +#include "../ia64/pt-sigsuspend.c" --- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h 2003-02-12 16:45:53.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400 @@ -24,7 +24,7 @@ # include #endif -#if !defined NOT_IN_libc || defined IS_IN_libpthread +#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt # undef PSEUDO # define PSEUDO(name, syscall_name, args) \ @@ -74,38 +74,54 @@ # define POPARGS_6 POPARGS_5 movq 48(%rsp), %r9; /* We always have to align the stack before calling a function. */ -# define SAVESTK_0 subq $24, %rsp; +# define SAVESTK_0 subq $24, %rsp;cfi_adjust_cfa_offset(24); # define SAVESTK_1 SAVESTK_0 # define SAVESTK_2 SAVESTK_1 -# define SAVESTK_3 subq $40, %rsp; +# define SAVESTK_3 subq $40, %rsp;cfi_adjust_cfa_offset(40); # define SAVESTK_4 SAVESTK_3 -# define SAVESTK_5 subq $56, %rsp; +# define SAVESTK_5 subq $56, %rsp;cfi_adjust_cfa_offset(56); # define SAVESTK_6 SAVESTK_5 -# define RESTSTK_0 addq $24,%rsp; +# define RESTSTK_0 addq $24,%rsp;cfi_adjust_cfa_offset(-24); # define RESTSTK_1 RESTSTK_0 # define RESTSTK_2 RESTSTK_1 -# define RESTSTK_3 addq $40, %rsp; +# define RESTSTK_3 addq $40, %rsp;cfi_adjust_cfa_offset(-40); # define RESTSTK_4 RESTSTK_3 -# define RESTSTK_5 addq $56, %rsp; +# define RESTSTK_5 addq $56, %rsp;cfi_adjust_cfa_offset(-56); # define RESTSTK_6 RESTSTK_5 # ifdef IS_IN_libpthread # define CENABLE call __pthread_enable_asynccancel; # define CDISABLE call __pthread_disable_asynccancel; # define __local_multiple_threads __pthread_multiple_threads -# else +# elif !defined NOT_IN_libc # define CENABLE call __libc_enable_asynccancel; # define CDISABLE call __libc_disable_asynccancel; # define __local_multiple_threads __libc_multiple_threads +# else +# define CENABLE call __librt_enable_asynccancel@plt; +# define CDISABLE call __librt_disable_asynccancel@plt; # endif -# ifndef __ASSEMBLER__ +# if defined IS_IN_libpthread || !defined NOT_IN_libc +# ifndef __ASSEMBLER__ extern int __local_multiple_threads attribute_hidden; # define SINGLE_THREAD_P \ __builtin_expect (__local_multiple_threads == 0, 1) +# else +# define SINGLE_THREAD_P cmpl $0, __local_multiple_threads(%rip) +# endif + # else -# define SINGLE_THREAD_P cmpl $0, __local_multiple_threads(%rip) + +# ifndef __ASSEMBLER__ +# define SINGLE_THREAD_P \ + __builtin_expect (THREAD_GETMEM (THREAD_SELF, \ + p_header.data.multiple_threads) == 0, 1) +# else +# define SINGLE_THREAD_P cmpl $0, %fs:MULTIPLE_THREADS_OFFSET +# endif + # endif #elif !defined __ASSEMBLER__ --- glibc-2.3.2/linuxthreads/sysdeps/x86_64/Makefile 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/x86_64/Makefile 2003-06-17 18:24:24.000000000 -0400 @@ -0,0 +1,3 @@ +ifeq ($(subdir),csu) +gen-as-const-headers += tcb-offsets.sym +endif --- glibc-2.3.2/linuxthreads/sysdeps/x86_64/pt-machine.h 2002-12-17 19:57:21.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/x86_64/pt-machine.h 2003-08-21 08:37:05.000000000 -0400 @@ -1,6 +1,6 @@ /* Machine-dependent pthreads configuration and inline functions. x86-64 version. - Copyright (C) 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -28,7 +28,7 @@ # ifndef PT_EI -# define PT_EI extern inline +# define PT_EI extern inline __attribute__ ((always_inline)) # endif extern long int testandset (int *spinlock); --- glibc-2.3.2/linuxthreads/sysdeps/x86_64/tcb-offsets.sym 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/x86_64/tcb-offsets.sym 2003-06-17 18:23:41.000000000 -0400 @@ -0,0 +1,4 @@ +#include +#include + +MULTIPLE_THREADS_OFFSET offsetof (tcbhead_t, multiple_threads) --- glibc-2.3.2/linuxthreads/sysdeps/x86_64/tls.h 2002-12-28 02:04:09.000000000 -0500 +++ glibc-2.3.2/linuxthreads/sysdeps/x86_64/tls.h 2003-08-21 08:37:05.000000000 -0400 @@ -39,6 +39,7 @@ thread descriptor used by libpthread. */ dtv_t *dtv; void *self; /* Pointer to the thread descriptor. */ + int multiple_threads; } tcbhead_t; #endif --- glibc-2.3.2/linuxthreads/tst-_res1.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/tst-_res1.c 2003-07-22 19:07:47.000000000 -0400 @@ -0,0 +1,69 @@ +/* Copyright (C) 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jakub Jelinek , 2003. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +/* Test whether _res in glibc 2.1.x and earlier (before __res_state() + was introduced) works. Portable programs should never do the + dirty things below. */ + +#include +#include +#include +#include + +void *tf (void *resp) +{ + if (resp == &_res || resp == __res_state ()) + abort (); + _res.retry = 24; + return NULL; +} + +void do_test (struct __res_state *resp) +{ + if (resp != &_res || resp != __res_state ()) + abort (); + if (_res.retry != 12) + abort (); +} + +int main (void) +{ +#undef _res + extern struct __res_state _res; + pthread_t th; + + _res.retry = 12; + if (pthread_create (&th, NULL, tf, &_res) != 0) + { + puts ("create failed"); + exit (1); + } + + do_test (&_res); + + if (pthread_join (th, NULL) != 0) + { + puts ("join failed"); + exit (1); + } + + do_test (&_res); + + exit (0); +} --- glibc-2.3.2/linuxthreads/tst-_res1mod1.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/tst-_res1mod1.c 2003-07-22 19:07:47.000000000 -0400 @@ -0,0 +1,23 @@ +/* Copyright (C) 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jakub Jelinek , 2003. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include +#undef _res + +struct __res_state _res; --- glibc-2.3.2/linuxthreads/tst-_res1mod2.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/tst-_res1mod2.c 2003-07-22 19:07:47.000000000 -0400 @@ -0,0 +1 @@ +/* Nothing. */ --- glibc-2.3.2/linuxthreads/tst-attr1.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/tst-attr1.c 2003-09-18 15:15:05.000000000 -0400 @@ -0,0 +1,358 @@ +/* pthread_getattr_np test. + Copyright (C) 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jakub Jelinek , 2003. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include +#include +#include +#include +#include +#include +#include + +#include + +static void * +tf (void *arg) +{ + pthread_attr_t a, *ap, a2; + int err; + void *result = NULL; + + if (arg == NULL) + { + ap = &a2; + err = pthread_attr_init (ap); + if (err) + { + error (0, err, "pthread_attr_init failed"); + return tf; + } + } + else + ap = (pthread_attr_t *) arg; + + err = pthread_getattr_np (pthread_self (), &a); + if (err) + { + error (0, err, "pthread_getattr_np failed"); + result = tf; + } + + int detachstate1, detachstate2; + err = pthread_attr_getdetachstate (&a, &detachstate1); + if (err) + { + error (0, err, "pthread_attr_getdetachstate failed"); + result = tf; + } + else + { + err = pthread_attr_getdetachstate (ap, &detachstate2); + if (err) + { + error (0, err, "pthread_attr_getdetachstate failed"); + result = tf; + } + else if (detachstate1 != detachstate2) + { + error (0, 0, "detachstate differs %d != %d", + detachstate1, detachstate2); + result = tf; + } + } + + void *stackaddr; + size_t stacksize; + err = pthread_attr_getstack (&a, &stackaddr, &stacksize); + if (err) + { + error (0, err, "pthread_attr_getstack failed"); + result = tf; + } + else if ((void *) &a < stackaddr + || (void *) &a >= stackaddr + stacksize) + { + error (0, 0, "pthread_attr_getstack returned range does not cover thread's stack"); + result = tf; + } + else + printf ("thread stack %p-%p (0x%zx)\n", stackaddr, stackaddr + stacksize, + stacksize); + + size_t guardsize1, guardsize2; + err = pthread_attr_getguardsize (&a, &guardsize1); + if (err) + { + error (0, err, "pthread_attr_getguardsize failed"); + result = tf; + } + else + { + err = pthread_attr_getguardsize (ap, &guardsize2); + if (err) + { + error (0, err, "pthread_attr_getguardsize failed"); + result = tf; + } + else if (guardsize1 != guardsize2) + { + error (0, 0, "guardsize differs %zd != %zd", + guardsize1, guardsize2); + result = tf; + } + else + printf ("thread guardsize %zd\n", guardsize1); + } + + int scope1, scope2; + err = pthread_attr_getscope (&a, &scope1); + if (err) + { + error (0, err, "pthread_attr_getscope failed"); + result = tf; + } + else + { + err = pthread_attr_getscope (ap, &scope2); + if (err) + { + error (0, err, "pthread_attr_getscope failed"); + result = tf; + } + else if (scope1 != scope2) + { + error (0, 0, "scope differs %d != %d", + scope1, scope2); + result = tf; + } + } + + err = pthread_attr_destroy (&a); + if (err) + { + error (0, err, "pthread_attr_destroy failed"); + result = tf; + } + + if (ap == &a2) + { + err = pthread_attr_destroy (ap); + if (err) + { + error (0, err, "pthread_attr_destroy failed"); + result = tf; + } + } + + return result; +} + + +static int +do_test (void) +{ + int result = 0; + pthread_attr_t a; + + int err = pthread_attr_init (&a); + if (err) + { + error (0, err, "pthread_attr_init failed"); + result = 1; + } + + err = pthread_attr_destroy (&a); + if (err) + { + error (0, err, "pthread_attr_destroy failed"); + result = 1; + } + + err = pthread_getattr_np (pthread_self (), &a); + if (err) + { + error (0, err, "pthread_getattr_np failed"); + result = 1; + } + + int detachstate; + err = pthread_attr_getdetachstate (&a, &detachstate); + if (err) + { + error (0, err, "pthread_attr_getdetachstate failed"); + result = 1; + } + else if (detachstate != PTHREAD_CREATE_JOINABLE) + { + error (0, 0, "initial thread not joinable"); + result = 1; + } + + void *stackaddr; + size_t stacksize; + err = pthread_attr_getstack (&a, &stackaddr, &stacksize); + if (err) + { + error (0, err, "pthread_attr_getstack failed"); + result = 1; + } + else if ((void *) &a < stackaddr + || (void *) &a >= stackaddr + stacksize) + { + error (0, 0, "pthread_attr_getstack returned range does not cover main's stack"); + result = 1; + } + else + printf ("initial thread stack %p-%p (0x%zx)\n", stackaddr, + stackaddr + stacksize, stacksize); + + size_t guardsize; + err = pthread_attr_getguardsize (&a, &guardsize); + if (err) + { + error (0, err, "pthread_attr_getguardsize failed"); + result = 1; + } + else if (guardsize != 0) + { + error (0, 0, "pthread_attr_getguardsize returned %zd != 0", + guardsize); + result = 1; + } + + int scope; + err = pthread_attr_getscope (&a, &scope); + if (err) + { + error (0, err, "pthread_attr_getscope failed"); + result = 1; + } + else if (scope != PTHREAD_SCOPE_SYSTEM) + { + error (0, 0, "pthread_attr_getscope returned %d != PTHREAD_SCOPE_SYSTEM", + scope); + result = 1; + } + + int inheritsched; + err = pthread_attr_getinheritsched (&a, &inheritsched); + if (err) + { + error (0, err, "pthread_attr_getinheritsched failed"); + result = 1; + } + else if (inheritsched != PTHREAD_INHERIT_SCHED) + { + error (0, 0, "pthread_attr_getinheritsched returned %d != PTHREAD_INHERIT_SCHED", + inheritsched); + result = 1; + } + + err = pthread_attr_destroy (&a); + if (err) + { + error (0, err, "pthread_attr_destroy failed"); + result = 1; + } + + pthread_t th; + err = pthread_create (&th, NULL, tf, NULL); + if (err) + { + error (0, err, "pthread_create #1 failed"); + result = 1; + } + else + { + void *ret; + err = pthread_join (th, &ret); + if (err) + { + error (0, err, "pthread_join #1 failed"); + result = 1; + } + else if (ret != NULL) + result = 1; + } + + err = pthread_attr_init (&a); + if (err) + { + error (0, err, "pthread_attr_init failed"); + result = 1; + } + + err = pthread_create (&th, &a, tf, &a); + if (err) + { + error (0, err, "pthread_create #2 failed"); + result = 1; + } + else + { + void *ret; + err = pthread_join (th, &ret); + if (err) + { + error (0, err, "pthread_join #2 failed"); + result = 1; + } + else if (ret != NULL) + result = 1; + } + + err = pthread_attr_setguardsize (&a, 16 * sysconf (_SC_PAGESIZE)); + if (err) + { + error (0, err, "pthread_attr_setguardsize failed"); + result = 1; + } + + err = pthread_create (&th, &a, tf, &a); + if (err) + { + error (0, err, "pthread_create #3 failed"); + result = 1; + } + else + { + void *ret; + err = pthread_join (th, &ret); + if (err) + { + error (0, err, "pthread_join #3 failed"); + result = 1; + } + else if (ret != NULL) + result = 1; + } + + err = pthread_attr_destroy (&a); + if (err) + { + error (0, err, "pthread_attr_destroy failed"); + result = 1; + } + + return result; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" --- glibc-2.3.2/linuxthreads/tst-cancel-wrappers.sh 2003-01-14 19:55:09.000000000 -0500 +++ glibc-2.3.2/linuxthreads/tst-cancel-wrappers.sh 2003-08-21 08:37:03.000000000 -0400 @@ -27,8 +27,6 @@ C["creat"]=1 C["fcntl"]=1 C["fsync"]=1 -C["llseek"]=1 -C["lseek"]=1 C["msgrcv"]=1 C["msgsnd"]=1 C["msync"]=1 --- glibc-2.3.2/linuxthreads/tst-cancel.c 2001-04-12 17:55:11.000000000 -0400 +++ glibc-2.3.2/linuxthreads/tst-cancel.c 2003-08-21 08:37:03.000000000 -0400 @@ -12,6 +12,7 @@ pthread_barrier_t bar; +#ifdef NOT_YET static void cleanup (void *arg) { @@ -52,7 +53,7 @@ return NULL; pthread_cleanup_pop (0); } - +#endif /* This does not work yet. */ volatile int cleanupokcnt; @@ -63,7 +64,7 @@ ++cleanupokcnt; } - +#ifdef NOT_YET static void * t3 (void *arg) { @@ -72,7 +73,7 @@ pthread_exit (NULL); pthread_cleanup_pop (0); } - +#endif static void innerok (int a) @@ -170,7 +171,7 @@ err = pthread_create (&td, NULL, t4, (void *) 7); if (err != 0) { - printf ("cannot create thread t3: %s\n", strerror (err)); + printf ("cannot create thread t4: %s\n", strerror (err)); exit (1); } --- glibc-2.3.2/linuxthreads/tst-cancel4.c 2002-12-28 02:49:20.000000000 -0500 +++ glibc-2.3.2/linuxthreads/tst-cancel4.c 2003-03-15 15:02:09.000000000 -0500 @@ -1,4 +1,4 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2002. @@ -154,7 +154,7 @@ exit (1); } - sleep (10000000); + sleep (1000000); printf ("%s: sleep returns\n", __FUNCTION__); --- glibc-2.3.2/linuxthreads/tst-cancel7.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/tst-cancel7.c 2003-04-01 19:10:44.000000000 -0500 @@ -0,0 +1,111 @@ +/* Test for pthread cancellation of mutex blocks. + Copyright (C) 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jakub Jelinek , 2003. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include +#include +#include +#include + +pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; +pthread_barrier_t b; +int value = 0; + +static void * +tf (void *arg) +{ + int r = pthread_barrier_wait (&b); + if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) + { + printf ("%s: barrier_wait failed\n", __FUNCTION__); + exit (1); + } + + pthread_mutex_lock (&lock); + ++value; + pthread_testcancel (); + ++value; + pthread_mutex_unlock (&lock); + return NULL; +} + + +static int +do_test (void) +{ + pthread_mutex_lock (&lock); + + if (pthread_barrier_init (&b, NULL, 2) != 0) + { + puts ("barrier init failed"); + return 1; + } + + pthread_t th; + if (pthread_create (&th, NULL, tf, NULL) != 0) + { + puts ("pthread_create failed"); + return 1; + } + + int r = pthread_barrier_wait (&b); + if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) + { + printf ("%s: barrier_wait failed\n", __FUNCTION__); + exit (1); + } + + if (pthread_cancel (th) != 0) + { + puts ("pthread_cancel failed"); + return 1; + } + + pthread_mutex_unlock (&lock); + + void *status; + if (pthread_join (th, &status) != 0) + { + puts ("join failed"); + return 1; + } + + if (status != PTHREAD_CANCELED) + { + puts ("thread not canceled"); + return 1; + } + + if (value == 0) + { + puts ("thread cancelled in the pthread_mutex_lock call"); + return 1; + } + + if (value != 1) + { + puts ("thread not cancelled in pthread_testcancel call"); + return 1; + } + + return 0; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" --- glibc-2.3.2/linuxthreads/tst-tls1.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/tst-tls1.c 2003-09-01 20:29:30.000000000 -0400 @@ -0,0 +1,91 @@ +/* Copyright (C) 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jakub Jelinek , 2003. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +/* Check alignment, overlapping and layout of TLS variables. */ +#include +#include +#include +#include +#include + +#include "tst-tls1.h" + +#ifdef TLS_REGISTER + +struct tls_obj tls_registry[64]; + +static int +tls_addr_cmp (const void *a, const void *b) +{ + if (((struct tls_obj *)a)->addr < ((struct tls_obj *)b)->addr) + return -1; + if (((struct tls_obj *)a)->addr > ((struct tls_obj *)b)->addr) + return 1; + return 0; +} + +static int +do_test (void) +{ + size_t cnt, i; + int res = 0; + uintptr_t min_addr = ~(uintptr_t) 0, max_addr = 0; + + for (cnt = 0; tls_registry[cnt].name; ++cnt); + + qsort (tls_registry, cnt, sizeof (struct tls_obj), tls_addr_cmp); + + for (i = 0; i < cnt; ++i) + { + printf ("%s = %p, size %zd, align %zd", + tls_registry[i].name, (void *) tls_registry[i].addr, + tls_registry[i].size, tls_registry[i].align); + if (tls_registry[i].addr & (tls_registry[i].align - 1)) + { + fputs (", WRONG ALIGNMENT", stdout); + res = 1; + } + if (i > 0 + && (tls_registry[i - 1].addr + tls_registry[i - 1].size + > tls_registry[i].addr)) + { + fputs (", ADDRESS OVERLAP", stdout); + res = 1; + } + puts (""); + min_addr = MIN (tls_registry[i].addr, min_addr); + max_addr = MAX (tls_registry[i].addr + tls_registry[i].size, + max_addr); + } + + if (cnt > 1) + printf ("Initial TLS used block size %zd\n", + (size_t) (max_addr - min_addr)); + return res; +} + +#define TEST_FUNCTION do_test () + +#else + +#define TEST_FUNCTION 0 + +#endif + +#include "../test-skeleton.c" --- glibc-2.3.2/linuxthreads/tst-tls1.h 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/tst-tls1.h 2003-09-01 20:29:30.000000000 -0400 @@ -0,0 +1,28 @@ +#include +#include +#include + +#if USE_TLS && HAVE___THREAD + +struct tls_obj +{ + const char *name; + uintptr_t addr; + size_t size; + size_t align; +}; +extern struct tls_obj tls_registry[]; + +#define TLS_REGISTER(x) \ +static void __attribute__((constructor)) \ +tls_register_##x (void) \ +{ \ + size_t i; \ + for (i = 0; tls_registry[i].name; ++i); \ + tls_registry[i].name = #x; \ + tls_registry[i].addr = (uintptr_t) &x; \ + tls_registry[i].size = sizeof (x); \ + tls_registry[i].align = __alignof__ (x); \ +} + +#endif --- glibc-2.3.2/linuxthreads/tst-tls1mod.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/tst-tls1mod.c 2003-09-01 20:29:31.000000000 -0400 @@ -0,0 +1,6 @@ +#include + +#ifdef TLS_REGISTER +/* Ensure tls_registry is exported from the binary. */ +void *tst_tls1mod attribute_hidden = tls_registry; +#endif --- glibc-2.3.2/linuxthreads/tst-tls1moda.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/tst-tls1moda.c 2003-09-01 20:29:30.000000000 -0400 @@ -0,0 +1,6 @@ +#include + +#ifdef TLS_REGISTER +static __thread char a [32] __attribute__ ((aligned (64))); +TLS_REGISTER (a) +#endif --- glibc-2.3.2/linuxthreads/tst-tls1modb.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/tst-tls1modb.c 2003-09-01 20:29:31.000000000 -0400 @@ -0,0 +1,6 @@ +#include + +#ifdef TLS_REGISTER +static __thread int b; +TLS_REGISTER (b) +#endif --- glibc-2.3.2/linuxthreads/tst-tls1modc.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/tst-tls1modc.c 2003-09-01 20:29:31.000000000 -0400 @@ -0,0 +1,6 @@ +#include + +#ifdef TLS_REGISTER +static __thread int c; +TLS_REGISTER (c) +#endif --- glibc-2.3.2/linuxthreads/tst-tls1modd.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/tst-tls1modd.c 2003-09-01 20:29:31.000000000 -0400 @@ -0,0 +1,6 @@ +#include + +#ifdef TLS_REGISTER +static __thread int d; +TLS_REGISTER (d) +#endif --- glibc-2.3.2/linuxthreads/tst-tls1mode.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/tst-tls1mode.c 2003-09-01 20:29:31.000000000 -0400 @@ -0,0 +1,8 @@ +#include + +#ifdef TLS_REGISTER +static __thread int e1 = 24; +static __thread char e2 [32] __attribute__ ((aligned (64))); +TLS_REGISTER (e1) +TLS_REGISTER (e2) +#endif --- glibc-2.3.2/linuxthreads/tst-tls1modf.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/tst-tls1modf.c 2003-09-01 20:29:31.000000000 -0400 @@ -0,0 +1,9 @@ +#include + +#ifdef TLS_REGISTER +char tst_tls1modf[60] attribute_hidden = { 26 }; +static __thread int f1 = 24; +static __thread char f2 [32] __attribute__ ((aligned (64))); +TLS_REGISTER (f1) +TLS_REGISTER (f2) +#endif --- glibc-2.3.2/linuxthreads/tst-tls2.sh 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads/tst-tls2.sh 2003-09-01 20:29:31.000000000 -0400 @@ -0,0 +1,53 @@ +#!/bin/sh + +common_objpfx=$1; shift +elf_objpfx=$1; shift +rtld_installed_name=$1; shift +logfile=$common_objpfx/linuxthreads/tst-tls2.out + +# We have to find libc and linuxthreads +library_path=${common_objpfx}:${common_objpfx}linuxthreads +tst_tls1="${elf_objpfx}${rtld_installed_name} --library-path ${library_path} \ + ${common_objpfx}/linuxthreads/tst-tls1" + +LC_ALL=C +export LC_ALL +LANG=C +export LANG + +> $logfile +fail=0 + +for aligned in a e f; do + echo "preload tst-tls1mod{$aligned,b,c,d}.so" >> $logfile + echo "===============" >> $logfile + LD_PRELOAD=`echo ${common_objpfx}linuxthreads/tst-tls1mod{$aligned,b,c,d}.so \ + | sed 's/:$//;s/: /:/g'` ${tst_tls1} >> $logfile || fail=1 + echo >> $logfile + + echo "preload tst-tls1mod{b,$aligned,c,d}.so" >> $logfile + echo "===============" >> $logfile + LD_PRELOAD=`echo ${common_objpfx}linuxthreads/tst-tls1mod{b,$aligned,c,d}.so \ + | sed 's/:$//;s/: /:/g'` ${tst_tls1} >> $logfile || fail=1 + echo >> $logfile + + echo "preload tst-tls1mod{b,c,d,$aligned}.so" >> $logfile + echo "===============" >> $logfile + LD_PRELOAD=`echo ${common_objpfx}linuxthreads/tst-tls1mod{b,c,d,$aligned}.so \ + | sed 's/:$//;s/: /:/g'` ${tst_tls1} >> $logfile || fail=1 + echo >> $logfile +done + +echo "preload tst-tls1mod{d,a,b,c,e}" >> $logfile +echo "===============" >> $logfile +LD_PRELOAD=`echo ${common_objpfx}linuxthreads/tst-tls1mod{d,a,b,c,e}.so \ + | sed 's/:$//;s/: /:/g'` ${tst_tls1} >> $logfile || fail=1 +echo >> $logfile + +echo "preload tst-tls1mod{d,a,b,e,f}" >> $logfile +echo "===============" >> $logfile +LD_PRELOAD=`echo ${common_objpfx}linuxthreads/tst-tls1mod{d,a,b,e,f}.so \ + | sed 's/:$//;s/: /:/g'` ${tst_tls1} >> $logfile || fail=1 +echo >> $logfile + +exit $fail --- glibc-2.3.2/linuxthreads/tststack.c 2002-08-27 00:52:35.000000000 -0400 +++ glibc-2.3.2/linuxthreads/tststack.c 2003-09-19 22:37:04.000000000 -0400 @@ -1,5 +1,5 @@ /* Tests for variable stack size handling. - Copyright (C) 2000 Free Software Foundation, Inc. + Copyright (C) 2000, 2003 Free Software Foundation, Inc. Contributed by Ulrich Drepper , 2000. The GNU C Library is free software; you can redistribute it and/or @@ -20,6 +20,8 @@ #include #include #include +#include +#include static void *f1 (void *); static void *f2 (void *); @@ -34,7 +36,7 @@ void *res2; pthread_attr_init (&attr); - if (pthread_attr_setstacksize (&attr, 70*1024) != 0) + if (pthread_attr_setstacksize (&attr, MAX (70*1024, PTHREAD_STACK_MIN)) != 0) { puts ("invalid stack size"); return 1; --- glibc-2.3.2/linuxthreads_db/ChangeLog 2003-01-30 05:15:38.000000000 -0500 +++ glibc-2.3.2/linuxthreads_db/ChangeLog 2003-09-19 22:37:04.000000000 -0400 @@ -1,3 +1,25 @@ +2003-08-18 Daniel Jacobowitz + + * td_thr_getfpregs.c (td_thr_getfpregs): Use the main thread if + the descriptor is uninitialized. + * td_thr_getgregs.c (td_thr_getgregs): Likewise. + +2003-03-15 Roland McGrath + + * thread_db.h (td_err_e): Add TD_NOTLS and TD_TLSDEFER. + (td_thr_tlsbase): Declare it. + * td_thr_tlsbase.c: New file. + * Makefile (libthread_db-routines): Add it. + * Versions (libthread_db: GLIBC_2.3.3): New set, add td_thr_tlsbase. + * td_thr_tls_get_addr.c (td_thr_tls_get_addr): Use td_thr_tlsbase. + +2003-02-27 Roland McGrath + + * td_thr_tls_get_addr.c (td_thr_tls_get_addr): Handle TLS_DTV_AT_TP. + + * td_ta_thr_iter.c (handle_descr) [!defined USE_TLS || !TLS_DTV_AT_TP]: + Conditionalize p_header use on this. + 2003-01-29 Roland McGrath * td_ta_new.c (td_ta_new): Cap the `sizeof_descr' value read from the --- glibc-2.3.2/linuxthreads_db/Makefile 2003-01-05 05:00:22.000000000 -0500 +++ glibc-2.3.2/linuxthreads_db/Makefile 2003-03-18 16:46:07.000000000 -0500 @@ -39,7 +39,8 @@ td_thr_event_enable td_thr_set_event \ td_thr_clear_event td_thr_event_getmsg \ td_ta_set_event td_ta_event_getmsg \ - td_ta_clear_event td_symbol_list td_thr_tls_get_addr + td_ta_clear_event td_symbol_list \ + td_thr_tlsbase td_thr_tls_get_addr libthread_db-inhibit-o = $(filter-out .os,$(object-suffixes)) --- glibc-2.3.2/linuxthreads_db/Versions 2002-07-10 19:08:40.000000000 -0400 +++ glibc-2.3.2/linuxthreads_db/Versions 2003-03-18 16:46:07.000000000 -0500 @@ -18,4 +18,7 @@ GLIBC_2.3 { td_thr_tls_get_addr; } + GLIBC_2.3.3 { + td_thr_tlsbase; + } } --- glibc-2.3.2/linuxthreads_db/td_ta_thr_iter.c 2002-07-15 23:34:26.000000000 -0400 +++ glibc-2.3.2/linuxthreads_db/td_ta_thr_iter.c 2003-03-15 15:02:11.000000000 -0500 @@ -1,5 +1,5 @@ /* Iterate over a process's threads. - Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 1999,2000,2001,2002,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1999. @@ -40,7 +40,9 @@ memset (&pds, '\0', sizeof (pds)); /* Empty thread descriptor the thread library would create. */ +#if !defined USE_TLS || !TLS_DTV_AT_TP pds.p_header.data.self = &pds; +#endif pds.p_nextlive = pds.p_prevlive = &pds; pds.p_tid = PTHREAD_THREADS_MAX; /* The init code also sets up p_lock, p_errnop, p_herrnop, and --- glibc-2.3.2/linuxthreads_db/td_thr_getfpregs.c 2002-07-15 23:25:16.000000000 -0400 +++ glibc-2.3.2/linuxthreads_db/td_thr_getfpregs.c 2003-09-19 22:37:04.000000000 -0400 @@ -1,5 +1,5 @@ /* Get a thread's floating-point register set. - Copyright (C) 1999, 2001 Free Software Foundation, Inc. + Copyright (C) 1999, 2001, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1999. @@ -30,7 +30,10 @@ if (th->th_unique == NULL) { - memset (regset, '\0', sizeof (*regset)); + /* No data yet. Use the main thread. */ + pid_t pid = ps_getpid (th->th_ta_p->ph); + if (ps_lgetfpregs (th->th_ta_p->ph, pid, regset) != PS_OK) + return TD_ERR; return TD_OK; } --- glibc-2.3.2/linuxthreads_db/td_thr_getgregs.c 2002-07-15 23:24:27.000000000 -0400 +++ glibc-2.3.2/linuxthreads_db/td_thr_getgregs.c 2003-09-19 22:37:04.000000000 -0400 @@ -1,5 +1,5 @@ /* Get a thread's general register set. - Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. + Copyright (C) 1999, 2000, 2001, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1999. @@ -30,8 +30,10 @@ if (th->th_unique == NULL) { - /* No data yet. */ - memset (gregs, '\0', sizeof (prgregset_t)); + /* No data yet. Use the main thread. */ + pid_t pid = ps_getpid (th->th_ta_p->ph); + if (ps_lgetregs (th->th_ta_p->ph, pid, gregs) != PS_OK) + return TD_ERR; return TD_OK; } --- glibc-2.3.2/linuxthreads_db/td_thr_tls_get_addr.c 2002-09-28 13:41:11.000000000 -0400 +++ glibc-2.3.2/linuxthreads_db/td_thr_tls_get_addr.c 2003-03-18 16:46:07.000000000 -0500 @@ -1,5 +1,5 @@ /* Get address of thread local variable. - Copyright (C) 2002 Free Software Foundation, Inc. + Copyright (C) 2002,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2002. @@ -18,14 +18,9 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ - -#include "link.h" +#include #include "thread_dbP.h" -/* Value used for dtv entries for which the allocation is delayed. */ -# define TLS_DTV_UNALLOCATED ((void *) -1l) - - td_err_e td_thr_tls_get_addr (const td_thrhandle_t *th __attribute__ ((unused)), void *map_address __attribute__ ((unused)), @@ -33,37 +28,17 @@ void **address __attribute__ ((unused))) { #if USE_TLS - size_t modid; - union dtv pdtv, *dtvp; - - LOG ("td_thr_tls_get_addr"); - - /* Get the DTV pointer from the thread descriptor. */ - if (ps_pdread (th->th_ta_p->ph, - &((struct _pthread_descr_struct *) th->th_unique)->p_header.data.dtvp, - &dtvp, sizeof dtvp) != PS_OK) - return TD_ERR; /* XXX Other error value? */ - /* Read the module ID from the link_map. */ + size_t modid; if (ps_pdread (th->th_ta_p->ph, &((struct link_map *) map_address)->l_tls_modid, &modid, sizeof modid) != PS_OK) return TD_ERR; /* XXX Other error value? */ - /* Get the corresponding entry in the DTV. */ - if (ps_pdread (th->th_ta_p->ph, dtvp + modid, - &pdtv, sizeof (union dtv)) != PS_OK) - return TD_ERR; /* XXX Other error value? */ - - /* It could be that the memory for this module is not allocated for - the given thread. */ - if (pdtv.pointer == TLS_DTV_UNALLOCATED) - /* There is not much we can do. */ - return TD_NOTALLOC; - - *address = (char *) pdtv.pointer + offset; - - return TD_OK; + td_err_e result = td_thr_tlsbase (th, modid, address); + if (result == TD_OK) + *address += offset; + return result; #else return TD_ERR; #endif --- glibc-2.3.2/linuxthreads_db/td_thr_tlsbase.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/linuxthreads_db/td_thr_tlsbase.c 2003-03-15 18:09:01.000000000 -0500 @@ -0,0 +1,67 @@ +/* Locate TLS data for a thread. + Copyright (C) 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include "thread_dbP.h" + +/* Value used for dtv entries for which the allocation is delayed. */ +# define TLS_DTV_UNALLOCATED ((void *) -1l) + +td_err_e +td_thr_tlsbase (const td_thrhandle_t *th, + unsigned long int modid, + psaddr_t *base) +{ + if (modid < 1) + return TD_NOTLS; + +#if USE_TLS + union dtv pdtv, *dtvp; + + LOG ("td_thr_tlsbase"); + + psaddr_t dtvpp = th->th_unique; +#if TLS_TCB_AT_TP + dtvpp += offsetof (struct _pthread_descr_struct, p_header.data.dtvp); +#elif TLS_DTV_AT_TP + dtvpp += TLS_PRE_TCB_SIZE + offsetof (tcbhead_t, dtv); +#else +# error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined." +#endif + + /* Get the DTV pointer from the thread descriptor. */ + if (ps_pdread (th->th_ta_p->ph, dtvpp, &dtvp, sizeof dtvp) != PS_OK) + return TD_ERR; /* XXX Other error value? */ + + /* Get the corresponding entry in the DTV. */ + if (ps_pdread (th->th_ta_p->ph, dtvp + modid, + &pdtv, sizeof (union dtv)) != PS_OK) + return TD_ERR; /* XXX Other error value? */ + + /* It could be that the memory for this module is not allocated for + the given thread. */ + if (pdtv.pointer == TLS_DTV_UNALLOCATED) + return TD_TLSDEFER; + + *base = (char *) pdtv.pointer; + + return TD_OK; +#else + return TD_ERR; +#endif +} --- glibc-2.3.2/linuxthreads_db/thread_db.h 2002-09-24 19:33:07.000000000 -0400 +++ glibc-2.3.2/linuxthreads_db/thread_db.h 2003-03-18 16:46:07.000000000 -0500 @@ -1,4 +1,5 @@ -/* Copyright (C) 1999, 2001, 2002 Free Software Foundation, Inc. +/* thread_db.h -- interface to libthread_db.so library for debugging -lpthread + Copyright (C) 1999,2001,2002,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -52,8 +53,10 @@ TD_MALLOC, /* Out of memory. */ TD_PARTIALREG, /* Not entire register set was read or written. */ TD_NOXREGS, /* X register set not available for given thread. */ - TD_NOTALLOC, /* TLS memory not yet allocated. */ - TD_VERSION /* Version if libpthread and libthread_db do not match. */ + TD_TLSDEFER, /* Thread has not yet allocated TLS for given module. */ + TD_NOTALLOC = TD_TLSDEFER, + TD_VERSION, /* Version if libpthread and libthread_db do not match. */ + TD_NOTLS /* There is TLS segment in the given module. */ } td_err_e; @@ -402,6 +405,11 @@ const void *__addr); +/* Get address of the given module's TLS storage area for the given thread. */ +extern td_err_e td_thr_tlsbase (const td_thrhandle_t *__th, + unsigned long int __modid, + psaddr_t *__base); + /* Get address of thread local variable. */ extern td_err_e td_thr_tls_get_addr (const td_thrhandle_t *__th, void *__map_address, size_t __offset, --- glibc-2.3.2/locale/Makefile 2002-10-17 13:05:53.000000000 -0400 +++ glibc-2.3.2/locale/Makefile 2003-08-21 08:37:05.000000000 -0400 @@ -1,4 +1,4 @@ -# Copyright (C) 1991,92,1995-1999,2000,2001,2002 Free Software Foundation, Inc. +# Copyright (C) 1991,1992,1995-2002,2003 Free Software Foundation, Inc. # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or @@ -42,7 +42,7 @@ categories = ctype messages monetary numeric time paper name \ address telephone measurement identification collate aux = $(categories:%=lc-%) $(categories:%=C-%) SYS_libc C_name \ - xlocale localename global-locale + xlocale localename global-locale coll-lookup others = localedef locale #others-static = localedef locale install-bin = localedef locale --- glibc-2.3.2/locale/Versions 2002-08-27 21:04:45.000000000 -0400 +++ glibc-2.3.2/locale/Versions 2003-03-15 15:02:11.000000000 -0500 @@ -59,13 +59,12 @@ iswcntrl_l; iswctype_l; iswdigit_l; iswgraph_l; iswlower_l; iswprint_l; iswpunct_l; iswspace_l; iswupper_l; iswxdigit_l; isxdigit_l; strcasecmp_l; strcoll_l; strfmon_l; strncasecmp_l; - strtod_l; strtof_l; strtol_l; strtold_l; strtoll_l; strtoul_l; - strtoull_l; strxfrm_l; toascii_l; tolower_l; toupper_l; + strtod_l; strtof_l; strtol_l; strtold_l; strtoul_l; + strxfrm_l; toascii_l; tolower_l; toupper_l; towctrans_l; towlower_l; towupper_l; wcscasecmp_l; wcscoll_l; wcsncasecmp_l; wcstod_l; wcstof_l; wcstol_l; wcstold_l; wcstoll_l; wcstoul_l; wcstoull_l; wcsxfrm_l; wctype_l; wctrans_l; nl_langinfo_l; - } GLIBC_PRIVATE { # global variables --- glibc-2.3.2/locale/coll-lookup.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/locale/coll-lookup.c 2003-06-13 16:41:58.000000000 -0400 @@ -0,0 +1,81 @@ +/* Copyright (C) 2000, 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Bruno Haible , 2000. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include + +/* Lookup in a table of int32_t, with default value 0. */ +int32_t +internal_function +__collidx_table_lookup (const char *table, uint32_t wc) +{ + uint32_t shift1 = ((const uint32_t *) table)[0]; + uint32_t index1 = wc >> shift1; + uint32_t bound = ((const uint32_t *) table)[1]; + if (index1 < bound) + { + uint32_t lookup1 = ((const uint32_t *) table)[5 + index1]; + if (lookup1 != 0) + { + uint32_t shift2 = ((const uint32_t *) table)[2]; + uint32_t mask2 = ((const uint32_t *) table)[3]; + uint32_t index2 = (wc >> shift2) & mask2; + uint32_t lookup2 = ((const uint32_t *)(table + lookup1))[index2]; + if (lookup2 != 0) + { + uint32_t mask3 = ((const uint32_t *) table)[4]; + uint32_t index3 = wc & mask3; + int32_t lookup3 = ((const int32_t *)(table + lookup2))[index3]; + + return lookup3; + } + } + } + return 0; +} + + +/* Lookup in a table of uint32_t, with default value 0xffffffff. */ +uint32_t +internal_function +__collseq_table_lookup (const char *table, uint32_t wc) +{ + uint32_t shift1 = ((const uint32_t *) table)[0]; + uint32_t index1 = wc >> shift1; + uint32_t bound = ((const uint32_t *) table)[1]; + if (index1 < bound) + { + uint32_t lookup1 = ((const uint32_t *) table)[5 + index1]; + if (lookup1 != 0) + { + uint32_t shift2 = ((const uint32_t *) table)[2]; + uint32_t mask2 = ((const uint32_t *) table)[3]; + uint32_t index2 = (wc >> shift2) & mask2; + uint32_t lookup2 = ((const uint32_t *)(table + lookup1))[index2]; + if (lookup2 != 0) + { + uint32_t mask3 = ((const uint32_t *) table)[4]; + uint32_t index3 = wc & mask3; + uint32_t lookup3 = ((const uint32_t *)(table + lookup2))[index3]; + + return lookup3; + } + } + } + return ~((uint32_t) 0); +} --- glibc-2.3.2/locale/coll-lookup.h 2001-07-07 15:21:04.000000000 -0400 +++ glibc-2.3.2/locale/coll-lookup.h 2003-08-21 08:37:05.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 2000 Free Software Foundation, Inc. +/* Copyright (C) 2000, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Bruno Haible , 2000. @@ -17,85 +17,12 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -/* Word tables are accessed by cutting wc in three blocks of bits: - - the high 32-q-p bits, - - the next q bits, - - the next p bits. - - +------------------+-----+-----+ - wc = + 32-q-p | q | p | - +------------------+-----+-----+ - - p and q are variable. For 16-bit Unicode it is sufficient to - choose p and q such that q+p <= 16. - - The table contains the following uint32_t words: - - q+p, - - s = upper exclusive bound for wc >> (q+p), - - p, - - 2^q-1, - - 2^p-1, - - 1st-level table: s offsets, pointing into the 2nd-level table, - - 2nd-level table: k*2^q offsets, pointing into the 3rd-level table, - - 3rd-level table: j*2^p words, each containing 32 bits of data. -*/ - #include /* Lookup in a table of int32_t, with default value 0. */ -static inline int32_t -collidx_table_lookup (const char *table, uint32_t wc) -{ - uint32_t shift1 = ((const uint32_t *) table)[0]; - uint32_t index1 = wc >> shift1; - uint32_t bound = ((const uint32_t *) table)[1]; - if (index1 < bound) - { - uint32_t lookup1 = ((const uint32_t *) table)[5 + index1]; - if (lookup1 != 0) - { - uint32_t shift2 = ((const uint32_t *) table)[2]; - uint32_t mask2 = ((const uint32_t *) table)[3]; - uint32_t index2 = (wc >> shift2) & mask2; - uint32_t lookup2 = ((const uint32_t *)(table + lookup1))[index2]; - if (lookup2 != 0) - { - uint32_t mask3 = ((const uint32_t *) table)[4]; - uint32_t index3 = wc & mask3; - int32_t lookup3 = ((const int32_t *)(table + lookup2))[index3]; - - return lookup3; - } - } - } - return 0; -} +extern int32_t __collidx_table_lookup (const char *table, uint32_t wc) + internal_function; /* Lookup in a table of uint32_t, with default value 0xffffffff. */ -static inline uint32_t -collseq_table_lookup (const char *table, uint32_t wc) -{ - uint32_t shift1 = ((const uint32_t *) table)[0]; - uint32_t index1 = wc >> shift1; - uint32_t bound = ((const uint32_t *) table)[1]; - if (index1 < bound) - { - uint32_t lookup1 = ((const uint32_t *) table)[5 + index1]; - if (lookup1 != 0) - { - uint32_t shift2 = ((const uint32_t *) table)[2]; - uint32_t mask2 = ((const uint32_t *) table)[3]; - uint32_t index2 = (wc >> shift2) & mask2; - uint32_t lookup2 = ((const uint32_t *)(table + lookup1))[index2]; - if (lookup2 != 0) - { - uint32_t mask3 = ((const uint32_t *) table)[4]; - uint32_t index3 = wc & mask3; - uint32_t lookup3 = ((const uint32_t *)(table + lookup2))[index3]; - - return lookup3; - } - } - } - return ~((uint32_t) 0); -} +extern uint32_t __collseq_table_lookup (const char *table, uint32_t wc) + internal_function; --- glibc-2.3.2/locale/findlocale.c 2002-09-01 14:02:00.000000000 -0400 +++ glibc-2.3.2/locale/findlocale.c 2003-08-21 08:37:05.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1996. @@ -28,6 +28,7 @@ #include "localeinfo.h" #include "../iconv/gconv_charset.h" +#include "../iconv/gconv_int.h" #ifdef NL_CURRENT_INDIRECT --- glibc-2.3.2/locale/iso-639.def 2002-08-02 16:28:38.000000000 -0400 +++ glibc-2.3.2/locale/iso-639.def 2003-08-21 08:37:05.000000000 -0400 @@ -6,171 +6,462 @@ * If you find something missing or wrong contact */ -DEFINE_LANGUAGE_CODE ("Afar", aa, aar, aar) DEFINE_LANGUAGE_CODE ("Abkhazian", ab, abk, abk) +DEFINE_LANGUAGE_CODE3 ("Achinese", ace, ace) +DEFINE_LANGUAGE_CODE3 ("Acoli", ach, ach) +DEFINE_LANGUAGE_CODE3 ("Adangme", ada, ada) +DEFINE_LANGUAGE_CODE3 ("Adygei", ady, ady) +DEFINE_LANGUAGE_CODE ("Afar", aa, aar, aar) +DEFINE_LANGUAGE_CODE3 ("Afrihili", afh, afh) DEFINE_LANGUAGE_CODE ("Afrikaans", af, afr, afr) +DEFINE_LANGUAGE_CODE3 ("Afro-Asiatic (Other)", afa, afa) +DEFINE_LANGUAGE_CODE ("Akan", ak, aka, aka) +DEFINE_LANGUAGE_CODE3 ("Akkadian", akk, akk) DEFINE_LANGUAGE_CODE ("Albanian", sq, sqi, alb) +DEFINE_LANGUAGE_CODE3 ("Aleut", ale, ale) +DEFINE_LANGUAGE_CODE3 ("Alonquian languages", alg, alg) +DEFINE_LANGUAGE_CODE3 ("Altaic (Other)", tut, tut) DEFINE_LANGUAGE_CODE ("Amharic", am, amh, amh) +DEFINE_LANGUAGE_CODE3 ("Apache language", apa, apa) DEFINE_LANGUAGE_CODE ("Arabic", ar, ara, ara) +DEFINE_LANGUAGE_CODE ("Argonese", an, arg, arg) +DEFINE_LANGUAGE_CODE3 ("Aramaic", arc, arc) +DEFINE_LANGUAGE_CODE3 ("Arapaho", arp, arp) +DEFINE_LANGUAGE_CODE3 ("Araucanian", arn, arn) +DEFINE_LANGUAGE_CODE3 ("Arawak", arw, arw) DEFINE_LANGUAGE_CODE ("Armenian", hy, hye, arm) +DEFINE_LANGUAGE_CODE3 ("Artificial (Other)", art, art) DEFINE_LANGUAGE_CODE ("Assamese", as, asm, asm) +DEFINE_LANGUAGE_CODE3 ("Asturian; Bable", ast, ast) +DEFINE_LANGUAGE_CODE3 ("Athapascan languages", ath, ath) +DEFINE_LANGUAGE_CODE3 ("Australian languages", aus, aus) +DEFINE_LANGUAGE_CODE3 ("Austronesian (Other)", map, map) +DEFINE_LANGUAGE_CODE ("Avaric", av, ava, ava) DEFINE_LANGUAGE_CODE ("Avestan", ae, ave, ave) +DEFINE_LANGUAGE_CODE3 ("Awadhi", awa, awa) DEFINE_LANGUAGE_CODE ("Aymara", ay, aym, aym) DEFINE_LANGUAGE_CODE ("Azerbaijani", az, aze, aze) +DEFINE_LANGUAGE_CODE3 ("Balinese", ban, ban) +DEFINE_LANGUAGE_CODE3 ("Baltic (Other)", bat, bat) +DEFINE_LANGUAGE_CODE3 ("Baluchi", bal, bal) +DEFINE_LANGUAGE_CODE ("Bambara", bm, bam, bam) +DEFINE_LANGUAGE_CODE3 ("Bamileke languages", bai, bai) +DEFINE_LANGUAGE_CODE3 ("Banda", bad, bad) +DEFINE_LANGUAGE_CODE3 ("Bantu (Other)", bnt, bnt) +DEFINE_LANGUAGE_CODE3 ("Basa", bas, bas) DEFINE_LANGUAGE_CODE ("Bashkir", ba, bak, bak) DEFINE_LANGUAGE_CODE ("Basque", eu, eus, baq) +DEFINE_LANGUAGE_CODE3 ("Batak (Indonesia)", btk, btk) +DEFINE_LANGUAGE_CODE3 ("Beja", bej, bej) DEFINE_LANGUAGE_CODE ("Belarusian", be, bel, bel) +DEFINE_LANGUAGE_CODE3 ("Bemba", bem, bem) DEFINE_LANGUAGE_CODE ("Bengali", bn, ben, ben) +DEFINE_LANGUAGE_CODE3 ("Berber (Other)", ber, ber) +DEFINE_LANGUAGE_CODE3 ("Bhojpuri", bho, bho) DEFINE_LANGUAGE_CODE ("Bihari", bh, bih, bih) +DEFINE_LANGUAGE_CODE3 ("Bikol", bik, bik) +DEFINE_LANGUAGE_CODE3 ("Bini", bin, bin) DEFINE_LANGUAGE_CODE ("Bislama", bi, bis, bis) DEFINE_LANGUAGE_CODE ("Bosnian", bs, bos, bos) +DEFINE_LANGUAGE_CODE3 ("Braj", bra, bra) DEFINE_LANGUAGE_CODE ("Breton", br, bre, bre) +DEFINE_LANGUAGE_CODE3 ("Buginese", bug, bug) DEFINE_LANGUAGE_CODE ("Bulgarian", bg, bul, bul) +DEFINE_LANGUAGE_CODE3 ("Buriat", bua, bua) DEFINE_LANGUAGE_CODE ("Burmese", my, mya, bur) +DEFINE_LANGUAGE_CODE3 ("Caddo", cad, cad) +DEFINE_LANGUAGE_CODE3 ("Carib", car, car) DEFINE_LANGUAGE_CODE ("Catalan", ca, cat, cat) +DEFINE_LANGUAGE_CODE3 ("Caucasian (Other)", cau, cau) +DEFINE_LANGUAGE_CODE3 ("Cebuano", ceb, ceb) +DEFINE_LANGUAGE_CODE3 ("Celtic (Other)", cel, cel) +DEFINE_LANGUAGE_CODE3 ("Central American Indian (Other)", cai, cai) +DEFINE_LANGUAGE_CODE3 ("Chagatai", chg, chg) +DEFINE_LANGUAGE_CODE3 ("Canmic languages", cmc, cmc) DEFINE_LANGUAGE_CODE ("Chamorro", ch, cha, cha) DEFINE_LANGUAGE_CODE ("Chechen", ce, che, che) +DEFINE_LANGUAGE_CODE3 ("Cherokee", chr, chr) +DEFINE_LANGUAGE_CODE ("Chewa; Chechewa; Nyanja", ny, nya, nya) +DEFINE_LANGUAGE_CODE3 ("Cheyenne", chy, chy) +DEFINE_LANGUAGE_CODE3 ("Chibcha", chb, chb) DEFINE_LANGUAGE_CODE ("Chinese", zh, zho, chi) +DEFINE_LANGUAGE_CODE3 ("Chinook jargon", chn, chn) +DEFINE_LANGUAGE_CODE3 ("Chipewyan", chp, chp) +DEFINE_LANGUAGE_CODE3 ("Choctaw", cho, cho) DEFINE_LANGUAGE_CODE ("Church Slavic", cu, chu, chu) +DEFINE_LANGUAGE_CODE3 ("Chuukese", chk, chk) DEFINE_LANGUAGE_CODE ("Chuvash", cv, chv, chv) +DEFINE_LANGUAGE_CODE3 ("Coptic", cop, cop) DEFINE_LANGUAGE_CODE ("Cornish", kw, cor, cor) DEFINE_LANGUAGE_CODE ("Corsican", co, cos, cos) +DEFINE_LANGUAGE_CODE ("Cree", cr, cre, cre) +DEFINE_LANGUAGE_CODE3 ("Creek", mus, mus) +DEFINE_LANGUAGE_CODE3 ("Creoles and pidgins (Other)", crp, crp) +DEFINE_LANGUAGE_CODE3 ("Creoles and pidgins, English-based (Other)", cpe, cpe) +DEFINE_LANGUAGE_CODE3 ("Creoles and pidgins, French-based (Other)", cpf, cpf) +DEFINE_LANGUAGE_CODE3 ("Creoles and pidgins, Portuguese-based (Other)", cpp, cpp) +DEFINE_LANGUAGE_CODE3 ("Crimean Tatar; Crimean Turkish", crh, crh) +DEFINE_LANGUAGE_CODE ("Croatian", hr, hrv, scr) +DEFINE_LANGUAGE_CODE3 ("Cushitic (Other)", cus, cus) DEFINE_LANGUAGE_CODE ("Czech", cs, ces, cze) +DEFINE_LANGUAGE_CODE3 ("Dakota", dak, dak) DEFINE_LANGUAGE_CODE ("Danish", da, dan, dan) -DEFINE_LANGUAGE_CODE ("Dutch", nl, nld, dut) +DEFINE_LANGUAGE_CODE3 ("Dargwa", dar, dar) +DEFINE_LANGUAGE_CODE3 ("Dayak", day, day) +DEFINE_LANGUAGE_CODE3 ("Delaware", del, del) +DEFINE_LANGUAGE_CODE3 ("Dinka", din, din) +DEFINE_LANGUAGE_CODE ("Divehi", dv, div, div) +DEFINE_LANGUAGE_CODE3 ("Dogri", doi, doi) +DEFINE_LANGUAGE_CODE3 ("Dogrib", dgr, dgr) +DEFINE_LANGUAGE_CODE3 ("Dravidian (Other)", dra, dra) +DEFINE_LANGUAGE_CODE3 ("Duala", dua, dua) +DEFINE_LANGUAGE_CODE ("Dutch; Flemish", nl, nld, dut) +DEFINE_LANGUAGE_CODE3 ("Dutch, Middle", dum, dum) +DEFINE_LANGUAGE_CODE3 ("Dyula", dyu, dyu) DEFINE_LANGUAGE_CODE ("Dzongkha", dz, dzo, dzo) +DEFINE_LANGUAGE_CODE3 ("Efik", efi, efi) +DEFINE_LANGUAGE_CODE3 ("Egyptian (Ancient)", egy, egy) +DEFINE_LANGUAGE_CODE3 ("Ekajuk", eka, eka) +DEFINE_LANGUAGE_CODE3 ("Elamite", elx, elx) DEFINE_LANGUAGE_CODE ("English", en, eng, eng) +DEFINE_LANGUAGE_CODE3 ("English, Middle", enm, enm) +DEFINE_LANGUAGE_CODE3 ("English, Old", ang, ang) +DEFINE_LANGUAGE_CODE3 ("Erzya", myv, myv) DEFINE_LANGUAGE_CODE ("Esperanto", eo, epo, epo) DEFINE_LANGUAGE_CODE ("Estonian", et, est, est) +DEFINE_LANGUAGE_CODE ("Ewe", ee, ewe, ewe) +DEFINE_LANGUAGE_CODE3 ("Ewondo", ewo, ewo) +DEFINE_LANGUAGE_CODE3 ("Fang", fan, fan) +DEFINE_LANGUAGE_CODE3 ("Fanti", fat, fat) DEFINE_LANGUAGE_CODE ("Faroese", fo, fao, fao) DEFINE_LANGUAGE_CODE ("Fijian", fj, fij, fij) DEFINE_LANGUAGE_CODE ("Finnish", fi, fin, fin) +DEFINE_LANGUAGE_CODE3 ("Finno-Ugrian (Other)", fiu, fiu) +DEFINE_LANGUAGE_CODE3 ("Fon", fon, fon) DEFINE_LANGUAGE_CODE ("French", fr, fra, fre) +DEFINE_LANGUAGE_CODE3 ("French, Middle", frm, frm) +DEFINE_LANGUAGE_CODE3 ("French, Old", fro, fro) DEFINE_LANGUAGE_CODE ("Frisian", fy, fry, fry) -DEFINE_LANGUAGE_CODE ("Georgian", ka, kat, geo) -DEFINE_LANGUAGE_CODE ("German", de, deu, ger) +DEFINE_LANGUAGE_CODE3 ("Friulian", fur, fur) +DEFINE_LANGUAGE_CODE ("Fulah", ff, ful, ful) +DEFINE_LANGUAGE_CODE3 ("Ga", gaa, gaa) DEFINE_LANGUAGE_CODE ("Gaelic (Scots)", gd, gla, gla) -DEFINE_LANGUAGE_CODE ("Irish", ga, gle, gle) DEFINE_LANGUAGE_CODE ("Gallegan", gl, glg, glg) -DEFINE_LANGUAGE_CODE3 ("Ganda", lug, lug) -DEFINE_LANGUAGE_CODE ("Manx", gv, glv, glv) -DEFINE_LANGUAGE_CODE ("Greek, Modern ()", el, gre, ell) +DEFINE_LANGUAGE_CODE ("Ganda", lg, lug, lug) +DEFINE_LANGUAGE_CODE3 ("Gayo", gay, gay) +DEFINE_LANGUAGE_CODE3 ("Gbaya", gba, gba) +DEFINE_LANGUAGE_CODE3 ("Geez", gez, gez) +DEFINE_LANGUAGE_CODE ("Georgian", ka, kat, geo) +DEFINE_LANGUAGE_CODE ("German", de, deu, ger) +DEFINE_LANGUAGE_CODE3 ("German, Low; Saxon, Low", nds, nds) +DEFINE_LANGUAGE_CODE3 ("German, Middle High", gmh, gmh) +DEFINE_LANGUAGE_CODE3 ("German, Old High", goh, goh) +DEFINE_LANGUAGE_CODE3 ("Germanic (Other)", gem, gem) +DEFINE_LANGUAGE_CODE ("Gikuyu; Kikuyu", ki, kik, kik) +DEFINE_LANGUAGE_CODE3 ("Gilbertese", gil, gil) +DEFINE_LANGUAGE_CODE3 ("Gondi", gon, gon) +DEFINE_LANGUAGE_CODE3 ("Gorontalo", gor, gor) +DEFINE_LANGUAGE_CODE3 ("Gothic", got, got) +DEFINE_LANGUAGE_CODE3 ("Grebo", grb, grb) +DEFINE_LANGUAGE_CODE3 ("Greek, Ancient", grc, grc) +DEFINE_LANGUAGE_CODE ("Greek, Modern", el, gre, ell) DEFINE_LANGUAGE_CODE ("Guarani", gn, grn, grn) DEFINE_LANGUAGE_CODE ("Gujarati", gu, guj, guj) +DEFINE_LANGUAGE_CODE3 ("Gwich´in", gwi, gwi) +DEFINE_LANGUAGE_CODE3 ("Haida", hai, hai) +DEFINE_LANGUAGE_CODE ("Haitian; Haitian Creole", ht, hat, hat) +DEFINE_LANGUAGE_CODE ("Hausa", ha, hau, hau) +DEFINE_LANGUAGE_CODE3 ("Hawaiian", haw, haw) DEFINE_LANGUAGE_CODE ("Hebrew", he, heb, heb) DEFINE_LANGUAGE_CODE ("Herero", hz, her, her) +DEFINE_LANGUAGE_CODE3 ("Hiligaynon", hil, hil) +DEFINE_LANGUAGE_CODE3 ("Himachali", him, him) DEFINE_LANGUAGE_CODE ("Hindi", hi, hin, hin) DEFINE_LANGUAGE_CODE ("Hiri Motu", ho, hmo, hmo) +DEFINE_LANGUAGE_CODE3 ("Hittite", hit, hit) +DEFINE_LANGUAGE_CODE3 ("Hmong", hmn, hmn) DEFINE_LANGUAGE_CODE ("Hungarian", hu, hun, hun) +DEFINE_LANGUAGE_CODE3 ("Hupa", hup, hup) +DEFINE_LANGUAGE_CODE3 ("Iban", iba, iba) DEFINE_LANGUAGE_CODE ("Icelandic", is, isl, ice) -DEFINE_LANGUAGE_CODE ("Inuktitut", iu, iku, iku) -DEFINE_LANGUAGE_CODE ("Interlingue", ie, ile, ile) -DEFINE_LANGUAGE_CODE ("Interlingua", ia, ina, ina) +DEFINE_LANGUAGE_CODE ("Ido", io, ido, ido) +DEFINE_LANGUAGE_CODE ("Igbo", ig, ibo, ibo) +DEFINE_LANGUAGE_CODE3 ("Ijo", ijo, ijo) +DEFINE_LANGUAGE_CODE3 ("Iloko", ilo, ilo) +DEFINE_LANGUAGE_CODE3 ("Inari Sami", smn, smn) +DEFINE_LANGUAGE_CODE3 ("Indic (Other)", inc, inc) +DEFINE_LANGUAGE_CODE3 ("Indo-European (Other)", ine, ine) DEFINE_LANGUAGE_CODE ("Indonesian", id, ind, ind) +DEFINE_LANGUAGE_CODE3 ("Ingush", inh, inh) +DEFINE_LANGUAGE_CODE ("Interlingua", ia, ina, ina) +DEFINE_LANGUAGE_CODE ("Interlingue", ie, ile, ile) +DEFINE_LANGUAGE_CODE ("Inuktitut", iu, iku, iku) DEFINE_LANGUAGE_CODE ("Inupiaq", ik, ipk, ipk) +DEFINE_LANGUAGE_CODE3 ("Iranian (Other)", ira, ira) +DEFINE_LANGUAGE_CODE ("Irish", ga, gle, gle) +DEFINE_LANGUAGE_CODE3 ("Irish, Middle", mga, mga) +DEFINE_LANGUAGE_CODE3 ("Irish, Old", sga, sga) +DEFINE_LANGUAGE_CODE3 ("Iroquoian languages", iro, iro) DEFINE_LANGUAGE_CODE ("Italian", it, ita, ita) -DEFINE_LANGUAGE_CODE ("Javanese", jv, jaw, jav) DEFINE_LANGUAGE_CODE ("Japanese", ja, jpn, jpn) +DEFINE_LANGUAGE_CODE ("Javanese", jv, jaw, jav) +DEFINE_LANGUAGE_CODE3 ("Judeo-Arabic", jrb, jrb) +DEFINE_LANGUAGE_CODE3 ("Judeo-Persian", jpr, jpr) +DEFINE_LANGUAGE_CODE3 ("Kabardian", kbd, kbd) +DEFINE_LANGUAGE_CODE3 ("Kabyle", kab, kab) +DEFINE_LANGUAGE_CODE3 ("Kachin", kac, kac) DEFINE_LANGUAGE_CODE ("Kalaallisut (Greenlandic)", kl, kal, kal) +DEFINE_LANGUAGE_CODE3 ("Kamba", kam, kam) DEFINE_LANGUAGE_CODE ("Kannada", kn, kan, kan) +DEFINE_LANGUAGE_CODE ("Kanuri", kr, kau, kau) +DEFINE_LANGUAGE_CODE3 ("Karachay-Balkar", krc, krc) +DEFINE_LANGUAGE_CODE3 ("Kara-Kalpak", kaa, kaa) +DEFINE_LANGUAGE_CODE3 ("Karen", kar, kar) DEFINE_LANGUAGE_CODE ("Kashmiri", ks, kas, kas) +DEFINE_LANGUAGE_CODE3 ("Kashubian", csb, csb) +DEFINE_LANGUAGE_CODE3 ("Kawi", kaw, kaw) DEFINE_LANGUAGE_CODE ("Kazakh", kk, kaz, kaz) +DEFINE_LANGUAGE_CODE3 ("Khasi", kha, kha) DEFINE_LANGUAGE_CODE ("Khmer", km, khm, khm) +DEFINE_LANGUAGE_CODE3 ("Khoisan (Other)", khi, khi) +DEFINE_LANGUAGE_CODE3 ("Khotanese", kho, kho) DEFINE_LANGUAGE_CODE ("Kikuyu", ki, kik, kik) +DEFINE_LANGUAGE_CODE3 ("Kimbundu", kmb, kmb) DEFINE_LANGUAGE_CODE ("Kinyarwanda", rw, kin, kin) DEFINE_LANGUAGE_CODE ("Kirghiz", ky, kir, kir) DEFINE_LANGUAGE_CODE ("Komi", kv, kom, kom) +DEFINE_LANGUAGE_CODE ("Kongo", kg, kon, kon) +DEFINE_LANGUAGE_CODE3 ("Konkani", kok, kok) DEFINE_LANGUAGE_CODE ("Korean", ko, kor, kor) +DEFINE_LANGUAGE_CODE3 ("Kosraean", kos, kos) +DEFINE_LANGUAGE_CODE3 ("Kpelle", kpe, kpe) +DEFINE_LANGUAGE_CODE3 ("Kru", kro, kro) DEFINE_LANGUAGE_CODE ("Kuanyama", kj, kua, kua) +DEFINE_LANGUAGE_CODE3 ("Kumyk", kum, kum) DEFINE_LANGUAGE_CODE ("Kurdish", ku, kur, kur) +DEFINE_LANGUAGE_CODE3 ("Kurukh", kru, kru) +DEFINE_LANGUAGE_CODE3 ("Kutenai", kut, kut) +DEFINE_LANGUAGE_CODE3 ("Ladino", lad, lad) +DEFINE_LANGUAGE_CODE3 ("Lahnda", lah, lah) +DEFINE_LANGUAGE_CODE3 ("Lamba", lam, lam) DEFINE_LANGUAGE_CODE ("Lao", lo, lao, lao) DEFINE_LANGUAGE_CODE ("Latin", la, lat, lat) DEFINE_LANGUAGE_CODE ("Latvian", lv, lav, lav) +DEFINE_LANGUAGE_CODE ("Letzeburgesch", lb, ltz, ltz) +DEFINE_LANGUAGE_CODE3 ("Lezghian", lez, lez) +DEFINE_LANGUAGE_CODE ("Limburgan; Limburger; Limburgish", li, lim, lim) DEFINE_LANGUAGE_CODE ("Lingala", ln, lin, lin) DEFINE_LANGUAGE_CODE ("Lithuanian", lt, lit, lit) -DEFINE_LANGUAGE_CODE ("Letzeburgesch", lb, ltz, ltz) +DEFINE_LANGUAGE_CODE3 ("Lozi", loz, loz) +DEFINE_LANGUAGE_CODE ("Luba-Katanga", lu, lub, lub) +DEFINE_LANGUAGE_CODE3 ("Luba-Lulua", lua, lua) +DEFINE_LANGUAGE_CODE3 ("Luiseno", lui, lui) +DEFINE_LANGUAGE_CODE3 ("Lule Sami", smj, smj) +DEFINE_LANGUAGE_CODE3 ("Lunda", lun, lun) +DEFINE_LANGUAGE_CODE3 ("Luo (Kenya and Tanzania)", luo, luo) +DEFINE_LANGUAGE_CODE3 ("Lushai", lus, lus) DEFINE_LANGUAGE_CODE ("Macedonian", mk, mkd, mac) -DEFINE_LANGUAGE_CODE ("Marshall", mh, mah, mah) +DEFINE_LANGUAGE_CODE3 ("Madurese", mad, mad) +DEFINE_LANGUAGE_CODE3 ("Magahi", mag, mag) +DEFINE_LANGUAGE_CODE3 ("Maithili", mai, mai) +DEFINE_LANGUAGE_CODE3 ("Makasar", mak, mak) +DEFINE_LANGUAGE_CODE ("Malagasy", mg, mlg, mlg) +DEFINE_LANGUAGE_CODE ("Malay", ms, msa, may) DEFINE_LANGUAGE_CODE ("Malayalam", ml, mal, mal) +DEFINE_LANGUAGE_CODE ("Maltese", mt, mlt, mlt) +DEFINE_LANGUAGE_CODE3 ("Manchu", mnc, mnc) +DEFINE_LANGUAGE_CODE3 ("Mandar", mdr, mdr) +DEFINE_LANGUAGE_CODE3 ("Mandingo", man, man) +DEFINE_LANGUAGE_CODE3 ("Manipuri", mni, mni) +DEFINE_LANGUAGE_CODE3 ("Manobo languages", mno, mno) +DEFINE_LANGUAGE_CODE ("Manx", gv, glv, glv) DEFINE_LANGUAGE_CODE ("Maori", mi, mri, mao) DEFINE_LANGUAGE_CODE ("Marathi", mr, mar, mar) -DEFINE_LANGUAGE_CODE ("Malay", ms, msa, may) -DEFINE_LANGUAGE_CODE ("Malagasy", mg, mlg, mlg) -DEFINE_LANGUAGE_CODE ("Maltese", mt, mlt, mlt) +DEFINE_LANGUAGE_CODE3 ("Mari", chm, chm) +DEFINE_LANGUAGE_CODE ("Marshallese", mh, mah, mah) +DEFINE_LANGUAGE_CODE3 ("Marwari", mwr, mwr) +DEFINE_LANGUAGE_CODE3 ("Masai", mas, mas) +DEFINE_LANGUAGE_CODE3 ("Mayan languages", myn, myn) +DEFINE_LANGUAGE_CODE3 ("Mende", men, men) +DEFINE_LANGUAGE_CODE3 ("Micmac", mic, mic) +DEFINE_LANGUAGE_CODE3 ("Minangkabau", min, min) +DEFINE_LANGUAGE_CODE3 ("Miscellaneous languages", mis, mis) +DEFINE_LANGUAGE_CODE3 ("Mohawk", moh, moh) +DEFINE_LANGUAGE_CODE3 ("Moksha", mdf, mdf) DEFINE_LANGUAGE_CODE ("Moldavian", mo, mol, mol) +DEFINE_LANGUAGE_CODE3 ("Mon-Khmer (Other)", mkh, mkh) +DEFINE_LANGUAGE_CODE3 ("Mongo", lol, lol) DEFINE_LANGUAGE_CODE ("Mongolian", mn, mon, mon) +DEFINE_LANGUAGE_CODE3 ("Mossi", mos, mos) +DEFINE_LANGUAGE_CODE3 ("Munda languages", mun, mun) +DEFINE_LANGUAGE_CODE3 ("Nahuatl", nah, nah) DEFINE_LANGUAGE_CODE ("Nauru", na, nau, nau) DEFINE_LANGUAGE_CODE ("Navajo", nv, nav, nav) -DEFINE_LANGUAGE_CODE ("Ndebele, South", nr, nbl, nbl) DEFINE_LANGUAGE_CODE ("Ndebele, North", nd, nde, nde) +DEFINE_LANGUAGE_CODE ("Ndebele, South", nr, nbl, nbl) DEFINE_LANGUAGE_CODE ("Ndonga", ng, ndo, ndo) +DEFINE_LANGUAGE_CODE3 ("Neapolitan", nap, nap) DEFINE_LANGUAGE_CODE ("Nepali", ne, nep, nep) +DEFINE_LANGUAGE_CODE3 ("Newari", new, new) +DEFINE_LANGUAGE_CODE3 ("Nias", nia, nia) +DEFINE_LANGUAGE_CODE3 ("Niger-Kordofanian (Other)", nic, nic) +DEFINE_LANGUAGE_CODE3 ("Nilo-Saharan (Other)", ssa, ssa) +DEFINE_LANGUAGE_CODE3 ("Niuean", niu, niu) +DEFINE_LANGUAGE_CODE3 ("Nogai", nog, nog) +DEFINE_LANGUAGE_CODE3 ("Norse, Old", non, non) +DEFINE_LANGUAGE_CODE3 ("North American Indian (Other)", nai, nai) +DEFINE_LANGUAGE_CODE ("Northern Sami", se, sme, sme) DEFINE_LANGUAGE_CODE ("Norwegian", no, nor, nor) -DEFINE_LANGUAGE_CODE ("Norwegian Nynorsk", nn, nno, nno) DEFINE_LANGUAGE_CODE ("Norwegian Bokmål", nb, nob, nob) -DEFINE_LANGUAGE_CODE ("Chichewa; Nyanja", ny, nya, nya) -DEFINE_LANGUAGE_CODE ("Occitan (post 1500); Provençal", oc, oci, oci) +DEFINE_LANGUAGE_CODE ("Norwegian Nynorsk", nn, nno, nno) +DEFINE_LANGUAGE_CODE3 ("Nubian languages", nub, nub) +DEFINE_LANGUAGE_CODE3 ("Nyamwezi", nym, nym) +DEFINE_LANGUAGE_CODE3 ("Nyankole", nyn, nyn) +DEFINE_LANGUAGE_CODE3 ("Nyoro", nyo, nyo) +DEFINE_LANGUAGE_CODE3 ("Nzima", nzi, nzi) +DEFINE_LANGUAGE_CODE ("Ojibwa", oj, oji, oji) DEFINE_LANGUAGE_CODE ("Oriya", or, ori, ori) DEFINE_LANGUAGE_CODE ("Oromo", om, orm, orm) +DEFINE_LANGUAGE_CODE3 ("Osage", osa, osa) DEFINE_LANGUAGE_CODE ("Ossetian; Ossetic", os, oss, oss) +DEFINE_LANGUAGE_CODE3 ("Otomian languages", oto, oto) +DEFINE_LANGUAGE_CODE3 ("Pahlavi", pal, pal) +DEFINE_LANGUAGE_CODE3 ("Palauan", pau, pau) +DEFINE_LANGUAGE_CODE ("Pali", pi, pli, pli) +DEFINE_LANGUAGE_CODE3 ("Pampanga", pam, pam) +DEFINE_LANGUAGE_CODE3 ("Pangasinan", pag, pag) DEFINE_LANGUAGE_CODE ("Panjabi", pa, pan, pan) +DEFINE_LANGUAGE_CODE3 ("Papiamento", pap, pap) +DEFINE_LANGUAGE_CODE3 ("Papuan (Other)", paa, paa) DEFINE_LANGUAGE_CODE ("Persian", fa, fas, per) -DEFINE_LANGUAGE_CODE ("Pali", pi, pli, pli) +DEFINE_LANGUAGE_CODE3 ("Persian, Old (ca.600-400 B.C.E.)", peo, peo) +DEFINE_LANGUAGE_CODE3 ("Philippine (Other)", phi, phi) +DEFINE_LANGUAGE_CODE3 ("Phoenician", phn, phn) +DEFINE_LANGUAGE_CODE3 ("Pohnpeian", pon, pon) DEFINE_LANGUAGE_CODE ("Polish", pl, pol, pol) DEFINE_LANGUAGE_CODE ("Portuguese", pt, por, por) +DEFINE_LANGUAGE_CODE3 ("Prakrit", pra, pra) +DEFINE_LANGUAGE_CODE ("Provençal; Occitan (post 1500)", oc, oci, oci) +DEFINE_LANGUAGE_CODE3 ("Provençal, Old (to 1500)", pro, pro) DEFINE_LANGUAGE_CODE ("Pushto", ps, pus, pus) DEFINE_LANGUAGE_CODE ("Quechua", qu, que, que) DEFINE_LANGUAGE_CODE ("Raeto-Romance", rm, roh, roh) +DEFINE_LANGUAGE_CODE3 ("Rajasthani", raj, raj) +DEFINE_LANGUAGE_CODE3 ("Rapanui", rap, rap) +DEFINE_LANGUAGE_CODE3 ("Rarotongan", rar, rar) +DEFINE_LANGUAGE_CODE3 ("Romance (Other)", roa, roa) DEFINE_LANGUAGE_CODE ("Romanian", ro, ron, rum) +DEFINE_LANGUAGE_CODE3 ("Romany", rom, rom) DEFINE_LANGUAGE_CODE ("Rundi", rn, run, run) DEFINE_LANGUAGE_CODE ("Russian", ru, rus, rus) +DEFINE_LANGUAGE_CODE3 ("Salishan languages", sal, sal) +DEFINE_LANGUAGE_CODE3 ("Samaritan Aramaic", sam, sam) +DEFINE_LANGUAGE_CODE3 ("Sami languages (Other)", smi, smi) +DEFINE_LANGUAGE_CODE ("Samoan", sm, smo, smo) +DEFINE_LANGUAGE_CODE3 ("Sandawe", sad, sad) DEFINE_LANGUAGE_CODE ("Sango", sg, sag, sag) DEFINE_LANGUAGE_CODE ("Sanskrit", sa, san, san) +DEFINE_LANGUAGE_CODE3 ("Santali", sat, sat) +DEFINE_LANGUAGE_CODE ("Sardinian", sc, srd, srd) +DEFINE_LANGUAGE_CODE3 ("Sasak", sas, sas) +DEFINE_LANGUAGE_CODE3 ("Scots", sco, sco) +DEFINE_LANGUAGE_CODE3 ("Selkup", sel, sel) +DEFINE_LANGUAGE_CODE3 ("Semitic (Other)", sem, sem) DEFINE_LANGUAGE_CODE ("Serbian", sr, srp, scc) -DEFINE_LANGUAGE_CODE ("Croatian", hr, hrv, scr) +DEFINE_LANGUAGE_CODE3 ("Serer", srr, srr) +DEFINE_LANGUAGE_CODE3 ("Shan", shn, shn) +DEFINE_LANGUAGE_CODE ("Shona", sn, sna, sna) +DEFINE_LANGUAGE_CODE ("Sichuan Yi", ii, iii, iii) +DEFINE_LANGUAGE_CODE3 ("Sidamo", sid, sid) +DEFINE_LANGUAGE_CODE3 ("Siksika", bla, bla) +DEFINE_LANGUAGE_CODE ("Sindhi", sd, snd, snd) DEFINE_LANGUAGE_CODE ("Sinhalese", si, sin, sin) +DEFINE_LANGUAGE_CODE3 ("Sino-Tibetan (Other)", sit, sit) +DEFINE_LANGUAGE_CODE3 ("Siouan languages", sio, sio) +DEFINE_LANGUAGE_CODE3 ("Skolt Sami", sms, sms) +DEFINE_LANGUAGE_CODE3 ("Slave (Athapascan)", den, den) +DEFINE_LANGUAGE_CODE3 ("Slavic (Other)", sla, sla) DEFINE_LANGUAGE_CODE ("Slovak", sk, slk, slo) DEFINE_LANGUAGE_CODE ("Slovenian", sl, slv, slv) -DEFINE_LANGUAGE_CODE ("Northern Sami", se, sme, sme) -DEFINE_LANGUAGE_CODE ("Samoan", sm, smo, smo) -DEFINE_LANGUAGE_CODE ("Shona", sn, sna, sna) -DEFINE_LANGUAGE_CODE ("Sindhi", sd, snd, snd) +DEFINE_LANGUAGE_CODE3 ("Sogdian", sog, sog) DEFINE_LANGUAGE_CODE ("Somali", so, som, som) +DEFINE_LANGUAGE_CODE3 ("Songhai", son, son) +DEFINE_LANGUAGE_CODE3 ("Soninke", snk, snk) +DEFINE_LANGUAGE_CODE3 ("Sorbian languages", wen, wen) DEFINE_LANGUAGE_CODE3 ("Sotho, Northern", nso, nso) DEFINE_LANGUAGE_CODE ("Sotho, Southern", st, sot, sot) +DEFINE_LANGUAGE_CODE3 ("South American Indian (Other)", sai, sai) +DEFINE_LANGUAGE_CODE3 ("Southern Sami", sma, sma) DEFINE_LANGUAGE_CODE ("Spanish", es, spa, spa) -DEFINE_LANGUAGE_CODE ("Sardinian", sc, srd, srd) -DEFINE_LANGUAGE_CODE ("Swati", ss, ssw, ssw) +DEFINE_LANGUAGE_CODE3 ("Sukuma", suk, suk) +DEFINE_LANGUAGE_CODE3 ("Sumerian", sux, sux) DEFINE_LANGUAGE_CODE ("Sundanese", su, sun, sun) +DEFINE_LANGUAGE_CODE3 ("Susu", sus, sus) DEFINE_LANGUAGE_CODE ("Swahili", sw, swa, swa) +DEFINE_LANGUAGE_CODE ("Swati", ss, ssw, ssw) DEFINE_LANGUAGE_CODE ("Swedish", sv, swe, swe) +DEFINE_LANGUAGE_CODE3 ("Syriac", syr, syr) +DEFINE_LANGUAGE_CODE ("Tagalog", tl, tgl, tgl) DEFINE_LANGUAGE_CODE ("Tahitian", ty, tah, tah) +DEFINE_LANGUAGE_CODE3 ("Tai (Other)", tai, tai) +DEFINE_LANGUAGE_CODE ("Tajik", tg, tgk, tgk) +DEFINE_LANGUAGE_CODE3 ("Tamashek", tmh, tmh) DEFINE_LANGUAGE_CODE ("Tamil", ta, tam, tam) DEFINE_LANGUAGE_CODE ("Tatar", tt, tat, tat) DEFINE_LANGUAGE_CODE ("Telugu", te, tel, tel) -DEFINE_LANGUAGE_CODE ("Tajik", tg, tgk, tgk) -DEFINE_LANGUAGE_CODE ("Tagalog", tl, tgl, tgl) +DEFINE_LANGUAGE_CODE3 ("Tereno", ter, ter) +DEFINE_LANGUAGE_CODE3 ("Tetum", tet, tet) DEFINE_LANGUAGE_CODE ("Thai", th, tha, tha) DEFINE_LANGUAGE_CODE ("Tibetan", bo, bod, tib) +DEFINE_LANGUAGE_CODE3 ("Tigre", tig, tig) DEFINE_LANGUAGE_CODE ("Tigrinya", ti, tir, tir) +DEFINE_LANGUAGE_CODE3 ("Timne", tem, tem) +DEFINE_LANGUAGE_CODE3 ("Tiv", tiv, tiv) +DEFINE_LANGUAGE_CODE3 ("Tlingit", tli, tli) +DEFINE_LANGUAGE_CODE3 ("Tok Pisin", tpi, tpi) +DEFINE_LANGUAGE_CODE3 ("Tokelau", tkl, tkl) +DEFINE_LANGUAGE_CODE3 ("Tonga (Nyasa)", tog, tog) DEFINE_LANGUAGE_CODE ("Tonga (Tonga Islands)", to, ton, ton) -DEFINE_LANGUAGE_CODE ("Tswana", tn, tsn, tsn) +DEFINE_LANGUAGE_CODE3 ("Tsimshian", tsi, tsi) DEFINE_LANGUAGE_CODE ("Tsonga", ts, tso, tso) +DEFINE_LANGUAGE_CODE ("Tswana", tn, tsn, tsn) +DEFINE_LANGUAGE_CODE3 ("Tumbuka", tum, tum) +DEFINE_LANGUAGE_CODE3 ("Tupi languages", tup, tup) DEFINE_LANGUAGE_CODE ("Turkish", tr, tur, tur) +DEFINE_LANGUAGE_CODE3 ("Turkish, Ottoman (1500-1928)", ota, ota) DEFINE_LANGUAGE_CODE ("Turkmen", tk, tuk, tuk) +DEFINE_LANGUAGE_CODE3 ("Tuvalu", tvl, tvl) +DEFINE_LANGUAGE_CODE3 ("Tuvinian", tyv, tyv) DEFINE_LANGUAGE_CODE ("Twi", tw, twi, twi) +DEFINE_LANGUAGE_CODE3 ("Udmurt", udm, udm) +DEFINE_LANGUAGE_CODE3 ("Ugaritic", uga, uga) DEFINE_LANGUAGE_CODE ("Uighur", ug, uig, uig) DEFINE_LANGUAGE_CODE ("Ukrainian", uk, ukr, ukr) +DEFINE_LANGUAGE_CODE3 ("Umbundu", umb, umb) DEFINE_LANGUAGE_CODE ("Urdu", ur, urd, urd) DEFINE_LANGUAGE_CODE ("Uzbek", uz, uzb, uzb) +DEFINE_LANGUAGE_CODE3 ("Vai", vai, vai) DEFINE_LANGUAGE_CODE3 ("Venda", ven, ven) DEFINE_LANGUAGE_CODE ("Vietnamese", vi, vie, vie) DEFINE_LANGUAGE_CODE ("Volapük", vo, vol, vol) +DEFINE_LANGUAGE_CODE3 ("Votic", vot, vot) +DEFINE_LANGUAGE_CODE3 ("Wakashan languages", wak, wak) +DEFINE_LANGUAGE_CODE3 ("Walamo", wal, wal) DEFINE_LANGUAGE_CODE ("Walloon", wa, wln, wln) +DEFINE_LANGUAGE_CODE3 ("Waray", war, war) +DEFINE_LANGUAGE_CODE3 ("Washo", was, was) DEFINE_LANGUAGE_CODE ("Welsh", cy, cym, wel) DEFINE_LANGUAGE_CODE ("Wolof", wo, wol, wol) DEFINE_LANGUAGE_CODE ("Xhosa", xh, xho, xho) +DEFINE_LANGUAGE_CODE3 ("Yakut", sah, sah) +DEFINE_LANGUAGE_CODE3 ("Yao", yao, yao) +DEFINE_LANGUAGE_CODE3 ("Yapese", yap, yap) DEFINE_LANGUAGE_CODE ("Yiddish", yi, yid, yid) DEFINE_LANGUAGE_CODE ("Yoruba", yo, yor, yor) +DEFINE_LANGUAGE_CODE3 ("Yupik languages", ypk, ypk) +DEFINE_LANGUAGE_CODE3 ("Zande", znd, znd) +DEFINE_LANGUAGE_CODE3 ("Zapotec", zap, zap) +DEFINE_LANGUAGE_CODE3 ("Zenaga", zen, zen) DEFINE_LANGUAGE_CODE ("Zhuang", za, zha, zha) DEFINE_LANGUAGE_CODE ("Zulu", zu, zul, zul) +DEFINE_LANGUAGE_CODE3 ("Zuni", zun, zun) --- glibc-2.3.2/locale/loadarchive.c 2002-11-05 14:11:23.000000000 -0500 +++ glibc-2.3.2/locale/loadarchive.c 2003-09-19 22:37:04.000000000 -0400 @@ -1,5 +1,5 @@ /* Code to load locale data from the locale archive file. - Copyright (C) 2002 Free Software Foundation, Inc. + Copyright (C) 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -32,6 +32,7 @@ #include "localeinfo.h" #include "locarchive.h" +#include /* Define the hash function. We define the function as static inline. */ #define compute_hashval static inline compute_hashval @@ -202,7 +203,7 @@ archmapped = &headmap; /* The archive has never been opened. */ - fd = __open64 (archfname, O_RDONLY); + fd = open_not_cancel_2 (archfname, O_RDONLY|O_LARGEFILE); if (fd < 0) /* Cannot open the archive, for whatever reason. */ return NULL; @@ -212,7 +213,7 @@ /* stat failed, very strange. */ close_and_out: if (fd >= 0) - __close (fd); + close_not_cancel_no_status (fd); return NULL; } @@ -252,7 +253,7 @@ { /* We've mapped the whole file already, so we can be sure we won't need this file descriptor later. */ - __close (fd); + close_not_cancel_no_status (fd); fd = -1; } @@ -393,7 +394,7 @@ if (fd == -1) { struct stat64 st; - fd = __open64 (archfname, O_RDONLY); + fd = open_not_cancel_2 (archfname, O_RDONLY|O_LARGEFILE); if (fd == -1) /* Cannot open the archive, for whatever reason. */ return NULL; @@ -446,7 +447,7 @@ /* We don't need the file descriptor any longer. */ if (fd >= 0) - __close (fd); + close_not_cancel_no_status (fd); fd = -1; /* We succeeded in mapping all the necessary regions of the archive. --- glibc-2.3.2/locale/loadlocale.c 2002-08-28 20:40:34.000000000 -0400 +++ glibc-2.3.2/locale/loadlocale.c 2003-09-19 22:37:04.000000000 -0400 @@ -1,5 +1,5 @@ /* Functions to read locale data files. - Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc. + Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1996. @@ -30,6 +30,7 @@ #endif #include +#include #include "localeinfo.h" @@ -142,7 +143,7 @@ file->decided = 1; file->data = NULL; - fd = __open (file->filename, O_RDONLY); + fd = open_not_cancel_2 (file->filename, O_RDONLY); if (__builtin_expect (fd, 0) < 0) /* Cannot open the file. */ return; @@ -150,7 +151,7 @@ if (__builtin_expect (__fxstat64 (_STAT_VER, fd, &st), 0) < 0) { puntfd: - __close (fd); + close_not_cancel_no_status (fd); return; } if (__builtin_expect (S_ISDIR (st.st_mode), 0)) @@ -160,7 +161,7 @@ char *newp; size_t filenamelen; - __close (fd); + close_not_cancel_no_status (fd); filenamelen = strlen (file->filename); newp = (char *) alloca (filenamelen @@ -170,7 +171,7 @@ _nl_category_names[category], _nl_category_name_sizes[category] + 1); - fd = __open (newp, O_RDONLY); + fd = open_not_cancel_2 (newp, O_RDONLY); if (__builtin_expect (fd, 0) < 0) return; @@ -206,7 +207,7 @@ char *p = (char *) filedata; while (to_read > 0) { - nread = __read (fd, p, to_read); + nread = read_not_cancel (fd, p, to_read); if (__builtin_expect (nread, 1) <= 0) { free (filedata); @@ -225,7 +226,7 @@ #endif /* _POSIX_MAPPED_FILES */ /* We have mapped the data, so we no longer need the descriptor. */ - __close (fd); + close_not_cancel_no_status (fd); if (__builtin_expect (filedata == NULL, 0)) /* We failed to map or read the data. */ --- glibc-2.3.2/locale/programs/3level.h 2001-08-07 14:51:49.000000000 -0400 +++ glibc-2.3.2/locale/programs/3level.h 2003-08-21 08:37:05.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 2000-2001 Free Software Foundation, Inc. +/* Copyright (C) 2000-2001, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Bruno Haible , 2000. @@ -80,6 +80,7 @@ /* Retrieve an entry. */ static inline ELEMENT +__attribute ((always_inline)) CONCAT(TABLE,_get) (struct TABLE *t, uint32_t wc) { uint32_t index1 = wc >> (t->q + t->p); --- glibc-2.3.2/locale/programs/ld-collate.c 2002-05-01 12:44:51.000000000 -0400 +++ glibc-2.3.2/locale/programs/ld-collate.c 2003-08-21 08:37:05.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1995. @@ -42,6 +42,7 @@ #define obstack_chunk_free free static inline void +__attribute ((always_inline)) obstack_int32_grow (struct obstack *obstack, int32_t data) { if (sizeof (int32_t) == sizeof (int)) @@ -51,6 +52,7 @@ } static inline void +__attribute ((always_inline)) obstack_int32_grow_fast (struct obstack *obstack, int32_t data) { if (sizeof (int32_t) == sizeof (int)) @@ -249,6 +251,7 @@ /* We need UTF-8 encoding of numbers. */ static inline int +__attribute ((always_inline)) utf8_encode (char *buf, int val) { int retval; @@ -606,10 +609,10 @@ find_element (struct linereader *ldfile, struct locale_collate_t *collate, const char *str, size_t len) { - struct element_t *result = NULL; + void *result = NULL; /* Search for the entries among the collation sequences already define. */ - if (find_entry (&collate->seq_table, str, len, (void **) &result) != 0) + if (find_entry (&collate->seq_table, str, len, &result) != 0) { /* Nope, not define yet. So we see whether it is a collation symbol. */ @@ -625,8 +628,7 @@ result = sym->order = new_element (collate, NULL, 0, NULL, NULL, 0, 0); } - else if (find_entry (&collate->elem_table, str, len, - (void **) &result) != 0) + else if (find_entry (&collate->elem_table, str, len, &result) != 0) { /* It's also no collation element. So it is a character element defined later. */ @@ -636,7 +638,7 @@ } } - return result; + return (struct element_t *) result; } @@ -944,8 +946,8 @@ { /* It's no character, so look through the collation elements and symbol list. */ - if (find_entry (&collate->elem_table, symstr, symlen, - (void **) &elem) != 0) + void *ptr = elem; + if (find_entry (&collate->elem_table, symstr, symlen, &ptr) != 0) { void *result; struct symbol_t *sym = NULL; @@ -976,12 +978,15 @@ insert_entry (&collate->seq_table, symstr, symlen, elem); } } + else + /* Copy the result back. */ + elem = ptr; } else { /* Otherwise the symbols stands for a character. */ - if (find_entry (&collate->seq_table, symstr, symlen, - (void **) &elem) != 0) + void *ptr = elem; + if (find_entry (&collate->seq_table, symstr, symlen, &ptr) != 0) { uint32_t wcs[2] = { wc, 0 }; @@ -998,6 +1003,9 @@ } else { + /* Copy the result back. */ + elem = ptr; + /* Maybe the character was used before the definition. In this case we have to insert the byte sequences now. */ if (elem->mbs == NULL && seq != NULL) @@ -1169,8 +1177,9 @@ /* Now we are ready to insert the new value in the sequence. Find out whether the element is already known. */ + void *ptr; if (find_entry (&collate->seq_table, seq->name, namelen, - (void **) &elem) != 0) + &ptr) != 0) { uint32_t wcs[2] = { seq->ucs4, 0 }; @@ -1186,6 +1195,9 @@ /* This cannot happen. */ assert (! "Internal error"); } + else + /* Copy the result. */ + elem = ptr; /* Test whether this element is not already in the list. */ if (elem->next != NULL || (collate->cursor != NULL @@ -1324,9 +1336,12 @@ sprintf (buf + preflen, base == 10 ? "%ld" : "%lX", from); /* Look whether this name is already defined. */ - if (find_entry (&collate->seq_table, buf, symlen, - (void **) &elem) == 0) + void *ptr; + if (find_entry (&collate->seq_table, buf, symlen, &ptr) == 0) { + /* Copy back the result. */ + elem = ptr; + if (elem->next != NULL || (collate->cursor != NULL && elem->next == collate->cursor)) { @@ -3009,7 +3024,7 @@ size_t newname_len = arg->val.str.lenmb; const char *symname; size_t symname_len; - struct symbol_t *symval; + void *symval; /* Actually struct symbol_t* */ arg = lr_token (ldfile, charmap, result, repertoire, verbose); if (arg->tok != tok_bsymbol) @@ -3045,7 +3060,7 @@ /* See whether the symbol name is already defined. */ if (find_entry (&collate->sym_table, symname, symname_len, - (void **) &symval) != 0) + &symval) != 0) { lr_error (ldfile, _("\ %s: unknown symbol `%s' in equivalent definition"), @@ -3294,6 +3309,7 @@ size_t lenmb; struct element_t *insp; int no_error = 1; + void *ptr; if (arg->tok == tok_bsymbol) { @@ -3307,18 +3323,20 @@ lenmb = 9; } - if (find_entry (&collate->seq_table, startmb, lenmb, - (void **) &insp) == 0) + if (find_entry (&collate->seq_table, startmb, lenmb, &ptr) == 0) /* Yes, the symbol exists. Simply point the cursor to it. */ - collate->cursor = insp; + collate->cursor = (struct element_t *) ptr; else { struct symbol_t *symbp; + void *ptr; if (find_entry (&collate->sym_table, startmb, lenmb, - (void **) &symbp) == 0) + &ptr) == 0) { + symbp = ptr; + if (symbp->order->last != NULL || symbp->order->next != NULL) collate->cursor = symbp->order; @@ -3334,8 +3352,10 @@ } } else if (find_entry (&collate->elem_table, startmb, lenmb, - (void **) &insp) == 0) + &ptr) == 0) { + insp = (struct element_t *) ptr; + if (insp->last != NULL || insp->next != NULL) collate->cursor = insp; else @@ -3517,10 +3537,12 @@ collation symbols since these are purely abstract values and don't need directions associated. */ struct element_t *seqp; + void *ptr; - if (find_entry (&collate->seq_table, symstr, symlen, - (void **) &seqp) == 0) + if (find_entry (&collate->seq_table, symstr, symlen, &ptr) == 0) { + seqp = ptr; + /* It's already defined. First check whether this is really a collating symbol. */ if (seqp->is_character) @@ -3561,8 +3583,9 @@ { /* It is possible that we already have this collation sequence. In this case we move the entry. */ - struct element_t *seqp; + struct element_t *seqp = NULL; void *sym; + void *ptr; /* If the symbol after which we have to insert was not found ignore all entries. */ @@ -3572,17 +3595,19 @@ break; } - if (find_entry (&collate->seq_table, symstr, symlen, - (void **) &seqp) == 0) - goto move_entry; + if (find_entry (&collate->seq_table, symstr, symlen, &ptr) == 0) + { + seqp = (struct element_t *) ptr; + goto move_entry; + } if (find_entry (&collate->sym_table, symstr, symlen, &sym) == 0 && (seqp = ((struct symbol_t *) sym)->order) != NULL) goto move_entry; - if (find_entry (&collate->elem_table, symstr, symlen, - (void **) &seqp) == 0 - && (seqp->last != NULL || seqp->next != NULL + if (find_entry (&collate->elem_table, symstr, symlen, &ptr) == 0 + && (seqp = (struct element_t *) ptr, + seqp->last != NULL || seqp->next != NULL || (collate->start != NULL && seqp == collate->start))) { move_entry: --- glibc-2.3.2/locale/programs/ld-time.c 2002-04-16 20:45:08.000000000 -0400 +++ glibc-2.3.2/locale/programs/ld-time.c 2003-08-21 08:37:05.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1995. @@ -170,7 +170,7 @@ if (!time->cat##_defined) \ { \ const char *initval[] = { noparen val }; \ - int i; \ + unsigned int i; \ \ if (! be_quiet && ! nothing) \ WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' not defined"), \ @@ -670,7 +670,7 @@ idx[1 + last_idx] = idx[last_idx]; for (num = 0; num < time->num_era; ++num) { - size_t l; + size_t l, l2; iov[2 + cnt].iov_base = (void *) &time->era_entries[num].direction; iov[2 + cnt].iov_len = sizeof (int32_t); @@ -697,14 +697,16 @@ iov[2 + cnt].iov_len = sizeof (int32_t); ++cnt; - l = (strchr (time->era_entries[num].format, '\0') + l = ((char *) rawmemchr (time->era_entries[num].format, '\0') - time->era_entries[num].name) + 1; - l = (l + 3) & ~3; - iov[2 + cnt].iov_base = (void *) time->era_entries[num].name; - iov[2 + cnt].iov_len = l; + l2 = (l + 3) & ~3; + iov[2 + cnt].iov_base = alloca (l2); + memset (mempcpy (iov[2 + cnt].iov_base, time->era_entries[num].name, l), + '\0', l2 - l); + iov[2 + cnt].iov_len = l2; ++cnt; - idx[1 + last_idx] += 8 * sizeof (int32_t) + l; + idx[1 + last_idx] += 8 * sizeof (int32_t) + l2; assert (idx[1 + last_idx] % 4 == 0); --- glibc-2.3.2/locale/programs/linereader.c 2002-10-17 13:45:12.000000000 -0400 +++ glibc-2.3.2/locale/programs/linereader.c 2003-08-21 08:37:05.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1996. @@ -111,6 +111,35 @@ void +lr_ignore_rest (struct linereader *lr, int verbose) +{ + if (verbose) + { + while (isspace (lr->buf[lr->idx]) && lr->buf[lr->idx] != '\n' + && lr->buf[lr->idx] != lr->comment_char) + if (lr->buf[lr->idx] == '\0') + { + if (lr_next (lr) < 0) + return; + } + else + ++lr->idx; + + if (lr->buf[lr->idx] != '\n' && ! feof (lr->fp) + && lr->buf[lr->idx] != lr->comment_char) + lr_error (lr, _("trailing garbage at end of line")); + } + + /* Ignore continued line. */ + while (lr->bufact > 0 && lr->buf[lr->bufact - 1] != '\n') + if (lr_next (lr) < 0) + break; + + lr->idx = lr->bufact; +} + + +void lr_close (struct linereader *lr) { fclose (lr->fp); --- glibc-2.3.2/locale/programs/linereader.h 2002-02-05 18:20:05.000000000 -0500 +++ glibc-2.3.2/locale/programs/linereader.h 2003-08-21 08:37:05.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper, . @@ -95,6 +95,7 @@ struct localedef_t *locale, const struct repertoire_t *repertoire, int verbose); +extern void lr_ignore_rest (struct linereader *lr, int verbose); #define lr_error(lr, fmt, args...) \ @@ -103,6 +104,7 @@ static inline int +__attribute ((always_inline)) lr_getc (struct linereader *lr) { if (lr->idx == lr->bufact) @@ -120,6 +122,7 @@ static inline int +__attribute ((always_inline)) lr_ungetc (struct linereader *lr, int ch) { if (lr->idx == 0) @@ -142,33 +145,4 @@ } -static inline void -lr_ignore_rest (struct linereader *lr, int verbose) -{ - if (verbose) - { - while (isspace (lr->buf[lr->idx]) && lr->buf[lr->idx] != '\n' - && lr->buf[lr->idx] != lr->comment_char) - if (lr->buf[lr->idx] == '\0') - { - if (lr_next (lr) < 0) - return; - } - else - ++lr->idx; - - if (lr->buf[lr->idx] != '\n' && ! feof (lr->fp) - && lr->buf[lr->idx] != lr->comment_char) - lr_error (lr, _("trailing garbage at end of line")); - } - - /* Ignore continued line. */ - while (lr->bufact > 0 && lr->buf[lr->bufact - 1] != '\n') - if (lr_next (lr) < 0) - break; - - lr->idx = lr->bufact; -} - - #endif /* linereader.h */ --- glibc-2.3.2/locale/programs/locale.c 2003-01-02 15:02:12.000000000 -0500 +++ glibc-2.3.2/locale/programs/locale.c 2003-05-24 14:06:21.000000000 -0400 @@ -191,8 +191,10 @@ /* Set locale. Do not set LC_ALL because the other categories must not be affected (according to POSIX.2). */ - setlocale (LC_CTYPE, ""); - setlocale (LC_MESSAGES, ""); + if (setlocale (LC_CTYPE, "") == NULL) + error (0, errno, gettext ("Cannot set LC_CTYPE to default locale")); + if (setlocale (LC_MESSAGES, "") == NULL) + error (0, errno, gettext ("Cannot set LC_MESSAGES to default locale")); /* Initialize the message catalog. */ textdomain (PACKAGE); @@ -203,7 +205,9 @@ /* `-a' requests the names of all available locales. */ if (do_all != 0) { - setlocale (LC_COLLATE, ""); + if (setlocale (LC_COLLATE, "") == NULL) + error (0, errno, + gettext ("Cannot set LC_COLLATE to default locale")); write_locales (); exit (EXIT_SUCCESS); } @@ -218,7 +222,8 @@ /* Specific information about the current locale are requested. Change to this locale now. */ - setlocale (LC_ALL, ""); + if (setlocale (LC_ALL, "") == NULL) + error (0, errno, gettext ("Cannot set LC_ALL to default locale")); /* If no real argument is given we have to print the contents of the current locale definition variables. These are LANG and the LC_*. */ @@ -864,7 +869,7 @@ printf ("%s=", item->name); if (val != NULL) - printf ("%d", *val == CHAR_MAX ? -1 : *val); + printf ("%d", *val == '\177' ? -1 : *val); putchar ('\n'); } break; @@ -878,12 +883,12 @@ while (cnt > 1) { - printf ("%d;", *val == CHAR_MAX ? -1 : *val); + printf ("%d;", *val == '\177' ? -1 : *val); --cnt; ++val; } - printf ("%d\n", cnt == 0 || *val == CHAR_MAX ? -1 : *val); + printf ("%d\n", cnt == 0 || *val == '\177' ? -1 : *val); } break; case word: --- glibc-2.3.2/locale/programs/locarchive.c 2002-10-23 02:21:17.000000000 -0400 +++ glibc-2.3.2/locale/programs/locarchive.c 2003-03-18 16:46:07.000000000 -0500 @@ -1,4 +1,4 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2002. @@ -1402,8 +1402,7 @@ struct locarhead *head; struct namehashent *namehashtab; struct nameent *names; - int cnt; - int used; + size_t cnt, used; /* Open the archive. This call never returns if we cannot successfully open the archive. */ --- glibc-2.3.2/locale/programs/locfile.c 2003-01-13 03:55:06.000000000 -0500 +++ glibc-2.3.2/locale/programs/locfile.c 2003-08-21 08:37:05.000000000 -0400 @@ -764,3 +764,63 @@ free (fname); } + + +/* General handling of `copy'. */ +void +handle_copy (struct linereader *ldfile, const struct charmap_t *charmap, + const char *repertoire_name, struct localedef_t *result, + enum token_t token, int locale, const char *locale_name, + int ignore_content) +{ + struct token *now; + int warned = 0; + + now = lr_token (ldfile, charmap, result, NULL, verbose); + if (now->tok != tok_string) + lr_error (ldfile, _("expect string argument for `copy'")); + else if (!ignore_content) + { + if (now->val.str.startmb == NULL) + lr_error (ldfile, _("\ +locale name should consist only of portable characters")); + else + { + (void) add_to_readlist (locale, now->val.str.startmb, + repertoire_name, 1, NULL); + result->copy_name[locale] = now->val.str.startmb; + } + } + + lr_ignore_rest (ldfile, now->tok == tok_string); + + /* The rest of the line must be empty and the next keyword must be + `END xxx'. */ + while ((now = lr_token (ldfile, charmap, result, NULL, verbose))->tok + != tok_end && now->tok != tok_eof) + { + if (warned == 0) + { + lr_error (ldfile, _("\ +no other keyword shall be specified when `copy' is used")); + warned = 1; + } + + lr_ignore_rest (ldfile, 0); + } + + if (now->tok != tok_eof) + { + /* Handle `END xxx'. */ + now = lr_token (ldfile, charmap, result, NULL, verbose); + + if (now->tok != token) + lr_error (ldfile, _("\ +`%1$s' definition does not end with `END %1$s'"), locale_name); + + lr_ignore_rest (ldfile, now->tok == token); + } + else + /* When we come here we reached the end of the file. */ + lr_error (ldfile, _("%s: premature end of file"), locale_name); +} --- glibc-2.3.2/locale/programs/locfile.h 2002-04-17 01:11:34.000000000 -0400 +++ glibc-2.3.2/locale/programs/locfile.h 2003-08-21 08:37:05.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1996. @@ -45,64 +45,12 @@ /* General handling of `copy'. */ -static inline void -handle_copy (struct linereader *ldfile, const struct charmap_t *charmap, - const char *repertoire_name, struct localedef_t *result, - enum token_t token, int locale, const char *locale_name, - int ignore_content) -{ - struct token *now; - int warned = 0; - - now = lr_token (ldfile, charmap, result, NULL, verbose); - if (now->tok != tok_string) - lr_error (ldfile, _("expect string argument for `copy'")); - else if (!ignore_content) - { - if (now->val.str.startmb == NULL) - lr_error (ldfile, _("\ -locale name should consist only of portable characters")); - else - { - (void) add_to_readlist (locale, now->val.str.startmb, - repertoire_name, 1, NULL); - result->copy_name[locale] = now->val.str.startmb; - } - } - - lr_ignore_rest (ldfile, now->tok == tok_string); - - /* The rest of the line must be empty and the next keyword must be - `END xxx'. */ - while ((now = lr_token (ldfile, charmap, result, NULL, verbose))->tok - != tok_end && now->tok != tok_eof) - { - if (warned == 0) - { - lr_error (ldfile, _("\ -no other keyword shall be specified when `copy' is used")); - warned = 1; - } - - lr_ignore_rest (ldfile, 0); - } - - if (now->tok != tok_eof) - { - /* Handle `END xxx'. */ - now = lr_token (ldfile, charmap, result, NULL, verbose); - - if (now->tok != token) - lr_error (ldfile, _("\ -`%1$s' definition does not end with `END %1$s'"), locale_name); - - lr_ignore_rest (ldfile, now->tok == token); - } - else - /* When we come here we reached the end of the file. */ - lr_error (ldfile, _("%s: premature end of file"), locale_name); -} - +extern void handle_copy (struct linereader *ldfile, + const struct charmap_t *charmap, + const char *repertoire_name, + struct localedef_t *result, enum token_t token, + int locale, const char *locale_name, + int ignore_content); /* Found in locfile.c. */ extern int locfile_read (struct localedef_t *result, --- glibc-2.3.2/locale/setlocale.c 2002-12-04 04:53:49.000000000 -0500 +++ glibc-2.3.2/locale/setlocale.c 2003-08-21 08:37:05.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 92, 95-99, 2000, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1991, 92, 1995-2000, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -128,7 +128,7 @@ /* Construct a new composite name. */ -static inline char * +static char * new_composite_name (int category, const char *newnames[__LC_LAST]) { size_t last_len = 0; --- glibc-2.3.2/locale/tst-C-locale.c 2002-09-03 14:39:41.000000000 -0400 +++ glibc-2.3.2/locale/tst-C-locale.c 2003-03-18 16:46:07.000000000 -0500 @@ -1,5 +1,5 @@ /* Tests of C and POSIX locale contents. - Copyright (C) 2000,01,02 Free Software Foundation, Inc. + Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2000. @@ -450,8 +450,8 @@ } -int -main (void) +static int +do_test (void) { int result; @@ -475,3 +475,6 @@ return result; } + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" --- glibc-2.3.2/locale/weight.h 2001-07-07 15:21:04.000000000 -0400 +++ glibc-2.3.2/locale/weight.h 2003-08-21 08:37:05.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1996,1997,1998,1999,2000,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Written by Ulrich Drepper, . @@ -19,6 +19,7 @@ /* Find index of weight. */ static inline int32_t +__attribute ((always_inline)) findidx (const unsigned char **cpp) { int_fast32_t i = table[*(*cpp)++]; --- glibc-2.3.2/locale/weightwc.h 2001-08-07 00:23:14.000000000 -0400 +++ glibc-2.3.2/locale/weightwc.h 2003-08-21 08:37:05.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996-2000, 2001 Free Software Foundation, Inc. +/* Copyright (C) 1996-2000, 2001, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Written by Ulrich Drepper, . @@ -19,6 +19,7 @@ /* Find index of weight. */ static inline int32_t +__attribute ((always_inline)) findidx (const wint_t **cpp) { int32_t i; @@ -26,7 +27,7 @@ wint_t ch; ch = *(*cpp)++; - i = collidx_table_lookup ((const char *) table, ch); + i = __collidx_table_lookup ((const char *) table, ch); if (i >= 0) /* This is an index into the weight table. Cool. */ --- glibc-2.3.2/localedata/ChangeLog 2003-01-30 15:21:47.000000000 -0500 +++ glibc-2.3.2/localedata/ChangeLog 2003-09-19 22:37:05.000000000 -0400 @@ -1,3 +1,186 @@ +2003-09-17 Ulrich Drepper + + * locales/lo_LA: Fix duplicated collation entries. + Patch by Anousak Souphavanh . + +2003-09-01 Petter Reinholdtsen + + * locales/iw_IL: Add comment stating why there are two locales for + Hebrew in Israel, and that he_IL replaces iw_IL. + * locales/he_IL: Likewise. + +2003-08-25 Ulrich Drepper + + * locales/an_ES: Fix locale header information. + * locales/wa_BE: Likewise. + * locales/yi_US: Likewise. + Patch by Jordi Mallach . + +2003-08-14 Ulrich Drepper + + * charmaps/WINDOWS-31J: New file. + * charmaps/EUC-JP-MS: New file + Patch by MORIYAMA Masayuki . + +2003-07-27 Andreas Jaeger + + * collate-test.c: Include error.h for error prototype. + * xfrm-test.c: Likewise. + +2003-07-13 Petter Reinholdtsen + + * collate-test.c (main): Correct handling of files with more then + 100 lines. Print error message if argument is missing, instead of + segfaulting. + * xfrm-test.c: Likewise. + +2003-07-02 Ulrich Drepper + + * locales/lo_LA: Update collation info for U0EAF and U0EC6. + Update era_t_fmt, era_d_t_fmt, country_name, and lang_name fields. + Patch by Anousak Souphavanh . + +2003-06-25 Petter Reinholdtsen + + * locales/an_ES: Change default charset from ISO-8859-1 to + ISO-8859-15 as the locale need the EURO sign. + + * SUPPORTED (SUPPORTED-LOCALES): Add an_ES.ISO-8859-15. + +2003-06-21 Petter Reinholdtsen + + * locales/no_NO [LC_COLLATE]: Add missing eth letter, sorted as + latin letter d. + +2003-06-16 Bruno Haible + + * charmaps/ISO-8859-15: Add aliases ISO_8859-15, LATIN-9. + * charmaps/ISO-8859-16: Add aliases ISO_8859-16:2001, ISO_8859-16. + * charmaps/IBM1047: Add alias IBM-1047. + * charmaps/GBK: Add aliases CP936, MS936, WINDOWS-936. + +2003-06-15 Petter Reinholdtsen + + * locales/fi_FI [LC_TIME]: Correct month names to make the dates + gramatically correct. Patch from Eero Häkkinen. [PR libc/5013]. + +2003-06-16 Ulrich Drepper + + * locales/an_ES: New file. Contributed by Jordi Mallach Péez. + +2003-06-15 Petter Reinholdtsen + + * tst-fmon.c (main): Remove unused variable 'monval'. + + * tst-fmon.sh: Make sure all tests are executed before an error + code is reported to make. + * tst-numeric.sh: Likewise. + +2003-06-15 Petter Reinholdtsen + + * locales/is_IS [LC_TIME]: Use lower case letters in month and + week day names. Patch from Bjarni Ingi Gislason. + +2003-05-31 Petter Reinholdtsen + + * locales/fi_FI: Add URL to a reference documenting Finish in + Finland + * locales/fi_FI [LC_MONETARY]: Correct mon_thousands_sep from + period (U002E) to non-break space (U00A0). + suggestion from Eero Häkkinen. + [LC_NUMERIC]: Correct thousands_sep from period (U002E) to + non-break space (U00A0). Based on suggestion from Eero Häkkinen. + +2003-06-11 Ulrich Drepper + + * locales/lo_LA: New file. + Contributed by Anousak Souphavanh . + * SUPPORTED (SUPPORTED-LOCALES): Add lo_LA.UTF8. + +2003-05-29 Petter Reinholdtsen + + * locales/uk_UA: Correct mail address of Denys Dmytriyenko. + +2003-05-10 Ulrich Drepper + + * locales/st_ZA: New file. + * locales/xh_ZA: New file. + * locales/zu_ZA: New file. + Contributed by Dwayne Bailey . + +2003-05-06 Ulrich Drepper + + * locales/de_DE: Use two-letter abday values. + * tst-langinfo.sh: Update after de_DE locale change. + +2003-05-05 Jakub Jelinek + + * tests-mbwc/tst_wcsxfrm.c (tst_wcsxfrm): Use %zu instead of %d + format specifier when printing ret. + +2003-04-30 Petter Reinholdtsen + + * tst-fmon.c: Report name of locale if setlocale() fails. + * tst-numeric.c: Likewise. + + * tst-fmon.sh: Ignore lines starting with hash '#' in the data file. + * tst-numeric.sh: Likewise. + +2003-04-30 Petter Reinholdtsen + + * sort-test.sh: Output 'diff -u' when sorting test failed, to make + it easier to find out what was wrong with the sorting order. + +2003-04-16 Petter Reinholdtsen + + * Makefile (tests): Add LC_NUMERIC test tst-numeric.out. + (tst-numeric.out): Define. + * tst-numeric.c: New file. + * tst-numeric.sh: New file. + * tst-numeric.data: New file. + +2003-04-21 Ulrich Drepper + + * locales/ar_BH: Fix spelling of Bahrain. + +2003-04-16 Ulrich Drepper + + * locales/uk_UA: Fix sorting. + Patch by Leonid Kanter . + +2003-04-15 Petter Reinholdtsen + + * locales/ar_SD [LC_MONETARY]: Use international currency symbol + 'SDD' for Sudan. + * locales/es_EC [LC_MONETARY]: Use international currency symbol + 'USD' for Ecuador. + Source is CIA World Fact book. + +2003-04-05 Petter Reinholdtsen + + * locales/sr_YU [LC_MONETARY]: Change int_curr_symbol from 'YUN' + to 'YUM' to match changes commited to ISO-4217 2002-02-13 and get + the locale building again. + * locales/sr_YU@cyrillic: Likewise. + +2003-04-14 Ulrich Drepper + + * locales/mn_MN: Fix country_post and country_ab2. + +2003-03-17 Ulrich Drepper + + * localedata/en_ZA: Changed %x for LC_TIME to use dd/mm/ccyy. + Added ^ to LC_MESSAGES regex "^[yY].*". + Confirmed LC_PAPER and LC_MEASUREMENT settings. + Added country and language names to LC_ADDRESS. + Added missing info for LC_TELEPHONE. + Patch by Dwayne Bailey . + +2003-03-14 Ulrich Drepper + + * localedata/mn_MN: New file. + Contributed by Sanlig Badral . + 2003-01-30 Ulrich Drepper * Makefile (LOCALES): Add vi_VN.TCVN5712-1. --- glibc-2.3.2/localedata/Makefile 2003-01-30 15:09:21.000000000 -0500 +++ glibc-2.3.2/localedata/Makefile 2003-04-28 08:20:36.000000000 -0400 @@ -39,7 +39,7 @@ test-srcs := collate-test xfrm-test tst-fmon tst-rpmatch tst-trans \ tst-mbswcs1 tst-mbswcs2 tst-mbswcs3 tst-mbswcs4 tst-mbswcs5 \ - tst-ctype tst-wctype tst-langinfo + tst-ctype tst-wctype tst-langinfo tst-numeric test-input := de_DE.ISO-8859-1 en_US.ISO-8859-1 da_DK.ISO-8859-1 \ hr_HR.ISO-8859-2 sv_SE.ISO-8859-1 test-input-data = $(addsuffix .in, $(basename $(test-input))) @@ -65,6 +65,7 @@ tst-fmon.data $(test-input-data) $(ld-test-srcs) \ th_TH.in cs_CZ.in tst-mbswcs.sh tst-trans.sh tst-ctype.sh \ tst-ctype-de_DE.ISO-8859-1.in \ + tst-numeric.sh tst-numeric.data \ $(wildcard tests-mbwc/*.[ch]) \ $(addprefix tst-fmon-locales/tstfmon_,$(fmon-tests)) \ gen-locale.sh show-ucs-data.c tst-langinfo.sh \ @@ -130,7 +131,7 @@ LOCALES := de_DE.ISO-8859-1 de_DE.UTF-8 en_US.ANSI_X3.4-1968 \ en_US.ISO-8859-1 ja_JP.EUC-JP da_DK.ISO-8859-1 \ hr_HR.ISO-8859-2 sv_SE.ISO-8859-1 ja_JP.SJIS fr_FR.ISO-8859-1 \ - vi_VN.TCVN5712-1 + vi_VN.TCVN5712-1 no_NO.ISO-8859-1 nn_NO.ISO-8859-1 LOCALE_SRCS := $(shell echo "$(LOCALES)"|sed 's/\([^ .]*\)[^ ]*/\1/g') CHARMAPS := $(shell echo "$(LOCALES)" | \ sed -e 's/[^ .]*[.]\([^ ]*\)/\1/g' -e s/SJIS/SHIFT_JIS/g) @@ -151,7 +152,7 @@ tests: $(objpfx)sort-test.out $(objpfx)tst-fmon.out $(objpfx)tst-locale.out \ $(objpfx)tst-rpmatch.out $(objpfx)tst-trans.out \ $(objpfx)tst-mbswcs.out $(objpfx)tst-ctype.out $(objpfx)tst-wctype.out \ - $(objpfx)tst-langinfo.out + $(objpfx)tst-langinfo.out $(objpfx)tst-numeric.out $(objpfx)sort-test.out: sort-test.sh $(objpfx)collate-test $(objpfx)xfrm-test \ $(test-input-data) $(addprefix $(objpfx),$(CTYPE_FILES)) @@ -162,6 +163,11 @@ $(addprefix $(objpfx),$(CTYPE_FILES)) $(SHELL) -e $< $(common-objpfx) '$(run-program-prefix)' tst-fmon.data \ > $@ +$(objpfx)tst-numeric.out: tst-numeric.sh $(objpfx)tst-numeric tst-numeric.data \ + $(objpfx)sort-test.out \ + $(addprefix $(objpfx),$(CTYPE_FILES)) + $(SHELL) -e $< $(common-objpfx) '$(run-program-prefix)' tst-numeric.data \ + > $@ $(objpfx)tst-locale.out: tst-locale.sh $(common-objpfx)locale/localedef \ $(ld-test-srcs) $(addprefix $(objpfx),$(CTYPE_FILES)) $(SHELL) -e $< $(common-objpfx) '$(built-program-cmd)' > $@ --- glibc-2.3.2/localedata/SUPPORTED 2002-02-23 14:30:27.000000000 -0500 +++ glibc-2.3.2/localedata/SUPPORTED 2003-08-21 08:37:05.000000000 -0400 @@ -3,6 +3,7 @@ # appropriate message. SUPPORTED-LOCALES=\ af_ZA/ISO-8859-1 \ +an_ES/ISO-8859-15 \ ar_AE/ISO-8859-6 \ ar_BH/ISO-8859-6 \ ar_DZ/ISO-8859-6 \ @@ -112,6 +113,7 @@ ko_KR.EUC-KR/EUC-KR \ ko_KR.UTF-8/UTF-8 \ kw_GB/ISO-8859-1 \ +lo_LA/UTF-8 \ lt_LT/ISO-8859-13 \ lv_LV/ISO-8859-13 \ mi_NZ/ISO-8859-13 \ --- glibc-2.3.2/localedata/charmaps/EUC-JP-MS 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/localedata/charmaps/EUC-JP-MS 2003-08-14 04:49:27.000000000 -0400 @@ -0,0 +1,15282 @@ + EUC-JP-MS + % + / + 1 + 3 + +% EUC-JP-MS character map +% MORIYAMA Masayuki , 2003. +% Last changed: 2003-07-18 + +CHARMAP +% +% ASCII or JIS X 0201 Roman +% + /x00 NULL + /x01 START OF HEADING + /x02 START OF TEXT + /x03 END OF TEXT + /x04 END OF TRANSMISSION + /x05 ENQUIRY + /x06 ACKNOWLEDGE + /x07 BELL + /x08 BACKSPACE + /x09 HORIZONTAL TABULATION + /x0a LINE FEED + /x0b VERTICAL TABULATION + /x0c FORM FEED + /x0d CARRIAGE RETURN + /x0e SHIFT OUT + /x0f SHIFT IN + /x10 DATA LINK ESCAPE + /x11 DEVICE CONTROL ONE + /x12 DEVICE CONTROL TWO + /x13 DEVICE CONTROL THREE + /x14 DEVICE CONTROL FOUR + /x15 NEGATIVE ACKNOWLEDGE + /x16 SYNCHRONOUS IDLE + /x17 END OF TRANSMISSION BLOCK + /x18 CANCEL + /x19 END OF MEDIUM + /x1a SUBSTITUTE + /x1b ESCAPE + /x1c FILE SEPARATOR + /x1d GROUP SEPARATOR + /x1e RECORD SEPARATOR + /x1f UNIT SEPARATOR + /x20 SPACE + /x21 EXCLAMATION MARK + /x22 QUOTATION MARK + /x23 NUMBER SIGN + /x24 DOLLAR SIGN + /x25 PERCENT SIGN + /x26 AMPERSAND + /x27 APOSTROPHE + /x28 LEFT PARENTHESIS + /x29 RIGHT PARENTHESIS + /x2a ASTERISK + /x2b PLUS SIGN + /x2c COMMA + /x2d HYPHEN-MINUS + /x2e FULL STOP + /x2f SOLIDUS + /x30 DIGIT ZERO + /x31 DIGIT ONE + /x32 DIGIT TWO + /x33 DIGIT THREE + /x34 DIGIT FOUR + /x35 DIGIT FIVE + /x36 DIGIT SIX + /x37 DIGIT SEVEN + /x38 DIGIT EIGHT + /x39 DIGIT NINE + /x3a COLON + /x3b SEMICOLON + /x3c LESS-THAN SIGN + /x3d EQUALS SIGN + /x3e GREATER-THAN SIGN + /x3f QUESTION MARK + /x40 COMMERCIAL AT + /x41 LATIN CAPITAL LETTER A + /x42 LATIN CAPITAL LETTER B + /x43 LATIN CAPITAL LETTER C + /x44 LATIN CAPITAL LETTER D + /x45 LATIN CAPITAL LETTER E + /x46 LATIN CAPITAL LETTER F + /x47 LATIN CAPITAL LETTER G + /x48 LATIN CAPITAL LETTER H + /x49 LATIN CAPITAL LETTER I + /x4a LATIN CAPITAL LETTER J + /x4b LATIN CAPITAL LETTER K + /x4c LATIN CAPITAL LETTER L + /x4d LATIN CAPITAL LETTER M + /x4e LATIN CAPITAL LETTER N + /x4f LATIN CAPITAL LETTER O + /x50 LATIN CAPITAL LETTER P + /x51 LATIN CAPITAL LETTER Q + /x52 LATIN CAPITAL LETTER R + /x53 LATIN CAPITAL LETTER S + /x54 LATIN CAPITAL LETTER T + /x55 LATIN CAPITAL LETTER U + /x56 LATIN CAPITAL LETTER V + /x57 LATIN CAPITAL LETTER W + /x58 LATIN CAPITAL LETTER X + /x59 LATIN CAPITAL LETTER Y + /x5a LATIN CAPITAL LETTER Z + /x5b LEFT SQUARE BRACKET + /x5c REVERSE SOLIDUS + /x5d RIGHT SQUARE BRACKET + /x5e CIRCUMFLEX ACCENT + /x5f LOW LINE + /x60 GRAVE ACCENT + /x61 LATIN SMALL LETTER A + /x62 LATIN SMALL LETTER B + /x63 LATIN SMALL LETTER C + /x64 LATIN SMALL LETTER D + /x65 LATIN SMALL LETTER E + /x66 LATIN SMALL LETTER F + /x67 LATIN SMALL LETTER G + /x68 LATIN SMALL LETTER H + /x69 LATIN SMALL LETTER I + /x6a LATIN SMALL LETTER J + /x6b LATIN SMALL LETTER K + /x6c LATIN SMALL LETTER L + /x6d LATIN SMALL LETTER M + /x6e LATIN SMALL LETTER N + /x6f LATIN SMALL LETTER O + /x70 LATIN SMALL LETTER P + /x71 LATIN SMALL LETTER Q + /x72 LATIN SMALL LETTER R + /x73 LATIN SMALL LETTER S + /x74 LATIN SMALL LETTER T + /x75 LATIN SMALL LETTER U + /x76 LATIN SMALL LETTER V + /x77 LATIN SMALL LETTER W + /x78 LATIN SMALL LETTER X + /x79 LATIN SMALL LETTER Y + /x7a LATIN SMALL LETTER Z + /x7b LEFT CURLY BRACKET + /x7c VERTICAL LINE + /x7d RIGHT CURLY BRACKET + /x7e TILDE + /x7f DELETE + +% +% C1 area is mapped to itself. Excluding SS2 and SS3. +% + /x80 PADDING CHARACTER (PAD) + /x81 HIGH OCTET PRESET (HOP) + /x82 BREAK PERMITTED HERE (BPH) + /x83 NO BREAK HERE (NBH) + /x84 INDEX (IND) + /x85 NEXT LINE (NEL) + /x86 START OF SELECTED AREA (SSA) + /x87 END OF SELECTED AREA (ESA) + /x88 CHARACTER TABULATION SET (HTS) + /x89 CHARACTER TABULATION WITH JUSTIFICATION (HTJ) + /x8a LINE TABULATION SET (VTS) + /x8b PARTIAL LINE FORWARD (PLD) + /x8c PARTIAL LINE BACKWARD (PLU) + /x8d REVERSE LINE FEED (RI) + /x90 DEVICE CONTROL STRING (DCS) + /x91 PRIVATE USE ONE (PU1) + /x92 PRIVATE USE TWO (PU2) + /x93 SET TRANSMIT STATE (STS) + /x94 CANCEL CHARACTER (CCH) + /x95 MESSAGE WAITING (MW) + /x96 START OF GUARDED AREA (SPA) + /x97 END OF GUARDED AREA (EPA) + /x98 START OF STRING (SOS) + /x99 SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) + /x9a SINGLE CHARACTER INTRODUCER (SCI) + /x9b CONTROL SEQUENCE INTRODUCER (CSI) + /x9c STRING TERMINATOR (ST) + /x9d OPERATING SYSTEM COMMAND (OSC) + /x9e PRIVACY MESSAGE (PM) + /x9f APPLICATION PROGRAM COMMAND (APC) + +% +% JIS X 0201 Kana +% + /x8e/xa1 HALFWIDTH IDEOGRAPHIC FULL STOP + /x8e/xa2 HALFWIDTH LEFT CORNER BRACKET + /x8e/xa3 HALFWIDTH RIGHT CORNER BRACKET + /x8e/xa4 HALFWIDTH IDEOGRAPHIC COMMA + /x8e/xa5 HALFWIDTH KATAKANA MIDDLE DOT + /x8e/xa6 HALFWIDTH KATAKANA LETTER WO + /x8e/xa7 HALFWIDTH KATAKANA LETTER SMALL A + /x8e/xa8 HALFWIDTH KATAKANA LETTER SMALL I + /x8e/xa9 HALFWIDTH KATAKANA LETTER SMALL U + /x8e/xaa HALFWIDTH KATAKANA LETTER SMALL E + /x8e/xab HALFWIDTH KATAKANA LETTER SMALL O + /x8e/xac HALFWIDTH KATAKANA LETTER SMALL YA + /x8e/xad HALFWIDTH KATAKANA LETTER SMALL YU + /x8e/xae HALFWIDTH KATAKANA LETTER SMALL YO + /x8e/xaf HALFWIDTH KATAKANA LETTER SMALL TU + /x8e/xb0 HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK + /x8e/xb1 HALFWIDTH KATAKANA LETTER A + /x8e/xb2 HALFWIDTH KATAKANA LETTER I + /x8e/xb3 HALFWIDTH KATAKANA LETTER U + /x8e/xb4 HALFWIDTH KATAKANA LETTER E + /x8e/xb5 HALFWIDTH KATAKANA LETTER O + /x8e/xb6 HALFWIDTH KATAKANA LETTER KA + /x8e/xb7 HALFWIDTH KATAKANA LETTER KI + /x8e/xb8 HALFWIDTH KATAKANA LETTER KU + /x8e/xb9 HALFWIDTH KATAKANA LETTER KE + /x8e/xba HALFWIDTH KATAKANA LETTER KO + /x8e/xbb HALFWIDTH KATAKANA LETTER SA + /x8e/xbc HALFWIDTH KATAKANA LETTER SI + /x8e/xbd HALFWIDTH KATAKANA LETTER SU + /x8e/xbe HALFWIDTH KATAKANA LETTER SE + /x8e/xbf HALFWIDTH KATAKANA LETTER SO + /x8e/xc0 HALFWIDTH KATAKANA LETTER TA + /x8e/xc1 HALFWIDTH KATAKANA LETTER TI + /x8e/xc2 HALFWIDTH KATAKANA LETTER TU + /x8e/xc3 HALFWIDTH KATAKANA LETTER TE + /x8e/xc4 HALFWIDTH KATAKANA LETTER TO + /x8e/xc5 HALFWIDTH KATAKANA LETTER NA + /x8e/xc6 HALFWIDTH KATAKANA LETTER NI + /x8e/xc7 HALFWIDTH KATAKANA LETTER NU + /x8e/xc8 HALFWIDTH KATAKANA LETTER NE + /x8e/xc9 HALFWIDTH KATAKANA LETTER NO + /x8e/xca HALFWIDTH KATAKANA LETTER HA + /x8e/xcb HALFWIDTH KATAKANA LETTER HI + /x8e/xcc HALFWIDTH KATAKANA LETTER HU + /x8e/xcd HALFWIDTH KATAKANA LETTER HE + /x8e/xce HALFWIDTH KATAKANA LETTER HO + /x8e/xcf HALFWIDTH KATAKANA LETTER MA + /x8e/xd0 HALFWIDTH KATAKANA LETTER MI + /x8e/xd1 HALFWIDTH KATAKANA LETTER MU + /x8e/xd2 HALFWIDTH KATAKANA LETTER ME + /x8e/xd3 HALFWIDTH KATAKANA LETTER MO + /x8e/xd4 HALFWIDTH KATAKANA LETTER YA + /x8e/xd5 HALFWIDTH KATAKANA LETTER YU + /x8e/xd6 HALFWIDTH KATAKANA LETTER YO + /x8e/xd7 HALFWIDTH KATAKANA LETTER RA + /x8e/xd8 HALFWIDTH KATAKANA LETTER RI + /x8e/xd9 HALFWIDTH KATAKANA LETTER RU + /x8e/xda HALFWIDTH KATAKANA LETTER RE + /x8e/xdb HALFWIDTH KATAKANA LETTER RO + /x8e/xdc HALFWIDTH KATAKANA LETTER WA + /x8e/xdd HALFWIDTH KATAKANA LETTER N + /x8e/xde HALFWIDTH KATAKANA VOICED SOUND MARK + /x8e/xdf HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK + +% +% JIS X 0208 +% + /xa1/xa1 IDEOGRAPHIC SPACE + /xa1/xa2 IDEOGRAPHIC COMMA + /xa1/xa3 IDEOGRAPHIC FULL STOP + /xa1/xa4 FULLWIDTH COMMA + /xa1/xa5 FULLWIDTH FULL STOP + /xa1/xa6 KATAKANA MIDDLE DOT + /xa1/xa7 FULLWIDTH COLON + /xa1/xa8 FULLWIDTH SEMICOLON + /xa1/xa9 FULLWIDTH QUESTION MARK + /xa1/xaa FULLWIDTH EXCLAMATION MARK + /xa1/xab KATAKANA-HIRAGANA VOICED SOUND MARK + /xa1/xac KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK + /xa1/xad ACUTE ACCENT + /xa1/xae FULLWIDTH GRAVE ACCENT + /xa1/xaf DIAERESIS + /xa1/xb0 FULLWIDTH CIRCUMFLEX ACCENT + /xa1/xb1 FULLWIDTH MACRON + /xa1/xb2 FULLWIDTH LOW LINE + /xa1/xb3 KATAKANA ITERATION MARK + /xa1/xb4 KATAKANA VOICED ITERATION MARK + /xa1/xb5 HIRAGANA ITERATION MARK + /xa1/xb6 HIRAGANA VOICED ITERATION MARK + /xa1/xb7 DITTO MARK + /xa1/xb8 + /xa1/xb9 IDEOGRAPHIC ITERATION MARK + /xa1/xba IDEOGRAPHIC CLOSING MARK + /xa1/xbb IDEOGRAPHIC NUMBER ZERO + /xa1/xbc KATAKANA-HIRAGANA PROLONGED SOUND MARK + /xa1/xbd HORIZONTAL BAR + /xa1/xbe HYPHEN + /xa1/xbf FULLWIDTH SOLIDUS + /xa1/xc0 FULLWIDTH REVERSE SOLIDUS + /xa1/xc1 FULLWIDTH TILDE + /xa1/xc2 PARALLEL TO + /xa1/xc3 FULLWIDTH VERTICAL LINE + /xa1/xc4 HORIZONTAL ELLIPSIS + /xa1/xc5 TWO DOT LEADER + /xa1/xc6 LEFT SINGLE QUOTATION MARK + /xa1/xc7 RIGHT SINGLE QUOTATION MARK + /xa1/xc8 LEFT DOUBLE QUOTATION MARK + /xa1/xc9 RIGHT DOUBLE QUOTATION MARK + /xa1/xca FULLWIDTH LEFT PARENTHESIS + /xa1/xcb FULLWIDTH RIGHT PARENTHESIS + /xa1/xcc LEFT TORTOISE SHELL BRACKET + /xa1/xcd RIGHT TORTOISE SHELL BRACKET + /xa1/xce FULLWIDTH LEFT SQUARE BRACKET + /xa1/xcf FULLWIDTH RIGHT SQUARE BRACKET + /xa1/xd0 FULLWIDTH LEFT CURLY BRACKET + /xa1/xd1 FULLWIDTH RIGHT CURLY BRACKET + /xa1/xd2 LEFT ANGLE BRACKET + /xa1/xd3 RIGHT ANGLE BRACKET + /xa1/xd4 LEFT DOUBLE ANGLE BRACKET + /xa1/xd5 RIGHT DOUBLE ANGLE BRACKET + /xa1/xd6 LEFT CORNER BRACKET + /xa1/xd7 RIGHT CORNER BRACKET + /xa1/xd8 LEFT WHITE CORNER BRACKET + /xa1/xd9 RIGHT WHITE CORNER BRACKET + /xa1/xda LEFT BLACK LENTICULAR BRACKET + /xa1/xdb RIGHT BLACK LENTICULAR BRACKET + /xa1/xdc FULLWIDTH PLUS SIGN + /xa1/xdd FULLWIDTH HYPHEN-MINUS + /xa1/xde PLUS-MINUS SIGN + /xa1/xdf MULTIPLICATION SIGN + /xa1/xe0 DIVISION SIGN + /xa1/xe1 FULLWIDTH EQUALS SIGN + /xa1/xe2 NOT EQUAL TO + /xa1/xe3 FULLWIDTH LESS-THAN SIGN + /xa1/xe4 FULLWIDTH GREATER-THAN SIGN + /xa1/xe5 LESS-THAN OVER EQUAL TO + /xa1/xe6 GREATER-THAN OVER EQUAL TO + /xa1/xe7 INFINITY + /xa1/xe8 THEREFORE + /xa1/xe9 MALE SIGN + /xa1/xea FEMALE SIGN + /xa1/xeb DEGREE SIGN + /xa1/xec PRIME + /xa1/xed DOUBLE PRIME + /xa1/xee DEGREE CELSIUS + /xa1/xef FULLWIDTH YEN SIGN + /xa1/xf0 FULLWIDTH DOLLAR SIGN + /xa1/xf1 FULLWIDTH CENT SIGN + /xa1/xf2 FULLWIDTH POUND SIGN + /xa1/xf3 FULLWIDTH PERCENT SIGN + /xa1/xf4 FULLWIDTH NUMBER SIGN + /xa1/xf5 FULLWIDTH AMPERSAND + /xa1/xf6 FULLWIDTH ASTERISK + /xa1/xf7 FULLWIDTH COMMERCIAL AT + /xa1/xf8 SECTION SIGN + /xa1/xf9 WHITE STAR + /xa1/xfa BLACK STAR + /xa1/xfb WHITE CIRCLE + /xa1/xfc BLACK CIRCLE + /xa1/xfd BULLSEYE + /xa1/xfe WHITE DIAMOND + /xa2/xa1 BLACK DIAMOND + /xa2/xa2 WHITE SQUARE + /xa2/xa3 BLACK SQUARE + /xa2/xa4 WHITE UP-POINTING TRIANGLE + /xa2/xa5 BLACK UP-POINTING TRIANGLE + /xa2/xa6 WHITE DOWN-POINTING TRIANGLE + /xa2/xa7 BLACK DOWN-POINTING TRIANGLE + /xa2/xa8 REFERENCE MARK + /xa2/xa9 POSTAL MARK + /xa2/xaa RIGHTWARDS ARROW + /xa2/xab LEFTWARDS ARROW + /xa2/xac UPWARDS ARROW + /xa2/xad DOWNWARDS ARROW + /xa2/xae GETA MARK + /xa2/xba ELEMENT OF + /xa2/xbb CONTAINS AS MEMBER + /xa2/xbc SUBSET OF OR EQUAL TO + /xa2/xbd SUPERSET OF OR EQUAL TO + /xa2/xbe SUBSET OF + /xa2/xbf SUPERSET OF + /xa2/xc0 UNION + /xa2/xc1 INTERSECTION + /xa2/xca LOGICAL AND + /xa2/xcb LOGICAL OR + /xa2/xcc FULLWIDTH NOT SIGN + /xa2/xcd RIGHTWARDS DOUBLE ARROW + /xa2/xce LEFT RIGHT DOUBLE ARROW + /xa2/xcf FOR ALL + /xa2/xd0 THERE EXISTS + /xa2/xdc ANGLE + /xa2/xdd UP TACK + /xa2/xde ARC + /xa2/xdf PARTIAL DIFFERENTIAL + /xa2/xe0 NABLA + /xa2/xe1 IDENTICAL TO + /xa2/xe2 APPROXIMATELY EQUAL TO OR THE IMAGE OF + /xa2/xe3 MUCH LESS-THAN + /xa2/xe4 MUCH GREATER-THAN + /xa2/xe5 SQUARE ROOT + /xa2/xe6 REVERSED TILDE + /xa2/xe7 PROPORTIONAL TO + /xa2/xe8 BECAUSE + /xa2/xe9 INTEGRAL + /xa2/xea DOUBLE INTEGRAL + /xa2/xf2 ANGSTROM SIGN + /xa2/xf3 PER MILLE SIGN + /xa2/xf4 MUSIC SHARP SIGN + /xa2/xf5 MUSIC FLAT SIGN + /xa2/xf6 EIGHTH NOTE + /xa2/xf7 DAGGER + /xa2/xf8 DOUBLE DAGGER + /xa2/xf9 PILCROW SIGN + /xa2/xfe LARGE CIRCLE + /xa3/xb0 FULLWIDTH DIGIT ZERO + /xa3/xb1 FULLWIDTH DIGIT ONE + /xa3/xb2 FULLWIDTH DIGIT TWO + /xa3/xb3 FULLWIDTH DIGIT THREE + /xa3/xb4 FULLWIDTH DIGIT FOUR + /xa3/xb5 FULLWIDTH DIGIT FIVE + /xa3/xb6 FULLWIDTH DIGIT SIX + /xa3/xb7 FULLWIDTH DIGIT SEVEN + /xa3/xb8 FULLWIDTH DIGIT EIGHT + /xa3/xb9 FULLWIDTH DIGIT NINE + /xa3/xc1 FULLWIDTH LATIN CAPITAL LETTER A + /xa3/xc2 FULLWIDTH LATIN CAPITAL LETTER B + /xa3/xc3 FULLWIDTH LATIN CAPITAL LETTER C + /xa3/xc4 FULLWIDTH LATIN CAPITAL LETTER D + /xa3/xc5 FULLWIDTH LATIN CAPITAL LETTER E + /xa3/xc6 FULLWIDTH LATIN CAPITAL LETTER F + /xa3/xc7 FULLWIDTH LATIN CAPITAL LETTER G + /xa3/xc8 FULLWIDTH LATIN CAPITAL LETTER H + /xa3/xc9 FULLWIDTH LATIN CAPITAL LETTER I + /xa3/xca FULLWIDTH LATIN CAPITAL LETTER J + /xa3/xcb FULLWIDTH LATIN CAPITAL LETTER K + /xa3/xcc FULLWIDTH LATIN CAPITAL LETTER L + /xa3/xcd FULLWIDTH LATIN CAPITAL LETTER M + /xa3/xce FULLWIDTH LATIN CAPITAL LETTER N + /xa3/xcf FULLWIDTH LATIN CAPITAL LETTER O + /xa3/xd0 FULLWIDTH LATIN CAPITAL LETTER P + /xa3/xd1 FULLWIDTH LATIN CAPITAL LETTER Q + /xa3/xd2 FULLWIDTH LATIN CAPITAL LETTER R + /xa3/xd3 FULLWIDTH LATIN CAPITAL LETTER S + /xa3/xd4 FULLWIDTH LATIN CAPITAL LETTER T + /xa3/xd5 FULLWIDTH LATIN CAPITAL LETTER U + /xa3/xd6 FULLWIDTH LATIN CAPITAL LETTER V + /xa3/xd7 FULLWIDTH LATIN CAPITAL LETTER W + /xa3/xd8 FULLWIDTH LATIN CAPITAL LETTER X + /xa3/xd9 FULLWIDTH LATIN CAPITAL LETTER Y + /xa3/xda FULLWIDTH LATIN CAPITAL LETTER Z + /xa3/xe1 FULLWIDTH LATIN SMALL LETTER A + /xa3/xe2 FULLWIDTH LATIN SMALL LETTER B + /xa3/xe3 FULLWIDTH LATIN SMALL LETTER C + /xa3/xe4 FULLWIDTH LATIN SMALL LETTER D + /xa3/xe5 FULLWIDTH LATIN SMALL LETTER E + /xa3/xe6 FULLWIDTH LATIN SMALL LETTER F + /xa3/xe7 FULLWIDTH LATIN SMALL LETTER G + /xa3/xe8 FULLWIDTH LATIN SMALL LETTER H + /xa3/xe9 FULLWIDTH LATIN SMALL LETTER I + /xa3/xea FULLWIDTH LATIN SMALL LETTER J + /xa3/xeb FULLWIDTH LATIN SMALL LETTER K + /xa3/xec FULLWIDTH LATIN SMALL LETTER L + /xa3/xed FULLWIDTH LATIN SMALL LETTER M + /xa3/xee FULLWIDTH LATIN SMALL LETTER N + /xa3/xef FULLWIDTH LATIN SMALL LETTER O + /xa3/xf0 FULLWIDTH LATIN SMALL LETTER P + /xa3/xf1 FULLWIDTH LATIN SMALL LETTER Q + /xa3/xf2 FULLWIDTH LATIN SMALL LETTER R + /xa3/xf3 FULLWIDTH LATIN SMALL LETTER S + /xa3/xf4 FULLWIDTH LATIN SMALL LETTER T + /xa3/xf5 FULLWIDTH LATIN SMALL LETTER U + /xa3/xf6 FULLWIDTH LATIN SMALL LETTER V + /xa3/xf7 FULLWIDTH LATIN SMALL LETTER W + /xa3/xf8 FULLWIDTH LATIN SMALL LETTER X + /xa3/xf9 FULLWIDTH LATIN SMALL LETTER Y + /xa3/xfa FULLWIDTH LATIN SMALL LETTER Z + /xa4/xa1 HIRAGANA LETTER SMALL A + /xa4/xa2 HIRAGANA LETTER A + /xa4/xa3 HIRAGANA LETTER SMALL I + /xa4/xa4 HIRAGANA LETTER I + /xa4/xa5 HIRAGANA LETTER SMALL U + /xa4/xa6 HIRAGANA LETTER U + /xa4/xa7 HIRAGANA LETTER SMALL E + /xa4/xa8 HIRAGANA LETTER E + /xa4/xa9 HIRAGANA LETTER SMALL O + /xa4/xaa HIRAGANA LETTER O + /xa4/xab HIRAGANA LETTER KA + /xa4/xac HIRAGANA LETTER GA + /xa4/xad HIRAGANA LETTER KI + /xa4/xae HIRAGANA LETTER GI + /xa4/xaf HIRAGANA LETTER KU + /xa4/xb0 HIRAGANA LETTER GU + /xa4/xb1 HIRAGANA LETTER KE + /xa4/xb2 HIRAGANA LETTER GE + /xa4/xb3 HIRAGANA LETTER KO + /xa4/xb4 HIRAGANA LETTER GO + /xa4/xb5 HIRAGANA LETTER SA + /xa4/xb6 HIRAGANA LETTER ZA + /xa4/xb7 HIRAGANA LETTER SI + /xa4/xb8 HIRAGANA LETTER ZI + /xa4/xb9 HIRAGANA LETTER SU + /xa4/xba HIRAGANA LETTER ZU + /xa4/xbb HIRAGANA LETTER SE + /xa4/xbc HIRAGANA LETTER ZE + /xa4/xbd HIRAGANA LETTER SO + /xa4/xbe HIRAGANA LETTER ZO + /xa4/xbf HIRAGANA LETTER TA + /xa4/xc0 HIRAGANA LETTER DA + /xa4/xc1 HIRAGANA LETTER TI + /xa4/xc2 HIRAGANA LETTER DI + /xa4/xc3 HIRAGANA LETTER SMALL TU + /xa4/xc4 HIRAGANA LETTER TU + /xa4/xc5 HIRAGANA LETTER DU + /xa4/xc6 HIRAGANA LETTER TE + /xa4/xc7 HIRAGANA LETTER DE + /xa4/xc8 HIRAGANA LETTER TO + /xa4/xc9 HIRAGANA LETTER DO + /xa4/xca HIRAGANA LETTER NA + /xa4/xcb HIRAGANA LETTER NI + /xa4/xcc HIRAGANA LETTER NU + /xa4/xcd HIRAGANA LETTER NE + /xa4/xce HIRAGANA LETTER NO + /xa4/xcf HIRAGANA LETTER HA + /xa4/xd0 HIRAGANA LETTER BA + /xa4/xd1 HIRAGANA LETTER PA + /xa4/xd2 HIRAGANA LETTER HI + /xa4/xd3 HIRAGANA LETTER BI + /xa4/xd4 HIRAGANA LETTER PI + /xa4/xd5 HIRAGANA LETTER HU + /xa4/xd6 HIRAGANA LETTER BU + /xa4/xd7 HIRAGANA LETTER PU + /xa4/xd8 HIRAGANA LETTER HE + /xa4/xd9 HIRAGANA LETTER BE + /xa4/xda HIRAGANA LETTER PE + /xa4/xdb HIRAGANA LETTER HO + /xa4/xdc HIRAGANA LETTER BO + /xa4/xdd HIRAGANA LETTER PO + /xa4/xde HIRAGANA LETTER MA + /xa4/xdf HIRAGANA LETTER MI + /xa4/xe0 HIRAGANA LETTER MU + /xa4/xe1 HIRAGANA LETTER ME + /xa4/xe2 HIRAGANA LETTER MO + /xa4/xe3 HIRAGANA LETTER SMALL YA + /xa4/xe4 HIRAGANA LETTER YA + /xa4/xe5 HIRAGANA LETTER SMALL YU + /xa4/xe6 HIRAGANA LETTER YU + /xa4/xe7 HIRAGANA LETTER SMALL YO + /xa4/xe8 HIRAGANA LETTER YO + /xa4/xe9 HIRAGANA LETTER RA + /xa4/xea HIRAGANA LETTER RI + /xa4/xeb HIRAGANA LETTER RU + /xa4/xec HIRAGANA LETTER RE + /xa4/xed HIRAGANA LETTER RO + /xa4/xee HIRAGANA LETTER SMALL WA + /xa4/xef HIRAGANA LETTER WA + /xa4/xf0 HIRAGANA LETTER WI + /xa4/xf1 HIRAGANA LETTER WE + /xa4/xf2 HIRAGANA LETTER WO + /xa4/xf3 HIRAGANA LETTER N + /xa5/xa1 KATAKANA LETTER SMALL A + /xa5/xa2 KATAKANA LETTER A + /xa5/xa3 KATAKANA LETTER SMALL I + /xa5/xa4 KATAKANA LETTER I + /xa5/xa5 KATAKANA LETTER SMALL U + /xa5/xa6 KATAKANA LETTER U + /xa5/xa7 KATAKANA LETTER SMALL E + /xa5/xa8 KATAKANA LETTER E + /xa5/xa9 KATAKANA LETTER SMALL O + /xa5/xaa KATAKANA LETTER O + /xa5/xab KATAKANA LETTER KA + /xa5/xac KATAKANA LETTER GA + /xa5/xad KATAKANA LETTER KI + /xa5/xae KATAKANA LETTER GI + /xa5/xaf KATAKANA LETTER KU + /xa5/xb0 KATAKANA LETTER GU + /xa5/xb1 KATAKANA LETTER KE + /xa5/xb2 KATAKANA LETTER GE + /xa5/xb3 KATAKANA LETTER KO + /xa5/xb4 KATAKANA LETTER GO + /xa5/xb5 KATAKANA LETTER SA + /xa5/xb6 KATAKANA LETTER ZA + /xa5/xb7 KATAKANA LETTER SI + /xa5/xb8 KATAKANA LETTER ZI + /xa5/xb9 KATAKANA LETTER SU + /xa5/xba KATAKANA LETTER ZU + /xa5/xbb KATAKANA LETTER SE + /xa5/xbc KATAKANA LETTER ZE + /xa5/xbd KATAKANA LETTER SO + /xa5/xbe KATAKANA LETTER ZO + /xa5/xbf KATAKANA LETTER TA + /xa5/xc0 KATAKANA LETTER DA + /xa5/xc1 KATAKANA LETTER TI + /xa5/xc2 KATAKANA LETTER DI + /xa5/xc3 KATAKANA LETTER SMALL TU + /xa5/xc4 KATAKANA LETTER TU + /xa5/xc5 KATAKANA LETTER DU + /xa5/xc6 KATAKANA LETTER TE + /xa5/xc7 KATAKANA LETTER DE + /xa5/xc8 KATAKANA LETTER TO + /xa5/xc9 KATAKANA LETTER DO + /xa5/xca KATAKANA LETTER NA + /xa5/xcb KATAKANA LETTER NI + /xa5/xcc KATAKANA LETTER NU + /xa5/xcd KATAKANA LETTER NE + /xa5/xce KATAKANA LETTER NO + /xa5/xcf KATAKANA LETTER HA + /xa5/xd0 KATAKANA LETTER BA + /xa5/xd1 KATAKANA LETTER PA + /xa5/xd2 KATAKANA LETTER HI + /xa5/xd3 KATAKANA LETTER BI + /xa5/xd4 KATAKANA LETTER PI + /xa5/xd5 KATAKANA LETTER HU + /xa5/xd6 KATAKANA LETTER BU + /xa5/xd7 KATAKANA LETTER PU + /xa5/xd8 KATAKANA LETTER HE + /xa5/xd9 KATAKANA LETTER BE + /xa5/xda KATAKANA LETTER PE + /xa5/xdb KATAKANA LETTER HO + /xa5/xdc KATAKANA LETTER BO + /xa5/xdd KATAKANA LETTER PO + /xa5/xde KATAKANA LETTER MA + /xa5/xdf KATAKANA LETTER MI + /xa5/xe0 KATAKANA LETTER MU + /xa5/xe1 KATAKANA LETTER ME + /xa5/xe2 KATAKANA LETTER MO + /xa5/xe3 KATAKANA LETTER SMALL YA + /xa5/xe4 KATAKANA LETTER YA + /xa5/xe5 KATAKANA LETTER SMALL YU + /xa5/xe6 KATAKANA LETTER YU + /xa5/xe7 KATAKANA LETTER SMALL YO + /xa5/xe8 KATAKANA LETTER YO + /xa5/xe9 KATAKANA LETTER RA + /xa5/xea KATAKANA LETTER RI + /xa5/xeb KATAKANA LETTER RU + /xa5/xec KATAKANA LETTER RE + /xa5/xed KATAKANA LETTER RO + /xa5/xee KATAKANA LETTER SMALL WA + /xa5/xef KATAKANA LETTER WA + /xa5/xf0 KATAKANA LETTER WI + /xa5/xf1 KATAKANA LETTER WE + /xa5/xf2 KATAKANA LETTER WO + /xa5/xf3 KATAKANA LETTER N + /xa5/xf4 KATAKANA LETTER VU + /xa5/xf5 KATAKANA LETTER SMALL KA + /xa5/xf6 KATAKANA LETTER SMALL KE + /xa6/xa1 GREEK CAPITAL LETTER ALPHA + /xa6/xa2 GREEK CAPITAL LETTER BETA + /xa6/xa3 GREEK CAPITAL LETTER GAMMA + /xa6/xa4 GREEK CAPITAL LETTER DELTA + /xa6/xa5 GREEK CAPITAL LETTER EPSILON + /xa6/xa6 GREEK CAPITAL LETTER ZETA + /xa6/xa7 GREEK CAPITAL LETTER ETA + /xa6/xa8 GREEK CAPITAL LETTER THETA + /xa6/xa9 GREEK CAPITAL LETTER IOTA + /xa6/xaa GREEK CAPITAL LETTER KAPPA + /xa6/xab GREEK CAPITAL LETTER LAMDA + /xa6/xac GREEK CAPITAL LETTER MU + /xa6/xad GREEK CAPITAL LETTER NU + /xa6/xae GREEK CAPITAL LETTER XI + /xa6/xaf GREEK CAPITAL LETTER OMICRON + /xa6/xb0 GREEK CAPITAL LETTER PI + /xa6/xb1 GREEK CAPITAL LETTER RHO + /xa6/xb2 GREEK CAPITAL LETTER SIGMA + /xa6/xb3 GREEK CAPITAL LETTER TAU + /xa6/xb4 GREEK CAPITAL LETTER UPSILON + /xa6/xb5 GREEK CAPITAL LETTER PHI + /xa6/xb6 GREEK CAPITAL LETTER CHI + /xa6/xb7 GREEK CAPITAL LETTER PSI + /xa6/xb8 GREEK CAPITAL LETTER OMEGA + /xa6/xc1 GREEK SMALL LETTER ALPHA + /xa6/xc2 GREEK SMALL LETTER BETA + /xa6/xc3 GREEK SMALL LETTER GAMMA + /xa6/xc4 GREEK SMALL LETTER DELTA + /xa6/xc5 GREEK SMALL LETTER EPSILON + /xa6/xc6 GREEK SMALL LETTER ZETA + /xa6/xc7 GREEK SMALL LETTER ETA + /xa6/xc8 GREEK SMALL LETTER THETA + /xa6/xc9 GREEK SMALL LETTER IOTA + /xa6/xca GREEK SMALL LETTER KAPPA + /xa6/xcb GREEK SMALL LETTER LAMDA + /xa6/xcc GREEK SMALL LETTER MU + /xa6/xcd GREEK SMALL LETTER NU + /xa6/xce GREEK SMALL LETTER XI + /xa6/xcf GREEK SMALL LETTER OMICRON + /xa6/xd0 GREEK SMALL LETTER PI + /xa6/xd1 GREEK SMALL LETTER RHO + /xa6/xd2 GREEK SMALL LETTER SIGMA + /xa6/xd3 GREEK SMALL LETTER TAU + /xa6/xd4 GREEK SMALL LETTER UPSILON + /xa6/xd5 GREEK SMALL LETTER PHI + /xa6/xd6 GREEK SMALL LETTER CHI + /xa6/xd7 GREEK SMALL LETTER PSI + /xa6/xd8 GREEK SMALL LETTER OMEGA + /xa7/xa1 CYRILLIC CAPITAL LETTER A + /xa7/xa2 CYRILLIC CAPITAL LETTER BE + /xa7/xa3 CYRILLIC CAPITAL LETTER VE + /xa7/xa4 CYRILLIC CAPITAL LETTER GHE + /xa7/xa5 CYRILLIC CAPITAL LETTER DE + /xa7/xa6 CYRILLIC CAPITAL LETTER IE + /xa7/xa7 CYRILLIC CAPITAL LETTER IO + /xa7/xa8 CYRILLIC CAPITAL LETTER ZHE + /xa7/xa9 CYRILLIC CAPITAL LETTER ZE + /xa7/xaa CYRILLIC CAPITAL LETTER I + /xa7/xab CYRILLIC CAPITAL LETTER SHORT I + /xa7/xac CYRILLIC CAPITAL LETTER KA + /xa7/xad CYRILLIC CAPITAL LETTER EL + /xa7/xae CYRILLIC CAPITAL LETTER EM + /xa7/xaf CYRILLIC CAPITAL LETTER EN + /xa7/xb0 CYRILLIC CAPITAL LETTER O + /xa7/xb1 CYRILLIC CAPITAL LETTER PE + /xa7/xb2 CYRILLIC CAPITAL LETTER ER + /xa7/xb3 CYRILLIC CAPITAL LETTER ES + /xa7/xb4 CYRILLIC CAPITAL LETTER TE + /xa7/xb5 CYRILLIC CAPITAL LETTER U + /xa7/xb6 CYRILLIC CAPITAL LETTER EF + /xa7/xb7 CYRILLIC CAPITAL LETTER HA + /xa7/xb8 CYRILLIC CAPITAL LETTER TSE + /xa7/xb9 CYRILLIC CAPITAL LETTER CHE + /xa7/xba CYRILLIC CAPITAL LETTER SHA + /xa7/xbb CYRILLIC CAPITAL LETTER SHCHA + /xa7/xbc CYRILLIC CAPITAL LETTER HARD SIGN + /xa7/xbd CYRILLIC CAPITAL LETTER YERU + /xa7/xbe CYRILLIC CAPITAL LETTER SOFT SIGN + /xa7/xbf CYRILLIC CAPITAL LETTER E + /xa7/xc0 CYRILLIC CAPITAL LETTER YU + /xa7/xc1 CYRILLIC CAPITAL LETTER YA + /xa7/xd1 CYRILLIC SMALL LETTER A + /xa7/xd2 CYRILLIC SMALL LETTER BE + /xa7/xd3 CYRILLIC SMALL LETTER VE + /xa7/xd4 CYRILLIC SMALL LETTER GHE + /xa7/xd5 CYRILLIC SMALL LETTER DE + /xa7/xd6 CYRILLIC SMALL LETTER IE + /xa7/xd7 CYRILLIC SMALL LETTER IO + /xa7/xd8 CYRILLIC SMALL LETTER ZHE + /xa7/xd9 CYRILLIC SMALL LETTER ZE + /xa7/xda CYRILLIC SMALL LETTER I + /xa7/xdb CYRILLIC SMALL LETTER SHORT I + /xa7/xdc CYRILLIC SMALL LETTER KA + /xa7/xdd CYRILLIC SMALL LETTER EL + /xa7/xde CYRILLIC SMALL LETTER EM + /xa7/xdf CYRILLIC SMALL LETTER EN + /xa7/xe0 CYRILLIC SMALL LETTER O + /xa7/xe1 CYRILLIC SMALL LETTER PE + /xa7/xe2 CYRILLIC SMALL LETTER ER + /xa7/xe3 CYRILLIC SMALL LETTER ES + /xa7/xe4 CYRILLIC SMALL LETTER TE + /xa7/xe5 CYRILLIC SMALL LETTER U + /xa7/xe6 CYRILLIC SMALL LETTER EF + /xa7/xe7 CYRILLIC SMALL LETTER HA + /xa7/xe8 CYRILLIC SMALL LETTER TSE + /xa7/xe9 CYRILLIC SMALL LETTER CHE + /xa7/xea CYRILLIC SMALL LETTER SHA + /xa7/xeb CYRILLIC SMALL LETTER SHCHA + /xa7/xec CYRILLIC SMALL LETTER HARD SIGN + /xa7/xed CYRILLIC SMALL LETTER YERU + /xa7/xee CYRILLIC SMALL LETTER SOFT SIGN + /xa7/xef CYRILLIC SMALL LETTER E + /xa7/xf0 CYRILLIC SMALL LETTER YU + /xa7/xf1 CYRILLIC SMALL LETTER YA + /xa8/xa1 BOX DRAWINGS LIGHT HORIZONTAL + /xa8/xa2 BOX DRAWINGS LIGHT VERTICAL + /xa8/xa3 BOX DRAWINGS LIGHT DOWN AND RIGHT + /xa8/xa4 BOX DRAWINGS LIGHT DOWN AND LEFT + /xa8/xa5 BOX DRAWINGS LIGHT UP AND LEFT + /xa8/xa6 BOX DRAWINGS LIGHT UP AND RIGHT + /xa8/xa7 BOX DRAWINGS LIGHT VERTICAL AND RIGHT + /xa8/xa8 BOX DRAWINGS LIGHT DOWN AND HORIZONTAL + /xa8/xa9 BOX DRAWINGS LIGHT VERTICAL AND LEFT + /xa8/xaa BOX DRAWINGS LIGHT UP AND HORIZONTAL + /xa8/xab BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL + /xa8/xac BOX DRAWINGS HEAVY HORIZONTAL + /xa8/xad BOX DRAWINGS HEAVY VERTICAL + /xa8/xae BOX DRAWINGS HEAVY DOWN AND RIGHT + /xa8/xaf BOX DRAWINGS HEAVY DOWN AND LEFT + /xa8/xb0 BOX DRAWINGS HEAVY UP AND LEFT + /xa8/xb1 BOX DRAWINGS HEAVY UP AND RIGHT + /xa8/xb2 BOX DRAWINGS HEAVY VERTICAL AND RIGHT + /xa8/xb3 BOX DRAWINGS HEAVY DOWN AND HORIZONTAL + /xa8/xb4 BOX DRAWINGS HEAVY VERTICAL AND LEFT + /xa8/xb5 BOX DRAWINGS HEAVY UP AND HORIZONTAL + /xa8/xb6 BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL + /xa8/xb7 BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT + /xa8/xb8 BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY + /xa8/xb9 BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT + /xa8/xba BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY + /xa8/xbb BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY + /xa8/xbc BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY + /xa8/xbd BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT + /xa8/xbe BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY + /xa8/xbf BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT + /xa8/xc0 BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT + /xad/xa1 CIRCLED DIGIT ONE + /xad/xa2 CIRCLED DIGIT TWO + /xad/xa3 CIRCLED DIGIT THREE + /xad/xa4 CIRCLED DIGIT FOUR + /xad/xa5 CIRCLED DIGIT FIVE + /xad/xa6 CIRCLED DIGIT SIX + /xad/xa7 CIRCLED DIGIT SEVEN + /xad/xa8 CIRCLED DIGIT EIGHT + /xad/xa9 CIRCLED DIGIT NINE + /xad/xaa CIRCLED NUMBER TEN + /xad/xab CIRCLED NUMBER ELEVEN + /xad/xac CIRCLED NUMBER TWELVE + /xad/xad CIRCLED NUMBER THIRTEEN + /xad/xae CIRCLED NUMBER FOURTEEN + /xad/xaf CIRCLED NUMBER FIFTEEN + /xad/xb0 CIRCLED NUMBER SIXTEEN + /xad/xb1 CIRCLED NUMBER SEVENTEEN + /xad/xb2 CIRCLED NUMBER EIGHTEEN + /xad/xb3 CIRCLED NUMBER NINETEEN + /xad/xb4 CIRCLED NUMBER TWENTY + /xad/xb5 ROMAN NUMERAL ONE + /xad/xb6 ROMAN NUMERAL TWO + /xad/xb7 ROMAN NUMERAL THREE + /xad/xb8 ROMAN NUMERAL FOUR + /xad/xb9 ROMAN NUMERAL FIVE + /xad/xba ROMAN NUMERAL SIX + /xad/xbb ROMAN NUMERAL SEVEN + /xad/xbc ROMAN NUMERAL EIGHT + /xad/xbd ROMAN NUMERAL NINE + /xad/xbe ROMAN NUMERAL TEN + /xad/xc0 SQUARE MIRI + /xad/xc1 SQUARE KIRO + /xad/xc2 SQUARE SENTI + /xad/xc3 SQUARE MEETORU + /xad/xc4 SQUARE GURAMU + /xad/xc5 SQUARE TON + /xad/xc6 SQUARE AARU + /xad/xc7 SQUARE HEKUTAARU + /xad/xc8 SQUARE RITTORU + /xad/xc9 SQUARE WATTO + /xad/xca SQUARE KARORII + /xad/xcb SQUARE DORU + /xad/xcc SQUARE SENTO + /xad/xcd SQUARE PAASENTO + /xad/xce SQUARE MIRIBAARU + /xad/xcf SQUARE PEEZI + /xad/xd0 SQUARE MM + /xad/xd1 SQUARE CM + /xad/xd2 SQUARE KM + /xad/xd3 SQUARE MG + /xad/xd4 SQUARE KG + /xad/xd5 SQUARE CC + /xad/xd6 SQUARE M SQUARED + /xad/xdf SQUARE ERA NAME HEISEI + /xad/xe0 REVERSED DOUBLE PRIME QUOTATION MARK + /xad/xe1 LOW DOUBLE PRIME QUOTATION MARK + /xad/xe2 NUMERO SIGN + /xad/xe3 SQUARE KK + /xad/xe4 TELEPHONE SIGN + /xad/xe5 CIRCLED IDEOGRAPH HIGH + /xad/xe6 CIRCLED IDEOGRAPH CENTRE + /xad/xe7 CIRCLED IDEOGRAPH LOW + /xad/xe8 CIRCLED IDEOGRAPH LEFT + /xad/xe9 CIRCLED IDEOGRAPH RIGHT + /xad/xea PARENTHESIZED IDEOGRAPH STOCK + /xad/xeb PARENTHESIZED IDEOGRAPH HAVE + /xad/xec PARENTHESIZED IDEOGRAPH REPRESENT + /xad/xed SQUARE ERA NAME MEIZI + /xad/xee SQUARE ERA NAME TAISYOU + /xad/xef SQUARE ERA NAME SYOUWA +%IRREVERSIBLE% /xad/xf0 APPROXIMATELY EQUAL TO OR THE IMAGE OF +%IRREVERSIBLE% /xad/xf1 IDENTICAL TO +%IRREVERSIBLE% /xad/xf2 INTEGRAL + /xad/xf3 CONTOUR INTEGRAL + /xad/xf4 N-ARY SUMMATION +%IRREVERSIBLE% /xad/xf5 SQUARE ROOT +%IRREVERSIBLE% /xad/xf6 UP TACK +%IRREVERSIBLE% /xad/xf7 ANGLE + /xad/xf8 RIGHT ANGLE + /xad/xf9 RIGHT TRIANGLE +%IRREVERSIBLE% /xad/xfa BECAUSE +%IRREVERSIBLE% /xad/xfb INTERSECTION +%IRREVERSIBLE% /xad/xfc UNION + /xb0/xa1 + /xb0/xa2 + /xb0/xa3 + /xb0/xa4 + /xb0/xa5 + /xb0/xa6 + /xb0/xa7 + /xb0/xa8 + /xb0/xa9 + /xb0/xaa + /xb0/xab + /xb0/xac + /xb0/xad + /xb0/xae + /xb0/xaf + /xb0/xb0 + /xb0/xb1 + /xb0/xb2 + /xb0/xb3 + /xb0/xb4 + /xb0/xb5 + /xb0/xb6 + /xb0/xb7 + /xb0/xb8 + /xb0/xb9 + /xb0/xba + /xb0/xbb + /xb0/xbc + /xb0/xbd + /xb0/xbe + /xb0/xbf + /xb0/xc0 + /xb0/xc1 + /xb0/xc2 + /xb0/xc3 + /xb0/xc4 + /xb0/xc5 + /xb0/xc6 + /xb0/xc7 + /xb0/xc8 + /xb0/xc9 + /xb0/xca + /xb0/xcb + /xb0/xcc + /xb0/xcd + /xb0/xce + /xb0/xcf + /xb0/xd0 + /xb0/xd1 + /xb0/xd2 + /xb0/xd3 + /xb0/xd4 + /xb0/xd5 + /xb0/xd6 + /xb0/xd7 + /xb0/xd8 + /xb0/xd9 + /xb0/xda + /xb0/xdb + /xb0/xdc + /xb0/xdd + /xb0/xde + /xb0/xdf + /xb0/xe0 + /xb0/xe1 + /xb0/xe2 + /xb0/xe3 + /xb0/xe4 + /xb0/xe5 + /xb0/xe6 + /xb0/xe7 + /xb0/xe8 + /xb0/xe9 + /xb0/xea + /xb0/xeb + /xb0/xec + /xb0/xed + /xb0/xee + /xb0/xef + /xb0/xf0 + /xb0/xf1 + /xb0/xf2 + /xb0/xf3 + /xb0/xf4 + /xb0/xf5 + /xb0/xf6 + /xb0/xf7 + /xb0/xf8 + /xb0/xf9 + /xb0/xfa + /xb0/xfb + /xb0/xfc + /xb0/xfd + /xb0/xfe + /xb1/xa1 + /xb1/xa2 + /xb1/xa3 + /xb1/xa4 + /xb1/xa5 + /xb1/xa6 + /xb1/xa7 + /xb1/xa8 + /xb1/xa9 + /xb1/xaa + /xb1/xab + /xb1/xac + /xb1/xad + /xb1/xae + /xb1/xaf + /xb1/xb0 + /xb1/xb1 + /xb1/xb2 + /xb1/xb3 + /xb1/xb4 + /xb1/xb5 + /xb1/xb6 + /xb1/xb7 + /xb1/xb8 + /xb1/xb9 + /xb1/xba + /xb1/xbb + /xb1/xbc + /xb1/xbd + /xb1/xbe + /xb1/xbf + /xb1/xc0 + /xb1/xc1 + /xb1/xc2 + /xb1/xc3 + /xb1/xc4 + /xb1/xc5 + /xb1/xc6 + /xb1/xc7 + /xb1/xc8 + /xb1/xc9 + /xb1/xca + /xb1/xcb + /xb1/xcc + /xb1/xcd + /xb1/xce + /xb1/xcf + /xb1/xd0 + /xb1/xd1 + /xb1/xd2 + /xb1/xd3 + /xb1/xd4 + /xb1/xd5 + /xb1/xd6 + /xb1/xd7 + /xb1/xd8 + /xb1/xd9 + /xb1/xda + /xb1/xdb + /xb1/xdc + /xb1/xdd + /xb1/xde + /xb1/xdf + /xb1/xe0 + /xb1/xe1 + /xb1/xe2 + /xb1/xe3 + /xb1/xe4 + /xb1/xe5 + /xb1/xe6 + /xb1/xe7 + /xb1/xe8 + /xb1/xe9 + /xb1/xea + /xb1/xeb + /xb1/xec + /xb1/xed + /xb1/xee + /xb1/xef + /xb1/xf0 + /xb1/xf1 + /xb1/xf2 + /xb1/xf3 + /xb1/xf4 + /xb1/xf5 + /xb1/xf6 + /xb1/xf7 + /xb1/xf8 + /xb1/xf9 + /xb1/xfa + /xb1/xfb + /xb1/xfc + /xb1/xfd + /xb1/xfe + /xb2/xa1 + /xb2/xa2 + /xb2/xa3 + /xb2/xa4 + /xb2/xa5 + /xb2/xa6 + /xb2/xa7 + /xb2/xa8 + /xb2/xa9 + /xb2/xaa + /xb2/xab + /xb2/xac + /xb2/xad + /xb2/xae + /xb2/xaf + /xb2/xb0 + /xb2/xb1 + /xb2/xb2 + /xb2/xb3 + /xb2/xb4 + /xb2/xb5 + /xb2/xb6 + /xb2/xb7 + /xb2/xb8 + /xb2/xb9 + /xb2/xba + /xb2/xbb + /xb2/xbc + /xb2/xbd + /xb2/xbe + /xb2/xbf + /xb2/xc0 + /xb2/xc1 + /xb2/xc2 + /xb2/xc3 + /xb2/xc4 + /xb2/xc5 + /xb2/xc6 + /xb2/xc7 + /xb2/xc8 + /xb2/xc9 + /xb2/xca + /xb2/xcb + /xb2/xcc + /xb2/xcd + /xb2/xce + /xb2/xcf + /xb2/xd0 + /xb2/xd1 + /xb2/xd2 + /xb2/xd3 + /xb2/xd4 + /xb2/xd5 + /xb2/xd6 + /xb2/xd7 + /xb2/xd8 + /xb2/xd9 + /xb2/xda + /xb2/xdb + /xb2/xdc + /xb2/xdd + /xb2/xde + /xb2/xdf + /xb2/xe0 + /xb2/xe1 + /xb2/xe2 + /xb2/xe3 + /xb2/xe4 + /xb2/xe5 + /xb2/xe6 + /xb2/xe7 + /xb2/xe8 + /xb2/xe9 + /xb2/xea + /xb2/xeb + /xb2/xec + /xb2/xed + /xb2/xee + /xb2/xef + /xb2/xf0 + /xb2/xf1 + /xb2/xf2 + /xb2/xf3 + /xb2/xf4 + /xb2/xf5 + /xb2/xf6 + /xb2/xf7 + /xb2/xf8 + /xb2/xf9 + /xb2/xfa + /xb2/xfb + /xb2/xfc + /xb2/xfd + /xb2/xfe + /xb3/xa1 + /xb3/xa2 + /xb3/xa3 + /xb3/xa4 + /xb3/xa5 + /xb3/xa6 + /xb3/xa7 + /xb3/xa8 + /xb3/xa9 + /xb3/xaa + /xb3/xab + /xb3/xac + /xb3/xad + /xb3/xae + /xb3/xaf + /xb3/xb0 + /xb3/xb1 + /xb3/xb2 + /xb3/xb3 + /xb3/xb4 + /xb3/xb5 + /xb3/xb6 + /xb3/xb7 + /xb3/xb8 + /xb3/xb9 + /xb3/xba + /xb3/xbb + /xb3/xbc + /xb3/xbd + /xb3/xbe + /xb3/xbf + /xb3/xc0 + /xb3/xc1 + /xb3/xc2 + /xb3/xc3 + /xb3/xc4 + /xb3/xc5 + /xb3/xc6 + /xb3/xc7 + /xb3/xc8 + /xb3/xc9 + /xb3/xca + /xb3/xcb + /xb3/xcc + /xb3/xcd + /xb3/xce + /xb3/xcf + /xb3/xd0 + /xb3/xd1 + /xb3/xd2 + /xb3/xd3 + /xb3/xd4 + /xb3/xd5 + /xb3/xd6 + /xb3/xd7 + /xb3/xd8 + /xb3/xd9 + /xb3/xda + /xb3/xdb + /xb3/xdc + /xb3/xdd + /xb3/xde + /xb3/xdf + /xb3/xe0 + /xb3/xe1 + /xb3/xe2 + /xb3/xe3 + /xb3/xe4 + /xb3/xe5 + /xb3/xe6 + /xb3/xe7 + /xb3/xe8 + /xb3/xe9 + /xb3/xea + /xb3/xeb + /xb3/xec + /xb3/xed + /xb3/xee + /xb3/xef + /xb3/xf0 + /xb3/xf1 + /xb3/xf2 + /xb3/xf3 + /xb3/xf4 + /xb3/xf5 + /xb3/xf6 + /xb3/xf7 + /xb3/xf8 + /xb3/xf9 + /xb3/xfa + /xb3/xfb + /xb3/xfc + /xb3/xfd + /xb3/xfe + /xb4/xa1 + /xb4/xa2 + /xb4/xa3 + /xb4/xa4 + /xb4/xa5 + /xb4/xa6 + /xb4/xa7 + /xb4/xa8 + /xb4/xa9 + /xb4/xaa + /xb4/xab + /xb4/xac + /xb4/xad + /xb4/xae + /xb4/xaf + /xb4/xb0 + /xb4/xb1 + /xb4/xb2 + /xb4/xb3 + /xb4/xb4 + /xb4/xb5 + /xb4/xb6 + /xb4/xb7 + /xb4/xb8 + /xb4/xb9 + /xb4/xba + /xb4/xbb + /xb4/xbc + /xb4/xbd + /xb4/xbe + /xb4/xbf + /xb4/xc0 + /xb4/xc1 + /xb4/xc2 + /xb4/xc3 + /xb4/xc4 + /xb4/xc5 + /xb4/xc6 + /xb4/xc7 + /xb4/xc8 + /xb4/xc9 + /xb4/xca + /xb4/xcb + /xb4/xcc + /xb4/xcd + /xb4/xce + /xb4/xcf + /xb4/xd0 + /xb4/xd1 + /xb4/xd2 + /xb4/xd3 + /xb4/xd4 + /xb4/xd5 + /xb4/xd6 + /xb4/xd7 + /xb4/xd8 + /xb4/xd9 + /xb4/xda + /xb4/xdb + /xb4/xdc + /xb4/xdd + /xb4/xde + /xb4/xdf + /xb4/xe0 + /xb4/xe1 + /xb4/xe2 + /xb4/xe3 + /xb4/xe4 + /xb4/xe5 + /xb4/xe6 + /xb4/xe7 + /xb4/xe8 + /xb4/xe9 + /xb4/xea + /xb4/xeb + /xb4/xec + /xb4/xed + /xb4/xee + /xb4/xef + /xb4/xf0 + /xb4/xf1 + /xb4/xf2 + /xb4/xf3 + /xb4/xf4 + /xb4/xf5 + /xb4/xf6 + /xb4/xf7 + /xb4/xf8 + /xb4/xf9 + /xb4/xfa + /xb4/xfb + /xb4/xfc + /xb4/xfd + /xb4/xfe + /xb5/xa1 + /xb5/xa2 + /xb5/xa3 + /xb5/xa4 + /xb5/xa5 + /xb5/xa6 + /xb5/xa7 + /xb5/xa8 + /xb5/xa9 + /xb5/xaa + /xb5/xab + /xb5/xac + /xb5/xad + /xb5/xae + /xb5/xaf + /xb5/xb0 + /xb5/xb1 + /xb5/xb2 + /xb5/xb3 + /xb5/xb4 + /xb5/xb5 + /xb5/xb6 + /xb5/xb7 + /xb5/xb8 + /xb5/xb9 + /xb5/xba + /xb5/xbb + /xb5/xbc + /xb5/xbd + /xb5/xbe + /xb5/xbf + /xb5/xc0 + /xb5/xc1 + /xb5/xc2 + /xb5/xc3 + /xb5/xc4 + /xb5/xc5 + /xb5/xc6 + /xb5/xc7 + /xb5/xc8 + /xb5/xc9 + /xb5/xca + /xb5/xcb + /xb5/xcc + /xb5/xcd + /xb5/xce + /xb5/xcf + /xb5/xd0 + /xb5/xd1 + /xb5/xd2 + /xb5/xd3 + /xb5/xd4 + /xb5/xd5 + /xb5/xd6 + /xb5/xd7 + /xb5/xd8 + /xb5/xd9 + /xb5/xda + /xb5/xdb + /xb5/xdc + /xb5/xdd + /xb5/xde + /xb5/xdf + /xb5/xe0 + /xb5/xe1 + /xb5/xe2 + /xb5/xe3 + /xb5/xe4 + /xb5/xe5 + /xb5/xe6 + /xb5/xe7 + /xb5/xe8 + /xb5/xe9 + /xb5/xea + /xb5/xeb + /xb5/xec + /xb5/xed + /xb5/xee + /xb5/xef + /xb5/xf0 + /xb5/xf1 + /xb5/xf2 + /xb5/xf3 + /xb5/xf4 + /xb5/xf5 + /xb5/xf6 + /xb5/xf7 + /xb5/xf8 + /xb5/xf9 + /xb5/xfa + /xb5/xfb + /xb5/xfc + /xb5/xfd + /xb5/xfe + /xb6/xa1 + /xb6/xa2 + /xb6/xa3 + /xb6/xa4 + /xb6/xa5 + /xb6/xa6 + /xb6/xa7 + /xb6/xa8 + /xb6/xa9 + /xb6/xaa + /xb6/xab + /xb6/xac + /xb6/xad + /xb6/xae + /xb6/xaf + /xb6/xb0 + /xb6/xb1 + /xb6/xb2 + /xb6/xb3 + /xb6/xb4 + /xb6/xb5 + /xb6/xb6 + /xb6/xb7 + /xb6/xb8 + /xb6/xb9 + /xb6/xba + /xb6/xbb + /xb6/xbc + /xb6/xbd + /xb6/xbe + /xb6/xbf + /xb6/xc0 + /xb6/xc1 + /xb6/xc2 + /xb6/xc3 + /xb6/xc4 + /xb6/xc5 + /xb6/xc6 + /xb6/xc7 + /xb6/xc8 + /xb6/xc9 + /xb6/xca + /xb6/xcb + /xb6/xcc + /xb6/xcd + /xb6/xce + /xb6/xcf + /xb6/xd0 + /xb6/xd1 + /xb6/xd2 + /xb6/xd3 + /xb6/xd4 + /xb6/xd5 + /xb6/xd6 + /xb6/xd7 + /xb6/xd8 + /xb6/xd9 + /xb6/xda + /xb6/xdb + /xb6/xdc + /xb6/xdd + /xb6/xde + /xb6/xdf + /xb6/xe0 + /xb6/xe1 + /xb6/xe2 + /xb6/xe3 + /xb6/xe4 + /xb6/xe5 + /xb6/xe6 + /xb6/xe7 + /xb6/xe8 + /xb6/xe9 + /xb6/xea + /xb6/xeb + /xb6/xec + /xb6/xed + /xb6/xee + /xb6/xef + /xb6/xf0 + /xb6/xf1 + /xb6/xf2 + /xb6/xf3 + /xb6/xf4 + /xb6/xf5 + /xb6/xf6 + /xb6/xf7 + /xb6/xf8 + /xb6/xf9 + /xb6/xfa + /xb6/xfb + /xb6/xfc + /xb6/xfd + /xb6/xfe + /xb7/xa1 + /xb7/xa2 + /xb7/xa3 + /xb7/xa4 + /xb7/xa5 + /xb7/xa6 + /xb7/xa7 + /xb7/xa8 + /xb7/xa9 + /xb7/xaa + /xb7/xab + /xb7/xac + /xb7/xad + /xb7/xae + /xb7/xaf + /xb7/xb0 + /xb7/xb1 + /xb7/xb2 + /xb7/xb3 + /xb7/xb4 + /xb7/xb5 + /xb7/xb6 + /xb7/xb7 + /xb7/xb8 + /xb7/xb9 + /xb7/xba + /xb7/xbb + /xb7/xbc + /xb7/xbd + /xb7/xbe + /xb7/xbf + /xb7/xc0 + /xb7/xc1 + /xb7/xc2 + /xb7/xc3 + /xb7/xc4 + /xb7/xc5 + /xb7/xc6 + /xb7/xc7 + /xb7/xc8 + /xb7/xc9 + /xb7/xca + /xb7/xcb + /xb7/xcc + /xb7/xcd + /xb7/xce + /xb7/xcf + /xb7/xd0 + /xb7/xd1 + /xb7/xd2 + /xb7/xd3 + /xb7/xd4 + /xb7/xd5 + /xb7/xd6 + /xb7/xd7 + /xb7/xd8 + /xb7/xd9 + /xb7/xda + /xb7/xdb + /xb7/xdc + /xb7/xdd + /xb7/xde + /xb7/xdf + /xb7/xe0 + /xb7/xe1 + /xb7/xe2 + /xb7/xe3 + /xb7/xe4 + /xb7/xe5 + /xb7/xe6 + /xb7/xe7 + /xb7/xe8 + /xb7/xe9 + /xb7/xea + /xb7/xeb + /xb7/xec + /xb7/xed + /xb7/xee + /xb7/xef + /xb7/xf0 + /xb7/xf1 + /xb7/xf2 + /xb7/xf3 + /xb7/xf4 + /xb7/xf5 + /xb7/xf6 + /xb7/xf7 + /xb7/xf8 + /xb7/xf9 + /xb7/xfa + /xb7/xfb + /xb7/xfc + /xb7/xfd + /xb7/xfe + /xb8/xa1 + /xb8/xa2 + /xb8/xa3 + /xb8/xa4 + /xb8/xa5 + /xb8/xa6 + /xb8/xa7 + /xb8/xa8 + /xb8/xa9 + /xb8/xaa + /xb8/xab + /xb8/xac + /xb8/xad + /xb8/xae + /xb8/xaf + /xb8/xb0 + /xb8/xb1 + /xb8/xb2 + /xb8/xb3 + /xb8/xb4 + /xb8/xb5 + /xb8/xb6 + /xb8/xb7 + /xb8/xb8 + /xb8/xb9 + /xb8/xba + /xb8/xbb + /xb8/xbc + /xb8/xbd + /xb8/xbe + /xb8/xbf + /xb8/xc0 + /xb8/xc1 + /xb8/xc2 + /xb8/xc3 + /xb8/xc4 + /xb8/xc5 + /xb8/xc6 + /xb8/xc7 + /xb8/xc8 + /xb8/xc9 + /xb8/xca + /xb8/xcb + /xb8/xcc + /xb8/xcd + /xb8/xce + /xb8/xcf + /xb8/xd0 + /xb8/xd1 + /xb8/xd2 + /xb8/xd3 + /xb8/xd4 + /xb8/xd5 + /xb8/xd6 + /xb8/xd7 + /xb8/xd8 + /xb8/xd9 + /xb8/xda + /xb8/xdb + /xb8/xdc + /xb8/xdd + /xb8/xde + /xb8/xdf + /xb8/xe0 + /xb8/xe1 + /xb8/xe2 + /xb8/xe3 + /xb8/xe4 + /xb8/xe5 + /xb8/xe6 + /xb8/xe7 + /xb8/xe8 + /xb8/xe9 + /xb8/xea + /xb8/xeb + /xb8/xec + /xb8/xed + /xb8/xee + /xb8/xef + /xb8/xf0 + /xb8/xf1 + /xb8/xf2 + /xb8/xf3 + /xb8/xf4 + /xb8/xf5 + /xb8/xf6 + /xb8/xf7 + /xb8/xf8 + /xb8/xf9 + /xb8/xfa + /xb8/xfb + /xb8/xfc + /xb8/xfd + /xb8/xfe + /xb9/xa1 + /xb9/xa2 + /xb9/xa3 + /xb9/xa4 + /xb9/xa5 + /xb9/xa6 + /xb9/xa7 + /xb9/xa8 + /xb9/xa9 + /xb9/xaa + /xb9/xab + /xb9/xac + /xb9/xad + /xb9/xae + /xb9/xaf + /xb9/xb0 + /xb9/xb1 + /xb9/xb2 + /xb9/xb3 + /xb9/xb4 + /xb9/xb5 + /xb9/xb6 + /xb9/xb7 + /xb9/xb8 + /xb9/xb9 + /xb9/xba + /xb9/xbb + /xb9/xbc + /xb9/xbd + /xb9/xbe + /xb9/xbf + /xb9/xc0 + /xb9/xc1 + /xb9/xc2 + /xb9/xc3 + /xb9/xc4 + /xb9/xc5 + /xb9/xc6 + /xb9/xc7 + /xb9/xc8 + /xb9/xc9 + /xb9/xca + /xb9/xcb + /xb9/xcc + /xb9/xcd + /xb9/xce + /xb9/xcf + /xb9/xd0 + /xb9/xd1 + /xb9/xd2 + /xb9/xd3 + /xb9/xd4 + /xb9/xd5 + /xb9/xd6 + /xb9/xd7 + /xb9/xd8 + /xb9/xd9 + /xb9/xda + /xb9/xdb + /xb9/xdc + /xb9/xdd + /xb9/xde + /xb9/xdf + /xb9/xe0 + /xb9/xe1 + /xb9/xe2 + /xb9/xe3 + /xb9/xe4 + /xb9/xe5 + /xb9/xe6 + /xb9/xe7 + /xb9/xe8 + /xb9/xe9 + /xb9/xea + /xb9/xeb + /xb9/xec + /xb9/xed + /xb9/xee + /xb9/xef + /xb9/xf0 + /xb9/xf1 + /xb9/xf2 + /xb9/xf3 + /xb9/xf4 + /xb9/xf5 + /xb9/xf6 + /xb9/xf7 + /xb9/xf8 + /xb9/xf9 + /xb9/xfa + /xb9/xfb + /xb9/xfc + /xb9/xfd + /xb9/xfe + /xba/xa1 + /xba/xa2 + /xba/xa3 + /xba/xa4 + /xba/xa5 + /xba/xa6 + /xba/xa7 + /xba/xa8 + /xba/xa9 + /xba/xaa + /xba/xab + /xba/xac + /xba/xad + /xba/xae + /xba/xaf + /xba/xb0 + /xba/xb1 + /xba/xb2 + /xba/xb3 + /xba/xb4 + /xba/xb5 + /xba/xb6 + /xba/xb7 + /xba/xb8 + /xba/xb9 + /xba/xba + /xba/xbb + /xba/xbc + /xba/xbd + /xba/xbe + /xba/xbf + /xba/xc0 + /xba/xc1 + /xba/xc2 + /xba/xc3 + /xba/xc4 + /xba/xc5 + /xba/xc6 + /xba/xc7 + /xba/xc8 + /xba/xc9 + /xba/xca + /xba/xcb + /xba/xcc + /xba/xcd + /xba/xce + /xba/xcf + /xba/xd0 + /xba/xd1 + /xba/xd2 + /xba/xd3 + /xba/xd4 + /xba/xd5 + /xba/xd6 + /xba/xd7 + /xba/xd8 + /xba/xd9 + /xba/xda + /xba/xdb + /xba/xdc + /xba/xdd + /xba/xde + /xba/xdf + /xba/xe0 + /xba/xe1 + /xba/xe2 + /xba/xe3 + /xba/xe4 + /xba/xe5 + /xba/xe6 + /xba/xe7 + /xba/xe8 + /xba/xe9 + /xba/xea + /xba/xeb + /xba/xec + /xba/xed + /xba/xee + /xba/xef + /xba/xf0 + /xba/xf1 + /xba/xf2 + /xba/xf3 + /xba/xf4 + /xba/xf5 + /xba/xf6 + /xba/xf7 + /xba/xf8 + /xba/xf9 + /xba/xfa + /xba/xfb + /xba/xfc + /xba/xfd + /xba/xfe + /xbb/xa1 + /xbb/xa2 + /xbb/xa3 + /xbb/xa4 + /xbb/xa5 + /xbb/xa6 + /xbb/xa7 + /xbb/xa8 + /xbb/xa9 + /xbb/xaa + /xbb/xab + /xbb/xac + /xbb/xad + /xbb/xae + /xbb/xaf + /xbb/xb0 + /xbb/xb1 + /xbb/xb2 + /xbb/xb3 + /xbb/xb4 + /xbb/xb5 + /xbb/xb6 + /xbb/xb7 + /xbb/xb8 + /xbb/xb9 + /xbb/xba + /xbb/xbb + /xbb/xbc + /xbb/xbd + /xbb/xbe + /xbb/xbf + /xbb/xc0 + /xbb/xc1 + /xbb/xc2 + /xbb/xc3 + /xbb/xc4 + /xbb/xc5 + /xbb/xc6 + /xbb/xc7 + /xbb/xc8 + /xbb/xc9 + /xbb/xca + /xbb/xcb + /xbb/xcc + /xbb/xcd + /xbb/xce + /xbb/xcf + /xbb/xd0 + /xbb/xd1 + /xbb/xd2 + /xbb/xd3 + /xbb/xd4 + /xbb/xd5 + /xbb/xd6 + /xbb/xd7 + /xbb/xd8 + /xbb/xd9 + /xbb/xda + /xbb/xdb + /xbb/xdc + /xbb/xdd + /xbb/xde + /xbb/xdf + /xbb/xe0 + /xbb/xe1 + /xbb/xe2 + /xbb/xe3 + /xbb/xe4 + /xbb/xe5 + /xbb/xe6 + /xbb/xe7 + /xbb/xe8 + /xbb/xe9 + /xbb/xea + /xbb/xeb + /xbb/xec + /xbb/xed + /xbb/xee + /xbb/xef + /xbb/xf0 + /xbb/xf1 + /xbb/xf2 + /xbb/xf3 + /xbb/xf4 + /xbb/xf5 + /xbb/xf6 + /xbb/xf7 + /xbb/xf8 + /xbb/xf9 + /xbb/xfa + /xbb/xfb + /xbb/xfc + /xbb/xfd + /xbb/xfe + /xbc/xa1 + /xbc/xa2 + /xbc/xa3 + /xbc/xa4 + /xbc/xa5 + /xbc/xa6 + /xbc/xa7 + /xbc/xa8 + /xbc/xa9 + /xbc/xaa + /xbc/xab + /xbc/xac + /xbc/xad + /xbc/xae + /xbc/xaf + /xbc/xb0 + /xbc/xb1 + /xbc/xb2 + /xbc/xb3 + /xbc/xb4 + /xbc/xb5 + /xbc/xb6 + /xbc/xb7 + /xbc/xb8 + /xbc/xb9 + /xbc/xba + /xbc/xbb + /xbc/xbc + /xbc/xbd + /xbc/xbe + /xbc/xbf + /xbc/xc0 + /xbc/xc1 + /xbc/xc2 + /xbc/xc3 + /xbc/xc4 + /xbc/xc5 + /xbc/xc6 + /xbc/xc7 + /xbc/xc8 + /xbc/xc9 + /xbc/xca + /xbc/xcb + /xbc/xcc + /xbc/xcd + /xbc/xce + /xbc/xcf + /xbc/xd0 + /xbc/xd1 + /xbc/xd2 + /xbc/xd3 + /xbc/xd4 + /xbc/xd5 + /xbc/xd6 + /xbc/xd7 + /xbc/xd8 + /xbc/xd9 + /xbc/xda + /xbc/xdb + /xbc/xdc + /xbc/xdd + /xbc/xde + /xbc/xdf + /xbc/xe0 + /xbc/xe1 + /xbc/xe2 + /xbc/xe3 + /xbc/xe4 + /xbc/xe5 + /xbc/xe6 + /xbc/xe7 + /xbc/xe8 + /xbc/xe9 + /xbc/xea + /xbc/xeb + /xbc/xec + /xbc/xed + /xbc/xee + /xbc/xef + /xbc/xf0 + /xbc/xf1 + /xbc/xf2 + /xbc/xf3 + /xbc/xf4 + /xbc/xf5 + /xbc/xf6 + /xbc/xf7 + /xbc/xf8 + /xbc/xf9 + /xbc/xfa + /xbc/xfb + /xbc/xfc + /xbc/xfd + /xbc/xfe + /xbd/xa1 + /xbd/xa2 + /xbd/xa3 + /xbd/xa4 + /xbd/xa5 + /xbd/xa6 + /xbd/xa7 + /xbd/xa8 + /xbd/xa9 + /xbd/xaa + /xbd/xab + /xbd/xac + /xbd/xad + /xbd/xae + /xbd/xaf + /xbd/xb0 + /xbd/xb1 + /xbd/xb2 + /xbd/xb3 + /xbd/xb4 + /xbd/xb5 + /xbd/xb6 + /xbd/xb7 + /xbd/xb8 + /xbd/xb9 + /xbd/xba + /xbd/xbb + /xbd/xbc + /xbd/xbd + /xbd/xbe + /xbd/xbf + /xbd/xc0 + /xbd/xc1 + /xbd/xc2 + /xbd/xc3 + /xbd/xc4 + /xbd/xc5 + /xbd/xc6 + /xbd/xc7 + /xbd/xc8 + /xbd/xc9 + /xbd/xca + /xbd/xcb + /xbd/xcc + /xbd/xcd + /xbd/xce + /xbd/xcf + /xbd/xd0 + /xbd/xd1 + /xbd/xd2 + /xbd/xd3 + /xbd/xd4 + /xbd/xd5 + /xbd/xd6 + /xbd/xd7 + /xbd/xd8 + /xbd/xd9 + /xbd/xda + /xbd/xdb + /xbd/xdc + /xbd/xdd + /xbd/xde + /xbd/xdf + /xbd/xe0 + /xbd/xe1 + /xbd/xe2 + /xbd/xe3 + /xbd/xe4 + /xbd/xe5 + /xbd/xe6 + /xbd/xe7 + /xbd/xe8 + /xbd/xe9 + /xbd/xea + /xbd/xeb + /xbd/xec + /xbd/xed + /xbd/xee + /xbd/xef + /xbd/xf0 + /xbd/xf1 + /xbd/xf2 + /xbd/xf3 + /xbd/xf4 + /xbd/xf5 + /xbd/xf6 + /xbd/xf7 + /xbd/xf8 + /xbd/xf9 + /xbd/xfa + /xbd/xfb + /xbd/xfc + /xbd/xfd + /xbd/xfe + /xbe/xa1 + /xbe/xa2 + /xbe/xa3 + /xbe/xa4 + /xbe/xa5 + /xbe/xa6 + /xbe/xa7 + /xbe/xa8 + /xbe/xa9 + /xbe/xaa + /xbe/xab + /xbe/xac + /xbe/xad + /xbe/xae + /xbe/xaf + /xbe/xb0 + /xbe/xb1 + /xbe/xb2 + /xbe/xb3 + /xbe/xb4 + /xbe/xb5 + /xbe/xb6 + /xbe/xb7 + /xbe/xb8 + /xbe/xb9 + /xbe/xba + /xbe/xbb + /xbe/xbc + /xbe/xbd + /xbe/xbe + /xbe/xbf + /xbe/xc0 + /xbe/xc1 + /xbe/xc2 + /xbe/xc3 + /xbe/xc4 + /xbe/xc5 + /xbe/xc6 + /xbe/xc7 + /xbe/xc8 + /xbe/xc9 + /xbe/xca + /xbe/xcb + /xbe/xcc + /xbe/xcd + /xbe/xce + /xbe/xcf + /xbe/xd0 + /xbe/xd1 + /xbe/xd2 + /xbe/xd3 + /xbe/xd4 + /xbe/xd5 + /xbe/xd6 + /xbe/xd7 + /xbe/xd8 + /xbe/xd9 + /xbe/xda + /xbe/xdb + /xbe/xdc + /xbe/xdd + /xbe/xde + /xbe/xdf + /xbe/xe0 + /xbe/xe1 + /xbe/xe2 + /xbe/xe3 + /xbe/xe4 + /xbe/xe5 + /xbe/xe6 + /xbe/xe7 + /xbe/xe8 + /xbe/xe9 + /xbe/xea + /xbe/xeb + /xbe/xec + /xbe/xed + /xbe/xee + /xbe/xef + /xbe/xf0 + /xbe/xf1 + /xbe/xf2 + /xbe/xf3 + /xbe/xf4 + /xbe/xf5 + /xbe/xf6 + /xbe/xf7 + /xbe/xf8 + /xbe/xf9 + /xbe/xfa + /xbe/xfb + /xbe/xfc + /xbe/xfd + /xbe/xfe + /xbf/xa1 + /xbf/xa2 + /xbf/xa3 + /xbf/xa4 + /xbf/xa5 + /xbf/xa6 + /xbf/xa7 + /xbf/xa8 + /xbf/xa9 + /xbf/xaa + /xbf/xab + /xbf/xac + /xbf/xad + /xbf/xae + /xbf/xaf + /xbf/xb0 + /xbf/xb1 + /xbf/xb2 + /xbf/xb3 + /xbf/xb4 + /xbf/xb5 + /xbf/xb6 + /xbf/xb7 + /xbf/xb8 + /xbf/xb9 + /xbf/xba + /xbf/xbb + /xbf/xbc + /xbf/xbd + /xbf/xbe + /xbf/xbf + /xbf/xc0 + /xbf/xc1 + /xbf/xc2 + /xbf/xc3 + /xbf/xc4 + /xbf/xc5 + /xbf/xc6 + /xbf/xc7 + /xbf/xc8 + /xbf/xc9 + /xbf/xca + /xbf/xcb + /xbf/xcc + /xbf/xcd + /xbf/xce + /xbf/xcf + /xbf/xd0 + /xbf/xd1 + /xbf/xd2 + /xbf/xd3 + /xbf/xd4 + /xbf/xd5 + /xbf/xd6 + /xbf/xd7 + /xbf/xd8 + /xbf/xd9 + /xbf/xda + /xbf/xdb + /xbf/xdc + /xbf/xdd + /xbf/xde + /xbf/xdf + /xbf/xe0 + /xbf/xe1 + /xbf/xe2 + /xbf/xe3 + /xbf/xe4 + /xbf/xe5 + /xbf/xe6 + /xbf/xe7 + /xbf/xe8 + /xbf/xe9 + /xbf/xea + /xbf/xeb + /xbf/xec + /xbf/xed + /xbf/xee + /xbf/xef + /xbf/xf0 + /xbf/xf1 + /xbf/xf2 + /xbf/xf3 + /xbf/xf4 + /xbf/xf5 + /xbf/xf6 + /xbf/xf7 + /xbf/xf8 + /xbf/xf9 + /xbf/xfa + /xbf/xfb + /xbf/xfc + /xbf/xfd + /xbf/xfe + /xc0/xa1 + /xc0/xa2 + /xc0/xa3 + /xc0/xa4 + /xc0/xa5 + /xc0/xa6 + /xc0/xa7 + /xc0/xa8 + /xc0/xa9 + /xc0/xaa + /xc0/xab + /xc0/xac + /xc0/xad + /xc0/xae + /xc0/xaf + /xc0/xb0 + /xc0/xb1 + /xc0/xb2 + /xc0/xb3 + /xc0/xb4 + /xc0/xb5 + /xc0/xb6 + /xc0/xb7 + /xc0/xb8 + /xc0/xb9 + /xc0/xba + /xc0/xbb + /xc0/xbc + /xc0/xbd + /xc0/xbe + /xc0/xbf + /xc0/xc0 + /xc0/xc1 + /xc0/xc2 + /xc0/xc3 + /xc0/xc4 + /xc0/xc5 + /xc0/xc6 + /xc0/xc7 + /xc0/xc8 + /xc0/xc9 + /xc0/xca + /xc0/xcb + /xc0/xcc + /xc0/xcd + /xc0/xce + /xc0/xcf + /xc0/xd0 + /xc0/xd1 + /xc0/xd2 + /xc0/xd3 + /xc0/xd4 + /xc0/xd5 + /xc0/xd6 + /xc0/xd7 + /xc0/xd8 + /xc0/xd9 + /xc0/xda + /xc0/xdb + /xc0/xdc + /xc0/xdd + /xc0/xde + /xc0/xdf + /xc0/xe0 + /xc0/xe1 + /xc0/xe2 + /xc0/xe3 + /xc0/xe4 + /xc0/xe5 + /xc0/xe6 + /xc0/xe7 + /xc0/xe8 + /xc0/xe9 + /xc0/xea + /xc0/xeb + /xc0/xec + /xc0/xed + /xc0/xee + /xc0/xef + /xc0/xf0 + /xc0/xf1 + /xc0/xf2 + /xc0/xf3 + /xc0/xf4 + /xc0/xf5 + /xc0/xf6 + /xc0/xf7 + /xc0/xf8 + /xc0/xf9 + /xc0/xfa + /xc0/xfb + /xc0/xfc + /xc0/xfd + /xc0/xfe + /xc1/xa1 + /xc1/xa2 + /xc1/xa3 + /xc1/xa4 + /xc1/xa5 + /xc1/xa6 + /xc1/xa7 + /xc1/xa8 + /xc1/xa9 + /xc1/xaa + /xc1/xab + /xc1/xac + /xc1/xad + /xc1/xae + /xc1/xaf + /xc1/xb0 + /xc1/xb1 + /xc1/xb2 + /xc1/xb3 + /xc1/xb4 + /xc1/xb5 + /xc1/xb6 + /xc1/xb7 + /xc1/xb8 + /xc1/xb9 + /xc1/xba + /xc1/xbb + /xc1/xbc + /xc1/xbd + /xc1/xbe + /xc1/xbf + /xc1/xc0 + /xc1/xc1 + /xc1/xc2 + /xc1/xc3 + /xc1/xc4 + /xc1/xc5 + /xc1/xc6 + /xc1/xc7 + /xc1/xc8 + /xc1/xc9 + /xc1/xca + /xc1/xcb + /xc1/xcc + /xc1/xcd + /xc1/xce + /xc1/xcf + /xc1/xd0 + /xc1/xd1 + /xc1/xd2 + /xc1/xd3 + /xc1/xd4 + /xc1/xd5 + /xc1/xd6 + /xc1/xd7 + /xc1/xd8 + /xc1/xd9 + /xc1/xda + /xc1/xdb + /xc1/xdc + /xc1/xdd + /xc1/xde + /xc1/xdf + /xc1/xe0 + /xc1/xe1 + /xc1/xe2 + /xc1/xe3 + /xc1/xe4 + /xc1/xe5 + /xc1/xe6 + /xc1/xe7 + /xc1/xe8 + /xc1/xe9 + /xc1/xea + /xc1/xeb + /xc1/xec + /xc1/xed + /xc1/xee + /xc1/xef + /xc1/xf0 + /xc1/xf1 + /xc1/xf2 + /xc1/xf3 + /xc1/xf4 + /xc1/xf5 + /xc1/xf6 + /xc1/xf7 + /xc1/xf8 + /xc1/xf9 + /xc1/xfa + /xc1/xfb + /xc1/xfc + /xc1/xfd + /xc1/xfe + /xc2/xa1 + /xc2/xa2 + /xc2/xa3 + /xc2/xa4 + /xc2/xa5 + /xc2/xa6 + /xc2/xa7 + /xc2/xa8 + /xc2/xa9 + /xc2/xaa + /xc2/xab + /xc2/xac + /xc2/xad + /xc2/xae + /xc2/xaf + /xc2/xb0 + /xc2/xb1 + /xc2/xb2 + /xc2/xb3 + /xc2/xb4 + /xc2/xb5 + /xc2/xb6 + /xc2/xb7 + /xc2/xb8 + /xc2/xb9 + /xc2/xba + /xc2/xbb + /xc2/xbc + /xc2/xbd + /xc2/xbe + /xc2/xbf + /xc2/xc0 + /xc2/xc1 + /xc2/xc2 + /xc2/xc3 + /xc2/xc4 + /xc2/xc5 + /xc2/xc6 + /xc2/xc7 + /xc2/xc8 + /xc2/xc9 + /xc2/xca + /xc2/xcb + /xc2/xcc + /xc2/xcd + /xc2/xce + /xc2/xcf + /xc2/xd0 + /xc2/xd1 + /xc2/xd2 + /xc2/xd3 + /xc2/xd4 + /xc2/xd5 + /xc2/xd6 + /xc2/xd7 + /xc2/xd8 + /xc2/xd9 + /xc2/xda + /xc2/xdb + /xc2/xdc + /xc2/xdd + /xc2/xde + /xc2/xdf + /xc2/xe0 + /xc2/xe1 + /xc2/xe2 + /xc2/xe3 + /xc2/xe4 + /xc2/xe5 + /xc2/xe6 + /xc2/xe7 + /xc2/xe8 + /xc2/xe9 + /xc2/xea + /xc2/xeb + /xc2/xec + /xc2/xed + /xc2/xee + /xc2/xef + /xc2/xf0 + /xc2/xf1 + /xc2/xf2 + /xc2/xf3 + /xc2/xf4 + /xc2/xf5 + /xc2/xf6 + /xc2/xf7 + /xc2/xf8 + /xc2/xf9 + /xc2/xfa + /xc2/xfb + /xc2/xfc + /xc2/xfd + /xc2/xfe + /xc3/xa1 + /xc3/xa2 + /xc3/xa3 + /xc3/xa4 + /xc3/xa5 + /xc3/xa6 + /xc3/xa7 + /xc3/xa8 + /xc3/xa9 + /xc3/xaa + /xc3/xab + /xc3/xac + /xc3/xad + /xc3/xae + /xc3/xaf + /xc3/xb0 + /xc3/xb1 + /xc3/xb2 + /xc3/xb3 + /xc3/xb4 + /xc3/xb5 + /xc3/xb6 + /xc3/xb7 + /xc3/xb8 + /xc3/xb9 + /xc3/xba + /xc3/xbb + /xc3/xbc + /xc3/xbd + /xc3/xbe + /xc3/xbf + /xc3/xc0 + /xc3/xc1 + /xc3/xc2 + /xc3/xc3 + /xc3/xc4 + /xc3/xc5 + /xc3/xc6 + /xc3/xc7 + /xc3/xc8 + /xc3/xc9 + /xc3/xca + /xc3/xcb + /xc3/xcc + /xc3/xcd + /xc3/xce + /xc3/xcf + /xc3/xd0 + /xc3/xd1 + /xc3/xd2 + /xc3/xd3 + /xc3/xd4 + /xc3/xd5 + /xc3/xd6 + /xc3/xd7 + /xc3/xd8 + /xc3/xd9 + /xc3/xda + /xc3/xdb + /xc3/xdc + /xc3/xdd + /xc3/xde + /xc3/xdf + /xc3/xe0 + /xc3/xe1 + /xc3/xe2 + /xc3/xe3 + /xc3/xe4 + /xc3/xe5 + /xc3/xe6 + /xc3/xe7 + /xc3/xe8 + /xc3/xe9 + /xc3/xea + /xc3/xeb + /xc3/xec + /xc3/xed + /xc3/xee + /xc3/xef + /xc3/xf0 + /xc3/xf1 + /xc3/xf2 + /xc3/xf3 + /xc3/xf4 + /xc3/xf5 + /xc3/xf6 + /xc3/xf7 + /xc3/xf8 + /xc3/xf9 + /xc3/xfa + /xc3/xfb + /xc3/xfc + /xc3/xfd + /xc3/xfe + /xc4/xa1 + /xc4/xa2 + /xc4/xa3 + /xc4/xa4 + /xc4/xa5 + /xc4/xa6 + /xc4/xa7 + /xc4/xa8 + /xc4/xa9 + /xc4/xaa + /xc4/xab + /xc4/xac + /xc4/xad + /xc4/xae + /xc4/xaf + /xc4/xb0 + /xc4/xb1 + /xc4/xb2 + /xc4/xb3 + /xc4/xb4 + /xc4/xb5 + /xc4/xb6 + /xc4/xb7 + /xc4/xb8 + /xc4/xb9 + /xc4/xba + /xc4/xbb + /xc4/xbc + /xc4/xbd + /xc4/xbe + /xc4/xbf + /xc4/xc0 + /xc4/xc1 + /xc4/xc2 + /xc4/xc3 + /xc4/xc4 + /xc4/xc5 + /xc4/xc6 + /xc4/xc7 + /xc4/xc8 + /xc4/xc9 + /xc4/xca + /xc4/xcb + /xc4/xcc + /xc4/xcd + /xc4/xce + /xc4/xcf + /xc4/xd0 + /xc4/xd1 + /xc4/xd2 + /xc4/xd3 + /xc4/xd4 + /xc4/xd5 + /xc4/xd6 + /xc4/xd7 + /xc4/xd8 + /xc4/xd9 + /xc4/xda + /xc4/xdb + /xc4/xdc + /xc4/xdd + /xc4/xde + /xc4/xdf + /xc4/xe0 + /xc4/xe1 + /xc4/xe2 + /xc4/xe3 + /xc4/xe4 + /xc4/xe5 + /xc4/xe6 + /xc4/xe7 + /xc4/xe8 + /xc4/xe9 + /xc4/xea + /xc4/xeb + /xc4/xec + /xc4/xed + /xc4/xee + /xc4/xef + /xc4/xf0 + /xc4/xf1 + /xc4/xf2 + /xc4/xf3 + /xc4/xf4 + /xc4/xf5 + /xc4/xf6 + /xc4/xf7 + /xc4/xf8 + /xc4/xf9 + /xc4/xfa + /xc4/xfb + /xc4/xfc + /xc4/xfd + /xc4/xfe + /xc5/xa1 + /xc5/xa2 + /xc5/xa3 + /xc5/xa4 + /xc5/xa5 + /xc5/xa6 + /xc5/xa7 + /xc5/xa8 + /xc5/xa9 + /xc5/xaa + /xc5/xab + /xc5/xac + /xc5/xad + /xc5/xae + /xc5/xaf + /xc5/xb0 + /xc5/xb1 + /xc5/xb2 + /xc5/xb3 + /xc5/xb4 + /xc5/xb5 + /xc5/xb6 + /xc5/xb7 + /xc5/xb8 + /xc5/xb9 + /xc5/xba + /xc5/xbb + /xc5/xbc + /xc5/xbd + /xc5/xbe + /xc5/xbf + /xc5/xc0 + /xc5/xc1 + /xc5/xc2 + /xc5/xc3 + /xc5/xc4 + /xc5/xc5 + /xc5/xc6 + /xc5/xc7 + /xc5/xc8 + /xc5/xc9 + /xc5/xca + /xc5/xcb + /xc5/xcc + /xc5/xcd + /xc5/xce + /xc5/xcf + /xc5/xd0 + /xc5/xd1 + /xc5/xd2 + /xc5/xd3 + /xc5/xd4 + /xc5/xd5 + /xc5/xd6 + /xc5/xd7 + /xc5/xd8 + /xc5/xd9 + /xc5/xda + /xc5/xdb + /xc5/xdc + /xc5/xdd + /xc5/xde + /xc5/xdf + /xc5/xe0 + /xc5/xe1 + /xc5/xe2 + /xc5/xe3 + /xc5/xe4 + /xc5/xe5 + /xc5/xe6 + /xc5/xe7 + /xc5/xe8 + /xc5/xe9 + /xc5/xea + /xc5/xeb + /xc5/xec + /xc5/xed + /xc5/xee + /xc5/xef + /xc5/xf0 + /xc5/xf1 + /xc5/xf2 + /xc5/xf3 + /xc5/xf4 + /xc5/xf5 + /xc5/xf6 + /xc5/xf7 + /xc5/xf8 + /xc5/xf9 + /xc5/xfa + /xc5/xfb + /xc5/xfc + /xc5/xfd + /xc5/xfe + /xc6/xa1 + /xc6/xa2 + /xc6/xa3 + /xc6/xa4 + /xc6/xa5 + /xc6/xa6 + /xc6/xa7 + /xc6/xa8 + /xc6/xa9 + /xc6/xaa + /xc6/xab + /xc6/xac + /xc6/xad + /xc6/xae + /xc6/xaf + /xc6/xb0 + /xc6/xb1 + /xc6/xb2 + /xc6/xb3 + /xc6/xb4 + /xc6/xb5 + /xc6/xb6 + /xc6/xb7 + /xc6/xb8 + /xc6/xb9 + /xc6/xba + /xc6/xbb + /xc6/xbc + /xc6/xbd + /xc6/xbe + /xc6/xbf + /xc6/xc0 + /xc6/xc1 + /xc6/xc2 + /xc6/xc3 + /xc6/xc4 + /xc6/xc5 + /xc6/xc6 + /xc6/xc7 + /xc6/xc8 + /xc6/xc9 + /xc6/xca + /xc6/xcb + /xc6/xcc + /xc6/xcd + /xc6/xce + /xc6/xcf + /xc6/xd0 + /xc6/xd1 + /xc6/xd2 + /xc6/xd3 + /xc6/xd4 + /xc6/xd5 + /xc6/xd6 + /xc6/xd7 + /xc6/xd8 + /xc6/xd9 + /xc6/xda + /xc6/xdb + /xc6/xdc + /xc6/xdd + /xc6/xde + /xc6/xdf + /xc6/xe0 + /xc6/xe1 + /xc6/xe2 + /xc6/xe3 + /xc6/xe4 + /xc6/xe5 + /xc6/xe6 + /xc6/xe7 + /xc6/xe8 + /xc6/xe9 + /xc6/xea + /xc6/xeb + /xc6/xec + /xc6/xed + /xc6/xee + /xc6/xef + /xc6/xf0 + /xc6/xf1 + /xc6/xf2 + /xc6/xf3 + /xc6/xf4 + /xc6/xf5 + /xc6/xf6 + /xc6/xf7 + /xc6/xf8 + /xc6/xf9 + /xc6/xfa + /xc6/xfb + /xc6/xfc + /xc6/xfd + /xc6/xfe + /xc7/xa1 + /xc7/xa2 + /xc7/xa3 + /xc7/xa4 + /xc7/xa5 + /xc7/xa6 + /xc7/xa7 + /xc7/xa8 + /xc7/xa9 + /xc7/xaa + /xc7/xab + /xc7/xac + /xc7/xad + /xc7/xae + /xc7/xaf + /xc7/xb0 + /xc7/xb1 + /xc7/xb2 + /xc7/xb3 + /xc7/xb4 + /xc7/xb5 + /xc7/xb6 + /xc7/xb7 + /xc7/xb8 + /xc7/xb9 + /xc7/xba + /xc7/xbb + /xc7/xbc + /xc7/xbd + /xc7/xbe + /xc7/xbf + /xc7/xc0 + /xc7/xc1 + /xc7/xc2 + /xc7/xc3 + /xc7/xc4 + /xc7/xc5 + /xc7/xc6 + /xc7/xc7 + /xc7/xc8 + /xc7/xc9 + /xc7/xca + /xc7/xcb + /xc7/xcc + /xc7/xcd + /xc7/xce + /xc7/xcf + /xc7/xd0 + /xc7/xd1 + /xc7/xd2 + /xc7/xd3 + /xc7/xd4 + /xc7/xd5 + /xc7/xd6 + /xc7/xd7 + /xc7/xd8 + /xc7/xd9 + /xc7/xda + /xc7/xdb + /xc7/xdc + /xc7/xdd + /xc7/xde + /xc7/xdf + /xc7/xe0 + /xc7/xe1 + /xc7/xe2 + /xc7/xe3 + /xc7/xe4 + /xc7/xe5 + /xc7/xe6 + /xc7/xe7 + /xc7/xe8 + /xc7/xe9 + /xc7/xea + /xc7/xeb + /xc7/xec + /xc7/xed + /xc7/xee + /xc7/xef + /xc7/xf0 + /xc7/xf1 + /xc7/xf2 + /xc7/xf3 + /xc7/xf4 + /xc7/xf5 + /xc7/xf6 + /xc7/xf7 + /xc7/xf8 + /xc7/xf9 + /xc7/xfa + /xc7/xfb + /xc7/xfc + /xc7/xfd + /xc7/xfe + /xc8/xa1 + /xc8/xa2 + /xc8/xa3 + /xc8/xa4 + /xc8/xa5 + /xc8/xa6 + /xc8/xa7 + /xc8/xa8 + /xc8/xa9 + /xc8/xaa + /xc8/xab + /xc8/xac + /xc8/xad + /xc8/xae + /xc8/xaf + /xc8/xb0 + /xc8/xb1 + /xc8/xb2 + /xc8/xb3 + /xc8/xb4 + /xc8/xb5 + /xc8/xb6 + /xc8/xb7 + /xc8/xb8 + /xc8/xb9 + /xc8/xba + /xc8/xbb + /xc8/xbc + /xc8/xbd + /xc8/xbe + /xc8/xbf + /xc8/xc0 + /xc8/xc1 + /xc8/xc2 + /xc8/xc3 + /xc8/xc4 + /xc8/xc5 + /xc8/xc6 + /xc8/xc7 + /xc8/xc8 + /xc8/xc9 + /xc8/xca + /xc8/xcb + /xc8/xcc + /xc8/xcd + /xc8/xce + /xc8/xcf + /xc8/xd0 + /xc8/xd1 + /xc8/xd2 + /xc8/xd3 + /xc8/xd4 + /xc8/xd5 + /xc8/xd6 + /xc8/xd7 + /xc8/xd8 + /xc8/xd9 + /xc8/xda + /xc8/xdb + /xc8/xdc + /xc8/xdd + /xc8/xde + /xc8/xdf + /xc8/xe0 + /xc8/xe1 + /xc8/xe2 + /xc8/xe3 + /xc8/xe4 + /xc8/xe5 + /xc8/xe6 + /xc8/xe7 + /xc8/xe8 + /xc8/xe9 + /xc8/xea + /xc8/xeb + /xc8/xec + /xc8/xed + /xc8/xee + /xc8/xef + /xc8/xf0 + /xc8/xf1 + /xc8/xf2 + /xc8/xf3 + /xc8/xf4 + /xc8/xf5 + /xc8/xf6 + /xc8/xf7 + /xc8/xf8 + /xc8/xf9 + /xc8/xfa + /xc8/xfb + /xc8/xfc + /xc8/xfd + /xc8/xfe + /xc9/xa1 + /xc9/xa2 + /xc9/xa3 + /xc9/xa4 + /xc9/xa5 + /xc9/xa6 + /xc9/xa7 + /xc9/xa8 + /xc9/xa9 + /xc9/xaa + /xc9/xab + /xc9/xac + /xc9/xad + /xc9/xae + /xc9/xaf + /xc9/xb0 + /xc9/xb1 + /xc9/xb2 + /xc9/xb3 + /xc9/xb4 + /xc9/xb5 + /xc9/xb6 + /xc9/xb7 + /xc9/xb8 + /xc9/xb9 + /xc9/xba + /xc9/xbb + /xc9/xbc + /xc9/xbd + /xc9/xbe + /xc9/xbf + /xc9/xc0 + /xc9/xc1 + /xc9/xc2 + /xc9/xc3 + /xc9/xc4 + /xc9/xc5 + /xc9/xc6 + /xc9/xc7 + /xc9/xc8 + /xc9/xc9 + /xc9/xca + /xc9/xcb + /xc9/xcc + /xc9/xcd + /xc9/xce + /xc9/xcf + /xc9/xd0 + /xc9/xd1 + /xc9/xd2 + /xc9/xd3 + /xc9/xd4 + /xc9/xd5 + /xc9/xd6 + /xc9/xd7 + /xc9/xd8 + /xc9/xd9 + /xc9/xda + /xc9/xdb + /xc9/xdc + /xc9/xdd + /xc9/xde + /xc9/xdf + /xc9/xe0 + /xc9/xe1 + /xc9/xe2 + /xc9/xe3 + /xc9/xe4 + /xc9/xe5 + /xc9/xe6 + /xc9/xe7 + /xc9/xe8 + /xc9/xe9 + /xc9/xea + /xc9/xeb + /xc9/xec + /xc9/xed + /xc9/xee + /xc9/xef + /xc9/xf0 + /xc9/xf1 + /xc9/xf2 + /xc9/xf3 + /xc9/xf4 + /xc9/xf5 + /xc9/xf6 + /xc9/xf7 + /xc9/xf8 + /xc9/xf9 + /xc9/xfa + /xc9/xfb + /xc9/xfc + /xc9/xfd + /xc9/xfe + /xca/xa1 + /xca/xa2 + /xca/xa3 + /xca/xa4 + /xca/xa5 + /xca/xa6 + /xca/xa7 + /xca/xa8 + /xca/xa9 + /xca/xaa + /xca/xab + /xca/xac + /xca/xad + /xca/xae + /xca/xaf + /xca/xb0 + /xca/xb1 + /xca/xb2 + /xca/xb3 + /xca/xb4 + /xca/xb5 + /xca/xb6 + /xca/xb7 + /xca/xb8 + /xca/xb9 + /xca/xba + /xca/xbb + /xca/xbc + /xca/xbd + /xca/xbe + /xca/xbf + /xca/xc0 + /xca/xc1 + /xca/xc2 + /xca/xc3 + /xca/xc4 + /xca/xc5 + /xca/xc6 + /xca/xc7 + /xca/xc8 + /xca/xc9 + /xca/xca + /xca/xcb + /xca/xcc + /xca/xcd + /xca/xce + /xca/xcf + /xca/xd0 + /xca/xd1 + /xca/xd2 + /xca/xd3 + /xca/xd4 + /xca/xd5 + /xca/xd6 + /xca/xd7 + /xca/xd8 + /xca/xd9 + /xca/xda + /xca/xdb + /xca/xdc + /xca/xdd + /xca/xde + /xca/xdf + /xca/xe0 + /xca/xe1 + /xca/xe2 + /xca/xe3 + /xca/xe4 + /xca/xe5 + /xca/xe6 + /xca/xe7 + /xca/xe8 + /xca/xe9 + /xca/xea + /xca/xeb + /xca/xec + /xca/xed + /xca/xee + /xca/xef + /xca/xf0 + /xca/xf1 + /xca/xf2 + /xca/xf3 + /xca/xf4 + /xca/xf5 + /xca/xf6 + /xca/xf7 + /xca/xf8 + /xca/xf9 + /xca/xfa + /xca/xfb + /xca/xfc + /xca/xfd + /xca/xfe + /xcb/xa1 + /xcb/xa2 + /xcb/xa3 + /xcb/xa4 + /xcb/xa5 + /xcb/xa6 + /xcb/xa7 + /xcb/xa8 + /xcb/xa9 + /xcb/xaa + /xcb/xab + /xcb/xac + /xcb/xad + /xcb/xae + /xcb/xaf + /xcb/xb0 + /xcb/xb1 + /xcb/xb2 + /xcb/xb3 + /xcb/xb4 + /xcb/xb5 + /xcb/xb6 + /xcb/xb7 + /xcb/xb8 + /xcb/xb9 + /xcb/xba + /xcb/xbb + /xcb/xbc + /xcb/xbd + /xcb/xbe + /xcb/xbf + /xcb/xc0 + /xcb/xc1 + /xcb/xc2 + /xcb/xc3 + /xcb/xc4 + /xcb/xc5 + /xcb/xc6 + /xcb/xc7 + /xcb/xc8 + /xcb/xc9 + /xcb/xca + /xcb/xcb + /xcb/xcc + /xcb/xcd + /xcb/xce + /xcb/xcf + /xcb/xd0 + /xcb/xd1 + /xcb/xd2 + /xcb/xd3 + /xcb/xd4 + /xcb/xd5 + /xcb/xd6 + /xcb/xd7 + /xcb/xd8 + /xcb/xd9 + /xcb/xda + /xcb/xdb + /xcb/xdc + /xcb/xdd + /xcb/xde + /xcb/xdf + /xcb/xe0 + /xcb/xe1 + /xcb/xe2 + /xcb/xe3 + /xcb/xe4 + /xcb/xe5 + /xcb/xe6 + /xcb/xe7 + /xcb/xe8 + /xcb/xe9 + /xcb/xea + /xcb/xeb + /xcb/xec + /xcb/xed + /xcb/xee + /xcb/xef + /xcb/xf0 + /xcb/xf1 + /xcb/xf2 + /xcb/xf3 + /xcb/xf4 + /xcb/xf5 + /xcb/xf6 + /xcb/xf7 + /xcb/xf8 + /xcb/xf9 + /xcb/xfa + /xcb/xfb + /xcb/xfc + /xcb/xfd + /xcb/xfe + /xcc/xa1 + /xcc/xa2 + /xcc/xa3 + /xcc/xa4 + /xcc/xa5 + /xcc/xa6 + /xcc/xa7 + /xcc/xa8 + /xcc/xa9 + /xcc/xaa + /xcc/xab + /xcc/xac + /xcc/xad + /xcc/xae + /xcc/xaf + /xcc/xb0 + /xcc/xb1 + /xcc/xb2 + /xcc/xb3 + /xcc/xb4 + /xcc/xb5 + /xcc/xb6 + /xcc/xb7 + /xcc/xb8 + /xcc/xb9 + /xcc/xba + /xcc/xbb + /xcc/xbc + /xcc/xbd + /xcc/xbe + /xcc/xbf + /xcc/xc0 + /xcc/xc1 + /xcc/xc2 + /xcc/xc3 + /xcc/xc4 + /xcc/xc5 + /xcc/xc6 + /xcc/xc7 + /xcc/xc8 + /xcc/xc9 + /xcc/xca + /xcc/xcb + /xcc/xcc + /xcc/xcd + /xcc/xce + /xcc/xcf + /xcc/xd0 + /xcc/xd1 + /xcc/xd2 + /xcc/xd3 + /xcc/xd4 + /xcc/xd5 + /xcc/xd6 + /xcc/xd7 + /xcc/xd8 + /xcc/xd9 + /xcc/xda + /xcc/xdb + /xcc/xdc + /xcc/xdd + /xcc/xde + /xcc/xdf + /xcc/xe0 + /xcc/xe1 + /xcc/xe2 + /xcc/xe3 + /xcc/xe4 + /xcc/xe5 + /xcc/xe6 + /xcc/xe7 + /xcc/xe8 + /xcc/xe9 + /xcc/xea + /xcc/xeb + /xcc/xec + /xcc/xed + /xcc/xee + /xcc/xef + /xcc/xf0 + /xcc/xf1 + /xcc/xf2 + /xcc/xf3 + /xcc/xf4 + /xcc/xf5 + /xcc/xf6 + /xcc/xf7 + /xcc/xf8 + /xcc/xf9 + /xcc/xfa + /xcc/xfb + /xcc/xfc + /xcc/xfd + /xcc/xfe + /xcd/xa1 + /xcd/xa2 + /xcd/xa3 + /xcd/xa4 + /xcd/xa5 + /xcd/xa6 + /xcd/xa7 + /xcd/xa8 + /xcd/xa9 + /xcd/xaa + /xcd/xab + /xcd/xac + /xcd/xad + /xcd/xae + /xcd/xaf + /xcd/xb0 + /xcd/xb1 + /xcd/xb2 + /xcd/xb3 + /xcd/xb4 + /xcd/xb5 + /xcd/xb6 + /xcd/xb7 + /xcd/xb8 + /xcd/xb9 + /xcd/xba + /xcd/xbb + /xcd/xbc + /xcd/xbd + /xcd/xbe + /xcd/xbf + /xcd/xc0 + /xcd/xc1 + /xcd/xc2 + /xcd/xc3 + /xcd/xc4 + /xcd/xc5 + /xcd/xc6 + /xcd/xc7 + /xcd/xc8 + /xcd/xc9 + /xcd/xca + /xcd/xcb + /xcd/xcc + /xcd/xcd + /xcd/xce + /xcd/xcf + /xcd/xd0 + /xcd/xd1 + /xcd/xd2 + /xcd/xd3 + /xcd/xd4 + /xcd/xd5 + /xcd/xd6 + /xcd/xd7 + /xcd/xd8 + /xcd/xd9 + /xcd/xda + /xcd/xdb + /xcd/xdc + /xcd/xdd + /xcd/xde + /xcd/xdf + /xcd/xe0 + /xcd/xe1 + /xcd/xe2 + /xcd/xe3 + /xcd/xe4 + /xcd/xe5 + /xcd/xe6 + /xcd/xe7 + /xcd/xe8 + /xcd/xe9 + /xcd/xea + /xcd/xeb + /xcd/xec + /xcd/xed + /xcd/xee + /xcd/xef + /xcd/xf0 + /xcd/xf1 + /xcd/xf2 + /xcd/xf3 + /xcd/xf4 + /xcd/xf5 + /xcd/xf6 + /xcd/xf7 + /xcd/xf8 + /xcd/xf9 + /xcd/xfa + /xcd/xfb + /xcd/xfc + /xcd/xfd + /xcd/xfe + /xce/xa1 + /xce/xa2 + /xce/xa3 + /xce/xa4 + /xce/xa5 + /xce/xa6 + /xce/xa7 + /xce/xa8 + /xce/xa9 + /xce/xaa + /xce/xab + /xce/xac + /xce/xad + /xce/xae + /xce/xaf + /xce/xb0 + /xce/xb1 + /xce/xb2 + /xce/xb3 + /xce/xb4 + /xce/xb5 + /xce/xb6 + /xce/xb7 + /xce/xb8 + /xce/xb9 + /xce/xba + /xce/xbb + /xce/xbc + /xce/xbd + /xce/xbe + /xce/xbf + /xce/xc0 + /xce/xc1 + /xce/xc2 + /xce/xc3 + /xce/xc4 + /xce/xc5 + /xce/xc6 + /xce/xc7 + /xce/xc8 + /xce/xc9 + /xce/xca + /xce/xcb + /xce/xcc + /xce/xcd + /xce/xce + /xce/xcf + /xce/xd0 + /xce/xd1 + /xce/xd2 + /xce/xd3 + /xce/xd4 + /xce/xd5 + /xce/xd6 + /xce/xd7 + /xce/xd8 + /xce/xd9 + /xce/xda + /xce/xdb + /xce/xdc + /xce/xdd + /xce/xde + /xce/xdf + /xce/xe0 + /xce/xe1 + /xce/xe2 + /xce/xe3 + /xce/xe4 + /xce/xe5 + /xce/xe6 + /xce/xe7 + /xce/xe8 + /xce/xe9 + /xce/xea + /xce/xeb + /xce/xec + /xce/xed + /xce/xee + /xce/xef + /xce/xf0 + /xce/xf1 + /xce/xf2 + /xce/xf3 + /xce/xf4 + /xce/xf5 + /xce/xf6 + /xce/xf7 + /xce/xf8 + /xce/xf9 + /xce/xfa + /xce/xfb + /xce/xfc + /xce/xfd + /xce/xfe + /xcf/xa1 + /xcf/xa2 + /xcf/xa3 + /xcf/xa4 + /xcf/xa5 + /xcf/xa6 + /xcf/xa7 + /xcf/xa8 + /xcf/xa9 + /xcf/xaa + /xcf/xab + /xcf/xac + /xcf/xad + /xcf/xae + /xcf/xaf + /xcf/xb0 + /xcf/xb1 + /xcf/xb2 + /xcf/xb3 + /xcf/xb4 + /xcf/xb5 + /xcf/xb6 + /xcf/xb7 + /xcf/xb8 + /xcf/xb9 + /xcf/xba + /xcf/xbb + /xcf/xbc + /xcf/xbd + /xcf/xbe + /xcf/xbf + /xcf/xc0 + /xcf/xc1 + /xcf/xc2 + /xcf/xc3 + /xcf/xc4 + /xcf/xc5 + /xcf/xc6 + /xcf/xc7 + /xcf/xc8 + /xcf/xc9 + /xcf/xca + /xcf/xcb + /xcf/xcc + /xcf/xcd + /xcf/xce + /xcf/xcf + /xcf/xd0 + /xcf/xd1 + /xcf/xd2 + /xcf/xd3 + /xd0/xa1 + /xd0/xa2 + /xd0/xa3 + /xd0/xa4 + /xd0/xa5 + /xd0/xa6 + /xd0/xa7 + /xd0/xa8 + /xd0/xa9 + /xd0/xaa + /xd0/xab + /xd0/xac + /xd0/xad + /xd0/xae + /xd0/xaf + /xd0/xb0 + /xd0/xb1 + /xd0/xb2 + /xd0/xb3 + /xd0/xb4 + /xd0/xb5 + /xd0/xb6 + /xd0/xb7 + /xd0/xb8 + /xd0/xb9 + /xd0/xba + /xd0/xbb + /xd0/xbc + /xd0/xbd + /xd0/xbe + /xd0/xbf + /xd0/xc0 + /xd0/xc1 + /xd0/xc2 + /xd0/xc3 + /xd0/xc4 + /xd0/xc5 + /xd0/xc6 + /xd0/xc7 + /xd0/xc8 + /xd0/xc9 + /xd0/xca + /xd0/xcb + /xd0/xcc + /xd0/xcd + /xd0/xce + /xd0/xcf + /xd0/xd0 + /xd0/xd1 + /xd0/xd2 + /xd0/xd3 + /xd0/xd4 + /xd0/xd5 + /xd0/xd6 + /xd0/xd7 + /xd0/xd8 + /xd0/xd9 + /xd0/xda + /xd0/xdb + /xd0/xdc + /xd0/xdd + /xd0/xde + /xd0/xdf + /xd0/xe0 + /xd0/xe1 + /xd0/xe2 + /xd0/xe3 + /xd0/xe4 + /xd0/xe5 + /xd0/xe6 + /xd0/xe7 + /xd0/xe8 + /xd0/xe9 + /xd0/xea + /xd0/xeb + /xd0/xec + /xd0/xed + /xd0/xee + /xd0/xef + /xd0/xf0 + /xd0/xf1 + /xd0/xf2 + /xd0/xf3 + /xd0/xf4 + /xd0/xf5 + /xd0/xf6 + /xd0/xf7 + /xd0/xf8 + /xd0/xf9 + /xd0/xfa + /xd0/xfb + /xd0/xfc + /xd0/xfd + /xd0/xfe + /xd1/xa1 + /xd1/xa2 + /xd1/xa3 + /xd1/xa4 + /xd1/xa5 + /xd1/xa6 + /xd1/xa7 + /xd1/xa8 + /xd1/xa9 + /xd1/xaa + /xd1/xab + /xd1/xac + /xd1/xad + /xd1/xae + /xd1/xaf + /xd1/xb0 + /xd1/xb1 + /xd1/xb2 + /xd1/xb3 + /xd1/xb4 + /xd1/xb5 + /xd1/xb6 + /xd1/xb7 + /xd1/xb8 + /xd1/xb9 + /xd1/xba + /xd1/xbb + /xd1/xbc + /xd1/xbd + /xd1/xbe + /xd1/xbf + /xd1/xc0 + /xd1/xc1 + /xd1/xc2 + /xd1/xc3 + /xd1/xc4 + /xd1/xc5 + /xd1/xc6 + /xd1/xc7 + /xd1/xc8 + /xd1/xc9 + /xd1/xca + /xd1/xcb + /xd1/xcc + /xd1/xcd + /xd1/xce + /xd1/xcf + /xd1/xd0 + /xd1/xd1 + /xd1/xd2 + /xd1/xd3 + /xd1/xd4 + /xd1/xd5 + /xd1/xd6 + /xd1/xd7 + /xd1/xd8 + /xd1/xd9 + /xd1/xda + /xd1/xdb + /xd1/xdc + /xd1/xdd + /xd1/xde + /xd1/xdf + /xd1/xe0 + /xd1/xe1 + /xd1/xe2 + /xd1/xe3 + /xd1/xe4 + /xd1/xe5 + /xd1/xe6 + /xd1/xe7 + /xd1/xe8 + /xd1/xe9 + /xd1/xea + /xd1/xeb + /xd1/xec + /xd1/xed + /xd1/xee + /xd1/xef + /xd1/xf0 + /xd1/xf1 + /xd1/xf2 + /xd1/xf3 + /xd1/xf4 + /xd1/xf5 + /xd1/xf6 + /xd1/xf7 + /xd1/xf8 + /xd1/xf9 + /xd1/xfa + /xd1/xfb + /xd1/xfc + /xd1/xfd + /xd1/xfe + /xd2/xa1 + /xd2/xa2 + /xd2/xa3 + /xd2/xa4 + /xd2/xa5 + /xd2/xa6 + /xd2/xa7 + /xd2/xa8 + /xd2/xa9 + /xd2/xaa + /xd2/xab + /xd2/xac + /xd2/xad + /xd2/xae + /xd2/xaf + /xd2/xb0 + /xd2/xb1 + /xd2/xb2 + /xd2/xb3 + /xd2/xb4 + /xd2/xb5 + /xd2/xb6 + /xd2/xb7 + /xd2/xb8 + /xd2/xb9 + /xd2/xba + /xd2/xbb + /xd2/xbc + /xd2/xbd + /xd2/xbe + /xd2/xbf + /xd2/xc0 + /xd2/xc1 + /xd2/xc2 + /xd2/xc3 + /xd2/xc4 + /xd2/xc5 + /xd2/xc6 + /xd2/xc7 + /xd2/xc8 + /xd2/xc9 + /xd2/xca + /xd2/xcb + /xd2/xcc + /xd2/xcd + /xd2/xce + /xd2/xcf + /xd2/xd0 + /xd2/xd1 + /xd2/xd2 + /xd2/xd3 + /xd2/xd4 + /xd2/xd5 + /xd2/xd6 + /xd2/xd7 + /xd2/xd8 + /xd2/xd9 + /xd2/xda + /xd2/xdb + /xd2/xdc + /xd2/xdd + /xd2/xde + /xd2/xdf + /xd2/xe0 + /xd2/xe1 + /xd2/xe2 + /xd2/xe3 + /xd2/xe4 + /xd2/xe5 + /xd2/xe6 + /xd2/xe7 + /xd2/xe8 + /xd2/xe9 + /xd2/xea + /xd2/xeb + /xd2/xec + /xd2/xed + /xd2/xee + /xd2/xef + /xd2/xf0 + /xd2/xf1 + /xd2/xf2 + /xd2/xf3 + /xd2/xf4 + /xd2/xf5 + /xd2/xf6 + /xd2/xf7 + /xd2/xf8 + /xd2/xf9 + /xd2/xfa + /xd2/xfb + /xd2/xfc + /xd2/xfd + /xd2/xfe + /xd3/xa1 + /xd3/xa2 + /xd3/xa3 + /xd3/xa4 + /xd3/xa5 + /xd3/xa6 + /xd3/xa7 + /xd3/xa8 + /xd3/xa9 + /xd3/xaa + /xd3/xab + /xd3/xac + /xd3/xad + /xd3/xae + /xd3/xaf + /xd3/xb0 + /xd3/xb1 + /xd3/xb2 + /xd3/xb3 + /xd3/xb4 + /xd3/xb5 + /xd3/xb6 + /xd3/xb7 + /xd3/xb8 + /xd3/xb9 + /xd3/xba + /xd3/xbb + /xd3/xbc + /xd3/xbd + /xd3/xbe + /xd3/xbf + /xd3/xc0 + /xd3/xc1 + /xd3/xc2 + /xd3/xc3 + /xd3/xc4 + /xd3/xc5 + /xd3/xc6 + /xd3/xc7 + /xd3/xc8 + /xd3/xc9 + /xd3/xca + /xd3/xcb + /xd3/xcc + /xd3/xcd + /xd3/xce + /xd3/xcf + /xd3/xd0 + /xd3/xd1 + /xd3/xd2 + /xd3/xd3 + /xd3/xd4 + /xd3/xd5 + /xd3/xd6 + /xd3/xd7 + /xd3/xd8 + /xd3/xd9 + /xd3/xda + /xd3/xdb + /xd3/xdc + /xd3/xdd + /xd3/xde + /xd3/xdf + /xd3/xe0 + /xd3/xe1 + /xd3/xe2 + /xd3/xe3 + /xd3/xe4 + /xd3/xe5 + /xd3/xe6 + /xd3/xe7 + /xd3/xe8 + /xd3/xe9 + /xd3/xea + /xd3/xeb + /xd3/xec + /xd3/xed + /xd3/xee + /xd3/xef + /xd3/xf0 + /xd3/xf1 + /xd3/xf2 + /xd3/xf3 + /xd3/xf4 + /xd3/xf5 + /xd3/xf6 + /xd3/xf7 + /xd3/xf8 + /xd3/xf9 + /xd3/xfa + /xd3/xfb + /xd3/xfc + /xd3/xfd + /xd3/xfe + /xd4/xa1 + /xd4/xa2 + /xd4/xa3 + /xd4/xa4 + /xd4/xa5 + /xd4/xa6 + /xd4/xa7 + /xd4/xa8 + /xd4/xa9 + /xd4/xaa + /xd4/xab + /xd4/xac + /xd4/xad + /xd4/xae + /xd4/xaf + /xd4/xb0 + /xd4/xb1 + /xd4/xb2 + /xd4/xb3 + /xd4/xb4 + /xd4/xb5 + /xd4/xb6 + /xd4/xb7 + /xd4/xb8 + /xd4/xb9 + /xd4/xba + /xd4/xbb + /xd4/xbc + /xd4/xbd + /xd4/xbe + /xd4/xbf + /xd4/xc0 + /xd4/xc1 + /xd4/xc2 + /xd4/xc3 + /xd4/xc4 + /xd4/xc5 + /xd4/xc6 + /xd4/xc7 + /xd4/xc8 + /xd4/xc9 + /xd4/xca + /xd4/xcb + /xd4/xcc + /xd4/xcd + /xd4/xce + /xd4/xcf + /xd4/xd0 + /xd4/xd1 + /xd4/xd2 + /xd4/xd3 + /xd4/xd4 + /xd4/xd5 + /xd4/xd6 + /xd4/xd7 + /xd4/xd8 + /xd4/xd9 + /xd4/xda + /xd4/xdb + /xd4/xdc + /xd4/xdd + /xd4/xde + /xd4/xdf + /xd4/xe0 + /xd4/xe1 + /xd4/xe2 + /xd4/xe3 + /xd4/xe4 + /xd4/xe5 + /xd4/xe6 + /xd4/xe7 + /xd4/xe8 + /xd4/xe9 + /xd4/xea + /xd4/xeb + /xd4/xec + /xd4/xed + /xd4/xee + /xd4/xef + /xd4/xf0 + /xd4/xf1 + /xd4/xf2 + /xd4/xf3 + /xd4/xf4 + /xd4/xf5 + /xd4/xf6 + /xd4/xf7 + /xd4/xf8 + /xd4/xf9 + /xd4/xfa + /xd4/xfb + /xd4/xfc + /xd4/xfd + /xd4/xfe + /xd5/xa1 + /xd5/xa2 + /xd5/xa3 + /xd5/xa4 + /xd5/xa5 + /xd5/xa6 + /xd5/xa7 + /xd5/xa8 + /xd5/xa9 + /xd5/xaa + /xd5/xab + /xd5/xac + /xd5/xad + /xd5/xae + /xd5/xaf + /xd5/xb0 + /xd5/xb1 + /xd5/xb2 + /xd5/xb3 + /xd5/xb4 + /xd5/xb5 + /xd5/xb6 + /xd5/xb7 + /xd5/xb8 + /xd5/xb9 + /xd5/xba + /xd5/xbb + /xd5/xbc + /xd5/xbd + /xd5/xbe + /xd5/xbf + /xd5/xc0 + /xd5/xc1 + /xd5/xc2 + /xd5/xc3 + /xd5/xc4 + /xd5/xc5 + /xd5/xc6 + /xd5/xc7 + /xd5/xc8 + /xd5/xc9 + /xd5/xca + /xd5/xcb + /xd5/xcc + /xd5/xcd + /xd5/xce + /xd5/xcf + /xd5/xd0 + /xd5/xd1 + /xd5/xd2 + /xd5/xd3 + /xd5/xd4 + /xd5/xd5 + /xd5/xd6 + /xd5/xd7 + /xd5/xd8 + /xd5/xd9 + /xd5/xda + /xd5/xdb + /xd5/xdc + /xd5/xdd + /xd5/xde + /xd5/xdf + /xd5/xe0 + /xd5/xe1 + /xd5/xe2 + /xd5/xe3 + /xd5/xe4 + /xd5/xe5 + /xd5/xe6 + /xd5/xe7 + /xd5/xe8 + /xd5/xe9 + /xd5/xea + /xd5/xeb + /xd5/xec + /xd5/xed + /xd5/xee + /xd5/xef + /xd5/xf0 + /xd5/xf1 + /xd5/xf2 + /xd5/xf3 + /xd5/xf4 + /xd5/xf5 + /xd5/xf6 + /xd5/xf7 + /xd5/xf8 + /xd5/xf9 + /xd5/xfa + /xd5/xfb + /xd5/xfc + /xd5/xfd + /xd5/xfe + /xd6/xa1 + /xd6/xa2 + /xd6/xa3 + /xd6/xa4 + /xd6/xa5 + /xd6/xa6 + /xd6/xa7 + /xd6/xa8 + /xd6/xa9 + /xd6/xaa + /xd6/xab + /xd6/xac + /xd6/xad + /xd6/xae + /xd6/xaf + /xd6/xb0 + /xd6/xb1 + /xd6/xb2 + /xd6/xb3 + /xd6/xb4 + /xd6/xb5 + /xd6/xb6 + /xd6/xb7 + /xd6/xb8 + /xd6/xb9 + /xd6/xba + /xd6/xbb + /xd6/xbc + /xd6/xbd + /xd6/xbe + /xd6/xbf + /xd6/xc0 + /xd6/xc1 + /xd6/xc2 + /xd6/xc3 + /xd6/xc4 + /xd6/xc5 + /xd6/xc6 + /xd6/xc7 + /xd6/xc8 + /xd6/xc9 + /xd6/xca + /xd6/xcb + /xd6/xcc + /xd6/xcd + /xd6/xce + /xd6/xcf + /xd6/xd0 + /xd6/xd1 + /xd6/xd2 + /xd6/xd3 + /xd6/xd4 + /xd6/xd5 + /xd6/xd6 + /xd6/xd7 + /xd6/xd8 + /xd6/xd9 + /xd6/xda + /xd6/xdb + /xd6/xdc + /xd6/xdd + /xd6/xde + /xd6/xdf + /xd6/xe0 + /xd6/xe1 + /xd6/xe2 + /xd6/xe3 + /xd6/xe4 + /xd6/xe5 + /xd6/xe6 + /xd6/xe7 + /xd6/xe8 + /xd6/xe9 + /xd6/xea + /xd6/xeb + /xd6/xec + /xd6/xed + /xd6/xee + /xd6/xef + /xd6/xf0 + /xd6/xf1 + /xd6/xf2 + /xd6/xf3 + /xd6/xf4 + /xd6/xf5 + /xd6/xf6 + /xd6/xf7 + /xd6/xf8 + /xd6/xf9 + /xd6/xfa + /xd6/xfb + /xd6/xfc + /xd6/xfd + /xd6/xfe + /xd7/xa1 + /xd7/xa2 + /xd7/xa3 + /xd7/xa4 + /xd7/xa5 + /xd7/xa6 + /xd7/xa7 + /xd7/xa8 + /xd7/xa9 + /xd7/xaa + /xd7/xab + /xd7/xac + /xd7/xad + /xd7/xae + /xd7/xaf + /xd7/xb0 + /xd7/xb1 + /xd7/xb2 + /xd7/xb3 + /xd7/xb4 + /xd7/xb5 + /xd7/xb6 + /xd7/xb7 + /xd7/xb8 + /xd7/xb9 + /xd7/xba + /xd7/xbb + /xd7/xbc + /xd7/xbd + /xd7/xbe + /xd7/xbf + /xd7/xc0 + /xd7/xc1 + /xd7/xc2 + /xd7/xc3 + /xd7/xc4 + /xd7/xc5 + /xd7/xc6 + /xd7/xc7 + /xd7/xc8 + /xd7/xc9 + /xd7/xca + /xd7/xcb + /xd7/xcc + /xd7/xcd + /xd7/xce + /xd7/xcf + /xd7/xd0 + /xd7/xd1 + /xd7/xd2 + /xd7/xd3 + /xd7/xd4 + /xd7/xd5 + /xd7/xd6 + /xd7/xd7 + /xd7/xd8 + /xd7/xd9 + /xd7/xda + /xd7/xdb + /xd7/xdc + /xd7/xdd + /xd7/xde + /xd7/xdf + /xd7/xe0 + /xd7/xe1 + /xd7/xe2 + /xd7/xe3 + /xd7/xe4 + /xd7/xe5 + /xd7/xe6 + /xd7/xe7 + /xd7/xe8 + /xd7/xe9 + /xd7/xea + /xd7/xeb + /xd7/xec + /xd7/xed + /xd7/xee + /xd7/xef + /xd7/xf0 + /xd7/xf1 + /xd7/xf2 + /xd7/xf3 + /xd7/xf4 + /xd7/xf5 + /xd7/xf6 + /xd7/xf7 + /xd7/xf8 + /xd7/xf9 + /xd7/xfa + /xd7/xfb + /xd7/xfc + /xd7/xfd + /xd7/xfe + /xd8/xa1 + /xd8/xa2 + /xd8/xa3 + /xd8/xa4 + /xd8/xa5 + /xd8/xa6 + /xd8/xa7 + /xd8/xa8 + /xd8/xa9 + /xd8/xaa + /xd8/xab + /xd8/xac + /xd8/xad + /xd8/xae + /xd8/xaf + /xd8/xb0 + /xd8/xb1 + /xd8/xb2 + /xd8/xb3 + /xd8/xb4 + /xd8/xb5 + /xd8/xb6 + /xd8/xb7 + /xd8/xb8 + /xd8/xb9 + /xd8/xba + /xd8/xbb + /xd8/xbc + /xd8/xbd + /xd8/xbe + /xd8/xbf + /xd8/xc0 + /xd8/xc1 + /xd8/xc2 + /xd8/xc3 + /xd8/xc4 + /xd8/xc5 + /xd8/xc6 + /xd8/xc7 + /xd8/xc8 + /xd8/xc9 + /xd8/xca + /xd8/xcb + /xd8/xcc + /xd8/xcd + /xd8/xce + /xd8/xcf + /xd8/xd0 + /xd8/xd1 + /xd8/xd2 + /xd8/xd3 + /xd8/xd4 + /xd8/xd5 + /xd8/xd6 + /xd8/xd7 + /xd8/xd8 + /xd8/xd9 + /xd8/xda + /xd8/xdb + /xd8/xdc + /xd8/xdd + /xd8/xde + /xd8/xdf + /xd8/xe0 + /xd8/xe1 + /xd8/xe2 + /xd8/xe3 + /xd8/xe4 + /xd8/xe5 + /xd8/xe6 + /xd8/xe7 + /xd8/xe8 + /xd8/xe9 + /xd8/xea + /xd8/xeb + /xd8/xec + /xd8/xed + /xd8/xee + /xd8/xef + /xd8/xf0 + /xd8/xf1 + /xd8/xf2 + /xd8/xf3 + /xd8/xf4 + /xd8/xf5 + /xd8/xf6 + /xd8/xf7 + /xd8/xf8 + /xd8/xf9 + /xd8/xfa + /xd8/xfb + /xd8/xfc + /xd8/xfd + /xd8/xfe + /xd9/xa1 + /xd9/xa2 + /xd9/xa3 + /xd9/xa4 + /xd9/xa5 + /xd9/xa6 + /xd9/xa7 + /xd9/xa8 + /xd9/xa9 + /xd9/xaa + /xd9/xab + /xd9/xac + /xd9/xad + /xd9/xae + /xd9/xaf + /xd9/xb0 + /xd9/xb1 + /xd9/xb2 + /xd9/xb3 + /xd9/xb4 + /xd9/xb5 + /xd9/xb6 + /xd9/xb7 + /xd9/xb8 + /xd9/xb9 + /xd9/xba + /xd9/xbb + /xd9/xbc + /xd9/xbd + /xd9/xbe + /xd9/xbf + /xd9/xc0 + /xd9/xc1 + /xd9/xc2 + /xd9/xc3 + /xd9/xc4 + /xd9/xc5 + /xd9/xc6 + /xd9/xc7 + /xd9/xc8 + /xd9/xc9 + /xd9/xca + /xd9/xcb + /xd9/xcc + /xd9/xcd + /xd9/xce + /xd9/xcf + /xd9/xd0 + /xd9/xd1 + /xd9/xd2 + /xd9/xd3 + /xd9/xd4 + /xd9/xd5 + /xd9/xd6 + /xd9/xd7 + /xd9/xd8 + /xd9/xd9 + /xd9/xda + /xd9/xdb + /xd9/xdc + /xd9/xdd + /xd9/xde + /xd9/xdf + /xd9/xe0 + /xd9/xe1 + /xd9/xe2 + /xd9/xe3 + /xd9/xe4 + /xd9/xe5 + /xd9/xe6 + /xd9/xe7 + /xd9/xe8 + /xd9/xe9 + /xd9/xea + /xd9/xeb + /xd9/xec + /xd9/xed + /xd9/xee + /xd9/xef + /xd9/xf0 + /xd9/xf1 + /xd9/xf2 + /xd9/xf3 + /xd9/xf4 + /xd9/xf5 + /xd9/xf6 + /xd9/xf7 + /xd9/xf8 + /xd9/xf9 + /xd9/xfa + /xd9/xfb + /xd9/xfc + /xd9/xfd + /xd9/xfe + /xda/xa1 + /xda/xa2 + /xda/xa3 + /xda/xa4 + /xda/xa5 + /xda/xa6 + /xda/xa7 + /xda/xa8 + /xda/xa9 + /xda/xaa + /xda/xab + /xda/xac + /xda/xad + /xda/xae + /xda/xaf + /xda/xb0 + /xda/xb1 + /xda/xb2 + /xda/xb3 + /xda/xb4 + /xda/xb5 + /xda/xb6 + /xda/xb7 + /xda/xb8 + /xda/xb9 + /xda/xba + /xda/xbb + /xda/xbc + /xda/xbd + /xda/xbe + /xda/xbf + /xda/xc0 + /xda/xc1 + /xda/xc2 + /xda/xc3 + /xda/xc4 + /xda/xc5 + /xda/xc6 + /xda/xc7 + /xda/xc8 + /xda/xc9 + /xda/xca + /xda/xcb + /xda/xcc + /xda/xcd + /xda/xce + /xda/xcf + /xda/xd0 + /xda/xd1 + /xda/xd2 + /xda/xd3 + /xda/xd4 + /xda/xd5 + /xda/xd6 + /xda/xd7 + /xda/xd8 + /xda/xd9 + /xda/xda + /xda/xdb + /xda/xdc + /xda/xdd + /xda/xde + /xda/xdf + /xda/xe0 + /xda/xe1 + /xda/xe2 + /xda/xe3 + /xda/xe4 + /xda/xe5 + /xda/xe6 + /xda/xe7 + /xda/xe8 + /xda/xe9 + /xda/xea + /xda/xeb + /xda/xec + /xda/xed + /xda/xee + /xda/xef + /xda/xf0 + /xda/xf1 + /xda/xf2 + /xda/xf3 + /xda/xf4 + /xda/xf5 + /xda/xf6 + /xda/xf7 + /xda/xf8 + /xda/xf9 + /xda/xfa + /xda/xfb + /xda/xfc + /xda/xfd + /xda/xfe + /xdb/xa1 + /xdb/xa2 + /xdb/xa3 + /xdb/xa4 + /xdb/xa5 + /xdb/xa6 + /xdb/xa7 + /xdb/xa8 + /xdb/xa9 + /xdb/xaa + /xdb/xab + /xdb/xac + /xdb/xad + /xdb/xae + /xdb/xaf + /xdb/xb0 + /xdb/xb1 + /xdb/xb2 + /xdb/xb3 + /xdb/xb4 + /xdb/xb5 + /xdb/xb6 + /xdb/xb7 + /xdb/xb8 + /xdb/xb9 + /xdb/xba + /xdb/xbb + /xdb/xbc + /xdb/xbd + /xdb/xbe + /xdb/xbf + /xdb/xc0 + /xdb/xc1 + /xdb/xc2 + /xdb/xc3 + /xdb/xc4 + /xdb/xc5 + /xdb/xc6 + /xdb/xc7 + /xdb/xc8 + /xdb/xc9 + /xdb/xca + /xdb/xcb + /xdb/xcc + /xdb/xcd + /xdb/xce + /xdb/xcf + /xdb/xd0 + /xdb/xd1 + /xdb/xd2 + /xdb/xd3 + /xdb/xd4 + /xdb/xd5 + /xdb/xd6 + /xdb/xd7 + /xdb/xd8 + /xdb/xd9 + /xdb/xda + /xdb/xdb + /xdb/xdc + /xdb/xdd + /xdb/xde + /xdb/xdf + /xdb/xe0 + /xdb/xe1 + /xdb/xe2 + /xdb/xe3 + /xdb/xe4 + /xdb/xe5 + /xdb/xe6 + /xdb/xe7 + /xdb/xe8 + /xdb/xe9 + /xdb/xea + /xdb/xeb + /xdb/xec + /xdb/xed + /xdb/xee + /xdb/xef + /xdb/xf0 + /xdb/xf1 + /xdb/xf2 + /xdb/xf3 + /xdb/xf4 + /xdb/xf5 + /xdb/xf6 + /xdb/xf7 + /xdb/xf8 + /xdb/xf9 + /xdb/xfa + /xdb/xfb + /xdb/xfc + /xdb/xfd + /xdb/xfe + /xdc/xa1 + /xdc/xa2 + /xdc/xa3 + /xdc/xa4 + /xdc/xa5 + /xdc/xa6 + /xdc/xa7 + /xdc/xa8 + /xdc/xa9 + /xdc/xaa + /xdc/xab + /xdc/xac + /xdc/xad + /xdc/xae + /xdc/xaf + /xdc/xb0 + /xdc/xb1 + /xdc/xb2 + /xdc/xb3 + /xdc/xb4 + /xdc/xb5 + /xdc/xb6 + /xdc/xb7 + /xdc/xb8 + /xdc/xb9 + /xdc/xba + /xdc/xbb + /xdc/xbc + /xdc/xbd + /xdc/xbe + /xdc/xbf + /xdc/xc0 + /xdc/xc1 + /xdc/xc2 + /xdc/xc3 + /xdc/xc4 + /xdc/xc5 + /xdc/xc6 + /xdc/xc7 + /xdc/xc8 + /xdc/xc9 + /xdc/xca + /xdc/xcb + /xdc/xcc + /xdc/xcd + /xdc/xce + /xdc/xcf + /xdc/xd0 + /xdc/xd1 + /xdc/xd2 + /xdc/xd3 + /xdc/xd4 + /xdc/xd5 + /xdc/xd6 + /xdc/xd7 + /xdc/xd8 + /xdc/xd9 + /xdc/xda + /xdc/xdb + /xdc/xdc + /xdc/xdd + /xdc/xde + /xdc/xdf + /xdc/xe0 + /xdc/xe1 + /xdc/xe2 + /xdc/xe3 + /xdc/xe4 + /xdc/xe5 + /xdc/xe6 + /xdc/xe7 + /xdc/xe8 + /xdc/xe9 + /xdc/xea + /xdc/xeb + /xdc/xec + /xdc/xed + /xdc/xee + /xdc/xef + /xdc/xf0 + /xdc/xf1 + /xdc/xf2 + /xdc/xf3 + /xdc/xf4 + /xdc/xf5 + /xdc/xf6 + /xdc/xf7 + /xdc/xf8 + /xdc/xf9 + /xdc/xfa + /xdc/xfb + /xdc/xfc + /xdc/xfd + /xdc/xfe + /xdd/xa1 + /xdd/xa2 + /xdd/xa3 + /xdd/xa4 + /xdd/xa5 + /xdd/xa6 + /xdd/xa7 + /xdd/xa8 + /xdd/xa9 + /xdd/xaa + /xdd/xab + /xdd/xac + /xdd/xad + /xdd/xae + /xdd/xaf + /xdd/xb0 + /xdd/xb1 + /xdd/xb2 + /xdd/xb3 + /xdd/xb4 + /xdd/xb5 + /xdd/xb6 + /xdd/xb7 + /xdd/xb8 + /xdd/xb9 + /xdd/xba + /xdd/xbb + /xdd/xbc + /xdd/xbd + /xdd/xbe + /xdd/xbf + /xdd/xc0 + /xdd/xc1 + /xdd/xc2 + /xdd/xc3 + /xdd/xc4 + /xdd/xc5 + /xdd/xc6 + /xdd/xc7 + /xdd/xc8 + /xdd/xc9 + /xdd/xca + /xdd/xcb + /xdd/xcc + /xdd/xcd + /xdd/xce + /xdd/xcf + /xdd/xd0 + /xdd/xd1 + /xdd/xd2 + /xdd/xd3 + /xdd/xd4 + /xdd/xd5 + /xdd/xd6 + /xdd/xd7 + /xdd/xd8 + /xdd/xd9 + /xdd/xda + /xdd/xdb + /xdd/xdc + /xdd/xdd + /xdd/xde + /xdd/xdf + /xdd/xe0 + /xdd/xe1 + /xdd/xe2 + /xdd/xe3 + /xdd/xe4 + /xdd/xe5 + /xdd/xe6 + /xdd/xe7 + /xdd/xe8 + /xdd/xe9 + /xdd/xea + /xdd/xeb + /xdd/xec + /xdd/xed + /xdd/xee + /xdd/xef + /xdd/xf0 + /xdd/xf1 + /xdd/xf2 + /xdd/xf3 + /xdd/xf4 + /xdd/xf5 + /xdd/xf6 + /xdd/xf7 + /xdd/xf8 + /xdd/xf9 + /xdd/xfa + /xdd/xfb + /xdd/xfc + /xdd/xfd + /xdd/xfe + /xde/xa1 + /xde/xa2 + /xde/xa3 + /xde/xa4 + /xde/xa5 + /xde/xa6 + /xde/xa7 + /xde/xa8 + /xde/xa9 + /xde/xaa + /xde/xab + /xde/xac + /xde/xad + /xde/xae + /xde/xaf + /xde/xb0 + /xde/xb1 + /xde/xb2 + /xde/xb3 + /xde/xb4 + /xde/xb5 + /xde/xb6 + /xde/xb7 + /xde/xb8 + /xde/xb9 + /xde/xba + /xde/xbb + /xde/xbc + /xde/xbd + /xde/xbe + /xde/xbf + /xde/xc0 + /xde/xc1 + /xde/xc2 + /xde/xc3 + /xde/xc4 + /xde/xc5 + /xde/xc6 + /xde/xc7 + /xde/xc8 + /xde/xc9 + /xde/xca + /xde/xcb + /xde/xcc + /xde/xcd + /xde/xce + /xde/xcf + /xde/xd0 + /xde/xd1 + /xde/xd2 + /xde/xd3 + /xde/xd4 + /xde/xd5 + /xde/xd6 + /xde/xd7 + /xde/xd8 + /xde/xd9 + /xde/xda + /xde/xdb + /xde/xdc + /xde/xdd + /xde/xde + /xde/xdf + /xde/xe0 + /xde/xe1 + /xde/xe2 + /xde/xe3 + /xde/xe4 + /xde/xe5 + /xde/xe6 + /xde/xe7 + /xde/xe8 + /xde/xe9 + /xde/xea + /xde/xeb + /xde/xec + /xde/xed + /xde/xee + /xde/xef + /xde/xf0 + /xde/xf1 + /xde/xf2 + /xde/xf3 + /xde/xf4 + /xde/xf5 + /xde/xf6 + /xde/xf7 + /xde/xf8 + /xde/xf9 + /xde/xfa + /xde/xfb + /xde/xfc + /xde/xfd + /xde/xfe + /xdf/xa1 + /xdf/xa2 + /xdf/xa3 + /xdf/xa4 + /xdf/xa5 + /xdf/xa6 + /xdf/xa7 + /xdf/xa8 + /xdf/xa9 + /xdf/xaa + /xdf/xab + /xdf/xac + /xdf/xad + /xdf/xae + /xdf/xaf + /xdf/xb0 + /xdf/xb1 + /xdf/xb2 + /xdf/xb3 + /xdf/xb4 + /xdf/xb5 + /xdf/xb6 + /xdf/xb7 + /xdf/xb8 + /xdf/xb9 + /xdf/xba + /xdf/xbb + /xdf/xbc + /xdf/xbd + /xdf/xbe + /xdf/xbf + /xdf/xc0 + /xdf/xc1 + /xdf/xc2 + /xdf/xc3 + /xdf/xc4 + /xdf/xc5 + /xdf/xc6 + /xdf/xc7 + /xdf/xc8 + /xdf/xc9 + /xdf/xca + /xdf/xcb + /xdf/xcc + /xdf/xcd + /xdf/xce + /xdf/xcf + /xdf/xd0 + /xdf/xd1 + /xdf/xd2 + /xdf/xd3 + /xdf/xd4 + /xdf/xd5 + /xdf/xd6 + /xdf/xd7 + /xdf/xd8 + /xdf/xd9 + /xdf/xda + /xdf/xdb + /xdf/xdc + /xdf/xdd + /xdf/xde + /xdf/xdf + /xdf/xe0 + /xdf/xe1 + /xdf/xe2 + /xdf/xe3 + /xdf/xe4 + /xdf/xe5 + /xdf/xe6 + /xdf/xe7 + /xdf/xe8 + /xdf/xe9 + /xdf/xea + /xdf/xeb + /xdf/xec + /xdf/xed + /xdf/xee + /xdf/xef + /xdf/xf0 + /xdf/xf1 + /xdf/xf2 + /xdf/xf3 + /xdf/xf4 + /xdf/xf5 + /xdf/xf6 + /xdf/xf7 + /xdf/xf8 + /xdf/xf9 + /xdf/xfa + /xdf/xfb + /xdf/xfc + /xdf/xfd + /xdf/xfe + /xe0/xa1 + /xe0/xa2 + /xe0/xa3 + /xe0/xa4 + /xe0/xa5 + /xe0/xa6 + /xe0/xa7 + /xe0/xa8 + /xe0/xa9 + /xe0/xaa + /xe0/xab + /xe0/xac + /xe0/xad + /xe0/xae + /xe0/xaf + /xe0/xb0 + /xe0/xb1 + /xe0/xb2 + /xe0/xb3 + /xe0/xb4 + /xe0/xb5 + /xe0/xb6 + /xe0/xb7 + /xe0/xb8 + /xe0/xb9 + /xe0/xba + /xe0/xbb + /xe0/xbc + /xe0/xbd + /xe0/xbe + /xe0/xbf + /xe0/xc0 + /xe0/xc1 + /xe0/xc2 + /xe0/xc3 + /xe0/xc4 + /xe0/xc5 + /xe0/xc6 + /xe0/xc7 + /xe0/xc8 + /xe0/xc9 + /xe0/xca + /xe0/xcb + /xe0/xcc + /xe0/xcd + /xe0/xce + /xe0/xcf + /xe0/xd0 + /xe0/xd1 + /xe0/xd2 + /xe0/xd3 + /xe0/xd4 + /xe0/xd5 + /xe0/xd6 + /xe0/xd7 + /xe0/xd8 + /xe0/xd9 + /xe0/xda + /xe0/xdb + /xe0/xdc + /xe0/xdd + /xe0/xde + /xe0/xdf + /xe0/xe0 + /xe0/xe1 + /xe0/xe2 + /xe0/xe3 + /xe0/xe4 + /xe0/xe5 + /xe0/xe6 + /xe0/xe7 + /xe0/xe8 + /xe0/xe9 + /xe0/xea + /xe0/xeb + /xe0/xec + /xe0/xed + /xe0/xee + /xe0/xef + /xe0/xf0 + /xe0/xf1 + /xe0/xf2 + /xe0/xf3 + /xe0/xf4 + /xe0/xf5 + /xe0/xf6 + /xe0/xf7 + /xe0/xf8 + /xe0/xf9 + /xe0/xfa + /xe0/xfb + /xe0/xfc + /xe0/xfd + /xe0/xfe + /xe1/xa1 + /xe1/xa2 + /xe1/xa3 + /xe1/xa4 + /xe1/xa5 + /xe1/xa6 + /xe1/xa7 + /xe1/xa8 + /xe1/xa9 + /xe1/xaa + /xe1/xab + /xe1/xac + /xe1/xad + /xe1/xae + /xe1/xaf + /xe1/xb0 + /xe1/xb1 + /xe1/xb2 + /xe1/xb3 + /xe1/xb4 + /xe1/xb5 + /xe1/xb6 + /xe1/xb7 + /xe1/xb8 + /xe1/xb9 + /xe1/xba + /xe1/xbb + /xe1/xbc + /xe1/xbd + /xe1/xbe + /xe1/xbf + /xe1/xc0 + /xe1/xc1 + /xe1/xc2 + /xe1/xc3 + /xe1/xc4 + /xe1/xc5 + /xe1/xc6 + /xe1/xc7 + /xe1/xc8 + /xe1/xc9 + /xe1/xca + /xe1/xcb + /xe1/xcc + /xe1/xcd + /xe1/xce + /xe1/xcf + /xe1/xd0 + /xe1/xd1 + /xe1/xd2 + /xe1/xd3 + /xe1/xd4 + /xe1/xd5 + /xe1/xd6 + /xe1/xd7 + /xe1/xd8 + /xe1/xd9 + /xe1/xda + /xe1/xdb + /xe1/xdc + /xe1/xdd + /xe1/xde + /xe1/xdf + /xe1/xe0 + /xe1/xe1 + /xe1/xe2 + /xe1/xe3 + /xe1/xe4 + /xe1/xe5 + /xe1/xe6 + /xe1/xe7 + /xe1/xe8 + /xe1/xe9 + /xe1/xea + /xe1/xeb + /xe1/xec + /xe1/xed + /xe1/xee + /xe1/xef + /xe1/xf0 + /xe1/xf1 + /xe1/xf2 + /xe1/xf3 + /xe1/xf4 + /xe1/xf5 + /xe1/xf6 + /xe1/xf7 + /xe1/xf8 + /xe1/xf9 + /xe1/xfa + /xe1/xfb + /xe1/xfc + /xe1/xfd + /xe1/xfe + /xe2/xa1 + /xe2/xa2 + /xe2/xa3 + /xe2/xa4 + /xe2/xa5 + /xe2/xa6 + /xe2/xa7 + /xe2/xa8 + /xe2/xa9 + /xe2/xaa + /xe2/xab + /xe2/xac + /xe2/xad + /xe2/xae + /xe2/xaf + /xe2/xb0 + /xe2/xb1 + /xe2/xb2 + /xe2/xb3 + /xe2/xb4 + /xe2/xb5 + /xe2/xb6 + /xe2/xb7 + /xe2/xb8 + /xe2/xb9 + /xe2/xba + /xe2/xbb + /xe2/xbc + /xe2/xbd + /xe2/xbe + /xe2/xbf + /xe2/xc0 + /xe2/xc1 + /xe2/xc2 + /xe2/xc3 + /xe2/xc4 + /xe2/xc5 + /xe2/xc6 + /xe2/xc7 + /xe2/xc8 + /xe2/xc9 + /xe2/xca + /xe2/xcb + /xe2/xcc + /xe2/xcd + /xe2/xce + /xe2/xcf + /xe2/xd0 + /xe2/xd1 + /xe2/xd2 + /xe2/xd3 + /xe2/xd4 + /xe2/xd5 + /xe2/xd6 + /xe2/xd7 + /xe2/xd8 + /xe2/xd9 + /xe2/xda + /xe2/xdb + /xe2/xdc + /xe2/xdd + /xe2/xde + /xe2/xdf + /xe2/xe0 + /xe2/xe1 + /xe2/xe2 + /xe2/xe3 + /xe2/xe4 + /xe2/xe5 + /xe2/xe6 + /xe2/xe7 + /xe2/xe8 + /xe2/xe9 + /xe2/xea + /xe2/xeb + /xe2/xec + /xe2/xed + /xe2/xee + /xe2/xef + /xe2/xf0 + /xe2/xf1 + /xe2/xf2 + /xe2/xf3 + /xe2/xf4 + /xe2/xf5 + /xe2/xf6 + /xe2/xf7 + /xe2/xf8 + /xe2/xf9 + /xe2/xfa + /xe2/xfb + /xe2/xfc + /xe2/xfd + /xe2/xfe + /xe3/xa1 + /xe3/xa2 + /xe3/xa3 + /xe3/xa4 + /xe3/xa5 + /xe3/xa6 + /xe3/xa7 + /xe3/xa8 + /xe3/xa9 + /xe3/xaa + /xe3/xab + /xe3/xac + /xe3/xad + /xe3/xae + /xe3/xaf + /xe3/xb0 + /xe3/xb1 + /xe3/xb2 + /xe3/xb3 + /xe3/xb4 + /xe3/xb5 + /xe3/xb6 + /xe3/xb7 + /xe3/xb8 + /xe3/xb9 + /xe3/xba + /xe3/xbb + /xe3/xbc + /xe3/xbd + /xe3/xbe + /xe3/xbf + /xe3/xc0 + /xe3/xc1 + /xe3/xc2 + /xe3/xc3 + /xe3/xc4 + /xe3/xc5 + /xe3/xc6 + /xe3/xc7 + /xe3/xc8 + /xe3/xc9 + /xe3/xca + /xe3/xcb + /xe3/xcc + /xe3/xcd + /xe3/xce + /xe3/xcf + /xe3/xd0 + /xe3/xd1 + /xe3/xd2 + /xe3/xd3 + /xe3/xd4 + /xe3/xd5 + /xe3/xd6 + /xe3/xd7 + /xe3/xd8 + /xe3/xd9 + /xe3/xda + /xe3/xdb + /xe3/xdc + /xe3/xdd + /xe3/xde + /xe3/xdf + /xe3/xe0 + /xe3/xe1 + /xe3/xe2 + /xe3/xe3 + /xe3/xe4 + /xe3/xe5 + /xe3/xe6 + /xe3/xe7 + /xe3/xe8 + /xe3/xe9 + /xe3/xea + /xe3/xeb + /xe3/xec + /xe3/xed + /xe3/xee + /xe3/xef + /xe3/xf0 + /xe3/xf1 + /xe3/xf2 + /xe3/xf3 + /xe3/xf4 + /xe3/xf5 + /xe3/xf6 + /xe3/xf7 + /xe3/xf8 + /xe3/xf9 + /xe3/xfa + /xe3/xfb + /xe3/xfc + /xe3/xfd + /xe3/xfe + /xe4/xa1 + /xe4/xa2 + /xe4/xa3 + /xe4/xa4 + /xe4/xa5 + /xe4/xa6 + /xe4/xa7 + /xe4/xa8 + /xe4/xa9 + /xe4/xaa + /xe4/xab + /xe4/xac + /xe4/xad + /xe4/xae + /xe4/xaf + /xe4/xb0 + /xe4/xb1 + /xe4/xb2 + /xe4/xb3 + /xe4/xb4 + /xe4/xb5 + /xe4/xb6 + /xe4/xb7 + /xe4/xb8 + /xe4/xb9 + /xe4/xba + /xe4/xbb + /xe4/xbc + /xe4/xbd + /xe4/xbe + /xe4/xbf + /xe4/xc0 + /xe4/xc1 + /xe4/xc2 + /xe4/xc3 + /xe4/xc4 + /xe4/xc5 + /xe4/xc6 + /xe4/xc7 + /xe4/xc8 + /xe4/xc9 + /xe4/xca + /xe4/xcb + /xe4/xcc + /xe4/xcd + /xe4/xce + /xe4/xcf + /xe4/xd0 + /xe4/xd1 + /xe4/xd2 + /xe4/xd3 + /xe4/xd4 + /xe4/xd5 + /xe4/xd6 + /xe4/xd7 + /xe4/xd8 + /xe4/xd9 + /xe4/xda + /xe4/xdb + /xe4/xdc + /xe4/xdd + /xe4/xde + /xe4/xdf + /xe4/xe0 + /xe4/xe1 + /xe4/xe2 + /xe4/xe3 + /xe4/xe4 + /xe4/xe5 + /xe4/xe6 + /xe4/xe7 + /xe4/xe8 + /xe4/xe9 + /xe4/xea + /xe4/xeb + /xe4/xec + /xe4/xed + /xe4/xee + /xe4/xef + /xe4/xf0 + /xe4/xf1 + /xe4/xf2 + /xe4/xf3 + /xe4/xf4 + /xe4/xf5 + /xe4/xf6 + /xe4/xf7 + /xe4/xf8 + /xe4/xf9 + /xe4/xfa + /xe4/xfb + /xe4/xfc + /xe4/xfd + /xe4/xfe + /xe5/xa1 + /xe5/xa2 + /xe5/xa3 + /xe5/xa4 + /xe5/xa5 + /xe5/xa6 + /xe5/xa7 + /xe5/xa8 + /xe5/xa9 + /xe5/xaa + /xe5/xab + /xe5/xac + /xe5/xad + /xe5/xae + /xe5/xaf + /xe5/xb0 + /xe5/xb1 + /xe5/xb2 + /xe5/xb3 + /xe5/xb4 + /xe5/xb5 + /xe5/xb6 + /xe5/xb7 + /xe5/xb8 + /xe5/xb9 + /xe5/xba + /xe5/xbb + /xe5/xbc + /xe5/xbd + /xe5/xbe + /xe5/xbf + /xe5/xc0 + /xe5/xc1 + /xe5/xc2 + /xe5/xc3 + /xe5/xc4 + /xe5/xc5 + /xe5/xc6 + /xe5/xc7 + /xe5/xc8 + /xe5/xc9 + /xe5/xca + /xe5/xcb + /xe5/xcc + /xe5/xcd + /xe5/xce + /xe5/xcf + /xe5/xd0 + /xe5/xd1 + /xe5/xd2 + /xe5/xd3 + /xe5/xd4 + /xe5/xd5 + /xe5/xd6 + /xe5/xd7 + /xe5/xd8 + /xe5/xd9 + /xe5/xda + /xe5/xdb + /xe5/xdc + /xe5/xdd + /xe5/xde + /xe5/xdf + /xe5/xe0 + /xe5/xe1 + /xe5/xe2 + /xe5/xe3 + /xe5/xe4 + /xe5/xe5 + /xe5/xe6 + /xe5/xe7 + /xe5/xe8 + /xe5/xe9 + /xe5/xea + /xe5/xeb + /xe5/xec + /xe5/xed + /xe5/xee + /xe5/xef + /xe5/xf0 + /xe5/xf1 + /xe5/xf2 + /xe5/xf3 + /xe5/xf4 + /xe5/xf5 + /xe5/xf6 + /xe5/xf7 + /xe5/xf8 + /xe5/xf9 + /xe5/xfa + /xe5/xfb + /xe5/xfc + /xe5/xfd + /xe5/xfe + /xe6/xa1 + /xe6/xa2 + /xe6/xa3 + /xe6/xa4 + /xe6/xa5 + /xe6/xa6 + /xe6/xa7 + /xe6/xa8 + /xe6/xa9 + /xe6/xaa + /xe6/xab + /xe6/xac + /xe6/xad + /xe6/xae + /xe6/xaf + /xe6/xb0 + /xe6/xb1 + /xe6/xb2 + /xe6/xb3 + /xe6/xb4 + /xe6/xb5 + /xe6/xb6 + /xe6/xb7 + /xe6/xb8 + /xe6/xb9 + /xe6/xba + /xe6/xbb + /xe6/xbc + /xe6/xbd + /xe6/xbe + /xe6/xbf + /xe6/xc0 + /xe6/xc1 + /xe6/xc2 + /xe6/xc3 + /xe6/xc4 + /xe6/xc5 + /xe6/xc6 + /xe6/xc7 + /xe6/xc8 + /xe6/xc9 + /xe6/xca + /xe6/xcb + /xe6/xcc + /xe6/xcd + /xe6/xce + /xe6/xcf + /xe6/xd0 + /xe6/xd1 + /xe6/xd2 + /xe6/xd3 + /xe6/xd4 + /xe6/xd5 + /xe6/xd6 + /xe6/xd7 + /xe6/xd8 + /xe6/xd9 + /xe6/xda + /xe6/xdb + /xe6/xdc + /xe6/xdd + /xe6/xde + /xe6/xdf + /xe6/xe0 + /xe6/xe1 + /xe6/xe2 + /xe6/xe3 + /xe6/xe4 + /xe6/xe5 + /xe6/xe6 + /xe6/xe7 + /xe6/xe8 + /xe6/xe9 + /xe6/xea + /xe6/xeb + /xe6/xec + /xe6/xed + /xe6/xee + /xe6/xef + /xe6/xf0 + /xe6/xf1 + /xe6/xf2 + /xe6/xf3 + /xe6/xf4 + /xe6/xf5 + /xe6/xf6 + /xe6/xf7 + /xe6/xf8 + /xe6/xf9 + /xe6/xfa + /xe6/xfb + /xe6/xfc + /xe6/xfd + /xe6/xfe + /xe7/xa1 + /xe7/xa2 + /xe7/xa3 + /xe7/xa4 + /xe7/xa5 + /xe7/xa6 + /xe7/xa7 + /xe7/xa8 + /xe7/xa9 + /xe7/xaa + /xe7/xab + /xe7/xac + /xe7/xad + /xe7/xae + /xe7/xaf + /xe7/xb0 + /xe7/xb1 + /xe7/xb2 + /xe7/xb3 + /xe7/xb4 + /xe7/xb5 + /xe7/xb6 + /xe7/xb7 + /xe7/xb8 + /xe7/xb9 + /xe7/xba + /xe7/xbb + /xe7/xbc + /xe7/xbd + /xe7/xbe + /xe7/xbf + /xe7/xc0 + /xe7/xc1 + /xe7/xc2 + /xe7/xc3 + /xe7/xc4 + /xe7/xc5 + /xe7/xc6 + /xe7/xc7 + /xe7/xc8 + /xe7/xc9 + /xe7/xca + /xe7/xcb + /xe7/xcc + /xe7/xcd + /xe7/xce + /xe7/xcf + /xe7/xd0 + /xe7/xd1 + /xe7/xd2 + /xe7/xd3 + /xe7/xd4 + /xe7/xd5 + /xe7/xd6 + /xe7/xd7 + /xe7/xd8 + /xe7/xd9 + /xe7/xda + /xe7/xdb + /xe7/xdc + /xe7/xdd + /xe7/xde + /xe7/xdf + /xe7/xe0 + /xe7/xe1 + /xe7/xe2 + /xe7/xe3 + /xe7/xe4 + /xe7/xe5 + /xe7/xe6 + /xe7/xe7 + /xe7/xe8 + /xe7/xe9 + /xe7/xea + /xe7/xeb + /xe7/xec + /xe7/xed + /xe7/xee + /xe7/xef + /xe7/xf0 + /xe7/xf1 + /xe7/xf2 + /xe7/xf3 + /xe7/xf4 + /xe7/xf5 + /xe7/xf6 + /xe7/xf7 + /xe7/xf8 + /xe7/xf9 + /xe7/xfa + /xe7/xfb + /xe7/xfc + /xe7/xfd + /xe7/xfe + /xe8/xa1 + /xe8/xa2 + /xe8/xa3 + /xe8/xa4 + /xe8/xa5 + /xe8/xa6 + /xe8/xa7 + /xe8/xa8 + /xe8/xa9 + /xe8/xaa + /xe8/xab + /xe8/xac + /xe8/xad + /xe8/xae + /xe8/xaf + /xe8/xb0 + /xe8/xb1 + /xe8/xb2 + /xe8/xb3 + /xe8/xb4 + /xe8/xb5 + /xe8/xb6 + /xe8/xb7 + /xe8/xb8 + /xe8/xb9 + /xe8/xba + /xe8/xbb + /xe8/xbc + /xe8/xbd + /xe8/xbe + /xe8/xbf + /xe8/xc0 + /xe8/xc1 + /xe8/xc2 + /xe8/xc3 + /xe8/xc4 + /xe8/xc5 + /xe8/xc6 + /xe8/xc7 + /xe8/xc8 + /xe8/xc9 + /xe8/xca + /xe8/xcb + /xe8/xcc + /xe8/xcd + /xe8/xce + /xe8/xcf + /xe8/xd0 + /xe8/xd1 + /xe8/xd2 + /xe8/xd3 + /xe8/xd4 + /xe8/xd5 + /xe8/xd6 + /xe8/xd7 + /xe8/xd8 + /xe8/xd9 + /xe8/xda + /xe8/xdb + /xe8/xdc + /xe8/xdd + /xe8/xde + /xe8/xdf + /xe8/xe0 + /xe8/xe1 + /xe8/xe2 + /xe8/xe3 + /xe8/xe4 + /xe8/xe5 + /xe8/xe6 + /xe8/xe7 + /xe8/xe8 + /xe8/xe9 + /xe8/xea + /xe8/xeb + /xe8/xec + /xe8/xed + /xe8/xee + /xe8/xef + /xe8/xf0 + /xe8/xf1 + /xe8/xf2 + /xe8/xf3 + /xe8/xf4 + /xe8/xf5 + /xe8/xf6 + /xe8/xf7 + /xe8/xf8 + /xe8/xf9 + /xe8/xfa + /xe8/xfb + /xe8/xfc + /xe8/xfd + /xe8/xfe + /xe9/xa1 + /xe9/xa2 + /xe9/xa3 + /xe9/xa4 + /xe9/xa5 + /xe9/xa6 + /xe9/xa7 + /xe9/xa8 + /xe9/xa9 + /xe9/xaa + /xe9/xab + /xe9/xac + /xe9/xad + /xe9/xae + /xe9/xaf + /xe9/xb0 + /xe9/xb1 + /xe9/xb2 + /xe9/xb3 + /xe9/xb4 + /xe9/xb5 + /xe9/xb6 + /xe9/xb7 + /xe9/xb8 + /xe9/xb9 + /xe9/xba + /xe9/xbb + /xe9/xbc + /xe9/xbd + /xe9/xbe + /xe9/xbf + /xe9/xc0 + /xe9/xc1 + /xe9/xc2 + /xe9/xc3 + /xe9/xc4 + /xe9/xc5 + /xe9/xc6 + /xe9/xc7 + /xe9/xc8 + /xe9/xc9 + /xe9/xca + /xe9/xcb + /xe9/xcc + /xe9/xcd + /xe9/xce + /xe9/xcf + /xe9/xd0 + /xe9/xd1 + /xe9/xd2 + /xe9/xd3 + /xe9/xd4 + /xe9/xd5 + /xe9/xd6 + /xe9/xd7 + /xe9/xd8 + /xe9/xd9 + /xe9/xda + /xe9/xdb + /xe9/xdc + /xe9/xdd + /xe9/xde + /xe9/xdf + /xe9/xe0 + /xe9/xe1 + /xe9/xe2 + /xe9/xe3 + /xe9/xe4 + /xe9/xe5 + /xe9/xe6 + /xe9/xe7 + /xe9/xe8 + /xe9/xe9 + /xe9/xea + /xe9/xeb + /xe9/xec + /xe9/xed + /xe9/xee + /xe9/xef + /xe9/xf0 + /xe9/xf1 + /xe9/xf2 + /xe9/xf3 + /xe9/xf4 + /xe9/xf5 + /xe9/xf6 + /xe9/xf7 + /xe9/xf8 + /xe9/xf9 + /xe9/xfa + /xe9/xfb + /xe9/xfc + /xe9/xfd + /xe9/xfe + /xea/xa1 + /xea/xa2 + /xea/xa3 + /xea/xa4 + /xea/xa5 + /xea/xa6 + /xea/xa7 + /xea/xa8 + /xea/xa9 + /xea/xaa + /xea/xab + /xea/xac + /xea/xad + /xea/xae + /xea/xaf + /xea/xb0 + /xea/xb1 + /xea/xb2 + /xea/xb3 + /xea/xb4 + /xea/xb5 + /xea/xb6 + /xea/xb7 + /xea/xb8 + /xea/xb9 + /xea/xba + /xea/xbb + /xea/xbc + /xea/xbd + /xea/xbe + /xea/xbf + /xea/xc0 + /xea/xc1 + /xea/xc2 + /xea/xc3 + /xea/xc4 + /xea/xc5 + /xea/xc6 + /xea/xc7 + /xea/xc8 + /xea/xc9 + /xea/xca + /xea/xcb + /xea/xcc + /xea/xcd + /xea/xce + /xea/xcf + /xea/xd0 + /xea/xd1 + /xea/xd2 + /xea/xd3 + /xea/xd4 + /xea/xd5 + /xea/xd6 + /xea/xd7 + /xea/xd8 + /xea/xd9 + /xea/xda + /xea/xdb + /xea/xdc + /xea/xdd + /xea/xde + /xea/xdf + /xea/xe0 + /xea/xe1 + /xea/xe2 + /xea/xe3 + /xea/xe4 + /xea/xe5 + /xea/xe6 + /xea/xe7 + /xea/xe8 + /xea/xe9 + /xea/xea + /xea/xeb + /xea/xec + /xea/xed + /xea/xee + /xea/xef + /xea/xf0 + /xea/xf1 + /xea/xf2 + /xea/xf3 + /xea/xf4 + /xea/xf5 + /xea/xf6 + /xea/xf7 + /xea/xf8 + /xea/xf9 + /xea/xfa + /xea/xfb + /xea/xfc + /xea/xfd + /xea/xfe + /xeb/xa1 + /xeb/xa2 + /xeb/xa3 + /xeb/xa4 + /xeb/xa5 + /xeb/xa6 + /xeb/xa7 + /xeb/xa8 + /xeb/xa9 + /xeb/xaa + /xeb/xab + /xeb/xac + /xeb/xad + /xeb/xae + /xeb/xaf + /xeb/xb0 + /xeb/xb1 + /xeb/xb2 + /xeb/xb3 + /xeb/xb4 + /xeb/xb5 + /xeb/xb6 + /xeb/xb7 + /xeb/xb8 + /xeb/xb9 + /xeb/xba + /xeb/xbb + /xeb/xbc + /xeb/xbd + /xeb/xbe + /xeb/xbf + /xeb/xc0 + /xeb/xc1 + /xeb/xc2 + /xeb/xc3 + /xeb/xc4 + /xeb/xc5 + /xeb/xc6 + /xeb/xc7 + /xeb/xc8 + /xeb/xc9 + /xeb/xca + /xeb/xcb + /xeb/xcc + /xeb/xcd + /xeb/xce + /xeb/xcf + /xeb/xd0 + /xeb/xd1 + /xeb/xd2 + /xeb/xd3 + /xeb/xd4 + /xeb/xd5 + /xeb/xd6 + /xeb/xd7 + /xeb/xd8 + /xeb/xd9 + /xeb/xda + /xeb/xdb + /xeb/xdc + /xeb/xdd + /xeb/xde + /xeb/xdf + /xeb/xe0 + /xeb/xe1 + /xeb/xe2 + /xeb/xe3 + /xeb/xe4 + /xeb/xe5 + /xeb/xe6 + /xeb/xe7 + /xeb/xe8 + /xeb/xe9 + /xeb/xea + /xeb/xeb + /xeb/xec + /xeb/xed + /xeb/xee + /xeb/xef + /xeb/xf0 + /xeb/xf1 + /xeb/xf2 + /xeb/xf3 + /xeb/xf4 + /xeb/xf5 + /xeb/xf6 + /xeb/xf7 + /xeb/xf8 + /xeb/xf9 + /xeb/xfa + /xeb/xfb + /xeb/xfc + /xeb/xfd + /xeb/xfe + /xec/xa1 + /xec/xa2 + /xec/xa3 + /xec/xa4 + /xec/xa5 + /xec/xa6 + /xec/xa7 + /xec/xa8 + /xec/xa9 + /xec/xaa + /xec/xab + /xec/xac + /xec/xad + /xec/xae + /xec/xaf + /xec/xb0 + /xec/xb1 + /xec/xb2 + /xec/xb3 + /xec/xb4 + /xec/xb5 + /xec/xb6 + /xec/xb7 + /xec/xb8 + /xec/xb9 + /xec/xba + /xec/xbb + /xec/xbc + /xec/xbd + /xec/xbe + /xec/xbf + /xec/xc0 + /xec/xc1 + /xec/xc2 + /xec/xc3 + /xec/xc4 + /xec/xc5 + /xec/xc6 + /xec/xc7 + /xec/xc8 + /xec/xc9 + /xec/xca + /xec/xcb + /xec/xcc + /xec/xcd + /xec/xce + /xec/xcf + /xec/xd0 + /xec/xd1 + /xec/xd2 + /xec/xd3 + /xec/xd4 + /xec/xd5 + /xec/xd6 + /xec/xd7 + /xec/xd8 + /xec/xd9 + /xec/xda + /xec/xdb + /xec/xdc + /xec/xdd + /xec/xde + /xec/xdf + /xec/xe0 + /xec/xe1 + /xec/xe2 + /xec/xe3 + /xec/xe4 + /xec/xe5 + /xec/xe6 + /xec/xe7 + /xec/xe8 + /xec/xe9 + /xec/xea + /xec/xeb + /xec/xec + /xec/xed + /xec/xee + /xec/xef + /xec/xf0 + /xec/xf1 + /xec/xf2 + /xec/xf3 + /xec/xf4 + /xec/xf5 + /xec/xf6 + /xec/xf7 + /xec/xf8 + /xec/xf9 + /xec/xfa + /xec/xfb + /xec/xfc + /xec/xfd + /xec/xfe + /xed/xa1 + /xed/xa2 + /xed/xa3 + /xed/xa4 + /xed/xa5 + /xed/xa6 + /xed/xa7 + /xed/xa8 + /xed/xa9 + /xed/xaa + /xed/xab + /xed/xac + /xed/xad + /xed/xae + /xed/xaf + /xed/xb0 + /xed/xb1 + /xed/xb2 + /xed/xb3 + /xed/xb4 + /xed/xb5 + /xed/xb6 + /xed/xb7 + /xed/xb8 + /xed/xb9 + /xed/xba + /xed/xbb + /xed/xbc + /xed/xbd + /xed/xbe + /xed/xbf + /xed/xc0 + /xed/xc1 + /xed/xc2 + /xed/xc3 + /xed/xc4 + /xed/xc5 + /xed/xc6 + /xed/xc7 + /xed/xc8 + /xed/xc9 + /xed/xca + /xed/xcb + /xed/xcc + /xed/xcd + /xed/xce + /xed/xcf + /xed/xd0 + /xed/xd1 + /xed/xd2 + /xed/xd3 + /xed/xd4 + /xed/xd5 + /xed/xd6 + /xed/xd7 + /xed/xd8 + /xed/xd9 + /xed/xda + /xed/xdb + /xed/xdc + /xed/xdd + /xed/xde + /xed/xdf + /xed/xe0 + /xed/xe1 + /xed/xe2 + /xed/xe3 + /xed/xe4 + /xed/xe5 + /xed/xe6 + /xed/xe7 + /xed/xe8 + /xed/xe9 + /xed/xea + /xed/xeb + /xed/xec + /xed/xed + /xed/xee + /xed/xef + /xed/xf0 + /xed/xf1 + /xed/xf2 + /xed/xf3 + /xed/xf4 + /xed/xf5 + /xed/xf6 + /xed/xf7 + /xed/xf8 + /xed/xf9 + /xed/xfa + /xed/xfb + /xed/xfc + /xed/xfd + /xed/xfe + /xee/xa1 + /xee/xa2 + /xee/xa3 + /xee/xa4 + /xee/xa5 + /xee/xa6 + /xee/xa7 + /xee/xa8 + /xee/xa9 + /xee/xaa + /xee/xab + /xee/xac + /xee/xad + /xee/xae + /xee/xaf + /xee/xb0 + /xee/xb1 + /xee/xb2 + /xee/xb3 + /xee/xb4 + /xee/xb5 + /xee/xb6 + /xee/xb7 + /xee/xb8 + /xee/xb9 + /xee/xba + /xee/xbb + /xee/xbc + /xee/xbd + /xee/xbe + /xee/xbf + /xee/xc0 + /xee/xc1 + /xee/xc2 + /xee/xc3 + /xee/xc4 + /xee/xc5 + /xee/xc6 + /xee/xc7 + /xee/xc8 + /xee/xc9 + /xee/xca + /xee/xcb + /xee/xcc + /xee/xcd + /xee/xce + /xee/xcf + /xee/xd0 + /xee/xd1 + /xee/xd2 + /xee/xd3 + /xee/xd4 + /xee/xd5 + /xee/xd6 + /xee/xd7 + /xee/xd8 + /xee/xd9 + /xee/xda + /xee/xdb + /xee/xdc + /xee/xdd + /xee/xde + /xee/xdf + /xee/xe0 + /xee/xe1 + /xee/xe2 + /xee/xe3 + /xee/xe4 + /xee/xe5 + /xee/xe6 + /xee/xe7 + /xee/xe8 + /xee/xe9 + /xee/xea + /xee/xeb + /xee/xec + /xee/xed + /xee/xee + /xee/xef + /xee/xf0 + /xee/xf1 + /xee/xf2 + /xee/xf3 + /xee/xf4 + /xee/xf5 + /xee/xf6 + /xee/xf7 + /xee/xf8 + /xee/xf9 + /xee/xfa + /xee/xfb + /xee/xfc + /xee/xfd + /xee/xfe + /xef/xa1 + /xef/xa2 + /xef/xa3 + /xef/xa4 + /xef/xa5 + /xef/xa6 + /xef/xa7 + /xef/xa8 + /xef/xa9 + /xef/xaa + /xef/xab + /xef/xac + /xef/xad + /xef/xae + /xef/xaf + /xef/xb0 + /xef/xb1 + /xef/xb2 + /xef/xb3 + /xef/xb4 + /xef/xb5 + /xef/xb6 + /xef/xb7 + /xef/xb8 + /xef/xb9 + /xef/xba + /xef/xbb + /xef/xbc + /xef/xbd + /xef/xbe + /xef/xbf + /xef/xc0 + /xef/xc1 + /xef/xc2 + /xef/xc3 + /xef/xc4 + /xef/xc5 + /xef/xc6 + /xef/xc7 + /xef/xc8 + /xef/xc9 + /xef/xca + /xef/xcb + /xef/xcc + /xef/xcd + /xef/xce + /xef/xcf + /xef/xd0 + /xef/xd1 + /xef/xd2 + /xef/xd3 + /xef/xd4 + /xef/xd5 + /xef/xd6 + /xef/xd7 + /xef/xd8 + /xef/xd9 + /xef/xda + /xef/xdb + /xef/xdc + /xef/xdd + /xef/xde + /xef/xdf + /xef/xe0 + /xef/xe1 + /xef/xe2 + /xef/xe3 + /xef/xe4 + /xef/xe5 + /xef/xe6 + /xef/xe7 + /xef/xe8 + /xef/xe9 + /xef/xea + /xef/xeb + /xef/xec + /xef/xed + /xef/xee + /xef/xef + /xef/xf0 + /xef/xf1 + /xef/xf2 + /xef/xf3 + /xef/xf4 + /xef/xf5 + /xef/xf6 + /xef/xf7 + /xef/xf8 + /xef/xf9 + /xef/xfa + /xef/xfb + /xef/xfc + /xef/xfd + /xef/xfe + /xf0/xa1 + /xf0/xa2 + /xf0/xa3 + /xf0/xa4 + /xf0/xa5 + /xf0/xa6 + /xf0/xa7 + /xf0/xa8 + /xf0/xa9 + /xf0/xaa + /xf0/xab + /xf0/xac + /xf0/xad + /xf0/xae + /xf0/xaf + /xf0/xb0 + /xf0/xb1 + /xf0/xb2 + /xf0/xb3 + /xf0/xb4 + /xf0/xb5 + /xf0/xb6 + /xf0/xb7 + /xf0/xb8 + /xf0/xb9 + /xf0/xba + /xf0/xbb + /xf0/xbc + /xf0/xbd + /xf0/xbe + /xf0/xbf + /xf0/xc0 + /xf0/xc1 + /xf0/xc2 + /xf0/xc3 + /xf0/xc4 + /xf0/xc5 + /xf0/xc6 + /xf0/xc7 + /xf0/xc8 + /xf0/xc9 + /xf0/xca + /xf0/xcb + /xf0/xcc + /xf0/xcd + /xf0/xce + /xf0/xcf + /xf0/xd0 + /xf0/xd1 + /xf0/xd2 + /xf0/xd3 + /xf0/xd4 + /xf0/xd5 + /xf0/xd6 + /xf0/xd7 + /xf0/xd8 + /xf0/xd9 + /xf0/xda + /xf0/xdb + /xf0/xdc + /xf0/xdd + /xf0/xde + /xf0/xdf + /xf0/xe0 + /xf0/xe1 + /xf0/xe2 + /xf0/xe3 + /xf0/xe4 + /xf0/xe5 + /xf0/xe6 + /xf0/xe7 + /xf0/xe8 + /xf0/xe9 + /xf0/xea + /xf0/xeb + /xf0/xec + /xf0/xed + /xf0/xee + /xf0/xef + /xf0/xf0 + /xf0/xf1 + /xf0/xf2 + /xf0/xf3 + /xf0/xf4 + /xf0/xf5 + /xf0/xf6 + /xf0/xf7 + /xf0/xf8 + /xf0/xf9 + /xf0/xfa + /xf0/xfb + /xf0/xfc + /xf0/xfd + /xf0/xfe + /xf1/xa1 + /xf1/xa2 + /xf1/xa3 + /xf1/xa4 + /xf1/xa5 + /xf1/xa6 + /xf1/xa7 + /xf1/xa8 + /xf1/xa9 + /xf1/xaa + /xf1/xab + /xf1/xac + /xf1/xad + /xf1/xae + /xf1/xaf + /xf1/xb0 + /xf1/xb1 + /xf1/xb2 + /xf1/xb3 + /xf1/xb4 + /xf1/xb5 + /xf1/xb6 + /xf1/xb7 + /xf1/xb8 + /xf1/xb9 + /xf1/xba + /xf1/xbb + /xf1/xbc + /xf1/xbd + /xf1/xbe + /xf1/xbf + /xf1/xc0 + /xf1/xc1 + /xf1/xc2 + /xf1/xc3 + /xf1/xc4 + /xf1/xc5 + /xf1/xc6 + /xf1/xc7 + /xf1/xc8 + /xf1/xc9 + /xf1/xca + /xf1/xcb + /xf1/xcc + /xf1/xcd + /xf1/xce + /xf1/xcf + /xf1/xd0 + /xf1/xd1 + /xf1/xd2 + /xf1/xd3 + /xf1/xd4 + /xf1/xd5 + /xf1/xd6 + /xf1/xd7 + /xf1/xd8 + /xf1/xd9 + /xf1/xda + /xf1/xdb + /xf1/xdc + /xf1/xdd + /xf1/xde + /xf1/xdf + /xf1/xe0 + /xf1/xe1 + /xf1/xe2 + /xf1/xe3 + /xf1/xe4 + /xf1/xe5 + /xf1/xe6 + /xf1/xe7 + /xf1/xe8 + /xf1/xe9 + /xf1/xea + /xf1/xeb + /xf1/xec + /xf1/xed + /xf1/xee + /xf1/xef + /xf1/xf0 + /xf1/xf1 + /xf1/xf2 + /xf1/xf3 + /xf1/xf4 + /xf1/xf5 + /xf1/xf6 + /xf1/xf7 + /xf1/xf8 + /xf1/xf9 + /xf1/xfa + /xf1/xfb + /xf1/xfc + /xf1/xfd + /xf1/xfe + /xf2/xa1 + /xf2/xa2 + /xf2/xa3 + /xf2/xa4 + /xf2/xa5 + /xf2/xa6 + /xf2/xa7 + /xf2/xa8 + /xf2/xa9 + /xf2/xaa + /xf2/xab + /xf2/xac + /xf2/xad + /xf2/xae + /xf2/xaf + /xf2/xb0 + /xf2/xb1 + /xf2/xb2 + /xf2/xb3 + /xf2/xb4 + /xf2/xb5 + /xf2/xb6 + /xf2/xb7 + /xf2/xb8 + /xf2/xb9 + /xf2/xba + /xf2/xbb + /xf2/xbc + /xf2/xbd + /xf2/xbe + /xf2/xbf + /xf2/xc0 + /xf2/xc1 + /xf2/xc2 + /xf2/xc3 + /xf2/xc4 + /xf2/xc5 + /xf2/xc6 + /xf2/xc7 + /xf2/xc8 + /xf2/xc9 + /xf2/xca + /xf2/xcb + /xf2/xcc + /xf2/xcd + /xf2/xce + /xf2/xcf + /xf2/xd0 + /xf2/xd1 + /xf2/xd2 + /xf2/xd3 + /xf2/xd4 + /xf2/xd5 + /xf2/xd6 + /xf2/xd7 + /xf2/xd8 + /xf2/xd9 + /xf2/xda + /xf2/xdb + /xf2/xdc + /xf2/xdd + /xf2/xde + /xf2/xdf + /xf2/xe0 + /xf2/xe1 + /xf2/xe2 + /xf2/xe3 + /xf2/xe4 + /xf2/xe5 + /xf2/xe6 + /xf2/xe7 + /xf2/xe8 + /xf2/xe9 + /xf2/xea + /xf2/xeb + /xf2/xec + /xf2/xed + /xf2/xee + /xf2/xef + /xf2/xf0 + /xf2/xf1 + /xf2/xf2 + /xf2/xf3 + /xf2/xf4 + /xf2/xf5 + /xf2/xf6 + /xf2/xf7 + /xf2/xf8 + /xf2/xf9 + /xf2/xfa + /xf2/xfb + /xf2/xfc + /xf2/xfd + /xf2/xfe + /xf3/xa1 + /xf3/xa2 + /xf3/xa3 + /xf3/xa4 + /xf3/xa5 + /xf3/xa6 + /xf3/xa7 + /xf3/xa8 + /xf3/xa9 + /xf3/xaa + /xf3/xab + /xf3/xac + /xf3/xad + /xf3/xae + /xf3/xaf + /xf3/xb0 + /xf3/xb1 + /xf3/xb2 + /xf3/xb3 + /xf3/xb4 + /xf3/xb5 + /xf3/xb6 + /xf3/xb7 + /xf3/xb8 + /xf3/xb9 + /xf3/xba + /xf3/xbb + /xf3/xbc + /xf3/xbd + /xf3/xbe + /xf3/xbf + /xf3/xc0 + /xf3/xc1 + /xf3/xc2 + /xf3/xc3 + /xf3/xc4 + /xf3/xc5 + /xf3/xc6 + /xf3/xc7 + /xf3/xc8 + /xf3/xc9 + /xf3/xca + /xf3/xcb + /xf3/xcc + /xf3/xcd + /xf3/xce + /xf3/xcf + /xf3/xd0 + /xf3/xd1 + /xf3/xd2 + /xf3/xd3 + /xf3/xd4 + /xf3/xd5 + /xf3/xd6 + /xf3/xd7 + /xf3/xd8 + /xf3/xd9 + /xf3/xda + /xf3/xdb + /xf3/xdc + /xf3/xdd + /xf3/xde + /xf3/xdf + /xf3/xe0 + /xf3/xe1 + /xf3/xe2 + /xf3/xe3 + /xf3/xe4 + /xf3/xe5 + /xf3/xe6 + /xf3/xe7 + /xf3/xe8 + /xf3/xe9 + /xf3/xea + /xf3/xeb + /xf3/xec + /xf3/xed + /xf3/xee + /xf3/xef + /xf3/xf0 + /xf3/xf1 + /xf3/xf2 + /xf3/xf3 + /xf3/xf4 + /xf3/xf5 + /xf3/xf6 + /xf3/xf7 + /xf3/xf8 + /xf3/xf9 + /xf3/xfa + /xf3/xfb + /xf3/xfc + /xf3/xfd + /xf3/xfe + /xf4/xa1 + /xf4/xa2 + /xf4/xa3 + /xf4/xa4 + /xf4/xa5 + /xf4/xa6 + +% +% User Defined Characters (EUC Code Set 1) +% + /xf5/xa1 + /xf5/xa2 + /xf5/xa3 + /xf5/xa4 + /xf5/xa5 + /xf5/xa6 + /xf5/xa7 + /xf5/xa8 + /xf5/xa9 + /xf5/xaa + /xf5/xab + /xf5/xac + /xf5/xad + /xf5/xae + /xf5/xaf + /xf5/xb0 + /xf5/xb1 + /xf5/xb2 + /xf5/xb3 + /xf5/xb4 + /xf5/xb5 + /xf5/xb6 + /xf5/xb7 + /xf5/xb8 + /xf5/xb9 + /xf5/xba + /xf5/xbb + /xf5/xbc + /xf5/xbd + /xf5/xbe + /xf5/xbf + /xf5/xc0 + /xf5/xc1 + /xf5/xc2 + /xf5/xc3 + /xf5/xc4 + /xf5/xc5 + /xf5/xc6 + /xf5/xc7 + /xf5/xc8 + /xf5/xc9 + /xf5/xca + /xf5/xcb + /xf5/xcc + /xf5/xcd + /xf5/xce + /xf5/xcf + /xf5/xd0 + /xf5/xd1 + /xf5/xd2 + /xf5/xd3 + /xf5/xd4 + /xf5/xd5 + /xf5/xd6 + /xf5/xd7 + /xf5/xd8 + /xf5/xd9 + /xf5/xda + /xf5/xdb + /xf5/xdc + /xf5/xdd + /xf5/xde + /xf5/xdf + /xf5/xe0 + /xf5/xe1 + /xf5/xe2 + /xf5/xe3 + /xf5/xe4 + /xf5/xe5 + /xf5/xe6 + /xf5/xe7 + /xf5/xe8 + /xf5/xe9 + /xf5/xea + /xf5/xeb + /xf5/xec + /xf5/xed + /xf5/xee + /xf5/xef + /xf5/xf0 + /xf5/xf1 + /xf5/xf2 + /xf5/xf3 + /xf5/xf4 + /xf5/xf5 + /xf5/xf6 + /xf5/xf7 + /xf5/xf8 + /xf5/xf9 + /xf5/xfa + /xf5/xfb + /xf5/xfc + /xf5/xfd + /xf5/xfe + /xf6/xa1 + /xf6/xa2 + /xf6/xa3 + /xf6/xa4 + /xf6/xa5 + /xf6/xa6 + /xf6/xa7 + /xf6/xa8 + /xf6/xa9 + /xf6/xaa + /xf6/xab + /xf6/xac + /xf6/xad + /xf6/xae + /xf6/xaf + /xf6/xb0 + /xf6/xb1 + /xf6/xb2 + /xf6/xb3 + /xf6/xb4 + /xf6/xb5 + /xf6/xb6 + /xf6/xb7 + /xf6/xb8 + /xf6/xb9 + /xf6/xba + /xf6/xbb + /xf6/xbc + /xf6/xbd + /xf6/xbe + /xf6/xbf + /xf6/xc0 + /xf6/xc1 + /xf6/xc2 + /xf6/xc3 + /xf6/xc4 + /xf6/xc5 + /xf6/xc6 + /xf6/xc7 + /xf6/xc8 + /xf6/xc9 + /xf6/xca + /xf6/xcb + /xf6/xcc + /xf6/xcd + /xf6/xce + /xf6/xcf + /xf6/xd0 + /xf6/xd1 + /xf6/xd2 + /xf6/xd3 + /xf6/xd4 + /xf6/xd5 + /xf6/xd6 + /xf6/xd7 + /xf6/xd8 + /xf6/xd9 + /xf6/xda + /xf6/xdb + /xf6/xdc + /xf6/xdd + /xf6/xde + /xf6/xdf + /xf6/xe0 + /xf6/xe1 + /xf6/xe2 + /xf6/xe3 + /xf6/xe4 + /xf6/xe5 + /xf6/xe6 + /xf6/xe7 + /xf6/xe8 + /xf6/xe9 + /xf6/xea + /xf6/xeb + /xf6/xec + /xf6/xed + /xf6/xee + /xf6/xef + /xf6/xf0 + /xf6/xf1 + /xf6/xf2 + /xf6/xf3 + /xf6/xf4 + /xf6/xf5 + /xf6/xf6 + /xf6/xf7 + /xf6/xf8 + /xf6/xf9 + /xf6/xfa + /xf6/xfb + /xf6/xfc + /xf6/xfd + /xf6/xfe + /xf7/xa1 + /xf7/xa2 + /xf7/xa3 + /xf7/xa4 + /xf7/xa5 + /xf7/xa6 + /xf7/xa7 + /xf7/xa8 + /xf7/xa9 + /xf7/xaa + /xf7/xab + /xf7/xac + /xf7/xad + /xf7/xae + /xf7/xaf + /xf7/xb0 + /xf7/xb1 + /xf7/xb2 + /xf7/xb3 + /xf7/xb4 + /xf7/xb5 + /xf7/xb6 + /xf7/xb7 + /xf7/xb8 + /xf7/xb9 + /xf7/xba + /xf7/xbb + /xf7/xbc + /xf7/xbd + /xf7/xbe + /xf7/xbf + /xf7/xc0 + /xf7/xc1 + /xf7/xc2 + /xf7/xc3 + /xf7/xc4 + /xf7/xc5 + /xf7/xc6 + /xf7/xc7 + /xf7/xc8 + /xf7/xc9 + /xf7/xca + /xf7/xcb + /xf7/xcc + /xf7/xcd + /xf7/xce + /xf7/xcf + /xf7/xd0 + /xf7/xd1 + /xf7/xd2 + /xf7/xd3 + /xf7/xd4 + /xf7/xd5 + /xf7/xd6 + /xf7/xd7 + /xf7/xd8 + /xf7/xd9 + /xf7/xda + /xf7/xdb + /xf7/xdc + /xf7/xdd + /xf7/xde + /xf7/xdf + /xf7/xe0 + /xf7/xe1 + /xf7/xe2 + /xf7/xe3 + /xf7/xe4 + /xf7/xe5 + /xf7/xe6 + /xf7/xe7 + /xf7/xe8 + /xf7/xe9 + /xf7/xea + /xf7/xeb + /xf7/xec + /xf7/xed + /xf7/xee + /xf7/xef + /xf7/xf0 + /xf7/xf1 + /xf7/xf2 + /xf7/xf3 + /xf7/xf4 + /xf7/xf5 + /xf7/xf6 + /xf7/xf7 + /xf7/xf8 + /xf7/xf9 + /xf7/xfa + /xf7/xfb + /xf7/xfc + /xf7/xfd + /xf7/xfe + /xf8/xa1 + /xf8/xa2 + /xf8/xa3 + /xf8/xa4 + /xf8/xa5 + /xf8/xa6 + /xf8/xa7 + /xf8/xa8 + /xf8/xa9 + /xf8/xaa + /xf8/xab + /xf8/xac + /xf8/xad + /xf8/xae + /xf8/xaf + /xf8/xb0 + /xf8/xb1 + /xf8/xb2 + /xf8/xb3 + /xf8/xb4 + /xf8/xb5 + /xf8/xb6 + /xf8/xb7 + /xf8/xb8 + /xf8/xb9 + /xf8/xba + /xf8/xbb + /xf8/xbc + /xf8/xbd + /xf8/xbe + /xf8/xbf + /xf8/xc0 + /xf8/xc1 + /xf8/xc2 + /xf8/xc3 + /xf8/xc4 + /xf8/xc5 + /xf8/xc6 + /xf8/xc7 + /xf8/xc8 + /xf8/xc9 + /xf8/xca + /xf8/xcb + /xf8/xcc + /xf8/xcd + /xf8/xce + /xf8/xcf + /xf8/xd0 + /xf8/xd1 + /xf8/xd2 + /xf8/xd3 + /xf8/xd4 + /xf8/xd5 + /xf8/xd6 + /xf8/xd7 + /xf8/xd8 + /xf8/xd9 + /xf8/xda + /xf8/xdb + /xf8/xdc + /xf8/xdd + /xf8/xde + /xf8/xdf + /xf8/xe0 + /xf8/xe1 + /xf8/xe2 + /xf8/xe3 + /xf8/xe4 + /xf8/xe5 + /xf8/xe6 + /xf8/xe7 + /xf8/xe8 + /xf8/xe9 + /xf8/xea + /xf8/xeb + /xf8/xec + /xf8/xed + /xf8/xee + /xf8/xef + /xf8/xf0 + /xf8/xf1 + /xf8/xf2 + /xf8/xf3 + /xf8/xf4 + /xf8/xf5 + /xf8/xf6 + /xf8/xf7 + /xf8/xf8 + /xf8/xf9 + /xf8/xfa + /xf8/xfb + /xf8/xfc + /xf8/xfd + /xf8/xfe + /xf9/xa1 + /xf9/xa2 + /xf9/xa3 + /xf9/xa4 + /xf9/xa5 + /xf9/xa6 + /xf9/xa7 + /xf9/xa8 + /xf9/xa9 + /xf9/xaa + /xf9/xab + /xf9/xac + /xf9/xad + /xf9/xae + /xf9/xaf + /xf9/xb0 + /xf9/xb1 + /xf9/xb2 + /xf9/xb3 + /xf9/xb4 + /xf9/xb5 + /xf9/xb6 + /xf9/xb7 + /xf9/xb8 + /xf9/xb9 + /xf9/xba + /xf9/xbb + /xf9/xbc + /xf9/xbd + /xf9/xbe + /xf9/xbf + /xf9/xc0 + /xf9/xc1 + /xf9/xc2 + /xf9/xc3 + /xf9/xc4 + /xf9/xc5 + /xf9/xc6 + /xf9/xc7 + /xf9/xc8 + /xf9/xc9 + /xf9/xca + /xf9/xcb + /xf9/xcc + /xf9/xcd + /xf9/xce + /xf9/xcf + /xf9/xd0 + /xf9/xd1 + /xf9/xd2 + /xf9/xd3 + /xf9/xd4 + /xf9/xd5 + /xf9/xd6 + /xf9/xd7 + /xf9/xd8 + /xf9/xd9 + /xf9/xda + /xf9/xdb + /xf9/xdc + /xf9/xdd + /xf9/xde + /xf9/xdf + /xf9/xe0 + /xf9/xe1 + /xf9/xe2 + /xf9/xe3 + /xf9/xe4 + /xf9/xe5 + /xf9/xe6 + /xf9/xe7 + /xf9/xe8 + /xf9/xe9 + /xf9/xea + /xf9/xeb + /xf9/xec + /xf9/xed + /xf9/xee + /xf9/xef + /xf9/xf0 + /xf9/xf1 + /xf9/xf2 + /xf9/xf3 + /xf9/xf4 + /xf9/xf5 + /xf9/xf6 + /xf9/xf7 + /xf9/xf8 + /xf9/xf9 + /xf9/xfa + /xf9/xfb + /xf9/xfc + /xf9/xfd + /xf9/xfe + /xfa/xa1 + /xfa/xa2 + /xfa/xa3 + /xfa/xa4 + /xfa/xa5 + /xfa/xa6 + /xfa/xa7 + /xfa/xa8 + /xfa/xa9 + /xfa/xaa + /xfa/xab + /xfa/xac + /xfa/xad + /xfa/xae + /xfa/xaf + /xfa/xb0 + /xfa/xb1 + /xfa/xb2 + /xfa/xb3 + /xfa/xb4 + /xfa/xb5 + /xfa/xb6 + /xfa/xb7 + /xfa/xb8 + /xfa/xb9 + /xfa/xba + /xfa/xbb + /xfa/xbc + /xfa/xbd + /xfa/xbe + /xfa/xbf + /xfa/xc0 + /xfa/xc1 + /xfa/xc2 + /xfa/xc3 + /xfa/xc4 + /xfa/xc5 + /xfa/xc6 + /xfa/xc7 + /xfa/xc8 + /xfa/xc9 + /xfa/xca + /xfa/xcb + /xfa/xcc + /xfa/xcd + /xfa/xce + /xfa/xcf + /xfa/xd0 + /xfa/xd1 + /xfa/xd2 + /xfa/xd3 + /xfa/xd4 + /xfa/xd5 + /xfa/xd6 + /xfa/xd7 + /xfa/xd8 + /xfa/xd9 + /xfa/xda + /xfa/xdb + /xfa/xdc + /xfa/xdd + /xfa/xde + /xfa/xdf + /xfa/xe0 + /xfa/xe1 + /xfa/xe2 + /xfa/xe3 + /xfa/xe4 + /xfa/xe5 + /xfa/xe6 + /xfa/xe7 + /xfa/xe8 + /xfa/xe9 + /xfa/xea + /xfa/xeb + /xfa/xec + /xfa/xed + /xfa/xee + /xfa/xef + /xfa/xf0 + /xfa/xf1 + /xfa/xf2 + /xfa/xf3 + /xfa/xf4 + /xfa/xf5 + /xfa/xf6 + /xfa/xf7 + /xfa/xf8 + /xfa/xf9 + /xfa/xfa + /xfa/xfb + /xfa/xfc + /xfa/xfd + /xfa/xfe + /xfb/xa1 + /xfb/xa2 + /xfb/xa3 + /xfb/xa4 + /xfb/xa5 + /xfb/xa6 + /xfb/xa7 + /xfb/xa8 + /xfb/xa9 + /xfb/xaa + /xfb/xab + /xfb/xac + /xfb/xad + /xfb/xae + /xfb/xaf + /xfb/xb0 + /xfb/xb1 + /xfb/xb2 + /xfb/xb3 + /xfb/xb4 + /xfb/xb5 + /xfb/xb6 + /xfb/xb7 + /xfb/xb8 + /xfb/xb9 + /xfb/xba + /xfb/xbb + /xfb/xbc + /xfb/xbd + /xfb/xbe + /xfb/xbf + /xfb/xc0 + /xfb/xc1 + /xfb/xc2 + /xfb/xc3 + /xfb/xc4 + /xfb/xc5 + /xfb/xc6 + /xfb/xc7 + /xfb/xc8 + /xfb/xc9 + /xfb/xca + /xfb/xcb + /xfb/xcc + /xfb/xcd + /xfb/xce + /xfb/xcf + /xfb/xd0 + /xfb/xd1 + /xfb/xd2 + /xfb/xd3 + /xfb/xd4 + /xfb/xd5 + /xfb/xd6 + /xfb/xd7 + /xfb/xd8 + /xfb/xd9 + /xfb/xda + /xfb/xdb + /xfb/xdc + /xfb/xdd + /xfb/xde + /xfb/xdf + /xfb/xe0 + /xfb/xe1 + /xfb/xe2 + /xfb/xe3 + /xfb/xe4 + /xfb/xe5 + /xfb/xe6 + /xfb/xe7 + /xfb/xe8 + /xfb/xe9 + /xfb/xea + /xfb/xeb + /xfb/xec + /xfb/xed + /xfb/xee + /xfb/xef + /xfb/xf0 + /xfb/xf1 + /xfb/xf2 + /xfb/xf3 + /xfb/xf4 + /xfb/xf5 + /xfb/xf6 + /xfb/xf7 + /xfb/xf8 + /xfb/xf9 + /xfb/xfa + /xfb/xfb + /xfb/xfc + /xfb/xfd + /xfb/xfe + /xfc/xa1 + /xfc/xa2 + /xfc/xa3 + /xfc/xa4 + /xfc/xa5 + /xfc/xa6 + /xfc/xa7 + /xfc/xa8 + /xfc/xa9 + /xfc/xaa + /xfc/xab + /xfc/xac + /xfc/xad + /xfc/xae + /xfc/xaf + /xfc/xb0 + /xfc/xb1 + /xfc/xb2 + /xfc/xb3 + /xfc/xb4 + /xfc/xb5 + /xfc/xb6 + /xfc/xb7 + /xfc/xb8 + /xfc/xb9 + /xfc/xba + /xfc/xbb + /xfc/xbc + /xfc/xbd + /xfc/xbe + /xfc/xbf + /xfc/xc0 + /xfc/xc1 + /xfc/xc2 + /xfc/xc3 + /xfc/xc4 + /xfc/xc5 + /xfc/xc6 + /xfc/xc7 + /xfc/xc8 + /xfc/xc9 + /xfc/xca + /xfc/xcb + /xfc/xcc + /xfc/xcd + /xfc/xce + /xfc/xcf + /xfc/xd0 + /xfc/xd1 + /xfc/xd2 + /xfc/xd3 + /xfc/xd4 + /xfc/xd5 + /xfc/xd6 + /xfc/xd7 + /xfc/xd8 + /xfc/xd9 + /xfc/xda + /xfc/xdb + /xfc/xdc + /xfc/xdd + /xfc/xde + /xfc/xdf + /xfc/xe0 + /xfc/xe1 + /xfc/xe2 + /xfc/xe3 + /xfc/xe4 + /xfc/xe5 + /xfc/xe6 + /xfc/xe7 + /xfc/xe8 + /xfc/xe9 + /xfc/xea + /xfc/xeb + /xfc/xec + /xfc/xed + /xfc/xee + /xfc/xef + /xfc/xf0 + /xfc/xf1 + /xfc/xf2 + /xfc/xf3 + /xfc/xf4 + /xfc/xf5 + /xfc/xf6 + /xfc/xf7 + /xfc/xf8 + /xfc/xf9 + /xfc/xfa + /xfc/xfb + /xfc/xfc + /xfc/xfd + /xfc/xfe + /xfd/xa1 + /xfd/xa2 + /xfd/xa3 + /xfd/xa4 + /xfd/xa5 + /xfd/xa6 + /xfd/xa7 + /xfd/xa8 + /xfd/xa9 + /xfd/xaa + /xfd/xab + /xfd/xac + /xfd/xad + /xfd/xae + /xfd/xaf + /xfd/xb0 + /xfd/xb1 + /xfd/xb2 + /xfd/xb3 + /xfd/xb4 + /xfd/xb5 + /xfd/xb6 + /xfd/xb7 + /xfd/xb8 + /xfd/xb9 + /xfd/xba + /xfd/xbb + /xfd/xbc + /xfd/xbd + /xfd/xbe + /xfd/xbf + /xfd/xc0 + /xfd/xc1 + /xfd/xc2 + /xfd/xc3 + /xfd/xc4 + /xfd/xc5 + /xfd/xc6 + /xfd/xc7 + /xfd/xc8 + /xfd/xc9 + /xfd/xca + /xfd/xcb + /xfd/xcc + /xfd/xcd + /xfd/xce + /xfd/xcf + /xfd/xd0 + /xfd/xd1 + /xfd/xd2 + /xfd/xd3 + /xfd/xd4 + /xfd/xd5 + /xfd/xd6 + /xfd/xd7 + /xfd/xd8 + /xfd/xd9 + /xfd/xda + /xfd/xdb + /xfd/xdc + /xfd/xdd + /xfd/xde + /xfd/xdf + /xfd/xe0 + /xfd/xe1 + /xfd/xe2 + /xfd/xe3 + /xfd/xe4 + /xfd/xe5 + /xfd/xe6 + /xfd/xe7 + /xfd/xe8 + /xfd/xe9 + /xfd/xea + /xfd/xeb + /xfd/xec + /xfd/xed + /xfd/xee + /xfd/xef + /xfd/xf0 + /xfd/xf1 + /xfd/xf2 + /xfd/xf3 + /xfd/xf4 + /xfd/xf5 + /xfd/xf6 + /xfd/xf7 + /xfd/xf8 + /xfd/xf9 + /xfd/xfa + /xfd/xfb + /xfd/xfc + /xfd/xfd + /xfd/xfe + /xfe/xa1 + /xfe/xa2 + /xfe/xa3 + /xfe/xa4 + /xfe/xa5 + /xfe/xa6 + /xfe/xa7 + /xfe/xa8 + /xfe/xa9 + /xfe/xaa + /xfe/xab + /xfe/xac + /xfe/xad + /xfe/xae + /xfe/xaf + /xfe/xb0 + /xfe/xb1 + /xfe/xb2 + /xfe/xb3 + /xfe/xb4 + /xfe/xb5 + /xfe/xb6 + /xfe/xb7 + /xfe/xb8 + /xfe/xb9 + /xfe/xba + /xfe/xbb + /xfe/xbc + /xfe/xbd + /xfe/xbe + /xfe/xbf + /xfe/xc0 + /xfe/xc1 + /xfe/xc2 + /xfe/xc3 + /xfe/xc4 + /xfe/xc5 + /xfe/xc6 + /xfe/xc7 + /xfe/xc8 + /xfe/xc9 + /xfe/xca + /xfe/xcb + /xfe/xcc + /xfe/xcd + /xfe/xce + /xfe/xcf + /xfe/xd0 + /xfe/xd1 + /xfe/xd2 + /xfe/xd3 + /xfe/xd4 + /xfe/xd5 + /xfe/xd6 + /xfe/xd7 + /xfe/xd8 + /xfe/xd9 + /xfe/xda + /xfe/xdb + /xfe/xdc + /xfe/xdd + /xfe/xde + /xfe/xdf + /xfe/xe0 + /xfe/xe1 + /xfe/xe2 + /xfe/xe3 + /xfe/xe4 + /xfe/xe5 + /xfe/xe6 + /xfe/xe7 + /xfe/xe8 + /xfe/xe9 + /xfe/xea + /xfe/xeb + /xfe/xec + /xfe/xed + /xfe/xee + /xfe/xef + /xfe/xf0 + /xfe/xf1 + /xfe/xf2 + /xfe/xf3 + /xfe/xf4 + /xfe/xf5 + /xfe/xf6 + /xfe/xf7 + /xfe/xf8 + /xfe/xf9 + /xfe/xfa + /xfe/xfb + /xfe/xfc + /xfe/xfd + /xfe/xfe + +% +% JIS X 0212 +% + /x8f/xa2/xaf BREVE + /x8f/xa2/xb0 CARON (Mandarin Chinese third tone) + /x8f/xa2/xb1 CEDILLA + /x8f/xa2/xb2 DOT ABOVE (Mandarin Chinese light tone) + /x8f/xa2/xb3 DOUBLE ACUTE ACCENT + /x8f/xa2/xb4 MACRON + /x8f/xa2/xb5 OGONEK + /x8f/xa2/xb6 RING ABOVE +%IRREVERSIBLE% /x8f/xa2/xb7 FULLWIDTH TILDE + /x8f/xa2/xb8 GREEK TONOS + /x8f/xa2/xb9 GREEK DIALYTIKA TONOS + /x8f/xa2/xc2 INVERTED EXCLAMATION MARK + /x8f/xa2/xc3 FULLWIDTH BROKEN BAR + /x8f/xa2/xc4 INVERTED QUESTION MARK + /x8f/xa2/xeb MASCULINE ORDINAL INDICATOR + /x8f/xa2/xec FEMININE ORDINAL INDICATOR + /x8f/xa2/xed COPYRIGHT SIGN + /x8f/xa2/xee REGISTERED SIGN + /x8f/xa2/xef TRADE MARK SIGN + /x8f/xa2/xf0 CURRENCY SIGN +%IRREVERSIBLE% /x8f/xa2/xf1 NUMERO SIGN + /x8f/xa6/xe1 GREEK CAPITAL LETTER ALPHA WITH TONOS + /x8f/xa6/xe2 GREEK CAPITAL LETTER EPSILON WITH TONOS + /x8f/xa6/xe3 GREEK CAPITAL LETTER ETA WITH TONOS + /x8f/xa6/xe4 GREEK CAPITAL LETTER IOTA WITH TONOS + /x8f/xa6/xe5 GREEK CAPITAL LETTER IOTA WITH DIALYTIKA + /x8f/xa6/xe7 GREEK CAPITAL LETTER OMICRON WITH TONOS + /x8f/xa6/xe9 GREEK CAPITAL LETTER UPSILON WITH TONOS + /x8f/xa6/xea GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA + /x8f/xa6/xec GREEK CAPITAL LETTER OMEGA WITH TONOS + /x8f/xa6/xf1 GREEK SMALL LETTER ALPHA WITH TONOS + /x8f/xa6/xf2 GREEK SMALL LETTER EPSILON WITH TONOS + /x8f/xa6/xf3 GREEK SMALL LETTER ETA WITH TONOS + /x8f/xa6/xf4 GREEK SMALL LETTER IOTA WITH TONOS + /x8f/xa6/xf5 GREEK SMALL LETTER IOTA WITH DIALYTIKA + /x8f/xa6/xf6 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS + /x8f/xa6/xf7 GREEK SMALL LETTER OMICRON WITH TONOS + /x8f/xa6/xf8 GREEK SMALL LETTER FINAL SIGMA + /x8f/xa6/xf9 GREEK SMALL LETTER UPSILON WITH TONOS + /x8f/xa6/xfa GREEK SMALL LETTER UPSILON WITH DIALYTIKA + /x8f/xa6/xfb GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS + /x8f/xa6/xfc GREEK SMALL LETTER OMEGA WITH TONOS + /x8f/xa7/xc2 CYRILLIC CAPITAL LETTER DJE + /x8f/xa7/xc3 CYRILLIC CAPITAL LETTER GJE + /x8f/xa7/xc4 CYRILLIC CAPITAL LETTER UKRAINIAN IE + /x8f/xa7/xc5 CYRILLIC CAPITAL LETTER DZE + /x8f/xa7/xc6 CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I + /x8f/xa7/xc7 CYRILLIC CAPITAL LETTER YI + /x8f/xa7/xc8 CYRILLIC CAPITAL LETTER JE + /x8f/xa7/xc9 CYRILLIC CAPITAL LETTER LJE + /x8f/xa7/xca CYRILLIC CAPITAL LETTER NJE + /x8f/xa7/xcb CYRILLIC CAPITAL LETTER TSHE + /x8f/xa7/xcc CYRILLIC CAPITAL LETTER KJE + /x8f/xa7/xcd CYRILLIC CAPITAL LETTER SHORT U + /x8f/xa7/xce CYRILLIC CAPITAL LETTER DZHE + /x8f/xa7/xf2 CYRILLIC SMALL LETTER DJE + /x8f/xa7/xf3 CYRILLIC SMALL LETTER GJE + /x8f/xa7/xf4 CYRILLIC SMALL LETTER UKRAINIAN IE + /x8f/xa7/xf5 CYRILLIC SMALL LETTER DZE + /x8f/xa7/xf6 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I + /x8f/xa7/xf7 CYRILLIC SMALL LETTER YI + /x8f/xa7/xf8 CYRILLIC SMALL LETTER JE + /x8f/xa7/xf9 CYRILLIC SMALL LETTER LJE + /x8f/xa7/xfa CYRILLIC SMALL LETTER NJE + /x8f/xa7/xfb CYRILLIC SMALL LETTER TSHE + /x8f/xa7/xfc CYRILLIC SMALL LETTER KJE + /x8f/xa7/xfd CYRILLIC SMALL LETTER SHORT U + /x8f/xa7/xfe CYRILLIC SMALL LETTER DZHE + /x8f/xa9/xa1 LATIN CAPITAL LIGATURE AE + /x8f/xa9/xa2 LATIN CAPITAL LETTER D WITH STROKE + /x8f/xa9/xa4 LATIN CAPITAL LETTER H WITH STROKE + /x8f/xa9/xa6 LATIN CAPITAL LIGATURE IJ + /x8f/xa9/xa8 LATIN CAPITAL LETTER L WITH STROKE + /x8f/xa9/xa9 LATIN CAPITAL LETTER L WITH MIDDLE DOT + /x8f/xa9/xab LATIN CAPITAL LETTER ENG + /x8f/xa9/xac LATIN CAPITAL LETTER O WITH STROKE + /x8f/xa9/xad LATIN CAPITAL LIGATURE OE + /x8f/xa9/xaf LATIN CAPITAL LETTER T WITH STROKE + /x8f/xa9/xb0 LATIN CAPITAL LETTER THORN + /x8f/xa9/xc1 LATIN SMALL LIGATURE AE + /x8f/xa9/xc2 LATIN SMALL LETTER D WITH STROKE + /x8f/xa9/xc3 LATIN SMALL LETTER ETH + /x8f/xa9/xc4 LATIN SMALL LETTER H WITH STROKE + /x8f/xa9/xc5 LATIN SMALL LETTER DOTLESS I + /x8f/xa9/xc6 LATIN SMALL LIGATURE IJ + /x8f/xa9/xc7 LATIN SMALL LETTER KRA + /x8f/xa9/xc8 LATIN SMALL LETTER L WITH STROKE + /x8f/xa9/xc9 LATIN SMALL LETTER L WITH MIDDLE DOT + /x8f/xa9/xca LATIN SMALL LETTER N PRECEDED BY APOSTROPHE + /x8f/xa9/xcb LATIN SMALL LETTER ENG + /x8f/xa9/xcc LATIN SMALL LETTER O WITH STROKE + /x8f/xa9/xcd LATIN SMALL LIGATURE OE + /x8f/xa9/xce LATIN SMALL LETTER SHARP S + /x8f/xa9/xcf LATIN SMALL LETTER T WITH STROKE + /x8f/xa9/xd0 LATIN SMALL LETTER THORN + /x8f/xaa/xa1 LATIN CAPITAL LETTER A WITH ACUTE + /x8f/xaa/xa2 LATIN CAPITAL LETTER A WITH GRAVE + /x8f/xaa/xa3 LATIN CAPITAL LETTER A WITH DIAERESIS + /x8f/xaa/xa4 LATIN CAPITAL LETTER A WITH CIRCUMFLEX + /x8f/xaa/xa5 LATIN CAPITAL LETTER A WITH BREVE + /x8f/xaa/xa6 LATIN CAPITAL LETTER A WITH CARON + /x8f/xaa/xa7 LATIN CAPITAL LETTER A WITH MACRON + /x8f/xaa/xa8 LATIN CAPITAL LETTER A WITH OGONEK + /x8f/xaa/xa9 LATIN CAPITAL LETTER A WITH RING ABOVE + /x8f/xaa/xaa LATIN CAPITAL LETTER A WITH TILDE + /x8f/xaa/xab LATIN CAPITAL LETTER C WITH ACUTE + /x8f/xaa/xac LATIN CAPITAL LETTER C WITH CIRCUMFLEX + /x8f/xaa/xad LATIN CAPITAL LETTER C WITH CARON + /x8f/xaa/xae LATIN CAPITAL LETTER C WITH CEDILLA + /x8f/xaa/xaf LATIN CAPITAL LETTER C WITH DOT ABOVE + /x8f/xaa/xb0 LATIN CAPITAL LETTER D WITH CARON + /x8f/xaa/xb1 LATIN CAPITAL LETTER E WITH ACUTE + /x8f/xaa/xb2 LATIN CAPITAL LETTER E WITH GRAVE + /x8f/xaa/xb3 LATIN CAPITAL LETTER E WITH DIAERESIS + /x8f/xaa/xb4 LATIN CAPITAL LETTER E WITH CIRCUMFLEX + /x8f/xaa/xb5 LATIN CAPITAL LETTER E WITH CARON + /x8f/xaa/xb6 LATIN CAPITAL LETTER E WITH DOT ABOVE + /x8f/xaa/xb7 LATIN CAPITAL LETTER E WITH MACRON + /x8f/xaa/xb8 LATIN CAPITAL LETTER E WITH OGONEK + /x8f/xaa/xba LATIN CAPITAL LETTER G WITH CIRCUMFLEX + /x8f/xaa/xbb LATIN CAPITAL LETTER G WITH BREVE + /x8f/xaa/xbc LATIN CAPITAL LETTER G WITH CEDILLA + /x8f/xaa/xbd LATIN CAPITAL LETTER G WITH DOT ABOVE + /x8f/xaa/xbe LATIN CAPITAL LETTER H WITH CIRCUMFLEX + /x8f/xaa/xbf LATIN CAPITAL LETTER I WITH ACUTE + /x8f/xaa/xc0 LATIN CAPITAL LETTER I WITH GRAVE + /x8f/xaa/xc1 LATIN CAPITAL LETTER I WITH DIAERESIS + /x8f/xaa/xc2 LATIN CAPITAL LETTER I WITH CIRCUMFLEX + /x8f/xaa/xc3 LATIN CAPITAL LETTER I WITH CARON + /x8f/xaa/xc4 LATIN CAPITAL LETTER I WITH DOT ABOVE + /x8f/xaa/xc5 LATIN CAPITAL LETTER I WITH MACRON + /x8f/xaa/xc6 LATIN CAPITAL LETTER I WITH OGONEK + /x8f/xaa/xc7 LATIN CAPITAL LETTER I WITH TILDE + /x8f/xaa/xc8 LATIN CAPITAL LETTER J WITH CIRCUMFLEX + /x8f/xaa/xc9 LATIN CAPITAL LETTER K WITH CEDILLA + /x8f/xaa/xca LATIN CAPITAL LETTER L WITH ACUTE + /x8f/xaa/xcb LATIN CAPITAL LETTER L WITH CARON + /x8f/xaa/xcc LATIN CAPITAL LETTER L WITH CEDILLA + /x8f/xaa/xcd LATIN CAPITAL LETTER N WITH ACUTE + /x8f/xaa/xce LATIN CAPITAL LETTER N WITH CARON + /x8f/xaa/xcf LATIN CAPITAL LETTER N WITH CEDILLA + /x8f/xaa/xd0 LATIN CAPITAL LETTER N WITH TILDE + /x8f/xaa/xd1 LATIN CAPITAL LETTER O WITH ACUTE + /x8f/xaa/xd2 LATIN CAPITAL LETTER O WITH GRAVE + /x8f/xaa/xd3 LATIN CAPITAL LETTER O WITH DIAERESIS + /x8f/xaa/xd4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX + /x8f/xaa/xd5 LATIN CAPITAL LETTER O WITH CARON + /x8f/xaa/xd6 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE + /x8f/xaa/xd7 LATIN CAPITAL LETTER O WITH MACRON + /x8f/xaa/xd8 LATIN CAPITAL LETTER O WITH TILDE + /x8f/xaa/xd9 LATIN CAPITAL LETTER R WITH ACUTE + /x8f/xaa/xda LATIN CAPITAL LETTER R WITH CARON + /x8f/xaa/xdb LATIN CAPITAL LETTER R WITH CEDILLA + /x8f/xaa/xdc LATIN CAPITAL LETTER S WITH ACUTE + /x8f/xaa/xdd LATIN CAPITAL LETTER S WITH CIRCUMFLEX + /x8f/xaa/xde LATIN CAPITAL LETTER S WITH CARON + /x8f/xaa/xdf LATIN CAPITAL LETTER S WITH CEDILLA + /x8f/xaa/xe0 LATIN CAPITAL LETTER T WITH CARON + /x8f/xaa/xe1 LATIN CAPITAL LETTER T WITH CEDILLA + /x8f/xaa/xe2 LATIN CAPITAL LETTER U WITH ACUTE + /x8f/xaa/xe3 LATIN CAPITAL LETTER U WITH GRAVE + /x8f/xaa/xe4 LATIN CAPITAL LETTER U WITH DIAERESIS + /x8f/xaa/xe5 LATIN CAPITAL LETTER U WITH CIRCUMFLEX + /x8f/xaa/xe6 LATIN CAPITAL LETTER U WITH BREVE + /x8f/xaa/xe7 LATIN CAPITAL LETTER U WITH CARON + /x8f/xaa/xe8 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE + /x8f/xaa/xe9 LATIN CAPITAL LETTER U WITH MACRON + /x8f/xaa/xea LATIN CAPITAL LETTER U WITH OGONEK + /x8f/xaa/xeb LATIN CAPITAL LETTER U WITH RING ABOVE + /x8f/xaa/xec LATIN CAPITAL LETTER U WITH TILDE + /x8f/xaa/xed LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE + /x8f/xaa/xee LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE + /x8f/xaa/xef LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON + /x8f/xaa/xf0 LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON + /x8f/xaa/xf1 LATIN CAPITAL LETTER W WITH CIRCUMFLEX + /x8f/xaa/xf2 LATIN CAPITAL LETTER Y WITH ACUTE + /x8f/xaa/xf3 LATIN CAPITAL LETTER Y WITH DIAERESIS + /x8f/xaa/xf4 LATIN CAPITAL LETTER Y WITH CIRCUMFLEX + /x8f/xaa/xf5 LATIN CAPITAL LETTER Z WITH ACUTE + /x8f/xaa/xf6 LATIN CAPITAL LETTER Z WITH CARON + /x8f/xaa/xf7 LATIN CAPITAL LETTER Z WITH DOT ABOVE + /x8f/xab/xa1 LATIN SMALL LETTER A WITH ACUTE + /x8f/xab/xa2 LATIN SMALL LETTER A WITH GRAVE + /x8f/xab/xa3 LATIN SMALL LETTER A WITH DIAERESIS + /x8f/xab/xa4 LATIN SMALL LETTER A WITH CIRCUMFLEX + /x8f/xab/xa5 LATIN SMALL LETTER A WITH BREVE + /x8f/xab/xa6 LATIN SMALL LETTER A WITH CARON + /x8f/xab/xa7 LATIN SMALL LETTER A WITH MACRON + /x8f/xab/xa8 LATIN SMALL LETTER A WITH OGONEK + /x8f/xab/xa9 LATIN SMALL LETTER A WITH RING ABOVE + /x8f/xab/xaa LATIN SMALL LETTER A WITH TILDE + /x8f/xab/xab LATIN SMALL LETTER C WITH ACUTE + /x8f/xab/xac LATIN SMALL LETTER C WITH CIRCUMFLEX + /x8f/xab/xad LATIN SMALL LETTER C WITH CARON + /x8f/xab/xae LATIN SMALL LETTER C WITH CEDILLA + /x8f/xab/xaf LATIN SMALL LETTER C WITH DOT ABOVE + /x8f/xab/xb0 LATIN SMALL LETTER D WITH CARON + /x8f/xab/xb1 LATIN SMALL LETTER E WITH ACUTE + /x8f/xab/xb2 LATIN SMALL LETTER E WITH GRAVE + /x8f/xab/xb3 LATIN SMALL LETTER E WITH DIAERESIS + /x8f/xab/xb4 LATIN SMALL LETTER E WITH CIRCUMFLEX + /x8f/xab/xb5 LATIN SMALL LETTER E WITH CARON + /x8f/xab/xb6 LATIN SMALL LETTER E WITH DOT ABOVE + /x8f/xab/xb7 LATIN SMALL LETTER E WITH MACRON + /x8f/xab/xb8 LATIN SMALL LETTER E WITH OGONEK + /x8f/xab/xb9 LATIN SMALL LETTER G WITH ACUTE + /x8f/xab/xba LATIN SMALL LETTER G WITH CIRCUMFLEX + /x8f/xab/xbb LATIN SMALL LETTER G WITH BREVE + /x8f/xab/xbd LATIN SMALL LETTER G WITH DOT ABOVE + /x8f/xab/xbe LATIN SMALL LETTER H WITH CIRCUMFLEX + /x8f/xab/xbf LATIN SMALL LETTER I WITH ACUTE + /x8f/xab/xc0 LATIN SMALL LETTER I WITH GRAVE + /x8f/xab/xc1 LATIN SMALL LETTER I WITH DIAERESIS + /x8f/xab/xc2 LATIN SMALL LETTER I WITH CIRCUMFLEX + /x8f/xab/xc3 LATIN SMALL LETTER I WITH CARON + /x8f/xab/xc5 LATIN SMALL LETTER I WITH MACRON + /x8f/xab/xc6 LATIN SMALL LETTER I WITH OGONEK + /x8f/xab/xc7 LATIN SMALL LETTER I WITH TILDE + /x8f/xab/xc8 LATIN SMALL LETTER J WITH CIRCUMFLEX + /x8f/xab/xc9 LATIN SMALL LETTER K WITH CEDILLA + /x8f/xab/xca LATIN SMALL LETTER L WITH ACUTE + /x8f/xab/xcb LATIN SMALL LETTER L WITH CARON + /x8f/xab/xcc LATIN SMALL LETTER L WITH CEDILLA + /x8f/xab/xcd LATIN SMALL LETTER N WITH ACUTE + /x8f/xab/xce LATIN SMALL LETTER N WITH CARON + /x8f/xab/xcf LATIN SMALL LETTER N WITH CEDILLA + /x8f/xab/xd0 LATIN SMALL LETTER N WITH TILDE + /x8f/xab/xd1 LATIN SMALL LETTER O WITH ACUTE + /x8f/xab/xd2 LATIN SMALL LETTER O WITH GRAVE + /x8f/xab/xd3 LATIN SMALL LETTER O WITH DIAERESIS + /x8f/xab/xd4 LATIN SMALL LETTER O WITH CIRCUMFLEX + /x8f/xab/xd5 LATIN SMALL LETTER O WITH CARON + /x8f/xab/xd6 LATIN SMALL LETTER O WITH DOUBLE ACUTE + /x8f/xab/xd7 LATIN SMALL LETTER O WITH MACRON + /x8f/xab/xd8 LATIN SMALL LETTER O WITH TILDE + /x8f/xab/xd9 LATIN SMALL LETTER R WITH ACUTE + /x8f/xab/xda LATIN SMALL LETTER R WITH CARON + /x8f/xab/xdb LATIN SMALL LETTER R WITH CEDILLA + /x8f/xab/xdc LATIN SMALL LETTER S WITH ACUTE + /x8f/xab/xdd LATIN SMALL LETTER S WITH CIRCUMFLEX + /x8f/xab/xde LATIN SMALL LETTER S WITH CARON + /x8f/xab/xdf LATIN SMALL LETTER S WITH CEDILLA + /x8f/xab/xe0 LATIN SMALL LETTER T WITH CARON + /x8f/xab/xe1 LATIN SMALL LETTER T WITH CEDILLA + /x8f/xab/xe2 LATIN SMALL LETTER U WITH ACUTE + /x8f/xab/xe3 LATIN SMALL LETTER U WITH GRAVE + /x8f/xab/xe4 LATIN SMALL LETTER U WITH DIAERESIS + /x8f/xab/xe5 LATIN SMALL LETTER U WITH CIRCUMFLEX + /x8f/xab/xe6 LATIN SMALL LETTER U WITH BREVE + /x8f/xab/xe7 LATIN SMALL LETTER U WITH CARON + /x8f/xab/xe8 LATIN SMALL LETTER U WITH DOUBLE ACUTE + /x8f/xab/xe9 LATIN SMALL LETTER U WITH MACRON + /x8f/xab/xea LATIN SMALL LETTER U WITH OGONEK + /x8f/xab/xeb LATIN SMALL LETTER U WITH RING ABOVE + /x8f/xab/xec LATIN SMALL LETTER U WITH TILDE + /x8f/xab/xed LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE + /x8f/xab/xee LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE + /x8f/xab/xef LATIN SMALL LETTER U WITH DIAERESIS AND CARON + /x8f/xab/xf0 LATIN SMALL LETTER U WITH DIAERESIS AND MACRON + /x8f/xab/xf1 LATIN SMALL LETTER W WITH CIRCUMFLEX + /x8f/xab/xf2 LATIN SMALL LETTER Y WITH ACUTE + /x8f/xab/xf3 LATIN SMALL LETTER Y WITH DIAERESIS + /x8f/xab/xf4 LATIN SMALL LETTER Y WITH CIRCUMFLEX + /x8f/xab/xf5 LATIN SMALL LETTER Z WITH ACUTE + /x8f/xab/xf6 LATIN SMALL LETTER Z WITH CARON + /x8f/xab/xf7 LATIN SMALL LETTER Z WITH DOT ABOVE + /x8f/xb0/xa1 + /x8f/xb0/xa2 + /x8f/xb0/xa3 + /x8f/xb0/xa4 + /x8f/xb0/xa5 + /x8f/xb0/xa6 + /x8f/xb0/xa7 + /x8f/xb0/xa8 + /x8f/xb0/xa9 + /x8f/xb0/xaa + /x8f/xb0/xab + /x8f/xb0/xac + /x8f/xb0/xad + /x8f/xb0/xae + /x8f/xb0/xaf + /x8f/xb0/xb0 + /x8f/xb0/xb1 + /x8f/xb0/xb2 + /x8f/xb0/xb3 + /x8f/xb0/xb4 + /x8f/xb0/xb5 + /x8f/xb0/xb6 + /x8f/xb0/xb7 + /x8f/xb0/xb8 + /x8f/xb0/xb9 + /x8f/xb0/xba + /x8f/xb0/xbb + /x8f/xb0/xbc + /x8f/xb0/xbd + /x8f/xb0/xbe + /x8f/xb0/xbf + /x8f/xb0/xc0 + /x8f/xb0/xc1 + /x8f/xb0/xc2 + /x8f/xb0/xc3 + /x8f/xb0/xc4 + /x8f/xb0/xc5 + /x8f/xb0/xc6 + /x8f/xb0/xc7 + /x8f/xb0/xc8 + /x8f/xb0/xc9 + /x8f/xb0/xca + /x8f/xb0/xcb + /x8f/xb0/xcc + /x8f/xb0/xcd + /x8f/xb0/xce + /x8f/xb0/xcf + /x8f/xb0/xd0 + /x8f/xb0/xd1 + /x8f/xb0/xd2 + /x8f/xb0/xd3 + /x8f/xb0/xd4 + /x8f/xb0/xd5 + /x8f/xb0/xd6 + /x8f/xb0/xd7 + /x8f/xb0/xd8 + /x8f/xb0/xd9 + /x8f/xb0/xda + /x8f/xb0/xdb + /x8f/xb0/xdc + /x8f/xb0/xdd + /x8f/xb0/xde + /x8f/xb0/xdf + /x8f/xb0/xe0 + /x8f/xb0/xe1 + /x8f/xb0/xe2 + /x8f/xb0/xe3 + /x8f/xb0/xe4 + /x8f/xb0/xe5 + /x8f/xb0/xe6 + /x8f/xb0/xe7 + /x8f/xb0/xe8 + /x8f/xb0/xe9 + /x8f/xb0/xea + /x8f/xb0/xeb + /x8f/xb0/xec + /x8f/xb0/xed + /x8f/xb0/xee + /x8f/xb0/xef + /x8f/xb0/xf0 + /x8f/xb0/xf1 + /x8f/xb0/xf2 + /x8f/xb0/xf3 + /x8f/xb0/xf4 + /x8f/xb0/xf5 + /x8f/xb0/xf6 + /x8f/xb0/xf7 + /x8f/xb0/xf8 + /x8f/xb0/xf9 + /x8f/xb0/xfa + /x8f/xb0/xfb + /x8f/xb0/xfc + /x8f/xb0/xfd + /x8f/xb0/xfe + /x8f/xb1/xa1 + /x8f/xb1/xa2 + /x8f/xb1/xa3 + /x8f/xb1/xa4 + /x8f/xb1/xa5 + /x8f/xb1/xa6 + /x8f/xb1/xa7 + /x8f/xb1/xa8 + /x8f/xb1/xa9 + /x8f/xb1/xaa + /x8f/xb1/xab + /x8f/xb1/xac + /x8f/xb1/xad + /x8f/xb1/xae + /x8f/xb1/xaf + /x8f/xb1/xb0 + /x8f/xb1/xb1 + /x8f/xb1/xb2 + /x8f/xb1/xb3 + /x8f/xb1/xb4 + /x8f/xb1/xb5 + /x8f/xb1/xb6 + /x8f/xb1/xb7 + /x8f/xb1/xb8 + /x8f/xb1/xb9 + /x8f/xb1/xba + /x8f/xb1/xbb + /x8f/xb1/xbc + /x8f/xb1/xbd + /x8f/xb1/xbe + /x8f/xb1/xbf + /x8f/xb1/xc0 + /x8f/xb1/xc1 + /x8f/xb1/xc2 + /x8f/xb1/xc3 + /x8f/xb1/xc4 + /x8f/xb1/xc5 + /x8f/xb1/xc6 + /x8f/xb1/xc7 + /x8f/xb1/xc8 + /x8f/xb1/xc9 + /x8f/xb1/xca + /x8f/xb1/xcb + /x8f/xb1/xcc + /x8f/xb1/xcd + /x8f/xb1/xce + /x8f/xb1/xcf + /x8f/xb1/xd0 + /x8f/xb1/xd1 + /x8f/xb1/xd2 + /x8f/xb1/xd3 + /x8f/xb1/xd4 + /x8f/xb1/xd5 + /x8f/xb1/xd6 + /x8f/xb1/xd7 + /x8f/xb1/xd8 + /x8f/xb1/xd9 + /x8f/xb1/xda + /x8f/xb1/xdb + /x8f/xb1/xdc + /x8f/xb1/xdd + /x8f/xb1/xde + /x8f/xb1/xdf + /x8f/xb1/xe0 + /x8f/xb1/xe1 + /x8f/xb1/xe2 + /x8f/xb1/xe3 + /x8f/xb1/xe4 + /x8f/xb1/xe5 + /x8f/xb1/xe6 + /x8f/xb1/xe7 + /x8f/xb1/xe8 + /x8f/xb1/xe9 + /x8f/xb1/xea + /x8f/xb1/xeb + /x8f/xb1/xec + /x8f/xb1/xed + /x8f/xb1/xee + /x8f/xb1/xef + /x8f/xb1/xf0 + /x8f/xb1/xf1 + /x8f/xb1/xf2 + /x8f/xb1/xf3 + /x8f/xb1/xf4 + /x8f/xb1/xf5 + /x8f/xb1/xf6 + /x8f/xb1/xf7 + /x8f/xb1/xf8 + /x8f/xb1/xf9 + /x8f/xb1/xfa + /x8f/xb1/xfb + /x8f/xb1/xfc + /x8f/xb1/xfd + /x8f/xb1/xfe + /x8f/xb2/xa1 + /x8f/xb2/xa2 + /x8f/xb2/xa3 + /x8f/xb2/xa4 + /x8f/xb2/xa5 + /x8f/xb2/xa6 + /x8f/xb2/xa7 + /x8f/xb2/xa8 + /x8f/xb2/xa9 + /x8f/xb2/xaa + /x8f/xb2/xab + /x8f/xb2/xac + /x8f/xb2/xad + /x8f/xb2/xae + /x8f/xb2/xaf + /x8f/xb2/xb0 + /x8f/xb2/xb1 + /x8f/xb2/xb2 + /x8f/xb2/xb3 + /x8f/xb2/xb4 + /x8f/xb2/xb5 + /x8f/xb2/xb6 + /x8f/xb2/xb7 + /x8f/xb2/xb8 + /x8f/xb2/xb9 + /x8f/xb2/xba + /x8f/xb2/xbb + /x8f/xb2/xbc + /x8f/xb2/xbd + /x8f/xb2/xbe + /x8f/xb2/xbf + /x8f/xb2/xc0 + /x8f/xb2/xc1 + /x8f/xb2/xc2 + /x8f/xb2/xc3 + /x8f/xb2/xc4 + /x8f/xb2/xc5 + /x8f/xb2/xc6 + /x8f/xb2/xc7 + /x8f/xb2/xc8 + /x8f/xb2/xc9 + /x8f/xb2/xca + /x8f/xb2/xcb + /x8f/xb2/xcc + /x8f/xb2/xcd + /x8f/xb2/xce + /x8f/xb2/xcf + /x8f/xb2/xd0 + /x8f/xb2/xd1 + /x8f/xb2/xd2 + /x8f/xb2/xd3 + /x8f/xb2/xd4 + /x8f/xb2/xd5 + /x8f/xb2/xd6 + /x8f/xb2/xd7 + /x8f/xb2/xd8 + /x8f/xb2/xd9 + /x8f/xb2/xda + /x8f/xb2/xdb + /x8f/xb2/xdc + /x8f/xb2/xdd + /x8f/xb2/xde + /x8f/xb2/xdf + /x8f/xb2/xe0 + /x8f/xb2/xe1 + /x8f/xb2/xe2 + /x8f/xb2/xe3 + /x8f/xb2/xe4 + /x8f/xb2/xe5 + /x8f/xb2/xe6 + /x8f/xb2/xe7 + /x8f/xb2/xe8 + /x8f/xb2/xe9 + /x8f/xb2/xea + /x8f/xb2/xeb + /x8f/xb2/xec + /x8f/xb2/xed + /x8f/xb2/xee + /x8f/xb2/xef + /x8f/xb2/xf0 + /x8f/xb2/xf1 + /x8f/xb2/xf2 + /x8f/xb2/xf3 + /x8f/xb2/xf4 + /x8f/xb2/xf5 + /x8f/xb2/xf6 + /x8f/xb2/xf7 + /x8f/xb2/xf8 + /x8f/xb2/xf9 + /x8f/xb2/xfa + /x8f/xb2/xfb + /x8f/xb2/xfc + /x8f/xb2/xfd + /x8f/xb2/xfe + /x8f/xb3/xa1 + /x8f/xb3/xa2 + /x8f/xb3/xa3 + /x8f/xb3/xa4 + /x8f/xb3/xa5 + /x8f/xb3/xa6 + /x8f/xb3/xa7 + /x8f/xb3/xa8 + /x8f/xb3/xa9 + /x8f/xb3/xaa + /x8f/xb3/xab + /x8f/xb3/xac + /x8f/xb3/xad + /x8f/xb3/xae + /x8f/xb3/xaf + /x8f/xb3/xb0 + /x8f/xb3/xb1 + /x8f/xb3/xb2 + /x8f/xb3/xb3 + /x8f/xb3/xb4 + /x8f/xb3/xb5 + /x8f/xb3/xb6 + /x8f/xb3/xb7 + /x8f/xb3/xb8 + /x8f/xb3/xb9 + /x8f/xb3/xba + /x8f/xb3/xbb + /x8f/xb3/xbc + /x8f/xb3/xbd + /x8f/xb3/xbe + /x8f/xb3/xbf + /x8f/xb3/xc0 + /x8f/xb3/xc1 + /x8f/xb3/xc2 + /x8f/xb3/xc3 + /x8f/xb3/xc4 + /x8f/xb3/xc5 + /x8f/xb3/xc6 + /x8f/xb3/xc7 + /x8f/xb3/xc8 + /x8f/xb3/xc9 + /x8f/xb3/xca + /x8f/xb3/xcb + /x8f/xb3/xcc + /x8f/xb3/xcd + /x8f/xb3/xce + /x8f/xb3/xcf + /x8f/xb3/xd0 + /x8f/xb3/xd1 + /x8f/xb3/xd2 + /x8f/xb3/xd3 + /x8f/xb3/xd4 + /x8f/xb3/xd5 + /x8f/xb3/xd6 + /x8f/xb3/xd7 + /x8f/xb3/xd8 + /x8f/xb3/xd9 + /x8f/xb3/xda + /x8f/xb3/xdb + /x8f/xb3/xdc + /x8f/xb3/xdd + /x8f/xb3/xde + /x8f/xb3/xdf + /x8f/xb3/xe0 + /x8f/xb3/xe1 + /x8f/xb3/xe2 + /x8f/xb3/xe3 + /x8f/xb3/xe4 + /x8f/xb3/xe5 + /x8f/xb3/xe6 + /x8f/xb3/xe7 + /x8f/xb3/xe8 + /x8f/xb3/xe9 + /x8f/xb3/xea + /x8f/xb3/xeb + /x8f/xb3/xec + /x8f/xb3/xed + /x8f/xb3/xee + /x8f/xb3/xef + /x8f/xb3/xf0 + /x8f/xb3/xf1 + /x8f/xb3/xf2 + /x8f/xb3/xf3 + /x8f/xb3/xf4 + /x8f/xb3/xf5 + /x8f/xb3/xf6 + /x8f/xb3/xf7 + /x8f/xb3/xf8 + /x8f/xb3/xf9 + /x8f/xb3/xfa + /x8f/xb3/xfb + /x8f/xb3/xfc + /x8f/xb3/xfd + /x8f/xb3/xfe + /x8f/xb4/xa1 + /x8f/xb4/xa2 + /x8f/xb4/xa3 + /x8f/xb4/xa4 + /x8f/xb4/xa5 + /x8f/xb4/xa6 + /x8f/xb4/xa7 + /x8f/xb4/xa8 + /x8f/xb4/xa9 + /x8f/xb4/xaa + /x8f/xb4/xab + /x8f/xb4/xac + /x8f/xb4/xad + /x8f/xb4/xae + /x8f/xb4/xaf + /x8f/xb4/xb0 + /x8f/xb4/xb1 + /x8f/xb4/xb2 + /x8f/xb4/xb3 + /x8f/xb4/xb4 + /x8f/xb4/xb5 + /x8f/xb4/xb6 + /x8f/xb4/xb7 + /x8f/xb4/xb8 + /x8f/xb4/xb9 + /x8f/xb4/xba + /x8f/xb4/xbb + /x8f/xb4/xbc + /x8f/xb4/xbd + /x8f/xb4/xbe + /x8f/xb4/xbf + /x8f/xb4/xc0 + /x8f/xb4/xc1 + /x8f/xb4/xc2 + /x8f/xb4/xc3 + /x8f/xb4/xc4 + /x8f/xb4/xc5 + /x8f/xb4/xc6 + /x8f/xb4/xc7 + /x8f/xb4/xc8 + /x8f/xb4/xc9 + /x8f/xb4/xca + /x8f/xb4/xcb + /x8f/xb4/xcc + /x8f/xb4/xcd + /x8f/xb4/xce + /x8f/xb4/xcf + /x8f/xb4/xd0 + /x8f/xb4/xd1 + /x8f/xb4/xd2 + /x8f/xb4/xd3 + /x8f/xb4/xd4 + /x8f/xb4/xd5 + /x8f/xb4/xd6 + /x8f/xb4/xd7 + /x8f/xb4/xd8 + /x8f/xb4/xd9 + /x8f/xb4/xda + /x8f/xb4/xdb + /x8f/xb4/xdc + /x8f/xb4/xdd + /x8f/xb4/xde + /x8f/xb4/xdf + /x8f/xb4/xe0 + /x8f/xb4/xe1 + /x8f/xb4/xe2 + /x8f/xb4/xe3 + /x8f/xb4/xe4 + /x8f/xb4/xe5 + /x8f/xb4/xe6 + /x8f/xb4/xe7 + /x8f/xb4/xe8 + /x8f/xb4/xe9 + /x8f/xb4/xea + /x8f/xb4/xeb + /x8f/xb4/xec + /x8f/xb4/xed + /x8f/xb4/xee + /x8f/xb4/xef + /x8f/xb4/xf0 + /x8f/xb4/xf1 + /x8f/xb4/xf2 + /x8f/xb4/xf3 + /x8f/xb4/xf4 + /x8f/xb4/xf5 + /x8f/xb4/xf6 + /x8f/xb4/xf7 + /x8f/xb4/xf8 + /x8f/xb4/xf9 + /x8f/xb4/xfa + /x8f/xb4/xfb + /x8f/xb4/xfc + /x8f/xb4/xfd + /x8f/xb4/xfe + /x8f/xb5/xa1 + /x8f/xb5/xa2 + /x8f/xb5/xa3 + /x8f/xb5/xa4 + /x8f/xb5/xa5 + /x8f/xb5/xa6 + /x8f/xb5/xa7 + /x8f/xb5/xa8 + /x8f/xb5/xa9 + /x8f/xb5/xaa + /x8f/xb5/xab + /x8f/xb5/xac + /x8f/xb5/xad + /x8f/xb5/xae + /x8f/xb5/xaf + /x8f/xb5/xb0 + /x8f/xb5/xb1 + /x8f/xb5/xb2 + /x8f/xb5/xb3 + /x8f/xb5/xb4 + /x8f/xb5/xb5 + /x8f/xb5/xb6 + /x8f/xb5/xb7 + /x8f/xb5/xb8 + /x8f/xb5/xb9 + /x8f/xb5/xba + /x8f/xb5/xbb + /x8f/xb5/xbc + /x8f/xb5/xbd + /x8f/xb5/xbe + /x8f/xb5/xbf + /x8f/xb5/xc0 + /x8f/xb5/xc1 + /x8f/xb5/xc2 + /x8f/xb5/xc3 + /x8f/xb5/xc4 + /x8f/xb5/xc5 + /x8f/xb5/xc6 + /x8f/xb5/xc7 + /x8f/xb5/xc8 + /x8f/xb5/xc9 + /x8f/xb5/xca + /x8f/xb5/xcb + /x8f/xb5/xcc + /x8f/xb5/xcd + /x8f/xb5/xce + /x8f/xb5/xcf + /x8f/xb5/xd0 + /x8f/xb5/xd1 + /x8f/xb5/xd2 + /x8f/xb5/xd3 + /x8f/xb5/xd4 + /x8f/xb5/xd5 + /x8f/xb5/xd6 + /x8f/xb5/xd7 + /x8f/xb5/xd8 + /x8f/xb5/xd9 + /x8f/xb5/xda + /x8f/xb5/xdb + /x8f/xb5/xdc + /x8f/xb5/xdd + /x8f/xb5/xde + /x8f/xb5/xdf + /x8f/xb5/xe0 + /x8f/xb5/xe1 + /x8f/xb5/xe2 + /x8f/xb5/xe3 + /x8f/xb5/xe4 + /x8f/xb5/xe5 + /x8f/xb5/xe6 + /x8f/xb5/xe7 + /x8f/xb5/xe8 + /x8f/xb5/xe9 + /x8f/xb5/xea + /x8f/xb5/xeb + /x8f/xb5/xec + /x8f/xb5/xed + /x8f/xb5/xee + /x8f/xb5/xef + /x8f/xb5/xf0 + /x8f/xb5/xf1 + /x8f/xb5/xf2 + /x8f/xb5/xf3 + /x8f/xb5/xf4 + /x8f/xb5/xf5 + /x8f/xb5/xf6 + /x8f/xb5/xf7 + /x8f/xb5/xf8 + /x8f/xb5/xf9 + /x8f/xb5/xfa + /x8f/xb5/xfb + /x8f/xb5/xfc + /x8f/xb5/xfd + /x8f/xb5/xfe + /x8f/xb6/xa1 + /x8f/xb6/xa2 + /x8f/xb6/xa3 + /x8f/xb6/xa4 + /x8f/xb6/xa5 + /x8f/xb6/xa6 + /x8f/xb6/xa7 + /x8f/xb6/xa8 + /x8f/xb6/xa9 + /x8f/xb6/xaa + /x8f/xb6/xab + /x8f/xb6/xac + /x8f/xb6/xad + /x8f/xb6/xae + /x8f/xb6/xaf + /x8f/xb6/xb0 + /x8f/xb6/xb1 + /x8f/xb6/xb2 + /x8f/xb6/xb3 + /x8f/xb6/xb4 + /x8f/xb6/xb5 + /x8f/xb6/xb6 + /x8f/xb6/xb7 + /x8f/xb6/xb8 + /x8f/xb6/xb9 + /x8f/xb6/xba + /x8f/xb6/xbb + /x8f/xb6/xbc + /x8f/xb6/xbd + /x8f/xb6/xbe + /x8f/xb6/xbf + /x8f/xb6/xc0 + /x8f/xb6/xc1 + /x8f/xb6/xc2 + /x8f/xb6/xc3 + /x8f/xb6/xc4 + /x8f/xb6/xc5 + /x8f/xb6/xc6 + /x8f/xb6/xc7 + /x8f/xb6/xc8 + /x8f/xb6/xc9 + /x8f/xb6/xca + /x8f/xb6/xcb + /x8f/xb6/xcc + /x8f/xb6/xcd + /x8f/xb6/xce + /x8f/xb6/xcf + /x8f/xb6/xd0 + /x8f/xb6/xd1 + /x8f/xb6/xd2 + /x8f/xb6/xd3 + /x8f/xb6/xd4 + /x8f/xb6/xd5 + /x8f/xb6/xd6 + /x8f/xb6/xd7 + /x8f/xb6/xd8 + /x8f/xb6/xd9 + /x8f/xb6/xda + /x8f/xb6/xdb + /x8f/xb6/xdc + /x8f/xb6/xdd + /x8f/xb6/xde + /x8f/xb6/xdf + /x8f/xb6/xe0 + /x8f/xb6/xe1 + /x8f/xb6/xe2 + /x8f/xb6/xe3 + /x8f/xb6/xe4 + /x8f/xb6/xe5 + /x8f/xb6/xe6 + /x8f/xb6/xe7 + /x8f/xb6/xe8 + /x8f/xb6/xe9 + /x8f/xb6/xea + /x8f/xb6/xeb + /x8f/xb6/xec + /x8f/xb6/xed + /x8f/xb6/xee + /x8f/xb6/xef + /x8f/xb6/xf0 + /x8f/xb6/xf1 + /x8f/xb6/xf2 + /x8f/xb6/xf3 + /x8f/xb6/xf4 + /x8f/xb6/xf5 + /x8f/xb6/xf6 + /x8f/xb6/xf7 + /x8f/xb6/xf8 + /x8f/xb6/xf9 + /x8f/xb6/xfa + /x8f/xb6/xfb + /x8f/xb6/xfc + /x8f/xb6/xfd + /x8f/xb6/xfe + /x8f/xb7/xa1 + /x8f/xb7/xa2 + /x8f/xb7/xa3 + /x8f/xb7/xa4 + /x8f/xb7/xa5 + /x8f/xb7/xa6 + /x8f/xb7/xa7 + /x8f/xb7/xa8 + /x8f/xb7/xa9 + /x8f/xb7/xaa + /x8f/xb7/xab + /x8f/xb7/xac + /x8f/xb7/xad + /x8f/xb7/xae + /x8f/xb7/xaf + /x8f/xb7/xb0 + /x8f/xb7/xb1 + /x8f/xb7/xb2 + /x8f/xb7/xb3 + /x8f/xb7/xb4 + /x8f/xb7/xb5 + /x8f/xb7/xb6 + /x8f/xb7/xb7 + /x8f/xb7/xb8 + /x8f/xb7/xb9 + /x8f/xb7/xba + /x8f/xb7/xbb + /x8f/xb7/xbc + /x8f/xb7/xbd + /x8f/xb7/xbe + /x8f/xb7/xbf + /x8f/xb7/xc0 + /x8f/xb7/xc1 + /x8f/xb7/xc2 + /x8f/xb7/xc3 + /x8f/xb7/xc4 + /x8f/xb7/xc5 + /x8f/xb7/xc6 + /x8f/xb7/xc7 + /x8f/xb7/xc8 + /x8f/xb7/xc9 + /x8f/xb7/xca + /x8f/xb7/xcb + /x8f/xb7/xcc + /x8f/xb7/xcd + /x8f/xb7/xce + /x8f/xb7/xcf + /x8f/xb7/xd0 + /x8f/xb7/xd1 + /x8f/xb7/xd2 + /x8f/xb7/xd3 + /x8f/xb7/xd4 + /x8f/xb7/xd5 + /x8f/xb7/xd6 + /x8f/xb7/xd7 + /x8f/xb7/xd8 + /x8f/xb7/xd9 + /x8f/xb7/xda + /x8f/xb7/xdb + /x8f/xb7/xdc + /x8f/xb7/xdd + /x8f/xb7/xde + /x8f/xb7/xdf + /x8f/xb7/xe0 + /x8f/xb7/xe1 + /x8f/xb7/xe2 + /x8f/xb7/xe3 + /x8f/xb7/xe4 + /x8f/xb7/xe5 + /x8f/xb7/xe6 + /x8f/xb7/xe7 + /x8f/xb7/xe8 + /x8f/xb7/xe9 + /x8f/xb7/xea + /x8f/xb7/xeb + /x8f/xb7/xec + /x8f/xb7/xed + /x8f/xb7/xee + /x8f/xb7/xef + /x8f/xb7/xf0 + /x8f/xb7/xf1 + /x8f/xb7/xf2 + /x8f/xb7/xf3 + /x8f/xb7/xf4 + /x8f/xb7/xf5 + /x8f/xb7/xf6 + /x8f/xb7/xf7 + /x8f/xb7/xf8 + /x8f/xb7/xf9 + /x8f/xb7/xfa + /x8f/xb7/xfb + /x8f/xb7/xfc + /x8f/xb7/xfd + /x8f/xb7/xfe + /x8f/xb8/xa1 + /x8f/xb8/xa2 + /x8f/xb8/xa3 + /x8f/xb8/xa4 + /x8f/xb8/xa5 + /x8f/xb8/xa6 + /x8f/xb8/xa7 + /x8f/xb8/xa8 + /x8f/xb8/xa9 + /x8f/xb8/xaa + /x8f/xb8/xab + /x8f/xb8/xac + /x8f/xb8/xad + /x8f/xb8/xae + /x8f/xb8/xaf + /x8f/xb8/xb0 + /x8f/xb8/xb1 + /x8f/xb8/xb2 + /x8f/xb8/xb3 + /x8f/xb8/xb4 + /x8f/xb8/xb5 + /x8f/xb8/xb6 + /x8f/xb8/xb7 + /x8f/xb8/xb8 + /x8f/xb8/xb9 + /x8f/xb8/xba + /x8f/xb8/xbb + /x8f/xb8/xbc + /x8f/xb8/xbd + /x8f/xb8/xbe + /x8f/xb8/xbf + /x8f/xb8/xc0 + /x8f/xb8/xc1 + /x8f/xb8/xc2 + /x8f/xb8/xc3 + /x8f/xb8/xc4 + /x8f/xb8/xc5 + /x8f/xb8/xc6 + /x8f/xb8/xc7 + /x8f/xb8/xc8 + /x8f/xb8/xc9 + /x8f/xb8/xca + /x8f/xb8/xcb + /x8f/xb8/xcc + /x8f/xb8/xcd + /x8f/xb8/xce + /x8f/xb8/xcf + /x8f/xb8/xd0 + /x8f/xb8/xd1 + /x8f/xb8/xd2 + /x8f/xb8/xd3 + /x8f/xb8/xd4 + /x8f/xb8/xd5 + /x8f/xb8/xd6 + /x8f/xb8/xd7 + /x8f/xb8/xd8 + /x8f/xb8/xd9 + /x8f/xb8/xda + /x8f/xb8/xdb + /x8f/xb8/xdc + /x8f/xb8/xdd + /x8f/xb8/xde + /x8f/xb8/xdf + /x8f/xb8/xe0 + /x8f/xb8/xe1 + /x8f/xb8/xe2 + /x8f/xb8/xe3 + /x8f/xb8/xe4 + /x8f/xb8/xe5 + /x8f/xb8/xe6 + /x8f/xb8/xe7 + /x8f/xb8/xe8 + /x8f/xb8/xe9 + /x8f/xb8/xea + /x8f/xb8/xeb + /x8f/xb8/xec + /x8f/xb8/xed + /x8f/xb8/xee + /x8f/xb8/xef + /x8f/xb8/xf0 + /x8f/xb8/xf1 + /x8f/xb8/xf2 + /x8f/xb8/xf3 + /x8f/xb8/xf4 + /x8f/xb8/xf5 + /x8f/xb8/xf6 + /x8f/xb8/xf7 + /x8f/xb8/xf8 + /x8f/xb8/xf9 + /x8f/xb8/xfa + /x8f/xb8/xfb + /x8f/xb8/xfc + /x8f/xb8/xfd + /x8f/xb8/xfe + /x8f/xb9/xa1 + /x8f/xb9/xa2 + /x8f/xb9/xa3 + /x8f/xb9/xa4 + /x8f/xb9/xa5 + /x8f/xb9/xa6 + /x8f/xb9/xa7 + /x8f/xb9/xa8 + /x8f/xb9/xa9 + /x8f/xb9/xaa + /x8f/xb9/xab + /x8f/xb9/xac + /x8f/xb9/xad + /x8f/xb9/xae + /x8f/xb9/xaf + /x8f/xb9/xb0 + /x8f/xb9/xb1 + /x8f/xb9/xb2 + /x8f/xb9/xb3 + /x8f/xb9/xb4 + /x8f/xb9/xb5 + /x8f/xb9/xb6 + /x8f/xb9/xb7 + /x8f/xb9/xb8 + /x8f/xb9/xb9 + /x8f/xb9/xba + /x8f/xb9/xbb + /x8f/xb9/xbc + /x8f/xb9/xbd + /x8f/xb9/xbe + /x8f/xb9/xbf + /x8f/xb9/xc0 + /x8f/xb9/xc1 + /x8f/xb9/xc2 + /x8f/xb9/xc3 + /x8f/xb9/xc4 + /x8f/xb9/xc5 + /x8f/xb9/xc6 + /x8f/xb9/xc7 + /x8f/xb9/xc8 + /x8f/xb9/xc9 + /x8f/xb9/xca + /x8f/xb9/xcb + /x8f/xb9/xcc + /x8f/xb9/xcd + /x8f/xb9/xce + /x8f/xb9/xcf + /x8f/xb9/xd0 + /x8f/xb9/xd1 + /x8f/xb9/xd2 + /x8f/xb9/xd3 + /x8f/xb9/xd4 + /x8f/xb9/xd5 + /x8f/xb9/xd6 + /x8f/xb9/xd7 + /x8f/xb9/xd8 + /x8f/xb9/xd9 + /x8f/xb9/xda + /x8f/xb9/xdb + /x8f/xb9/xdc + /x8f/xb9/xdd + /x8f/xb9/xde + /x8f/xb9/xdf + /x8f/xb9/xe0 + /x8f/xb9/xe1 + /x8f/xb9/xe2 + /x8f/xb9/xe3 + /x8f/xb9/xe4 + /x8f/xb9/xe5 + /x8f/xb9/xe6 + /x8f/xb9/xe7 + /x8f/xb9/xe8 + /x8f/xb9/xe9 + /x8f/xb9/xea + /x8f/xb9/xeb + /x8f/xb9/xec + /x8f/xb9/xed + /x8f/xb9/xee + /x8f/xb9/xef + /x8f/xb9/xf0 + /x8f/xb9/xf1 + /x8f/xb9/xf2 + /x8f/xb9/xf3 + /x8f/xb9/xf4 + /x8f/xb9/xf5 + /x8f/xb9/xf6 + /x8f/xb9/xf7 + /x8f/xb9/xf8 + /x8f/xb9/xf9 + /x8f/xb9/xfa + /x8f/xb9/xfb + /x8f/xb9/xfc + /x8f/xb9/xfd + /x8f/xb9/xfe + /x8f/xba/xa1 + /x8f/xba/xa2 + /x8f/xba/xa3 + /x8f/xba/xa4 + /x8f/xba/xa5 + /x8f/xba/xa6 + /x8f/xba/xa7 + /x8f/xba/xa8 + /x8f/xba/xa9 + /x8f/xba/xaa + /x8f/xba/xab + /x8f/xba/xac + /x8f/xba/xad + /x8f/xba/xae + /x8f/xba/xaf + /x8f/xba/xb0 + /x8f/xba/xb1 + /x8f/xba/xb2 + /x8f/xba/xb3 + /x8f/xba/xb4 + /x8f/xba/xb5 + /x8f/xba/xb6 + /x8f/xba/xb7 + /x8f/xba/xb8 + /x8f/xba/xb9 + /x8f/xba/xba + /x8f/xba/xbb + /x8f/xba/xbc + /x8f/xba/xbd + /x8f/xba/xbe + /x8f/xba/xbf + /x8f/xba/xc0 + /x8f/xba/xc1 + /x8f/xba/xc2 + /x8f/xba/xc3 + /x8f/xba/xc4 + /x8f/xba/xc5 + /x8f/xba/xc6 + /x8f/xba/xc7 + /x8f/xba/xc8 + /x8f/xba/xc9 + /x8f/xba/xca + /x8f/xba/xcb + /x8f/xba/xcc + /x8f/xba/xcd + /x8f/xba/xce + /x8f/xba/xcf + /x8f/xba/xd0 + /x8f/xba/xd1 + /x8f/xba/xd2 + /x8f/xba/xd3 + /x8f/xba/xd4 + /x8f/xba/xd5 + /x8f/xba/xd6 + /x8f/xba/xd7 + /x8f/xba/xd8 + /x8f/xba/xd9 + /x8f/xba/xda + /x8f/xba/xdb + /x8f/xba/xdc + /x8f/xba/xdd + /x8f/xba/xde + /x8f/xba/xdf + /x8f/xba/xe0 + /x8f/xba/xe1 + /x8f/xba/xe2 + /x8f/xba/xe3 + /x8f/xba/xe4 + /x8f/xba/xe5 + /x8f/xba/xe6 + /x8f/xba/xe7 + /x8f/xba/xe8 + /x8f/xba/xe9 + /x8f/xba/xea + /x8f/xba/xeb + /x8f/xba/xec + /x8f/xba/xed + /x8f/xba/xee + /x8f/xba/xef + /x8f/xba/xf0 + /x8f/xba/xf1 + /x8f/xba/xf2 + /x8f/xba/xf3 + /x8f/xba/xf4 + /x8f/xba/xf5 + /x8f/xba/xf6 + /x8f/xba/xf7 + /x8f/xba/xf8 + /x8f/xba/xf9 + /x8f/xba/xfa + /x8f/xba/xfb + /x8f/xba/xfc + /x8f/xba/xfd + /x8f/xba/xfe + /x8f/xbb/xa1 + /x8f/xbb/xa2 + /x8f/xbb/xa3 + /x8f/xbb/xa4 + /x8f/xbb/xa5 + /x8f/xbb/xa6 + /x8f/xbb/xa7 + /x8f/xbb/xa8 + /x8f/xbb/xa9 + /x8f/xbb/xaa + /x8f/xbb/xab + /x8f/xbb/xac + /x8f/xbb/xad + /x8f/xbb/xae + /x8f/xbb/xaf + /x8f/xbb/xb0 + /x8f/xbb/xb1 + /x8f/xbb/xb2 + /x8f/xbb/xb3 + /x8f/xbb/xb4 + /x8f/xbb/xb5 + /x8f/xbb/xb6 + /x8f/xbb/xb7 + /x8f/xbb/xb8 + /x8f/xbb/xb9 + /x8f/xbb/xba + /x8f/xbb/xbb + /x8f/xbb/xbc + /x8f/xbb/xbd + /x8f/xbb/xbe + /x8f/xbb/xbf + /x8f/xbb/xc0 + /x8f/xbb/xc1 + /x8f/xbb/xc2 + /x8f/xbb/xc3 + /x8f/xbb/xc4 + /x8f/xbb/xc5 + /x8f/xbb/xc6 + /x8f/xbb/xc7 + /x8f/xbb/xc8 + /x8f/xbb/xc9 + /x8f/xbb/xca + /x8f/xbb/xcb + /x8f/xbb/xcc + /x8f/xbb/xcd + /x8f/xbb/xce + /x8f/xbb/xcf + /x8f/xbb/xd0 + /x8f/xbb/xd1 + /x8f/xbb/xd2 + /x8f/xbb/xd3 + /x8f/xbb/xd4 + /x8f/xbb/xd5 + /x8f/xbb/xd6 + /x8f/xbb/xd7 + /x8f/xbb/xd8 + /x8f/xbb/xd9 + /x8f/xbb/xda + /x8f/xbb/xdb + /x8f/xbb/xdc + /x8f/xbb/xdd + /x8f/xbb/xde + /x8f/xbb/xdf + /x8f/xbb/xe0 + /x8f/xbb/xe1 + /x8f/xbb/xe2 + /x8f/xbb/xe3 + /x8f/xbb/xe4 + /x8f/xbb/xe5 + /x8f/xbb/xe6 + /x8f/xbb/xe7 + /x8f/xbb/xe8 + /x8f/xbb/xe9 + /x8f/xbb/xea + /x8f/xbb/xeb + /x8f/xbb/xec + /x8f/xbb/xed + /x8f/xbb/xee + /x8f/xbb/xef + /x8f/xbb/xf0 + /x8f/xbb/xf1 + /x8f/xbb/xf2 + /x8f/xbb/xf3 + /x8f/xbb/xf4 + /x8f/xbb/xf5 + /x8f/xbb/xf6 + /x8f/xbb/xf7 + /x8f/xbb/xf8 + /x8f/xbb/xf9 + /x8f/xbb/xfa + /x8f/xbb/xfb + /x8f/xbb/xfc + /x8f/xbb/xfd + /x8f/xbb/xfe + /x8f/xbc/xa1 + /x8f/xbc/xa2 + /x8f/xbc/xa3 + /x8f/xbc/xa4 + /x8f/xbc/xa5 + /x8f/xbc/xa6 + /x8f/xbc/xa7 + /x8f/xbc/xa8 + /x8f/xbc/xa9 + /x8f/xbc/xaa + /x8f/xbc/xab + /x8f/xbc/xac + /x8f/xbc/xad + /x8f/xbc/xae + /x8f/xbc/xaf + /x8f/xbc/xb0 + /x8f/xbc/xb1 + /x8f/xbc/xb2 + /x8f/xbc/xb3 + /x8f/xbc/xb4 + /x8f/xbc/xb5 + /x8f/xbc/xb6 + /x8f/xbc/xb7 + /x8f/xbc/xb8 + /x8f/xbc/xb9 + /x8f/xbc/xba + /x8f/xbc/xbb + /x8f/xbc/xbc + /x8f/xbc/xbd + /x8f/xbc/xbe + /x8f/xbc/xbf + /x8f/xbc/xc0 + /x8f/xbc/xc1 + /x8f/xbc/xc2 + /x8f/xbc/xc3 + /x8f/xbc/xc4 + /x8f/xbc/xc5 + /x8f/xbc/xc6 + /x8f/xbc/xc7 + /x8f/xbc/xc8 + /x8f/xbc/xc9 + /x8f/xbc/xca + /x8f/xbc/xcb + /x8f/xbc/xcc + /x8f/xbc/xcd + /x8f/xbc/xce + /x8f/xbc/xcf + /x8f/xbc/xd0 + /x8f/xbc/xd1 + /x8f/xbc/xd2 + /x8f/xbc/xd3 + /x8f/xbc/xd4 + /x8f/xbc/xd5 + /x8f/xbc/xd6 + /x8f/xbc/xd7 + /x8f/xbc/xd8 + /x8f/xbc/xd9 + /x8f/xbc/xda + /x8f/xbc/xdb + /x8f/xbc/xdc + /x8f/xbc/xdd + /x8f/xbc/xde + /x8f/xbc/xdf + /x8f/xbc/xe0 + /x8f/xbc/xe1 + /x8f/xbc/xe2 + /x8f/xbc/xe3 + /x8f/xbc/xe4 + /x8f/xbc/xe5 + /x8f/xbc/xe6 + /x8f/xbc/xe7 + /x8f/xbc/xe8 + /x8f/xbc/xe9 + /x8f/xbc/xea + /x8f/xbc/xeb + /x8f/xbc/xec + /x8f/xbc/xed + /x8f/xbc/xee + /x8f/xbc/xef + /x8f/xbc/xf0 + /x8f/xbc/xf1 + /x8f/xbc/xf2 + /x8f/xbc/xf3 + /x8f/xbc/xf4 + /x8f/xbc/xf5 + /x8f/xbc/xf6 + /x8f/xbc/xf7 + /x8f/xbc/xf8 + /x8f/xbc/xf9 + /x8f/xbc/xfa + /x8f/xbc/xfb + /x8f/xbc/xfc + /x8f/xbc/xfd + /x8f/xbc/xfe + /x8f/xbd/xa1 + /x8f/xbd/xa2 + /x8f/xbd/xa3 + /x8f/xbd/xa4 + /x8f/xbd/xa5 + /x8f/xbd/xa6 + /x8f/xbd/xa7 + /x8f/xbd/xa8 + /x8f/xbd/xa9 + /x8f/xbd/xaa + /x8f/xbd/xab + /x8f/xbd/xac + /x8f/xbd/xad + /x8f/xbd/xae + /x8f/xbd/xaf + /x8f/xbd/xb0 + /x8f/xbd/xb1 + /x8f/xbd/xb2 + /x8f/xbd/xb3 + /x8f/xbd/xb4 + /x8f/xbd/xb5 + /x8f/xbd/xb6 + /x8f/xbd/xb7 + /x8f/xbd/xb8 + /x8f/xbd/xb9 + /x8f/xbd/xba + /x8f/xbd/xbb + /x8f/xbd/xbc + /x8f/xbd/xbd + /x8f/xbd/xbe + /x8f/xbd/xbf + /x8f/xbd/xc0 + /x8f/xbd/xc1 + /x8f/xbd/xc2 + /x8f/xbd/xc3 + /x8f/xbd/xc4 + /x8f/xbd/xc5 + /x8f/xbd/xc6 + /x8f/xbd/xc7 + /x8f/xbd/xc8 + /x8f/xbd/xc9 + /x8f/xbd/xca + /x8f/xbd/xcb + /x8f/xbd/xcc + /x8f/xbd/xcd + /x8f/xbd/xce + /x8f/xbd/xcf + /x8f/xbd/xd0 + /x8f/xbd/xd1 + /x8f/xbd/xd2 + /x8f/xbd/xd3 + /x8f/xbd/xd4 + /x8f/xbd/xd5 + /x8f/xbd/xd6 + /x8f/xbd/xd7 + /x8f/xbd/xd8 + /x8f/xbd/xd9 + /x8f/xbd/xda + /x8f/xbd/xdb + /x8f/xbd/xdc + /x8f/xbd/xdd + /x8f/xbd/xde + /x8f/xbd/xdf + /x8f/xbd/xe0 + /x8f/xbd/xe1 + /x8f/xbd/xe2 + /x8f/xbd/xe3 + /x8f/xbd/xe4 + /x8f/xbd/xe5 + /x8f/xbd/xe6 + /x8f/xbd/xe7 + /x8f/xbd/xe8 + /x8f/xbd/xe9 + /x8f/xbd/xea + /x8f/xbd/xeb + /x8f/xbd/xec + /x8f/xbd/xed + /x8f/xbd/xee + /x8f/xbd/xef + /x8f/xbd/xf0 + /x8f/xbd/xf1 + /x8f/xbd/xf2 + /x8f/xbd/xf3 + /x8f/xbd/xf4 + /x8f/xbd/xf5 + /x8f/xbd/xf6 + /x8f/xbd/xf7 + /x8f/xbd/xf8 + /x8f/xbd/xf9 + /x8f/xbd/xfa + /x8f/xbd/xfb + /x8f/xbd/xfc + /x8f/xbd/xfd + /x8f/xbd/xfe + /x8f/xbe/xa1 + /x8f/xbe/xa2 + /x8f/xbe/xa3 + /x8f/xbe/xa4 + /x8f/xbe/xa5 + /x8f/xbe/xa6 + /x8f/xbe/xa7 + /x8f/xbe/xa8 + /x8f/xbe/xa9 + /x8f/xbe/xaa + /x8f/xbe/xab + /x8f/xbe/xac + /x8f/xbe/xad + /x8f/xbe/xae + /x8f/xbe/xaf + /x8f/xbe/xb0 + /x8f/xbe/xb1 + /x8f/xbe/xb2 + /x8f/xbe/xb3 + /x8f/xbe/xb4 + /x8f/xbe/xb5 + /x8f/xbe/xb6 + /x8f/xbe/xb7 + /x8f/xbe/xb8 + /x8f/xbe/xb9 + /x8f/xbe/xba + /x8f/xbe/xbb + /x8f/xbe/xbc + /x8f/xbe/xbd + /x8f/xbe/xbe + /x8f/xbe/xbf + /x8f/xbe/xc0 + /x8f/xbe/xc1 + /x8f/xbe/xc2 + /x8f/xbe/xc3 + /x8f/xbe/xc4 + /x8f/xbe/xc5 + /x8f/xbe/xc6 + /x8f/xbe/xc7 + /x8f/xbe/xc8 + /x8f/xbe/xc9 + /x8f/xbe/xca + /x8f/xbe/xcb + /x8f/xbe/xcc + /x8f/xbe/xcd + /x8f/xbe/xce + /x8f/xbe/xcf + /x8f/xbe/xd0 + /x8f/xbe/xd1 + /x8f/xbe/xd2 + /x8f/xbe/xd3 + /x8f/xbe/xd4 + /x8f/xbe/xd5 + /x8f/xbe/xd6 + /x8f/xbe/xd7 + /x8f/xbe/xd8 + /x8f/xbe/xd9 + /x8f/xbe/xda + /x8f/xbe/xdb + /x8f/xbe/xdc + /x8f/xbe/xdd + /x8f/xbe/xde + /x8f/xbe/xdf + /x8f/xbe/xe0 + /x8f/xbe/xe1 + /x8f/xbe/xe2 + /x8f/xbe/xe3 + /x8f/xbe/xe4 + /x8f/xbe/xe5 + /x8f/xbe/xe6 + /x8f/xbe/xe7 + /x8f/xbe/xe8 + /x8f/xbe/xe9 + /x8f/xbe/xea + /x8f/xbe/xeb + /x8f/xbe/xec + /x8f/xbe/xed + /x8f/xbe/xee + /x8f/xbe/xef + /x8f/xbe/xf0 + /x8f/xbe/xf1 + /x8f/xbe/xf2 + /x8f/xbe/xf3 + /x8f/xbe/xf4 + /x8f/xbe/xf5 + /x8f/xbe/xf6 + /x8f/xbe/xf7 + /x8f/xbe/xf8 + /x8f/xbe/xf9 + /x8f/xbe/xfa + /x8f/xbe/xfb + /x8f/xbe/xfc + /x8f/xbe/xfd + /x8f/xbe/xfe + /x8f/xbf/xa1 + /x8f/xbf/xa2 + /x8f/xbf/xa3 + /x8f/xbf/xa4 + /x8f/xbf/xa5 + /x8f/xbf/xa6 + /x8f/xbf/xa7 + /x8f/xbf/xa8 + /x8f/xbf/xa9 + /x8f/xbf/xaa + /x8f/xbf/xab + /x8f/xbf/xac + /x8f/xbf/xad + /x8f/xbf/xae + /x8f/xbf/xaf + /x8f/xbf/xb0 + /x8f/xbf/xb1 + /x8f/xbf/xb2 + /x8f/xbf/xb3 + /x8f/xbf/xb4 + /x8f/xbf/xb5 + /x8f/xbf/xb6 + /x8f/xbf/xb7 + /x8f/xbf/xb8 + /x8f/xbf/xb9 + /x8f/xbf/xba + /x8f/xbf/xbb + /x8f/xbf/xbc + /x8f/xbf/xbd + /x8f/xbf/xbe + /x8f/xbf/xbf + /x8f/xbf/xc0 + /x8f/xbf/xc1 + /x8f/xbf/xc2 + /x8f/xbf/xc3 + /x8f/xbf/xc4 + /x8f/xbf/xc5 + /x8f/xbf/xc6 + /x8f/xbf/xc7 + /x8f/xbf/xc8 + /x8f/xbf/xc9 + /x8f/xbf/xca + /x8f/xbf/xcb + /x8f/xbf/xcc + /x8f/xbf/xcd + /x8f/xbf/xce + /x8f/xbf/xcf + /x8f/xbf/xd0 + /x8f/xbf/xd1 + /x8f/xbf/xd2 + /x8f/xbf/xd3 + /x8f/xbf/xd4 + /x8f/xbf/xd5 + /x8f/xbf/xd6 + /x8f/xbf/xd7 + /x8f/xbf/xd8 + /x8f/xbf/xd9 + /x8f/xbf/xda + /x8f/xbf/xdb + /x8f/xbf/xdc + /x8f/xbf/xdd + /x8f/xbf/xde + /x8f/xbf/xdf + /x8f/xbf/xe0 + /x8f/xbf/xe1 + /x8f/xbf/xe2 + /x8f/xbf/xe3 + /x8f/xbf/xe4 + /x8f/xbf/xe5 + /x8f/xbf/xe6 + /x8f/xbf/xe7 + /x8f/xbf/xe8 + /x8f/xbf/xe9 + /x8f/xbf/xea + /x8f/xbf/xeb + /x8f/xbf/xec + /x8f/xbf/xed + /x8f/xbf/xee + /x8f/xbf/xef + /x8f/xbf/xf0 + /x8f/xbf/xf1 + /x8f/xbf/xf2 + /x8f/xbf/xf3 + /x8f/xbf/xf4 + /x8f/xbf/xf5 + /x8f/xbf/xf6 + /x8f/xbf/xf7 + /x8f/xbf/xf8 + /x8f/xbf/xf9 + /x8f/xbf/xfa + /x8f/xbf/xfb + /x8f/xbf/xfc + /x8f/xbf/xfd + /x8f/xbf/xfe + /x8f/xc0/xa1 + /x8f/xc0/xa2 + /x8f/xc0/xa3 + /x8f/xc0/xa4 + /x8f/xc0/xa5 + /x8f/xc0/xa6 + /x8f/xc0/xa7 + /x8f/xc0/xa8 + /x8f/xc0/xa9 + /x8f/xc0/xaa + /x8f/xc0/xab + /x8f/xc0/xac + /x8f/xc0/xad + /x8f/xc0/xae + /x8f/xc0/xaf + /x8f/xc0/xb0 + /x8f/xc0/xb1 + /x8f/xc0/xb2 + /x8f/xc0/xb3 + /x8f/xc0/xb4 + /x8f/xc0/xb5 + /x8f/xc0/xb6 + /x8f/xc0/xb7 + /x8f/xc0/xb8 + /x8f/xc0/xb9 + /x8f/xc0/xba + /x8f/xc0/xbb + /x8f/xc0/xbc + /x8f/xc0/xbd + /x8f/xc0/xbe + /x8f/xc0/xbf + /x8f/xc0/xc0 + /x8f/xc0/xc1 + /x8f/xc0/xc2 + /x8f/xc0/xc3 + /x8f/xc0/xc4 + /x8f/xc0/xc5 + /x8f/xc0/xc6 + /x8f/xc0/xc7 + /x8f/xc0/xc8 + /x8f/xc0/xc9 + /x8f/xc0/xca + /x8f/xc0/xcb + /x8f/xc0/xcc + /x8f/xc0/xcd + /x8f/xc0/xce + /x8f/xc0/xcf + /x8f/xc0/xd0 + /x8f/xc0/xd1 + /x8f/xc0/xd2 + /x8f/xc0/xd3 + /x8f/xc0/xd4 + /x8f/xc0/xd5 + /x8f/xc0/xd6 + /x8f/xc0/xd7 + /x8f/xc0/xd8 + /x8f/xc0/xd9 + /x8f/xc0/xda + /x8f/xc0/xdb + /x8f/xc0/xdc + /x8f/xc0/xdd + /x8f/xc0/xde + /x8f/xc0/xdf + /x8f/xc0/xe0 + /x8f/xc0/xe1 + /x8f/xc0/xe2 + /x8f/xc0/xe3 + /x8f/xc0/xe4 + /x8f/xc0/xe5 + /x8f/xc0/xe6 + /x8f/xc0/xe7 + /x8f/xc0/xe8 + /x8f/xc0/xe9 + /x8f/xc0/xea + /x8f/xc0/xeb + /x8f/xc0/xec + /x8f/xc0/xed + /x8f/xc0/xee + /x8f/xc0/xef + /x8f/xc0/xf0 + /x8f/xc0/xf1 + /x8f/xc0/xf2 + /x8f/xc0/xf3 + /x8f/xc0/xf4 + /x8f/xc0/xf5 + /x8f/xc0/xf6 + /x8f/xc0/xf7 + /x8f/xc0/xf8 + /x8f/xc0/xf9 + /x8f/xc0/xfa + /x8f/xc0/xfb + /x8f/xc0/xfc + /x8f/xc0/xfd + /x8f/xc0/xfe + /x8f/xc1/xa1 + /x8f/xc1/xa2 + /x8f/xc1/xa3 + /x8f/xc1/xa4 + /x8f/xc1/xa5 + /x8f/xc1/xa6 + /x8f/xc1/xa7 + /x8f/xc1/xa8 + /x8f/xc1/xa9 + /x8f/xc1/xaa + /x8f/xc1/xab + /x8f/xc1/xac + /x8f/xc1/xad + /x8f/xc1/xae + /x8f/xc1/xaf + /x8f/xc1/xb0 + /x8f/xc1/xb1 + /x8f/xc1/xb2 + /x8f/xc1/xb3 + /x8f/xc1/xb4 + /x8f/xc1/xb5 + /x8f/xc1/xb6 + /x8f/xc1/xb7 + /x8f/xc1/xb8 + /x8f/xc1/xb9 + /x8f/xc1/xba + /x8f/xc1/xbb + /x8f/xc1/xbc + /x8f/xc1/xbd + /x8f/xc1/xbe + /x8f/xc1/xbf + /x8f/xc1/xc0 + /x8f/xc1/xc1 + /x8f/xc1/xc2 + /x8f/xc1/xc3 + /x8f/xc1/xc4 + /x8f/xc1/xc5 + /x8f/xc1/xc6 + /x8f/xc1/xc7 + /x8f/xc1/xc8 + /x8f/xc1/xc9 + /x8f/xc1/xca + /x8f/xc1/xcb + /x8f/xc1/xcc + /x8f/xc1/xcd + /x8f/xc1/xce + /x8f/xc1/xcf + /x8f/xc1/xd0 + /x8f/xc1/xd1 + /x8f/xc1/xd2 + /x8f/xc1/xd3 + /x8f/xc1/xd4 + /x8f/xc1/xd5 + /x8f/xc1/xd6 + /x8f/xc1/xd7 + /x8f/xc1/xd8 + /x8f/xc1/xd9 + /x8f/xc1/xda + /x8f/xc1/xdb + /x8f/xc1/xdc + /x8f/xc1/xdd + /x8f/xc1/xde + /x8f/xc1/xdf + /x8f/xc1/xe0 + /x8f/xc1/xe1 + /x8f/xc1/xe2 + /x8f/xc1/xe3 + /x8f/xc1/xe4 + /x8f/xc1/xe5 + /x8f/xc1/xe6 + /x8f/xc1/xe7 + /x8f/xc1/xe8 + /x8f/xc1/xe9 + /x8f/xc1/xea + /x8f/xc1/xeb + /x8f/xc1/xec + /x8f/xc1/xed + /x8f/xc1/xee + /x8f/xc1/xef + /x8f/xc1/xf0 + /x8f/xc1/xf1 + /x8f/xc1/xf2 + /x8f/xc1/xf3 + /x8f/xc1/xf4 + /x8f/xc1/xf5 + /x8f/xc1/xf6 + /x8f/xc1/xf7 + /x8f/xc1/xf8 + /x8f/xc1/xf9 + /x8f/xc1/xfa + /x8f/xc1/xfb + /x8f/xc1/xfc + /x8f/xc1/xfd + /x8f/xc1/xfe + /x8f/xc2/xa1 + /x8f/xc2/xa2 + /x8f/xc2/xa3 + /x8f/xc2/xa4 + /x8f/xc2/xa5 + /x8f/xc2/xa6 + /x8f/xc2/xa7 + /x8f/xc2/xa8 + /x8f/xc2/xa9 + /x8f/xc2/xaa + /x8f/xc2/xab + /x8f/xc2/xac + /x8f/xc2/xad + /x8f/xc2/xae + /x8f/xc2/xaf + /x8f/xc2/xb0 + /x8f/xc2/xb1 + /x8f/xc2/xb2 + /x8f/xc2/xb3 + /x8f/xc2/xb4 + /x8f/xc2/xb5 + /x8f/xc2/xb6 + /x8f/xc2/xb7 + /x8f/xc2/xb8 + /x8f/xc2/xb9 + /x8f/xc2/xba + /x8f/xc2/xbb + /x8f/xc2/xbc + /x8f/xc2/xbd + /x8f/xc2/xbe + /x8f/xc2/xbf + /x8f/xc2/xc0 + /x8f/xc2/xc1 + /x8f/xc2/xc2 + /x8f/xc2/xc3 + /x8f/xc2/xc4 + /x8f/xc2/xc5 + /x8f/xc2/xc6 + /x8f/xc2/xc7 + /x8f/xc2/xc8 + /x8f/xc2/xc9 + /x8f/xc2/xca + /x8f/xc2/xcb + /x8f/xc2/xcc + /x8f/xc2/xcd + /x8f/xc2/xce + /x8f/xc2/xcf + /x8f/xc2/xd0 + /x8f/xc2/xd1 + /x8f/xc2/xd2 + /x8f/xc2/xd3 + /x8f/xc2/xd4 + /x8f/xc2/xd5 + /x8f/xc2/xd6 + /x8f/xc2/xd7 + /x8f/xc2/xd8 + /x8f/xc2/xd9 + /x8f/xc2/xda + /x8f/xc2/xdb + /x8f/xc2/xdc + /x8f/xc2/xdd + /x8f/xc2/xde + /x8f/xc2/xdf + /x8f/xc2/xe0 + /x8f/xc2/xe1 + /x8f/xc2/xe2 + /x8f/xc2/xe3 + /x8f/xc2/xe4 + /x8f/xc2/xe5 + /x8f/xc2/xe6 + /x8f/xc2/xe7 + /x8f/xc2/xe8 + /x8f/xc2/xe9 + /x8f/xc2/xea + /x8f/xc2/xeb + /x8f/xc2/xec + /x8f/xc2/xed + /x8f/xc2/xee + /x8f/xc2/xef + /x8f/xc2/xf0 + /x8f/xc2/xf1 + /x8f/xc2/xf2 + /x8f/xc2/xf3 + /x8f/xc2/xf4 + /x8f/xc2/xf5 + /x8f/xc2/xf6 + /x8f/xc2/xf7 + /x8f/xc2/xf8 + /x8f/xc2/xf9 + /x8f/xc2/xfa + /x8f/xc2/xfb + /x8f/xc2/xfc + /x8f/xc2/xfd + /x8f/xc2/xfe + /x8f/xc3/xa1 + /x8f/xc3/xa2 + /x8f/xc3/xa3 + /x8f/xc3/xa4 + /x8f/xc3/xa5 + /x8f/xc3/xa6 + /x8f/xc3/xa7 + /x8f/xc3/xa8 + /x8f/xc3/xa9 + /x8f/xc3/xaa + /x8f/xc3/xab + /x8f/xc3/xac + /x8f/xc3/xad + /x8f/xc3/xae + /x8f/xc3/xaf + /x8f/xc3/xb0 + /x8f/xc3/xb1 + /x8f/xc3/xb2 + /x8f/xc3/xb3 + /x8f/xc3/xb4 + /x8f/xc3/xb5 + /x8f/xc3/xb6 + /x8f/xc3/xb7 + /x8f/xc3/xb8 + /x8f/xc3/xb9 + /x8f/xc3/xba + /x8f/xc3/xbb + /x8f/xc3/xbc + /x8f/xc3/xbd + /x8f/xc3/xbe + /x8f/xc3/xbf + /x8f/xc3/xc0 + /x8f/xc3/xc1 + /x8f/xc3/xc2 + /x8f/xc3/xc3 + /x8f/xc3/xc4 + /x8f/xc3/xc5 + /x8f/xc3/xc6 + /x8f/xc3/xc7 + /x8f/xc3/xc8 + /x8f/xc3/xc9 + /x8f/xc3/xca + /x8f/xc3/xcb + /x8f/xc3/xcc + /x8f/xc3/xcd + /x8f/xc3/xce + /x8f/xc3/xcf + /x8f/xc3/xd0 + /x8f/xc3/xd1 + /x8f/xc3/xd2 + /x8f/xc3/xd3 + /x8f/xc3/xd4 + /x8f/xc3/xd5 + /x8f/xc3/xd6 + /x8f/xc3/xd7 + /x8f/xc3/xd8 + /x8f/xc3/xd9 + /x8f/xc3/xda + /x8f/xc3/xdb + /x8f/xc3/xdc + /x8f/xc3/xdd + /x8f/xc3/xde + /x8f/xc3/xdf + /x8f/xc3/xe0 + /x8f/xc3/xe1 + /x8f/xc3/xe2 + /x8f/xc3/xe3 + /x8f/xc3/xe4 + /x8f/xc3/xe5 + /x8f/xc3/xe6 + /x8f/xc3/xe7 + /x8f/xc3/xe8 + /x8f/xc3/xe9 + /x8f/xc3/xea + /x8f/xc3/xeb + /x8f/xc3/xec + /x8f/xc3/xed + /x8f/xc3/xee + /x8f/xc3/xef + /x8f/xc3/xf0 + /x8f/xc3/xf1 + /x8f/xc3/xf2 + /x8f/xc3/xf3 + /x8f/xc3/xf4 + /x8f/xc3/xf5 + /x8f/xc3/xf6 + /x8f/xc3/xf7 + /x8f/xc3/xf8 + /x8f/xc3/xf9 + /x8f/xc3/xfa + /x8f/xc3/xfb + /x8f/xc3/xfc + /x8f/xc3/xfd + /x8f/xc3/xfe + /x8f/xc4/xa1 + /x8f/xc4/xa2 + /x8f/xc4/xa3 + /x8f/xc4/xa4 + /x8f/xc4/xa5 + /x8f/xc4/xa6 + /x8f/xc4/xa7 + /x8f/xc4/xa8 + /x8f/xc4/xa9 + /x8f/xc4/xaa + /x8f/xc4/xab + /x8f/xc4/xac + /x8f/xc4/xad + /x8f/xc4/xae + /x8f/xc4/xaf + /x8f/xc4/xb0 + /x8f/xc4/xb1 + /x8f/xc4/xb2 + /x8f/xc4/xb3 + /x8f/xc4/xb4 + /x8f/xc4/xb5 + /x8f/xc4/xb6 + /x8f/xc4/xb7 + /x8f/xc4/xb8 + /x8f/xc4/xb9 + /x8f/xc4/xba + /x8f/xc4/xbb + /x8f/xc4/xbc + /x8f/xc4/xbd + /x8f/xc4/xbe + /x8f/xc4/xbf + /x8f/xc4/xc0 + /x8f/xc4/xc1 + /x8f/xc4/xc2 + /x8f/xc4/xc3 + /x8f/xc4/xc4 + /x8f/xc4/xc5 + /x8f/xc4/xc6 + /x8f/xc4/xc7 + /x8f/xc4/xc8 + /x8f/xc4/xc9 + /x8f/xc4/xca + /x8f/xc4/xcb + /x8f/xc4/xcc + /x8f/xc4/xcd + /x8f/xc4/xce + /x8f/xc4/xcf + /x8f/xc4/xd0 + /x8f/xc4/xd1 + /x8f/xc4/xd2 + /x8f/xc4/xd3 + /x8f/xc4/xd4 + /x8f/xc4/xd5 + /x8f/xc4/xd6 + /x8f/xc4/xd7 + /x8f/xc4/xd8 + /x8f/xc4/xd9 + /x8f/xc4/xda + /x8f/xc4/xdb + /x8f/xc4/xdc + /x8f/xc4/xdd + /x8f/xc4/xde + /x8f/xc4/xdf + /x8f/xc4/xe0 + /x8f/xc4/xe1 + /x8f/xc4/xe2 + /x8f/xc4/xe3 + /x8f/xc4/xe4 + /x8f/xc4/xe5 + /x8f/xc4/xe6 + /x8f/xc4/xe7 + /x8f/xc4/xe8 + /x8f/xc4/xe9 + /x8f/xc4/xea + /x8f/xc4/xeb + /x8f/xc4/xec + /x8f/xc4/xed + /x8f/xc4/xee + /x8f/xc4/xef + /x8f/xc4/xf0 + /x8f/xc4/xf1 + /x8f/xc4/xf2 + /x8f/xc4/xf3 + /x8f/xc4/xf4 + /x8f/xc4/xf5 + /x8f/xc4/xf6 + /x8f/xc4/xf7 + /x8f/xc4/xf8 + /x8f/xc4/xf9 + /x8f/xc4/xfa + /x8f/xc4/xfb + /x8f/xc4/xfc + /x8f/xc4/xfd + /x8f/xc4/xfe + /x8f/xc5/xa1 + /x8f/xc5/xa2 + /x8f/xc5/xa3 + /x8f/xc5/xa4 + /x8f/xc5/xa5 + /x8f/xc5/xa6 + /x8f/xc5/xa7 + /x8f/xc5/xa8 + /x8f/xc5/xa9 + /x8f/xc5/xaa + /x8f/xc5/xab + /x8f/xc5/xac + /x8f/xc5/xad + /x8f/xc5/xae + /x8f/xc5/xaf + /x8f/xc5/xb0 + /x8f/xc5/xb1 + /x8f/xc5/xb2 + /x8f/xc5/xb3 + /x8f/xc5/xb4 + /x8f/xc5/xb5 + /x8f/xc5/xb6 + /x8f/xc5/xb7 + /x8f/xc5/xb8 + /x8f/xc5/xb9 + /x8f/xc5/xba + /x8f/xc5/xbb + /x8f/xc5/xbc + /x8f/xc5/xbd + /x8f/xc5/xbe + /x8f/xc5/xbf + /x8f/xc5/xc0 + /x8f/xc5/xc1 + /x8f/xc5/xc2 + /x8f/xc5/xc3 + /x8f/xc5/xc4 + /x8f/xc5/xc5 + /x8f/xc5/xc6 + /x8f/xc5/xc7 + /x8f/xc5/xc8 + /x8f/xc5/xc9 + /x8f/xc5/xca + /x8f/xc5/xcb + /x8f/xc5/xcc + /x8f/xc5/xcd + /x8f/xc5/xce + /x8f/xc5/xcf + /x8f/xc5/xd0 + /x8f/xc5/xd1 + /x8f/xc5/xd2 + /x8f/xc5/xd3 + /x8f/xc5/xd4 + /x8f/xc5/xd5 + /x8f/xc5/xd6 + /x8f/xc5/xd7 + /x8f/xc5/xd8 + /x8f/xc5/xd9 + /x8f/xc5/xda + /x8f/xc5/xdb + /x8f/xc5/xdc + /x8f/xc5/xdd + /x8f/xc5/xde + /x8f/xc5/xdf + /x8f/xc5/xe0 + /x8f/xc5/xe1 + /x8f/xc5/xe2 + /x8f/xc5/xe3 + /x8f/xc5/xe4 + /x8f/xc5/xe5 + /x8f/xc5/xe6 + /x8f/xc5/xe7 + /x8f/xc5/xe8 + /x8f/xc5/xe9 + /x8f/xc5/xea + /x8f/xc5/xeb + /x8f/xc5/xec + /x8f/xc5/xed + /x8f/xc5/xee + /x8f/xc5/xef + /x8f/xc5/xf0 + /x8f/xc5/xf1 + /x8f/xc5/xf2 + /x8f/xc5/xf3 + /x8f/xc5/xf4 + /x8f/xc5/xf5 + /x8f/xc5/xf6 + /x8f/xc5/xf7 + /x8f/xc5/xf8 + /x8f/xc5/xf9 + /x8f/xc5/xfa + /x8f/xc5/xfb + /x8f/xc5/xfc + /x8f/xc5/xfd + /x8f/xc5/xfe + /x8f/xc6/xa1 + /x8f/xc6/xa2 + /x8f/xc6/xa3 + /x8f/xc6/xa4 + /x8f/xc6/xa5 + /x8f/xc6/xa6 + /x8f/xc6/xa7 + /x8f/xc6/xa8 + /x8f/xc6/xa9 + /x8f/xc6/xaa + /x8f/xc6/xab + /x8f/xc6/xac + /x8f/xc6/xad + /x8f/xc6/xae + /x8f/xc6/xaf + /x8f/xc6/xb0 + /x8f/xc6/xb1 + /x8f/xc6/xb2 + /x8f/xc6/xb3 + /x8f/xc6/xb4 + /x8f/xc6/xb5 + /x8f/xc6/xb6 + /x8f/xc6/xb7 + /x8f/xc6/xb8 + /x8f/xc6/xb9 + /x8f/xc6/xba + /x8f/xc6/xbb + /x8f/xc6/xbc + /x8f/xc6/xbd + /x8f/xc6/xbe + /x8f/xc6/xbf + /x8f/xc6/xc0 + /x8f/xc6/xc1 + /x8f/xc6/xc2 + /x8f/xc6/xc3 + /x8f/xc6/xc4 + /x8f/xc6/xc5 + /x8f/xc6/xc6 + /x8f/xc6/xc7 + /x8f/xc6/xc8 + /x8f/xc6/xc9 + /x8f/xc6/xca + /x8f/xc6/xcb + /x8f/xc6/xcc + /x8f/xc6/xcd + /x8f/xc6/xce + /x8f/xc6/xcf + /x8f/xc6/xd0 + /x8f/xc6/xd1 + /x8f/xc6/xd2 + /x8f/xc6/xd3 + /x8f/xc6/xd4 + /x8f/xc6/xd5 + /x8f/xc6/xd6 + /x8f/xc6/xd7 + /x8f/xc6/xd8 + /x8f/xc6/xd9 + /x8f/xc6/xda + /x8f/xc6/xdb + /x8f/xc6/xdc + /x8f/xc6/xdd + /x8f/xc6/xde + /x8f/xc6/xdf + /x8f/xc6/xe0 + /x8f/xc6/xe1 + /x8f/xc6/xe2 + /x8f/xc6/xe3 + /x8f/xc6/xe4 + /x8f/xc6/xe5 + /x8f/xc6/xe6 + /x8f/xc6/xe7 + /x8f/xc6/xe8 + /x8f/xc6/xe9 + /x8f/xc6/xea + /x8f/xc6/xeb + /x8f/xc6/xec + /x8f/xc6/xed + /x8f/xc6/xee + /x8f/xc6/xef + /x8f/xc6/xf0 + /x8f/xc6/xf1 + /x8f/xc6/xf2 + /x8f/xc6/xf3 + /x8f/xc6/xf4 + /x8f/xc6/xf5 + /x8f/xc6/xf6 + /x8f/xc6/xf7 + /x8f/xc6/xf8 + /x8f/xc6/xf9 + /x8f/xc6/xfa + /x8f/xc6/xfb + /x8f/xc6/xfc + /x8f/xc6/xfd + /x8f/xc6/xfe + /x8f/xc7/xa1 + /x8f/xc7/xa2 + /x8f/xc7/xa3 + /x8f/xc7/xa4 + /x8f/xc7/xa5 + /x8f/xc7/xa6 + /x8f/xc7/xa7 + /x8f/xc7/xa8 + /x8f/xc7/xa9 + /x8f/xc7/xaa + /x8f/xc7/xab + /x8f/xc7/xac + /x8f/xc7/xad + /x8f/xc7/xae + /x8f/xc7/xaf + /x8f/xc7/xb0 + /x8f/xc7/xb1 + /x8f/xc7/xb2 + /x8f/xc7/xb3 + /x8f/xc7/xb4 + /x8f/xc7/xb5 + /x8f/xc7/xb6 + /x8f/xc7/xb7 + /x8f/xc7/xb8 + /x8f/xc7/xb9 + /x8f/xc7/xba + /x8f/xc7/xbb + /x8f/xc7/xbc + /x8f/xc7/xbd + /x8f/xc7/xbe + /x8f/xc7/xbf + /x8f/xc7/xc0 + /x8f/xc7/xc1 + /x8f/xc7/xc2 + /x8f/xc7/xc3 + /x8f/xc7/xc4 + /x8f/xc7/xc5 + /x8f/xc7/xc6 + /x8f/xc7/xc7 + /x8f/xc7/xc8 + /x8f/xc7/xc9 + /x8f/xc7/xca + /x8f/xc7/xcb + /x8f/xc7/xcc + /x8f/xc7/xcd + /x8f/xc7/xce + /x8f/xc7/xcf + /x8f/xc7/xd0 + /x8f/xc7/xd1 + /x8f/xc7/xd2 + /x8f/xc7/xd3 + /x8f/xc7/xd4 + /x8f/xc7/xd5 + /x8f/xc7/xd6 + /x8f/xc7/xd7 + /x8f/xc7/xd8 + /x8f/xc7/xd9 + /x8f/xc7/xda + /x8f/xc7/xdb + /x8f/xc7/xdc + /x8f/xc7/xdd + /x8f/xc7/xde + /x8f/xc7/xdf + /x8f/xc7/xe0 + /x8f/xc7/xe1 + /x8f/xc7/xe2 + /x8f/xc7/xe3 + /x8f/xc7/xe4 + /x8f/xc7/xe5 + /x8f/xc7/xe6 + /x8f/xc7/xe7 + /x8f/xc7/xe8 + /x8f/xc7/xe9 + /x8f/xc7/xea + /x8f/xc7/xeb + /x8f/xc7/xec + /x8f/xc7/xed + /x8f/xc7/xee + /x8f/xc7/xef + /x8f/xc7/xf0 + /x8f/xc7/xf1 + /x8f/xc7/xf2 + /x8f/xc7/xf3 + /x8f/xc7/xf4 + /x8f/xc7/xf5 + /x8f/xc7/xf6 + /x8f/xc7/xf7 + /x8f/xc7/xf8 + /x8f/xc7/xf9 + /x8f/xc7/xfa + /x8f/xc7/xfb + /x8f/xc7/xfc + /x8f/xc7/xfd + /x8f/xc7/xfe + /x8f/xc8/xa1 + /x8f/xc8/xa2 + /x8f/xc8/xa3 + /x8f/xc8/xa4 + /x8f/xc8/xa5 + /x8f/xc8/xa6 + /x8f/xc8/xa7 + /x8f/xc8/xa8 + /x8f/xc8/xa9 + /x8f/xc8/xaa + /x8f/xc8/xab + /x8f/xc8/xac + /x8f/xc8/xad + /x8f/xc8/xae + /x8f/xc8/xaf + /x8f/xc8/xb0 + /x8f/xc8/xb1 + /x8f/xc8/xb2 + /x8f/xc8/xb3 + /x8f/xc8/xb4 + /x8f/xc8/xb5 + /x8f/xc8/xb6 + /x8f/xc8/xb7 + /x8f/xc8/xb8 + /x8f/xc8/xb9 + /x8f/xc8/xba + /x8f/xc8/xbb + /x8f/xc8/xbc + /x8f/xc8/xbd + /x8f/xc8/xbe + /x8f/xc8/xbf + /x8f/xc8/xc0 + /x8f/xc8/xc1 + /x8f/xc8/xc2 + /x8f/xc8/xc3 + /x8f/xc8/xc4 + /x8f/xc8/xc5 + /x8f/xc8/xc6 + /x8f/xc8/xc7 + /x8f/xc8/xc8 + /x8f/xc8/xc9 + /x8f/xc8/xca + /x8f/xc8/xcb + /x8f/xc8/xcc + /x8f/xc8/xcd + /x8f/xc8/xce + /x8f/xc8/xcf + /x8f/xc8/xd0 + /x8f/xc8/xd1 + /x8f/xc8/xd2 + /x8f/xc8/xd3 + /x8f/xc8/xd4 + /x8f/xc8/xd5 + /x8f/xc8/xd6 + /x8f/xc8/xd7 + /x8f/xc8/xd8 + /x8f/xc8/xd9 + /x8f/xc8/xda + /x8f/xc8/xdb + /x8f/xc8/xdc + /x8f/xc8/xdd + /x8f/xc8/xde + /x8f/xc8/xdf + /x8f/xc8/xe0 + /x8f/xc8/xe1 + /x8f/xc8/xe2 + /x8f/xc8/xe3 + /x8f/xc8/xe4 + /x8f/xc8/xe5 + /x8f/xc8/xe6 + /x8f/xc8/xe7 + /x8f/xc8/xe8 + /x8f/xc8/xe9 + /x8f/xc8/xea + /x8f/xc8/xeb + /x8f/xc8/xec + /x8f/xc8/xed + /x8f/xc8/xee + /x8f/xc8/xef + /x8f/xc8/xf0 + /x8f/xc8/xf1 + /x8f/xc8/xf2 + /x8f/xc8/xf3 + /x8f/xc8/xf4 + /x8f/xc8/xf5 + /x8f/xc8/xf6 + /x8f/xc8/xf7 + /x8f/xc8/xf8 + /x8f/xc8/xf9 + /x8f/xc8/xfa + /x8f/xc8/xfb + /x8f/xc8/xfc + /x8f/xc8/xfd + /x8f/xc8/xfe + /x8f/xc9/xa1 + /x8f/xc9/xa2 + /x8f/xc9/xa3 + /x8f/xc9/xa4 + /x8f/xc9/xa5 + /x8f/xc9/xa6 + /x8f/xc9/xa7 + /x8f/xc9/xa8 + /x8f/xc9/xa9 + /x8f/xc9/xaa + /x8f/xc9/xab + /x8f/xc9/xac + /x8f/xc9/xad + /x8f/xc9/xae + /x8f/xc9/xaf + /x8f/xc9/xb0 + /x8f/xc9/xb1 + /x8f/xc9/xb2 + /x8f/xc9/xb3 + /x8f/xc9/xb4 + /x8f/xc9/xb5 + /x8f/xc9/xb6 + /x8f/xc9/xb7 + /x8f/xc9/xb8 + /x8f/xc9/xb9 + /x8f/xc9/xba + /x8f/xc9/xbb + /x8f/xc9/xbc + /x8f/xc9/xbd + /x8f/xc9/xbe + /x8f/xc9/xbf + /x8f/xc9/xc0 + /x8f/xc9/xc1 + /x8f/xc9/xc2 + /x8f/xc9/xc3 + /x8f/xc9/xc4 + /x8f/xc9/xc5 + /x8f/xc9/xc6 + /x8f/xc9/xc7 + /x8f/xc9/xc8 + /x8f/xc9/xc9 + /x8f/xc9/xca + /x8f/xc9/xcb + /x8f/xc9/xcc + /x8f/xc9/xcd + /x8f/xc9/xce + /x8f/xc9/xcf + /x8f/xc9/xd0 + /x8f/xc9/xd1 + /x8f/xc9/xd2 + /x8f/xc9/xd3 + /x8f/xc9/xd4 + /x8f/xc9/xd5 + /x8f/xc9/xd6 + /x8f/xc9/xd7 + /x8f/xc9/xd8 + /x8f/xc9/xd9 + /x8f/xc9/xda + /x8f/xc9/xdb + /x8f/xc9/xdc + /x8f/xc9/xdd + /x8f/xc9/xde + /x8f/xc9/xdf + /x8f/xc9/xe0 + /x8f/xc9/xe1 + /x8f/xc9/xe2 + /x8f/xc9/xe3 + /x8f/xc9/xe4 + /x8f/xc9/xe5 + /x8f/xc9/xe6 + /x8f/xc9/xe7 + /x8f/xc9/xe8 + /x8f/xc9/xe9 + /x8f/xc9/xea + /x8f/xc9/xeb + /x8f/xc9/xec + /x8f/xc9/xed + /x8f/xc9/xee + /x8f/xc9/xef + /x8f/xc9/xf0 + /x8f/xc9/xf1 + /x8f/xc9/xf2 + /x8f/xc9/xf3 + /x8f/xc9/xf4 + /x8f/xc9/xf5 + /x8f/xc9/xf6 + /x8f/xc9/xf7 + /x8f/xc9/xf8 + /x8f/xc9/xf9 + /x8f/xc9/xfa + /x8f/xc9/xfb + /x8f/xc9/xfc + /x8f/xc9/xfd + /x8f/xc9/xfe + /x8f/xca/xa1 + /x8f/xca/xa2 + /x8f/xca/xa3 + /x8f/xca/xa4 + /x8f/xca/xa5 + /x8f/xca/xa6 + /x8f/xca/xa7 + /x8f/xca/xa8 + /x8f/xca/xa9 + /x8f/xca/xaa + /x8f/xca/xab + /x8f/xca/xac + /x8f/xca/xad + /x8f/xca/xae + /x8f/xca/xaf + /x8f/xca/xb0 + /x8f/xca/xb1 + /x8f/xca/xb2 + /x8f/xca/xb3 + /x8f/xca/xb4 + /x8f/xca/xb5 + /x8f/xca/xb6 + /x8f/xca/xb7 + /x8f/xca/xb8 + /x8f/xca/xb9 + /x8f/xca/xba + /x8f/xca/xbb + /x8f/xca/xbc + /x8f/xca/xbd + /x8f/xca/xbe + /x8f/xca/xbf + /x8f/xca/xc0 + /x8f/xca/xc1 + /x8f/xca/xc2 + /x8f/xca/xc3 + /x8f/xca/xc4 + /x8f/xca/xc5 + /x8f/xca/xc6 + /x8f/xca/xc7 + /x8f/xca/xc8 + /x8f/xca/xc9 + /x8f/xca/xca + /x8f/xca/xcb + /x8f/xca/xcc + /x8f/xca/xcd + /x8f/xca/xce + /x8f/xca/xcf + /x8f/xca/xd0 + /x8f/xca/xd1 + /x8f/xca/xd2 + /x8f/xca/xd3 + /x8f/xca/xd4 + /x8f/xca/xd5 + /x8f/xca/xd6 + /x8f/xca/xd7 + /x8f/xca/xd8 + /x8f/xca/xd9 + /x8f/xca/xda + /x8f/xca/xdb + /x8f/xca/xdc + /x8f/xca/xdd + /x8f/xca/xde + /x8f/xca/xdf + /x8f/xca/xe0 + /x8f/xca/xe1 + /x8f/xca/xe2 + /x8f/xca/xe3 + /x8f/xca/xe4 + /x8f/xca/xe5 + /x8f/xca/xe6 + /x8f/xca/xe7 + /x8f/xca/xe8 + /x8f/xca/xe9 + /x8f/xca/xea + /x8f/xca/xeb + /x8f/xca/xec + /x8f/xca/xed + /x8f/xca/xee + /x8f/xca/xef + /x8f/xca/xf0 + /x8f/xca/xf1 + /x8f/xca/xf2 + /x8f/xca/xf3 + /x8f/xca/xf4 + /x8f/xca/xf5 + /x8f/xca/xf6 + /x8f/xca/xf7 + /x8f/xca/xf8 + /x8f/xca/xf9 + /x8f/xca/xfa + /x8f/xca/xfb + /x8f/xca/xfc + /x8f/xca/xfd + /x8f/xca/xfe + /x8f/xcb/xa1 + /x8f/xcb/xa2 + /x8f/xcb/xa3 + /x8f/xcb/xa4 + /x8f/xcb/xa5 + /x8f/xcb/xa6 + /x8f/xcb/xa7 + /x8f/xcb/xa8 + /x8f/xcb/xa9 + /x8f/xcb/xaa + /x8f/xcb/xab + /x8f/xcb/xac + /x8f/xcb/xad + /x8f/xcb/xae + /x8f/xcb/xaf + /x8f/xcb/xb0 + /x8f/xcb/xb1 + /x8f/xcb/xb2 + /x8f/xcb/xb3 + /x8f/xcb/xb4 + /x8f/xcb/xb5 + /x8f/xcb/xb6 + /x8f/xcb/xb7 + /x8f/xcb/xb8 + /x8f/xcb/xb9 + /x8f/xcb/xba + /x8f/xcb/xbb + /x8f/xcb/xbc + /x8f/xcb/xbd + /x8f/xcb/xbe + /x8f/xcb/xbf + /x8f/xcb/xc0 + /x8f/xcb/xc1 + /x8f/xcb/xc2 + /x8f/xcb/xc3 + /x8f/xcb/xc4 + /x8f/xcb/xc5 + /x8f/xcb/xc6 + /x8f/xcb/xc7 + /x8f/xcb/xc8 + /x8f/xcb/xc9 + /x8f/xcb/xca + /x8f/xcb/xcb + /x8f/xcb/xcc + /x8f/xcb/xcd + /x8f/xcb/xce + /x8f/xcb/xcf + /x8f/xcb/xd0 + /x8f/xcb/xd1 + /x8f/xcb/xd2 + /x8f/xcb/xd3 + /x8f/xcb/xd4 + /x8f/xcb/xd5 + /x8f/xcb/xd6 + /x8f/xcb/xd7 + /x8f/xcb/xd8 + /x8f/xcb/xd9 + /x8f/xcb/xda + /x8f/xcb/xdb + /x8f/xcb/xdc + /x8f/xcb/xdd + /x8f/xcb/xde + /x8f/xcb/xdf + /x8f/xcb/xe0 + /x8f/xcb/xe1 + /x8f/xcb/xe2 + /x8f/xcb/xe3 + /x8f/xcb/xe4 + /x8f/xcb/xe5 + /x8f/xcb/xe6 + /x8f/xcb/xe7 + /x8f/xcb/xe8 + /x8f/xcb/xe9 + /x8f/xcb/xea + /x8f/xcb/xeb + /x8f/xcb/xec + /x8f/xcb/xed + /x8f/xcb/xee + /x8f/xcb/xef + /x8f/xcb/xf0 + /x8f/xcb/xf1 + /x8f/xcb/xf2 + /x8f/xcb/xf3 + /x8f/xcb/xf4 + /x8f/xcb/xf5 + /x8f/xcb/xf6 + /x8f/xcb/xf7 + /x8f/xcb/xf8 + /x8f/xcb/xf9 + /x8f/xcb/xfa + /x8f/xcb/xfb + /x8f/xcb/xfc + /x8f/xcb/xfd + /x8f/xcb/xfe + /x8f/xcc/xa1 + /x8f/xcc/xa2 + /x8f/xcc/xa3 + /x8f/xcc/xa4 + /x8f/xcc/xa5 + /x8f/xcc/xa6 + /x8f/xcc/xa7 + /x8f/xcc/xa8 + /x8f/xcc/xa9 + /x8f/xcc/xaa + /x8f/xcc/xab + /x8f/xcc/xac + /x8f/xcc/xad + /x8f/xcc/xae + /x8f/xcc/xaf + /x8f/xcc/xb0 + /x8f/xcc/xb1 + /x8f/xcc/xb2 + /x8f/xcc/xb3 + /x8f/xcc/xb4 + /x8f/xcc/xb5 + /x8f/xcc/xb6 + /x8f/xcc/xb7 + /x8f/xcc/xb8 + /x8f/xcc/xb9 + /x8f/xcc/xba + /x8f/xcc/xbb + /x8f/xcc/xbc + /x8f/xcc/xbd + /x8f/xcc/xbe + /x8f/xcc/xbf + /x8f/xcc/xc0 + /x8f/xcc/xc1 + /x8f/xcc/xc2 + /x8f/xcc/xc3 + /x8f/xcc/xc4 + /x8f/xcc/xc5 + /x8f/xcc/xc6 + /x8f/xcc/xc7 + /x8f/xcc/xc8 + /x8f/xcc/xc9 + /x8f/xcc/xca + /x8f/xcc/xcb + /x8f/xcc/xcc + /x8f/xcc/xcd + /x8f/xcc/xce + /x8f/xcc/xcf + /x8f/xcc/xd0 + /x8f/xcc/xd1 + /x8f/xcc/xd2 + /x8f/xcc/xd3 + /x8f/xcc/xd4 + /x8f/xcc/xd5 + /x8f/xcc/xd6 + /x8f/xcc/xd7 + /x8f/xcc/xd8 + /x8f/xcc/xd9 + /x8f/xcc/xda + /x8f/xcc/xdb + /x8f/xcc/xdc + /x8f/xcc/xdd + /x8f/xcc/xde + /x8f/xcc/xdf + /x8f/xcc/xe0 + /x8f/xcc/xe1 + /x8f/xcc/xe2 + /x8f/xcc/xe3 + /x8f/xcc/xe4 + /x8f/xcc/xe5 + /x8f/xcc/xe6 + /x8f/xcc/xe7 + /x8f/xcc/xe8 + /x8f/xcc/xe9 + /x8f/xcc/xea + /x8f/xcc/xeb + /x8f/xcc/xec + /x8f/xcc/xed + /x8f/xcc/xee + /x8f/xcc/xef + /x8f/xcc/xf0 + /x8f/xcc/xf1 + /x8f/xcc/xf2 + /x8f/xcc/xf3 + /x8f/xcc/xf4 + /x8f/xcc/xf5 + /x8f/xcc/xf6 + /x8f/xcc/xf7 + /x8f/xcc/xf8 + /x8f/xcc/xf9 + /x8f/xcc/xfa + /x8f/xcc/xfb + /x8f/xcc/xfc + /x8f/xcc/xfd + /x8f/xcc/xfe + /x8f/xcd/xa1 + /x8f/xcd/xa2 + /x8f/xcd/xa3 + /x8f/xcd/xa4 + /x8f/xcd/xa5 + /x8f/xcd/xa6 + /x8f/xcd/xa7 + /x8f/xcd/xa8 + /x8f/xcd/xa9 + /x8f/xcd/xaa + /x8f/xcd/xab + /x8f/xcd/xac + /x8f/xcd/xad + /x8f/xcd/xae + /x8f/xcd/xaf + /x8f/xcd/xb0 + /x8f/xcd/xb1 + /x8f/xcd/xb2 + /x8f/xcd/xb3 + /x8f/xcd/xb4 + /x8f/xcd/xb5 + /x8f/xcd/xb6 + /x8f/xcd/xb7 + /x8f/xcd/xb8 + /x8f/xcd/xb9 + /x8f/xcd/xba + /x8f/xcd/xbb + /x8f/xcd/xbc + /x8f/xcd/xbd + /x8f/xcd/xbe + /x8f/xcd/xbf + /x8f/xcd/xc0 + /x8f/xcd/xc1 + /x8f/xcd/xc2 + /x8f/xcd/xc3 + /x8f/xcd/xc4 + /x8f/xcd/xc5 + /x8f/xcd/xc6 + /x8f/xcd/xc7 + /x8f/xcd/xc8 + /x8f/xcd/xc9 + /x8f/xcd/xca + /x8f/xcd/xcb + /x8f/xcd/xcc + /x8f/xcd/xcd + /x8f/xcd/xce + /x8f/xcd/xcf + /x8f/xcd/xd0 + /x8f/xcd/xd1 + /x8f/xcd/xd2 + /x8f/xcd/xd3 + /x8f/xcd/xd4 + /x8f/xcd/xd5 + /x8f/xcd/xd6 + /x8f/xcd/xd7 + /x8f/xcd/xd8 + /x8f/xcd/xd9 + /x8f/xcd/xda + /x8f/xcd/xdb + /x8f/xcd/xdc + /x8f/xcd/xdd + /x8f/xcd/xde + /x8f/xcd/xdf + /x8f/xcd/xe0 + /x8f/xcd/xe1 + /x8f/xcd/xe2 + /x8f/xcd/xe3 + /x8f/xcd/xe4 + /x8f/xcd/xe5 + /x8f/xcd/xe6 + /x8f/xcd/xe7 + /x8f/xcd/xe8 + /x8f/xcd/xe9 + /x8f/xcd/xea + /x8f/xcd/xeb + /x8f/xcd/xec + /x8f/xcd/xed + /x8f/xcd/xee + /x8f/xcd/xef + /x8f/xcd/xf0 + /x8f/xcd/xf1 + /x8f/xcd/xf2 + /x8f/xcd/xf3 + /x8f/xcd/xf4 + /x8f/xcd/xf5 + /x8f/xcd/xf6 + /x8f/xcd/xf7 + /x8f/xcd/xf8 + /x8f/xcd/xf9 + /x8f/xcd/xfa + /x8f/xcd/xfb + /x8f/xcd/xfc + /x8f/xcd/xfd + /x8f/xcd/xfe + /x8f/xce/xa1 + /x8f/xce/xa2 + /x8f/xce/xa3 + /x8f/xce/xa4 + /x8f/xce/xa5 + /x8f/xce/xa6 + /x8f/xce/xa7 + /x8f/xce/xa8 + /x8f/xce/xa9 + /x8f/xce/xaa + /x8f/xce/xab + /x8f/xce/xac + /x8f/xce/xad + /x8f/xce/xae + /x8f/xce/xaf + /x8f/xce/xb0 + /x8f/xce/xb1 + /x8f/xce/xb2 + /x8f/xce/xb3 + /x8f/xce/xb4 + /x8f/xce/xb5 + /x8f/xce/xb6 + /x8f/xce/xb7 + /x8f/xce/xb8 + /x8f/xce/xb9 + /x8f/xce/xba + /x8f/xce/xbb + /x8f/xce/xbc + /x8f/xce/xbd + /x8f/xce/xbe + /x8f/xce/xbf + /x8f/xce/xc0 + /x8f/xce/xc1 + /x8f/xce/xc2 + /x8f/xce/xc3 + /x8f/xce/xc4 + /x8f/xce/xc5 + /x8f/xce/xc6 + /x8f/xce/xc7 + /x8f/xce/xc8 + /x8f/xce/xc9 + /x8f/xce/xca + /x8f/xce/xcb + /x8f/xce/xcc + /x8f/xce/xcd + /x8f/xce/xce + /x8f/xce/xcf + /x8f/xce/xd0 + /x8f/xce/xd1 + /x8f/xce/xd2 + /x8f/xce/xd3 + /x8f/xce/xd4 + /x8f/xce/xd5 + /x8f/xce/xd6 + /x8f/xce/xd7 + /x8f/xce/xd8 + /x8f/xce/xd9 + /x8f/xce/xda + /x8f/xce/xdb + /x8f/xce/xdc + /x8f/xce/xdd + /x8f/xce/xde + /x8f/xce/xdf + /x8f/xce/xe0 + /x8f/xce/xe1 + /x8f/xce/xe2 + /x8f/xce/xe3 + /x8f/xce/xe4 + /x8f/xce/xe5 + /x8f/xce/xe6 + /x8f/xce/xe7 + /x8f/xce/xe8 + /x8f/xce/xe9 + /x8f/xce/xea + /x8f/xce/xeb + /x8f/xce/xec + /x8f/xce/xed + /x8f/xce/xee + /x8f/xce/xef + /x8f/xce/xf0 + /x8f/xce/xf1 + /x8f/xce/xf2 + /x8f/xce/xf3 + /x8f/xce/xf4 + /x8f/xce/xf5 + /x8f/xce/xf6 + /x8f/xce/xf7 + /x8f/xce/xf8 + /x8f/xce/xf9 + /x8f/xce/xfa + /x8f/xce/xfb + /x8f/xce/xfc + /x8f/xce/xfd + /x8f/xce/xfe + /x8f/xcf/xa1 + /x8f/xcf/xa2 + /x8f/xcf/xa3 + /x8f/xcf/xa4 + /x8f/xcf/xa5 + /x8f/xcf/xa6 + /x8f/xcf/xa7 + /x8f/xcf/xa8 + /x8f/xcf/xa9 + /x8f/xcf/xaa + /x8f/xcf/xab + /x8f/xcf/xac + /x8f/xcf/xad + /x8f/xcf/xae + /x8f/xcf/xaf + /x8f/xcf/xb0 + /x8f/xcf/xb1 + /x8f/xcf/xb2 + /x8f/xcf/xb3 + /x8f/xcf/xb4 + /x8f/xcf/xb5 + /x8f/xcf/xb6 + /x8f/xcf/xb7 + /x8f/xcf/xb8 + /x8f/xcf/xb9 + /x8f/xcf/xba + /x8f/xcf/xbb + /x8f/xcf/xbc + /x8f/xcf/xbd + /x8f/xcf/xbe + /x8f/xcf/xbf + /x8f/xcf/xc0 + /x8f/xcf/xc1 + /x8f/xcf/xc2 + /x8f/xcf/xc3 + /x8f/xcf/xc4 + /x8f/xcf/xc5 + /x8f/xcf/xc6 + /x8f/xcf/xc7 + /x8f/xcf/xc8 + /x8f/xcf/xc9 + /x8f/xcf/xca + /x8f/xcf/xcb + /x8f/xcf/xcc + /x8f/xcf/xcd + /x8f/xcf/xce + /x8f/xcf/xcf + /x8f/xcf/xd0 + /x8f/xcf/xd1 + /x8f/xcf/xd2 + /x8f/xcf/xd3 + /x8f/xcf/xd4 + /x8f/xcf/xd5 + /x8f/xcf/xd6 + /x8f/xcf/xd7 + /x8f/xcf/xd8 + /x8f/xcf/xd9 + /x8f/xcf/xda + /x8f/xcf/xdb + /x8f/xcf/xdc + /x8f/xcf/xdd + /x8f/xcf/xde + /x8f/xcf/xdf + /x8f/xcf/xe0 + /x8f/xcf/xe1 + /x8f/xcf/xe2 + /x8f/xcf/xe3 + /x8f/xcf/xe4 + /x8f/xcf/xe5 + /x8f/xcf/xe6 + /x8f/xcf/xe7 + /x8f/xcf/xe8 + /x8f/xcf/xe9 + /x8f/xcf/xea + /x8f/xcf/xeb + /x8f/xcf/xec + /x8f/xcf/xed + /x8f/xcf/xee + /x8f/xcf/xef + /x8f/xcf/xf0 + /x8f/xcf/xf1 + /x8f/xcf/xf2 + /x8f/xcf/xf3 + /x8f/xcf/xf4 + /x8f/xcf/xf5 + /x8f/xcf/xf6 + /x8f/xcf/xf7 + /x8f/xcf/xf8 + /x8f/xcf/xf9 + /x8f/xcf/xfa + /x8f/xcf/xfb + /x8f/xcf/xfc + /x8f/xcf/xfd + /x8f/xcf/xfe + /x8f/xd0/xa1 + /x8f/xd0/xa2 + /x8f/xd0/xa3 + /x8f/xd0/xa4 + /x8f/xd0/xa5 + /x8f/xd0/xa6 + /x8f/xd0/xa7 + /x8f/xd0/xa8 + /x8f/xd0/xa9 + /x8f/xd0/xaa + /x8f/xd0/xab + /x8f/xd0/xac + /x8f/xd0/xad + /x8f/xd0/xae + /x8f/xd0/xaf + /x8f/xd0/xb0 + /x8f/xd0/xb1 + /x8f/xd0/xb2 + /x8f/xd0/xb3 + /x8f/xd0/xb4 + /x8f/xd0/xb5 + /x8f/xd0/xb6 + /x8f/xd0/xb7 + /x8f/xd0/xb8 + /x8f/xd0/xb9 + /x8f/xd0/xba + /x8f/xd0/xbb + /x8f/xd0/xbc + /x8f/xd0/xbd + /x8f/xd0/xbe + /x8f/xd0/xbf + /x8f/xd0/xc0 + /x8f/xd0/xc1 + /x8f/xd0/xc2 + /x8f/xd0/xc3 + /x8f/xd0/xc4 + /x8f/xd0/xc5 + /x8f/xd0/xc6 + /x8f/xd0/xc7 + /x8f/xd0/xc8 + /x8f/xd0/xc9 + /x8f/xd0/xca + /x8f/xd0/xcb + /x8f/xd0/xcc + /x8f/xd0/xcd + /x8f/xd0/xce + /x8f/xd0/xcf + /x8f/xd0/xd0 + /x8f/xd0/xd1 + /x8f/xd0/xd2 + /x8f/xd0/xd3 + /x8f/xd0/xd4 + /x8f/xd0/xd5 + /x8f/xd0/xd6 + /x8f/xd0/xd7 + /x8f/xd0/xd8 + /x8f/xd0/xd9 + /x8f/xd0/xda + /x8f/xd0/xdb + /x8f/xd0/xdc + /x8f/xd0/xdd + /x8f/xd0/xde + /x8f/xd0/xdf + /x8f/xd0/xe0 + /x8f/xd0/xe1 + /x8f/xd0/xe2 + /x8f/xd0/xe3 + /x8f/xd0/xe4 + /x8f/xd0/xe5 + /x8f/xd0/xe6 + /x8f/xd0/xe7 + /x8f/xd0/xe8 + /x8f/xd0/xe9 + /x8f/xd0/xea + /x8f/xd0/xeb + /x8f/xd0/xec + /x8f/xd0/xed + /x8f/xd0/xee + /x8f/xd0/xef + /x8f/xd0/xf0 + /x8f/xd0/xf1 + /x8f/xd0/xf2 + /x8f/xd0/xf3 + /x8f/xd0/xf4 + /x8f/xd0/xf5 + /x8f/xd0/xf6 + /x8f/xd0/xf7 + /x8f/xd0/xf8 + /x8f/xd0/xf9 + /x8f/xd0/xfa + /x8f/xd0/xfb + /x8f/xd0/xfc + /x8f/xd0/xfd + /x8f/xd0/xfe + /x8f/xd1/xa1 + /x8f/xd1/xa2 + /x8f/xd1/xa3 + /x8f/xd1/xa4 + /x8f/xd1/xa5 + /x8f/xd1/xa6 + /x8f/xd1/xa7 + /x8f/xd1/xa8 + /x8f/xd1/xa9 + /x8f/xd1/xaa + /x8f/xd1/xab + /x8f/xd1/xac + /x8f/xd1/xad + /x8f/xd1/xae + /x8f/xd1/xaf + /x8f/xd1/xb0 + /x8f/xd1/xb1 + /x8f/xd1/xb2 + /x8f/xd1/xb3 + /x8f/xd1/xb4 + /x8f/xd1/xb5 + /x8f/xd1/xb6 + /x8f/xd1/xb7 + /x8f/xd1/xb8 + /x8f/xd1/xb9 + /x8f/xd1/xba + /x8f/xd1/xbb + /x8f/xd1/xbc + /x8f/xd1/xbd + /x8f/xd1/xbe + /x8f/xd1/xbf + /x8f/xd1/xc0 + /x8f/xd1/xc1 + /x8f/xd1/xc2 + /x8f/xd1/xc3 + /x8f/xd1/xc4 + /x8f/xd1/xc5 + /x8f/xd1/xc6 + /x8f/xd1/xc7 + /x8f/xd1/xc8 + /x8f/xd1/xc9 + /x8f/xd1/xca + /x8f/xd1/xcb + /x8f/xd1/xcc + /x8f/xd1/xcd + /x8f/xd1/xce + /x8f/xd1/xcf + /x8f/xd1/xd0 + /x8f/xd1/xd1 + /x8f/xd1/xd2 + /x8f/xd1/xd3 + /x8f/xd1/xd4 + /x8f/xd1/xd5 + /x8f/xd1/xd6 + /x8f/xd1/xd7 + /x8f/xd1/xd8 + /x8f/xd1/xd9 + /x8f/xd1/xda + /x8f/xd1/xdb + /x8f/xd1/xdc + /x8f/xd1/xdd + /x8f/xd1/xde + /x8f/xd1/xdf + /x8f/xd1/xe0 + /x8f/xd1/xe1 + /x8f/xd1/xe2 + /x8f/xd1/xe3 + /x8f/xd1/xe4 + /x8f/xd1/xe5 + /x8f/xd1/xe6 + /x8f/xd1/xe7 + /x8f/xd1/xe8 + /x8f/xd1/xe9 + /x8f/xd1/xea + /x8f/xd1/xeb + /x8f/xd1/xec + /x8f/xd1/xed + /x8f/xd1/xee + /x8f/xd1/xef + /x8f/xd1/xf0 + /x8f/xd1/xf1 + /x8f/xd1/xf2 + /x8f/xd1/xf3 + /x8f/xd1/xf4 + /x8f/xd1/xf5 + /x8f/xd1/xf6 + /x8f/xd1/xf7 + /x8f/xd1/xf8 + /x8f/xd1/xf9 + /x8f/xd1/xfa + /x8f/xd1/xfb + /x8f/xd1/xfc + /x8f/xd1/xfd + /x8f/xd1/xfe + /x8f/xd2/xa1 + /x8f/xd2/xa2 + /x8f/xd2/xa3 + /x8f/xd2/xa4 + /x8f/xd2/xa5 + /x8f/xd2/xa6 + /x8f/xd2/xa7 + /x8f/xd2/xa8 + /x8f/xd2/xa9 + /x8f/xd2/xaa + /x8f/xd2/xab + /x8f/xd2/xac + /x8f/xd2/xad + /x8f/xd2/xae + /x8f/xd2/xaf + /x8f/xd2/xb0 + /x8f/xd2/xb1 + /x8f/xd2/xb2 + /x8f/xd2/xb3 + /x8f/xd2/xb4 + /x8f/xd2/xb5 + /x8f/xd2/xb6 + /x8f/xd2/xb7 + /x8f/xd2/xb8 + /x8f/xd2/xb9 + /x8f/xd2/xba + /x8f/xd2/xbb + /x8f/xd2/xbc + /x8f/xd2/xbd + /x8f/xd2/xbe + /x8f/xd2/xbf + /x8f/xd2/xc0 + /x8f/xd2/xc1 + /x8f/xd2/xc2 + /x8f/xd2/xc3 + /x8f/xd2/xc4 + /x8f/xd2/xc5 + /x8f/xd2/xc6 + /x8f/xd2/xc7 + /x8f/xd2/xc8 + /x8f/xd2/xc9 + /x8f/xd2/xca + /x8f/xd2/xcb + /x8f/xd2/xcc + /x8f/xd2/xcd + /x8f/xd2/xce + /x8f/xd2/xcf + /x8f/xd2/xd0 + /x8f/xd2/xd1 + /x8f/xd2/xd2 + /x8f/xd2/xd3 + /x8f/xd2/xd4 + /x8f/xd2/xd5 + /x8f/xd2/xd6 + /x8f/xd2/xd7 + /x8f/xd2/xd8 + /x8f/xd2/xd9 + /x8f/xd2/xda + /x8f/xd2/xdb + /x8f/xd2/xdc + /x8f/xd2/xdd + /x8f/xd2/xde + /x8f/xd2/xdf + /x8f/xd2/xe0 + /x8f/xd2/xe1 + /x8f/xd2/xe2 + /x8f/xd2/xe3 + /x8f/xd2/xe4 + /x8f/xd2/xe5 + /x8f/xd2/xe6 + /x8f/xd2/xe7 + /x8f/xd2/xe8 + /x8f/xd2/xe9 + /x8f/xd2/xea + /x8f/xd2/xeb + /x8f/xd2/xec + /x8f/xd2/xed + /x8f/xd2/xee + /x8f/xd2/xef + /x8f/xd2/xf0 + /x8f/xd2/xf1 + /x8f/xd2/xf2 + /x8f/xd2/xf3 + /x8f/xd2/xf4 + /x8f/xd2/xf5 + /x8f/xd2/xf6 + /x8f/xd2/xf7 + /x8f/xd2/xf8 + /x8f/xd2/xf9 + /x8f/xd2/xfa + /x8f/xd2/xfb + /x8f/xd2/xfc + /x8f/xd2/xfd + /x8f/xd2/xfe + /x8f/xd3/xa1 + /x8f/xd3/xa2 + /x8f/xd3/xa3 + /x8f/xd3/xa4 + /x8f/xd3/xa5 + /x8f/xd3/xa6 + /x8f/xd3/xa7 + /x8f/xd3/xa8 + /x8f/xd3/xa9 + /x8f/xd3/xaa + /x8f/xd3/xab + /x8f/xd3/xac + /x8f/xd3/xad + /x8f/xd3/xae + /x8f/xd3/xaf + /x8f/xd3/xb0 + /x8f/xd3/xb1 + /x8f/xd3/xb2 + /x8f/xd3/xb3 + /x8f/xd3/xb4 + /x8f/xd3/xb5 + /x8f/xd3/xb6 + /x8f/xd3/xb7 + /x8f/xd3/xb8 + /x8f/xd3/xb9 + /x8f/xd3/xba + /x8f/xd3/xbb + /x8f/xd3/xbc + /x8f/xd3/xbd + /x8f/xd3/xbe + /x8f/xd3/xbf + /x8f/xd3/xc0 + /x8f/xd3/xc1 + /x8f/xd3/xc2 + /x8f/xd3/xc3 + /x8f/xd3/xc4 + /x8f/xd3/xc5 + /x8f/xd3/xc6 + /x8f/xd3/xc7 + /x8f/xd3/xc8 + /x8f/xd3/xc9 + /x8f/xd3/xca + /x8f/xd3/xcb + /x8f/xd3/xcc + /x8f/xd3/xcd + /x8f/xd3/xce + /x8f/xd3/xcf + /x8f/xd3/xd0 + /x8f/xd3/xd1 + /x8f/xd3/xd2 + /x8f/xd3/xd3 + /x8f/xd3/xd4 + /x8f/xd3/xd5 + /x8f/xd3/xd6 + /x8f/xd3/xd7 + /x8f/xd3/xd8 + /x8f/xd3/xd9 + /x8f/xd3/xda + /x8f/xd3/xdb + /x8f/xd3/xdc + /x8f/xd3/xdd + /x8f/xd3/xde + /x8f/xd3/xdf + /x8f/xd3/xe0 + /x8f/xd3/xe1 + /x8f/xd3/xe2 + /x8f/xd3/xe3 + /x8f/xd3/xe4 + /x8f/xd3/xe5 + /x8f/xd3/xe6 + /x8f/xd3/xe7 + /x8f/xd3/xe8 + /x8f/xd3/xe9 + /x8f/xd3/xea + /x8f/xd3/xeb + /x8f/xd3/xec + /x8f/xd3/xed + /x8f/xd3/xee + /x8f/xd3/xef + /x8f/xd3/xf0 + /x8f/xd3/xf1 + /x8f/xd3/xf2 + /x8f/xd3/xf3 + /x8f/xd3/xf4 + /x8f/xd3/xf5 + /x8f/xd3/xf6 + /x8f/xd3/xf7 + /x8f/xd3/xf8 + /x8f/xd3/xf9 + /x8f/xd3/xfa + /x8f/xd3/xfb + /x8f/xd3/xfc + /x8f/xd3/xfd + /x8f/xd3/xfe + /x8f/xd4/xa1 + /x8f/xd4/xa2 + /x8f/xd4/xa3 + /x8f/xd4/xa4 + /x8f/xd4/xa5 + /x8f/xd4/xa6 + /x8f/xd4/xa7 + /x8f/xd4/xa8 + /x8f/xd4/xa9 + /x8f/xd4/xaa + /x8f/xd4/xab + /x8f/xd4/xac + /x8f/xd4/xad + /x8f/xd4/xae + /x8f/xd4/xaf + /x8f/xd4/xb0 + /x8f/xd4/xb1 + /x8f/xd4/xb2 + /x8f/xd4/xb3 + /x8f/xd4/xb4 + /x8f/xd4/xb5 + /x8f/xd4/xb6 + /x8f/xd4/xb7 + /x8f/xd4/xb8 + /x8f/xd4/xb9 + /x8f/xd4/xba + /x8f/xd4/xbb + /x8f/xd4/xbc + /x8f/xd4/xbd + /x8f/xd4/xbe + /x8f/xd4/xbf + /x8f/xd4/xc0 + /x8f/xd4/xc1 + /x8f/xd4/xc2 + /x8f/xd4/xc3 + /x8f/xd4/xc4 + /x8f/xd4/xc5 + /x8f/xd4/xc6 + /x8f/xd4/xc7 + /x8f/xd4/xc8 + /x8f/xd4/xc9 + /x8f/xd4/xca + /x8f/xd4/xcb + /x8f/xd4/xcc + /x8f/xd4/xcd + /x8f/xd4/xce + /x8f/xd4/xcf + /x8f/xd4/xd0 + /x8f/xd4/xd1 + /x8f/xd4/xd2 + /x8f/xd4/xd3 + /x8f/xd4/xd4 + /x8f/xd4/xd5 + /x8f/xd4/xd6 + /x8f/xd4/xd7 + /x8f/xd4/xd8 + /x8f/xd4/xd9 + /x8f/xd4/xda + /x8f/xd4/xdb + /x8f/xd4/xdc + /x8f/xd4/xdd + /x8f/xd4/xde + /x8f/xd4/xdf + /x8f/xd4/xe0 + /x8f/xd4/xe1 + /x8f/xd4/xe2 + /x8f/xd4/xe3 + /x8f/xd4/xe4 + /x8f/xd4/xe5 + /x8f/xd4/xe6 + /x8f/xd4/xe7 + /x8f/xd4/xe8 + /x8f/xd4/xe9 + /x8f/xd4/xea + /x8f/xd4/xeb + /x8f/xd4/xec + /x8f/xd4/xed + /x8f/xd4/xee + /x8f/xd4/xef + /x8f/xd4/xf0 + /x8f/xd4/xf1 + /x8f/xd4/xf2 + /x8f/xd4/xf3 + /x8f/xd4/xf4 + /x8f/xd4/xf5 + /x8f/xd4/xf6 + /x8f/xd4/xf7 + /x8f/xd4/xf8 + /x8f/xd4/xf9 + /x8f/xd4/xfa + /x8f/xd4/xfb + /x8f/xd4/xfc + /x8f/xd4/xfd + /x8f/xd4/xfe + /x8f/xd5/xa1 + /x8f/xd5/xa2 + /x8f/xd5/xa3 + /x8f/xd5/xa4 + /x8f/xd5/xa5 + /x8f/xd5/xa6 + /x8f/xd5/xa7 + /x8f/xd5/xa8 + /x8f/xd5/xa9 + /x8f/xd5/xaa + /x8f/xd5/xab + /x8f/xd5/xac + /x8f/xd5/xad + /x8f/xd5/xae + /x8f/xd5/xaf + /x8f/xd5/xb0 + /x8f/xd5/xb1 + /x8f/xd5/xb2 + /x8f/xd5/xb3 + /x8f/xd5/xb4 + /x8f/xd5/xb5 + /x8f/xd5/xb6 + /x8f/xd5/xb7 + /x8f/xd5/xb8 + /x8f/xd5/xb9 + /x8f/xd5/xba + /x8f/xd5/xbb + /x8f/xd5/xbc + /x8f/xd5/xbd + /x8f/xd5/xbe + /x8f/xd5/xbf + /x8f/xd5/xc0 + /x8f/xd5/xc1 + /x8f/xd5/xc2 + /x8f/xd5/xc3 + /x8f/xd5/xc4 + /x8f/xd5/xc5 + /x8f/xd5/xc6 + /x8f/xd5/xc7 + /x8f/xd5/xc8 + /x8f/xd5/xc9 + /x8f/xd5/xca + /x8f/xd5/xcb + /x8f/xd5/xcc + /x8f/xd5/xcd + /x8f/xd5/xce + /x8f/xd5/xcf + /x8f/xd5/xd0 + /x8f/xd5/xd1 + /x8f/xd5/xd2 + /x8f/xd5/xd3 + /x8f/xd5/xd4 + /x8f/xd5/xd5 + /x8f/xd5/xd6 + /x8f/xd5/xd7 + /x8f/xd5/xd8 + /x8f/xd5/xd9 + /x8f/xd5/xda + /x8f/xd5/xdb + /x8f/xd5/xdc + /x8f/xd5/xdd + /x8f/xd5/xde + /x8f/xd5/xdf + /x8f/xd5/xe0 + /x8f/xd5/xe1 + /x8f/xd5/xe2 + /x8f/xd5/xe3 + /x8f/xd5/xe4 + /x8f/xd5/xe5 + /x8f/xd5/xe6 + /x8f/xd5/xe7 + /x8f/xd5/xe8 + /x8f/xd5/xe9 + /x8f/xd5/xea + /x8f/xd5/xeb + /x8f/xd5/xec + /x8f/xd5/xed + /x8f/xd5/xee + /x8f/xd5/xef + /x8f/xd5/xf0 + /x8f/xd5/xf1 + /x8f/xd5/xf2 + /x8f/xd5/xf3 + /x8f/xd5/xf4 + /x8f/xd5/xf5 + /x8f/xd5/xf6 + /x8f/xd5/xf7 + /x8f/xd5/xf8 + /x8f/xd5/xf9 + /x8f/xd5/xfa + /x8f/xd5/xfb + /x8f/xd5/xfc + /x8f/xd5/xfd + /x8f/xd5/xfe + /x8f/xd6/xa1 + /x8f/xd6/xa2 + /x8f/xd6/xa3 + /x8f/xd6/xa4 + /x8f/xd6/xa5 + /x8f/xd6/xa6 + /x8f/xd6/xa7 + /x8f/xd6/xa8 + /x8f/xd6/xa9 + /x8f/xd6/xaa + /x8f/xd6/xab + /x8f/xd6/xac + /x8f/xd6/xad + /x8f/xd6/xae + /x8f/xd6/xaf + /x8f/xd6/xb0 + /x8f/xd6/xb1 + /x8f/xd6/xb2 + /x8f/xd6/xb3 + /x8f/xd6/xb4 + /x8f/xd6/xb5 + /x8f/xd6/xb6 + /x8f/xd6/xb7 + /x8f/xd6/xb8 + /x8f/xd6/xb9 + /x8f/xd6/xba + /x8f/xd6/xbb + /x8f/xd6/xbc + /x8f/xd6/xbd + /x8f/xd6/xbe + /x8f/xd6/xbf + /x8f/xd6/xc0 + /x8f/xd6/xc1 + /x8f/xd6/xc2 + /x8f/xd6/xc3 + /x8f/xd6/xc4 + /x8f/xd6/xc5 + /x8f/xd6/xc6 + /x8f/xd6/xc7 + /x8f/xd6/xc8 + /x8f/xd6/xc9 + /x8f/xd6/xca + /x8f/xd6/xcb + /x8f/xd6/xcc + /x8f/xd6/xcd + /x8f/xd6/xce + /x8f/xd6/xcf + /x8f/xd6/xd0 + /x8f/xd6/xd1 + /x8f/xd6/xd2 + /x8f/xd6/xd3 + /x8f/xd6/xd4 + /x8f/xd6/xd5 + /x8f/xd6/xd6 + /x8f/xd6/xd7 + /x8f/xd6/xd8 + /x8f/xd6/xd9 + /x8f/xd6/xda + /x8f/xd6/xdb + /x8f/xd6/xdc + /x8f/xd6/xdd + /x8f/xd6/xde + /x8f/xd6/xdf + /x8f/xd6/xe0 + /x8f/xd6/xe1 + /x8f/xd6/xe2 + /x8f/xd6/xe3 + /x8f/xd6/xe4 + /x8f/xd6/xe5 + /x8f/xd6/xe6 + /x8f/xd6/xe7 + /x8f/xd6/xe8 + /x8f/xd6/xe9 + /x8f/xd6/xea + /x8f/xd6/xeb + /x8f/xd6/xec + /x8f/xd6/xed + /x8f/xd6/xee + /x8f/xd6/xef + /x8f/xd6/xf0 + /x8f/xd6/xf1 + /x8f/xd6/xf2 + /x8f/xd6/xf3 + /x8f/xd6/xf4 + /x8f/xd6/xf5 + /x8f/xd6/xf6 + /x8f/xd6/xf7 + /x8f/xd6/xf8 + /x8f/xd6/xf9 + /x8f/xd6/xfa + /x8f/xd6/xfb + /x8f/xd6/xfc + /x8f/xd6/xfd + /x8f/xd6/xfe + /x8f/xd7/xa1 + /x8f/xd7/xa2 + /x8f/xd7/xa3 + /x8f/xd7/xa4 + /x8f/xd7/xa5 + /x8f/xd7/xa6 + /x8f/xd7/xa7 + /x8f/xd7/xa8 + /x8f/xd7/xa9 + /x8f/xd7/xaa + /x8f/xd7/xab + /x8f/xd7/xac + /x8f/xd7/xad + /x8f/xd7/xae + /x8f/xd7/xaf + /x8f/xd7/xb0 + /x8f/xd7/xb1 + /x8f/xd7/xb2 + /x8f/xd7/xb3 + /x8f/xd7/xb4 + /x8f/xd7/xb5 + /x8f/xd7/xb6 + /x8f/xd7/xb7 + /x8f/xd7/xb8 + /x8f/xd7/xb9 + /x8f/xd7/xba + /x8f/xd7/xbb + /x8f/xd7/xbc + /x8f/xd7/xbd + /x8f/xd7/xbe + /x8f/xd7/xbf + /x8f/xd7/xc0 + /x8f/xd7/xc1 + /x8f/xd7/xc2 + /x8f/xd7/xc3 + /x8f/xd7/xc4 + /x8f/xd7/xc5 + /x8f/xd7/xc6 + /x8f/xd7/xc7 + /x8f/xd7/xc8 + /x8f/xd7/xc9 + /x8f/xd7/xca + /x8f/xd7/xcb + /x8f/xd7/xcc + /x8f/xd7/xcd + /x8f/xd7/xce + /x8f/xd7/xcf + /x8f/xd7/xd0 + /x8f/xd7/xd1 + /x8f/xd7/xd2 + /x8f/xd7/xd3 + /x8f/xd7/xd4 + /x8f/xd7/xd5 + /x8f/xd7/xd6 + /x8f/xd7/xd7 + /x8f/xd7/xd8 + /x8f/xd7/xd9 + /x8f/xd7/xda + /x8f/xd7/xdb + /x8f/xd7/xdc + /x8f/xd7/xdd + /x8f/xd7/xde + /x8f/xd7/xdf + /x8f/xd7/xe0 + /x8f/xd7/xe1 + /x8f/xd7/xe2 + /x8f/xd7/xe3 + /x8f/xd7/xe4 + /x8f/xd7/xe5 + /x8f/xd7/xe6 + /x8f/xd7/xe7 + /x8f/xd7/xe8 + /x8f/xd7/xe9 + /x8f/xd7/xea + /x8f/xd7/xeb + /x8f/xd7/xec + /x8f/xd7/xed + /x8f/xd7/xee + /x8f/xd7/xef + /x8f/xd7/xf0 + /x8f/xd7/xf1 + /x8f/xd7/xf2 + /x8f/xd7/xf3 + /x8f/xd7/xf4 + /x8f/xd7/xf5 + /x8f/xd7/xf6 + /x8f/xd7/xf7 + /x8f/xd7/xf8 + /x8f/xd7/xf9 + /x8f/xd7/xfa + /x8f/xd7/xfb + /x8f/xd7/xfc + /x8f/xd7/xfd + /x8f/xd7/xfe + /x8f/xd8/xa1 + /x8f/xd8/xa2 + /x8f/xd8/xa3 + /x8f/xd8/xa4 + /x8f/xd8/xa5 + /x8f/xd8/xa6 + /x8f/xd8/xa7 + /x8f/xd8/xa8 + /x8f/xd8/xa9 + /x8f/xd8/xaa + /x8f/xd8/xab + /x8f/xd8/xac + /x8f/xd8/xad + /x8f/xd8/xae + /x8f/xd8/xaf + /x8f/xd8/xb0 + /x8f/xd8/xb1 + /x8f/xd8/xb2 + /x8f/xd8/xb3 + /x8f/xd8/xb4 + /x8f/xd8/xb5 + /x8f/xd8/xb6 + /x8f/xd8/xb7 + /x8f/xd8/xb8 + /x8f/xd8/xb9 + /x8f/xd8/xba + /x8f/xd8/xbb + /x8f/xd8/xbc + /x8f/xd8/xbd + /x8f/xd8/xbe + /x8f/xd8/xbf + /x8f/xd8/xc0 + /x8f/xd8/xc1 + /x8f/xd8/xc2 + /x8f/xd8/xc3 + /x8f/xd8/xc4 + /x8f/xd8/xc5 + /x8f/xd8/xc6 + /x8f/xd8/xc7 + /x8f/xd8/xc8 + /x8f/xd8/xc9 + /x8f/xd8/xca + /x8f/xd8/xcb + /x8f/xd8/xcc + /x8f/xd8/xcd + /x8f/xd8/xce + /x8f/xd8/xcf + /x8f/xd8/xd0 + /x8f/xd8/xd1 + /x8f/xd8/xd2 + /x8f/xd8/xd3 + /x8f/xd8/xd4 + /x8f/xd8/xd5 + /x8f/xd8/xd6 + /x8f/xd8/xd7 + /x8f/xd8/xd8 + /x8f/xd8/xd9 + /x8f/xd8/xda + /x8f/xd8/xdb + /x8f/xd8/xdc + /x8f/xd8/xdd + /x8f/xd8/xde + /x8f/xd8/xdf + /x8f/xd8/xe0 + /x8f/xd8/xe1 + /x8f/xd8/xe2 + /x8f/xd8/xe3 + /x8f/xd8/xe4 + /x8f/xd8/xe5 + /x8f/xd8/xe6 + /x8f/xd8/xe7 + /x8f/xd8/xe8 + /x8f/xd8/xe9 + /x8f/xd8/xea + /x8f/xd8/xeb + /x8f/xd8/xec + /x8f/xd8/xed + /x8f/xd8/xee + /x8f/xd8/xef + /x8f/xd8/xf0 + /x8f/xd8/xf1 + /x8f/xd8/xf2 + /x8f/xd8/xf3 + /x8f/xd8/xf4 + /x8f/xd8/xf5 + /x8f/xd8/xf6 + /x8f/xd8/xf7 + /x8f/xd8/xf8 + /x8f/xd8/xf9 + /x8f/xd8/xfa + /x8f/xd8/xfb + /x8f/xd8/xfc + /x8f/xd8/xfd + /x8f/xd8/xfe + /x8f/xd9/xa1 + /x8f/xd9/xa2 + /x8f/xd9/xa3 + /x8f/xd9/xa4 + /x8f/xd9/xa5 + /x8f/xd9/xa6 + /x8f/xd9/xa7 + /x8f/xd9/xa8 + /x8f/xd9/xa9 + /x8f/xd9/xaa + /x8f/xd9/xab + /x8f/xd9/xac + /x8f/xd9/xad + /x8f/xd9/xae + /x8f/xd9/xaf + /x8f/xd9/xb0 + /x8f/xd9/xb1 + /x8f/xd9/xb2 + /x8f/xd9/xb3 + /x8f/xd9/xb4 + /x8f/xd9/xb5 + /x8f/xd9/xb6 + /x8f/xd9/xb7 + /x8f/xd9/xb8 + /x8f/xd9/xb9 + /x8f/xd9/xba + /x8f/xd9/xbb + /x8f/xd9/xbc + /x8f/xd9/xbd + /x8f/xd9/xbe + /x8f/xd9/xbf + /x8f/xd9/xc0 + /x8f/xd9/xc1 + /x8f/xd9/xc2 + /x8f/xd9/xc3 + /x8f/xd9/xc4 + /x8f/xd9/xc5 + /x8f/xd9/xc6 + /x8f/xd9/xc7 + /x8f/xd9/xc8 + /x8f/xd9/xc9 + /x8f/xd9/xca + /x8f/xd9/xcb + /x8f/xd9/xcc + /x8f/xd9/xcd + /x8f/xd9/xce + /x8f/xd9/xcf + /x8f/xd9/xd0 + /x8f/xd9/xd1 + /x8f/xd9/xd2 + /x8f/xd9/xd3 + /x8f/xd9/xd4 + /x8f/xd9/xd5 + /x8f/xd9/xd6 + /x8f/xd9/xd7 + /x8f/xd9/xd8 + /x8f/xd9/xd9 + /x8f/xd9/xda + /x8f/xd9/xdb + /x8f/xd9/xdc + /x8f/xd9/xdd + /x8f/xd9/xde + /x8f/xd9/xdf + /x8f/xd9/xe0 + /x8f/xd9/xe1 + /x8f/xd9/xe2 + /x8f/xd9/xe3 + /x8f/xd9/xe4 + /x8f/xd9/xe5 + /x8f/xd9/xe6 + /x8f/xd9/xe7 + /x8f/xd9/xe8 + /x8f/xd9/xe9 + /x8f/xd9/xea + /x8f/xd9/xeb + /x8f/xd9/xec + /x8f/xd9/xed + /x8f/xd9/xee + /x8f/xd9/xef + /x8f/xd9/xf0 + /x8f/xd9/xf1 + /x8f/xd9/xf2 + /x8f/xd9/xf3 + /x8f/xd9/xf4 + /x8f/xd9/xf5 + /x8f/xd9/xf6 + /x8f/xd9/xf7 + /x8f/xd9/xf8 + /x8f/xd9/xf9 + /x8f/xd9/xfa + /x8f/xd9/xfb + /x8f/xd9/xfc + /x8f/xd9/xfd + /x8f/xd9/xfe + /x8f/xda/xa1 + /x8f/xda/xa2 + /x8f/xda/xa3 + /x8f/xda/xa4 + /x8f/xda/xa5 + /x8f/xda/xa6 + /x8f/xda/xa7 + /x8f/xda/xa8 + /x8f/xda/xa9 + /x8f/xda/xaa + /x8f/xda/xab + /x8f/xda/xac + /x8f/xda/xad + /x8f/xda/xae + /x8f/xda/xaf + /x8f/xda/xb0 + /x8f/xda/xb1 + /x8f/xda/xb2 + /x8f/xda/xb3 + /x8f/xda/xb4 + /x8f/xda/xb5 + /x8f/xda/xb6 + /x8f/xda/xb7 + /x8f/xda/xb8 + /x8f/xda/xb9 + /x8f/xda/xba + /x8f/xda/xbb + /x8f/xda/xbc + /x8f/xda/xbd + /x8f/xda/xbe + /x8f/xda/xbf + /x8f/xda/xc0 + /x8f/xda/xc1 + /x8f/xda/xc2 + /x8f/xda/xc3 + /x8f/xda/xc4 + /x8f/xda/xc5 + /x8f/xda/xc6 + /x8f/xda/xc7 + /x8f/xda/xc8 + /x8f/xda/xc9 + /x8f/xda/xca + /x8f/xda/xcb + /x8f/xda/xcc + /x8f/xda/xcd + /x8f/xda/xce + /x8f/xda/xcf + /x8f/xda/xd0 + /x8f/xda/xd1 + /x8f/xda/xd2 + /x8f/xda/xd3 + /x8f/xda/xd4 + /x8f/xda/xd5 + /x8f/xda/xd6 + /x8f/xda/xd7 + /x8f/xda/xd8 + /x8f/xda/xd9 + /x8f/xda/xda + /x8f/xda/xdb + /x8f/xda/xdc + /x8f/xda/xdd + /x8f/xda/xde + /x8f/xda/xdf + /x8f/xda/xe0 + /x8f/xda/xe1 + /x8f/xda/xe2 + /x8f/xda/xe3 + /x8f/xda/xe4 + /x8f/xda/xe5 + /x8f/xda/xe6 + /x8f/xda/xe7 + /x8f/xda/xe8 + /x8f/xda/xe9 + /x8f/xda/xea + /x8f/xda/xeb + /x8f/xda/xec + /x8f/xda/xed + /x8f/xda/xee + /x8f/xda/xef + /x8f/xda/xf0 + /x8f/xda/xf1 + /x8f/xda/xf2 + /x8f/xda/xf3 + /x8f/xda/xf4 + /x8f/xda/xf5 + /x8f/xda/xf6 + /x8f/xda/xf7 + /x8f/xda/xf8 + /x8f/xda/xf9 + /x8f/xda/xfa + /x8f/xda/xfb + /x8f/xda/xfc + /x8f/xda/xfd + /x8f/xda/xfe + /x8f/xdb/xa1 + /x8f/xdb/xa2 + /x8f/xdb/xa3 + /x8f/xdb/xa4 + /x8f/xdb/xa5 + /x8f/xdb/xa6 + /x8f/xdb/xa7 + /x8f/xdb/xa8 + /x8f/xdb/xa9 + /x8f/xdb/xaa + /x8f/xdb/xab + /x8f/xdb/xac + /x8f/xdb/xad + /x8f/xdb/xae + /x8f/xdb/xaf + /x8f/xdb/xb0 + /x8f/xdb/xb1 + /x8f/xdb/xb2 + /x8f/xdb/xb3 + /x8f/xdb/xb4 + /x8f/xdb/xb5 + /x8f/xdb/xb6 + /x8f/xdb/xb7 + /x8f/xdb/xb8 + /x8f/xdb/xb9 + /x8f/xdb/xba + /x8f/xdb/xbb + /x8f/xdb/xbc + /x8f/xdb/xbd + /x8f/xdb/xbe + /x8f/xdb/xbf + /x8f/xdb/xc0 + /x8f/xdb/xc1 + /x8f/xdb/xc2 + /x8f/xdb/xc3 + /x8f/xdb/xc4 + /x8f/xdb/xc5 + /x8f/xdb/xc6 + /x8f/xdb/xc7 + /x8f/xdb/xc8 + /x8f/xdb/xc9 + /x8f/xdb/xca + /x8f/xdb/xcb + /x8f/xdb/xcc + /x8f/xdb/xcd + /x8f/xdb/xce + /x8f/xdb/xcf + /x8f/xdb/xd0 + /x8f/xdb/xd1 + /x8f/xdb/xd2 + /x8f/xdb/xd3 + /x8f/xdb/xd4 + /x8f/xdb/xd5 + /x8f/xdb/xd6 + /x8f/xdb/xd7 + /x8f/xdb/xd8 + /x8f/xdb/xd9 + /x8f/xdb/xda + /x8f/xdb/xdb + /x8f/xdb/xdc + /x8f/xdb/xdd + /x8f/xdb/xde + /x8f/xdb/xdf + /x8f/xdb/xe0 + /x8f/xdb/xe1 + /x8f/xdb/xe2 + /x8f/xdb/xe3 + /x8f/xdb/xe4 + /x8f/xdb/xe5 + /x8f/xdb/xe6 + /x8f/xdb/xe7 + /x8f/xdb/xe8 + /x8f/xdb/xe9 + /x8f/xdb/xea + /x8f/xdb/xeb + /x8f/xdb/xec + /x8f/xdb/xed + /x8f/xdb/xee + /x8f/xdb/xef + /x8f/xdb/xf0 + /x8f/xdb/xf1 + /x8f/xdb/xf2 + /x8f/xdb/xf3 + /x8f/xdb/xf4 + /x8f/xdb/xf5 + /x8f/xdb/xf6 + /x8f/xdb/xf7 + /x8f/xdb/xf8 + /x8f/xdb/xf9 + /x8f/xdb/xfa + /x8f/xdb/xfb + /x8f/xdb/xfc + /x8f/xdb/xfd + /x8f/xdb/xfe + /x8f/xdc/xa1 + /x8f/xdc/xa2 + /x8f/xdc/xa3 + /x8f/xdc/xa4 + /x8f/xdc/xa5 + /x8f/xdc/xa6 + /x8f/xdc/xa7 + /x8f/xdc/xa8 + /x8f/xdc/xa9 + /x8f/xdc/xaa + /x8f/xdc/xab + /x8f/xdc/xac + /x8f/xdc/xad + /x8f/xdc/xae + /x8f/xdc/xaf + /x8f/xdc/xb0 + /x8f/xdc/xb1 + /x8f/xdc/xb2 + /x8f/xdc/xb3 + /x8f/xdc/xb4 + /x8f/xdc/xb5 + /x8f/xdc/xb6 + /x8f/xdc/xb7 + /x8f/xdc/xb8 + /x8f/xdc/xb9 + /x8f/xdc/xba + /x8f/xdc/xbb + /x8f/xdc/xbc + /x8f/xdc/xbd + /x8f/xdc/xbe + /x8f/xdc/xbf + /x8f/xdc/xc0 + /x8f/xdc/xc1 + /x8f/xdc/xc2 + /x8f/xdc/xc3 + /x8f/xdc/xc4 + /x8f/xdc/xc5 + /x8f/xdc/xc6 + /x8f/xdc/xc7 + /x8f/xdc/xc8 + /x8f/xdc/xc9 + /x8f/xdc/xca + /x8f/xdc/xcb + /x8f/xdc/xcc + /x8f/xdc/xcd + /x8f/xdc/xce + /x8f/xdc/xcf + /x8f/xdc/xd0 + /x8f/xdc/xd1 + /x8f/xdc/xd2 + /x8f/xdc/xd3 + /x8f/xdc/xd4 + /x8f/xdc/xd5 + /x8f/xdc/xd6 + /x8f/xdc/xd7 + /x8f/xdc/xd8 + /x8f/xdc/xd9 + /x8f/xdc/xda + /x8f/xdc/xdb + /x8f/xdc/xdc + /x8f/xdc/xdd + /x8f/xdc/xde + /x8f/xdc/xdf + /x8f/xdc/xe0 + /x8f/xdc/xe1 + /x8f/xdc/xe2 + /x8f/xdc/xe3 + /x8f/xdc/xe4 + /x8f/xdc/xe5 + /x8f/xdc/xe6 + /x8f/xdc/xe7 + /x8f/xdc/xe8 + /x8f/xdc/xe9 + /x8f/xdc/xea + /x8f/xdc/xeb + /x8f/xdc/xec + /x8f/xdc/xed + /x8f/xdc/xee + /x8f/xdc/xef + /x8f/xdc/xf0 + /x8f/xdc/xf1 + /x8f/xdc/xf2 + /x8f/xdc/xf3 + /x8f/xdc/xf4 + /x8f/xdc/xf5 + /x8f/xdc/xf6 + /x8f/xdc/xf7 + /x8f/xdc/xf8 + /x8f/xdc/xf9 + /x8f/xdc/xfa + /x8f/xdc/xfb + /x8f/xdc/xfc + /x8f/xdc/xfd + /x8f/xdc/xfe + /x8f/xdd/xa1 + /x8f/xdd/xa2 + /x8f/xdd/xa3 + /x8f/xdd/xa4 + /x8f/xdd/xa5 + /x8f/xdd/xa6 + /x8f/xdd/xa7 + /x8f/xdd/xa8 + /x8f/xdd/xa9 + /x8f/xdd/xaa + /x8f/xdd/xab + /x8f/xdd/xac + /x8f/xdd/xad + /x8f/xdd/xae + /x8f/xdd/xaf + /x8f/xdd/xb0 + /x8f/xdd/xb1 + /x8f/xdd/xb2 + /x8f/xdd/xb3 + /x8f/xdd/xb4 + /x8f/xdd/xb5 + /x8f/xdd/xb6 + /x8f/xdd/xb7 + /x8f/xdd/xb8 + /x8f/xdd/xb9 + /x8f/xdd/xba + /x8f/xdd/xbb + /x8f/xdd/xbc + /x8f/xdd/xbd + /x8f/xdd/xbe + /x8f/xdd/xbf + /x8f/xdd/xc0 + /x8f/xdd/xc1 + /x8f/xdd/xc2 + /x8f/xdd/xc3 + /x8f/xdd/xc4 + /x8f/xdd/xc5 + /x8f/xdd/xc6 + /x8f/xdd/xc7 + /x8f/xdd/xc8 + /x8f/xdd/xc9 + /x8f/xdd/xca + /x8f/xdd/xcb + /x8f/xdd/xcc + /x8f/xdd/xcd + /x8f/xdd/xce + /x8f/xdd/xcf + /x8f/xdd/xd0 + /x8f/xdd/xd1 + /x8f/xdd/xd2 + /x8f/xdd/xd3 + /x8f/xdd/xd4 + /x8f/xdd/xd5 + /x8f/xdd/xd6 + /x8f/xdd/xd7 + /x8f/xdd/xd8 + /x8f/xdd/xd9 + /x8f/xdd/xda + /x8f/xdd/xdb + /x8f/xdd/xdc + /x8f/xdd/xdd + /x8f/xdd/xde + /x8f/xdd/xdf + /x8f/xdd/xe0 + /x8f/xdd/xe1 + /x8f/xdd/xe2 + /x8f/xdd/xe3 + /x8f/xdd/xe4 + /x8f/xdd/xe5 + /x8f/xdd/xe6 + /x8f/xdd/xe7 + /x8f/xdd/xe8 + /x8f/xdd/xe9 + /x8f/xdd/xea + /x8f/xdd/xeb + /x8f/xdd/xec + /x8f/xdd/xed + /x8f/xdd/xee + /x8f/xdd/xef + /x8f/xdd/xf0 + /x8f/xdd/xf1 + /x8f/xdd/xf2 + /x8f/xdd/xf3 + /x8f/xdd/xf4 + /x8f/xdd/xf5 + /x8f/xdd/xf6 + /x8f/xdd/xf7 + /x8f/xdd/xf8 + /x8f/xdd/xf9 + /x8f/xdd/xfa + /x8f/xdd/xfb + /x8f/xdd/xfc + /x8f/xdd/xfd + /x8f/xdd/xfe + /x8f/xde/xa1 + /x8f/xde/xa2 + /x8f/xde/xa3 + /x8f/xde/xa4 + /x8f/xde/xa5 + /x8f/xde/xa6 + /x8f/xde/xa7 + /x8f/xde/xa8 + /x8f/xde/xa9 + /x8f/xde/xaa + /x8f/xde/xab + /x8f/xde/xac + /x8f/xde/xad + /x8f/xde/xae + /x8f/xde/xaf + /x8f/xde/xb0 + /x8f/xde/xb1 + /x8f/xde/xb2 + /x8f/xde/xb3 + /x8f/xde/xb4 + /x8f/xde/xb5 + /x8f/xde/xb6 + /x8f/xde/xb7 + /x8f/xde/xb8 + /x8f/xde/xb9 + /x8f/xde/xba + /x8f/xde/xbb + /x8f/xde/xbc + /x8f/xde/xbd + /x8f/xde/xbe + /x8f/xde/xbf + /x8f/xde/xc0 + /x8f/xde/xc1 + /x8f/xde/xc2 + /x8f/xde/xc3 + /x8f/xde/xc4 + /x8f/xde/xc5 + /x8f/xde/xc6 + /x8f/xde/xc7 + /x8f/xde/xc8 + /x8f/xde/xc9 + /x8f/xde/xca + /x8f/xde/xcb + /x8f/xde/xcc + /x8f/xde/xcd + /x8f/xde/xce + /x8f/xde/xcf + /x8f/xde/xd0 + /x8f/xde/xd1 + /x8f/xde/xd2 + /x8f/xde/xd3 + /x8f/xde/xd4 + /x8f/xde/xd5 + /x8f/xde/xd6 + /x8f/xde/xd7 + /x8f/xde/xd8 + /x8f/xde/xd9 + /x8f/xde/xda + /x8f/xde/xdb + /x8f/xde/xdc + /x8f/xde/xdd + /x8f/xde/xde + /x8f/xde/xdf + /x8f/xde/xe0 + /x8f/xde/xe1 + /x8f/xde/xe2 + /x8f/xde/xe3 + /x8f/xde/xe4 + /x8f/xde/xe5 + /x8f/xde/xe6 + /x8f/xde/xe7 + /x8f/xde/xe8 + /x8f/xde/xe9 + /x8f/xde/xea + /x8f/xde/xeb + /x8f/xde/xec + /x8f/xde/xed + /x8f/xde/xee + /x8f/xde/xef + /x8f/xde/xf0 + /x8f/xde/xf1 + /x8f/xde/xf2 + /x8f/xde/xf3 + /x8f/xde/xf4 + /x8f/xde/xf5 + /x8f/xde/xf6 + /x8f/xde/xf7 + /x8f/xde/xf8 + /x8f/xde/xf9 + /x8f/xde/xfa + /x8f/xde/xfb + /x8f/xde/xfc + /x8f/xde/xfd + /x8f/xde/xfe + /x8f/xdf/xa1 + /x8f/xdf/xa2 + /x8f/xdf/xa3 + /x8f/xdf/xa4 + /x8f/xdf/xa5 + /x8f/xdf/xa6 + /x8f/xdf/xa7 + /x8f/xdf/xa8 + /x8f/xdf/xa9 + /x8f/xdf/xaa + /x8f/xdf/xab + /x8f/xdf/xac + /x8f/xdf/xad + /x8f/xdf/xae + /x8f/xdf/xaf + /x8f/xdf/xb0 + /x8f/xdf/xb1 + /x8f/xdf/xb2 + /x8f/xdf/xb3 + /x8f/xdf/xb4 + /x8f/xdf/xb5 + /x8f/xdf/xb6 + /x8f/xdf/xb7 + /x8f/xdf/xb8 + /x8f/xdf/xb9 + /x8f/xdf/xba + /x8f/xdf/xbb + /x8f/xdf/xbc + /x8f/xdf/xbd + /x8f/xdf/xbe + /x8f/xdf/xbf + /x8f/xdf/xc0 + /x8f/xdf/xc1 + /x8f/xdf/xc2 + /x8f/xdf/xc3 + /x8f/xdf/xc4 + /x8f/xdf/xc5 + /x8f/xdf/xc6 + /x8f/xdf/xc7 + /x8f/xdf/xc8 + /x8f/xdf/xc9 + /x8f/xdf/xca + /x8f/xdf/xcb + /x8f/xdf/xcc + /x8f/xdf/xcd + /x8f/xdf/xce + /x8f/xdf/xcf + /x8f/xdf/xd0 + /x8f/xdf/xd1 + /x8f/xdf/xd2 + /x8f/xdf/xd3 + /x8f/xdf/xd4 + /x8f/xdf/xd5 + /x8f/xdf/xd6 + /x8f/xdf/xd7 + /x8f/xdf/xd8 + /x8f/xdf/xd9 + /x8f/xdf/xda + /x8f/xdf/xdb + /x8f/xdf/xdc + /x8f/xdf/xdd + /x8f/xdf/xde + /x8f/xdf/xdf + /x8f/xdf/xe0 + /x8f/xdf/xe1 + /x8f/xdf/xe2 + /x8f/xdf/xe3 + /x8f/xdf/xe4 + /x8f/xdf/xe5 + /x8f/xdf/xe6 + /x8f/xdf/xe7 + /x8f/xdf/xe8 + /x8f/xdf/xe9 + /x8f/xdf/xea + /x8f/xdf/xeb + /x8f/xdf/xec + /x8f/xdf/xed + /x8f/xdf/xee + /x8f/xdf/xef + /x8f/xdf/xf0 + /x8f/xdf/xf1 + /x8f/xdf/xf2 + /x8f/xdf/xf3 + /x8f/xdf/xf4 + /x8f/xdf/xf5 + /x8f/xdf/xf6 + /x8f/xdf/xf7 + /x8f/xdf/xf8 + /x8f/xdf/xf9 + /x8f/xdf/xfa + /x8f/xdf/xfb + /x8f/xdf/xfc + /x8f/xdf/xfd + /x8f/xdf/xfe + /x8f/xe0/xa1 + /x8f/xe0/xa2 + /x8f/xe0/xa3 + /x8f/xe0/xa4 + /x8f/xe0/xa5 + /x8f/xe0/xa6 + /x8f/xe0/xa7 + /x8f/xe0/xa8 + /x8f/xe0/xa9 + /x8f/xe0/xaa + /x8f/xe0/xab + /x8f/xe0/xac + /x8f/xe0/xad + /x8f/xe0/xae + /x8f/xe0/xaf + /x8f/xe0/xb0 + /x8f/xe0/xb1 + /x8f/xe0/xb2 + /x8f/xe0/xb3 + /x8f/xe0/xb4 + /x8f/xe0/xb5 + /x8f/xe0/xb6 + /x8f/xe0/xb7 + /x8f/xe0/xb8 + /x8f/xe0/xb9 + /x8f/xe0/xba + /x8f/xe0/xbb + /x8f/xe0/xbc + /x8f/xe0/xbd + /x8f/xe0/xbe + /x8f/xe0/xbf + /x8f/xe0/xc0 + /x8f/xe0/xc1 + /x8f/xe0/xc2 + /x8f/xe0/xc3 + /x8f/xe0/xc4 + /x8f/xe0/xc5 + /x8f/xe0/xc6 + /x8f/xe0/xc7 + /x8f/xe0/xc8 + /x8f/xe0/xc9 + /x8f/xe0/xca + /x8f/xe0/xcb + /x8f/xe0/xcc + /x8f/xe0/xcd + /x8f/xe0/xce + /x8f/xe0/xcf + /x8f/xe0/xd0 + /x8f/xe0/xd1 + /x8f/xe0/xd2 + /x8f/xe0/xd3 + /x8f/xe0/xd4 + /x8f/xe0/xd5 + /x8f/xe0/xd6 + /x8f/xe0/xd7 + /x8f/xe0/xd8 + /x8f/xe0/xd9 + /x8f/xe0/xda + /x8f/xe0/xdb + /x8f/xe0/xdc + /x8f/xe0/xdd + /x8f/xe0/xde + /x8f/xe0/xdf + /x8f/xe0/xe0 + /x8f/xe0/xe1 + /x8f/xe0/xe2 + /x8f/xe0/xe3 + /x8f/xe0/xe4 + /x8f/xe0/xe5 + /x8f/xe0/xe6 + /x8f/xe0/xe7 + /x8f/xe0/xe8 + /x8f/xe0/xe9 + /x8f/xe0/xea + /x8f/xe0/xeb + /x8f/xe0/xec + /x8f/xe0/xed + /x8f/xe0/xee + /x8f/xe0/xef + /x8f/xe0/xf0 + /x8f/xe0/xf1 + /x8f/xe0/xf2 + /x8f/xe0/xf3 + /x8f/xe0/xf4 + /x8f/xe0/xf5 + /x8f/xe0/xf6 + /x8f/xe0/xf7 + /x8f/xe0/xf8 + /x8f/xe0/xf9 + /x8f/xe0/xfa + /x8f/xe0/xfb + /x8f/xe0/xfc + /x8f/xe0/xfd + /x8f/xe0/xfe + /x8f/xe1/xa1 + /x8f/xe1/xa2 + /x8f/xe1/xa3 + /x8f/xe1/xa4 + /x8f/xe1/xa5 + /x8f/xe1/xa6 + /x8f/xe1/xa7 + /x8f/xe1/xa8 + /x8f/xe1/xa9 + /x8f/xe1/xaa + /x8f/xe1/xab + /x8f/xe1/xac + /x8f/xe1/xad + /x8f/xe1/xae + /x8f/xe1/xaf + /x8f/xe1/xb0 + /x8f/xe1/xb1 + /x8f/xe1/xb2 + /x8f/xe1/xb3 + /x8f/xe1/xb4 + /x8f/xe1/xb5 + /x8f/xe1/xb6 + /x8f/xe1/xb7 + /x8f/xe1/xb8 + /x8f/xe1/xb9 + /x8f/xe1/xba + /x8f/xe1/xbb + /x8f/xe1/xbc + /x8f/xe1/xbd + /x8f/xe1/xbe + /x8f/xe1/xbf + /x8f/xe1/xc0 + /x8f/xe1/xc1 + /x8f/xe1/xc2 + /x8f/xe1/xc3 + /x8f/xe1/xc4 + /x8f/xe1/xc5 + /x8f/xe1/xc6 + /x8f/xe1/xc7 + /x8f/xe1/xc8 + /x8f/xe1/xc9 + /x8f/xe1/xca + /x8f/xe1/xcb + /x8f/xe1/xcc + /x8f/xe1/xcd + /x8f/xe1/xce + /x8f/xe1/xcf + /x8f/xe1/xd0 + /x8f/xe1/xd1 + /x8f/xe1/xd2 + /x8f/xe1/xd3 + /x8f/xe1/xd4 + /x8f/xe1/xd5 + /x8f/xe1/xd6 + /x8f/xe1/xd7 + /x8f/xe1/xd8 + /x8f/xe1/xd9 + /x8f/xe1/xda + /x8f/xe1/xdb + /x8f/xe1/xdc + /x8f/xe1/xdd + /x8f/xe1/xde + /x8f/xe1/xdf + /x8f/xe1/xe0 + /x8f/xe1/xe1 + /x8f/xe1/xe2 + /x8f/xe1/xe3 + /x8f/xe1/xe4 + /x8f/xe1/xe5 + /x8f/xe1/xe6 + /x8f/xe1/xe7 + /x8f/xe1/xe8 + /x8f/xe1/xe9 + /x8f/xe1/xea + /x8f/xe1/xeb + /x8f/xe1/xec + /x8f/xe1/xed + /x8f/xe1/xee + /x8f/xe1/xef + /x8f/xe1/xf0 + /x8f/xe1/xf1 + /x8f/xe1/xf2 + /x8f/xe1/xf3 + /x8f/xe1/xf4 + /x8f/xe1/xf5 + /x8f/xe1/xf6 + /x8f/xe1/xf7 + /x8f/xe1/xf8 + /x8f/xe1/xf9 + /x8f/xe1/xfa + /x8f/xe1/xfb + /x8f/xe1/xfc + /x8f/xe1/xfd + /x8f/xe1/xfe + /x8f/xe2/xa1 + /x8f/xe2/xa2 + /x8f/xe2/xa3 + /x8f/xe2/xa4 + /x8f/xe2/xa5 + /x8f/xe2/xa6 + /x8f/xe2/xa7 + /x8f/xe2/xa8 + /x8f/xe2/xa9 + /x8f/xe2/xaa + /x8f/xe2/xab + /x8f/xe2/xac + /x8f/xe2/xad + /x8f/xe2/xae + /x8f/xe2/xaf + /x8f/xe2/xb0 + /x8f/xe2/xb1 + /x8f/xe2/xb2 + /x8f/xe2/xb3 + /x8f/xe2/xb4 + /x8f/xe2/xb5 + /x8f/xe2/xb6 + /x8f/xe2/xb7 + /x8f/xe2/xb8 + /x8f/xe2/xb9 + /x8f/xe2/xba + /x8f/xe2/xbb + /x8f/xe2/xbc + /x8f/xe2/xbd + /x8f/xe2/xbe + /x8f/xe2/xbf + /x8f/xe2/xc0 + /x8f/xe2/xc1 + /x8f/xe2/xc2 + /x8f/xe2/xc3 + /x8f/xe2/xc4 + /x8f/xe2/xc5 + /x8f/xe2/xc6 + /x8f/xe2/xc7 + /x8f/xe2/xc8 + /x8f/xe2/xc9 + /x8f/xe2/xca + /x8f/xe2/xcb + /x8f/xe2/xcc + /x8f/xe2/xcd + /x8f/xe2/xce + /x8f/xe2/xcf + /x8f/xe2/xd0 + /x8f/xe2/xd1 + /x8f/xe2/xd2 + /x8f/xe2/xd3 + /x8f/xe2/xd4 + /x8f/xe2/xd5 + /x8f/xe2/xd6 + /x8f/xe2/xd7 + /x8f/xe2/xd8 + /x8f/xe2/xd9 + /x8f/xe2/xda + /x8f/xe2/xdb + /x8f/xe2/xdc + /x8f/xe2/xdd + /x8f/xe2/xde + /x8f/xe2/xdf + /x8f/xe2/xe0 + /x8f/xe2/xe1 + /x8f/xe2/xe2 + /x8f/xe2/xe3 + /x8f/xe2/xe4 + /x8f/xe2/xe5 + /x8f/xe2/xe6 + /x8f/xe2/xe7 + /x8f/xe2/xe8 + /x8f/xe2/xe9 + /x8f/xe2/xea + /x8f/xe2/xeb + /x8f/xe2/xec + /x8f/xe2/xed + /x8f/xe2/xee + /x8f/xe2/xef + /x8f/xe2/xf0 + /x8f/xe2/xf1 + /x8f/xe2/xf2 + /x8f/xe2/xf3 + /x8f/xe2/xf4 + /x8f/xe2/xf5 + /x8f/xe2/xf6 + /x8f/xe2/xf7 + /x8f/xe2/xf8 + /x8f/xe2/xf9 + /x8f/xe2/xfa + /x8f/xe2/xfb + /x8f/xe2/xfc + /x8f/xe2/xfd + /x8f/xe2/xfe + /x8f/xe3/xa1 + /x8f/xe3/xa2 + /x8f/xe3/xa3 + /x8f/xe3/xa4 + /x8f/xe3/xa5 + /x8f/xe3/xa6 + /x8f/xe3/xa7 + /x8f/xe3/xa8 + /x8f/xe3/xa9 + /x8f/xe3/xaa + /x8f/xe3/xab + /x8f/xe3/xac + /x8f/xe3/xad + /x8f/xe3/xae + /x8f/xe3/xaf + /x8f/xe3/xb0 + /x8f/xe3/xb1 + /x8f/xe3/xb2 + /x8f/xe3/xb3 + /x8f/xe3/xb4 + /x8f/xe3/xb5 + /x8f/xe3/xb6 + /x8f/xe3/xb7 + /x8f/xe3/xb8 + /x8f/xe3/xb9 + /x8f/xe3/xba + /x8f/xe3/xbb + /x8f/xe3/xbc + /x8f/xe3/xbd + /x8f/xe3/xbe + /x8f/xe3/xbf + /x8f/xe3/xc0 + /x8f/xe3/xc1 + /x8f/xe3/xc2 + /x8f/xe3/xc3 + /x8f/xe3/xc4 + /x8f/xe3/xc5 + /x8f/xe3/xc6 + /x8f/xe3/xc7 + /x8f/xe3/xc8 + /x8f/xe3/xc9 + /x8f/xe3/xca + /x8f/xe3/xcb + /x8f/xe3/xcc + /x8f/xe3/xcd + /x8f/xe3/xce + /x8f/xe3/xcf + /x8f/xe3/xd0 + /x8f/xe3/xd1 + /x8f/xe3/xd2 + /x8f/xe3/xd3 + /x8f/xe3/xd4 + /x8f/xe3/xd5 + /x8f/xe3/xd6 + /x8f/xe3/xd7 + /x8f/xe3/xd8 + /x8f/xe3/xd9 + /x8f/xe3/xda + /x8f/xe3/xdb + /x8f/xe3/xdc + /x8f/xe3/xdd + /x8f/xe3/xde + /x8f/xe3/xdf + /x8f/xe3/xe0 + /x8f/xe3/xe1 + /x8f/xe3/xe2 + /x8f/xe3/xe3 + /x8f/xe3/xe4 + /x8f/xe3/xe5 + /x8f/xe3/xe6 + /x8f/xe3/xe7 + /x8f/xe3/xe8 + /x8f/xe3/xe9 + /x8f/xe3/xea + /x8f/xe3/xeb + /x8f/xe3/xec + /x8f/xe3/xed + /x8f/xe3/xee + /x8f/xe3/xef + /x8f/xe3/xf0 + /x8f/xe3/xf1 + /x8f/xe3/xf2 + /x8f/xe3/xf3 + /x8f/xe3/xf4 + /x8f/xe3/xf5 + /x8f/xe3/xf6 + /x8f/xe3/xf7 + /x8f/xe3/xf8 + /x8f/xe3/xf9 + /x8f/xe3/xfa + /x8f/xe3/xfb + /x8f/xe3/xfc + /x8f/xe3/xfd + /x8f/xe3/xfe + /x8f/xe4/xa1 + /x8f/xe4/xa2 + /x8f/xe4/xa3 + /x8f/xe4/xa4 + /x8f/xe4/xa5 + /x8f/xe4/xa6 + /x8f/xe4/xa7 + /x8f/xe4/xa8 + /x8f/xe4/xa9 + /x8f/xe4/xaa + /x8f/xe4/xab + /x8f/xe4/xac + /x8f/xe4/xad + /x8f/xe4/xae + /x8f/xe4/xaf + /x8f/xe4/xb0 + /x8f/xe4/xb1 + /x8f/xe4/xb2 + /x8f/xe4/xb3 + /x8f/xe4/xb4 + /x8f/xe4/xb5 + /x8f/xe4/xb6 + /x8f/xe4/xb7 + /x8f/xe4/xb8 + /x8f/xe4/xb9 + /x8f/xe4/xba + /x8f/xe4/xbb + /x8f/xe4/xbc + /x8f/xe4/xbd + /x8f/xe4/xbe + /x8f/xe4/xbf + /x8f/xe4/xc0 + /x8f/xe4/xc1 + /x8f/xe4/xc2 + /x8f/xe4/xc3 + /x8f/xe4/xc4 + /x8f/xe4/xc5 + /x8f/xe4/xc6 + /x8f/xe4/xc7 + /x8f/xe4/xc8 + /x8f/xe4/xc9 + /x8f/xe4/xca + /x8f/xe4/xcb + /x8f/xe4/xcc + /x8f/xe4/xcd + /x8f/xe4/xce + /x8f/xe4/xcf + /x8f/xe4/xd0 + /x8f/xe4/xd1 + /x8f/xe4/xd2 + /x8f/xe4/xd3 + /x8f/xe4/xd4 + /x8f/xe4/xd5 + /x8f/xe4/xd6 + /x8f/xe4/xd7 + /x8f/xe4/xd8 + /x8f/xe4/xd9 + /x8f/xe4/xda + /x8f/xe4/xdb + /x8f/xe4/xdc + /x8f/xe4/xdd + /x8f/xe4/xde + /x8f/xe4/xdf + /x8f/xe4/xe0 + /x8f/xe4/xe1 + /x8f/xe4/xe2 + /x8f/xe4/xe3 + /x8f/xe4/xe4 + /x8f/xe4/xe5 + /x8f/xe4/xe6 + /x8f/xe4/xe7 + /x8f/xe4/xe8 + /x8f/xe4/xe9 + /x8f/xe4/xea + /x8f/xe4/xeb + /x8f/xe4/xec + /x8f/xe4/xed + /x8f/xe4/xee + /x8f/xe4/xef + /x8f/xe4/xf0 + /x8f/xe4/xf1 + /x8f/xe4/xf2 + /x8f/xe4/xf3 + /x8f/xe4/xf4 + /x8f/xe4/xf5 + /x8f/xe4/xf6 + /x8f/xe4/xf7 + /x8f/xe4/xf8 + /x8f/xe4/xf9 + /x8f/xe4/xfa + /x8f/xe4/xfb + /x8f/xe4/xfc + /x8f/xe4/xfd + /x8f/xe4/xfe + /x8f/xe5/xa1 + /x8f/xe5/xa2 + /x8f/xe5/xa3 + /x8f/xe5/xa4 + /x8f/xe5/xa5 + /x8f/xe5/xa6 + /x8f/xe5/xa7 + /x8f/xe5/xa8 + /x8f/xe5/xa9 + /x8f/xe5/xaa + /x8f/xe5/xab + /x8f/xe5/xac + /x8f/xe5/xad + /x8f/xe5/xae + /x8f/xe5/xaf + /x8f/xe5/xb0 + /x8f/xe5/xb1 + /x8f/xe5/xb2 + /x8f/xe5/xb3 + /x8f/xe5/xb4 + /x8f/xe5/xb5 + /x8f/xe5/xb6 + /x8f/xe5/xb7 + /x8f/xe5/xb8 + /x8f/xe5/xb9 + /x8f/xe5/xba + /x8f/xe5/xbb + /x8f/xe5/xbc + /x8f/xe5/xbd + /x8f/xe5/xbe + /x8f/xe5/xbf + /x8f/xe5/xc0 + /x8f/xe5/xc1 + /x8f/xe5/xc2 + /x8f/xe5/xc3 + /x8f/xe5/xc4 + /x8f/xe5/xc5 + /x8f/xe5/xc6 + /x8f/xe5/xc7 + /x8f/xe5/xc8 + /x8f/xe5/xc9 + /x8f/xe5/xca + /x8f/xe5/xcb + /x8f/xe5/xcc + /x8f/xe5/xcd + /x8f/xe5/xce + /x8f/xe5/xcf + /x8f/xe5/xd0 + /x8f/xe5/xd1 + /x8f/xe5/xd2 + /x8f/xe5/xd3 + /x8f/xe5/xd4 + /x8f/xe5/xd5 + /x8f/xe5/xd6 + /x8f/xe5/xd7 + /x8f/xe5/xd8 + /x8f/xe5/xd9 + /x8f/xe5/xda + /x8f/xe5/xdb + /x8f/xe5/xdc + /x8f/xe5/xdd + /x8f/xe5/xde + /x8f/xe5/xdf + /x8f/xe5/xe0 + /x8f/xe5/xe1 + /x8f/xe5/xe2 + /x8f/xe5/xe3 + /x8f/xe5/xe4 + /x8f/xe5/xe5 + /x8f/xe5/xe6 + /x8f/xe5/xe7 + /x8f/xe5/xe8 + /x8f/xe5/xe9 + /x8f/xe5/xea + /x8f/xe5/xeb + /x8f/xe5/xec + /x8f/xe5/xed + /x8f/xe5/xee + /x8f/xe5/xef + /x8f/xe5/xf0 + /x8f/xe5/xf1 + /x8f/xe5/xf2 + /x8f/xe5/xf3 + /x8f/xe5/xf4 + /x8f/xe5/xf5 + /x8f/xe5/xf6 + /x8f/xe5/xf7 + /x8f/xe5/xf8 + /x8f/xe5/xf9 + /x8f/xe5/xfa + /x8f/xe5/xfb + /x8f/xe5/xfc + /x8f/xe5/xfd + /x8f/xe5/xfe + /x8f/xe6/xa1 + /x8f/xe6/xa2 + /x8f/xe6/xa3 + /x8f/xe6/xa4 + /x8f/xe6/xa5 + /x8f/xe6/xa6 + /x8f/xe6/xa7 + /x8f/xe6/xa8 + /x8f/xe6/xa9 + /x8f/xe6/xaa + /x8f/xe6/xab + /x8f/xe6/xac + /x8f/xe6/xad + /x8f/xe6/xae + /x8f/xe6/xaf + /x8f/xe6/xb0 + /x8f/xe6/xb1 + /x8f/xe6/xb2 + /x8f/xe6/xb3 + /x8f/xe6/xb4 + /x8f/xe6/xb5 + /x8f/xe6/xb6 + /x8f/xe6/xb7 + /x8f/xe6/xb8 + /x8f/xe6/xb9 + /x8f/xe6/xba + /x8f/xe6/xbb + /x8f/xe6/xbc + /x8f/xe6/xbd + /x8f/xe6/xbe + /x8f/xe6/xbf + /x8f/xe6/xc0 + /x8f/xe6/xc1 + /x8f/xe6/xc2 + /x8f/xe6/xc3 + /x8f/xe6/xc4 + /x8f/xe6/xc5 + /x8f/xe6/xc6 + /x8f/xe6/xc7 + /x8f/xe6/xc8 + /x8f/xe6/xc9 + /x8f/xe6/xca + /x8f/xe6/xcb + /x8f/xe6/xcc + /x8f/xe6/xcd + /x8f/xe6/xce + /x8f/xe6/xcf + /x8f/xe6/xd0 + /x8f/xe6/xd1 + /x8f/xe6/xd2 + /x8f/xe6/xd3 + /x8f/xe6/xd4 + /x8f/xe6/xd5 + /x8f/xe6/xd6 + /x8f/xe6/xd7 + /x8f/xe6/xd8 + /x8f/xe6/xd9 + /x8f/xe6/xda + /x8f/xe6/xdb + /x8f/xe6/xdc + /x8f/xe6/xdd + /x8f/xe6/xde + /x8f/xe6/xdf + /x8f/xe6/xe0 + /x8f/xe6/xe1 + /x8f/xe6/xe2 + /x8f/xe6/xe3 + /x8f/xe6/xe4 + /x8f/xe6/xe5 + /x8f/xe6/xe6 + /x8f/xe6/xe7 + /x8f/xe6/xe8 + /x8f/xe6/xe9 + /x8f/xe6/xea + /x8f/xe6/xeb + /x8f/xe6/xec + /x8f/xe6/xed + /x8f/xe6/xee + /x8f/xe6/xef + /x8f/xe6/xf0 + /x8f/xe6/xf1 + /x8f/xe6/xf2 + /x8f/xe6/xf3 + /x8f/xe6/xf4 + /x8f/xe6/xf5 + /x8f/xe6/xf6 + /x8f/xe6/xf7 + /x8f/xe6/xf8 + /x8f/xe6/xf9 + /x8f/xe6/xfa + /x8f/xe6/xfb + /x8f/xe6/xfc + /x8f/xe6/xfd + /x8f/xe6/xfe + /x8f/xe7/xa1 + /x8f/xe7/xa2 + /x8f/xe7/xa3 + /x8f/xe7/xa4 + /x8f/xe7/xa5 + /x8f/xe7/xa6 + /x8f/xe7/xa7 + /x8f/xe7/xa8 + /x8f/xe7/xa9 + /x8f/xe7/xaa + /x8f/xe7/xab + /x8f/xe7/xac + /x8f/xe7/xad + /x8f/xe7/xae + /x8f/xe7/xaf + /x8f/xe7/xb0 + /x8f/xe7/xb1 + /x8f/xe7/xb2 + /x8f/xe7/xb3 + /x8f/xe7/xb4 + /x8f/xe7/xb5 + /x8f/xe7/xb6 + /x8f/xe7/xb7 + /x8f/xe7/xb8 + /x8f/xe7/xb9 + /x8f/xe7/xba + /x8f/xe7/xbb + /x8f/xe7/xbc + /x8f/xe7/xbd + /x8f/xe7/xbe + /x8f/xe7/xbf + /x8f/xe7/xc0 + /x8f/xe7/xc1 + /x8f/xe7/xc2 + /x8f/xe7/xc3 + /x8f/xe7/xc4 + /x8f/xe7/xc5 + /x8f/xe7/xc6 + /x8f/xe7/xc7 + /x8f/xe7/xc8 + /x8f/xe7/xc9 + /x8f/xe7/xca + /x8f/xe7/xcb + /x8f/xe7/xcc + /x8f/xe7/xcd + /x8f/xe7/xce + /x8f/xe7/xcf + /x8f/xe7/xd0 + /x8f/xe7/xd1 + /x8f/xe7/xd2 + /x8f/xe7/xd3 + /x8f/xe7/xd4 + /x8f/xe7/xd5 + /x8f/xe7/xd6 + /x8f/xe7/xd7 + /x8f/xe7/xd8 + /x8f/xe7/xd9 + /x8f/xe7/xda + /x8f/xe7/xdb + /x8f/xe7/xdc + /x8f/xe7/xdd + /x8f/xe7/xde + /x8f/xe7/xdf + /x8f/xe7/xe0 + /x8f/xe7/xe1 + /x8f/xe7/xe2 + /x8f/xe7/xe3 + /x8f/xe7/xe4 + /x8f/xe7/xe5 + /x8f/xe7/xe6 + /x8f/xe7/xe7 + /x8f/xe7/xe8 + /x8f/xe7/xe9 + /x8f/xe7/xea + /x8f/xe7/xeb + /x8f/xe7/xec + /x8f/xe7/xed + /x8f/xe7/xee + /x8f/xe7/xef + /x8f/xe7/xf0 + /x8f/xe7/xf1 + /x8f/xe7/xf2 + /x8f/xe7/xf3 + /x8f/xe7/xf4 + /x8f/xe7/xf5 + /x8f/xe7/xf6 + /x8f/xe7/xf7 + /x8f/xe7/xf8 + /x8f/xe7/xf9 + /x8f/xe7/xfa + /x8f/xe7/xfb + /x8f/xe7/xfc + /x8f/xe7/xfd + /x8f/xe7/xfe + /x8f/xe8/xa1 + /x8f/xe8/xa2 + /x8f/xe8/xa3 + /x8f/xe8/xa4 + /x8f/xe8/xa5 + /x8f/xe8/xa6 + /x8f/xe8/xa7 + /x8f/xe8/xa8 + /x8f/xe8/xa9 + /x8f/xe8/xaa + /x8f/xe8/xab + /x8f/xe8/xac + /x8f/xe8/xad + /x8f/xe8/xae + /x8f/xe8/xaf + /x8f/xe8/xb0 + /x8f/xe8/xb1 + /x8f/xe8/xb2 + /x8f/xe8/xb3 + /x8f/xe8/xb4 + /x8f/xe8/xb5 + /x8f/xe8/xb6 + /x8f/xe8/xb7 + /x8f/xe8/xb8 + /x8f/xe8/xb9 + /x8f/xe8/xba + /x8f/xe8/xbb + /x8f/xe8/xbc + /x8f/xe8/xbd + /x8f/xe8/xbe + /x8f/xe8/xbf + /x8f/xe8/xc0 + /x8f/xe8/xc1 + /x8f/xe8/xc2 + /x8f/xe8/xc3 + /x8f/xe8/xc4 + /x8f/xe8/xc5 + /x8f/xe8/xc6 + /x8f/xe8/xc7 + /x8f/xe8/xc8 + /x8f/xe8/xc9 + /x8f/xe8/xca + /x8f/xe8/xcb + /x8f/xe8/xcc + /x8f/xe8/xcd + /x8f/xe8/xce + /x8f/xe8/xcf + /x8f/xe8/xd0 + /x8f/xe8/xd1 + /x8f/xe8/xd2 + /x8f/xe8/xd3 + /x8f/xe8/xd4 + /x8f/xe8/xd5 + /x8f/xe8/xd6 + /x8f/xe8/xd7 + /x8f/xe8/xd8 + /x8f/xe8/xd9 + /x8f/xe8/xda + /x8f/xe8/xdb + /x8f/xe8/xdc + /x8f/xe8/xdd + /x8f/xe8/xde + /x8f/xe8/xdf + /x8f/xe8/xe0 + /x8f/xe8/xe1 + /x8f/xe8/xe2 + /x8f/xe8/xe3 + /x8f/xe8/xe4 + /x8f/xe8/xe5 + /x8f/xe8/xe6 + /x8f/xe8/xe7 + /x8f/xe8/xe8 + /x8f/xe8/xe9 + /x8f/xe8/xea + /x8f/xe8/xeb + /x8f/xe8/xec + /x8f/xe8/xed + /x8f/xe8/xee + /x8f/xe8/xef + /x8f/xe8/xf0 + /x8f/xe8/xf1 + /x8f/xe8/xf2 + /x8f/xe8/xf3 + /x8f/xe8/xf4 + /x8f/xe8/xf5 + /x8f/xe8/xf6 + /x8f/xe8/xf7 + /x8f/xe8/xf8 + /x8f/xe8/xf9 + /x8f/xe8/xfa + /x8f/xe8/xfb + /x8f/xe8/xfc + /x8f/xe8/xfd + /x8f/xe8/xfe + /x8f/xe9/xa1 + /x8f/xe9/xa2 + /x8f/xe9/xa3 + /x8f/xe9/xa4 + /x8f/xe9/xa5 + /x8f/xe9/xa6 + /x8f/xe9/xa7 + /x8f/xe9/xa8 + /x8f/xe9/xa9 + /x8f/xe9/xaa + /x8f/xe9/xab + /x8f/xe9/xac + /x8f/xe9/xad + /x8f/xe9/xae + /x8f/xe9/xaf + /x8f/xe9/xb0 + /x8f/xe9/xb1 + /x8f/xe9/xb2 + /x8f/xe9/xb3 + /x8f/xe9/xb4 + /x8f/xe9/xb5 + /x8f/xe9/xb6 + /x8f/xe9/xb7 + /x8f/xe9/xb8 + /x8f/xe9/xb9 + /x8f/xe9/xba + /x8f/xe9/xbb + /x8f/xe9/xbc + /x8f/xe9/xbd + /x8f/xe9/xbe + /x8f/xe9/xbf + /x8f/xe9/xc0 + /x8f/xe9/xc1 + /x8f/xe9/xc2 + /x8f/xe9/xc3 + /x8f/xe9/xc4 + /x8f/xe9/xc5 + /x8f/xe9/xc6 + /x8f/xe9/xc7 + /x8f/xe9/xc8 + /x8f/xe9/xc9 + /x8f/xe9/xca + /x8f/xe9/xcb + /x8f/xe9/xcc + /x8f/xe9/xcd + /x8f/xe9/xce + /x8f/xe9/xcf + /x8f/xe9/xd0 + /x8f/xe9/xd1 + /x8f/xe9/xd2 + /x8f/xe9/xd3 + /x8f/xe9/xd4 + /x8f/xe9/xd5 + /x8f/xe9/xd6 + /x8f/xe9/xd7 + /x8f/xe9/xd8 + /x8f/xe9/xd9 + /x8f/xe9/xda + /x8f/xe9/xdb + /x8f/xe9/xdc + /x8f/xe9/xdd + /x8f/xe9/xde + /x8f/xe9/xdf + /x8f/xe9/xe0 + /x8f/xe9/xe1 + /x8f/xe9/xe2 + /x8f/xe9/xe3 + /x8f/xe9/xe4 + /x8f/xe9/xe5 + /x8f/xe9/xe6 + /x8f/xe9/xe7 + /x8f/xe9/xe8 + /x8f/xe9/xe9 + /x8f/xe9/xea + /x8f/xe9/xeb + /x8f/xe9/xec + /x8f/xe9/xed + /x8f/xe9/xee + /x8f/xe9/xef + /x8f/xe9/xf0 + /x8f/xe9/xf1 + /x8f/xe9/xf2 + /x8f/xe9/xf3 + /x8f/xe9/xf4 + /x8f/xe9/xf5 + /x8f/xe9/xf6 + /x8f/xe9/xf7 + /x8f/xe9/xf8 + /x8f/xe9/xf9 + /x8f/xe9/xfa + /x8f/xe9/xfb + /x8f/xe9/xfc + /x8f/xe9/xfd + /x8f/xe9/xfe + /x8f/xea/xa1 + /x8f/xea/xa2 + /x8f/xea/xa3 + /x8f/xea/xa4 + /x8f/xea/xa5 + /x8f/xea/xa6 + /x8f/xea/xa7 + /x8f/xea/xa8 + /x8f/xea/xa9 + /x8f/xea/xaa + /x8f/xea/xab + /x8f/xea/xac + /x8f/xea/xad + /x8f/xea/xae + /x8f/xea/xaf + /x8f/xea/xb0 + /x8f/xea/xb1 + /x8f/xea/xb2 + /x8f/xea/xb3 + /x8f/xea/xb4 + /x8f/xea/xb5 + /x8f/xea/xb6 + /x8f/xea/xb7 + /x8f/xea/xb8 + /x8f/xea/xb9 + /x8f/xea/xba + /x8f/xea/xbb + /x8f/xea/xbc + /x8f/xea/xbd + /x8f/xea/xbe + /x8f/xea/xbf + /x8f/xea/xc0 + /x8f/xea/xc1 + /x8f/xea/xc2 + /x8f/xea/xc3 + /x8f/xea/xc4 + /x8f/xea/xc5 + /x8f/xea/xc6 + /x8f/xea/xc7 + /x8f/xea/xc8 + /x8f/xea/xc9 + /x8f/xea/xca + /x8f/xea/xcb + /x8f/xea/xcc + /x8f/xea/xcd + /x8f/xea/xce + /x8f/xea/xcf + /x8f/xea/xd0 + /x8f/xea/xd1 + /x8f/xea/xd2 + /x8f/xea/xd3 + /x8f/xea/xd4 + /x8f/xea/xd5 + /x8f/xea/xd6 + /x8f/xea/xd7 + /x8f/xea/xd8 + /x8f/xea/xd9 + /x8f/xea/xda + /x8f/xea/xdb + /x8f/xea/xdc + /x8f/xea/xdd + /x8f/xea/xde + /x8f/xea/xdf + /x8f/xea/xe0 + /x8f/xea/xe1 + /x8f/xea/xe2 + /x8f/xea/xe3 + /x8f/xea/xe4 + /x8f/xea/xe5 + /x8f/xea/xe6 + /x8f/xea/xe7 + /x8f/xea/xe8 + /x8f/xea/xe9 + /x8f/xea/xea + /x8f/xea/xeb + /x8f/xea/xec + /x8f/xea/xed + /x8f/xea/xee + /x8f/xea/xef + /x8f/xea/xf0 + /x8f/xea/xf1 + /x8f/xea/xf2 + /x8f/xea/xf3 + /x8f/xea/xf4 + /x8f/xea/xf5 + /x8f/xea/xf6 + /x8f/xea/xf7 + /x8f/xea/xf8 + /x8f/xea/xf9 + /x8f/xea/xfa + /x8f/xea/xfb + /x8f/xea/xfc + /x8f/xea/xfd + /x8f/xea/xfe + /x8f/xeb/xa1 + /x8f/xeb/xa2 + /x8f/xeb/xa3 + /x8f/xeb/xa4 + /x8f/xeb/xa5 + /x8f/xeb/xa6 + /x8f/xeb/xa7 + /x8f/xeb/xa8 + /x8f/xeb/xa9 + /x8f/xeb/xaa + /x8f/xeb/xab + /x8f/xeb/xac + /x8f/xeb/xad + /x8f/xeb/xae + /x8f/xeb/xaf + /x8f/xeb/xb0 + /x8f/xeb/xb1 + /x8f/xeb/xb2 + /x8f/xeb/xb3 + /x8f/xeb/xb4 + /x8f/xeb/xb5 + /x8f/xeb/xb6 + /x8f/xeb/xb7 + /x8f/xeb/xb8 + /x8f/xeb/xb9 + /x8f/xeb/xba + /x8f/xeb/xbb + /x8f/xeb/xbc + /x8f/xeb/xbd + /x8f/xeb/xbe + /x8f/xeb/xbf + /x8f/xeb/xc0 + /x8f/xeb/xc1 + /x8f/xeb/xc2 + /x8f/xeb/xc3 + /x8f/xeb/xc4 + /x8f/xeb/xc5 + /x8f/xeb/xc6 + /x8f/xeb/xc7 + /x8f/xeb/xc8 + /x8f/xeb/xc9 + /x8f/xeb/xca + /x8f/xeb/xcb + /x8f/xeb/xcc + /x8f/xeb/xcd + /x8f/xeb/xce + /x8f/xeb/xcf + /x8f/xeb/xd0 + /x8f/xeb/xd1 + /x8f/xeb/xd2 + /x8f/xeb/xd3 + /x8f/xeb/xd4 + /x8f/xeb/xd5 + /x8f/xeb/xd6 + /x8f/xeb/xd7 + /x8f/xeb/xd8 + /x8f/xeb/xd9 + /x8f/xeb/xda + /x8f/xeb/xdb + /x8f/xeb/xdc + /x8f/xeb/xdd + /x8f/xeb/xde + /x8f/xeb/xdf + /x8f/xeb/xe0 + /x8f/xeb/xe1 + /x8f/xeb/xe2 + /x8f/xeb/xe3 + /x8f/xeb/xe4 + /x8f/xeb/xe5 + /x8f/xeb/xe6 + /x8f/xeb/xe7 + /x8f/xeb/xe8 + /x8f/xeb/xe9 + /x8f/xeb/xea + /x8f/xeb/xeb + /x8f/xeb/xec + /x8f/xeb/xed + /x8f/xeb/xee + /x8f/xeb/xef + /x8f/xeb/xf0 + /x8f/xeb/xf1 + /x8f/xeb/xf2 + /x8f/xeb/xf3 + /x8f/xeb/xf4 + /x8f/xeb/xf5 + /x8f/xeb/xf6 + /x8f/xeb/xf7 + /x8f/xeb/xf8 + /x8f/xeb/xf9 + /x8f/xeb/xfa + /x8f/xeb/xfb + /x8f/xeb/xfc + /x8f/xeb/xfd + /x8f/xeb/xfe + /x8f/xec/xa1 + /x8f/xec/xa2 + /x8f/xec/xa3 + /x8f/xec/xa4 + /x8f/xec/xa5 + /x8f/xec/xa6 + /x8f/xec/xa7 + /x8f/xec/xa8 + /x8f/xec/xa9 + /x8f/xec/xaa + /x8f/xec/xab + /x8f/xec/xac + /x8f/xec/xad + /x8f/xec/xae + /x8f/xec/xaf + /x8f/xec/xb0 + /x8f/xec/xb1 + /x8f/xec/xb2 + /x8f/xec/xb3 + /x8f/xec/xb4 + /x8f/xec/xb5 + /x8f/xec/xb6 + /x8f/xec/xb7 + /x8f/xec/xb8 + /x8f/xec/xb9 + /x8f/xec/xba + /x8f/xec/xbb + /x8f/xec/xbc + /x8f/xec/xbd + /x8f/xec/xbe + /x8f/xec/xbf + /x8f/xec/xc0 + /x8f/xec/xc1 + /x8f/xec/xc2 + /x8f/xec/xc3 + /x8f/xec/xc4 + /x8f/xec/xc5 + /x8f/xec/xc6 + /x8f/xec/xc7 + /x8f/xec/xc8 + /x8f/xec/xc9 + /x8f/xec/xca + /x8f/xec/xcb + /x8f/xec/xcc + /x8f/xec/xcd + /x8f/xec/xce + /x8f/xec/xcf + /x8f/xec/xd0 + /x8f/xec/xd1 + /x8f/xec/xd2 + /x8f/xec/xd3 + /x8f/xec/xd4 + /x8f/xec/xd5 + /x8f/xec/xd6 + /x8f/xec/xd7 + /x8f/xec/xd8 + /x8f/xec/xd9 + /x8f/xec/xda + /x8f/xec/xdb + /x8f/xec/xdc + /x8f/xec/xdd + /x8f/xec/xde + /x8f/xec/xdf + /x8f/xec/xe0 + /x8f/xec/xe1 + /x8f/xec/xe2 + /x8f/xec/xe3 + /x8f/xec/xe4 + /x8f/xec/xe5 + /x8f/xec/xe6 + /x8f/xec/xe7 + /x8f/xec/xe8 + /x8f/xec/xe9 + /x8f/xec/xea + /x8f/xec/xeb + /x8f/xec/xec + /x8f/xec/xed + /x8f/xec/xee + /x8f/xec/xef + /x8f/xec/xf0 + /x8f/xec/xf1 + /x8f/xec/xf2 + /x8f/xec/xf3 + /x8f/xec/xf4 + /x8f/xec/xf5 + /x8f/xec/xf6 + /x8f/xec/xf7 + /x8f/xec/xf8 + /x8f/xec/xf9 + /x8f/xec/xfa + /x8f/xec/xfb + /x8f/xec/xfc + /x8f/xec/xfd + /x8f/xec/xfe + /x8f/xed/xa1 + /x8f/xed/xa2 + /x8f/xed/xa3 + /x8f/xed/xa4 + /x8f/xed/xa5 + /x8f/xed/xa6 + /x8f/xed/xa7 + /x8f/xed/xa8 + /x8f/xed/xa9 + /x8f/xed/xaa + /x8f/xed/xab + /x8f/xed/xac + /x8f/xed/xad + /x8f/xed/xae + /x8f/xed/xaf + /x8f/xed/xb0 + /x8f/xed/xb1 + /x8f/xed/xb2 + /x8f/xed/xb3 + /x8f/xed/xb4 + /x8f/xed/xb5 + /x8f/xed/xb6 + /x8f/xed/xb7 + /x8f/xed/xb8 + /x8f/xed/xb9 + /x8f/xed/xba + /x8f/xed/xbb + /x8f/xed/xbc + /x8f/xed/xbd + /x8f/xed/xbe + /x8f/xed/xbf + /x8f/xed/xc0 + /x8f/xed/xc1 + /x8f/xed/xc2 + /x8f/xed/xc3 + /x8f/xed/xc4 + /x8f/xed/xc5 + /x8f/xed/xc6 + /x8f/xed/xc7 + /x8f/xed/xc8 + /x8f/xed/xc9 + /x8f/xed/xca + /x8f/xed/xcb + /x8f/xed/xcc + /x8f/xed/xcd + /x8f/xed/xce + /x8f/xed/xcf + /x8f/xed/xd0 + /x8f/xed/xd1 + /x8f/xed/xd2 + /x8f/xed/xd3 + /x8f/xed/xd4 + /x8f/xed/xd5 + /x8f/xed/xd6 + /x8f/xed/xd7 + /x8f/xed/xd8 + /x8f/xed/xd9 + /x8f/xed/xda + /x8f/xed/xdb + /x8f/xed/xdc + /x8f/xed/xdd + /x8f/xed/xde + /x8f/xed/xdf + /x8f/xed/xe0 + /x8f/xed/xe1 + /x8f/xed/xe2 + /x8f/xed/xe3 + /x8f/xf3/xf3 SMALL ROMAN NUMERAL ONE + /x8f/xf3/xf4 SMALL ROMAN NUMERAL TWO + /x8f/xf3/xf5 SMALL ROMAN NUMERAL THREE + /x8f/xf3/xf6 SMALL ROMAN NUMERAL FOUR + /x8f/xf3/xf7 SMALL ROMAN NUMERAL FIVE + /x8f/xf3/xf8 SMALL ROMAN NUMERAL SIX + /x8f/xf3/xf9 SMALL ROMAN NUMERAL SEVEN + /x8f/xf3/xfa SMALL ROMAN NUMERAL EIGHT + /x8f/xf3/xfb SMALL ROMAN NUMERAL NINE + /x8f/xf3/xfc SMALL ROMAN NUMERAL TEN +%IRREVERSIBLE% /x8f/xf3/xfd ROMAN NUMERAL ONE +%IRREVERSIBLE% /x8f/xf3/xfe ROMAN NUMERAL TWO +%IRREVERSIBLE% /x8f/xf4/xa1 ROMAN NUMERAL THREE +%IRREVERSIBLE% /x8f/xf4/xa2 ROMAN NUMERAL FOUR +%IRREVERSIBLE% /x8f/xf4/xa3 ROMAN NUMERAL FIVE +%IRREVERSIBLE% /x8f/xf4/xa4 ROMAN NUMERAL SIX +%IRREVERSIBLE% /x8f/xf4/xa5 ROMAN NUMERAL SEVEN +%IRREVERSIBLE% /x8f/xf4/xa6 ROMAN NUMERAL EIGHT +%IRREVERSIBLE% /x8f/xf4/xa7 ROMAN NUMERAL NINE +%IRREVERSIBLE% /x8f/xf4/xa8 ROMAN NUMERAL TEN + /x8f/xf4/xa9 FULLWIDTH APOSTROPHE + /x8f/xf4/xaa FULLWIDTH QUOTATION MARK +%IRREVERSIBLE% /x8f/xf4/xab PARENTHESIZED IDEOGRAPH STOCK +%IRREVERSIBLE% /x8f/xf4/xac NUMERO SIGN +%IRREVERSIBLE% /x8f/xf4/xad TELEPHONE SIGN + /x8f/xf4/xae + /x8f/xf4/xaf + /x8f/xf4/xb0 + /x8f/xf4/xb1 + /x8f/xf4/xb2 + /x8f/xf4/xb3 + /x8f/xf4/xb4 CJK COMPATIBILITY IDEOGRAPH-FA0E + /x8f/xf4/xb5 + /x8f/xf4/xb6 + /x8f/xf4/xb7 CJK COMPATIBILITY IDEOGRAPH-FA0F + /x8f/xf4/xb8 CJK COMPATIBILITY IDEOGRAPH-FA10 + /x8f/xf4/xb9 + /x8f/xf4/xba + /x8f/xf4/xbb + /x8f/xf4/xbc + /x8f/xf4/xbd CJK COMPATIBILITY IDEOGRAPH-FA11 + /x8f/xf4/xbe + /x8f/xf4/xbf + /x8f/xf4/xc0 + /x8f/xf4/xc1 + /x8f/xf4/xc2 + /x8f/xf4/xc3 + /x8f/xf4/xc4 CJK COMPATIBILITY IDEOGRAPH-FA12 + /x8f/xf4/xc5 CJK COMPATIBILITY IDEOGRAPH-F929 + /x8f/xf4/xc6 + /x8f/xf4/xc7 CJK COMPATIBILITY IDEOGRAPH-FA13 + /x8f/xf4/xc8 CJK COMPATIBILITY IDEOGRAPH-FA14 + /x8f/xf4/xc9 + /x8f/xf4/xca + /x8f/xf4/xcb + /x8f/xf4/xcc + /x8f/xf4/xcd + /x8f/xf4/xce CJK COMPATIBILITY IDEOGRAPH-FA15 + /x8f/xf4/xcf CJK COMPATIBILITY IDEOGRAPH-FA16 + /x8f/xf4/xd0 + /x8f/xf4/xd1 + /x8f/xf4/xd2 + /x8f/xf4/xd3 CJK COMPATIBILITY IDEOGRAPH-FA17 + /x8f/xf4/xd4 + /x8f/xf4/xd5 CJK COMPATIBILITY IDEOGRAPH-FA18 + /x8f/xf4/xd6 CJK COMPATIBILITY IDEOGRAPH-FA19 + /x8f/xf4/xd7 CJK COMPATIBILITY IDEOGRAPH-FA1A + /x8f/xf4/xd8 CJK COMPATIBILITY IDEOGRAPH-FA1B + /x8f/xf4/xd9 + /x8f/xf4/xda CJK COMPATIBILITY IDEOGRAPH-FA1C + /x8f/xf4/xdb CJK COMPATIBILITY IDEOGRAPH-FA1D + /x8f/xf4/xdc + /x8f/xf4/xdd + /x8f/xf4/xde CJK COMPATIBILITY IDEOGRAPH-FA1E + /x8f/xf4/xdf + /x8f/xf4/xe0 CJK COMPATIBILITY IDEOGRAPH-FA1F + /x8f/xf4/xe1 + /x8f/xf4/xe2 CJK COMPATIBILITY IDEOGRAPH-FA20 + /x8f/xf4/xe3 CJK COMPATIBILITY IDEOGRAPH-FA21 + /x8f/xf4/xe4 + /x8f/xf4/xe5 CJK COMPATIBILITY IDEOGRAPH-FA22 + /x8f/xf4/xe6 + /x8f/xf4/xe7 + /x8f/xf4/xe8 + /x8f/xf4/xe9 CJK COMPATIBILITY IDEOGRAPH-FA23 + /x8f/xf4/xea CJK COMPATIBILITY IDEOGRAPH-FA24 + /x8f/xf4/xeb CJK COMPATIBILITY IDEOGRAPH-FA25 + /x8f/xf4/xec + /x8f/xf4/xed CJK COMPATIBILITY IDEOGRAPH-FA26 + /x8f/xf4/xee + /x8f/xf4/xef CJK COMPATIBILITY IDEOGRAPH-FA27 + /x8f/xf4/xf0 CJK COMPATIBILITY IDEOGRAPH-FA28 + /x8f/xf4/xf1 + /x8f/xf4/xf2 CJK COMPATIBILITY IDEOGRAPH-F9DC + /x8f/xf4/xf3 CJK COMPATIBILITY IDEOGRAPH-FA29 + /x8f/xf4/xf4 + /x8f/xf4/xf5 + /x8f/xf4/xf6 + /x8f/xf4/xf7 CJK COMPATIBILITY IDEOGRAPH-FA2A + /x8f/xf4/xf8 CJK COMPATIBILITY IDEOGRAPH-FA2B + /x8f/xf4/xf9 CJK COMPATIBILITY IDEOGRAPH-FA2C + /x8f/xf4/xfa + /x8f/xf4/xfb + /x8f/xf4/xfc + /x8f/xf4/xfd CJK COMPATIBILITY IDEOGRAPH-FA2D + /x8f/xf4/xfe + +% +% User Defined Characters (EUC Code Set 3) +% + /x8f/xf5/xa1 + /x8f/xf5/xa2 + /x8f/xf5/xa3 + /x8f/xf5/xa4 + /x8f/xf5/xa5 + /x8f/xf5/xa6 + /x8f/xf5/xa7 + /x8f/xf5/xa8 + /x8f/xf5/xa9 + /x8f/xf5/xaa + /x8f/xf5/xab + /x8f/xf5/xac + /x8f/xf5/xad + /x8f/xf5/xae + /x8f/xf5/xaf + /x8f/xf5/xb0 + /x8f/xf5/xb1 + /x8f/xf5/xb2 + /x8f/xf5/xb3 + /x8f/xf5/xb4 + /x8f/xf5/xb5 + /x8f/xf5/xb6 + /x8f/xf5/xb7 + /x8f/xf5/xb8 + /x8f/xf5/xb9 + /x8f/xf5/xba + /x8f/xf5/xbb + /x8f/xf5/xbc + /x8f/xf5/xbd + /x8f/xf5/xbe + /x8f/xf5/xbf + /x8f/xf5/xc0 + /x8f/xf5/xc1 + /x8f/xf5/xc2 + /x8f/xf5/xc3 + /x8f/xf5/xc4 + /x8f/xf5/xc5 + /x8f/xf5/xc6 + /x8f/xf5/xc7 + /x8f/xf5/xc8 + /x8f/xf5/xc9 + /x8f/xf5/xca + /x8f/xf5/xcb + /x8f/xf5/xcc + /x8f/xf5/xcd + /x8f/xf5/xce + /x8f/xf5/xcf + /x8f/xf5/xd0 + /x8f/xf5/xd1 + /x8f/xf5/xd2 + /x8f/xf5/xd3 + /x8f/xf5/xd4 + /x8f/xf5/xd5 + /x8f/xf5/xd6 + /x8f/xf5/xd7 + /x8f/xf5/xd8 + /x8f/xf5/xd9 + /x8f/xf5/xda + /x8f/xf5/xdb + /x8f/xf5/xdc + /x8f/xf5/xdd + /x8f/xf5/xde + /x8f/xf5/xdf + /x8f/xf5/xe0 + /x8f/xf5/xe1 + /x8f/xf5/xe2 + /x8f/xf5/xe3 + /x8f/xf5/xe4 + /x8f/xf5/xe5 + /x8f/xf5/xe6 + /x8f/xf5/xe7 + /x8f/xf5/xe8 + /x8f/xf5/xe9 + /x8f/xf5/xea + /x8f/xf5/xeb + /x8f/xf5/xec + /x8f/xf5/xed + /x8f/xf5/xee + /x8f/xf5/xef + /x8f/xf5/xf0 + /x8f/xf5/xf1 + /x8f/xf5/xf2 + /x8f/xf5/xf3 + /x8f/xf5/xf4 + /x8f/xf5/xf5 + /x8f/xf5/xf6 + /x8f/xf5/xf7 + /x8f/xf5/xf8 + /x8f/xf5/xf9 + /x8f/xf5/xfa + /x8f/xf5/xfb + /x8f/xf5/xfc + /x8f/xf5/xfd + /x8f/xf5/xfe + /x8f/xf6/xa1 + /x8f/xf6/xa2 + /x8f/xf6/xa3 + /x8f/xf6/xa4 + /x8f/xf6/xa5 + /x8f/xf6/xa6 + /x8f/xf6/xa7 + /x8f/xf6/xa8 + /x8f/xf6/xa9 + /x8f/xf6/xaa + /x8f/xf6/xab + /x8f/xf6/xac + /x8f/xf6/xad + /x8f/xf6/xae + /x8f/xf6/xaf + /x8f/xf6/xb0 + /x8f/xf6/xb1 + /x8f/xf6/xb2 + /x8f/xf6/xb3 + /x8f/xf6/xb4 + /x8f/xf6/xb5 + /x8f/xf6/xb6 + /x8f/xf6/xb7 + /x8f/xf6/xb8 + /x8f/xf6/xb9 + /x8f/xf6/xba + /x8f/xf6/xbb + /x8f/xf6/xbc + /x8f/xf6/xbd + /x8f/xf6/xbe + /x8f/xf6/xbf + /x8f/xf6/xc0 + /x8f/xf6/xc1 + /x8f/xf6/xc2 + /x8f/xf6/xc3 + /x8f/xf6/xc4 + /x8f/xf6/xc5 + /x8f/xf6/xc6 + /x8f/xf6/xc7 + /x8f/xf6/xc8 + /x8f/xf6/xc9 + /x8f/xf6/xca + /x8f/xf6/xcb + /x8f/xf6/xcc + /x8f/xf6/xcd + /x8f/xf6/xce + /x8f/xf6/xcf + /x8f/xf6/xd0 + /x8f/xf6/xd1 + /x8f/xf6/xd2 + /x8f/xf6/xd3 + /x8f/xf6/xd4 + /x8f/xf6/xd5 + /x8f/xf6/xd6 + /x8f/xf6/xd7 + /x8f/xf6/xd8 + /x8f/xf6/xd9 + /x8f/xf6/xda + /x8f/xf6/xdb + /x8f/xf6/xdc + /x8f/xf6/xdd + /x8f/xf6/xde + /x8f/xf6/xdf + /x8f/xf6/xe0 + /x8f/xf6/xe1 + /x8f/xf6/xe2 + /x8f/xf6/xe3 + /x8f/xf6/xe4 + /x8f/xf6/xe5 + /x8f/xf6/xe6 + /x8f/xf6/xe7 + /x8f/xf6/xe8 + /x8f/xf6/xe9 + /x8f/xf6/xea + /x8f/xf6/xeb + /x8f/xf6/xec + /x8f/xf6/xed + /x8f/xf6/xee + /x8f/xf6/xef + /x8f/xf6/xf0 + /x8f/xf6/xf1 + /x8f/xf6/xf2 + /x8f/xf6/xf3 + /x8f/xf6/xf4 + /x8f/xf6/xf5 + /x8f/xf6/xf6 + /x8f/xf6/xf7 + /x8f/xf6/xf8 + /x8f/xf6/xf9 + /x8f/xf6/xfa + /x8f/xf6/xfb + /x8f/xf6/xfc + /x8f/xf6/xfd + /x8f/xf6/xfe + /x8f/xf7/xa1 + /x8f/xf7/xa2 + /x8f/xf7/xa3 + /x8f/xf7/xa4 + /x8f/xf7/xa5 + /x8f/xf7/xa6 + /x8f/xf7/xa7 + /x8f/xf7/xa8 + /x8f/xf7/xa9 + /x8f/xf7/xaa + /x8f/xf7/xab + /x8f/xf7/xac + /x8f/xf7/xad + /x8f/xf7/xae + /x8f/xf7/xaf + /x8f/xf7/xb0 + /x8f/xf7/xb1 + /x8f/xf7/xb2 + /x8f/xf7/xb3 + /x8f/xf7/xb4 + /x8f/xf7/xb5 + /x8f/xf7/xb6 + /x8f/xf7/xb7 + /x8f/xf7/xb8 + /x8f/xf7/xb9 + /x8f/xf7/xba + /x8f/xf7/xbb + /x8f/xf7/xbc + /x8f/xf7/xbd + /x8f/xf7/xbe + /x8f/xf7/xbf + /x8f/xf7/xc0 + /x8f/xf7/xc1 + /x8f/xf7/xc2 + /x8f/xf7/xc3 + /x8f/xf7/xc4 + /x8f/xf7/xc5 + /x8f/xf7/xc6 + /x8f/xf7/xc7 + /x8f/xf7/xc8 + /x8f/xf7/xc9 + /x8f/xf7/xca + /x8f/xf7/xcb + /x8f/xf7/xcc + /x8f/xf7/xcd + /x8f/xf7/xce + /x8f/xf7/xcf + /x8f/xf7/xd0 + /x8f/xf7/xd1 + /x8f/xf7/xd2 + /x8f/xf7/xd3 + /x8f/xf7/xd4 + /x8f/xf7/xd5 + /x8f/xf7/xd6 + /x8f/xf7/xd7 + /x8f/xf7/xd8 + /x8f/xf7/xd9 + /x8f/xf7/xda + /x8f/xf7/xdb + /x8f/xf7/xdc + /x8f/xf7/xdd + /x8f/xf7/xde + /x8f/xf7/xdf + /x8f/xf7/xe0 + /x8f/xf7/xe1 + /x8f/xf7/xe2 + /x8f/xf7/xe3 + /x8f/xf7/xe4 + /x8f/xf7/xe5 + /x8f/xf7/xe6 + /x8f/xf7/xe7 + /x8f/xf7/xe8 + /x8f/xf7/xe9 + /x8f/xf7/xea + /x8f/xf7/xeb + /x8f/xf7/xec + /x8f/xf7/xed + /x8f/xf7/xee + /x8f/xf7/xef + /x8f/xf7/xf0 + /x8f/xf7/xf1 + /x8f/xf7/xf2 + /x8f/xf7/xf3 + /x8f/xf7/xf4 + /x8f/xf7/xf5 + /x8f/xf7/xf6 + /x8f/xf7/xf7 + /x8f/xf7/xf8 + /x8f/xf7/xf9 + /x8f/xf7/xfa + /x8f/xf7/xfb + /x8f/xf7/xfc + /x8f/xf7/xfd + /x8f/xf7/xfe + /x8f/xf8/xa1 + /x8f/xf8/xa2 + /x8f/xf8/xa3 + /x8f/xf8/xa4 + /x8f/xf8/xa5 + /x8f/xf8/xa6 + /x8f/xf8/xa7 + /x8f/xf8/xa8 + /x8f/xf8/xa9 + /x8f/xf8/xaa + /x8f/xf8/xab + /x8f/xf8/xac + /x8f/xf8/xad + /x8f/xf8/xae + /x8f/xf8/xaf + /x8f/xf8/xb0 + /x8f/xf8/xb1 + /x8f/xf8/xb2 + /x8f/xf8/xb3 + /x8f/xf8/xb4 + /x8f/xf8/xb5 + /x8f/xf8/xb6 + /x8f/xf8/xb7 + /x8f/xf8/xb8 + /x8f/xf8/xb9 + /x8f/xf8/xba + /x8f/xf8/xbb + /x8f/xf8/xbc + /x8f/xf8/xbd + /x8f/xf8/xbe + /x8f/xf8/xbf + /x8f/xf8/xc0 + /x8f/xf8/xc1 + /x8f/xf8/xc2 + /x8f/xf8/xc3 + /x8f/xf8/xc4 + /x8f/xf8/xc5 + /x8f/xf8/xc6 + /x8f/xf8/xc7 + /x8f/xf8/xc8 + /x8f/xf8/xc9 + /x8f/xf8/xca + /x8f/xf8/xcb + /x8f/xf8/xcc + /x8f/xf8/xcd + /x8f/xf8/xce + /x8f/xf8/xcf + /x8f/xf8/xd0 + /x8f/xf8/xd1 + /x8f/xf8/xd2 + /x8f/xf8/xd3 + /x8f/xf8/xd4 + /x8f/xf8/xd5 + /x8f/xf8/xd6 + /x8f/xf8/xd7 + /x8f/xf8/xd8 + /x8f/xf8/xd9 + /x8f/xf8/xda + /x8f/xf8/xdb + /x8f/xf8/xdc + /x8f/xf8/xdd + /x8f/xf8/xde + /x8f/xf8/xdf + /x8f/xf8/xe0 + /x8f/xf8/xe1 + /x8f/xf8/xe2 + /x8f/xf8/xe3 + /x8f/xf8/xe4 + /x8f/xf8/xe5 + /x8f/xf8/xe6 + /x8f/xf8/xe7 + /x8f/xf8/xe8 + /x8f/xf8/xe9 + /x8f/xf8/xea + /x8f/xf8/xeb + /x8f/xf8/xec + /x8f/xf8/xed + /x8f/xf8/xee + /x8f/xf8/xef + /x8f/xf8/xf0 + /x8f/xf8/xf1 + /x8f/xf8/xf2 + /x8f/xf8/xf3 + /x8f/xf8/xf4 + /x8f/xf8/xf5 + /x8f/xf8/xf6 + /x8f/xf8/xf7 + /x8f/xf8/xf8 + /x8f/xf8/xf9 + /x8f/xf8/xfa + /x8f/xf8/xfb + /x8f/xf8/xfc + /x8f/xf8/xfd + /x8f/xf8/xfe + /x8f/xf9/xa1 + /x8f/xf9/xa2 + /x8f/xf9/xa3 + /x8f/xf9/xa4 + /x8f/xf9/xa5 + /x8f/xf9/xa6 + /x8f/xf9/xa7 + /x8f/xf9/xa8 + /x8f/xf9/xa9 + /x8f/xf9/xaa + /x8f/xf9/xab + /x8f/xf9/xac + /x8f/xf9/xad + /x8f/xf9/xae + /x8f/xf9/xaf + /x8f/xf9/xb0 + /x8f/xf9/xb1 + /x8f/xf9/xb2 + /x8f/xf9/xb3 + /x8f/xf9/xb4 + /x8f/xf9/xb5 + /x8f/xf9/xb6 + /x8f/xf9/xb7 + /x8f/xf9/xb8 + /x8f/xf9/xb9 + /x8f/xf9/xba + /x8f/xf9/xbb + /x8f/xf9/xbc + /x8f/xf9/xbd + /x8f/xf9/xbe + /x8f/xf9/xbf + /x8f/xf9/xc0 + /x8f/xf9/xc1 + /x8f/xf9/xc2 + /x8f/xf9/xc3 + /x8f/xf9/xc4 + /x8f/xf9/xc5 + /x8f/xf9/xc6 + /x8f/xf9/xc7 + /x8f/xf9/xc8 + /x8f/xf9/xc9 + /x8f/xf9/xca + /x8f/xf9/xcb + /x8f/xf9/xcc + /x8f/xf9/xcd + /x8f/xf9/xce + /x8f/xf9/xcf + /x8f/xf9/xd0 + /x8f/xf9/xd1 + /x8f/xf9/xd2 + /x8f/xf9/xd3 + /x8f/xf9/xd4 + /x8f/xf9/xd5 + /x8f/xf9/xd6 + /x8f/xf9/xd7 + /x8f/xf9/xd8 + /x8f/xf9/xd9 + /x8f/xf9/xda + /x8f/xf9/xdb + /x8f/xf9/xdc + /x8f/xf9/xdd + /x8f/xf9/xde + /x8f/xf9/xdf + /x8f/xf9/xe0 + /x8f/xf9/xe1 + /x8f/xf9/xe2 + /x8f/xf9/xe3 + /x8f/xf9/xe4 + /x8f/xf9/xe5 + /x8f/xf9/xe6 + /x8f/xf9/xe7 + /x8f/xf9/xe8 + /x8f/xf9/xe9 + /x8f/xf9/xea + /x8f/xf9/xeb + /x8f/xf9/xec + /x8f/xf9/xed + /x8f/xf9/xee + /x8f/xf9/xef + /x8f/xf9/xf0 + /x8f/xf9/xf1 + /x8f/xf9/xf2 + /x8f/xf9/xf3 + /x8f/xf9/xf4 + /x8f/xf9/xf5 + /x8f/xf9/xf6 + /x8f/xf9/xf7 + /x8f/xf9/xf8 + /x8f/xf9/xf9 + /x8f/xf9/xfa + /x8f/xf9/xfb + /x8f/xf9/xfc + /x8f/xf9/xfd + /x8f/xf9/xfe + /x8f/xfa/xa1 + /x8f/xfa/xa2 + /x8f/xfa/xa3 + /x8f/xfa/xa4 + /x8f/xfa/xa5 + /x8f/xfa/xa6 + /x8f/xfa/xa7 + /x8f/xfa/xa8 + /x8f/xfa/xa9 + /x8f/xfa/xaa + /x8f/xfa/xab + /x8f/xfa/xac + /x8f/xfa/xad + /x8f/xfa/xae + /x8f/xfa/xaf + /x8f/xfa/xb0 + /x8f/xfa/xb1 + /x8f/xfa/xb2 + /x8f/xfa/xb3 + /x8f/xfa/xb4 + /x8f/xfa/xb5 + /x8f/xfa/xb6 + /x8f/xfa/xb7 + /x8f/xfa/xb8 + /x8f/xfa/xb9 + /x8f/xfa/xba + /x8f/xfa/xbb + /x8f/xfa/xbc + /x8f/xfa/xbd + /x8f/xfa/xbe + /x8f/xfa/xbf + /x8f/xfa/xc0 + /x8f/xfa/xc1 + /x8f/xfa/xc2 + /x8f/xfa/xc3 + /x8f/xfa/xc4 + /x8f/xfa/xc5 + /x8f/xfa/xc6 + /x8f/xfa/xc7 + /x8f/xfa/xc8 + /x8f/xfa/xc9 + /x8f/xfa/xca + /x8f/xfa/xcb + /x8f/xfa/xcc + /x8f/xfa/xcd + /x8f/xfa/xce + /x8f/xfa/xcf + /x8f/xfa/xd0 + /x8f/xfa/xd1 + /x8f/xfa/xd2 + /x8f/xfa/xd3 + /x8f/xfa/xd4 + /x8f/xfa/xd5 + /x8f/xfa/xd6 + /x8f/xfa/xd7 + /x8f/xfa/xd8 + /x8f/xfa/xd9 + /x8f/xfa/xda + /x8f/xfa/xdb + /x8f/xfa/xdc + /x8f/xfa/xdd + /x8f/xfa/xde + /x8f/xfa/xdf + /x8f/xfa/xe0 + /x8f/xfa/xe1 + /x8f/xfa/xe2 + /x8f/xfa/xe3 + /x8f/xfa/xe4 + /x8f/xfa/xe5 + /x8f/xfa/xe6 + /x8f/xfa/xe7 + /x8f/xfa/xe8 + /x8f/xfa/xe9 + /x8f/xfa/xea + /x8f/xfa/xeb + /x8f/xfa/xec + /x8f/xfa/xed + /x8f/xfa/xee + /x8f/xfa/xef + /x8f/xfa/xf0 + /x8f/xfa/xf1 + /x8f/xfa/xf2 + /x8f/xfa/xf3 + /x8f/xfa/xf4 + /x8f/xfa/xf5 + /x8f/xfa/xf6 + /x8f/xfa/xf7 + /x8f/xfa/xf8 + /x8f/xfa/xf9 + /x8f/xfa/xfa + /x8f/xfa/xfb + /x8f/xfa/xfc + /x8f/xfa/xfd + /x8f/xfa/xfe + /x8f/xfb/xa1 + /x8f/xfb/xa2 + /x8f/xfb/xa3 + /x8f/xfb/xa4 + /x8f/xfb/xa5 + /x8f/xfb/xa6 + /x8f/xfb/xa7 + /x8f/xfb/xa8 + /x8f/xfb/xa9 + /x8f/xfb/xaa + /x8f/xfb/xab + /x8f/xfb/xac + /x8f/xfb/xad + /x8f/xfb/xae + /x8f/xfb/xaf + /x8f/xfb/xb0 + /x8f/xfb/xb1 + /x8f/xfb/xb2 + /x8f/xfb/xb3 + /x8f/xfb/xb4 + /x8f/xfb/xb5 + /x8f/xfb/xb6 + /x8f/xfb/xb7 + /x8f/xfb/xb8 + /x8f/xfb/xb9 + /x8f/xfb/xba + /x8f/xfb/xbb + /x8f/xfb/xbc + /x8f/xfb/xbd + /x8f/xfb/xbe + /x8f/xfb/xbf + /x8f/xfb/xc0 + /x8f/xfb/xc1 + /x8f/xfb/xc2 + /x8f/xfb/xc3 + /x8f/xfb/xc4 + /x8f/xfb/xc5 + /x8f/xfb/xc6 + /x8f/xfb/xc7 + /x8f/xfb/xc8 + /x8f/xfb/xc9 + /x8f/xfb/xca + /x8f/xfb/xcb + /x8f/xfb/xcc + /x8f/xfb/xcd + /x8f/xfb/xce + /x8f/xfb/xcf + /x8f/xfb/xd0 + /x8f/xfb/xd1 + /x8f/xfb/xd2 + /x8f/xfb/xd3 + /x8f/xfb/xd4 + /x8f/xfb/xd5 + /x8f/xfb/xd6 + /x8f/xfb/xd7 + /x8f/xfb/xd8 + /x8f/xfb/xd9 + /x8f/xfb/xda + /x8f/xfb/xdb + /x8f/xfb/xdc + /x8f/xfb/xdd + /x8f/xfb/xde + /x8f/xfb/xdf + /x8f/xfb/xe0 + /x8f/xfb/xe1 + /x8f/xfb/xe2 + /x8f/xfb/xe3 + /x8f/xfb/xe4 + /x8f/xfb/xe5 + /x8f/xfb/xe6 + /x8f/xfb/xe7 + /x8f/xfb/xe8 + /x8f/xfb/xe9 + /x8f/xfb/xea + /x8f/xfb/xeb + /x8f/xfb/xec + /x8f/xfb/xed + /x8f/xfb/xee + /x8f/xfb/xef + /x8f/xfb/xf0 + /x8f/xfb/xf1 + /x8f/xfb/xf2 + /x8f/xfb/xf3 + /x8f/xfb/xf4 + /x8f/xfb/xf5 + /x8f/xfb/xf6 + /x8f/xfb/xf7 + /x8f/xfb/xf8 + /x8f/xfb/xf9 + /x8f/xfb/xfa + /x8f/xfb/xfb + /x8f/xfb/xfc + /x8f/xfb/xfd + /x8f/xfb/xfe + /x8f/xfc/xa1 + /x8f/xfc/xa2 + /x8f/xfc/xa3 + /x8f/xfc/xa4 + /x8f/xfc/xa5 + /x8f/xfc/xa6 + /x8f/xfc/xa7 + /x8f/xfc/xa8 + /x8f/xfc/xa9 + /x8f/xfc/xaa + /x8f/xfc/xab + /x8f/xfc/xac + /x8f/xfc/xad + /x8f/xfc/xae + /x8f/xfc/xaf + /x8f/xfc/xb0 + /x8f/xfc/xb1 + /x8f/xfc/xb2 + /x8f/xfc/xb3 + /x8f/xfc/xb4 + /x8f/xfc/xb5 + /x8f/xfc/xb6 + /x8f/xfc/xb7 + /x8f/xfc/xb8 + /x8f/xfc/xb9 + /x8f/xfc/xba + /x8f/xfc/xbb + /x8f/xfc/xbc + /x8f/xfc/xbd + /x8f/xfc/xbe + /x8f/xfc/xbf + /x8f/xfc/xc0 + /x8f/xfc/xc1 + /x8f/xfc/xc2 + /x8f/xfc/xc3 + /x8f/xfc/xc4 + /x8f/xfc/xc5 + /x8f/xfc/xc6 + /x8f/xfc/xc7 + /x8f/xfc/xc8 + /x8f/xfc/xc9 + /x8f/xfc/xca + /x8f/xfc/xcb + /x8f/xfc/xcc + /x8f/xfc/xcd + /x8f/xfc/xce + /x8f/xfc/xcf + /x8f/xfc/xd0 + /x8f/xfc/xd1 + /x8f/xfc/xd2 + /x8f/xfc/xd3 + /x8f/xfc/xd4 + /x8f/xfc/xd5 + /x8f/xfc/xd6 + /x8f/xfc/xd7 + /x8f/xfc/xd8 + /x8f/xfc/xd9 + /x8f/xfc/xda + /x8f/xfc/xdb + /x8f/xfc/xdc + /x8f/xfc/xdd + /x8f/xfc/xde + /x8f/xfc/xdf + /x8f/xfc/xe0 + /x8f/xfc/xe1 + /x8f/xfc/xe2 + /x8f/xfc/xe3 + /x8f/xfc/xe4 + /x8f/xfc/xe5 + /x8f/xfc/xe6 + /x8f/xfc/xe7 + /x8f/xfc/xe8 + /x8f/xfc/xe9 + /x8f/xfc/xea + /x8f/xfc/xeb + /x8f/xfc/xec + /x8f/xfc/xed + /x8f/xfc/xee + /x8f/xfc/xef + /x8f/xfc/xf0 + /x8f/xfc/xf1 + /x8f/xfc/xf2 + /x8f/xfc/xf3 + /x8f/xfc/xf4 + /x8f/xfc/xf5 + /x8f/xfc/xf6 + /x8f/xfc/xf7 + /x8f/xfc/xf8 + /x8f/xfc/xf9 + /x8f/xfc/xfa + /x8f/xfc/xfb + /x8f/xfc/xfc + /x8f/xfc/xfd + /x8f/xfc/xfe + /x8f/xfd/xa1 + /x8f/xfd/xa2 + /x8f/xfd/xa3 + /x8f/xfd/xa4 + /x8f/xfd/xa5 + /x8f/xfd/xa6 + /x8f/xfd/xa7 + /x8f/xfd/xa8 + /x8f/xfd/xa9 + /x8f/xfd/xaa + /x8f/xfd/xab + /x8f/xfd/xac + /x8f/xfd/xad + /x8f/xfd/xae + /x8f/xfd/xaf + /x8f/xfd/xb0 + /x8f/xfd/xb1 + /x8f/xfd/xb2 + /x8f/xfd/xb3 + /x8f/xfd/xb4 + /x8f/xfd/xb5 + /x8f/xfd/xb6 + /x8f/xfd/xb7 + /x8f/xfd/xb8 + /x8f/xfd/xb9 + /x8f/xfd/xba + /x8f/xfd/xbb + /x8f/xfd/xbc + /x8f/xfd/xbd + /x8f/xfd/xbe + /x8f/xfd/xbf + /x8f/xfd/xc0 + /x8f/xfd/xc1 + /x8f/xfd/xc2 + /x8f/xfd/xc3 + /x8f/xfd/xc4 + /x8f/xfd/xc5 + /x8f/xfd/xc6 + /x8f/xfd/xc7 + /x8f/xfd/xc8 + /x8f/xfd/xc9 + /x8f/xfd/xca + /x8f/xfd/xcb + /x8f/xfd/xcc + /x8f/xfd/xcd + /x8f/xfd/xce + /x8f/xfd/xcf + /x8f/xfd/xd0 + /x8f/xfd/xd1 + /x8f/xfd/xd2 + /x8f/xfd/xd3 + /x8f/xfd/xd4 + /x8f/xfd/xd5 + /x8f/xfd/xd6 + /x8f/xfd/xd7 + /x8f/xfd/xd8 + /x8f/xfd/xd9 + /x8f/xfd/xda + /x8f/xfd/xdb + /x8f/xfd/xdc + /x8f/xfd/xdd + /x8f/xfd/xde + /x8f/xfd/xdf + /x8f/xfd/xe0 + /x8f/xfd/xe1 + /x8f/xfd/xe2 + /x8f/xfd/xe3 + /x8f/xfd/xe4 + /x8f/xfd/xe5 + /x8f/xfd/xe6 + /x8f/xfd/xe7 + /x8f/xfd/xe8 + /x8f/xfd/xe9 + /x8f/xfd/xea + /x8f/xfd/xeb + /x8f/xfd/xec + /x8f/xfd/xed + /x8f/xfd/xee + /x8f/xfd/xef + /x8f/xfd/xf0 + /x8f/xfd/xf1 + /x8f/xfd/xf2 + /x8f/xfd/xf3 + /x8f/xfd/xf4 + /x8f/xfd/xf5 + /x8f/xfd/xf6 + /x8f/xfd/xf7 + /x8f/xfd/xf8 + /x8f/xfd/xf9 + /x8f/xfd/xfa + /x8f/xfd/xfb + /x8f/xfd/xfc + /x8f/xfd/xfd + /x8f/xfd/xfe + /x8f/xfe/xa1 + /x8f/xfe/xa2 + /x8f/xfe/xa3 + /x8f/xfe/xa4 + /x8f/xfe/xa5 + /x8f/xfe/xa6 + /x8f/xfe/xa7 + /x8f/xfe/xa8 + /x8f/xfe/xa9 + /x8f/xfe/xaa + /x8f/xfe/xab + /x8f/xfe/xac + /x8f/xfe/xad + /x8f/xfe/xae + /x8f/xfe/xaf + /x8f/xfe/xb0 + /x8f/xfe/xb1 + /x8f/xfe/xb2 + /x8f/xfe/xb3 + /x8f/xfe/xb4 + /x8f/xfe/xb5 + /x8f/xfe/xb6 + /x8f/xfe/xb7 + /x8f/xfe/xb8 + /x8f/xfe/xb9 + /x8f/xfe/xba + /x8f/xfe/xbb + /x8f/xfe/xbc + /x8f/xfe/xbd + /x8f/xfe/xbe + /x8f/xfe/xbf + /x8f/xfe/xc0 + /x8f/xfe/xc1 + /x8f/xfe/xc2 + /x8f/xfe/xc3 + /x8f/xfe/xc4 + /x8f/xfe/xc5 + /x8f/xfe/xc6 + /x8f/xfe/xc7 + /x8f/xfe/xc8 + /x8f/xfe/xc9 + /x8f/xfe/xca + /x8f/xfe/xcb + /x8f/xfe/xcc + /x8f/xfe/xcd + /x8f/xfe/xce + /x8f/xfe/xcf + /x8f/xfe/xd0 + /x8f/xfe/xd1 + /x8f/xfe/xd2 + /x8f/xfe/xd3 + /x8f/xfe/xd4 + /x8f/xfe/xd5 + /x8f/xfe/xd6 + /x8f/xfe/xd7 + /x8f/xfe/xd8 + /x8f/xfe/xd9 + /x8f/xfe/xda + /x8f/xfe/xdb + /x8f/xfe/xdc + /x8f/xfe/xdd + /x8f/xfe/xde + /x8f/xfe/xdf + /x8f/xfe/xe0 + /x8f/xfe/xe1 + /x8f/xfe/xe2 + /x8f/xfe/xe3 + /x8f/xfe/xe4 + /x8f/xfe/xe5 + /x8f/xfe/xe6 + /x8f/xfe/xe7 + /x8f/xfe/xe8 + /x8f/xfe/xe9 + /x8f/xfe/xea + /x8f/xfe/xeb + /x8f/xfe/xec + /x8f/xfe/xed + /x8f/xfe/xee + /x8f/xfe/xef + /x8f/xfe/xf0 + /x8f/xfe/xf1 + /x8f/xfe/xf2 + /x8f/xfe/xf3 + /x8f/xfe/xf4 + /x8f/xfe/xf5 + /x8f/xfe/xf6 + /x8f/xfe/xf7 + /x8f/xfe/xf8 + /x8f/xfe/xf9 + /x8f/xfe/xfa + /x8f/xfe/xfb + /x8f/xfe/xfc + /x8f/xfe/xfd + /x8f/xfe/xfe +END CHARMAP + +WIDTH +... 2 +... 2 +... 2 +... 2 +END WIDTH --- glibc-2.3.2/localedata/charmaps/GBK 2002-11-02 23:49:08.000000000 -0500 +++ glibc-2.3.2/localedata/charmaps/GBK 2003-08-21 08:37:06.000000000 -0400 @@ -4,6 +4,9 @@ % / +% alias CP936 +% alias MS936 +% alias WINDOWS-936 CHARMAP /x00 NULL (NUL) /x01 START OF HEADING (SOH) --- glibc-2.3.2/localedata/charmaps/IBM1047 2000-06-23 14:38:48.000000000 -0400 +++ glibc-2.3.2/localedata/charmaps/IBM1047 2003-08-21 08:37:06.000000000 -0400 @@ -6,6 +6,7 @@ % Registry SC09-1391-00 p 150. +% alias IBM-1047 % alias CP1047 % alias 1047 CHARMAP --- glibc-2.3.2/localedata/charmaps/ISO-8859-15 2000-06-23 15:02:28.000000000 -0400 +++ glibc-2.3.2/localedata/charmaps/ISO-8859-15 2003-08-21 08:37:06.000000000 -0400 @@ -3,6 +3,8 @@ / % automatically generated from the charDB +% alias ISO_8859-15 +% alias LATIN-9 CHARMAP /x00 NULL /x01 START OF HEADING --- glibc-2.3.2/localedata/charmaps/ISO-8859-16 2001-11-26 22:44:03.000000000 -0500 +++ glibc-2.3.2/localedata/charmaps/ISO-8859-16 2003-08-21 08:37:06.000000000 -0400 @@ -4,6 +4,8 @@ % automatically generated from the charDB % alias ISO-IR-226 +% alias ISO_8859-16:2001 +% alias ISO_8859-16 % alias LATIN10 % alias L10 CHARMAP --- glibc-2.3.2/localedata/charmaps/WINDOWS-31J 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/localedata/charmaps/WINDOWS-31J 2003-08-14 04:48:04.000000000 -0400 @@ -0,0 +1,9823 @@ + WINDOWS-31J + % + / + 1 + 2 + +% WINDOWS-31J character map +% MORIYAMA Masayuki , 2003. +% Last changed: 2003-07-18 + +alias CP932 + +CHARMAP + /x00 NULL + /x01 START OF HEADING + /x02 START OF TEXT + /x03 END OF TEXT + /x04 END OF TRANSMISSION + /x05 ENQUIRY + /x06 ACKNOWLEDGE + /x07 BELL + /x08 BACKSPACE + /x09 HORIZONTAL TABULATION + /x0a LINE FEED + /x0b VERTICAL TABULATION + /x0c FORM FEED + /x0d CARRIAGE RETURN + /x0e SHIFT OUT + /x0f SHIFT IN + /x10 DATA LINK ESCAPE + /x11 DEVICE CONTROL ONE + /x12 DEVICE CONTROL TWO + /x13 DEVICE CONTROL THREE + /x14 DEVICE CONTROL FOUR + /x15 NEGATIVE ACKNOWLEDGE + /x16 SYNCHRONOUS IDLE + /x17 END OF TRANSMISSION BLOCK + /x18 CANCEL + /x19 END OF MEDIUM + /x1a SUBSTITUTE + /x1b ESCAPE + /x1c FILE SEPARATOR + /x1d GROUP SEPARATOR + /x1e RECORD SEPARATOR + /x1f UNIT SEPARATOR + /x20 SPACE + /x21 EXCLAMATION MARK + /x22 QUOTATION MARK + /x23 NUMBER SIGN + /x24 DOLLAR SIGN + /x25 PERCENT SIGN + /x26 AMPERSAND + /x27 APOSTROPHE + /x28 LEFT PARENTHESIS + /x29 RIGHT PARENTHESIS + /x2a ASTERISK + /x2b PLUS SIGN + /x2c COMMA + /x2d HYPHEN-MINUS + /x2e FULL STOP + /x2f SOLIDUS + /x30 DIGIT ZERO + /x31 DIGIT ONE + /x32 DIGIT TWO + /x33 DIGIT THREE + /x34 DIGIT FOUR + /x35 DIGIT FIVE + /x36 DIGIT SIX + /x37 DIGIT SEVEN + /x38 DIGIT EIGHT + /x39 DIGIT NINE + /x3a COLON + /x3b SEMICOLON + /x3c LESS-THAN SIGN + /x3d EQUALS SIGN + /x3e GREATER-THAN SIGN + /x3f QUESTION MARK + /x40 COMMERCIAL AT + /x41 LATIN CAPITAL LETTER A + /x42 LATIN CAPITAL LETTER B + /x43 LATIN CAPITAL LETTER C + /x44 LATIN CAPITAL LETTER D + /x45 LATIN CAPITAL LETTER E + /x46 LATIN CAPITAL LETTER F + /x47 LATIN CAPITAL LETTER G + /x48 LATIN CAPITAL LETTER H + /x49 LATIN CAPITAL LETTER I + /x4a LATIN CAPITAL LETTER J + /x4b LATIN CAPITAL LETTER K + /x4c LATIN CAPITAL LETTER L + /x4d LATIN CAPITAL LETTER M + /x4e LATIN CAPITAL LETTER N + /x4f LATIN CAPITAL LETTER O + /x50 LATIN CAPITAL LETTER P + /x51 LATIN CAPITAL LETTER Q + /x52 LATIN CAPITAL LETTER R + /x53 LATIN CAPITAL LETTER S + /x54 LATIN CAPITAL LETTER T + /x55 LATIN CAPITAL LETTER U + /x56 LATIN CAPITAL LETTER V + /x57 LATIN CAPITAL LETTER W + /x58 LATIN CAPITAL LETTER X + /x59 LATIN CAPITAL LETTER Y + /x5a LATIN CAPITAL LETTER Z + /x5b LEFT SQUARE BRACKET + /x5c REVERSE SOLIDUS + /x5d RIGHT SQUARE BRACKET + /x5e CIRCUMFLEX ACCENT + /x5f LOW LINE + /x60 GRAVE ACCENT + /x61 LATIN SMALL LETTER A + /x62 LATIN SMALL LETTER B + /x63 LATIN SMALL LETTER C + /x64 LATIN SMALL LETTER D + /x65 LATIN SMALL LETTER E + /x66 LATIN SMALL LETTER F + /x67 LATIN SMALL LETTER G + /x68 LATIN SMALL LETTER H + /x69 LATIN SMALL LETTER I + /x6a LATIN SMALL LETTER J + /x6b LATIN SMALL LETTER K + /x6c LATIN SMALL LETTER L + /x6d LATIN SMALL LETTER M + /x6e LATIN SMALL LETTER N + /x6f LATIN SMALL LETTER O + /x70 LATIN SMALL LETTER P + /x71 LATIN SMALL LETTER Q + /x72 LATIN SMALL LETTER R + /x73 LATIN SMALL LETTER S + /x74 LATIN SMALL LETTER T + /x75 LATIN SMALL LETTER U + /x76 LATIN SMALL LETTER V + /x77 LATIN SMALL LETTER W + /x78 LATIN SMALL LETTER X + /x79 LATIN SMALL LETTER Y + /x7a LATIN SMALL LETTER Z + /x7b LEFT CURLY BRACKET + /x7c VERTICAL LINE + /x7d RIGHT CURLY BRACKET + /x7e TILDE + /x7f DELETE + + /x81/x40 IDEOGRAPHIC SPACE + /x81/x41 IDEOGRAPHIC COMMA + /x81/x42 IDEOGRAPHIC FULL STOP + /x81/x43 FULLWIDTH COMMA + /x81/x44 FULLWIDTH FULL STOP + /x81/x45 KATAKANA MIDDLE DOT + /x81/x46 FULLWIDTH COLON + /x81/x47 FULLWIDTH SEMICOLON + /x81/x48 FULLWIDTH QUESTION MARK + /x81/x49 FULLWIDTH EXCLAMATION MARK + /x81/x4a KATAKANA-HIRAGANA VOICED SOUND MARK + /x81/x4b KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK + /x81/x4c ACUTE ACCENT + /x81/x4d FULLWIDTH GRAVE ACCENT + /x81/x4e DIAERESIS + /x81/x4f FULLWIDTH CIRCUMFLEX ACCENT + /x81/x50 FULLWIDTH MACRON + /x81/x51 FULLWIDTH LOW LINE + /x81/x52 KATAKANA ITERATION MARK + /x81/x53 KATAKANA VOICED ITERATION MARK + /x81/x54 HIRAGANA ITERATION MARK + /x81/x55 HIRAGANA VOICED ITERATION MARK + /x81/x56 DITTO MARK + /x81/x57 + /x81/x58 IDEOGRAPHIC ITERATION MARK + /x81/x59 IDEOGRAPHIC CLOSING MARK + /x81/x5a IDEOGRAPHIC NUMBER ZERO + /x81/x5b KATAKANA-HIRAGANA PROLONGED SOUND MARK + /x81/x5c HORIZONTAL BAR + /x81/x5d HYPHEN + /x81/x5e FULLWIDTH SOLIDUS + /x81/x5f FULLWIDTH REVERSE SOLIDUS + /x81/x60 FULLWIDTH TILDE + /x81/x61 PARALLEL TO + /x81/x62 FULLWIDTH VERTICAL LINE + /x81/x63 HORIZONTAL ELLIPSIS + /x81/x64 TWO DOT LEADER + /x81/x65 LEFT SINGLE QUOTATION MARK + /x81/x66 RIGHT SINGLE QUOTATION MARK + /x81/x67 LEFT DOUBLE QUOTATION MARK + /x81/x68 RIGHT DOUBLE QUOTATION MARK + /x81/x69 FULLWIDTH LEFT PARENTHESIS + /x81/x6a FULLWIDTH RIGHT PARENTHESIS + /x81/x6b LEFT TORTOISE SHELL BRACKET + /x81/x6c RIGHT TORTOISE SHELL BRACKET + /x81/x6d FULLWIDTH LEFT SQUARE BRACKET + /x81/x6e FULLWIDTH RIGHT SQUARE BRACKET + /x81/x6f FULLWIDTH LEFT CURLY BRACKET + /x81/x70 FULLWIDTH RIGHT CURLY BRACKET + /x81/x71 LEFT ANGLE BRACKET + /x81/x72 RIGHT ANGLE BRACKET + /x81/x73 LEFT DOUBLE ANGLE BRACKET + /x81/x74 RIGHT DOUBLE ANGLE BRACKET + /x81/x75 LEFT CORNER BRACKET + /x81/x76 RIGHT CORNER BRACKET + /x81/x77 LEFT WHITE CORNER BRACKET + /x81/x78 RIGHT WHITE CORNER BRACKET + /x81/x79 LEFT BLACK LENTICULAR BRACKET + /x81/x7a RIGHT BLACK LENTICULAR BRACKET + /x81/x7b FULLWIDTH PLUS SIGN + /x81/x7c FULLWIDTH HYPHEN-MINUS + /x81/x7d PLUS-MINUS SIGN + /x81/x7e MULTIPLICATION SIGN + /x81/x80 DIVISION SIGN + /x81/x81 FULLWIDTH EQUALS SIGN + /x81/x82 NOT EQUAL TO + /x81/x83 FULLWIDTH LESS-THAN SIGN + /x81/x84 FULLWIDTH GREATER-THAN SIGN + /x81/x85 LESS-THAN OVER EQUAL TO + /x81/x86 GREATER-THAN OVER EQUAL TO + /x81/x87 INFINITY + /x81/x88 THEREFORE + /x81/x89 MALE SIGN + /x81/x8a FEMALE SIGN + /x81/x8b DEGREE SIGN + /x81/x8c PRIME + /x81/x8d DOUBLE PRIME + /x81/x8e DEGREE CELSIUS + /x81/x8f FULLWIDTH YEN SIGN + /x81/x90 FULLWIDTH DOLLAR SIGN + /x81/x91 FULLWIDTH CENT SIGN + /x81/x92 FULLWIDTH POUND SIGN + /x81/x93 FULLWIDTH PERCENT SIGN + /x81/x94 FULLWIDTH NUMBER SIGN + /x81/x95 FULLWIDTH AMPERSAND + /x81/x96 FULLWIDTH ASTERISK + /x81/x97 FULLWIDTH COMMERCIAL AT + /x81/x98 SECTION SIGN + /x81/x99 WHITE STAR + /x81/x9a BLACK STAR + /x81/x9b WHITE CIRCLE + /x81/x9c BLACK CIRCLE + /x81/x9d BULLSEYE + /x81/x9e WHITE DIAMOND + /x81/x9f BLACK DIAMOND + /x81/xa0 WHITE SQUARE + /x81/xa1 BLACK SQUARE + /x81/xa2 WHITE UP-POINTING TRIANGLE + /x81/xa3 BLACK UP-POINTING TRIANGLE + /x81/xa4 WHITE DOWN-POINTING TRIANGLE + /x81/xa5 BLACK DOWN-POINTING TRIANGLE + /x81/xa6 REFERENCE MARK + /x81/xa7 POSTAL MARK + /x81/xa8 RIGHTWARDS ARROW + /x81/xa9 LEFTWARDS ARROW + /x81/xaa UPWARDS ARROW + /x81/xab DOWNWARDS ARROW + /x81/xac GETA MARK + /x81/xb8 ELEMENT OF + /x81/xb9 CONTAINS AS MEMBER + /x81/xba SUBSET OF OR EQUAL TO + /x81/xbb SUPERSET OF OR EQUAL TO + /x81/xbc SUBSET OF + /x81/xbd SUPERSET OF + /x81/xbe UNION + /x81/xbf INTERSECTION + /x81/xc8 LOGICAL AND + /x81/xc9 LOGICAL OR + /x81/xca FULLWIDTH NOT SIGN + /x81/xcb RIGHTWARDS DOUBLE ARROW + /x81/xcc LEFT RIGHT DOUBLE ARROW + /x81/xcd FOR ALL + /x81/xce THERE EXISTS + /x81/xda ANGLE + /x81/xdb UP TACK + /x81/xdc ARC + /x81/xdd PARTIAL DIFFERENTIAL + /x81/xde NABLA + /x81/xdf IDENTICAL TO + /x81/xe0 APPROXIMATELY EQUAL TO OR THE IMAGE OF + /x81/xe1 MUCH LESS-THAN + /x81/xe2 MUCH GREATER-THAN + /x81/xe3 SQUARE ROOT + /x81/xe4 REVERSED TILDE + /x81/xe5 PROPORTIONAL TO + /x81/xe6 BECAUSE + /x81/xe7 INTEGRAL + /x81/xe8 DOUBLE INTEGRAL + /x81/xf0 ANGSTROM SIGN + /x81/xf1 PER MILLE SIGN + /x81/xf2 MUSIC SHARP SIGN + /x81/xf3 MUSIC FLAT SIGN + /x81/xf4 EIGHTH NOTE + /x81/xf5 DAGGER + /x81/xf6 DOUBLE DAGGER + /x81/xf7 PILCROW SIGN + /x81/xfc LARGE CIRCLE + /x82/x4f FULLWIDTH DIGIT ZERO + /x82/x50 FULLWIDTH DIGIT ONE + /x82/x51 FULLWIDTH DIGIT TWO + /x82/x52 FULLWIDTH DIGIT THREE + /x82/x53 FULLWIDTH DIGIT FOUR + /x82/x54 FULLWIDTH DIGIT FIVE + /x82/x55 FULLWIDTH DIGIT SIX + /x82/x56 FULLWIDTH DIGIT SEVEN + /x82/x57 FULLWIDTH DIGIT EIGHT + /x82/x58 FULLWIDTH DIGIT NINE + /x82/x60 FULLWIDTH LATIN CAPITAL LETTER A + /x82/x61 FULLWIDTH LATIN CAPITAL LETTER B + /x82/x62 FULLWIDTH LATIN CAPITAL LETTER C + /x82/x63 FULLWIDTH LATIN CAPITAL LETTER D + /x82/x64 FULLWIDTH LATIN CAPITAL LETTER E + /x82/x65 FULLWIDTH LATIN CAPITAL LETTER F + /x82/x66 FULLWIDTH LATIN CAPITAL LETTER G + /x82/x67 FULLWIDTH LATIN CAPITAL LETTER H + /x82/x68 FULLWIDTH LATIN CAPITAL LETTER I + /x82/x69 FULLWIDTH LATIN CAPITAL LETTER J + /x82/x6a FULLWIDTH LATIN CAPITAL LETTER K + /x82/x6b FULLWIDTH LATIN CAPITAL LETTER L + /x82/x6c FULLWIDTH LATIN CAPITAL LETTER M + /x82/x6d FULLWIDTH LATIN CAPITAL LETTER N + /x82/x6e FULLWIDTH LATIN CAPITAL LETTER O + /x82/x6f FULLWIDTH LATIN CAPITAL LETTER P + /x82/x70 FULLWIDTH LATIN CAPITAL LETTER Q + /x82/x71 FULLWIDTH LATIN CAPITAL LETTER R + /x82/x72 FULLWIDTH LATIN CAPITAL LETTER S + /x82/x73 FULLWIDTH LATIN CAPITAL LETTER T + /x82/x74 FULLWIDTH LATIN CAPITAL LETTER U + /x82/x75 FULLWIDTH LATIN CAPITAL LETTER V + /x82/x76 FULLWIDTH LATIN CAPITAL LETTER W + /x82/x77 FULLWIDTH LATIN CAPITAL LETTER X + /x82/x78 FULLWIDTH LATIN CAPITAL LETTER Y + /x82/x79 FULLWIDTH LATIN CAPITAL LETTER Z + /x82/x81 FULLWIDTH LATIN SMALL LETTER A + /x82/x82 FULLWIDTH LATIN SMALL LETTER B + /x82/x83 FULLWIDTH LATIN SMALL LETTER C + /x82/x84 FULLWIDTH LATIN SMALL LETTER D + /x82/x85 FULLWIDTH LATIN SMALL LETTER E + /x82/x86 FULLWIDTH LATIN SMALL LETTER F + /x82/x87 FULLWIDTH LATIN SMALL LETTER G + /x82/x88 FULLWIDTH LATIN SMALL LETTER H + /x82/x89 FULLWIDTH LATIN SMALL LETTER I + /x82/x8a FULLWIDTH LATIN SMALL LETTER J + /x82/x8b FULLWIDTH LATIN SMALL LETTER K + /x82/x8c FULLWIDTH LATIN SMALL LETTER L + /x82/x8d FULLWIDTH LATIN SMALL LETTER M + /x82/x8e FULLWIDTH LATIN SMALL LETTER N + /x82/x8f FULLWIDTH LATIN SMALL LETTER O + /x82/x90 FULLWIDTH LATIN SMALL LETTER P + /x82/x91 FULLWIDTH LATIN SMALL LETTER Q + /x82/x92 FULLWIDTH LATIN SMALL LETTER R + /x82/x93 FULLWIDTH LATIN SMALL LETTER S + /x82/x94 FULLWIDTH LATIN SMALL LETTER T + /x82/x95 FULLWIDTH LATIN SMALL LETTER U + /x82/x96 FULLWIDTH LATIN SMALL LETTER V + /x82/x97 FULLWIDTH LATIN SMALL LETTER W + /x82/x98 FULLWIDTH LATIN SMALL LETTER X + /x82/x99 FULLWIDTH LATIN SMALL LETTER Y + /x82/x9a FULLWIDTH LATIN SMALL LETTER Z + /x82/x9f HIRAGANA LETTER SMALL A + /x82/xa0 HIRAGANA LETTER A + /x82/xa1 HIRAGANA LETTER SMALL I + /x82/xa2 HIRAGANA LETTER I + /x82/xa3 HIRAGANA LETTER SMALL U + /x82/xa4 HIRAGANA LETTER U + /x82/xa5 HIRAGANA LETTER SMALL E + /x82/xa6 HIRAGANA LETTER E + /x82/xa7 HIRAGANA LETTER SMALL O + /x82/xa8 HIRAGANA LETTER O + /x82/xa9 HIRAGANA LETTER KA + /x82/xaa HIRAGANA LETTER GA + /x82/xab HIRAGANA LETTER KI + /x82/xac HIRAGANA LETTER GI + /x82/xad HIRAGANA LETTER KU + /x82/xae HIRAGANA LETTER GU + /x82/xaf HIRAGANA LETTER KE + /x82/xb0 HIRAGANA LETTER GE + /x82/xb1 HIRAGANA LETTER KO + /x82/xb2 HIRAGANA LETTER GO + /x82/xb3 HIRAGANA LETTER SA + /x82/xb4 HIRAGANA LETTER ZA + /x82/xb5 HIRAGANA LETTER SI + /x82/xb6 HIRAGANA LETTER ZI + /x82/xb7 HIRAGANA LETTER SU + /x82/xb8 HIRAGANA LETTER ZU + /x82/xb9 HIRAGANA LETTER SE + /x82/xba HIRAGANA LETTER ZE + /x82/xbb HIRAGANA LETTER SO + /x82/xbc HIRAGANA LETTER ZO + /x82/xbd HIRAGANA LETTER TA + /x82/xbe HIRAGANA LETTER DA + /x82/xbf HIRAGANA LETTER TI + /x82/xc0 HIRAGANA LETTER DI + /x82/xc1 HIRAGANA LETTER SMALL TU + /x82/xc2 HIRAGANA LETTER TU + /x82/xc3 HIRAGANA LETTER DU + /x82/xc4 HIRAGANA LETTER TE + /x82/xc5 HIRAGANA LETTER DE + /x82/xc6 HIRAGANA LETTER TO + /x82/xc7 HIRAGANA LETTER DO + /x82/xc8 HIRAGANA LETTER NA + /x82/xc9 HIRAGANA LETTER NI + /x82/xca HIRAGANA LETTER NU + /x82/xcb HIRAGANA LETTER NE + /x82/xcc HIRAGANA LETTER NO + /x82/xcd HIRAGANA LETTER HA + /x82/xce HIRAGANA LETTER BA + /x82/xcf HIRAGANA LETTER PA + /x82/xd0 HIRAGANA LETTER HI + /x82/xd1 HIRAGANA LETTER BI + /x82/xd2 HIRAGANA LETTER PI + /x82/xd3 HIRAGANA LETTER HU + /x82/xd4 HIRAGANA LETTER BU + /x82/xd5 HIRAGANA LETTER PU + /x82/xd6 HIRAGANA LETTER HE + /x82/xd7 HIRAGANA LETTER BE + /x82/xd8 HIRAGANA LETTER PE + /x82/xd9 HIRAGANA LETTER HO + /x82/xda HIRAGANA LETTER BO + /x82/xdb HIRAGANA LETTER PO + /x82/xdc HIRAGANA LETTER MA + /x82/xdd HIRAGANA LETTER MI + /x82/xde HIRAGANA LETTER MU + /x82/xdf HIRAGANA LETTER ME + /x82/xe0 HIRAGANA LETTER MO + /x82/xe1 HIRAGANA LETTER SMALL YA + /x82/xe2 HIRAGANA LETTER YA + /x82/xe3 HIRAGANA LETTER SMALL YU + /x82/xe4 HIRAGANA LETTER YU + /x82/xe5 HIRAGANA LETTER SMALL YO + /x82/xe6 HIRAGANA LETTER YO + /x82/xe7 HIRAGANA LETTER RA + /x82/xe8 HIRAGANA LETTER RI + /x82/xe9 HIRAGANA LETTER RU + /x82/xea HIRAGANA LETTER RE + /x82/xeb HIRAGANA LETTER RO + /x82/xec HIRAGANA LETTER SMALL WA + /x82/xed HIRAGANA LETTER WA + /x82/xee HIRAGANA LETTER WI + /x82/xef HIRAGANA LETTER WE + /x82/xf0 HIRAGANA LETTER WO + /x82/xf1 HIRAGANA LETTER N + /x83/x40 KATAKANA LETTER SMALL A + /x83/x41 KATAKANA LETTER A + /x83/x42 KATAKANA LETTER SMALL I + /x83/x43 KATAKANA LETTER I + /x83/x44 KATAKANA LETTER SMALL U + /x83/x45 KATAKANA LETTER U + /x83/x46 KATAKANA LETTER SMALL E + /x83/x47 KATAKANA LETTER E + /x83/x48 KATAKANA LETTER SMALL O + /x83/x49 KATAKANA LETTER O + /x83/x4a KATAKANA LETTER KA + /x83/x4b KATAKANA LETTER GA + /x83/x4c KATAKANA LETTER KI + /x83/x4d KATAKANA LETTER GI + /x83/x4e KATAKANA LETTER KU + /x83/x4f KATAKANA LETTER GU + /x83/x50 KATAKANA LETTER KE + /x83/x51 KATAKANA LETTER GE + /x83/x52 KATAKANA LETTER KO + /x83/x53 KATAKANA LETTER GO + /x83/x54 KATAKANA LETTER SA + /x83/x55 KATAKANA LETTER ZA + /x83/x56 KATAKANA LETTER SI + /x83/x57 KATAKANA LETTER ZI + /x83/x58 KATAKANA LETTER SU + /x83/x59 KATAKANA LETTER ZU + /x83/x5a KATAKANA LETTER SE + /x83/x5b KATAKANA LETTER ZE + /x83/x5c KATAKANA LETTER SO + /x83/x5d KATAKANA LETTER ZO + /x83/x5e KATAKANA LETTER TA + /x83/x5f KATAKANA LETTER DA + /x83/x60 KATAKANA LETTER TI + /x83/x61 KATAKANA LETTER DI + /x83/x62 KATAKANA LETTER SMALL TU + /x83/x63 KATAKANA LETTER TU + /x83/x64 KATAKANA LETTER DU + /x83/x65 KATAKANA LETTER TE + /x83/x66 KATAKANA LETTER DE + /x83/x67 KATAKANA LETTER TO + /x83/x68 KATAKANA LETTER DO + /x83/x69 KATAKANA LETTER NA + /x83/x6a KATAKANA LETTER NI + /x83/x6b KATAKANA LETTER NU + /x83/x6c KATAKANA LETTER NE + /x83/x6d KATAKANA LETTER NO + /x83/x6e KATAKANA LETTER HA + /x83/x6f KATAKANA LETTER BA + /x83/x70 KATAKANA LETTER PA + /x83/x71 KATAKANA LETTER HI + /x83/x72 KATAKANA LETTER BI + /x83/x73 KATAKANA LETTER PI + /x83/x74 KATAKANA LETTER HU + /x83/x75 KATAKANA LETTER BU + /x83/x76 KATAKANA LETTER PU + /x83/x77 KATAKANA LETTER HE + /x83/x78 KATAKANA LETTER BE + /x83/x79 KATAKANA LETTER PE + /x83/x7a KATAKANA LETTER HO + /x83/x7b KATAKANA LETTER BO + /x83/x7c KATAKANA LETTER PO + /x83/x7d KATAKANA LETTER MA + /x83/x7e KATAKANA LETTER MI + /x83/x80 KATAKANA LETTER MU + /x83/x81 KATAKANA LETTER ME + /x83/x82 KATAKANA LETTER MO + /x83/x83 KATAKANA LETTER SMALL YA + /x83/x84 KATAKANA LETTER YA + /x83/x85 KATAKANA LETTER SMALL YU + /x83/x86 KATAKANA LETTER YU + /x83/x87 KATAKANA LETTER SMALL YO + /x83/x88 KATAKANA LETTER YO + /x83/x89 KATAKANA LETTER RA + /x83/x8a KATAKANA LETTER RI + /x83/x8b KATAKANA LETTER RU + /x83/x8c KATAKANA LETTER RE + /x83/x8d KATAKANA LETTER RO + /x83/x8e KATAKANA LETTER SMALL WA + /x83/x8f KATAKANA LETTER WA + /x83/x90 KATAKANA LETTER WI + /x83/x91 KATAKANA LETTER WE + /x83/x92 KATAKANA LETTER WO + /x83/x93 KATAKANA LETTER N + /x83/x94 KATAKANA LETTER VU + /x83/x95 KATAKANA LETTER SMALL KA + /x83/x96 KATAKANA LETTER SMALL KE + /x83/x9f GREEK CAPITAL LETTER ALPHA + /x83/xa0 GREEK CAPITAL LETTER BETA + /x83/xa1 GREEK CAPITAL LETTER GAMMA + /x83/xa2 GREEK CAPITAL LETTER DELTA + /x83/xa3 GREEK CAPITAL LETTER EPSILON + /x83/xa4 GREEK CAPITAL LETTER ZETA + /x83/xa5 GREEK CAPITAL LETTER ETA + /x83/xa6 GREEK CAPITAL LETTER THETA + /x83/xa7 GREEK CAPITAL LETTER IOTA + /x83/xa8 GREEK CAPITAL LETTER KAPPA + /x83/xa9 GREEK CAPITAL LETTER LAMDA + /x83/xaa GREEK CAPITAL LETTER MU + /x83/xab GREEK CAPITAL LETTER NU + /x83/xac GREEK CAPITAL LETTER XI + /x83/xad GREEK CAPITAL LETTER OMICRON + /x83/xae GREEK CAPITAL LETTER PI + /x83/xaf GREEK CAPITAL LETTER RHO + /x83/xb0 GREEK CAPITAL LETTER SIGMA + /x83/xb1 GREEK CAPITAL LETTER TAU + /x83/xb2 GREEK CAPITAL LETTER UPSILON + /x83/xb3 GREEK CAPITAL LETTER PHI + /x83/xb4 GREEK CAPITAL LETTER CHI + /x83/xb5 GREEK CAPITAL LETTER PSI + /x83/xb6 GREEK CAPITAL LETTER OMEGA + /x83/xbf GREEK SMALL LETTER ALPHA + /x83/xc0 GREEK SMALL LETTER BETA + /x83/xc1 GREEK SMALL LETTER GAMMA + /x83/xc2 GREEK SMALL LETTER DELTA + /x83/xc3 GREEK SMALL LETTER EPSILON + /x83/xc4 GREEK SMALL LETTER ZETA + /x83/xc5 GREEK SMALL LETTER ETA + /x83/xc6 GREEK SMALL LETTER THETA + /x83/xc7 GREEK SMALL LETTER IOTA + /x83/xc8 GREEK SMALL LETTER KAPPA + /x83/xc9 GREEK SMALL LETTER LAMDA + /x83/xca GREEK SMALL LETTER MU + /x83/xcb GREEK SMALL LETTER NU + /x83/xcc GREEK SMALL LETTER XI + /x83/xcd GREEK SMALL LETTER OMICRON + /x83/xce GREEK SMALL LETTER PI + /x83/xcf GREEK SMALL LETTER RHO + /x83/xd0 GREEK SMALL LETTER SIGMA + /x83/xd1 GREEK SMALL LETTER TAU + /x83/xd2 GREEK SMALL LETTER UPSILON + /x83/xd3 GREEK SMALL LETTER PHI + /x83/xd4 GREEK SMALL LETTER CHI + /x83/xd5 GREEK SMALL LETTER PSI + /x83/xd6 GREEK SMALL LETTER OMEGA + /x84/x40 CYRILLIC CAPITAL LETTER A + /x84/x41 CYRILLIC CAPITAL LETTER BE + /x84/x42 CYRILLIC CAPITAL LETTER VE + /x84/x43 CYRILLIC CAPITAL LETTER GHE + /x84/x44 CYRILLIC CAPITAL LETTER DE + /x84/x45 CYRILLIC CAPITAL LETTER IE + /x84/x46 CYRILLIC CAPITAL LETTER IO + /x84/x47 CYRILLIC CAPITAL LETTER ZHE + /x84/x48 CYRILLIC CAPITAL LETTER ZE + /x84/x49 CYRILLIC CAPITAL LETTER I + /x84/x4a CYRILLIC CAPITAL LETTER SHORT I + /x84/x4b CYRILLIC CAPITAL LETTER KA + /x84/x4c CYRILLIC CAPITAL LETTER EL + /x84/x4d CYRILLIC CAPITAL LETTER EM + /x84/x4e CYRILLIC CAPITAL LETTER EN + /x84/x4f CYRILLIC CAPITAL LETTER O + /x84/x50 CYRILLIC CAPITAL LETTER PE + /x84/x51 CYRILLIC CAPITAL LETTER ER + /x84/x52 CYRILLIC CAPITAL LETTER ES + /x84/x53 CYRILLIC CAPITAL LETTER TE + /x84/x54 CYRILLIC CAPITAL LETTER U + /x84/x55 CYRILLIC CAPITAL LETTER EF + /x84/x56 CYRILLIC CAPITAL LETTER HA + /x84/x57 CYRILLIC CAPITAL LETTER TSE + /x84/x58 CYRILLIC CAPITAL LETTER CHE + /x84/x59 CYRILLIC CAPITAL LETTER SHA + /x84/x5a CYRILLIC CAPITAL LETTER SHCHA + /x84/x5b CYRILLIC CAPITAL LETTER HARD SIGN + /x84/x5c CYRILLIC CAPITAL LETTER YERU + /x84/x5d CYRILLIC CAPITAL LETTER SOFT SIGN + /x84/x5e CYRILLIC CAPITAL LETTER E + /x84/x5f CYRILLIC CAPITAL LETTER YU + /x84/x60 CYRILLIC CAPITAL LETTER YA + /x84/x70 CYRILLIC SMALL LETTER A + /x84/x71 CYRILLIC SMALL LETTER BE + /x84/x72 CYRILLIC SMALL LETTER VE + /x84/x73 CYRILLIC SMALL LETTER GHE + /x84/x74 CYRILLIC SMALL LETTER DE + /x84/x75 CYRILLIC SMALL LETTER IE + /x84/x76 CYRILLIC SMALL LETTER IO + /x84/x77 CYRILLIC SMALL LETTER ZHE + /x84/x78 CYRILLIC SMALL LETTER ZE + /x84/x79 CYRILLIC SMALL LETTER I + /x84/x7a CYRILLIC SMALL LETTER SHORT I + /x84/x7b CYRILLIC SMALL LETTER KA + /x84/x7c CYRILLIC SMALL LETTER EL + /x84/x7d CYRILLIC SMALL LETTER EM + /x84/x7e CYRILLIC SMALL LETTER EN + /x84/x80 CYRILLIC SMALL LETTER O + /x84/x81 CYRILLIC SMALL LETTER PE + /x84/x82 CYRILLIC SMALL LETTER ER + /x84/x83 CYRILLIC SMALL LETTER ES + /x84/x84 CYRILLIC SMALL LETTER TE + /x84/x85 CYRILLIC SMALL LETTER U + /x84/x86 CYRILLIC SMALL LETTER EF + /x84/x87 CYRILLIC SMALL LETTER HA + /x84/x88 CYRILLIC SMALL LETTER TSE + /x84/x89 CYRILLIC SMALL LETTER CHE + /x84/x8a CYRILLIC SMALL LETTER SHA + /x84/x8b CYRILLIC SMALL LETTER SHCHA + /x84/x8c CYRILLIC SMALL LETTER HARD SIGN + /x84/x8d CYRILLIC SMALL LETTER YERU + /x84/x8e CYRILLIC SMALL LETTER SOFT SIGN + /x84/x8f CYRILLIC SMALL LETTER E + /x84/x90 CYRILLIC SMALL LETTER YU + /x84/x91 CYRILLIC SMALL LETTER YA + /x84/x9f BOX DRAWINGS LIGHT HORIZONTAL + /x84/xa0 BOX DRAWINGS LIGHT VERTICAL + /x84/xa1 BOX DRAWINGS LIGHT DOWN AND RIGHT + /x84/xa2 BOX DRAWINGS LIGHT DOWN AND LEFT + /x84/xa3 BOX DRAWINGS LIGHT UP AND LEFT + /x84/xa4 BOX DRAWINGS LIGHT UP AND RIGHT + /x84/xa5 BOX DRAWINGS LIGHT VERTICAL AND RIGHT + /x84/xa6 BOX DRAWINGS LIGHT DOWN AND HORIZONTAL + /x84/xa7 BOX DRAWINGS LIGHT VERTICAL AND LEFT + /x84/xa8 BOX DRAWINGS LIGHT UP AND HORIZONTAL + /x84/xa9 BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL + /x84/xaa BOX DRAWINGS HEAVY HORIZONTAL + /x84/xab BOX DRAWINGS HEAVY VERTICAL + /x84/xac BOX DRAWINGS HEAVY DOWN AND RIGHT + /x84/xad BOX DRAWINGS HEAVY DOWN AND LEFT + /x84/xae BOX DRAWINGS HEAVY UP AND LEFT + /x84/xaf BOX DRAWINGS HEAVY UP AND RIGHT + /x84/xb0 BOX DRAWINGS HEAVY VERTICAL AND RIGHT + /x84/xb1 BOX DRAWINGS HEAVY DOWN AND HORIZONTAL + /x84/xb2 BOX DRAWINGS HEAVY VERTICAL AND LEFT + /x84/xb3 BOX DRAWINGS HEAVY UP AND HORIZONTAL + /x84/xb4 BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL + /x84/xb5 BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT + /x84/xb6 BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY + /x84/xb7 BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT + /x84/xb8 BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY + /x84/xb9 BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY + /x84/xba BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY + /x84/xbb BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT + /x84/xbc BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY + /x84/xbd BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT + /x84/xbe BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT + /x87/x40 CIRCLED DIGIT ONE + /x87/x41 CIRCLED DIGIT TWO + /x87/x42 CIRCLED DIGIT THREE + /x87/x43 CIRCLED DIGIT FOUR + /x87/x44 CIRCLED DIGIT FIVE + /x87/x45 CIRCLED DIGIT SIX + /x87/x46 CIRCLED DIGIT SEVEN + /x87/x47 CIRCLED DIGIT EIGHT + /x87/x48 CIRCLED DIGIT NINE + /x87/x49 CIRCLED NUMBER TEN + /x87/x4a CIRCLED NUMBER ELEVEN + /x87/x4b CIRCLED NUMBER TWELVE + /x87/x4c CIRCLED NUMBER THIRTEEN + /x87/x4d CIRCLED NUMBER FOURTEEN + /x87/x4e CIRCLED NUMBER FIFTEEN + /x87/x4f CIRCLED NUMBER SIXTEEN + /x87/x50 CIRCLED NUMBER SEVENTEEN + /x87/x51 CIRCLED NUMBER EIGHTEEN + /x87/x52 CIRCLED NUMBER NINETEEN + /x87/x53 CIRCLED NUMBER TWENTY + /x87/x54 ROMAN NUMERAL ONE + /x87/x55 ROMAN NUMERAL TWO + /x87/x56 ROMAN NUMERAL THREE + /x87/x57 ROMAN NUMERAL FOUR + /x87/x58 ROMAN NUMERAL FIVE + /x87/x59 ROMAN NUMERAL SIX + /x87/x5a ROMAN NUMERAL SEVEN + /x87/x5b ROMAN NUMERAL EIGHT + /x87/x5c ROMAN NUMERAL NINE + /x87/x5d ROMAN NUMERAL TEN + /x87/x5f SQUARE MIRI + /x87/x60 SQUARE KIRO + /x87/x61 SQUARE SENTI + /x87/x62 SQUARE MEETORU + /x87/x63 SQUARE GURAMU + /x87/x64 SQUARE TON + /x87/x65 SQUARE AARU + /x87/x66 SQUARE HEKUTAARU + /x87/x67 SQUARE RITTORU + /x87/x68 SQUARE WATTO + /x87/x69 SQUARE KARORII + /x87/x6a SQUARE DORU + /x87/x6b SQUARE SENTO + /x87/x6c SQUARE PAASENTO + /x87/x6d SQUARE MIRIBAARU + /x87/x6e SQUARE PEEZI + /x87/x6f SQUARE MM + /x87/x70 SQUARE CM + /x87/x71 SQUARE KM + /x87/x72 SQUARE MG + /x87/x73 SQUARE KG + /x87/x74 SQUARE CC + /x87/x75 SQUARE M SQUARED + /x87/x7e SQUARE ERA NAME HEISEI + /x87/x80 REVERSED DOUBLE PRIME QUOTATION MARK + /x87/x81 LOW DOUBLE PRIME QUOTATION MARK + /x87/x82 NUMERO SIGN + /x87/x83 SQUARE KK + /x87/x84 TELEPHONE SIGN + /x87/x85 CIRCLED IDEOGRAPH HIGH + /x87/x86 CIRCLED IDEOGRAPH CENTRE + /x87/x87 CIRCLED IDEOGRAPH LOW + /x87/x88 CIRCLED IDEOGRAPH LEFT + /x87/x89 CIRCLED IDEOGRAPH RIGHT + /x87/x8a PARENTHESIZED IDEOGRAPH STOCK + /x87/x8b PARENTHESIZED IDEOGRAPH HAVE + /x87/x8c PARENTHESIZED IDEOGRAPH REPRESENT + /x87/x8d SQUARE ERA NAME MEIZI + /x87/x8e SQUARE ERA NAME TAISYOU + /x87/x8f SQUARE ERA NAME SYOUWA +%IRREVERSIBLE% /x87/x90 APPROXIMATELY EQUAL TO OR THE IMAGE OF +%IRREVERSIBLE% /x87/x91 IDENTICAL TO +%IRREVERSIBLE% /x87/x92 INTEGRAL + /x87/x93 CONTOUR INTEGRAL + /x87/x94 N-ARY SUMMATION +%IRREVERSIBLE% /x87/x95 SQUARE ROOT +%IRREVERSIBLE% /x87/x96 UP TACK +%IRREVERSIBLE% /x87/x97 ANGLE + /x87/x98 RIGHT ANGLE + /x87/x99 RIGHT TRIANGLE +%IRREVERSIBLE% /x87/x9a BECAUSE +%IRREVERSIBLE% /x87/x9b INTERSECTION +%IRREVERSIBLE% /x87/x9c UNION + /x88/x9f + /x88/xa0 + /x88/xa1 + /x88/xa2 + /x88/xa3 + /x88/xa4 + /x88/xa5 + /x88/xa6 + /x88/xa7 + /x88/xa8 + /x88/xa9 + /x88/xaa + /x88/xab + /x88/xac + /x88/xad + /x88/xae + /x88/xaf + /x88/xb0 + /x88/xb1 + /x88/xb2 + /x88/xb3 + /x88/xb4 + /x88/xb5 + /x88/xb6 + /x88/xb7 + /x88/xb8 + /x88/xb9 + /x88/xba + /x88/xbb + /x88/xbc + /x88/xbd + /x88/xbe + /x88/xbf + /x88/xc0 + /x88/xc1 + /x88/xc2 + /x88/xc3 + /x88/xc4 + /x88/xc5 + /x88/xc6 + /x88/xc7 + /x88/xc8 + /x88/xc9 + /x88/xca + /x88/xcb + /x88/xcc + /x88/xcd + /x88/xce + /x88/xcf + /x88/xd0 + /x88/xd1 + /x88/xd2 + /x88/xd3 + /x88/xd4 + /x88/xd5 + /x88/xd6 + /x88/xd7 + /x88/xd8 + /x88/xd9 + /x88/xda + /x88/xdb + /x88/xdc + /x88/xdd + /x88/xde + /x88/xdf + /x88/xe0 + /x88/xe1 + /x88/xe2 + /x88/xe3 + /x88/xe4 + /x88/xe5 + /x88/xe6 + /x88/xe7 + /x88/xe8 + /x88/xe9 + /x88/xea + /x88/xeb + /x88/xec + /x88/xed + /x88/xee + /x88/xef + /x88/xf0 + /x88/xf1 + /x88/xf2 + /x88/xf3 + /x88/xf4 + /x88/xf5 + /x88/xf6 + /x88/xf7 + /x88/xf8 + /x88/xf9 + /x88/xfa + /x88/xfb + /x88/xfc + /x89/x40 + /x89/x41 + /x89/x42 + /x89/x43 + /x89/x44 + /x89/x45 + /x89/x46 + /x89/x47 + /x89/x48 + /x89/x49 + /x89/x4a + /x89/x4b + /x89/x4c + /x89/x4d + /x89/x4e + /x89/x4f + /x89/x50 + /x89/x51 + /x89/x52 + /x89/x53 + /x89/x54 + /x89/x55 + /x89/x56 + /x89/x57 + /x89/x58 + /x89/x59 + /x89/x5a + /x89/x5b + /x89/x5c + /x89/x5d + /x89/x5e + /x89/x5f + /x89/x60 + /x89/x61 + /x89/x62 + /x89/x63 + /x89/x64 + /x89/x65 + /x89/x66 + /x89/x67 + /x89/x68 + /x89/x69 + /x89/x6a + /x89/x6b + /x89/x6c + /x89/x6d + /x89/x6e + /x89/x6f + /x89/x70 + /x89/x71 + /x89/x72 + /x89/x73 + /x89/x74 + /x89/x75 + /x89/x76 + /x89/x77 + /x89/x78 + /x89/x79 + /x89/x7a + /x89/x7b + /x89/x7c + /x89/x7d + /x89/x7e + /x89/x80 + /x89/x81 + /x89/x82 + /x89/x83 + /x89/x84 + /x89/x85 + /x89/x86 + /x89/x87 + /x89/x88 + /x89/x89 + /x89/x8a + /x89/x8b + /x89/x8c + /x89/x8d + /x89/x8e + /x89/x8f + /x89/x90 + /x89/x91 + /x89/x92 + /x89/x93 + /x89/x94 + /x89/x95 + /x89/x96 + /x89/x97 + /x89/x98 + /x89/x99 + /x89/x9a + /x89/x9b + /x89/x9c + /x89/x9d + /x89/x9e + /x89/x9f + /x89/xa0 + /x89/xa1 + /x89/xa2 + /x89/xa3 + /x89/xa4 + /x89/xa5 + /x89/xa6 + /x89/xa7 + /x89/xa8 + /x89/xa9 + /x89/xaa + /x89/xab + /x89/xac + /x89/xad + /x89/xae + /x89/xaf + /x89/xb0 + /x89/xb1 + /x89/xb2 + /x89/xb3 + /x89/xb4 + /x89/xb5 + /x89/xb6 + /x89/xb7 + /x89/xb8 + /x89/xb9 + /x89/xba + /x89/xbb + /x89/xbc + /x89/xbd + /x89/xbe + /x89/xbf + /x89/xc0 + /x89/xc1 + /x89/xc2 + /x89/xc3 + /x89/xc4 + /x89/xc5 + /x89/xc6 + /x89/xc7 + /x89/xc8 + /x89/xc9 + /x89/xca + /x89/xcb + /x89/xcc + /x89/xcd + /x89/xce + /x89/xcf + /x89/xd0 + /x89/xd1 + /x89/xd2 + /x89/xd3 + /x89/xd4 + /x89/xd5 + /x89/xd6 + /x89/xd7 + /x89/xd8 + /x89/xd9 + /x89/xda + /x89/xdb + /x89/xdc + /x89/xdd + /x89/xde + /x89/xdf + /x89/xe0 + /x89/xe1 + /x89/xe2 + /x89/xe3 + /x89/xe4 + /x89/xe5 + /x89/xe6 + /x89/xe7 + /x89/xe8 + /x89/xe9 + /x89/xea + /x89/xeb + /x89/xec + /x89/xed + /x89/xee + /x89/xef + /x89/xf0 + /x89/xf1 + /x89/xf2 + /x89/xf3 + /x89/xf4 + /x89/xf5 + /x89/xf6 + /x89/xf7 + /x89/xf8 + /x89/xf9 + /x89/xfa + /x89/xfb + /x89/xfc + /x8a/x40 + /x8a/x41 + /x8a/x42 + /x8a/x43 + /x8a/x44 + /x8a/x45 + /x8a/x46 + /x8a/x47 + /x8a/x48 + /x8a/x49 + /x8a/x4a + /x8a/x4b + /x8a/x4c + /x8a/x4d + /x8a/x4e + /x8a/x4f + /x8a/x50 + /x8a/x51 + /x8a/x52 + /x8a/x53 + /x8a/x54 + /x8a/x55 + /x8a/x56 + /x8a/x57 + /x8a/x58 + /x8a/x59 + /x8a/x5a + /x8a/x5b + /x8a/x5c + /x8a/x5d + /x8a/x5e + /x8a/x5f + /x8a/x60 + /x8a/x61 + /x8a/x62 + /x8a/x63 + /x8a/x64 + /x8a/x65 + /x8a/x66 + /x8a/x67 + /x8a/x68 + /x8a/x69 + /x8a/x6a + /x8a/x6b + /x8a/x6c + /x8a/x6d + /x8a/x6e + /x8a/x6f + /x8a/x70 + /x8a/x71 + /x8a/x72 + /x8a/x73 + /x8a/x74 + /x8a/x75 + /x8a/x76 + /x8a/x77 + /x8a/x78 + /x8a/x79 + /x8a/x7a + /x8a/x7b + /x8a/x7c + /x8a/x7d + /x8a/x7e + /x8a/x80 + /x8a/x81 + /x8a/x82 + /x8a/x83 + /x8a/x84 + /x8a/x85 + /x8a/x86 + /x8a/x87 + /x8a/x88 + /x8a/x89 + /x8a/x8a + /x8a/x8b + /x8a/x8c + /x8a/x8d + /x8a/x8e + /x8a/x8f + /x8a/x90 + /x8a/x91 + /x8a/x92 + /x8a/x93 + /x8a/x94 + /x8a/x95 + /x8a/x96 + /x8a/x97 + /x8a/x98 + /x8a/x99 + /x8a/x9a + /x8a/x9b + /x8a/x9c + /x8a/x9d + /x8a/x9e + /x8a/x9f + /x8a/xa0 + /x8a/xa1 + /x8a/xa2 + /x8a/xa3 + /x8a/xa4 + /x8a/xa5 + /x8a/xa6 + /x8a/xa7 + /x8a/xa8 + /x8a/xa9 + /x8a/xaa + /x8a/xab + /x8a/xac + /x8a/xad + /x8a/xae + /x8a/xaf + /x8a/xb0 + /x8a/xb1 + /x8a/xb2 + /x8a/xb3 + /x8a/xb4 + /x8a/xb5 + /x8a/xb6 + /x8a/xb7 + /x8a/xb8 + /x8a/xb9 + /x8a/xba + /x8a/xbb + /x8a/xbc + /x8a/xbd + /x8a/xbe + /x8a/xbf + /x8a/xc0 + /x8a/xc1 + /x8a/xc2 + /x8a/xc3 + /x8a/xc4 + /x8a/xc5 + /x8a/xc6 + /x8a/xc7 + /x8a/xc8 + /x8a/xc9 + /x8a/xca + /x8a/xcb + /x8a/xcc + /x8a/xcd + /x8a/xce + /x8a/xcf + /x8a/xd0 + /x8a/xd1 + /x8a/xd2 + /x8a/xd3 + /x8a/xd4 + /x8a/xd5 + /x8a/xd6 + /x8a/xd7 + /x8a/xd8 + /x8a/xd9 + /x8a/xda + /x8a/xdb + /x8a/xdc + /x8a/xdd + /x8a/xde + /x8a/xdf + /x8a/xe0 + /x8a/xe1 + /x8a/xe2 + /x8a/xe3 + /x8a/xe4 + /x8a/xe5 + /x8a/xe6 + /x8a/xe7 + /x8a/xe8 + /x8a/xe9 + /x8a/xea + /x8a/xeb + /x8a/xec + /x8a/xed + /x8a/xee + /x8a/xef + /x8a/xf0 + /x8a/xf1 + /x8a/xf2 + /x8a/xf3 + /x8a/xf4 + /x8a/xf5 + /x8a/xf6 + /x8a/xf7 + /x8a/xf8 + /x8a/xf9 + /x8a/xfa + /x8a/xfb + /x8a/xfc + /x8b/x40 + /x8b/x41 + /x8b/x42 + /x8b/x43 + /x8b/x44 + /x8b/x45 + /x8b/x46 + /x8b/x47 + /x8b/x48 + /x8b/x49 + /x8b/x4a + /x8b/x4b + /x8b/x4c + /x8b/x4d + /x8b/x4e + /x8b/x4f + /x8b/x50 + /x8b/x51 + /x8b/x52 + /x8b/x53 + /x8b/x54 + /x8b/x55 + /x8b/x56 + /x8b/x57 + /x8b/x58 + /x8b/x59 + /x8b/x5a + /x8b/x5b + /x8b/x5c + /x8b/x5d + /x8b/x5e + /x8b/x5f + /x8b/x60 + /x8b/x61 + /x8b/x62 + /x8b/x63 + /x8b/x64 + /x8b/x65 + /x8b/x66 + /x8b/x67 + /x8b/x68 + /x8b/x69 + /x8b/x6a + /x8b/x6b + /x8b/x6c + /x8b/x6d + /x8b/x6e + /x8b/x6f + /x8b/x70 + /x8b/x71 + /x8b/x72 + /x8b/x73 + /x8b/x74 + /x8b/x75 + /x8b/x76 + /x8b/x77 + /x8b/x78 + /x8b/x79 + /x8b/x7a + /x8b/x7b + /x8b/x7c + /x8b/x7d + /x8b/x7e + /x8b/x80 + /x8b/x81 + /x8b/x82 + /x8b/x83 + /x8b/x84 + /x8b/x85 + /x8b/x86 + /x8b/x87 + /x8b/x88 + /x8b/x89 + /x8b/x8a + /x8b/x8b + /x8b/x8c + /x8b/x8d + /x8b/x8e + /x8b/x8f + /x8b/x90 + /x8b/x91 + /x8b/x92 + /x8b/x93 + /x8b/x94 + /x8b/x95 + /x8b/x96 + /x8b/x97 + /x8b/x98 + /x8b/x99 + /x8b/x9a + /x8b/x9b + /x8b/x9c + /x8b/x9d + /x8b/x9e + /x8b/x9f + /x8b/xa0 + /x8b/xa1 + /x8b/xa2 + /x8b/xa3 + /x8b/xa4 + /x8b/xa5 + /x8b/xa6 + /x8b/xa7 + /x8b/xa8 + /x8b/xa9 + /x8b/xaa + /x8b/xab + /x8b/xac + /x8b/xad + /x8b/xae + /x8b/xaf + /x8b/xb0 + /x8b/xb1 + /x8b/xb2 + /x8b/xb3 + /x8b/xb4 + /x8b/xb5 + /x8b/xb6 + /x8b/xb7 + /x8b/xb8 + /x8b/xb9 + /x8b/xba + /x8b/xbb + /x8b/xbc + /x8b/xbd + /x8b/xbe + /x8b/xbf + /x8b/xc0 + /x8b/xc1 + /x8b/xc2 + /x8b/xc3 + /x8b/xc4 + /x8b/xc5 + /x8b/xc6 + /x8b/xc7 + /x8b/xc8 + /x8b/xc9 + /x8b/xca + /x8b/xcb + /x8b/xcc + /x8b/xcd + /x8b/xce + /x8b/xcf + /x8b/xd0 + /x8b/xd1 + /x8b/xd2 + /x8b/xd3 + /x8b/xd4 + /x8b/xd5 + /x8b/xd6 + /x8b/xd7 + /x8b/xd8 + /x8b/xd9 + /x8b/xda + /x8b/xdb + /x8b/xdc + /x8b/xdd + /x8b/xde + /x8b/xdf + /x8b/xe0 + /x8b/xe1 + /x8b/xe2 + /x8b/xe3 + /x8b/xe4 + /x8b/xe5 + /x8b/xe6 + /x8b/xe7 + /x8b/xe8 + /x8b/xe9 + /x8b/xea + /x8b/xeb + /x8b/xec + /x8b/xed + /x8b/xee + /x8b/xef + /x8b/xf0 + /x8b/xf1 + /x8b/xf2 + /x8b/xf3 + /x8b/xf4 + /x8b/xf5 + /x8b/xf6 + /x8b/xf7 + /x8b/xf8 + /x8b/xf9 + /x8b/xfa + /x8b/xfb + /x8b/xfc + /x8c/x40 + /x8c/x41 + /x8c/x42 + /x8c/x43 + /x8c/x44 + /x8c/x45 + /x8c/x46 + /x8c/x47 + /x8c/x48 + /x8c/x49 + /x8c/x4a + /x8c/x4b + /x8c/x4c + /x8c/x4d + /x8c/x4e + /x8c/x4f + /x8c/x50 + /x8c/x51 + /x8c/x52 + /x8c/x53 + /x8c/x54 + /x8c/x55 + /x8c/x56 + /x8c/x57 + /x8c/x58 + /x8c/x59 + /x8c/x5a + /x8c/x5b + /x8c/x5c + /x8c/x5d + /x8c/x5e + /x8c/x5f + /x8c/x60 + /x8c/x61 + /x8c/x62 + /x8c/x63 + /x8c/x64 + /x8c/x65 + /x8c/x66 + /x8c/x67 + /x8c/x68 + /x8c/x69 + /x8c/x6a + /x8c/x6b + /x8c/x6c + /x8c/x6d + /x8c/x6e + /x8c/x6f + /x8c/x70 + /x8c/x71 + /x8c/x72 + /x8c/x73 + /x8c/x74 + /x8c/x75 + /x8c/x76 + /x8c/x77 + /x8c/x78 + /x8c/x79 + /x8c/x7a + /x8c/x7b + /x8c/x7c + /x8c/x7d + /x8c/x7e + /x8c/x80 + /x8c/x81 + /x8c/x82 + /x8c/x83 + /x8c/x84 + /x8c/x85 + /x8c/x86 + /x8c/x87 + /x8c/x88 + /x8c/x89 + /x8c/x8a + /x8c/x8b + /x8c/x8c + /x8c/x8d + /x8c/x8e + /x8c/x8f + /x8c/x90 + /x8c/x91 + /x8c/x92 + /x8c/x93 + /x8c/x94 + /x8c/x95 + /x8c/x96 + /x8c/x97 + /x8c/x98 + /x8c/x99 + /x8c/x9a + /x8c/x9b + /x8c/x9c + /x8c/x9d + /x8c/x9e + /x8c/x9f + /x8c/xa0 + /x8c/xa1 + /x8c/xa2 + /x8c/xa3 + /x8c/xa4 + /x8c/xa5 + /x8c/xa6 + /x8c/xa7 + /x8c/xa8 + /x8c/xa9 + /x8c/xaa + /x8c/xab + /x8c/xac + /x8c/xad + /x8c/xae + /x8c/xaf + /x8c/xb0 + /x8c/xb1 + /x8c/xb2 + /x8c/xb3 + /x8c/xb4 + /x8c/xb5 + /x8c/xb6 + /x8c/xb7 + /x8c/xb8 + /x8c/xb9 + /x8c/xba + /x8c/xbb + /x8c/xbc + /x8c/xbd + /x8c/xbe + /x8c/xbf + /x8c/xc0 + /x8c/xc1 + /x8c/xc2 + /x8c/xc3 + /x8c/xc4 + /x8c/xc5 + /x8c/xc6 + /x8c/xc7 + /x8c/xc8 + /x8c/xc9 + /x8c/xca + /x8c/xcb + /x8c/xcc + /x8c/xcd + /x8c/xce + /x8c/xcf + /x8c/xd0 + /x8c/xd1 + /x8c/xd2 + /x8c/xd3 + /x8c/xd4 + /x8c/xd5 + /x8c/xd6 + /x8c/xd7 + /x8c/xd8 + /x8c/xd9 + /x8c/xda + /x8c/xdb + /x8c/xdc + /x8c/xdd + /x8c/xde + /x8c/xdf + /x8c/xe0 + /x8c/xe1 + /x8c/xe2 + /x8c/xe3 + /x8c/xe4 + /x8c/xe5 + /x8c/xe6 + /x8c/xe7 + /x8c/xe8 + /x8c/xe9 + /x8c/xea + /x8c/xeb + /x8c/xec + /x8c/xed + /x8c/xee + /x8c/xef + /x8c/xf0 + /x8c/xf1 + /x8c/xf2 + /x8c/xf3 + /x8c/xf4 + /x8c/xf5 + /x8c/xf6 + /x8c/xf7 + /x8c/xf8 + /x8c/xf9 + /x8c/xfa + /x8c/xfb + /x8c/xfc + /x8d/x40 + /x8d/x41 + /x8d/x42 + /x8d/x43 + /x8d/x44 + /x8d/x45 + /x8d/x46 + /x8d/x47 + /x8d/x48 + /x8d/x49 + /x8d/x4a + /x8d/x4b + /x8d/x4c + /x8d/x4d + /x8d/x4e + /x8d/x4f + /x8d/x50 + /x8d/x51 + /x8d/x52 + /x8d/x53 + /x8d/x54 + /x8d/x55 + /x8d/x56 + /x8d/x57 + /x8d/x58 + /x8d/x59 + /x8d/x5a + /x8d/x5b + /x8d/x5c + /x8d/x5d + /x8d/x5e + /x8d/x5f + /x8d/x60 + /x8d/x61 + /x8d/x62 + /x8d/x63 + /x8d/x64 + /x8d/x65 + /x8d/x66 + /x8d/x67 + /x8d/x68 + /x8d/x69 + /x8d/x6a + /x8d/x6b + /x8d/x6c + /x8d/x6d + /x8d/x6e + /x8d/x6f + /x8d/x70 + /x8d/x71 + /x8d/x72 + /x8d/x73 + /x8d/x74 + /x8d/x75 + /x8d/x76 + /x8d/x77 + /x8d/x78 + /x8d/x79 + /x8d/x7a + /x8d/x7b + /x8d/x7c + /x8d/x7d + /x8d/x7e + /x8d/x80 + /x8d/x81 + /x8d/x82 + /x8d/x83 + /x8d/x84 + /x8d/x85 + /x8d/x86 + /x8d/x87 + /x8d/x88 + /x8d/x89 + /x8d/x8a + /x8d/x8b + /x8d/x8c + /x8d/x8d + /x8d/x8e + /x8d/x8f + /x8d/x90 + /x8d/x91 + /x8d/x92 + /x8d/x93 + /x8d/x94 + /x8d/x95 + /x8d/x96 + /x8d/x97 + /x8d/x98 + /x8d/x99 + /x8d/x9a + /x8d/x9b + /x8d/x9c + /x8d/x9d + /x8d/x9e + /x8d/x9f + /x8d/xa0 + /x8d/xa1 + /x8d/xa2 + /x8d/xa3 + /x8d/xa4 + /x8d/xa5 + /x8d/xa6 + /x8d/xa7 + /x8d/xa8 + /x8d/xa9 + /x8d/xaa + /x8d/xab + /x8d/xac + /x8d/xad + /x8d/xae + /x8d/xaf + /x8d/xb0 + /x8d/xb1 + /x8d/xb2 + /x8d/xb3 + /x8d/xb4 + /x8d/xb5 + /x8d/xb6 + /x8d/xb7 + /x8d/xb8 + /x8d/xb9 + /x8d/xba + /x8d/xbb + /x8d/xbc + /x8d/xbd + /x8d/xbe + /x8d/xbf + /x8d/xc0 + /x8d/xc1 + /x8d/xc2 + /x8d/xc3 + /x8d/xc4 + /x8d/xc5 + /x8d/xc6 + /x8d/xc7 + /x8d/xc8 + /x8d/xc9 + /x8d/xca + /x8d/xcb + /x8d/xcc + /x8d/xcd + /x8d/xce + /x8d/xcf + /x8d/xd0 + /x8d/xd1 + /x8d/xd2 + /x8d/xd3 + /x8d/xd4 + /x8d/xd5 + /x8d/xd6 + /x8d/xd7 + /x8d/xd8 + /x8d/xd9 + /x8d/xda + /x8d/xdb + /x8d/xdc + /x8d/xdd + /x8d/xde + /x8d/xdf + /x8d/xe0 + /x8d/xe1 + /x8d/xe2 + /x8d/xe3 + /x8d/xe4 + /x8d/xe5 + /x8d/xe6 + /x8d/xe7 + /x8d/xe8 + /x8d/xe9 + /x8d/xea + /x8d/xeb + /x8d/xec + /x8d/xed + /x8d/xee + /x8d/xef + /x8d/xf0 + /x8d/xf1 + /x8d/xf2 + /x8d/xf3 + /x8d/xf4 + /x8d/xf5 + /x8d/xf6 + /x8d/xf7 + /x8d/xf8 + /x8d/xf9 + /x8d/xfa + /x8d/xfb + /x8d/xfc + /x8e/x40 + /x8e/x41 + /x8e/x42 + /x8e/x43 + /x8e/x44 + /x8e/x45 + /x8e/x46 + /x8e/x47 + /x8e/x48 + /x8e/x49 + /x8e/x4a + /x8e/x4b + /x8e/x4c + /x8e/x4d + /x8e/x4e + /x8e/x4f + /x8e/x50 + /x8e/x51 + /x8e/x52 + /x8e/x53 + /x8e/x54 + /x8e/x55 + /x8e/x56 + /x8e/x57 + /x8e/x58 + /x8e/x59 + /x8e/x5a + /x8e/x5b + /x8e/x5c + /x8e/x5d + /x8e/x5e + /x8e/x5f + /x8e/x60 + /x8e/x61 + /x8e/x62 + /x8e/x63 + /x8e/x64 + /x8e/x65 + /x8e/x66 + /x8e/x67 + /x8e/x68 + /x8e/x69 + /x8e/x6a + /x8e/x6b + /x8e/x6c + /x8e/x6d + /x8e/x6e + /x8e/x6f + /x8e/x70 + /x8e/x71 + /x8e/x72 + /x8e/x73 + /x8e/x74 + /x8e/x75 + /x8e/x76 + /x8e/x77 + /x8e/x78 + /x8e/x79 + /x8e/x7a + /x8e/x7b + /x8e/x7c + /x8e/x7d + /x8e/x7e + /x8e/x80 + /x8e/x81 + /x8e/x82 + /x8e/x83 + /x8e/x84 + /x8e/x85 + /x8e/x86 + /x8e/x87 + /x8e/x88 + /x8e/x89 + /x8e/x8a + /x8e/x8b + /x8e/x8c + /x8e/x8d + /x8e/x8e + /x8e/x8f + /x8e/x90 + /x8e/x91 + /x8e/x92 + /x8e/x93 + /x8e/x94 + /x8e/x95 + /x8e/x96 + /x8e/x97 + /x8e/x98 + /x8e/x99 + /x8e/x9a + /x8e/x9b + /x8e/x9c + /x8e/x9d + /x8e/x9e + /x8e/x9f + /x8e/xa0 + /x8e/xa1 + /x8e/xa2 + /x8e/xa3 + /x8e/xa4 + /x8e/xa5 + /x8e/xa6 + /x8e/xa7 + /x8e/xa8 + /x8e/xa9 + /x8e/xaa + /x8e/xab + /x8e/xac + /x8e/xad + /x8e/xae + /x8e/xaf + /x8e/xb0 + /x8e/xb1 + /x8e/xb2 + /x8e/xb3 + /x8e/xb4 + /x8e/xb5 + /x8e/xb6 + /x8e/xb7 + /x8e/xb8 + /x8e/xb9 + /x8e/xba + /x8e/xbb + /x8e/xbc + /x8e/xbd + /x8e/xbe + /x8e/xbf + /x8e/xc0 + /x8e/xc1 + /x8e/xc2 + /x8e/xc3 + /x8e/xc4 + /x8e/xc5 + /x8e/xc6 + /x8e/xc7 + /x8e/xc8 + /x8e/xc9 + /x8e/xca + /x8e/xcb + /x8e/xcc + /x8e/xcd + /x8e/xce + /x8e/xcf + /x8e/xd0 + /x8e/xd1 + /x8e/xd2 + /x8e/xd3 + /x8e/xd4 + /x8e/xd5 + /x8e/xd6 + /x8e/xd7 + /x8e/xd8 + /x8e/xd9 + /x8e/xda + /x8e/xdb + /x8e/xdc + /x8e/xdd + /x8e/xde + /x8e/xdf + /x8e/xe0 + /x8e/xe1 + /x8e/xe2 + /x8e/xe3 + /x8e/xe4 + /x8e/xe5 + /x8e/xe6 + /x8e/xe7 + /x8e/xe8 + /x8e/xe9 + /x8e/xea + /x8e/xeb + /x8e/xec + /x8e/xed + /x8e/xee + /x8e/xef + /x8e/xf0 + /x8e/xf1 + /x8e/xf2 + /x8e/xf3 + /x8e/xf4 + /x8e/xf5 + /x8e/xf6 + /x8e/xf7 + /x8e/xf8 + /x8e/xf9 + /x8e/xfa + /x8e/xfb + /x8e/xfc + /x8f/x40 + /x8f/x41 + /x8f/x42 + /x8f/x43 + /x8f/x44 + /x8f/x45 + /x8f/x46 + /x8f/x47 + /x8f/x48 + /x8f/x49 + /x8f/x4a + /x8f/x4b + /x8f/x4c + /x8f/x4d + /x8f/x4e + /x8f/x4f + /x8f/x50 + /x8f/x51 + /x8f/x52 + /x8f/x53 + /x8f/x54 + /x8f/x55 + /x8f/x56 + /x8f/x57 + /x8f/x58 + /x8f/x59 + /x8f/x5a + /x8f/x5b + /x8f/x5c + /x8f/x5d + /x8f/x5e + /x8f/x5f + /x8f/x60 + /x8f/x61 + /x8f/x62 + /x8f/x63 + /x8f/x64 + /x8f/x65 + /x8f/x66 + /x8f/x67 + /x8f/x68 + /x8f/x69 + /x8f/x6a + /x8f/x6b + /x8f/x6c + /x8f/x6d + /x8f/x6e + /x8f/x6f + /x8f/x70 + /x8f/x71 + /x8f/x72 + /x8f/x73 + /x8f/x74 + /x8f/x75 + /x8f/x76 + /x8f/x77 + /x8f/x78 + /x8f/x79 + /x8f/x7a + /x8f/x7b + /x8f/x7c + /x8f/x7d + /x8f/x7e + /x8f/x80 + /x8f/x81 + /x8f/x82 + /x8f/x83 + /x8f/x84 + /x8f/x85 + /x8f/x86 + /x8f/x87 + /x8f/x88 + /x8f/x89 + /x8f/x8a + /x8f/x8b + /x8f/x8c + /x8f/x8d + /x8f/x8e + /x8f/x8f + /x8f/x90 + /x8f/x91 + /x8f/x92 + /x8f/x93 + /x8f/x94 + /x8f/x95 + /x8f/x96 + /x8f/x97 + /x8f/x98 + /x8f/x99 + /x8f/x9a + /x8f/x9b + /x8f/x9c + /x8f/x9d + /x8f/x9e + /x8f/x9f + /x8f/xa0 + /x8f/xa1 + /x8f/xa2 + /x8f/xa3 + /x8f/xa4 + /x8f/xa5 + /x8f/xa6 + /x8f/xa7 + /x8f/xa8 + /x8f/xa9 + /x8f/xaa + /x8f/xab + /x8f/xac + /x8f/xad + /x8f/xae + /x8f/xaf + /x8f/xb0 + /x8f/xb1 + /x8f/xb2 + /x8f/xb3 + /x8f/xb4 + /x8f/xb5 + /x8f/xb6 + /x8f/xb7 + /x8f/xb8 + /x8f/xb9 + /x8f/xba + /x8f/xbb + /x8f/xbc + /x8f/xbd + /x8f/xbe + /x8f/xbf + /x8f/xc0 + /x8f/xc1 + /x8f/xc2 + /x8f/xc3 + /x8f/xc4 + /x8f/xc5 + /x8f/xc6 + /x8f/xc7 + /x8f/xc8 + /x8f/xc9 + /x8f/xca + /x8f/xcb + /x8f/xcc + /x8f/xcd + /x8f/xce + /x8f/xcf + /x8f/xd0 + /x8f/xd1 + /x8f/xd2 + /x8f/xd3 + /x8f/xd4 + /x8f/xd5 + /x8f/xd6 + /x8f/xd7 + /x8f/xd8 + /x8f/xd9 + /x8f/xda + /x8f/xdb + /x8f/xdc + /x8f/xdd + /x8f/xde + /x8f/xdf + /x8f/xe0 + /x8f/xe1 + /x8f/xe2 + /x8f/xe3 + /x8f/xe4 + /x8f/xe5 + /x8f/xe6 + /x8f/xe7 + /x8f/xe8 + /x8f/xe9 + /x8f/xea + /x8f/xeb + /x8f/xec + /x8f/xed + /x8f/xee + /x8f/xef + /x8f/xf0 + /x8f/xf1 + /x8f/xf2 + /x8f/xf3 + /x8f/xf4 + /x8f/xf5 + /x8f/xf6 + /x8f/xf7 + /x8f/xf8 + /x8f/xf9 + /x8f/xfa + /x8f/xfb + /x8f/xfc + /x90/x40 + /x90/x41 + /x90/x42 + /x90/x43 + /x90/x44 + /x90/x45 + /x90/x46 + /x90/x47 + /x90/x48 + /x90/x49 + /x90/x4a + /x90/x4b + /x90/x4c + /x90/x4d + /x90/x4e + /x90/x4f + /x90/x50 + /x90/x51 + /x90/x52 + /x90/x53 + /x90/x54 + /x90/x55 + /x90/x56 + /x90/x57 + /x90/x58 + /x90/x59 + /x90/x5a + /x90/x5b + /x90/x5c + /x90/x5d + /x90/x5e + /x90/x5f + /x90/x60 + /x90/x61 + /x90/x62 + /x90/x63 + /x90/x64 + /x90/x65 + /x90/x66 + /x90/x67 + /x90/x68 + /x90/x69 + /x90/x6a + /x90/x6b + /x90/x6c + /x90/x6d + /x90/x6e + /x90/x6f + /x90/x70 + /x90/x71 + /x90/x72 + /x90/x73 + /x90/x74 + /x90/x75 + /x90/x76 + /x90/x77 + /x90/x78 + /x90/x79 + /x90/x7a + /x90/x7b + /x90/x7c + /x90/x7d + /x90/x7e + /x90/x80 + /x90/x81 + /x90/x82 + /x90/x83 + /x90/x84 + /x90/x85 + /x90/x86 + /x90/x87 + /x90/x88 + /x90/x89 + /x90/x8a + /x90/x8b + /x90/x8c + /x90/x8d + /x90/x8e + /x90/x8f + /x90/x90 + /x90/x91 + /x90/x92 + /x90/x93 + /x90/x94 + /x90/x95 + /x90/x96 + /x90/x97 + /x90/x98 + /x90/x99 + /x90/x9a + /x90/x9b + /x90/x9c + /x90/x9d + /x90/x9e + /x90/x9f + /x90/xa0 + /x90/xa1 + /x90/xa2 + /x90/xa3 + /x90/xa4 + /x90/xa5 + /x90/xa6 + /x90/xa7 + /x90/xa8 + /x90/xa9 + /x90/xaa + /x90/xab + /x90/xac + /x90/xad + /x90/xae + /x90/xaf + /x90/xb0 + /x90/xb1 + /x90/xb2 + /x90/xb3 + /x90/xb4 + /x90/xb5 + /x90/xb6 + /x90/xb7 + /x90/xb8 + /x90/xb9 + /x90/xba + /x90/xbb + /x90/xbc + /x90/xbd + /x90/xbe + /x90/xbf + /x90/xc0 + /x90/xc1 + /x90/xc2 + /x90/xc3 + /x90/xc4 + /x90/xc5 + /x90/xc6 + /x90/xc7 + /x90/xc8 + /x90/xc9 + /x90/xca + /x90/xcb + /x90/xcc + /x90/xcd + /x90/xce + /x90/xcf + /x90/xd0 + /x90/xd1 + /x90/xd2 + /x90/xd3 + /x90/xd4 + /x90/xd5 + /x90/xd6 + /x90/xd7 + /x90/xd8 + /x90/xd9 + /x90/xda + /x90/xdb + /x90/xdc + /x90/xdd + /x90/xde + /x90/xdf + /x90/xe0 + /x90/xe1 + /x90/xe2 + /x90/xe3 + /x90/xe4 + /x90/xe5 + /x90/xe6 + /x90/xe7 + /x90/xe8 + /x90/xe9 + /x90/xea + /x90/xeb + /x90/xec + /x90/xed + /x90/xee + /x90/xef + /x90/xf0 + /x90/xf1 + /x90/xf2 + /x90/xf3 + /x90/xf4 + /x90/xf5 + /x90/xf6 + /x90/xf7 + /x90/xf8 + /x90/xf9 + /x90/xfa + /x90/xfb + /x90/xfc + /x91/x40 + /x91/x41 + /x91/x42 + /x91/x43 + /x91/x44 + /x91/x45 + /x91/x46 + /x91/x47 + /x91/x48 + /x91/x49 + /x91/x4a + /x91/x4b + /x91/x4c + /x91/x4d + /x91/x4e + /x91/x4f + /x91/x50 + /x91/x51 + /x91/x52 + /x91/x53 + /x91/x54 + /x91/x55 + /x91/x56 + /x91/x57 + /x91/x58 + /x91/x59 + /x91/x5a + /x91/x5b + /x91/x5c + /x91/x5d + /x91/x5e + /x91/x5f + /x91/x60 + /x91/x61 + /x91/x62 + /x91/x63 + /x91/x64 + /x91/x65 + /x91/x66 + /x91/x67 + /x91/x68 + /x91/x69 + /x91/x6a + /x91/x6b + /x91/x6c + /x91/x6d + /x91/x6e + /x91/x6f + /x91/x70 + /x91/x71 + /x91/x72 + /x91/x73 + /x91/x74 + /x91/x75 + /x91/x76 + /x91/x77 + /x91/x78 + /x91/x79 + /x91/x7a + /x91/x7b + /x91/x7c + /x91/x7d + /x91/x7e + /x91/x80 + /x91/x81 + /x91/x82 + /x91/x83 + /x91/x84 + /x91/x85 + /x91/x86 + /x91/x87 + /x91/x88 + /x91/x89 + /x91/x8a + /x91/x8b + /x91/x8c + /x91/x8d + /x91/x8e + /x91/x8f + /x91/x90 + /x91/x91 + /x91/x92 + /x91/x93 + /x91/x94 + /x91/x95 + /x91/x96 + /x91/x97 + /x91/x98 + /x91/x99 + /x91/x9a + /x91/x9b + /x91/x9c + /x91/x9d + /x91/x9e + /x91/x9f + /x91/xa0 + /x91/xa1 + /x91/xa2 + /x91/xa3 + /x91/xa4 + /x91/xa5 + /x91/xa6 + /x91/xa7 + /x91/xa8 + /x91/xa9 + /x91/xaa + /x91/xab + /x91/xac + /x91/xad + /x91/xae + /x91/xaf + /x91/xb0 + /x91/xb1 + /x91/xb2 + /x91/xb3 + /x91/xb4 + /x91/xb5 + /x91/xb6 + /x91/xb7 + /x91/xb8 + /x91/xb9 + /x91/xba + /x91/xbb + /x91/xbc + /x91/xbd + /x91/xbe + /x91/xbf + /x91/xc0 + /x91/xc1 + /x91/xc2 + /x91/xc3 + /x91/xc4 + /x91/xc5 + /x91/xc6 + /x91/xc7 + /x91/xc8 + /x91/xc9 + /x91/xca + /x91/xcb + /x91/xcc + /x91/xcd + /x91/xce + /x91/xcf + /x91/xd0 + /x91/xd1 + /x91/xd2 + /x91/xd3 + /x91/xd4 + /x91/xd5 + /x91/xd6 + /x91/xd7 + /x91/xd8 + /x91/xd9 + /x91/xda + /x91/xdb + /x91/xdc + /x91/xdd + /x91/xde + /x91/xdf + /x91/xe0 + /x91/xe1 + /x91/xe2 + /x91/xe3 + /x91/xe4 + /x91/xe5 + /x91/xe6 + /x91/xe7 + /x91/xe8 + /x91/xe9 + /x91/xea + /x91/xeb + /x91/xec + /x91/xed + /x91/xee + /x91/xef + /x91/xf0 + /x91/xf1 + /x91/xf2 + /x91/xf3 + /x91/xf4 + /x91/xf5 + /x91/xf6 + /x91/xf7 + /x91/xf8 + /x91/xf9 + /x91/xfa + /x91/xfb + /x91/xfc + /x92/x40 + /x92/x41 + /x92/x42 + /x92/x43 + /x92/x44 + /x92/x45 + /x92/x46 + /x92/x47 + /x92/x48 + /x92/x49 + /x92/x4a + /x92/x4b + /x92/x4c + /x92/x4d + /x92/x4e + /x92/x4f + /x92/x50 + /x92/x51 + /x92/x52 + /x92/x53 + /x92/x54 + /x92/x55 + /x92/x56 + /x92/x57 + /x92/x58 + /x92/x59 + /x92/x5a + /x92/x5b + /x92/x5c + /x92/x5d + /x92/x5e + /x92/x5f + /x92/x60 + /x92/x61 + /x92/x62 + /x92/x63 + /x92/x64 + /x92/x65 + /x92/x66 + /x92/x67 + /x92/x68 + /x92/x69 + /x92/x6a + /x92/x6b + /x92/x6c + /x92/x6d + /x92/x6e + /x92/x6f + /x92/x70 + /x92/x71 + /x92/x72 + /x92/x73 + /x92/x74 + /x92/x75 + /x92/x76 + /x92/x77 + /x92/x78 + /x92/x79 + /x92/x7a + /x92/x7b + /x92/x7c + /x92/x7d + /x92/x7e + /x92/x80 + /x92/x81 + /x92/x82 + /x92/x83 + /x92/x84 + /x92/x85 + /x92/x86 + /x92/x87 + /x92/x88 + /x92/x89 + /x92/x8a + /x92/x8b + /x92/x8c + /x92/x8d + /x92/x8e + /x92/x8f + /x92/x90 + /x92/x91 + /x92/x92 + /x92/x93 + /x92/x94 + /x92/x95 + /x92/x96 + /x92/x97 + /x92/x98 + /x92/x99 + /x92/x9a + /x92/x9b + /x92/x9c + /x92/x9d + /x92/x9e + /x92/x9f + /x92/xa0 + /x92/xa1 + /x92/xa2 + /x92/xa3 + /x92/xa4 + /x92/xa5 + /x92/xa6 + /x92/xa7 + /x92/xa8 + /x92/xa9 + /x92/xaa + /x92/xab + /x92/xac + /x92/xad + /x92/xae + /x92/xaf + /x92/xb0 + /x92/xb1 + /x92/xb2 + /x92/xb3 + /x92/xb4 + /x92/xb5 + /x92/xb6 + /x92/xb7 + /x92/xb8 + /x92/xb9 + /x92/xba + /x92/xbb + /x92/xbc + /x92/xbd + /x92/xbe + /x92/xbf + /x92/xc0 + /x92/xc1 + /x92/xc2 + /x92/xc3 + /x92/xc4 + /x92/xc5 + /x92/xc6 + /x92/xc7 + /x92/xc8 + /x92/xc9 + /x92/xca + /x92/xcb + /x92/xcc + /x92/xcd + /x92/xce + /x92/xcf + /x92/xd0 + /x92/xd1 + /x92/xd2 + /x92/xd3 + /x92/xd4 + /x92/xd5 + /x92/xd6 + /x92/xd7 + /x92/xd8 + /x92/xd9 + /x92/xda + /x92/xdb + /x92/xdc + /x92/xdd + /x92/xde + /x92/xdf + /x92/xe0 + /x92/xe1 + /x92/xe2 + /x92/xe3 + /x92/xe4 + /x92/xe5 + /x92/xe6 + /x92/xe7 + /x92/xe8 + /x92/xe9 + /x92/xea + /x92/xeb + /x92/xec + /x92/xed + /x92/xee + /x92/xef + /x92/xf0 + /x92/xf1 + /x92/xf2 + /x92/xf3 + /x92/xf4 + /x92/xf5 + /x92/xf6 + /x92/xf7 + /x92/xf8 + /x92/xf9 + /x92/xfa + /x92/xfb + /x92/xfc + /x93/x40 + /x93/x41 + /x93/x42 + /x93/x43 + /x93/x44 + /x93/x45 + /x93/x46 + /x93/x47 + /x93/x48 + /x93/x49 + /x93/x4a + /x93/x4b + /x93/x4c + /x93/x4d + /x93/x4e + /x93/x4f + /x93/x50 + /x93/x51 + /x93/x52 + /x93/x53 + /x93/x54 + /x93/x55 + /x93/x56 + /x93/x57 + /x93/x58 + /x93/x59 + /x93/x5a + /x93/x5b + /x93/x5c + /x93/x5d + /x93/x5e + /x93/x5f + /x93/x60 + /x93/x61 + /x93/x62 + /x93/x63 + /x93/x64 + /x93/x65 + /x93/x66 + /x93/x67 + /x93/x68 + /x93/x69 + /x93/x6a + /x93/x6b + /x93/x6c + /x93/x6d + /x93/x6e + /x93/x6f + /x93/x70 + /x93/x71 + /x93/x72 + /x93/x73 + /x93/x74 + /x93/x75 + /x93/x76 + /x93/x77 + /x93/x78 + /x93/x79 + /x93/x7a + /x93/x7b + /x93/x7c + /x93/x7d + /x93/x7e + /x93/x80 + /x93/x81 + /x93/x82 + /x93/x83 + /x93/x84 + /x93/x85 + /x93/x86 + /x93/x87 + /x93/x88 + /x93/x89 + /x93/x8a + /x93/x8b + /x93/x8c + /x93/x8d + /x93/x8e + /x93/x8f + /x93/x90 + /x93/x91 + /x93/x92 + /x93/x93 + /x93/x94 + /x93/x95 + /x93/x96 + /x93/x97 + /x93/x98 + /x93/x99 + /x93/x9a + /x93/x9b + /x93/x9c + /x93/x9d + /x93/x9e + /x93/x9f + /x93/xa0 + /x93/xa1 + /x93/xa2 + /x93/xa3 + /x93/xa4 + /x93/xa5 + /x93/xa6 + /x93/xa7 + /x93/xa8 + /x93/xa9 + /x93/xaa + /x93/xab + /x93/xac + /x93/xad + /x93/xae + /x93/xaf + /x93/xb0 + /x93/xb1 + /x93/xb2 + /x93/xb3 + /x93/xb4 + /x93/xb5 + /x93/xb6 + /x93/xb7 + /x93/xb8 + /x93/xb9 + /x93/xba + /x93/xbb + /x93/xbc + /x93/xbd + /x93/xbe + /x93/xbf + /x93/xc0 + /x93/xc1 + /x93/xc2 + /x93/xc3 + /x93/xc4 + /x93/xc5 + /x93/xc6 + /x93/xc7 + /x93/xc8 + /x93/xc9 + /x93/xca + /x93/xcb + /x93/xcc + /x93/xcd + /x93/xce + /x93/xcf + /x93/xd0 + /x93/xd1 + /x93/xd2 + /x93/xd3 + /x93/xd4 + /x93/xd5 + /x93/xd6 + /x93/xd7 + /x93/xd8 + /x93/xd9 + /x93/xda + /x93/xdb + /x93/xdc + /x93/xdd + /x93/xde + /x93/xdf + /x93/xe0 + /x93/xe1 + /x93/xe2 + /x93/xe3 + /x93/xe4 + /x93/xe5 + /x93/xe6 + /x93/xe7 + /x93/xe8 + /x93/xe9 + /x93/xea + /x93/xeb + /x93/xec + /x93/xed + /x93/xee + /x93/xef + /x93/xf0 + /x93/xf1 + /x93/xf2 + /x93/xf3 + /x93/xf4 + /x93/xf5 + /x93/xf6 + /x93/xf7 + /x93/xf8 + /x93/xf9 + /x93/xfa + /x93/xfb + /x93/xfc + /x94/x40 + /x94/x41 + /x94/x42 + /x94/x43 + /x94/x44 + /x94/x45 + /x94/x46 + /x94/x47 + /x94/x48 + /x94/x49 + /x94/x4a + /x94/x4b + /x94/x4c + /x94/x4d + /x94/x4e + /x94/x4f + /x94/x50 + /x94/x51 + /x94/x52 + /x94/x53 + /x94/x54 + /x94/x55 + /x94/x56 + /x94/x57 + /x94/x58 + /x94/x59 + /x94/x5a + /x94/x5b + /x94/x5c + /x94/x5d + /x94/x5e + /x94/x5f + /x94/x60 + /x94/x61 + /x94/x62 + /x94/x63 + /x94/x64 + /x94/x65 + /x94/x66 + /x94/x67 + /x94/x68 + /x94/x69 + /x94/x6a + /x94/x6b + /x94/x6c + /x94/x6d + /x94/x6e + /x94/x6f + /x94/x70 + /x94/x71 + /x94/x72 + /x94/x73 + /x94/x74 + /x94/x75 + /x94/x76 + /x94/x77 + /x94/x78 + /x94/x79 + /x94/x7a + /x94/x7b + /x94/x7c + /x94/x7d + /x94/x7e + /x94/x80 + /x94/x81 + /x94/x82 + /x94/x83 + /x94/x84 + /x94/x85 + /x94/x86 + /x94/x87 + /x94/x88 + /x94/x89 + /x94/x8a + /x94/x8b + /x94/x8c + /x94/x8d + /x94/x8e + /x94/x8f + /x94/x90 + /x94/x91 + /x94/x92 + /x94/x93 + /x94/x94 + /x94/x95 + /x94/x96 + /x94/x97 + /x94/x98 + /x94/x99 + /x94/x9a + /x94/x9b + /x94/x9c + /x94/x9d + /x94/x9e + /x94/x9f + /x94/xa0 + /x94/xa1 + /x94/xa2 + /x94/xa3 + /x94/xa4 + /x94/xa5 + /x94/xa6 + /x94/xa7 + /x94/xa8 + /x94/xa9 + /x94/xaa + /x94/xab + /x94/xac + /x94/xad + /x94/xae + /x94/xaf + /x94/xb0 + /x94/xb1 + /x94/xb2 + /x94/xb3 + /x94/xb4 + /x94/xb5 + /x94/xb6 + /x94/xb7 + /x94/xb8 + /x94/xb9 + /x94/xba + /x94/xbb + /x94/xbc + /x94/xbd + /x94/xbe + /x94/xbf + /x94/xc0 + /x94/xc1 + /x94/xc2 + /x94/xc3 + /x94/xc4 + /x94/xc5 + /x94/xc6 + /x94/xc7 + /x94/xc8 + /x94/xc9 + /x94/xca + /x94/xcb + /x94/xcc + /x94/xcd + /x94/xce + /x94/xcf + /x94/xd0 + /x94/xd1 + /x94/xd2 + /x94/xd3 + /x94/xd4 + /x94/xd5 + /x94/xd6 + /x94/xd7 + /x94/xd8 + /x94/xd9 + /x94/xda + /x94/xdb + /x94/xdc + /x94/xdd + /x94/xde + /x94/xdf + /x94/xe0 + /x94/xe1 + /x94/xe2 + /x94/xe3 + /x94/xe4 + /x94/xe5 + /x94/xe6 + /x94/xe7 + /x94/xe8 + /x94/xe9 + /x94/xea + /x94/xeb + /x94/xec + /x94/xed + /x94/xee + /x94/xef + /x94/xf0 + /x94/xf1 + /x94/xf2 + /x94/xf3 + /x94/xf4 + /x94/xf5 + /x94/xf6 + /x94/xf7 + /x94/xf8 + /x94/xf9 + /x94/xfa + /x94/xfb + /x94/xfc + /x95/x40 + /x95/x41 + /x95/x42 + /x95/x43 + /x95/x44 + /x95/x45 + /x95/x46 + /x95/x47 + /x95/x48 + /x95/x49 + /x95/x4a + /x95/x4b + /x95/x4c + /x95/x4d + /x95/x4e + /x95/x4f + /x95/x50 + /x95/x51 + /x95/x52 + /x95/x53 + /x95/x54 + /x95/x55 + /x95/x56 + /x95/x57 + /x95/x58 + /x95/x59 + /x95/x5a + /x95/x5b + /x95/x5c + /x95/x5d + /x95/x5e + /x95/x5f + /x95/x60 + /x95/x61 + /x95/x62 + /x95/x63 + /x95/x64 + /x95/x65 + /x95/x66 + /x95/x67 + /x95/x68 + /x95/x69 + /x95/x6a + /x95/x6b + /x95/x6c + /x95/x6d + /x95/x6e + /x95/x6f + /x95/x70 + /x95/x71 + /x95/x72 + /x95/x73 + /x95/x74 + /x95/x75 + /x95/x76 + /x95/x77 + /x95/x78 + /x95/x79 + /x95/x7a + /x95/x7b + /x95/x7c + /x95/x7d + /x95/x7e + /x95/x80 + /x95/x81 + /x95/x82 + /x95/x83 + /x95/x84 + /x95/x85 + /x95/x86 + /x95/x87 + /x95/x88 + /x95/x89 + /x95/x8a + /x95/x8b + /x95/x8c + /x95/x8d + /x95/x8e + /x95/x8f + /x95/x90 + /x95/x91 + /x95/x92 + /x95/x93 + /x95/x94 + /x95/x95 + /x95/x96 + /x95/x97 + /x95/x98 + /x95/x99 + /x95/x9a + /x95/x9b + /x95/x9c + /x95/x9d + /x95/x9e + /x95/x9f + /x95/xa0 + /x95/xa1 + /x95/xa2 + /x95/xa3 + /x95/xa4 + /x95/xa5 + /x95/xa6 + /x95/xa7 + /x95/xa8 + /x95/xa9 + /x95/xaa + /x95/xab + /x95/xac + /x95/xad + /x95/xae + /x95/xaf + /x95/xb0 + /x95/xb1 + /x95/xb2 + /x95/xb3 + /x95/xb4 + /x95/xb5 + /x95/xb6 + /x95/xb7 + /x95/xb8 + /x95/xb9 + /x95/xba + /x95/xbb + /x95/xbc + /x95/xbd + /x95/xbe + /x95/xbf + /x95/xc0 + /x95/xc1 + /x95/xc2 + /x95/xc3 + /x95/xc4 + /x95/xc5 + /x95/xc6 + /x95/xc7 + /x95/xc8 + /x95/xc9 + /x95/xca + /x95/xcb + /x95/xcc + /x95/xcd + /x95/xce + /x95/xcf + /x95/xd0 + /x95/xd1 + /x95/xd2 + /x95/xd3 + /x95/xd4 + /x95/xd5 + /x95/xd6 + /x95/xd7 + /x95/xd8 + /x95/xd9 + /x95/xda + /x95/xdb + /x95/xdc + /x95/xdd + /x95/xde + /x95/xdf + /x95/xe0 + /x95/xe1 + /x95/xe2 + /x95/xe3 + /x95/xe4 + /x95/xe5 + /x95/xe6 + /x95/xe7 + /x95/xe8 + /x95/xe9 + /x95/xea + /x95/xeb + /x95/xec + /x95/xed + /x95/xee + /x95/xef + /x95/xf0 + /x95/xf1 + /x95/xf2 + /x95/xf3 + /x95/xf4 + /x95/xf5 + /x95/xf6 + /x95/xf7 + /x95/xf8 + /x95/xf9 + /x95/xfa + /x95/xfb + /x95/xfc + /x96/x40 + /x96/x41 + /x96/x42 + /x96/x43 + /x96/x44 + /x96/x45 + /x96/x46 + /x96/x47 + /x96/x48 + /x96/x49 + /x96/x4a + /x96/x4b + /x96/x4c + /x96/x4d + /x96/x4e + /x96/x4f + /x96/x50 + /x96/x51 + /x96/x52 + /x96/x53 + /x96/x54 + /x96/x55 + /x96/x56 + /x96/x57 + /x96/x58 + /x96/x59 + /x96/x5a + /x96/x5b + /x96/x5c + /x96/x5d + /x96/x5e + /x96/x5f + /x96/x60 + /x96/x61 + /x96/x62 + /x96/x63 + /x96/x64 + /x96/x65 + /x96/x66 + /x96/x67 + /x96/x68 + /x96/x69 + /x96/x6a + /x96/x6b + /x96/x6c + /x96/x6d + /x96/x6e + /x96/x6f + /x96/x70 + /x96/x71 + /x96/x72 + /x96/x73 + /x96/x74 + /x96/x75 + /x96/x76 + /x96/x77 + /x96/x78 + /x96/x79 + /x96/x7a + /x96/x7b + /x96/x7c + /x96/x7d + /x96/x7e + /x96/x80 + /x96/x81 + /x96/x82 + /x96/x83 + /x96/x84 + /x96/x85 + /x96/x86 + /x96/x87 + /x96/x88 + /x96/x89 + /x96/x8a + /x96/x8b + /x96/x8c + /x96/x8d + /x96/x8e + /x96/x8f + /x96/x90 + /x96/x91 + /x96/x92 + /x96/x93 + /x96/x94 + /x96/x95 + /x96/x96 + /x96/x97 + /x96/x98 + /x96/x99 + /x96/x9a + /x96/x9b + /x96/x9c + /x96/x9d + /x96/x9e + /x96/x9f + /x96/xa0 + /x96/xa1 + /x96/xa2 + /x96/xa3 + /x96/xa4 + /x96/xa5 + /x96/xa6 + /x96/xa7 + /x96/xa8 + /x96/xa9 + /x96/xaa + /x96/xab + /x96/xac + /x96/xad + /x96/xae + /x96/xaf + /x96/xb0 + /x96/xb1 + /x96/xb2 + /x96/xb3 + /x96/xb4 + /x96/xb5 + /x96/xb6 + /x96/xb7 + /x96/xb8 + /x96/xb9 + /x96/xba + /x96/xbb + /x96/xbc + /x96/xbd + /x96/xbe + /x96/xbf + /x96/xc0 + /x96/xc1 + /x96/xc2 + /x96/xc3 + /x96/xc4 + /x96/xc5 + /x96/xc6 + /x96/xc7 + /x96/xc8 + /x96/xc9 + /x96/xca + /x96/xcb + /x96/xcc + /x96/xcd + /x96/xce + /x96/xcf + /x96/xd0 + /x96/xd1 + /x96/xd2 + /x96/xd3 + /x96/xd4 + /x96/xd5 + /x96/xd6 + /x96/xd7 + /x96/xd8 + /x96/xd9 + /x96/xda + /x96/xdb + /x96/xdc + /x96/xdd + /x96/xde + /x96/xdf + /x96/xe0 + /x96/xe1 + /x96/xe2 + /x96/xe3 + /x96/xe4 + /x96/xe5 + /x96/xe6 + /x96/xe7 + /x96/xe8 + /x96/xe9 + /x96/xea + /x96/xeb + /x96/xec + /x96/xed + /x96/xee + /x96/xef + /x96/xf0 + /x96/xf1 + /x96/xf2 + /x96/xf3 + /x96/xf4 + /x96/xf5 + /x96/xf6 + /x96/xf7 + /x96/xf8 + /x96/xf9 + /x96/xfa + /x96/xfb + /x96/xfc + /x97/x40 + /x97/x41 + /x97/x42 + /x97/x43 + /x97/x44 + /x97/x45 + /x97/x46 + /x97/x47 + /x97/x48 + /x97/x49 + /x97/x4a + /x97/x4b + /x97/x4c + /x97/x4d + /x97/x4e + /x97/x4f + /x97/x50 + /x97/x51 + /x97/x52 + /x97/x53 + /x97/x54 + /x97/x55 + /x97/x56 + /x97/x57 + /x97/x58 + /x97/x59 + /x97/x5a + /x97/x5b + /x97/x5c + /x97/x5d + /x97/x5e + /x97/x5f + /x97/x60 + /x97/x61 + /x97/x62 + /x97/x63 + /x97/x64 + /x97/x65 + /x97/x66 + /x97/x67 + /x97/x68 + /x97/x69 + /x97/x6a + /x97/x6b + /x97/x6c + /x97/x6d + /x97/x6e + /x97/x6f + /x97/x70 + /x97/x71 + /x97/x72 + /x97/x73 + /x97/x74 + /x97/x75 + /x97/x76 + /x97/x77 + /x97/x78 + /x97/x79 + /x97/x7a + /x97/x7b + /x97/x7c + /x97/x7d + /x97/x7e + /x97/x80 + /x97/x81 + /x97/x82 + /x97/x83 + /x97/x84 + /x97/x85 + /x97/x86 + /x97/x87 + /x97/x88 + /x97/x89 + /x97/x8a + /x97/x8b + /x97/x8c + /x97/x8d + /x97/x8e + /x97/x8f + /x97/x90 + /x97/x91 + /x97/x92 + /x97/x93 + /x97/x94 + /x97/x95 + /x97/x96 + /x97/x97 + /x97/x98 + /x97/x99 + /x97/x9a + /x97/x9b + /x97/x9c + /x97/x9d + /x97/x9e + /x97/x9f + /x97/xa0 + /x97/xa1 + /x97/xa2 + /x97/xa3 + /x97/xa4 + /x97/xa5 + /x97/xa6 + /x97/xa7 + /x97/xa8 + /x97/xa9 + /x97/xaa + /x97/xab + /x97/xac + /x97/xad + /x97/xae + /x97/xaf + /x97/xb0 + /x97/xb1 + /x97/xb2 + /x97/xb3 + /x97/xb4 + /x97/xb5 + /x97/xb6 + /x97/xb7 + /x97/xb8 + /x97/xb9 + /x97/xba + /x97/xbb + /x97/xbc + /x97/xbd + /x97/xbe + /x97/xbf + /x97/xc0 + /x97/xc1 + /x97/xc2 + /x97/xc3 + /x97/xc4 + /x97/xc5 + /x97/xc6 + /x97/xc7 + /x97/xc8 + /x97/xc9 + /x97/xca + /x97/xcb + /x97/xcc + /x97/xcd + /x97/xce + /x97/xcf + /x97/xd0 + /x97/xd1 + /x97/xd2 + /x97/xd3 + /x97/xd4 + /x97/xd5 + /x97/xd6 + /x97/xd7 + /x97/xd8 + /x97/xd9 + /x97/xda + /x97/xdb + /x97/xdc + /x97/xdd + /x97/xde + /x97/xdf + /x97/xe0 + /x97/xe1 + /x97/xe2 + /x97/xe3 + /x97/xe4 + /x97/xe5 + /x97/xe6 + /x97/xe7 + /x97/xe8 + /x97/xe9 + /x97/xea + /x97/xeb + /x97/xec + /x97/xed + /x97/xee + /x97/xef + /x97/xf0 + /x97/xf1 + /x97/xf2 + /x97/xf3 + /x97/xf4 + /x97/xf5 + /x97/xf6 + /x97/xf7 + /x97/xf8 + /x97/xf9 + /x97/xfa + /x97/xfb + /x97/xfc + /x98/x40 + /x98/x41 + /x98/x42 + /x98/x43 + /x98/x44 + /x98/x45 + /x98/x46 + /x98/x47 + /x98/x48 + /x98/x49 + /x98/x4a + /x98/x4b + /x98/x4c + /x98/x4d + /x98/x4e + /x98/x4f + /x98/x50 + /x98/x51 + /x98/x52 + /x98/x53 + /x98/x54 + /x98/x55 + /x98/x56 + /x98/x57 + /x98/x58 + /x98/x59 + /x98/x5a + /x98/x5b + /x98/x5c + /x98/x5d + /x98/x5e + /x98/x5f + /x98/x60 + /x98/x61 + /x98/x62 + /x98/x63 + /x98/x64 + /x98/x65 + /x98/x66 + /x98/x67 + /x98/x68 + /x98/x69 + /x98/x6a + /x98/x6b + /x98/x6c + /x98/x6d + /x98/x6e + /x98/x6f + /x98/x70 + /x98/x71 + /x98/x72 + /x98/x9f + /x98/xa0 + /x98/xa1 + /x98/xa2 + /x98/xa3 + /x98/xa4 + /x98/xa5 + /x98/xa6 + /x98/xa7 + /x98/xa8 + /x98/xa9 + /x98/xaa + /x98/xab + /x98/xac + /x98/xad + /x98/xae + /x98/xaf + /x98/xb0 + /x98/xb1 + /x98/xb2 + /x98/xb3 + /x98/xb4 + /x98/xb5 + /x98/xb6 + /x98/xb7 + /x98/xb8 + /x98/xb9 + /x98/xba + /x98/xbb + /x98/xbc + /x98/xbd + /x98/xbe + /x98/xbf + /x98/xc0 + /x98/xc1 + /x98/xc2 + /x98/xc3 + /x98/xc4 + /x98/xc5 + /x98/xc6 + /x98/xc7 + /x98/xc8 + /x98/xc9 + /x98/xca + /x98/xcb + /x98/xcc + /x98/xcd + /x98/xce + /x98/xcf + /x98/xd0 + /x98/xd1 + /x98/xd2 + /x98/xd3 + /x98/xd4 + /x98/xd5 + /x98/xd6 + /x98/xd7 + /x98/xd8 + /x98/xd9 + /x98/xda + /x98/xdb + /x98/xdc + /x98/xdd + /x98/xde + /x98/xdf + /x98/xe0 + /x98/xe1 + /x98/xe2 + /x98/xe3 + /x98/xe4 + /x98/xe5 + /x98/xe6 + /x98/xe7 + /x98/xe8 + /x98/xe9 + /x98/xea + /x98/xeb + /x98/xec + /x98/xed + /x98/xee + /x98/xef + /x98/xf0 + /x98/xf1 + /x98/xf2 + /x98/xf3 + /x98/xf4 + /x98/xf5 + /x98/xf6 + /x98/xf7 + /x98/xf8 + /x98/xf9 + /x98/xfa + /x98/xfb + /x98/xfc + /x99/x40 + /x99/x41 + /x99/x42 + /x99/x43 + /x99/x44 + /x99/x45 + /x99/x46 + /x99/x47 + /x99/x48 + /x99/x49 + /x99/x4a + /x99/x4b + /x99/x4c + /x99/x4d + /x99/x4e + /x99/x4f + /x99/x50 + /x99/x51 + /x99/x52 + /x99/x53 + /x99/x54 + /x99/x55 + /x99/x56 + /x99/x57 + /x99/x58 + /x99/x59 + /x99/x5a + /x99/x5b + /x99/x5c + /x99/x5d + /x99/x5e + /x99/x5f + /x99/x60 + /x99/x61 + /x99/x62 + /x99/x63 + /x99/x64 + /x99/x65 + /x99/x66 + /x99/x67 + /x99/x68 + /x99/x69 + /x99/x6a + /x99/x6b + /x99/x6c + /x99/x6d + /x99/x6e + /x99/x6f + /x99/x70 + /x99/x71 + /x99/x72 + /x99/x73 + /x99/x74 + /x99/x75 + /x99/x76 + /x99/x77 + /x99/x78 + /x99/x79 + /x99/x7a + /x99/x7b + /x99/x7c + /x99/x7d + /x99/x7e + /x99/x80 + /x99/x81 + /x99/x82 + /x99/x83 + /x99/x84 + /x99/x85 + /x99/x86 + /x99/x87 + /x99/x88 + /x99/x89 + /x99/x8a + /x99/x8b + /x99/x8c + /x99/x8d + /x99/x8e + /x99/x8f + /x99/x90 + /x99/x91 + /x99/x92 + /x99/x93 + /x99/x94 + /x99/x95 + /x99/x96 + /x99/x97 + /x99/x98 + /x99/x99 + /x99/x9a + /x99/x9b + /x99/x9c + /x99/x9d + /x99/x9e + /x99/x9f + /x99/xa0 + /x99/xa1 + /x99/xa2 + /x99/xa3 + /x99/xa4 + /x99/xa5 + /x99/xa6 + /x99/xa7 + /x99/xa8 + /x99/xa9 + /x99/xaa + /x99/xab + /x99/xac + /x99/xad + /x99/xae + /x99/xaf + /x99/xb0 + /x99/xb1 + /x99/xb2 + /x99/xb3 + /x99/xb4 + /x99/xb5 + /x99/xb6 + /x99/xb7 + /x99/xb8 + /x99/xb9 + /x99/xba + /x99/xbb + /x99/xbc + /x99/xbd + /x99/xbe + /x99/xbf + /x99/xc0 + /x99/xc1 + /x99/xc2 + /x99/xc3 + /x99/xc4 + /x99/xc5 + /x99/xc6 + /x99/xc7 + /x99/xc8 + /x99/xc9 + /x99/xca + /x99/xcb + /x99/xcc + /x99/xcd + /x99/xce + /x99/xcf + /x99/xd0 + /x99/xd1 + /x99/xd2 + /x99/xd3 + /x99/xd4 + /x99/xd5 + /x99/xd6 + /x99/xd7 + /x99/xd8 + /x99/xd9 + /x99/xda + /x99/xdb + /x99/xdc + /x99/xdd + /x99/xde + /x99/xdf + /x99/xe0 + /x99/xe1 + /x99/xe2 + /x99/xe3 + /x99/xe4 + /x99/xe5 + /x99/xe6 + /x99/xe7 + /x99/xe8 + /x99/xe9 + /x99/xea + /x99/xeb + /x99/xec + /x99/xed + /x99/xee + /x99/xef + /x99/xf0 + /x99/xf1 + /x99/xf2 + /x99/xf3 + /x99/xf4 + /x99/xf5 + /x99/xf6 + /x99/xf7 + /x99/xf8 + /x99/xf9 + /x99/xfa + /x99/xfb + /x99/xfc + /x9a/x40 + /x9a/x41 + /x9a/x42 + /x9a/x43 + /x9a/x44 + /x9a/x45 + /x9a/x46 + /x9a/x47 + /x9a/x48 + /x9a/x49 + /x9a/x4a + /x9a/x4b + /x9a/x4c + /x9a/x4d + /x9a/x4e + /x9a/x4f + /x9a/x50 + /x9a/x51 + /x9a/x52 + /x9a/x53 + /x9a/x54 + /x9a/x55 + /x9a/x56 + /x9a/x57 + /x9a/x58 + /x9a/x59 + /x9a/x5a + /x9a/x5b + /x9a/x5c + /x9a/x5d + /x9a/x5e + /x9a/x5f + /x9a/x60 + /x9a/x61 + /x9a/x62 + /x9a/x63 + /x9a/x64 + /x9a/x65 + /x9a/x66 + /x9a/x67 + /x9a/x68 + /x9a/x69 + /x9a/x6a + /x9a/x6b + /x9a/x6c + /x9a/x6d + /x9a/x6e + /x9a/x6f + /x9a/x70 + /x9a/x71 + /x9a/x72 + /x9a/x73 + /x9a/x74 + /x9a/x75 + /x9a/x76 + /x9a/x77 + /x9a/x78 + /x9a/x79 + /x9a/x7a + /x9a/x7b + /x9a/x7c + /x9a/x7d + /x9a/x7e + /x9a/x80 + /x9a/x81 + /x9a/x82 + /x9a/x83 + /x9a/x84 + /x9a/x85 + /x9a/x86 + /x9a/x87 + /x9a/x88 + /x9a/x89 + /x9a/x8a + /x9a/x8b + /x9a/x8c + /x9a/x8d + /x9a/x8e + /x9a/x8f + /x9a/x90 + /x9a/x91 + /x9a/x92 + /x9a/x93 + /x9a/x94 + /x9a/x95 + /x9a/x96 + /x9a/x97 + /x9a/x98 + /x9a/x99 + /x9a/x9a + /x9a/x9b + /x9a/x9c + /x9a/x9d + /x9a/x9e + /x9a/x9f + /x9a/xa0 + /x9a/xa1 + /x9a/xa2 + /x9a/xa3 + /x9a/xa4 + /x9a/xa5 + /x9a/xa6 + /x9a/xa7 + /x9a/xa8 + /x9a/xa9 + /x9a/xaa + /x9a/xab + /x9a/xac + /x9a/xad + /x9a/xae + /x9a/xaf + /x9a/xb0 + /x9a/xb1 + /x9a/xb2 + /x9a/xb3 + /x9a/xb4 + /x9a/xb5 + /x9a/xb6 + /x9a/xb7 + /x9a/xb8 + /x9a/xb9 + /x9a/xba + /x9a/xbb + /x9a/xbc + /x9a/xbd + /x9a/xbe + /x9a/xbf + /x9a/xc0 + /x9a/xc1 + /x9a/xc2 + /x9a/xc3 + /x9a/xc4 + /x9a/xc5 + /x9a/xc6 + /x9a/xc7 + /x9a/xc8 + /x9a/xc9 + /x9a/xca + /x9a/xcb + /x9a/xcc + /x9a/xcd + /x9a/xce + /x9a/xcf + /x9a/xd0 + /x9a/xd1 + /x9a/xd2 + /x9a/xd3 + /x9a/xd4 + /x9a/xd5 + /x9a/xd6 + /x9a/xd7 + /x9a/xd8 + /x9a/xd9 + /x9a/xda + /x9a/xdb + /x9a/xdc + /x9a/xdd + /x9a/xde + /x9a/xdf + /x9a/xe0 + /x9a/xe1 + /x9a/xe2 + /x9a/xe3 + /x9a/xe4 + /x9a/xe5 + /x9a/xe6 + /x9a/xe7 + /x9a/xe8 + /x9a/xe9 + /x9a/xea + /x9a/xeb + /x9a/xec + /x9a/xed + /x9a/xee + /x9a/xef + /x9a/xf0 + /x9a/xf1 + /x9a/xf2 + /x9a/xf3 + /x9a/xf4 + /x9a/xf5 + /x9a/xf6 + /x9a/xf7 + /x9a/xf8 + /x9a/xf9 + /x9a/xfa + /x9a/xfb + /x9a/xfc + /x9b/x40 + /x9b/x41 + /x9b/x42 + /x9b/x43 + /x9b/x44 + /x9b/x45 + /x9b/x46 + /x9b/x47 + /x9b/x48 + /x9b/x49 + /x9b/x4a + /x9b/x4b + /x9b/x4c + /x9b/x4d + /x9b/x4e + /x9b/x4f + /x9b/x50 + /x9b/x51 + /x9b/x52 + /x9b/x53 + /x9b/x54 + /x9b/x55 + /x9b/x56 + /x9b/x57 + /x9b/x58 + /x9b/x59 + /x9b/x5a + /x9b/x5b + /x9b/x5c + /x9b/x5d + /x9b/x5e + /x9b/x5f + /x9b/x60 + /x9b/x61 + /x9b/x62 + /x9b/x63 + /x9b/x64 + /x9b/x65 + /x9b/x66 + /x9b/x67 + /x9b/x68 + /x9b/x69 + /x9b/x6a + /x9b/x6b + /x9b/x6c + /x9b/x6d + /x9b/x6e + /x9b/x6f + /x9b/x70 + /x9b/x71 + /x9b/x72 + /x9b/x73 + /x9b/x74 + /x9b/x75 + /x9b/x76 + /x9b/x77 + /x9b/x78 + /x9b/x79 + /x9b/x7a + /x9b/x7b + /x9b/x7c + /x9b/x7d + /x9b/x7e + /x9b/x80 + /x9b/x81 + /x9b/x82 + /x9b/x83 + /x9b/x84 + /x9b/x85 + /x9b/x86 + /x9b/x87 + /x9b/x88 + /x9b/x89 + /x9b/x8a + /x9b/x8b + /x9b/x8c + /x9b/x8d + /x9b/x8e + /x9b/x8f + /x9b/x90 + /x9b/x91 + /x9b/x92 + /x9b/x93 + /x9b/x94 + /x9b/x95 + /x9b/x96 + /x9b/x97 + /x9b/x98 + /x9b/x99 + /x9b/x9a + /x9b/x9b + /x9b/x9c + /x9b/x9d + /x9b/x9e + /x9b/x9f + /x9b/xa0 + /x9b/xa1 + /x9b/xa2 + /x9b/xa3 + /x9b/xa4 + /x9b/xa5 + /x9b/xa6 + /x9b/xa7 + /x9b/xa8 + /x9b/xa9 + /x9b/xaa + /x9b/xab + /x9b/xac + /x9b/xad + /x9b/xae + /x9b/xaf + /x9b/xb0 + /x9b/xb1 + /x9b/xb2 + /x9b/xb3 + /x9b/xb4 + /x9b/xb5 + /x9b/xb6 + /x9b/xb7 + /x9b/xb8 + /x9b/xb9 + /x9b/xba + /x9b/xbb + /x9b/xbc + /x9b/xbd + /x9b/xbe + /x9b/xbf + /x9b/xc0 + /x9b/xc1 + /x9b/xc2 + /x9b/xc3 + /x9b/xc4 + /x9b/xc5 + /x9b/xc6 + /x9b/xc7 + /x9b/xc8 + /x9b/xc9 + /x9b/xca + /x9b/xcb + /x9b/xcc + /x9b/xcd + /x9b/xce + /x9b/xcf + /x9b/xd0 + /x9b/xd1 + /x9b/xd2 + /x9b/xd3 + /x9b/xd4 + /x9b/xd5 + /x9b/xd6 + /x9b/xd7 + /x9b/xd8 + /x9b/xd9 + /x9b/xda + /x9b/xdb + /x9b/xdc + /x9b/xdd + /x9b/xde + /x9b/xdf + /x9b/xe0 + /x9b/xe1 + /x9b/xe2 + /x9b/xe3 + /x9b/xe4 + /x9b/xe5 + /x9b/xe6 + /x9b/xe7 + /x9b/xe8 + /x9b/xe9 + /x9b/xea + /x9b/xeb + /x9b/xec + /x9b/xed + /x9b/xee + /x9b/xef + /x9b/xf0 + /x9b/xf1 + /x9b/xf2 + /x9b/xf3 + /x9b/xf4 + /x9b/xf5 + /x9b/xf6 + /x9b/xf7 + /x9b/xf8 + /x9b/xf9 + /x9b/xfa + /x9b/xfb + /x9b/xfc + /x9c/x40 + /x9c/x41 + /x9c/x42 + /x9c/x43 + /x9c/x44 + /x9c/x45 + /x9c/x46 + /x9c/x47 + /x9c/x48 + /x9c/x49 + /x9c/x4a + /x9c/x4b + /x9c/x4c + /x9c/x4d + /x9c/x4e + /x9c/x4f + /x9c/x50 + /x9c/x51 + /x9c/x52 + /x9c/x53 + /x9c/x54 + /x9c/x55 + /x9c/x56 + /x9c/x57 + /x9c/x58 + /x9c/x59 + /x9c/x5a + /x9c/x5b + /x9c/x5c + /x9c/x5d + /x9c/x5e + /x9c/x5f + /x9c/x60 + /x9c/x61 + /x9c/x62 + /x9c/x63 + /x9c/x64 + /x9c/x65 + /x9c/x66 + /x9c/x67 + /x9c/x68 + /x9c/x69 + /x9c/x6a + /x9c/x6b + /x9c/x6c + /x9c/x6d + /x9c/x6e + /x9c/x6f + /x9c/x70 + /x9c/x71 + /x9c/x72 + /x9c/x73 + /x9c/x74 + /x9c/x75 + /x9c/x76 + /x9c/x77 + /x9c/x78 + /x9c/x79 + /x9c/x7a + /x9c/x7b + /x9c/x7c + /x9c/x7d + /x9c/x7e + /x9c/x80 + /x9c/x81 + /x9c/x82 + /x9c/x83 + /x9c/x84 + /x9c/x85 + /x9c/x86 + /x9c/x87 + /x9c/x88 + /x9c/x89 + /x9c/x8a + /x9c/x8b + /x9c/x8c + /x9c/x8d + /x9c/x8e + /x9c/x8f + /x9c/x90 + /x9c/x91 + /x9c/x92 + /x9c/x93 + /x9c/x94 + /x9c/x95 + /x9c/x96 + /x9c/x97 + /x9c/x98 + /x9c/x99 + /x9c/x9a + /x9c/x9b + /x9c/x9c + /x9c/x9d + /x9c/x9e + /x9c/x9f + /x9c/xa0 + /x9c/xa1 + /x9c/xa2 + /x9c/xa3 + /x9c/xa4 + /x9c/xa5 + /x9c/xa6 + /x9c/xa7 + /x9c/xa8 + /x9c/xa9 + /x9c/xaa + /x9c/xab + /x9c/xac + /x9c/xad + /x9c/xae + /x9c/xaf + /x9c/xb0 + /x9c/xb1 + /x9c/xb2 + /x9c/xb3 + /x9c/xb4 + /x9c/xb5 + /x9c/xb6 + /x9c/xb7 + /x9c/xb8 + /x9c/xb9 + /x9c/xba + /x9c/xbb + /x9c/xbc + /x9c/xbd + /x9c/xbe + /x9c/xbf + /x9c/xc0 + /x9c/xc1 + /x9c/xc2 + /x9c/xc3 + /x9c/xc4 + /x9c/xc5 + /x9c/xc6 + /x9c/xc7 + /x9c/xc8 + /x9c/xc9 + /x9c/xca + /x9c/xcb + /x9c/xcc + /x9c/xcd + /x9c/xce + /x9c/xcf + /x9c/xd0 + /x9c/xd1 + /x9c/xd2 + /x9c/xd3 + /x9c/xd4 + /x9c/xd5 + /x9c/xd6 + /x9c/xd7 + /x9c/xd8 + /x9c/xd9 + /x9c/xda + /x9c/xdb + /x9c/xdc + /x9c/xdd + /x9c/xde + /x9c/xdf + /x9c/xe0 + /x9c/xe1 + /x9c/xe2 + /x9c/xe3 + /x9c/xe4 + /x9c/xe5 + /x9c/xe6 + /x9c/xe7 + /x9c/xe8 + /x9c/xe9 + /x9c/xea + /x9c/xeb + /x9c/xec + /x9c/xed + /x9c/xee + /x9c/xef + /x9c/xf0 + /x9c/xf1 + /x9c/xf2 + /x9c/xf3 + /x9c/xf4 + /x9c/xf5 + /x9c/xf6 + /x9c/xf7 + /x9c/xf8 + /x9c/xf9 + /x9c/xfa + /x9c/xfb + /x9c/xfc + /x9d/x40 + /x9d/x41 + /x9d/x42 + /x9d/x43 + /x9d/x44 + /x9d/x45 + /x9d/x46 + /x9d/x47 + /x9d/x48 + /x9d/x49 + /x9d/x4a + /x9d/x4b + /x9d/x4c + /x9d/x4d + /x9d/x4e + /x9d/x4f + /x9d/x50 + /x9d/x51 + /x9d/x52 + /x9d/x53 + /x9d/x54 + /x9d/x55 + /x9d/x56 + /x9d/x57 + /x9d/x58 + /x9d/x59 + /x9d/x5a + /x9d/x5b + /x9d/x5c + /x9d/x5d + /x9d/x5e + /x9d/x5f + /x9d/x60 + /x9d/x61 + /x9d/x62 + /x9d/x63 + /x9d/x64 + /x9d/x65 + /x9d/x66 + /x9d/x67 + /x9d/x68 + /x9d/x69 + /x9d/x6a + /x9d/x6b + /x9d/x6c + /x9d/x6d + /x9d/x6e + /x9d/x6f + /x9d/x70 + /x9d/x71 + /x9d/x72 + /x9d/x73 + /x9d/x74 + /x9d/x75 + /x9d/x76 + /x9d/x77 + /x9d/x78 + /x9d/x79 + /x9d/x7a + /x9d/x7b + /x9d/x7c + /x9d/x7d + /x9d/x7e + /x9d/x80 + /x9d/x81 + /x9d/x82 + /x9d/x83 + /x9d/x84 + /x9d/x85 + /x9d/x86 + /x9d/x87 + /x9d/x88 + /x9d/x89 + /x9d/x8a + /x9d/x8b + /x9d/x8c + /x9d/x8d + /x9d/x8e + /x9d/x8f + /x9d/x90 + /x9d/x91 + /x9d/x92 + /x9d/x93 + /x9d/x94 + /x9d/x95 + /x9d/x96 + /x9d/x97 + /x9d/x98 + /x9d/x99 + /x9d/x9a + /x9d/x9b + /x9d/x9c + /x9d/x9d + /x9d/x9e + /x9d/x9f + /x9d/xa0 + /x9d/xa1 + /x9d/xa2 + /x9d/xa3 + /x9d/xa4 + /x9d/xa5 + /x9d/xa6 + /x9d/xa7 + /x9d/xa8 + /x9d/xa9 + /x9d/xaa + /x9d/xab + /x9d/xac + /x9d/xad + /x9d/xae + /x9d/xaf + /x9d/xb0 + /x9d/xb1 + /x9d/xb2 + /x9d/xb3 + /x9d/xb4 + /x9d/xb5 + /x9d/xb6 + /x9d/xb7 + /x9d/xb8 + /x9d/xb9 + /x9d/xba + /x9d/xbb + /x9d/xbc + /x9d/xbd + /x9d/xbe + /x9d/xbf + /x9d/xc0 + /x9d/xc1 + /x9d/xc2 + /x9d/xc3 + /x9d/xc4 + /x9d/xc5 + /x9d/xc6 + /x9d/xc7 + /x9d/xc8 + /x9d/xc9 + /x9d/xca + /x9d/xcb + /x9d/xcc + /x9d/xcd + /x9d/xce + /x9d/xcf + /x9d/xd0 + /x9d/xd1 + /x9d/xd2 + /x9d/xd3 + /x9d/xd4 + /x9d/xd5 + /x9d/xd6 + /x9d/xd7 + /x9d/xd8 + /x9d/xd9 + /x9d/xda + /x9d/xdb + /x9d/xdc + /x9d/xdd + /x9d/xde + /x9d/xdf + /x9d/xe0 + /x9d/xe1 + /x9d/xe2 + /x9d/xe3 + /x9d/xe4 + /x9d/xe5 + /x9d/xe6 + /x9d/xe7 + /x9d/xe8 + /x9d/xe9 + /x9d/xea + /x9d/xeb + /x9d/xec + /x9d/xed + /x9d/xee + /x9d/xef + /x9d/xf0 + /x9d/xf1 + /x9d/xf2 + /x9d/xf3 + /x9d/xf4 + /x9d/xf5 + /x9d/xf6 + /x9d/xf7 + /x9d/xf8 + /x9d/xf9 + /x9d/xfa + /x9d/xfb + /x9d/xfc + /x9e/x40 + /x9e/x41 + /x9e/x42 + /x9e/x43 + /x9e/x44 + /x9e/x45 + /x9e/x46 + /x9e/x47 + /x9e/x48 + /x9e/x49 + /x9e/x4a + /x9e/x4b + /x9e/x4c + /x9e/x4d + /x9e/x4e + /x9e/x4f + /x9e/x50 + /x9e/x51 + /x9e/x52 + /x9e/x53 + /x9e/x54 + /x9e/x55 + /x9e/x56 + /x9e/x57 + /x9e/x58 + /x9e/x59 + /x9e/x5a + /x9e/x5b + /x9e/x5c + /x9e/x5d + /x9e/x5e + /x9e/x5f + /x9e/x60 + /x9e/x61 + /x9e/x62 + /x9e/x63 + /x9e/x64 + /x9e/x65 + /x9e/x66 + /x9e/x67 + /x9e/x68 + /x9e/x69 + /x9e/x6a + /x9e/x6b + /x9e/x6c + /x9e/x6d + /x9e/x6e + /x9e/x6f + /x9e/x70 + /x9e/x71 + /x9e/x72 + /x9e/x73 + /x9e/x74 + /x9e/x75 + /x9e/x76 + /x9e/x77 + /x9e/x78 + /x9e/x79 + /x9e/x7a + /x9e/x7b + /x9e/x7c + /x9e/x7d + /x9e/x7e + /x9e/x80 + /x9e/x81 + /x9e/x82 + /x9e/x83 + /x9e/x84 + /x9e/x85 + /x9e/x86 + /x9e/x87 + /x9e/x88 + /x9e/x89 + /x9e/x8a + /x9e/x8b + /x9e/x8c + /x9e/x8d + /x9e/x8e + /x9e/x8f + /x9e/x90 + /x9e/x91 + /x9e/x92 + /x9e/x93 + /x9e/x94 + /x9e/x95 + /x9e/x96 + /x9e/x97 + /x9e/x98 + /x9e/x99 + /x9e/x9a + /x9e/x9b + /x9e/x9c + /x9e/x9d + /x9e/x9e + /x9e/x9f + /x9e/xa0 + /x9e/xa1 + /x9e/xa2 + /x9e/xa3 + /x9e/xa4 + /x9e/xa5 + /x9e/xa6 + /x9e/xa7 + /x9e/xa8 + /x9e/xa9 + /x9e/xaa + /x9e/xab + /x9e/xac + /x9e/xad + /x9e/xae + /x9e/xaf + /x9e/xb0 + /x9e/xb1 + /x9e/xb2 + /x9e/xb3 + /x9e/xb4 + /x9e/xb5 + /x9e/xb6 + /x9e/xb7 + /x9e/xb8 + /x9e/xb9 + /x9e/xba + /x9e/xbb + /x9e/xbc + /x9e/xbd + /x9e/xbe + /x9e/xbf + /x9e/xc0 + /x9e/xc1 + /x9e/xc2 + /x9e/xc3 + /x9e/xc4 + /x9e/xc5 + /x9e/xc6 + /x9e/xc7 + /x9e/xc8 + /x9e/xc9 + /x9e/xca + /x9e/xcb + /x9e/xcc + /x9e/xcd + /x9e/xce + /x9e/xcf + /x9e/xd0 + /x9e/xd1 + /x9e/xd2 + /x9e/xd3 + /x9e/xd4 + /x9e/xd5 + /x9e/xd6 + /x9e/xd7 + /x9e/xd8 + /x9e/xd9 + /x9e/xda + /x9e/xdb + /x9e/xdc + /x9e/xdd + /x9e/xde + /x9e/xdf + /x9e/xe0 + /x9e/xe1 + /x9e/xe2 + /x9e/xe3 + /x9e/xe4 + /x9e/xe5 + /x9e/xe6 + /x9e/xe7 + /x9e/xe8 + /x9e/xe9 + /x9e/xea + /x9e/xeb + /x9e/xec + /x9e/xed + /x9e/xee + /x9e/xef + /x9e/xf0 + /x9e/xf1 + /x9e/xf2 + /x9e/xf3 + /x9e/xf4 + /x9e/xf5 + /x9e/xf6 + /x9e/xf7 + /x9e/xf8 + /x9e/xf9 + /x9e/xfa + /x9e/xfb + /x9e/xfc + /x9f/x40 + /x9f/x41 + /x9f/x42 + /x9f/x43 + /x9f/x44 + /x9f/x45 + /x9f/x46 + /x9f/x47 + /x9f/x48 + /x9f/x49 + /x9f/x4a + /x9f/x4b + /x9f/x4c + /x9f/x4d + /x9f/x4e + /x9f/x4f + /x9f/x50 + /x9f/x51 + /x9f/x52 + /x9f/x53 + /x9f/x54 + /x9f/x55 + /x9f/x56 + /x9f/x57 + /x9f/x58 + /x9f/x59 + /x9f/x5a + /x9f/x5b + /x9f/x5c + /x9f/x5d + /x9f/x5e + /x9f/x5f + /x9f/x60 + /x9f/x61 + /x9f/x62 + /x9f/x63 + /x9f/x64 + /x9f/x65 + /x9f/x66 + /x9f/x67 + /x9f/x68 + /x9f/x69 + /x9f/x6a + /x9f/x6b + /x9f/x6c + /x9f/x6d + /x9f/x6e + /x9f/x6f + /x9f/x70 + /x9f/x71 + /x9f/x72 + /x9f/x73 + /x9f/x74 + /x9f/x75 + /x9f/x76 + /x9f/x77 + /x9f/x78 + /x9f/x79 + /x9f/x7a + /x9f/x7b + /x9f/x7c + /x9f/x7d + /x9f/x7e + /x9f/x80 + /x9f/x81 + /x9f/x82 + /x9f/x83 + /x9f/x84 + /x9f/x85 + /x9f/x86 + /x9f/x87 + /x9f/x88 + /x9f/x89 + /x9f/x8a + /x9f/x8b + /x9f/x8c + /x9f/x8d + /x9f/x8e + /x9f/x8f + /x9f/x90 + /x9f/x91 + /x9f/x92 + /x9f/x93 + /x9f/x94 + /x9f/x95 + /x9f/x96 + /x9f/x97 + /x9f/x98 + /x9f/x99 + /x9f/x9a + /x9f/x9b + /x9f/x9c + /x9f/x9d + /x9f/x9e + /x9f/x9f + /x9f/xa0 + /x9f/xa1 + /x9f/xa2 + /x9f/xa3 + /x9f/xa4 + /x9f/xa5 + /x9f/xa6 + /x9f/xa7 + /x9f/xa8 + /x9f/xa9 + /x9f/xaa + /x9f/xab + /x9f/xac + /x9f/xad + /x9f/xae + /x9f/xaf + /x9f/xb0 + /x9f/xb1 + /x9f/xb2 + /x9f/xb3 + /x9f/xb4 + /x9f/xb5 + /x9f/xb6 + /x9f/xb7 + /x9f/xb8 + /x9f/xb9 + /x9f/xba + /x9f/xbb + /x9f/xbc + /x9f/xbd + /x9f/xbe + /x9f/xbf + /x9f/xc0 + /x9f/xc1 + /x9f/xc2 + /x9f/xc3 + /x9f/xc4 + /x9f/xc5 + /x9f/xc6 + /x9f/xc7 + /x9f/xc8 + /x9f/xc9 + /x9f/xca + /x9f/xcb + /x9f/xcc + /x9f/xcd + /x9f/xce + /x9f/xcf + /x9f/xd0 + /x9f/xd1 + /x9f/xd2 + /x9f/xd3 + /x9f/xd4 + /x9f/xd5 + /x9f/xd6 + /x9f/xd7 + /x9f/xd8 + /x9f/xd9 + /x9f/xda + /x9f/xdb + /x9f/xdc + /x9f/xdd + /x9f/xde + /x9f/xdf + /x9f/xe0 + /x9f/xe1 + /x9f/xe2 + /x9f/xe3 + /x9f/xe4 + /x9f/xe5 + /x9f/xe6 + /x9f/xe7 + /x9f/xe8 + /x9f/xe9 + /x9f/xea + /x9f/xeb + /x9f/xec + /x9f/xed + /x9f/xee + /x9f/xef + /x9f/xf0 + /x9f/xf1 + /x9f/xf2 + /x9f/xf3 + /x9f/xf4 + /x9f/xf5 + /x9f/xf6 + /x9f/xf7 + /x9f/xf8 + /x9f/xf9 + /x9f/xfa + /x9f/xfb + /x9f/xfc + + /xa1 HALFWIDTH IDEOGRAPHIC FULL STOP + /xa2 HALFWIDTH LEFT CORNER BRACKET + /xa3 HALFWIDTH RIGHT CORNER BRACKET + /xa4 HALFWIDTH IDEOGRAPHIC COMMA + /xa5 HALFWIDTH KATAKANA MIDDLE DOT + /xa6 HALFWIDTH KATAKANA LETTER WO + /xa7 HALFWIDTH KATAKANA LETTER SMALL A + /xa8 HALFWIDTH KATAKANA LETTER SMALL I + /xa9 HALFWIDTH KATAKANA LETTER SMALL U + /xaa HALFWIDTH KATAKANA LETTER SMALL E + /xab HALFWIDTH KATAKANA LETTER SMALL O + /xac HALFWIDTH KATAKANA LETTER SMALL YA + /xad HALFWIDTH KATAKANA LETTER SMALL YU + /xae HALFWIDTH KATAKANA LETTER SMALL YO + /xaf HALFWIDTH KATAKANA LETTER SMALL TU + /xb0 HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK + /xb1 HALFWIDTH KATAKANA LETTER A + /xb2 HALFWIDTH KATAKANA LETTER I + /xb3 HALFWIDTH KATAKANA LETTER U + /xb4 HALFWIDTH KATAKANA LETTER E + /xb5 HALFWIDTH KATAKANA LETTER O + /xb6 HALFWIDTH KATAKANA LETTER KA + /xb7 HALFWIDTH KATAKANA LETTER KI + /xb8 HALFWIDTH KATAKANA LETTER KU + /xb9 HALFWIDTH KATAKANA LETTER KE + /xba HALFWIDTH KATAKANA LETTER KO + /xbb HALFWIDTH KATAKANA LETTER SA + /xbc HALFWIDTH KATAKANA LETTER SI + /xbd HALFWIDTH KATAKANA LETTER SU + /xbe HALFWIDTH KATAKANA LETTER SE + /xbf HALFWIDTH KATAKANA LETTER SO + /xc0 HALFWIDTH KATAKANA LETTER TA + /xc1 HALFWIDTH KATAKANA LETTER TI + /xc2 HALFWIDTH KATAKANA LETTER TU + /xc3 HALFWIDTH KATAKANA LETTER TE + /xc4 HALFWIDTH KATAKANA LETTER TO + /xc5 HALFWIDTH KATAKANA LETTER NA + /xc6 HALFWIDTH KATAKANA LETTER NI + /xc7 HALFWIDTH KATAKANA LETTER NU + /xc8 HALFWIDTH KATAKANA LETTER NE + /xc9 HALFWIDTH KATAKANA LETTER NO + /xca HALFWIDTH KATAKANA LETTER HA + /xcb HALFWIDTH KATAKANA LETTER HI + /xcc HALFWIDTH KATAKANA LETTER HU + /xcd HALFWIDTH KATAKANA LETTER HE + /xce HALFWIDTH KATAKANA LETTER HO + /xcf HALFWIDTH KATAKANA LETTER MA + /xd0 HALFWIDTH KATAKANA LETTER MI + /xd1 HALFWIDTH KATAKANA LETTER MU + /xd2 HALFWIDTH KATAKANA LETTER ME + /xd3 HALFWIDTH KATAKANA LETTER MO + /xd4 HALFWIDTH KATAKANA LETTER YA + /xd5 HALFWIDTH KATAKANA LETTER YU + /xd6 HALFWIDTH KATAKANA LETTER YO + /xd7 HALFWIDTH KATAKANA LETTER RA + /xd8 HALFWIDTH KATAKANA LETTER RI + /xd9 HALFWIDTH KATAKANA LETTER RU + /xda HALFWIDTH KATAKANA LETTER RE + /xdb HALFWIDTH KATAKANA LETTER RO + /xdc HALFWIDTH KATAKANA LETTER WA + /xdd HALFWIDTH KATAKANA LETTER N + /xde HALFWIDTH KATAKANA VOICED SOUND MARK + /xdf HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK + + /xe0/x40 + /xe0/x41 + /xe0/x42 + /xe0/x43 + /xe0/x44 + /xe0/x45 + /xe0/x46 + /xe0/x47 + /xe0/x48 + /xe0/x49 + /xe0/x4a + /xe0/x4b + /xe0/x4c + /xe0/x4d + /xe0/x4e + /xe0/x4f + /xe0/x50 + /xe0/x51 + /xe0/x52 + /xe0/x53 + /xe0/x54 + /xe0/x55 + /xe0/x56 + /xe0/x57 + /xe0/x58 + /xe0/x59 + /xe0/x5a + /xe0/x5b + /xe0/x5c + /xe0/x5d + /xe0/x5e + /xe0/x5f + /xe0/x60 + /xe0/x61 + /xe0/x62 + /xe0/x63 + /xe0/x64 + /xe0/x65 + /xe0/x66 + /xe0/x67 + /xe0/x68 + /xe0/x69 + /xe0/x6a + /xe0/x6b + /xe0/x6c + /xe0/x6d + /xe0/x6e + /xe0/x6f + /xe0/x70 + /xe0/x71 + /xe0/x72 + /xe0/x73 + /xe0/x74 + /xe0/x75 + /xe0/x76 + /xe0/x77 + /xe0/x78 + /xe0/x79 + /xe0/x7a + /xe0/x7b + /xe0/x7c + /xe0/x7d + /xe0/x7e + /xe0/x80 + /xe0/x81 + /xe0/x82 + /xe0/x83 + /xe0/x84 + /xe0/x85 + /xe0/x86 + /xe0/x87 + /xe0/x88 + /xe0/x89 + /xe0/x8a + /xe0/x8b + /xe0/x8c + /xe0/x8d + /xe0/x8e + /xe0/x8f + /xe0/x90 + /xe0/x91 + /xe0/x92 + /xe0/x93 + /xe0/x94 + /xe0/x95 + /xe0/x96 + /xe0/x97 + /xe0/x98 + /xe0/x99 + /xe0/x9a + /xe0/x9b + /xe0/x9c + /xe0/x9d + /xe0/x9e + /xe0/x9f + /xe0/xa0 + /xe0/xa1 + /xe0/xa2 + /xe0/xa3 + /xe0/xa4 + /xe0/xa5 + /xe0/xa6 + /xe0/xa7 + /xe0/xa8 + /xe0/xa9 + /xe0/xaa + /xe0/xab + /xe0/xac + /xe0/xad + /xe0/xae + /xe0/xaf + /xe0/xb0 + /xe0/xb1 + /xe0/xb2 + /xe0/xb3 + /xe0/xb4 + /xe0/xb5 + /xe0/xb6 + /xe0/xb7 + /xe0/xb8 + /xe0/xb9 + /xe0/xba + /xe0/xbb + /xe0/xbc + /xe0/xbd + /xe0/xbe + /xe0/xbf + /xe0/xc0 + /xe0/xc1 + /xe0/xc2 + /xe0/xc3 + /xe0/xc4 + /xe0/xc5 + /xe0/xc6 + /xe0/xc7 + /xe0/xc8 + /xe0/xc9 + /xe0/xca + /xe0/xcb + /xe0/xcc + /xe0/xcd + /xe0/xce + /xe0/xcf + /xe0/xd0 + /xe0/xd1 + /xe0/xd2 + /xe0/xd3 + /xe0/xd4 + /xe0/xd5 + /xe0/xd6 + /xe0/xd7 + /xe0/xd8 + /xe0/xd9 + /xe0/xda + /xe0/xdb + /xe0/xdc + /xe0/xdd + /xe0/xde + /xe0/xdf + /xe0/xe0 + /xe0/xe1 + /xe0/xe2 + /xe0/xe3 + /xe0/xe4 + /xe0/xe5 + /xe0/xe6 + /xe0/xe7 + /xe0/xe8 + /xe0/xe9 + /xe0/xea + /xe0/xeb + /xe0/xec + /xe0/xed + /xe0/xee + /xe0/xef + /xe0/xf0 + /xe0/xf1 + /xe0/xf2 + /xe0/xf3 + /xe0/xf4 + /xe0/xf5 + /xe0/xf6 + /xe0/xf7 + /xe0/xf8 + /xe0/xf9 + /xe0/xfa + /xe0/xfb + /xe0/xfc + /xe1/x40 + /xe1/x41 + /xe1/x42 + /xe1/x43 + /xe1/x44 + /xe1/x45 + /xe1/x46 + /xe1/x47 + /xe1/x48 + /xe1/x49 + /xe1/x4a + /xe1/x4b + /xe1/x4c + /xe1/x4d + /xe1/x4e + /xe1/x4f + /xe1/x50 + /xe1/x51 + /xe1/x52 + /xe1/x53 + /xe1/x54 + /xe1/x55 + /xe1/x56 + /xe1/x57 + /xe1/x58 + /xe1/x59 + /xe1/x5a + /xe1/x5b + /xe1/x5c + /xe1/x5d + /xe1/x5e + /xe1/x5f + /xe1/x60 + /xe1/x61 + /xe1/x62 + /xe1/x63 + /xe1/x64 + /xe1/x65 + /xe1/x66 + /xe1/x67 + /xe1/x68 + /xe1/x69 + /xe1/x6a + /xe1/x6b + /xe1/x6c + /xe1/x6d + /xe1/x6e + /xe1/x6f + /xe1/x70 + /xe1/x71 + /xe1/x72 + /xe1/x73 + /xe1/x74 + /xe1/x75 + /xe1/x76 + /xe1/x77 + /xe1/x78 + /xe1/x79 + /xe1/x7a + /xe1/x7b + /xe1/x7c + /xe1/x7d + /xe1/x7e + /xe1/x80 + /xe1/x81 + /xe1/x82 + /xe1/x83 + /xe1/x84 + /xe1/x85 + /xe1/x86 + /xe1/x87 + /xe1/x88 + /xe1/x89 + /xe1/x8a + /xe1/x8b + /xe1/x8c + /xe1/x8d + /xe1/x8e + /xe1/x8f + /xe1/x90 + /xe1/x91 + /xe1/x92 + /xe1/x93 + /xe1/x94 + /xe1/x95 + /xe1/x96 + /xe1/x97 + /xe1/x98 + /xe1/x99 + /xe1/x9a + /xe1/x9b + /xe1/x9c + /xe1/x9d + /xe1/x9e + /xe1/x9f + /xe1/xa0 + /xe1/xa1 + /xe1/xa2 + /xe1/xa3 + /xe1/xa4 + /xe1/xa5 + /xe1/xa6 + /xe1/xa7 + /xe1/xa8 + /xe1/xa9 + /xe1/xaa + /xe1/xab + /xe1/xac + /xe1/xad + /xe1/xae + /xe1/xaf + /xe1/xb0 + /xe1/xb1 + /xe1/xb2 + /xe1/xb3 + /xe1/xb4 + /xe1/xb5 + /xe1/xb6 + /xe1/xb7 + /xe1/xb8 + /xe1/xb9 + /xe1/xba + /xe1/xbb + /xe1/xbc + /xe1/xbd + /xe1/xbe + /xe1/xbf + /xe1/xc0 + /xe1/xc1 + /xe1/xc2 + /xe1/xc3 + /xe1/xc4 + /xe1/xc5 + /xe1/xc6 + /xe1/xc7 + /xe1/xc8 + /xe1/xc9 + /xe1/xca + /xe1/xcb + /xe1/xcc + /xe1/xcd + /xe1/xce + /xe1/xcf + /xe1/xd0 + /xe1/xd1 + /xe1/xd2 + /xe1/xd3 + /xe1/xd4 + /xe1/xd5 + /xe1/xd6 + /xe1/xd7 + /xe1/xd8 + /xe1/xd9 + /xe1/xda + /xe1/xdb + /xe1/xdc + /xe1/xdd + /xe1/xde + /xe1/xdf + /xe1/xe0 + /xe1/xe1 + /xe1/xe2 + /xe1/xe3 + /xe1/xe4 + /xe1/xe5 + /xe1/xe6 + /xe1/xe7 + /xe1/xe8 + /xe1/xe9 + /xe1/xea + /xe1/xeb + /xe1/xec + /xe1/xed + /xe1/xee + /xe1/xef + /xe1/xf0 + /xe1/xf1 + /xe1/xf2 + /xe1/xf3 + /xe1/xf4 + /xe1/xf5 + /xe1/xf6 + /xe1/xf7 + /xe1/xf8 + /xe1/xf9 + /xe1/xfa + /xe1/xfb + /xe1/xfc + /xe2/x40 + /xe2/x41 + /xe2/x42 + /xe2/x43 + /xe2/x44 + /xe2/x45 + /xe2/x46 + /xe2/x47 + /xe2/x48 + /xe2/x49 + /xe2/x4a + /xe2/x4b + /xe2/x4c + /xe2/x4d + /xe2/x4e + /xe2/x4f + /xe2/x50 + /xe2/x51 + /xe2/x52 + /xe2/x53 + /xe2/x54 + /xe2/x55 + /xe2/x56 + /xe2/x57 + /xe2/x58 + /xe2/x59 + /xe2/x5a + /xe2/x5b + /xe2/x5c + /xe2/x5d + /xe2/x5e + /xe2/x5f + /xe2/x60 + /xe2/x61 + /xe2/x62 + /xe2/x63 + /xe2/x64 + /xe2/x65 + /xe2/x66 + /xe2/x67 + /xe2/x68 + /xe2/x69 + /xe2/x6a + /xe2/x6b + /xe2/x6c + /xe2/x6d + /xe2/x6e + /xe2/x6f + /xe2/x70 + /xe2/x71 + /xe2/x72 + /xe2/x73 + /xe2/x74 + /xe2/x75 + /xe2/x76 + /xe2/x77 + /xe2/x78 + /xe2/x79 + /xe2/x7a + /xe2/x7b + /xe2/x7c + /xe2/x7d + /xe2/x7e + /xe2/x80 + /xe2/x81 + /xe2/x82 + /xe2/x83 + /xe2/x84 + /xe2/x85 + /xe2/x86 + /xe2/x87 + /xe2/x88 + /xe2/x89 + /xe2/x8a + /xe2/x8b + /xe2/x8c + /xe2/x8d + /xe2/x8e + /xe2/x8f + /xe2/x90 + /xe2/x91 + /xe2/x92 + /xe2/x93 + /xe2/x94 + /xe2/x95 + /xe2/x96 + /xe2/x97 + /xe2/x98 + /xe2/x99 + /xe2/x9a + /xe2/x9b + /xe2/x9c + /xe2/x9d + /xe2/x9e + /xe2/x9f + /xe2/xa0 + /xe2/xa1 + /xe2/xa2 + /xe2/xa3 + /xe2/xa4 + /xe2/xa5 + /xe2/xa6 + /xe2/xa7 + /xe2/xa8 + /xe2/xa9 + /xe2/xaa + /xe2/xab + /xe2/xac + /xe2/xad + /xe2/xae + /xe2/xaf + /xe2/xb0 + /xe2/xb1 + /xe2/xb2 + /xe2/xb3 + /xe2/xb4 + /xe2/xb5 + /xe2/xb6 + /xe2/xb7 + /xe2/xb8 + /xe2/xb9 + /xe2/xba + /xe2/xbb + /xe2/xbc + /xe2/xbd + /xe2/xbe + /xe2/xbf + /xe2/xc0 + /xe2/xc1 + /xe2/xc2 + /xe2/xc3 + /xe2/xc4 + /xe2/xc5 + /xe2/xc6 + /xe2/xc7 + /xe2/xc8 + /xe2/xc9 + /xe2/xca + /xe2/xcb + /xe2/xcc + /xe2/xcd + /xe2/xce + /xe2/xcf + /xe2/xd0 + /xe2/xd1 + /xe2/xd2 + /xe2/xd3 + /xe2/xd4 + /xe2/xd5 + /xe2/xd6 + /xe2/xd7 + /xe2/xd8 + /xe2/xd9 + /xe2/xda + /xe2/xdb + /xe2/xdc + /xe2/xdd + /xe2/xde + /xe2/xdf + /xe2/xe0 + /xe2/xe1 + /xe2/xe2 + /xe2/xe3 + /xe2/xe4 + /xe2/xe5 + /xe2/xe6 + /xe2/xe7 + /xe2/xe8 + /xe2/xe9 + /xe2/xea + /xe2/xeb + /xe2/xec + /xe2/xed + /xe2/xee + /xe2/xef + /xe2/xf0 + /xe2/xf1 + /xe2/xf2 + /xe2/xf3 + /xe2/xf4 + /xe2/xf5 + /xe2/xf6 + /xe2/xf7 + /xe2/xf8 + /xe2/xf9 + /xe2/xfa + /xe2/xfb + /xe2/xfc + /xe3/x40 + /xe3/x41 + /xe3/x42 + /xe3/x43 + /xe3/x44 + /xe3/x45 + /xe3/x46 + /xe3/x47 + /xe3/x48 + /xe3/x49 + /xe3/x4a + /xe3/x4b + /xe3/x4c + /xe3/x4d + /xe3/x4e + /xe3/x4f + /xe3/x50 + /xe3/x51 + /xe3/x52 + /xe3/x53 + /xe3/x54 + /xe3/x55 + /xe3/x56 + /xe3/x57 + /xe3/x58 + /xe3/x59 + /xe3/x5a + /xe3/x5b + /xe3/x5c + /xe3/x5d + /xe3/x5e + /xe3/x5f + /xe3/x60 + /xe3/x61 + /xe3/x62 + /xe3/x63 + /xe3/x64 + /xe3/x65 + /xe3/x66 + /xe3/x67 + /xe3/x68 + /xe3/x69 + /xe3/x6a + /xe3/x6b + /xe3/x6c + /xe3/x6d + /xe3/x6e + /xe3/x6f + /xe3/x70 + /xe3/x71 + /xe3/x72 + /xe3/x73 + /xe3/x74 + /xe3/x75 + /xe3/x76 + /xe3/x77 + /xe3/x78 + /xe3/x79 + /xe3/x7a + /xe3/x7b + /xe3/x7c + /xe3/x7d + /xe3/x7e + /xe3/x80 + /xe3/x81 + /xe3/x82 + /xe3/x83 + /xe3/x84 + /xe3/x85 + /xe3/x86 + /xe3/x87 + /xe3/x88 + /xe3/x89 + /xe3/x8a + /xe3/x8b + /xe3/x8c + /xe3/x8d + /xe3/x8e + /xe3/x8f + /xe3/x90 + /xe3/x91 + /xe3/x92 + /xe3/x93 + /xe3/x94 + /xe3/x95 + /xe3/x96 + /xe3/x97 + /xe3/x98 + /xe3/x99 + /xe3/x9a + /xe3/x9b + /xe3/x9c + /xe3/x9d + /xe3/x9e + /xe3/x9f + /xe3/xa0 + /xe3/xa1 + /xe3/xa2 + /xe3/xa3 + /xe3/xa4 + /xe3/xa5 + /xe3/xa6 + /xe3/xa7 + /xe3/xa8 + /xe3/xa9 + /xe3/xaa + /xe3/xab + /xe3/xac + /xe3/xad + /xe3/xae + /xe3/xaf + /xe3/xb0 + /xe3/xb1 + /xe3/xb2 + /xe3/xb3 + /xe3/xb4 + /xe3/xb5 + /xe3/xb6 + /xe3/xb7 + /xe3/xb8 + /xe3/xb9 + /xe3/xba + /xe3/xbb + /xe3/xbc + /xe3/xbd + /xe3/xbe + /xe3/xbf + /xe3/xc0 + /xe3/xc1 + /xe3/xc2 + /xe3/xc3 + /xe3/xc4 + /xe3/xc5 + /xe3/xc6 + /xe3/xc7 + /xe3/xc8 + /xe3/xc9 + /xe3/xca + /xe3/xcb + /xe3/xcc + /xe3/xcd + /xe3/xce + /xe3/xcf + /xe3/xd0 + /xe3/xd1 + /xe3/xd2 + /xe3/xd3 + /xe3/xd4 + /xe3/xd5 + /xe3/xd6 + /xe3/xd7 + /xe3/xd8 + /xe3/xd9 + /xe3/xda + /xe3/xdb + /xe3/xdc + /xe3/xdd + /xe3/xde + /xe3/xdf + /xe3/xe0 + /xe3/xe1 + /xe3/xe2 + /xe3/xe3 + /xe3/xe4 + /xe3/xe5 + /xe3/xe6 + /xe3/xe7 + /xe3/xe8 + /xe3/xe9 + /xe3/xea + /xe3/xeb + /xe3/xec + /xe3/xed + /xe3/xee + /xe3/xef + /xe3/xf0 + /xe3/xf1 + /xe3/xf2 + /xe3/xf3 + /xe3/xf4 + /xe3/xf5 + /xe3/xf6 + /xe3/xf7 + /xe3/xf8 + /xe3/xf9 + /xe3/xfa + /xe3/xfb + /xe3/xfc + /xe4/x40 + /xe4/x41 + /xe4/x42 + /xe4/x43 + /xe4/x44 + /xe4/x45 + /xe4/x46 + /xe4/x47 + /xe4/x48 + /xe4/x49 + /xe4/x4a + /xe4/x4b + /xe4/x4c + /xe4/x4d + /xe4/x4e + /xe4/x4f + /xe4/x50 + /xe4/x51 + /xe4/x52 + /xe4/x53 + /xe4/x54 + /xe4/x55 + /xe4/x56 + /xe4/x57 + /xe4/x58 + /xe4/x59 + /xe4/x5a + /xe4/x5b + /xe4/x5c + /xe4/x5d + /xe4/x5e + /xe4/x5f + /xe4/x60 + /xe4/x61 + /xe4/x62 + /xe4/x63 + /xe4/x64 + /xe4/x65 + /xe4/x66 + /xe4/x67 + /xe4/x68 + /xe4/x69 + /xe4/x6a + /xe4/x6b + /xe4/x6c + /xe4/x6d + /xe4/x6e + /xe4/x6f + /xe4/x70 + /xe4/x71 + /xe4/x72 + /xe4/x73 + /xe4/x74 + /xe4/x75 + /xe4/x76 + /xe4/x77 + /xe4/x78 + /xe4/x79 + /xe4/x7a + /xe4/x7b + /xe4/x7c + /xe4/x7d + /xe4/x7e + /xe4/x80 + /xe4/x81 + /xe4/x82 + /xe4/x83 + /xe4/x84 + /xe4/x85 + /xe4/x86 + /xe4/x87 + /xe4/x88 + /xe4/x89 + /xe4/x8a + /xe4/x8b + /xe4/x8c + /xe4/x8d + /xe4/x8e + /xe4/x8f + /xe4/x90 + /xe4/x91 + /xe4/x92 + /xe4/x93 + /xe4/x94 + /xe4/x95 + /xe4/x96 + /xe4/x97 + /xe4/x98 + /xe4/x99 + /xe4/x9a + /xe4/x9b + /xe4/x9c + /xe4/x9d + /xe4/x9e + /xe4/x9f + /xe4/xa0 + /xe4/xa1 + /xe4/xa2 + /xe4/xa3 + /xe4/xa4 + /xe4/xa5 + /xe4/xa6 + /xe4/xa7 + /xe4/xa8 + /xe4/xa9 + /xe4/xaa + /xe4/xab + /xe4/xac + /xe4/xad + /xe4/xae + /xe4/xaf + /xe4/xb0 + /xe4/xb1 + /xe4/xb2 + /xe4/xb3 + /xe4/xb4 + /xe4/xb5 + /xe4/xb6 + /xe4/xb7 + /xe4/xb8 + /xe4/xb9 + /xe4/xba + /xe4/xbb + /xe4/xbc + /xe4/xbd + /xe4/xbe + /xe4/xbf + /xe4/xc0 + /xe4/xc1 + /xe4/xc2 + /xe4/xc3 + /xe4/xc4 + /xe4/xc5 + /xe4/xc6 + /xe4/xc7 + /xe4/xc8 + /xe4/xc9 + /xe4/xca + /xe4/xcb + /xe4/xcc + /xe4/xcd + /xe4/xce + /xe4/xcf + /xe4/xd0 + /xe4/xd1 + /xe4/xd2 + /xe4/xd3 + /xe4/xd4 + /xe4/xd5 + /xe4/xd6 + /xe4/xd7 + /xe4/xd8 + /xe4/xd9 + /xe4/xda + /xe4/xdb + /xe4/xdc + /xe4/xdd + /xe4/xde + /xe4/xdf + /xe4/xe0 + /xe4/xe1 + /xe4/xe2 + /xe4/xe3 + /xe4/xe4 + /xe4/xe5 + /xe4/xe6 + /xe4/xe7 + /xe4/xe8 + /xe4/xe9 + /xe4/xea + /xe4/xeb + /xe4/xec + /xe4/xed + /xe4/xee + /xe4/xef + /xe4/xf0 + /xe4/xf1 + /xe4/xf2 + /xe4/xf3 + /xe4/xf4 + /xe4/xf5 + /xe4/xf6 + /xe4/xf7 + /xe4/xf8 + /xe4/xf9 + /xe4/xfa + /xe4/xfb + /xe4/xfc + /xe5/x40 + /xe5/x41 + /xe5/x42 + /xe5/x43 + /xe5/x44 + /xe5/x45 + /xe5/x46 + /xe5/x47 + /xe5/x48 + /xe5/x49 + /xe5/x4a + /xe5/x4b + /xe5/x4c + /xe5/x4d + /xe5/x4e + /xe5/x4f + /xe5/x50 + /xe5/x51 + /xe5/x52 + /xe5/x53 + /xe5/x54 + /xe5/x55 + /xe5/x56 + /xe5/x57 + /xe5/x58 + /xe5/x59 + /xe5/x5a + /xe5/x5b + /xe5/x5c + /xe5/x5d + /xe5/x5e + /xe5/x5f + /xe5/x60 + /xe5/x61 + /xe5/x62 + /xe5/x63 + /xe5/x64 + /xe5/x65 + /xe5/x66 + /xe5/x67 + /xe5/x68 + /xe5/x69 + /xe5/x6a + /xe5/x6b + /xe5/x6c + /xe5/x6d + /xe5/x6e + /xe5/x6f + /xe5/x70 + /xe5/x71 + /xe5/x72 + /xe5/x73 + /xe5/x74 + /xe5/x75 + /xe5/x76 + /xe5/x77 + /xe5/x78 + /xe5/x79 + /xe5/x7a + /xe5/x7b + /xe5/x7c + /xe5/x7d + /xe5/x7e + /xe5/x80 + /xe5/x81 + /xe5/x82 + /xe5/x83 + /xe5/x84 + /xe5/x85 + /xe5/x86 + /xe5/x87 + /xe5/x88 + /xe5/x89 + /xe5/x8a + /xe5/x8b + /xe5/x8c + /xe5/x8d + /xe5/x8e + /xe5/x8f + /xe5/x90 + /xe5/x91 + /xe5/x92 + /xe5/x93 + /xe5/x94 + /xe5/x95 + /xe5/x96 + /xe5/x97 + /xe5/x98 + /xe5/x99 + /xe5/x9a + /xe5/x9b + /xe5/x9c + /xe5/x9d + /xe5/x9e + /xe5/x9f + /xe5/xa0 + /xe5/xa1 + /xe5/xa2 + /xe5/xa3 + /xe5/xa4 + /xe5/xa5 + /xe5/xa6 + /xe5/xa7 + /xe5/xa8 + /xe5/xa9 + /xe5/xaa + /xe5/xab + /xe5/xac + /xe5/xad + /xe5/xae + /xe5/xaf + /xe5/xb0 + /xe5/xb1 + /xe5/xb2 + /xe5/xb3 + /xe5/xb4 + /xe5/xb5 + /xe5/xb6 + /xe5/xb7 + /xe5/xb8 + /xe5/xb9 + /xe5/xba + /xe5/xbb + /xe5/xbc + /xe5/xbd + /xe5/xbe + /xe5/xbf + /xe5/xc0 + /xe5/xc1 + /xe5/xc2 + /xe5/xc3 + /xe5/xc4 + /xe5/xc5 + /xe5/xc6 + /xe5/xc7 + /xe5/xc8 + /xe5/xc9 + /xe5/xca + /xe5/xcb + /xe5/xcc + /xe5/xcd + /xe5/xce + /xe5/xcf + /xe5/xd0 + /xe5/xd1 + /xe5/xd2 + /xe5/xd3 + /xe5/xd4 + /xe5/xd5 + /xe5/xd6 + /xe5/xd7 + /xe5/xd8 + /xe5/xd9 + /xe5/xda + /xe5/xdb + /xe5/xdc + /xe5/xdd + /xe5/xde + /xe5/xdf + /xe5/xe0 + /xe5/xe1 + /xe5/xe2 + /xe5/xe3 + /xe5/xe4 + /xe5/xe5 + /xe5/xe6 + /xe5/xe7 + /xe5/xe8 + /xe5/xe9 + /xe5/xea + /xe5/xeb + /xe5/xec + /xe5/xed + /xe5/xee + /xe5/xef + /xe5/xf0 + /xe5/xf1 + /xe5/xf2 + /xe5/xf3 + /xe5/xf4 + /xe5/xf5 + /xe5/xf6 + /xe5/xf7 + /xe5/xf8 + /xe5/xf9 + /xe5/xfa + /xe5/xfb + /xe5/xfc + /xe6/x40 + /xe6/x41 + /xe6/x42 + /xe6/x43 + /xe6/x44 + /xe6/x45 + /xe6/x46 + /xe6/x47 + /xe6/x48 + /xe6/x49 + /xe6/x4a + /xe6/x4b + /xe6/x4c + /xe6/x4d + /xe6/x4e + /xe6/x4f + /xe6/x50 + /xe6/x51 + /xe6/x52 + /xe6/x53 + /xe6/x54 + /xe6/x55 + /xe6/x56 + /xe6/x57 + /xe6/x58 + /xe6/x59 + /xe6/x5a + /xe6/x5b + /xe6/x5c + /xe6/x5d + /xe6/x5e + /xe6/x5f + /xe6/x60 + /xe6/x61 + /xe6/x62 + /xe6/x63 + /xe6/x64 + /xe6/x65 + /xe6/x66 + /xe6/x67 + /xe6/x68 + /xe6/x69 + /xe6/x6a + /xe6/x6b + /xe6/x6c + /xe6/x6d + /xe6/x6e + /xe6/x6f + /xe6/x70 + /xe6/x71 + /xe6/x72 + /xe6/x73 + /xe6/x74 + /xe6/x75 + /xe6/x76 + /xe6/x77 + /xe6/x78 + /xe6/x79 + /xe6/x7a + /xe6/x7b + /xe6/x7c + /xe6/x7d + /xe6/x7e + /xe6/x80 + /xe6/x81 + /xe6/x82 + /xe6/x83 + /xe6/x84 + /xe6/x85 + /xe6/x86 + /xe6/x87 + /xe6/x88 + /xe6/x89 + /xe6/x8a + /xe6/x8b + /xe6/x8c + /xe6/x8d + /xe6/x8e + /xe6/x8f + /xe6/x90 + /xe6/x91 + /xe6/x92 + /xe6/x93 + /xe6/x94 + /xe6/x95 + /xe6/x96 + /xe6/x97 + /xe6/x98 + /xe6/x99 + /xe6/x9a + /xe6/x9b + /xe6/x9c + /xe6/x9d + /xe6/x9e + /xe6/x9f + /xe6/xa0 + /xe6/xa1 + /xe6/xa2 + /xe6/xa3 + /xe6/xa4 + /xe6/xa5 + /xe6/xa6 + /xe6/xa7 + /xe6/xa8 + /xe6/xa9 + /xe6/xaa + /xe6/xab + /xe6/xac + /xe6/xad + /xe6/xae + /xe6/xaf + /xe6/xb0 + /xe6/xb1 + /xe6/xb2 + /xe6/xb3 + /xe6/xb4 + /xe6/xb5 + /xe6/xb6 + /xe6/xb7 + /xe6/xb8 + /xe6/xb9 + /xe6/xba + /xe6/xbb + /xe6/xbc + /xe6/xbd + /xe6/xbe + /xe6/xbf + /xe6/xc0 + /xe6/xc1 + /xe6/xc2 + /xe6/xc3 + /xe6/xc4 + /xe6/xc5 + /xe6/xc6 + /xe6/xc7 + /xe6/xc8 + /xe6/xc9 + /xe6/xca + /xe6/xcb + /xe6/xcc + /xe6/xcd + /xe6/xce + /xe6/xcf + /xe6/xd0 + /xe6/xd1 + /xe6/xd2 + /xe6/xd3 + /xe6/xd4 + /xe6/xd5 + /xe6/xd6 + /xe6/xd7 + /xe6/xd8 + /xe6/xd9 + /xe6/xda + /xe6/xdb + /xe6/xdc + /xe6/xdd + /xe6/xde + /xe6/xdf + /xe6/xe0 + /xe6/xe1 + /xe6/xe2 + /xe6/xe3 + /xe6/xe4 + /xe6/xe5 + /xe6/xe6 + /xe6/xe7 + /xe6/xe8 + /xe6/xe9 + /xe6/xea + /xe6/xeb + /xe6/xec + /xe6/xed + /xe6/xee + /xe6/xef + /xe6/xf0 + /xe6/xf1 + /xe6/xf2 + /xe6/xf3 + /xe6/xf4 + /xe6/xf5 + /xe6/xf6 + /xe6/xf7 + /xe6/xf8 + /xe6/xf9 + /xe6/xfa + /xe6/xfb + /xe6/xfc + /xe7/x40 + /xe7/x41 + /xe7/x42 + /xe7/x43 + /xe7/x44 + /xe7/x45 + /xe7/x46 + /xe7/x47 + /xe7/x48 + /xe7/x49 + /xe7/x4a + /xe7/x4b + /xe7/x4c + /xe7/x4d + /xe7/x4e + /xe7/x4f + /xe7/x50 + /xe7/x51 + /xe7/x52 + /xe7/x53 + /xe7/x54 + /xe7/x55 + /xe7/x56 + /xe7/x57 + /xe7/x58 + /xe7/x59 + /xe7/x5a + /xe7/x5b + /xe7/x5c + /xe7/x5d + /xe7/x5e + /xe7/x5f + /xe7/x60 + /xe7/x61 + /xe7/x62 + /xe7/x63 + /xe7/x64 + /xe7/x65 + /xe7/x66 + /xe7/x67 + /xe7/x68 + /xe7/x69 + /xe7/x6a + /xe7/x6b + /xe7/x6c + /xe7/x6d + /xe7/x6e + /xe7/x6f + /xe7/x70 + /xe7/x71 + /xe7/x72 + /xe7/x73 + /xe7/x74 + /xe7/x75 + /xe7/x76 + /xe7/x77 + /xe7/x78 + /xe7/x79 + /xe7/x7a + /xe7/x7b + /xe7/x7c + /xe7/x7d + /xe7/x7e + /xe7/x80 + /xe7/x81 + /xe7/x82 + /xe7/x83 + /xe7/x84 + /xe7/x85 + /xe7/x86 + /xe7/x87 + /xe7/x88 + /xe7/x89 + /xe7/x8a + /xe7/x8b + /xe7/x8c + /xe7/x8d + /xe7/x8e + /xe7/x8f + /xe7/x90 + /xe7/x91 + /xe7/x92 + /xe7/x93 + /xe7/x94 + /xe7/x95 + /xe7/x96 + /xe7/x97 + /xe7/x98 + /xe7/x99 + /xe7/x9a + /xe7/x9b + /xe7/x9c + /xe7/x9d + /xe7/x9e + /xe7/x9f + /xe7/xa0 + /xe7/xa1 + /xe7/xa2 + /xe7/xa3 + /xe7/xa4 + /xe7/xa5 + /xe7/xa6 + /xe7/xa7 + /xe7/xa8 + /xe7/xa9 + /xe7/xaa + /xe7/xab + /xe7/xac + /xe7/xad + /xe7/xae + /xe7/xaf + /xe7/xb0 + /xe7/xb1 + /xe7/xb2 + /xe7/xb3 + /xe7/xb4 + /xe7/xb5 + /xe7/xb6 + /xe7/xb7 + /xe7/xb8 + /xe7/xb9 + /xe7/xba + /xe7/xbb + /xe7/xbc + /xe7/xbd + /xe7/xbe + /xe7/xbf + /xe7/xc0 + /xe7/xc1 + /xe7/xc2 + /xe7/xc3 + /xe7/xc4 + /xe7/xc5 + /xe7/xc6 + /xe7/xc7 + /xe7/xc8 + /xe7/xc9 + /xe7/xca + /xe7/xcb + /xe7/xcc + /xe7/xcd + /xe7/xce + /xe7/xcf + /xe7/xd0 + /xe7/xd1 + /xe7/xd2 + /xe7/xd3 + /xe7/xd4 + /xe7/xd5 + /xe7/xd6 + /xe7/xd7 + /xe7/xd8 + /xe7/xd9 + /xe7/xda + /xe7/xdb + /xe7/xdc + /xe7/xdd + /xe7/xde + /xe7/xdf + /xe7/xe0 + /xe7/xe1 + /xe7/xe2 + /xe7/xe3 + /xe7/xe4 + /xe7/xe5 + /xe7/xe6 + /xe7/xe7 + /xe7/xe8 + /xe7/xe9 + /xe7/xea + /xe7/xeb + /xe7/xec + /xe7/xed + /xe7/xee + /xe7/xef + /xe7/xf0 + /xe7/xf1 + /xe7/xf2 + /xe7/xf3 + /xe7/xf4 + /xe7/xf5 + /xe7/xf6 + /xe7/xf7 + /xe7/xf8 + /xe7/xf9 + /xe7/xfa + /xe7/xfb + /xe7/xfc + /xe8/x40 + /xe8/x41 + /xe8/x42 + /xe8/x43 + /xe8/x44 + /xe8/x45 + /xe8/x46 + /xe8/x47 + /xe8/x48 + /xe8/x49 + /xe8/x4a + /xe8/x4b + /xe8/x4c + /xe8/x4d + /xe8/x4e + /xe8/x4f + /xe8/x50 + /xe8/x51 + /xe8/x52 + /xe8/x53 + /xe8/x54 + /xe8/x55 + /xe8/x56 + /xe8/x57 + /xe8/x58 + /xe8/x59 + /xe8/x5a + /xe8/x5b + /xe8/x5c + /xe8/x5d + /xe8/x5e + /xe8/x5f + /xe8/x60 + /xe8/x61 + /xe8/x62 + /xe8/x63 + /xe8/x64 + /xe8/x65 + /xe8/x66 + /xe8/x67 + /xe8/x68 + /xe8/x69 + /xe8/x6a + /xe8/x6b + /xe8/x6c + /xe8/x6d + /xe8/x6e + /xe8/x6f + /xe8/x70 + /xe8/x71 + /xe8/x72 + /xe8/x73 + /xe8/x74 + /xe8/x75 + /xe8/x76 + /xe8/x77 + /xe8/x78 + /xe8/x79 + /xe8/x7a + /xe8/x7b + /xe8/x7c + /xe8/x7d + /xe8/x7e + /xe8/x80 + /xe8/x81 + /xe8/x82 + /xe8/x83 + /xe8/x84 + /xe8/x85 + /xe8/x86 + /xe8/x87 + /xe8/x88 + /xe8/x89 + /xe8/x8a + /xe8/x8b + /xe8/x8c + /xe8/x8d + /xe8/x8e + /xe8/x8f + /xe8/x90 + /xe8/x91 + /xe8/x92 + /xe8/x93 + /xe8/x94 + /xe8/x95 + /xe8/x96 + /xe8/x97 + /xe8/x98 + /xe8/x99 + /xe8/x9a + /xe8/x9b + /xe8/x9c + /xe8/x9d + /xe8/x9e + /xe8/x9f + /xe8/xa0 + /xe8/xa1 + /xe8/xa2 + /xe8/xa3 + /xe8/xa4 + /xe8/xa5 + /xe8/xa6 + /xe8/xa7 + /xe8/xa8 + /xe8/xa9 + /xe8/xaa + /xe8/xab + /xe8/xac + /xe8/xad + /xe8/xae + /xe8/xaf + /xe8/xb0 + /xe8/xb1 + /xe8/xb2 + /xe8/xb3 + /xe8/xb4 + /xe8/xb5 + /xe8/xb6 + /xe8/xb7 + /xe8/xb8 + /xe8/xb9 + /xe8/xba + /xe8/xbb + /xe8/xbc + /xe8/xbd + /xe8/xbe + /xe8/xbf + /xe8/xc0 + /xe8/xc1 + /xe8/xc2 + /xe8/xc3 + /xe8/xc4 + /xe8/xc5 + /xe8/xc6 + /xe8/xc7 + /xe8/xc8 + /xe8/xc9 + /xe8/xca + /xe8/xcb + /xe8/xcc + /xe8/xcd + /xe8/xce + /xe8/xcf + /xe8/xd0 + /xe8/xd1 + /xe8/xd2 + /xe8/xd3 + /xe8/xd4 + /xe8/xd5 + /xe8/xd6 + /xe8/xd7 + /xe8/xd8 + /xe8/xd9 + /xe8/xda + /xe8/xdb + /xe8/xdc + /xe8/xdd + /xe8/xde + /xe8/xdf + /xe8/xe0 + /xe8/xe1 + /xe8/xe2 + /xe8/xe3 + /xe8/xe4 + /xe8/xe5 + /xe8/xe6 + /xe8/xe7 + /xe8/xe8 + /xe8/xe9 + /xe8/xea + /xe8/xeb + /xe8/xec + /xe8/xed + /xe8/xee + /xe8/xef + /xe8/xf0 + /xe8/xf1 + /xe8/xf2 + /xe8/xf3 + /xe8/xf4 + /xe8/xf5 + /xe8/xf6 + /xe8/xf7 + /xe8/xf8 + /xe8/xf9 + /xe8/xfa + /xe8/xfb + /xe8/xfc + /xe9/x40 + /xe9/x41 + /xe9/x42 + /xe9/x43 + /xe9/x44 + /xe9/x45 + /xe9/x46 + /xe9/x47 + /xe9/x48 + /xe9/x49 + /xe9/x4a + /xe9/x4b + /xe9/x4c + /xe9/x4d + /xe9/x4e + /xe9/x4f + /xe9/x50 + /xe9/x51 + /xe9/x52 + /xe9/x53 + /xe9/x54 + /xe9/x55 + /xe9/x56 + /xe9/x57 + /xe9/x58 + /xe9/x59 + /xe9/x5a + /xe9/x5b + /xe9/x5c + /xe9/x5d + /xe9/x5e + /xe9/x5f + /xe9/x60 + /xe9/x61 + /xe9/x62 + /xe9/x63 + /xe9/x64 + /xe9/x65 + /xe9/x66 + /xe9/x67 + /xe9/x68 + /xe9/x69 + /xe9/x6a + /xe9/x6b + /xe9/x6c + /xe9/x6d + /xe9/x6e + /xe9/x6f + /xe9/x70 + /xe9/x71 + /xe9/x72 + /xe9/x73 + /xe9/x74 + /xe9/x75 + /xe9/x76 + /xe9/x77 + /xe9/x78 + /xe9/x79 + /xe9/x7a + /xe9/x7b + /xe9/x7c + /xe9/x7d + /xe9/x7e + /xe9/x80 + /xe9/x81 + /xe9/x82 + /xe9/x83 + /xe9/x84 + /xe9/x85 + /xe9/x86 + /xe9/x87 + /xe9/x88 + /xe9/x89 + /xe9/x8a + /xe9/x8b + /xe9/x8c + /xe9/x8d + /xe9/x8e + /xe9/x8f + /xe9/x90 + /xe9/x91 + /xe9/x92 + /xe9/x93 + /xe9/x94 + /xe9/x95 + /xe9/x96 + /xe9/x97 + /xe9/x98 + /xe9/x99 + /xe9/x9a + /xe9/x9b + /xe9/x9c + /xe9/x9d + /xe9/x9e + /xe9/x9f + /xe9/xa0 + /xe9/xa1 + /xe9/xa2 + /xe9/xa3 + /xe9/xa4 + /xe9/xa5 + /xe9/xa6 + /xe9/xa7 + /xe9/xa8 + /xe9/xa9 + /xe9/xaa + /xe9/xab + /xe9/xac + /xe9/xad + /xe9/xae + /xe9/xaf + /xe9/xb0 + /xe9/xb1 + /xe9/xb2 + /xe9/xb3 + /xe9/xb4 + /xe9/xb5 + /xe9/xb6 + /xe9/xb7 + /xe9/xb8 + /xe9/xb9 + /xe9/xba + /xe9/xbb + /xe9/xbc + /xe9/xbd + /xe9/xbe + /xe9/xbf + /xe9/xc0 + /xe9/xc1 + /xe9/xc2 + /xe9/xc3 + /xe9/xc4 + /xe9/xc5 + /xe9/xc6 + /xe9/xc7 + /xe9/xc8 + /xe9/xc9 + /xe9/xca + /xe9/xcb + /xe9/xcc + /xe9/xcd + /xe9/xce + /xe9/xcf + /xe9/xd0 + /xe9/xd1 + /xe9/xd2 + /xe9/xd3 + /xe9/xd4 + /xe9/xd5 + /xe9/xd6 + /xe9/xd7 + /xe9/xd8 + /xe9/xd9 + /xe9/xda + /xe9/xdb + /xe9/xdc + /xe9/xdd + /xe9/xde + /xe9/xdf + /xe9/xe0 + /xe9/xe1 + /xe9/xe2 + /xe9/xe3 + /xe9/xe4 + /xe9/xe5 + /xe9/xe6 + /xe9/xe7 + /xe9/xe8 + /xe9/xe9 + /xe9/xea + /xe9/xeb + /xe9/xec + /xe9/xed + /xe9/xee + /xe9/xef + /xe9/xf0 + /xe9/xf1 + /xe9/xf2 + /xe9/xf3 + /xe9/xf4 + /xe9/xf5 + /xe9/xf6 + /xe9/xf7 + /xe9/xf8 + /xe9/xf9 + /xe9/xfa + /xe9/xfb + /xe9/xfc + /xea/x40 + /xea/x41 + /xea/x42 + /xea/x43 + /xea/x44 + /xea/x45 + /xea/x46 + /xea/x47 + /xea/x48 + /xea/x49 + /xea/x4a + /xea/x4b + /xea/x4c + /xea/x4d + /xea/x4e + /xea/x4f + /xea/x50 + /xea/x51 + /xea/x52 + /xea/x53 + /xea/x54 + /xea/x55 + /xea/x56 + /xea/x57 + /xea/x58 + /xea/x59 + /xea/x5a + /xea/x5b + /xea/x5c + /xea/x5d + /xea/x5e + /xea/x5f + /xea/x60 + /xea/x61 + /xea/x62 + /xea/x63 + /xea/x64 + /xea/x65 + /xea/x66 + /xea/x67 + /xea/x68 + /xea/x69 + /xea/x6a + /xea/x6b + /xea/x6c + /xea/x6d + /xea/x6e + /xea/x6f + /xea/x70 + /xea/x71 + /xea/x72 + /xea/x73 + /xea/x74 + /xea/x75 + /xea/x76 + /xea/x77 + /xea/x78 + /xea/x79 + /xea/x7a + /xea/x7b + /xea/x7c + /xea/x7d + /xea/x7e + /xea/x80 + /xea/x81 + /xea/x82 + /xea/x83 + /xea/x84 + /xea/x85 + /xea/x86 + /xea/x87 + /xea/x88 + /xea/x89 + /xea/x8a + /xea/x8b + /xea/x8c + /xea/x8d + /xea/x8e + /xea/x8f + /xea/x90 + /xea/x91 + /xea/x92 + /xea/x93 + /xea/x94 + /xea/x95 + /xea/x96 + /xea/x97 + /xea/x98 + /xea/x99 + /xea/x9a + /xea/x9b + /xea/x9c + /xea/x9d + /xea/x9e + /xea/x9f + /xea/xa0 + /xea/xa1 + /xea/xa2 + /xea/xa3 + /xea/xa4 + +%IRREVERSIBLE% /xed/x40 +%IRREVERSIBLE% /xed/x41 +%IRREVERSIBLE% /xed/x42 +%IRREVERSIBLE% /xed/x43 +%IRREVERSIBLE% /xed/x44 +%IRREVERSIBLE% /xed/x45 +%IRREVERSIBLE% /xed/x46 +%IRREVERSIBLE% /xed/x47 +%IRREVERSIBLE% /xed/x48 +%IRREVERSIBLE% /xed/x49 +%IRREVERSIBLE% /xed/x4a +%IRREVERSIBLE% /xed/x4b +%IRREVERSIBLE% /xed/x4c +%IRREVERSIBLE% /xed/x4d +%IRREVERSIBLE% /xed/x4e +%IRREVERSIBLE% /xed/x4f +%IRREVERSIBLE% /xed/x50 +%IRREVERSIBLE% /xed/x51 +%IRREVERSIBLE% /xed/x52 +%IRREVERSIBLE% /xed/x53 +%IRREVERSIBLE% /xed/x54 +%IRREVERSIBLE% /xed/x55 +%IRREVERSIBLE% /xed/x56 +%IRREVERSIBLE% /xed/x57 +%IRREVERSIBLE% /xed/x58 +%IRREVERSIBLE% /xed/x59 +%IRREVERSIBLE% /xed/x5a +%IRREVERSIBLE% /xed/x5b +%IRREVERSIBLE% /xed/x5c +%IRREVERSIBLE% /xed/x5d +%IRREVERSIBLE% /xed/x5e +%IRREVERSIBLE% /xed/x5f +%IRREVERSIBLE% /xed/x60 +%IRREVERSIBLE% /xed/x61 +%IRREVERSIBLE% /xed/x62 +%IRREVERSIBLE% /xed/x63 +%IRREVERSIBLE% /xed/x64 +%IRREVERSIBLE% /xed/x65 +%IRREVERSIBLE% /xed/x66 +%IRREVERSIBLE% /xed/x67 +%IRREVERSIBLE% /xed/x68 +%IRREVERSIBLE% /xed/x69 +%IRREVERSIBLE% /xed/x6a +%IRREVERSIBLE% /xed/x6b +%IRREVERSIBLE% /xed/x6c +%IRREVERSIBLE% /xed/x6d +%IRREVERSIBLE% /xed/x6e +%IRREVERSIBLE% /xed/x6f +%IRREVERSIBLE% /xed/x70 +%IRREVERSIBLE% /xed/x71 +%IRREVERSIBLE% /xed/x72 +%IRREVERSIBLE% /xed/x73 CJK COMPATIBILITY IDEOGRAPH-FA0E +%IRREVERSIBLE% /xed/x74 +%IRREVERSIBLE% /xed/x75 +%IRREVERSIBLE% /xed/x76 +%IRREVERSIBLE% /xed/x77 +%IRREVERSIBLE% /xed/x78 +%IRREVERSIBLE% /xed/x79 +%IRREVERSIBLE% /xed/x7a +%IRREVERSIBLE% /xed/x7b +%IRREVERSIBLE% /xed/x7c +%IRREVERSIBLE% /xed/x7d +%IRREVERSIBLE% /xed/x7e CJK COMPATIBILITY IDEOGRAPH-FA0F +%IRREVERSIBLE% /xed/x80 CJK COMPATIBILITY IDEOGRAPH-FA10 +%IRREVERSIBLE% /xed/x81 +%IRREVERSIBLE% /xed/x82 +%IRREVERSIBLE% /xed/x83 +%IRREVERSIBLE% /xed/x84 +%IRREVERSIBLE% /xed/x85 +%IRREVERSIBLE% /xed/x86 +%IRREVERSIBLE% /xed/x87 +%IRREVERSIBLE% /xed/x88 +%IRREVERSIBLE% /xed/x89 +%IRREVERSIBLE% /xed/x8a +%IRREVERSIBLE% /xed/x8b +%IRREVERSIBLE% /xed/x8c +%IRREVERSIBLE% /xed/x8d +%IRREVERSIBLE% /xed/x8e +%IRREVERSIBLE% /xed/x8f +%IRREVERSIBLE% /xed/x90 +%IRREVERSIBLE% /xed/x91 +%IRREVERSIBLE% /xed/x92 +%IRREVERSIBLE% /xed/x93 +%IRREVERSIBLE% /xed/x94 +%IRREVERSIBLE% /xed/x95 CJK COMPATIBILITY IDEOGRAPH-FA11 +%IRREVERSIBLE% /xed/x96 +%IRREVERSIBLE% /xed/x97 +%IRREVERSIBLE% /xed/x98 +%IRREVERSIBLE% /xed/x99 +%IRREVERSIBLE% /xed/x9a +%IRREVERSIBLE% /xed/x9b +%IRREVERSIBLE% /xed/x9c +%IRREVERSIBLE% /xed/x9d +%IRREVERSIBLE% /xed/x9e +%IRREVERSIBLE% /xed/x9f +%IRREVERSIBLE% /xed/xa0 +%IRREVERSIBLE% /xed/xa1 +%IRREVERSIBLE% /xed/xa2 +%IRREVERSIBLE% /xed/xa3 +%IRREVERSIBLE% /xed/xa4 +%IRREVERSIBLE% /xed/xa5 +%IRREVERSIBLE% /xed/xa6 +%IRREVERSIBLE% /xed/xa7 +%IRREVERSIBLE% /xed/xa8 +%IRREVERSIBLE% /xed/xa9 +%IRREVERSIBLE% /xed/xaa +%IRREVERSIBLE% /xed/xab +%IRREVERSIBLE% /xed/xac +%IRREVERSIBLE% /xed/xad +%IRREVERSIBLE% /xed/xae +%IRREVERSIBLE% /xed/xaf +%IRREVERSIBLE% /xed/xb0 +%IRREVERSIBLE% /xed/xb1 +%IRREVERSIBLE% /xed/xb2 +%IRREVERSIBLE% /xed/xb3 +%IRREVERSIBLE% /xed/xb4 +%IRREVERSIBLE% /xed/xb5 +%IRREVERSIBLE% /xed/xb6 +%IRREVERSIBLE% /xed/xb7 +%IRREVERSIBLE% /xed/xb8 +%IRREVERSIBLE% /xed/xb9 +%IRREVERSIBLE% /xed/xba +%IRREVERSIBLE% /xed/xbb +%IRREVERSIBLE% /xed/xbc CJK COMPATIBILITY IDEOGRAPH-FA12 +%IRREVERSIBLE% /xed/xbd +%IRREVERSIBLE% /xed/xbe +%IRREVERSIBLE% /xed/xbf +%IRREVERSIBLE% /xed/xc0 +%IRREVERSIBLE% /xed/xc1 +%IRREVERSIBLE% /xed/xc2 +%IRREVERSIBLE% /xed/xc3 +%IRREVERSIBLE% /xed/xc4 CJK COMPATIBILITY IDEOGRAPH-F929 +%IRREVERSIBLE% /xed/xc5 +%IRREVERSIBLE% /xed/xc6 +%IRREVERSIBLE% /xed/xc7 +%IRREVERSIBLE% /xed/xc8 +%IRREVERSIBLE% /xed/xc9 +%IRREVERSIBLE% /xed/xca +%IRREVERSIBLE% /xed/xcb +%IRREVERSIBLE% /xed/xcc CJK COMPATIBILITY IDEOGRAPH-FA13 +%IRREVERSIBLE% /xed/xcd +%IRREVERSIBLE% /xed/xce CJK COMPATIBILITY IDEOGRAPH-FA14 +%IRREVERSIBLE% /xed/xcf +%IRREVERSIBLE% /xed/xd0 +%IRREVERSIBLE% /xed/xd1 +%IRREVERSIBLE% /xed/xd2 +%IRREVERSIBLE% /xed/xd3 +%IRREVERSIBLE% /xed/xd4 +%IRREVERSIBLE% /xed/xd5 +%IRREVERSIBLE% /xed/xd6 +%IRREVERSIBLE% /xed/xd7 +%IRREVERSIBLE% /xed/xd8 +%IRREVERSIBLE% /xed/xd9 +%IRREVERSIBLE% /xed/xda +%IRREVERSIBLE% /xed/xdb +%IRREVERSIBLE% /xed/xdc +%IRREVERSIBLE% /xed/xdd +%IRREVERSIBLE% /xed/xde +%IRREVERSIBLE% /xed/xdf +%IRREVERSIBLE% /xed/xe0 +%IRREVERSIBLE% /xed/xe1 +%IRREVERSIBLE% /xed/xe2 +%IRREVERSIBLE% /xed/xe3 +%IRREVERSIBLE% /xed/xe4 +%IRREVERSIBLE% /xed/xe5 +%IRREVERSIBLE% /xed/xe6 +%IRREVERSIBLE% /xed/xe7 +%IRREVERSIBLE% /xed/xe8 +%IRREVERSIBLE% /xed/xe9 +%IRREVERSIBLE% /xed/xea +%IRREVERSIBLE% /xed/xeb +%IRREVERSIBLE% /xed/xec +%IRREVERSIBLE% /xed/xed +%IRREVERSIBLE% /xed/xee +%IRREVERSIBLE% /xed/xef +%IRREVERSIBLE% /xed/xf0 +%IRREVERSIBLE% /xed/xf1 +%IRREVERSIBLE% /xed/xf2 +%IRREVERSIBLE% /xed/xf3 +%IRREVERSIBLE% /xed/xf4 +%IRREVERSIBLE% /xed/xf5 +%IRREVERSIBLE% /xed/xf6 +%IRREVERSIBLE% /xed/xf7 +%IRREVERSIBLE% /xed/xf8 +%IRREVERSIBLE% /xed/xf9 CJK COMPATIBILITY IDEOGRAPH-FA15 +%IRREVERSIBLE% /xed/xfa +%IRREVERSIBLE% /xed/xfb +%IRREVERSIBLE% /xed/xfc +%IRREVERSIBLE% /xee/x40 +%IRREVERSIBLE% /xee/x41 +%IRREVERSIBLE% /xee/x42 CJK COMPATIBILITY IDEOGRAPH-FA16 +%IRREVERSIBLE% /xee/x43 +%IRREVERSIBLE% /xee/x44 +%IRREVERSIBLE% /xee/x45 +%IRREVERSIBLE% /xee/x46 +%IRREVERSIBLE% /xee/x47 +%IRREVERSIBLE% /xee/x48 +%IRREVERSIBLE% /xee/x49 +%IRREVERSIBLE% /xee/x4a +%IRREVERSIBLE% /xee/x4b +%IRREVERSIBLE% /xee/x4c +%IRREVERSIBLE% /xee/x4d +%IRREVERSIBLE% /xee/x4e +%IRREVERSIBLE% /xee/x4f +%IRREVERSIBLE% /xee/x50 +%IRREVERSIBLE% /xee/x51 +%IRREVERSIBLE% /xee/x52 +%IRREVERSIBLE% /xee/x53 +%IRREVERSIBLE% /xee/x54 +%IRREVERSIBLE% /xee/x55 +%IRREVERSIBLE% /xee/x56 +%IRREVERSIBLE% /xee/x57 +%IRREVERSIBLE% /xee/x58 +%IRREVERSIBLE% /xee/x59 CJK COMPATIBILITY IDEOGRAPH-FA17 +%IRREVERSIBLE% /xee/x5a +%IRREVERSIBLE% /xee/x5b +%IRREVERSIBLE% /xee/x5c +%IRREVERSIBLE% /xee/x5d +%IRREVERSIBLE% /xee/x5e +%IRREVERSIBLE% /xee/x5f +%IRREVERSIBLE% /xee/x60 +%IRREVERSIBLE% /xee/x61 CJK COMPATIBILITY IDEOGRAPH-FA18 +%IRREVERSIBLE% /xee/x62 CJK COMPATIBILITY IDEOGRAPH-FA19 +%IRREVERSIBLE% /xee/x63 CJK COMPATIBILITY IDEOGRAPH-FA1A +%IRREVERSIBLE% /xee/x64 +%IRREVERSIBLE% /xee/x65 CJK COMPATIBILITY IDEOGRAPH-FA1B +%IRREVERSIBLE% /xee/x66 +%IRREVERSIBLE% /xee/x67 +%IRREVERSIBLE% /xee/x68 +%IRREVERSIBLE% /xee/x69 CJK COMPATIBILITY IDEOGRAPH-FA1C +%IRREVERSIBLE% /xee/x6a +%IRREVERSIBLE% /xee/x6b +%IRREVERSIBLE% /xee/x6c CJK COMPATIBILITY IDEOGRAPH-FA1D +%IRREVERSIBLE% /xee/x6d +%IRREVERSIBLE% /xee/x6e +%IRREVERSIBLE% /xee/x6f +%IRREVERSIBLE% /xee/x70 +%IRREVERSIBLE% /xee/x71 +%IRREVERSIBLE% /xee/x72 +%IRREVERSIBLE% /xee/x73 +%IRREVERSIBLE% /xee/x74 +%IRREVERSIBLE% /xee/x75 CJK COMPATIBILITY IDEOGRAPH-FA1E +%IRREVERSIBLE% /xee/x76 +%IRREVERSIBLE% /xee/x77 +%IRREVERSIBLE% /xee/x78 +%IRREVERSIBLE% /xee/x79 +%IRREVERSIBLE% /xee/x7a +%IRREVERSIBLE% /xee/x7b +%IRREVERSIBLE% /xee/x7c +%IRREVERSIBLE% /xee/x7d +%IRREVERSIBLE% /xee/x7e +%IRREVERSIBLE% /xee/x80 +%IRREVERSIBLE% /xee/x81 CJK COMPATIBILITY IDEOGRAPH-FA1F +%IRREVERSIBLE% /xee/x82 +%IRREVERSIBLE% /xee/x83 CJK COMPATIBILITY IDEOGRAPH-FA20 +%IRREVERSIBLE% /xee/x84 CJK COMPATIBILITY IDEOGRAPH-FA21 +%IRREVERSIBLE% /xee/x85 +%IRREVERSIBLE% /xee/x86 +%IRREVERSIBLE% /xee/x87 +%IRREVERSIBLE% /xee/x88 +%IRREVERSIBLE% /xee/x89 +%IRREVERSIBLE% /xee/x8a +%IRREVERSIBLE% /xee/x8b +%IRREVERSIBLE% /xee/x8c +%IRREVERSIBLE% /xee/x8d CJK COMPATIBILITY IDEOGRAPH-FA22 +%IRREVERSIBLE% /xee/x8e +%IRREVERSIBLE% /xee/x8f +%IRREVERSIBLE% /xee/x90 +%IRREVERSIBLE% /xee/x91 +%IRREVERSIBLE% /xee/x92 +%IRREVERSIBLE% /xee/x93 +%IRREVERSIBLE% /xee/x94 +%IRREVERSIBLE% /xee/x95 CJK COMPATIBILITY IDEOGRAPH-FA23 +%IRREVERSIBLE% /xee/x96 +%IRREVERSIBLE% /xee/x97 CJK COMPATIBILITY IDEOGRAPH-FA24 +%IRREVERSIBLE% /xee/x98 CJK COMPATIBILITY IDEOGRAPH-FA25 +%IRREVERSIBLE% /xee/x99 +%IRREVERSIBLE% /xee/x9a +%IRREVERSIBLE% /xee/x9b CJK COMPATIBILITY IDEOGRAPH-FA26 +%IRREVERSIBLE% /xee/x9c +%IRREVERSIBLE% /xee/x9d +%IRREVERSIBLE% /xee/x9e +%IRREVERSIBLE% /xee/x9f +%IRREVERSIBLE% /xee/xa0 +%IRREVERSIBLE% /xee/xa1 +%IRREVERSIBLE% /xee/xa2 +%IRREVERSIBLE% /xee/xa3 +%IRREVERSIBLE% /xee/xa4 +%IRREVERSIBLE% /xee/xa5 +%IRREVERSIBLE% /xee/xa6 +%IRREVERSIBLE% /xee/xa7 +%IRREVERSIBLE% /xee/xa8 +%IRREVERSIBLE% /xee/xa9 +%IRREVERSIBLE% /xee/xaa +%IRREVERSIBLE% /xee/xab +%IRREVERSIBLE% /xee/xac +%IRREVERSIBLE% /xee/xad +%IRREVERSIBLE% /xee/xae +%IRREVERSIBLE% /xee/xaf +%IRREVERSIBLE% /xee/xb0 +%IRREVERSIBLE% /xee/xb1 +%IRREVERSIBLE% /xee/xb2 +%IRREVERSIBLE% /xee/xb3 +%IRREVERSIBLE% /xee/xb4 +%IRREVERSIBLE% /xee/xb5 +%IRREVERSIBLE% /xee/xb6 +%IRREVERSIBLE% /xee/xb7 CJK COMPATIBILITY IDEOGRAPH-FA27 +%IRREVERSIBLE% /xee/xb8 +%IRREVERSIBLE% /xee/xb9 +%IRREVERSIBLE% /xee/xba +%IRREVERSIBLE% /xee/xbb +%IRREVERSIBLE% /xee/xbc +%IRREVERSIBLE% /xee/xbd +%IRREVERSIBLE% /xee/xbe CJK COMPATIBILITY IDEOGRAPH-FA28 +%IRREVERSIBLE% /xee/xbf +%IRREVERSIBLE% /xee/xc0 +%IRREVERSIBLE% /xee/xc1 +%IRREVERSIBLE% /xee/xc2 +%IRREVERSIBLE% /xee/xc3 +%IRREVERSIBLE% /xee/xc4 +%IRREVERSIBLE% /xee/xc5 +%IRREVERSIBLE% /xee/xc6 +%IRREVERSIBLE% /xee/xc7 +%IRREVERSIBLE% /xee/xc8 +%IRREVERSIBLE% /xee/xc9 +%IRREVERSIBLE% /xee/xca +%IRREVERSIBLE% /xee/xcb +%IRREVERSIBLE% /xee/xcc +%IRREVERSIBLE% /xee/xcd CJK COMPATIBILITY IDEOGRAPH-F9DC +%IRREVERSIBLE% /xee/xce CJK COMPATIBILITY IDEOGRAPH-FA29 +%IRREVERSIBLE% /xee/xcf +%IRREVERSIBLE% /xee/xd0 +%IRREVERSIBLE% /xee/xd1 +%IRREVERSIBLE% /xee/xd2 +%IRREVERSIBLE% /xee/xd3 +%IRREVERSIBLE% /xee/xd4 +%IRREVERSIBLE% /xee/xd5 +%IRREVERSIBLE% /xee/xd6 +%IRREVERSIBLE% /xee/xd7 +%IRREVERSIBLE% /xee/xd8 +%IRREVERSIBLE% /xee/xd9 +%IRREVERSIBLE% /xee/xda CJK COMPATIBILITY IDEOGRAPH-FA2A +%IRREVERSIBLE% /xee/xdb CJK COMPATIBILITY IDEOGRAPH-FA2B +%IRREVERSIBLE% /xee/xdc +%IRREVERSIBLE% /xee/xdd CJK COMPATIBILITY IDEOGRAPH-FA2C +%IRREVERSIBLE% /xee/xde +%IRREVERSIBLE% /xee/xdf +%IRREVERSIBLE% /xee/xe0 +%IRREVERSIBLE% /xee/xe1 +%IRREVERSIBLE% /xee/xe2 +%IRREVERSIBLE% /xee/xe3 +%IRREVERSIBLE% /xee/xe4 +%IRREVERSIBLE% /xee/xe5 +%IRREVERSIBLE% /xee/xe6 +%IRREVERSIBLE% /xee/xe7 +%IRREVERSIBLE% /xee/xe8 +%IRREVERSIBLE% /xee/xe9 +%IRREVERSIBLE% /xee/xea CJK COMPATIBILITY IDEOGRAPH-FA2D +%IRREVERSIBLE% /xee/xeb +%IRREVERSIBLE% /xee/xec +%IRREVERSIBLE% /xee/xef SMALL ROMAN NUMERAL ONE +%IRREVERSIBLE% /xee/xf0 SMALL ROMAN NUMERAL TWO +%IRREVERSIBLE% /xee/xf1 SMALL ROMAN NUMERAL THREE +%IRREVERSIBLE% /xee/xf2 SMALL ROMAN NUMERAL FOUR +%IRREVERSIBLE% /xee/xf3 SMALL ROMAN NUMERAL FIVE +%IRREVERSIBLE% /xee/xf4 SMALL ROMAN NUMERAL SIX +%IRREVERSIBLE% /xee/xf5 SMALL ROMAN NUMERAL SEVEN +%IRREVERSIBLE% /xee/xf6 SMALL ROMAN NUMERAL EIGHT +%IRREVERSIBLE% /xee/xf7 SMALL ROMAN NUMERAL NINE +%IRREVERSIBLE% /xee/xf8 SMALL ROMAN NUMERAL TEN +%IRREVERSIBLE% /xee/xf9 FULLWIDTH NOT SIGN +%IRREVERSIBLE% /xee/xfa FULLWIDTH BROKEN BAR +%IRREVERSIBLE% /xee/xfb FULLWIDTH APOSTROPHE +%IRREVERSIBLE% /xee/xfc FULLWIDTH QUOTATION MARK + + /xf0/x40 + /xf0/x41 + /xf0/x42 + /xf0/x43 + /xf0/x44 + /xf0/x45 + /xf0/x46 + /xf0/x47 + /xf0/x48 + /xf0/x49 + /xf0/x4a + /xf0/x4b + /xf0/x4c + /xf0/x4d + /xf0/x4e + /xf0/x4f + /xf0/x50 + /xf0/x51 + /xf0/x52 + /xf0/x53 + /xf0/x54 + /xf0/x55 + /xf0/x56 + /xf0/x57 + /xf0/x58 + /xf0/x59 + /xf0/x5a + /xf0/x5b + /xf0/x5c + /xf0/x5d + /xf0/x5e + /xf0/x5f + /xf0/x60 + /xf0/x61 + /xf0/x62 + /xf0/x63 + /xf0/x64 + /xf0/x65 + /xf0/x66 + /xf0/x67 + /xf0/x68 + /xf0/x69 + /xf0/x6a + /xf0/x6b + /xf0/x6c + /xf0/x6d + /xf0/x6e + /xf0/x6f + /xf0/x70 + /xf0/x71 + /xf0/x72 + /xf0/x73 + /xf0/x74 + /xf0/x75 + /xf0/x76 + /xf0/x77 + /xf0/x78 + /xf0/x79 + /xf0/x7a + /xf0/x7b + /xf0/x7c + /xf0/x7d + /xf0/x7e + /xf0/x80 + /xf0/x81 + /xf0/x82 + /xf0/x83 + /xf0/x84 + /xf0/x85 + /xf0/x86 + /xf0/x87 + /xf0/x88 + /xf0/x89 + /xf0/x8a + /xf0/x8b + /xf0/x8c + /xf0/x8d + /xf0/x8e + /xf0/x8f + /xf0/x90 + /xf0/x91 + /xf0/x92 + /xf0/x93 + /xf0/x94 + /xf0/x95 + /xf0/x96 + /xf0/x97 + /xf0/x98 + /xf0/x99 + /xf0/x9a + /xf0/x9b + /xf0/x9c + /xf0/x9d + /xf0/x9e + /xf0/x9f + /xf0/xa0 + /xf0/xa1 + /xf0/xa2 + /xf0/xa3 + /xf0/xa4 + /xf0/xa5 + /xf0/xa6 + /xf0/xa7 + /xf0/xa8 + /xf0/xa9 + /xf0/xaa + /xf0/xab + /xf0/xac + /xf0/xad + /xf0/xae + /xf0/xaf + /xf0/xb0 + /xf0/xb1 + /xf0/xb2 + /xf0/xb3 + /xf0/xb4 + /xf0/xb5 + /xf0/xb6 + /xf0/xb7 + /xf0/xb8 + /xf0/xb9 + /xf0/xba + /xf0/xbb + /xf0/xbc + /xf0/xbd + /xf0/xbe + /xf0/xbf + /xf0/xc0 + /xf0/xc1 + /xf0/xc2 + /xf0/xc3 + /xf0/xc4 + /xf0/xc5 + /xf0/xc6 + /xf0/xc7 + /xf0/xc8 + /xf0/xc9 + /xf0/xca + /xf0/xcb + /xf0/xcc + /xf0/xcd + /xf0/xce + /xf0/xcf + /xf0/xd0 + /xf0/xd1 + /xf0/xd2 + /xf0/xd3 + /xf0/xd4 + /xf0/xd5 + /xf0/xd6 + /xf0/xd7 + /xf0/xd8 + /xf0/xd9 + /xf0/xda + /xf0/xdb + /xf0/xdc + /xf0/xdd + /xf0/xde + /xf0/xdf + /xf0/xe0 + /xf0/xe1 + /xf0/xe2 + /xf0/xe3 + /xf0/xe4 + /xf0/xe5 + /xf0/xe6 + /xf0/xe7 + /xf0/xe8 + /xf0/xe9 + /xf0/xea + /xf0/xeb + /xf0/xec + /xf0/xed + /xf0/xee + /xf0/xef + /xf0/xf0 + /xf0/xf1 + /xf0/xf2 + /xf0/xf3 + /xf0/xf4 + /xf0/xf5 + /xf0/xf6 + /xf0/xf7 + /xf0/xf8 + /xf0/xf9 + /xf0/xfa + /xf0/xfb + /xf0/xfc + /xf1/x40 + /xf1/x41 + /xf1/x42 + /xf1/x43 + /xf1/x44 + /xf1/x45 + /xf1/x46 + /xf1/x47 + /xf1/x48 + /xf1/x49 + /xf1/x4a + /xf1/x4b + /xf1/x4c + /xf1/x4d + /xf1/x4e + /xf1/x4f + /xf1/x50 + /xf1/x51 + /xf1/x52 + /xf1/x53 + /xf1/x54 + /xf1/x55 + /xf1/x56 + /xf1/x57 + /xf1/x58 + /xf1/x59 + /xf1/x5a + /xf1/x5b + /xf1/x5c + /xf1/x5d + /xf1/x5e + /xf1/x5f + /xf1/x60 + /xf1/x61 + /xf1/x62 + /xf1/x63 + /xf1/x64 + /xf1/x65 + /xf1/x66 + /xf1/x67 + /xf1/x68 + /xf1/x69 + /xf1/x6a + /xf1/x6b + /xf1/x6c + /xf1/x6d + /xf1/x6e + /xf1/x6f + /xf1/x70 + /xf1/x71 + /xf1/x72 + /xf1/x73 + /xf1/x74 + /xf1/x75 + /xf1/x76 + /xf1/x77 + /xf1/x78 + /xf1/x79 + /xf1/x7a + /xf1/x7b + /xf1/x7c + /xf1/x7d + /xf1/x7e + /xf1/x80 + /xf1/x81 + /xf1/x82 + /xf1/x83 + /xf1/x84 + /xf1/x85 + /xf1/x86 + /xf1/x87 + /xf1/x88 + /xf1/x89 + /xf1/x8a + /xf1/x8b + /xf1/x8c + /xf1/x8d + /xf1/x8e + /xf1/x8f + /xf1/x90 + /xf1/x91 + /xf1/x92 + /xf1/x93 + /xf1/x94 + /xf1/x95 + /xf1/x96 + /xf1/x97 + /xf1/x98 + /xf1/x99 + /xf1/x9a + /xf1/x9b + /xf1/x9c + /xf1/x9d + /xf1/x9e + /xf1/x9f + /xf1/xa0 + /xf1/xa1 + /xf1/xa2 + /xf1/xa3 + /xf1/xa4 + /xf1/xa5 + /xf1/xa6 + /xf1/xa7 + /xf1/xa8 + /xf1/xa9 + /xf1/xaa + /xf1/xab + /xf1/xac + /xf1/xad + /xf1/xae + /xf1/xaf + /xf1/xb0 + /xf1/xb1 + /xf1/xb2 + /xf1/xb3 + /xf1/xb4 + /xf1/xb5 + /xf1/xb6 + /xf1/xb7 + /xf1/xb8 + /xf1/xb9 + /xf1/xba + /xf1/xbb + /xf1/xbc + /xf1/xbd + /xf1/xbe + /xf1/xbf + /xf1/xc0 + /xf1/xc1 + /xf1/xc2 + /xf1/xc3 + /xf1/xc4 + /xf1/xc5 + /xf1/xc6 + /xf1/xc7 + /xf1/xc8 + /xf1/xc9 + /xf1/xca + /xf1/xcb + /xf1/xcc + /xf1/xcd + /xf1/xce + /xf1/xcf + /xf1/xd0 + /xf1/xd1 + /xf1/xd2 + /xf1/xd3 + /xf1/xd4 + /xf1/xd5 + /xf1/xd6 + /xf1/xd7 + /xf1/xd8 + /xf1/xd9 + /xf1/xda + /xf1/xdb + /xf1/xdc + /xf1/xdd + /xf1/xde + /xf1/xdf + /xf1/xe0 + /xf1/xe1 + /xf1/xe2 + /xf1/xe3 + /xf1/xe4 + /xf1/xe5 + /xf1/xe6 + /xf1/xe7 + /xf1/xe8 + /xf1/xe9 + /xf1/xea + /xf1/xeb + /xf1/xec + /xf1/xed + /xf1/xee + /xf1/xef + /xf1/xf0 + /xf1/xf1 + /xf1/xf2 + /xf1/xf3 + /xf1/xf4 + /xf1/xf5 + /xf1/xf6 + /xf1/xf7 + /xf1/xf8 + /xf1/xf9 + /xf1/xfa + /xf1/xfb + /xf1/xfc + /xf2/x40 + /xf2/x41 + /xf2/x42 + /xf2/x43 + /xf2/x44 + /xf2/x45 + /xf2/x46 + /xf2/x47 + /xf2/x48 + /xf2/x49 + /xf2/x4a + /xf2/x4b + /xf2/x4c + /xf2/x4d + /xf2/x4e + /xf2/x4f + /xf2/x50 + /xf2/x51 + /xf2/x52 + /xf2/x53 + /xf2/x54 + /xf2/x55 + /xf2/x56 + /xf2/x57 + /xf2/x58 + /xf2/x59 + /xf2/x5a + /xf2/x5b + /xf2/x5c + /xf2/x5d + /xf2/x5e + /xf2/x5f + /xf2/x60 + /xf2/x61 + /xf2/x62 + /xf2/x63 + /xf2/x64 + /xf2/x65 + /xf2/x66 + /xf2/x67 + /xf2/x68 + /xf2/x69 + /xf2/x6a + /xf2/x6b + /xf2/x6c + /xf2/x6d + /xf2/x6e + /xf2/x6f + /xf2/x70 + /xf2/x71 + /xf2/x72 + /xf2/x73 + /xf2/x74 + /xf2/x75 + /xf2/x76 + /xf2/x77 + /xf2/x78 + /xf2/x79 + /xf2/x7a + /xf2/x7b + /xf2/x7c + /xf2/x7d + /xf2/x7e + /xf2/x80 + /xf2/x81 + /xf2/x82 + /xf2/x83 + /xf2/x84 + /xf2/x85 + /xf2/x86 + /xf2/x87 + /xf2/x88 + /xf2/x89 + /xf2/x8a + /xf2/x8b + /xf2/x8c + /xf2/x8d + /xf2/x8e + /xf2/x8f + /xf2/x90 + /xf2/x91 + /xf2/x92 + /xf2/x93 + /xf2/x94 + /xf2/x95 + /xf2/x96 + /xf2/x97 + /xf2/x98 + /xf2/x99 + /xf2/x9a + /xf2/x9b + /xf2/x9c + /xf2/x9d + /xf2/x9e + /xf2/x9f + /xf2/xa0 + /xf2/xa1 + /xf2/xa2 + /xf2/xa3 + /xf2/xa4 + /xf2/xa5 + /xf2/xa6 + /xf2/xa7 + /xf2/xa8 + /xf2/xa9 + /xf2/xaa + /xf2/xab + /xf2/xac + /xf2/xad + /xf2/xae + /xf2/xaf + /xf2/xb0 + /xf2/xb1 + /xf2/xb2 + /xf2/xb3 + /xf2/xb4 + /xf2/xb5 + /xf2/xb6 + /xf2/xb7 + /xf2/xb8 + /xf2/xb9 + /xf2/xba + /xf2/xbb + /xf2/xbc + /xf2/xbd + /xf2/xbe + /xf2/xbf + /xf2/xc0 + /xf2/xc1 + /xf2/xc2 + /xf2/xc3 + /xf2/xc4 + /xf2/xc5 + /xf2/xc6 + /xf2/xc7 + /xf2/xc8 + /xf2/xc9 + /xf2/xca + /xf2/xcb + /xf2/xcc + /xf2/xcd + /xf2/xce + /xf2/xcf + /xf2/xd0 + /xf2/xd1 + /xf2/xd2 + /xf2/xd3 + /xf2/xd4 + /xf2/xd5 + /xf2/xd6 + /xf2/xd7 + /xf2/xd8 + /xf2/xd9 + /xf2/xda + /xf2/xdb + /xf2/xdc + /xf2/xdd + /xf2/xde + /xf2/xdf + /xf2/xe0 + /xf2/xe1 + /xf2/xe2 + /xf2/xe3 + /xf2/xe4 + /xf2/xe5 + /xf2/xe6 + /xf2/xe7 + /xf2/xe8 + /xf2/xe9 + /xf2/xea + /xf2/xeb + /xf2/xec + /xf2/xed + /xf2/xee + /xf2/xef + /xf2/xf0 + /xf2/xf1 + /xf2/xf2 + /xf2/xf3 + /xf2/xf4 + /xf2/xf5 + /xf2/xf6 + /xf2/xf7 + /xf2/xf8 + /xf2/xf9 + /xf2/xfa + /xf2/xfb + /xf2/xfc + /xf3/x40 + /xf3/x41 + /xf3/x42 + /xf3/x43 + /xf3/x44 + /xf3/x45 + /xf3/x46 + /xf3/x47 + /xf3/x48 + /xf3/x49 + /xf3/x4a + /xf3/x4b + /xf3/x4c + /xf3/x4d + /xf3/x4e + /xf3/x4f + /xf3/x50 + /xf3/x51 + /xf3/x52 + /xf3/x53 + /xf3/x54 + /xf3/x55 + /xf3/x56 + /xf3/x57 + /xf3/x58 + /xf3/x59 + /xf3/x5a + /xf3/x5b + /xf3/x5c + /xf3/x5d + /xf3/x5e + /xf3/x5f + /xf3/x60 + /xf3/x61 + /xf3/x62 + /xf3/x63 + /xf3/x64 + /xf3/x65 + /xf3/x66 + /xf3/x67 + /xf3/x68 + /xf3/x69 + /xf3/x6a + /xf3/x6b + /xf3/x6c + /xf3/x6d + /xf3/x6e + /xf3/x6f + /xf3/x70 + /xf3/x71 + /xf3/x72 + /xf3/x73 + /xf3/x74 + /xf3/x75 + /xf3/x76 + /xf3/x77 + /xf3/x78 + /xf3/x79 + /xf3/x7a + /xf3/x7b + /xf3/x7c + /xf3/x7d + /xf3/x7e + /xf3/x80 + /xf3/x81 + /xf3/x82 + /xf3/x83 + /xf3/x84 + /xf3/x85 + /xf3/x86 + /xf3/x87 + /xf3/x88 + /xf3/x89 + /xf3/x8a + /xf3/x8b + /xf3/x8c + /xf3/x8d + /xf3/x8e + /xf3/x8f + /xf3/x90 + /xf3/x91 + /xf3/x92 + /xf3/x93 + /xf3/x94 + /xf3/x95 + /xf3/x96 + /xf3/x97 + /xf3/x98 + /xf3/x99 + /xf3/x9a + /xf3/x9b + /xf3/x9c + /xf3/x9d + /xf3/x9e + /xf3/x9f + /xf3/xa0 + /xf3/xa1 + /xf3/xa2 + /xf3/xa3 + /xf3/xa4 + /xf3/xa5 + /xf3/xa6 + /xf3/xa7 + /xf3/xa8 + /xf3/xa9 + /xf3/xaa + /xf3/xab + /xf3/xac + /xf3/xad + /xf3/xae + /xf3/xaf + /xf3/xb0 + /xf3/xb1 + /xf3/xb2 + /xf3/xb3 + /xf3/xb4 + /xf3/xb5 + /xf3/xb6 + /xf3/xb7 + /xf3/xb8 + /xf3/xb9 + /xf3/xba + /xf3/xbb + /xf3/xbc + /xf3/xbd + /xf3/xbe + /xf3/xbf + /xf3/xc0 + /xf3/xc1 + /xf3/xc2 + /xf3/xc3 + /xf3/xc4 + /xf3/xc5 + /xf3/xc6 + /xf3/xc7 + /xf3/xc8 + /xf3/xc9 + /xf3/xca + /xf3/xcb + /xf3/xcc + /xf3/xcd + /xf3/xce + /xf3/xcf + /xf3/xd0 + /xf3/xd1 + /xf3/xd2 + /xf3/xd3 + /xf3/xd4 + /xf3/xd5 + /xf3/xd6 + /xf3/xd7 + /xf3/xd8 + /xf3/xd9 + /xf3/xda + /xf3/xdb + /xf3/xdc + /xf3/xdd + /xf3/xde + /xf3/xdf + /xf3/xe0 + /xf3/xe1 + /xf3/xe2 + /xf3/xe3 + /xf3/xe4 + /xf3/xe5 + /xf3/xe6 + /xf3/xe7 + /xf3/xe8 + /xf3/xe9 + /xf3/xea + /xf3/xeb + /xf3/xec + /xf3/xed + /xf3/xee + /xf3/xef + /xf3/xf0 + /xf3/xf1 + /xf3/xf2 + /xf3/xf3 + /xf3/xf4 + /xf3/xf5 + /xf3/xf6 + /xf3/xf7 + /xf3/xf8 + /xf3/xf9 + /xf3/xfa + /xf3/xfb + /xf3/xfc + /xf4/x40 + /xf4/x41 + /xf4/x42 + /xf4/x43 + /xf4/x44 + /xf4/x45 + /xf4/x46 + /xf4/x47 + /xf4/x48 + /xf4/x49 + /xf4/x4a + /xf4/x4b + /xf4/x4c + /xf4/x4d + /xf4/x4e + /xf4/x4f + /xf4/x50 + /xf4/x51 + /xf4/x52 + /xf4/x53 + /xf4/x54 + /xf4/x55 + /xf4/x56 + /xf4/x57 + /xf4/x58 + /xf4/x59 + /xf4/x5a + /xf4/x5b + /xf4/x5c + /xf4/x5d + /xf4/x5e + /xf4/x5f + /xf4/x60 + /xf4/x61 + /xf4/x62 + /xf4/x63 + /xf4/x64 + /xf4/x65 + /xf4/x66 + /xf4/x67 + /xf4/x68 + /xf4/x69 + /xf4/x6a + /xf4/x6b + /xf4/x6c + /xf4/x6d + /xf4/x6e + /xf4/x6f + /xf4/x70 + /xf4/x71 + /xf4/x72 + /xf4/x73 + /xf4/x74 + /xf4/x75 + /xf4/x76 + /xf4/x77 + /xf4/x78 + /xf4/x79 + /xf4/x7a + /xf4/x7b + /xf4/x7c + /xf4/x7d + /xf4/x7e + /xf4/x80 + /xf4/x81 + /xf4/x82 + /xf4/x83 + /xf4/x84 + /xf4/x85 + /xf4/x86 + /xf4/x87 + /xf4/x88 + /xf4/x89 + /xf4/x8a + /xf4/x8b + /xf4/x8c + /xf4/x8d + /xf4/x8e + /xf4/x8f + /xf4/x90 + /xf4/x91 + /xf4/x92 + /xf4/x93 + /xf4/x94 + /xf4/x95 + /xf4/x96 + /xf4/x97 + /xf4/x98 + /xf4/x99 + /xf4/x9a + /xf4/x9b + /xf4/x9c + /xf4/x9d + /xf4/x9e + /xf4/x9f + /xf4/xa0 + /xf4/xa1 + /xf4/xa2 + /xf4/xa3 + /xf4/xa4 + /xf4/xa5 + /xf4/xa6 + /xf4/xa7 + /xf4/xa8 + /xf4/xa9 + /xf4/xaa + /xf4/xab + /xf4/xac + /xf4/xad + /xf4/xae + /xf4/xaf + /xf4/xb0 + /xf4/xb1 + /xf4/xb2 + /xf4/xb3 + /xf4/xb4 + /xf4/xb5 + /xf4/xb6 + /xf4/xb7 + /xf4/xb8 + /xf4/xb9 + /xf4/xba + /xf4/xbb + /xf4/xbc + /xf4/xbd + /xf4/xbe + /xf4/xbf + /xf4/xc0 + /xf4/xc1 + /xf4/xc2 + /xf4/xc3 + /xf4/xc4 + /xf4/xc5 + /xf4/xc6 + /xf4/xc7 + /xf4/xc8 + /xf4/xc9 + /xf4/xca + /xf4/xcb + /xf4/xcc + /xf4/xcd + /xf4/xce + /xf4/xcf + /xf4/xd0 + /xf4/xd1 + /xf4/xd2 + /xf4/xd3 + /xf4/xd4 + /xf4/xd5 + /xf4/xd6 + /xf4/xd7 + /xf4/xd8 + /xf4/xd9 + /xf4/xda + /xf4/xdb + /xf4/xdc + /xf4/xdd + /xf4/xde + /xf4/xdf + /xf4/xe0 + /xf4/xe1 + /xf4/xe2 + /xf4/xe3 + /xf4/xe4 + /xf4/xe5 + /xf4/xe6 + /xf4/xe7 + /xf4/xe8 + /xf4/xe9 + /xf4/xea + /xf4/xeb + /xf4/xec + /xf4/xed + /xf4/xee + /xf4/xef + /xf4/xf0 + /xf4/xf1 + /xf4/xf2 + /xf4/xf3 + /xf4/xf4 + /xf4/xf5 + /xf4/xf6 + /xf4/xf7 + /xf4/xf8 + /xf4/xf9 + /xf4/xfa + /xf4/xfb + /xf4/xfc + /xf5/x40 + /xf5/x41 + /xf5/x42 + /xf5/x43 + /xf5/x44 + /xf5/x45 + /xf5/x46 + /xf5/x47 + /xf5/x48 + /xf5/x49 + /xf5/x4a + /xf5/x4b + /xf5/x4c + /xf5/x4d + /xf5/x4e + /xf5/x4f + /xf5/x50 + /xf5/x51 + /xf5/x52 + /xf5/x53 + /xf5/x54 + /xf5/x55 + /xf5/x56 + /xf5/x57 + /xf5/x58 + /xf5/x59 + /xf5/x5a + /xf5/x5b + /xf5/x5c + /xf5/x5d + /xf5/x5e + /xf5/x5f + /xf5/x60 + /xf5/x61 + /xf5/x62 + /xf5/x63 + /xf5/x64 + /xf5/x65 + /xf5/x66 + /xf5/x67 + /xf5/x68 + /xf5/x69 + /xf5/x6a + /xf5/x6b + /xf5/x6c + /xf5/x6d + /xf5/x6e + /xf5/x6f + /xf5/x70 + /xf5/x71 + /xf5/x72 + /xf5/x73 + /xf5/x74 + /xf5/x75 + /xf5/x76 + /xf5/x77 + /xf5/x78 + /xf5/x79 + /xf5/x7a + /xf5/x7b + /xf5/x7c + /xf5/x7d + /xf5/x7e + /xf5/x80 + /xf5/x81 + /xf5/x82 + /xf5/x83 + /xf5/x84 + /xf5/x85 + /xf5/x86 + /xf5/x87 + /xf5/x88 + /xf5/x89 + /xf5/x8a + /xf5/x8b + /xf5/x8c + /xf5/x8d + /xf5/x8e + /xf5/x8f + /xf5/x90 + /xf5/x91 + /xf5/x92 + /xf5/x93 + /xf5/x94 + /xf5/x95 + /xf5/x96 + /xf5/x97 + /xf5/x98 + /xf5/x99 + /xf5/x9a + /xf5/x9b + /xf5/x9c + /xf5/x9d + /xf5/x9e + /xf5/x9f + /xf5/xa0 + /xf5/xa1 + /xf5/xa2 + /xf5/xa3 + /xf5/xa4 + /xf5/xa5 + /xf5/xa6 + /xf5/xa7 + /xf5/xa8 + /xf5/xa9 + /xf5/xaa + /xf5/xab + /xf5/xac + /xf5/xad + /xf5/xae + /xf5/xaf + /xf5/xb0 + /xf5/xb1 + /xf5/xb2 + /xf5/xb3 + /xf5/xb4 + /xf5/xb5 + /xf5/xb6 + /xf5/xb7 + /xf5/xb8 + /xf5/xb9 + /xf5/xba + /xf5/xbb + /xf5/xbc + /xf5/xbd + /xf5/xbe + /xf5/xbf + /xf5/xc0 + /xf5/xc1 + /xf5/xc2 + /xf5/xc3 + /xf5/xc4 + /xf5/xc5 + /xf5/xc6 + /xf5/xc7 + /xf5/xc8 + /xf5/xc9 + /xf5/xca + /xf5/xcb + /xf5/xcc + /xf5/xcd + /xf5/xce + /xf5/xcf + /xf5/xd0 + /xf5/xd1 + /xf5/xd2 + /xf5/xd3 + /xf5/xd4 + /xf5/xd5 + /xf5/xd6 + /xf5/xd7 + /xf5/xd8 + /xf5/xd9 + /xf5/xda + /xf5/xdb + /xf5/xdc + /xf5/xdd + /xf5/xde + /xf5/xdf + /xf5/xe0 + /xf5/xe1 + /xf5/xe2 + /xf5/xe3 + /xf5/xe4 + /xf5/xe5 + /xf5/xe6 + /xf5/xe7 + /xf5/xe8 + /xf5/xe9 + /xf5/xea + /xf5/xeb + /xf5/xec + /xf5/xed + /xf5/xee + /xf5/xef + /xf5/xf0 + /xf5/xf1 + /xf5/xf2 + /xf5/xf3 + /xf5/xf4 + /xf5/xf5 + /xf5/xf6 + /xf5/xf7 + /xf5/xf8 + /xf5/xf9 + /xf5/xfa + /xf5/xfb + /xf5/xfc + /xf6/x40 + /xf6/x41 + /xf6/x42 + /xf6/x43 + /xf6/x44 + /xf6/x45 + /xf6/x46 + /xf6/x47 + /xf6/x48 + /xf6/x49 + /xf6/x4a + /xf6/x4b + /xf6/x4c + /xf6/x4d + /xf6/x4e + /xf6/x4f + /xf6/x50 + /xf6/x51 + /xf6/x52 + /xf6/x53 + /xf6/x54 + /xf6/x55 + /xf6/x56 + /xf6/x57 + /xf6/x58 + /xf6/x59 + /xf6/x5a + /xf6/x5b + /xf6/x5c + /xf6/x5d + /xf6/x5e + /xf6/x5f + /xf6/x60 + /xf6/x61 + /xf6/x62 + /xf6/x63 + /xf6/x64 + /xf6/x65 + /xf6/x66 + /xf6/x67 + /xf6/x68 + /xf6/x69 + /xf6/x6a + /xf6/x6b + /xf6/x6c + /xf6/x6d + /xf6/x6e + /xf6/x6f + /xf6/x70 + /xf6/x71 + /xf6/x72 + /xf6/x73 + /xf6/x74 + /xf6/x75 + /xf6/x76 + /xf6/x77 + /xf6/x78 + /xf6/x79 + /xf6/x7a + /xf6/x7b + /xf6/x7c + /xf6/x7d + /xf6/x7e + /xf6/x80 + /xf6/x81 + /xf6/x82 + /xf6/x83 + /xf6/x84 + /xf6/x85 + /xf6/x86 + /xf6/x87 + /xf6/x88 + /xf6/x89 + /xf6/x8a + /xf6/x8b + /xf6/x8c + /xf6/x8d + /xf6/x8e + /xf6/x8f + /xf6/x90 + /xf6/x91 + /xf6/x92 + /xf6/x93 + /xf6/x94 + /xf6/x95 + /xf6/x96 + /xf6/x97 + /xf6/x98 + /xf6/x99 + /xf6/x9a + /xf6/x9b + /xf6/x9c + /xf6/x9d + /xf6/x9e + /xf6/x9f + /xf6/xa0 + /xf6/xa1 + /xf6/xa2 + /xf6/xa3 + /xf6/xa4 + /xf6/xa5 + /xf6/xa6 + /xf6/xa7 + /xf6/xa8 + /xf6/xa9 + /xf6/xaa + /xf6/xab + /xf6/xac + /xf6/xad + /xf6/xae + /xf6/xaf + /xf6/xb0 + /xf6/xb1 + /xf6/xb2 + /xf6/xb3 + /xf6/xb4 + /xf6/xb5 + /xf6/xb6 + /xf6/xb7 + /xf6/xb8 + /xf6/xb9 + /xf6/xba + /xf6/xbb + /xf6/xbc + /xf6/xbd + /xf6/xbe + /xf6/xbf + /xf6/xc0 + /xf6/xc1 + /xf6/xc2 + /xf6/xc3 + /xf6/xc4 + /xf6/xc5 + /xf6/xc6 + /xf6/xc7 + /xf6/xc8 + /xf6/xc9 + /xf6/xca + /xf6/xcb + /xf6/xcc + /xf6/xcd + /xf6/xce + /xf6/xcf + /xf6/xd0 + /xf6/xd1 + /xf6/xd2 + /xf6/xd3 + /xf6/xd4 + /xf6/xd5 + /xf6/xd6 + /xf6/xd7 + /xf6/xd8 + /xf6/xd9 + /xf6/xda + /xf6/xdb + /xf6/xdc + /xf6/xdd + /xf6/xde + /xf6/xdf + /xf6/xe0 + /xf6/xe1 + /xf6/xe2 + /xf6/xe3 + /xf6/xe4 + /xf6/xe5 + /xf6/xe6 + /xf6/xe7 + /xf6/xe8 + /xf6/xe9 + /xf6/xea + /xf6/xeb + /xf6/xec + /xf6/xed + /xf6/xee + /xf6/xef + /xf6/xf0 + /xf6/xf1 + /xf6/xf2 + /xf6/xf3 + /xf6/xf4 + /xf6/xf5 + /xf6/xf6 + /xf6/xf7 + /xf6/xf8 + /xf6/xf9 + /xf6/xfa + /xf6/xfb + /xf6/xfc + /xf7/x40 + /xf7/x41 + /xf7/x42 + /xf7/x43 + /xf7/x44 + /xf7/x45 + /xf7/x46 + /xf7/x47 + /xf7/x48 + /xf7/x49 + /xf7/x4a + /xf7/x4b + /xf7/x4c + /xf7/x4d + /xf7/x4e + /xf7/x4f + /xf7/x50 + /xf7/x51 + /xf7/x52 + /xf7/x53 + /xf7/x54 + /xf7/x55 + /xf7/x56 + /xf7/x57 + /xf7/x58 + /xf7/x59 + /xf7/x5a + /xf7/x5b + /xf7/x5c + /xf7/x5d + /xf7/x5e + /xf7/x5f + /xf7/x60 + /xf7/x61 + /xf7/x62 + /xf7/x63 + /xf7/x64 + /xf7/x65 + /xf7/x66 + /xf7/x67 + /xf7/x68 + /xf7/x69 + /xf7/x6a + /xf7/x6b + /xf7/x6c + /xf7/x6d + /xf7/x6e + /xf7/x6f + /xf7/x70 + /xf7/x71 + /xf7/x72 + /xf7/x73 + /xf7/x74 + /xf7/x75 + /xf7/x76 + /xf7/x77 + /xf7/x78 + /xf7/x79 + /xf7/x7a + /xf7/x7b + /xf7/x7c + /xf7/x7d + /xf7/x7e + /xf7/x80 + /xf7/x81 + /xf7/x82 + /xf7/x83 + /xf7/x84 + /xf7/x85 + /xf7/x86 + /xf7/x87 + /xf7/x88 + /xf7/x89 + /xf7/x8a + /xf7/x8b + /xf7/x8c + /xf7/x8d + /xf7/x8e + /xf7/x8f + /xf7/x90 + /xf7/x91 + /xf7/x92 + /xf7/x93 + /xf7/x94 + /xf7/x95 + /xf7/x96 + /xf7/x97 + /xf7/x98 + /xf7/x99 + /xf7/x9a + /xf7/x9b + /xf7/x9c + /xf7/x9d + /xf7/x9e + /xf7/x9f + /xf7/xa0 + /xf7/xa1 + /xf7/xa2 + /xf7/xa3 + /xf7/xa4 + /xf7/xa5 + /xf7/xa6 + /xf7/xa7 + /xf7/xa8 + /xf7/xa9 + /xf7/xaa + /xf7/xab + /xf7/xac + /xf7/xad + /xf7/xae + /xf7/xaf + /xf7/xb0 + /xf7/xb1 + /xf7/xb2 + /xf7/xb3 + /xf7/xb4 + /xf7/xb5 + /xf7/xb6 + /xf7/xb7 + /xf7/xb8 + /xf7/xb9 + /xf7/xba + /xf7/xbb + /xf7/xbc + /xf7/xbd + /xf7/xbe + /xf7/xbf + /xf7/xc0 + /xf7/xc1 + /xf7/xc2 + /xf7/xc3 + /xf7/xc4 + /xf7/xc5 + /xf7/xc6 + /xf7/xc7 + /xf7/xc8 + /xf7/xc9 + /xf7/xca + /xf7/xcb + /xf7/xcc + /xf7/xcd + /xf7/xce + /xf7/xcf + /xf7/xd0 + /xf7/xd1 + /xf7/xd2 + /xf7/xd3 + /xf7/xd4 + /xf7/xd5 + /xf7/xd6 + /xf7/xd7 + /xf7/xd8 + /xf7/xd9 + /xf7/xda + /xf7/xdb + /xf7/xdc + /xf7/xdd + /xf7/xde + /xf7/xdf + /xf7/xe0 + /xf7/xe1 + /xf7/xe2 + /xf7/xe3 + /xf7/xe4 + /xf7/xe5 + /xf7/xe6 + /xf7/xe7 + /xf7/xe8 + /xf7/xe9 + /xf7/xea + /xf7/xeb + /xf7/xec + /xf7/xed + /xf7/xee + /xf7/xef + /xf7/xf0 + /xf7/xf1 + /xf7/xf2 + /xf7/xf3 + /xf7/xf4 + /xf7/xf5 + /xf7/xf6 + /xf7/xf7 + /xf7/xf8 + /xf7/xf9 + /xf7/xfa + /xf7/xfb + /xf7/xfc + /xf8/x40 + /xf8/x41 + /xf8/x42 + /xf8/x43 + /xf8/x44 + /xf8/x45 + /xf8/x46 + /xf8/x47 + /xf8/x48 + /xf8/x49 + /xf8/x4a + /xf8/x4b + /xf8/x4c + /xf8/x4d + /xf8/x4e + /xf8/x4f + /xf8/x50 + /xf8/x51 + /xf8/x52 + /xf8/x53 + /xf8/x54 + /xf8/x55 + /xf8/x56 + /xf8/x57 + /xf8/x58 + /xf8/x59 + /xf8/x5a + /xf8/x5b + /xf8/x5c + /xf8/x5d + /xf8/x5e + /xf8/x5f + /xf8/x60 + /xf8/x61 + /xf8/x62 + /xf8/x63 + /xf8/x64 + /xf8/x65 + /xf8/x66 + /xf8/x67 + /xf8/x68 + /xf8/x69 + /xf8/x6a + /xf8/x6b + /xf8/x6c + /xf8/x6d + /xf8/x6e + /xf8/x6f + /xf8/x70 + /xf8/x71 + /xf8/x72 + /xf8/x73 + /xf8/x74 + /xf8/x75 + /xf8/x76 + /xf8/x77 + /xf8/x78 + /xf8/x79 + /xf8/x7a + /xf8/x7b + /xf8/x7c + /xf8/x7d + /xf8/x7e + /xf8/x80 + /xf8/x81 + /xf8/x82 + /xf8/x83 + /xf8/x84 + /xf8/x85 + /xf8/x86 + /xf8/x87 + /xf8/x88 + /xf8/x89 + /xf8/x8a + /xf8/x8b + /xf8/x8c + /xf8/x8d + /xf8/x8e + /xf8/x8f + /xf8/x90 + /xf8/x91 + /xf8/x92 + /xf8/x93 + /xf8/x94 + /xf8/x95 + /xf8/x96 + /xf8/x97 + /xf8/x98 + /xf8/x99 + /xf8/x9a + /xf8/x9b + /xf8/x9c + /xf8/x9d + /xf8/x9e + /xf8/x9f + /xf8/xa0 + /xf8/xa1 + /xf8/xa2 + /xf8/xa3 + /xf8/xa4 + /xf8/xa5 + /xf8/xa6 + /xf8/xa7 + /xf8/xa8 + /xf8/xa9 + /xf8/xaa + /xf8/xab + /xf8/xac + /xf8/xad + /xf8/xae + /xf8/xaf + /xf8/xb0 + /xf8/xb1 + /xf8/xb2 + /xf8/xb3 + /xf8/xb4 + /xf8/xb5 + /xf8/xb6 + /xf8/xb7 + /xf8/xb8 + /xf8/xb9 + /xf8/xba + /xf8/xbb + /xf8/xbc + /xf8/xbd + /xf8/xbe + /xf8/xbf + /xf8/xc0 + /xf8/xc1 + /xf8/xc2 + /xf8/xc3 + /xf8/xc4 + /xf8/xc5 + /xf8/xc6 + /xf8/xc7 + /xf8/xc8 + /xf8/xc9 + /xf8/xca + /xf8/xcb + /xf8/xcc + /xf8/xcd + /xf8/xce + /xf8/xcf + /xf8/xd0 + /xf8/xd1 + /xf8/xd2 + /xf8/xd3 + /xf8/xd4 + /xf8/xd5 + /xf8/xd6 + /xf8/xd7 + /xf8/xd8 + /xf8/xd9 + /xf8/xda + /xf8/xdb + /xf8/xdc + /xf8/xdd + /xf8/xde + /xf8/xdf + /xf8/xe0 + /xf8/xe1 + /xf8/xe2 + /xf8/xe3 + /xf8/xe4 + /xf8/xe5 + /xf8/xe6 + /xf8/xe7 + /xf8/xe8 + /xf8/xe9 + /xf8/xea + /xf8/xeb + /xf8/xec + /xf8/xed + /xf8/xee + /xf8/xef + /xf8/xf0 + /xf8/xf1 + /xf8/xf2 + /xf8/xf3 + /xf8/xf4 + /xf8/xf5 + /xf8/xf6 + /xf8/xf7 + /xf8/xf8 + /xf8/xf9 + /xf8/xfa + /xf8/xfb + /xf8/xfc + /xf9/x40 + /xf9/x41 + /xf9/x42 + /xf9/x43 + /xf9/x44 + /xf9/x45 + /xf9/x46 + /xf9/x47 + /xf9/x48 + /xf9/x49 + /xf9/x4a + /xf9/x4b + /xf9/x4c + /xf9/x4d + /xf9/x4e + /xf9/x4f + /xf9/x50 + /xf9/x51 + /xf9/x52 + /xf9/x53 + /xf9/x54 + /xf9/x55 + /xf9/x56 + /xf9/x57 + /xf9/x58 + /xf9/x59 + /xf9/x5a + /xf9/x5b + /xf9/x5c + /xf9/x5d + /xf9/x5e + /xf9/x5f + /xf9/x60 + /xf9/x61 + /xf9/x62 + /xf9/x63 + /xf9/x64 + /xf9/x65 + /xf9/x66 + /xf9/x67 + /xf9/x68 + /xf9/x69 + /xf9/x6a + /xf9/x6b + /xf9/x6c + /xf9/x6d + /xf9/x6e + /xf9/x6f + /xf9/x70 + /xf9/x71 + /xf9/x72 + /xf9/x73 + /xf9/x74 + /xf9/x75 + /xf9/x76 + /xf9/x77 + /xf9/x78 + /xf9/x79 + /xf9/x7a + /xf9/x7b + /xf9/x7c + /xf9/x7d + /xf9/x7e + /xf9/x80 + /xf9/x81 + /xf9/x82 + /xf9/x83 + /xf9/x84 + /xf9/x85 + /xf9/x86 + /xf9/x87 + /xf9/x88 + /xf9/x89 + /xf9/x8a + /xf9/x8b + /xf9/x8c + /xf9/x8d + /xf9/x8e + /xf9/x8f + /xf9/x90 + /xf9/x91 + /xf9/x92 + /xf9/x93 + /xf9/x94 + /xf9/x95 + /xf9/x96 + /xf9/x97 + /xf9/x98 + /xf9/x99 + /xf9/x9a + /xf9/x9b + /xf9/x9c + /xf9/x9d + /xf9/x9e + /xf9/x9f + /xf9/xa0 + /xf9/xa1 + /xf9/xa2 + /xf9/xa3 + /xf9/xa4 + /xf9/xa5 + /xf9/xa6 + /xf9/xa7 + /xf9/xa8 + /xf9/xa9 + /xf9/xaa + /xf9/xab + /xf9/xac + /xf9/xad + /xf9/xae + /xf9/xaf + /xf9/xb0 + /xf9/xb1 + /xf9/xb2 + /xf9/xb3 + /xf9/xb4 + /xf9/xb5 + /xf9/xb6 + /xf9/xb7 + /xf9/xb8 + /xf9/xb9 + /xf9/xba + /xf9/xbb + /xf9/xbc + /xf9/xbd + /xf9/xbe + /xf9/xbf + /xf9/xc0 + /xf9/xc1 + /xf9/xc2 + /xf9/xc3 + /xf9/xc4 + /xf9/xc5 + /xf9/xc6 + /xf9/xc7 + /xf9/xc8 + /xf9/xc9 + /xf9/xca + /xf9/xcb + /xf9/xcc + /xf9/xcd + /xf9/xce + /xf9/xcf + /xf9/xd0 + /xf9/xd1 + /xf9/xd2 + /xf9/xd3 + /xf9/xd4 + /xf9/xd5 + /xf9/xd6 + /xf9/xd7 + /xf9/xd8 + /xf9/xd9 + /xf9/xda + /xf9/xdb + /xf9/xdc + /xf9/xdd + /xf9/xde + /xf9/xdf + /xf9/xe0 + /xf9/xe1 + /xf9/xe2 + /xf9/xe3 + /xf9/xe4 + /xf9/xe5 + /xf9/xe6 + /xf9/xe7 + /xf9/xe8 + /xf9/xe9 + /xf9/xea + /xf9/xeb + /xf9/xec + /xf9/xed + /xf9/xee + /xf9/xef + /xf9/xf0 + /xf9/xf1 + /xf9/xf2 + /xf9/xf3 + /xf9/xf4 + /xf9/xf5 + /xf9/xf6 + /xf9/xf7 + /xf9/xf8 + /xf9/xf9 + /xf9/xfa + /xf9/xfb + /xf9/xfc + + /xfa/x40 SMALL ROMAN NUMERAL ONE + /xfa/x41 SMALL ROMAN NUMERAL TWO + /xfa/x42 SMALL ROMAN NUMERAL THREE + /xfa/x43 SMALL ROMAN NUMERAL FOUR + /xfa/x44 SMALL ROMAN NUMERAL FIVE + /xfa/x45 SMALL ROMAN NUMERAL SIX + /xfa/x46 SMALL ROMAN NUMERAL SEVEN + /xfa/x47 SMALL ROMAN NUMERAL EIGHT + /xfa/x48 SMALL ROMAN NUMERAL NINE + /xfa/x49 SMALL ROMAN NUMERAL TEN +%IRREVERSIBLE% /xfa/x4a ROMAN NUMERAL ONE +%IRREVERSIBLE% /xfa/x4b ROMAN NUMERAL TWO +%IRREVERSIBLE% /xfa/x4c ROMAN NUMERAL THREE +%IRREVERSIBLE% /xfa/x4d ROMAN NUMERAL FOUR +%IRREVERSIBLE% /xfa/x4e ROMAN NUMERAL FIVE +%IRREVERSIBLE% /xfa/x4f ROMAN NUMERAL SIX +%IRREVERSIBLE% /xfa/x50 ROMAN NUMERAL SEVEN +%IRREVERSIBLE% /xfa/x51 ROMAN NUMERAL EIGHT +%IRREVERSIBLE% /xfa/x52 ROMAN NUMERAL NINE +%IRREVERSIBLE% /xfa/x53 ROMAN NUMERAL TEN +%IRREVERSIBLE% /xfa/x54 FULLWIDTH NOT SIGN + /xfa/x55 FULLWIDTH BROKEN BAR + /xfa/x56 FULLWIDTH APOSTROPHE + /xfa/x57 FULLWIDTH QUOTATION MARK +%IRREVERSIBLE% /xfa/x58 PARENTHESIZED IDEOGRAPH STOCK +%IRREVERSIBLE% /xfa/x59 NUMERO SIGN +%IRREVERSIBLE% /xfa/x5a TELEPHONE SIGN +%IRREVERSIBLE% /xfa/x5b BECAUSE + /xfa/x5c + /xfa/x5d + /xfa/x5e + /xfa/x5f + /xfa/x60 + /xfa/x61 + /xfa/x62 + /xfa/x63 + /xfa/x64 + /xfa/x65 + /xfa/x66 + /xfa/x67 + /xfa/x68 + /xfa/x69 + /xfa/x6a + /xfa/x6b + /xfa/x6c + /xfa/x6d + /xfa/x6e + /xfa/x6f + /xfa/x70 + /xfa/x71 + /xfa/x72 + /xfa/x73 + /xfa/x74 + /xfa/x75 + /xfa/x76 + /xfa/x77 + /xfa/x78 + /xfa/x79 + /xfa/x7a + /xfa/x7b + /xfa/x7c + /xfa/x7d + /xfa/x7e + /xfa/x80 + /xfa/x81 + /xfa/x82 + /xfa/x83 + /xfa/x84 + /xfa/x85 + /xfa/x86 + /xfa/x87 + /xfa/x88 + /xfa/x89 + /xfa/x8a + /xfa/x8b + /xfa/x8c + /xfa/x8d + /xfa/x8e + /xfa/x8f + /xfa/x90 CJK COMPATIBILITY IDEOGRAPH-FA0E + /xfa/x91 + /xfa/x92 + /xfa/x93 + /xfa/x94 + /xfa/x95 + /xfa/x96 + /xfa/x97 + /xfa/x98 + /xfa/x99 + /xfa/x9a + /xfa/x9b CJK COMPATIBILITY IDEOGRAPH-FA0F + /xfa/x9c CJK COMPATIBILITY IDEOGRAPH-FA10 + /xfa/x9d + /xfa/x9e + /xfa/x9f + /xfa/xa0 + /xfa/xa1 + /xfa/xa2 + /xfa/xa3 + /xfa/xa4 + /xfa/xa5 + /xfa/xa6 + /xfa/xa7 + /xfa/xa8 + /xfa/xa9 + /xfa/xaa + /xfa/xab + /xfa/xac + /xfa/xad + /xfa/xae + /xfa/xaf + /xfa/xb0 + /xfa/xb1 CJK COMPATIBILITY IDEOGRAPH-FA11 + /xfa/xb2 + /xfa/xb3 + /xfa/xb4 + /xfa/xb5 + /xfa/xb6 + /xfa/xb7 + /xfa/xb8 + /xfa/xb9 + /xfa/xba + /xfa/xbb + /xfa/xbc + /xfa/xbd + /xfa/xbe + /xfa/xbf + /xfa/xc0 + /xfa/xc1 + /xfa/xc2 + /xfa/xc3 + /xfa/xc4 + /xfa/xc5 + /xfa/xc6 + /xfa/xc7 + /xfa/xc8 + /xfa/xc9 + /xfa/xca + /xfa/xcb + /xfa/xcc + /xfa/xcd + /xfa/xce + /xfa/xcf + /xfa/xd0 + /xfa/xd1 + /xfa/xd2 + /xfa/xd3 + /xfa/xd4 + /xfa/xd5 + /xfa/xd6 + /xfa/xd7 + /xfa/xd8 CJK COMPATIBILITY IDEOGRAPH-FA12 + /xfa/xd9 + /xfa/xda + /xfa/xdb + /xfa/xdc + /xfa/xdd + /xfa/xde + /xfa/xdf + /xfa/xe0 CJK COMPATIBILITY IDEOGRAPH-F929 + /xfa/xe1 + /xfa/xe2 + /xfa/xe3 + /xfa/xe4 + /xfa/xe5 + /xfa/xe6 + /xfa/xe7 + /xfa/xe8 CJK COMPATIBILITY IDEOGRAPH-FA13 + /xfa/xe9 + /xfa/xea CJK COMPATIBILITY IDEOGRAPH-FA14 + /xfa/xeb + /xfa/xec + /xfa/xed + /xfa/xee + /xfa/xef + /xfa/xf0 + /xfa/xf1 + /xfa/xf2 + /xfa/xf3 + /xfa/xf4 + /xfa/xf5 + /xfa/xf6 + /xfa/xf7 + /xfa/xf8 + /xfa/xf9 + /xfa/xfa + /xfa/xfb + /xfa/xfc + /xfb/x40 + /xfb/x41 + /xfb/x42 + /xfb/x43 + /xfb/x44 + /xfb/x45 + /xfb/x46 + /xfb/x47 + /xfb/x48 + /xfb/x49 + /xfb/x4a + /xfb/x4b + /xfb/x4c + /xfb/x4d + /xfb/x4e + /xfb/x4f + /xfb/x50 + /xfb/x51 + /xfb/x52 + /xfb/x53 + /xfb/x54 + /xfb/x55 + /xfb/x56 + /xfb/x57 + /xfb/x58 CJK COMPATIBILITY IDEOGRAPH-FA15 + /xfb/x59 + /xfb/x5a + /xfb/x5b + /xfb/x5c + /xfb/x5d + /xfb/x5e CJK COMPATIBILITY IDEOGRAPH-FA16 + /xfb/x5f + /xfb/x60 + /xfb/x61 + /xfb/x62 + /xfb/x63 + /xfb/x64 + /xfb/x65 + /xfb/x66 + /xfb/x67 + /xfb/x68 + /xfb/x69 + /xfb/x6a + /xfb/x6b + /xfb/x6c + /xfb/x6d + /xfb/x6e + /xfb/x6f + /xfb/x70 + /xfb/x71 + /xfb/x72 + /xfb/x73 + /xfb/x74 + /xfb/x75 CJK COMPATIBILITY IDEOGRAPH-FA17 + /xfb/x76 + /xfb/x77 + /xfb/x78 + /xfb/x79 + /xfb/x7a + /xfb/x7b + /xfb/x7c + /xfb/x7d CJK COMPATIBILITY IDEOGRAPH-FA18 + /xfb/x7e CJK COMPATIBILITY IDEOGRAPH-FA19 + /xfb/x80 CJK COMPATIBILITY IDEOGRAPH-FA1A + /xfb/x81 + /xfb/x82 CJK COMPATIBILITY IDEOGRAPH-FA1B + /xfb/x83 + /xfb/x84 + /xfb/x85 + /xfb/x86 CJK COMPATIBILITY IDEOGRAPH-FA1C + /xfb/x87 + /xfb/x88 + /xfb/x89 CJK COMPATIBILITY IDEOGRAPH-FA1D + /xfb/x8a + /xfb/x8b + /xfb/x8c + /xfb/x8d + /xfb/x8e + /xfb/x8f + /xfb/x90 + /xfb/x91 + /xfb/x92 CJK COMPATIBILITY IDEOGRAPH-FA1E + /xfb/x93 + /xfb/x94 + /xfb/x95 + /xfb/x96 + /xfb/x97 + /xfb/x98 + /xfb/x99 + /xfb/x9a + /xfb/x9b + /xfb/x9c + /xfb/x9d CJK COMPATIBILITY IDEOGRAPH-FA1F + /xfb/x9e + /xfb/x9f CJK COMPATIBILITY IDEOGRAPH-FA20 + /xfb/xa0 CJK COMPATIBILITY IDEOGRAPH-FA21 + /xfb/xa1 + /xfb/xa2 + /xfb/xa3 + /xfb/xa4 + /xfb/xa5 + /xfb/xa6 + /xfb/xa7 + /xfb/xa8 + /xfb/xa9 CJK COMPATIBILITY IDEOGRAPH-FA22 + /xfb/xaa + /xfb/xab + /xfb/xac + /xfb/xad + /xfb/xae + /xfb/xaf + /xfb/xb0 + /xfb/xb1 CJK COMPATIBILITY IDEOGRAPH-FA23 + /xfb/xb2 + /xfb/xb3 CJK COMPATIBILITY IDEOGRAPH-FA24 + /xfb/xb4 CJK COMPATIBILITY IDEOGRAPH-FA25 + /xfb/xb5 + /xfb/xb6 + /xfb/xb7 CJK COMPATIBILITY IDEOGRAPH-FA26 + /xfb/xb8 + /xfb/xb9 + /xfb/xba + /xfb/xbb + /xfb/xbc + /xfb/xbd + /xfb/xbe + /xfb/xbf + /xfb/xc0 + /xfb/xc1 + /xfb/xc2 + /xfb/xc3 + /xfb/xc4 + /xfb/xc5 + /xfb/xc6 + /xfb/xc7 + /xfb/xc8 + /xfb/xc9 + /xfb/xca + /xfb/xcb + /xfb/xcc + /xfb/xcd + /xfb/xce + /xfb/xcf + /xfb/xd0 + /xfb/xd1 + /xfb/xd2 + /xfb/xd3 CJK COMPATIBILITY IDEOGRAPH-FA27 + /xfb/xd4 + /xfb/xd5 + /xfb/xd6 + /xfb/xd7 + /xfb/xd8 + /xfb/xd9 + /xfb/xda CJK COMPATIBILITY IDEOGRAPH-FA28 + /xfb/xdb + /xfb/xdc + /xfb/xdd + /xfb/xde + /xfb/xdf + /xfb/xe0 + /xfb/xe1 + /xfb/xe2 + /xfb/xe3 + /xfb/xe4 + /xfb/xe5 + /xfb/xe6 + /xfb/xe7 + /xfb/xe8 + /xfb/xe9 CJK COMPATIBILITY IDEOGRAPH-F9DC + /xfb/xea CJK COMPATIBILITY IDEOGRAPH-FA29 + /xfb/xeb + /xfb/xec + /xfb/xed + /xfb/xee + /xfb/xef + /xfb/xf0 + /xfb/xf1 + /xfb/xf2 + /xfb/xf3 + /xfb/xf4 + /xfb/xf5 + /xfb/xf6 CJK COMPATIBILITY IDEOGRAPH-FA2A + /xfb/xf7 CJK COMPATIBILITY IDEOGRAPH-FA2B + /xfb/xf8 + /xfb/xf9 CJK COMPATIBILITY IDEOGRAPH-FA2C + /xfb/xfa + /xfb/xfb + /xfb/xfc + /xfc/x40 + /xfc/x41 + /xfc/x42 + /xfc/x43 + /xfc/x44 + /xfc/x45 + /xfc/x46 + /xfc/x47 + /xfc/x48 + /xfc/x49 CJK COMPATIBILITY IDEOGRAPH-FA2D + /xfc/x4a + /xfc/x4b +END CHARMAP + +WIDTH +... 2 +... 2 +... 2 +... 2 +... 2 +END WIDTH --- glibc-2.3.2/localedata/collate-test.c 2001-07-07 15:21:05.000000000 -0400 +++ glibc-2.3.2/localedata/collate-test.c 2003-08-21 08:37:05.000000000 -0400 @@ -1,5 +1,5 @@ /* Test collation function using real data. - Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1997, 1999, 2000, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -19,6 +19,7 @@ 02111-1307 USA. */ #include +#include #include #include #include @@ -27,8 +28,8 @@ struct lines { - const char *key; - const char *line; + char *key; + char *line; }; static int xstrcoll (const void *, const void *); @@ -43,6 +44,9 @@ size_t len = 0; size_t n; + if (argc < 2) + error (1, 0, "usage: %s ", argv[0]); + setlocale (LC_ALL, ""); nstrings_max = 100; @@ -63,8 +67,8 @@ if (nstrings == nstrings_max) { strings = (struct lines *) realloc (strings, - (nstrings_max *= 2 - * sizeof (*strings))); + (nstrings_max *= 2) + * sizeof (*strings)); if (strings == NULL) { perror (argv[0]); @@ -78,6 +82,7 @@ strings[nstrings].key = strndup (line, l); ++nstrings; } + free (line); /* First shuffle. */ srandom (atoi (argv[1])); @@ -105,7 +110,12 @@ /* Print the result. */ for (n = 0; n < nstrings; ++n) - fputs (strings[n].line, stdout); + { + fputs (strings[n].line, stdout); + free (strings[n].line); + free (strings[n].key); + } + free (strings); return result; } --- glibc-2.3.2/localedata/locales/an_ES 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/localedata/locales/an_ES 2003-09-19 22:37:05.000000000 -0400 @@ -0,0 +1,126 @@ +comment_char % +escape_char / +% +% Aragonese Language Locale for Spain +% Source: +% Address: +% Contact: Jordi Mallach Pérez +% Email: jordi@gnu.org +% Language: an +% Territory: ES +% Revision: 1.0 +% Date: 2003-05-22 +% Application: general +% Users: general +% Charset: ISO-8859-15 +% +% This file is under the +% GNU General Public License. +% Based in the gl_ES Locale + +LC_IDENTIFICATION +title "Aragonese locale for Spain" +source "" +address "" +contact "Jordi Mallach Pérez" +email "bug-glibc@gnu.org" +tel "" +fax "" +language "Aragonese" +territory "Spain" +revision "1.1" +date "2003-08-25" +% +category "i18n:1999";LC_IDENTIFICATION +category "i18n:1999";LC_CTYPE +category "i18n:1999";LC_COLLATE +category "i18n:1999";LC_TIME +category "posix:1993";LC_NUMERIC +category "i18n:1999";LC_MONETARY +category "i18n:1999";LC_MESSAGES +category "i18n:1999";LC_PAPER +category "i18n:1999";LC_NAME +category "i18n:1999";LC_ADDRESS +category "i18n:1999";LC_TELEPHONE +END LC_IDENTIFICATION + +LC_COLLATE +copy "es_ES" +END LC_COLLATE + +LC_CTYPE +copy "es_ES" +END LC_CTYPE + +LC_MESSAGES +yesexpr "" +noexpr "" +END LC_MESSAGES + +LC_MONETARY +copy "es_ES" +END LC_MONETARY + +LC_NUMERIC +copy "es_ES" +END LC_NUMERIC + +LC_TIME +abday "";"";/ + "";"";/ + "";"";/ + "" +day "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "" +abmon "";"";/ + "";"";/ + "";"";/ + "";"";/ + "";"";/ + "";"" +mon "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "" +d_t_fmt "" +d_fmt "" +t_fmt "" +am_pm "";"" +t_fmt_ampm "" +date_fmt "/ +/ +" +END LC_TIME + +LC_PAPER +copy "es_ES" +END LC_PAPER + +LC_TELEPHONE +copy "es_ES" +END LC_TELEPHONE + +LC_MEASUREMENT +copy "es_ES" +END LC_MEASUREMENT + +LC_NAME +copy "es_ES" +END LC_NAME + +LC_ADDRESS +copy "es_ES" +END LC_ADDRESS --- glibc-2.3.2/localedata/locales/ar_BH 2000-10-26 13:42:04.000000000 -0400 +++ glibc-2.3.2/localedata/locales/ar_BH 2003-04-24 20:05:58.000000000 -0400 @@ -5,7 +5,7 @@ % Tetsuji Orita . LC_IDENTIFICATION -title "Arabic language locale for Bahrein" +title "Arabic language locale for Bahrain" source "IBM Globalization Center of Competency, Yamato Software Laboratory" address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan" contact "" @@ -13,7 +13,7 @@ tel "" fax "" language "Arabic" -territory "Bahrein" +territory "Bahrain" revision "1.0" date "2000-07-20" % --- glibc-2.3.2/localedata/locales/ar_SD 2000-10-26 13:44:45.000000000 -0400 +++ glibc-2.3.2/localedata/locales/ar_SD 2003-04-24 20:05:58.000000000 -0400 @@ -47,7 +47,7 @@ % These are generated based on XML base Locale difintion file % for IBM Class for Unicode/Java % -int_curr_symbol "" +int_curr_symbol "" currency_symbol "" mon_decimal_point "" mon_thousands_sep "" --- glibc-2.3.2/localedata/locales/de_DE 2002-02-28 03:34:13.000000000 -0500 +++ glibc-2.3.2/localedata/locales/de_DE 2003-05-12 12:13:05.000000000 -0400 @@ -94,10 +94,10 @@ END LC_NUMERIC LC_TIME -abday "";"";/ - "";"";/ - "";"";/ - "" +abday "";"";/ + "";"";/ + "";"";/ + "" day "";/ "";/ "";/ --- glibc-2.3.2/localedata/locales/en_ZA 2000-10-26 13:48:46.000000000 -0400 +++ glibc-2.3.2/localedata/locales/en_ZA 2003-03-18 16:46:07.000000000 -0500 @@ -2,44 +2,54 @@ comment_char % % English language locale for South Africa -% Source: RAP -% Email: nic@sig.co.za -% Tel: +27 83 7659503 -% Fax: +27 12 3478098 +% Source: Zuza Software Foundation +% Email: dwayne@translate.org.za +% Tel: +27 21 4487827 +% Fax: +27 21 4489574 % Language: en % Territory: ZA -% Revision: 1.0 -% Date: 1999-03-28 +% Revision: 1.1 +% Date: 2003-03-14 % Users: general % Repertoiremap: mnemonic,ds % Charset: ISO-8859-1 % Distribution and use is free, also % for commercial purposes. +% +% Changelog +% 1.1 (2003-03-14): +% - Updated maintainer to Zuza Sofware Foundation +% - Changed %x for LC_TIME to use dd/mm/ccyy +% - Added ^ to LC_MESSAGES regex "^[yY].*" +% - Confirmed LC_PAPER and LC_MEASUREMENT settings +% - Added country and language names to LC_ADDRESS +% - Added missing info for LC_TELEPHONE LC_IDENTIFICATION title "English locale for South Africa" -source "RAP" -address "" -contact "" -email "bug-glibc@gnu.org" -tel "" -fax "" +source "Zuza Software Foundation" +address "Box 13412, Mowbray, 7701, South Africa" +contact "Dwayne Bailey" +email "dwayne@translate.org.za" +tel "+27 21 448 7827" +fax "+27 21 448 9574" language "English" territory "South Africa" -revision "1.0" -date "2000-06-29" +revision "1.1" +date "2003-03-14" % -category "en_ZA:2000";LC_IDENTIFICATION +category "en_ZA:2003";LC_IDENTIFICATION category "en_ZA:2000";LC_CTYPE category "en_ZA:2000";LC_COLLATE -category "en_ZA:2000";LC_TIME +category "en_ZA:2003";LC_TIME category "en_ZA:2000";LC_NUMERIC category "en_ZA:2000";LC_MONETARY -category "en_ZA:2000";LC_MESSAGES +category "en_ZA:2003";LC_MESSAGES category "en_ZA:2000";LC_PAPER +category "en_ZA:2000";LC_MEASUREMENT category "en_ZA:2000";LC_NAME -category "en_ZA:2000";LC_ADDRESS -category "en_ZA:2000";LC_TELEPHONE +category "en_ZA:2003";LC_ADDRESS +category "en_ZA:2003";LC_TELEPHONE END LC_IDENTIFICATION @@ -106,7 +116,7 @@ "";/ "" d_t_fmt "" -d_fmt "" +d_fmt "" t_fmt "" am_pm "";"" t_fmt_ampm "" @@ -116,25 +126,25 @@ END LC_TIME LC_MESSAGES -yesexpr "" -noexpr "" +yesexpr "" +noexpr "" END LC_MESSAGES LC_PAPER -% FIXME height 297 -% FIXME width 210 END LC_PAPER LC_TELEPHONE tel_int_fmt "/ " +tel_dom_fmt "" +int_select "" int_prefix "" + END LC_TELEPHONE LC_MEASUREMENT -% FIXME measurement 1 END LC_MEASUREMENT @@ -149,4 +159,7 @@ / / " +country_name "/ +" +lang_name "" END LC_ADDRESS --- glibc-2.3.2/localedata/locales/es_EC 2002-08-02 16:00:00.000000000 -0400 +++ glibc-2.3.2/localedata/locales/es_EC 2003-04-24 20:05:58.000000000 -0400 @@ -61,7 +61,7 @@ END LC_MESSAGES LC_MONETARY -int_curr_symbol "" +int_curr_symbol "" currency_symbol "" mon_decimal_point "" mon_thousands_sep "" --- glibc-2.3.2/localedata/locales/fi_FI 2002-02-28 03:45:33.000000000 -0500 +++ glibc-2.3.2/localedata/locales/fi_FI 2003-08-21 08:37:06.000000000 -0400 @@ -19,6 +19,10 @@ % Charset: ISO-8859-1 % Distribution and use is free, also % for commercial purposes. +% +% Useful sources: +% Locale info for Finnish in Finland +% http://std.dkuug.dk/cultreg/registrations/narrative/fi_FI,_1.0 LC_IDENTIFICATION title "Finnish locale for Finland" @@ -2121,7 +2125,7 @@ int_curr_symbol "" currency_symbol "" mon_decimal_point "" -mon_thousands_sep "" +mon_thousands_sep "" mon_grouping 3;3 positive_sign "" negative_sign "" @@ -2139,7 +2143,7 @@ LC_NUMERIC decimal_point "" -thousands_sep "" +thousands_sep "" grouping 3;3 END LC_NUMERIC @@ -2178,14 +2182,15 @@ "";/ "";/ "" -d_t_fmt "" +d_t_fmt "/ +" d_fmt "" t_fmt "" am_pm "";"" t_fmt_ampm "" -date_fmt "/ -/ -" +date_fmt "/ +/ +" END LC_TIME LC_MESSAGES --- glibc-2.3.2/localedata/locales/he_IL 2000-10-26 13:53:59.000000000 -0400 +++ glibc-2.3.2/localedata/locales/he_IL 2003-09-19 22:37:05.000000000 -0400 @@ -18,6 +18,10 @@ % Charset: ISO-8859-8 % Distribution and use is free, also % for commercial purposes. +% +% This locale replaces iw_IL, as the ISO-639 code for Hebrew was changed +% from 'iw' to 'he' in 1989, according to Bruno Haible on libc-alpha +% 2003-09-01. LC_IDENTIFICATION title "Hebrew locale for Israel" --- glibc-2.3.2/localedata/locales/is_IS 2000-10-26 13:54:41.000000000 -0400 +++ glibc-2.3.2/localedata/locales/is_IS 2003-08-21 08:37:06.000000000 -0400 @@ -2185,35 +2185,35 @@ END LC_NUMERIC LC_TIME -abday "";"";/ - "";"";/ - "";"";/ - "" -day "";/ - "";/ - "";/ - "";/ - "";/ - "";/ - "" -abmon "";"";/ - "";"";/ - "";"";/ - "";"";/ - "";"";/ - "";"" -mon "";/ - "";/ - "";/ - "";/ - "";/ - "";/ - "";/ - "";/ - "";/ - "";/ - "";/ - "" +abday "";"";/ + "";"";/ + "";"";/ + "" +day "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "" +abmon "";"";/ + "";"";/ + "";"";/ + "";"";/ + "";"";/ + "";"" +mon "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "" d_t_fmt "" d_fmt "" t_fmt "" --- glibc-2.3.2/localedata/locales/iw_IL 2000-10-26 13:55:07.000000000 -0400 +++ glibc-2.3.2/localedata/locales/iw_IL 2003-09-19 22:37:05.000000000 -0400 @@ -18,6 +18,9 @@ % Charset: ISO-8859-8 % Distribution and use is free, also % for commercial purposes. +% +% Obsolete locale. The ISO-639 code for Hebrew was changed from 'iw' +% to 'he' in 1989, according to Bruno Haible on libc-alpha 2003-09-01. LC_IDENTIFICATION title "Hebrew locale for Israel" --- glibc-2.3.2/localedata/locales/lo_LA 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/localedata/locales/lo_LA 2003-09-19 22:37:05.000000000 -0400 @@ -0,0 +1,782 @@ +escape_char / +comment_char % + +% +% Lao Lanuage Locale for Laos +% +% Name: lo_LA +% Author: Anousak Souphavanh +% Contact: +% E-mail: Anousak@muanglao.com +% Language: Lao +% Territory: Laos +% Charset: UTF-8 +% Revision: 1.2 +% Date: 2003-15-09 +% + +% +% Copyright (C) 2002 Anousak Souphavanh + +% +% 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. +% +% +% +% Note: I would like to give a special thank to Mr. Pablo Salatxaga @ Mandrake , email "srtxg@chanae.alphanet.ch" +% & Theppitak Karoonboonyanan, email: 'thep@linux.thai.net', all had guided me in the right direction. + +LC_IDENTIFICATION +title "Lao locale for Laos" +source "" +address "" +contact "Anousak Souphavanh at: anousak@muanglao.com" +email "bug-glibc@gnu.org" +tel "" +fax "" +language "Lao" +territory "Laos" +revision "1.0" +date "2003-4-1" +% +category "lo_LA:2000";LC_IDENTIFICATION +category "lo_LA:2000";LC_CTYPE +category "lo_LA:2000";LC_COLLATE +category "lo_LA:2000";LC_TIME +category "lo_LA:2000";LC_NUMERIC +category "lo_LA:2000";LC_MONETARY +category "lo_LA:2000";LC_MESSAGES +category "lo_LA:2000";LC_PAPER +category "lo_LA:2000";LC_NAME +category "lo_LA:2000";LC_ADDRESS +category "lo_LA:2000";LC_TELEPHONE + +END LC_IDENTIFICATION + +LC_CTYPE +copy "i18n" +translit_start +include "translit_combining";"" +translit_end +END LC_CTYPE + +LC_COLLATE + +% + +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" + +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" + +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" + +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" + +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" + +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" + +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" + +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" + +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" + +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" + +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" + +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" + +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" + +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" + +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" + +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" + +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" + +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" + +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" + +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" + +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" + +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" + +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" + +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" + +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" + +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" + +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" + +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" + +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" +collating-element from "" + + +collating-symbol +collating-symbol +collating-symbol +collating-symbol +collating-symbol + +order_start forward;forward;forward;forward + +% definitions of extra collating symbols + + + + + + +UNDEFINED IGNORE;IGNORE;IGNORE;IGNORE + +% punctuation marks, ordered after ISO/IEC 14651 + IGNORE;IGNORE;;IGNORE % SPACE + IGNORE;IGNORE;;IGNORE % LOW LINE + IGNORE;IGNORE;;IGNORE % HYPHEN-MINUS + IGNORE;IGNORE;;IGNORE % COMMA + IGNORE;IGNORE;;IGNORE % SEMICOLON + IGNORE;IGNORE;;IGNORE % COLON + IGNORE;IGNORE;;IGNORE % EXCLAMATION MARK + IGNORE;IGNORE;;IGNORE % QUESTION MARK + IGNORE;IGNORE;;IGNORE % SOLIDUS + IGNORE;IGNORE;;IGNORE % FULL STOP + IGNORE;IGNORE;;IGNORE % Lao CHARACTER Lao Ellipse + IGNORE;IGNORE;;IGNORE % GRAVE ACCENT + IGNORE;IGNORE;;IGNORE % CIRCUMFLEX + IGNORE;IGNORE;;IGNORE % TILDE + IGNORE;IGNORE;;IGNORE % APOSTROPHE + IGNORE;IGNORE;;IGNORE % QUOTATION MARK + IGNORE;IGNORE;;IGNORE % LEFT PAREN. + IGNORE;IGNORE;;IGNORE % LT BRACKET + IGNORE;IGNORE;;IGNORE % LEFT CURLY BRACKET + IGNORE;IGNORE;;IGNORE % RIGHT CURLY BRACKET + IGNORE;IGNORE;;IGNORE % RT BRACKET + IGNORE;IGNORE;;IGNORE % RIGHT PAREN. + IGNORE;IGNORE;;IGNORE % COMMERCIAL AT + IGNORE;IGNORE;;IGNORE % Lao CHARACTER SYMBOL KIP + IGNORE;IGNORE;;IGNORE % DOLLAR SIGN + IGNORE;IGNORE;;IGNORE % ASTERISK + IGNORE;IGNORE;;IGNORE % BACK SOLIDUS + IGNORE;IGNORE;;IGNORE % AMPERSAND + IGNORE;IGNORE;;IGNORE % NUMBER SIGN + IGNORE;IGNORE;;IGNORE % PERCENT + IGNORE;IGNORE;;IGNORE % PLUS + IGNORE;IGNORE;;IGNORE % LESS THAN + IGNORE;IGNORE;;IGNORE % EQUAL + IGNORE;IGNORE;;IGNORE % GREATER THAN + IGNORE;IGNORE;;IGNORE % VERTICAL LINE + +% Lao tone marks and diacritics + + IGNORE;;; % Lao CHARACTER THANTHAKHAT Or Cancellation Mark + IGNORE;;; % Lao CHARACTER MAI EK + IGNORE;;; % Lao CHARACTER MAI THO + IGNORE;;; % Lao CHARACTER MAI TI + IGNORE;;; % Lao CHARACTER MAI CHATTAWA + IGNORE;;; % Lao CHARACTER MAI Kon + IGNORE;;; % Lao CHARACTER MAI Niggahita + IGNORE;;; % Lao CHARACTER MAI Ko Lao + + + + +% Arabic and Lao decimal digits + ;;; % DIGIT ZERO + ;;; % Lao DIGIT ZERO + ;;; % DIGIT ONE + ;;; % Lao DIGIT ONE + ;;; % DIGIT TWO + ;;; % Lao DIGIT TWO + ;;; % DIGIT THREE + ;;; % Lao DIGIT THREE + ;;; % DIGIT FOUR + ;;; % Lao DIGIT FOUR + ;;; % DIGIT FIVE + ;;; % Lao DIGIT FIVE + ;;; % DIGIT SIX + ;;; % Lao DIGIT SIX + ;;; % DIGIT SEVEN + ;;; % Lao DIGIT SEVEN + ;;; % DIGIT EIGHT + ;;; % Lao DIGIT EIGHT + ;;; % DIGIT NINE + ;;; % Lao DIGIT NINE + +% Latin alphabet + ;;; % A + ;;; % a + ;;; % B + ;;; % b + ;;; % C + ;;; % c + ;;; % D + ;;; % d + ;;; % E + ;;; % e + ;;; % F + ;;; % f + ;;; % G + ;;; % g + ;;; % H + ;;; % h + ;;; % I + ;;; % i + ;;; % J + ;;; % j + ;;; % K + ;;; % k + ;;; % L + ;;; % l + ;;; % M + ;;; % m + ;;; % N + ;;; % n + ;;; % O + ;;; % o + ;;; % P + ;;; % p + ;;; % Q + ;;; % q + ;;; % R + ;;; % r + ;;; % S + ;;; % s + ;;; % T + ;;; % t + ;;; % U + ;;; % u + ;;; % V + ;;; % v + ;;; % W + ;;; % w + ;;; % X + ;;; % x + ;;; % Y + ;;; % y + ;;; % Z + ;;; % z + +% +% Lao consonants, with leading vowels rearrangement +% + ;;; % Lao CHARACTER KO + "";;; + "";;; + "";;; + "";;; + "";;; + + ;;; % Lao CHARACTER KHO sung + "";;; + "";;; + "";;; + "";;; + "";;; + + ;;; % Lao CHARACTER KHO tam + "";;; + "";;; + "";;; + "";;; + "";;; + + ;;; % Lao CHARACTER NGO + "";;; + "";;; + "";;; + "";;; + "";;; + + ;;; % Lao CHARACTER CHO + "";;; + "";;; + "";;; + "";;; + "";;; + + ;;; % Lao CHARACTER SO + "";;; + "";;; + "";;; + "";;; + "";;; + + ;;; % Lao CHARACTER Nyo + "";;; + "";;; + "";;; + "";;; + "";;; + + ;;; % Lao CHARACTER DO + "";;; + "";;; + "";;; + "";;; + "";;; + + ;;; % Lao CHARACTER TO + "";;; + "";;; + "";;; + "";;; + "";;; + + ;;; % Lao CHARACTER THO Sung + "";;; + "";;; + "";;; + "";;; + "";;; + + ;;; % Lao CHARACTER THO Tam + "";;; + "";;; + "";;; + "";;; + "";;; + + ;;; % Lao CHARACTER NO + "";;; + "";;; + "";;; + "";;; + "";;; + + ;;; % Lao CHARACTER BO + "";;; + "";;; + "";;; + "";;; + "";;; + + ;;; % Lao CHARACTER PO + "";;; + "";;; + "";;; + "";;; + "";;; + + ;;; % Lao CHARACTER PHO sUNG + "";;; + "";;; + "";;; + "";;; + "";;; + + ;;; % Lao CHARACTER FO tam + "";;; + "";;; + "";;; + "";;; + "";;; + + ;;; % Lao CHARACTER pho tam + "";;; + "";;; + "";;; + "";;; + "";;; + + ;;; % Lao CHARACTER fo sung + "";;; + "";;; + "";;; + "";;; + "";;; + + ;;; % Lao CHARACTER MO + "";;; + "";;; + "";;; + "";;; + "";;; + + ;;; % Lao CHARACTER YO + "";;; + "";;; + "";;; + "";;; + "";;; + + ;;; % Lao CHARACTER RO + "";;; + "";;; + "";;; + "";;; + "";;; + + ;;; % Lao CHARACTER LO + "";;; + "";;; + "";;; + "";;; + "";;; + + ;;; % Lao CHARACTER WO + "";;; + "";;; + "";;; + "";;; + "";;; + + ;;; % Lao CHARACTER SO + "";;; + "";;; + "";;; + "";;; + "";;; + + ;;; % Lao CHARACTER HO + "";;; + "";;; + "";;; + "";;; + "";;; + + ;;; % Lao CHARACTER O + "";;; + "";;; + "";;; + "";;; + "";;; + + ;;; % Lao CHARACTER HOr + "";;; + "";;; + "";;; + "";;; + "";;; + + + ;;; % Lao CHARACTER NHOr + "";;; + "";;; + "";;; + "";;; + "";;; + + + ;;; % Lao CHARACTER HHOr + "";;; + "";;; + "";;; + "";;; + "";;; + + +% order of Lao vowels + ;;; % Lao CHARACTER SAlA A + ;;; % Lao CHARACTER MAI HAN-AKAT + ;;; % Lao CHARACTER SAlA AA + ;;; % Lao CHARACTER Sala AM + ;;; % Lao CHARACTER Sala I + ;;; % Lao CHARACTER Sala II + ;;; % Lao CHARACTER Sala UE + ;;; % Lao CHARACTER Sala UEE + ;;; % Lao CHARACTER Sala U + ;;; % Lao CHARACTER Sala UU + ;;; % Lao CHARACTER Sala Lo + ;;; % Lao CHARACTER Sala Oy + ;;; % Lao CHARACTER Sala E + ;;; % Lao CHARACTER Sala AE + ;;; % Lao CHARACTER Sala O + ;;; % Lao CHARACTER Sala AI MAIMUAN + ;;; % Lao CHARACTER Sala AI MAIMALAI + +order_end + +END LC_COLLATE + +LC_MONETARY + +int_curr_symbol "" + +% monetary unit: Kip +currency_symbol "" +mon_decimal_point "" +mon_thousands_sep "" +mon_grouping 3;3 +positive_sign "" +negative_sign "" +int_frac_digits 2 +frac_digits 2 +p_cs_precedes 1 +p_sep_by_space 2 +n_cs_precedes 1 +n_sep_by_space 2 +p_sign_posn 4 +n_sign_posn 4 +END LC_MONETARY + + +LC_NUMERIC + +decimal_point "" +thousands_sep "" +grouping 3 + +END LC_NUMERIC + +LC_TIME + +abday "";"";"";/ + "";"";"";/ + "" +day "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "" +abmon "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "" +mon "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "" +% Appropriate date & time representation "%a %e %b %Ey, %H:%M:%S" +d_t_fmt "%a%e%b%Ey%H%M%S" +% Appropriate date representation "%d/%m/%Ey" +d_fmt "%d%m%Ey" +% Appropriate time representation "%H:%M:%S" +t_fmt "%H%M%S" +% AM/PM signs +am_pm "";"" +% Appropriate 12-hour clock representation "%I:%M:%S %p" +t_fmt_ampm "%I%M%S%p" +% Era : Buddhist Era +era "+:1:-5430101:+*::%EC%Ey" +era_d_fmt "%e%b%Ey" +era_t_fmt "%H%M%S" +era_d_t_fmt "%A%e%B%EC%Ey%H%M%S" +% Appropriate date representation (date(1)) "%a %e %b %Ey %H:%M:%S %Z" +date_fmt "/ +/ +" +% ICT-7ICT-7 +timezone "" +END LC_TIME + +LC_MESSAGES + +% yesexpr : begins with "y", "Y", or mo +% noexpr : begins with "n", "N", or Bo +% yesstr = "men" = Sala ae + Mo + MAI EK + No +% nostr = "Bo Men" = Letter Bo +salo Or+ MAI EK + mo+ Ma Ek+ No + +yesexpr "" +noexpr "" +yesstr "" +nostr "" + +END LC_MESSAGES + +LC_PAPER +height 297 +width 210 +END LC_PAPER + +LC_TELEPHONE +tel_int_fmt "/ +" +tel_dom_fmt "" +int_select "" +int_prefix "" +END LC_TELEPHONE + +LC_MEASUREMENT +% FIXME +measurement 1 +END LC_MEASUREMENT + +LC_NAME +name_fmt "/ +" + +name_mr "." +name_mrs "." +END LC_NAME + +LC_ADDRESS +% "%f%N%a%N%d%N%r%t%e%t%b%N%h%t%s%N%T%N%S%N%z%c%N" +postal_fmt "/ +/ +/ +/ +" +country_name "" +%FIXME +%country_post "" +country_ab2 "" +country_ab3 "" +country_num 418 +country_car "" +%FIXME +%country_isbn "" +lang_name "" +lang_ab "" +lang_term "" +lang_lib "" +END LC_ADDRESS --- glibc-2.3.2/localedata/locales/mn_MN 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/localedata/locales/mn_MN 2003-04-24 20:05:58.000000000 -0400 @@ -0,0 +1,196 @@ +comment_char % +escape_char / +% Mongolian language (cyrillic) locale for Mongolia +% Sanlig Badral +% Revision: 0.9 (2003-2-27) +% Charsets: UTF-8 +% Distribution and use is free, also +% for commercial purposes. + +LC_IDENTIFICATION +title "Mongolian locale for Mongolia" +source "OPENMN" +address "" +contact "" +email "bug-glibc@gnu.org" +tel "" +fax "" +language "Mongolian" +territory "Mongolia" +revision "0.9" +date "2003-02-27" + +category "mn_MN:2000";LC_IDENTIFICATION +category "mn_MN:2000";LC_CTYPE +category "mn_MN:2000";LC_COLLATE +category "mn_MN:2000";LC_TIME +category "mn_MN:2000";LC_NUMERIC +category "mn_MN:2000";LC_MONETARY +category "mn_MN:2000";LC_MESSAGES +category "mn_MN:2000";LC_PAPER +category "mn_MN:2000";LC_NAME +category "mn_MN:2000";LC_ADDRESS +category "mn_MN:2000";LC_TELEPHONE + +END LC_IDENTIFICATION + +LC_COLLATE +copy "iso14651_t1" + +% iso14651_t1 is missing Mongolian ue(straight u), oe(barred o) +% like russian, but with () after and +% (straight u) after + +collating-symbol +collating-symbol + +reorder-after + +reorder-after + + +reorder-after + ;;;IGNORE +reorder-after + ;;;IGNORE + +reorder-after + ;;;IGNORE +reorder-after + ;;;IGNORE + +reorder-end +END LC_COLLATE + +LC_CTYPE +copy "i18n" +END LC_CTYPE + +LC_MONETARY +int_curr_symbol "" +currency_symbol "" +mon_decimal_point "" +mon_thousands_sep "" +mon_grouping 3;3 +positive_sign "" +negative_sign "" +int_frac_digits 2 +frac_digits 2 +p_cs_precedes 0 +p_sep_by_space 1 +n_cs_precedes 0 +n_sep_by_space 1 +p_sign_posn 1 +n_sign_posn 1 + +END LC_MONETARY + +LC_NUMERIC +decimal_point "" +thousands_sep "" +grouping 3;3 +END LC_NUMERIC + +LC_TIME +% Abbreviated weekday names (%a) +abday "";"";/ + "";"";/ + "";"";/ + "" +% Full weekday names (%A) +day "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "" +% Abbreviated month names (%b) +abmon "";"";/ + "";"";/ + "";"";/ + "";"";/ + "";"";/ + "";"" +% Full month names (%B) +mon "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "" +% Appropriate date and time representation +% "%a %d %b %Y %T %Z" +d_t_fmt "" + +% Appropriate date representation +% "%Y.%m.%d" +d_fmt "" +% Appropriate time representation +% "%T" +t_fmt "" +% Appropriate 12 h time representation (%r) +am_pm "";"" +t_fmt_ampm "" +% Full date and time representation +% "%a %b %e %H:%M:%S %Z %Y" +date_fmt "" +END LC_TIME + +LC_MESSAGES +yesexpr "" +noexpr "" +END LC_MESSAGES + +% Paper format +LC_PAPER +height 297 +width 210 +END LC_PAPER + +LC_NAME +name_fmt "/ +" + +name_miss "" +name_mr "" +name_mrs "" +name_ms "" +END LC_NAME + +LC_ADDRESS +postal_fmt "/ +/ +/ +/ +" + +country_name "" +country_post "" +country_ab2 "" +country_ab3 "" +country_num 496 +country_car "" +country_isbn 99929 +lang_name "" +lang_ab "" +lang_term "" +lang_lib "" +END LC_ADDRESS + +LC_TELEPHONE +tel_int_fmt "" +tel_dom_fmt "" +int_select "" +int_prefix "" +END LC_TELEPHONE + +LC_MEASUREMENT +measurement 1 +END LC_MEASUREMENT --- glibc-2.3.2/localedata/locales/no_NO 2000-10-26 13:57:17.000000000 -0400 +++ glibc-2.3.2/localedata/locales/no_NO 2003-08-21 08:37:06.000000000 -0400 @@ -1056,6 +1056,8 @@ ;;;IGNORE ;;;IGNORE ;;;IGNORE + ;;;IGNORE %LATIN CAPITAL LETTER ETH (Icelandic) + ;;;IGNORE %LATIN SMALL LETTER ETH (Icelandic) ;;;IGNORE ;;;IGNORE --- glibc-2.3.2/localedata/locales/se_NO 2001-11-15 20:26:50.000000000 -0500 +++ glibc-2.3.2/localedata/locales/se_NO 2002-11-16 08:55:43.000000000 -0500 @@ -1,4 +1,4 @@ -# $Id: se_NO,v 1.1 2001/11/16 01:26:50 drepper Exp $ +# $Id: se_NO,v 1.10 2001/11/10 01:35:26 boerre Exp $ comment_char % escape_char / % --- glibc-2.3.2/localedata/locales/sr_YU 2002-02-13 19:58:15.000000000 -0500 +++ glibc-2.3.2/localedata/locales/sr_YU 2003-04-24 20:05:58.000000000 -0400 @@ -224,7 +224,7 @@ END LC_MESSAGES LC_MONETARY -int_curr_symbol "" +int_curr_symbol "" currency_symbol "" mon_decimal_point "" mon_thousands_sep "" --- glibc-2.3.2/localedata/locales/sr_YU@cyrillic 2000-10-27 15:33:59.000000000 -0400 +++ glibc-2.3.2/localedata/locales/sr_YU@cyrillic 2003-04-24 20:05:58.000000000 -0400 @@ -61,7 +61,7 @@ END LC_MESSAGES LC_MONETARY -int_curr_symbol "" +int_curr_symbol "" currency_symbol "" mon_decimal_point "" mon_thousands_sep "" --- glibc-2.3.2/localedata/locales/st_ZA 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/localedata/locales/st_ZA 2003-05-10 04:39:17.000000000 -0400 @@ -0,0 +1,254 @@ +escape_char / +comment_char % + +% ChangeLog +% 0.1 (2003-04-21): +% - Initial Sotho locale for South Africa +% by Zuza Software Foundation + +LC_IDENTIFICATION +title "Sotho locale for South Africa" +source "Zuza Software Foundation" +address "PO Box 13412, Mowbray, 7705, South Africa" +contact "Dwayne Bailey" +email "dwayne@translate.org.za" +tel "+27 (0)21 448 9265" +fax "+27 (0)21 448 9574" +language "Sotho" +territory "South Africa" +revision "0.1" +date "2003-04-21" +% +category "st_ZA:2003";LC_IDENTIFICATION +category "st_ZA:2003";LC_CTYPE +category "st_ZA:2003";LC_COLLATE +category "st_ZA:2003";LC_TIME +category "st_ZA:2003";LC_NUMERIC +category "st_ZA:2003";LC_MONETARY +category "st_ZA:2003";LC_MESSAGES +category "st_ZA:2003";LC_PAPER +category "st_ZA:2003";LC_NAME +category "st_ZA:2003";LC_ADDRESS +category "st_ZA:2003";LC_TELEPHONE +category "st_ZA:2003";LC_MEASUREMENT + +END LC_IDENTIFICATION + +LC_CTYPE +% Use the characters described in the charmap file "i18n.tgz" +copy "i18n" +END LC_CTYPE + +LC_COLLATE +% Copy the template from ISO/IEC 14651 i.e. +% use the rules there when making ordered lists of words. +copy "iso14651_t1" +END LC_COLLATE + +LC_MONETARY +copy "en_ZA" +END LC_MONETARY + +LC_NUMERIC +copy "en_ZA" +END LC_NUMERIC + +LC_TIME + +% abday - The abbreviations for the week days: +% - Son, Mma, Bed, Rar, Ne, Hla, Moq +abday "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "" + +% day - The full names of the week days: +% - Sontaha, Mmantaha, Labobedi, Laboraru, Labone, Labohlane, Moqebelo +day "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "" + +% abmon - The abbreviations for the months +% - Phe, Kol, Ube, Mme, Mot, Jan, Upu, Pha, Leo, Mph, Pun, Tsh +abmon "";"";/ + "";"";/ + "";"";/ + "";"";/ + "";"";/ + "";"" + +% mon - The full names of the months - +% - Phesekgong, Hlakola, Hlakubele, Mmese, Motsheanong, Phupjane, +% Phupu, Phata, Leotshe, Mphalane, Pundungwane, Tshitwe +mon "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "" + +% Abreviated date and time representation to be referenced by the "%c" field descriptor - +d_t_fmt "" +% +% "%a" (short weekday name), +% "%d" (day of month as a decimal number), +% "%b" (short month name), +% "%Y" (year with century as a decimal number), +% "%T" (24-hour clock time in format HH:MM:SS), +% "%Z" (Time zone name) + +% Date representation to be referenced by the "%x" field descriptor - +d_fmt "" +% "%d/%m/%Y", day/month/year as decimal numbers (01/01/2000). + +% Time representation to be referenced by the "%X" field descriptor - +t_fmt "" +% "%T" (24-hour clock time in format HH:MM:SS) + +% Define representation of ante meridiem and post meridiem strings - +am_pm "";"" +% The "" mean 'default to "AM" and "PM". + +% Define time representation in 12-hour format with "am_pm", to be referenced by the "%r" +t_fmt_ampm "" +% The "" means that this format is not supported. + +% Date representation not described in ISO/IEC 14652. Comes out as - +% "%a %b %e %H:%M:%S %Z %Y" which is default "date" command output +date_fmt "/ +/ +" +% +% %a - abbreviated weekday name, +% %b - abreviated month name, +% %e - day of month as a decimal number with leading space (1 to 31), +% %H - hour (24-hour clock) as a decimal number (00 to 23), +% %M - minute as a decimal number (00 to 59), +% %S - seconds as a decimal number (00 to 59), +% %Z - time-zone name, +% %Y - year with century as a decimal number,e.g. 2001. + +END LC_TIME + +LC_MESSAGES +% FIXME: Check both of these +% The affirmative response - +% "^[yY].*" +yesexpr "" + +% The negative response - +% "^[nN].*" +noexpr "" +END LC_MESSAGES + +LC_PAPER +copy "en_ZA" +END LC_PAPER + +LC_TELEPHONE +copy "en_ZA" +END LC_TELEPHONE + +LC_MEASUREMENT +copy "en_ZA" +END LC_MEASUREMENT + +LC_NAME +% Format for addressing a person. +name_fmt "/ +" +% "%d%t%g%t%m%t%f" +% "Salutation", +% "Empty string, or ", +% "First given name", +% "Empty string, or ", +% "Middle names", +% "Empty string, or ", +% "Clan names" + +% FIXME - define all the following name_* +% General salutation for any sex +% name_gen "" + +% Salutation for unmarried females - "" +% name_miss "" + +% Salutation for males - "" +% name_mr "" + +% Salutation for married females - "" +% name_mrs "" + +% Salutation valid for all females - "" (no term) +% name_ms "" + +END LC_NAME + +LC_ADDRESS +% Country name in Sotho - "Afrika Borwa" +country_name "" + +% Abbreviated country postal name - "ZA" +country_post "" + +% ISO 3166 two letter country abbreviation - "ZA" +country_ab2 "" + +% FIXME define the following correctly +% country_ab3 "" +% country_car "" +% country_isbn "" +% country_num + +% Language name in Sotho - "Sesotho" +lang_name "" + +% FIXME define the following correctly +% lang_ab "" +% lang_term "" + +% Representation of postal addresses (minus the addressee's name) in South +% Africa. (Ignored for now) +postal_fmt "/ +/ +/ +/ +" +% "%f%N%a%N%d%N%b%N%s %h %e %r%N%%z %T%N%c%N", which gives - +% "firm name", +% "end of line", +% "C/O address", +% "end of line", +% "department name", +% "Building name", +% "end of line", +% "street or block name", +% "space", +% "house number or designation", +% "space", +% "floor number", +% "space", +% "room number, door designation", +% "end of line", +% "postal code", +% "space", +% "town, city", +% "end of line", +% "country designation for the keyword", +% "end of line +% +END LC_ADDRESS + --- glibc-2.3.2/localedata/locales/uk_UA 2001-08-03 04:17:35.000000000 -0400 +++ glibc-2.3.2/localedata/locales/uk_UA 2003-06-03 09:36:24.000000000 -0400 @@ -4,7 +4,7 @@ % Ukrainian Language Locale for Ukraine % Source: RFC 2319 % Contact: Denis V. Dmitrienko -% Email: denis@null.net +% Email: denis@denix.org % Language: uk % Territory: UA % Revision: 1.2 @@ -14,6 +14,8 @@ % Charset: KOI8-U % Distribution and use is free, also % for commercial purposes. +% +% Some collate fixes by Valentyn Solomko vesna@slovnyk.org LC_IDENTIFICATION title "Ukrainian locale for Ukraine" @@ -25,8 +27,8 @@ fax "" language "Ukrainian" territory "Ukraine" -revision "1.0" -date "2000-06-29" +revision "1.3" +date "2003-01-31" % category "uk_UA:2000";LC_IDENTIFICATION category "uk_UA:2000";LC_CTYPE @@ -47,19 +49,30 @@ END LC_CTYPE LC_COLLATE + copy "iso14651_t1" % iso14651_t1 is missing Ukrainian ghe collating-symbol -reorder-after +reorder-after -reorder-after - ;;;IGNORE - -reorder-after - ;;;IGNORE +reorder-after +% ;;;IGNORE + ;;;IGNORE + +reorder-after +% ;;;IGNORE + ;;;IGNORE + +reorder-after +% ;;;IGNORE + ;;;IGNORE + +reorder-after +% ;;;IGNORE + ;;;IGNORE reorder-end END LC_COLLATE --- glibc-2.3.2/localedata/locales/wa_BE 2002-02-23 14:15:47.000000000 -0500 +++ glibc-2.3.2/localedata/locales/wa_BE 2003-09-19 22:37:05.000000000 -0400 @@ -11,8 +11,8 @@ address "" tel "" fax "" -language "wa" -territory "BE" +language "Walloon" +territory "Belgium" revision "0.7" date "2002-02-11" --- glibc-2.3.2/localedata/locales/xh_ZA 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/localedata/locales/xh_ZA 2003-05-10 04:39:31.000000000 -0400 @@ -0,0 +1,235 @@ +escape_char / +comment_char % + +% ChangeLog +% 0.1 (2003-05-08): +% - Initial Xhosa locale by Zuza Software Foundation + +LC_IDENTIFICATION +title "Xhosa locale for South Africa" +source "Zuza Software Foundation" +address "PO Box 13412, Mowbray, 7705, South Africa" +contact "Dwayne Bailey" +email "dwayne@translate.org.za" +tel "+27 (0)21 448 9265" +fax "+27 (0)21 448 9574" +language "Xhosa" +territory "South Africa" +revision "0.1" +date "2003-05-08" +% +category "xh_ZA:2003";LC_IDENTIFICATION +category "xh_ZA:2003";LC_CTYPE +category "xh_ZA:2003";LC_COLLATE +category "xh_ZA:2003";LC_TIME +category "xh_ZA:2003";LC_NUMERIC +category "xh_ZA:2003";LC_MONETARY +category "xh_ZA:2003";LC_MESSAGES +category "xh_ZA:2003";LC_PAPER +category "xh_ZA:2003";LC_NAME +category "xh_ZA:2003";LC_ADDRESS +category "xh_ZA:2003";LC_TELEPHONE +category "xh_ZA:2003";LC_MEASUREMENT + +END LC_IDENTIFICATION + +LC_CTYPE +% Use the characters described in the charmap file "i18n.tgz" +copy "i18n" +END LC_CTYPE + +LC_COLLATE +% Copy the template from ISO/IEC 14651 i.e. +% use the rules there when making ordered lists of words. +copy "iso14651_t1" +END LC_COLLATE + +LC_MONETARY +copy "en_ZA" +END LC_MONETARY + +LC_NUMERIC +copy "en_ZA" +END LC_NUMERIC + +LC_TIME +% The abbreviations for the week days: +% - Caw, Mvu, Bin, Tha, Sin, Hla, Mgq +abday "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "" +% +% The full names of the week days: +% - Cawe, Mvulo, Lwesibini, Lwesithathu, Lwesine, Lwesihlanu, Mgqibelo +day "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "" +% +% The abbreviations for the months +% - Jan, Feb, Mat, Epr, Mey, Jun, Jul, Aga, Sep, Okt, Nov, Dis +abmon "";"";/ + "";"";/ + "";"";/ + "";"";/ + "";"";/ + "";"" +% +% The full names of the months - +% - Janyuwari, Februwari, Matshi, Epreli, Meyi, Juni, Julayi, Agasti, Septemba, +% Okthoba, Novemba, Disemba +mon "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "" +% +% Abreviated date and time representation to be referenced by the "%c" field descriptor - +d_t_fmt "" +% "%a" (weekday name), +% "%d" (day of month as a decimal number), +% "%b" (month name), +% "%Y" (year with century as a decimal number), +% "%T" (24-hour clock time in format HH:MM:SS), +% "%Z" (Time zone name) +% +% Date representation to be referenced by the "%x" field % descriptor - +% "%d/%m/%Y", day/month/year as decimal numbers (01/01/2000). +d_fmt "" +% +% Time representation to be referenced by the "%X" field descriptor - +% "%T" (24-hour clock time in format HH:MM:SS) +t_fmt "" +% +% Define representation of ante meridiem and post meridiem strings - +% The ""s means default to "AM" and "PM". +am_pm "";"" +% +% Define time representation in 12-hour format with "am_pm", to be referenced by the "%r" +% field descriptor - +% The "" means that this format is not supported. +t_fmt_ampm "" +% +% Date representation not described in ISO/IEC 14652. +% Comes out as - "%a %b %e %H:%M:%S %Z %Y" +date_fmt "/ +/ +" +% which is: +% abbreviated weekday name, +% day of month as a decimal number (01 to 31), +% day of month as a decimal number with leading space (1 to 31), +% hour (24-hour clock) as a decimal number (00 to 23), +% minute as a decimal number (00 to 59), +% seconds as a decimal number (00 to 59), +% time-zone name, +% year with century as a decimal number,e.g. 2001. +% +END LC_TIME + +LC_MESSAGES +% The affirmative response - +% "^[yYeE].*" +yesexpr "" +% +% The negative response - +% "^[nNhH].*" +noexpr "" +% +END LC_MESSAGES + +LC_PAPER +copy "en_ZA" +END LC_PAPER + +LC_TELEPHONE +copy "en_ZA" +END LC_TELEPHONE + +LC_MEASUREMENT +copy "en_ZA" +END LC_MEASUREMENT + +LC_NAME +% Format for addressing a person. +name_fmt "/ +" +% "%d%t%g%t%m%t%f" +% "Salutation", +% "Empty string, or ", +% "First given name", +% "Empty string, or ", +% "Middle names", +% "Empty string, or ", +% "Clan names" +% +% Salutation for unmarried females - "Nkosazana" +name_miss "" +% +% Salutation for males - "Mnumzana" +name_mr "" +% +% Salutation for married females - "Nkosikazi" +name_mrs "" +% +% Salutation valid for all females - "" (no term) +name_ms "" +END LC_NAME + +LC_ADDRESS +% Country name in Xhosa - "Mzantsi Afrika" +country_name "/ +" +% +% Abbreviated country postal name - "ZA" +country_post "" +% +% ISO 3166 two letter country abbreviation - "ZA" +country_ab2 "" +% +% Representation of postal addresses (minus the addressee's name) in South +% Africa. (Ignored for now) +postal_fmt "/ +/ +/ +/ +" +% "%f%N%a%N%d%N%b%N%s %h %e %r%N%%z %T%N%c%N", which gives - +% "firm name", +% "end of line", +% "C/O address", +% "end of line", +% "department name", +% "Building name", +% "end of line", +% "street or block name", +% "space", +% "house number or designation", +% "space", +% "floor number", +% "space", +% "room number, door designation", +% "end of line", +% "postal code", +% "space", +% "town, city", +% "end of line", +% "country designation for the keyword", +% "end of line +% +END LC_ADDRESS + --- glibc-2.3.2/localedata/locales/yi_US 2001-08-03 04:30:36.000000000 -0400 +++ glibc-2.3.2/localedata/locales/yi_US 2003-09-19 22:37:05.000000000 -0400 @@ -11,8 +11,8 @@ email "pablo@mandrakesoft.com" tel "" fax "" -language "yi" -territory "US" +language "Yiddish" +territory "USA" revision "0.3" date "2001-01-28" --- glibc-2.3.2/localedata/locales/zu_ZA 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/localedata/locales/zu_ZA 2003-05-10 04:39:46.000000000 -0400 @@ -0,0 +1,241 @@ +escape_char / +comment_char % + +% ChangeLog +% 0.1 (2003-04-19): +% - Initial Zulu locale by Zuza Software Foundation + +LC_IDENTIFICATION +title "Zulu locale for South Africa" +source "Zuza Software Foundation" +address "PO Box 13412, Mowbray, 7705, South Africa" +contact "Dwayne Bailey" +email "dwayne@translate.org.za" +tel "+27 (0)21 448 9265" +fax "+27 (0)21 448 9574" +language "Zulu" +territory "South Africa" +revision "0.1" +date "2003-04-19" +% +category "zu_ZA:2003";LC_IDENTIFICATION +category "zu_ZA:2003";LC_CTYPE +category "zu_ZA:2003";LC_COLLATE +category "zu_ZA:2003";LC_TIME +category "zu_ZA:2003";LC_NUMERIC +category "zu_ZA:2003";LC_MONETARY +category "zu_ZA:2003";LC_MESSAGES +category "zu_ZA:2003";LC_PAPER +category "zu_ZA:2003";LC_NAME +category "zu_ZA:2003";LC_ADDRESS +category "zu_ZA:2003";LC_TELEPHONE +category "zu_ZA:2003";LC_MEASUREMENT + +END LC_IDENTIFICATION + +LC_CTYPE +% Use the characters described in the charmap file "i18n.tgz" +% +copy "i18n" +END LC_CTYPE + +LC_COLLATE +% Copy the template from ISO/IEC 14651 i.e. +% use the rules there when making ordered lists of words. +% +copy "iso14651_t1" +END LC_COLLATE + +LC_MONETARY +copy "en_ZA" +END LC_MONETARY + +LC_NUMERIC +copy "en_ZA" +END LC_NUMERIC + +LC_TIME +% abday - The abbreviations for the week days: +% - Son, Mso, Bil, Tha, Sin, Hla, Mgq +abday "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "" + +% day - The full names of the week days: +% - Sonto, Msombuluko, Lwesibili, Lwesithathu, Lwesine, Lwesihlanu, Mgqibelo +day "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "" + +% abmon - The abbreviations for the months +% - Jan, Feb, Mas, Apr, Mey, Jun, Jul, Aga, Sep, Okt, Nov, Dis +abmon "";"";/ + "";"";/ + "";"";/ + "";"";/ + "";"";/ + "";"" + +% mon - The full names of the months - +% - Januwari, Februwari, Mashi, Apreli, Meyi, Juni, Julayi, Agasti, Septemba, +% Okthoba, Novemba, Disemba +mon "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "" + +% Abreviated date and time representation to be referenced by the "%c" field descriptor - +d_t_fmt "" +% +% "%a" (short weekday name), +% "%d" (day of month as a decimal number), +% "%b" (short month name), +% "%Y" (year with century as a decimal number), +% "%T" (24-hour clock time in format HH:MM:SS), +% "%Z" (Time zone name) + +% Date representation to be referenced by the "%x" field descriptor - +% "%d/%m/%Y", day/month/year as decimal numbers (01/01/2000). +d_fmt "" + +% Time representation to be referenced by the "%X" field descriptor - +% "%T" (24-hour clock time in format HH:MM:SS) +t_fmt "" + +% Define representation of ante meridiem and post meridiem strings - +% The ""s mean default to "AM" and "PM". +am_pm "";"" + +% Define time representation in 12-hour format with "am_pm", to be referenced by the "%r" +% field descriptor - +% The "" means that this format is not supported. +t_fmt_ampm "" + +% Date representation not described in ISO/IEC 14652. Comes out as - +% "%a %b %e %H:%M:%S %Z %Y" +date_fmt "/ +/ +" +% which is +% %a - abbreviated weekday name, +% %b - abreviated month name, +% %e - day of month as a decimal number with leading space (1 to 31), +% %H - hour (24-hour clock) as a decimal number (00 to 23), +% %M - minute as a decimal number (00 to 59), +% %S - seconds as a decimal number (00 to 59), +% %Z - time-zone name, +% %Y - year with century as a decimal number,e.g. 2001. + +END LC_TIME + +LC_MESSAGES +yesexpr "" +% The affirmative response - +% "^[yY].*" +% +noexpr "" +% The negative response - +% "^[nNcC].*" +% +END LC_MESSAGES + +LC_PAPER +copy "en_ZA" +END LC_PAPER + +LC_TELEPHONE +copy "en_ZA" +END LC_TELEPHONE + +LC_MEASUREMENT +copy "en_ZA" +END LC_MEASUREMENT + +LC_NAME +name_fmt "/ +" +% Format for addressing a person. +% "%d%t%g%t%m%t%f" +% "Salutation", +% "Empty string, or ", +% "First given name", +% "Empty string, or ", +% "Middle names", +% "Empty string, or ", +% "Clan names" +% +name_miss "" +% Salutation for unmarried females - "Nkosazane" +% +name_mr "" +% Salutation for males - "Mnumzane" +% +name_mrs "" +% Salutation for married females - "Nkosikazi" +% +name_ms "" +% Salutation valid for all females - "" (no term) +END LC_NAME + +LC_ADDRESS +country_name "/ +" +% Country name in Zulu - "Mzansi Afrika" +% +country_post "" +% Abbreviated country postal name - "ZA" +% +country_ab2 "" +% ISO 3166 two letter country abbreviation - "ZA" +% +lang_name "" +% Language name in Zulu - "Isizulu" +% +postal_fmt "/ +/ +/ +/ +" +% Representation of postal addresses (minus the addressee's name) in South +% Africa. (Ignored for now) +% "%f%N%a%N%d%N%b%N%s %h %e %r%N%%z %T%N%c%N", which gives - +% "firm name", +% "end of line", +% "C/O address", +% "end of line", +% "department name", +% "Building name", +% "end of line", +% "street or block name", +% "space", +% "house number or designation", +% "space", +% "floor number", +% "space", +% "room number, door designation", +% "end of line", +% "postal code", +% "space", +% "town, city", +% "end of line", +% "country designation for the keyword", +% "end of line +% +END LC_ADDRESS + --- glibc-2.3.2/localedata/sort-test.sh 2000-08-22 03:52:13.000000000 -0400 +++ glibc-2.3.2/localedata/sort-test.sh 2003-05-12 12:13:05.000000000 -0400 @@ -27,6 +27,7 @@ echo "$l OK" else echo "$l FAIL" + diff -u $cns.in ${common_objpfx}localedata/$cns.xout status=1 fi done --- glibc-2.3.2/localedata/tests-mbwc/tst_wcsxfrm.c 2000-06-27 11:53:19.000000000 -0400 +++ glibc-2.3.2/localedata/tests-mbwc/tst_wcsxfrm.c 2003-05-12 12:13:05.000000000 -0400 @@ -47,7 +47,7 @@ if (debug_flg) { fprintf (stdout, "tst_wcsxfrm() : REC = %d\n", rec + 1); - fprintf (stdout, "tst_wcsxfrm() : 1st ret = %d\n", ret); + fprintf (stdout, "tst_wcsxfrm() : 1st ret = %zu\n", ret); } if (ret == -1 || ret >= n1 || errno_save != 0) @@ -78,7 +78,7 @@ if (debug_flg) { - fprintf (stdout, "tst_wcsxfrm() : 2nd ret = %d\n", ret); + fprintf (stdout, "tst_wcsxfrm() : 2nd ret = %zu\n", ret); } /* wcscoll() */ --- glibc-2.3.2/localedata/tst-fmon.c 2001-07-07 15:21:05.000000000 -0400 +++ glibc-2.3.2/localedata/tst-fmon.c 2003-08-21 08:37:05.000000000 -0400 @@ -1,5 +1,5 @@ /* Testing the implementation of strfmon(3). - Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 2000, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Jochen Hein , 1997. @@ -42,15 +42,12 @@ main (int argc, char *argv[]) { char *s = malloc (201); - double monval; if (setlocale (LC_MONETARY, argv[1]) == NULL) { - perror ("setlocale"); + fprintf (stderr, "setlocale(LC_MONETARY, \"%s\"): %m\n", argv[1]); exit (EXIT_SETLOCALE); } - /* This is locale-dependent! see setlocale(3) for details */ - monval = strtod (argv[3], NULL); if (strfmon (s, 200, argv[2], (double) atof (argv[3])) == -1) { --- glibc-2.3.2/localedata/tst-fmon.sh 2001-07-07 15:21:05.000000000 -0400 +++ glibc-2.3.2/localedata/tst-fmon.sh 2003-08-21 08:37:05.000000000 -0400 @@ -1,6 +1,6 @@ #! /bin/sh # Testing the implementation of strfmon(3). -# Copyright (C) 1996, 1997, 1998, 2000 Free Software Foundation, Inc. +# Copyright (C) 1996, 1997, 1998, 2000, 2003 Free Software Foundation, Inc. # This file is part of the GNU C Library. # Contributed by Jochen Hein , 1997. # @@ -39,24 +39,26 @@ done # Run the tests. +errcode=0 # There's a TAB for IFS while IFS=" " read locale format value expect; do + case "$locale" in '#'*) continue ;; esac if [ -n "$format" ]; then - LOCPATH=${common_objpfx}localedata \ - GCONV_PATH=${common_objpfx}/iconvdata \ - ${run_program_prefix} ${common_objpfx}localedata/tst-fmon \ - "$locale" "$format" "$value" "$expect" - if [ $? -eq 0 ]; then + if LOCPATH=${common_objpfx}localedata \ + GCONV_PATH=${common_objpfx}/iconvdata \ + ${run_program_prefix} ${common_objpfx}localedata/tst-fmon \ + "$locale" "$format" "$value" "$expect" ; then echo "Locale: \"${locale}\" Format: \"${format}\"" \ "Value: \"${value}\" Expect: \"${expect}\" passed" else + errcode=$? echo "Locale: \"${locale}\" Format: \"${format}\"" \ "Value: \"${value}\" Expect: \"${expect}\" failed" fi fi done < $datafile -exit $? +exit $errcode # Local Variables: # mode:shell-script # End: --- glibc-2.3.2/localedata/tst-langinfo.sh 2001-07-07 15:21:05.000000000 -0400 +++ glibc-2.3.2/localedata/tst-langinfo.sh 2003-05-12 12:13:05.000000000 -0400 @@ -1,6 +1,6 @@ #! /bin/sh # Test nl_langinfo. -# Copyright (C) 2000, 2001 Free Software Foundation, Inc. +# Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc. # This file is part of the GNU C Library. # @@ -155,13 +155,13 @@ en_US.ISO-8859-1 THOUSEP , en_US.ISO-8859-1 YESEXPR ^[yY].* en_US.ISO-8859-1 NOEXPR ^[nN].* -de_DE.ISO-8859-1 ABDAY_1 Son -de_DE.ISO-8859-1 ABDAY_2 Mon -de_DE.ISO-8859-1 ABDAY_3 Die -de_DE.ISO-8859-1 ABDAY_4 Mit -de_DE.ISO-8859-1 ABDAY_5 Don -de_DE.ISO-8859-1 ABDAY_6 Fre -de_DE.ISO-8859-1 ABDAY_7 Sam +de_DE.ISO-8859-1 ABDAY_1 So +de_DE.ISO-8859-1 ABDAY_2 Mo +de_DE.ISO-8859-1 ABDAY_3 Di +de_DE.ISO-8859-1 ABDAY_4 Mi +de_DE.ISO-8859-1 ABDAY_5 Do +de_DE.ISO-8859-1 ABDAY_6 Fr +de_DE.ISO-8859-1 ABDAY_7 Sa de_DE.ISO-8859-1 DAY_1 Sonntag de_DE.ISO-8859-1 DAY_2 Montag de_DE.ISO-8859-1 DAY_3 Dienstag @@ -200,13 +200,13 @@ de_DE.ISO-8859-1 THOUSEP . de_DE.ISO-8859-1 YESEXPR ^[jJyY].* de_DE.ISO-8859-1 NOEXPR ^[nN].* -de_DE.UTF-8 ABDAY_1 Son -de_DE.UTF-8 ABDAY_2 Mon -de_DE.UTF-8 ABDAY_3 Die -de_DE.UTF-8 ABDAY_4 Mit -de_DE.UTF-8 ABDAY_5 Don -de_DE.UTF-8 ABDAY_6 Fre -de_DE.UTF-8 ABDAY_7 Sam +de_DE.UTF-8 ABDAY_1 So +de_DE.UTF-8 ABDAY_2 Mo +de_DE.UTF-8 ABDAY_3 Di +de_DE.UTF-8 ABDAY_4 Mi +de_DE.UTF-8 ABDAY_5 Do +de_DE.UTF-8 ABDAY_6 Fr +de_DE.UTF-8 ABDAY_7 Sa de_DE.UTF-8 DAY_1 Sonntag de_DE.UTF-8 DAY_2 Montag de_DE.UTF-8 DAY_3 Dienstag --- glibc-2.3.2/localedata/tst-numeric.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/localedata/tst-numeric.c 2003-05-12 12:13:05.000000000 -0400 @@ -0,0 +1,74 @@ +/* Testing the implementation of LC_NUMERIC and snprintf(). + Copyright (C) 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Petter Reinholdtsen , 2003 + + Based on tst-fmon.c by Jochen Hein , 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include +#include +#include +#include + +/* + test-numeric gets called with three parameters: + - the locale + - the format-string to be used + - the actual number to be formatted + - the expected string + If the test passes, test-numeric terminates with returncode 0, + otherwise with 1 +*/ +#define EXIT_SUCCESS 0 +#define EXIT_FAILURE 1 +#define EXIT_SETLOCALE 2 +#define EXIT_SNPRINTF 3 + +int +main (int argc, char *argv[]) +{ + char *s = malloc (201); + double val; + + /* Make sure to read the value before setting of the locale, as + strtod() is locale-dependent. */ + val = strtod (argv[3], NULL); + + if (setlocale (LC_ALL, argv[1]) == NULL) + { + fprintf (stderr, "setlocale(LC_ALL, \"%s\"): %m\n", argv[1]); + exit (EXIT_SETLOCALE); + } + + if (snprintf (s, 200, argv[2], val) == -1) + { + perror ("snprintf"); + exit (EXIT_SNPRINTF); + } + + if (strcmp (s, argv[4]) != 0) + { + printf ("\ +locale: \"%s\", format: \"%s\", expected: \"%s\", got: \"%s\" => %s\n", + argv[1], argv[2], argv[4], s, + strcmp (s, argv[4]) != 0 ? "false" : "correct"); + exit (EXIT_FAILURE); + } + + return EXIT_SUCCESS; +} --- glibc-2.3.2/localedata/tst-numeric.data 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/localedata/tst-numeric.data 2003-04-27 05:02:25.000000000 -0400 @@ -0,0 +1,49 @@ +# Test data for tst-nomeric, which checks it's implementation in glibc +# Copyright (C) 2003 Free Software Foundation, Inc. +# This file is part of the GNU C Library. +# Contributed by Petter Reinholdtsen , 2003 +# Based on code by Jochen Hein , 1997. +# + +# The GNU C Library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. + +# The GNU C 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 +# Lesser General Public License for more details. + +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. + +# The format of this file is pretty simple: Each line contains a test +# for strfmon. Fields are separated by TABs. Lines that start with a +# '#' are comments and are ignored. +# +# Field Description +# #1 locale which is to be checked +# #2 format string which is fed into snprintf +# #3 double value that is used for formatting +# #4 the expected result (may contain trailing spaces!) +# +# First the implementation without any locale-dependent data +C %g 1.23 1.23 +C %g -1.23 -1.23 +C %g 0 0 +C %% 0 % +C %'g 123.45 123.45 +C %'g -123.45 -123.45 +C *%g* 1.23 *1.23* +C %9g 1.23 1.23 +C %9g -1.23 -1.23 +# +# check both the norwegian locales and snprintf with that data +# +no_NO.ISO-8859-1 %'g 123.45 123,45 +no_NO.ISO-8859-1 %'g -123.45 -123,45 +nn_NO.ISO-8859-1 %'g 123.45 123,45 +nn_NO.ISO-8859-1 %'g -123.45 -123,45 --- glibc-2.3.2/localedata/tst-numeric.sh 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/localedata/tst-numeric.sh 2003-08-21 08:37:05.000000000 -0400 @@ -0,0 +1,51 @@ +#! /bin/sh +# Testing the implementation of LC_NUMERIC and snprintf(3). +# Copyright (C) 1996, 1997, 1998, 2000, 2003 Free Software Foundation, Inc. +# This file is part of the GNU C Library. +# Contributed by Jochen Hein , 1997. +# + +# The GNU C Library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. + +# The GNU C 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 +# Lesser General Public License for more details. + +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA. + +common_objpfx=$1 +run_program_prefix=$2 +datafile=$3 + +# Run the tests. +errcode=0 +# There's a TAB for IFS +while IFS=" " read locale format value expect; do + case "$locale" in '#'*) continue ;; esac + if [ -n "$format" ]; then + if LOCPATH=${common_objpfx}localedata \ + GCONV_PATH=${common_objpfx}/iconvdata \ + ${run_program_prefix} ${common_objpfx}localedata/tst-numeric \ + "$locale" "$format" "$value" "$expect" + then + echo "Locale: \"${locale}\" Format: \"${format}\"" \ + "Value: \"${value}\" Expect: \"${expect}\" passed" + else + errcode=$? + echo "Locale: \"${locale}\" Format: \"${format}\"" \ + "Value: \"${value}\" Expect: \"${expect}\" failed" + fi + fi +done < $datafile + +exit $errcode +# Local Variables: +# mode:shell-script +# End: --- glibc-2.3.2/localedata/xfrm-test.c 2001-07-07 15:21:05.000000000 -0400 +++ glibc-2.3.2/localedata/xfrm-test.c 2003-08-21 08:37:05.000000000 -0400 @@ -1,5 +1,5 @@ /* Test collation function via transformation using real data. - Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 2000, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -19,6 +19,7 @@ 02111-1307 USA. */ #include +#include #include #include #include @@ -27,8 +28,8 @@ struct lines { - const char *xfrm; - const char *line; + char *xfrm; + char *line; }; static int xstrcmp (const void *, const void *); @@ -43,6 +44,9 @@ size_t len = 0; size_t n; + if (argc < 2) + error (1, 0, "usage: %s ", argv[0]); + setlocale (LC_ALL, ""); nstrings_max = 100; @@ -65,8 +69,8 @@ if (nstrings == nstrings_max) { strings = (struct lines *) realloc (strings, - (nstrings_max *= 2 - * sizeof (*strings))); + (nstrings_max *= 2) + * sizeof (*strings)); if (strings == NULL) { perror (argv[0]); @@ -87,6 +91,7 @@ line[l] = saved; ++nstrings; } + free (line); /* First shuffle. */ srandom (atoi (argv[1])); @@ -116,7 +121,12 @@ /* Print the result. */ for (n = 0; n < nstrings; ++n) - fputs (strings[n].line, stdout); + { + fputs (strings[n].line, stdout); + free (strings[n].line); + free (strings[n].xfrm); + } + free (strings); return result; } --- glibc-2.3.2/login/Makefile 2002-10-02 03:19:57.000000000 -0400 +++ glibc-2.3.2/login/Makefile 2003-09-19 22:37:05.000000000 -0400 @@ -1,4 +1,4 @@ -# Copyright (C) 1996,1997,1998,2000,2001,2002 Free Software Foundation, Inc. +# Copyright (C) 1996-1998,2000-2002,2003 Free Software Foundation, Inc. # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or @@ -47,6 +47,8 @@ include ../Rules +CFLAGS-getpt.c = -fexceptions + ifeq (yes,$(build-static-nss)) otherlibs += $(nssobjdir)/libnss_files.a $(resolvobjdir)/libnss_dns.a \ $(resolvobjdir)/libresolv.a $(common-objpfx)libc.a --- glibc-2.3.2/login/programs/utmpdump.c 2002-10-02 16:39:00.000000000 -0400 +++ glibc-2.3.2/login/programs/utmpdump.c 2003-09-19 22:37:05.000000000 -0400 @@ -1,5 +1,5 @@ /* utmpdump - dump utmp-like files. - Copyright (C) 1997, 2002 Free Software Foundation, Inc. + Copyright (C) 1997, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Mark Kettenis , 1997. @@ -28,16 +28,16 @@ print_entry (struct utmp *up) { /* Mixed 32-/64-bit systems may have timeval structs of different sixe - but need struct utmp to be the same size. So in 64-bit up->ut_tv may + but need struct utmp to be the same size. So in 64-bit up->ut_tv may not be a timeval but a struct of __int32_t's. This would cause a compile time warning and a formating error when 32-bit int is passed where a 64-bit long is expected. So copy up->up_tv to a temporary timeval. - This is 32-/64-bit agnostic and expands the timeval fields to the + This is 32-/64-bit agnostic and expands the timeval fields to the expected size as needed. */ struct timeval temp_tv; temp_tv.tv_sec = up->ut_tv.tv_sec; temp_tv.tv_usec = up->ut_tv.tv_usec; - + (printf) ( /* The format string. */ #if _HAVE_UT_TYPE @@ -74,7 +74,7 @@ #endif #if _HAVE_UT_TV , 4 + ctime (&temp_tv.tv_sec) - , temp_tv.tv_usec + , (long int) temp_tv.tv_usec #else , 4 + ctime (&up->ut_time) #endif --- glibc-2.3.2/mach/Makefile 2003-02-17 13:58:01.000000000 -0500 +++ glibc-2.3.2/mach/Makefile 2003-06-03 09:36:24.000000000 -0400 @@ -79,12 +79,17 @@ $(make-target-directory) # We must use $(CFLAGS) to get -O flags that affect #if's in header files. echo '#include ' | \ - DEPENDENCIES_OUTPUT='$@-dep $@' \ - $(CC) $(CFLAGS) $(CPPFLAGS) -E -x c-header - \ + $(CC) $(CFLAGS) $(CPPFLAGS) -E -MD -MP -MF $@-dep -MT $@ \ + -x c-header - \ -D_MACH_`echo $(mach-machine) | tr a-z A-Z`_SYSCALL_SW_H_=1 | \ sed -n -e 's/^kernel_trap(\(.*\),\([-0-9]*\),\([0-9]*\))$$/\1 \2 \3/p'\ | $(AWK) -f $< > $@-new - cat $@-dep >> $@-new; rm -f $@-dep +ifneq (,$(objpfx)) + sed $(sed-remove-objpfx) $@-dep >> $@-new +else + cat $@-dep >> $@-new +endif + rm -f $@-dep mv -f $@-new $@ generated += mach-syscalls.mk --- glibc-2.3.2/mach/err_boot.sub 1992-10-06 14:29:52.000000000 -0400 +++ glibc-2.3.2/mach/err_boot.sub 2002-11-16 08:55:47.000000000 -0500 @@ -25,10 +25,7 @@ */ /* * HISTORY - * $Log: err_boot.sub,v $ - * Revision 1.1 1992/10/06 18:29:52 roland - * entered into RCS - * + * $Log: err_bootstrap.sub,v $ * Revision 2.2 92/04/01 19:37:59 rpd * Created. * [92/03/09 rpd] --- glibc-2.3.2/mach/err_ipc.sub 1992-10-06 14:29:52.000000000 -0400 +++ glibc-2.3.2/mach/err_ipc.sub 2002-11-16 08:55:47.000000000 -0500 @@ -25,10 +25,7 @@ */ /* * HISTORY - * $Log: err_ipc.sub,v $ - * Revision 1.1 1992/10/06 18:29:52 roland - * entered into RCS - * + * $Log: err_ipc.sub,v $ * Revision 2.2 92/01/16 00:08:40 rpd * Moved from user collection to mk collection. * --- glibc-2.3.2/mach/err_kern.sub 1996-12-19 20:32:34.000000000 -0500 +++ glibc-2.3.2/mach/err_kern.sub 2002-11-16 08:55:47.000000000 -0500 @@ -26,9 +26,6 @@ /* * HISTORY * $Log: err_kern.sub,v $ - * Revision 1.5 1996/12/20 01:32:34 drepper - * Update from main archive 961219 - * * Revision 1.5 1996/12/19 20:23:39 drepper * Spelling corrections. * --- glibc-2.3.2/mach/err_mach.sub 1992-10-06 14:29:52.000000000 -0400 +++ glibc-2.3.2/mach/err_mach.sub 2002-11-16 08:55:47.000000000 -0500 @@ -25,10 +25,7 @@ */ /* * HISTORY - * $Log: err_mach.sub,v $ - * Revision 1.1 1992/10/06 18:29:52 roland - * entered into RCS - * + * $Log: err_mach_ipc.sub,v $ * Revision 2.3 92/04/01 19:38:05 rpd * Added MIG_DESTROY_REQUEST. * [92/03/09 rpd] --- glibc-2.3.2/mach/err_server.sub 1992-10-06 14:29:53.000000000 -0400 +++ glibc-2.3.2/mach/err_server.sub 2002-11-16 08:55:47.000000000 -0500 @@ -25,10 +25,7 @@ */ /* * HISTORY - * $Log: err_server.sub,v $ - * Revision 1.1 1992/10/06 18:29:53 roland - * entered into RCS - * + * $Log: err_server.sub,v $ * Revision 2.2 92/01/16 00:10:29 rpd * Moved from user collection to mk collection. * --- glibc-2.3.2/mach/err_us.sub 1993-11-23 16:14:05.000000000 -0500 +++ glibc-2.3.2/mach/err_us.sub 2002-11-16 08:55:47.000000000 -0500 @@ -25,10 +25,7 @@ */ /* * HISTORY - * $Log: err_us.sub,v $ - * Revision 1.2 1993/11/23 21:14:05 mib - * entered into RCS - * + * $Log: err_us.sub,v $ * Revision 2.2 92/01/16 00:10:45 rpd * Moved from user collection to mk collection. * --- glibc-2.3.2/mach/error_compat.c 1997-03-16 12:41:36.000000000 -0500 +++ glibc-2.3.2/mach/error_compat.c 2002-11-16 08:55:47.000000000 -0500 @@ -26,9 +26,6 @@ /* This file was broken out from: $Log: error_compat.c,v $ - Revision 1.2 1997/03/16 17:41:36 drepper - (__mach_error_map_compat): Give full prototype. - Revision 1.2 1997/03/14 15:26:28 thomas Wed Mar 5 10:40:05 1997 Thomas Bushnell, n/BSG --- glibc-2.3.2/mach/errorlib.h 1995-03-10 18:57:44.000000000 -0500 +++ glibc-2.3.2/mach/errorlib.h 2002-11-16 08:55:47.000000000 -0500 @@ -26,9 +26,6 @@ /* * HISTORY * $Log: errorlib.h,v $ - * Revision 1.5 1995/03/10 23:57:44 roland - * (errors): Use const for decl. - * * Revision 1.4 1993/12/17 21:56:16 roland * entered into RCS * --- glibc-2.3.2/mach/errstring.c 1997-03-16 12:41:48.000000000 -0500 +++ glibc-2.3.2/mach/errstring.c 2002-11-16 08:55:47.000000000 -0500 @@ -26,9 +26,6 @@ /* * HISTORY * $Log: errstring.c,v $ - * Revision 1.2 1997/03/16 17:41:48 drepper - * (mach_error_string_int): Give full prototype. - * * Revision 1.2 1997/03/14 15:26:29 thomas * Wed Mar 5 10:40:05 1997 Thomas Bushnell, n/BSG * --- glibc-2.3.2/mach/mach/error.h 1997-03-16 12:43:08.000000000 -0500 +++ glibc-2.3.2/mach/mach/error.h 2002-11-16 08:55:47.000000000 -0500 @@ -27,10 +27,6 @@ /* * HISTORY * $Log: error.h,v $ - * Revision 1.3 1997/03/16 17:43:08 drepper - * (mach_error_fn_t): Comment out declaration; it appears to be entirely - * unused dead code. - * * Revision 1.3 1997/03/14 15:27:35 thomas * Wed Mar 5 10:40:05 1997 Thomas Bushnell, n/BSG * --- glibc-2.3.2/mach/mach_error.c 1997-03-16 12:42:02.000000000 -0500 +++ glibc-2.3.2/mach/mach_error.c 2002-11-16 08:55:47.000000000 -0500 @@ -26,9 +26,6 @@ /* * HISTORY * $Log: mach_error.c,v $ - * Revision 1.2 1997/03/16 17:42:02 drepper - * (mach_error_string_int): Give full prototype. - * * Revision 1.2 1997/03/14 15:26:30 thomas * Wed Mar 5 10:40:05 1997 Thomas Bushnell, n/BSG * --- glibc-2.3.2/mach/mach_error.h 2001-04-03 20:02:00.000000000 -0400 +++ glibc-2.3.2/mach/mach_error.h 2002-11-16 08:55:47.000000000 -0500 @@ -26,12 +26,6 @@ /* * HISTORY * $Log: mach_error.h,v $ - * Revision 1.4 2001/04/01 05:03:14 roland - * 2001-03-11 Roland McGrath - * - * * mach/mach_error.h: Fix ancient #endif syntax. - * * hurd/hurdmalloc.c: Likewise. - * * Revision 1.3 1997/03/16 17:42:25 drepper * (mach_error_string, mach_error, mach_error_type): Always provide * prototypes. --- glibc-2.3.2/mach/msg-destroy.c 2002-02-19 02:34:36.000000000 -0500 +++ glibc-2.3.2/mach/msg-destroy.c 2002-11-16 08:55:47.000000000 -0500 @@ -26,15 +26,6 @@ /* * HISTORY * $Log: msg-destroy.c,v $ - * Revision 1.6 2002/02/17 07:13:36 roland - * 2002-02-16 Roland McGrath - * - * * mach/msg-destroy.c (__mach_msg_destroy) [MACH_MSG_PORT_DESCRIPTOR]: - * Grok the OSF flavor of message format. - * (mach_msg_destroy_port): For MAKE_SEND and - * MAKE_SEND_ONCE rights, create an destroy a right to ensure proper - * no-senders notification. - * * Revision 1.5 1997/06/21 01:40:07 drepper * More 64bit changes. * --- glibc-2.3.2/mach/msgserver.c 2002-02-19 02:34:36.000000000 -0500 +++ glibc-2.3.2/mach/msgserver.c 2002-11-16 08:55:47.000000000 -0500 @@ -49,12 +49,6 @@ /* * HISTORY * $Log: msgserver.c,v $ - * Revision 1.9 2002/02/18 20:56:35 roland - * 2002-02-18 Roland McGrath - * - * * mach/msgserver.c (__mach_msg_server_timeout) [! MACH_RCV_LARGE]: - * Double MAX_SIZE and don't retry on MACH_RCV_TOO_LARGE. - * * Revision 1.8 2002/02/17 07:13:32 roland * 2002-02-16 Roland McGrath * --- glibc-2.3.2/malloc/Makefile 2003-02-21 20:01:17.000000000 -0500 +++ glibc-2.3.2/malloc/Makefile 2003-04-24 20:05:58.000000000 -0400 @@ -56,6 +56,7 @@ include ../Makeconfig +CFLAGS-malloc.c += -DDEFAULT_TOP_PAD=131072 CPPFLAGS-memusagestat = -DNOT_IN_libc # The Perl script to analyze the output of the mtrace functions. --- glibc-2.3.2/malloc/arena.c 2002-12-27 18:22:15.000000000 -0500 +++ glibc-2.3.2/malloc/arena.c 2003-08-21 08:37:07.000000000 -0400 @@ -1,5 +1,5 @@ /* Malloc implementation for multiple threads without lock contention. - Copyright (C) 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Wolfram Gloger , 2001. @@ -758,6 +758,7 @@ /* Add the new arena to the global list. */ (void)mutex_lock(&list_lock); a->next = main_arena.next; + atomic_write_barrier (); main_arena.next = a; (void)mutex_unlock(&list_lock); --- glibc-2.3.2/malloc/hooks.c 2003-01-27 13:32:36.000000000 -0500 +++ glibc-2.3.2/malloc/hooks.c 2003-09-19 22:37:05.000000000 -0400 @@ -106,7 +106,18 @@ __realloc_hook = realloc_check; __memalign_hook = memalign_check; if(check_action & 1) - fprintf(stderr, "malloc: using debugging hooks\n"); + { +#ifdef _LIBC + _IO_flockfile (stderr); + int old_flags2 = ((_IO_FILE *) stderr)->_flags2; + ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; +#endif + fprintf(stderr, "malloc: using debugging hooks\n"); +#ifdef _LIBC + ((_IO_FILE *) stderr)->_flags2 |= old_flags2; + _IO_funlockfile (stderr); +#endif + } } /* A simple, standard set of debugging hooks. Overhead is `only' one @@ -224,7 +235,18 @@ t == initial_top(&main_arena)) return 0; if(check_action & 1) - fprintf(stderr, "malloc: top chunk is corrupt\n"); + { +#ifdef _LIBC + _IO_flockfile (stderr); + int old_flags2 = ((_IO_FILE *) stderr)->_flags2; + ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; +#endif + fprintf(stderr, "malloc: top chunk is corrupt\n"); +#ifdef _LIBC + ((_IO_FILE *) stderr)->_flags2 |= old_flags2; + _IO_funlockfile (stderr); +#endif + } if(check_action & 2) abort(); @@ -278,7 +300,18 @@ if(!p) { (void)mutex_unlock(&main_arena.mutex); if(check_action & 1) - fprintf(stderr, "free(): invalid pointer %p!\n", mem); + { +#ifdef _LIBC + _IO_flockfile (stderr); + int old_flags2 = ((_IO_FILE *) stderr)->_flags2; + ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; +#endif + fprintf(stderr, "free(): invalid pointer %p!\n", mem); +#ifdef _LIBC + ((_IO_FILE *) stderr)->_flags2 |= old_flags2; + _IO_funlockfile (stderr); +#endif + } if(check_action & 2) abort(); return; @@ -315,7 +348,18 @@ (void)mutex_unlock(&main_arena.mutex); if(!oldp) { if(check_action & 1) - fprintf(stderr, "realloc(): invalid pointer %p!\n", oldmem); + { +#ifdef _LIBC + _IO_flockfile (stderr); + int old_flags2 = ((_IO_FILE *) stderr)->_flags2; + ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; +#endif + fprintf(stderr, "realloc(): invalid pointer %p!\n", oldmem); +#ifdef _LIBC + ((_IO_FILE *) stderr)->_flags2 |= old_flags2; + _IO_funlockfile (stderr); +#endif + } if(check_action & 2) abort(); return malloc_check(bytes, NULL); --- glibc-2.3.2/malloc/malloc.c 2003-01-30 13:36:54.000000000 -0500 +++ glibc-2.3.2/malloc/malloc.c 2003-09-19 22:37:05.000000000 -0400 @@ -1,5 +1,5 @@ -/* Malloc implementation for multiple threads without lock contention. - Copyright (C) 1996,1997,1998,1999,2000,01,02 Free Software Foundation, Inc. + /* Malloc implementation for multiple threads without lock contention. + Copyright (C) 1996-2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Wolfram Gloger and Doug Lea , 2001. @@ -24,7 +24,7 @@ Doug Lea and adapted to multiple threads/arenas by Wolfram Gloger. * Version ptmalloc2-20011215 - $Id: malloc.c,v 1.108 2003/01/30 18:36:54 drepper Exp $ + $Id: malloc.c,v 1.114 2003/09/08 16:32:37 drepper Exp $ based on: VERSION 2.7.0 Sun Mar 11 14:14:06 2001 Doug Lea (dl at gee) @@ -2969,9 +2969,6 @@ */ else { - /* Count foreign sbrk as system_mem. */ - if (old_size) - av->system_mem += brk - old_end; front_misalign = 0; end_misalign = 0; correction = 0; @@ -2980,6 +2977,10 @@ /* handle contiguous cases */ if (contiguous(av)) { + /* Count foreign sbrk as system_mem. */ + if (old_size) + av->system_mem += brk - old_end; + /* Guarantee alignment of first new chunk made from this space */ front_misalign = (INTERNAL_SIZE_T)chunk2mem(brk) & MALLOC_ALIGN_MASK; @@ -3474,6 +3475,7 @@ ar_ptr == arena_for_chunk(mem2chunk(p))); return p; } +strong_alias (public_mEMALIGn, __memalign_internal) Void_t* public_vALLOc(size_t bytes) @@ -3707,6 +3709,8 @@ { struct mallinfo m; + if(__malloc_initialized < 0) + ptmalloc_init (); (void)mutex_lock(&main_arena.mutex); m = mALLINFo(&main_arena); (void)mutex_unlock(&main_arena.mutex); @@ -4128,6 +4132,30 @@ p = mem2chunk(mem); size = chunksize(p); + /* Little security check which won't hurt performance: the + allocator never wrapps around at the end of the address space. + Therefore we can exclude some size values which might appear + here by accident or by "design" from some intruder. */ + if (__builtin_expect ((uintptr_t) p > (uintptr_t) -size, 0)) + { + if (check_action & 1) + { +#ifdef _LIBC + _IO_flockfile (stderr); + int old_flags2 = ((_IO_FILE *) stderr)->_flags2; + ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; +#endif + fprintf (stderr, "free(): invalid pointer %p!\n", mem); +#ifdef _LIBC + ((_IO_FILE *) stderr)->_flags2 |= old_flags2; + _IO_funlockfile (stderr); +#endif + } + if (check_action & 2) + abort (); + return; + } + check_inuse_chunk(av, p); /* @@ -5089,6 +5117,13 @@ long stat_lock_direct = 0, stat_lock_loop = 0, stat_lock_wait = 0; #endif + if(__malloc_initialized < 0) + ptmalloc_init (); +#ifdef _LIBC + _IO_flockfile (stderr); + int old_flags2 = ((_IO_FILE *) stderr)->_flags2; + ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; +#endif for (i=0, ar_ptr = &main_arena;; i++) { (void)mutex_lock(&ar_ptr->mutex); mi = mALLINFo(ar_ptr); @@ -5133,6 +5168,10 @@ fprintf(stderr, "locked total = %10ld\n", stat_lock_direct + stat_lock_loop + stat_lock_wait); #endif +#ifdef _LIBC + ((_IO_FILE *) stderr)->_flags2 |= old_flags2; + _IO_funlockfile (stderr); +#endif } @@ -5146,11 +5185,11 @@ int mALLOPt(param_number, value) int param_number; int value; #endif { - if(__malloc_initialized < 0) - ptmalloc_init (); mstate av = &main_arena; int res = 1; + if(__malloc_initialized < 0) + ptmalloc_init (); (void)mutex_lock(&av->mutex); /* Ensure initialization/consolidation */ malloc_consolidate(av); @@ -5353,7 +5392,7 @@ if (alignment % sizeof (void *) != 0 || !powerof2 (alignment) != 0) return EINVAL; - mem = __libc_memalign (alignment, size); + mem = __memalign_internal (alignment, size); if (mem != NULL) { *memptr = mem; --- glibc-2.3.2/malloc/malloc.h 2003-01-12 22:58:02.000000000 -0500 +++ glibc-2.3.2/malloc/malloc.h 2003-08-21 08:37:07.000000000 -0400 @@ -1,5 +1,5 @@ /* Prototypes and definition for malloc implementation. - Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc. + Copyright (C) 1996,1997,1999,2000,2002,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -25,7 +25,7 @@ #endif /* - $Id: malloc.h,v 1.23 2003/01/13 03:42:16 roland Exp $ + $Id: malloc.h,v 1.24 2003/05/28 21:01:42 roland Exp $ `ptmalloc2', a malloc implementation for multiple threads without lock contention, by Wolfram Gloger . @@ -85,11 +85,19 @@ # define __MALLOC_P(args) args # define __MALLOC_PMT(args) args +# ifndef __const +# define __const const +# endif + # else /* Not ANSI C or C++. */ # define __MALLOC_P(args) () /* No prototypes. */ # define __MALLOC_PMT(args) () +# ifndef __const +# define __const +# endif + # endif /* ANSI C or C++. */ #endif /* GCC. */ @@ -226,7 +234,7 @@ #ifdef __cplusplus -}; /* end of extern "C" */ +} /* end of extern "C" */ #endif #endif /* malloc.h */ --- glibc-2.3.2/malloc/memusagestat.c 2001-07-07 15:21:06.000000000 -0400 +++ glibc-2.3.2/malloc/memusagestat.c 2003-04-12 11:39:43.000000000 -0400 @@ -405,7 +405,7 @@ } - snprintf (buf, sizeof (buf), "%llu", total); + snprintf (buf, sizeof (buf), "%llu", (unsigned long long) total); gdImageString (im_out, gdFontSmall, xsize - 50, ysize - 14, buf, blue); if (!time_based) --- glibc-2.3.2/malloc/mtrace.c 2002-12-31 16:18:43.000000000 -0500 +++ glibc-2.3.2/malloc/mtrace.c 2003-09-19 22:37:05.000000000 -0400 @@ -1,5 +1,5 @@ /* More debugging hooks for `malloc'. - Copyright (C) 1991-1994,1996-2001,2002 Free Software Foundation, Inc. + Copyright (C) 1991-1994,1996-2001,2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Written April 2, 1991 by John Gilmore of Cygnus Support. Based on mcheck.c by Mike Haertel. @@ -103,7 +103,7 @@ { #ifdef HAVE_ELF Dl_info info; - if (_dl_addr (caller, &info)) + if (_dl_addr (caller, &info, NULL, NULL)) { char *buf = (char *) ""; if (info.dli_sname != NULL) @@ -280,7 +280,7 @@ if (mtb == NULL) return; - mallstream = fopen (mallfile != NULL ? mallfile : "/dev/null", "w"); + mallstream = fopen (mallfile != NULL ? mallfile : "/dev/null", "wc"); if (mallstream != NULL) { /* Make sure we close the file descriptor on exec. */ --- glibc-2.3.2/malloc/set-freeres.c 2002-11-01 21:15:52.000000000 -0500 +++ glibc-2.3.2/malloc/set-freeres.c 2003-04-12 11:39:43.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1997, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1997,1999,2000,2001,2002,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -16,7 +16,7 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -#include +#include #include #include #include @@ -36,7 +36,7 @@ protect for multiple executions since these are fatal. */ static long int already_called; - if (compare_and_swap (&already_called, 0, 1)) + if (! atomic_compare_and_exchange_bool_acq (&already_called, 1, 0)) { void * const *p; --- glibc-2.3.2/malloc/thread-m.h 2002-12-31 17:12:17.000000000 -0500 +++ glibc-2.3.2/malloc/thread-m.h 2003-08-21 08:37:07.000000000 -0400 @@ -1,6 +1,6 @@ /* Basic platform-independent macro definitions for mutexes and thread-specific data. - Copyright (C) 1996,1997,1998,2000,2001,2002 Free Software Foundation, Inc. + Copyright (C) 1996-1998,2000,2001,2002,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Wolfram Gloger , 2001. @@ -19,7 +19,7 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -/* $Id: thread-m.h,v 1.20 2002/12/31 21:05:27 drepper Exp $ +/* $Id: thread-m.h,v 1.22 2003/05/09 03:15:50 drepper Exp $ One out of _LIBC, USE_PTHREADS, USE_THR or USE_SPROC should be defined, otherwise the token NO_THREADS and dummy implementations of the macros will be defined. */ @@ -31,6 +31,7 @@ #if defined(_LIBC) /* The GNU C library, a special case of Posix threads */ +#include #include #ifdef PTHREAD_MUTEX_INITIALIZER @@ -306,4 +307,16 @@ #endif /* defined(NO_THREADS) */ +#ifndef atomic_full_barrier +# define atomic_full_barrier() __asm ("" ::: "memory") +#endif + +#ifndef atomic_read_barrier +# define atomic_read_barrier() atomic_full_barrier () +#endif + +#ifndef atomic_write_barrier +# define atomic_write_barrier() atomic_full_barrier () +#endif + #endif /* !defined(_THREAD_M_H) */ --- glibc-2.3.2/math/Makefile 2003-02-21 01:03:48.000000000 -0500 +++ glibc-2.3.2/math/Makefile 2003-08-21 08:37:07.000000000 -0400 @@ -87,7 +87,7 @@ # Rules for the test suite. tests = test-matherr test-fenv atest-exp atest-sincos atest-exp2 basic-test \ - test-misc test-fpucw tst-definitions test-tgmath + test-misc test-fpucw tst-definitions test-tgmath test-tgmath-ret # We do the `long double' tests only if this data type is available and # distinct from `double'. test-longdouble-yes = test-ldouble test-ildoubl @@ -126,6 +126,7 @@ CFLAGS-test-double.c = -fno-inline -ffloat-store CFLAGS-test-ldouble.c = -fno-inline -ffloat-store CFLAGS-test-tgmath.c = -fno-builtin +CFLAGS-test-tgmath-ret.c = -fno-builtin CPPFLAGS-test-ifloat.c = -U__LIBC_INTERNAL_MATH_INLINES -D__FAST_MATH__ \ -DTEST_FAST_MATH CPPFLAGS-test-idouble.c = -U__LIBC_INTERNAL_MATH_INLINES -D__FAST_MATH__ \ --- glibc-2.3.2/math/libm-test.inc 2003-02-15 01:55:23.000000000 -0500 +++ glibc-2.3.2/math/libm-test.inc 2003-04-12 11:39:43.000000000 -0400 @@ -1537,7 +1537,7 @@ TEST_c_c (ccos, nan_value, nan_value, nan_value, nan_value); TEST_c_c (ccos, 0.75L, 1.25L, 1.38173873063425888530729933139078645L, -1.09193013555397466170919531722024128L); - TEST_c_c (ccos, -2, -3, -4.1896256909688072301L, -9.1092278937553365979L); + TEST_c_c (ccos, -2, -3, -4.18962569096880723013255501961597373L, -9.10922789375533659797919726277886212L); END (ccos, complex); } @@ -1606,7 +1606,7 @@ TEST_c_c (ccosh, 0.75L, 1.25L, 0.408242591877968807788852146397499084L, 0.780365930845853240391326216300863152L); - TEST_c_c (ccosh, -2, -3, -3.7245455049153225654L, 0.5118225699873846088L); + TEST_c_c (ccosh, -2, -3, -3.72454550491532256547397070325597253L, 0.511822569987384608834463849801875634L); END (ccosh, complex); } @@ -1836,7 +1836,7 @@ TEST_c_c (clog10, nan_value, nan_value, nan_value, nan_value); TEST_c_c (clog10, 0.75L, 1.25L, 0.163679467193165171449476605077428975L, 0.447486970040493067069984724340855636L); - TEST_c_c (clog10, -2, -3, 0.5569716761534183846L, -0.9375544629863747085L); + TEST_c_c (clog10, -2, -3, 0.556971676153418384603252578971164214L, -0.937554462986374708541507952140189646L); END (clog10, complex); } @@ -2072,7 +2072,7 @@ TEST_c_c (csin, nan_value, nan_value, nan_value, nan_value); TEST_c_c (csin, 0.75L, 1.25L, 1.28722291002649188575873510790565441L, 1.17210635989270256101081285116138863L); - TEST_c_c (csin, -2, -3, -9.1544991469114295734L, 4.1689069599665643507L); + TEST_c_c (csin, -2, -3, -9.15449914691142957346729954460983256L, 4.16890695996656435075481305885375484L); END (csin, complex); } @@ -2140,7 +2140,7 @@ TEST_c_c (csinh, nan_value, nan_value, nan_value, nan_value); TEST_c_c (csinh, 0.75L, 1.25L, 0.259294854551162779153349830618433028L, 1.22863452409509552219214606515777594L); - TEST_c_c (csinh, -2, -3, 3.5905645899857799520L, -0.5309210862485198052L); + TEST_c_c (csinh, -2, -3, 3.59056458998577995201256544779481679L, -0.530921086248519805267040090660676560L); END (csinh, complex); } @@ -2264,7 +2264,7 @@ TEST_c_c (ctan, nan_value, nan_value, nan_value, nan_value); TEST_c_c (ctan, 0.75L, 1.25L, 0.160807785916206426725166058173438663L, 0.975363285031235646193581759755216379L); - TEST_c_c (ctan, -2, -3, 0.0037640256415042482L, -1.0032386273536098014L); + TEST_c_c (ctan, -2, -3, 0.376402564150424829275122113032269084e-2L, -1.00323862735360980144635859782192726L); END (ctan, complex); } @@ -2323,7 +2323,7 @@ TEST_c_c (ctanh, 0, M_PI_4l, 0.0, 1.0); TEST_c_c (ctanh, 0.75L, 1.25L, 1.37260757053378320258048606571226857L, 0.385795952609750664177596760720790220L); - TEST_c_c (ctanh, -2, -3, -0.9653858790221331242L, 0.0098843750383224937L); + TEST_c_c (ctanh, -2, -3, -0.965385879022133124278480269394560686L, 0.988437503832249372031403430350121098e-2L); END (ctanh, complex); } @@ -3067,8 +3067,8 @@ TEST_f_f1 (lgamma, 0.5, M_LOG_SQRT_PIl, 1); TEST_f_f1 (lgamma, -0.5, M_LOG_2_SQRT_PIl, -1); - TEST_f_f1 (lgamma, 0.7L, 0.26086724653166651439L, 1); - TEST_f_f1 (lgamma, 1.2L, -0.853740900033158497197e-1L, 1); + TEST_f_f1 (lgamma, 0.7L, 0.260867246531666514385732417016759578L, 1); + TEST_f_f1 (lgamma, 1.2L, -0.853740900033158497197028392998854470e-1L, 1); END (lgamma); } @@ -4078,8 +4078,8 @@ TEST_f_f (tgamma, 1, 1); TEST_f_f (tgamma, 4, 6); - TEST_f_f (tgamma, 0.7L, 1.29805533264755778568L); - TEST_f_f (tgamma, 1.2L, 0.91816874239976061064L); + TEST_f_f (tgamma, 0.7L, 1.29805533264755778568117117915281162L); + TEST_f_f (tgamma, 1.2L, 0.918168742399760610640951655185830401L); END (tgamma); } --- glibc-2.3.2/math/math_private.h 2001-09-24 21:13:41.000000000 -0400 +++ glibc-2.3.2/math/math_private.h 2003-09-19 22:37:05.000000000 -0400 @@ -232,6 +232,9 @@ extern float __kernel_tanf (float,float,int); extern int __kernel_rem_pio2f (float*,float*,int,int,int, const int32_t*); +/* internal functions. */ +extern float __copysignf (float x, float __y); + /* ieee style elementary long double functions */ extern long double __ieee754_sqrtl (long double); --- glibc-2.3.2/math/test-fenv.c 2001-07-07 15:21:06.000000000 -0400 +++ glibc-2.3.2/math/test-fenv.c 2003-05-24 14:06:22.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1997, 1998, 2000, 2001 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998, 2000, 2001, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Jaeger and Ulrich Drepper , 1997. @@ -350,7 +350,8 @@ int status; pid_t pid; - printf ("Test: after fedisable (%s) processes will abort\n", flag_name); + printf ("Test: after fedisableexcept (%s) processes will abort\n", + flag_name); printf (" when feraiseexcept (%s) is called.\n", flag_name); pid = fork (); if (pid == 0) @@ -403,7 +404,8 @@ int exception; pid_t pid; - printf ("Test: after fedisable (%s) processes will not abort\n", flag_name); + printf ("Test: after fedisableexcept (%s) processes will not abort\n", + flag_name); printf (" when feraiseexcept (%s) is called.\n", flag_name); pid = fork (); if (pid == 0) --- glibc-2.3.2/math/test-tgmath-ret.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.3.2/math/test-tgmath-ret.c 2003-06-16 03:52:41.000000000 -0400 @@ -0,0 +1,85 @@ +/* Test compilation of tgmath macros. + Copyright (C) 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Andreas Jaeger , 2003. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include +#include +#include +#include + +static float fx; +static double dx; +static long double lx; +static int errors = 0; + +static void +our_error (const char *c) +{ + puts (c); + ++errors; +} + +/* First function where the return type is constant. */ + +#define CHECK_RET_CONST_TYPE(func, rettype, arg, name) \ + if (sizeof (func (arg)) != sizeof (rettype)) \ + our_error ("Return size of " #func " is wrong with " #name " argument"); + +#define CHECK_RET_CONST_FLOAT(func, rettype) \ + CHECK_RET_CONST_TYPE (func, rettype, fx, float) +#define CHECK_RET_CONST_DOUBLE(func, rettype) \ + CHECK_RET_CONST_TYPE (func, rettype, dx, double) +#ifdef NO_LONG_DOUBLE +# define CHECK_RET_CONST_LDOUBLE(func, rettype) +#else +# define CHECK_RET_CONST_LDOUBLE(func, rettype) \ + CHECK_RET_CONST_TYPE (func, rettype, lx, long double) +#endif + +#define CHECK_RET_CONST(func, rettype) \ +static void \ +check_return_ ##func (void) \ +{ \ + CHECK_RET_CONST_FLOAT (func, rettype) \ + CHECK_RET_CONST_DOUBLE (func, rettype) \ + CHECK_RET_CONST_LDOUBLE (func, rettype) \ +} + +CHECK_RET_CONST(ilogb, int) +CHECK_RET_CONST(lrint, long) +CHECK_RET_CONST(lround, long) +CHECK_RET_CONST(llrint, long long) +CHECK_RET_CONST(llround, long long) + +static int +do_test (void) +{ + check_return_ilogb (); + check_return_lrint (); + check_return_lround (); + check_return_llrint (); + check_return_llround (); + + printf ("%Zd\n", sizeof(carg (lx))); + + return errors != 0; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" --- glibc-2.3.2/math/test-tgmath.c 2001-07-07 15:21:06.000000000 -0400 +++ glibc-2.3.2/math/test-tgmath.c 2003-04-12 11:39:43.000000000 -0400 @@ -1,5 +1,5 @@ /* Test compilation of tgmath macros. - Copyright (C) 2001 Free Software Foundation, Inc. + Copyright (C) 2001, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Jakub Jelinek and Ulrich Drepper , 2001. @@ -162,7 +162,7 @@ static void F(compile_test) (void) { - TYPE a, b, c; + TYPE a, b, c = 1.0; int i; long int j; long long int k; --- glibc-2.3.2/math/tgmath.h 2001-07-07 15:21:06.000000000 -0400 +++ glibc-2.3.2/math/tgmath.h 2003-08-21 08:37:07.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -70,7 +70,18 @@ __tgmres = Fct (Val); \ else if (sizeof (Val) == sizeof (float)) \ __tgmres = Fct##f (Val); \ - else \ + else \ + __tgmres = __tgml(Fct) (Val); \ + __tgmres; })) + +# define __TGMATH_UNARY_REAL_RET_ONLY(Val, RetType, Fct) \ + (__extension__ ({ RetType __tgmres; \ + if (sizeof (Val) == sizeof (double) \ + || __builtin_classify_type (Val) != 8) \ + __tgmres = Fct (Val); \ + else if (sizeof (Val) == sizeof (float)) \ + __tgmres = Fct##f (Val); \ + else \ __tgmres = __tgml(Fct) (Val); \ __tgmres; })) @@ -81,7 +92,7 @@ __tgmres = Fct (Val1, Val2); \ else if (sizeof (Val1) == sizeof (float)) \ __tgmres = Fct##f (Val1, Val2); \ - else \ + else \ __tgmres = __tgml(Fct) (Val1, Val2); \ __tgmres; })) @@ -155,7 +166,7 @@ else \ __tgmres = Cfct (Val); \ } \ - else \ + else \ { \ if (sizeof (__real__ (Val)) == sizeof (Val)) \ __tgmres = Fct##f (Val); \ @@ -166,19 +177,6 @@ /* XXX This definition has to be changed as soon as the compiler understands the imaginary keyword. */ -# define __TGMATH_UNARY_IMAG_ONLY(Val, Fct) \ - (__extension__ ({ __tgmath_real_type (Val) __tgmres; \ - if (sizeof (Val) == sizeof (__complex__ double) \ - || __builtin_classify_type (__real__ (Val)) != 8) \ - __tgmres = Fct (Val); \ - else if (sizeof (Val) == sizeof (__complex__ float)) \ - __tgmres = Fct##f (Val); \ - else \ - __tgmres = __tgml(Fct) (Val); \ - __tgmres; })) - -/* XXX This definition has to be changed as soon as the compiler understands - the imaginary keyword. */ # define __TGMATH_BINARY_REAL_IMAG(Val1, Val2, Fct, Cfct) \ (__extension__ ({ __tgmath_real_type ((Val1) + (Val2)) __tgmres; \ if ((sizeof (__real__ (Val1)) > sizeof (double) \ @@ -345,13 +343,13 @@ /* Round X to nearest integral value according to current rounding direction. */ -#define lrint(Val) __TGMATH_UNARY_REAL_ONLY (Val, lrint) -#define llrint(Val) __TGMATH_UNARY_REAL_ONLY (Val, llrint) +#define lrint(Val) __TGMATH_UNARY_REAL_RET_ONLY (Val, long int, lrint) +#define llrint(Val) __TGMATH_UNARY_REAL_RET_ONLY (Val, long long int, llrint) /* Round X to nearest integral value, rounding halfway cases away from zero. */ -#define lround(Val) __TGMATH_UNARY_REAL_ONLY (Val, lround) -#define llround(Val) __TGMATH_UNARY_REAL_ONLY (Val, llround) +#define lround(Val) __TGMATH_UNARY_REAL_RET_ONLY (Val, long int, lround) +#define llround(Val) __TGMATH_UNARY_REAL_RET_ONLY (Val, long long int, llround) /* Return X with its signed changed to Y's. */ @@ -389,7 +387,7 @@ __TGMATH_BINARY_FIRST_REAL_ONLY (Val1, Val2, scalbln) /* Return the binary exponent of X, which must be nonzero. */ -#define ilogb(Val) __TGMATH_UNARY_REAL_ONLY (Val, ilogb) +#define ilogb(Val) __TGMATH_UNARY_REAL_RET_ONLY (Val, int, ilogb) /* Return positive difference between X and Y. */ @@ -410,21 +408,21 @@ /* Absolute value, conjugates, and projection. */ /* Argument value of Z. */ -#define carg(Val) __TGMATH_UNARY_IMAG_ONLY (Val, carg) +#define carg(Val) __TGMATH_UNARY_REAL_IMAG (Val, carg, carg) /* Complex conjugate of Z. */ -#define conj(Val) __TGMATH_UNARY_IMAG_ONLY (Val, conj) +#define conj(Val) __TGMATH_UNARY_REAL_IMAG (Val, conj, conj) /* Projection of Z onto the Riemann sphere. */ -#define cproj(Val) __TGMATH_UNARY_IMAG_ONLY (Val, cproj) +#define cproj(Val) __TGMATH_UNARY_REAL_IMAG (Val, cproj, cproj) /* Decomposing complex values. */ /* Imaginary part of Z. */ -#define cimag(Val) __TGMATH_UNARY_IMAG_ONLY (Val, cimag) +#define cimag(Val) __TGMATH_UNARY_REAL_IMAG (Val, cimag, cimag) /* Real part of Z. */ -#define creal(Val) __TGMATH_UNARY_IMAG_ONLY (Val, creal) +#define creal(Val) __TGMATH_UNARY_REAL_IMAG (Val, creal, creal) #endif /* tgmath.h */ --- glibc-2.3.2/misc/Makefile 2002-08-27 00:52:37.000000000 -0400 +++ glibc-2.3.2/misc/Makefile 2003-09-19 22:37:05.000000000 -0400 @@ -1,4 +1,4 @@ -# Copyright (C) 1991-1999, 2000, 2001, 2002 Free Software Foundation, Inc. +# Copyright (C) 1991-2002, 2003 Free Software Foundation, Inc. # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or @@ -52,7 +52,7 @@ chflags fchflags \ insremque getttyent getusershell getpass ttyslot \ syslog syscall daemon \ - mmap mmap64 munmap mprotect msync madvise mincore \ + mmap mmap64 munmap mprotect msync madvise mincore remap_file_pages\ mlock munlock mlockall munlockall \ efgcvt efgcvt_r qefgcvt qefgcvt_r \ hsearch hsearch_r tsearch lsearch \ @@ -75,8 +75,21 @@ tests := tst-dirname tst-tsearch tst-fdset tst-efgcvt tst-mntent tst-hsearch -CFLAGS-tsearch.c = $(exceptions) -CFLAGS-lsearch.c = $(exceptions) +CFLAGS-tsearch.c = $(uses-callbacks) +CFLAGS-lsearch.c = $(uses-callbacks) +CFLAGS-pselect.c = -fexceptions +CFLAGS-readv.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-writev.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-usleep.c = -fexceptions +CFLAGS-syslog.c = -fexceptions +CFLAGS-error.c = -fexceptions +CFLAGS-getpass.c = -fexceptions +CFLAGS-mkstemp.c = -fexceptions +CFLAGS-mkstemp64.c = -fexceptions +CFLAGS-getsysstats.c = -fexceptions +CFLAGS-getusershell.c = -fexceptions +CFLAGS-err.c = -fexceptions +CFLAGS-tst-tsearch.c = $(stack-align-test-flags) include ../Rules --- glibc-2.3.2/misc/Versions 2002-12-18 17:49:52.000000000 -0500 +++ glibc-2.3.2/misc/Versions 2003-03-15 15:02:11.000000000 -0500 @@ -127,6 +127,9 @@ # s* setxattr; } + GLIBC_2.3.3 { + remap_file_pages; + } GLIBC_PRIVATE { # functions which have an additional interface since they are # cancelable. --- glibc-2.3.2/misc/daemon.c 2002-04-08 03:02:09.000000000 -0400 +++ glibc-2.3.2/misc/daemon.c 2003-04-24 20:05:58.000000000 -0400 @@ -31,12 +31,14 @@ static char sccsid[] = "@(#)daemon.c 8.1 (Berkeley) 6/4/93"; #endif /* LIBC_SCCS and not lint */ +#include #include #include #include #include #include +#include int daemon(nochdir, noclose) @@ -59,7 +61,8 @@ if (!nochdir) (void)__chdir("/"); - if (!noclose && (fd = __open(_PATH_DEVNULL, O_RDWR, 0)) != -1) { + if (!noclose + && (fd = open_not_cancel(_PATH_DEVNULL, O_RDWR, 0)) != -1) { struct stat64 st; if (__builtin_expect (__fxstat64 (_STAT_VER, fd, &st), 0) == 0 @@ -74,7 +77,7 @@ if (fd > 2) (void)__close (fd); } else { - (void)__close (fd); + close_not_cancel_no_status (fd); return -1; } } --- glibc-2.3.2/misc/err.h 2001-07-07 15:21:06.000000000 -0400 +++ glibc-2.3.2/misc/err.h 2003-09-19 22:37:05.000000000 -0400 @@ -1,5 +1,5 @@ /* 4.4BSD utility functions for error messages. - Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. + Copyright (C) 1995,1996,1997,1998,1999,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -33,25 +33,25 @@ /* Print "program: ", FORMAT, ": ", the standard error string for errno, and a newline, on stderr. */ extern void warn (__const char *__format, ...) - __THROW __attribute__ ((__format__ (__printf__, 1, 2))); + __attribute__ ((__format__ (__printf__, 1, 2))); extern void vwarn (__const char *__format, __gnuc_va_list) - __THROW __attribute__ ((__format__ (__printf__, 1, 0))); + __attribute__ ((__format__ (__printf__, 1, 0))); /* Likewise, but without ": " and the standard error string. */ extern void warnx (__const char *__format, ...) - __THROW __attribute__ ((__format__ (__printf__, 1, 2))); + __attribute__ ((__format__ (__printf__, 1, 2))); extern void vwarnx (__const char *__format, __gnuc_va_list) - __THROW __attribute__ ((__format__ (__printf__, 1, 0))); + __attribute__ ((__format__ (__printf__, 1, 0))); /* Likewise, and then exit with STATUS. */ extern void err (int __status, __const char *__format, ...) - __THROW __attribute__ ((__noreturn__, __format__ (__printf__, 2, 3))); + __attribute__ ((__noreturn__, __format__ (__printf__, 2, 3))); extern void verr (int __status, __const char *__format, __gnuc_va_list) - __THROW __attribute__ ((__noreturn__, __format__ (__printf__, 2, 0))); + __attribute__ ((__noreturn__, __format__ (__printf__, 2, 0))); extern void errx (int __status, __const char *__format, ...) - __THROW __attribute__ ((__noreturn__, __format__ (__printf__, 2, 3))); + __attribute__ ((__noreturn__, __format__ (__printf__, 2, 3))); extern void verrx (int __status, __const char *, __gnuc_va_list) - __THROW __attribute__ ((__noreturn__, __format__ (__printf__, 2, 0))); + __attribute__ ((__noreturn__, __format__ (__printf__, 2, 0))); __END_DECLS --- glibc-2.3.2/misc/error.c 2002-12-09 03:20:33.000000000 -0500 +++ glibc-2.3.2/misc/error.c 2003-09-19 22:37:05.000000000 -0400 @@ -1,5 +1,5 @@ /* Error handler for noninteractive utilities - Copyright (C) 1990-1998, 2000, 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 1990-1998, 2000-2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Its master source is NOT part of the C library, however. The master source lives in /gd/gnu/lib. @@ -92,6 +92,8 @@ # undef putc # define putc(c, fp) INTUSE(_IO_putc) (c, fp) +# include + #else /* not _LIBC */ # if !HAVE_DECL_STRERROR_R && STRERROR_R_CHAR_P @@ -255,6 +257,14 @@ va_list args; #endif +#if defined _LIBC && defined __libc_ptf_call + /* We do not want this call to be cut short by a thread + cancellation. Therefore disable cancellation for now. */ + int state = PTHREAD_CANCEL_ENABLE; + __libc_ptf_call (pthread_setcancelstate, (PTHREAD_CANCEL_DISABLE, &state), + 0); +#endif + fflush (stdout); #ifdef _LIBC _IO_flockfile (stderr); @@ -288,6 +298,9 @@ #ifdef _LIBC _IO_funlockfile (stderr); +# ifdef __libc_ptf_call + __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0); +# endif #endif } @@ -328,6 +341,14 @@ old_line_number = line_number; } +#if defined _LIBC && defined __libc_ptf_call + /* We do not want this call to be cut short by a thread + cancellation. Therefore disable cancellation for now. */ + int state = PTHREAD_CANCEL_ENABLE; + __libc_ptf_call (pthread_setcancelstate, (PTHREAD_CANCEL_DISABLE, &state), + 0); +#endif + fflush (stdout); #ifdef _LIBC _IO_flockfile (stderr); @@ -371,6 +392,9 @@ #ifdef _LIBC _IO_funlockfile (stderr); +# ifdef __libc_ptf_call + __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0); +# endif #endif } --- glibc-2.3.2/misc/error.h 2001-07-07 15:21:06.000000000 -0400 +++ glibc-2.3.2/misc/error.h 2003-09-19 22:37:05.000000000 -0400 @@ -1,7 +1,6 @@ /* Declaration for error-reporting function - Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. Its master source is NOT part of - the C library, however. The master source lives in /gd/gnu/lib. + Copyright (C) 1995, 1996, 1997, 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -38,17 +37,17 @@ extern "C" { #endif -#if defined (__STDC__) && __STDC__ +#if defined __STDC__ && __STDC__ /* Print a message with `fprintf (stderr, FORMAT, ...)'; if ERRNUM is nonzero, follow it with ": " and strerror (ERRNUM). If STATUS is nonzero, terminate the program with `exit (STATUS)'. */ -extern void error (int status, int errnum, const char *format, ...) +extern void error (int __status, int __errnum, const char *__format, ...) __attribute__ ((__format__ (__printf__, 3, 4))); -extern void error_at_line (int status, int errnum, const char *fname, - unsigned int lineno, const char *format, ...) +extern void error_at_line (int __status, int __errnum, const char *__fname, + unsigned int __lineno, const char *__format, ...) __attribute__ ((__format__ (__printf__, 5, 6))); /* If NULL, error will flush stdout, then print on stderr the program --- glibc-2.3.2/misc/getpass.c 2001-08-17 10:28:56.000000000 -0400 +++ glibc-2.3.2/misc/getpass.c 2003-09-19 22:37:05.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1992,93,94,95,96,97,98,99,2001 Free Software Foundation, Inc. +/* Copyright (C) 1992-1999, 2001, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -21,11 +21,10 @@ #include #include -#ifdef USE_IN_LIBIO -# include -# define flockfile(s) _IO_flockfile (s) -# define funlockfile(s) _IO_funlockfile (s) -#endif +#include +#define flockfile(s) _IO_flockfile (s) +#define funlockfile(s) _IO_funlockfile (s) +#include /* It is desirable to use this bit on systems that have it. The only bit of terminal state we want to twiddle is echoing, which is @@ -36,6 +35,13 @@ #define TCSASOFT 0 #endif +static void +call_fclose (void *arg) +{ + if (arg != NULL) + fclose (arg); +} + char * getpass (prompt) const char *prompt; @@ -50,7 +56,7 @@ /* Try to write to and read from the terminal if we can. If we can't open the terminal, use stderr and stdin. */ - in = fopen ("/dev/tty", "w+"); + in = fopen ("/dev/tty", "w+c"); if (in == NULL) { in = stdin; @@ -64,6 +70,10 @@ out = in; } + /* Make sure the stream we opened is closed even if the thread is + canceled. */ + __libc_cleanup_push (call_fclose, in == out ? in : NULL); + flockfile (out); /* Turn echoing off if it is on now. */ @@ -117,6 +127,8 @@ funlockfile (out); + __libc_cleanup_pop (0); + if (in != stdin) /* We opened the terminal; now close it. */ fclose (in); --- glibc-2.3.2/misc/getttyent.c 2002-08-03 22:19:58.000000000 -0400 +++ glibc-2.3.2/misc/getttyent.c 2003-09-19 22:37:05.000000000 -0400 @@ -192,7 +192,7 @@ if (tf) { (void)rewind(tf); return (1); - } else if ((tf = fopen(_PATH_TTYS, "r"))) { + } else if ((tf = fopen(_PATH_TTYS, "rc"))) { /* We do the locking ourselves. */ __fsetlocking (tf, FSETLOCKING_BYCALLER); return (1); --- glibc-2.3.2/misc/getusershell.c 2001-07-17 04:05:26.000000000 -0400 +++ glibc-2.3.2/misc/getusershell.c 2003-09-19 22:37:05.000000000 -0400 @@ -100,7 +100,7 @@ if (strings != NULL) free(strings); strings = NULL; - if ((fp = fopen(_PATH_SHELLS, "r")) == NULL) + if ((fp = fopen(_PATH_SHELLS, "rc")) == NULL) return (char **) okshells; if (fstat64(fileno(fp), &statb) == -1) { (void)fclose(fp); --- glibc-2.3.2/misc/mntent_r.c 2002-04-09 03:16:43.000000000 -0400 +++ glibc-2.3.2/misc/mntent_r.c 2003-09-19 22:37:05.000000000 -0400 @@ -1,5 +1,5 @@ /* Utilities for reading/writing fstab, mtab, etc. - Copyright (C) 1995-2000, 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 1995-2000, 2001, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -38,7 +38,12 @@ FILE * __setmntent (const char *file, const char *mode) { - FILE *result = fopen (file, mode); + /* Extend the mode parameter with "c" to disable cancellation in the + I/O functions. */ + size_t modelen = strlen (mode); + char newmode[modelen + 2]; + memcpy (mempcpy (newmode, mode, modelen), "c", 2); + FILE *result = fopen (file, newmode); if (result != NULL) /* We do the locking ourselves. */ --- glibc-2.3.2/misc/sys/mman.h 2001-07-07 15:21:06.000000000 -0400 +++ glibc-2.3.2/misc/sys/mman.h 2003-04-24 20:05:58.000000000 -0400 @@ -1,5 +1,5 @@ /* Definitions for BSD-style memory management. - Copyright (C) 1994-1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1994-1999, 2000, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -83,8 +83,11 @@ /* Synchronize the region starting at ADDR and extending LEN bytes with the file it maps. Filesystem operations on a file being mapped are - unpredictable before this is done. Flags are from the MS_* set. */ -extern int msync (void *__addr, size_t __len, int __flags) __THROW; + unpredictable before this is done. Flags are from the MS_* set. + + This function is a cancellation point and therefore not marked with + __THROW. */ +extern int msync (void *__addr, size_t __len, int __flags); #ifdef __USE_BSD /* Advise the system about particular usage patterns the program follows @@ -124,7 +127,13 @@ The status is returned in a vector of bytes. The least significant bit of each byte is 1 if the referenced page is in memory, otherwise it is zero. */ -extern int mincore (void *__start, size_t __len, unsigned char *__vec); +extern int mincore (void *__start, size_t __len, unsigned char *__vec) + __THROW; + +/* Remap arbitrary pages of a shared backing store within an existing + VMA. */ +extern int remap_file_pages (void *__start, size_t __size, int __prot, + size_t __pgoff, int __flags) __THROW; #endif --- glibc-2.3.2/misc/sys/select.h 2002-08-02 01:00:55.000000000 -0400 +++ glibc-2.3.2/misc/sys/select.h 2003-04-24 20:05:58.000000000 -0400 @@ -1,5 +1,5 @@ /* `fd_set' type and related macros, and `select'/`pselect' declarations. - Copyright (C) 1996,97,98,99,2000,01,02 Free Software Foundation, Inc. + Copyright (C) 1996,97,98,99,2000,01,02,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -102,21 +102,27 @@ readiness, in WRITEFDS (if not NULL) for write readiness, and in EXCEPTFDS (if not NULL) for exceptional conditions. If TIMEOUT is not NULL, time out after waiting the interval specified therein. Returns the number of ready - descriptors, or -1 for errors. */ + descriptors, or -1 for errors. + + This function is a cancellation point and therefore not marked with + __THROW. */ extern int select (int __nfds, fd_set *__restrict __readfds, fd_set *__restrict __writefds, fd_set *__restrict __exceptfds, - struct timeval *__restrict __timeout) __THROW; + struct timeval *__restrict __timeout); #ifdef __USE_XOPEN2K /* Same as above only that the TIMEOUT value is given with higher resolution and a sigmask which is been set temporarily. This version - should be used. */ + should be used. + + This function is a cancellation point and therefore not marked with + __THROW. */ extern int pselect (int __nfds, fd_set *__restrict __readfds, fd_set *__restrict __writefds, fd_set *__restrict __exceptfds, const struct timespec *__restrict __timeout, - const __sigset_t *__restrict __sigmask) __THROW; + const __sigset_t *__restrict __sigmask); #endif __END_DECLS --- glibc-2.3.2/misc/sys/syslog.h 2000-12-08 12:05:25.000000000 -0500 +++ glibc-2.3.2/misc/sys/syslog.h 2003-09-19 22:37:05.000000000 -0400 @@ -168,24 +168,37 @@ __BEGIN_DECLS -/* Close desriptor used to write to system logger. */ -extern void closelog (void) __THROW; +/* Close desriptor used to write to system logger. -/* Open connection to system logger. */ -extern void openlog (__const char *__ident, int __option, int __facility) - __THROW; + This function is a possible cancellation point and therefore not + marked with __THROW. */ +extern void closelog (void); + +/* Open connection to system logger. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ +extern void openlog (__const char *__ident, int __option, int __facility); /* Set the log mask level. */ extern int setlogmask (int __mask) __THROW; -/* Generate a log message using FMT string and option arguments. */ -extern void syslog (int __pri, __const char *__fmt, ...) __THROW +/* Generate a log message using FMT string and option arguments. + + This function is a possible cancellation point and therefore not + marked with __THROW. */ +extern void syslog (int __pri, __const char *__fmt, ...) __attribute__ ((__format__(__printf__, 2, 3))); #ifdef __USE_BSD -/* Generate a log message using FMT and using arguments pointed to by AP. */ +/* Generate a log message using FMT and using arguments pointed to by AP. + + This function is not part of POSIX and therefore no official + cancellation point. But due to similarity with an POSIX interface + or due to the implementation it is a cancellation point and + therefore not marked with __THROW. */ extern void vsyslog (int __pri, __const char *__fmt, __gnuc_va_list __ap) - __THROW __attribute__ ((__format__(__printf__, 2, 0))); + __attribute__ ((__format__(__printf__, 2, 0))); #endif __END_DECLS --- glibc-2.3.2/misc/sys/uio.h 2001-07-07 15:21:06.000000000 -0400 +++ glibc-2.3.2/misc/sys/uio.h 2003-04-24 20:05:58.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 92, 96, 97, 98, 99 Free Software Foundation, Inc. +/* Copyright (C) 1991, 92, 96, 97, 98, 99, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -33,17 +33,21 @@ buffers described by VECTOR, which is a vector of COUNT `struct iovec's. The buffers are filled in the order specified. Operates just like `read' (see ) except that data are - put in VECTOR instead of a contiguous buffer. */ -extern ssize_t readv (int __fd, __const struct iovec *__vector, int __count) - __THROW; + put in VECTOR instead of a contiguous buffer. + + This function is a cancellation point and therefore not marked with + __THROW. */ +extern ssize_t readv (int __fd, __const struct iovec *__vector, int __count); /* Write data pointed by the buffers described by VECTOR, which is a vector of COUNT `struct iovec's, to file descriptor FD. The data is written in the order specified. Operates just like `write' (see ) except that the data - are taken from VECTOR instead of a contiguous buffer. */ -extern ssize_t writev (int __fd, __const struct iovec *__vector, int __count) - __THROW; + are taken from VECTOR instead of a contiguous buffer. + + This function is a cancellation point and therefore not marked with + __THROW. */ +extern ssize_t writev (int __fd, __const struct iovec *__vector, int __count); __END_DECLS --- glibc-2.3.2/misc/syslog.c 2002-12-11 21:00:24.000000000 -0500 +++ glibc-2.3.2/misc/syslog.c 2003-08-21 08:37:07.000000000 -0400 @@ -41,6 +41,7 @@ #include #include #include +#include #include #include #include @@ -74,9 +75,27 @@ static void openlog_internal(const char *, int, int) internal_function; static void closelog_internal(void); static void sigpipe_handler (int); -#ifdef _LIBC_REENTRANT -static void cancel_handler (void *); -#endif + + +struct cleanup_arg +{ + void *buf; + struct sigaction *oldaction; +}; + +static void +cancel_handler (void *ptr) +{ + /* Restore the old signal handler. */ + struct cleanup_arg *clarg = (struct cleanup_arg *) ptr; + + if (clarg != NULL && clarg->oldaction != NULL) + __sigaction (SIGPIPE, clarg->oldaction, NULL); + + /* Free the lock. */ + __libc_lock_unlock (syslog_lock); +} + /* * syslog, vsyslog -- @@ -118,7 +137,6 @@ size_t bufsize = 0; size_t prioff, msgoff; struct sigaction action, oldaction; - struct sigaction *oldaction_ptr = NULL; int sigpipe; int saved_errno = errno; char failbuf[3 * sizeof (pid_t) + sizeof "out of memory []"]; @@ -165,6 +183,7 @@ } else { + __fsetlocking (f, FSETLOCKING_BYCALLER); prioff = fprintf (f, "<%d>", pri); (void) time (&now); #ifdef USE_IN_LIBIO @@ -182,9 +201,12 @@ if (LogTag != NULL) fputs_unlocked (LogTag, f); if (LogStat & LOG_PID) - fprintf (f, "[%d]", __getpid ()); + fprintf (f, "[%d]", (int) __getpid ()); if (LogTag != NULL) - putc_unlocked (':', f), putc_unlocked (' ', f); + { + putc_unlocked (':', f); + putc_unlocked (' ', f); + } /* Restore errno for %m format. */ __set_errno (saved_errno); @@ -212,16 +234,22 @@ v->iov_base = (char *) "\n"; v->iov_len = 1; } + + __libc_cleanup_push (free, buf); + + /* writev is a cancellation point. */ (void)__writev(STDERR_FILENO, iov, v - iov + 1); + + __libc_cleanup_pop (0); } -#ifdef _LIBC_REENTRANT /* Prepare for multiple users. We have to take care: open and write are cancellation points. */ - __libc_cleanup_region_start (1, (void (*) (void *)) cancel_handler, - &oldaction_ptr); + struct cleanup_arg clarg; + clarg.buf = buf; + clarg.oldaction = NULL; + __libc_cleanup_push (cancel_handler, &clarg); __libc_lock_lock (syslog_lock); -#endif /* Prepare for a broken connection. */ memset (&action, 0, sizeof (action)); @@ -229,7 +257,7 @@ sigemptyset (&action.sa_mask); sigpipe = __sigaction (SIGPIPE, &action, &oldaction); if (sigpipe == 0) - oldaction_ptr = &oldaction; + clarg.oldaction = &oldaction; /* Get connected, output the message to the local logger. */ if (!connected) @@ -271,11 +299,9 @@ if (sigpipe == 0) __sigaction (SIGPIPE, &oldaction, (struct sigaction *) NULL); -#ifdef _LIBC_REENTRANT /* End of critical section. */ - __libc_cleanup_region_end (0); + __libc_cleanup_pop (0); __libc_lock_unlock (syslog_lock); -#endif free (buf); } @@ -283,6 +309,7 @@ static struct sockaddr SyslogAddr; /* AF_UNIX address of local logger */ + static void internal_function openlog_internal(const char *ident, int logstat, int logfac) @@ -312,8 +339,9 @@ == -1) { int saved_errno = errno; - (void)__close(LogFile); + int fd = LogFile; LogFile = -1; + (void)__close(fd); if (LogType == SOCK_DGRAM && saved_errno == EPROTOTYPE) { @@ -329,28 +357,16 @@ } } - -static void -log_cleanup (void *arg) -{ - __libc_lock_unlock (syslog_lock); -} - void openlog (const char *ident, int logstat, int logfac) { -#ifdef _LIBC_REENTRANT - /* Protect against multiple users. */ - __libc_cleanup_region_start (1, log_cleanup, NULL); + /* Protect against multiple users and cancellation. */ + __libc_cleanup_push (cancel_handler, NULL); __libc_lock_lock (syslog_lock); -#endif openlog_internal (ident, logstat, logfac); -#ifdef _LIBC_REENTRANT - /* Free the lock. */ - __libc_cleanup_region_end (1); -#endif + __libc_cleanup_pop (1); } static void @@ -373,36 +389,17 @@ void closelog () { -#ifdef _LIBC_REENTRANT - /* Protect against multiple users. */ - __libc_cleanup_region_start (1, log_cleanup, NULL); + /* Protect against multiple users and cancellation. */ + __libc_cleanup_push (cancel_handler, NULL); __libc_lock_lock (syslog_lock); -#endif closelog_internal (); LogTag = NULL; LogType = SOCK_DGRAM; /* this is the default */ -#ifdef _LIBC_REENTRANT - /* Free the lock. */ - __libc_cleanup_region_end (1); -#endif -} - -#ifdef _LIBC_REENTRANT -static void -cancel_handler (void *ptr) -{ - /* Restore the old signal handler. */ - struct sigaction *oldaction = *((struct sigaction **) ptr); - - if (oldaction != (struct sigaction *) NULL) - __sigaction (SIGPIPE, oldaction, (struct sigaction *) NULL); - /* Free the lock. */ - __libc_lock_unlock (syslog_lock); + __libc_cleanup_pop (1); } -#endif /* setlogmask -- set the log mask level */ int --- glibc-2.3.2/misc/tst-tsearch.c 2001-07-07 15:21:06.000000000 -0400 +++ glibc-2.3.2/misc/tst-tsearch.c 2003-09-19 22:37:05.000000000 -0400 @@ -1,5 +1,5 @@ /* Test program for tsearch et al. - Copyright (C) 1997, 2000, 2001 Free Software Foundation, Inc. + Copyright (C) 1997, 2000, 2001, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -25,6 +25,7 @@ #include #include #include +#include #define SEED 0 #define BALANCED 1 @@ -72,10 +73,14 @@ /* Maximum depth during a tree walk. */ static int max_depth; +static int stack_align_check[2]; + /* Compare two keys. */ static int cmp_fn (const void *a, const void *b) { + if (!stack_align_check[0]) + stack_align_check[0] = TEST_STACK_ALIGN () ? -1 : 1; return *(const int *) a - *(const int *) b; } @@ -103,6 +108,9 @@ { int key = **(int **) nodep; + if (!stack_align_check[1]) + stack_align_check[1] = TEST_STACK_ALIGN () ? -1 : 1; + if (depth > max_depth) max_depth = depth; if (which == leaf || which == preorder) @@ -329,5 +337,17 @@ total_error |= error; } + for (i = 0; i < 2; ++i) + if (stack_align_check[i] == 0) + { + printf ("stack alignment check %d not run\n", i); + total_error |= 1; + } + else if (stack_align_check[i] != 1) + { + printf ("stack insufficiently aligned in check %d\n", i); + total_error |= 1; + } + return total_error; } --- glibc-2.3.2/nis/Makefile 2002-04-09 13:33:04.000000000 -0400 +++ glibc-2.3.2/nis/Makefile 2003-08-21 08:37:07.000000000 -0400 @@ -54,8 +54,7 @@ nis_findserv nis_callback nis_clone_dir nis_clone_obj\ nis_clone_res -libnss_compat-routines := $(addprefix compat-,grp pwd spwd initgroups) \ - nisplus-parser nss-nis nss-nisplus +libnss_compat-routines := $(addprefix compat-,grp pwd spwd initgroups) libnss_compat-inhibit-o = $(filter-out .os,$(object-suffixes)) libnss_nis-routines := $(addprefix nis-,$(databases)) nis-initgroups \ --- glibc-2.3.2/nis/nis_table.c 2001-07-07 15:21:06.000000000 -0400 +++ glibc-2.3.2/nis/nis_table.c 2003-03-18 16:46:07.000000000 -0500 @@ -1,4 +1,4 @@ -/* Copyright (c) 1997, 1998, 1999 Free Software Foundation, Inc. +/* Copyright (c) 1997, 1998, 1999, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk , 1997. @@ -30,7 +30,7 @@ struct ib_request *ibreq = calloc (1, sizeof (ib_request)); char buf[strlen (name) + 1]; nis_attr *search_val = NULL; - int search_len = 0; + size_t search_len = 0; char *cptr; size_t size = 0; --- glibc-2.3.2/nis/nss_compat/compat-grp.c 2002-08-26 01:04:55.000000000 -0400 +++ glibc-2.3.2/nis/nss_compat/compat-grp.c 2003-08-21 08:37:07.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996,1997,1998,1999,2001,2002 Free Software Foundation, Inc. +/* Copyright (C) 1996,1997,1998,1999,2001,2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk , 1996. @@ -17,25 +17,28 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ +#include #include #include -#include #include -#include -#include -#include -#include -#include -#include +#include #include - -#include "nss-nisplus.h" -#include "nisplus-parser.h" +#include +#include +#include +#include static service_user *ni; -static bool_t use_nisplus; /* default: group_compat: nis */ -static nis_name grptable; /* Name of the group table */ -static size_t grptablelen; +static enum nss_status (*nss_setgrent) (int stayopen); +static enum nss_status (*nss_getgrnam_r) (const char *name, + struct group * grp, char *buffer, + size_t buflen, int *errnop); +static enum nss_status (*nss_getgrgid_r) (gid_t gid, struct group * grp, + char *buffer, size_t buflen, + int *errnop); +static enum nss_status (*nss_getgrent_r) (struct group * grp, char *buffer, + size_t buflen, int *errnop); +static enum nss_status (*nss_endgrent) (void); /* Get the declaration of the parser function. */ #define ENTNAME grent @@ -47,25 +50,21 @@ #define BLACKLIST_INITIAL_SIZE 512 #define BLACKLIST_INCREMENT 256 struct blacklist_t - { - char *data; - int current; - int size; - }; +{ + char *data; + int current; + int size; +}; struct ent_t - { - bool_t nis; - bool_t nis_first; - char *oldkey; - int oldkeylen; - nis_result *result; - FILE *stream; - struct blacklist_t blacklist; +{ + bool_t files; + FILE *stream; + struct blacklist_t blacklist; }; typedef struct ent_t ent_t; -static ent_t ext_ent = {0, 0, NULL, 0, NULL, NULL, {NULL, 0, 0}}; +static ent_t ext_ent = {TRUE, NULL, {NULL, 0, 0}}; /* Protect global state against multiple changers. */ __libc_lock_define_initialized (static, lock) @@ -74,56 +73,27 @@ static void blacklist_store_name (const char *, ent_t *); static int in_blacklist (const char *, int, ent_t *); -static enum nss_status -_nss_first_init (void) +/* Initialize the NSS interface/functions. The calling function must + hold the lock. */ +static void +init_nss_interface (void) { - if (ni == NULL) - { - __nss_database_lookup ("group_compat", NULL, "nis", &ni); - use_nisplus = (strcmp (ni->name, "nisplus") == 0); - } - - if (grptable == NULL) + if (__nss_database_lookup ("group_compat", NULL, "nis", &ni) >= 0) { - static const char key[] = "group.org_dir."; - const char *local_dir = nis_local_directory (); - size_t len_local_dir = strlen (local_dir); - - grptable = malloc (sizeof (key) + len_local_dir); - if (grptable == NULL) - return NSS_STATUS_TRYAGAIN; - - grptablelen = ((char *) mempcpy (mempcpy (grptable, - key, sizeof (key) - 1), - local_dir, len_local_dir + 1) - - grptable) - 1; + nss_setgrent = __nss_lookup_function (ni, "setgrent"); + nss_getgrnam_r = __nss_lookup_function (ni, "getgrnam_r"); + nss_getgrgid_r = __nss_lookup_function (ni, "getgrgid_r"); + nss_getgrent_r = __nss_lookup_function (ni, "getgrent_r"); + nss_endgrent = __nss_lookup_function (ni, "endgrent"); } - - return NSS_STATUS_SUCCESS; } static enum nss_status -internal_setgrent (ent_t *ent) +internal_setgrent (ent_t *ent, int stayopen) { enum nss_status status = NSS_STATUS_SUCCESS; - ent->nis = ent->nis_first = 0; - - if (_nss_first_init () != NSS_STATUS_SUCCESS) - return NSS_STATUS_UNAVAIL; - - if (ent->oldkey != NULL) - { - free (ent->oldkey); - ent->oldkey = NULL; - ent->oldkeylen = 0; - } - - if (ent->result != NULL) - { - nis_freeresult (ent->result); - ent->result = NULL; - } + ent->files = TRUE; if (ent->blacklist.data != NULL) { @@ -136,7 +106,7 @@ if (ent->stream == NULL) { - ent->stream = fopen ("/etc/group", "r"); + ent->stream = fopen ("/etc/group", "rm"); if (ent->stream == NULL) status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL; @@ -145,25 +115,31 @@ /* We have to make sure the file is `closed on exec'. */ int result, flags; - result = flags = fcntl (fileno (ent->stream), F_GETFD, 0); + result = flags = fcntl (fileno_unlocked (ent->stream), F_GETFD, 0); if (result >= 0) { flags |= FD_CLOEXEC; - result = fcntl (fileno (ent->stream), F_SETFD, flags); + result = fcntl (fileno_unlocked (ent->stream), F_SETFD, flags); } if (result < 0) { /* Something went wrong. Close the stream and return a - failure. */ + failure. */ fclose (ent->stream); ent->stream = NULL; status = NSS_STATUS_UNAVAIL; } + else + /* We take care of locking ourself. */ + __fsetlocking (ent->stream, FSETLOCKING_BYCALLER); } } else rewind (ent->stream); + if (status == NSS_STATUS_SUCCESS && nss_setgrent) + return nss_setgrent (stayopen); + return status; } @@ -175,7 +151,10 @@ __libc_lock_lock (lock); - result = internal_setgrent (&ext_ent); + if (ni == NULL) + init_nss_interface (); + + result = internal_setgrent (&ext_ent, stayopen); __libc_lock_unlock (lock); @@ -186,27 +165,15 @@ static enum nss_status internal_endgrent (ent_t *ent) { + if (nss_endgrent) + nss_endgrent (); + if (ent->stream != NULL) { fclose (ent->stream); ent->stream = NULL; } - ent->nis = ent->nis_first = 0; - - if (ent->oldkey != NULL) - { - free (ent->oldkey); - ent->oldkey = NULL; - ent->oldkeylen = 0; - } - - if (ent->result != NULL) - { - nis_freeresult (ent->result); - ent->result = NULL; - } - if (ent->blacklist.data != NULL) { ent->blacklist.current = 1; @@ -233,239 +200,44 @@ return result; } +/* get the next group from NSS (+ entry) */ static enum nss_status -getgrent_next_nis (struct group *result, ent_t *ent, char *buffer, +getgrent_next_nss (struct group *result, ent_t *ent, char *buffer, size_t buflen, int *errnop) { - struct parser_data *data = (void *) buffer; - char *domain; - char *outkey, *outval; - int outkeylen, outvallen, parse_res; - char *p; - - if (yp_get_default_domain (&domain) != YPERR_SUCCESS) - { - ent->nis = 0; - return NSS_STATUS_NOTFOUND; - } + if (!nss_getgrent_r) + return NSS_STATUS_UNAVAIL; do { - char *save_oldkey; - int save_oldlen; - bool_t save_nis_first; + enum nss_status status; - if (ent->nis_first) - { - if (yp_first (domain, "group.byname", &outkey, &outkeylen, - &outval, &outvallen) != YPERR_SUCCESS) - { - ent->nis = 0; - return NSS_STATUS_UNAVAIL; - } - - if ( buflen < ((size_t) outvallen + 1)) - { - free (outval); - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } - - save_oldkey = ent->oldkey; - save_oldlen = ent->oldkeylen; - save_nis_first = TRUE; - ent->oldkey = outkey; - ent->oldkeylen = outkeylen; - ent->nis_first = FALSE; - } - else - { - if (yp_next (domain, "group.byname", ent->oldkey, ent->oldkeylen, - &outkey, &outkeylen, &outval, &outvallen) - != YPERR_SUCCESS) - { - ent->nis = 0; - return NSS_STATUS_NOTFOUND; - } - - if ( buflen < ((size_t) outvallen + 1)) - { - free (outval); - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } - - save_oldkey = ent->oldkey; - save_oldlen = ent->oldkeylen; - save_nis_first = FALSE; - ent->oldkey = outkey; - ent->oldkeylen = outkeylen; - } - - /* Copy the found data to our buffer... */ - p = strncpy (buffer, outval, buflen); - - /* ...and free the data. */ - free (outval); - - while (isspace (*p)) - ++p; - - parse_res = _nss_files_parse_grent (p, result, data, buflen, errnop); - if (parse_res == -1) - { - free (ent->oldkey); - ent->oldkey = save_oldkey; - ent->oldkeylen = save_oldlen; - ent->nis_first = save_nis_first; - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } - else - { - if (!save_nis_first) - free (save_oldkey); - } - - if (parse_res && - in_blacklist (result->gr_name, strlen (result->gr_name), ent)) - parse_res = 0; /* if result->gr_name in blacklist,search next entry */ + if ((status = nss_getgrent_r (result, buffer, buflen, errnop)) != + NSS_STATUS_SUCCESS) + return status; } - while (!parse_res); - - return NSS_STATUS_SUCCESS; -} - -static enum nss_status -getgrent_next_nisplus (struct group *result, ent_t *ent, char *buffer, - size_t buflen, int *errnop) -{ - int parse_res; - - do - { - nis_result *save_oldres; - bool_t save_nis_first; - - if (ent->nis_first) - { - save_oldres = ent->result; - save_nis_first = TRUE; - ent->result = nis_first_entry(grptable); - if (niserr2nss (ent->result->status) != NSS_STATUS_SUCCESS) - { - ent->nis = 0; - return niserr2nss (ent->result->status); - } - ent->nis_first = FALSE; - } - else - { - nis_result *res; - - save_oldres = ent->result; - save_nis_first = FALSE; - res = nis_next_entry(grptable, &ent->result->cookie); - ent->result = res; - if (niserr2nss (ent->result->status) != NSS_STATUS_SUCCESS) - { - ent->nis = 0; - return niserr2nss (ent->result->status); - } - } - parse_res = _nss_nisplus_parse_grent (ent->result, 0, result, - buffer, buflen, errnop); - if (parse_res == -1) - { - nis_freeresult (ent->result); - ent->result = save_oldres; - ent->nis_first = save_nis_first; - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } - else - { - if (!save_nis_first) - nis_freeresult (save_oldres); - } - - if (parse_res && - in_blacklist (result->gr_name, strlen (result->gr_name), ent)) - parse_res = 0; /* if result->gr_name in blacklist,search next entry */ - } - while (!parse_res); + while (in_blacklist (result->gr_name, strlen (result->gr_name), ent)); return NSS_STATUS_SUCCESS; } /* This function handle the +group entrys in /etc/group */ static enum nss_status -getgrnam_plusgroup (const char *name, struct group *result, char *buffer, - size_t buflen, int *errnop) +getgrnam_plusgroup (const char *name, struct group *result, ent_t *ent, + char *buffer, size_t buflen, int *errnop) { - struct parser_data *data = (void *) buffer; - int parse_res; - - if (use_nisplus) /* Do the NIS+ query here */ - { - nis_result *res; - char buf[strlen (name) + 24 + grptablelen]; - - sprintf(buf, "[name=%s],%s", name, grptable); - res = nis_list(buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL); - if (niserr2nss (res->status) != NSS_STATUS_SUCCESS) - { - enum nss_status status = niserr2nss (res->status); - - nis_freeresult (res); - return status; - } - parse_res = _nss_nisplus_parse_grent (res, 0, result, buffer, buflen, - errnop); - if (parse_res == -1) - { - nis_freeresult (res); - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } - nis_freeresult (res); - } - else /* Use NIS */ - { - char *domain, *outval, *p; - int outvallen; - - if (yp_get_default_domain (&domain) != YPERR_SUCCESS) - return NSS_STATUS_NOTFOUND; - - if (yp_match (domain, "group.byname", name, strlen (name), - &outval, &outvallen) != YPERR_SUCCESS) - return NSS_STATUS_NOTFOUND; - - if (buflen < ((size_t) outvallen + 1)) - { - free (outval); - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } + if (!nss_getgrnam_r) + return NSS_STATUS_UNAVAIL; - /* Copy the found data to our buffer... */ - p = strncpy (buffer, outval, buflen); + if (nss_getgrnam_r (name, result, buffer, buflen, errnop) != + NSS_STATUS_SUCCESS) + return NSS_STATUS_NOTFOUND; - /* ... and free the data. */ - free (outval); - while (isspace (*p)) - ++p; - parse_res = _nss_files_parse_grent (p, result, data, buflen, errnop); - if (parse_res == -1) - return NSS_STATUS_TRYAGAIN; - } + if (in_blacklist (result->gr_name, strlen (result->gr_name), ent)) + return NSS_STATUS_NOTFOUND; - if (parse_res) - /* We found the entry. */ - return NSS_STATUS_SUCCESS; - else - return NSS_STATUS_RETURN; + /* We found the entry. */ + return NSS_STATUS_SUCCESS; } static enum nss_status @@ -483,8 +255,8 @@ { fgetpos (ent->stream, &pos); buffer[buflen - 1] = '\xff'; - p = fgets (buffer, buflen, ent->stream); - if (p == NULL && feof (ent->stream)) + p = fgets_unlocked (buffer, buflen, ent->stream); + if (p == NULL && feof_unlocked (ent->stream)) return NSS_STATUS_NOTFOUND; if (p == NULL || buffer[buflen - 1] != '\xff') @@ -501,9 +273,9 @@ while (isspace (*p)) ++p; } - while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */ - /* Parse the line. If it is invalid, loop to - get the next line of the file to parse. */ + while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */ + /* Parse the line. If it is invalid, loop to + get the next line of the file to parse. */ !(parse_res = _nss_files_parse_grent (p, result, data, buflen, errnop))); @@ -531,41 +303,39 @@ if (result->gr_name[0] == '+' && result->gr_name[1] != '\0' && result->gr_name[1] != '@') { - enum nss_status status; + size_t len = strlen (result->gr_name); + char buf[len]; + enum nss_status status; /* Store the group in the blacklist for the "+" at the end of /etc/group */ - blacklist_store_name (&result->gr_name[1], ent); - status = getgrnam_plusgroup (&result->gr_name[1], result, buffer, - buflen, errnop); - if (status == NSS_STATUS_SUCCESS) /* We found the entry. */ - break; - else - if (status == NSS_STATUS_RETURN /* We couldn't parse the entry */ - || status == NSS_STATUS_NOTFOUND) /* No group in NIS */ - continue; - else - { - if (status == NSS_STATUS_TRYAGAIN) - { - /* The parser ran out of space. */ - fsetpos (ent->stream, &pos); - *errnop = ERANGE; - } - return status; - } + memcpy (buf, &result->gr_name[1], len); + status = getgrnam_plusgroup (&result->gr_name[1], result, ent, + buffer, buflen, errnop); + blacklist_store_name (buf, ent); + if (status == NSS_STATUS_SUCCESS) /* We found the entry. */ + break; + else if (status == NSS_STATUS_RETURN /* We couldn't parse the entry */ + || status == NSS_STATUS_NOTFOUND) /* No group in NIS */ + continue; + else + { + if (status == NSS_STATUS_TRYAGAIN) + { + /* The parser ran out of space. */ + fsetpos (ent->stream, &pos); + *errnop = ERANGE; + } + return status; + } } /* +:... */ if (result->gr_name[0] == '+' && result->gr_name[1] == '\0') { - ent->nis = TRUE; - ent->nis_first = TRUE; + ent->files = FALSE; - if (use_nisplus) - return getgrent_next_nisplus (result, ent, buffer, buflen, errnop); - else - return getgrent_next_nis (result, ent, buffer, buflen, errnop); + return getgrent_next_nss (result, ent, buffer, buflen, errnop); } } @@ -573,39 +343,31 @@ } -static enum nss_status -internal_getgrent_r (struct group *gr, ent_t *ent, char *buffer, - size_t buflen, int *errnop) -{ - if (ent->nis) - { - if (use_nisplus) - return getgrent_next_nisplus (gr, ent, buffer, buflen, errnop); - else - return getgrent_next_nis (gr, ent, buffer, buflen, errnop); - } - else - return getgrent_next_file (gr, ent, buffer, buflen, errnop); -} - enum nss_status _nss_compat_getgrent_r (struct group *grp, char *buffer, size_t buflen, int *errnop) { - enum nss_status status = NSS_STATUS_SUCCESS; + enum nss_status result = NSS_STATUS_SUCCESS; __libc_lock_lock (lock); /* Be prepared that the setgrent function was not called before. */ - if (ext_ent.stream == NULL) - status = internal_setgrent (&ext_ent); + if (ni == NULL) + init_nss_interface (); - if (status == NSS_STATUS_SUCCESS) - status = internal_getgrent_r (grp, &ext_ent, buffer, buflen, errnop); + if (ext_ent.stream == NULL) + result = internal_setgrent (&ext_ent, 1); + if (result == NSS_STATUS_SUCCESS) + { + if (ext_ent.files) + result = getgrent_next_file (grp, &ext_ent, buffer, buflen, errnop); + else + result = getgrent_next_nss (grp, &ext_ent, buffer, buflen, errnop); + } __libc_lock_unlock (lock); - return status; + return result; } /* Searches in /etc/group and the NIS/NIS+ map for a special group */ @@ -624,9 +386,9 @@ { fgetpos (ent->stream, &pos); buffer[buflen - 1] = '\xff'; - p = fgets (buffer, buflen, ent->stream); - if (p == NULL && feof (ent->stream)) - return NSS_STATUS_NOTFOUND; + p = fgets_unlocked (buffer, buflen, ent->stream); + if (p == NULL && feof_unlocked (ent->stream)) + return NSS_STATUS_NOTFOUND; if (p == NULL || buffer[buflen - 1] != '\xff') { @@ -642,9 +404,9 @@ while (isspace (*p)) ++p; } - while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */ - /* Parse the line. If it is invalid, loop to - get the next line of the file to parse. */ + while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */ + /* Parse the line. If it is invalid, loop to + get the next line of the file to parse. */ !(parse_res = _nss_files_parse_grent (p, result, data, buflen, errnop))); @@ -681,8 +443,8 @@ { enum nss_status status; - status = getgrnam_plusgroup (name, result, buffer, buflen, - errnop); + status = getgrnam_plusgroup (name, result, ent, + buffer, buflen, errnop); if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */ continue; @@ -695,7 +457,8 @@ { enum nss_status status; - status = getgrnam_plusgroup (name, result, buffer, buflen, errnop); + status = getgrnam_plusgroup (name, result, ent, + buffer, buflen, errnop); if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */ continue; @@ -711,99 +474,27 @@ _nss_compat_getgrnam_r (const char *name, struct group *grp, char *buffer, size_t buflen, int *errnop) { - ent_t ent = {0, 0, NULL, 0, NULL, NULL, {NULL, 0, 0}}; - enum nss_status status; + ent_t ent = {TRUE, NULL, {NULL, 0, 0}}; + enum nss_status result; if (name[0] == '-' || name[0] == '+') return NSS_STATUS_NOTFOUND; __libc_lock_lock (lock); - status = internal_setgrent (&ent); + if (ni == NULL) + init_nss_interface (); __libc_lock_unlock (lock); - if (status != NSS_STATUS_SUCCESS) - return status; + result = internal_setgrent (&ent, 0); - status = internal_getgrnam_r (name, grp, &ent, buffer, buflen, errnop); + if (result == NSS_STATUS_SUCCESS) + result = internal_getgrnam_r (name, grp, &ent, buffer, buflen, errnop); internal_endgrent (&ent); - return status; -} - -/* This function handle the + entry in /etc/group */ -static enum nss_status -getgrgid_plusgroup (gid_t gid, struct group *result, char *buffer, - size_t buflen, int *errnop) -{ - struct parser_data *data = (void *) buffer; - int parse_res; - - if (use_nisplus) /* Do the NIS+ query here */ - { - nis_result *res; - char buf[24 + grptablelen]; - - sprintf(buf, "[gid=%lu],%s", (unsigned long int) gid, grptable); - res = nis_list(buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL); - if (niserr2nss (res->status) != NSS_STATUS_SUCCESS) - { - enum nss_status status = niserr2nss (res->status); - - nis_freeresult (res); - return status; - } - if ((parse_res = _nss_nisplus_parse_grent (res, 0, result, buffer, - buflen, errnop)) == -1) - { - nis_freeresult (res); - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } - nis_freeresult (res); - } - else /* Use NIS */ - { - char buf[24]; - char *domain, *outval, *p; - int outvallen; - - if (yp_get_default_domain (&domain) != YPERR_SUCCESS) - return NSS_STATUS_NOTFOUND; - - snprintf (buf, sizeof (buf), "%lu", (unsigned long int) gid); - - if (yp_match (domain, "group.bygid", buf, strlen (buf), - &outval, &outvallen) != YPERR_SUCCESS) - return NSS_STATUS_NOTFOUND; - - if (buflen < ((size_t) outvallen + 1)) - { - free (outval); - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } - - /* Copy the found data to our buffer... */ - p = strncpy (buffer, outval, buflen); - - /* ... and free the data. */ - free (outval); - - while (isspace (*p)) - p++; - parse_res = _nss_files_parse_grent (p, result, data, buflen, errnop); - if (parse_res == -1) - return NSS_STATUS_TRYAGAIN; - } - - if (parse_res) - /* We found the entry. */ - return NSS_STATUS_SUCCESS; - else - return NSS_STATUS_RETURN; + return result; } /* Searches in /etc/group and the NIS/NIS+ map for a special group id */ @@ -822,8 +513,8 @@ { fgetpos (ent->stream, &pos); buffer[buflen - 1] = '\xff'; - p = fgets (buffer, buflen, ent->stream); - if (p == NULL && feof (ent->stream)) + p = fgets_unlocked (buffer, buflen, ent->stream); + if (p == NULL && feof_unlocked (ent->stream)) return NSS_STATUS_NOTFOUND; if (p == NULL || buffer[buflen - 1] != '\xff') @@ -840,9 +531,9 @@ while (isspace (*p)) ++p; } - while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */ - /* Parse the line. If it is invalid, loop to - get the next line of the file to parse. */ + while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */ + /* Parse the line. If it is invalid, loop to + get the next line of the file to parse. */ !(parse_res = _nss_files_parse_grent (p, result, data, buflen, errnop))); @@ -866,8 +557,8 @@ /* -group */ if (result->gr_name[0] == '-' && result->gr_name[1] != '\0') { - blacklist_store_name (&result->gr_name[1], ent); - continue; + blacklist_store_name (&result->gr_name[1], ent); + continue; } /* +group */ @@ -876,10 +567,10 @@ enum nss_status status; /* Store the group in the blacklist for the "+" at the end of - /etc/group */ - blacklist_store_name (&result->gr_name[1], ent); - status = getgrnam_plusgroup (&result->gr_name[1], result, buffer, - buflen, errnop); + /etc/group */ + blacklist_store_name (&result->gr_name[1], ent); + status = getgrnam_plusgroup (&result->gr_name[1], result, ent, + buffer, buflen, errnop); if (status == NSS_STATUS_SUCCESS && result->gr_gid == gid) break; else @@ -890,7 +581,7 @@ { enum nss_status status; - status = getgrgid_plusgroup (gid, result, buffer, buflen, errnop); + status = nss_getgrgid_r (gid, result, buffer, buflen, errnop); if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */ return NSS_STATUS_NOTFOUND; else @@ -905,23 +596,24 @@ _nss_compat_getgrgid_r (gid_t gid, struct group *grp, char *buffer, size_t buflen, int *errnop) { - ent_t ent = {0, 0, NULL, 0, NULL, NULL, {NULL, 0, 0}}; - enum nss_status status; + ent_t ent = {TRUE, NULL, {NULL, 0, 0}}; + enum nss_status result; __libc_lock_lock (lock); - status = internal_setgrent (&ent); + if (ni == NULL) + init_nss_interface (); __libc_lock_unlock (lock); - if (status != NSS_STATUS_SUCCESS) - return status; + result = internal_setgrent (&ent, 0); - status = internal_getgrgid_r (gid, grp, &ent, buffer, buflen, errnop); + if (result == NSS_STATUS_SUCCESS) + result = internal_getgrgid_r (gid, grp, &ent, buffer, buflen, errnop); internal_endgrent (&ent); - return status; + return result; } @@ -983,7 +675,7 @@ buf[0] = '|'; cp = stpcpy (&buf[1], name); - *cp++= '|'; + *cp++ = '|'; *cp = '\0'; return strstr (ent->blacklist.data, buf) != NULL; } --- glibc-2.3.2/nis/nss_compat/compat-initgroups.c 2002-08-26 01:05:19.000000000 -0400 +++ glibc-2.3.2/nis/nss_compat/compat-initgroups.c 2003-08-21 08:37:07.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1998,1999,2000,2001,2002,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk , 1998. @@ -17,27 +17,39 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ +#include +#include #include #include -#include #include -#include +#include +#include #include #include -#include -#include -#include +#include #include #include - -#include "nss-nis.h" -#include "nss-nisplus.h" -#include "nisplus-parser.h" +#include static service_user *ni; -static bool_t use_nisplus; /* default: group_compat: nis */ -static nis_name grptable; /* Name of the group table */ -static size_t grptablelen; +/* Type of the lookup function. */ +static enum nss_status (*nss_initgroups_dyn) (const char *, gid_t, + long int *, long int *, + gid_t **, long int, int *); +static enum nss_status (*nss_setgrent) (int stayopen); +static enum nss_status (*nss_getgrnam_r) (const char *name, + struct group * grp, char *buffer, + size_t buflen, int *errnop); +static enum nss_status (*nss_getgrgid_r) (gid_t gid, struct group * grp, + char *buffer, size_t buflen, + int *errnop); +static enum nss_status (*nss_getgrent_r) (struct group * grp, char *buffer, + size_t buflen, int *errnop); +static enum nss_status (*nss_endgrent) (void); + +/* Protect global state against multiple changers. */ +__libc_lock_define_initialized (static, lock) + /* Get the declaration of the parser function. */ #define ENTNAME grent @@ -49,29 +61,17 @@ #define BLACKLIST_INITIAL_SIZE 512 #define BLACKLIST_INCREMENT 256 struct blacklist_t - { - char *data; - int current; - int size; - }; - -struct response_t { - char *val; - struct response_t *next; + char *data; + int current; + int size; }; struct ent_t - { - bool_t nis; - bool_t nis_first; - char *oldkey; - int oldkeylen; - nis_result *result; - FILE *stream; - struct blacklist_t blacklist; - struct response_t *start; - struct response_t *next; +{ + bool_t files; + FILE *stream; + struct blacklist_t blacklist; }; typedef struct ent_t ent_t; @@ -80,68 +80,26 @@ static void blacklist_store_name (const char *, ent_t *); static int in_blacklist (const char *, int, ent_t *); -static int -saveit (int instatus, char *inkey, int inkeylen, char *inval, - int invallen, char *indata) -{ - ent_t *intern = (ent_t *) indata; - - if (instatus != YP_TRUE) - return instatus; - - if (inkey && inkeylen > 0 && inval && invallen > 0) - { - if (intern->start == NULL) - { - intern->start = malloc (sizeof (struct response_t)); - if (intern->start == NULL) - return YP_FALSE; - intern->next = intern->start; - } - else - { - intern->next->next = malloc (sizeof (struct response_t)); - if (intern->next->next == NULL) - return YP_FALSE; - intern->next = intern->next->next; - } - intern->next->next = NULL; - intern->next->val = malloc (invallen + 1); - if (intern->next->val == NULL) - return YP_FALSE; - strncpy (intern->next->val, inval, invallen); - intern->next->val[invallen] = '\0'; - } - - return 0; -} - -static enum nss_status -_nss_first_init (void) +/* Initialize the NSS interface/functions. The calling function must + hold the lock. */ +static void +init_nss_interface (void) { - if (ni == NULL) - { - __nss_database_lookup ("group_compat", NULL, "nis", &ni); - use_nisplus = (strcmp (ni->name, "nisplus") == 0); - } + __libc_lock_lock (lock); - if (grptable == NULL) + /* Retest. */ + if (ni == NULL + && __nss_database_lookup ("group_compat", NULL, "nis", &ni) >= 0) { - static const char key[] = "group.org_dir."; - const char *local_dir = nis_local_directory (); - size_t len_local_dir = strlen (local_dir); - - grptable = malloc (sizeof (key) + len_local_dir); - if (grptable == NULL) - return NSS_STATUS_TRYAGAIN; - - grptablelen = ((char *) mempcpy (mempcpy (grptable, - key, sizeof (key) - 1), - local_dir, len_local_dir + 1) - - grptable) - 1; + nss_initgroups_dyn = __nss_lookup_function (ni, "initgroups_dyn"); + nss_setgrent = __nss_lookup_function (ni, "setgrent"); + nss_getgrnam_r = __nss_lookup_function (ni, "getgrnam_r"); + nss_getgrgid_r = __nss_lookup_function (ni, "getgrgid_r"); + nss_getgrent_r = __nss_lookup_function (ni, "getgrent_r"); + nss_endgrent = __nss_lookup_function (ni, "endgrent"); } - return NSS_STATUS_SUCCESS; + __libc_lock_unlock (lock); } static enum nss_status @@ -149,26 +107,10 @@ { enum nss_status status = NSS_STATUS_SUCCESS; - ent->nis = ent->nis_first = 0; - - ent->start = NULL; - ent->next = NULL; - - if (_nss_first_init () != NSS_STATUS_SUCCESS) - return NSS_STATUS_UNAVAIL; - - if (ent->oldkey != NULL) - { - free (ent->oldkey); - ent->oldkey = NULL; - ent->oldkeylen = 0; - } + ent->files = TRUE; - if (ent->result != NULL) - { - nis_freeresult (ent->result); - ent->result = NULL; - } + if (ni == NULL) + init_nss_interface (); if (ent->blacklist.data != NULL) { @@ -179,35 +121,33 @@ else ent->blacklist.current = 0; + ent->stream = fopen ("/etc/group", "rm"); + if (ent->stream == NULL) + status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL; + else { - ent->stream = fopen ("/etc/group", "r"); + /* We have to make sure the file is `closed on exec'. */ + int result, flags; - if (ent->stream == NULL) - status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL; - else + result = flags = fcntl (fileno_unlocked (ent->stream), F_GETFD, 0); + if (result >= 0) { - /* We have to make sure the file is `closed on exec'. */ - int result, flags; - - result = flags = fcntl (fileno (ent->stream), F_GETFD, 0); - if (result >= 0) - { - flags |= FD_CLOEXEC; - result = fcntl (fileno (ent->stream), F_SETFD, flags); - } - if (result < 0) - { - /* Something went wrong. Close the stream and return a - failure. */ - fclose (ent->stream); - ent->stream = NULL; - status = NSS_STATUS_UNAVAIL; - } + flags |= FD_CLOEXEC; + result = fcntl (fileno_unlocked (ent->stream), F_SETFD, flags); + } + if (result < 0) + { + /* Something went wrong. Close the stream and return a + failure. */ + fclose (ent->stream); + ent->stream = NULL; + status = NSS_STATUS_UNAVAIL; } + else + /* We take care of locking ourself. */ + __fsetlocking (ent->stream, FSETLOCKING_BYCALLER); } - else - rewind (ent->stream); return status; } @@ -222,21 +162,6 @@ ent->stream = NULL; } - ent->nis = ent->nis_first = 0; - - if (ent->oldkey != NULL) - { - free (ent->oldkey); - ent->oldkey = NULL; - ent->oldkeylen = 0; - } - - if (ent->result != NULL) - { - nis_freeresult (ent->result); - ent->result = NULL; - } - if (ent->blacklist.data != NULL) { ent->blacklist.current = 1; @@ -246,222 +171,145 @@ else ent->blacklist.current = 0; - while (ent->start != NULL) - { - if (ent->start->val != NULL) - free (ent->start->val); - ent->next = ent->start; - ent->start = ent->start->next; - free (ent->next); - } - - return NSS_STATUS_SUCCESS; } -static enum nss_status -getgrent_next_nis (struct group *result, ent_t *ent, char *buffer, - size_t buflen, int *errnop) +/* This function checks, if the user is a member of this group and if + yes, add the group id to the list. */ +static void +check_and_add_group (const char *user, gid_t group, long int *start, + long int *size, gid_t **groupsp, long int limit, + struct group *grp) { - struct parser_data *data = (void *) buffer; - char *domain, *p; - int parse_res; - - if (yp_get_default_domain (&domain) != YPERR_SUCCESS) - { - ent->nis = 0; - return NSS_STATUS_NOTFOUND; - } - - if (ent->start == NULL) - { - struct ypall_callback ypcb; - enum nss_status status; - - ypcb.foreach = saveit; - ypcb.data = (char *) ent; - status = yperr2nss (yp_all (domain, "group.byname", &ypcb)); - ent->next = ent->start; + gid_t *groups = *groupsp; + char **member; - if (ent->start == NULL || status != NSS_STATUS_SUCCESS) - { - ent->nis = 0; - return NSS_STATUS_UNAVAIL; - } - } + /* Don't add main group to list of groups. */ + if (grp->gr_gid == group) + return; + + for (member = grp->gr_mem; *member != NULL; ++member) + if (strcmp (*member, user) == 0) + { + /* Matches user. Insert this group. */ + if (*start == *size) + { + /* Need a bigger buffer. */ + gid_t *newgroups; + long int newsize; + if (limit > 0 && *size == limit) + /* We reached the maximum. */ + return; - do - { - if (ent->next == NULL) - { - ent->nis = 0; - return NSS_STATUS_NOTFOUND; - } - - /* Copy the found data to our buffer... */ - p = strncpy (buffer, ent->next->val, buflen); - while (isspace (*p)) - ++p; + if (limit <= 0) + newsize = 2 * *size; + else + newsize = MIN (limit, 2 * *size); - parse_res = _nss_files_parse_grent (p, result, data, buflen, errnop); - if (parse_res == -1) - { - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } + newgroups = realloc (groups, newsize * sizeof (*groups)); + if (newgroups == NULL) + return; + *groupsp = groups = newgroups; + *size = newsize; + } - ent->next = ent->next->next; + groups[*start] = grp->gr_gid; + *start += 1; - if (parse_res && - in_blacklist (result->gr_name, strlen (result->gr_name), ent)) - parse_res = 0; /* if result->gr_name in blacklist,search next entry */ - } - while (!parse_res); - - return NSS_STATUS_SUCCESS; + break; + } } +/* get the next group from NSS (+ entry). If the NSS module supports + initgroups_dyn, get all entries at once. */ static enum nss_status -getgrent_next_nisplus (struct group *result, ent_t *ent, char *buffer, - size_t buflen, int *errnop) +getgrent_next_nss (ent_t *ent, char *buffer, size_t buflen, const char *user, + gid_t group, long int *start, long int *size, + gid_t **groupsp, long int limit, int *errnop) { - int parse_res; + enum nss_status status; + struct group grpbuf; - do - { - nis_result *save_oldres; - bool_t save_nis_first; + /* if this module does not support getgrent_r and initgroups_dyn, + abort. We cannot find the needed group entries. */ + if (nss_getgrent_r == NULL && nss_initgroups_dyn == NULL) + return NSS_STATUS_UNAVAIL; - if (ent->nis_first) - { - save_oldres = ent->result; - save_nis_first = TRUE; - ent->result = nis_first_entry(grptable); - if (niserr2nss (ent->result->status) != NSS_STATUS_SUCCESS) - { - ent->nis = 0; - return niserr2nss (ent->result->status); - } - ent->nis_first = FALSE; - } - else - { - nis_result *res; + /* Try nss_initgroups_dyn if supported. We also need getgrgid_r. + If this function is not supported, step through the whole group + database with getgrent_r. */ + if (nss_initgroups_dyn && nss_getgrgid_r) + { + long int mystart = 0, mysize = limit; + gid_t *mygroupsp = __alloca (limit * sizeof (gid_t)); + + /* For every gid in the list we get from the NSS module, + get the whole group entry. We need to do this, since we + need the group name to check if it is in the blacklist. + In worst case, this is as twice as slow as stepping with + getgrent_r through the whole group database. But for large + group databases this is faster, since the user can only be + in a limited number of groups. */ + if (nss_initgroups_dyn (user, group, &mystart, &mysize, &mygroupsp, + limit, errnop) == NSS_STATUS_SUCCESS) + { + /* A temporary buffer. We use the normal buffer, until we found + an entry, for which this buffer is to small. In this case, we + overwrite the pointer with one to a bigger buffer. */ + char *tmpbuf = buffer; + size_t tmplen = buflen; + int i; - save_oldres = ent->result; - save_nis_first = FALSE; - res = nis_next_entry(grptable, &ent->result->cookie); - ent->result = res; - if (niserr2nss (ent->result->status) != NSS_STATUS_SUCCESS) - { - ent->nis = 0; - return niserr2nss (ent->result->status); - } - } - parse_res = _nss_nisplus_parse_grent (ent->result, 0, result, - buffer, buflen, errnop); - if (parse_res == -1) - { - nis_freeresult (ent->result); - ent->result = save_oldres; - ent->nis_first = save_nis_first; - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } - else - { - if (!save_nis_first) - nis_freeresult (save_oldres); + for (i = 0; i < mystart; i++) + { + while ((status = nss_getgrgid_r (mygroupsp[i], &grpbuf, tmpbuf, + tmplen, + errnop)) == NSS_STATUS_TRYAGAIN + && *errnop == ERANGE) + if (tmpbuf == buffer) + { + tmplen *= 2; + tmpbuf = __alloca (tmplen); + } + else + tmpbuf = extend_alloca (tmpbuf, tmplen, 2 * tmplen); + + if (!in_blacklist (grpbuf.gr_name, + strlen (grpbuf.gr_name), ent)) + check_and_add_group (user, group, start, size, groupsp, + limit, &grpbuf); + } + return NSS_STATUS_NOTFOUND; } + } - if (parse_res && - in_blacklist (result->gr_name, strlen (result->gr_name), ent)) - parse_res = 0; /* if result->gr_name in blacklist,search next entry */ + /* If we come here, the NSS module does not support initgroups_dyn + and we have to step through the whole list ourself. */ + do + { + if ((status = nss_getgrent_r (&grpbuf, buffer, buflen, errnop)) != + NSS_STATUS_SUCCESS) + return status; } - while (!parse_res); + while (in_blacklist (grpbuf.gr_name, strlen (grpbuf.gr_name), ent)); + check_and_add_group (user, group, start, size, groupsp, limit, &grpbuf); return NSS_STATUS_SUCCESS; } -/* This function handle the +group entrys in /etc/group */ static enum nss_status -getgrnam_plusgroup (const char *name, struct group *result, char *buffer, - size_t buflen, int *errnop) +internal_getgrent_r (ent_t *ent, char *buffer, size_t buflen, const char *user, + gid_t group, long int *start, long int *size, + gid_t **groupsp, long int limit, int *errnop) { struct parser_data *data = (void *) buffer; - int parse_res; - - if (use_nisplus) /* Do the NIS+ query here */ - { - nis_result *res; - char buf[strlen (name) + 24 + grptablelen]; - - sprintf(buf, "[name=%s],%s", name, grptable); - res = nis_list(buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL); - if (niserr2nss (res->status) != NSS_STATUS_SUCCESS) - { - enum nss_status status = niserr2nss (res->status); - - nis_freeresult (res); - return status; - } - parse_res = _nss_nisplus_parse_grent (res, 0, result, buffer, buflen, - errnop); - if (parse_res == -1) - { - nis_freeresult (res); - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } - nis_freeresult (res); - } - else /* Use NIS */ - { - char *domain, *outval, *p; - int outvallen; + struct group grpbuf; - if (yp_get_default_domain (&domain) != YPERR_SUCCESS) - return NSS_STATUS_NOTFOUND; + if (!ent->files) + return getgrent_next_nss (ent, buffer, buflen, user, group, + start, size, groupsp, limit, errnop); - if (yp_match (domain, "group.byname", name, strlen (name), - &outval, &outvallen) != YPERR_SUCCESS) - return NSS_STATUS_NOTFOUND; - - if (buflen < ((size_t) outvallen + 1)) - { - free (outval); - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } - - /* Copy the found data to our buffer... */ - p = strncpy (buffer, outval, buflen); - - /* ... and free the data. */ - free (outval); - while (isspace (*p)) - ++p; - parse_res = _nss_files_parse_grent (p, result, data, buflen, errnop); - if (parse_res == -1) - { - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } - } - - if (parse_res) - /* We found the entry. */ - return NSS_STATUS_SUCCESS; - else - return NSS_STATUS_RETURN; -} - -static enum nss_status -getgrent_next_file (struct group *result, ent_t *ent, - char *buffer, size_t buflen, int *errnop) -{ - struct parser_data *data = (void *) buffer; while (1) { fpos_t pos; @@ -472,8 +320,8 @@ { fgetpos (ent->stream, &pos); buffer[buflen - 1] = '\xff'; - p = fgets (buffer, buflen, ent->stream); - if (p == NULL && feof (ent->stream)) + p = fgets_unlocked (buffer, buflen, ent->stream); + if (p == NULL && feof_unlocked (ent->stream)) return NSS_STATUS_NOTFOUND; if (p == NULL || buffer[buflen - 1] != '\xff') @@ -490,10 +338,10 @@ while (isspace (*p)) ++p; } - while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */ - /* Parse the line. If it is invalid, loop to - get the next line of the file to parse. */ - !(parse_res = _nss_files_parse_grent (p, result, data, buflen, + while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */ + /* Parse the line. If it is invalid, loop to + get the next line of the file to parse. */ + !(parse_res = _nss_files_parse_grent (p, &grpbuf, data, buflen, errnop))); if (parse_res == -1) @@ -504,90 +352,64 @@ return NSS_STATUS_TRYAGAIN; } - if (result->gr_name[0] != '+' && result->gr_name[0] != '-') + if (grpbuf.gr_name[0] != '+' && grpbuf.gr_name[0] != '-') /* This is a real entry. */ break; /* -group */ - if (result->gr_name[0] == '-' && result->gr_name[1] != '\0' - && result->gr_name[1] != '@') + if (grpbuf.gr_name[0] == '-' && grpbuf.gr_name[1] != '\0' + && grpbuf.gr_name[1] != '@') { - blacklist_store_name (&result->gr_name[1], ent); + blacklist_store_name (&grpbuf.gr_name[1], ent); continue; } /* +group */ - if (result->gr_name[0] == '+' && result->gr_name[1] != '\0' - && result->gr_name[1] != '@') + if (grpbuf.gr_name[0] == '+' && grpbuf.gr_name[1] != '\0' + && grpbuf.gr_name[1] != '@') { - enum nss_status status; - - /* Store the group in the blacklist for the "+" at the end of + if (in_blacklist (&grpbuf.gr_name[1], + strlen (&grpbuf.gr_name[1]), ent)) + continue; + /* Store the group in the blacklist for the "+" at the end of /etc/group */ - blacklist_store_name (&result->gr_name[1], ent); - status = getgrnam_plusgroup (&result->gr_name[1], result, buffer, - buflen, errnop); - if (status == NSS_STATUS_SUCCESS) /* We found the entry. */ - break; - else - if (status == NSS_STATUS_RETURN /* We couldn't parse the entry */ - || status == NSS_STATUS_NOTFOUND) /* No group in NIS */ - continue; - else - { - if (status == NSS_STATUS_TRYAGAIN) - { - /* The parser ran out of space. */ - fsetpos (ent->stream, &pos); - *errnop = ERANGE; - } - return status; - } + blacklist_store_name (&grpbuf.gr_name[1], ent); + if (nss_getgrnam_r == NULL) + return NSS_STATUS_UNAVAIL; + else if (nss_getgrnam_r (&grpbuf.gr_name[1], &grpbuf, buffer, + buflen, errnop) != NSS_STATUS_SUCCESS) + continue; + + check_and_add_group (user, group, start, size, groupsp, + limit, &grpbuf); + + return NSS_STATUS_SUCCESS; } /* +:... */ - if (result->gr_name[0] == '+' && result->gr_name[1] == '\0') + if (grpbuf.gr_name[0] == '+' && grpbuf.gr_name[1] == '\0') { - ent->nis = TRUE; - ent->nis_first = TRUE; - - if (use_nisplus) - return getgrent_next_nisplus (result, ent, buffer, buflen, errnop); - else - return getgrent_next_nis (result, ent, buffer, buflen, errnop); + ent->files = FALSE; + return getgrent_next_nss (ent, buffer, buflen, user, group, + start, size, groupsp, limit, errnop); } } + check_and_add_group (user, group, start, size, groupsp, limit, &grpbuf); + return NSS_STATUS_SUCCESS; } -static enum nss_status -internal_getgrent_r (struct group *gr, ent_t *ent, char *buffer, - size_t buflen, int *errnop) -{ - if (ent->nis) - { - if (use_nisplus) - return getgrent_next_nisplus (gr, ent, buffer, buflen, errnop); - else - return getgrent_next_nis (gr, ent, buffer, buflen, errnop); - } - else - return getgrent_next_file (gr, ent, buffer, buflen, errnop); -} - enum nss_status _nss_compat_initgroups_dyn (const char *user, gid_t group, long int *start, long int *size, gid_t **groupsp, long int limit, int *errnop) { - struct group grpbuf, *g; size_t buflen = sysconf (_SC_GETPW_R_SIZE_MAX); char *tmpbuf; enum nss_status status; - ent_t intern = {0, 0, NULL, 0, NULL, NULL, {NULL, 0, 0}}; - gid_t *groups = *groupsp; + ent_t intern = { TRUE, NULL, {NULL, 0, 0} }; status = internal_setgrent (&intern); if (status != NSS_STATUS_SUCCESS) @@ -597,59 +419,14 @@ do { - while ((status = - internal_getgrent_r (&grpbuf, &intern, tmpbuf, buflen, - errnop)) == NSS_STATUS_TRYAGAIN - && *errnop == ERANGE) - { - buflen *= 2; - tmpbuf = __alloca (buflen); - } - - if (status != NSS_STATUS_SUCCESS) - goto done; - - g = &grpbuf; - if (g->gr_gid != group) - { - char **m; - - for (m = g->gr_mem; *m != NULL; ++m) - if (strcmp (*m, user) == 0) - { - /* Matches user. Insert this group. */ - if (*start == *size) - { - /* Need a bigger buffer. */ - gid_t *newgroups; - long int newsize; - - if (limit > 0 && *size == limit) - /* We reached the maximum. */ - goto done; - - if (limit <= 0) - newsize = 2 * *size; - else - newsize = MIN (limit, 2 * *size); - - newgroups = realloc (groups, newsize * sizeof (*groups)); - if (newgroups == NULL) - goto done; - *groupsp = groups = newgroups; - *size = newsize; - } - - groups[*start] = g->gr_gid; - *start += 1; - - break; - } - } + while ((status = internal_getgrent_r (&intern, tmpbuf, buflen, + user, group, start, size, + groupsp, limit, errnop)) + == NSS_STATUS_TRYAGAIN && *errnop == ERANGE) + tmpbuf = extend_alloca (tmpbuf, buflen, 2 * buflen); } while (status == NSS_STATUS_SUCCESS); -done: internal_endgrent (&intern); return NSS_STATUS_SUCCESS; @@ -664,7 +441,7 @@ int namelen = strlen (name); char *tmp; - /* first call, setup cache */ + /* First call, setup cache. */ if (ent->blacklist.size == 0) { ent->blacklist.size = MAX (BLACKLIST_INITIAL_SIZE, 2 * namelen); @@ -714,7 +491,7 @@ buf[0] = '|'; cp = stpcpy (&buf[1], name); - *cp++= '|'; + *cp++ = '|'; *cp = '\0'; return strstr (ent->blacklist.data, buf) != NULL; } --- glibc-2.3.2/nis/nss_compat/compat-pwd.c 2002-08-26 01:07:27.000000000 -0400 +++ glibc-2.3.2/nis/nss_compat/compat-pwd.c 2003-08-21 08:37:07.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996,1997,1998,1999,2001,2002 Free Software Foundation, Inc. +/* Copyright (C) 1996-1999,2001,2002,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk , 1996. @@ -17,27 +17,32 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -#include -#include -#include #include +#include #include #include +#include +#include +#include +#include #include -#include -#include +#include #include -#include -#include +#include #include "netgroup.h" -#include "nss-nisplus.h" -#include "nisplus-parser.h" static service_user *ni; -static bool_t use_nisplus; /* default: passwd_compat: nis */ -static nis_name pwdtable; /* Name of the pwd table */ -static size_t pwdtablelen; +static enum nss_status (*nss_setpwent) (int stayopen); +static enum nss_status (*nss_getpwnam_r) (const char *name, + struct passwd * pwd, char *buffer, + size_t buflen, int *errnop); +static enum nss_status (*nss_getpwuid_r) (uid_t uid, struct passwd * pwd, + char *buffer, size_t buflen, + int *errnop); +static enum nss_status (*nss_getpwent_r) (struct passwd * pwd, char *buffer, + size_t buflen, int *errnop); +static enum nss_status (*nss_endpwent) (void); /* Get the declaration of the parser function. */ #define ENTNAME pwent @@ -49,29 +54,26 @@ #define BLACKLIST_INITIAL_SIZE 512 #define BLACKLIST_INCREMENT 256 struct blacklist_t - { - char *data; - int current; - int size; - }; +{ + char *data; + int current; + int size; +}; struct ent_t - { - bool_t netgroup; - bool_t nis; - bool_t first; - char *oldkey; - int oldkeylen; - nis_result *result; - FILE *stream; - struct blacklist_t blacklist; - struct passwd pwd; - struct __netgrent netgrdata; - }; +{ + bool_t netgroup; + bool_t first; + bool_t files; + FILE *stream; + struct blacklist_t blacklist; + struct passwd pwd; + struct __netgrent netgrdata; +}; typedef struct ent_t ent_t; -static ent_t ext_ent = {0, 0, 0, NULL, 0, NULL, NULL, {NULL, 0, 0}, - {NULL, NULL, 0, 0, NULL, NULL, NULL}}; +static ent_t ext_ent = {0, 0, TRUE, NULL, {NULL, 0, 0}, + {NULL, NULL, 0, 0, NULL, NULL, NULL}}; /* Protect global state against multiple changers. */ __libc_lock_define_initialized (static, lock) @@ -80,6 +82,21 @@ static void blacklist_store_name (const char *, ent_t *); static int in_blacklist (const char *, int, ent_t *); +/* Initialize the NSS interface/functions. The calling function must + hold the lock. */ +static void +init_nss_interface (void) +{ + if (__nss_database_lookup ("passwd_compat", NULL, "nis", &ni) >= 0) + { + nss_setpwent = __nss_lookup_function (ni, "setpwent"); + nss_getpwnam_r = __nss_lookup_function (ni, "getpwnam_r"); + nss_getpwuid_r = __nss_lookup_function (ni, "getpwuid_r"); + nss_getpwent_r = __nss_lookup_function (ni, "getpwent_r"); + nss_endpwent = __nss_lookup_function (ni, "endpwent"); + } +} + static void give_pwd_free (struct passwd *pwd) { @@ -156,8 +173,7 @@ { if (buffer == NULL) dest->pw_dir = strdup (src->pw_dir); - else if (dest->pw_dir && - strlen (dest->pw_dir) >= strlen (src->pw_dir)) + else if (dest->pw_dir && strlen (dest->pw_dir) >= strlen (src->pw_dir)) strcpy (dest->pw_dir, src->pw_dir); else { @@ -186,100 +202,17 @@ } static enum nss_status -insert_passwd_adjunct (char **result, int *len, char *domain, int *errnop) -{ - char *p1, *p2, *result2, *res; - int len2; - size_t namelen; - - /* Check for adjunct style secret passwords. They can be - recognized by a password starting with "##". */ - p1 = strchr (*result, ':'); - if (p1 == NULL || p1[1] != '#' || p1[2] != '#') - return NSS_STATUS_SUCCESS; - p2 = strchr (p1 + 3, ':'); - - namelen = p2 - p1 - 3; - - if (yp_match (domain, "passwd.adjunct.byname", &p1[3], namelen, - &result2, &len2) == YPERR_SUCCESS) - { - /* We found a passwd.adjunct entry. Merge encrypted - password therein into original result. */ - char *encrypted = strchr (result2, ':'); - char *endp; - size_t restlen; - - if (encrypted == NULL || (endp = strchr (++encrypted, ':')) == NULL) - { - /* Invalid format of the entry. This never should happen - unless the data from which the NIS table is generated is - wrong. We simply ignore it. */ - free (result2); - return NSS_STATUS_SUCCESS; - } - - restlen = *len - (p2 - *result); - if ((res = malloc (namelen + restlen + (endp - encrypted) + 2)) == NULL) - { - free (result2); - return NSS_STATUS_TRYAGAIN; - } - - __mempcpy (__mempcpy (__mempcpy (__mempcpy - (res, *result, (p1 - *result)), - ":", 1), - encrypted, endp - encrypted), - p2, restlen + 1); - - free (result2); - free (*result); - *result = res; - *len = strlen (res); - } - return NSS_STATUS_SUCCESS; -} - -static enum nss_status -internal_setpwent (ent_t *ent) +internal_setpwent (ent_t *ent, int stayopen) { enum nss_status status = NSS_STATUS_SUCCESS; - ent->nis = ent->first = ent->netgroup = 0; + ent->first = ent->netgroup = FALSE; + ent->files = TRUE; /* If something was left over free it. */ if (ent->netgroup) __internal_endnetgrent (&ent->netgrdata); - if (ent->oldkey != NULL) - { - free (ent->oldkey); - ent->oldkey = NULL; - ent->oldkeylen = 0; - } - - if (ent->result != NULL) - { - nis_freeresult (ent->result); - ent->result = NULL; - } - - if (pwdtable == NULL) - { - static const char key[] = "passwd.org_dir."; - const char *local_dir = nis_local_directory (); - size_t len_local_dir = strlen (local_dir); - - pwdtable = malloc (sizeof (key) + len_local_dir); - if (pwdtable == NULL) - return NSS_STATUS_TRYAGAIN; - - pwdtablelen = ((char *) mempcpy (mempcpy (pwdtable, - key, sizeof (key) - 1), - local_dir, len_local_dir + 1) - - pwdtable) - 1; - } - if (ent->blacklist.data != NULL) { ent->blacklist.current = 1; @@ -291,7 +224,7 @@ if (ent->stream == NULL) { - ent->stream = fopen ("/etc/passwd", "r"); + ent->stream = fopen ("/etc/passwd", "rm"); if (ent->stream == NULL) status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL; @@ -300,20 +233,23 @@ /* We have to make sure the file is `closed on exec'. */ int result, flags; - result = flags = fcntl (fileno (ent->stream), F_GETFD, 0); + result = flags = fcntl (fileno_unlocked (ent->stream), F_GETFD, 0); if (result >= 0) { flags |= FD_CLOEXEC; - result = fcntl (fileno (ent->stream), F_SETFD, flags); + result = fcntl (fileno_unlocked (ent->stream), F_SETFD, flags); } if (result < 0) { /* Something went wrong. Close the stream and return a - failure. */ + failure. */ fclose (ent->stream); ent->stream = NULL; status = NSS_STATUS_UNAVAIL; } + else + /* We take care of locking ourself. */ + __fsetlocking (ent->stream, FSETLOCKING_BYCALLER); } } else @@ -321,6 +257,9 @@ give_pwd_free (&ent->pwd); + if (status == NSS_STATUS_SUCCESS && nss_setpwent) + return nss_setpwent (stayopen); + return status; } @@ -333,12 +272,9 @@ __libc_lock_lock (lock); if (ni == NULL) - { - __nss_database_lookup ("passwd_compat", NULL, "nis", &ni); - use_nisplus = (strcmp (ni->name, "nisplus") == 0); - } + init_nss_interface (); - result = internal_setpwent (&ext_ent); + result = internal_setpwent (&ext_ent, stayopen); __libc_lock_unlock (lock); @@ -349,6 +285,9 @@ static enum nss_status internal_endpwent (ent_t *ent) { + if (nss_endpwent) + nss_endpwent (); + if (ent->stream != NULL) { fclose (ent->stream); @@ -358,26 +297,13 @@ if (ent->netgroup) __internal_endnetgrent (&ent->netgrdata); - ent->nis = ent->first = ent->netgroup = 0; - - if (ent->oldkey != NULL) - { - free (ent->oldkey); - ent->oldkey = NULL; - ent->oldkeylen = 0; - } - - if (ent->result != NULL) - { - nis_freeresult (ent->result); - ent->result = NULL; - } + ent->first = ent->netgroup = FALSE; if (ent->blacklist.data != NULL) { ent->blacklist.current = 1; ent->blacklist.data[0] = '|'; - ent->blacklist.data[1] = '\0'; + ent->blacklist.data[1] = '\0'; } else ent->blacklist.current = 0; @@ -401,19 +327,25 @@ return result; } + static enum nss_status -getpwent_next_nis_netgr (const char *name, struct passwd *result, ent_t *ent, - char *group, char *buffer, size_t buflen, int *errnop) +getpwent_next_nss_netgr (const char *name, struct passwd *result, ent_t *ent, + char *group, char *buffer, size_t buflen, + int *errnop) { - struct parser_data *data = (void *) buffer; - char *ypdomain, *host, *user, *domain, *outval, *p, *p2; - int status, outvallen; + char *curdomain, *host, *user, *domain, *p2; + int status; size_t p2len; - if (yp_get_default_domain (&ypdomain) != YPERR_SUCCESS) + /* Leave function if NSS module does not support getpwnam_r, + we need this function here. */ + if (!nss_getpwnam_r) + return NSS_STATUS_UNAVAIL; + + if (yp_get_default_domain (&curdomain) != YPERR_SUCCESS) { - ent->netgroup = 0; - ent->first = 0; + ent->netgroup = FALSE; + ent->first = FALSE; give_pwd_free (&ent->pwd); return NSS_STATUS_UNAVAIL; } @@ -428,7 +360,6 @@ while (1) { char *saved_cursor; - int parse_res; saved_cursor = ent->netgrdata.cursor; status = __internal_getnetgrent_r (&host, &user, &domain, @@ -445,7 +376,7 @@ if (user == NULL || user[0] == '-') continue; - if (domain != NULL && strcmp (ypdomain, domain) != 0) + if (domain != NULL && strcmp (curdomain, domain) != 0) continue; /* If name != NULL, we are called from getpwnam. */ @@ -453,148 +384,23 @@ if (strcmp (user, name) != 0) continue; - if (yp_match (ypdomain, "passwd.byname", user, - strlen (user), &outval, &outvallen) - != YPERR_SUCCESS) - continue; - - if (insert_passwd_adjunct (&outval, &outvallen, ypdomain, errnop) - != NSS_STATUS_SUCCESS) - { - free (outval); - return NSS_STATUS_TRYAGAIN; - } - p2len = pwd_need_buflen (&ent->pwd); if (p2len > buflen) { - free (outval); *errnop = ERANGE; return NSS_STATUS_TRYAGAIN; } p2 = buffer + (buflen - p2len); buflen -= p2len; - if (buflen < ((size_t) outvallen + 1)) - { - free (outval); - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } - p = strncpy (buffer, outval, buflen); - - while (isspace (*p)) - p++; - free (outval); - parse_res = _nss_files_parse_pwent (p, result, data, buflen, errnop); - if (parse_res == -1) - { - ent->netgrdata.cursor = saved_cursor; - return NSS_STATUS_TRYAGAIN; - } - - if (parse_res && !in_blacklist (result->pw_name, - strlen (result->pw_name), ent)) - { - /* Store the User in the blacklist for the "+" at the end of - /etc/passwd */ - blacklist_store_name (result->pw_name, ent); - copy_pwd_changes (result, &ent->pwd, p2, p2len); - break; - } - } - - return NSS_STATUS_SUCCESS; -} - -static enum nss_status -getpwent_next_nisplus_netgr (const char *name, struct passwd *result, - ent_t *ent, char *group, char *buffer, - size_t buflen, int *errnop) -{ - char *ypdomain, *host, *user, *domain, *p2; - int status, parse_res; - size_t p2len; - nis_result *nisres; - - /* Maybe we should use domainname here ? We need the current - domainname for the domain field in netgroups */ - if (yp_get_default_domain (&ypdomain) != YPERR_SUCCESS) - { - ent->netgroup = 0; - ent->first = 0; - give_pwd_free (&ent->pwd); - return NSS_STATUS_UNAVAIL; - } - - if (ent->first == TRUE) - { - bzero (&ent->netgrdata, sizeof (struct __netgrent)); - __internal_setnetgrent (group, &ent->netgrdata); - ent->first = FALSE; - } - - while (1) - { - char *saved_cursor; - - saved_cursor = ent->netgrdata.cursor; - status = __internal_getnetgrent_r (&host, &user, &domain, - &ent->netgrdata, buffer, buflen, - errnop); - if (status != 1) - { - __internal_endnetgrent (&ent->netgrdata); - ent->netgroup = 0; - give_pwd_free (&ent->pwd); - return NSS_STATUS_RETURN; - } - - if (user == NULL || user[0] == '-') + if (nss_getpwnam_r (user, result, buffer, buflen, errnop) != + NSS_STATUS_SUCCESS) continue; - if (domain != NULL && strcmp (ypdomain, domain) != 0) - continue; - - /* If name != NULL, we are called from getpwnam */ - if (name != NULL) - if (strcmp (user, name) != 0) - continue; - - p2len = pwd_need_buflen (&ent->pwd); - if (p2len > buflen) + if (!in_blacklist (result->pw_name, strlen (result->pw_name), ent)) { - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } - p2 = buffer + (buflen - p2len); - buflen -= p2len; - { - char buf[strlen (user) + 30 + pwdtablelen]; - sprintf(buf, "[name=%s],%s", user, pwdtable); - nisres = nis_list(buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL); - } - if (niserr2nss (nisres->status) != NSS_STATUS_SUCCESS) - { - nis_freeresult (nisres); - continue; - } - parse_res = _nss_nisplus_parse_pwent (nisres, result, buffer, - buflen, errnop); - if (parse_res == -1) - { - nis_freeresult (nisres); - ent->netgrdata.cursor = saved_cursor; - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } - nis_freeresult (nisres); - - if (parse_res && !in_blacklist (result->pw_name, - strlen (result->pw_name), ent)) - { - /* Store the User in the blacklist for the "+" at the end of - /etc/passwd */ + /* Store the User in the blacklist for possible the "+" at the + end of /etc/passwd */ blacklist_store_name (result->pw_name, ent); copy_pwd_changes (result, &ent->pwd, p2, p2len); break; @@ -604,100 +410,18 @@ return NSS_STATUS_SUCCESS; } -/* get the next user from NIS+ (+ entry) */ +/* get the next user from NSS (+ entry) */ static enum nss_status -getpwent_next_nisplus (struct passwd *result, ent_t *ent, char *buffer, - size_t buflen, int *errnop) -{ - int parse_res; - size_t p2len; - char *p2; - - p2len = pwd_need_buflen (&ent->pwd); - if (p2len > buflen) - { - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } - p2 = buffer + (buflen - p2len); - buflen -= p2len; - do - { - bool_t saved_first; - nis_result *saved_res; - - if (ent->first) - { - saved_first = TRUE; - saved_res = ent->result; - - ent->result = nis_first_entry (pwdtable); - if (niserr2nss (ent->result->status) != NSS_STATUS_SUCCESS) - { - ent->nis = 0; - give_pwd_free (&ent->pwd); - return niserr2nss (ent->result->status); - } - ent->first = FALSE; - } - else - { - nis_result *res; - - res = nis_next_entry (pwdtable, &ent->result->cookie); - saved_res = ent->result; - saved_first = FALSE; - ent->result = res; - if (niserr2nss (ent->result->status) != NSS_STATUS_SUCCESS) - { - ent->nis = 0; - nis_freeresult (saved_res); - give_pwd_free (&ent->pwd); - return niserr2nss (ent->result->status); - } - } - parse_res = _nss_nisplus_parse_pwent (ent->result, result, buffer, - buflen, errnop); - if (parse_res == -1) - { - nis_freeresult (ent->result); - ent->result = saved_res; - ent->first = saved_first; - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } - else - { - if (!saved_first) - nis_freeresult (saved_res); - } - - if (parse_res && - in_blacklist (result->pw_name, strlen (result->pw_name), ent)) - parse_res = 0; /* if result->pw_name in blacklist,search next entry */ - } - while (!parse_res); - - copy_pwd_changes (result, &ent->pwd, p2, p2len); - - return NSS_STATUS_SUCCESS; -} - -static enum nss_status -getpwent_next_nis (struct passwd *result, ent_t *ent, char *buffer, +getpwent_next_nss (struct passwd *result, ent_t *ent, char *buffer, size_t buflen, int *errnop) { - struct parser_data *data = (void *) buffer; - char *domain, *outkey, *outval, *p, *p2; - int outkeylen, outvallen, parse_res; + enum nss_status status; + char *p2; size_t p2len; - if (yp_get_default_domain (&domain) != YPERR_SUCCESS) - { - ent->nis = 0; - give_pwd_free (&ent->pwd); - return NSS_STATUS_UNAVAIL; - } + /* Return if NSS module does not support getpwent_r. */ + if (!nss_getpwent_r) + return NSS_STATUS_UNAVAIL; p2len = pwd_need_buflen (&ent->pwd); if (p2len > buflen) @@ -707,103 +431,17 @@ } p2 = buffer + (buflen - p2len); buflen -= p2len; - do - { - bool_t saved_first; - char *saved_oldkey; - int saved_oldlen; - - if (ent->first) - { - if (yp_first (domain, "passwd.byname", &outkey, &outkeylen, - &outval, &outvallen) != YPERR_SUCCESS) - { - ent->nis = 0; - give_pwd_free (&ent->pwd); - return NSS_STATUS_UNAVAIL; - } - - if (insert_passwd_adjunct (&outval, &outvallen, domain, errnop) != - NSS_STATUS_SUCCESS) - { - free (outval); - return NSS_STATUS_TRYAGAIN; - } - - if (buflen < ((size_t) outvallen + 1)) - { - free (outval); - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } - - saved_first = TRUE; - saved_oldkey = ent->oldkey; - saved_oldlen = ent->oldkeylen; - ent->oldkey = outkey; - ent->oldkeylen = outkeylen; - ent->first = FALSE; - } - else - { - if (yp_next (domain, "passwd.byname", ent->oldkey, ent->oldkeylen, - &outkey, &outkeylen, &outval, &outvallen) - != YPERR_SUCCESS) - { - ent->nis = 0; - give_pwd_free (&ent->pwd); - return NSS_STATUS_NOTFOUND; - } - - if (insert_passwd_adjunct (&outval, &outvallen, domain, errnop) - != NSS_STATUS_SUCCESS) - { - free (outval); - return NSS_STATUS_TRYAGAIN; - } - if (buflen < ((size_t) outvallen + 1)) - { - free (outval); - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } + if (ent->first) + ent->first = FALSE; - saved_first = FALSE; - saved_oldkey = ent->oldkey; - saved_oldlen = ent->oldkeylen; - ent->oldkey = outkey; - ent->oldkeylen = outkeylen; - } - - /* Copy the found data to our buffer */ - p = strncpy (buffer, outval, buflen); - - /* ...and free the data. */ - free (outval); - - while (isspace (*p)) - ++p; - parse_res = _nss_files_parse_pwent (p, result, data, buflen, errnop); - if (parse_res == -1) - { - free (ent->oldkey); - ent->oldkey = saved_oldkey; - ent->oldkeylen = saved_oldlen; - ent->first = saved_first; - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } - else - { - if (!saved_first) - free (saved_oldkey); - } - if (parse_res - && in_blacklist (result->pw_name, strlen (result->pw_name), ent)) - parse_res = 0; + do + { + if ((status = nss_getpwent_r (result, buffer, buflen, errnop)) != + NSS_STATUS_SUCCESS) + return status; } - while (!parse_res); + while (in_blacklist (result->pw_name, strlen (result->pw_name), ent)); copy_pwd_changes (result, &ent->pwd, p2, p2len); @@ -815,12 +453,13 @@ getpwnam_plususer (const char *name, struct passwd *result, ent_t *ent, char *buffer, size_t buflen, int *errnop) { - struct parser_data *data = (void *) buffer; struct passwd pwd; - int parse_res; char *p; size_t plen; + if (!nss_getpwnam_r) + return NSS_STATUS_UNAVAIL; + memset (&pwd, '\0', sizeof (struct passwd)); copy_pwd_changes (&pwd, result, NULL, 0); @@ -834,88 +473,17 @@ p = buffer + (buflen - plen); buflen -= plen; - if (use_nisplus) /* Do the NIS+ query here */ - { - nis_result *res; - char buf[strlen (name) + 24 + pwdtablelen]; - - sprintf(buf, "[name=%s],%s", name, pwdtable); - res = nis_list(buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL); - if (niserr2nss (res->status) != NSS_STATUS_SUCCESS) - { - enum nss_status status = niserr2nss (res->status); - - nis_freeresult (res); - return status; - } - parse_res = _nss_nisplus_parse_pwent (res, result, buffer, - buflen, errnop); - - nis_freeresult (res); - - if (parse_res == -1) - { - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } - - if (in_blacklist (result->pw_name, strlen (result->pw_name), ent)) - return NSS_STATUS_NOTFOUND; - } - else /* Use NIS */ - { - char *domain, *outval, *ptr; - int outvallen; - - if (yp_get_default_domain (&domain) != YPERR_SUCCESS) - return NSS_STATUS_NOTFOUND; - - if (yp_match (domain, "passwd.byname", name, strlen (name), - &outval, &outvallen) != YPERR_SUCCESS) - return NSS_STATUS_NOTFOUND; - - if (insert_passwd_adjunct (&outval, &outvallen, domain, errnop) - != NSS_STATUS_SUCCESS) - { - free (outval); - return NSS_STATUS_TRYAGAIN; - } - - if (buflen < ((size_t) outvallen + 1)) - { - free (outval); - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } - - ptr = strncpy (buffer, outval, buflen); - free (outval); - - while (isspace (*ptr)) - ptr++; - - parse_res = _nss_files_parse_pwent (ptr, result, data, buflen, errnop); - if (parse_res == -1) - return NSS_STATUS_TRYAGAIN; + if (nss_getpwnam_r (name, result, buffer, buflen, errnop) != + NSS_STATUS_SUCCESS) + return NSS_STATUS_NOTFOUND; - if (in_blacklist (result->pw_name, strlen (result->pw_name), ent)) - return NSS_STATUS_NOTFOUND; - } + if (in_blacklist (result->pw_name, strlen (result->pw_name), ent)) + return NSS_STATUS_NOTFOUND; - if (parse_res > 0) - { - copy_pwd_changes (result, &pwd, p, plen); - give_pwd_free (&pwd); - /* We found the entry. */ - return NSS_STATUS_SUCCESS; - } - else - { - /* Give buffer the old len back */ - buflen += plen; - give_pwd_free (&pwd); - } - return NSS_STATUS_RETURN; + copy_pwd_changes (result, &pwd, p, plen); + give_pwd_free (&pwd); + /* We found the entry. */ + return NSS_STATUS_SUCCESS; } static enum nss_status @@ -933,8 +501,8 @@ { fgetpos (ent->stream, &pos); buffer[buflen - 1] = '\xff'; - p = fgets (buffer, buflen, ent->stream); - if (p == NULL && feof (ent->stream)) + p = fgets_unlocked (buffer, buflen, ent->stream); + if (p == NULL && feof_unlocked (ent->stream)) return NSS_STATUS_NOTFOUND; if (p == NULL || buffer[buflen - 1] != '\xff') @@ -951,9 +519,9 @@ while (isspace (*p)) ++p; } - while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */ - /* Parse the line. If it is invalid, loop to - get the next line of the file to parse. */ + while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */ + /* Parse the line. If it is invalid, loop to + get the next line of the file to parse. */ !(parse_res = _nss_files_parse_pwent (p, result, data, buflen, errnop))); @@ -1000,14 +568,9 @@ ent->first = TRUE; copy_pwd_changes (&ent->pwd, result, NULL, 0); - if (use_nisplus) - status = getpwent_next_nisplus_netgr (NULL, result, ent, - &result->pw_name[2], - buffer, buflen, errnop); - else - status = getpwent_next_nis_netgr (NULL, result, ent, - &result->pw_name[2], - buffer, buflen, errnop); + status = getpwent_next_nss_netgr (NULL, result, ent, + &result->pw_name[2], + buffer, buflen, errnop); if (status == NSS_STATUS_RETURN) continue; else @@ -1026,45 +589,42 @@ if (result->pw_name[0] == '+' && result->pw_name[1] != '\0' && result->pw_name[1] != '@') { - char buf[strlen (result->pw_name)]; + size_t len = strlen (result->pw_name); + char buf[len]; enum nss_status status; /* Store the User in the blacklist for the "+" at the end of /etc/passwd */ - strcpy (buf, &result->pw_name[1]); + memcpy (buf, &result->pw_name[1], len); status = getpwnam_plususer (&result->pw_name[1], result, ent, buffer, buflen, errnop); blacklist_store_name (buf, ent); - if (status == NSS_STATUS_SUCCESS) /* We found the entry. */ + if (status == NSS_STATUS_SUCCESS) /* We found the entry. */ break; + else if (status == NSS_STATUS_RETURN /* We couldn't parse the entry */ + || status == NSS_STATUS_NOTFOUND) /* entry doesn't exist */ + continue; else - if (status == NSS_STATUS_RETURN /* We couldn't parse the entry */ - || status == NSS_STATUS_NOTFOUND) /* entry doesn't exist */ - continue; - else - { - if (status == NSS_STATUS_TRYAGAIN) - { - /* The parser ran out of space */ - fsetpos (ent->stream, &pos); - *errnop = ERANGE; - } - return status; - } + { + if (status == NSS_STATUS_TRYAGAIN) + { + /* The parser ran out of space */ + fsetpos (ent->stream, &pos); + *errnop = ERANGE; + } + return status; + } } /* +:... */ if (result->pw_name[0] == '+' && result->pw_name[1] == '\0') { - ent->nis = TRUE; + ent->files = FALSE; ent->first = TRUE; copy_pwd_changes (&ent->pwd, result, NULL, 0); - if (use_nisplus) - return getpwent_next_nisplus (result, ent, buffer, buflen, errnop); - else - return getpwent_next_nis (result, ent, buffer, buflen, errnop); + return getpwent_next_nss (result, ent, buffer, buflen, errnop); } } @@ -1082,53 +642,41 @@ /* We are searching members in a netgroup */ /* Since this is not the first call, we don't need the group name */ - if (use_nisplus) - status = getpwent_next_nisplus_netgr (NULL, pw, ent, NULL, buffer, - buflen, errnop); - else - status = getpwent_next_nis_netgr (NULL, pw, ent, NULL, buffer, buflen, - errnop); + status = getpwent_next_nss_netgr (NULL, pw, ent, NULL, buffer, buflen, + errnop); if (status == NSS_STATUS_RETURN) return getpwent_next_file (pw, ent, buffer, buflen, errnop); else return status; } + else if (ent->files) + return getpwent_next_file (pw, ent, buffer, buflen, errnop); else - if (ent->nis) - { - if (use_nisplus) - return getpwent_next_nisplus (pw, ent, buffer, buflen, errnop); - else - return getpwent_next_nis (pw, ent, buffer, buflen, errnop); - } - else - return getpwent_next_file (pw, ent, buffer, buflen, errnop); + return getpwent_next_nss (pw, ent, buffer, buflen, errnop); + } enum nss_status _nss_compat_getpwent_r (struct passwd *pwd, char *buffer, size_t buflen, int *errnop) { - enum nss_status status = NSS_STATUS_SUCCESS; + enum nss_status result = NSS_STATUS_SUCCESS; __libc_lock_lock (lock); + /* Be prepared that the setpwent function was not called before. */ if (ni == NULL) - { - __nss_database_lookup ("passwd_compat", NULL, "nis", &ni); - use_nisplus = (strcmp (ni->name, "nisplus") == 0); - } + init_nss_interface (); - /* Be prepared that the setpwent function was not called before. */ if (ext_ent.stream == NULL) - status = internal_setpwent (&ext_ent); + result = internal_setpwent (&ext_ent, 1); - if (status == NSS_STATUS_SUCCESS) - status = internal_getpwent_r (pwd, &ext_ent, buffer, buflen, errnop); + if (result == NSS_STATUS_SUCCESS) + result = internal_getpwent_r (pwd, &ext_ent, buffer, buflen, errnop); __libc_lock_unlock (lock); - return status; + return result; } /* Searches in /etc/passwd and the NIS/NIS+ map for a special user */ @@ -1148,8 +696,8 @@ { fgetpos (ent->stream, &pos); buffer[buflen - 1] = '\xff'; - p = fgets (buffer, buflen, ent->stream); - if (p == NULL && feof (ent->stream)) + p = fgets_unlocked (buffer, buflen, ent->stream); + if (p == NULL && feof_unlocked (ent->stream)) { return NSS_STATUS_NOTFOUND; } @@ -1167,9 +715,9 @@ while (isspace (*p)) ++p; } - while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */ + while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */ /* Parse the line. If it is invalid, loop to - get the next line of the file to parse. */ + get the next line of the file to parse. */ !(parse_res = _nss_files_parse_pwent (p, result, data, buflen, errnop))); @@ -1210,8 +758,8 @@ status = getpwnam_plususer (name, result, ent, buffer, buflen, errnop); - if (status == NSS_STATUS_RETURN) - continue; + if (status == NSS_STATUS_RETURN) + continue; return status; } @@ -1253,13 +801,12 @@ status = getpwnam_plususer (name, result, ent, buffer, buflen, errnop); - if (status == NSS_STATUS_SUCCESS) /* We found the entry. */ + if (status == NSS_STATUS_SUCCESS) /* We found the entry. */ break; + else if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */ + return NSS_STATUS_NOTFOUND; else - if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */ - return NSS_STATUS_NOTFOUND; - else - return status; + return status; } } return NSS_STATUS_SUCCESS; @@ -1269,9 +816,9 @@ _nss_compat_getpwnam_r (const char *name, struct passwd *pwd, char *buffer, size_t buflen, int *errnop) { - ent_t ent = {0, 0, 0, NULL, 0, NULL, NULL, {NULL, 0, 0}, - {NULL, NULL, 0, 0, NULL, NULL, NULL}}; - enum nss_status status; + enum nss_status result; + ent_t ent = {0, 0, TRUE, NULL, {NULL, 0, 0}, + {NULL, NULL, 0, 0, NULL, NULL, NULL}}; if (name[0] == '-' || name[0] == '+') return NSS_STATUS_NOTFOUND; @@ -1279,35 +826,32 @@ __libc_lock_lock (lock); if (ni == NULL) - { - __nss_database_lookup ("passwd_compat", NULL, "nis", &ni); - use_nisplus = (strcmp (ni->name, "nisplus") == 0); - } + init_nss_interface (); __libc_lock_unlock (lock); - status = internal_setpwent (&ent); - if (status != NSS_STATUS_SUCCESS) - return status; + result = internal_setpwent (&ent, 0); - status = internal_getpwnam_r (name, pwd, &ent, buffer, buflen, errnop); + if (result == NSS_STATUS_SUCCESS) + result = internal_getpwnam_r (name, pwd, &ent, buffer, buflen, errnop); internal_endpwent (&ent); - return status; + return result; } /* This function handle the + entry in /etc/passwd for getpwuid */ static enum nss_status getpwuid_plususer (uid_t uid, struct passwd *result, char *buffer, - size_t buflen, int *errnop) + size_t buflen, int *errnop) { - struct parser_data *data = (void *) buffer; struct passwd pwd; - int parse_res; char *p; size_t plen; + if (!nss_getpwuid_r) + return NSS_STATUS_UNAVAIL; + memset (&pwd, '\0', sizeof (struct passwd)); copy_pwd_changes (&pwd, result, NULL, 0); @@ -1321,70 +865,8 @@ p = buffer + (buflen - plen); buflen -= plen; - if (use_nisplus) /* Do the NIS+ query here */ - { - nis_result *res; - char buf[1024 + pwdtablelen]; - - snprintf (buf, sizeof (buf), "[uid=%lu],%s", (unsigned long int) uid, - pwdtable); - res = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL); - if (niserr2nss (res->status) != NSS_STATUS_SUCCESS) - { - enum nss_status status = niserr2nss (res->status); - - nis_freeresult (res); - return status; - } - if ((parse_res = _nss_nisplus_parse_pwent (res, result, buffer, - buflen, errnop)) == -1) - { - nis_freeresult (res); - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } - nis_freeresult (res); - } - else /* Use NIS */ - { - char buf[1024]; - char *domain, *outval, *ptr; - int outvallen; - - if (yp_get_default_domain (&domain) != YPERR_SUCCESS) - return NSS_STATUS_NOTFOUND; - - sprintf (buf, "%lu", (unsigned long int) uid); - if (yp_match (domain, "passwd.byuid", buf, strlen (buf), - &outval, &outvallen) - != YPERR_SUCCESS) - return NSS_STATUS_NOTFOUND; - - if (insert_passwd_adjunct (&outval, &outvallen, domain, errnop) - != NSS_STATUS_SUCCESS) - { - free (outval); - return NSS_STATUS_TRYAGAIN; - } - - if (buflen < ((size_t) outvallen + 1)) - { - free (outval); - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } - - ptr = strncpy (buffer, outval, buflen); - free (outval); - - while (isspace (*ptr)) - ptr++; - parse_res = _nss_files_parse_pwent (ptr, result, data, buflen, errnop); - if (parse_res == -1) - return NSS_STATUS_TRYAGAIN; - } - - if (parse_res > 0) + if (nss_getpwuid_r (uid, result, buffer, buflen, errnop) == + NSS_STATUS_SUCCESS) { copy_pwd_changes (result, &pwd, p, plen); give_pwd_free (&pwd); @@ -1400,10 +882,10 @@ return NSS_STATUS_RETURN; } -/* Searches in /etc/passwd and the NIS/NIS+ map for a special user id */ +/* Searches in /etc/passwd and the NSS subsystem for a special user id */ static enum nss_status internal_getpwuid_r (uid_t uid, struct passwd *result, ent_t *ent, - char *buffer, size_t buflen, int *errnop) + char *buffer, size_t buflen, int *errnop) { struct parser_data *data = (void *) buffer; @@ -1414,75 +896,79 @@ int parse_res; do - { - fgetpos (ent->stream, &pos); - buffer[buflen - 1] = '\xff'; - p = fgets (buffer, buflen, ent->stream); - if (p == NULL && feof (ent->stream)) + { + fgetpos (ent->stream, &pos); + buffer[buflen - 1] = '\xff'; + p = fgets_unlocked (buffer, buflen, ent->stream); + if (p == NULL && feof_unlocked (ent->stream)) return NSS_STATUS_NOTFOUND; - if (p == NULL || buffer[buflen - 1] != '\xff') - { - fsetpos (ent->stream, &pos); - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } - - /* Terminate the line for any case. */ - buffer[buflen - 1] = '\0'; - - /* Skip leading blanks. */ - while (isspace (*p)) - ++p; - } - while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */ - /* Parse the line. If it is invalid, loop to - get the next line of the file to parse. */ - !(parse_res = _nss_files_parse_pwent (p, result, data, buflen, - errnop))); + if (p == NULL || buffer[buflen - 1] != '\xff') + { + fsetpos (ent->stream, &pos); + *errnop = ERANGE; + return NSS_STATUS_TRYAGAIN; + } + + /* Terminate the line for any case. */ + buffer[buflen - 1] = '\0'; + + /* Skip leading blanks. */ + while (isspace (*p)) + ++p; + } + while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */ + /* Parse the line. If it is invalid, loop to + get the next line of the file to parse. */ + !(parse_res = _nss_files_parse_pwent (p, result, data, buflen, + errnop))); if (parse_res == -1) - { - /* The parser ran out of space. */ - fsetpos (ent->stream, &pos); - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } + { + /* The parser ran out of space. */ + fsetpos (ent->stream, &pos); + *errnop = ERANGE; + return NSS_STATUS_TRYAGAIN; + } /* This is a real entry. */ if (result->pw_name[0] != '+' && result->pw_name[0] != '-') - { - if (result->pw_uid == uid) - return NSS_STATUS_SUCCESS; - else - continue; - } + { + if (result->pw_uid == uid) + return NSS_STATUS_SUCCESS; + else + continue; + } /* -@netgroup */ if (result->pw_name[0] == '-' && result->pw_name[1] == '@' - && result->pw_name[2] != '\0') - { - char buf[strlen (result->pw_name)]; + && result->pw_name[2] != '\0') + { + /* -1, because we remove first two character of pw_name. */ + size_t len = strlen (result->pw_name) - 1; + char buf[len]; enum nss_status status; - strcpy (buf, &result->pw_name[2]); + memcpy (buf, &result->pw_name[2], len); status = getpwuid_plususer (uid, result, buffer, buflen, errnop); if (status == NSS_STATUS_SUCCESS && innetgr (buf, NULL, result->pw_name, NULL)) return NSS_STATUS_NOTFOUND; - continue; - } + continue; + } /* +@netgroup */ if (result->pw_name[0] == '+' && result->pw_name[1] == '@' - && result->pw_name[2] != '\0') - { - char buf[strlen (result->pw_name)]; + && result->pw_name[2] != '\0') + { + /* -1, because we remove first two characters of pw_name. */ + size_t len = strlen (result->pw_name) - 1; + char buf[len]; enum nss_status status; - strcpy (buf, &result->pw_name[2]); + memcpy (buf, &result->pw_name[2], len); status = getpwuid_plususer (uid, result, buffer, buflen, errnop); @@ -1494,39 +980,40 @@ if (innetgr (buf, NULL, result->pw_name, NULL)) return NSS_STATUS_SUCCESS; } + else if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */ + return NSS_STATUS_NOTFOUND; else - if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */ - return NSS_STATUS_NOTFOUND; - else - return status; + return status; - continue; + continue; } /* -user */ if (result->pw_name[0] == '-' && result->pw_name[1] != '\0' - && result->pw_name[1] != '@') - { - char buf[strlen (result->pw_name)]; + && result->pw_name[1] != '@') + { + size_t len = strlen (result->pw_name); + char buf[len]; enum nss_status status; - strcpy (buf, &result->pw_name[1]); + memcpy (buf, &result->pw_name[1], len); status = getpwuid_plususer (uid, result, buffer, buflen, errnop); if (status == NSS_STATUS_SUCCESS && innetgr (buf, NULL, result->pw_name, NULL)) return NSS_STATUS_NOTFOUND; - continue; - } + continue; + } /* +user */ if (result->pw_name[0] == '+' && result->pw_name[1] != '\0' - && result->pw_name[1] != '@') - { - char buf[strlen (result->pw_name)]; + && result->pw_name[1] != '@') + { + size_t len = strlen (result->pw_name); + char buf[len]; enum nss_status status; - strcpy (buf, &result->pw_name[1]); + memcpy (buf, &result->pw_name[1], len); status = getpwuid_plususer (uid, result, buffer, buflen, errnop); @@ -1538,60 +1025,54 @@ if (strcmp (buf, result->pw_name) == 0) return NSS_STATUS_SUCCESS; } + else if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */ + return NSS_STATUS_NOTFOUND; else - if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */ - return NSS_STATUS_NOTFOUND; - else - return status; + return status; - continue; - } + continue; + } /* +:... */ if (result->pw_name[0] == '+' && result->pw_name[1] == '\0') - { - enum nss_status status; + { + enum nss_status status; - status = getpwuid_plususer (uid, result, buffer, buflen, errnop); - if (status == NSS_STATUS_SUCCESS) /* We found the entry. */ - break; - else - if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */ - return NSS_STATUS_NOTFOUND; - else - return status; - } + status = getpwuid_plususer (uid, result, buffer, buflen, errnop); + if (status == NSS_STATUS_SUCCESS) /* We found the entry. */ + break; + else if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */ + return NSS_STATUS_NOTFOUND; + else + return status; + } } return NSS_STATUS_SUCCESS; } enum nss_status _nss_compat_getpwuid_r (uid_t uid, struct passwd *pwd, - char *buffer, size_t buflen, int *errnop) + char *buffer, size_t buflen, int *errnop) { - ent_t ent = {0, 0, 0, NULL, 0, NULL, NULL, {NULL, 0, 0}, + enum nss_status result; + ent_t ent = {0, 0, TRUE, NULL, {NULL, 0, 0}, {NULL, NULL, 0, 0, NULL, NULL, NULL}}; - enum nss_status status; __libc_lock_lock (lock); if (ni == NULL) - { - __nss_database_lookup ("passwd_compat", NULL, "nis", &ni); - use_nisplus = (strcmp (ni->name, "nisplus") == 0); - } + init_nss_interface (); __libc_lock_unlock (lock); - status = internal_setpwent (&ent); - if (status != NSS_STATUS_SUCCESS) - return status; + result = internal_setpwent (&ent, 0); - status = internal_getpwuid_r (uid, pwd, &ent, buffer, buflen, errnop); + if (result == NSS_STATUS_SUCCESS) + result = internal_getpwuid_r (uid, pwd, &ent, buffer, buflen, errnop); internal_endpwent (&ent); - return status; + return result; } @@ -1653,7 +1134,7 @@ buf[0] = '|'; cp = stpcpy (&buf[1], name); - *cp++= '|'; + *cp++ = '|'; *cp = '\0'; return strstr (ent->blacklist.data, buf) != NULL; } --- glibc-2.3.2/nis/nss_compat/compat-spwd.c 2002-08-26 01:08:20.000000000 -0400 +++ glibc-2.3.2/nis/nss_compat/compat-spwd.c 2003-09-19 22:37:05.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996,1997,1998,1999,2001,2002 Free Software Foundation, Inc. +/* Copyright (C) 1996-1999,2001,2002,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk , 1996. @@ -17,27 +17,29 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -#include -#include #include +#include #include #include +#include +#include #include +#include #include -#include -#include +#include #include -#include -#include +#include #include "netgroup.h" -#include "nss-nisplus.h" -#include "nisplus-parser.h" static service_user *ni; -static bool_t use_nisplus; /* default: passwd_compat: nis */ -static nis_name pwdtable; /* Name of the password table */ -static size_t pwdtablelen; +static enum nss_status (*nss_setspent) (int stayopen); +static enum nss_status (*nss_getspnam_r) (const char *name, struct spwd * sp, + char *buffer, size_t buflen, + int *errnop); +static enum nss_status (*nss_getspent_r) (struct spwd * sp, char *buffer, + size_t buflen, int *errnop); +static enum nss_status (*nss_endspent) (void); /* Get the declaration of the parser function. */ #define ENTNAME spent @@ -49,28 +51,25 @@ #define BLACKLIST_INITIAL_SIZE 512 #define BLACKLIST_INCREMENT 256 struct blacklist_t - { - char *data; - int current; - int size; - }; +{ + char *data; + int current; + int size; +}; struct ent_t - { - bool_t netgroup; - bool_t nis; - bool_t first; - char *oldkey; - int oldkeylen; - nis_result *result; - FILE *stream; - struct blacklist_t blacklist; - struct spwd pwd; - struct __netgrent netgrdata; - }; +{ + bool_t netgroup; + bool_t files; + bool_t first; + FILE *stream; + struct blacklist_t blacklist; + struct spwd pwd; + struct __netgrent netgrdata; +}; typedef struct ent_t ent_t; -static ent_t ext_ent = {0, 0, 0, NULL, 0, NULL, NULL, {NULL, 0, 0}, +static ent_t ext_ent = {0, TRUE, 0, NULL, {NULL, 0, 0}, {NULL, NULL, 0, 0, 0, 0, 0, 0, 0}}; /* Protect global state against multiple changers. */ @@ -80,6 +79,21 @@ static void blacklist_store_name (const char *, ent_t *); static int in_blacklist (const char *, int, ent_t *); +/* Initialize the NSS interface/functions. The calling function must + hold the lock. */ +static void +init_nss_interface (void) +{ + if (__nss_database_lookup ("shadow_compat", "passwd_compat", + "nis", &ni) >= 0) + { + nss_setspent = __nss_lookup_function (ni, "setspent"); + nss_getspnam_r = __nss_lookup_function (ni, "getspnam_r"); + nss_getspent_r = __nss_lookup_function (ni, "getspent_r"); + nss_endspent = __nss_lookup_function (ni, "endspent"); + } +} + static void give_spwd_free (struct spwd *pwd) { @@ -142,45 +156,17 @@ } static enum nss_status -internal_setspent (ent_t *ent) +internal_setspent (ent_t *ent, int stayopen) { enum nss_status status = NSS_STATUS_SUCCESS; - ent->nis = ent->first = ent->netgroup = 0; + ent->first = ent->netgroup = 0; + ent->files = TRUE; /* If something was left over free it. */ if (ent->netgroup) __internal_endnetgrent (&ent->netgrdata); - if (ent->oldkey != NULL) - { - free (ent->oldkey); - ent->oldkey = NULL; - ent->oldkeylen = 0; - } - - if (ent->result != NULL) - { - nis_freeresult (ent->result); - ent->result = NULL; - } - - if (pwdtable == NULL) - { - static const char key[] = "passwd.org_dir."; - const char *local_dir = nis_local_directory (); - size_t len_local_dir = strlen (local_dir); - - pwdtable = malloc (sizeof (key) + len_local_dir); - if (pwdtable == NULL) - return NSS_STATUS_TRYAGAIN; - - pwdtablelen = ((char *) mempcpy (mempcpy (pwdtable, - key, sizeof (key) - 1), - local_dir, len_local_dir + 1) - - pwdtable) - 1; - } - if (ent->blacklist.data != NULL) { ent->blacklist.current = 1; @@ -192,7 +178,7 @@ if (ent->stream == NULL) { - ent->stream = fopen ("/etc/shadow", "r"); + ent->stream = fopen ("/etc/shadow", "rm"); if (ent->stream == NULL) status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL; @@ -201,20 +187,23 @@ /* We have to make sure the file is `closed on exec'. */ int result, flags; - result = flags = fcntl (fileno (ent->stream), F_GETFD, 0); + result = flags = fcntl (fileno_unlocked (ent->stream), F_GETFD, 0); if (result >= 0) { flags |= FD_CLOEXEC; - result = fcntl (fileno (ent->stream), F_SETFD, flags); + result = fcntl (fileno_unlocked (ent->stream), F_SETFD, flags); } if (result < 0) { /* Something went wrong. Close the stream and return a - failure. */ + failure. */ fclose (ent->stream); ent->stream = NULL; status = NSS_STATUS_UNAVAIL; } + else + /* We take care of locking ourself. */ + __fsetlocking (ent->stream, FSETLOCKING_BYCALLER); } } else @@ -222,6 +211,9 @@ give_spwd_free (&ent->pwd); + if (status == NSS_STATUS_SUCCESS && nss_setspent) + return nss_setspent (stayopen); + return status; } @@ -234,12 +226,9 @@ __libc_lock_lock (lock); if (ni == NULL) - { - __nss_database_lookup ("shadow_compat", "passwd_compat", "nis", &ni); - use_nisplus = (strcmp (ni->name, "nisplus") == 0); - } + init_nss_interface (); - result = internal_setspent (&ext_ent); + result = internal_setspent (&ext_ent, stayopen); __libc_lock_unlock (lock); @@ -250,6 +239,9 @@ static enum nss_status internal_endspent (ent_t *ent) { + if (nss_endspent) + nss_endspent (); + if (ent->stream != NULL) { fclose (ent->stream); @@ -259,20 +251,8 @@ if (ent->netgroup) __internal_endnetgrent (&ent->netgrdata); - ent->nis = ent->first = ent->netgroup = 0; - - if (ent->oldkey != NULL) - { - free (ent->oldkey); - ent->oldkey = NULL; - ent->oldkeylen = 0; - } - - if (ent->result != NULL) - { - nis_freeresult (ent->result); - ent->result = NULL; - } + ent->first = ent->netgroup = FALSE; + ent->files = TRUE; if (ent->blacklist.data != NULL) { @@ -304,25 +284,27 @@ static enum nss_status -getspent_next_nis_netgr (const char *name, struct spwd *result, ent_t *ent, - char *group, char *buffer, size_t buflen, int *errnop) +getspent_next_nss_netgr (const char *name, struct spwd *result, ent_t *ent, + char *group, char *buffer, size_t buflen, + int *errnop) { - struct parser_data *data = (void *) buffer; - char *ypdomain, *host, *user, *domain, *outval, *p, *p2; - int status, outvallen; + char *curdomain, *host, *user, *domain, *p2; size_t p2len; - if (yp_get_default_domain (&ypdomain) != YPERR_SUCCESS) + if (!nss_getspnam_r) + return NSS_STATUS_UNAVAIL; + + if (yp_get_default_domain (&curdomain) != YPERR_SUCCESS) { - ent->netgroup = 0; - ent->first = 0; + ent->netgroup = FALSE; + ent->first = FALSE; give_spwd_free (&ent->pwd); return NSS_STATUS_UNAVAIL; } if (ent->first == TRUE) { - bzero (&ent->netgrdata, sizeof (struct __netgrent)); + memset (&ent->netgrdata, 0, sizeof (struct __netgrent)); __internal_setnetgrent (group, &ent->netgrdata); ent->first = FALSE; } @@ -330,7 +312,7 @@ while (1) { char *saved_cursor; - int parse_res; + enum nss_status status; saved_cursor = ent->netgrdata.cursor; status = __internal_getnetgrent_r (&host, &user, &domain, @@ -339,7 +321,7 @@ if (status != 1) { __internal_endnetgrent (&ent->netgrdata); - ent->netgroup = 0; + ent->netgroup = FALSE; give_spwd_free (&ent->pwd); return NSS_STATUS_RETURN; } @@ -347,7 +329,7 @@ if (user == NULL || user[0] == '-') continue; - if (domain != NULL && strcmp (ypdomain, domain) != 0) + if (domain != NULL && strcmp (curdomain, domain) != 0) continue; /* If name != NULL, we are called from getpwnam */ @@ -355,240 +337,43 @@ if (strcmp (user, name) != 0) continue; - if (yp_match (ypdomain, "shadow.byname", user, - strlen (user), &outval, &outvallen) - != YPERR_SUCCESS) - continue; - p2len = spwd_need_buflen (&ent->pwd); if (p2len > buflen) { - free (outval); *errnop = ERANGE; return NSS_STATUS_TRYAGAIN; } p2 = buffer + (buflen - p2len); buflen -= p2len; - if (buflen < ((size_t) outval + 1)) - { - free (outval); - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } - p = strncpy (buffer, outval, buflen); - while (isspace (*p)) - p++; - free (outval); - parse_res = _nss_files_parse_spent (p, result, data, buflen, errnop); - if (parse_res == -1) - { - ent->netgrdata.cursor = saved_cursor; - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } - - if (parse_res) - { - /* Store the User in the blacklist for the "+" at the end of - /etc/passwd */ - blacklist_store_name (result->sp_namp, ent); - copy_spwd_changes (result, &ent->pwd, p2, p2len); - break; - } - } - - return NSS_STATUS_SUCCESS; -} - -static enum nss_status -getspent_next_nisplus_netgr (const char *name, struct spwd *result, - ent_t *ent, char *group, char *buffer, - size_t buflen, int *errnop) -{ - char *ypdomain, *host, *user, *domain, *p2; - int status, parse_res; - size_t p2len; - nis_result *nisres; - /* Maybe we should use domainname here ? We need the current - domainname for the domain field in netgroups */ - if (yp_get_default_domain (&ypdomain) != YPERR_SUCCESS) - { - ent->netgroup = 0; - ent->first = 0; - give_spwd_free (&ent->pwd); - return NSS_STATUS_UNAVAIL; - } - - if (ent->first == TRUE) - { - bzero (&ent->netgrdata, sizeof (struct __netgrent)); - __internal_setnetgrent (group, &ent->netgrdata); - ent->first = FALSE; - } - - while (1) - { - char *saved_cursor; - - saved_cursor = ent->netgrdata.cursor; - status = __internal_getnetgrent_r (&host, &user, &domain, - &ent->netgrdata, buffer, buflen, - errnop); - if (status != 1) - { - __internal_endnetgrent (&ent->netgrdata); - ent->netgroup = 0; - give_spwd_free (&ent->pwd); - return NSS_STATUS_RETURN; - } - - if (user == NULL || user[0] == '-') - continue; - - if (domain != NULL && strcmp (ypdomain, domain) != 0) - continue; - - /* If name != NULL, we are called from getpwnam */ - if (name != NULL) - if (strcmp (user, name) != 0) - continue; + if (nss_getspnam_r (user, result, buffer, buflen, errnop) != + NSS_STATUS_SUCCESS) + continue; - p2len = spwd_need_buflen (&ent->pwd); - if (p2len > buflen) - { - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } - p2 = buffer + (buflen - p2len); - buflen -= p2len; - { - char buf[strlen (user) + 30 + pwdtablelen]; - sprintf (buf, "[name=%s],%s", user, pwdtable); - nisres = nis_list (buf, FOLLOW_LINKS | FOLLOW_PATH, NULL, NULL); - } - if (niserr2nss (nisres->status) != NSS_STATUS_SUCCESS) - { - nis_freeresult (nisres); - continue; - } - parse_res = _nss_nisplus_parse_spent (nisres, result, buffer, - buflen, errnop); - if (parse_res == -1) + if (!in_blacklist (result->sp_namp, strlen (result->sp_namp), ent)) { - nis_freeresult (nisres); - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } - nis_freeresult (nisres); - - if (parse_res) - { - /* Store the User in the blacklist for the "+" at the end of - /etc/passwd */ + /* Store the User in the blacklist for possible the "+" at the + end of /etc/passwd */ blacklist_store_name (result->sp_namp, ent); copy_spwd_changes (result, &ent->pwd, p2, p2len); - break; - } - } - - return NSS_STATUS_SUCCESS; -} - -static enum nss_status -getspent_next_nisplus (struct spwd *result, ent_t *ent, char *buffer, - size_t buflen, int *errnop) -{ - int parse_res; - size_t p2len; - char *p2; - - p2len = spwd_need_buflen (&ent->pwd); - if (p2len > buflen) - { - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } - p2 = buffer + (buflen - p2len); - buflen -= p2len; - do - { - bool_t saved_first; - nis_result *saved_res; - - if (ent->first) - { - saved_first = TRUE; - saved_res = ent->result; - - ent->result = nis_first_entry (pwdtable); - if (niserr2nss (ent->result->status) != NSS_STATUS_SUCCESS) - { - ent->nis = 0; - give_spwd_free (&ent->pwd); - return niserr2nss (ent->result->status); - } - ent->first = FALSE; - } - else - { - nis_result *res; - - saved_first = FALSE; - saved_res = ent->result; - - res = nis_next_entry (pwdtable, &ent->result->cookie); - ent->result = res; - if (niserr2nss (ent->result->status) != NSS_STATUS_SUCCESS) - { - nis_freeresult (saved_res); - ent->nis = 0; - give_spwd_free (&ent->pwd); - return niserr2nss (ent->result->status); - } - } - parse_res = _nss_nisplus_parse_spent (ent->result, result, buffer, - buflen, errnop); - if (parse_res == -1) - { - ent->first = saved_first; - nis_freeresult (ent->result); - ent->result = saved_res; - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } - else - { - if (!saved_first) - nis_freeresult (saved_res); + break; } - if (parse_res && - in_blacklist (result->sp_namp, strlen (result->sp_namp), ent)) - parse_res = 0; /* if result->pw_name in blacklist,search next entry */ } - while (!parse_res); - - copy_spwd_changes (result, &ent->pwd, p2, p2len); return NSS_STATUS_SUCCESS; } static enum nss_status -getspent_next_nis (struct spwd *result, ent_t *ent, +getspent_next_nss (struct spwd *result, ent_t *ent, char *buffer, size_t buflen, int *errnop) { - struct parser_data *data = (void *) buffer; - char *domain, *outkey, *outval, *p, *p2; - int outkeylen, outvallen, parse_res; + enum nss_status status; + char *p2; size_t p2len; - if (yp_get_default_domain (&domain) != YPERR_SUCCESS) - { - ent->nis = 0; - give_spwd_free (&ent->pwd); - return NSS_STATUS_UNAVAIL; - } + if (!nss_getspent_r) + return NSS_STATUS_UNAVAIL; p2len = spwd_need_buflen (&ent->pwd); if (p2len > buflen) @@ -600,87 +385,11 @@ buflen -= p2len; do { - bool_t saved_first; - char *saved_oldkey; - int saved_oldlen; - - if (ent->first) - { - if (yp_first (domain, "shadow.byname", &outkey, &outkeylen, - &outval, &outvallen) != YPERR_SUCCESS) - { - ent->nis = 0; - give_spwd_free (&ent->pwd); - return NSS_STATUS_UNAVAIL; - } - - if (buflen < ((size_t) outvallen + 1)) - { - free (outval); - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } - - saved_first = TRUE; - saved_oldkey = ent->oldkey; - saved_oldlen = ent->oldkeylen; - ent->oldkey = outkey; - ent->oldkeylen = outkeylen; - ent->first = FALSE; - } - else - { - if (yp_next (domain, "shadow.byname", ent->oldkey, ent->oldkeylen, - &outkey, &outkeylen, &outval, &outvallen) - != YPERR_SUCCESS) - { - ent->nis = 0; - give_spwd_free (&ent->pwd); - return NSS_STATUS_NOTFOUND; - } - - if (buflen < ((size_t) outvallen + 1)) - { - free (outval); - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } - - saved_first = FALSE; - saved_oldkey = ent->oldkey; - saved_oldlen = ent->oldkeylen; - ent->oldkey = outkey; - ent->oldkeylen = outkeylen; - } - - /* Copy the found data to our buffer */ - p = strncpy (buffer, outval, buflen); - - /* ...and free the data. */ - free (outval); - - while (isspace (*p)) - ++p; - parse_res = _nss_files_parse_spent (p, result, data, buflen, errnop); - if (parse_res == -1) - { - free (ent->oldkey); - ent->oldkey = saved_oldkey; - ent->oldkeylen = saved_oldlen; - ent->first = saved_first; - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } - else - { - if (!saved_first) - free (saved_oldkey); - } - if (parse_res && - in_blacklist (result->sp_namp, strlen (result->sp_namp), ent)) - parse_res = 0; + if ((status = nss_getspent_r (result, buffer, buflen, errnop)) != + NSS_STATUS_SUCCESS) + return status; } - while (!parse_res); + while (in_blacklist (result->sp_namp, strlen (result->sp_namp), ent)); copy_spwd_changes (result, &ent->pwd, p2, p2len); @@ -689,15 +398,16 @@ /* This function handle the +user entrys in /etc/shadow */ static enum nss_status -getspnam_plususer (const char *name, struct spwd *result, char *buffer, - size_t buflen, int *errnop) +getspnam_plususer (const char *name, struct spwd *result, ent_t *ent, + char *buffer, size_t buflen, int *errnop) { - struct parser_data *data = (void *) buffer; struct spwd pwd; - int parse_res; char *p; size_t plen; + if (!nss_getspnam_r) + return NSS_STATUS_UNAVAIL; + memset (&pwd, '\0', sizeof (struct spwd)); pwd.sp_warn = -1; pwd.sp_inact = -1; @@ -715,72 +425,17 @@ p = buffer + (buflen - plen); buflen -= plen; - if (use_nisplus) /* Do the NIS+ query here */ - { - nis_result *res; - char buf[strlen (name) + 24 + pwdtablelen]; - - sprintf(buf, "[name=%s],%s", name, pwdtable); - res = nis_list(buf, 0, NULL, NULL); - if (niserr2nss (res->status) != NSS_STATUS_SUCCESS) - { - enum nss_status status = niserr2nss (res->status); - - nis_freeresult (res); - return status; - } - parse_res = _nss_nisplus_parse_spent (res, result, buffer, - buflen, errnop); - if (parse_res == -1) - { - nis_freeresult (res); - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } - nis_freeresult (res); - } - else /* Use NIS */ - { - char *domain, *outval, *ptr; - int outvallen; - - if (yp_get_default_domain (&domain) != YPERR_SUCCESS) - return NSS_STATUS_NOTFOUND; - - if (yp_match (domain, "shadow.byname", name, strlen (name), - &outval, &outvallen) != YPERR_SUCCESS) - return NSS_STATUS_NOTFOUND; - - if (buflen < ((size_t) outvallen + 1)) - { - free (outval); - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } + if (nss_getspnam_r (name, result, buffer, buflen, errnop) != + NSS_STATUS_SUCCESS) + return NSS_STATUS_NOTFOUND; - ptr = strncpy (buffer, outval, buflen); - free (outval); - while (isspace (*ptr)) - ptr++; - parse_res = _nss_files_parse_spent (ptr, result, data, buflen, errnop); - if (parse_res == -1) - return NSS_STATUS_TRYAGAIN; - } + if (in_blacklist (result->sp_namp, strlen (result->sp_namp), ent)) + return NSS_STATUS_NOTFOUND; - if (parse_res) - { - copy_spwd_changes (result, &pwd, p, plen); - give_spwd_free (&pwd); - /* We found the entry. */ - return NSS_STATUS_SUCCESS; - } - else - { - /* Give buffer the old len back */ - buflen += plen; - give_spwd_free (&pwd); - } - return NSS_STATUS_RETURN; + copy_spwd_changes (result, &pwd, p, plen); + give_spwd_free (&pwd); + /* We found the entry. */ + return NSS_STATUS_SUCCESS; } static enum nss_status @@ -798,8 +453,8 @@ { fgetpos (ent->stream, &pos); buffer[buflen - 1] = '\xff'; - p = fgets (buffer, buflen, ent->stream); - if (p == NULL && feof (ent->stream)) + p = fgets_unlocked (buffer, buflen, ent->stream); + if (p == NULL && feof_unlocked (ent->stream)) return NSS_STATUS_NOTFOUND; if (p == NULL || buffer[buflen - 1] != '\xff') @@ -814,18 +469,18 @@ ++p; } while (*p == '\0' || *p == '#' /* Ignore empty and comment lines. */ - /* Parse the line. If it is invalid, loop to - get the next line of the file to parse. */ + /* Parse the line. If it is invalid, loop to + get the next line of the file to parse. */ || !(parse_res = _nss_files_parse_spent (p, result, data, buflen, errnop))); if (parse_res == -1) - { - /* The parser ran out of space. */ - fsetpos (ent->stream, &pos); - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; - } + { + /* The parser ran out of space. */ + fsetpos (ent->stream, &pos); + *errnop = ERANGE; + return NSS_STATUS_TRYAGAIN; + } if (result->sp_namp[0] != '+' && result->sp_namp[0] != '-') /* This is a real entry. */ @@ -836,12 +491,12 @@ && result->sp_namp[2] != '\0') { /* XXX Do not use fixed length buffers. */ - char buf2[1024]; + char buf2[1024]; char *user, *host, *domain; - struct __netgrent netgrdata; + struct __netgrent netgrdata; - bzero (&netgrdata, sizeof (struct __netgrent)); - __internal_setnetgrent (&result->sp_namp[2], &netgrdata); + bzero (&netgrdata, sizeof (struct __netgrent)); + __internal_setnetgrent (&result->sp_namp[2], &netgrdata); while (__internal_getnetgrent_r (&host, &user, &domain, &netgrdata, buf2, sizeof (buf2), errnop)) @@ -863,14 +518,9 @@ ent->first = TRUE; copy_spwd_changes (&ent->pwd, result, NULL, 0); - if (use_nisplus) - status = getspent_next_nisplus_netgr (NULL, result, ent, - &result->sp_namp[2], - buffer, buflen, errnop); - else - status = getspent_next_nis_netgr (NULL, result, ent, - &result->sp_namp[2], - buffer, buflen, errnop); + status = getspent_next_nss_netgr (NULL, result, ent, + &result->sp_namp[2], + buffer, buflen, errnop); if (status == NSS_STATUS_RETURN) continue; else @@ -889,41 +539,43 @@ if (result->sp_namp[0] == '+' && result->sp_namp[1] != '\0' && result->sp_namp[1] != '@') { - enum nss_status status; + size_t len = strlen (result->sp_namp); + char buf[len]; + enum nss_status status; /* Store the User in the blacklist for the "+" at the end of /etc/passwd */ - blacklist_store_name (&result->sp_namp[1], ent); - status = getspnam_plususer (&result->sp_namp[1], result, buffer, - buflen, errnop); - if (status == NSS_STATUS_SUCCESS) /* We found the entry. */ - break; - else - if (status == NSS_STATUS_RETURN /* We couldn't parse the entry */ - || status == NSS_STATUS_NOTFOUND) /* entry doesn't exist */ - continue; - else - { - if (status == NSS_STATUS_TRYAGAIN) - { - fsetpos (ent->stream, &pos); - *errnop = ERANGE; - } - return status; - } + memcpy (buf, &result->sp_namp[1], len); + status = getspnam_plususer (&result->sp_namp[1], result, ent, + buffer, buflen, errnop); + blacklist_store_name (buf, ent); + + if (status == NSS_STATUS_SUCCESS) /* We found the entry. */ + break; + /* We couldn't parse the entry */ + else if (status == NSS_STATUS_RETURN + /* entry doesn't exist */ + || status == NSS_STATUS_NOTFOUND) + continue; + else + { + if (status == NSS_STATUS_TRYAGAIN) + { + fsetpos (ent->stream, &pos); + *errnop = ERANGE; + } + return status; + } } /* +:... */ if (result->sp_namp[0] == '+' && result->sp_namp[1] == '\0') { - ent->nis = TRUE; + ent->files = FALSE; ent->first = TRUE; copy_spwd_changes (&ent->pwd, result, NULL, 0); - if (use_nisplus) - return getspent_next_nisplus (result, ent, buffer, buflen, errnop); - else - return getspent_next_nis (result, ent, buffer, buflen, errnop); + return getspent_next_nss (result, ent, buffer, buflen, errnop); } } @@ -937,57 +589,45 @@ { if (ent->netgroup) { - int status; + enum nss_status status; /* We are searching members in a netgroup */ /* Since this is not the first call, we don't need the group name */ - if (use_nisplus) - status = getspent_next_nisplus_netgr (NULL, pw, ent, NULL, buffer, - buflen, errnop); - else - status = getspent_next_nis_netgr (NULL, pw, ent, NULL, buffer, buflen, - errnop); + status = getspent_next_nss_netgr (NULL, pw, ent, NULL, buffer, + buflen, errnop); + if (status == NSS_STATUS_RETURN) return getspent_next_file (pw, ent, buffer, buflen, errnop); else return status; } + else if (ent->files) + return getspent_next_file (pw, ent, buffer, buflen, errnop); else - if (ent->nis) - { - if (use_nisplus) - return getspent_next_nisplus (pw, ent, buffer, buflen, errnop); - else - return getspent_next_nis (pw, ent, buffer, buflen, errnop); - } - else - return getspent_next_file (pw, ent, buffer, buflen, errnop); + return getspent_next_nss (pw, ent, buffer, buflen, errnop); } enum nss_status _nss_compat_getspent_r (struct spwd *pwd, char *buffer, size_t buflen, int *errnop) { - enum nss_status status = NSS_STATUS_SUCCESS; + enum nss_status result = NSS_STATUS_SUCCESS; __libc_lock_lock (lock); + /* Be prepared that the setpwent function was not called before. */ if (ni == NULL) - { - __nss_database_lookup ("shadow_compat", "passwd_compat", "nis", &ni); - use_nisplus = (strcmp (ni->name, "nisplus") == 0); - } + init_nss_interface (); - /* Be prepared that the setspent function was not called before. */ if (ext_ent.stream == NULL) - status = internal_setspent (&ext_ent); + result = internal_setspent (&ext_ent, 1); - if (status == NSS_STATUS_SUCCESS) - status = internal_getspent_r (pwd, &ext_ent, buffer, buflen, errnop); + if (result == NSS_STATUS_SUCCESS) + result = internal_getspent_r (pwd, &ext_ent, buffer, buflen, errnop); __libc_lock_unlock (lock); - return status; + return result; } /* Searches in /etc/passwd and the NIS/NIS+ map for a special user */ @@ -1007,8 +647,8 @@ { fgetpos (ent->stream, &pos); buffer[buflen - 1] = '\xff'; - p = fgets (buffer, buflen, ent->stream); - if (p == NULL && feof (ent->stream)) + p = fgets_unlocked (buffer, buflen, ent->stream); + if (p == NULL && feof_unlocked (ent->stream)) return NSS_STATUS_NOTFOUND; if (p == NULL || buffer[buflen - 1] != '\xff') @@ -1018,13 +658,16 @@ return NSS_STATUS_TRYAGAIN; } + /* Terminate the line for any case. */ + buffer[buflen - 1] = '\0'; + /* Skip leading blanks. */ while (isspace (*p)) ++p; } - while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */ + while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */ /* Parse the line. If it is invalid, loop to - get the next line of the file to parse. */ + get the next line of the file to parse. */ !(parse_res = _nss_files_parse_spent (p, result, data, buflen, errnop))); @@ -1046,24 +689,13 @@ } /* -@netgroup */ + /* If the loaded NSS module does not support this service, add + all users from a +@netgroup entry to the blacklist, too. */ if (result->sp_namp[0] == '-' && result->sp_namp[1] == '@' && result->sp_namp[2] != '\0') { - /* XXX Do not use fixed length buffers. */ - char buf2[1024]; - char *user, *host, *domain; - struct __netgrent netgrdata; - - bzero (&netgrdata, sizeof (struct __netgrent)); - __internal_setnetgrent (&result->sp_namp[2], &netgrdata); - while (__internal_getnetgrent_r (&host, &user, &domain, &netgrdata, - buf2, sizeof (buf2), errnop)) - { - if (user != NULL && user[0] != '-') - if (strcmp (user, name) == 0) - return NSS_STATUS_NOTFOUND; - } - __internal_endnetgrent (&netgrdata); + if (innetgr (&result->sp_namp[2], NULL, name, NULL)) + return NSS_STATUS_NOTFOUND; continue; } @@ -1071,28 +703,18 @@ if (result->sp_namp[0] == '+' && result->sp_namp[1] == '@' && result->sp_namp[2] != '\0') { - char *buf = strdupa (&result->sp_namp[2]); - int status; - - ent->netgroup = TRUE; - ent->first = TRUE; - copy_spwd_changes (&ent->pwd, result, NULL, 0); + enum nss_status status; - do + if (innetgr (&result->sp_namp[2], NULL, name, NULL)) { - if (use_nisplus) - status = getspent_next_nisplus_netgr (name, result, ent, buf, - buffer, buflen, errnop); - else - status = getspent_next_nis_netgr (name, result, ent, buf, - buffer, buflen, errnop); + status = getspnam_plususer (name, result, ent, buffer, + buflen, errnop); + if (status == NSS_STATUS_RETURN) continue; - if (status == NSS_STATUS_SUCCESS - && strcmp (result->sp_namp, name) == 0) - return NSS_STATUS_SUCCESS; - } while (status == NSS_STATUS_SUCCESS); + return status; + } continue; } @@ -1114,8 +736,9 @@ { enum nss_status status; - status = getspnam_plususer (name, result, buffer, buflen, - errnop); + status = getspnam_plususer (name, result, ent, + buffer, buflen, errnop); + if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */ return NSS_STATUS_NOTFOUND; @@ -1129,9 +752,15 @@ { enum nss_status status; - status = getspnam_plususer (name, result, buffer, buflen, errnop); - if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */ - return NSS_STATUS_NOTFOUND; + status = getspnam_plususer (name, result, ent, + buffer, buflen, errnop); + + if (status == NSS_STATUS_SUCCESS) + /* We found the entry. */ + break; + else if (status == NSS_STATUS_RETURN) + /* We couldn't parse the entry */ + return NSS_STATUS_NOTFOUND; else return status; } @@ -1143,28 +772,28 @@ _nss_compat_getspnam_r (const char *name, struct spwd *pwd, char *buffer, size_t buflen, int *errnop) { - ent_t ent = {0, 0, 0, NULL, 0, NULL, NULL, {NULL, 0, 0}, + enum nss_status result; + ent_t ent = {0, TRUE, 0, NULL, {NULL, 0, 0}, {NULL, NULL, 0, 0, 0, 0, 0, 0, 0}}; - enum nss_status status; if (name[0] == '-' || name[0] == '+') return NSS_STATUS_NOTFOUND; + __libc_lock_lock (lock); + if (ni == NULL) - { - __nss_database_lookup ("shadow_compat", "passwd_compat", "nis", &ni); - use_nisplus = (strcmp (ni->name, "nisplus") == 0); - } + init_nss_interface (); - status = internal_setspent (&ent); - if (status != NSS_STATUS_SUCCESS) - return status; + __libc_lock_unlock (lock); + + result = internal_setspent (&ent, 0); - status = internal_getspnam_r (name, pwd, &ent, buffer, buflen, errnop); + if (result == NSS_STATUS_SUCCESS) + result = internal_getspnam_r (name, pwd, &ent, buffer, buflen, errnop); internal_endspent (&ent); - return status; + return result; } /* Support routines for remembering -@netgroup and -user entries. @@ -1225,7 +854,7 @@ buf[0] = '|'; cp = stpcpy (&buf[1], name); - *cp++= '|'; + *cp++ = '|'; *cp = '\0'; return strstr (ent->blacklist.data, buf) != NULL; } --- glibc-2.3.2/nis/nss_nis/nis-alias.c 2003-01-18 05:21:02.000000000 -0500 +++ glibc-2.3.2/nis/nss_nis/nis-alias.c 2003-03-18 16:46:07.000000000 -0500 @@ -214,7 +214,7 @@ char *p; size_t namlen = strlen (name); char name2[namlen + 1]; - int i; + size_t i; if (name == NULL) { --- glibc-2.3.2/nis/nss_nis/nis-hosts.c 2003-01-18 05:40:11.000000000 -0500 +++ glibc-2.3.2/nis/nss_nis/nis-hosts.c 2003-03-18 16:46:07.000000000 -0500 @@ -261,7 +261,7 @@ /* Convert name to lowercase. */ size_t namlen = strlen (name); char name2[namlen + 1]; - int i; + size_t i; for (i = 0; i < namlen; ++i) name2[i] = tolower (name[i]); --- glibc-2.3.2/nis/nss_nis/nis-initgroups.c 2002-08-26 00:47:19.000000000 -0400 +++ glibc-2.3.2/nis/nss_nis/nis-initgroups.c 2003-04-24 20:05:58.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1998, 1999, 2000, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk , 1998. @@ -17,10 +17,11 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -#include -#include +#include #include #include +#include +#include #include #include #include @@ -159,10 +160,7 @@ internal_getgrent_r (&grpbuf, tmpbuf, buflen, errnop, &intern)) == NSS_STATUS_TRYAGAIN && *errnop == ERANGE) - { - buflen *= 2; - tmpbuf = __alloca (buflen); - } + tmpbuf = extend_alloca (tmpbuf, buflen, 2 * buflen); if (status != NSS_STATUS_SUCCESS) goto done; --- glibc-2.3.2/nis/nss_nis/nis-network.c 2003-01-19 14:06:27.000000000 -0500 +++ glibc-2.3.2/nis/nss_nis/nis-network.c 2003-03-18 16:46:07.000000000 -0500 @@ -181,7 +181,7 @@ /* Convert name to lowercase. */ size_t namlen = strlen (name); char name2[namlen + 1]; - int i; + size_t i; for (i = 0; i < namlen; ++i) name2[i] = _tolower (name[i]); --- glibc-2.3.2/nis/ypclnt.c 2002-03-20 19:37:12.000000000 -0500 +++ glibc-2.3.2/nis/ypclnt.c 2003-04-24 20:05:58.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk , 1996. @@ -66,15 +66,12 @@ if (domain == NULL || domain[0] == '\0') return YPERR_BADARGS; - if (ypdb != NULL) + ysd = *ypdb; + while (ysd != NULL) { - ysd = *ypdb; - while (ysd != NULL) - { - if (strcmp (domain, ysd->dom_domain) == 0) - break; - ysd = ysd->dom_pnext; - } + if (strcmp (domain, ysd->dom_domain) == 0) + break; + ysd = ysd->dom_pnext; } if (ysd == NULL) @@ -205,7 +202,7 @@ return YPERR_YPSERV; } - if (is_new && ypdb != NULL) + if (is_new) { ysd->dom_pnext = *ypdb; *ypdb = ysd; @@ -219,6 +216,7 @@ { clnt_destroy (ydb->dom_client); ydb->dom_client = NULL; + free (ydb); } int @@ -255,7 +253,6 @@ else ydbptr2 = ydbptr->dom_pnext; __yp_unbind (work); - free (work); break; } ydbptr2 = ydbptr; @@ -335,10 +332,7 @@ use_ypbindlist = FALSE; } else - { - __yp_unbind (ydb); - free (ydb); - } + __yp_unbind (ydb); ydb = NULL; status = YPERR_RPC; @@ -355,11 +349,7 @@ } else if (ydb != NULL) - { - __yp_unbind (ydb); - free (ydb); - ydb = NULL; - } + __yp_unbind (ydb); __set_errno (saved_errno); @@ -710,6 +700,7 @@ /* We don't need the UDP connection anymore. */ __yp_unbind (ydb); + ydb = NULL; clnt = clnttcp_create (&clnt_sin, YPPROG, YPVERS, &clnt_sock, 0, 0); if (clnt == NULL) --- glibc-2.3.2/nscd/Makefile 2002-10-17 13:05:53.000000000 -0400 +++ glibc-2.3.2/nscd/Makefile 2003-09-19 22:37:05.000000000 -0400 @@ -1,4 +1,4 @@ -# Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc. +# Copyright (C) 1998, 2000, 2002, 2003 Free Software Foundation, Inc. # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or @@ -30,7 +30,7 @@ nscd-modules := nscd connections pwdcache getpwnam_r getpwuid_r grpcache \ getgrnam_r getgrgid_r hstcache gethstbyad_r gethstbynm2_r \ - dbg_log nscd_conf nscd_stat cache xmalloc + dbg_log nscd_conf nscd_stat cache xmalloc xstrdup ifeq ($(have-thread-library),yes) @@ -53,6 +53,10 @@ include ../Rules +CFLAGS-nscd_getpw_r.c = -fexceptions +CFLAGS-nscd_getgr_r.c = -fexceptions +CFLAGS-nscd_gethst_r.c = -fexceptions + # This makes sure -DNOT_IN_libc is passed for all these modules. cpp-srcs-left := $(nscd-modules:=.c) lib := nonlib --- glibc-2.3.2/nscd/cache.c 2001-07-07 15:21:07.000000000 -0400 +++ glibc-2.3.2/nscd/cache.c 2003-04-28 08:20:36.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (c) 1998, 1999 Free Software Foundation, Inc. +/* Copyright (c) 1998, 1999, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1998. @@ -17,7 +17,7 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -#include +#include #include #include #include @@ -39,16 +39,19 @@ This function must be called with the read-lock held. */ struct hashentry * -cache_search (int type, void *key, size_t len, struct database *table, +cache_search (request_type type, void *key, size_t len, struct database *table, uid_t owner) { unsigned long int hash = __nis_hash (key, len) % table->module; struct hashentry *work; + unsigned long int nsearched = 0; work = table->array[hash]; while (work != NULL) { + ++nsearched; + if (type == work->type && len == work->len && memcmp (key, work->key, len) == 0 && work->owner == owner) { @@ -58,13 +61,16 @@ else ++table->poshit; - return work; + break; } work = work->next; } - return NULL; + if (nsearched > table->maxnsearched) + table->maxnsearched = nsearched; + + return work; } /* Add a new entry to the cache. The return value is zero if the function @@ -101,14 +107,20 @@ /* Put the new entry in the first position. */ do newp->next = table->array[hash]; - while (! compare_and_swap ((volatile long int *) &table->array[hash], - (long int) newp->next, (long int) newp)); + while (atomic_compare_and_exchange_bool_acq (&table->array[hash], newp, + newp->next)); /* Update the statistics. */ if (data == (void *) -1) ++table->negmiss; else if (last) ++table->posmiss; + + /* Instead of slowing down the normal process for statistics + collection we accept living with some incorrect data. */ + unsigned long int nentries = ++table->nentries; + if (nentries > table->maxnentries) + table->maxnentries = nentries; } /* Walk through the table and remove all entries which lifetime ended. @@ -165,10 +177,10 @@ /* We run through the table and find values which are not valid anymore. - Note that for the initial step, finding the entries to be removed, - we don't need to get any lock. It is at all timed assured that the - linked lists are set up correctly and that no second thread prunes - the cache. */ + Note that for the initial step, finding the entries to be removed, + we don't need to get any lock. It is at all timed assured that the + linked lists are set up correctly and that no second thread prunes + the cache. */ do { struct hashentry *runp = table->array[--cnt]; @@ -195,7 +207,11 @@ /* Now we have to get the write lock since we are about to modify the table. */ - pthread_rwlock_wrlock (&table->lock); + if (__builtin_expect (pthread_rwlock_trywrlock (&table->lock) != 0, 0)) + { + ++table->wrlockdelayed; + pthread_rwlock_wrlock (&table->lock); + } while (first <= last) { @@ -208,6 +224,7 @@ table->array[first]->dellist = head; head = table->array[first]; table->array[first] = head->next; + --table->nentries; if (--mark[first] == 0) break; } @@ -221,6 +238,7 @@ head = runp->next; runp->next = head->next; --mark[first]; + --table->nentries; } else runp = runp->next; @@ -232,29 +250,35 @@ /* It's all done. */ pthread_rwlock_unlock (&table->lock); - /* And another run to free the data. */ - do + /* One extra pass if we do debugging. */ + if (__builtin_expect (debug_level > 0, 0)) { - struct hashentry *old = head; + struct hashentry *runp = head; - if (debug_level > 0) + while (runp != NULL) { char buf[INET6_ADDRSTRLEN]; const char *str; - if ((old->type == GETHOSTBYADDR || old->type == GETHOSTBYADDRv6) - && (old->last || old->data == (void *) -1)) + if (runp->type == GETHOSTBYADDR || runp->type == GETHOSTBYADDRv6) { - inet_ntop (old->type == GETHOSTBYADDR ? AF_INET : AF_INET6, - old->key, buf, sizeof (buf)); + inet_ntop (runp->type == GETHOSTBYADDR ? AF_INET : AF_INET6, + runp->key, buf, sizeof (buf)); str = buf; } else - str = old->last ? old->key : (old->data == (void *) -1 - ? old->key : "???"); + str = runp->key; - dbg_log ("remove %s entry \"%s\"", serv2str[old->type], str); + dbg_log ("remove %s entry \"%s\"", serv2str[runp->type], str); + + runp = runp->next; } + } + + /* And another run to free the data. */ + do + { + struct hashentry *old = head; /* Free the data structures. */ if (old->data == (void *) -1) --- glibc-2.3.2/nscd/connections.c 2003-01-16 02:52:01.000000000 -0500 +++ glibc-2.3.2/nscd/connections.c 2003-05-12 12:13:06.000000000 -0400 @@ -19,6 +19,7 @@ 02111-1307 USA. */ #include +#include #include #include #include @@ -47,6 +48,8 @@ const char *server_user; static uid_t server_uid; static gid_t server_gid; +const char *stat_user; +uid_t stat_uid; static gid_t *server_groups; #ifndef NGROUPS # define NGROUPS 32 @@ -87,7 +90,7 @@ }; /* The control data structures for the services. */ -static struct database dbs[lastdb] = +struct database dbs[lastdb] = { [pwddb] = { .lock = PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP, @@ -130,23 +133,17 @@ /* Socket for incoming connections. */ static int sock; +/* Number of times clients had to wait. */ +unsigned long int client_queued; + /* Initialize database information structures. */ void -nscd_init (const char *conffile) +nscd_init (void) { struct sockaddr_un sock_addr; size_t cnt; - /* Read the configuration file. */ - if (nscd_parse_file (conffile, dbs) != 0) - { - /* We couldn't read the configuration file. Disable all services - by shutting down the srever. */ - dbg_log (_("cannot read configuration file; this is fatal")); - exit (1); - } - /* Secure mode and unprivileged mode are incompatible */ if (server_user != NULL && secure_in_use) { @@ -233,6 +230,7 @@ close (sock); } + static void invalidate_cache (char *key) { @@ -256,10 +254,6 @@ static void handle_request (int fd, request_header *req, void *key, uid_t uid) { - if (__builtin_expect (debug_level, 0) > 0) - dbg_log (_("handle_request: request received (Version = %d)"), - req->version); - if (__builtin_expect (req->version, NSCD_VERSION) != NSCD_VERSION) { if (debug_level > 0) @@ -296,7 +290,7 @@ /* No, sent the prepared record. */ if (TEMP_FAILURE_RETRY (write (fd, db->disabled_iov->iov_base, db->disabled_iov->iov_len)) - != db->disabled_iov->iov_len + != (ssize_t) db->disabled_iov->iov_len && __builtin_expect (debug_level, 0) > 0) { /* We have problems sending the result. */ @@ -309,7 +303,11 @@ } /* Be sure we can read the data. */ - pthread_rwlock_rdlock (&db->lock); + if (__builtin_expect (pthread_rwlock_tryrdlock (&db->lock) != 0, 0)) + { + ++db->rdlockdelayed; + pthread_rwlock_rdlock (&db->lock); + } /* See whether we can handle it from the cache. */ cached = (struct hashentry *) cache_search (req->type, key, req->key_len, @@ -380,20 +378,9 @@ case GETSTAT: case SHUTDOWN: case INVALIDATE: - /* Accept shutdown, getstat and invalidate only from root */ - if (secure_in_use && uid == 0) + if (! secure_in_use) { - if (req->type == GETSTAT) - send_stats (fd, dbs); - else if (req->type == INVALIDATE) - invalidate_cache (key); - else - termination_handler (0); - } - else - { - /* Some systems have no SO_PEERCRED implementation. They don't - care about security so we don't as well. */ + /* Get the callers credentials. */ #ifdef SO_PEERCRED struct ucred caller; socklen_t optlen = sizeof (caller); @@ -404,18 +391,30 @@ dbg_log (_("error getting callers id: %s"), strerror_r (errno, buf, sizeof (buf))); + break; } - else - if (caller.uid == 0) + + uid = caller.uid; +#else + /* Some systems have no SO_PEERCRED implementation. They don't + care about security so we don't as well. */ + uid = 0; #endif - { - if (req->type == GETSTAT) - send_stats (fd, dbs); - else if (req->type == INVALIDATE) - invalidate_cache (key); - else - termination_handler (0); - } + } + + /* Accept shutdown, getstat and invalidate only from root. For + the stat call also allow the user specified in the config file. */ + if (req->type == GETSTAT) + { + if (uid == 0 || uid == stat_uid) + send_stats (fd, dbs); + } + else if (uid == 0) + { + if (req->type == INVALIDATE) + invalidate_cache (key); + else + termination_handler (0); } break; @@ -435,118 +434,163 @@ long int my_number = (long int) p; struct pollfd conn; int run_prune = my_number < lastdb && dbs[my_number].enabled; - time_t now = time (NULL); - time_t next_prune = now + CACHE_PRUNE_INTERVAL; - int timeout = run_prune ? 1000 * (next_prune - now) : -1; + time_t next_prune = run_prune ? time (NULL) + CACHE_PRUNE_INTERVAL : 0; + static unsigned long int nready; conn.fd = sock; conn.events = POLLRDNORM; while (1) { - int nr = poll (&conn, 1, timeout); + int nr; + + /* One more thread available. */ + atomic_increment (&nready); + + no_conn: + if (run_prune) + do + { + time_t now = time (NULL); + int timeout = now < next_prune ? 1000 * (next_prune - now) : 0; + + nr = poll (&conn, 1, timeout); + + if (nr == 0) + { + /* The `poll' call timed out. It's time to clean up the + cache. */ + atomic_decrement (&nready); + assert (my_number < lastdb); + prune_cache (&dbs[my_number], time(NULL)); + now = time (NULL); + next_prune = now + CACHE_PRUNE_INTERVAL; + goto try_get; + } + } + while ((conn.revents & POLLRDNORM) == 0); + + got_data:; + /* We have a new incoming connection. Accept the connection. */ + int fd = TEMP_FAILURE_RETRY (accept (conn.fd, NULL, NULL)); + request_header req; + char buf[256]; + uid_t uid = -1; +#ifdef SO_PEERCRED + pid_t pid = 0; +#endif - if (nr == 0) + if (__builtin_expect (fd, 0) < 0) { - /* The `poll' call timed out. It's time to clean up the cache. */ - assert (my_number < lastdb); - now = time (NULL); - prune_cache (&dbs[my_number], now); - next_prune = now + CACHE_PRUNE_INTERVAL; - timeout = 1000 * (next_prune - now); + dbg_log (_("while accepting connection: %s"), + strerror_r (errno, buf, sizeof (buf))); + goto no_conn; + } + + /* This thread is busy. */ + atomic_decrement (&nready); + + /* Now read the request. */ + if (__builtin_expect (TEMP_FAILURE_RETRY (read (fd, &req, sizeof (req))) + != sizeof (req), 0)) + { + if (debug_level > 0) + dbg_log (_("short read while reading request: %s"), + strerror_r (errno, buf, sizeof (buf))); + close (fd); continue; } - /* We have a new incoming connection. */ - if (conn.revents & (POLLRDNORM|POLLERR|POLLHUP|POLLNVAL)) + /* Some systems have no SO_PEERCRED implementation. They don't + care about security so we don't as well. */ +#ifdef SO_PEERCRED + if (secure_in_use) { - /* Accept the connection. */ - int fd = TEMP_FAILURE_RETRY (accept (conn.fd, NULL, NULL)); - request_header req; - char buf[256]; - uid_t uid = 0; + struct ucred caller; + socklen_t optlen = sizeof (caller); - if (__builtin_expect (fd, 0) < 0) + if (getsockopt (fd, SOL_SOCKET, SO_PEERCRED, &caller, &optlen) < 0) { - dbg_log (_("while accepting connection: %s"), + dbg_log (_("error getting callers id: %s"), strerror_r (errno, buf, sizeof (buf))); - continue; - } - - /* Now read the request. */ - if (__builtin_expect (TEMP_FAILURE_RETRY (read (fd, &req, - sizeof (req))) - != sizeof (req), 0)) - { - if (debug_level > 0) - dbg_log (_("short read while reading request: %s"), - strerror_r (errno, buf, sizeof (buf))); close (fd); continue; } - /* Some systems have no SO_PEERCRED implementation. They don't - care about security so we don't as well. */ -#ifdef SO_PEERCRED - if (secure_in_use) - { - struct ucred caller; - socklen_t optlen = sizeof (caller); + if (req.type < GETPWBYNAME || req.type > LASTDBREQ + || secure[serv2db[req.type]]) + uid = caller.uid; - if (getsockopt (fd, SOL_SOCKET, SO_PEERCRED, - &caller, &optlen) < 0) - { - dbg_log (_("error getting callers id: %s"), - strerror_r (errno, buf, sizeof (buf))); - close (fd); - continue; - } - - if (req.type < GETPWBYNAME || req.type > LASTDBREQ - || secure[serv2db[req.type]]) - uid = caller.uid; - } + pid = caller.pid; + } + else if (__builtin_expect (debug_level > 0, 0)) + { + struct ucred caller; + socklen_t optlen = sizeof (caller); + + if (getsockopt (fd, SOL_SOCKET, SO_PEERCRED, &caller, &optlen) == 0) + pid = caller.pid; + } #endif - /* It should not be possible to crash the nscd with a silly - request (i.e., a terribly large key). We limit the size - to 1kb. */ - if (__builtin_expect (req.key_len, 1) < 0 - || __builtin_expect (req.key_len, 1) > 1024) + /* It should not be possible to crash the nscd with a silly + request (i.e., a terribly large key). We limit the size to 1kb. */ + if (__builtin_expect (req.key_len, 1) < 0 + || __builtin_expect (req.key_len, 1) > 1024) + { + if (debug_level > 0) + dbg_log (_("key length in request too long: %d"), req.key_len); + close (fd); + continue; + } + else + { + /* Get the key. */ + char keybuf[req.key_len]; + + if (__builtin_expect (TEMP_FAILURE_RETRY (read (fd, keybuf, + req.key_len)) + != req.key_len, 0)) { if (debug_level > 0) - dbg_log (_("key length in request too long: %d"), req.key_len); + dbg_log (_("short read while reading request key: %s"), + strerror_r (errno, buf, sizeof (buf))); close (fd); continue; } - else - { - /* Get the key. */ - char keybuf[req.key_len]; - if (__builtin_expect (TEMP_FAILURE_RETRY (read (fd, keybuf, - req.key_len)) - != req.key_len, 0)) - { - if (debug_level > 0) - dbg_log (_("short read while reading request key: %s"), - strerror_r (errno, buf, sizeof (buf))); - close (fd); - continue; - } + if (__builtin_expect (debug_level, 0) > 0) + { +#ifdef SO_PEERCRED + if (pid != 0) + dbg_log (_("\ +handle_request: request received (Version = %d) from PID %ld"), + req.version, (long int) pid); + else +#endif + dbg_log (_("\ +handle_request: request received (Version = %d)"), req.version); + } - /* Phew, we got all the data, now process it. */ - handle_request (fd, &req, keybuf, uid); + /* Phew, we got all the data, now process it. */ + handle_request (fd, &req, keybuf, uid); - /* We are done. */ - close (fd); - } + /* We are done. */ + close (fd); } - if (run_prune) + /* Just determine whether any data is present. We do this to + measure whether clients are queued up. */ + try_get: + nr = poll (&conn, 1, 0); + if (nr != 0) { - now = time (NULL); - timeout = now < next_prune ? 1000 * (next_prune - now) : 0; + if (nready == 0) + ++client_queued; + + atomic_increment (&nready); + + goto got_data; } } } --- glibc-2.3.2/nscd/grpcache.c 2003-01-15 05:27:22.000000000 -0500 +++ glibc-2.3.2/nscd/grpcache.c 2003-04-28 08:20:36.000000000 -0400 @@ -152,6 +152,7 @@ /* There is no reason to go on. */ error (EXIT_FAILURE, errno, _("while allocating cache entry")); + data->resp.version = NSCD_VERSION; data->resp.found = 1; data->resp.gr_name_len = gr_name_len; data->resp.gr_passwd_len = gr_passwd_len; --- glibc-2.3.2/nscd/hstcache.c 2003-01-15 05:29:40.000000000 -0500 +++ glibc-2.3.2/nscd/hstcache.c 2003-04-28 08:20:36.000000000 -0400 @@ -167,6 +167,7 @@ /* There is no reason to go on. */ error (EXIT_FAILURE, errno, _("while allocating cache entry")); + data->resp.version = NSCD_VERSION; data->resp.found = 1; data->resp.h_name_len = h_name_len; data->resp.h_aliases_cnt = h_aliases_cnt; --- glibc-2.3.2/nscd/nscd-client.h 2001-07-07 15:21:07.000000000 -0400 +++ glibc-2.3.2/nscd/nscd-client.h 2003-04-24 20:05:58.000000000 -0400 @@ -1,4 +1,4 @@ -/* Copyright (c) 1998, 1999, 2000 Free Software Foundation, Inc. +/* Copyright (c) 1998, 1999, 2000, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk , 1998. @@ -110,4 +110,7 @@ } hst_response_header; +/* Open socket connection to nscd server. */ +extern int __nscd_open_socket (void) attribute_hidden; + #endif /* nscd.h */ --- glibc-2.3.2/nscd/nscd.c 2003-01-15 14:32:47.000000000 -0500 +++ glibc-2.3.2/nscd/nscd.c 2003-05-12 12:13:06.000000000 -0400 @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include @@ -41,6 +42,7 @@ #include "dbg_log.h" #include "nscd.h" +#include "../nss/nsswitch.h" #include /* Get libc version number. */ @@ -71,6 +73,8 @@ int secure_in_use; static const char *conffile = _PATH_NSCDCONF; +time_t start_time; + static int check_pid (const char *file); static int write_pid (const char *file); @@ -106,6 +110,9 @@ options, parse_opt, NULL, doc, }; +/* True if only statistics are requested. */ +static bool get_stats; + int main (int argc, char **argv) { @@ -126,10 +133,27 @@ exit (EXIT_FAILURE); } + /* Read the configuration file. */ + if (nscd_parse_file (conffile, dbs) != 0) + { + /* We couldn't read the configuration file. We don't start the + server. */ + dbg_log (_("cannot read configuration file; this is fatal")); + exit (1); + } + + /* Do we only get statistics? */ + if (get_stats) + /* Does not return. */ + receive_print_stats (); + /* Check if we are already running. */ if (check_pid (_PATH_NSCDPID)) error (EXIT_FAILURE, 0, _("already running")); + /* Remember when we started. */ + start_time = time (NULL); + /* Behave like a daemon. */ if (go_background) { @@ -175,7 +199,7 @@ while ((dirent = readdir64 (d)) != NULL) { char *endp; - unsigned long int fdn = strtoul (dirent->d_name, &endp, 10); + long int fdn = strtol (dirent->d_name, &endp, 10); if (*endp == '\0' && fdn != dfdn && fdn >= min_close_fd) close ((int) fdn); @@ -213,8 +237,11 @@ /* Cleanup files created by a previous `bind'. */ unlink (_PATH_NSCDSOCKET); + /* Make sure we do not get recursive calls. */ + __nss_disable_nscd (); + /* Init databases. */ - nscd_init (conffile); + nscd_init (); /* Handle incoming requests */ start_threads (); @@ -259,10 +286,8 @@ } case 'g': - if (getuid () != 0) - error (EXIT_FAILURE, 0, _("Only root is allowed to use this option!")); - receive_print_stats (); - /* Does not return. */ + get_stats = true; + break; case 'i': if (getuid () != 0) --- glibc-2.3.2/nscd/nscd.conf 2000-04-30 00:25:38.000000000 -0400 +++ glibc-2.3.2/nscd/nscd.conf 2003-05-12 12:13:06.000000000 -0400 @@ -10,6 +10,7 @@ # threads <#threads to use> # server-user # server-user is ignored if nscd is started with -S parameters +# stat-user # # enable-cache # positive-time-to-live