diff --git a/config/acpid/power b/config/acpid/power new file mode 100644 index 000000000..74063179a --- /dev/null +++ b/config/acpid/power @@ -0,0 +1,4 @@ +# ACPID config to power down machine if powerbutton is pressed + +event=button/power.* +action=/etc/acpi/actions/power.sh diff --git a/config/acpid/power.sh b/config/acpid/power.sh new file mode 100644 index 000000000..839a31818 --- /dev/null +++ b/config/acpid/power.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +# Shutdown the system immediately +shutdown -h now diff --git a/config/kernel/kernel.config.armv5tel-ipfire-omap b/config/kernel/kernel.config.armv5tel-ipfire-omap index 08405e29d..d62343109 100644 --- a/config/kernel/kernel.config.armv5tel-ipfire-omap +++ b/config/kernel/kernel.config.armv5tel-ipfire-omap @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm 3.2.21 Kernel Configuration +# Linux/arm 3.2.28-ipfire-omap Kernel Configuration # CONFIG_ARM=y CONFIG_HAVE_PWM=y @@ -2844,86 +2844,12 @@ CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE=m CONFIG_SND_OMAP_SOC_ZOOM2=m CONFIG_SND_OMAP_SOC_IGEP0020=m CONFIG_SND_SOC_I2C_AND_SPI=m -CONFIG_SND_SOC_ALL_CODECS=m -CONFIG_SND_SOC_WM_HUBS=m -CONFIG_SND_SOC_AD193X=m -CONFIG_SND_SOC_AD73311=m -CONFIG_SND_SOC_ADAU1373=m -CONFIG_SND_SOC_ADAV80X=m -CONFIG_SND_SOC_ADS117X=m -CONFIG_SND_SOC_AK4535=m -CONFIG_SND_SOC_AK4641=m -CONFIG_SND_SOC_AK4642=m -CONFIG_SND_SOC_AK4671=m -CONFIG_SND_SOC_ALC5623=m -CONFIG_SND_SOC_CS42L51=m -CONFIG_SND_SOC_CS4270=m -CONFIG_SND_SOC_CS4271=m -CONFIG_SND_SOC_CX20442=m -CONFIG_SND_SOC_JZ4740_CODEC=m -CONFIG_SND_SOC_L3=m -CONFIG_SND_SOC_DA7210=m -CONFIG_SND_SOC_DFBMCS320=m -CONFIG_SND_SOC_MAX98088=m -CONFIG_SND_SOC_MAX98095=m -CONFIG_SND_SOC_MAX9850=m -CONFIG_SND_SOC_PCM3008=m -CONFIG_SND_SOC_RT5631=m -CONFIG_SND_SOC_SGTL5000=m -CONFIG_SND_SOC_SPDIF=m -CONFIG_SND_SOC_SSM2602=m -CONFIG_SND_SOC_STA32X=m +# CONFIG_SND_SOC_ALL_CODECS is not set CONFIG_SND_SOC_TLV320AIC23=m -CONFIG_SND_SOC_TLV320AIC32X4=m CONFIG_SND_SOC_TLV320AIC3X=m -CONFIG_SND_SOC_TLV320DAC33=m CONFIG_SND_SOC_TWL4030=m CONFIG_SND_SOC_TWL6040=m -CONFIG_SND_SOC_UDA134X=m -CONFIG_SND_SOC_UDA1380=m -CONFIG_SND_SOC_WL1273=m -CONFIG_SND_SOC_WM1250_EV1=m -CONFIG_SND_SOC_WM5100=m -CONFIG_SND_SOC_WM8400=m -CONFIG_SND_SOC_WM8510=m -CONFIG_SND_SOC_WM8523=m -CONFIG_SND_SOC_WM8580=m -CONFIG_SND_SOC_WM8711=m -CONFIG_SND_SOC_WM8727=m -CONFIG_SND_SOC_WM8728=m -CONFIG_SND_SOC_WM8731=m -CONFIG_SND_SOC_WM8737=m -CONFIG_SND_SOC_WM8741=m -CONFIG_SND_SOC_WM8750=m -CONFIG_SND_SOC_WM8753=m -CONFIG_SND_SOC_WM8776=m -CONFIG_SND_SOC_WM8782=m -CONFIG_SND_SOC_WM8804=m -CONFIG_SND_SOC_WM8900=m -CONFIG_SND_SOC_WM8903=m -CONFIG_SND_SOC_WM8904=m -CONFIG_SND_SOC_WM8940=m -CONFIG_SND_SOC_WM8955=m -CONFIG_SND_SOC_WM8960=m -CONFIG_SND_SOC_WM8961=m -CONFIG_SND_SOC_WM8962=m -CONFIG_SND_SOC_WM8971=m -CONFIG_SND_SOC_WM8974=m -CONFIG_SND_SOC_WM8978=m -CONFIG_SND_SOC_WM8983=m -CONFIG_SND_SOC_WM8985=m -CONFIG_SND_SOC_WM8988=m -CONFIG_SND_SOC_WM8990=m -CONFIG_SND_SOC_WM8991=m -CONFIG_SND_SOC_WM8993=m -CONFIG_SND_SOC_WM8995=m -CONFIG_SND_SOC_WM8996=m -CONFIG_SND_SOC_WM9081=m -CONFIG_SND_SOC_LM4857=m -CONFIG_SND_SOC_MAX9877=m CONFIG_SND_SOC_TPA6130A2=m -CONFIG_SND_SOC_WM2000=m -CONFIG_SND_SOC_WM9090=m # CONFIG_SOUND_PRIME is not set CONFIG_HID_SUPPORT=y CONFIG_HID=y diff --git a/config/minidlna/minidlna.conf b/config/minidlna/minidlna.conf new file mode 100644 index 000000000..0a1813cdf --- /dev/null +++ b/config/minidlna/minidlna.conf @@ -0,0 +1,67 @@ +# port for HTTP (descriptions, SOAP, media transfer) traffic +port=8200 + +# network interfaces to serve, comma delimited +network_interface=green0,blue0 + +# set this to the directory you want scanned. +# * if have multiple directories, you can have multiple media_dir= lines +# * if you want to restrict a media_dir to a specific content type, you +# can prepend the type, followed by a comma, to the directory: +# + "A" for audio (eg. media_dir=A,/home/jmaggard/Music) +# + "V" for video (eg. media_dir=V,/home/jmaggard/Videos) +# + "P" for images (eg. media_dir=P,/home/jmaggard/Pictures) +media_dir=/var/mp3 + +# set this if you want to customize the name that shows up on your clients +#friendly_name=My DLNA Server + +# set this if you would like to specify the directory where you want MiniDLNA to store its database and album art cache +db_dir=/var/cache/minidlna + +# set this if you would like to specify the directory where you want MiniDLNA to store its log file +#log_dir=/var/log + +# set this to change the verbosity of the information that is logged +# each section can use a different level: off, fatal, error, warn, info, or debug +#log_level=general,artwork,database,inotify,scanner,metadata,http,ssdp,tivo=warn + +# this should be a list of file names to check for when searching for album art +# note: names should be delimited with a forward slash ("/") +album_art_names=Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg/AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg/Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg + +# set this to no to disable inotify monitoring to automatically discover new files +# note: the default is yes +inotify=yes + +# set this to yes to enable support for streaming .jpg and .mp3 files to a TiVo supporting HMO +enable_tivo=no + +# set this to strictly adhere to DLNA standards. +# * This will allow server-side downscaling of very large JPEG images, +# which may hurt JPEG serving performance on (at least) Sony DLNA products. +strict_dlna=no + +# default presentation url is http address on port 80 +#presentation_url=http://www.mylan/index.php + +# notify interval in seconds. default is 895 seconds. +notify_interval=900 + +# serial and model number the daemon will report to clients +# in its XML description +serial=12345678 +model_number=1 + +# specify the path to the MiniSSDPd socket +#minissdpdsocket=/var/run/minissdpd.sock + +# use different container as root of the tree +# possible values: +# + "." - use standard container (this is the default) +# + "B" - "Browse Directory" +# + "M" - "Music" +# + "V" - "Video" +# + "P" - "Pictures" +# if you specify "B" and client device is audio-only then "Music/Folders" will be used as root +#root_container=. diff --git a/config/rootfiles/common/armv5tel/gcc b/config/rootfiles/common/armv5tel/gcc index 2295ae92f..c7f169034 100644 --- a/config/rootfiles/common/armv5tel/gcc +++ b/config/rootfiles/common/armv5tel/gcc @@ -2,7 +2,7 @@ #usr/bin/armv5tel-unknown-linux-gnueabi-c++ #usr/bin/armv5tel-unknown-linux-gnueabi-g++ #usr/bin/armv5tel-unknown-linux-gnueabi-gcc -#usr/bin/armv5tel-unknown-linux-gnueabi-gcc-4.1.2 +#usr/bin/armv5tel-unknown-linux-gnueabi-gcc-4.4.7 #usr/bin/c++ #usr/bin/cc #usr/bin/cpp @@ -11,543 +11,762 @@ #usr/bin/gccbug #usr/bin/gcov #usr/include/c++ -#usr/include/c++/4.1.2 -#usr/include/c++/4.1.2/algorithm -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/atomic_word.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/basic_file.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/c++allocator.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/c++config.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/c++io.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/c++locale.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/cpu_defines.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/ctype_base.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/ctype_inline.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/ctype_noninline.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/cxxabi_tweaks.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/gthr-default.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/gthr-posix.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/gthr-single.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/gthr-tpf.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/gthr.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/messages_members.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/os_defines.h -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/stdc++.h.gch -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/stdc++.h.gch/O0g.gch -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/stdc++.h.gch/O2g.gch -#usr/include/c++/4.1.2/armv5tel-unknown-linux-gnueabi/bits/time_members.h -#usr/include/c++/4.1.2/backward -#usr/include/c++/4.1.2/backward/algo.h -#usr/include/c++/4.1.2/backward/algobase.h -#usr/include/c++/4.1.2/backward/alloc.h -#usr/include/c++/4.1.2/backward/backward_warning.h -#usr/include/c++/4.1.2/backward/bvector.h -#usr/include/c++/4.1.2/backward/complex.h -#usr/include/c++/4.1.2/backward/defalloc.h -#usr/include/c++/4.1.2/backward/deque.h -#usr/include/c++/4.1.2/backward/fstream.h -#usr/include/c++/4.1.2/backward/function.h -#usr/include/c++/4.1.2/backward/hash_map.h -#usr/include/c++/4.1.2/backward/hash_set.h -#usr/include/c++/4.1.2/backward/hashtable.h -#usr/include/c++/4.1.2/backward/heap.h -#usr/include/c++/4.1.2/backward/iomanip.h -#usr/include/c++/4.1.2/backward/iostream.h -#usr/include/c++/4.1.2/backward/istream.h -#usr/include/c++/4.1.2/backward/iterator.h -#usr/include/c++/4.1.2/backward/list.h -#usr/include/c++/4.1.2/backward/map.h -#usr/include/c++/4.1.2/backward/multimap.h -#usr/include/c++/4.1.2/backward/multiset.h -#usr/include/c++/4.1.2/backward/new.h -#usr/include/c++/4.1.2/backward/ostream.h -#usr/include/c++/4.1.2/backward/pair.h -#usr/include/c++/4.1.2/backward/queue.h -#usr/include/c++/4.1.2/backward/rope.h -#usr/include/c++/4.1.2/backward/set.h -#usr/include/c++/4.1.2/backward/slist.h -#usr/include/c++/4.1.2/backward/stack.h -#usr/include/c++/4.1.2/backward/stream.h -#usr/include/c++/4.1.2/backward/streambuf.h -#usr/include/c++/4.1.2/backward/strstream -#usr/include/c++/4.1.2/backward/tempbuf.h -#usr/include/c++/4.1.2/backward/tree.h -#usr/include/c++/4.1.2/backward/vector.h -#usr/include/c++/4.1.2/bits -#usr/include/c++/4.1.2/bits/allocator.h -#usr/include/c++/4.1.2/bits/atomicity.h -#usr/include/c++/4.1.2/bits/basic_ios.h -#usr/include/c++/4.1.2/bits/basic_ios.tcc -#usr/include/c++/4.1.2/bits/basic_string.h -#usr/include/c++/4.1.2/bits/basic_string.tcc -#usr/include/c++/4.1.2/bits/boost_concept_check.h -#usr/include/c++/4.1.2/bits/char_traits.h -#usr/include/c++/4.1.2/bits/cmath.tcc -#usr/include/c++/4.1.2/bits/codecvt.h -#usr/include/c++/4.1.2/bits/concept_check.h -#usr/include/c++/4.1.2/bits/concurrence.h -#usr/include/c++/4.1.2/bits/cpp_type_traits.h -#usr/include/c++/4.1.2/bits/deque.tcc -#usr/include/c++/4.1.2/bits/fstream.tcc -#usr/include/c++/4.1.2/bits/functexcept.h -#usr/include/c++/4.1.2/bits/gslice.h -#usr/include/c++/4.1.2/bits/gslice_array.h -#usr/include/c++/4.1.2/bits/indirect_array.h -#usr/include/c++/4.1.2/bits/ios_base.h -#usr/include/c++/4.1.2/bits/istream.tcc -#usr/include/c++/4.1.2/bits/list.tcc -#usr/include/c++/4.1.2/bits/locale_classes.h -#usr/include/c++/4.1.2/bits/locale_facets.h -#usr/include/c++/4.1.2/bits/locale_facets.tcc -#usr/include/c++/4.1.2/bits/localefwd.h -#usr/include/c++/4.1.2/bits/mask_array.h -#usr/include/c++/4.1.2/bits/ostream.tcc -#usr/include/c++/4.1.2/bits/postypes.h -#usr/include/c++/4.1.2/bits/slice_array.h -#usr/include/c++/4.1.2/bits/sstream.tcc -#usr/include/c++/4.1.2/bits/stl_algo.h -#usr/include/c++/4.1.2/bits/stl_algobase.h -#usr/include/c++/4.1.2/bits/stl_bvector.h -#usr/include/c++/4.1.2/bits/stl_construct.h -#usr/include/c++/4.1.2/bits/stl_deque.h -#usr/include/c++/4.1.2/bits/stl_function.h -#usr/include/c++/4.1.2/bits/stl_heap.h -#usr/include/c++/4.1.2/bits/stl_iterator.h -#usr/include/c++/4.1.2/bits/stl_iterator_base_funcs.h -#usr/include/c++/4.1.2/bits/stl_iterator_base_types.h -#usr/include/c++/4.1.2/bits/stl_list.h -#usr/include/c++/4.1.2/bits/stl_map.h -#usr/include/c++/4.1.2/bits/stl_multimap.h -#usr/include/c++/4.1.2/bits/stl_multiset.h -#usr/include/c++/4.1.2/bits/stl_numeric.h -#usr/include/c++/4.1.2/bits/stl_pair.h -#usr/include/c++/4.1.2/bits/stl_queue.h -#usr/include/c++/4.1.2/bits/stl_raw_storage_iter.h -#usr/include/c++/4.1.2/bits/stl_relops.h -#usr/include/c++/4.1.2/bits/stl_set.h -#usr/include/c++/4.1.2/bits/stl_stack.h -#usr/include/c++/4.1.2/bits/stl_tempbuf.h -#usr/include/c++/4.1.2/bits/stl_tree.h -#usr/include/c++/4.1.2/bits/stl_uninitialized.h -#usr/include/c++/4.1.2/bits/stl_vector.h -#usr/include/c++/4.1.2/bits/stream_iterator.h -#usr/include/c++/4.1.2/bits/streambuf.tcc -#usr/include/c++/4.1.2/bits/streambuf_iterator.h -#usr/include/c++/4.1.2/bits/stringfwd.h -#usr/include/c++/4.1.2/bits/valarray_after.h -#usr/include/c++/4.1.2/bits/valarray_array.h -#usr/include/c++/4.1.2/bits/valarray_array.tcc -#usr/include/c++/4.1.2/bits/valarray_before.h -#usr/include/c++/4.1.2/bits/vector.tcc -#usr/include/c++/4.1.2/bitset -#usr/include/c++/4.1.2/cassert -#usr/include/c++/4.1.2/cctype -#usr/include/c++/4.1.2/cerrno -#usr/include/c++/4.1.2/cfloat -#usr/include/c++/4.1.2/ciso646 -#usr/include/c++/4.1.2/climits -#usr/include/c++/4.1.2/clocale -#usr/include/c++/4.1.2/cmath -#usr/include/c++/4.1.2/complex -#usr/include/c++/4.1.2/csetjmp -#usr/include/c++/4.1.2/csignal -#usr/include/c++/4.1.2/cstdarg -#usr/include/c++/4.1.2/cstddef -#usr/include/c++/4.1.2/cstdio -#usr/include/c++/4.1.2/cstdlib -#usr/include/c++/4.1.2/cstring -#usr/include/c++/4.1.2/ctime -#usr/include/c++/4.1.2/cwchar -#usr/include/c++/4.1.2/cwctype -#usr/include/c++/4.1.2/cxxabi.h -#usr/include/c++/4.1.2/debug -#usr/include/c++/4.1.2/debug/bitset -#usr/include/c++/4.1.2/debug/debug.h -#usr/include/c++/4.1.2/debug/deque -#usr/include/c++/4.1.2/debug/formatter.h -#usr/include/c++/4.1.2/debug/functions.h -#usr/include/c++/4.1.2/debug/hash_map -#usr/include/c++/4.1.2/debug/hash_map.h -#usr/include/c++/4.1.2/debug/hash_multimap.h -#usr/include/c++/4.1.2/debug/hash_multiset.h -#usr/include/c++/4.1.2/debug/hash_set -#usr/include/c++/4.1.2/debug/hash_set.h -#usr/include/c++/4.1.2/debug/list -#usr/include/c++/4.1.2/debug/macros.h -#usr/include/c++/4.1.2/debug/map -#usr/include/c++/4.1.2/debug/map.h -#usr/include/c++/4.1.2/debug/multimap.h -#usr/include/c++/4.1.2/debug/multiset.h -#usr/include/c++/4.1.2/debug/safe_base.h -#usr/include/c++/4.1.2/debug/safe_iterator.h -#usr/include/c++/4.1.2/debug/safe_iterator.tcc -#usr/include/c++/4.1.2/debug/safe_sequence.h -#usr/include/c++/4.1.2/debug/set -#usr/include/c++/4.1.2/debug/set.h -#usr/include/c++/4.1.2/debug/string -#usr/include/c++/4.1.2/debug/vector -#usr/include/c++/4.1.2/deque -#usr/include/c++/4.1.2/exception -#usr/include/c++/4.1.2/exception_defines.h -#usr/include/c++/4.1.2/ext -#usr/include/c++/4.1.2/ext/algorithm -#usr/include/c++/4.1.2/ext/array_allocator.h -#usr/include/c++/4.1.2/ext/bitmap_allocator.h -#usr/include/c++/4.1.2/ext/codecvt_specializations.h -#usr/include/c++/4.1.2/ext/debug_allocator.h -#usr/include/c++/4.1.2/ext/functional -#usr/include/c++/4.1.2/ext/hash_fun.h -#usr/include/c++/4.1.2/ext/hash_map -#usr/include/c++/4.1.2/ext/hash_set -#usr/include/c++/4.1.2/ext/hashtable.h -#usr/include/c++/4.1.2/ext/iterator -#usr/include/c++/4.1.2/ext/malloc_allocator.h -#usr/include/c++/4.1.2/ext/memory -#usr/include/c++/4.1.2/ext/mt_allocator.h -#usr/include/c++/4.1.2/ext/new_allocator.h -#usr/include/c++/4.1.2/ext/numeric -#usr/include/c++/4.1.2/ext/pb_assoc -#usr/include/c++/4.1.2/ext/pb_assoc/assoc_cntnr.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/data_type.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail -#usr/include/c++/4.1.2/ext/pb_assoc/detail/assoc_cntnr_base.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/d_extract_key.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/d_find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/d_insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/extract_key.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/iterators_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_hash_assoc_cntnr -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_hash_assoc_cntnr/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_hash_assoc_cntnr/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_hash_assoc_cntnr/resize_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/node_iteration_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/policy_access_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/r_erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/r_range_iteration_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/range_iteration_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/split_join_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_ -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/bin_search_tree_.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/debug_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/find_iterators.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/iterators_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/node_iterators.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/r_erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/rotate_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/split_join_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_hash_assoc_cntnr -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_hash_assoc_cntnr/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_ -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/cc_ht_map_.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/cmp_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/cond_key_dtor_entry_dealtor.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/constructor_destructor_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/constructor_destructor_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/debug_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/debug_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/debug_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/entry_list_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/erase_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/erase_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/find_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/find_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/insert_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/insert_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/iterators_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/policy_access_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/resize_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/resize_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/resize_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/size_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/standard_policies.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cond_dealtor.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ds_trait_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/eq_fn -#usr/include/c++/4.1.2/ext/pb_assoc/detail/eq_fn/eq_by_less.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/eq_fn/hash_eq_fn.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_hash_assoc_cntnr -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_hash_assoc_cntnr/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_ -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/constructor_destructor_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/constructor_destructor_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/debug_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/debug_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/debug_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/erase_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/erase_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/find_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/find_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/gp_ht_map_.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/insert_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/insert_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/iterator_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/policy_access_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/resize_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/resize_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/resize_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/direct_mask_range_hashing_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/direct_mod_range_hashing_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/linear_probe_fn_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/mask_based_range_hashing.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/mod_based_range_hashing.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/probe_fn_base.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/quadratic_probe_fn_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/ranged_hash_fn.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/ranged_probe_fn.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_types_traits.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_assoc_cntnr -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_assoc_cntnr/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_assoc_cntnr/policy_access_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_ -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/debug_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/iterators_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/lu_map_.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/policy_access_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_policy -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_policy/counter_lu_metadata_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_policy/counter_lu_policy_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_policy/mtf_lu_policy_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/map_debug_base.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/mapping_level_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ms_category_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ms_trait_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/order_statistics_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_ -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/cond_dtor.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/debug_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/iterators_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/node_iterators.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/ov_tree_map_.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/split_join_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_ -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/debug_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/node.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/rb_tree_.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/split_join_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/resize_policy -#usr/include/c++/4.1.2/ext/pb_assoc/detail/resize_policy/cc_hash_max_collision_resize_trigger_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/resize_policy/hash_exponential_size_policy_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/resize_policy/hash_prime_size_policy_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/resize_policy/hash_standard_resize_policy_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/resize_policy/ht_prime_size_policy_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/resize_policy/size_base.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_ -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/debug_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/node.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/splay_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/splay_tree_.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/split_join_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/standard_policies.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/standard_sizes.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/tree_assoc_cntnr -#usr/include/c++/4.1.2/ext/pb_assoc/detail/tree_assoc_cntnr/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/tree_policy -#usr/include/c++/4.1.2/ext/pb_assoc/detail/tree_policy/null_node_updator_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/tree_policy/order_statistics_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/type_utils.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist/typelist_append.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist/typelist_apply.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist/typelist_at_index.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist/typelist_contains.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist/typelist_filter.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist/typelist_transform.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist/typelist_typelist_append.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/types_traits.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/unordered_iterator -#usr/include/c++/4.1.2/ext/pb_assoc/detail/unordered_iterator/const_find_iterator.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/unordered_iterator/const_iterator.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/unordered_iterator/find_iterator.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/unordered_iterator/iterator.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/constructor_destructor_and_related.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/erase_if_pred.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/invalidation_guarantee_selector.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/it_value_type_traits.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/iterator.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/iterator_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/ref_pair.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/value_type_adapter.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/value_type_traits.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/ds_trait.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/exception.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/hash_policy.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/lu_policy.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/ms_trait.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/tree_policy.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/trivial_iterator_def.hpp -#usr/include/c++/4.1.2/ext/pod_char_traits.h -#usr/include/c++/4.1.2/ext/pool_allocator.h -#usr/include/c++/4.1.2/ext/rb_tree -#usr/include/c++/4.1.2/ext/rc_string_base.h -#usr/include/c++/4.1.2/ext/rope -#usr/include/c++/4.1.2/ext/ropeimpl.h -#usr/include/c++/4.1.2/ext/slist -#usr/include/c++/4.1.2/ext/sso_string_base.h -#usr/include/c++/4.1.2/ext/stdio_filebuf.h -#usr/include/c++/4.1.2/ext/stdio_sync_filebuf.h -#usr/include/c++/4.1.2/ext/typelist.h -#usr/include/c++/4.1.2/ext/vstring.h -#usr/include/c++/4.1.2/ext/vstring.tcc -#usr/include/c++/4.1.2/ext/vstring_fwd.h -#usr/include/c++/4.1.2/ext/vstring_util.h -#usr/include/c++/4.1.2/fstream -#usr/include/c++/4.1.2/functional -#usr/include/c++/4.1.2/iomanip -#usr/include/c++/4.1.2/ios -#usr/include/c++/4.1.2/iosfwd -#usr/include/c++/4.1.2/iostream -#usr/include/c++/4.1.2/istream -#usr/include/c++/4.1.2/iterator -#usr/include/c++/4.1.2/limits -#usr/include/c++/4.1.2/list -#usr/include/c++/4.1.2/locale -#usr/include/c++/4.1.2/map -#usr/include/c++/4.1.2/memory -#usr/include/c++/4.1.2/new -#usr/include/c++/4.1.2/numeric -#usr/include/c++/4.1.2/ostream -#usr/include/c++/4.1.2/queue -#usr/include/c++/4.1.2/set -#usr/include/c++/4.1.2/sstream -#usr/include/c++/4.1.2/stack -#usr/include/c++/4.1.2/stdexcept -#usr/include/c++/4.1.2/streambuf -#usr/include/c++/4.1.2/string -#usr/include/c++/4.1.2/tr1 -#usr/include/c++/4.1.2/tr1/array -#usr/include/c++/4.1.2/tr1/bind_iterate.h -#usr/include/c++/4.1.2/tr1/bind_repeat.h -#usr/include/c++/4.1.2/tr1/boost_shared_ptr.h -#usr/include/c++/4.1.2/tr1/functional -#usr/include/c++/4.1.2/tr1/functional_iterate.h -#usr/include/c++/4.1.2/tr1/hashtable -#usr/include/c++/4.1.2/tr1/memory -#usr/include/c++/4.1.2/tr1/mu_iterate.h -#usr/include/c++/4.1.2/tr1/ref_fwd.h -#usr/include/c++/4.1.2/tr1/ref_wrap_iterate.h -#usr/include/c++/4.1.2/tr1/repeat.h -#usr/include/c++/4.1.2/tr1/tuple -#usr/include/c++/4.1.2/tr1/tuple_iterate.h -#usr/include/c++/4.1.2/tr1/type_traits -#usr/include/c++/4.1.2/tr1/type_traits_fwd.h -#usr/include/c++/4.1.2/tr1/unordered_map -#usr/include/c++/4.1.2/tr1/unordered_set -#usr/include/c++/4.1.2/tr1/utility -#usr/include/c++/4.1.2/typeinfo -#usr/include/c++/4.1.2/utility -#usr/include/c++/4.1.2/valarray -#usr/include/c++/4.1.2/vector +#usr/include/c++/4.4.7 +#usr/include/c++/4.4.7/algorithm +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/atomic_word.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/basic_file.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/c++allocator.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/c++config.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/c++io.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/c++locale.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/cpu_defines.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/ctype_base.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/ctype_inline.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/ctype_noninline.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/cxxabi_tweaks.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/error_constants.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/extc++.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/gthr-default.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/gthr-posix.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/gthr-single.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/gthr-tpf.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/gthr.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/messages_members.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/os_defines.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/stdc++.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/stdtr1c++.h +#usr/include/c++/4.4.7/armv5tel-unknown-linux-gnueabi/bits/time_members.h +#usr/include/c++/4.4.7/array +#usr/include/c++/4.4.7/backward +#usr/include/c++/4.4.7/backward/auto_ptr.h +#usr/include/c++/4.4.7/backward/backward_warning.h +#usr/include/c++/4.4.7/backward/binders.h +#usr/include/c++/4.4.7/backward/hash_fun.h +#usr/include/c++/4.4.7/backward/hash_map +#usr/include/c++/4.4.7/backward/hash_set +#usr/include/c++/4.4.7/backward/hashtable.h +#usr/include/c++/4.4.7/backward/strstream +#usr/include/c++/4.4.7/bits +#usr/include/c++/4.4.7/bits/algorithmfwd.h +#usr/include/c++/4.4.7/bits/allocator.h +#usr/include/c++/4.4.7/bits/atomic_0.h +#usr/include/c++/4.4.7/bits/atomic_2.h +#usr/include/c++/4.4.7/bits/atomicfwd_c.h +#usr/include/c++/4.4.7/bits/atomicfwd_cxx.h +#usr/include/c++/4.4.7/bits/basic_ios.h +#usr/include/c++/4.4.7/bits/basic_ios.tcc +#usr/include/c++/4.4.7/bits/basic_string.h +#usr/include/c++/4.4.7/bits/basic_string.tcc +#usr/include/c++/4.4.7/bits/boost_concept_check.h +#usr/include/c++/4.4.7/bits/char_traits.h +#usr/include/c++/4.4.7/bits/cmath.tcc +#usr/include/c++/4.4.7/bits/codecvt.h +#usr/include/c++/4.4.7/bits/concept_check.h +#usr/include/c++/4.4.7/bits/cpp_type_traits.h +#usr/include/c++/4.4.7/bits/deque.tcc +#usr/include/c++/4.4.7/bits/forward_list.h +#usr/include/c++/4.4.7/bits/forward_list.tcc +#usr/include/c++/4.4.7/bits/fstream.tcc +#usr/include/c++/4.4.7/bits/functexcept.h +#usr/include/c++/4.4.7/bits/functional_hash.h +#usr/include/c++/4.4.7/bits/gslice.h +#usr/include/c++/4.4.7/bits/gslice_array.h +#usr/include/c++/4.4.7/bits/hashtable.h +#usr/include/c++/4.4.7/bits/indirect_array.h +#usr/include/c++/4.4.7/bits/ios_base.h +#usr/include/c++/4.4.7/bits/istream.tcc +#usr/include/c++/4.4.7/bits/list.tcc +#usr/include/c++/4.4.7/bits/locale_classes.h +#usr/include/c++/4.4.7/bits/locale_classes.tcc +#usr/include/c++/4.4.7/bits/locale_facets.h +#usr/include/c++/4.4.7/bits/locale_facets.tcc +#usr/include/c++/4.4.7/bits/locale_facets_nonio.h +#usr/include/c++/4.4.7/bits/locale_facets_nonio.tcc +#usr/include/c++/4.4.7/bits/localefwd.h +#usr/include/c++/4.4.7/bits/mask_array.h +#usr/include/c++/4.4.7/bits/move.h +#usr/include/c++/4.4.7/bits/ostream.tcc +#usr/include/c++/4.4.7/bits/ostream_insert.h +#usr/include/c++/4.4.7/bits/postypes.h +#usr/include/c++/4.4.7/bits/shared_ptr.h +#usr/include/c++/4.4.7/bits/slice_array.h +#usr/include/c++/4.4.7/bits/sstream.tcc +#usr/include/c++/4.4.7/bits/stl_algo.h +#usr/include/c++/4.4.7/bits/stl_algobase.h +#usr/include/c++/4.4.7/bits/stl_bvector.h +#usr/include/c++/4.4.7/bits/stl_construct.h +#usr/include/c++/4.4.7/bits/stl_deque.h +#usr/include/c++/4.4.7/bits/stl_function.h +#usr/include/c++/4.4.7/bits/stl_heap.h +#usr/include/c++/4.4.7/bits/stl_iterator.h +#usr/include/c++/4.4.7/bits/stl_iterator_base_funcs.h +#usr/include/c++/4.4.7/bits/stl_iterator_base_types.h +#usr/include/c++/4.4.7/bits/stl_list.h +#usr/include/c++/4.4.7/bits/stl_map.h +#usr/include/c++/4.4.7/bits/stl_multimap.h +#usr/include/c++/4.4.7/bits/stl_multiset.h +#usr/include/c++/4.4.7/bits/stl_numeric.h +#usr/include/c++/4.4.7/bits/stl_pair.h +#usr/include/c++/4.4.7/bits/stl_queue.h +#usr/include/c++/4.4.7/bits/stl_raw_storage_iter.h +#usr/include/c++/4.4.7/bits/stl_relops.h +#usr/include/c++/4.4.7/bits/stl_set.h +#usr/include/c++/4.4.7/bits/stl_stack.h +#usr/include/c++/4.4.7/bits/stl_tempbuf.h +#usr/include/c++/4.4.7/bits/stl_tree.h +#usr/include/c++/4.4.7/bits/stl_uninitialized.h +#usr/include/c++/4.4.7/bits/stl_vector.h +#usr/include/c++/4.4.7/bits/stream_iterator.h +#usr/include/c++/4.4.7/bits/streambuf.tcc +#usr/include/c++/4.4.7/bits/streambuf_iterator.h +#usr/include/c++/4.4.7/bits/stringfwd.h +#usr/include/c++/4.4.7/bits/unique_ptr.h +#usr/include/c++/4.4.7/bits/valarray_after.h +#usr/include/c++/4.4.7/bits/valarray_array.h +#usr/include/c++/4.4.7/bits/valarray_array.tcc +#usr/include/c++/4.4.7/bits/valarray_before.h +#usr/include/c++/4.4.7/bits/vector.tcc +#usr/include/c++/4.4.7/bitset +#usr/include/c++/4.4.7/c++0x_warning.h +#usr/include/c++/4.4.7/cassert +#usr/include/c++/4.4.7/ccomplex +#usr/include/c++/4.4.7/cctype +#usr/include/c++/4.4.7/cerrno +#usr/include/c++/4.4.7/cfenv +#usr/include/c++/4.4.7/cfloat +#usr/include/c++/4.4.7/chrono +#usr/include/c++/4.4.7/cinttypes +#usr/include/c++/4.4.7/ciso646 +#usr/include/c++/4.4.7/climits +#usr/include/c++/4.4.7/clocale +#usr/include/c++/4.4.7/cmath +#usr/include/c++/4.4.7/complex +#usr/include/c++/4.4.7/complex.h +#usr/include/c++/4.4.7/condition_variable +#usr/include/c++/4.4.7/csetjmp +#usr/include/c++/4.4.7/csignal +#usr/include/c++/4.4.7/cstdarg +#usr/include/c++/4.4.7/cstdatomic +#usr/include/c++/4.4.7/cstdbool +#usr/include/c++/4.4.7/cstddef +#usr/include/c++/4.4.7/cstdint +#usr/include/c++/4.4.7/cstdio +#usr/include/c++/4.4.7/cstdlib +#usr/include/c++/4.4.7/cstring +#usr/include/c++/4.4.7/ctgmath +#usr/include/c++/4.4.7/ctime +#usr/include/c++/4.4.7/cwchar +#usr/include/c++/4.4.7/cwctype +#usr/include/c++/4.4.7/cxxabi-forced.h +#usr/include/c++/4.4.7/cxxabi.h +#usr/include/c++/4.4.7/debug +#usr/include/c++/4.4.7/debug/bitset +#usr/include/c++/4.4.7/debug/debug.h +#usr/include/c++/4.4.7/debug/deque +#usr/include/c++/4.4.7/debug/formatter.h +#usr/include/c++/4.4.7/debug/functions.h +#usr/include/c++/4.4.7/debug/list +#usr/include/c++/4.4.7/debug/macros.h +#usr/include/c++/4.4.7/debug/map +#usr/include/c++/4.4.7/debug/map.h +#usr/include/c++/4.4.7/debug/multimap.h +#usr/include/c++/4.4.7/debug/multiset.h +#usr/include/c++/4.4.7/debug/safe_base.h +#usr/include/c++/4.4.7/debug/safe_iterator.h +#usr/include/c++/4.4.7/debug/safe_iterator.tcc +#usr/include/c++/4.4.7/debug/safe_sequence.h +#usr/include/c++/4.4.7/debug/set +#usr/include/c++/4.4.7/debug/set.h +#usr/include/c++/4.4.7/debug/string +#usr/include/c++/4.4.7/debug/unordered_map +#usr/include/c++/4.4.7/debug/unordered_set +#usr/include/c++/4.4.7/debug/vector +#usr/include/c++/4.4.7/deque +#usr/include/c++/4.4.7/exception +#usr/include/c++/4.4.7/exception_defines.h +#usr/include/c++/4.4.7/exception_ptr.h +#usr/include/c++/4.4.7/ext +#usr/include/c++/4.4.7/ext/algorithm +#usr/include/c++/4.4.7/ext/array_allocator.h +#usr/include/c++/4.4.7/ext/atomicity.h +#usr/include/c++/4.4.7/ext/bitmap_allocator.h +#usr/include/c++/4.4.7/ext/cast.h +#usr/include/c++/4.4.7/ext/codecvt_specializations.h +#usr/include/c++/4.4.7/ext/concurrence.h +#usr/include/c++/4.4.7/ext/debug_allocator.h +#usr/include/c++/4.4.7/ext/enc_filebuf.h +#usr/include/c++/4.4.7/ext/extptr_allocator.h +#usr/include/c++/4.4.7/ext/functional +#usr/include/c++/4.4.7/ext/hash_map +#usr/include/c++/4.4.7/ext/hash_set +#usr/include/c++/4.4.7/ext/iterator +#usr/include/c++/4.4.7/ext/malloc_allocator.h +#usr/include/c++/4.4.7/ext/memory +#usr/include/c++/4.4.7/ext/mt_allocator.h +#usr/include/c++/4.4.7/ext/new_allocator.h +#usr/include/c++/4.4.7/ext/numeric +#usr/include/c++/4.4.7/ext/numeric_traits.h +#usr/include/c++/4.4.7/ext/pb_ds +#usr/include/c++/4.4.7/ext/pb_ds/assoc_container.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail +#usr/include/c++/4.4.7/ext/pb_ds/detail/basic_tree_policy +#usr/include/c++/4.4.7/ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/basic_tree_policy/traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/basic_types.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/const_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/entry_pred.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/resize_policy.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_base_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/standard_policies.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cond_dealtor.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/container_base_dispatch.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/debug_map_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/eq_fn +#usr/include/c++/4.4.7/ext/pb_ds/detail/eq_fn/eq_by_less.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/standard_policies.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/const_point_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/lu_map_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_policy +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_policy/counter_lu_metadata.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_policy/counter_lu_policy_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_policy/mtf_lu_policy_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pairing_heap_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/child_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/cond_dtor_entry_dealtor.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/head.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/internal_node.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/leaf.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/node_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/node_iterators.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/node_metadata_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/point_iterators.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/priority_queue_base_dispatch.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/node.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/node.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/standard_policies.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/tree_policy +#usr/include/c++/4.4.7/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/tree_policy/null_node_update_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/tree_trace_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy/null_node_update_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy/sample_trie_e_access_traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy/string_trie_e_access_traits_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/type_utils.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/types_traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/unordered_iterator +#usr/include/c++/4.4.7/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/unordered_iterator/iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/exception.hpp +#usr/include/c++/4.4.7/ext/pb_ds/hash_policy.hpp +#usr/include/c++/4.4.7/ext/pb_ds/list_update_policy.hpp +#usr/include/c++/4.4.7/ext/pb_ds/priority_queue.hpp +#usr/include/c++/4.4.7/ext/pb_ds/tag_and_trait.hpp +#usr/include/c++/4.4.7/ext/pb_ds/tree_policy.hpp +#usr/include/c++/4.4.7/ext/pb_ds/trie_policy.hpp +#usr/include/c++/4.4.7/ext/pod_char_traits.h +#usr/include/c++/4.4.7/ext/pointer.h +#usr/include/c++/4.4.7/ext/pool_allocator.h +#usr/include/c++/4.4.7/ext/rb_tree +#usr/include/c++/4.4.7/ext/rc_string_base.h +#usr/include/c++/4.4.7/ext/rope +#usr/include/c++/4.4.7/ext/ropeimpl.h +#usr/include/c++/4.4.7/ext/slist +#usr/include/c++/4.4.7/ext/sso_string_base.h +#usr/include/c++/4.4.7/ext/stdio_filebuf.h +#usr/include/c++/4.4.7/ext/stdio_sync_filebuf.h +#usr/include/c++/4.4.7/ext/string_conversions.h +#usr/include/c++/4.4.7/ext/throw_allocator.h +#usr/include/c++/4.4.7/ext/type_traits.h +#usr/include/c++/4.4.7/ext/typelist.h +#usr/include/c++/4.4.7/ext/vstring.h +#usr/include/c++/4.4.7/ext/vstring.tcc +#usr/include/c++/4.4.7/ext/vstring_fwd.h +#usr/include/c++/4.4.7/ext/vstring_util.h +#usr/include/c++/4.4.7/fenv.h +#usr/include/c++/4.4.7/forward_list +#usr/include/c++/4.4.7/fstream +#usr/include/c++/4.4.7/functional +#usr/include/c++/4.4.7/initializer_list +#usr/include/c++/4.4.7/iomanip +#usr/include/c++/4.4.7/ios +#usr/include/c++/4.4.7/iosfwd +#usr/include/c++/4.4.7/iostream +#usr/include/c++/4.4.7/istream +#usr/include/c++/4.4.7/iterator +#usr/include/c++/4.4.7/limits +#usr/include/c++/4.4.7/list +#usr/include/c++/4.4.7/locale +#usr/include/c++/4.4.7/map +#usr/include/c++/4.4.7/memory +#usr/include/c++/4.4.7/mutex +#usr/include/c++/4.4.7/new +#usr/include/c++/4.4.7/numeric +#usr/include/c++/4.4.7/ostream +#usr/include/c++/4.4.7/parallel +#usr/include/c++/4.4.7/parallel/algo.h +#usr/include/c++/4.4.7/parallel/algobase.h +#usr/include/c++/4.4.7/parallel/algorithm +#usr/include/c++/4.4.7/parallel/algorithmfwd.h +#usr/include/c++/4.4.7/parallel/balanced_quicksort.h +#usr/include/c++/4.4.7/parallel/base.h +#usr/include/c++/4.4.7/parallel/basic_iterator.h +#usr/include/c++/4.4.7/parallel/checkers.h +#usr/include/c++/4.4.7/parallel/compatibility.h +#usr/include/c++/4.4.7/parallel/compiletime_settings.h +#usr/include/c++/4.4.7/parallel/equally_split.h +#usr/include/c++/4.4.7/parallel/features.h +#usr/include/c++/4.4.7/parallel/find.h +#usr/include/c++/4.4.7/parallel/find_selectors.h +#usr/include/c++/4.4.7/parallel/for_each.h +#usr/include/c++/4.4.7/parallel/for_each_selectors.h +#usr/include/c++/4.4.7/parallel/iterator.h +#usr/include/c++/4.4.7/parallel/list_partition.h +#usr/include/c++/4.4.7/parallel/losertree.h +#usr/include/c++/4.4.7/parallel/merge.h +#usr/include/c++/4.4.7/parallel/multiseq_selection.h +#usr/include/c++/4.4.7/parallel/multiway_merge.h +#usr/include/c++/4.4.7/parallel/multiway_mergesort.h +#usr/include/c++/4.4.7/parallel/numeric +#usr/include/c++/4.4.7/parallel/numericfwd.h +#usr/include/c++/4.4.7/parallel/omp_loop.h +#usr/include/c++/4.4.7/parallel/omp_loop_static.h +#usr/include/c++/4.4.7/parallel/par_loop.h +#usr/include/c++/4.4.7/parallel/parallel.h +#usr/include/c++/4.4.7/parallel/partial_sum.h +#usr/include/c++/4.4.7/parallel/partition.h +#usr/include/c++/4.4.7/parallel/queue.h +#usr/include/c++/4.4.7/parallel/quicksort.h +#usr/include/c++/4.4.7/parallel/random_number.h +#usr/include/c++/4.4.7/parallel/random_shuffle.h +#usr/include/c++/4.4.7/parallel/search.h +#usr/include/c++/4.4.7/parallel/set_operations.h +#usr/include/c++/4.4.7/parallel/settings.h +#usr/include/c++/4.4.7/parallel/sort.h +#usr/include/c++/4.4.7/parallel/tags.h +#usr/include/c++/4.4.7/parallel/types.h +#usr/include/c++/4.4.7/parallel/unique_copy.h +#usr/include/c++/4.4.7/parallel/workstealing.h +#usr/include/c++/4.4.7/queue +#usr/include/c++/4.4.7/random +#usr/include/c++/4.4.7/ratio +#usr/include/c++/4.4.7/regex +#usr/include/c++/4.4.7/set +#usr/include/c++/4.4.7/sstream +#usr/include/c++/4.4.7/stack +#usr/include/c++/4.4.7/stdatomic.h +#usr/include/c++/4.4.7/stdexcept +#usr/include/c++/4.4.7/streambuf +#usr/include/c++/4.4.7/string +#usr/include/c++/4.4.7/system_error +#usr/include/c++/4.4.7/tgmath.h +#usr/include/c++/4.4.7/thread +#usr/include/c++/4.4.7/tr1 +#usr/include/c++/4.4.7/tr1/array +#usr/include/c++/4.4.7/tr1/bessel_function.tcc +#usr/include/c++/4.4.7/tr1/beta_function.tcc +#usr/include/c++/4.4.7/tr1/ccomplex +#usr/include/c++/4.4.7/tr1/cctype +#usr/include/c++/4.4.7/tr1/cfenv +#usr/include/c++/4.4.7/tr1/cfloat +#usr/include/c++/4.4.7/tr1/cinttypes +#usr/include/c++/4.4.7/tr1/climits +#usr/include/c++/4.4.7/tr1/cmath +#usr/include/c++/4.4.7/tr1/complex +#usr/include/c++/4.4.7/tr1/complex.h +#usr/include/c++/4.4.7/tr1/cstdarg +#usr/include/c++/4.4.7/tr1/cstdbool +#usr/include/c++/4.4.7/tr1/cstdint +#usr/include/c++/4.4.7/tr1/cstdio +#usr/include/c++/4.4.7/tr1/cstdlib +#usr/include/c++/4.4.7/tr1/ctgmath +#usr/include/c++/4.4.7/tr1/ctime +#usr/include/c++/4.4.7/tr1/ctype.h +#usr/include/c++/4.4.7/tr1/cwchar +#usr/include/c++/4.4.7/tr1/cwctype +#usr/include/c++/4.4.7/tr1/ell_integral.tcc +#usr/include/c++/4.4.7/tr1/exp_integral.tcc +#usr/include/c++/4.4.7/tr1/fenv.h +#usr/include/c++/4.4.7/tr1/float.h +#usr/include/c++/4.4.7/tr1/functional +#usr/include/c++/4.4.7/tr1/functional_hash.h +#usr/include/c++/4.4.7/tr1/gamma.tcc +#usr/include/c++/4.4.7/tr1/hashtable.h +#usr/include/c++/4.4.7/tr1/hypergeometric.tcc +#usr/include/c++/4.4.7/tr1/inttypes.h +#usr/include/c++/4.4.7/tr1/legendre_function.tcc +#usr/include/c++/4.4.7/tr1/limits.h +#usr/include/c++/4.4.7/tr1/math.h +#usr/include/c++/4.4.7/tr1/memory +#usr/include/c++/4.4.7/tr1/modified_bessel_func.tcc +#usr/include/c++/4.4.7/tr1/poly_hermite.tcc +#usr/include/c++/4.4.7/tr1/poly_laguerre.tcc +#usr/include/c++/4.4.7/tr1/random +#usr/include/c++/4.4.7/tr1/regex +#usr/include/c++/4.4.7/tr1/riemann_zeta.tcc +#usr/include/c++/4.4.7/tr1/shared_ptr.h +#usr/include/c++/4.4.7/tr1/special_function_util.h +#usr/include/c++/4.4.7/tr1/stdarg.h +#usr/include/c++/4.4.7/tr1/stdbool.h +#usr/include/c++/4.4.7/tr1/stdint.h +#usr/include/c++/4.4.7/tr1/stdio.h +#usr/include/c++/4.4.7/tr1/stdlib.h +#usr/include/c++/4.4.7/tr1/tgmath.h +#usr/include/c++/4.4.7/tr1/tuple +#usr/include/c++/4.4.7/tr1/type_traits +#usr/include/c++/4.4.7/tr1/unordered_map +#usr/include/c++/4.4.7/tr1/unordered_set +#usr/include/c++/4.4.7/tr1/utility +#usr/include/c++/4.4.7/tr1/wchar.h +#usr/include/c++/4.4.7/tr1/wctype.h +#usr/include/c++/4.4.7/tr1_impl +#usr/include/c++/4.4.7/tr1_impl/array +#usr/include/c++/4.4.7/tr1_impl/boost_sp_counted_base.h +#usr/include/c++/4.4.7/tr1_impl/cctype +#usr/include/c++/4.4.7/tr1_impl/cfenv +#usr/include/c++/4.4.7/tr1_impl/cinttypes +#usr/include/c++/4.4.7/tr1_impl/cmath +#usr/include/c++/4.4.7/tr1_impl/complex +#usr/include/c++/4.4.7/tr1_impl/cstdint +#usr/include/c++/4.4.7/tr1_impl/cstdio +#usr/include/c++/4.4.7/tr1_impl/cstdlib +#usr/include/c++/4.4.7/tr1_impl/cwchar +#usr/include/c++/4.4.7/tr1_impl/cwctype +#usr/include/c++/4.4.7/tr1_impl/functional +#usr/include/c++/4.4.7/tr1_impl/functional_hash.h +#usr/include/c++/4.4.7/tr1_impl/hashtable +#usr/include/c++/4.4.7/tr1_impl/hashtable_policy.h +#usr/include/c++/4.4.7/tr1_impl/random +#usr/include/c++/4.4.7/tr1_impl/random.tcc +#usr/include/c++/4.4.7/tr1_impl/regex +#usr/include/c++/4.4.7/tr1_impl/type_traits +#usr/include/c++/4.4.7/tr1_impl/unordered_map +#usr/include/c++/4.4.7/tr1_impl/unordered_set +#usr/include/c++/4.4.7/tr1_impl/utility +#usr/include/c++/4.4.7/tuple +#usr/include/c++/4.4.7/type_traits +#usr/include/c++/4.4.7/typeinfo +#usr/include/c++/4.4.7/unordered_map +#usr/include/c++/4.4.7/unordered_set +#usr/include/c++/4.4.7/utility +#usr/include/c++/4.4.7/valarray +#usr/include/c++/4.4.7/vector +#usr/info #usr/info/cpp.info #usr/info/cppinternals.info +#usr/info/dir #usr/info/gcc.info #usr/info/gccinstall.info #usr/info/gccint.info +#usr/info/libgomp.info #usr/lib/gcc #usr/lib/gcc/armv5tel-unknown-linux-gnueabi -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2 -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/cc1 -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/cc1plus -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/collect2 -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/crtbegin.o -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/crtbeginS.o -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/crtbeginT.o -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/crtend.o -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/crtendS.o -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/include -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/include/README -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/include/float.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/include/iso646.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/include/limits.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/include/mmintrin.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/include/stdarg.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/include/stdbool.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/include/stddef.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/include/syslimits.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/include/unwind.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/include/varargs.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools/fixinc.sh -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools/fixincl -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools/gsyslimits.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools/include -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools/include/README -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools/include/float.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools/include/iso646.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools/include/limits.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools/include/mmintrin.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools/include/stdarg.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools/include/stdbool.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools/include/stddef.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools/include/unwind.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools/include/varargs.h -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools/macro_list -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools/mkheaders -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/install-tools/mkheaders.conf -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/libgcc.a -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/libgcc_eh.a -#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.1.2/libgcov.a +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7 +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/cc1 +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/cc1plus +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/collect2 +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/crtbegin.o +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/crtbeginS.o +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/crtbeginT.o +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/crtend.o +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/crtendS.o +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/finclude +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include-fixed +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include-fixed/README +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include-fixed/limits.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include-fixed/syslimits.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include/arm_neon.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include/float.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include/iso646.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include/mf-runtime.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include/mmintrin.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include/omp.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include/ssp +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include/ssp/ssp.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include/ssp/stdio.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include/ssp/string.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include/ssp/unistd.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include/stdarg.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include/stdbool.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include/stddef.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include/stdfix.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include/unwind.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/include/varargs.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/install-tools +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/install-tools/fixinc.sh +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/install-tools/fixinc_list +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/install-tools/fixincl +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/install-tools/gsyslimits.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/install-tools/include +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/install-tools/include/README +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/install-tools/include/limits.h +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/install-tools/macro_list +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/install-tools/mkheaders +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/install-tools/mkheaders.conf +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/install-tools/mkinstalldirs +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/libgcc.a +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/libgcc_eh.a +#usr/lib/gcc/armv5tel-unknown-linux-gnueabi/4.4.7/libgcov.a +#usr/lib/libgomp.a +#usr/lib/libgomp.la +#usr/lib/libgomp.so +usr/lib/libgomp.so.1 +usr/lib/libgomp.so.1.0.0 +#usr/lib/libgomp.spec +#usr/lib/libmudflap.a +#usr/lib/libmudflap.la +#usr/lib/libmudflap.so +usr/lib/libmudflap.so.0 +usr/lib/libmudflap.so.0.0.0 +#usr/lib/libmudflapth.a +#usr/lib/libmudflapth.la +#usr/lib/libmudflapth.so +usr/lib/libmudflapth.so.0 +usr/lib/libmudflapth.so.0.0.0 +#usr/lib/libssp.a +#usr/lib/libssp.la +#usr/lib/libssp.so +usr/lib/libssp.so.0 +usr/lib/libssp.so.0.0.0 +#usr/lib/libssp_nonshared.a +#usr/lib/libssp_nonshared.la #usr/lib/libstdc++.a -#usr/lib/libstdc++.la -#usr/lib/libstdc++.so -usr/lib/libstdc++.so.6 -usr/lib/libstdc++.so.6.0.8 +usr/lib/libstdc++.so.6.0.13 #usr/lib/libsupc++.a #usr/lib/libsupc++.la #usr/man/man1/cpp.1 diff --git a/config/rootfiles/common/armv5tel/glibc b/config/rootfiles/common/armv5tel/glibc index 2934ad8e8..57a0a7d39 100644 --- a/config/rootfiles/common/armv5tel/glibc +++ b/config/rootfiles/common/armv5tel/glibc @@ -1,44 +1,48 @@ -#etc/rpc -lib/ld-2.5.so +#etc/ld.so.cache +etc/localtime +etc/rpc +lib/ld-2.12.so lib/ld-linux.so.3 -lib/libBrokenLocale-2.5.so +lib/libBrokenLocale-2.12.so lib/libBrokenLocale.so.1 #lib/libSegFault.so -lib/libanl-2.5.so +lib/libanl-2.12.so lib/libanl.so.1 -lib/libc-2.5.so +lib/libc-2.12.so lib/libc.so.6 -lib/libcrypt-2.5.so +lib/libcidn-2.12.so +lib/libcidn.so.1 +lib/libcrypt-2.12.so lib/libcrypt.so.1 -lib/libdl-2.5.so +lib/libdl-2.12.so lib/libdl.so.2 -lib/libm-2.5.so +lib/libm-2.12.so lib/libm.so.6 #lib/libmemusage.so -lib/libnsl-2.5.so +lib/libnsl-2.12.so lib/libnsl.so.1 -lib/libnss_compat-2.5.so +lib/libnss_compat-2.12.so lib/libnss_compat.so.2 -lib/libnss_dns-2.5.so +lib/libnss_dns-2.12.so lib/libnss_dns.so.2 -lib/libnss_files-2.5.so +lib/libnss_files-2.12.so lib/libnss_files.so.2 -lib/libnss_hesiod-2.5.so +lib/libnss_hesiod-2.12.so lib/libnss_hesiod.so.2 -lib/libnss_nis-2.5.so +lib/libnss_nis-2.12.so lib/libnss_nis.so.2 -lib/libnss_nisplus-2.5.so +lib/libnss_nisplus-2.12.so lib/libnss_nisplus.so.2 #lib/libpcprofile.so -lib/libpthread-2.5.so +lib/libpthread-2.12.so lib/libpthread.so.0 -lib/libresolv-2.5.so +lib/libresolv-2.12.so lib/libresolv.so.2 -lib/librt-2.5.so +lib/librt-2.12.so lib/librt.so.1 lib/libthread_db-1.0.so lib/libthread_db.so.1 -lib/libutil-2.5.so +lib/libutil-2.12.so lib/libutil.so.1 sbin/ldconfig #sbin/sln @@ -48,6 +52,7 @@ sbin/ldconfig #usr/bin/getent #usr/bin/iconv usr/bin/ldd +#usr/bin/lddlibc4 #usr/bin/locale #usr/bin/localedef #usr/bin/mtrace @@ -83,7 +88,9 @@ usr/bin/ldd #usr/include/bits/endian.h #usr/include/bits/environments.h #usr/include/bits/errno.h +#usr/include/bits/error.h #usr/include/bits/fcntl.h +#usr/include/bits/fcntl2.h #usr/include/bits/fenv.h #usr/include/bits/fenvinline.h #usr/include/bits/huge_val.h @@ -107,6 +114,7 @@ usr/bin/ldd #usr/include/bits/mman.h #usr/include/bits/monetary-ldbl.h #usr/include/bits/mqueue.h +#usr/include/bits/mqueue2.h #usr/include/bits/msq.h #usr/include/bits/nan.h #usr/include/bits/netdb.h @@ -122,6 +130,7 @@ usr/bin/ldd #usr/include/bits/sem.h #usr/include/bits/semaphore.h #usr/include/bits/setjmp.h +#usr/include/bits/setjmp2.h #usr/include/bits/shm.h #usr/include/bits/sigaction.h #usr/include/bits/sigcontext.h @@ -147,7 +156,6 @@ usr/bin/ldd #usr/include/bits/string.h #usr/include/bits/string2.h #usr/include/bits/string3.h -#usr/include/bits/stropts.h #usr/include/bits/sys_errlist.h #usr/include/bits/syscall.h #usr/include/bits/syslog-ldbl.h @@ -170,7 +178,6 @@ usr/bin/ldd #usr/include/bits/wchar2.h #usr/include/bits/wordsize.h #usr/include/bits/xopen_lim.h -#usr/include/bits/xtitypes.h #usr/include/byteswap.h #usr/include/complex.h #usr/include/cpio.h @@ -201,8 +208,10 @@ usr/bin/ldd #usr/include/gnu-versions.h #usr/include/gnu/lib-names.h #usr/include/gnu/libc-version.h +#usr/include/gnu/stubs-32.h #usr/include/gnu/stubs.h #usr/include/grp.h +#usr/include/gshadow.h #usr/include/iconv.h #usr/include/ieee754.h #usr/include/ifaddrs.h @@ -258,6 +267,8 @@ usr/bin/ldd #usr/include/netinet/udp.h #usr/include/netipx #usr/include/netipx/ipx.h +#usr/include/netiucv +#usr/include/netiucv/iucv.h #usr/include/netpacket #usr/include/netpacket/packet.h #usr/include/netrom @@ -304,10 +315,15 @@ usr/bin/ldd #usr/include/rpc/xdr.h #usr/include/rpcsvc #usr/include/rpcsvc/bootparam.h +#usr/include/rpcsvc/bootparam_prot.h #usr/include/rpcsvc/bootparam_prot.x +#usr/include/rpcsvc/key_prot.h #usr/include/rpcsvc/key_prot.x +#usr/include/rpcsvc/klm_prot.h #usr/include/rpcsvc/klm_prot.x +#usr/include/rpcsvc/mount.h #usr/include/rpcsvc/mount.x +#usr/include/rpcsvc/nfs_prot.h #usr/include/rpcsvc/nfs_prot.x #usr/include/rpcsvc/nis.h #usr/include/rpcsvc/nis.x @@ -316,17 +332,25 @@ usr/bin/ldd #usr/include/rpcsvc/nis_object.x #usr/include/rpcsvc/nis_tags.h #usr/include/rpcsvc/nislib.h +#usr/include/rpcsvc/nlm_prot.h #usr/include/rpcsvc/nlm_prot.x +#usr/include/rpcsvc/rex.h #usr/include/rpcsvc/rex.x +#usr/include/rpcsvc/rquota.h #usr/include/rpcsvc/rquota.x +#usr/include/rpcsvc/rstat.h #usr/include/rpcsvc/rstat.x +#usr/include/rpcsvc/rusers.h #usr/include/rpcsvc/rusers.x +#usr/include/rpcsvc/sm_inter.h #usr/include/rpcsvc/sm_inter.x +#usr/include/rpcsvc/spray.h #usr/include/rpcsvc/spray.x #usr/include/rpcsvc/yp.h #usr/include/rpcsvc/yp.x #usr/include/rpcsvc/yp_prot.h #usr/include/rpcsvc/ypclnt.h +#usr/include/rpcsvc/yppasswd.h #usr/include/rpcsvc/yppasswd.x #usr/include/rpcsvc/ypupd.h #usr/include/sched.h @@ -346,15 +370,16 @@ usr/bin/ldd #usr/include/stdlib.h #usr/include/string.h #usr/include/strings.h -#usr/include/stropts.h #usr/include/sys #usr/include/sys/acct.h #usr/include/sys/bitypes.h #usr/include/sys/cdefs.h +#usr/include/sys/debugreg.h #usr/include/sys/dir.h #usr/include/sys/elf.h #usr/include/sys/epoll.h #usr/include/sys/errno.h +#usr/include/sys/eventfd.h #usr/include/sys/fcntl.h #usr/include/sys/file.h #usr/include/sys/fsuid.h @@ -373,6 +398,7 @@ usr/bin/ldd #usr/include/sys/mtio.h #usr/include/sys/param.h #usr/include/sys/pci.h +#usr/include/sys/perm.h #usr/include/sys/personality.h #usr/include/sys/poll.h #usr/include/sys/prctl.h @@ -383,19 +409,20 @@ usr/bin/ldd #usr/include/sys/quota.h #usr/include/sys/raw.h #usr/include/sys/reboot.h +#usr/include/sys/reg.h #usr/include/sys/resource.h #usr/include/sys/select.h #usr/include/sys/sem.h #usr/include/sys/sendfile.h #usr/include/sys/shm.h #usr/include/sys/signal.h +#usr/include/sys/signalfd.h #usr/include/sys/socket.h #usr/include/sys/socketvar.h #usr/include/sys/soundcard.h #usr/include/sys/stat.h #usr/include/sys/statfs.h #usr/include/sys/statvfs.h -#usr/include/sys/stropts.h #usr/include/sys/swap.h #usr/include/sys/syscall.h #usr/include/sys/sysctl.h @@ -405,6 +432,7 @@ usr/bin/ldd #usr/include/sys/termios.h #usr/include/sys/time.h #usr/include/sys/timeb.h +#usr/include/sys/timerfd.h #usr/include/sys/times.h #usr/include/sys/timex.h #usr/include/sys/ttychars.h @@ -420,6 +448,7 @@ usr/bin/ldd #usr/include/sys/utsname.h #usr/include/sys/vfs.h #usr/include/sys/vlimit.h +#usr/include/sys/vm86.h #usr/include/sys/vt.h #usr/include/sys/vtimes.h #usr/include/sys/wait.h @@ -447,20 +476,6 @@ usr/bin/ldd #usr/include/wctype.h #usr/include/wordexp.h #usr/include/xlocale.h -#usr/info -#usr/info/dir -#usr/info/libc.info -#usr/info/libc.info-1 -#usr/info/libc.info-10 -#usr/info/libc.info-11 -#usr/info/libc.info-2 -#usr/info/libc.info-3 -#usr/info/libc.info-4 -#usr/info/libc.info-5 -#usr/info/libc.info-6 -#usr/info/libc.info-7 -#usr/info/libc.info-8 -#usr/info/libc.info-9 #usr/lib/Mcrt1.o #usr/lib/Scrt1.o #usr/lib/crt1.o @@ -472,6 +487,7 @@ usr/lib/gconv #usr/lib/gconv/ASMO_449.so #usr/lib/gconv/BIG5.so #usr/lib/gconv/BIG5HKSCS.so +#usr/lib/gconv/BRF.so #usr/lib/gconv/CP10007.so #usr/lib/gconv/CP1125.so #usr/lib/gconv/CP1250.so @@ -522,7 +538,11 @@ usr/lib/gconv #usr/lib/gconv/GREEK-CCITT.so #usr/lib/gconv/GREEK7-OLD.so #usr/lib/gconv/GREEK7.so +#usr/lib/gconv/HP-GREEK8.so #usr/lib/gconv/HP-ROMAN8.so +#usr/lib/gconv/HP-ROMAN9.so +#usr/lib/gconv/HP-THAI8.so +#usr/lib/gconv/HP-TURKISH8.so #usr/lib/gconv/IBM037.so #usr/lib/gconv/IBM038.so #usr/lib/gconv/IBM1004.so @@ -663,6 +683,7 @@ usr/lib/gconv #usr/lib/gconv/ISO8859-7.so #usr/lib/gconv/ISO8859-8.so #usr/lib/gconv/ISO8859-9.so +#usr/lib/gconv/ISO8859-9E.so #usr/lib/gconv/ISO_10367-BOX.so #usr/lib/gconv/ISO_11548-1.so #usr/lib/gconv/ISO_2033.so @@ -674,10 +695,12 @@ usr/lib/gconv #usr/lib/gconv/JOHAB.so #usr/lib/gconv/KOI-8.so #usr/lib/gconv/KOI8-R.so +#usr/lib/gconv/KOI8-RU.so #usr/lib/gconv/KOI8-T.so #usr/lib/gconv/KOI8-U.so #usr/lib/gconv/LATIN-GREEK-1.so #usr/lib/gconv/LATIN-GREEK.so +#usr/lib/gconv/MAC-CENTRALEUROPE.so #usr/lib/gconv/MAC-IS.so #usr/lib/gconv/MAC-SAMI.so #usr/lib/gconv/MAC-UK.so @@ -712,6 +735,8 @@ usr/lib/gconv #usr/lib/glibc/getconf #usr/lib/glibc/getconf/POSIX_V6_ILP32_OFF32 #usr/lib/glibc/getconf/POSIX_V6_ILP32_OFFBIG +#usr/lib/glibc/getconf/POSIX_V7_ILP32_OFF32 +#usr/lib/glibc/getconf/POSIX_V7_ILP32_OFFBIG #usr/lib/glibc/pt_chown #usr/lib/libBrokenLocale.a #usr/lib/libBrokenLocale.so @@ -721,6 +746,7 @@ usr/lib/gconv #usr/lib/libc.a #usr/lib/libc.so #usr/lib/libc_nonshared.a +#usr/lib/libcidn.so #usr/lib/libcrypt.a #usr/lib/libcrypt.so #usr/lib/libdl.a @@ -743,6 +769,7 @@ usr/lib/gconv #usr/lib/libpthread_nonshared.a #usr/lib/libresolv.a #usr/lib/libresolv.so +#usr/lib/librpcsvc.a #usr/lib/librt.a #usr/lib/librt.so #usr/lib/libthread_db.so @@ -763,6 +790,7 @@ usr/lib/locale/locale-archive #usr/share/i18n/charmaps/ASMO_449.gz #usr/share/i18n/charmaps/BIG5-HKSCS.gz #usr/share/i18n/charmaps/BIG5.gz +#usr/share/i18n/charmaps/BRF.gz #usr/share/i18n/charmaps/BS_4730.gz #usr/share/i18n/charmaps/BS_VIEWDATA.gz #usr/share/i18n/charmaps/CP10007.gz @@ -821,7 +849,11 @@ usr/lib/locale/locale-archive #usr/share/i18n/charmaps/GREEK-CCITT.gz #usr/share/i18n/charmaps/GREEK7-OLD.gz #usr/share/i18n/charmaps/GREEK7.gz +#usr/share/i18n/charmaps/HP-GREEK8.gz #usr/share/i18n/charmaps/HP-ROMAN8.gz +#usr/share/i18n/charmaps/HP-ROMAN9.gz +#usr/share/i18n/charmaps/HP-THAI8.gz +#usr/share/i18n/charmaps/HP-TURKISH8.gz #usr/share/i18n/charmaps/IBM037.gz #usr/share/i18n/charmaps/IBM038.gz #usr/share/i18n/charmaps/IBM1004.gz @@ -901,6 +933,7 @@ usr/lib/locale/locale-archive #usr/share/i18n/charmaps/ISO-8859-7.gz #usr/share/i18n/charmaps/ISO-8859-8.gz #usr/share/i18n/charmaps/ISO-8859-9.gz +#usr/share/i18n/charmaps/ISO-8859-9E.gz #usr/share/i18n/charmaps/ISO-IR-197.gz #usr/share/i18n/charmaps/ISO-IR-209.gz #usr/share/i18n/charmaps/ISO-IR-90.gz @@ -934,11 +967,13 @@ usr/lib/locale/locale-archive #usr/share/i18n/charmaps/JUS_I.B1.003-SERB.gz #usr/share/i18n/charmaps/KOI-8.gz #usr/share/i18n/charmaps/KOI8-R.gz +#usr/share/i18n/charmaps/KOI8-RU.gz #usr/share/i18n/charmaps/KOI8-T.gz #usr/share/i18n/charmaps/KOI8-U.gz #usr/share/i18n/charmaps/KSC5636.gz #usr/share/i18n/charmaps/LATIN-GREEK-1.gz #usr/share/i18n/charmaps/LATIN-GREEK.gz +#usr/share/i18n/charmaps/MAC-CENTRALEUROPE.gz #usr/share/i18n/charmaps/MAC-CYRILLIC.gz #usr/share/i18n/charmaps/MAC-IS.gz #usr/share/i18n/charmaps/MAC-SAMI.gz @@ -1004,12 +1039,17 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/ar_TN #usr/share/i18n/locales/ar_YE #usr/share/i18n/locales/as_IN +#usr/share/i18n/locales/ast_ES #usr/share/i18n/locales/az_AZ #usr/share/i18n/locales/be_BY #usr/share/i18n/locales/be_BY@latin +#usr/share/i18n/locales/ber_DZ +#usr/share/i18n/locales/ber_MA #usr/share/i18n/locales/bg_BG #usr/share/i18n/locales/bn_BD #usr/share/i18n/locales/bn_IN +#usr/share/i18n/locales/bo_CN +#usr/share/i18n/locales/bo_IN #usr/share/i18n/locales/br_FR #usr/share/i18n/locales/br_FR@euro #usr/share/i18n/locales/bs_BA @@ -1019,8 +1059,10 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/ca_ES@euro #usr/share/i18n/locales/ca_FR #usr/share/i18n/locales/ca_IT +#usr/share/i18n/locales/crh_UA #usr/share/i18n/locales/cs_CZ #usr/share/i18n/locales/csb_PL +#usr/share/i18n/locales/cv_RU #usr/share/i18n/locales/cy_GB #usr/share/i18n/locales/da_DK #usr/share/i18n/locales/de_AT @@ -1032,10 +1074,12 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/de_DE@euro #usr/share/i18n/locales/de_LU #usr/share/i18n/locales/de_LU@euro +#usr/share/i18n/locales/dv_MV #usr/share/i18n/locales/dz_BT #usr/share/i18n/locales/el_CY #usr/share/i18n/locales/el_GR #usr/share/i18n/locales/el_GR@euro +#usr/share/i18n/locales/en_AG #usr/share/i18n/locales/en_AU #usr/share/i18n/locales/en_BW #usr/share/i18n/locales/en_CA @@ -1045,6 +1089,7 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/en_IE #usr/share/i18n/locales/en_IE@euro #usr/share/i18n/locales/en_IN +#usr/share/i18n/locales/en_NG #usr/share/i18n/locales/en_NZ #usr/share/i18n/locales/en_PH #usr/share/i18n/locales/en_SG @@ -1078,6 +1123,7 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/fa_IR #usr/share/i18n/locales/fi_FI #usr/share/i18n/locales/fi_FI@euro +#usr/share/i18n/locales/fil_PH #usr/share/i18n/locales/fo_FO #usr/share/i18n/locales/fr_BE #usr/share/i18n/locales/fr_BE@euro @@ -1087,6 +1133,8 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/fr_FR@euro #usr/share/i18n/locales/fr_LU #usr/share/i18n/locales/fr_LU@euro +#usr/share/i18n/locales/fur_IT +#usr/share/i18n/locales/fy_DE #usr/share/i18n/locales/fy_NL #usr/share/i18n/locales/ga_IE #usr/share/i18n/locales/ga_IE@euro @@ -1099,19 +1147,27 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/gl_ES@euro #usr/share/i18n/locales/gu_IN #usr/share/i18n/locales/gv_GB +#usr/share/i18n/locales/ha_NG #usr/share/i18n/locales/he_IL #usr/share/i18n/locales/hi_IN +#usr/share/i18n/locales/hne_IN #usr/share/i18n/locales/hr_HR #usr/share/i18n/locales/hsb_DE +#usr/share/i18n/locales/ht_HT #usr/share/i18n/locales/hu_HU #usr/share/i18n/locales/hy_AM #usr/share/i18n/locales/i18n #usr/share/i18n/locales/id_ID +#usr/share/i18n/locales/ig_NG +#usr/share/i18n/locales/ik_CA #usr/share/i18n/locales/is_IS #usr/share/i18n/locales/iso14651_t1 +#usr/share/i18n/locales/iso14651_t1_common +#usr/share/i18n/locales/iso14651_t1_pinyin #usr/share/i18n/locales/it_CH #usr/share/i18n/locales/it_IT #usr/share/i18n/locales/it_IT@euro +#usr/share/i18n/locales/iu_CA #usr/share/i18n/locales/iw_IL #usr/share/i18n/locales/ja_JP #usr/share/i18n/locales/ka_GE @@ -1120,13 +1176,19 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/km_KH #usr/share/i18n/locales/kn_IN #usr/share/i18n/locales/ko_KR +#usr/share/i18n/locales/kok_IN +#usr/share/i18n/locales/ks_IN +#usr/share/i18n/locales/ks_IN@devanagari #usr/share/i18n/locales/ku_TR #usr/share/i18n/locales/kw_GB #usr/share/i18n/locales/ky_KG #usr/share/i18n/locales/lg_UG +#usr/share/i18n/locales/li_BE +#usr/share/i18n/locales/li_NL #usr/share/i18n/locales/lo_LA #usr/share/i18n/locales/lt_LT #usr/share/i18n/locales/lv_LV +#usr/share/i18n/locales/mai_IN #usr/share/i18n/locales/mg_MG #usr/share/i18n/locales/mi_NZ #usr/share/i18n/locales/mk_MK @@ -1135,13 +1197,19 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/mr_IN #usr/share/i18n/locales/ms_MY #usr/share/i18n/locales/mt_MT +#usr/share/i18n/locales/my_MM +#usr/share/i18n/locales/nan_TW@latin #usr/share/i18n/locales/nb_NO +#usr/share/i18n/locales/nds_DE +#usr/share/i18n/locales/nds_NL #usr/share/i18n/locales/ne_NP +#usr/share/i18n/locales/nl_AW #usr/share/i18n/locales/nl_BE #usr/share/i18n/locales/nl_BE@euro #usr/share/i18n/locales/nl_NL #usr/share/i18n/locales/nl_NL@euro #usr/share/i18n/locales/nn_NO +#usr/share/i18n/locales/no_NO #usr/share/i18n/locales/nr_ZA #usr/share/i18n/locales/nso_ZA #usr/share/i18n/locales/oc_FR @@ -1150,7 +1218,9 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/or_IN #usr/share/i18n/locales/pa_IN #usr/share/i18n/locales/pa_PK +#usr/share/i18n/locales/pap_AN #usr/share/i18n/locales/pl_PL +#usr/share/i18n/locales/ps_AF #usr/share/i18n/locales/pt_BR #usr/share/i18n/locales/pt_PT #usr/share/i18n/locales/pt_PT@euro @@ -1158,7 +1228,12 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/ru_RU #usr/share/i18n/locales/ru_UA #usr/share/i18n/locales/rw_RW +#usr/share/i18n/locales/sa_IN +#usr/share/i18n/locales/sc_IT +#usr/share/i18n/locales/sd_IN +#usr/share/i18n/locales/sd_IN@devanagari #usr/share/i18n/locales/se_NO +#usr/share/i18n/locales/shs_CA #usr/share/i18n/locales/si_LK #usr/share/i18n/locales/sid_ET #usr/share/i18n/locales/sk_SK @@ -1168,8 +1243,10 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/so_KE #usr/share/i18n/locales/so_SO #usr/share/i18n/locales/sq_AL -#usr/share/i18n/locales/sr_CS +#usr/share/i18n/locales/sq_MK #usr/share/i18n/locales/sr_ME +#usr/share/i18n/locales/sr_RS +#usr/share/i18n/locales/sr_RS@latin #usr/share/i18n/locales/ss_ZA #usr/share/i18n/locales/st_ZA #usr/share/i18n/locales/sv_FI @@ -1182,6 +1259,7 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/ti_ER #usr/share/i18n/locales/ti_ET #usr/share/i18n/locales/tig_ER +#usr/share/i18n/locales/tk_TM #usr/share/i18n/locales/tl_PH #usr/share/i18n/locales/tn_ZA #usr/share/i18n/locales/tr_CY @@ -1200,7 +1278,10 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/translit_wide #usr/share/i18n/locales/ts_ZA #usr/share/i18n/locales/tt_RU +#usr/share/i18n/locales/tt_RU@iqtelif +#usr/share/i18n/locales/ug_CN #usr/share/i18n/locales/uk_UA +#usr/share/i18n/locales/ur_IN #usr/share/i18n/locales/ur_PK #usr/share/i18n/locales/uz_UZ #usr/share/i18n/locales/uz_UZ@cyrillic @@ -1209,16 +1290,34 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/wa_BE #usr/share/i18n/locales/wa_BE@euro #usr/share/i18n/locales/wal_ET +#usr/share/i18n/locales/wo_SN #usr/share/i18n/locales/xh_ZA #usr/share/i18n/locales/yi_US +#usr/share/i18n/locales/yo_NG #usr/share/i18n/locales/zh_CN #usr/share/i18n/locales/zh_HK #usr/share/i18n/locales/zh_SG #usr/share/i18n/locales/zh_TW #usr/share/i18n/locales/zu_ZA +#usr/share/info/dir +#usr/share/info/libc.info +#usr/share/info/libc.info-1 +#usr/share/info/libc.info-10 +#usr/share/info/libc.info-11 +#usr/share/info/libc.info-2 +#usr/share/info/libc.info-3 +#usr/share/info/libc.info-4 +#usr/share/info/libc.info-5 +#usr/share/info/libc.info-6 +#usr/share/info/libc.info-7 +#usr/share/info/libc.info-8 +#usr/share/info/libc.info-9 #usr/share/locale/be #usr/share/locale/be/LC_MESSAGES #usr/share/locale/be/LC_MESSAGES/libc.mo +#usr/share/locale/bg +#usr/share/locale/bg/LC_MESSAGES +#usr/share/locale/bg/LC_MESSAGES/libc.mo #usr/share/locale/ca #usr/share/locale/ca/LC_MESSAGES #usr/share/locale/ca/LC_MESSAGES/libc.mo @@ -1255,6 +1354,9 @@ usr/lib/locale/locale-archive #usr/share/locale/hu #usr/share/locale/hu/LC_MESSAGES #usr/share/locale/hu/LC_MESSAGES/libc.mo +#usr/share/locale/id +#usr/share/locale/id/LC_MESSAGES +#usr/share/locale/id/LC_MESSAGES/libc.mo #usr/share/locale/it #usr/share/locale/it/LC_MESSAGES #usr/share/locale/it/LC_MESSAGES/libc.mo @@ -1265,6 +1367,9 @@ usr/lib/locale/locale-archive #usr/share/locale/ko/LC_MESSAGES #usr/share/locale/ko/LC_MESSAGES/libc.mo #usr/share/locale/locale.alias +#usr/share/locale/lt +#usr/share/locale/lt/LC_MESSAGES +#usr/share/locale/lt/LC_MESSAGES/libc.mo #usr/share/locale/nb #usr/share/locale/nb/LC_MESSAGES #usr/share/locale/nb/LC_MESSAGES/libc.mo @@ -1292,11 +1397,1777 @@ usr/lib/locale/locale-archive #usr/share/locale/tr #usr/share/locale/tr/LC_MESSAGES #usr/share/locale/tr/LC_MESSAGES/libc.mo +#usr/share/locale/vi +#usr/share/locale/vi/LC_MESSAGES +#usr/share/locale/vi/LC_MESSAGES/libc.mo #usr/share/locale/zh_CN #usr/share/locale/zh_CN/LC_MESSAGES #usr/share/locale/zh_CN/LC_MESSAGES/libc.mo #usr/share/locale/zh_TW #usr/share/locale/zh_TW/LC_MESSAGES #usr/share/locale/zh_TW/LC_MESSAGES/libc.mo +#usr/share/zoneinfo/Africa +#usr/share/zoneinfo/Africa/Abidjan +#usr/share/zoneinfo/Africa/Accra +#usr/share/zoneinfo/Africa/Addis_Ababa +#usr/share/zoneinfo/Africa/Algiers +#usr/share/zoneinfo/Africa/Asmara +#usr/share/zoneinfo/Africa/Asmera +#usr/share/zoneinfo/Africa/Bamako +#usr/share/zoneinfo/Africa/Bangui +#usr/share/zoneinfo/Africa/Banjul +#usr/share/zoneinfo/Africa/Bissau +#usr/share/zoneinfo/Africa/Blantyre +#usr/share/zoneinfo/Africa/Brazzaville +#usr/share/zoneinfo/Africa/Bujumbura +#usr/share/zoneinfo/Africa/Cairo +#usr/share/zoneinfo/Africa/Casablanca +#usr/share/zoneinfo/Africa/Ceuta +#usr/share/zoneinfo/Africa/Conakry +#usr/share/zoneinfo/Africa/Dakar +#usr/share/zoneinfo/Africa/Dar_es_Salaam +#usr/share/zoneinfo/Africa/Djibouti +#usr/share/zoneinfo/Africa/Douala +#usr/share/zoneinfo/Africa/El_Aaiun +#usr/share/zoneinfo/Africa/Freetown +#usr/share/zoneinfo/Africa/Gaborone +#usr/share/zoneinfo/Africa/Harare +#usr/share/zoneinfo/Africa/Johannesburg +#usr/share/zoneinfo/Africa/Kampala +#usr/share/zoneinfo/Africa/Khartoum +#usr/share/zoneinfo/Africa/Kigali +#usr/share/zoneinfo/Africa/Kinshasa +#usr/share/zoneinfo/Africa/Lagos +#usr/share/zoneinfo/Africa/Libreville +#usr/share/zoneinfo/Africa/Lome +#usr/share/zoneinfo/Africa/Luanda +#usr/share/zoneinfo/Africa/Lubumbashi +#usr/share/zoneinfo/Africa/Lusaka +#usr/share/zoneinfo/Africa/Malabo +#usr/share/zoneinfo/Africa/Maputo +#usr/share/zoneinfo/Africa/Maseru +#usr/share/zoneinfo/Africa/Mbabane +#usr/share/zoneinfo/Africa/Mogadishu +#usr/share/zoneinfo/Africa/Monrovia +#usr/share/zoneinfo/Africa/Nairobi +#usr/share/zoneinfo/Africa/Ndjamena +#usr/share/zoneinfo/Africa/Niamey +#usr/share/zoneinfo/Africa/Nouakchott +#usr/share/zoneinfo/Africa/Ouagadougou +#usr/share/zoneinfo/Africa/Porto-Novo +#usr/share/zoneinfo/Africa/Sao_Tome +#usr/share/zoneinfo/Africa/Timbuktu +#usr/share/zoneinfo/Africa/Tripoli +#usr/share/zoneinfo/Africa/Tunis +#usr/share/zoneinfo/Africa/Windhoek +#usr/share/zoneinfo/America +#usr/share/zoneinfo/America/Adak +#usr/share/zoneinfo/America/Anchorage +#usr/share/zoneinfo/America/Anguilla +#usr/share/zoneinfo/America/Antigua +#usr/share/zoneinfo/America/Araguaina +#usr/share/zoneinfo/America/Argentina +#usr/share/zoneinfo/America/Argentina/Buenos_Aires +#usr/share/zoneinfo/America/Argentina/Catamarca +#usr/share/zoneinfo/America/Argentina/ComodRivadavia +#usr/share/zoneinfo/America/Argentina/Cordoba +#usr/share/zoneinfo/America/Argentina/Jujuy +#usr/share/zoneinfo/America/Argentina/La_Rioja +#usr/share/zoneinfo/America/Argentina/Mendoza +#usr/share/zoneinfo/America/Argentina/Rio_Gallegos +#usr/share/zoneinfo/America/Argentina/Salta +#usr/share/zoneinfo/America/Argentina/San_Juan +#usr/share/zoneinfo/America/Argentina/San_Luis +#usr/share/zoneinfo/America/Argentina/Tucuman +#usr/share/zoneinfo/America/Argentina/Ushuaia +#usr/share/zoneinfo/America/Aruba +#usr/share/zoneinfo/America/Asuncion +#usr/share/zoneinfo/America/Atikokan +#usr/share/zoneinfo/America/Atka +#usr/share/zoneinfo/America/Bahia +#usr/share/zoneinfo/America/Barbados +#usr/share/zoneinfo/America/Belem +#usr/share/zoneinfo/America/Belize +#usr/share/zoneinfo/America/Blanc-Sablon +#usr/share/zoneinfo/America/Boa_Vista +#usr/share/zoneinfo/America/Bogota +#usr/share/zoneinfo/America/Boise +#usr/share/zoneinfo/America/Buenos_Aires +#usr/share/zoneinfo/America/Cambridge_Bay +#usr/share/zoneinfo/America/Campo_Grande +#usr/share/zoneinfo/America/Cancun +#usr/share/zoneinfo/America/Caracas +#usr/share/zoneinfo/America/Catamarca +#usr/share/zoneinfo/America/Cayenne +#usr/share/zoneinfo/America/Cayman +#usr/share/zoneinfo/America/Chicago +#usr/share/zoneinfo/America/Chihuahua +#usr/share/zoneinfo/America/Coral_Harbour +#usr/share/zoneinfo/America/Cordoba +#usr/share/zoneinfo/America/Costa_Rica +#usr/share/zoneinfo/America/Cuiaba +#usr/share/zoneinfo/America/Curacao +#usr/share/zoneinfo/America/Danmarkshavn +#usr/share/zoneinfo/America/Dawson +#usr/share/zoneinfo/America/Dawson_Creek +#usr/share/zoneinfo/America/Denver +#usr/share/zoneinfo/America/Detroit +#usr/share/zoneinfo/America/Dominica +#usr/share/zoneinfo/America/Edmonton +#usr/share/zoneinfo/America/Eirunepe +#usr/share/zoneinfo/America/El_Salvador +#usr/share/zoneinfo/America/Ensenada +#usr/share/zoneinfo/America/Fort_Wayne +#usr/share/zoneinfo/America/Fortaleza +#usr/share/zoneinfo/America/Glace_Bay +#usr/share/zoneinfo/America/Godthab +#usr/share/zoneinfo/America/Goose_Bay +#usr/share/zoneinfo/America/Grand_Turk +#usr/share/zoneinfo/America/Grenada +#usr/share/zoneinfo/America/Guadeloupe +#usr/share/zoneinfo/America/Guatemala +#usr/share/zoneinfo/America/Guayaquil +#usr/share/zoneinfo/America/Guyana +#usr/share/zoneinfo/America/Halifax +#usr/share/zoneinfo/America/Havana +#usr/share/zoneinfo/America/Hermosillo +#usr/share/zoneinfo/America/Indiana +#usr/share/zoneinfo/America/Indiana/Indianapolis +#usr/share/zoneinfo/America/Indiana/Knox +#usr/share/zoneinfo/America/Indiana/Marengo +#usr/share/zoneinfo/America/Indiana/Petersburg +#usr/share/zoneinfo/America/Indiana/Tell_City +#usr/share/zoneinfo/America/Indiana/Vevay +#usr/share/zoneinfo/America/Indiana/Vincennes +#usr/share/zoneinfo/America/Indiana/Winamac +#usr/share/zoneinfo/America/Indianapolis +#usr/share/zoneinfo/America/Inuvik +#usr/share/zoneinfo/America/Iqaluit +#usr/share/zoneinfo/America/Jamaica +#usr/share/zoneinfo/America/Jujuy +#usr/share/zoneinfo/America/Juneau +#usr/share/zoneinfo/America/Kentucky +#usr/share/zoneinfo/America/Kentucky/Louisville +#usr/share/zoneinfo/America/Kentucky/Monticello +#usr/share/zoneinfo/America/Knox_IN +#usr/share/zoneinfo/America/La_Paz +#usr/share/zoneinfo/America/Lima +#usr/share/zoneinfo/America/Los_Angeles +#usr/share/zoneinfo/America/Louisville +#usr/share/zoneinfo/America/Maceio +#usr/share/zoneinfo/America/Managua +#usr/share/zoneinfo/America/Manaus +#usr/share/zoneinfo/America/Marigot +#usr/share/zoneinfo/America/Martinique +#usr/share/zoneinfo/America/Mazatlan +#usr/share/zoneinfo/America/Mendoza +#usr/share/zoneinfo/America/Menominee +#usr/share/zoneinfo/America/Merida +#usr/share/zoneinfo/America/Mexico_City +#usr/share/zoneinfo/America/Miquelon +#usr/share/zoneinfo/America/Moncton +#usr/share/zoneinfo/America/Monterrey +#usr/share/zoneinfo/America/Montevideo +#usr/share/zoneinfo/America/Montreal +#usr/share/zoneinfo/America/Montserrat +#usr/share/zoneinfo/America/Nassau +#usr/share/zoneinfo/America/New_York +#usr/share/zoneinfo/America/Nipigon +#usr/share/zoneinfo/America/Nome +#usr/share/zoneinfo/America/Noronha +#usr/share/zoneinfo/America/North_Dakota +#usr/share/zoneinfo/America/North_Dakota/Center +#usr/share/zoneinfo/America/North_Dakota/New_Salem +#usr/share/zoneinfo/America/Panama +#usr/share/zoneinfo/America/Pangnirtung +#usr/share/zoneinfo/America/Paramaribo +#usr/share/zoneinfo/America/Phoenix +#usr/share/zoneinfo/America/Port-au-Prince +#usr/share/zoneinfo/America/Port_of_Spain +#usr/share/zoneinfo/America/Porto_Acre +#usr/share/zoneinfo/America/Porto_Velho +#usr/share/zoneinfo/America/Puerto_Rico +#usr/share/zoneinfo/America/Rainy_River +#usr/share/zoneinfo/America/Rankin_Inlet +#usr/share/zoneinfo/America/Recife +#usr/share/zoneinfo/America/Regina +#usr/share/zoneinfo/America/Resolute +#usr/share/zoneinfo/America/Rio_Branco +#usr/share/zoneinfo/America/Rosario +#usr/share/zoneinfo/America/Santarem +#usr/share/zoneinfo/America/Santiago +#usr/share/zoneinfo/America/Santo_Domingo +#usr/share/zoneinfo/America/Sao_Paulo +#usr/share/zoneinfo/America/Scoresbysund +#usr/share/zoneinfo/America/Shiprock +#usr/share/zoneinfo/America/St_Barthelemy +#usr/share/zoneinfo/America/St_Johns +#usr/share/zoneinfo/America/St_Kitts +#usr/share/zoneinfo/America/St_Lucia +#usr/share/zoneinfo/America/St_Thomas +#usr/share/zoneinfo/America/St_Vincent +#usr/share/zoneinfo/America/Swift_Current +#usr/share/zoneinfo/America/Tegucigalpa +#usr/share/zoneinfo/America/Thule +#usr/share/zoneinfo/America/Thunder_Bay +#usr/share/zoneinfo/America/Tijuana +#usr/share/zoneinfo/America/Toronto +#usr/share/zoneinfo/America/Tortola +#usr/share/zoneinfo/America/Vancouver +#usr/share/zoneinfo/America/Virgin +#usr/share/zoneinfo/America/Whitehorse +#usr/share/zoneinfo/America/Winnipeg +#usr/share/zoneinfo/America/Yakutat +#usr/share/zoneinfo/America/Yellowknife +#usr/share/zoneinfo/Antarctica +#usr/share/zoneinfo/Antarctica/Casey +#usr/share/zoneinfo/Antarctica/Davis +#usr/share/zoneinfo/Antarctica/DumontDUrville +#usr/share/zoneinfo/Antarctica/Mawson +#usr/share/zoneinfo/Antarctica/McMurdo +#usr/share/zoneinfo/Antarctica/Palmer +#usr/share/zoneinfo/Antarctica/Rothera +#usr/share/zoneinfo/Antarctica/South_Pole +#usr/share/zoneinfo/Antarctica/Syowa +#usr/share/zoneinfo/Antarctica/Vostok +#usr/share/zoneinfo/Arctic +#usr/share/zoneinfo/Arctic/Longyearbyen +#usr/share/zoneinfo/Asia +#usr/share/zoneinfo/Asia/Aden +#usr/share/zoneinfo/Asia/Almaty +#usr/share/zoneinfo/Asia/Amman +#usr/share/zoneinfo/Asia/Anadyr +#usr/share/zoneinfo/Asia/Aqtau +#usr/share/zoneinfo/Asia/Aqtobe +#usr/share/zoneinfo/Asia/Ashgabat +#usr/share/zoneinfo/Asia/Ashkhabad +#usr/share/zoneinfo/Asia/Baghdad +#usr/share/zoneinfo/Asia/Bahrain +#usr/share/zoneinfo/Asia/Baku +#usr/share/zoneinfo/Asia/Bangkok +#usr/share/zoneinfo/Asia/Beirut +#usr/share/zoneinfo/Asia/Bishkek +#usr/share/zoneinfo/Asia/Brunei +#usr/share/zoneinfo/Asia/Calcutta +#usr/share/zoneinfo/Asia/Choibalsan +#usr/share/zoneinfo/Asia/Chongqing +#usr/share/zoneinfo/Asia/Chungking +#usr/share/zoneinfo/Asia/Colombo +#usr/share/zoneinfo/Asia/Dacca +#usr/share/zoneinfo/Asia/Damascus +#usr/share/zoneinfo/Asia/Dhaka +#usr/share/zoneinfo/Asia/Dili +#usr/share/zoneinfo/Asia/Dubai +#usr/share/zoneinfo/Asia/Dushanbe +#usr/share/zoneinfo/Asia/Gaza +#usr/share/zoneinfo/Asia/Harbin +#usr/share/zoneinfo/Asia/Ho_Chi_Minh +#usr/share/zoneinfo/Asia/Hong_Kong +#usr/share/zoneinfo/Asia/Hovd +#usr/share/zoneinfo/Asia/Irkutsk +#usr/share/zoneinfo/Asia/Istanbul +#usr/share/zoneinfo/Asia/Jakarta +#usr/share/zoneinfo/Asia/Jayapura +#usr/share/zoneinfo/Asia/Jerusalem +#usr/share/zoneinfo/Asia/Kabul +#usr/share/zoneinfo/Asia/Kamchatka +#usr/share/zoneinfo/Asia/Karachi +#usr/share/zoneinfo/Asia/Kashgar +#usr/share/zoneinfo/Asia/Kathmandu +#usr/share/zoneinfo/Asia/Katmandu +#usr/share/zoneinfo/Asia/Kolkata +#usr/share/zoneinfo/Asia/Krasnoyarsk +#usr/share/zoneinfo/Asia/Kuala_Lumpur +#usr/share/zoneinfo/Asia/Kuching +#usr/share/zoneinfo/Asia/Kuwait +#usr/share/zoneinfo/Asia/Macao +#usr/share/zoneinfo/Asia/Macau +#usr/share/zoneinfo/Asia/Magadan +#usr/share/zoneinfo/Asia/Makassar +#usr/share/zoneinfo/Asia/Manila +#usr/share/zoneinfo/Asia/Muscat +#usr/share/zoneinfo/Asia/Nicosia +#usr/share/zoneinfo/Asia/Novosibirsk +#usr/share/zoneinfo/Asia/Omsk +#usr/share/zoneinfo/Asia/Oral +#usr/share/zoneinfo/Asia/Phnom_Penh +#usr/share/zoneinfo/Asia/Pontianak +#usr/share/zoneinfo/Asia/Pyongyang +#usr/share/zoneinfo/Asia/Qatar +#usr/share/zoneinfo/Asia/Qyzylorda +#usr/share/zoneinfo/Asia/Rangoon +#usr/share/zoneinfo/Asia/Riyadh +#usr/share/zoneinfo/Asia/Riyadh87 +#usr/share/zoneinfo/Asia/Riyadh88 +#usr/share/zoneinfo/Asia/Riyadh89 +#usr/share/zoneinfo/Asia/Saigon +#usr/share/zoneinfo/Asia/Sakhalin +#usr/share/zoneinfo/Asia/Samarkand +#usr/share/zoneinfo/Asia/Seoul +#usr/share/zoneinfo/Asia/Shanghai +#usr/share/zoneinfo/Asia/Singapore +#usr/share/zoneinfo/Asia/Taipei +#usr/share/zoneinfo/Asia/Tashkent +#usr/share/zoneinfo/Asia/Tbilisi +#usr/share/zoneinfo/Asia/Tehran +#usr/share/zoneinfo/Asia/Tel_Aviv +#usr/share/zoneinfo/Asia/Thimbu +#usr/share/zoneinfo/Asia/Thimphu +#usr/share/zoneinfo/Asia/Tokyo +#usr/share/zoneinfo/Asia/Ujung_Pandang +#usr/share/zoneinfo/Asia/Ulaanbaatar +#usr/share/zoneinfo/Asia/Ulan_Bator +#usr/share/zoneinfo/Asia/Urumqi +#usr/share/zoneinfo/Asia/Vientiane +#usr/share/zoneinfo/Asia/Vladivostok +#usr/share/zoneinfo/Asia/Yakutsk +#usr/share/zoneinfo/Asia/Yekaterinburg +#usr/share/zoneinfo/Asia/Yerevan +#usr/share/zoneinfo/Atlantic +#usr/share/zoneinfo/Atlantic/Azores +#usr/share/zoneinfo/Atlantic/Bermuda +#usr/share/zoneinfo/Atlantic/Canary +#usr/share/zoneinfo/Atlantic/Cape_Verde +#usr/share/zoneinfo/Atlantic/Faeroe +#usr/share/zoneinfo/Atlantic/Faroe +#usr/share/zoneinfo/Atlantic/Jan_Mayen +#usr/share/zoneinfo/Atlantic/Madeira +#usr/share/zoneinfo/Atlantic/Reykjavik +#usr/share/zoneinfo/Atlantic/South_Georgia +#usr/share/zoneinfo/Atlantic/St_Helena +#usr/share/zoneinfo/Atlantic/Stanley +#usr/share/zoneinfo/Australia +#usr/share/zoneinfo/Australia/ACT +#usr/share/zoneinfo/Australia/Adelaide +#usr/share/zoneinfo/Australia/Brisbane +#usr/share/zoneinfo/Australia/Broken_Hill +#usr/share/zoneinfo/Australia/Canberra +#usr/share/zoneinfo/Australia/Currie +#usr/share/zoneinfo/Australia/Darwin +#usr/share/zoneinfo/Australia/Eucla +#usr/share/zoneinfo/Australia/Hobart +#usr/share/zoneinfo/Australia/LHI +#usr/share/zoneinfo/Australia/Lindeman +#usr/share/zoneinfo/Australia/Lord_Howe +#usr/share/zoneinfo/Australia/Melbourne +#usr/share/zoneinfo/Australia/NSW +#usr/share/zoneinfo/Australia/North +#usr/share/zoneinfo/Australia/Perth +#usr/share/zoneinfo/Australia/Queensland +#usr/share/zoneinfo/Australia/South +#usr/share/zoneinfo/Australia/Sydney +#usr/share/zoneinfo/Australia/Tasmania +#usr/share/zoneinfo/Australia/Victoria +#usr/share/zoneinfo/Australia/West +#usr/share/zoneinfo/Australia/Yancowinna +#usr/share/zoneinfo/Brazil +#usr/share/zoneinfo/Brazil/Acre +#usr/share/zoneinfo/Brazil/DeNoronha +#usr/share/zoneinfo/Brazil/East +#usr/share/zoneinfo/Brazil/West +#usr/share/zoneinfo/CET +#usr/share/zoneinfo/CST6CDT +#usr/share/zoneinfo/Canada +#usr/share/zoneinfo/Canada/Atlantic +#usr/share/zoneinfo/Canada/Central +#usr/share/zoneinfo/Canada/East-Saskatchewan +#usr/share/zoneinfo/Canada/Eastern +#usr/share/zoneinfo/Canada/Mountain +#usr/share/zoneinfo/Canada/Newfoundland +#usr/share/zoneinfo/Canada/Pacific +#usr/share/zoneinfo/Canada/Saskatchewan +#usr/share/zoneinfo/Canada/Yukon +#usr/share/zoneinfo/Chile +#usr/share/zoneinfo/Chile/Continental +#usr/share/zoneinfo/Chile/EasterIsland +#usr/share/zoneinfo/Cuba +#usr/share/zoneinfo/EET +#usr/share/zoneinfo/EST +#usr/share/zoneinfo/EST5EDT +#usr/share/zoneinfo/Egypt +#usr/share/zoneinfo/Eire +#usr/share/zoneinfo/Etc +#usr/share/zoneinfo/Etc/GMT +#usr/share/zoneinfo/Etc/GMT+0 +#usr/share/zoneinfo/Etc/GMT+1 +#usr/share/zoneinfo/Etc/GMT+10 +#usr/share/zoneinfo/Etc/GMT+11 +#usr/share/zoneinfo/Etc/GMT+12 +#usr/share/zoneinfo/Etc/GMT+2 +#usr/share/zoneinfo/Etc/GMT+3 +#usr/share/zoneinfo/Etc/GMT+4 +#usr/share/zoneinfo/Etc/GMT+5 +#usr/share/zoneinfo/Etc/GMT+6 +#usr/share/zoneinfo/Etc/GMT+7 +#usr/share/zoneinfo/Etc/GMT+8 +#usr/share/zoneinfo/Etc/GMT+9 +#usr/share/zoneinfo/Etc/GMT-0 +#usr/share/zoneinfo/Etc/GMT-1 +#usr/share/zoneinfo/Etc/GMT-10 +#usr/share/zoneinfo/Etc/GMT-11 +#usr/share/zoneinfo/Etc/GMT-12 +#usr/share/zoneinfo/Etc/GMT-13 +#usr/share/zoneinfo/Etc/GMT-14 +#usr/share/zoneinfo/Etc/GMT-2 +#usr/share/zoneinfo/Etc/GMT-3 +#usr/share/zoneinfo/Etc/GMT-4 +#usr/share/zoneinfo/Etc/GMT-5 +#usr/share/zoneinfo/Etc/GMT-6 +#usr/share/zoneinfo/Etc/GMT-7 +#usr/share/zoneinfo/Etc/GMT-8 +#usr/share/zoneinfo/Etc/GMT-9 +#usr/share/zoneinfo/Etc/GMT0 +#usr/share/zoneinfo/Etc/Greenwich +#usr/share/zoneinfo/Etc/UCT +#usr/share/zoneinfo/Etc/UTC +#usr/share/zoneinfo/Etc/Universal +#usr/share/zoneinfo/Etc/Zulu +#usr/share/zoneinfo/Europe +#usr/share/zoneinfo/Europe/Amsterdam +#usr/share/zoneinfo/Europe/Andorra +#usr/share/zoneinfo/Europe/Athens +#usr/share/zoneinfo/Europe/Belfast +#usr/share/zoneinfo/Europe/Belgrade +#usr/share/zoneinfo/Europe/Berlin +#usr/share/zoneinfo/Europe/Bratislava +#usr/share/zoneinfo/Europe/Brussels +#usr/share/zoneinfo/Europe/Bucharest +#usr/share/zoneinfo/Europe/Budapest +#usr/share/zoneinfo/Europe/Chisinau +#usr/share/zoneinfo/Europe/Copenhagen +#usr/share/zoneinfo/Europe/Dublin +#usr/share/zoneinfo/Europe/Gibraltar +#usr/share/zoneinfo/Europe/Guernsey +#usr/share/zoneinfo/Europe/Helsinki +#usr/share/zoneinfo/Europe/Isle_of_Man +#usr/share/zoneinfo/Europe/Istanbul +#usr/share/zoneinfo/Europe/Jersey +#usr/share/zoneinfo/Europe/Kaliningrad +#usr/share/zoneinfo/Europe/Kiev +#usr/share/zoneinfo/Europe/Lisbon +#usr/share/zoneinfo/Europe/Ljubljana +#usr/share/zoneinfo/Europe/London +#usr/share/zoneinfo/Europe/Luxembourg +#usr/share/zoneinfo/Europe/Madrid +#usr/share/zoneinfo/Europe/Malta +#usr/share/zoneinfo/Europe/Mariehamn +#usr/share/zoneinfo/Europe/Minsk +#usr/share/zoneinfo/Europe/Monaco +#usr/share/zoneinfo/Europe/Moscow +#usr/share/zoneinfo/Europe/Nicosia +#usr/share/zoneinfo/Europe/Oslo +#usr/share/zoneinfo/Europe/Paris +#usr/share/zoneinfo/Europe/Podgorica +#usr/share/zoneinfo/Europe/Prague +#usr/share/zoneinfo/Europe/Riga +#usr/share/zoneinfo/Europe/Rome +#usr/share/zoneinfo/Europe/Samara +#usr/share/zoneinfo/Europe/San_Marino +#usr/share/zoneinfo/Europe/Sarajevo +#usr/share/zoneinfo/Europe/Simferopol +#usr/share/zoneinfo/Europe/Skopje +#usr/share/zoneinfo/Europe/Sofia +#usr/share/zoneinfo/Europe/Stockholm +#usr/share/zoneinfo/Europe/Tallinn +#usr/share/zoneinfo/Europe/Tirane +#usr/share/zoneinfo/Europe/Tiraspol +#usr/share/zoneinfo/Europe/Uzhgorod +#usr/share/zoneinfo/Europe/Vaduz +#usr/share/zoneinfo/Europe/Vatican +#usr/share/zoneinfo/Europe/Vienna +#usr/share/zoneinfo/Europe/Vilnius +#usr/share/zoneinfo/Europe/Volgograd +#usr/share/zoneinfo/Europe/Warsaw +#usr/share/zoneinfo/Europe/Zagreb +#usr/share/zoneinfo/Europe/Zaporozhye +#usr/share/zoneinfo/Europe/Zurich +#usr/share/zoneinfo/Factory +#usr/share/zoneinfo/GB +#usr/share/zoneinfo/GB-Eire +#usr/share/zoneinfo/GMT +#usr/share/zoneinfo/GMT+0 +#usr/share/zoneinfo/GMT-0 +#usr/share/zoneinfo/GMT0 +#usr/share/zoneinfo/Greenwich +#usr/share/zoneinfo/HST +#usr/share/zoneinfo/Hongkong +#usr/share/zoneinfo/Iceland +#usr/share/zoneinfo/Indian +#usr/share/zoneinfo/Indian/Antananarivo +#usr/share/zoneinfo/Indian/Chagos +#usr/share/zoneinfo/Indian/Christmas +#usr/share/zoneinfo/Indian/Cocos +#usr/share/zoneinfo/Indian/Comoro +#usr/share/zoneinfo/Indian/Kerguelen +#usr/share/zoneinfo/Indian/Mahe +#usr/share/zoneinfo/Indian/Maldives +#usr/share/zoneinfo/Indian/Mauritius +#usr/share/zoneinfo/Indian/Mayotte +#usr/share/zoneinfo/Indian/Reunion +#usr/share/zoneinfo/Iran +#usr/share/zoneinfo/Israel +#usr/share/zoneinfo/Jamaica +#usr/share/zoneinfo/Japan +#usr/share/zoneinfo/Kwajalein +#usr/share/zoneinfo/Libya +#usr/share/zoneinfo/MET +#usr/share/zoneinfo/MST +#usr/share/zoneinfo/MST7MDT +#usr/share/zoneinfo/Mexico +#usr/share/zoneinfo/Mexico/BajaNorte +#usr/share/zoneinfo/Mexico/BajaSur +#usr/share/zoneinfo/Mexico/General +#usr/share/zoneinfo/Mideast +#usr/share/zoneinfo/Mideast/Riyadh87 +#usr/share/zoneinfo/Mideast/Riyadh88 +#usr/share/zoneinfo/Mideast/Riyadh89 +#usr/share/zoneinfo/NZ +#usr/share/zoneinfo/NZ-CHAT +#usr/share/zoneinfo/Navajo +#usr/share/zoneinfo/PRC +#usr/share/zoneinfo/PST8PDT +#usr/share/zoneinfo/Pacific +#usr/share/zoneinfo/Pacific/Apia +#usr/share/zoneinfo/Pacific/Auckland +#usr/share/zoneinfo/Pacific/Chatham +#usr/share/zoneinfo/Pacific/Easter +#usr/share/zoneinfo/Pacific/Efate +#usr/share/zoneinfo/Pacific/Enderbury +#usr/share/zoneinfo/Pacific/Fakaofo +#usr/share/zoneinfo/Pacific/Fiji +#usr/share/zoneinfo/Pacific/Funafuti +#usr/share/zoneinfo/Pacific/Galapagos +#usr/share/zoneinfo/Pacific/Gambier +#usr/share/zoneinfo/Pacific/Guadalcanal +#usr/share/zoneinfo/Pacific/Guam +#usr/share/zoneinfo/Pacific/Honolulu +#usr/share/zoneinfo/Pacific/Johnston +#usr/share/zoneinfo/Pacific/Kiritimati +#usr/share/zoneinfo/Pacific/Kosrae +#usr/share/zoneinfo/Pacific/Kwajalein +#usr/share/zoneinfo/Pacific/Majuro +#usr/share/zoneinfo/Pacific/Marquesas +#usr/share/zoneinfo/Pacific/Midway +#usr/share/zoneinfo/Pacific/Nauru +#usr/share/zoneinfo/Pacific/Niue +#usr/share/zoneinfo/Pacific/Norfolk +#usr/share/zoneinfo/Pacific/Noumea +#usr/share/zoneinfo/Pacific/Pago_Pago +#usr/share/zoneinfo/Pacific/Palau +#usr/share/zoneinfo/Pacific/Pitcairn +#usr/share/zoneinfo/Pacific/Ponape +#usr/share/zoneinfo/Pacific/Port_Moresby +#usr/share/zoneinfo/Pacific/Rarotonga +#usr/share/zoneinfo/Pacific/Saipan +#usr/share/zoneinfo/Pacific/Samoa +#usr/share/zoneinfo/Pacific/Tahiti +#usr/share/zoneinfo/Pacific/Tarawa +#usr/share/zoneinfo/Pacific/Tongatapu +#usr/share/zoneinfo/Pacific/Truk +#usr/share/zoneinfo/Pacific/Wake +#usr/share/zoneinfo/Pacific/Wallis +#usr/share/zoneinfo/Pacific/Yap +#usr/share/zoneinfo/Poland +#usr/share/zoneinfo/Portugal +#usr/share/zoneinfo/ROC +#usr/share/zoneinfo/ROK +#usr/share/zoneinfo/Singapore +#usr/share/zoneinfo/Turkey +#usr/share/zoneinfo/UCT +#usr/share/zoneinfo/US +#usr/share/zoneinfo/US/Alaska +#usr/share/zoneinfo/US/Aleutian +#usr/share/zoneinfo/US/Arizona +#usr/share/zoneinfo/US/Central +#usr/share/zoneinfo/US/East-Indiana +#usr/share/zoneinfo/US/Eastern +#usr/share/zoneinfo/US/Hawaii +#usr/share/zoneinfo/US/Indiana-Starke +#usr/share/zoneinfo/US/Michigan +#usr/share/zoneinfo/US/Mountain +#usr/share/zoneinfo/US/Pacific +#usr/share/zoneinfo/US/Samoa +#usr/share/zoneinfo/UTC +#usr/share/zoneinfo/Universal +#usr/share/zoneinfo/W-SU +#usr/share/zoneinfo/WET +#usr/share/zoneinfo/Zulu #usr/share/zoneinfo/iso3166.tab +usr/share/zoneinfo/posix +#usr/share/zoneinfo/posix/Africa +#usr/share/zoneinfo/posix/Africa/Abidjan +#usr/share/zoneinfo/posix/Africa/Accra +#usr/share/zoneinfo/posix/Africa/Addis_Ababa +#usr/share/zoneinfo/posix/Africa/Algiers +#usr/share/zoneinfo/posix/Africa/Asmara +#usr/share/zoneinfo/posix/Africa/Asmera +#usr/share/zoneinfo/posix/Africa/Bamako +#usr/share/zoneinfo/posix/Africa/Bangui +#usr/share/zoneinfo/posix/Africa/Banjul +#usr/share/zoneinfo/posix/Africa/Bissau +#usr/share/zoneinfo/posix/Africa/Blantyre +#usr/share/zoneinfo/posix/Africa/Brazzaville +#usr/share/zoneinfo/posix/Africa/Bujumbura +#usr/share/zoneinfo/posix/Africa/Cairo +#usr/share/zoneinfo/posix/Africa/Casablanca +#usr/share/zoneinfo/posix/Africa/Ceuta +#usr/share/zoneinfo/posix/Africa/Conakry +#usr/share/zoneinfo/posix/Africa/Dakar +#usr/share/zoneinfo/posix/Africa/Dar_es_Salaam +#usr/share/zoneinfo/posix/Africa/Djibouti +#usr/share/zoneinfo/posix/Africa/Douala +#usr/share/zoneinfo/posix/Africa/El_Aaiun +#usr/share/zoneinfo/posix/Africa/Freetown +#usr/share/zoneinfo/posix/Africa/Gaborone +#usr/share/zoneinfo/posix/Africa/Harare +#usr/share/zoneinfo/posix/Africa/Johannesburg +#usr/share/zoneinfo/posix/Africa/Kampala +#usr/share/zoneinfo/posix/Africa/Khartoum +#usr/share/zoneinfo/posix/Africa/Kigali +#usr/share/zoneinfo/posix/Africa/Kinshasa +#usr/share/zoneinfo/posix/Africa/Lagos +#usr/share/zoneinfo/posix/Africa/Libreville +#usr/share/zoneinfo/posix/Africa/Lome +#usr/share/zoneinfo/posix/Africa/Luanda +#usr/share/zoneinfo/posix/Africa/Lubumbashi +#usr/share/zoneinfo/posix/Africa/Lusaka +#usr/share/zoneinfo/posix/Africa/Malabo +#usr/share/zoneinfo/posix/Africa/Maputo +#usr/share/zoneinfo/posix/Africa/Maseru +#usr/share/zoneinfo/posix/Africa/Mbabane +#usr/share/zoneinfo/posix/Africa/Mogadishu +#usr/share/zoneinfo/posix/Africa/Monrovia +#usr/share/zoneinfo/posix/Africa/Nairobi +#usr/share/zoneinfo/posix/Africa/Ndjamena +#usr/share/zoneinfo/posix/Africa/Niamey +#usr/share/zoneinfo/posix/Africa/Nouakchott +#usr/share/zoneinfo/posix/Africa/Ouagadougou +#usr/share/zoneinfo/posix/Africa/Porto-Novo +#usr/share/zoneinfo/posix/Africa/Sao_Tome +#usr/share/zoneinfo/posix/Africa/Timbuktu +#usr/share/zoneinfo/posix/Africa/Tripoli +#usr/share/zoneinfo/posix/Africa/Tunis +#usr/share/zoneinfo/posix/Africa/Windhoek +#usr/share/zoneinfo/posix/America +#usr/share/zoneinfo/posix/America/Adak +#usr/share/zoneinfo/posix/America/Anchorage +#usr/share/zoneinfo/posix/America/Anguilla +#usr/share/zoneinfo/posix/America/Antigua +#usr/share/zoneinfo/posix/America/Araguaina +#usr/share/zoneinfo/posix/America/Argentina +#usr/share/zoneinfo/posix/America/Argentina/Buenos_Aires +#usr/share/zoneinfo/posix/America/Argentina/Catamarca +#usr/share/zoneinfo/posix/America/Argentina/ComodRivadavia +#usr/share/zoneinfo/posix/America/Argentina/Cordoba +#usr/share/zoneinfo/posix/America/Argentina/Jujuy +#usr/share/zoneinfo/posix/America/Argentina/La_Rioja +#usr/share/zoneinfo/posix/America/Argentina/Mendoza +#usr/share/zoneinfo/posix/America/Argentina/Rio_Gallegos +#usr/share/zoneinfo/posix/America/Argentina/Salta +#usr/share/zoneinfo/posix/America/Argentina/San_Juan +#usr/share/zoneinfo/posix/America/Argentina/San_Luis +#usr/share/zoneinfo/posix/America/Argentina/Tucuman +#usr/share/zoneinfo/posix/America/Argentina/Ushuaia +#usr/share/zoneinfo/posix/America/Aruba +#usr/share/zoneinfo/posix/America/Asuncion +#usr/share/zoneinfo/posix/America/Atikokan +#usr/share/zoneinfo/posix/America/Atka +#usr/share/zoneinfo/posix/America/Bahia +#usr/share/zoneinfo/posix/America/Barbados +#usr/share/zoneinfo/posix/America/Belem +#usr/share/zoneinfo/posix/America/Belize +#usr/share/zoneinfo/posix/America/Blanc-Sablon +#usr/share/zoneinfo/posix/America/Boa_Vista +#usr/share/zoneinfo/posix/America/Bogota +#usr/share/zoneinfo/posix/America/Boise +#usr/share/zoneinfo/posix/America/Buenos_Aires +#usr/share/zoneinfo/posix/America/Cambridge_Bay +#usr/share/zoneinfo/posix/America/Campo_Grande +#usr/share/zoneinfo/posix/America/Cancun +#usr/share/zoneinfo/posix/America/Caracas +#usr/share/zoneinfo/posix/America/Catamarca +#usr/share/zoneinfo/posix/America/Cayenne +#usr/share/zoneinfo/posix/America/Cayman +#usr/share/zoneinfo/posix/America/Chicago +#usr/share/zoneinfo/posix/America/Chihuahua +#usr/share/zoneinfo/posix/America/Coral_Harbour +#usr/share/zoneinfo/posix/America/Cordoba +#usr/share/zoneinfo/posix/America/Costa_Rica +#usr/share/zoneinfo/posix/America/Cuiaba +#usr/share/zoneinfo/posix/America/Curacao +#usr/share/zoneinfo/posix/America/Danmarkshavn +#usr/share/zoneinfo/posix/America/Dawson +#usr/share/zoneinfo/posix/America/Dawson_Creek +#usr/share/zoneinfo/posix/America/Denver +#usr/share/zoneinfo/posix/America/Detroit +#usr/share/zoneinfo/posix/America/Dominica +#usr/share/zoneinfo/posix/America/Edmonton +#usr/share/zoneinfo/posix/America/Eirunepe +#usr/share/zoneinfo/posix/America/El_Salvador +#usr/share/zoneinfo/posix/America/Ensenada +#usr/share/zoneinfo/posix/America/Fort_Wayne +#usr/share/zoneinfo/posix/America/Fortaleza +#usr/share/zoneinfo/posix/America/Glace_Bay +#usr/share/zoneinfo/posix/America/Godthab +#usr/share/zoneinfo/posix/America/Goose_Bay +#usr/share/zoneinfo/posix/America/Grand_Turk +#usr/share/zoneinfo/posix/America/Grenada +#usr/share/zoneinfo/posix/America/Guadeloupe +#usr/share/zoneinfo/posix/America/Guatemala +#usr/share/zoneinfo/posix/America/Guayaquil +#usr/share/zoneinfo/posix/America/Guyana +#usr/share/zoneinfo/posix/America/Halifax +#usr/share/zoneinfo/posix/America/Havana +#usr/share/zoneinfo/posix/America/Hermosillo +#usr/share/zoneinfo/posix/America/Indiana +#usr/share/zoneinfo/posix/America/Indiana/Indianapolis +#usr/share/zoneinfo/posix/America/Indiana/Knox +#usr/share/zoneinfo/posix/America/Indiana/Marengo +#usr/share/zoneinfo/posix/America/Indiana/Petersburg +#usr/share/zoneinfo/posix/America/Indiana/Tell_City +#usr/share/zoneinfo/posix/America/Indiana/Vevay +#usr/share/zoneinfo/posix/America/Indiana/Vincennes +#usr/share/zoneinfo/posix/America/Indiana/Winamac +#usr/share/zoneinfo/posix/America/Indianapolis +#usr/share/zoneinfo/posix/America/Inuvik +#usr/share/zoneinfo/posix/America/Iqaluit +#usr/share/zoneinfo/posix/America/Jamaica +#usr/share/zoneinfo/posix/America/Jujuy +#usr/share/zoneinfo/posix/America/Juneau +#usr/share/zoneinfo/posix/America/Kentucky +#usr/share/zoneinfo/posix/America/Kentucky/Louisville +#usr/share/zoneinfo/posix/America/Kentucky/Monticello +#usr/share/zoneinfo/posix/America/Knox_IN +#usr/share/zoneinfo/posix/America/La_Paz +#usr/share/zoneinfo/posix/America/Lima +#usr/share/zoneinfo/posix/America/Los_Angeles +#usr/share/zoneinfo/posix/America/Louisville +#usr/share/zoneinfo/posix/America/Maceio +#usr/share/zoneinfo/posix/America/Managua +#usr/share/zoneinfo/posix/America/Manaus +#usr/share/zoneinfo/posix/America/Marigot +#usr/share/zoneinfo/posix/America/Martinique +#usr/share/zoneinfo/posix/America/Mazatlan +#usr/share/zoneinfo/posix/America/Mendoza +#usr/share/zoneinfo/posix/America/Menominee +#usr/share/zoneinfo/posix/America/Merida +#usr/share/zoneinfo/posix/America/Mexico_City +#usr/share/zoneinfo/posix/America/Miquelon +#usr/share/zoneinfo/posix/America/Moncton +#usr/share/zoneinfo/posix/America/Monterrey +#usr/share/zoneinfo/posix/America/Montevideo +#usr/share/zoneinfo/posix/America/Montreal +#usr/share/zoneinfo/posix/America/Montserrat +#usr/share/zoneinfo/posix/America/Nassau +#usr/share/zoneinfo/posix/America/New_York +#usr/share/zoneinfo/posix/America/Nipigon +#usr/share/zoneinfo/posix/America/Nome +#usr/share/zoneinfo/posix/America/Noronha +#usr/share/zoneinfo/posix/America/North_Dakota +#usr/share/zoneinfo/posix/America/North_Dakota/Center +#usr/share/zoneinfo/posix/America/North_Dakota/New_Salem +#usr/share/zoneinfo/posix/America/Panama +#usr/share/zoneinfo/posix/America/Pangnirtung +#usr/share/zoneinfo/posix/America/Paramaribo +#usr/share/zoneinfo/posix/America/Phoenix +#usr/share/zoneinfo/posix/America/Port-au-Prince +#usr/share/zoneinfo/posix/America/Port_of_Spain +#usr/share/zoneinfo/posix/America/Porto_Acre +#usr/share/zoneinfo/posix/America/Porto_Velho +#usr/share/zoneinfo/posix/America/Puerto_Rico +#usr/share/zoneinfo/posix/America/Rainy_River +#usr/share/zoneinfo/posix/America/Rankin_Inlet +#usr/share/zoneinfo/posix/America/Recife +#usr/share/zoneinfo/posix/America/Regina +#usr/share/zoneinfo/posix/America/Resolute +#usr/share/zoneinfo/posix/America/Rio_Branco +#usr/share/zoneinfo/posix/America/Rosario +#usr/share/zoneinfo/posix/America/Santarem +#usr/share/zoneinfo/posix/America/Santiago +#usr/share/zoneinfo/posix/America/Santo_Domingo +#usr/share/zoneinfo/posix/America/Sao_Paulo +#usr/share/zoneinfo/posix/America/Scoresbysund +#usr/share/zoneinfo/posix/America/Shiprock +#usr/share/zoneinfo/posix/America/St_Barthelemy +#usr/share/zoneinfo/posix/America/St_Johns +#usr/share/zoneinfo/posix/America/St_Kitts +#usr/share/zoneinfo/posix/America/St_Lucia +#usr/share/zoneinfo/posix/America/St_Thomas +#usr/share/zoneinfo/posix/America/St_Vincent +#usr/share/zoneinfo/posix/America/Swift_Current +#usr/share/zoneinfo/posix/America/Tegucigalpa +#usr/share/zoneinfo/posix/America/Thule +#usr/share/zoneinfo/posix/America/Thunder_Bay +#usr/share/zoneinfo/posix/America/Tijuana +#usr/share/zoneinfo/posix/America/Toronto +#usr/share/zoneinfo/posix/America/Tortola +#usr/share/zoneinfo/posix/America/Vancouver +#usr/share/zoneinfo/posix/America/Virgin +#usr/share/zoneinfo/posix/America/Whitehorse +#usr/share/zoneinfo/posix/America/Winnipeg +#usr/share/zoneinfo/posix/America/Yakutat +#usr/share/zoneinfo/posix/America/Yellowknife +#usr/share/zoneinfo/posix/Antarctica +#usr/share/zoneinfo/posix/Antarctica/Casey +#usr/share/zoneinfo/posix/Antarctica/Davis +#usr/share/zoneinfo/posix/Antarctica/DumontDUrville +#usr/share/zoneinfo/posix/Antarctica/Mawson +#usr/share/zoneinfo/posix/Antarctica/McMurdo +#usr/share/zoneinfo/posix/Antarctica/Palmer +#usr/share/zoneinfo/posix/Antarctica/Rothera +#usr/share/zoneinfo/posix/Antarctica/South_Pole +#usr/share/zoneinfo/posix/Antarctica/Syowa +#usr/share/zoneinfo/posix/Antarctica/Vostok +#usr/share/zoneinfo/posix/Arctic +#usr/share/zoneinfo/posix/Arctic/Longyearbyen +#usr/share/zoneinfo/posix/Asia +#usr/share/zoneinfo/posix/Asia/Aden +#usr/share/zoneinfo/posix/Asia/Almaty +#usr/share/zoneinfo/posix/Asia/Amman +#usr/share/zoneinfo/posix/Asia/Anadyr +#usr/share/zoneinfo/posix/Asia/Aqtau +#usr/share/zoneinfo/posix/Asia/Aqtobe +#usr/share/zoneinfo/posix/Asia/Ashgabat +#usr/share/zoneinfo/posix/Asia/Ashkhabad +#usr/share/zoneinfo/posix/Asia/Baghdad +#usr/share/zoneinfo/posix/Asia/Bahrain +#usr/share/zoneinfo/posix/Asia/Baku +#usr/share/zoneinfo/posix/Asia/Bangkok +#usr/share/zoneinfo/posix/Asia/Beirut +#usr/share/zoneinfo/posix/Asia/Bishkek +#usr/share/zoneinfo/posix/Asia/Brunei +#usr/share/zoneinfo/posix/Asia/Calcutta +#usr/share/zoneinfo/posix/Asia/Choibalsan +#usr/share/zoneinfo/posix/Asia/Chongqing +#usr/share/zoneinfo/posix/Asia/Chungking +#usr/share/zoneinfo/posix/Asia/Colombo +#usr/share/zoneinfo/posix/Asia/Dacca +#usr/share/zoneinfo/posix/Asia/Damascus +#usr/share/zoneinfo/posix/Asia/Dhaka +#usr/share/zoneinfo/posix/Asia/Dili +#usr/share/zoneinfo/posix/Asia/Dubai +#usr/share/zoneinfo/posix/Asia/Dushanbe +#usr/share/zoneinfo/posix/Asia/Gaza +#usr/share/zoneinfo/posix/Asia/Harbin +#usr/share/zoneinfo/posix/Asia/Ho_Chi_Minh +#usr/share/zoneinfo/posix/Asia/Hong_Kong +#usr/share/zoneinfo/posix/Asia/Hovd +#usr/share/zoneinfo/posix/Asia/Irkutsk +#usr/share/zoneinfo/posix/Asia/Istanbul +#usr/share/zoneinfo/posix/Asia/Jakarta +#usr/share/zoneinfo/posix/Asia/Jayapura +#usr/share/zoneinfo/posix/Asia/Jerusalem +#usr/share/zoneinfo/posix/Asia/Kabul +#usr/share/zoneinfo/posix/Asia/Kamchatka +#usr/share/zoneinfo/posix/Asia/Karachi +#usr/share/zoneinfo/posix/Asia/Kashgar +#usr/share/zoneinfo/posix/Asia/Kathmandu +#usr/share/zoneinfo/posix/Asia/Katmandu +#usr/share/zoneinfo/posix/Asia/Kolkata +#usr/share/zoneinfo/posix/Asia/Krasnoyarsk +#usr/share/zoneinfo/posix/Asia/Kuala_Lumpur +#usr/share/zoneinfo/posix/Asia/Kuching +#usr/share/zoneinfo/posix/Asia/Kuwait +#usr/share/zoneinfo/posix/Asia/Macao +#usr/share/zoneinfo/posix/Asia/Macau +#usr/share/zoneinfo/posix/Asia/Magadan +#usr/share/zoneinfo/posix/Asia/Makassar +#usr/share/zoneinfo/posix/Asia/Manila +#usr/share/zoneinfo/posix/Asia/Muscat +#usr/share/zoneinfo/posix/Asia/Nicosia +#usr/share/zoneinfo/posix/Asia/Novosibirsk +#usr/share/zoneinfo/posix/Asia/Omsk +#usr/share/zoneinfo/posix/Asia/Oral +#usr/share/zoneinfo/posix/Asia/Phnom_Penh +#usr/share/zoneinfo/posix/Asia/Pontianak +#usr/share/zoneinfo/posix/Asia/Pyongyang +#usr/share/zoneinfo/posix/Asia/Qatar +#usr/share/zoneinfo/posix/Asia/Qyzylorda +#usr/share/zoneinfo/posix/Asia/Rangoon +#usr/share/zoneinfo/posix/Asia/Riyadh +#usr/share/zoneinfo/posix/Asia/Riyadh87 +#usr/share/zoneinfo/posix/Asia/Riyadh88 +#usr/share/zoneinfo/posix/Asia/Riyadh89 +#usr/share/zoneinfo/posix/Asia/Saigon +#usr/share/zoneinfo/posix/Asia/Sakhalin +#usr/share/zoneinfo/posix/Asia/Samarkand +#usr/share/zoneinfo/posix/Asia/Seoul +#usr/share/zoneinfo/posix/Asia/Shanghai +#usr/share/zoneinfo/posix/Asia/Singapore +#usr/share/zoneinfo/posix/Asia/Taipei +#usr/share/zoneinfo/posix/Asia/Tashkent +#usr/share/zoneinfo/posix/Asia/Tbilisi +#usr/share/zoneinfo/posix/Asia/Tehran +#usr/share/zoneinfo/posix/Asia/Tel_Aviv +#usr/share/zoneinfo/posix/Asia/Thimbu +#usr/share/zoneinfo/posix/Asia/Thimphu +#usr/share/zoneinfo/posix/Asia/Tokyo +#usr/share/zoneinfo/posix/Asia/Ujung_Pandang +#usr/share/zoneinfo/posix/Asia/Ulaanbaatar +#usr/share/zoneinfo/posix/Asia/Ulan_Bator +#usr/share/zoneinfo/posix/Asia/Urumqi +#usr/share/zoneinfo/posix/Asia/Vientiane +#usr/share/zoneinfo/posix/Asia/Vladivostok +#usr/share/zoneinfo/posix/Asia/Yakutsk +#usr/share/zoneinfo/posix/Asia/Yekaterinburg +#usr/share/zoneinfo/posix/Asia/Yerevan +#usr/share/zoneinfo/posix/Atlantic +#usr/share/zoneinfo/posix/Atlantic/Azores +#usr/share/zoneinfo/posix/Atlantic/Bermuda +#usr/share/zoneinfo/posix/Atlantic/Canary +#usr/share/zoneinfo/posix/Atlantic/Cape_Verde +#usr/share/zoneinfo/posix/Atlantic/Faeroe +#usr/share/zoneinfo/posix/Atlantic/Faroe +#usr/share/zoneinfo/posix/Atlantic/Jan_Mayen +#usr/share/zoneinfo/posix/Atlantic/Madeira +#usr/share/zoneinfo/posix/Atlantic/Reykjavik +#usr/share/zoneinfo/posix/Atlantic/South_Georgia +#usr/share/zoneinfo/posix/Atlantic/St_Helena +#usr/share/zoneinfo/posix/Atlantic/Stanley +#usr/share/zoneinfo/posix/Australia +#usr/share/zoneinfo/posix/Australia/ACT +#usr/share/zoneinfo/posix/Australia/Adelaide +#usr/share/zoneinfo/posix/Australia/Brisbane +#usr/share/zoneinfo/posix/Australia/Broken_Hill +#usr/share/zoneinfo/posix/Australia/Canberra +#usr/share/zoneinfo/posix/Australia/Currie +#usr/share/zoneinfo/posix/Australia/Darwin +#usr/share/zoneinfo/posix/Australia/Eucla +#usr/share/zoneinfo/posix/Australia/Hobart +#usr/share/zoneinfo/posix/Australia/LHI +#usr/share/zoneinfo/posix/Australia/Lindeman +#usr/share/zoneinfo/posix/Australia/Lord_Howe +#usr/share/zoneinfo/posix/Australia/Melbourne +#usr/share/zoneinfo/posix/Australia/NSW +#usr/share/zoneinfo/posix/Australia/North +#usr/share/zoneinfo/posix/Australia/Perth +#usr/share/zoneinfo/posix/Australia/Queensland +#usr/share/zoneinfo/posix/Australia/South +#usr/share/zoneinfo/posix/Australia/Sydney +#usr/share/zoneinfo/posix/Australia/Tasmania +#usr/share/zoneinfo/posix/Australia/Victoria +#usr/share/zoneinfo/posix/Australia/West +#usr/share/zoneinfo/posix/Australia/Yancowinna +#usr/share/zoneinfo/posix/Brazil +#usr/share/zoneinfo/posix/Brazil/Acre +#usr/share/zoneinfo/posix/Brazil/DeNoronha +#usr/share/zoneinfo/posix/Brazil/East +#usr/share/zoneinfo/posix/Brazil/West +#usr/share/zoneinfo/posix/CET +#usr/share/zoneinfo/posix/CST6CDT +#usr/share/zoneinfo/posix/Canada +#usr/share/zoneinfo/posix/Canada/Atlantic +#usr/share/zoneinfo/posix/Canada/Central +#usr/share/zoneinfo/posix/Canada/East-Saskatchewan +#usr/share/zoneinfo/posix/Canada/Eastern +#usr/share/zoneinfo/posix/Canada/Mountain +#usr/share/zoneinfo/posix/Canada/Newfoundland +#usr/share/zoneinfo/posix/Canada/Pacific +#usr/share/zoneinfo/posix/Canada/Saskatchewan +#usr/share/zoneinfo/posix/Canada/Yukon +#usr/share/zoneinfo/posix/Chile +#usr/share/zoneinfo/posix/Chile/Continental +#usr/share/zoneinfo/posix/Chile/EasterIsland +#usr/share/zoneinfo/posix/Cuba +#usr/share/zoneinfo/posix/EET +#usr/share/zoneinfo/posix/EST +#usr/share/zoneinfo/posix/EST5EDT +#usr/share/zoneinfo/posix/Egypt +#usr/share/zoneinfo/posix/Eire +#usr/share/zoneinfo/posix/Etc +#usr/share/zoneinfo/posix/Etc/GMT +#usr/share/zoneinfo/posix/Etc/GMT+0 +#usr/share/zoneinfo/posix/Etc/GMT+1 +#usr/share/zoneinfo/posix/Etc/GMT+10 +#usr/share/zoneinfo/posix/Etc/GMT+11 +#usr/share/zoneinfo/posix/Etc/GMT+12 +#usr/share/zoneinfo/posix/Etc/GMT+2 +#usr/share/zoneinfo/posix/Etc/GMT+3 +#usr/share/zoneinfo/posix/Etc/GMT+4 +#usr/share/zoneinfo/posix/Etc/GMT+5 +#usr/share/zoneinfo/posix/Etc/GMT+6 +#usr/share/zoneinfo/posix/Etc/GMT+7 +#usr/share/zoneinfo/posix/Etc/GMT+8 +#usr/share/zoneinfo/posix/Etc/GMT+9 +#usr/share/zoneinfo/posix/Etc/GMT-0 +#usr/share/zoneinfo/posix/Etc/GMT-1 +#usr/share/zoneinfo/posix/Etc/GMT-10 +#usr/share/zoneinfo/posix/Etc/GMT-11 +#usr/share/zoneinfo/posix/Etc/GMT-12 +#usr/share/zoneinfo/posix/Etc/GMT-13 +#usr/share/zoneinfo/posix/Etc/GMT-14 +#usr/share/zoneinfo/posix/Etc/GMT-2 +#usr/share/zoneinfo/posix/Etc/GMT-3 +#usr/share/zoneinfo/posix/Etc/GMT-4 +#usr/share/zoneinfo/posix/Etc/GMT-5 +#usr/share/zoneinfo/posix/Etc/GMT-6 +#usr/share/zoneinfo/posix/Etc/GMT-7 +#usr/share/zoneinfo/posix/Etc/GMT-8 +#usr/share/zoneinfo/posix/Etc/GMT-9 +#usr/share/zoneinfo/posix/Etc/GMT0 +#usr/share/zoneinfo/posix/Etc/Greenwich +#usr/share/zoneinfo/posix/Etc/UCT +#usr/share/zoneinfo/posix/Etc/UTC +#usr/share/zoneinfo/posix/Etc/Universal +#usr/share/zoneinfo/posix/Etc/Zulu +#usr/share/zoneinfo/posix/Europe +#usr/share/zoneinfo/posix/Europe/Amsterdam +#usr/share/zoneinfo/posix/Europe/Andorra +#usr/share/zoneinfo/posix/Europe/Athens +#usr/share/zoneinfo/posix/Europe/Belfast +#usr/share/zoneinfo/posix/Europe/Belgrade +#usr/share/zoneinfo/posix/Europe/Berlin +#usr/share/zoneinfo/posix/Europe/Bratislava +#usr/share/zoneinfo/posix/Europe/Brussels +#usr/share/zoneinfo/posix/Europe/Bucharest +#usr/share/zoneinfo/posix/Europe/Budapest +#usr/share/zoneinfo/posix/Europe/Chisinau +#usr/share/zoneinfo/posix/Europe/Copenhagen +#usr/share/zoneinfo/posix/Europe/Dublin +#usr/share/zoneinfo/posix/Europe/Gibraltar +#usr/share/zoneinfo/posix/Europe/Guernsey +#usr/share/zoneinfo/posix/Europe/Helsinki +#usr/share/zoneinfo/posix/Europe/Isle_of_Man +#usr/share/zoneinfo/posix/Europe/Istanbul +#usr/share/zoneinfo/posix/Europe/Jersey +#usr/share/zoneinfo/posix/Europe/Kaliningrad +#usr/share/zoneinfo/posix/Europe/Kiev +#usr/share/zoneinfo/posix/Europe/Lisbon +#usr/share/zoneinfo/posix/Europe/Ljubljana +#usr/share/zoneinfo/posix/Europe/London +#usr/share/zoneinfo/posix/Europe/Luxembourg +#usr/share/zoneinfo/posix/Europe/Madrid +#usr/share/zoneinfo/posix/Europe/Malta +#usr/share/zoneinfo/posix/Europe/Mariehamn +#usr/share/zoneinfo/posix/Europe/Minsk +#usr/share/zoneinfo/posix/Europe/Monaco +#usr/share/zoneinfo/posix/Europe/Moscow +#usr/share/zoneinfo/posix/Europe/Nicosia +#usr/share/zoneinfo/posix/Europe/Oslo +#usr/share/zoneinfo/posix/Europe/Paris +#usr/share/zoneinfo/posix/Europe/Podgorica +#usr/share/zoneinfo/posix/Europe/Prague +#usr/share/zoneinfo/posix/Europe/Riga +#usr/share/zoneinfo/posix/Europe/Rome +#usr/share/zoneinfo/posix/Europe/Samara +#usr/share/zoneinfo/posix/Europe/San_Marino +#usr/share/zoneinfo/posix/Europe/Sarajevo +#usr/share/zoneinfo/posix/Europe/Simferopol +#usr/share/zoneinfo/posix/Europe/Skopje +#usr/share/zoneinfo/posix/Europe/Sofia +#usr/share/zoneinfo/posix/Europe/Stockholm +#usr/share/zoneinfo/posix/Europe/Tallinn +#usr/share/zoneinfo/posix/Europe/Tirane +#usr/share/zoneinfo/posix/Europe/Tiraspol +#usr/share/zoneinfo/posix/Europe/Uzhgorod +#usr/share/zoneinfo/posix/Europe/Vaduz +#usr/share/zoneinfo/posix/Europe/Vatican +#usr/share/zoneinfo/posix/Europe/Vienna +#usr/share/zoneinfo/posix/Europe/Vilnius +#usr/share/zoneinfo/posix/Europe/Volgograd +#usr/share/zoneinfo/posix/Europe/Warsaw +#usr/share/zoneinfo/posix/Europe/Zagreb +#usr/share/zoneinfo/posix/Europe/Zaporozhye +#usr/share/zoneinfo/posix/Europe/Zurich +#usr/share/zoneinfo/posix/Factory +#usr/share/zoneinfo/posix/GB +#usr/share/zoneinfo/posix/GB-Eire +#usr/share/zoneinfo/posix/GMT +#usr/share/zoneinfo/posix/GMT+0 +#usr/share/zoneinfo/posix/GMT-0 +#usr/share/zoneinfo/posix/GMT0 +#usr/share/zoneinfo/posix/Greenwich +#usr/share/zoneinfo/posix/HST +#usr/share/zoneinfo/posix/Hongkong +#usr/share/zoneinfo/posix/Iceland +#usr/share/zoneinfo/posix/Indian +#usr/share/zoneinfo/posix/Indian/Antananarivo +#usr/share/zoneinfo/posix/Indian/Chagos +#usr/share/zoneinfo/posix/Indian/Christmas +#usr/share/zoneinfo/posix/Indian/Cocos +#usr/share/zoneinfo/posix/Indian/Comoro +#usr/share/zoneinfo/posix/Indian/Kerguelen +#usr/share/zoneinfo/posix/Indian/Mahe +#usr/share/zoneinfo/posix/Indian/Maldives +#usr/share/zoneinfo/posix/Indian/Mauritius +#usr/share/zoneinfo/posix/Indian/Mayotte +#usr/share/zoneinfo/posix/Indian/Reunion +#usr/share/zoneinfo/posix/Iran +#usr/share/zoneinfo/posix/Israel +#usr/share/zoneinfo/posix/Jamaica +#usr/share/zoneinfo/posix/Japan +#usr/share/zoneinfo/posix/Kwajalein +#usr/share/zoneinfo/posix/Libya +#usr/share/zoneinfo/posix/MET +#usr/share/zoneinfo/posix/MST +#usr/share/zoneinfo/posix/MST7MDT +#usr/share/zoneinfo/posix/Mexico +#usr/share/zoneinfo/posix/Mexico/BajaNorte +#usr/share/zoneinfo/posix/Mexico/BajaSur +#usr/share/zoneinfo/posix/Mexico/General +#usr/share/zoneinfo/posix/Mideast +#usr/share/zoneinfo/posix/Mideast/Riyadh87 +#usr/share/zoneinfo/posix/Mideast/Riyadh88 +#usr/share/zoneinfo/posix/Mideast/Riyadh89 +#usr/share/zoneinfo/posix/NZ +#usr/share/zoneinfo/posix/NZ-CHAT +#usr/share/zoneinfo/posix/Navajo +#usr/share/zoneinfo/posix/PRC +#usr/share/zoneinfo/posix/PST8PDT +#usr/share/zoneinfo/posix/Pacific +#usr/share/zoneinfo/posix/Pacific/Apia +#usr/share/zoneinfo/posix/Pacific/Auckland +#usr/share/zoneinfo/posix/Pacific/Chatham +#usr/share/zoneinfo/posix/Pacific/Easter +#usr/share/zoneinfo/posix/Pacific/Efate +#usr/share/zoneinfo/posix/Pacific/Enderbury +#usr/share/zoneinfo/posix/Pacific/Fakaofo +#usr/share/zoneinfo/posix/Pacific/Fiji +#usr/share/zoneinfo/posix/Pacific/Funafuti +#usr/share/zoneinfo/posix/Pacific/Galapagos +#usr/share/zoneinfo/posix/Pacific/Gambier +#usr/share/zoneinfo/posix/Pacific/Guadalcanal +#usr/share/zoneinfo/posix/Pacific/Guam +#usr/share/zoneinfo/posix/Pacific/Honolulu +#usr/share/zoneinfo/posix/Pacific/Johnston +#usr/share/zoneinfo/posix/Pacific/Kiritimati +#usr/share/zoneinfo/posix/Pacific/Kosrae +#usr/share/zoneinfo/posix/Pacific/Kwajalein +#usr/share/zoneinfo/posix/Pacific/Majuro +#usr/share/zoneinfo/posix/Pacific/Marquesas +#usr/share/zoneinfo/posix/Pacific/Midway +#usr/share/zoneinfo/posix/Pacific/Nauru +#usr/share/zoneinfo/posix/Pacific/Niue +#usr/share/zoneinfo/posix/Pacific/Norfolk +#usr/share/zoneinfo/posix/Pacific/Noumea +#usr/share/zoneinfo/posix/Pacific/Pago_Pago +#usr/share/zoneinfo/posix/Pacific/Palau +#usr/share/zoneinfo/posix/Pacific/Pitcairn +#usr/share/zoneinfo/posix/Pacific/Ponape +#usr/share/zoneinfo/posix/Pacific/Port_Moresby +#usr/share/zoneinfo/posix/Pacific/Rarotonga +#usr/share/zoneinfo/posix/Pacific/Saipan +#usr/share/zoneinfo/posix/Pacific/Samoa +#usr/share/zoneinfo/posix/Pacific/Tahiti +#usr/share/zoneinfo/posix/Pacific/Tarawa +#usr/share/zoneinfo/posix/Pacific/Tongatapu +#usr/share/zoneinfo/posix/Pacific/Truk +#usr/share/zoneinfo/posix/Pacific/Wake +#usr/share/zoneinfo/posix/Pacific/Wallis +#usr/share/zoneinfo/posix/Pacific/Yap +#usr/share/zoneinfo/posix/Poland +#usr/share/zoneinfo/posix/Portugal +#usr/share/zoneinfo/posix/ROC +#usr/share/zoneinfo/posix/ROK +#usr/share/zoneinfo/posix/Singapore +#usr/share/zoneinfo/posix/Turkey +#usr/share/zoneinfo/posix/UCT +#usr/share/zoneinfo/posix/US +#usr/share/zoneinfo/posix/US/Alaska +#usr/share/zoneinfo/posix/US/Aleutian +#usr/share/zoneinfo/posix/US/Arizona +#usr/share/zoneinfo/posix/US/Central +#usr/share/zoneinfo/posix/US/East-Indiana +#usr/share/zoneinfo/posix/US/Eastern +#usr/share/zoneinfo/posix/US/Hawaii +#usr/share/zoneinfo/posix/US/Indiana-Starke +#usr/share/zoneinfo/posix/US/Michigan +#usr/share/zoneinfo/posix/US/Mountain +#usr/share/zoneinfo/posix/US/Pacific +#usr/share/zoneinfo/posix/US/Samoa +#usr/share/zoneinfo/posix/UTC +#usr/share/zoneinfo/posix/Universal +#usr/share/zoneinfo/posix/W-SU +#usr/share/zoneinfo/posix/WET +#usr/share/zoneinfo/posix/Zulu +#usr/share/zoneinfo/posixrules +#usr/share/zoneinfo/right +#usr/share/zoneinfo/right/Africa +#usr/share/zoneinfo/right/Africa/Abidjan +#usr/share/zoneinfo/right/Africa/Accra +#usr/share/zoneinfo/right/Africa/Addis_Ababa +#usr/share/zoneinfo/right/Africa/Algiers +#usr/share/zoneinfo/right/Africa/Asmara +#usr/share/zoneinfo/right/Africa/Asmera +#usr/share/zoneinfo/right/Africa/Bamako +#usr/share/zoneinfo/right/Africa/Bangui +#usr/share/zoneinfo/right/Africa/Banjul +#usr/share/zoneinfo/right/Africa/Bissau +#usr/share/zoneinfo/right/Africa/Blantyre +#usr/share/zoneinfo/right/Africa/Brazzaville +#usr/share/zoneinfo/right/Africa/Bujumbura +#usr/share/zoneinfo/right/Africa/Cairo +#usr/share/zoneinfo/right/Africa/Casablanca +#usr/share/zoneinfo/right/Africa/Ceuta +#usr/share/zoneinfo/right/Africa/Conakry +#usr/share/zoneinfo/right/Africa/Dakar +#usr/share/zoneinfo/right/Africa/Dar_es_Salaam +#usr/share/zoneinfo/right/Africa/Djibouti +#usr/share/zoneinfo/right/Africa/Douala +#usr/share/zoneinfo/right/Africa/El_Aaiun +#usr/share/zoneinfo/right/Africa/Freetown +#usr/share/zoneinfo/right/Africa/Gaborone +#usr/share/zoneinfo/right/Africa/Harare +#usr/share/zoneinfo/right/Africa/Johannesburg +#usr/share/zoneinfo/right/Africa/Kampala +#usr/share/zoneinfo/right/Africa/Khartoum +#usr/share/zoneinfo/right/Africa/Kigali +#usr/share/zoneinfo/right/Africa/Kinshasa +#usr/share/zoneinfo/right/Africa/Lagos +#usr/share/zoneinfo/right/Africa/Libreville +#usr/share/zoneinfo/right/Africa/Lome +#usr/share/zoneinfo/right/Africa/Luanda +#usr/share/zoneinfo/right/Africa/Lubumbashi +#usr/share/zoneinfo/right/Africa/Lusaka +#usr/share/zoneinfo/right/Africa/Malabo +#usr/share/zoneinfo/right/Africa/Maputo +#usr/share/zoneinfo/right/Africa/Maseru +#usr/share/zoneinfo/right/Africa/Mbabane +#usr/share/zoneinfo/right/Africa/Mogadishu +#usr/share/zoneinfo/right/Africa/Monrovia +#usr/share/zoneinfo/right/Africa/Nairobi +#usr/share/zoneinfo/right/Africa/Ndjamena +#usr/share/zoneinfo/right/Africa/Niamey +#usr/share/zoneinfo/right/Africa/Nouakchott +#usr/share/zoneinfo/right/Africa/Ouagadougou +#usr/share/zoneinfo/right/Africa/Porto-Novo +#usr/share/zoneinfo/right/Africa/Sao_Tome +#usr/share/zoneinfo/right/Africa/Timbuktu +#usr/share/zoneinfo/right/Africa/Tripoli +#usr/share/zoneinfo/right/Africa/Tunis +#usr/share/zoneinfo/right/Africa/Windhoek +#usr/share/zoneinfo/right/America +#usr/share/zoneinfo/right/America/Adak +#usr/share/zoneinfo/right/America/Anchorage +#usr/share/zoneinfo/right/America/Anguilla +#usr/share/zoneinfo/right/America/Antigua +#usr/share/zoneinfo/right/America/Araguaina +#usr/share/zoneinfo/right/America/Argentina +#usr/share/zoneinfo/right/America/Argentina/Buenos_Aires +#usr/share/zoneinfo/right/America/Argentina/Catamarca +#usr/share/zoneinfo/right/America/Argentina/ComodRivadavia +#usr/share/zoneinfo/right/America/Argentina/Cordoba +#usr/share/zoneinfo/right/America/Argentina/Jujuy +#usr/share/zoneinfo/right/America/Argentina/La_Rioja +#usr/share/zoneinfo/right/America/Argentina/Mendoza +#usr/share/zoneinfo/right/America/Argentina/Rio_Gallegos +#usr/share/zoneinfo/right/America/Argentina/Salta +#usr/share/zoneinfo/right/America/Argentina/San_Juan +#usr/share/zoneinfo/right/America/Argentina/San_Luis +#usr/share/zoneinfo/right/America/Argentina/Tucuman +#usr/share/zoneinfo/right/America/Argentina/Ushuaia +#usr/share/zoneinfo/right/America/Aruba +#usr/share/zoneinfo/right/America/Asuncion +#usr/share/zoneinfo/right/America/Atikokan +#usr/share/zoneinfo/right/America/Atka +#usr/share/zoneinfo/right/America/Bahia +#usr/share/zoneinfo/right/America/Barbados +#usr/share/zoneinfo/right/America/Belem +#usr/share/zoneinfo/right/America/Belize +#usr/share/zoneinfo/right/America/Blanc-Sablon +#usr/share/zoneinfo/right/America/Boa_Vista +#usr/share/zoneinfo/right/America/Bogota +#usr/share/zoneinfo/right/America/Boise +#usr/share/zoneinfo/right/America/Buenos_Aires +#usr/share/zoneinfo/right/America/Cambridge_Bay +#usr/share/zoneinfo/right/America/Campo_Grande +#usr/share/zoneinfo/right/America/Cancun +#usr/share/zoneinfo/right/America/Caracas +#usr/share/zoneinfo/right/America/Catamarca +#usr/share/zoneinfo/right/America/Cayenne +#usr/share/zoneinfo/right/America/Cayman +#usr/share/zoneinfo/right/America/Chicago +#usr/share/zoneinfo/right/America/Chihuahua +#usr/share/zoneinfo/right/America/Coral_Harbour +#usr/share/zoneinfo/right/America/Cordoba +#usr/share/zoneinfo/right/America/Costa_Rica +#usr/share/zoneinfo/right/America/Cuiaba +#usr/share/zoneinfo/right/America/Curacao +#usr/share/zoneinfo/right/America/Danmarkshavn +#usr/share/zoneinfo/right/America/Dawson +#usr/share/zoneinfo/right/America/Dawson_Creek +#usr/share/zoneinfo/right/America/Denver +#usr/share/zoneinfo/right/America/Detroit +#usr/share/zoneinfo/right/America/Dominica +#usr/share/zoneinfo/right/America/Edmonton +#usr/share/zoneinfo/right/America/Eirunepe +#usr/share/zoneinfo/right/America/El_Salvador +#usr/share/zoneinfo/right/America/Ensenada +#usr/share/zoneinfo/right/America/Fort_Wayne +#usr/share/zoneinfo/right/America/Fortaleza +#usr/share/zoneinfo/right/America/Glace_Bay +#usr/share/zoneinfo/right/America/Godthab +#usr/share/zoneinfo/right/America/Goose_Bay +#usr/share/zoneinfo/right/America/Grand_Turk +#usr/share/zoneinfo/right/America/Grenada +#usr/share/zoneinfo/right/America/Guadeloupe +#usr/share/zoneinfo/right/America/Guatemala +#usr/share/zoneinfo/right/America/Guayaquil +#usr/share/zoneinfo/right/America/Guyana +#usr/share/zoneinfo/right/America/Halifax +#usr/share/zoneinfo/right/America/Havana +#usr/share/zoneinfo/right/America/Hermosillo +#usr/share/zoneinfo/right/America/Indiana +#usr/share/zoneinfo/right/America/Indiana/Indianapolis +#usr/share/zoneinfo/right/America/Indiana/Knox +#usr/share/zoneinfo/right/America/Indiana/Marengo +#usr/share/zoneinfo/right/America/Indiana/Petersburg +#usr/share/zoneinfo/right/America/Indiana/Tell_City +#usr/share/zoneinfo/right/America/Indiana/Vevay +#usr/share/zoneinfo/right/America/Indiana/Vincennes +#usr/share/zoneinfo/right/America/Indiana/Winamac +#usr/share/zoneinfo/right/America/Indianapolis +#usr/share/zoneinfo/right/America/Inuvik +#usr/share/zoneinfo/right/America/Iqaluit +#usr/share/zoneinfo/right/America/Jamaica +#usr/share/zoneinfo/right/America/Jujuy +#usr/share/zoneinfo/right/America/Juneau +#usr/share/zoneinfo/right/America/Kentucky +#usr/share/zoneinfo/right/America/Kentucky/Louisville +#usr/share/zoneinfo/right/America/Kentucky/Monticello +#usr/share/zoneinfo/right/America/Knox_IN +#usr/share/zoneinfo/right/America/La_Paz +#usr/share/zoneinfo/right/America/Lima +#usr/share/zoneinfo/right/America/Los_Angeles +#usr/share/zoneinfo/right/America/Louisville +#usr/share/zoneinfo/right/America/Maceio +#usr/share/zoneinfo/right/America/Managua +#usr/share/zoneinfo/right/America/Manaus +#usr/share/zoneinfo/right/America/Marigot +#usr/share/zoneinfo/right/America/Martinique +#usr/share/zoneinfo/right/America/Mazatlan +#usr/share/zoneinfo/right/America/Mendoza +#usr/share/zoneinfo/right/America/Menominee +#usr/share/zoneinfo/right/America/Merida +#usr/share/zoneinfo/right/America/Mexico_City +#usr/share/zoneinfo/right/America/Miquelon +#usr/share/zoneinfo/right/America/Moncton +#usr/share/zoneinfo/right/America/Monterrey +#usr/share/zoneinfo/right/America/Montevideo +#usr/share/zoneinfo/right/America/Montreal +#usr/share/zoneinfo/right/America/Montserrat +#usr/share/zoneinfo/right/America/Nassau +#usr/share/zoneinfo/right/America/New_York +#usr/share/zoneinfo/right/America/Nipigon +#usr/share/zoneinfo/right/America/Nome +#usr/share/zoneinfo/right/America/Noronha +#usr/share/zoneinfo/right/America/North_Dakota +#usr/share/zoneinfo/right/America/North_Dakota/Center +#usr/share/zoneinfo/right/America/North_Dakota/New_Salem +#usr/share/zoneinfo/right/America/Panama +#usr/share/zoneinfo/right/America/Pangnirtung +#usr/share/zoneinfo/right/America/Paramaribo +#usr/share/zoneinfo/right/America/Phoenix +#usr/share/zoneinfo/right/America/Port-au-Prince +#usr/share/zoneinfo/right/America/Port_of_Spain +#usr/share/zoneinfo/right/America/Porto_Acre +#usr/share/zoneinfo/right/America/Porto_Velho +#usr/share/zoneinfo/right/America/Puerto_Rico +#usr/share/zoneinfo/right/America/Rainy_River +#usr/share/zoneinfo/right/America/Rankin_Inlet +#usr/share/zoneinfo/right/America/Recife +#usr/share/zoneinfo/right/America/Regina +#usr/share/zoneinfo/right/America/Resolute +#usr/share/zoneinfo/right/America/Rio_Branco +#usr/share/zoneinfo/right/America/Rosario +#usr/share/zoneinfo/right/America/Santarem +#usr/share/zoneinfo/right/America/Santiago +#usr/share/zoneinfo/right/America/Santo_Domingo +#usr/share/zoneinfo/right/America/Sao_Paulo +#usr/share/zoneinfo/right/America/Scoresbysund +#usr/share/zoneinfo/right/America/Shiprock +#usr/share/zoneinfo/right/America/St_Barthelemy +#usr/share/zoneinfo/right/America/St_Johns +#usr/share/zoneinfo/right/America/St_Kitts +#usr/share/zoneinfo/right/America/St_Lucia +#usr/share/zoneinfo/right/America/St_Thomas +#usr/share/zoneinfo/right/America/St_Vincent +#usr/share/zoneinfo/right/America/Swift_Current +#usr/share/zoneinfo/right/America/Tegucigalpa +#usr/share/zoneinfo/right/America/Thule +#usr/share/zoneinfo/right/America/Thunder_Bay +#usr/share/zoneinfo/right/America/Tijuana +#usr/share/zoneinfo/right/America/Toronto +#usr/share/zoneinfo/right/America/Tortola +#usr/share/zoneinfo/right/America/Vancouver +#usr/share/zoneinfo/right/America/Virgin +#usr/share/zoneinfo/right/America/Whitehorse +#usr/share/zoneinfo/right/America/Winnipeg +#usr/share/zoneinfo/right/America/Yakutat +#usr/share/zoneinfo/right/America/Yellowknife +#usr/share/zoneinfo/right/Antarctica +#usr/share/zoneinfo/right/Antarctica/Casey +#usr/share/zoneinfo/right/Antarctica/Davis +#usr/share/zoneinfo/right/Antarctica/DumontDUrville +#usr/share/zoneinfo/right/Antarctica/Mawson +#usr/share/zoneinfo/right/Antarctica/McMurdo +#usr/share/zoneinfo/right/Antarctica/Palmer +#usr/share/zoneinfo/right/Antarctica/Rothera +#usr/share/zoneinfo/right/Antarctica/South_Pole +#usr/share/zoneinfo/right/Antarctica/Syowa +#usr/share/zoneinfo/right/Antarctica/Vostok +#usr/share/zoneinfo/right/Arctic +#usr/share/zoneinfo/right/Arctic/Longyearbyen +#usr/share/zoneinfo/right/Asia +#usr/share/zoneinfo/right/Asia/Aden +#usr/share/zoneinfo/right/Asia/Almaty +#usr/share/zoneinfo/right/Asia/Amman +#usr/share/zoneinfo/right/Asia/Anadyr +#usr/share/zoneinfo/right/Asia/Aqtau +#usr/share/zoneinfo/right/Asia/Aqtobe +#usr/share/zoneinfo/right/Asia/Ashgabat +#usr/share/zoneinfo/right/Asia/Ashkhabad +#usr/share/zoneinfo/right/Asia/Baghdad +#usr/share/zoneinfo/right/Asia/Bahrain +#usr/share/zoneinfo/right/Asia/Baku +#usr/share/zoneinfo/right/Asia/Bangkok +#usr/share/zoneinfo/right/Asia/Beirut +#usr/share/zoneinfo/right/Asia/Bishkek +#usr/share/zoneinfo/right/Asia/Brunei +#usr/share/zoneinfo/right/Asia/Calcutta +#usr/share/zoneinfo/right/Asia/Choibalsan +#usr/share/zoneinfo/right/Asia/Chongqing +#usr/share/zoneinfo/right/Asia/Chungking +#usr/share/zoneinfo/right/Asia/Colombo +#usr/share/zoneinfo/right/Asia/Dacca +#usr/share/zoneinfo/right/Asia/Damascus +#usr/share/zoneinfo/right/Asia/Dhaka +#usr/share/zoneinfo/right/Asia/Dili +#usr/share/zoneinfo/right/Asia/Dubai +#usr/share/zoneinfo/right/Asia/Dushanbe +#usr/share/zoneinfo/right/Asia/Gaza +#usr/share/zoneinfo/right/Asia/Harbin +#usr/share/zoneinfo/right/Asia/Ho_Chi_Minh +#usr/share/zoneinfo/right/Asia/Hong_Kong +#usr/share/zoneinfo/right/Asia/Hovd +#usr/share/zoneinfo/right/Asia/Irkutsk +#usr/share/zoneinfo/right/Asia/Istanbul +#usr/share/zoneinfo/right/Asia/Jakarta +#usr/share/zoneinfo/right/Asia/Jayapura +#usr/share/zoneinfo/right/Asia/Jerusalem +#usr/share/zoneinfo/right/Asia/Kabul +#usr/share/zoneinfo/right/Asia/Kamchatka +#usr/share/zoneinfo/right/Asia/Karachi +#usr/share/zoneinfo/right/Asia/Kashgar +#usr/share/zoneinfo/right/Asia/Kathmandu +#usr/share/zoneinfo/right/Asia/Katmandu +#usr/share/zoneinfo/right/Asia/Kolkata +#usr/share/zoneinfo/right/Asia/Krasnoyarsk +#usr/share/zoneinfo/right/Asia/Kuala_Lumpur +#usr/share/zoneinfo/right/Asia/Kuching +#usr/share/zoneinfo/right/Asia/Kuwait +#usr/share/zoneinfo/right/Asia/Macao +#usr/share/zoneinfo/right/Asia/Macau +#usr/share/zoneinfo/right/Asia/Magadan +#usr/share/zoneinfo/right/Asia/Makassar +#usr/share/zoneinfo/right/Asia/Manila +#usr/share/zoneinfo/right/Asia/Muscat +#usr/share/zoneinfo/right/Asia/Nicosia +#usr/share/zoneinfo/right/Asia/Novosibirsk +#usr/share/zoneinfo/right/Asia/Omsk +#usr/share/zoneinfo/right/Asia/Oral +#usr/share/zoneinfo/right/Asia/Phnom_Penh +#usr/share/zoneinfo/right/Asia/Pontianak +#usr/share/zoneinfo/right/Asia/Pyongyang +#usr/share/zoneinfo/right/Asia/Qatar +#usr/share/zoneinfo/right/Asia/Qyzylorda +#usr/share/zoneinfo/right/Asia/Rangoon +#usr/share/zoneinfo/right/Asia/Riyadh +#usr/share/zoneinfo/right/Asia/Riyadh87 +#usr/share/zoneinfo/right/Asia/Riyadh88 +#usr/share/zoneinfo/right/Asia/Riyadh89 +#usr/share/zoneinfo/right/Asia/Saigon +#usr/share/zoneinfo/right/Asia/Sakhalin +#usr/share/zoneinfo/right/Asia/Samarkand +#usr/share/zoneinfo/right/Asia/Seoul +#usr/share/zoneinfo/right/Asia/Shanghai +#usr/share/zoneinfo/right/Asia/Singapore +#usr/share/zoneinfo/right/Asia/Taipei +#usr/share/zoneinfo/right/Asia/Tashkent +#usr/share/zoneinfo/right/Asia/Tbilisi +#usr/share/zoneinfo/right/Asia/Tehran +#usr/share/zoneinfo/right/Asia/Tel_Aviv +#usr/share/zoneinfo/right/Asia/Thimbu +#usr/share/zoneinfo/right/Asia/Thimphu +#usr/share/zoneinfo/right/Asia/Tokyo +#usr/share/zoneinfo/right/Asia/Ujung_Pandang +#usr/share/zoneinfo/right/Asia/Ulaanbaatar +#usr/share/zoneinfo/right/Asia/Ulan_Bator +#usr/share/zoneinfo/right/Asia/Urumqi +#usr/share/zoneinfo/right/Asia/Vientiane +#usr/share/zoneinfo/right/Asia/Vladivostok +#usr/share/zoneinfo/right/Asia/Yakutsk +#usr/share/zoneinfo/right/Asia/Yekaterinburg +#usr/share/zoneinfo/right/Asia/Yerevan +#usr/share/zoneinfo/right/Atlantic +#usr/share/zoneinfo/right/Atlantic/Azores +#usr/share/zoneinfo/right/Atlantic/Bermuda +#usr/share/zoneinfo/right/Atlantic/Canary +#usr/share/zoneinfo/right/Atlantic/Cape_Verde +#usr/share/zoneinfo/right/Atlantic/Faeroe +#usr/share/zoneinfo/right/Atlantic/Faroe +#usr/share/zoneinfo/right/Atlantic/Jan_Mayen +#usr/share/zoneinfo/right/Atlantic/Madeira +#usr/share/zoneinfo/right/Atlantic/Reykjavik +#usr/share/zoneinfo/right/Atlantic/South_Georgia +#usr/share/zoneinfo/right/Atlantic/St_Helena +#usr/share/zoneinfo/right/Atlantic/Stanley +#usr/share/zoneinfo/right/Australia +#usr/share/zoneinfo/right/Australia/ACT +#usr/share/zoneinfo/right/Australia/Adelaide +#usr/share/zoneinfo/right/Australia/Brisbane +#usr/share/zoneinfo/right/Australia/Broken_Hill +#usr/share/zoneinfo/right/Australia/Canberra +#usr/share/zoneinfo/right/Australia/Currie +#usr/share/zoneinfo/right/Australia/Darwin +#usr/share/zoneinfo/right/Australia/Eucla +#usr/share/zoneinfo/right/Australia/Hobart +#usr/share/zoneinfo/right/Australia/LHI +#usr/share/zoneinfo/right/Australia/Lindeman +#usr/share/zoneinfo/right/Australia/Lord_Howe +#usr/share/zoneinfo/right/Australia/Melbourne +#usr/share/zoneinfo/right/Australia/NSW +#usr/share/zoneinfo/right/Australia/North +#usr/share/zoneinfo/right/Australia/Perth +#usr/share/zoneinfo/right/Australia/Queensland +#usr/share/zoneinfo/right/Australia/South +#usr/share/zoneinfo/right/Australia/Sydney +#usr/share/zoneinfo/right/Australia/Tasmania +#usr/share/zoneinfo/right/Australia/Victoria +#usr/share/zoneinfo/right/Australia/West +#usr/share/zoneinfo/right/Australia/Yancowinna +#usr/share/zoneinfo/right/Brazil +#usr/share/zoneinfo/right/Brazil/Acre +#usr/share/zoneinfo/right/Brazil/DeNoronha +#usr/share/zoneinfo/right/Brazil/East +#usr/share/zoneinfo/right/Brazil/West +#usr/share/zoneinfo/right/CET +#usr/share/zoneinfo/right/CST6CDT +#usr/share/zoneinfo/right/Canada +#usr/share/zoneinfo/right/Canada/Atlantic +#usr/share/zoneinfo/right/Canada/Central +#usr/share/zoneinfo/right/Canada/East-Saskatchewan +#usr/share/zoneinfo/right/Canada/Eastern +#usr/share/zoneinfo/right/Canada/Mountain +#usr/share/zoneinfo/right/Canada/Newfoundland +#usr/share/zoneinfo/right/Canada/Pacific +#usr/share/zoneinfo/right/Canada/Saskatchewan +#usr/share/zoneinfo/right/Canada/Yukon +#usr/share/zoneinfo/right/Chile +#usr/share/zoneinfo/right/Chile/Continental +#usr/share/zoneinfo/right/Chile/EasterIsland +#usr/share/zoneinfo/right/Cuba +#usr/share/zoneinfo/right/EET +#usr/share/zoneinfo/right/EST +#usr/share/zoneinfo/right/EST5EDT +#usr/share/zoneinfo/right/Egypt +#usr/share/zoneinfo/right/Eire +#usr/share/zoneinfo/right/Etc +#usr/share/zoneinfo/right/Etc/GMT +#usr/share/zoneinfo/right/Etc/GMT+0 +#usr/share/zoneinfo/right/Etc/GMT+1 +#usr/share/zoneinfo/right/Etc/GMT+10 +#usr/share/zoneinfo/right/Etc/GMT+11 +#usr/share/zoneinfo/right/Etc/GMT+12 +#usr/share/zoneinfo/right/Etc/GMT+2 +#usr/share/zoneinfo/right/Etc/GMT+3 +#usr/share/zoneinfo/right/Etc/GMT+4 +#usr/share/zoneinfo/right/Etc/GMT+5 +#usr/share/zoneinfo/right/Etc/GMT+6 +#usr/share/zoneinfo/right/Etc/GMT+7 +#usr/share/zoneinfo/right/Etc/GMT+8 +#usr/share/zoneinfo/right/Etc/GMT+9 +#usr/share/zoneinfo/right/Etc/GMT-0 +#usr/share/zoneinfo/right/Etc/GMT-1 +#usr/share/zoneinfo/right/Etc/GMT-10 +#usr/share/zoneinfo/right/Etc/GMT-11 +#usr/share/zoneinfo/right/Etc/GMT-12 +#usr/share/zoneinfo/right/Etc/GMT-13 +#usr/share/zoneinfo/right/Etc/GMT-14 +#usr/share/zoneinfo/right/Etc/GMT-2 +#usr/share/zoneinfo/right/Etc/GMT-3 +#usr/share/zoneinfo/right/Etc/GMT-4 +#usr/share/zoneinfo/right/Etc/GMT-5 +#usr/share/zoneinfo/right/Etc/GMT-6 +#usr/share/zoneinfo/right/Etc/GMT-7 +#usr/share/zoneinfo/right/Etc/GMT-8 +#usr/share/zoneinfo/right/Etc/GMT-9 +#usr/share/zoneinfo/right/Etc/GMT0 +#usr/share/zoneinfo/right/Etc/Greenwich +#usr/share/zoneinfo/right/Etc/UCT +#usr/share/zoneinfo/right/Etc/UTC +#usr/share/zoneinfo/right/Etc/Universal +#usr/share/zoneinfo/right/Etc/Zulu +#usr/share/zoneinfo/right/Europe +#usr/share/zoneinfo/right/Europe/Amsterdam +#usr/share/zoneinfo/right/Europe/Andorra +#usr/share/zoneinfo/right/Europe/Athens +#usr/share/zoneinfo/right/Europe/Belfast +#usr/share/zoneinfo/right/Europe/Belgrade +#usr/share/zoneinfo/right/Europe/Berlin +#usr/share/zoneinfo/right/Europe/Bratislava +#usr/share/zoneinfo/right/Europe/Brussels +#usr/share/zoneinfo/right/Europe/Bucharest +#usr/share/zoneinfo/right/Europe/Budapest +#usr/share/zoneinfo/right/Europe/Chisinau +#usr/share/zoneinfo/right/Europe/Copenhagen +#usr/share/zoneinfo/right/Europe/Dublin +#usr/share/zoneinfo/right/Europe/Gibraltar +#usr/share/zoneinfo/right/Europe/Guernsey +#usr/share/zoneinfo/right/Europe/Helsinki +#usr/share/zoneinfo/right/Europe/Isle_of_Man +#usr/share/zoneinfo/right/Europe/Istanbul +#usr/share/zoneinfo/right/Europe/Jersey +#usr/share/zoneinfo/right/Europe/Kaliningrad +#usr/share/zoneinfo/right/Europe/Kiev +#usr/share/zoneinfo/right/Europe/Lisbon +#usr/share/zoneinfo/right/Europe/Ljubljana +#usr/share/zoneinfo/right/Europe/London +#usr/share/zoneinfo/right/Europe/Luxembourg +#usr/share/zoneinfo/right/Europe/Madrid +#usr/share/zoneinfo/right/Europe/Malta +#usr/share/zoneinfo/right/Europe/Mariehamn +#usr/share/zoneinfo/right/Europe/Minsk +#usr/share/zoneinfo/right/Europe/Monaco +#usr/share/zoneinfo/right/Europe/Moscow +#usr/share/zoneinfo/right/Europe/Nicosia +#usr/share/zoneinfo/right/Europe/Oslo +#usr/share/zoneinfo/right/Europe/Paris +#usr/share/zoneinfo/right/Europe/Podgorica +#usr/share/zoneinfo/right/Europe/Prague +#usr/share/zoneinfo/right/Europe/Riga +#usr/share/zoneinfo/right/Europe/Rome +#usr/share/zoneinfo/right/Europe/Samara +#usr/share/zoneinfo/right/Europe/San_Marino +#usr/share/zoneinfo/right/Europe/Sarajevo +#usr/share/zoneinfo/right/Europe/Simferopol +#usr/share/zoneinfo/right/Europe/Skopje +#usr/share/zoneinfo/right/Europe/Sofia +#usr/share/zoneinfo/right/Europe/Stockholm +#usr/share/zoneinfo/right/Europe/Tallinn +#usr/share/zoneinfo/right/Europe/Tirane +#usr/share/zoneinfo/right/Europe/Tiraspol +#usr/share/zoneinfo/right/Europe/Uzhgorod +#usr/share/zoneinfo/right/Europe/Vaduz +#usr/share/zoneinfo/right/Europe/Vatican +#usr/share/zoneinfo/right/Europe/Vienna +#usr/share/zoneinfo/right/Europe/Vilnius +#usr/share/zoneinfo/right/Europe/Volgograd +#usr/share/zoneinfo/right/Europe/Warsaw +#usr/share/zoneinfo/right/Europe/Zagreb +#usr/share/zoneinfo/right/Europe/Zaporozhye +#usr/share/zoneinfo/right/Europe/Zurich +#usr/share/zoneinfo/right/Factory +#usr/share/zoneinfo/right/GB +#usr/share/zoneinfo/right/GB-Eire +#usr/share/zoneinfo/right/GMT +#usr/share/zoneinfo/right/GMT+0 +#usr/share/zoneinfo/right/GMT-0 +#usr/share/zoneinfo/right/GMT0 +#usr/share/zoneinfo/right/Greenwich +#usr/share/zoneinfo/right/HST +#usr/share/zoneinfo/right/Hongkong +#usr/share/zoneinfo/right/Iceland +#usr/share/zoneinfo/right/Indian +#usr/share/zoneinfo/right/Indian/Antananarivo +#usr/share/zoneinfo/right/Indian/Chagos +#usr/share/zoneinfo/right/Indian/Christmas +#usr/share/zoneinfo/right/Indian/Cocos +#usr/share/zoneinfo/right/Indian/Comoro +#usr/share/zoneinfo/right/Indian/Kerguelen +#usr/share/zoneinfo/right/Indian/Mahe +#usr/share/zoneinfo/right/Indian/Maldives +#usr/share/zoneinfo/right/Indian/Mauritius +#usr/share/zoneinfo/right/Indian/Mayotte +#usr/share/zoneinfo/right/Indian/Reunion +#usr/share/zoneinfo/right/Iran +#usr/share/zoneinfo/right/Israel +#usr/share/zoneinfo/right/Jamaica +#usr/share/zoneinfo/right/Japan +#usr/share/zoneinfo/right/Kwajalein +#usr/share/zoneinfo/right/Libya +#usr/share/zoneinfo/right/MET +#usr/share/zoneinfo/right/MST +#usr/share/zoneinfo/right/MST7MDT +#usr/share/zoneinfo/right/Mexico +#usr/share/zoneinfo/right/Mexico/BajaNorte +#usr/share/zoneinfo/right/Mexico/BajaSur +#usr/share/zoneinfo/right/Mexico/General +#usr/share/zoneinfo/right/Mideast +#usr/share/zoneinfo/right/Mideast/Riyadh87 +#usr/share/zoneinfo/right/Mideast/Riyadh88 +#usr/share/zoneinfo/right/Mideast/Riyadh89 +#usr/share/zoneinfo/right/NZ +#usr/share/zoneinfo/right/NZ-CHAT +#usr/share/zoneinfo/right/Navajo +#usr/share/zoneinfo/right/PRC +#usr/share/zoneinfo/right/PST8PDT +#usr/share/zoneinfo/right/Pacific +#usr/share/zoneinfo/right/Pacific/Apia +#usr/share/zoneinfo/right/Pacific/Auckland +#usr/share/zoneinfo/right/Pacific/Chatham +#usr/share/zoneinfo/right/Pacific/Easter +#usr/share/zoneinfo/right/Pacific/Efate +#usr/share/zoneinfo/right/Pacific/Enderbury +#usr/share/zoneinfo/right/Pacific/Fakaofo +#usr/share/zoneinfo/right/Pacific/Fiji +#usr/share/zoneinfo/right/Pacific/Funafuti +#usr/share/zoneinfo/right/Pacific/Galapagos +#usr/share/zoneinfo/right/Pacific/Gambier +#usr/share/zoneinfo/right/Pacific/Guadalcanal +#usr/share/zoneinfo/right/Pacific/Guam +#usr/share/zoneinfo/right/Pacific/Honolulu +#usr/share/zoneinfo/right/Pacific/Johnston +#usr/share/zoneinfo/right/Pacific/Kiritimati +#usr/share/zoneinfo/right/Pacific/Kosrae +#usr/share/zoneinfo/right/Pacific/Kwajalein +#usr/share/zoneinfo/right/Pacific/Majuro +#usr/share/zoneinfo/right/Pacific/Marquesas +#usr/share/zoneinfo/right/Pacific/Midway +#usr/share/zoneinfo/right/Pacific/Nauru +#usr/share/zoneinfo/right/Pacific/Niue +#usr/share/zoneinfo/right/Pacific/Norfolk +#usr/share/zoneinfo/right/Pacific/Noumea +#usr/share/zoneinfo/right/Pacific/Pago_Pago +#usr/share/zoneinfo/right/Pacific/Palau +#usr/share/zoneinfo/right/Pacific/Pitcairn +#usr/share/zoneinfo/right/Pacific/Ponape +#usr/share/zoneinfo/right/Pacific/Port_Moresby +#usr/share/zoneinfo/right/Pacific/Rarotonga +#usr/share/zoneinfo/right/Pacific/Saipan +#usr/share/zoneinfo/right/Pacific/Samoa +#usr/share/zoneinfo/right/Pacific/Tahiti +#usr/share/zoneinfo/right/Pacific/Tarawa +#usr/share/zoneinfo/right/Pacific/Tongatapu +#usr/share/zoneinfo/right/Pacific/Truk +#usr/share/zoneinfo/right/Pacific/Wake +#usr/share/zoneinfo/right/Pacific/Wallis +#usr/share/zoneinfo/right/Pacific/Yap +#usr/share/zoneinfo/right/Poland +#usr/share/zoneinfo/right/Portugal +#usr/share/zoneinfo/right/ROC +#usr/share/zoneinfo/right/ROK +#usr/share/zoneinfo/right/Singapore +#usr/share/zoneinfo/right/Turkey +#usr/share/zoneinfo/right/UCT +#usr/share/zoneinfo/right/US +#usr/share/zoneinfo/right/US/Alaska +#usr/share/zoneinfo/right/US/Aleutian +#usr/share/zoneinfo/right/US/Arizona +#usr/share/zoneinfo/right/US/Central +#usr/share/zoneinfo/right/US/East-Indiana +#usr/share/zoneinfo/right/US/Eastern +#usr/share/zoneinfo/right/US/Hawaii +#usr/share/zoneinfo/right/US/Indiana-Starke +#usr/share/zoneinfo/right/US/Michigan +#usr/share/zoneinfo/right/US/Mountain +#usr/share/zoneinfo/right/US/Pacific +#usr/share/zoneinfo/right/US/Samoa +#usr/share/zoneinfo/right/UTC +#usr/share/zoneinfo/right/Universal +#usr/share/zoneinfo/right/W-SU +#usr/share/zoneinfo/right/WET +#usr/share/zoneinfo/right/Zulu #usr/share/zoneinfo/zone.tab +#var/cache/ldconfig +#var/cache/ldconfig/aux-cache diff --git a/config/rootfiles/common/cairo b/config/rootfiles/common/cairo new file mode 100644 index 000000000..ca09099eb --- /dev/null +++ b/config/rootfiles/common/cairo @@ -0,0 +1,99 @@ +#usr/bin/cairo-trace +#usr/include/cairo +#usr/include/cairo/cairo-deprecated.h +#usr/include/cairo/cairo-features.h +#usr/include/cairo/cairo-ft.h +#usr/include/cairo/cairo-gobject.h +#usr/include/cairo/cairo-pdf.h +#usr/include/cairo/cairo-ps.h +#usr/include/cairo/cairo-script-interpreter.h +#usr/include/cairo/cairo-svg.h +#usr/include/cairo/cairo-version.h +#usr/include/cairo/cairo.h +#usr/lib/cairo +#usr/lib/cairo/libcairo-trace.a +#usr/lib/cairo/libcairo-trace.la +usr/lib/cairo/libcairo-trace.so +usr/lib/cairo/libcairo-trace.so.0 +usr/lib/cairo/libcairo-trace.so.0.0.0 +#usr/lib/libcairo-gobject.a +#usr/lib/libcairo-gobject.la +usr/lib/libcairo-gobject.so +usr/lib/libcairo-gobject.so.2 +usr/lib/libcairo-gobject.so.2.11000.2 +#usr/lib/libcairo-script-interpreter.a +#usr/lib/libcairo-script-interpreter.la +usr/lib/libcairo-script-interpreter.so +usr/lib/libcairo-script-interpreter.so.2 +usr/lib/libcairo-script-interpreter.so.2.11000.2 +#usr/lib/libcairo.a +#usr/lib/libcairo.la +#usr/lib/libcairo.so +usr/lib/libcairo.so.2 +usr/lib/libcairo.so.2.11000.2 +#usr/lib/pkgconfig/cairo-fc.pc +#usr/lib/pkgconfig/cairo-ft.pc +#usr/lib/pkgconfig/cairo-gobject.pc +#usr/lib/pkgconfig/cairo-pdf.pc +#usr/lib/pkgconfig/cairo-png.pc +#usr/lib/pkgconfig/cairo-ps.pc +#usr/lib/pkgconfig/cairo-svg.pc +#usr/lib/pkgconfig/cairo.pc +#usr/share/gtk-doc/html/cairo +#usr/share/gtk-doc/html/cairo/bindings-errors.html +#usr/share/gtk-doc/html/cairo/bindings-fonts.html +#usr/share/gtk-doc/html/cairo/bindings-memory.html +#usr/share/gtk-doc/html/cairo/bindings-overloading.html +#usr/share/gtk-doc/html/cairo/bindings-path.html +#usr/share/gtk-doc/html/cairo/bindings-patterns.html +#usr/share/gtk-doc/html/cairo/bindings-return-values.html +#usr/share/gtk-doc/html/cairo/bindings-streams.html +#usr/share/gtk-doc/html/cairo/bindings-surfaces.html +#usr/share/gtk-doc/html/cairo/cairo-Error-handling.html +#usr/share/gtk-doc/html/cairo/cairo-FreeType-Fonts.html +#usr/share/gtk-doc/html/cairo/cairo-Image-Surfaces.html +#usr/share/gtk-doc/html/cairo/cairo-PDF-Surfaces.html +#usr/share/gtk-doc/html/cairo/cairo-PNG-Support.html +#usr/share/gtk-doc/html/cairo/cairo-Paths.html +#usr/share/gtk-doc/html/cairo/cairo-PostScript-Surfaces.html +#usr/share/gtk-doc/html/cairo/cairo-Quartz-(CGFont)-Fonts.html +#usr/share/gtk-doc/html/cairo/cairo-Quartz-Surfaces.html +#usr/share/gtk-doc/html/cairo/cairo-Recording-Surfaces.html +#usr/share/gtk-doc/html/cairo/cairo-Regions.html +#usr/share/gtk-doc/html/cairo/cairo-SVG-Surfaces.html +#usr/share/gtk-doc/html/cairo/cairo-Transformations.html +#usr/share/gtk-doc/html/cairo/cairo-Types.html +#usr/share/gtk-doc/html/cairo/cairo-User-Fonts.html +#usr/share/gtk-doc/html/cairo/cairo-Version-Information.html +#usr/share/gtk-doc/html/cairo/cairo-Win32-Fonts.html +#usr/share/gtk-doc/html/cairo/cairo-Win32-Surfaces.html +#usr/share/gtk-doc/html/cairo/cairo-XLib-Surfaces.html +#usr/share/gtk-doc/html/cairo/cairo-cairo-device-t.html +#usr/share/gtk-doc/html/cairo/cairo-cairo-font-face-t.html +#usr/share/gtk-doc/html/cairo/cairo-cairo-font-options-t.html +#usr/share/gtk-doc/html/cairo/cairo-cairo-matrix-t.html +#usr/share/gtk-doc/html/cairo/cairo-cairo-pattern-t.html +#usr/share/gtk-doc/html/cairo/cairo-cairo-scaled-font-t.html +#usr/share/gtk-doc/html/cairo/cairo-cairo-surface-t.html +#usr/share/gtk-doc/html/cairo/cairo-cairo-t.html +#usr/share/gtk-doc/html/cairo/cairo-drawing.html +#usr/share/gtk-doc/html/cairo/cairo-fonts.html +#usr/share/gtk-doc/html/cairo/cairo-support.html +#usr/share/gtk-doc/html/cairo/cairo-surfaces.html +#usr/share/gtk-doc/html/cairo/cairo-text.html +#usr/share/gtk-doc/html/cairo/cairo.devhelp +#usr/share/gtk-doc/html/cairo/cairo.devhelp2 +#usr/share/gtk-doc/html/cairo/home.png +#usr/share/gtk-doc/html/cairo/index-1.10.html +#usr/share/gtk-doc/html/cairo/index-1.2.html +#usr/share/gtk-doc/html/cairo/index-1.4.html +#usr/share/gtk-doc/html/cairo/index-1.6.html +#usr/share/gtk-doc/html/cairo/index-1.8.html +#usr/share/gtk-doc/html/cairo/index-all.html +#usr/share/gtk-doc/html/cairo/index.html +#usr/share/gtk-doc/html/cairo/index.sgml +#usr/share/gtk-doc/html/cairo/language-bindings.html +#usr/share/gtk-doc/html/cairo/left.png +#usr/share/gtk-doc/html/cairo/right.png +#usr/share/gtk-doc/html/cairo/style.css +#usr/share/gtk-doc/html/cairo/up.png diff --git a/config/rootfiles/common/cmake b/config/rootfiles/common/cmake index 4a1d702c0..81a953958 100644 --- a/config/rootfiles/common/cmake +++ b/config/rootfiles/common/cmake @@ -1,424 +1,421 @@ -#usr/local/bin/ccmake -#usr/local/bin/cmake -#usr/local/bin/cpack -#usr/local/bin/ctest -#usr/local/doc -#usr/local/doc/cmake-2.6 -#usr/local/doc/cmake-2.6/ccmake.docbook -#usr/local/doc/cmake-2.6/ccmake.html -#usr/local/doc/cmake-2.6/ccmake.txt -#usr/local/doc/cmake-2.6/cmake-commands.html -#usr/local/doc/cmake-2.6/cmake-commands.txt -#usr/local/doc/cmake-2.6/cmake-compatcommands.html -#usr/local/doc/cmake-2.6/cmake-compatcommands.txt -#usr/local/doc/cmake-2.6/cmake-modules.html -#usr/local/doc/cmake-2.6/cmake-modules.txt -#usr/local/doc/cmake-2.6/cmake-policies.html -#usr/local/doc/cmake-2.6/cmake-policies.txt -#usr/local/doc/cmake-2.6/cmake-properties.html -#usr/local/doc/cmake-2.6/cmake-properties.txt -#usr/local/doc/cmake-2.6/cmake-variables.html -#usr/local/doc/cmake-2.6/cmake-variables.txt -#usr/local/doc/cmake-2.6/cmake.docbook -#usr/local/doc/cmake-2.6/cmake.html -#usr/local/doc/cmake-2.6/cmake.txt -#usr/local/doc/cmake-2.6/cpack.docbook -#usr/local/doc/cmake-2.6/cpack.html -#usr/local/doc/cmake-2.6/cpack.txt -#usr/local/doc/cmake-2.6/ctest.docbook -#usr/local/doc/cmake-2.6/ctest.html -#usr/local/doc/cmake-2.6/ctest.txt -#usr/local/man -#usr/local/man/man1 -#usr/local/man/man1/ccmake.1 -#usr/local/man/man1/cmake.1 -#usr/local/man/man1/cmakecommands.1 -#usr/local/man/man1/cmakecompat.1 -#usr/local/man/man1/cmakemodules.1 -#usr/local/man/man1/cmakepolicies.1 -#usr/local/man/man1/cmakeprops.1 -#usr/local/man/man1/cmakevars.1 -#usr/local/man/man1/cpack.1 -#usr/local/man/man1/ctest.1 -#usr/local/share/cmake-2.6 -#usr/local/share/cmake-2.6/Modules -#usr/local/share/cmake-2.6/Modules/AddFileDependencies.cmake -#usr/local/share/cmake-2.6/Modules/BundleUtilities.cmake -#usr/local/share/cmake-2.6/Modules/CMake.cmake -#usr/local/share/cmake-2.6/Modules/CMakeASM-ATTInformation.cmake -#usr/local/share/cmake-2.6/Modules/CMakeASMCompiler.cmake.in -#usr/local/share/cmake-2.6/Modules/CMakeASMInformation.cmake -#usr/local/share/cmake-2.6/Modules/CMakeASM_MASMInformation.cmake -#usr/local/share/cmake-2.6/Modules/CMakeBackwardCompatibilityC.cmake -#usr/local/share/cmake-2.6/Modules/CMakeBackwardCompatibilityCXX.cmake -#usr/local/share/cmake-2.6/Modules/CMakeBorlandFindMake.cmake -#usr/local/share/cmake-2.6/Modules/CMakeBuildSettings.cmake.in -#usr/local/share/cmake-2.6/Modules/CMakeCCompiler.cmake.in -#usr/local/share/cmake-2.6/Modules/CMakeCCompilerABI.c -#usr/local/share/cmake-2.6/Modules/CMakeCCompilerId.c.in -#usr/local/share/cmake-2.6/Modules/CMakeCInformation.cmake -#usr/local/share/cmake-2.6/Modules/CMakeCXXCompiler.cmake.in -#usr/local/share/cmake-2.6/Modules/CMakeCXXCompilerABI.cpp -#usr/local/share/cmake-2.6/Modules/CMakeCXXCompilerId.cpp.in -#usr/local/share/cmake-2.6/Modules/CMakeCXXInformation.cmake -#usr/local/share/cmake-2.6/Modules/CMakeCommonLanguageInclude.cmake -#usr/local/share/cmake-2.6/Modules/CMakeCompilerABI.h -#usr/local/share/cmake-2.6/Modules/CMakeConfigurableFile.in -#usr/local/share/cmake-2.6/Modules/CMakeDependentOption.cmake -#usr/local/share/cmake-2.6/Modules/CMakeDetermineASM-ATTCompiler.cmake -#usr/local/share/cmake-2.6/Modules/CMakeDetermineASMCompiler.cmake -#usr/local/share/cmake-2.6/Modules/CMakeDetermineASM_MASMCompiler.cmake -#usr/local/share/cmake-2.6/Modules/CMakeDetermineCCompiler.cmake -#usr/local/share/cmake-2.6/Modules/CMakeDetermineCXXCompiler.cmake -#usr/local/share/cmake-2.6/Modules/CMakeDetermineCompilerABI.cmake -#usr/local/share/cmake-2.6/Modules/CMakeDetermineCompilerId.cmake -#usr/local/share/cmake-2.6/Modules/CMakeDetermineFortranCompiler.cmake -#usr/local/share/cmake-2.6/Modules/CMakeDetermineJavaCompiler.cmake -#usr/local/share/cmake-2.6/Modules/CMakeDetermineRCCompiler.cmake -#usr/local/share/cmake-2.6/Modules/CMakeDetermineSystem.cmake -#usr/local/share/cmake-2.6/Modules/CMakeExportBuildSettings.cmake -#usr/local/share/cmake-2.6/Modules/CMakeFindBinUtils.cmake -#usr/local/share/cmake-2.6/Modules/CMakeFindFrameworks.cmake -#usr/local/share/cmake-2.6/Modules/CMakeFindWMake.cmake -#usr/local/share/cmake-2.6/Modules/CMakeFindXCode.cmake -#usr/local/share/cmake-2.6/Modules/CMakeForceCompiler.cmake -#usr/local/share/cmake-2.6/Modules/CMakeFortranCompiler.cmake.in -#usr/local/share/cmake-2.6/Modules/CMakeFortranCompilerId.F90.in -#usr/local/share/cmake-2.6/Modules/CMakeFortranInformation.cmake -#usr/local/share/cmake-2.6/Modules/CMakeGenericSystem.cmake -#usr/local/share/cmake-2.6/Modules/CMakeImportBuildSettings.cmake -#usr/local/share/cmake-2.6/Modules/CMakeJavaCompiler.cmake.in -#usr/local/share/cmake-2.6/Modules/CMakeJavaInformation.cmake -#usr/local/share/cmake-2.6/Modules/CMakeMSYSFindMake.cmake -#usr/local/share/cmake-2.6/Modules/CMakeMinGWFindMake.cmake -#usr/local/share/cmake-2.6/Modules/CMakeNMakeFindMake.cmake -#usr/local/share/cmake-2.6/Modules/CMakePlatformId.h.in -#usr/local/share/cmake-2.6/Modules/CMakePrintSystemInformation.cmake -#usr/local/share/cmake-2.6/Modules/CMakeRCCompiler.cmake.in -#usr/local/share/cmake-2.6/Modules/CMakeRCInformation.cmake -#usr/local/share/cmake-2.6/Modules/CMakeSystem.cmake.in -#usr/local/share/cmake-2.6/Modules/CMakeSystemSpecificInformation.cmake -#usr/local/share/cmake-2.6/Modules/CMakeTestASM-ATTCompiler.cmake -#usr/local/share/cmake-2.6/Modules/CMakeTestASMCompiler.cmake -#usr/local/share/cmake-2.6/Modules/CMakeTestASM_MASMCompiler.cmake -#usr/local/share/cmake-2.6/Modules/CMakeTestCCompiler.cmake -#usr/local/share/cmake-2.6/Modules/CMakeTestCXXCompiler.cmake -#usr/local/share/cmake-2.6/Modules/CMakeTestForFreeVC.cxx -#usr/local/share/cmake-2.6/Modules/CMakeTestFortranCompiler.cmake -#usr/local/share/cmake-2.6/Modules/CMakeTestGNU.c -#usr/local/share/cmake-2.6/Modules/CMakeTestJavaCompiler.cmake -#usr/local/share/cmake-2.6/Modules/CMakeTestNMakeCLVersion.c -#usr/local/share/cmake-2.6/Modules/CMakeTestRCCompiler.cmake -#usr/local/share/cmake-2.6/Modules/CMakeUnixFindMake.cmake -#usr/local/share/cmake-2.6/Modules/CMakeVS6BackwardCompatibility.cmake -#usr/local/share/cmake-2.6/Modules/CMakeVS6FindMake.cmake -#usr/local/share/cmake-2.6/Modules/CMakeVS71FindMake.cmake -#usr/local/share/cmake-2.6/Modules/CMakeVS7BackwardCompatibility.cmake -#usr/local/share/cmake-2.6/Modules/CMakeVS7FindMake.cmake -#usr/local/share/cmake-2.6/Modules/CMakeVS8FindMake.cmake -#usr/local/share/cmake-2.6/Modules/CMakeVS9FindMake.cmake -#usr/local/share/cmake-2.6/Modules/CPack.DS_Store.in -#usr/local/share/cmake-2.6/Modules/CPack.Description.plist.in -#usr/local/share/cmake-2.6/Modules/CPack.Info.plist.in -#usr/local/share/cmake-2.6/Modules/CPack.OSXScriptLauncher.in -#usr/local/share/cmake-2.6/Modules/CPack.OSXScriptLauncher.rsrc.in -#usr/local/share/cmake-2.6/Modules/CPack.OSXX11.Info.plist.in -#usr/local/share/cmake-2.6/Modules/CPack.OSXX11.main.scpt.in -#usr/local/share/cmake-2.6/Modules/CPack.RuntimeScript.in -#usr/local/share/cmake-2.6/Modules/CPack.STGZ_Header.sh.in -#usr/local/share/cmake-2.6/Modules/CPack.VolumeIcon.icns.in -#usr/local/share/cmake-2.6/Modules/CPack.background.png.in -#usr/local/share/cmake-2.6/Modules/CPack.cmake -#usr/local/share/cmake-2.6/Modules/CPack.distribution.dist.in -#usr/local/share/cmake-2.6/Modules/CPackDeb.cmake -#usr/local/share/cmake-2.6/Modules/CPackRPM.cmake -#usr/local/share/cmake-2.6/Modules/CPackZIP.cmake -#usr/local/share/cmake-2.6/Modules/CTest.cmake -#usr/local/share/cmake-2.6/Modules/CTestTargets.cmake -#usr/local/share/cmake-2.6/Modules/CheckCCompilerFlag.cmake -#usr/local/share/cmake-2.6/Modules/CheckCSourceCompiles.cmake -#usr/local/share/cmake-2.6/Modules/CheckCSourceRuns.cmake -#usr/local/share/cmake-2.6/Modules/CheckCXXCompilerFlag.cmake -#usr/local/share/cmake-2.6/Modules/CheckCXXSourceCompiles.cmake -#usr/local/share/cmake-2.6/Modules/CheckCXXSourceRuns.cmake -#usr/local/share/cmake-2.6/Modules/CheckForPthreads.c -#usr/local/share/cmake-2.6/Modules/CheckFortranFunctionExists.cmake -#usr/local/share/cmake-2.6/Modules/CheckFunctionExists.c -#usr/local/share/cmake-2.6/Modules/CheckFunctionExists.cmake -#usr/local/share/cmake-2.6/Modules/CheckIncludeFile.c.in -#usr/local/share/cmake-2.6/Modules/CheckIncludeFile.cmake -#usr/local/share/cmake-2.6/Modules/CheckIncludeFile.cxx.in -#usr/local/share/cmake-2.6/Modules/CheckIncludeFileCXX.cmake -#usr/local/share/cmake-2.6/Modules/CheckIncludeFiles.cmake -#usr/local/share/cmake-2.6/Modules/CheckLibraryExists.cmake -#usr/local/share/cmake-2.6/Modules/CheckLibraryExists.lists.in -#usr/local/share/cmake-2.6/Modules/CheckSizeOf.cmake -#usr/local/share/cmake-2.6/Modules/CheckStructHasMember.cmake -#usr/local/share/cmake-2.6/Modules/CheckSymbolExists.cmake -#usr/local/share/cmake-2.6/Modules/CheckTypeSize.cmake -#usr/local/share/cmake-2.6/Modules/CheckTypeSizeC.c.in -#usr/local/share/cmake-2.6/Modules/CheckVariableExists.c -#usr/local/share/cmake-2.6/Modules/CheckVariableExists.cmake -#usr/local/share/cmake-2.6/Modules/Dart.cmake -#usr/local/share/cmake-2.6/Modules/DartConfiguration.tcl.in -#usr/local/share/cmake-2.6/Modules/Documentation.cmake -#usr/local/share/cmake-2.6/Modules/DummyCXXFile.cxx -#usr/local/share/cmake-2.6/Modules/FLTKCompatibility.cmake -#usr/local/share/cmake-2.6/Modules/FeatureSummary.cmake -#usr/local/share/cmake-2.6/Modules/FindASPELL.cmake -#usr/local/share/cmake-2.6/Modules/FindAVIFile.cmake -#usr/local/share/cmake-2.6/Modules/FindBLAS.cmake -#usr/local/share/cmake-2.6/Modules/FindBZip2.cmake -#usr/local/share/cmake-2.6/Modules/FindBoost.cmake -#usr/local/share/cmake-2.6/Modules/FindCABLE.cmake -#usr/local/share/cmake-2.6/Modules/FindCURL.cmake -#usr/local/share/cmake-2.6/Modules/FindCVS.cmake -#usr/local/share/cmake-2.6/Modules/FindCoin3D.cmake -#usr/local/share/cmake-2.6/Modules/FindCups.cmake -#usr/local/share/cmake-2.6/Modules/FindCurses.cmake -#usr/local/share/cmake-2.6/Modules/FindCxxTest.cmake -#usr/local/share/cmake-2.6/Modules/FindCygwin.cmake -#usr/local/share/cmake-2.6/Modules/FindDCMTK.cmake -#usr/local/share/cmake-2.6/Modules/FindDart.cmake -#usr/local/share/cmake-2.6/Modules/FindDevIL.cmake -#usr/local/share/cmake-2.6/Modules/FindDoxygen.cmake -#usr/local/share/cmake-2.6/Modules/FindEXPAT.cmake -#usr/local/share/cmake-2.6/Modules/FindFLTK.cmake -#usr/local/share/cmake-2.6/Modules/FindFLTK2.cmake -#usr/local/share/cmake-2.6/Modules/FindFreetype.cmake -#usr/local/share/cmake-2.6/Modules/FindGCCXML.cmake -#usr/local/share/cmake-2.6/Modules/FindGDAL.cmake -#usr/local/share/cmake-2.6/Modules/FindGIF.cmake -#usr/local/share/cmake-2.6/Modules/FindGLU.cmake -#usr/local/share/cmake-2.6/Modules/FindGLUT.cmake -#usr/local/share/cmake-2.6/Modules/FindGTK.cmake -#usr/local/share/cmake-2.6/Modules/FindGettext.cmake -#usr/local/share/cmake-2.6/Modules/FindGnuplot.cmake -#usr/local/share/cmake-2.6/Modules/FindHSPELL.cmake -#usr/local/share/cmake-2.6/Modules/FindHTMLHelp.cmake -#usr/local/share/cmake-2.6/Modules/FindITK.cmake -#usr/local/share/cmake-2.6/Modules/FindImageMagick.cmake -#usr/local/share/cmake-2.6/Modules/FindJNI.cmake -#usr/local/share/cmake-2.6/Modules/FindJPEG.cmake -#usr/local/share/cmake-2.6/Modules/FindJasper.cmake -#usr/local/share/cmake-2.6/Modules/FindJava.cmake -#usr/local/share/cmake-2.6/Modules/FindKDE3.cmake -#usr/local/share/cmake-2.6/Modules/FindKDE4.cmake -#usr/local/share/cmake-2.6/Modules/FindLAPACK.cmake -#usr/local/share/cmake-2.6/Modules/FindLATEX.cmake -#usr/local/share/cmake-2.6/Modules/FindLibXml2.cmake -#usr/local/share/cmake-2.6/Modules/FindLibXslt.cmake -#usr/local/share/cmake-2.6/Modules/FindLua50.cmake -#usr/local/share/cmake-2.6/Modules/FindLua51.cmake -#usr/local/share/cmake-2.6/Modules/FindMFC.cmake -#usr/local/share/cmake-2.6/Modules/FindMPEG.cmake -#usr/local/share/cmake-2.6/Modules/FindMPEG2.cmake -#usr/local/share/cmake-2.6/Modules/FindMPI.cmake -#usr/local/share/cmake-2.6/Modules/FindMatlab.cmake -#usr/local/share/cmake-2.6/Modules/FindMotif.cmake -#usr/local/share/cmake-2.6/Modules/FindOpenAL.cmake -#usr/local/share/cmake-2.6/Modules/FindOpenGL.cmake -#usr/local/share/cmake-2.6/Modules/FindOpenMP.cmake -#usr/local/share/cmake-2.6/Modules/FindOpenSSL.cmake -#usr/local/share/cmake-2.6/Modules/FindOpenSceneGraph.cmake -#usr/local/share/cmake-2.6/Modules/FindOpenThreads.cmake -#usr/local/share/cmake-2.6/Modules/FindPHP4.cmake -#usr/local/share/cmake-2.6/Modules/FindPNG.cmake -#usr/local/share/cmake-2.6/Modules/FindPackageHandleStandardArgs.cmake -#usr/local/share/cmake-2.6/Modules/FindPackageMessage.cmake -#usr/local/share/cmake-2.6/Modules/FindPerl.cmake -#usr/local/share/cmake-2.6/Modules/FindPerlLibs.cmake -#usr/local/share/cmake-2.6/Modules/FindPhysFS.cmake -#usr/local/share/cmake-2.6/Modules/FindPike.cmake -#usr/local/share/cmake-2.6/Modules/FindPkgConfig.cmake -#usr/local/share/cmake-2.6/Modules/FindProducer.cmake -#usr/local/share/cmake-2.6/Modules/FindPythonInterp.cmake -#usr/local/share/cmake-2.6/Modules/FindPythonLibs.cmake -#usr/local/share/cmake-2.6/Modules/FindQt.cmake -#usr/local/share/cmake-2.6/Modules/FindQt3.cmake -#usr/local/share/cmake-2.6/Modules/FindQt4.cmake -#usr/local/share/cmake-2.6/Modules/FindQuickTime.cmake -#usr/local/share/cmake-2.6/Modules/FindRTI.cmake -#usr/local/share/cmake-2.6/Modules/FindRuby.cmake -#usr/local/share/cmake-2.6/Modules/FindSDL.cmake -#usr/local/share/cmake-2.6/Modules/FindSDL_image.cmake -#usr/local/share/cmake-2.6/Modules/FindSDL_mixer.cmake -#usr/local/share/cmake-2.6/Modules/FindSDL_net.cmake -#usr/local/share/cmake-2.6/Modules/FindSDL_sound.cmake -#usr/local/share/cmake-2.6/Modules/FindSDL_ttf.cmake -#usr/local/share/cmake-2.6/Modules/FindSWIG.cmake -#usr/local/share/cmake-2.6/Modules/FindSelfPackers.cmake -#usr/local/share/cmake-2.6/Modules/FindSquish.cmake -#usr/local/share/cmake-2.6/Modules/FindSubversion.cmake -#usr/local/share/cmake-2.6/Modules/FindTCL.cmake -#usr/local/share/cmake-2.6/Modules/FindTIFF.cmake -#usr/local/share/cmake-2.6/Modules/FindTclStub.cmake -#usr/local/share/cmake-2.6/Modules/FindTclsh.cmake -#usr/local/share/cmake-2.6/Modules/FindThreads.cmake -#usr/local/share/cmake-2.6/Modules/FindUnixCommands.cmake -#usr/local/share/cmake-2.6/Modules/FindVTK.cmake -#usr/local/share/cmake-2.6/Modules/FindWget.cmake -#usr/local/share/cmake-2.6/Modules/FindWish.cmake -#usr/local/share/cmake-2.6/Modules/FindX11.cmake -#usr/local/share/cmake-2.6/Modules/FindXMLRPC.cmake -#usr/local/share/cmake-2.6/Modules/FindZLIB.cmake -#usr/local/share/cmake-2.6/Modules/Findosg.cmake -#usr/local/share/cmake-2.6/Modules/FindosgAnimation.cmake -#usr/local/share/cmake-2.6/Modules/FindosgDB.cmake -#usr/local/share/cmake-2.6/Modules/FindosgFX.cmake -#usr/local/share/cmake-2.6/Modules/FindosgGA.cmake -#usr/local/share/cmake-2.6/Modules/FindosgIntrospection.cmake -#usr/local/share/cmake-2.6/Modules/FindosgManipulator.cmake -#usr/local/share/cmake-2.6/Modules/FindosgParticle.cmake -#usr/local/share/cmake-2.6/Modules/FindosgProducer.cmake -#usr/local/share/cmake-2.6/Modules/FindosgShadow.cmake -#usr/local/share/cmake-2.6/Modules/FindosgSim.cmake -#usr/local/share/cmake-2.6/Modules/FindosgTerrain.cmake -#usr/local/share/cmake-2.6/Modules/FindosgText.cmake -#usr/local/share/cmake-2.6/Modules/FindosgUtil.cmake -#usr/local/share/cmake-2.6/Modules/FindosgViewer.cmake -#usr/local/share/cmake-2.6/Modules/FindosgVolume.cmake -#usr/local/share/cmake-2.6/Modules/FindosgWidget.cmake -#usr/local/share/cmake-2.6/Modules/Findosg_functions.cmake -#usr/local/share/cmake-2.6/Modules/FindwxWidgets.cmake -#usr/local/share/cmake-2.6/Modules/FindwxWindows.cmake -#usr/local/share/cmake-2.6/Modules/FortranCInterface.cmake -#usr/local/share/cmake-2.6/Modules/FortranCInterface.h.in -#usr/local/share/cmake-2.6/Modules/GetPrerequisites.cmake -#usr/local/share/cmake-2.6/Modules/ITKCompatibility.cmake -#usr/local/share/cmake-2.6/Modules/InstallRequiredSystemLibraries.cmake -#usr/local/share/cmake-2.6/Modules/KDE3Macros.cmake -#usr/local/share/cmake-2.6/Modules/MacOSXBundleInfo.plist.in -#usr/local/share/cmake-2.6/Modules/MacOSXFrameworkInfo.plist.in -#usr/local/share/cmake-2.6/Modules/MacroAddFileDependencies.cmake -#usr/local/share/cmake-2.6/Modules/NSIS.InstallOptions.ini.in -#usr/local/share/cmake-2.6/Modules/NSIS.template.in -#usr/local/share/cmake-2.6/Modules/Platform -#usr/local/share/cmake-2.6/Modules/Platform/AIX-VisualAge-Fortran.cmake -#usr/local/share/cmake-2.6/Modules/Platform/AIX.cmake -#usr/local/share/cmake-2.6/Modules/Platform/BSDOS.cmake -#usr/local/share/cmake-2.6/Modules/Platform/BeOS.cmake -#usr/local/share/cmake-2.6/Modules/Platform/BlueGeneL.cmake -#usr/local/share/cmake-2.6/Modules/Platform/CYGWIN-g77.cmake -#usr/local/share/cmake-2.6/Modules/Platform/CYGWIN.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Catamount.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Darwin-icc.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Darwin-icpc.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Darwin-xlc.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Darwin.cmake -#usr/local/share/cmake-2.6/Modules/Platform/DragonFly.cmake -#usr/local/share/cmake-2.6/Modules/Platform/FreeBSD.cmake -#usr/local/share/cmake-2.6/Modules/Platform/GNU.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Generic-ADSP-ASM.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Generic-ADSP-C.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Generic-ADSP-CXX.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Generic-ADSP-Common.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Generic-SDCC-C.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Generic.cmake -#usr/local/share/cmake-2.6/Modules/Platform/HP-UX.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Haiku.cmake -#usr/local/share/cmake-2.6/Modules/Platform/IRIX.cmake -#usr/local/share/cmake-2.6/Modules/Platform/IRIX64.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Linux-GNU-Fortran.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Linux-Intel-C.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Linux-Intel-CXX.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Linux-Intel-Fortran.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Linux-PGI-C.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Linux-PGI-CXX.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Linux-PGI-Fortran.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Linux-SunPro-C.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Linux-SunPro-CXX.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Linux-SunPro-Fortran.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Linux-VisualAge-C.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Linux-VisualAge-Fortran.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Linux-como.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Linux-icpc.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Linux-ifort.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Linux.cmake -#usr/local/share/cmake-2.6/Modules/Platform/MP-RAS.cmake -#usr/local/share/cmake-2.6/Modules/Platform/NetBSD.cmake -#usr/local/share/cmake-2.6/Modules/Platform/OSF1.cmake -#usr/local/share/cmake-2.6/Modules/Platform/OpenBSD.cmake -#usr/local/share/cmake-2.6/Modules/Platform/QNX.cmake -#usr/local/share/cmake-2.6/Modules/Platform/RISCos.cmake -#usr/local/share/cmake-2.6/Modules/Platform/SCO_SV.cmake -#usr/local/share/cmake-2.6/Modules/Platform/SINIX.cmake -#usr/local/share/cmake-2.6/Modules/Platform/SunOS-SunPro-Fortran.cmake -#usr/local/share/cmake-2.6/Modules/Platform/SunOS.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Tru64.cmake -#usr/local/share/cmake-2.6/Modules/Platform/ULTRIX.cmake -#usr/local/share/cmake-2.6/Modules/Platform/UNIX_SV.cmake -#usr/local/share/cmake-2.6/Modules/Platform/UnixPaths.cmake -#usr/local/share/cmake-2.6/Modules/Platform/UnixWare.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Windows-bcc32.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Windows-cl.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Windows-cl.cmake.in -#usr/local/share/cmake-2.6/Modules/Platform/Windows-df.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Windows-g++.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Windows-g77.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Windows-gcc.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Windows-icl.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Windows-ifort.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Windows-wcl386.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Windows.cmake -#usr/local/share/cmake-2.6/Modules/Platform/WindowsPaths.cmake -#usr/local/share/cmake-2.6/Modules/Platform/Xenix.cmake -#usr/local/share/cmake-2.6/Modules/Platform/cl.cmake -#usr/local/share/cmake-2.6/Modules/Platform/eCos.cmake -#usr/local/share/cmake-2.6/Modules/Platform/g77.cmake -#usr/local/share/cmake-2.6/Modules/Platform/gas.cmake -#usr/local/share/cmake-2.6/Modules/Platform/gcc.cmake -#usr/local/share/cmake-2.6/Modules/Platform/kFreeBSD.cmake -#usr/local/share/cmake-2.6/Modules/Platform/syllable.cmake -#usr/local/share/cmake-2.6/Modules/Platform/xlf.cmake -#usr/local/share/cmake-2.6/Modules/SquishTestScript.cmake -#usr/local/share/cmake-2.6/Modules/SystemInformation.cmake -#usr/local/share/cmake-2.6/Modules/SystemInformation.in -#usr/local/share/cmake-2.6/Modules/TestBigEndian.cmake -#usr/local/share/cmake-2.6/Modules/TestCXXAcceptsFlag.cmake -#usr/local/share/cmake-2.6/Modules/TestEndianess.c.in -#usr/local/share/cmake-2.6/Modules/TestForANSIForScope.cmake -#usr/local/share/cmake-2.6/Modules/TestForANSIStreamHeaders.cmake -#usr/local/share/cmake-2.6/Modules/TestForANSIStreamHeaders.cxx -#usr/local/share/cmake-2.6/Modules/TestForAnsiForScope.cxx -#usr/local/share/cmake-2.6/Modules/TestForSSTREAM.cmake -#usr/local/share/cmake-2.6/Modules/TestForSSTREAM.cxx -#usr/local/share/cmake-2.6/Modules/TestForSTDNamespace.cmake -#usr/local/share/cmake-2.6/Modules/TestForSTDNamespace.cxx -#usr/local/share/cmake-2.6/Modules/UseEcos.cmake -#usr/local/share/cmake-2.6/Modules/UsePkgConfig.cmake -#usr/local/share/cmake-2.6/Modules/UseQt4.cmake -#usr/local/share/cmake-2.6/Modules/UseSWIG.cmake -#usr/local/share/cmake-2.6/Modules/UseVTK40.cmake -#usr/local/share/cmake-2.6/Modules/UseVTKBuildSettings40.cmake -#usr/local/share/cmake-2.6/Modules/UseVTKConfig40.cmake -#usr/local/share/cmake-2.6/Modules/Use_wxWindows.cmake -#usr/local/share/cmake-2.6/Modules/UsewxWidgets.cmake -#usr/local/share/cmake-2.6/Modules/VTKCompatibility.cmake -#usr/local/share/cmake-2.6/Modules/ecos_clean.cmake -#usr/local/share/cmake-2.6/Modules/kde3init_dummy.cpp.in -#usr/local/share/cmake-2.6/Modules/kde3uic.cmake -#usr/local/share/cmake-2.6/Modules/readme.txt -#usr/local/share/cmake-2.6/Templates -#usr/local/share/cmake-2.6/Templates/CMakeLists.txt -#usr/local/share/cmake-2.6/Templates/CMakeVSMacros1.vsmacros -#usr/local/share/cmake-2.6/Templates/CMakeVSMacros2.vsmacros -#usr/local/share/cmake-2.6/Templates/CMakeVisualStudio6Configurations.cmake -#usr/local/share/cmake-2.6/Templates/CPack.GenericDescription.txt -#usr/local/share/cmake-2.6/Templates/CPack.GenericLicense.txt -#usr/local/share/cmake-2.6/Templates/CPack.GenericWelcome.txt -#usr/local/share/cmake-2.6/Templates/CPackConfig.cmake.in -#usr/local/share/cmake-2.6/Templates/CTestScript.cmake.in -#usr/local/share/cmake-2.6/Templates/DLLFooter.dsptemplate -#usr/local/share/cmake-2.6/Templates/DLLHeader.dsptemplate -#usr/local/share/cmake-2.6/Templates/EXEFooter.dsptemplate -#usr/local/share/cmake-2.6/Templates/EXEHeader.dsptemplate -#usr/local/share/cmake-2.6/Templates/EXEWinHeader.dsptemplate -#usr/local/share/cmake-2.6/Templates/TestDriver.cxx.in -#usr/local/share/cmake-2.6/Templates/UtilityFooter.dsptemplate -#usr/local/share/cmake-2.6/Templates/UtilityHeader.dsptemplate -#usr/local/share/cmake-2.6/Templates/cygwin-package.sh.in -#usr/local/share/cmake-2.6/Templates/staticLibFooter.dsptemplate -#usr/local/share/cmake-2.6/Templates/staticLibHeader.dsptemplate -#usr/local/share/cmake-2.6/include -#usr/local/share/cmake-2.6/include/cmCPluginAPI.h +#usr/bin/ccmake +#usr/bin/cmake +#usr/bin/cpack +#usr/bin/ctest +#usr/doc/cmake-2.6 +#usr/doc/cmake-2.6/ccmake.docbook +#usr/doc/cmake-2.6/ccmake.html +#usr/doc/cmake-2.6/ccmake.txt +#usr/doc/cmake-2.6/cmake-commands.html +#usr/doc/cmake-2.6/cmake-commands.txt +#usr/doc/cmake-2.6/cmake-compatcommands.html +#usr/doc/cmake-2.6/cmake-compatcommands.txt +#usr/doc/cmake-2.6/cmake-modules.html +#usr/doc/cmake-2.6/cmake-modules.txt +#usr/doc/cmake-2.6/cmake-policies.html +#usr/doc/cmake-2.6/cmake-policies.txt +#usr/doc/cmake-2.6/cmake-properties.html +#usr/doc/cmake-2.6/cmake-properties.txt +#usr/doc/cmake-2.6/cmake-variables.html +#usr/doc/cmake-2.6/cmake-variables.txt +#usr/doc/cmake-2.6/cmake.docbook +#usr/doc/cmake-2.6/cmake.html +#usr/doc/cmake-2.6/cmake.txt +#usr/doc/cmake-2.6/cpack.docbook +#usr/doc/cmake-2.6/cpack.html +#usr/doc/cmake-2.6/cpack.txt +#usr/doc/cmake-2.6/ctest.docbook +#usr/doc/cmake-2.6/ctest.html +#usr/doc/cmake-2.6/ctest.txt +#usr/man/man1/ccmake.1 +#usr/man/man1/cmake.1 +#usr/man/man1/cmakecommands.1 +#usr/man/man1/cmakecompat.1 +#usr/man/man1/cmakemodules.1 +#usr/man/man1/cmakepolicies.1 +#usr/man/man1/cmakeprops.1 +#usr/man/man1/cmakevars.1 +#usr/man/man1/cpack.1 +#usr/man/man1/ctest.1 +#usr/share/cmake-2.6 +#usr/share/cmake-2.6/Modules +#usr/share/cmake-2.6/Modules/AddFileDependencies.cmake +#usr/share/cmake-2.6/Modules/BundleUtilities.cmake +#usr/share/cmake-2.6/Modules/CMake.cmake +#usr/share/cmake-2.6/Modules/CMakeASM-ATTInformation.cmake +#usr/share/cmake-2.6/Modules/CMakeASMCompiler.cmake.in +#usr/share/cmake-2.6/Modules/CMakeASMInformation.cmake +#usr/share/cmake-2.6/Modules/CMakeASM_MASMInformation.cmake +#usr/share/cmake-2.6/Modules/CMakeBackwardCompatibilityC.cmake +#usr/share/cmake-2.6/Modules/CMakeBackwardCompatibilityCXX.cmake +#usr/share/cmake-2.6/Modules/CMakeBorlandFindMake.cmake +#usr/share/cmake-2.6/Modules/CMakeBuildSettings.cmake.in +#usr/share/cmake-2.6/Modules/CMakeCCompiler.cmake.in +#usr/share/cmake-2.6/Modules/CMakeCCompilerABI.c +#usr/share/cmake-2.6/Modules/CMakeCCompilerId.c.in +#usr/share/cmake-2.6/Modules/CMakeCInformation.cmake +#usr/share/cmake-2.6/Modules/CMakeCXXCompiler.cmake.in +#usr/share/cmake-2.6/Modules/CMakeCXXCompilerABI.cpp +#usr/share/cmake-2.6/Modules/CMakeCXXCompilerId.cpp.in +#usr/share/cmake-2.6/Modules/CMakeCXXInformation.cmake +#usr/share/cmake-2.6/Modules/CMakeCommonLanguageInclude.cmake +#usr/share/cmake-2.6/Modules/CMakeCompilerABI.h +#usr/share/cmake-2.6/Modules/CMakeConfigurableFile.in +#usr/share/cmake-2.6/Modules/CMakeDependentOption.cmake +#usr/share/cmake-2.6/Modules/CMakeDetermineASM-ATTCompiler.cmake +#usr/share/cmake-2.6/Modules/CMakeDetermineASMCompiler.cmake +#usr/share/cmake-2.6/Modules/CMakeDetermineASM_MASMCompiler.cmake +#usr/share/cmake-2.6/Modules/CMakeDetermineCCompiler.cmake +#usr/share/cmake-2.6/Modules/CMakeDetermineCXXCompiler.cmake +#usr/share/cmake-2.6/Modules/CMakeDetermineCompilerABI.cmake +#usr/share/cmake-2.6/Modules/CMakeDetermineCompilerId.cmake +#usr/share/cmake-2.6/Modules/CMakeDetermineFortranCompiler.cmake +#usr/share/cmake-2.6/Modules/CMakeDetermineJavaCompiler.cmake +#usr/share/cmake-2.6/Modules/CMakeDetermineRCCompiler.cmake +#usr/share/cmake-2.6/Modules/CMakeDetermineSystem.cmake +#usr/share/cmake-2.6/Modules/CMakeExportBuildSettings.cmake +#usr/share/cmake-2.6/Modules/CMakeFindBinUtils.cmake +#usr/share/cmake-2.6/Modules/CMakeFindFrameworks.cmake +#usr/share/cmake-2.6/Modules/CMakeFindWMake.cmake +#usr/share/cmake-2.6/Modules/CMakeFindXCode.cmake +#usr/share/cmake-2.6/Modules/CMakeForceCompiler.cmake +#usr/share/cmake-2.6/Modules/CMakeFortranCompiler.cmake.in +#usr/share/cmake-2.6/Modules/CMakeFortranCompilerId.F90.in +#usr/share/cmake-2.6/Modules/CMakeFortranInformation.cmake +#usr/share/cmake-2.6/Modules/CMakeGenericSystem.cmake +#usr/share/cmake-2.6/Modules/CMakeImportBuildSettings.cmake +#usr/share/cmake-2.6/Modules/CMakeJavaCompiler.cmake.in +#usr/share/cmake-2.6/Modules/CMakeJavaInformation.cmake +#usr/share/cmake-2.6/Modules/CMakeMSYSFindMake.cmake +#usr/share/cmake-2.6/Modules/CMakeMinGWFindMake.cmake +#usr/share/cmake-2.6/Modules/CMakeNMakeFindMake.cmake +#usr/share/cmake-2.6/Modules/CMakePlatformId.h.in +#usr/share/cmake-2.6/Modules/CMakePrintSystemInformation.cmake +#usr/share/cmake-2.6/Modules/CMakeRCCompiler.cmake.in +#usr/share/cmake-2.6/Modules/CMakeRCInformation.cmake +#usr/share/cmake-2.6/Modules/CMakeSystem.cmake.in +#usr/share/cmake-2.6/Modules/CMakeSystemSpecificInformation.cmake +#usr/share/cmake-2.6/Modules/CMakeTestASM-ATTCompiler.cmake +#usr/share/cmake-2.6/Modules/CMakeTestASMCompiler.cmake +#usr/share/cmake-2.6/Modules/CMakeTestASM_MASMCompiler.cmake +#usr/share/cmake-2.6/Modules/CMakeTestCCompiler.cmake +#usr/share/cmake-2.6/Modules/CMakeTestCXXCompiler.cmake +#usr/share/cmake-2.6/Modules/CMakeTestForFreeVC.cxx +#usr/share/cmake-2.6/Modules/CMakeTestFortranCompiler.cmake +#usr/share/cmake-2.6/Modules/CMakeTestGNU.c +#usr/share/cmake-2.6/Modules/CMakeTestJavaCompiler.cmake +#usr/share/cmake-2.6/Modules/CMakeTestNMakeCLVersion.c +#usr/share/cmake-2.6/Modules/CMakeTestRCCompiler.cmake +#usr/share/cmake-2.6/Modules/CMakeUnixFindMake.cmake +#usr/share/cmake-2.6/Modules/CMakeVS6BackwardCompatibility.cmake +#usr/share/cmake-2.6/Modules/CMakeVS6FindMake.cmake +#usr/share/cmake-2.6/Modules/CMakeVS71FindMake.cmake +#usr/share/cmake-2.6/Modules/CMakeVS7BackwardCompatibility.cmake +#usr/share/cmake-2.6/Modules/CMakeVS7FindMake.cmake +#usr/share/cmake-2.6/Modules/CMakeVS8FindMake.cmake +#usr/share/cmake-2.6/Modules/CMakeVS9FindMake.cmake +#usr/share/cmake-2.6/Modules/CPack.DS_Store.in +#usr/share/cmake-2.6/Modules/CPack.Description.plist.in +#usr/share/cmake-2.6/Modules/CPack.Info.plist.in +#usr/share/cmake-2.6/Modules/CPack.OSXScriptLauncher.in +#usr/share/cmake-2.6/Modules/CPack.OSXScriptLauncher.rsrc.in +#usr/share/cmake-2.6/Modules/CPack.OSXX11.Info.plist.in +#usr/share/cmake-2.6/Modules/CPack.OSXX11.main.scpt.in +#usr/share/cmake-2.6/Modules/CPack.RuntimeScript.in +#usr/share/cmake-2.6/Modules/CPack.STGZ_Header.sh.in +#usr/share/cmake-2.6/Modules/CPack.VolumeIcon.icns.in +#usr/share/cmake-2.6/Modules/CPack.background.png.in +#usr/share/cmake-2.6/Modules/CPack.cmake +#usr/share/cmake-2.6/Modules/CPack.distribution.dist.in +#usr/share/cmake-2.6/Modules/CPackDeb.cmake +#usr/share/cmake-2.6/Modules/CPackRPM.cmake +#usr/share/cmake-2.6/Modules/CPackZIP.cmake +#usr/share/cmake-2.6/Modules/CTest.cmake +#usr/share/cmake-2.6/Modules/CTestTargets.cmake +#usr/share/cmake-2.6/Modules/CheckCCompilerFlag.cmake +#usr/share/cmake-2.6/Modules/CheckCSourceCompiles.cmake +#usr/share/cmake-2.6/Modules/CheckCSourceRuns.cmake +#usr/share/cmake-2.6/Modules/CheckCXXCompilerFlag.cmake +#usr/share/cmake-2.6/Modules/CheckCXXSourceCompiles.cmake +#usr/share/cmake-2.6/Modules/CheckCXXSourceRuns.cmake +#usr/share/cmake-2.6/Modules/CheckForPthreads.c +#usr/share/cmake-2.6/Modules/CheckFortranFunctionExists.cmake +#usr/share/cmake-2.6/Modules/CheckFunctionExists.c +#usr/share/cmake-2.6/Modules/CheckFunctionExists.cmake +#usr/share/cmake-2.6/Modules/CheckIncludeFile.c.in +#usr/share/cmake-2.6/Modules/CheckIncludeFile.cmake +#usr/share/cmake-2.6/Modules/CheckIncludeFile.cxx.in +#usr/share/cmake-2.6/Modules/CheckIncludeFileCXX.cmake +#usr/share/cmake-2.6/Modules/CheckIncludeFiles.cmake +#usr/share/cmake-2.6/Modules/CheckLibraryExists.cmake +#usr/share/cmake-2.6/Modules/CheckLibraryExists.lists.in +#usr/share/cmake-2.6/Modules/CheckSizeOf.cmake +#usr/share/cmake-2.6/Modules/CheckStructHasMember.cmake +#usr/share/cmake-2.6/Modules/CheckSymbolExists.cmake +#usr/share/cmake-2.6/Modules/CheckTypeSize.cmake +#usr/share/cmake-2.6/Modules/CheckTypeSizeC.c.in +#usr/share/cmake-2.6/Modules/CheckVariableExists.c +#usr/share/cmake-2.6/Modules/CheckVariableExists.cmake +#usr/share/cmake-2.6/Modules/Dart.cmake +#usr/share/cmake-2.6/Modules/DartConfiguration.tcl.in +#usr/share/cmake-2.6/Modules/Documentation.cmake +#usr/share/cmake-2.6/Modules/DummyCXXFile.cxx +#usr/share/cmake-2.6/Modules/FLTKCompatibility.cmake +#usr/share/cmake-2.6/Modules/FeatureSummary.cmake +#usr/share/cmake-2.6/Modules/FindASPELL.cmake +#usr/share/cmake-2.6/Modules/FindAVIFile.cmake +#usr/share/cmake-2.6/Modules/FindBLAS.cmake +#usr/share/cmake-2.6/Modules/FindBZip2.cmake +#usr/share/cmake-2.6/Modules/FindBoost.cmake +#usr/share/cmake-2.6/Modules/FindCABLE.cmake +#usr/share/cmake-2.6/Modules/FindCURL.cmake +#usr/share/cmake-2.6/Modules/FindCVS.cmake +#usr/share/cmake-2.6/Modules/FindCoin3D.cmake +#usr/share/cmake-2.6/Modules/FindCups.cmake +#usr/share/cmake-2.6/Modules/FindCurses.cmake +#usr/share/cmake-2.6/Modules/FindCxxTest.cmake +#usr/share/cmake-2.6/Modules/FindCygwin.cmake +#usr/share/cmake-2.6/Modules/FindDCMTK.cmake +#usr/share/cmake-2.6/Modules/FindDart.cmake +#usr/share/cmake-2.6/Modules/FindDevIL.cmake +#usr/share/cmake-2.6/Modules/FindDoxygen.cmake +#usr/share/cmake-2.6/Modules/FindEXPAT.cmake +#usr/share/cmake-2.6/Modules/FindFLTK.cmake +#usr/share/cmake-2.6/Modules/FindFLTK2.cmake +#usr/share/cmake-2.6/Modules/FindFreetype.cmake +#usr/share/cmake-2.6/Modules/FindGCCXML.cmake +#usr/share/cmake-2.6/Modules/FindGDAL.cmake +#usr/share/cmake-2.6/Modules/FindGIF.cmake +#usr/share/cmake-2.6/Modules/FindGLU.cmake +#usr/share/cmake-2.6/Modules/FindGLUT.cmake +#usr/share/cmake-2.6/Modules/FindGTK.cmake +#usr/share/cmake-2.6/Modules/FindGettext.cmake +#usr/share/cmake-2.6/Modules/FindGnuplot.cmake +#usr/share/cmake-2.6/Modules/FindHSPELL.cmake +#usr/share/cmake-2.6/Modules/FindHTMLHelp.cmake +#usr/share/cmake-2.6/Modules/FindITK.cmake +#usr/share/cmake-2.6/Modules/FindImageMagick.cmake +#usr/share/cmake-2.6/Modules/FindJNI.cmake +#usr/share/cmake-2.6/Modules/FindJPEG.cmake +#usr/share/cmake-2.6/Modules/FindJasper.cmake +#usr/share/cmake-2.6/Modules/FindJava.cmake +#usr/share/cmake-2.6/Modules/FindKDE3.cmake +#usr/share/cmake-2.6/Modules/FindKDE4.cmake +#usr/share/cmake-2.6/Modules/FindLAPACK.cmake +#usr/share/cmake-2.6/Modules/FindLATEX.cmake +#usr/share/cmake-2.6/Modules/FindLibXml2.cmake +#usr/share/cmake-2.6/Modules/FindLibXslt.cmake +#usr/share/cmake-2.6/Modules/FindLua50.cmake +#usr/share/cmake-2.6/Modules/FindLua51.cmake +#usr/share/cmake-2.6/Modules/FindMFC.cmake +#usr/share/cmake-2.6/Modules/FindMPEG.cmake +#usr/share/cmake-2.6/Modules/FindMPEG2.cmake +#usr/share/cmake-2.6/Modules/FindMPI.cmake +#usr/share/cmake-2.6/Modules/FindMatlab.cmake +#usr/share/cmake-2.6/Modules/FindMotif.cmake +#usr/share/cmake-2.6/Modules/FindOpenAL.cmake +#usr/share/cmake-2.6/Modules/FindOpenGL.cmake +#usr/share/cmake-2.6/Modules/FindOpenMP.cmake +#usr/share/cmake-2.6/Modules/FindOpenSSL.cmake +#usr/share/cmake-2.6/Modules/FindOpenSceneGraph.cmake +#usr/share/cmake-2.6/Modules/FindOpenThreads.cmake +#usr/share/cmake-2.6/Modules/FindPHP4.cmake +#usr/share/cmake-2.6/Modules/FindPNG.cmake +#usr/share/cmake-2.6/Modules/FindPackageHandleStandardArgs.cmake +#usr/share/cmake-2.6/Modules/FindPackageMessage.cmake +#usr/share/cmake-2.6/Modules/FindPerl.cmake +#usr/share/cmake-2.6/Modules/FindPerlLibs.cmake +#usr/share/cmake-2.6/Modules/FindPhysFS.cmake +#usr/share/cmake-2.6/Modules/FindPike.cmake +#usr/share/cmake-2.6/Modules/FindPkgConfig.cmake +#usr/share/cmake-2.6/Modules/FindProducer.cmake +#usr/share/cmake-2.6/Modules/FindPythonInterp.cmake +#usr/share/cmake-2.6/Modules/FindPythonLibs.cmake +#usr/share/cmake-2.6/Modules/FindQt.cmake +#usr/share/cmake-2.6/Modules/FindQt3.cmake +#usr/share/cmake-2.6/Modules/FindQt4.cmake +#usr/share/cmake-2.6/Modules/FindQuickTime.cmake +#usr/share/cmake-2.6/Modules/FindRTI.cmake +#usr/share/cmake-2.6/Modules/FindRuby.cmake +#usr/share/cmake-2.6/Modules/FindSDL.cmake +#usr/share/cmake-2.6/Modules/FindSDL_image.cmake +#usr/share/cmake-2.6/Modules/FindSDL_mixer.cmake +#usr/share/cmake-2.6/Modules/FindSDL_net.cmake +#usr/share/cmake-2.6/Modules/FindSDL_sound.cmake +#usr/share/cmake-2.6/Modules/FindSDL_ttf.cmake +#usr/share/cmake-2.6/Modules/FindSWIG.cmake +#usr/share/cmake-2.6/Modules/FindSelfPackers.cmake +#usr/share/cmake-2.6/Modules/FindSquish.cmake +#usr/share/cmake-2.6/Modules/FindSubversion.cmake +#usr/share/cmake-2.6/Modules/FindTCL.cmake +#usr/share/cmake-2.6/Modules/FindTIFF.cmake +#usr/share/cmake-2.6/Modules/FindTclStub.cmake +#usr/share/cmake-2.6/Modules/FindTclsh.cmake +#usr/share/cmake-2.6/Modules/FindThreads.cmake +#usr/share/cmake-2.6/Modules/FindUnixCommands.cmake +#usr/share/cmake-2.6/Modules/FindVTK.cmake +#usr/share/cmake-2.6/Modules/FindWget.cmake +#usr/share/cmake-2.6/Modules/FindWish.cmake +#usr/share/cmake-2.6/Modules/FindX11.cmake +#usr/share/cmake-2.6/Modules/FindXMLRPC.cmake +#usr/share/cmake-2.6/Modules/FindZLIB.cmake +#usr/share/cmake-2.6/Modules/Findosg.cmake +#usr/share/cmake-2.6/Modules/FindosgAnimation.cmake +#usr/share/cmake-2.6/Modules/FindosgDB.cmake +#usr/share/cmake-2.6/Modules/FindosgFX.cmake +#usr/share/cmake-2.6/Modules/FindosgGA.cmake +#usr/share/cmake-2.6/Modules/FindosgIntrospection.cmake +#usr/share/cmake-2.6/Modules/FindosgManipulator.cmake +#usr/share/cmake-2.6/Modules/FindosgParticle.cmake +#usr/share/cmake-2.6/Modules/FindosgProducer.cmake +#usr/share/cmake-2.6/Modules/FindosgShadow.cmake +#usr/share/cmake-2.6/Modules/FindosgSim.cmake +#usr/share/cmake-2.6/Modules/FindosgTerrain.cmake +#usr/share/cmake-2.6/Modules/FindosgText.cmake +#usr/share/cmake-2.6/Modules/FindosgUtil.cmake +#usr/share/cmake-2.6/Modules/FindosgViewer.cmake +#usr/share/cmake-2.6/Modules/FindosgVolume.cmake +#usr/share/cmake-2.6/Modules/FindosgWidget.cmake +#usr/share/cmake-2.6/Modules/Findosg_functions.cmake +#usr/share/cmake-2.6/Modules/FindwxWidgets.cmake +#usr/share/cmake-2.6/Modules/FindwxWindows.cmake +#usr/share/cmake-2.6/Modules/FortranCInterface.cmake +#usr/share/cmake-2.6/Modules/FortranCInterface.h.in +#usr/share/cmake-2.6/Modules/GetPrerequisites.cmake +#usr/share/cmake-2.6/Modules/ITKCompatibility.cmake +#usr/share/cmake-2.6/Modules/InstallRequiredSystemLibraries.cmake +#usr/share/cmake-2.6/Modules/KDE3Macros.cmake +#usr/share/cmake-2.6/Modules/MacOSXBundleInfo.plist.in +#usr/share/cmake-2.6/Modules/MacOSXFrameworkInfo.plist.in +#usr/share/cmake-2.6/Modules/MacroAddFileDependencies.cmake +#usr/share/cmake-2.6/Modules/NSIS.InstallOptions.ini.in +#usr/share/cmake-2.6/Modules/NSIS.template.in +#usr/share/cmake-2.6/Modules/Platform +#usr/share/cmake-2.6/Modules/Platform/AIX-VisualAge-Fortran.cmake +#usr/share/cmake-2.6/Modules/Platform/AIX.cmake +#usr/share/cmake-2.6/Modules/Platform/BSDOS.cmake +#usr/share/cmake-2.6/Modules/Platform/BeOS.cmake +#usr/share/cmake-2.6/Modules/Platform/BlueGeneL.cmake +#usr/share/cmake-2.6/Modules/Platform/CYGWIN-g77.cmake +#usr/share/cmake-2.6/Modules/Platform/CYGWIN.cmake +#usr/share/cmake-2.6/Modules/Platform/Catamount.cmake +#usr/share/cmake-2.6/Modules/Platform/Darwin-icc.cmake +#usr/share/cmake-2.6/Modules/Platform/Darwin-icpc.cmake +#usr/share/cmake-2.6/Modules/Platform/Darwin-xlc.cmake +#usr/share/cmake-2.6/Modules/Platform/Darwin.cmake +#usr/share/cmake-2.6/Modules/Platform/DragonFly.cmake +#usr/share/cmake-2.6/Modules/Platform/FreeBSD.cmake +#usr/share/cmake-2.6/Modules/Platform/GNU.cmake +#usr/share/cmake-2.6/Modules/Platform/Generic-ADSP-ASM.cmake +#usr/share/cmake-2.6/Modules/Platform/Generic-ADSP-C.cmake +#usr/share/cmake-2.6/Modules/Platform/Generic-ADSP-CXX.cmake +#usr/share/cmake-2.6/Modules/Platform/Generic-ADSP-Common.cmake +#usr/share/cmake-2.6/Modules/Platform/Generic-SDCC-C.cmake +#usr/share/cmake-2.6/Modules/Platform/Generic.cmake +#usr/share/cmake-2.6/Modules/Platform/HP-UX.cmake +#usr/share/cmake-2.6/Modules/Platform/Haiku.cmake +#usr/share/cmake-2.6/Modules/Platform/IRIX.cmake +#usr/share/cmake-2.6/Modules/Platform/IRIX64.cmake +#usr/share/cmake-2.6/Modules/Platform/Linux-GNU-Fortran.cmake +#usr/share/cmake-2.6/Modules/Platform/Linux-Intel-C.cmake +#usr/share/cmake-2.6/Modules/Platform/Linux-Intel-CXX.cmake +#usr/share/cmake-2.6/Modules/Platform/Linux-Intel-Fortran.cmake +#usr/share/cmake-2.6/Modules/Platform/Linux-PGI-C.cmake +#usr/share/cmake-2.6/Modules/Platform/Linux-PGI-CXX.cmake +#usr/share/cmake-2.6/Modules/Platform/Linux-PGI-Fortran.cmake +#usr/share/cmake-2.6/Modules/Platform/Linux-SunPro-C.cmake +#usr/share/cmake-2.6/Modules/Platform/Linux-SunPro-CXX.cmake +#usr/share/cmake-2.6/Modules/Platform/Linux-SunPro-Fortran.cmake +#usr/share/cmake-2.6/Modules/Platform/Linux-VisualAge-C.cmake +#usr/share/cmake-2.6/Modules/Platform/Linux-VisualAge-Fortran.cmake +#usr/share/cmake-2.6/Modules/Platform/Linux-como.cmake +#usr/share/cmake-2.6/Modules/Platform/Linux-icpc.cmake +#usr/share/cmake-2.6/Modules/Platform/Linux-ifort.cmake +#usr/share/cmake-2.6/Modules/Platform/Linux.cmake +#usr/share/cmake-2.6/Modules/Platform/MP-RAS.cmake +#usr/share/cmake-2.6/Modules/Platform/NetBSD.cmake +#usr/share/cmake-2.6/Modules/Platform/OSF1.cmake +#usr/share/cmake-2.6/Modules/Platform/OpenBSD.cmake +#usr/share/cmake-2.6/Modules/Platform/QNX.cmake +#usr/share/cmake-2.6/Modules/Platform/RISCos.cmake +#usr/share/cmake-2.6/Modules/Platform/SCO_SV.cmake +#usr/share/cmake-2.6/Modules/Platform/SINIX.cmake +#usr/share/cmake-2.6/Modules/Platform/SunOS-SunPro-Fortran.cmake +#usr/share/cmake-2.6/Modules/Platform/SunOS.cmake +#usr/share/cmake-2.6/Modules/Platform/Tru64.cmake +#usr/share/cmake-2.6/Modules/Platform/ULTRIX.cmake +#usr/share/cmake-2.6/Modules/Platform/UNIX_SV.cmake +#usr/share/cmake-2.6/Modules/Platform/UnixPaths.cmake +#usr/share/cmake-2.6/Modules/Platform/UnixWare.cmake +#usr/share/cmake-2.6/Modules/Platform/Windows-bcc32.cmake +#usr/share/cmake-2.6/Modules/Platform/Windows-cl.cmake +#usr/share/cmake-2.6/Modules/Platform/Windows-cl.cmake.in +#usr/share/cmake-2.6/Modules/Platform/Windows-df.cmake +#usr/share/cmake-2.6/Modules/Platform/Windows-g++.cmake +#usr/share/cmake-2.6/Modules/Platform/Windows-g77.cmake +#usr/share/cmake-2.6/Modules/Platform/Windows-gcc.cmake +#usr/share/cmake-2.6/Modules/Platform/Windows-icl.cmake +#usr/share/cmake-2.6/Modules/Platform/Windows-ifort.cmake +#usr/share/cmake-2.6/Modules/Platform/Windows-wcl386.cmake +#usr/share/cmake-2.6/Modules/Platform/Windows.cmake +#usr/share/cmake-2.6/Modules/Platform/WindowsPaths.cmake +#usr/share/cmake-2.6/Modules/Platform/Xenix.cmake +#usr/share/cmake-2.6/Modules/Platform/cl.cmake +#usr/share/cmake-2.6/Modules/Platform/eCos.cmake +#usr/share/cmake-2.6/Modules/Platform/g77.cmake +#usr/share/cmake-2.6/Modules/Platform/gas.cmake +#usr/share/cmake-2.6/Modules/Platform/gcc.cmake +#usr/share/cmake-2.6/Modules/Platform/kFreeBSD.cmake +#usr/share/cmake-2.6/Modules/Platform/syllable.cmake +#usr/share/cmake-2.6/Modules/Platform/xlf.cmake +#usr/share/cmake-2.6/Modules/SquishTestScript.cmake +#usr/share/cmake-2.6/Modules/SystemInformation.cmake +#usr/share/cmake-2.6/Modules/SystemInformation.in +#usr/share/cmake-2.6/Modules/TestBigEndian.cmake +#usr/share/cmake-2.6/Modules/TestCXXAcceptsFlag.cmake +#usr/share/cmake-2.6/Modules/TestEndianess.c.in +#usr/share/cmake-2.6/Modules/TestForANSIForScope.cmake +#usr/share/cmake-2.6/Modules/TestForANSIStreamHeaders.cmake +#usr/share/cmake-2.6/Modules/TestForANSIStreamHeaders.cxx +#usr/share/cmake-2.6/Modules/TestForAnsiForScope.cxx +#usr/share/cmake-2.6/Modules/TestForSSTREAM.cmake +#usr/share/cmake-2.6/Modules/TestForSSTREAM.cxx +#usr/share/cmake-2.6/Modules/TestForSTDNamespace.cmake +#usr/share/cmake-2.6/Modules/TestForSTDNamespace.cxx +#usr/share/cmake-2.6/Modules/UseEcos.cmake +#usr/share/cmake-2.6/Modules/UsePkgConfig.cmake +#usr/share/cmake-2.6/Modules/UseQt4.cmake +#usr/share/cmake-2.6/Modules/UseSWIG.cmake +#usr/share/cmake-2.6/Modules/UseVTK40.cmake +#usr/share/cmake-2.6/Modules/UseVTKBuildSettings40.cmake +#usr/share/cmake-2.6/Modules/UseVTKConfig40.cmake +#usr/share/cmake-2.6/Modules/Use_wxWindows.cmake +#usr/share/cmake-2.6/Modules/UsewxWidgets.cmake +#usr/share/cmake-2.6/Modules/VTKCompatibility.cmake +#usr/share/cmake-2.6/Modules/ecos_clean.cmake +#usr/share/cmake-2.6/Modules/kde3init_dummy.cpp.in +#usr/share/cmake-2.6/Modules/kde3uic.cmake +#usr/share/cmake-2.6/Modules/readme.txt +#usr/share/cmake-2.6/Templates +#usr/share/cmake-2.6/Templates/CMakeLists.txt +#usr/share/cmake-2.6/Templates/CMakeVSMacros1.vsmacros +#usr/share/cmake-2.6/Templates/CMakeVSMacros2.vsmacros +#usr/share/cmake-2.6/Templates/CMakeVisualStudio6Configurations.cmake +#usr/share/cmake-2.6/Templates/CPack.GenericDescription.txt +#usr/share/cmake-2.6/Templates/CPack.GenericLicense.txt +#usr/share/cmake-2.6/Templates/CPack.GenericWelcome.txt +#usr/share/cmake-2.6/Templates/CPackConfig.cmake.in +#usr/share/cmake-2.6/Templates/CTestScript.cmake.in +#usr/share/cmake-2.6/Templates/DLLFooter.dsptemplate +#usr/share/cmake-2.6/Templates/DLLHeader.dsptemplate +#usr/share/cmake-2.6/Templates/EXEFooter.dsptemplate +#usr/share/cmake-2.6/Templates/EXEHeader.dsptemplate +#usr/share/cmake-2.6/Templates/EXEWinHeader.dsptemplate +#usr/share/cmake-2.6/Templates/TestDriver.cxx.in +#usr/share/cmake-2.6/Templates/UtilityFooter.dsptemplate +#usr/share/cmake-2.6/Templates/UtilityHeader.dsptemplate +#usr/share/cmake-2.6/Templates/cygwin-package.sh.in +#usr/share/cmake-2.6/Templates/staticLibFooter.dsptemplate +#usr/share/cmake-2.6/Templates/staticLibHeader.dsptemplate +#usr/share/cmake-2.6/include +#usr/share/cmake-2.6/include/cmCPluginAPI.h diff --git a/config/rootfiles/common/coreutils b/config/rootfiles/common/coreutils index 3901b697e..61e9106af 100644 --- a/config/rootfiles/common/coreutils +++ b/config/rootfiles/common/coreutils @@ -1,4 +1,4 @@ -#bin/[ +bin/[ bin/chgrp bin/chmod bin/chown @@ -6,7 +6,6 @@ bin/cp bin/date bin/dd bin/df -bin/echo bin/false bin/head bin/ln @@ -59,7 +58,7 @@ usr/bin/printf #usr/bin/ptx usr/bin/readlink usr/bin/seq -#usr/bin/sha1sum +usr/bin/sha1sum usr/bin/shred usr/bin/sort usr/bin/split @@ -84,7 +83,6 @@ usr/bin/whoami usr/bin/yes usr/sbin/chroot #usr/share/info/coreutils.info -#usr/share/info/dir #usr/share/man/man1/basename.1 #usr/share/man/man1/cat.1 #usr/share/man/man1/chroot.1 diff --git a/config/rootfiles/common/file b/config/rootfiles/common/file index 0fe0c6d7f..0f76df852 100644 --- a/config/rootfiles/common/file +++ b/config/rootfiles/common/file @@ -2,13 +2,17 @@ usr/bin/file #usr/include/magic.h #usr/lib/libmagic.a #usr/lib/libmagic.la -usr/lib/libmagic.so +#usr/lib/libmagic.so usr/lib/libmagic.so.1 usr/lib/libmagic.so.1.0.0 +#usr/man +#usr/man/man1 #usr/man/man1/file.1 +#usr/man/man3 #usr/man/man3/libmagic.3 #usr/man/man4 #usr/man/man4/magic.4 +#usr/man/man5 #usr/share/file usr/share/file/magic usr/share/file/magic.mgc diff --git a/config/rootfiles/packages/fontconfig b/config/rootfiles/common/fontconfig similarity index 99% rename from config/rootfiles/packages/fontconfig rename to config/rootfiles/common/fontconfig index 6f3726fb4..ade611e11 100644 --- a/config/rootfiles/packages/fontconfig +++ b/config/rootfiles/common/fontconfig @@ -1,7 +1,3 @@ -usr/bin/fc-cache -usr/bin/fc-cat -usr/bin/fc-list -usr/bin/fc-match #etc/fonts #etc/fonts/conf.avail etc/fonts/conf.avail/10-autohint.conf @@ -49,6 +45,10 @@ etc/fonts/conf.d/90-synthetic.conf #etc/fonts/conf.d/README etc/fonts/fonts.conf etc/fonts/fonts.dtd +usr/bin/fc-cache +usr/bin/fc-cat +usr/bin/fc-list +usr/bin/fc-match #usr/include/fontconfig #usr/include/fontconfig/fcfreetype.h #usr/include/fontconfig/fcprivate.h @@ -59,7 +59,6 @@ usr/lib/libfontconfig.so usr/lib/libfontconfig.so.1 usr/lib/libfontconfig.so.1.3.0 usr/lib/pkgconfig/fontconfig.pc -usr/var/cache/fontconfig #usr/share/doc/fontconfig #usr/share/doc/fontconfig/fontconfig-devel #usr/share/doc/fontconfig/fontconfig-devel.pdf @@ -420,4 +419,6 @@ usr/var/cache/fontconfig #usr/share/man/man3/FcValuePrint.3 #usr/share/man/man3/FcValueSave.3 #usr/share/man/man5/fonts-conf.5 +#usr/var #usr/var/cache +usr/var/cache/fontconfig diff --git a/config/rootfiles/common/gettext b/config/rootfiles/common/gettext index 915985b5a..e7404416f 100644 --- a/config/rootfiles/common/gettext +++ b/config/rootfiles/common/gettext @@ -1,28 +1,27 @@ -usr/bin/autopoint -usr/bin/envsubst -usr/bin/gettext -usr/bin/gettext.sh -usr/bin/gettextize -usr/bin/msgattrib -usr/bin/msgcat -usr/bin/msgcmp -usr/bin/msgcomm -usr/bin/msgconv -usr/bin/msgen -usr/bin/msgexec -usr/bin/msgfilter -usr/bin/msgfmt -usr/bin/msggrep -usr/bin/msginit -usr/bin/msgmerge -usr/bin/msgunfmt -usr/bin/msguniq -usr/bin/ngettext -usr/bin/xgettext +#usr/bin/autopoint +#usr/bin/envsubst +#usr/bin/gettext +#usr/bin/gettext.sh +#usr/bin/gettextize +#usr/bin/msgattrib +#usr/bin/msgcat +#usr/bin/msgcmp +#usr/bin/msgcomm +#usr/bin/msgconv +#usr/bin/msgen +#usr/bin/msgexec +#usr/bin/msgfilter +#usr/bin/msgfmt +#usr/bin/msggrep +#usr/bin/msginit +#usr/bin/msgmerge +#usr/bin/msgunfmt +#usr/bin/msguniq +#usr/bin/ngettext +#usr/bin/recode-sr-latin +#usr/bin/xgettext #usr/include/autosprintf.h #usr/include/gettext-po.h -#usr/info/autosprintf.info -#usr/info/gettext.info #usr/lib/gettext #usr/lib/gettext/hostname #usr/lib/gettext/project-id @@ -30,47 +29,49 @@ usr/bin/xgettext #usr/lib/gettext/user-email #usr/lib/libasprintf.a #usr/lib/libasprintf.la -usr/lib/libasprintf.so +#usr/lib/libasprintf.so usr/lib/libasprintf.so.0 usr/lib/libasprintf.so.0.0.0 -usr/lib/libgettextlib-0.14.5.so +usr/lib/libgettextlib-0.18.1.so #usr/lib/libgettextlib.la -usr/lib/libgettextlib.so +#usr/lib/libgettextlib.so #usr/lib/libgettextpo.a #usr/lib/libgettextpo.la -usr/lib/libgettextpo.so +#usr/lib/libgettextpo.so usr/lib/libgettextpo.so.0 -usr/lib/libgettextpo.so.0.1.0 -usr/lib/libgettextsrc-0.14.5.so +usr/lib/libgettextpo.so.0.5.1 +usr/lib/libgettextsrc-0.18.1.so #usr/lib/libgettextsrc.la usr/lib/libgettextsrc.so usr/lib/preloadable_libintl.so #usr/share/aclocal/codeset.m4 +#usr/share/aclocal/fcntl-o.m4 #usr/share/aclocal/gettext.m4 #usr/share/aclocal/glibc2.m4 #usr/share/aclocal/glibc21.m4 #usr/share/aclocal/iconv.m4 #usr/share/aclocal/intdiv0.m4 +#usr/share/aclocal/intl.m4 +#usr/share/aclocal/intldir.m4 +#usr/share/aclocal/intlmacosx.m4 #usr/share/aclocal/intmax.m4 #usr/share/aclocal/inttypes-pri.m4 -#usr/share/aclocal/inttypes.m4 #usr/share/aclocal/inttypes_h.m4 -#usr/share/aclocal/isc-posix.m4 #usr/share/aclocal/lcmessage.m4 #usr/share/aclocal/lib-ld.m4 #usr/share/aclocal/lib-link.m4 #usr/share/aclocal/lib-prefix.m4 -#usr/share/aclocal/longdouble.m4 +#usr/share/aclocal/lock.m4 #usr/share/aclocal/longlong.m4 #usr/share/aclocal/nls.m4 #usr/share/aclocal/po.m4 #usr/share/aclocal/printf-posix.m4 #usr/share/aclocal/progtest.m4 -#usr/share/aclocal/signed.m4 #usr/share/aclocal/size_max.m4 #usr/share/aclocal/stdint_h.m4 +#usr/share/aclocal/threadlib.m4 #usr/share/aclocal/uintmax_t.m4 -#usr/share/aclocal/ulonglong.m4 +#usr/share/aclocal/visibility.m4 #usr/share/aclocal/wchar_t.m4 #usr/share/aclocal/wint_t.m4 #usr/share/aclocal/xsize.m4 @@ -92,6 +93,7 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/build-aux #usr/share/doc/gettext/examples/build-aux/csharpcomp.m4 #usr/share/doc/gettext/examples/build-aux/csharpcomp.sh.in +#usr/share/doc/gettext/examples/build-aux/csharpexec-test.exe #usr/share/doc/gettext/examples/build-aux/csharpexec.m4 #usr/share/doc/gettext/examples/build-aux/csharpexec.sh.in #usr/share/doc/gettext/examples/build-aux/gcj.m4 @@ -120,25 +122,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-c++-gnome/po/Makevars #usr/share/doc/gettext/examples/hello-c++-gnome/po/POTFILES.in #usr/share/doc/gettext/examples/hello-c++-gnome/po/af.po +#usr/share/doc/gettext/examples/hello-c++-gnome/po/ast.po +#usr/share/doc/gettext/examples/hello-c++-gnome/po/bg.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/ca.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/de.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/el.po +#usr/share/doc/gettext/examples/hello-c++-gnome/po/eo.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/es.po +#usr/share/doc/gettext/examples/hello-c++-gnome/po/fi.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/fr.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/ga.po +#usr/share/doc/gettext/examples/hello-c++-gnome/po/hu.po +#usr/share/doc/gettext/examples/hello-c++-gnome/po/id.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/it.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/ja.po +#usr/share/doc/gettext/examples/hello-c++-gnome/po/ky.po +#usr/share/doc/gettext/examples/hello-c++-gnome/po/lv.po +#usr/share/doc/gettext/examples/hello-c++-gnome/po/ms.po +#usr/share/doc/gettext/examples/hello-c++-gnome/po/mt.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/nl.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/pl.po +#usr/share/doc/gettext/examples/hello-c++-gnome/po/pt.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/ro.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/ru.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/sk.po +#usr/share/doc/gettext/examples/hello-c++-gnome/po/sl.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/sr.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/sv.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/tr.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/uk.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/vi.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-c++-gnome/po/zh_HK.po #usr/share/doc/gettext/examples/hello-c++-gnome/po/zh_TW.po #usr/share/doc/gettext/examples/hello-c++-kde #usr/share/doc/gettext/examples/hello-c++-kde/BUGS @@ -182,25 +197,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-c++-kde/po/Makevars #usr/share/doc/gettext/examples/hello-c++-kde/po/POTFILES.in #usr/share/doc/gettext/examples/hello-c++-kde/po/af.po +#usr/share/doc/gettext/examples/hello-c++-kde/po/ast.po +#usr/share/doc/gettext/examples/hello-c++-kde/po/bg.po #usr/share/doc/gettext/examples/hello-c++-kde/po/ca.po #usr/share/doc/gettext/examples/hello-c++-kde/po/de.po #usr/share/doc/gettext/examples/hello-c++-kde/po/el.po +#usr/share/doc/gettext/examples/hello-c++-kde/po/eo.po #usr/share/doc/gettext/examples/hello-c++-kde/po/es.po +#usr/share/doc/gettext/examples/hello-c++-kde/po/fi.po #usr/share/doc/gettext/examples/hello-c++-kde/po/fr.po #usr/share/doc/gettext/examples/hello-c++-kde/po/ga.po +#usr/share/doc/gettext/examples/hello-c++-kde/po/hu.po +#usr/share/doc/gettext/examples/hello-c++-kde/po/id.po #usr/share/doc/gettext/examples/hello-c++-kde/po/it.po #usr/share/doc/gettext/examples/hello-c++-kde/po/ja.po +#usr/share/doc/gettext/examples/hello-c++-kde/po/ky.po +#usr/share/doc/gettext/examples/hello-c++-kde/po/lv.po +#usr/share/doc/gettext/examples/hello-c++-kde/po/ms.po +#usr/share/doc/gettext/examples/hello-c++-kde/po/mt.po #usr/share/doc/gettext/examples/hello-c++-kde/po/nl.po #usr/share/doc/gettext/examples/hello-c++-kde/po/pl.po +#usr/share/doc/gettext/examples/hello-c++-kde/po/pt.po #usr/share/doc/gettext/examples/hello-c++-kde/po/ro.po #usr/share/doc/gettext/examples/hello-c++-kde/po/ru.po #usr/share/doc/gettext/examples/hello-c++-kde/po/sk.po +#usr/share/doc/gettext/examples/hello-c++-kde/po/sl.po #usr/share/doc/gettext/examples/hello-c++-kde/po/sr.po #usr/share/doc/gettext/examples/hello-c++-kde/po/sv.po #usr/share/doc/gettext/examples/hello-c++-kde/po/tr.po #usr/share/doc/gettext/examples/hello-c++-kde/po/uk.po #usr/share/doc/gettext/examples/hello-c++-kde/po/vi.po #usr/share/doc/gettext/examples/hello-c++-kde/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-c++-kde/po/zh_HK.po #usr/share/doc/gettext/examples/hello-c++-kde/po/zh_TW.po #usr/share/doc/gettext/examples/hello-c++-qt #usr/share/doc/gettext/examples/hello-c++-qt/BUGS @@ -217,26 +245,86 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-c++-qt/po/LINGUAS #usr/share/doc/gettext/examples/hello-c++-qt/po/Makefile.am #usr/share/doc/gettext/examples/hello-c++-qt/po/af.po +#usr/share/doc/gettext/examples/hello-c++-qt/po/ast.po +#usr/share/doc/gettext/examples/hello-c++-qt/po/bg.po #usr/share/doc/gettext/examples/hello-c++-qt/po/ca.po #usr/share/doc/gettext/examples/hello-c++-qt/po/de.po #usr/share/doc/gettext/examples/hello-c++-qt/po/el.po +#usr/share/doc/gettext/examples/hello-c++-qt/po/eo.po #usr/share/doc/gettext/examples/hello-c++-qt/po/es.po +#usr/share/doc/gettext/examples/hello-c++-qt/po/fi.po #usr/share/doc/gettext/examples/hello-c++-qt/po/fr.po #usr/share/doc/gettext/examples/hello-c++-qt/po/ga.po +#usr/share/doc/gettext/examples/hello-c++-qt/po/hu.po +#usr/share/doc/gettext/examples/hello-c++-qt/po/id.po #usr/share/doc/gettext/examples/hello-c++-qt/po/it.po #usr/share/doc/gettext/examples/hello-c++-qt/po/ja.po +#usr/share/doc/gettext/examples/hello-c++-qt/po/ky.po +#usr/share/doc/gettext/examples/hello-c++-qt/po/lv.po +#usr/share/doc/gettext/examples/hello-c++-qt/po/ms.po +#usr/share/doc/gettext/examples/hello-c++-qt/po/mt.po #usr/share/doc/gettext/examples/hello-c++-qt/po/nl.po #usr/share/doc/gettext/examples/hello-c++-qt/po/pl.po +#usr/share/doc/gettext/examples/hello-c++-qt/po/pt.po #usr/share/doc/gettext/examples/hello-c++-qt/po/ro.po #usr/share/doc/gettext/examples/hello-c++-qt/po/ru.po #usr/share/doc/gettext/examples/hello-c++-qt/po/sk.po +#usr/share/doc/gettext/examples/hello-c++-qt/po/sl.po #usr/share/doc/gettext/examples/hello-c++-qt/po/sr.po #usr/share/doc/gettext/examples/hello-c++-qt/po/sv.po #usr/share/doc/gettext/examples/hello-c++-qt/po/tr.po #usr/share/doc/gettext/examples/hello-c++-qt/po/uk.po #usr/share/doc/gettext/examples/hello-c++-qt/po/vi.po #usr/share/doc/gettext/examples/hello-c++-qt/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-c++-qt/po/zh_HK.po #usr/share/doc/gettext/examples/hello-c++-qt/po/zh_TW.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/INSTALL +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/Makefile.am +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/autoclean.sh +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/autogen.sh +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/configure.ac +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/hello.cc +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/m4 +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/m4/Makefile.am +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/m4/wxwidgets.m4 +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/LINGUAS +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/Makefile.am +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/af.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/ast.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/bg.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/ca.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/de.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/el.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/eo.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/es.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/fi.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/fr.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/ga.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/hu.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/id.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/it.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/ja.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/ky.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/lv.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/ms.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/mt.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/nl.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/pl.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/pt.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/ro.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/ru.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/sk.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/sl.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/sr.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/sv.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/tr.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/uk.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/vi.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/zh_HK.po +#usr/share/doc/gettext/examples/hello-c++-wxwidgets/po/zh_TW.po #usr/share/doc/gettext/examples/hello-c++/INSTALL #usr/share/doc/gettext/examples/hello-c++/Makefile.am #usr/share/doc/gettext/examples/hello-c++/autoclean.sh @@ -250,25 +338,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-c++/po/Makevars #usr/share/doc/gettext/examples/hello-c++/po/POTFILES.in #usr/share/doc/gettext/examples/hello-c++/po/af.po +#usr/share/doc/gettext/examples/hello-c++/po/ast.po +#usr/share/doc/gettext/examples/hello-c++/po/bg.po #usr/share/doc/gettext/examples/hello-c++/po/ca.po #usr/share/doc/gettext/examples/hello-c++/po/de.po #usr/share/doc/gettext/examples/hello-c++/po/el.po +#usr/share/doc/gettext/examples/hello-c++/po/eo.po #usr/share/doc/gettext/examples/hello-c++/po/es.po +#usr/share/doc/gettext/examples/hello-c++/po/fi.po #usr/share/doc/gettext/examples/hello-c++/po/fr.po #usr/share/doc/gettext/examples/hello-c++/po/ga.po +#usr/share/doc/gettext/examples/hello-c++/po/hu.po +#usr/share/doc/gettext/examples/hello-c++/po/id.po #usr/share/doc/gettext/examples/hello-c++/po/it.po #usr/share/doc/gettext/examples/hello-c++/po/ja.po +#usr/share/doc/gettext/examples/hello-c++/po/ky.po +#usr/share/doc/gettext/examples/hello-c++/po/lv.po +#usr/share/doc/gettext/examples/hello-c++/po/ms.po +#usr/share/doc/gettext/examples/hello-c++/po/mt.po #usr/share/doc/gettext/examples/hello-c++/po/nl.po #usr/share/doc/gettext/examples/hello-c++/po/pl.po +#usr/share/doc/gettext/examples/hello-c++/po/pt.po #usr/share/doc/gettext/examples/hello-c++/po/ro.po #usr/share/doc/gettext/examples/hello-c++/po/ru.po #usr/share/doc/gettext/examples/hello-c++/po/sk.po +#usr/share/doc/gettext/examples/hello-c++/po/sl.po #usr/share/doc/gettext/examples/hello-c++/po/sr.po #usr/share/doc/gettext/examples/hello-c++/po/sv.po #usr/share/doc/gettext/examples/hello-c++/po/tr.po #usr/share/doc/gettext/examples/hello-c++/po/uk.po #usr/share/doc/gettext/examples/hello-c++/po/vi.po #usr/share/doc/gettext/examples/hello-c++/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-c++/po/zh_HK.po #usr/share/doc/gettext/examples/hello-c++/po/zh_TW.po #usr/share/doc/gettext/examples/hello-c-gnome #usr/share/doc/gettext/examples/hello-c-gnome/INSTALL @@ -287,25 +388,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-c-gnome/po/Makevars #usr/share/doc/gettext/examples/hello-c-gnome/po/POTFILES.in #usr/share/doc/gettext/examples/hello-c-gnome/po/af.po +#usr/share/doc/gettext/examples/hello-c-gnome/po/ast.po +#usr/share/doc/gettext/examples/hello-c-gnome/po/bg.po #usr/share/doc/gettext/examples/hello-c-gnome/po/ca.po #usr/share/doc/gettext/examples/hello-c-gnome/po/de.po #usr/share/doc/gettext/examples/hello-c-gnome/po/el.po +#usr/share/doc/gettext/examples/hello-c-gnome/po/eo.po #usr/share/doc/gettext/examples/hello-c-gnome/po/es.po +#usr/share/doc/gettext/examples/hello-c-gnome/po/fi.po #usr/share/doc/gettext/examples/hello-c-gnome/po/fr.po #usr/share/doc/gettext/examples/hello-c-gnome/po/ga.po +#usr/share/doc/gettext/examples/hello-c-gnome/po/hu.po +#usr/share/doc/gettext/examples/hello-c-gnome/po/id.po #usr/share/doc/gettext/examples/hello-c-gnome/po/it.po #usr/share/doc/gettext/examples/hello-c-gnome/po/ja.po +#usr/share/doc/gettext/examples/hello-c-gnome/po/ky.po +#usr/share/doc/gettext/examples/hello-c-gnome/po/lv.po +#usr/share/doc/gettext/examples/hello-c-gnome/po/ms.po +#usr/share/doc/gettext/examples/hello-c-gnome/po/mt.po #usr/share/doc/gettext/examples/hello-c-gnome/po/nl.po #usr/share/doc/gettext/examples/hello-c-gnome/po/pl.po +#usr/share/doc/gettext/examples/hello-c-gnome/po/pt.po #usr/share/doc/gettext/examples/hello-c-gnome/po/ro.po #usr/share/doc/gettext/examples/hello-c-gnome/po/ru.po #usr/share/doc/gettext/examples/hello-c-gnome/po/sk.po +#usr/share/doc/gettext/examples/hello-c-gnome/po/sl.po #usr/share/doc/gettext/examples/hello-c-gnome/po/sr.po #usr/share/doc/gettext/examples/hello-c-gnome/po/sv.po #usr/share/doc/gettext/examples/hello-c-gnome/po/tr.po #usr/share/doc/gettext/examples/hello-c-gnome/po/uk.po #usr/share/doc/gettext/examples/hello-c-gnome/po/vi.po #usr/share/doc/gettext/examples/hello-c-gnome/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-c-gnome/po/zh_HK.po #usr/share/doc/gettext/examples/hello-c-gnome/po/zh_TW.po #usr/share/doc/gettext/examples/hello-c/INSTALL #usr/share/doc/gettext/examples/hello-c/Makefile.am @@ -320,25 +434,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-c/po/Makevars #usr/share/doc/gettext/examples/hello-c/po/POTFILES.in #usr/share/doc/gettext/examples/hello-c/po/af.po +#usr/share/doc/gettext/examples/hello-c/po/ast.po +#usr/share/doc/gettext/examples/hello-c/po/bg.po #usr/share/doc/gettext/examples/hello-c/po/ca.po #usr/share/doc/gettext/examples/hello-c/po/de.po #usr/share/doc/gettext/examples/hello-c/po/el.po +#usr/share/doc/gettext/examples/hello-c/po/eo.po #usr/share/doc/gettext/examples/hello-c/po/es.po +#usr/share/doc/gettext/examples/hello-c/po/fi.po #usr/share/doc/gettext/examples/hello-c/po/fr.po #usr/share/doc/gettext/examples/hello-c/po/ga.po +#usr/share/doc/gettext/examples/hello-c/po/hu.po +#usr/share/doc/gettext/examples/hello-c/po/id.po #usr/share/doc/gettext/examples/hello-c/po/it.po #usr/share/doc/gettext/examples/hello-c/po/ja.po +#usr/share/doc/gettext/examples/hello-c/po/ky.po +#usr/share/doc/gettext/examples/hello-c/po/lv.po +#usr/share/doc/gettext/examples/hello-c/po/ms.po +#usr/share/doc/gettext/examples/hello-c/po/mt.po #usr/share/doc/gettext/examples/hello-c/po/nl.po #usr/share/doc/gettext/examples/hello-c/po/pl.po +#usr/share/doc/gettext/examples/hello-c/po/pt.po #usr/share/doc/gettext/examples/hello-c/po/ro.po #usr/share/doc/gettext/examples/hello-c/po/ru.po #usr/share/doc/gettext/examples/hello-c/po/sk.po +#usr/share/doc/gettext/examples/hello-c/po/sl.po #usr/share/doc/gettext/examples/hello-c/po/sr.po #usr/share/doc/gettext/examples/hello-c/po/sv.po #usr/share/doc/gettext/examples/hello-c/po/tr.po #usr/share/doc/gettext/examples/hello-c/po/uk.po #usr/share/doc/gettext/examples/hello-c/po/vi.po #usr/share/doc/gettext/examples/hello-c/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-c/po/zh_HK.po #usr/share/doc/gettext/examples/hello-c/po/zh_TW.po #usr/share/doc/gettext/examples/hello-clisp #usr/share/doc/gettext/examples/hello-clisp/INSTALL @@ -353,31 +480,45 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-clisp/po/LINGUAS #usr/share/doc/gettext/examples/hello-clisp/po/Makefile.am #usr/share/doc/gettext/examples/hello-clisp/po/af.po +#usr/share/doc/gettext/examples/hello-clisp/po/ast.po +#usr/share/doc/gettext/examples/hello-clisp/po/bg.po #usr/share/doc/gettext/examples/hello-clisp/po/ca.po #usr/share/doc/gettext/examples/hello-clisp/po/de.po #usr/share/doc/gettext/examples/hello-clisp/po/el.po +#usr/share/doc/gettext/examples/hello-clisp/po/eo.po #usr/share/doc/gettext/examples/hello-clisp/po/es.po +#usr/share/doc/gettext/examples/hello-clisp/po/fi.po #usr/share/doc/gettext/examples/hello-clisp/po/fr.po #usr/share/doc/gettext/examples/hello-clisp/po/ga.po +#usr/share/doc/gettext/examples/hello-clisp/po/hu.po +#usr/share/doc/gettext/examples/hello-clisp/po/id.po #usr/share/doc/gettext/examples/hello-clisp/po/it.po #usr/share/doc/gettext/examples/hello-clisp/po/ja.po +#usr/share/doc/gettext/examples/hello-clisp/po/ky.po +#usr/share/doc/gettext/examples/hello-clisp/po/lv.po +#usr/share/doc/gettext/examples/hello-clisp/po/ms.po +#usr/share/doc/gettext/examples/hello-clisp/po/mt.po #usr/share/doc/gettext/examples/hello-clisp/po/nl.po #usr/share/doc/gettext/examples/hello-clisp/po/pl.po +#usr/share/doc/gettext/examples/hello-clisp/po/pt.po #usr/share/doc/gettext/examples/hello-clisp/po/ro.po #usr/share/doc/gettext/examples/hello-clisp/po/ru.po #usr/share/doc/gettext/examples/hello-clisp/po/sk.po +#usr/share/doc/gettext/examples/hello-clisp/po/sl.po #usr/share/doc/gettext/examples/hello-clisp/po/sr.po #usr/share/doc/gettext/examples/hello-clisp/po/sv.po #usr/share/doc/gettext/examples/hello-clisp/po/tr.po #usr/share/doc/gettext/examples/hello-clisp/po/uk.po #usr/share/doc/gettext/examples/hello-clisp/po/vi.po #usr/share/doc/gettext/examples/hello-clisp/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-clisp/po/zh_HK.po #usr/share/doc/gettext/examples/hello-clisp/po/zh_TW.po #usr/share/doc/gettext/examples/hello-csharp #usr/share/doc/gettext/examples/hello-csharp-forms #usr/share/doc/gettext/examples/hello-csharp-forms/BUGS #usr/share/doc/gettext/examples/hello-csharp-forms/INSTALL #usr/share/doc/gettext/examples/hello-csharp-forms/Makefile.am +#usr/share/doc/gettext/examples/hello-csharp-forms/README #usr/share/doc/gettext/examples/hello-csharp-forms/autoclean.sh #usr/share/doc/gettext/examples/hello-csharp-forms/autogen.sh #usr/share/doc/gettext/examples/hello-csharp-forms/configure.ac @@ -388,25 +529,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-csharp-forms/po/LINGUAS #usr/share/doc/gettext/examples/hello-csharp-forms/po/Makefile.am #usr/share/doc/gettext/examples/hello-csharp-forms/po/af.po +#usr/share/doc/gettext/examples/hello-csharp-forms/po/ast.po +#usr/share/doc/gettext/examples/hello-csharp-forms/po/bg.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/ca.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/de.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/el.po +#usr/share/doc/gettext/examples/hello-csharp-forms/po/eo.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/es.po +#usr/share/doc/gettext/examples/hello-csharp-forms/po/fi.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/fr.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/ga.po +#usr/share/doc/gettext/examples/hello-csharp-forms/po/hu.po +#usr/share/doc/gettext/examples/hello-csharp-forms/po/id.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/it.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/ja.po +#usr/share/doc/gettext/examples/hello-csharp-forms/po/ky.po +#usr/share/doc/gettext/examples/hello-csharp-forms/po/lv.po +#usr/share/doc/gettext/examples/hello-csharp-forms/po/ms.po +#usr/share/doc/gettext/examples/hello-csharp-forms/po/mt.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/nl.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/pl.po +#usr/share/doc/gettext/examples/hello-csharp-forms/po/pt.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/ro.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/ru.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/sk.po +#usr/share/doc/gettext/examples/hello-csharp-forms/po/sl.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/sr.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/sv.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/tr.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/uk.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/vi.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-csharp-forms/po/zh_HK.po #usr/share/doc/gettext/examples/hello-csharp-forms/po/zh_TW.po #usr/share/doc/gettext/examples/hello-csharp/INSTALL #usr/share/doc/gettext/examples/hello-csharp/Makefile.am @@ -420,25 +574,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-csharp/po/LINGUAS #usr/share/doc/gettext/examples/hello-csharp/po/Makefile.am #usr/share/doc/gettext/examples/hello-csharp/po/af.po +#usr/share/doc/gettext/examples/hello-csharp/po/ast.po +#usr/share/doc/gettext/examples/hello-csharp/po/bg.po #usr/share/doc/gettext/examples/hello-csharp/po/ca.po #usr/share/doc/gettext/examples/hello-csharp/po/de.po #usr/share/doc/gettext/examples/hello-csharp/po/el.po +#usr/share/doc/gettext/examples/hello-csharp/po/eo.po #usr/share/doc/gettext/examples/hello-csharp/po/es.po +#usr/share/doc/gettext/examples/hello-csharp/po/fi.po #usr/share/doc/gettext/examples/hello-csharp/po/fr.po #usr/share/doc/gettext/examples/hello-csharp/po/ga.po +#usr/share/doc/gettext/examples/hello-csharp/po/hu.po +#usr/share/doc/gettext/examples/hello-csharp/po/id.po #usr/share/doc/gettext/examples/hello-csharp/po/it.po #usr/share/doc/gettext/examples/hello-csharp/po/ja.po +#usr/share/doc/gettext/examples/hello-csharp/po/ky.po +#usr/share/doc/gettext/examples/hello-csharp/po/lv.po +#usr/share/doc/gettext/examples/hello-csharp/po/ms.po +#usr/share/doc/gettext/examples/hello-csharp/po/mt.po #usr/share/doc/gettext/examples/hello-csharp/po/nl.po #usr/share/doc/gettext/examples/hello-csharp/po/pl.po +#usr/share/doc/gettext/examples/hello-csharp/po/pt.po #usr/share/doc/gettext/examples/hello-csharp/po/ro.po #usr/share/doc/gettext/examples/hello-csharp/po/ru.po #usr/share/doc/gettext/examples/hello-csharp/po/sk.po +#usr/share/doc/gettext/examples/hello-csharp/po/sl.po #usr/share/doc/gettext/examples/hello-csharp/po/sr.po #usr/share/doc/gettext/examples/hello-csharp/po/sv.po #usr/share/doc/gettext/examples/hello-csharp/po/tr.po #usr/share/doc/gettext/examples/hello-csharp/po/uk.po #usr/share/doc/gettext/examples/hello-csharp/po/vi.po #usr/share/doc/gettext/examples/hello-csharp/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-csharp/po/zh_HK.po #usr/share/doc/gettext/examples/hello-csharp/po/zh_TW.po #usr/share/doc/gettext/examples/hello-gawk #usr/share/doc/gettext/examples/hello-gawk/INSTALL @@ -453,25 +620,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-gawk/po/LINGUAS #usr/share/doc/gettext/examples/hello-gawk/po/Makefile.am #usr/share/doc/gettext/examples/hello-gawk/po/af.po +#usr/share/doc/gettext/examples/hello-gawk/po/ast.po +#usr/share/doc/gettext/examples/hello-gawk/po/bg.po #usr/share/doc/gettext/examples/hello-gawk/po/ca.po #usr/share/doc/gettext/examples/hello-gawk/po/de.po #usr/share/doc/gettext/examples/hello-gawk/po/el.po +#usr/share/doc/gettext/examples/hello-gawk/po/eo.po #usr/share/doc/gettext/examples/hello-gawk/po/es.po +#usr/share/doc/gettext/examples/hello-gawk/po/fi.po #usr/share/doc/gettext/examples/hello-gawk/po/fr.po #usr/share/doc/gettext/examples/hello-gawk/po/ga.po +#usr/share/doc/gettext/examples/hello-gawk/po/hu.po +#usr/share/doc/gettext/examples/hello-gawk/po/id.po #usr/share/doc/gettext/examples/hello-gawk/po/it.po #usr/share/doc/gettext/examples/hello-gawk/po/ja.po +#usr/share/doc/gettext/examples/hello-gawk/po/ky.po +#usr/share/doc/gettext/examples/hello-gawk/po/lv.po +#usr/share/doc/gettext/examples/hello-gawk/po/ms.po +#usr/share/doc/gettext/examples/hello-gawk/po/mt.po #usr/share/doc/gettext/examples/hello-gawk/po/nl.po #usr/share/doc/gettext/examples/hello-gawk/po/pl.po +#usr/share/doc/gettext/examples/hello-gawk/po/pt.po #usr/share/doc/gettext/examples/hello-gawk/po/ro.po #usr/share/doc/gettext/examples/hello-gawk/po/ru.po #usr/share/doc/gettext/examples/hello-gawk/po/sk.po +#usr/share/doc/gettext/examples/hello-gawk/po/sl.po #usr/share/doc/gettext/examples/hello-gawk/po/sr.po #usr/share/doc/gettext/examples/hello-gawk/po/sv.po #usr/share/doc/gettext/examples/hello-gawk/po/tr.po #usr/share/doc/gettext/examples/hello-gawk/po/uk.po #usr/share/doc/gettext/examples/hello-gawk/po/vi.po #usr/share/doc/gettext/examples/hello-gawk/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-gawk/po/zh_HK.po #usr/share/doc/gettext/examples/hello-gawk/po/zh_TW.po #usr/share/doc/gettext/examples/hello-guile #usr/share/doc/gettext/examples/hello-guile/INSTALL @@ -486,25 +666,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-guile/po/LINGUAS #usr/share/doc/gettext/examples/hello-guile/po/Makefile.am #usr/share/doc/gettext/examples/hello-guile/po/af.po +#usr/share/doc/gettext/examples/hello-guile/po/ast.po +#usr/share/doc/gettext/examples/hello-guile/po/bg.po #usr/share/doc/gettext/examples/hello-guile/po/ca.po #usr/share/doc/gettext/examples/hello-guile/po/de.po #usr/share/doc/gettext/examples/hello-guile/po/el.po +#usr/share/doc/gettext/examples/hello-guile/po/eo.po #usr/share/doc/gettext/examples/hello-guile/po/es.po +#usr/share/doc/gettext/examples/hello-guile/po/fi.po #usr/share/doc/gettext/examples/hello-guile/po/fr.po #usr/share/doc/gettext/examples/hello-guile/po/ga.po +#usr/share/doc/gettext/examples/hello-guile/po/hu.po +#usr/share/doc/gettext/examples/hello-guile/po/id.po #usr/share/doc/gettext/examples/hello-guile/po/it.po #usr/share/doc/gettext/examples/hello-guile/po/ja.po +#usr/share/doc/gettext/examples/hello-guile/po/ky.po +#usr/share/doc/gettext/examples/hello-guile/po/lv.po +#usr/share/doc/gettext/examples/hello-guile/po/ms.po +#usr/share/doc/gettext/examples/hello-guile/po/mt.po #usr/share/doc/gettext/examples/hello-guile/po/nl.po #usr/share/doc/gettext/examples/hello-guile/po/pl.po +#usr/share/doc/gettext/examples/hello-guile/po/pt.po #usr/share/doc/gettext/examples/hello-guile/po/ro.po #usr/share/doc/gettext/examples/hello-guile/po/ru.po #usr/share/doc/gettext/examples/hello-guile/po/sk.po +#usr/share/doc/gettext/examples/hello-guile/po/sl.po #usr/share/doc/gettext/examples/hello-guile/po/sr.po #usr/share/doc/gettext/examples/hello-guile/po/sv.po #usr/share/doc/gettext/examples/hello-guile/po/tr.po #usr/share/doc/gettext/examples/hello-guile/po/uk.po #usr/share/doc/gettext/examples/hello-guile/po/vi.po #usr/share/doc/gettext/examples/hello-guile/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-guile/po/zh_HK.po #usr/share/doc/gettext/examples/hello-guile/po/zh_TW.po #usr/share/doc/gettext/examples/hello-java #usr/share/doc/gettext/examples/hello-java-awt @@ -523,26 +716,88 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-java-awt/po/LINGUAS #usr/share/doc/gettext/examples/hello-java-awt/po/Makefile.am #usr/share/doc/gettext/examples/hello-java-awt/po/af.po +#usr/share/doc/gettext/examples/hello-java-awt/po/ast.po +#usr/share/doc/gettext/examples/hello-java-awt/po/bg.po #usr/share/doc/gettext/examples/hello-java-awt/po/ca.po #usr/share/doc/gettext/examples/hello-java-awt/po/de.po #usr/share/doc/gettext/examples/hello-java-awt/po/el.po +#usr/share/doc/gettext/examples/hello-java-awt/po/eo.po #usr/share/doc/gettext/examples/hello-java-awt/po/es.po +#usr/share/doc/gettext/examples/hello-java-awt/po/fi.po #usr/share/doc/gettext/examples/hello-java-awt/po/fr.po #usr/share/doc/gettext/examples/hello-java-awt/po/ga.po +#usr/share/doc/gettext/examples/hello-java-awt/po/hu.po +#usr/share/doc/gettext/examples/hello-java-awt/po/id.po #usr/share/doc/gettext/examples/hello-java-awt/po/it.po #usr/share/doc/gettext/examples/hello-java-awt/po/ja.po +#usr/share/doc/gettext/examples/hello-java-awt/po/ky.po +#usr/share/doc/gettext/examples/hello-java-awt/po/lv.po +#usr/share/doc/gettext/examples/hello-java-awt/po/ms.po +#usr/share/doc/gettext/examples/hello-java-awt/po/mt.po #usr/share/doc/gettext/examples/hello-java-awt/po/nl.po #usr/share/doc/gettext/examples/hello-java-awt/po/pl.po +#usr/share/doc/gettext/examples/hello-java-awt/po/pt.po #usr/share/doc/gettext/examples/hello-java-awt/po/ro.po #usr/share/doc/gettext/examples/hello-java-awt/po/ru.po #usr/share/doc/gettext/examples/hello-java-awt/po/sk.po +#usr/share/doc/gettext/examples/hello-java-awt/po/sl.po #usr/share/doc/gettext/examples/hello-java-awt/po/sr.po #usr/share/doc/gettext/examples/hello-java-awt/po/sv.po #usr/share/doc/gettext/examples/hello-java-awt/po/tr.po #usr/share/doc/gettext/examples/hello-java-awt/po/uk.po #usr/share/doc/gettext/examples/hello-java-awt/po/vi.po #usr/share/doc/gettext/examples/hello-java-awt/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-java-awt/po/zh_HK.po #usr/share/doc/gettext/examples/hello-java-awt/po/zh_TW.po +#usr/share/doc/gettext/examples/hello-java-qtjambi +#usr/share/doc/gettext/examples/hello-java-qtjambi/BUGS +#usr/share/doc/gettext/examples/hello-java-qtjambi/Hello.java +#usr/share/doc/gettext/examples/hello-java-qtjambi/INSTALL +#usr/share/doc/gettext/examples/hello-java-qtjambi/Makefile.am +#usr/share/doc/gettext/examples/hello-java-qtjambi/autoclean.sh +#usr/share/doc/gettext/examples/hello-java-qtjambi/autogen.sh +#usr/share/doc/gettext/examples/hello-java-qtjambi/configure.ac +#usr/share/doc/gettext/examples/hello-java-qtjambi/m4 +#usr/share/doc/gettext/examples/hello-java-qtjambi/m4/Makefile.am +#usr/share/doc/gettext/examples/hello-java-qtjambi/m4/Test15.class +#usr/share/doc/gettext/examples/hello-java-qtjambi/m4/Test15.java +#usr/share/doc/gettext/examples/hello-java-qtjambi/po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/LINGUAS +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/Makefile.am +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/af.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/ast.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/bg.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/ca.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/de.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/el.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/eo.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/es.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/fi.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/fr.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/ga.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/hu.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/id.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/it.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/ja.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/ky.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/lv.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/ms.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/mt.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/nl.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/pl.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/pt.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/ro.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/ru.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/sk.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/sl.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/sr.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/sv.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/tr.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/uk.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/vi.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/zh_HK.po +#usr/share/doc/gettext/examples/hello-java-qtjambi/po/zh_TW.po #usr/share/doc/gettext/examples/hello-java-swing #usr/share/doc/gettext/examples/hello-java-swing/BUGS #usr/share/doc/gettext/examples/hello-java-swing/Hello.java @@ -559,25 +814,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-java-swing/po/LINGUAS #usr/share/doc/gettext/examples/hello-java-swing/po/Makefile.am #usr/share/doc/gettext/examples/hello-java-swing/po/af.po +#usr/share/doc/gettext/examples/hello-java-swing/po/ast.po +#usr/share/doc/gettext/examples/hello-java-swing/po/bg.po #usr/share/doc/gettext/examples/hello-java-swing/po/ca.po #usr/share/doc/gettext/examples/hello-java-swing/po/de.po #usr/share/doc/gettext/examples/hello-java-swing/po/el.po +#usr/share/doc/gettext/examples/hello-java-swing/po/eo.po #usr/share/doc/gettext/examples/hello-java-swing/po/es.po +#usr/share/doc/gettext/examples/hello-java-swing/po/fi.po #usr/share/doc/gettext/examples/hello-java-swing/po/fr.po #usr/share/doc/gettext/examples/hello-java-swing/po/ga.po +#usr/share/doc/gettext/examples/hello-java-swing/po/hu.po +#usr/share/doc/gettext/examples/hello-java-swing/po/id.po #usr/share/doc/gettext/examples/hello-java-swing/po/it.po #usr/share/doc/gettext/examples/hello-java-swing/po/ja.po +#usr/share/doc/gettext/examples/hello-java-swing/po/ky.po +#usr/share/doc/gettext/examples/hello-java-swing/po/lv.po +#usr/share/doc/gettext/examples/hello-java-swing/po/ms.po +#usr/share/doc/gettext/examples/hello-java-swing/po/mt.po #usr/share/doc/gettext/examples/hello-java-swing/po/nl.po #usr/share/doc/gettext/examples/hello-java-swing/po/pl.po +#usr/share/doc/gettext/examples/hello-java-swing/po/pt.po #usr/share/doc/gettext/examples/hello-java-swing/po/ro.po #usr/share/doc/gettext/examples/hello-java-swing/po/ru.po #usr/share/doc/gettext/examples/hello-java-swing/po/sk.po +#usr/share/doc/gettext/examples/hello-java-swing/po/sl.po #usr/share/doc/gettext/examples/hello-java-swing/po/sr.po #usr/share/doc/gettext/examples/hello-java-swing/po/sv.po #usr/share/doc/gettext/examples/hello-java-swing/po/tr.po #usr/share/doc/gettext/examples/hello-java-swing/po/uk.po #usr/share/doc/gettext/examples/hello-java-swing/po/vi.po #usr/share/doc/gettext/examples/hello-java-swing/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-java-swing/po/zh_HK.po #usr/share/doc/gettext/examples/hello-java-swing/po/zh_TW.po #usr/share/doc/gettext/examples/hello-java/Hello.java #usr/share/doc/gettext/examples/hello-java/INSTALL @@ -591,25 +859,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-java/po/LINGUAS #usr/share/doc/gettext/examples/hello-java/po/Makefile.am #usr/share/doc/gettext/examples/hello-java/po/af.po +#usr/share/doc/gettext/examples/hello-java/po/ast.po +#usr/share/doc/gettext/examples/hello-java/po/bg.po #usr/share/doc/gettext/examples/hello-java/po/ca.po #usr/share/doc/gettext/examples/hello-java/po/de.po #usr/share/doc/gettext/examples/hello-java/po/el.po +#usr/share/doc/gettext/examples/hello-java/po/eo.po #usr/share/doc/gettext/examples/hello-java/po/es.po +#usr/share/doc/gettext/examples/hello-java/po/fi.po #usr/share/doc/gettext/examples/hello-java/po/fr.po #usr/share/doc/gettext/examples/hello-java/po/ga.po +#usr/share/doc/gettext/examples/hello-java/po/hu.po +#usr/share/doc/gettext/examples/hello-java/po/id.po #usr/share/doc/gettext/examples/hello-java/po/it.po #usr/share/doc/gettext/examples/hello-java/po/ja.po +#usr/share/doc/gettext/examples/hello-java/po/ky.po +#usr/share/doc/gettext/examples/hello-java/po/lv.po +#usr/share/doc/gettext/examples/hello-java/po/ms.po +#usr/share/doc/gettext/examples/hello-java/po/mt.po #usr/share/doc/gettext/examples/hello-java/po/nl.po #usr/share/doc/gettext/examples/hello-java/po/pl.po +#usr/share/doc/gettext/examples/hello-java/po/pt.po #usr/share/doc/gettext/examples/hello-java/po/ro.po #usr/share/doc/gettext/examples/hello-java/po/ru.po #usr/share/doc/gettext/examples/hello-java/po/sk.po +#usr/share/doc/gettext/examples/hello-java/po/sl.po #usr/share/doc/gettext/examples/hello-java/po/sr.po #usr/share/doc/gettext/examples/hello-java/po/sv.po #usr/share/doc/gettext/examples/hello-java/po/tr.po #usr/share/doc/gettext/examples/hello-java/po/uk.po #usr/share/doc/gettext/examples/hello-java/po/vi.po #usr/share/doc/gettext/examples/hello-java/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-java/po/zh_HK.po #usr/share/doc/gettext/examples/hello-java/po/zh_TW.po #usr/share/doc/gettext/examples/hello-librep #usr/share/doc/gettext/examples/hello-librep/INSTALL @@ -624,25 +905,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-librep/po/LINGUAS #usr/share/doc/gettext/examples/hello-librep/po/Makefile.am #usr/share/doc/gettext/examples/hello-librep/po/af.po +#usr/share/doc/gettext/examples/hello-librep/po/ast.po +#usr/share/doc/gettext/examples/hello-librep/po/bg.po #usr/share/doc/gettext/examples/hello-librep/po/ca.po #usr/share/doc/gettext/examples/hello-librep/po/de.po #usr/share/doc/gettext/examples/hello-librep/po/el.po +#usr/share/doc/gettext/examples/hello-librep/po/eo.po #usr/share/doc/gettext/examples/hello-librep/po/es.po +#usr/share/doc/gettext/examples/hello-librep/po/fi.po #usr/share/doc/gettext/examples/hello-librep/po/fr.po #usr/share/doc/gettext/examples/hello-librep/po/ga.po +#usr/share/doc/gettext/examples/hello-librep/po/hu.po +#usr/share/doc/gettext/examples/hello-librep/po/id.po #usr/share/doc/gettext/examples/hello-librep/po/it.po #usr/share/doc/gettext/examples/hello-librep/po/ja.po +#usr/share/doc/gettext/examples/hello-librep/po/ky.po +#usr/share/doc/gettext/examples/hello-librep/po/lv.po +#usr/share/doc/gettext/examples/hello-librep/po/ms.po +#usr/share/doc/gettext/examples/hello-librep/po/mt.po #usr/share/doc/gettext/examples/hello-librep/po/nl.po #usr/share/doc/gettext/examples/hello-librep/po/pl.po +#usr/share/doc/gettext/examples/hello-librep/po/pt.po #usr/share/doc/gettext/examples/hello-librep/po/ro.po #usr/share/doc/gettext/examples/hello-librep/po/ru.po #usr/share/doc/gettext/examples/hello-librep/po/sk.po +#usr/share/doc/gettext/examples/hello-librep/po/sl.po #usr/share/doc/gettext/examples/hello-librep/po/sr.po #usr/share/doc/gettext/examples/hello-librep/po/sv.po #usr/share/doc/gettext/examples/hello-librep/po/tr.po #usr/share/doc/gettext/examples/hello-librep/po/uk.po #usr/share/doc/gettext/examples/hello-librep/po/vi.po #usr/share/doc/gettext/examples/hello-librep/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-librep/po/zh_HK.po #usr/share/doc/gettext/examples/hello-librep/po/zh_TW.po #usr/share/doc/gettext/examples/hello-objc #usr/share/doc/gettext/examples/hello-objc-gnome @@ -662,25 +956,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-objc-gnome/po/Makevars #usr/share/doc/gettext/examples/hello-objc-gnome/po/POTFILES.in #usr/share/doc/gettext/examples/hello-objc-gnome/po/af.po +#usr/share/doc/gettext/examples/hello-objc-gnome/po/ast.po +#usr/share/doc/gettext/examples/hello-objc-gnome/po/bg.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/ca.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/de.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/el.po +#usr/share/doc/gettext/examples/hello-objc-gnome/po/eo.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/es.po +#usr/share/doc/gettext/examples/hello-objc-gnome/po/fi.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/fr.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/ga.po +#usr/share/doc/gettext/examples/hello-objc-gnome/po/hu.po +#usr/share/doc/gettext/examples/hello-objc-gnome/po/id.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/it.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/ja.po +#usr/share/doc/gettext/examples/hello-objc-gnome/po/ky.po +#usr/share/doc/gettext/examples/hello-objc-gnome/po/lv.po +#usr/share/doc/gettext/examples/hello-objc-gnome/po/ms.po +#usr/share/doc/gettext/examples/hello-objc-gnome/po/mt.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/nl.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/pl.po +#usr/share/doc/gettext/examples/hello-objc-gnome/po/pt.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/ro.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/ru.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/sk.po +#usr/share/doc/gettext/examples/hello-objc-gnome/po/sl.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/sr.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/sv.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/tr.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/uk.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/vi.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-objc-gnome/po/zh_HK.po #usr/share/doc/gettext/examples/hello-objc-gnome/po/zh_TW.po #usr/share/doc/gettext/examples/hello-objc-gnustep #usr/share/doc/gettext/examples/hello-objc-gnustep/AppController.h @@ -698,25 +1005,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-objc-gnustep/po/LINGUAS #usr/share/doc/gettext/examples/hello-objc-gnustep/po/LocaleAliases #usr/share/doc/gettext/examples/hello-objc-gnustep/po/af.po +#usr/share/doc/gettext/examples/hello-objc-gnustep/po/ast.po +#usr/share/doc/gettext/examples/hello-objc-gnustep/po/bg.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/ca.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/de.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/el.po +#usr/share/doc/gettext/examples/hello-objc-gnustep/po/eo.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/es.po +#usr/share/doc/gettext/examples/hello-objc-gnustep/po/fi.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/fr.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/ga.po +#usr/share/doc/gettext/examples/hello-objc-gnustep/po/hu.po +#usr/share/doc/gettext/examples/hello-objc-gnustep/po/id.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/it.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/ja.po +#usr/share/doc/gettext/examples/hello-objc-gnustep/po/ky.po +#usr/share/doc/gettext/examples/hello-objc-gnustep/po/lv.po +#usr/share/doc/gettext/examples/hello-objc-gnustep/po/ms.po +#usr/share/doc/gettext/examples/hello-objc-gnustep/po/mt.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/nl.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/pl.po +#usr/share/doc/gettext/examples/hello-objc-gnustep/po/pt.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/ro.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/ru.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/sk.po +#usr/share/doc/gettext/examples/hello-objc-gnustep/po/sl.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/sr.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/sv.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/tr.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/uk.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/vi.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-objc-gnustep/po/zh_HK.po #usr/share/doc/gettext/examples/hello-objc-gnustep/po/zh_TW.po #usr/share/doc/gettext/examples/hello-objc/INSTALL #usr/share/doc/gettext/examples/hello-objc/Makefile.am @@ -731,25 +1051,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-objc/po/Makevars #usr/share/doc/gettext/examples/hello-objc/po/POTFILES.in #usr/share/doc/gettext/examples/hello-objc/po/af.po +#usr/share/doc/gettext/examples/hello-objc/po/ast.po +#usr/share/doc/gettext/examples/hello-objc/po/bg.po #usr/share/doc/gettext/examples/hello-objc/po/ca.po #usr/share/doc/gettext/examples/hello-objc/po/de.po #usr/share/doc/gettext/examples/hello-objc/po/el.po +#usr/share/doc/gettext/examples/hello-objc/po/eo.po #usr/share/doc/gettext/examples/hello-objc/po/es.po +#usr/share/doc/gettext/examples/hello-objc/po/fi.po #usr/share/doc/gettext/examples/hello-objc/po/fr.po #usr/share/doc/gettext/examples/hello-objc/po/ga.po +#usr/share/doc/gettext/examples/hello-objc/po/hu.po +#usr/share/doc/gettext/examples/hello-objc/po/id.po #usr/share/doc/gettext/examples/hello-objc/po/it.po #usr/share/doc/gettext/examples/hello-objc/po/ja.po +#usr/share/doc/gettext/examples/hello-objc/po/ky.po +#usr/share/doc/gettext/examples/hello-objc/po/lv.po +#usr/share/doc/gettext/examples/hello-objc/po/ms.po +#usr/share/doc/gettext/examples/hello-objc/po/mt.po #usr/share/doc/gettext/examples/hello-objc/po/nl.po #usr/share/doc/gettext/examples/hello-objc/po/pl.po +#usr/share/doc/gettext/examples/hello-objc/po/pt.po #usr/share/doc/gettext/examples/hello-objc/po/ro.po #usr/share/doc/gettext/examples/hello-objc/po/ru.po #usr/share/doc/gettext/examples/hello-objc/po/sk.po +#usr/share/doc/gettext/examples/hello-objc/po/sl.po #usr/share/doc/gettext/examples/hello-objc/po/sr.po #usr/share/doc/gettext/examples/hello-objc/po/sv.po #usr/share/doc/gettext/examples/hello-objc/po/tr.po #usr/share/doc/gettext/examples/hello-objc/po/uk.po #usr/share/doc/gettext/examples/hello-objc/po/vi.po #usr/share/doc/gettext/examples/hello-objc/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-objc/po/zh_HK.po #usr/share/doc/gettext/examples/hello-objc/po/zh_TW.po #usr/share/doc/gettext/examples/hello-pascal #usr/share/doc/gettext/examples/hello-pascal/INSTALL @@ -765,25 +1098,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-pascal/po/LINGUAS #usr/share/doc/gettext/examples/hello-pascal/po/Makefile.am #usr/share/doc/gettext/examples/hello-pascal/po/af.po +#usr/share/doc/gettext/examples/hello-pascal/po/ast.po +#usr/share/doc/gettext/examples/hello-pascal/po/bg.po #usr/share/doc/gettext/examples/hello-pascal/po/ca.po #usr/share/doc/gettext/examples/hello-pascal/po/de.po #usr/share/doc/gettext/examples/hello-pascal/po/el.po +#usr/share/doc/gettext/examples/hello-pascal/po/eo.po #usr/share/doc/gettext/examples/hello-pascal/po/es.po +#usr/share/doc/gettext/examples/hello-pascal/po/fi.po #usr/share/doc/gettext/examples/hello-pascal/po/fr.po #usr/share/doc/gettext/examples/hello-pascal/po/ga.po +#usr/share/doc/gettext/examples/hello-pascal/po/hu.po +#usr/share/doc/gettext/examples/hello-pascal/po/id.po #usr/share/doc/gettext/examples/hello-pascal/po/it.po #usr/share/doc/gettext/examples/hello-pascal/po/ja.po +#usr/share/doc/gettext/examples/hello-pascal/po/ky.po +#usr/share/doc/gettext/examples/hello-pascal/po/lv.po +#usr/share/doc/gettext/examples/hello-pascal/po/ms.po +#usr/share/doc/gettext/examples/hello-pascal/po/mt.po #usr/share/doc/gettext/examples/hello-pascal/po/nl.po #usr/share/doc/gettext/examples/hello-pascal/po/pl.po +#usr/share/doc/gettext/examples/hello-pascal/po/pt.po #usr/share/doc/gettext/examples/hello-pascal/po/ro.po #usr/share/doc/gettext/examples/hello-pascal/po/ru.po #usr/share/doc/gettext/examples/hello-pascal/po/sk.po +#usr/share/doc/gettext/examples/hello-pascal/po/sl.po #usr/share/doc/gettext/examples/hello-pascal/po/sr.po #usr/share/doc/gettext/examples/hello-pascal/po/sv.po #usr/share/doc/gettext/examples/hello-pascal/po/tr.po #usr/share/doc/gettext/examples/hello-pascal/po/uk.po #usr/share/doc/gettext/examples/hello-pascal/po/vi.po #usr/share/doc/gettext/examples/hello-pascal/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-pascal/po/zh_HK.po #usr/share/doc/gettext/examples/hello-pascal/po/zh_TW.po #usr/share/doc/gettext/examples/hello-perl #usr/share/doc/gettext/examples/hello-perl/INSTALL @@ -799,25 +1145,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-perl/po/LINGUAS #usr/share/doc/gettext/examples/hello-perl/po/Makefile.am #usr/share/doc/gettext/examples/hello-perl/po/af.po +#usr/share/doc/gettext/examples/hello-perl/po/ast.po +#usr/share/doc/gettext/examples/hello-perl/po/bg.po #usr/share/doc/gettext/examples/hello-perl/po/ca.po #usr/share/doc/gettext/examples/hello-perl/po/de.po #usr/share/doc/gettext/examples/hello-perl/po/el.po +#usr/share/doc/gettext/examples/hello-perl/po/eo.po #usr/share/doc/gettext/examples/hello-perl/po/es.po +#usr/share/doc/gettext/examples/hello-perl/po/fi.po #usr/share/doc/gettext/examples/hello-perl/po/fr.po #usr/share/doc/gettext/examples/hello-perl/po/ga.po +#usr/share/doc/gettext/examples/hello-perl/po/hu.po +#usr/share/doc/gettext/examples/hello-perl/po/id.po #usr/share/doc/gettext/examples/hello-perl/po/it.po #usr/share/doc/gettext/examples/hello-perl/po/ja.po +#usr/share/doc/gettext/examples/hello-perl/po/ky.po +#usr/share/doc/gettext/examples/hello-perl/po/lv.po +#usr/share/doc/gettext/examples/hello-perl/po/ms.po +#usr/share/doc/gettext/examples/hello-perl/po/mt.po #usr/share/doc/gettext/examples/hello-perl/po/nl.po #usr/share/doc/gettext/examples/hello-perl/po/pl.po +#usr/share/doc/gettext/examples/hello-perl/po/pt.po #usr/share/doc/gettext/examples/hello-perl/po/ro.po #usr/share/doc/gettext/examples/hello-perl/po/ru.po #usr/share/doc/gettext/examples/hello-perl/po/sk.po +#usr/share/doc/gettext/examples/hello-perl/po/sl.po #usr/share/doc/gettext/examples/hello-perl/po/sr.po #usr/share/doc/gettext/examples/hello-perl/po/sv.po #usr/share/doc/gettext/examples/hello-perl/po/tr.po #usr/share/doc/gettext/examples/hello-perl/po/uk.po #usr/share/doc/gettext/examples/hello-perl/po/vi.po #usr/share/doc/gettext/examples/hello-perl/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-perl/po/zh_HK.po #usr/share/doc/gettext/examples/hello-perl/po/zh_TW.po #usr/share/doc/gettext/examples/hello-php #usr/share/doc/gettext/examples/hello-php/INSTALL @@ -833,25 +1192,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-php/po/LINGUAS #usr/share/doc/gettext/examples/hello-php/po/Makefile.am #usr/share/doc/gettext/examples/hello-php/po/af.po +#usr/share/doc/gettext/examples/hello-php/po/ast.po +#usr/share/doc/gettext/examples/hello-php/po/bg.po #usr/share/doc/gettext/examples/hello-php/po/ca.po #usr/share/doc/gettext/examples/hello-php/po/de.po #usr/share/doc/gettext/examples/hello-php/po/el.po +#usr/share/doc/gettext/examples/hello-php/po/eo.po #usr/share/doc/gettext/examples/hello-php/po/es.po +#usr/share/doc/gettext/examples/hello-php/po/fi.po #usr/share/doc/gettext/examples/hello-php/po/fr.po #usr/share/doc/gettext/examples/hello-php/po/ga.po +#usr/share/doc/gettext/examples/hello-php/po/hu.po +#usr/share/doc/gettext/examples/hello-php/po/id.po #usr/share/doc/gettext/examples/hello-php/po/it.po #usr/share/doc/gettext/examples/hello-php/po/ja.po +#usr/share/doc/gettext/examples/hello-php/po/ky.po +#usr/share/doc/gettext/examples/hello-php/po/lv.po +#usr/share/doc/gettext/examples/hello-php/po/ms.po +#usr/share/doc/gettext/examples/hello-php/po/mt.po #usr/share/doc/gettext/examples/hello-php/po/nl.po #usr/share/doc/gettext/examples/hello-php/po/pl.po +#usr/share/doc/gettext/examples/hello-php/po/pt.po #usr/share/doc/gettext/examples/hello-php/po/ro.po #usr/share/doc/gettext/examples/hello-php/po/ru.po #usr/share/doc/gettext/examples/hello-php/po/sk.po +#usr/share/doc/gettext/examples/hello-php/po/sl.po #usr/share/doc/gettext/examples/hello-php/po/sr.po #usr/share/doc/gettext/examples/hello-php/po/sv.po #usr/share/doc/gettext/examples/hello-php/po/tr.po #usr/share/doc/gettext/examples/hello-php/po/uk.po #usr/share/doc/gettext/examples/hello-php/po/vi.po #usr/share/doc/gettext/examples/hello-php/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-php/po/zh_HK.po #usr/share/doc/gettext/examples/hello-php/po/zh_TW.po #usr/share/doc/gettext/examples/hello-python #usr/share/doc/gettext/examples/hello-python/INSTALL @@ -866,25 +1238,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-python/po/LINGUAS #usr/share/doc/gettext/examples/hello-python/po/Makefile.am #usr/share/doc/gettext/examples/hello-python/po/af.po +#usr/share/doc/gettext/examples/hello-python/po/ast.po +#usr/share/doc/gettext/examples/hello-python/po/bg.po #usr/share/doc/gettext/examples/hello-python/po/ca.po #usr/share/doc/gettext/examples/hello-python/po/de.po #usr/share/doc/gettext/examples/hello-python/po/el.po +#usr/share/doc/gettext/examples/hello-python/po/eo.po #usr/share/doc/gettext/examples/hello-python/po/es.po +#usr/share/doc/gettext/examples/hello-python/po/fi.po #usr/share/doc/gettext/examples/hello-python/po/fr.po #usr/share/doc/gettext/examples/hello-python/po/ga.po +#usr/share/doc/gettext/examples/hello-python/po/hu.po +#usr/share/doc/gettext/examples/hello-python/po/id.po #usr/share/doc/gettext/examples/hello-python/po/it.po #usr/share/doc/gettext/examples/hello-python/po/ja.po +#usr/share/doc/gettext/examples/hello-python/po/ky.po +#usr/share/doc/gettext/examples/hello-python/po/lv.po +#usr/share/doc/gettext/examples/hello-python/po/ms.po +#usr/share/doc/gettext/examples/hello-python/po/mt.po #usr/share/doc/gettext/examples/hello-python/po/nl.po #usr/share/doc/gettext/examples/hello-python/po/pl.po +#usr/share/doc/gettext/examples/hello-python/po/pt.po #usr/share/doc/gettext/examples/hello-python/po/ro.po #usr/share/doc/gettext/examples/hello-python/po/ru.po #usr/share/doc/gettext/examples/hello-python/po/sk.po +#usr/share/doc/gettext/examples/hello-python/po/sl.po #usr/share/doc/gettext/examples/hello-python/po/sr.po #usr/share/doc/gettext/examples/hello-python/po/sv.po #usr/share/doc/gettext/examples/hello-python/po/tr.po #usr/share/doc/gettext/examples/hello-python/po/uk.po #usr/share/doc/gettext/examples/hello-python/po/vi.po #usr/share/doc/gettext/examples/hello-python/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-python/po/zh_HK.po #usr/share/doc/gettext/examples/hello-python/po/zh_TW.po #usr/share/doc/gettext/examples/hello-sh #usr/share/doc/gettext/examples/hello-sh/INSTALL @@ -899,25 +1284,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-sh/po/LINGUAS #usr/share/doc/gettext/examples/hello-sh/po/Makefile.am #usr/share/doc/gettext/examples/hello-sh/po/af.po +#usr/share/doc/gettext/examples/hello-sh/po/ast.po +#usr/share/doc/gettext/examples/hello-sh/po/bg.po #usr/share/doc/gettext/examples/hello-sh/po/ca.po #usr/share/doc/gettext/examples/hello-sh/po/de.po #usr/share/doc/gettext/examples/hello-sh/po/el.po +#usr/share/doc/gettext/examples/hello-sh/po/eo.po #usr/share/doc/gettext/examples/hello-sh/po/es.po +#usr/share/doc/gettext/examples/hello-sh/po/fi.po #usr/share/doc/gettext/examples/hello-sh/po/fr.po #usr/share/doc/gettext/examples/hello-sh/po/ga.po +#usr/share/doc/gettext/examples/hello-sh/po/hu.po +#usr/share/doc/gettext/examples/hello-sh/po/id.po #usr/share/doc/gettext/examples/hello-sh/po/it.po #usr/share/doc/gettext/examples/hello-sh/po/ja.po +#usr/share/doc/gettext/examples/hello-sh/po/ky.po +#usr/share/doc/gettext/examples/hello-sh/po/lv.po +#usr/share/doc/gettext/examples/hello-sh/po/ms.po +#usr/share/doc/gettext/examples/hello-sh/po/mt.po #usr/share/doc/gettext/examples/hello-sh/po/nl.po #usr/share/doc/gettext/examples/hello-sh/po/pl.po +#usr/share/doc/gettext/examples/hello-sh/po/pt.po #usr/share/doc/gettext/examples/hello-sh/po/ro.po #usr/share/doc/gettext/examples/hello-sh/po/ru.po #usr/share/doc/gettext/examples/hello-sh/po/sk.po +#usr/share/doc/gettext/examples/hello-sh/po/sl.po #usr/share/doc/gettext/examples/hello-sh/po/sr.po #usr/share/doc/gettext/examples/hello-sh/po/sv.po #usr/share/doc/gettext/examples/hello-sh/po/tr.po #usr/share/doc/gettext/examples/hello-sh/po/uk.po #usr/share/doc/gettext/examples/hello-sh/po/vi.po #usr/share/doc/gettext/examples/hello-sh/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-sh/po/zh_HK.po #usr/share/doc/gettext/examples/hello-sh/po/zh_TW.po #usr/share/doc/gettext/examples/hello-smalltalk #usr/share/doc/gettext/examples/hello-smalltalk/INSTALL @@ -932,25 +1330,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-smalltalk/po/LINGUAS #usr/share/doc/gettext/examples/hello-smalltalk/po/Makefile.am #usr/share/doc/gettext/examples/hello-smalltalk/po/af.po +#usr/share/doc/gettext/examples/hello-smalltalk/po/ast.po +#usr/share/doc/gettext/examples/hello-smalltalk/po/bg.po #usr/share/doc/gettext/examples/hello-smalltalk/po/ca.po #usr/share/doc/gettext/examples/hello-smalltalk/po/de.po #usr/share/doc/gettext/examples/hello-smalltalk/po/el.po +#usr/share/doc/gettext/examples/hello-smalltalk/po/eo.po #usr/share/doc/gettext/examples/hello-smalltalk/po/es.po +#usr/share/doc/gettext/examples/hello-smalltalk/po/fi.po #usr/share/doc/gettext/examples/hello-smalltalk/po/fr.po #usr/share/doc/gettext/examples/hello-smalltalk/po/ga.po +#usr/share/doc/gettext/examples/hello-smalltalk/po/hu.po +#usr/share/doc/gettext/examples/hello-smalltalk/po/id.po #usr/share/doc/gettext/examples/hello-smalltalk/po/it.po #usr/share/doc/gettext/examples/hello-smalltalk/po/ja.po +#usr/share/doc/gettext/examples/hello-smalltalk/po/ky.po +#usr/share/doc/gettext/examples/hello-smalltalk/po/lv.po +#usr/share/doc/gettext/examples/hello-smalltalk/po/ms.po +#usr/share/doc/gettext/examples/hello-smalltalk/po/mt.po #usr/share/doc/gettext/examples/hello-smalltalk/po/nl.po #usr/share/doc/gettext/examples/hello-smalltalk/po/pl.po +#usr/share/doc/gettext/examples/hello-smalltalk/po/pt.po #usr/share/doc/gettext/examples/hello-smalltalk/po/ro.po #usr/share/doc/gettext/examples/hello-smalltalk/po/ru.po #usr/share/doc/gettext/examples/hello-smalltalk/po/sk.po +#usr/share/doc/gettext/examples/hello-smalltalk/po/sl.po #usr/share/doc/gettext/examples/hello-smalltalk/po/sr.po #usr/share/doc/gettext/examples/hello-smalltalk/po/sv.po #usr/share/doc/gettext/examples/hello-smalltalk/po/tr.po #usr/share/doc/gettext/examples/hello-smalltalk/po/uk.po #usr/share/doc/gettext/examples/hello-smalltalk/po/vi.po #usr/share/doc/gettext/examples/hello-smalltalk/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-smalltalk/po/zh_HK.po #usr/share/doc/gettext/examples/hello-smalltalk/po/zh_TW.po #usr/share/doc/gettext/examples/hello-tcl #usr/share/doc/gettext/examples/hello-tcl-tk @@ -966,25 +1377,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-tcl-tk/po/LINGUAS #usr/share/doc/gettext/examples/hello-tcl-tk/po/Makefile.am #usr/share/doc/gettext/examples/hello-tcl-tk/po/af.po +#usr/share/doc/gettext/examples/hello-tcl-tk/po/ast.po +#usr/share/doc/gettext/examples/hello-tcl-tk/po/bg.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/ca.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/de.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/el.po +#usr/share/doc/gettext/examples/hello-tcl-tk/po/eo.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/es.po +#usr/share/doc/gettext/examples/hello-tcl-tk/po/fi.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/fr.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/ga.po +#usr/share/doc/gettext/examples/hello-tcl-tk/po/hu.po +#usr/share/doc/gettext/examples/hello-tcl-tk/po/id.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/it.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/ja.po +#usr/share/doc/gettext/examples/hello-tcl-tk/po/ky.po +#usr/share/doc/gettext/examples/hello-tcl-tk/po/lv.po +#usr/share/doc/gettext/examples/hello-tcl-tk/po/ms.po +#usr/share/doc/gettext/examples/hello-tcl-tk/po/mt.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/nl.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/pl.po +#usr/share/doc/gettext/examples/hello-tcl-tk/po/pt.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/ro.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/ru.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/sk.po +#usr/share/doc/gettext/examples/hello-tcl-tk/po/sl.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/sr.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/sv.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/tr.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/uk.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/vi.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-tcl-tk/po/zh_HK.po #usr/share/doc/gettext/examples/hello-tcl-tk/po/zh_TW.po #usr/share/doc/gettext/examples/hello-tcl/INSTALL #usr/share/doc/gettext/examples/hello-tcl/Makefile.am @@ -998,25 +1422,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-tcl/po/LINGUAS #usr/share/doc/gettext/examples/hello-tcl/po/Makefile.am #usr/share/doc/gettext/examples/hello-tcl/po/af.po +#usr/share/doc/gettext/examples/hello-tcl/po/ast.po +#usr/share/doc/gettext/examples/hello-tcl/po/bg.po #usr/share/doc/gettext/examples/hello-tcl/po/ca.po #usr/share/doc/gettext/examples/hello-tcl/po/de.po #usr/share/doc/gettext/examples/hello-tcl/po/el.po +#usr/share/doc/gettext/examples/hello-tcl/po/eo.po #usr/share/doc/gettext/examples/hello-tcl/po/es.po +#usr/share/doc/gettext/examples/hello-tcl/po/fi.po #usr/share/doc/gettext/examples/hello-tcl/po/fr.po #usr/share/doc/gettext/examples/hello-tcl/po/ga.po +#usr/share/doc/gettext/examples/hello-tcl/po/hu.po +#usr/share/doc/gettext/examples/hello-tcl/po/id.po #usr/share/doc/gettext/examples/hello-tcl/po/it.po #usr/share/doc/gettext/examples/hello-tcl/po/ja.po +#usr/share/doc/gettext/examples/hello-tcl/po/ky.po +#usr/share/doc/gettext/examples/hello-tcl/po/lv.po +#usr/share/doc/gettext/examples/hello-tcl/po/ms.po +#usr/share/doc/gettext/examples/hello-tcl/po/mt.po #usr/share/doc/gettext/examples/hello-tcl/po/nl.po #usr/share/doc/gettext/examples/hello-tcl/po/pl.po +#usr/share/doc/gettext/examples/hello-tcl/po/pt.po #usr/share/doc/gettext/examples/hello-tcl/po/ro.po #usr/share/doc/gettext/examples/hello-tcl/po/ru.po #usr/share/doc/gettext/examples/hello-tcl/po/sk.po +#usr/share/doc/gettext/examples/hello-tcl/po/sl.po #usr/share/doc/gettext/examples/hello-tcl/po/sr.po #usr/share/doc/gettext/examples/hello-tcl/po/sv.po #usr/share/doc/gettext/examples/hello-tcl/po/tr.po #usr/share/doc/gettext/examples/hello-tcl/po/uk.po #usr/share/doc/gettext/examples/hello-tcl/po/vi.po #usr/share/doc/gettext/examples/hello-tcl/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-tcl/po/zh_HK.po #usr/share/doc/gettext/examples/hello-tcl/po/zh_TW.po #usr/share/doc/gettext/examples/hello-ycp #usr/share/doc/gettext/examples/hello-ycp/INSTALL @@ -1031,25 +1468,38 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/examples/hello-ycp/po/LINGUAS #usr/share/doc/gettext/examples/hello-ycp/po/Makefile.am #usr/share/doc/gettext/examples/hello-ycp/po/af.po +#usr/share/doc/gettext/examples/hello-ycp/po/ast.po +#usr/share/doc/gettext/examples/hello-ycp/po/bg.po #usr/share/doc/gettext/examples/hello-ycp/po/ca.po #usr/share/doc/gettext/examples/hello-ycp/po/de.po #usr/share/doc/gettext/examples/hello-ycp/po/el.po +#usr/share/doc/gettext/examples/hello-ycp/po/eo.po #usr/share/doc/gettext/examples/hello-ycp/po/es.po +#usr/share/doc/gettext/examples/hello-ycp/po/fi.po #usr/share/doc/gettext/examples/hello-ycp/po/fr.po #usr/share/doc/gettext/examples/hello-ycp/po/ga.po +#usr/share/doc/gettext/examples/hello-ycp/po/hu.po +#usr/share/doc/gettext/examples/hello-ycp/po/id.po #usr/share/doc/gettext/examples/hello-ycp/po/it.po #usr/share/doc/gettext/examples/hello-ycp/po/ja.po +#usr/share/doc/gettext/examples/hello-ycp/po/ky.po +#usr/share/doc/gettext/examples/hello-ycp/po/lv.po +#usr/share/doc/gettext/examples/hello-ycp/po/ms.po +#usr/share/doc/gettext/examples/hello-ycp/po/mt.po #usr/share/doc/gettext/examples/hello-ycp/po/nl.po #usr/share/doc/gettext/examples/hello-ycp/po/pl.po +#usr/share/doc/gettext/examples/hello-ycp/po/pt.po #usr/share/doc/gettext/examples/hello-ycp/po/ro.po #usr/share/doc/gettext/examples/hello-ycp/po/ru.po #usr/share/doc/gettext/examples/hello-ycp/po/sk.po +#usr/share/doc/gettext/examples/hello-ycp/po/sl.po #usr/share/doc/gettext/examples/hello-ycp/po/sr.po #usr/share/doc/gettext/examples/hello-ycp/po/sv.po #usr/share/doc/gettext/examples/hello-ycp/po/tr.po #usr/share/doc/gettext/examples/hello-ycp/po/uk.po #usr/share/doc/gettext/examples/hello-ycp/po/vi.po #usr/share/doc/gettext/examples/hello-ycp/po/zh_CN.po +#usr/share/doc/gettext/examples/hello-ycp/po/zh_HK.po #usr/share/doc/gettext/examples/hello-ycp/po/zh_TW.po #usr/share/doc/gettext/examples/installpaths #usr/share/doc/gettext/gettext.1.html @@ -1069,6 +1519,9 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/gettext_20.html #usr/share/doc/gettext/gettext_21.html #usr/share/doc/gettext/gettext_22.html +#usr/share/doc/gettext/gettext_23.html +#usr/share/doc/gettext/gettext_24.html +#usr/share/doc/gettext/gettext_25.html #usr/share/doc/gettext/gettext_3.html #usr/share/doc/gettext/gettext_4.html #usr/share/doc/gettext/gettext_5.html @@ -1079,35 +1532,6 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/gettext_foot.html #usr/share/doc/gettext/gettext_toc.html #usr/share/doc/gettext/gettextize.1.html -#usr/share/doc/gettext/javadoc1 -#usr/share/doc/gettext/javadoc1/AllNames.html -#usr/share/doc/gettext/javadoc1/gnu.gettext.GettextResource.html -#usr/share/doc/gettext/javadoc1/images -#usr/share/doc/gettext/javadoc1/images/blue-ball-small.gif -#usr/share/doc/gettext/javadoc1/images/blue-ball.gif -#usr/share/doc/gettext/javadoc1/images/class-index.gif -#usr/share/doc/gettext/javadoc1/images/constructor-index.gif -#usr/share/doc/gettext/javadoc1/images/constructors.gif -#usr/share/doc/gettext/javadoc1/images/cyan-ball-small.gif -#usr/share/doc/gettext/javadoc1/images/cyan-ball.gif -#usr/share/doc/gettext/javadoc1/images/error-index.gif -#usr/share/doc/gettext/javadoc1/images/exception-index.gif -#usr/share/doc/gettext/javadoc1/images/green-ball-small.gif -#usr/share/doc/gettext/javadoc1/images/green-ball.gif -#usr/share/doc/gettext/javadoc1/images/interface-index.gif -#usr/share/doc/gettext/javadoc1/images/magenta-ball-small.gif -#usr/share/doc/gettext/javadoc1/images/magenta-ball.gif -#usr/share/doc/gettext/javadoc1/images/method-index.gif -#usr/share/doc/gettext/javadoc1/images/methods.gif -#usr/share/doc/gettext/javadoc1/images/package-index.gif -#usr/share/doc/gettext/javadoc1/images/red-ball-small.gif -#usr/share/doc/gettext/javadoc1/images/red-ball.gif -#usr/share/doc/gettext/javadoc1/images/variable-index.gif -#usr/share/doc/gettext/javadoc1/images/variables.gif -#usr/share/doc/gettext/javadoc1/images/yellow-ball-small.gif -#usr/share/doc/gettext/javadoc1/images/yellow-ball.gif -#usr/share/doc/gettext/javadoc1/packages.html -#usr/share/doc/gettext/javadoc1/tree.html #usr/share/doc/gettext/javadoc2 #usr/share/doc/gettext/javadoc2/allclasses-frame.html #usr/share/doc/gettext/javadoc2/deprecated-list.html @@ -1141,14 +1565,15 @@ usr/lib/preloadable_libintl.so #usr/share/doc/gettext/msguniq.1.html #usr/share/doc/gettext/ngettext.1.html #usr/share/doc/gettext/ngettext.3.html +#usr/share/doc/gettext/recode-sr-latin.1.html #usr/share/doc/gettext/textdomain.3.html #usr/share/doc/gettext/tutorial.html #usr/share/doc/gettext/xgettext.1.html #usr/share/doc/libasprintf -#usr/share/doc/libasprintf/autosprintf.html +#usr/share/doc/libasprintf/autosprintf_all.html #usr/share/gettext #usr/share/gettext/ABOUT-NLS -#usr/share/gettext/archive.tar.gz +#usr/share/gettext/archive.dir.tar.gz #usr/share/gettext/config.rpath #usr/share/gettext/gettext.h #usr/share/gettext/intl @@ -1166,15 +1591,19 @@ usr/lib/preloadable_libintl.so #usr/share/gettext/intl/dngettext.c #usr/share/gettext/intl/eval-plural.h #usr/share/gettext/intl/explodename.c +#usr/share/gettext/intl/export.h #usr/share/gettext/intl/finddomain.c #usr/share/gettext/intl/gettext.c #usr/share/gettext/intl/gettextP.h #usr/share/gettext/intl/gmo.h +#usr/share/gettext/intl/hash-string.c #usr/share/gettext/intl/hash-string.h #usr/share/gettext/intl/intl-compat.c +#usr/share/gettext/intl/intl-exports.c #usr/share/gettext/intl/l10nflist.c #usr/share/gettext/intl/langprefs.c #usr/share/gettext/intl/libgnuintl.h.in +#usr/share/gettext/intl/libintl.rc #usr/share/gettext/intl/loadinfo.h #usr/share/gettext/intl/loadmsgcat.c #usr/share/gettext/intl/localcharset.c @@ -1182,6 +1611,8 @@ usr/lib/preloadable_libintl.so #usr/share/gettext/intl/locale.alias #usr/share/gettext/intl/localealias.c #usr/share/gettext/intl/localename.c +#usr/share/gettext/intl/lock.c +#usr/share/gettext/intl/lock.h #usr/share/gettext/intl/log.c #usr/share/gettext/intl/ngettext.c #usr/share/gettext/intl/os2compat.c @@ -1200,13 +1631,18 @@ usr/lib/preloadable_libintl.so #usr/share/gettext/intl/ref-del.sin #usr/share/gettext/intl/relocatable.c #usr/share/gettext/intl/relocatable.h +#usr/share/gettext/intl/setlocale.c #usr/share/gettext/intl/textdomain.c +#usr/share/gettext/intl/threadlib.c +#usr/share/gettext/intl/tsearch.c +#usr/share/gettext/intl/tsearch.h #usr/share/gettext/intl/vasnprintf.c #usr/share/gettext/intl/vasnprintf.h #usr/share/gettext/intl/vasnwprintf.h +#usr/share/gettext/intl/version.c #usr/share/gettext/intl/wprintf-parse.h #usr/share/gettext/intl/xsize.h -#usr/share/gettext/mkinstalldirs +#usr/share/gettext/javaversion.class #usr/share/gettext/msgunfmt.tcl #usr/share/gettext/po #usr/share/gettext/po/Makefile.in.in @@ -1236,6 +1672,15 @@ usr/lib/preloadable_libintl.so #usr/share/gettext/projects/TP/trigger #usr/share/gettext/projects/index #usr/share/gettext/projects/team-address +#usr/share/gettext/styles +#usr/share/gettext/styles/po-default.css +#usr/share/gettext/styles/po-emacs-x.css +#usr/share/gettext/styles/po-emacs-xterm.css +#usr/share/gettext/styles/po-emacs-xterm16.css +#usr/share/gettext/styles/po-emacs-xterm256.css +#usr/share/gettext/styles/po-vim.css +#usr/share/info/autosprintf.info +#usr/share/info/gettext.info #usr/share/man/man1/autopoint.1 #usr/share/man/man1/envsubst.1 #usr/share/man/man1/gettext.1 @@ -1255,6 +1700,7 @@ usr/lib/preloadable_libintl.so #usr/share/man/man1/msgunfmt.1 #usr/share/man/man1/msguniq.1 #usr/share/man/man1/ngettext.1 +#usr/share/man/man1/recode-sr-latin.1 #usr/share/man/man1/xgettext.1 #usr/share/man/man3/bind_textdomain_codeset.3 #usr/share/man/man3/bindtextdomain.3 diff --git a/config/rootfiles/packages/glib b/config/rootfiles/common/glib similarity index 62% rename from config/rootfiles/packages/glib rename to config/rootfiles/common/glib index d4913a261..825b93233 100644 --- a/config/rootfiles/packages/glib +++ b/config/rootfiles/common/glib @@ -1,13 +1,27 @@ +#etc/bash_completion.d +#etc/bash_completion.d/gdbus-bash-completion.sh +#etc/bash_completion.d/gresource-bash-completion.sh +#etc/bash_completion.d/gsettings-bash-completion.sh +#usr/bin/gdbus +#usr/bin/gdbus-codegen +#usr/bin/gio-querymodules +#usr/bin/glib-compile-resources +#usr/bin/glib-compile-schemas #usr/bin/glib-genmarshal #usr/bin/glib-gettextize #usr/bin/glib-mkenums #usr/bin/gobject-query +#usr/bin/gresource +#usr/bin/gsettings #usr/bin/gtester #usr/bin/gtester-report #usr/include/gio-unix-2.0 #usr/include/gio-unix-2.0/gio #usr/include/gio-unix-2.0/gio/gdesktopappinfo.h +#usr/include/gio-unix-2.0/gio/gfiledescriptorbased.h #usr/include/gio-unix-2.0/gio/gunixconnection.h +#usr/include/gio-unix-2.0/gio/gunixcredentialsmessage.h +#usr/include/gio-unix-2.0/gio/gunixfdlist.h #usr/include/gio-unix-2.0/gio/gunixfdmessage.h #usr/include/gio-unix-2.0/gio/gunixinputstream.h #usr/include/gio-unix-2.0/gio/gunixmounts.h @@ -15,15 +29,48 @@ #usr/include/gio-unix-2.0/gio/gunixsocketaddress.h #usr/include/glib-2.0 #usr/include/glib-2.0/gio +#usr/include/glib-2.0/gio/gaction.h +#usr/include/glib-2.0/gio/gactiongroup.h +#usr/include/glib-2.0/gio/gactiongroupexporter.h +#usr/include/glib-2.0/gio/gactionmap.h #usr/include/glib-2.0/gio/gappinfo.h +#usr/include/glib-2.0/gio/gapplication.h +#usr/include/glib-2.0/gio/gapplicationcommandline.h #usr/include/glib-2.0/gio/gasyncinitable.h #usr/include/glib-2.0/gio/gasyncresult.h #usr/include/glib-2.0/gio/gbufferedinputstream.h #usr/include/glib-2.0/gio/gbufferedoutputstream.h #usr/include/glib-2.0/gio/gcancellable.h +#usr/include/glib-2.0/gio/gcharsetconverter.h #usr/include/glib-2.0/gio/gcontenttype.h +#usr/include/glib-2.0/gio/gconverter.h +#usr/include/glib-2.0/gio/gconverterinputstream.h +#usr/include/glib-2.0/gio/gconverteroutputstream.h +#usr/include/glib-2.0/gio/gcredentials.h #usr/include/glib-2.0/gio/gdatainputstream.h #usr/include/glib-2.0/gio/gdataoutputstream.h +#usr/include/glib-2.0/gio/gdbusactiongroup.h +#usr/include/glib-2.0/gio/gdbusaddress.h +#usr/include/glib-2.0/gio/gdbusauthobserver.h +#usr/include/glib-2.0/gio/gdbusconnection.h +#usr/include/glib-2.0/gio/gdbuserror.h +#usr/include/glib-2.0/gio/gdbusinterface.h +#usr/include/glib-2.0/gio/gdbusinterfaceskeleton.h +#usr/include/glib-2.0/gio/gdbusintrospection.h +#usr/include/glib-2.0/gio/gdbusmenumodel.h +#usr/include/glib-2.0/gio/gdbusmessage.h +#usr/include/glib-2.0/gio/gdbusmethodinvocation.h +#usr/include/glib-2.0/gio/gdbusnameowning.h +#usr/include/glib-2.0/gio/gdbusnamewatching.h +#usr/include/glib-2.0/gio/gdbusobject.h +#usr/include/glib-2.0/gio/gdbusobjectmanager.h +#usr/include/glib-2.0/gio/gdbusobjectmanagerclient.h +#usr/include/glib-2.0/gio/gdbusobjectmanagerserver.h +#usr/include/glib-2.0/gio/gdbusobjectproxy.h +#usr/include/glib-2.0/gio/gdbusobjectskeleton.h +#usr/include/glib-2.0/gio/gdbusproxy.h +#usr/include/glib-2.0/gio/gdbusserver.h +#usr/include/glib-2.0/gio/gdbusutils.h #usr/include/glib-2.0/gio/gdrive.h #usr/include/glib-2.0/gio/gemblem.h #usr/include/glib-2.0/gio/gemblemedicon.h @@ -41,6 +88,7 @@ #usr/include/glib-2.0/gio/gfilteroutputstream.h #usr/include/glib-2.0/gio/gicon.h #usr/include/glib-2.0/gio/ginetaddress.h +#usr/include/glib-2.0/gio/ginetaddressmask.h #usr/include/glib-2.0/gio/ginetsocketaddress.h #usr/include/glib-2.0/gio/ginitable.h #usr/include/glib-2.0/gio/ginputstream.h @@ -55,15 +103,34 @@ #usr/include/glib-2.0/gio/gloadableicon.h #usr/include/glib-2.0/gio/gmemoryinputstream.h #usr/include/glib-2.0/gio/gmemoryoutputstream.h +#usr/include/glib-2.0/gio/gmenu.h +#usr/include/glib-2.0/gio/gmenuexporter.h +#usr/include/glib-2.0/gio/gmenumodel.h #usr/include/glib-2.0/gio/gmount.h #usr/include/glib-2.0/gio/gmountoperation.h #usr/include/glib-2.0/gio/gnativevolumemonitor.h #usr/include/glib-2.0/gio/gnetworkaddress.h +#usr/include/glib-2.0/gio/gnetworkmonitor.h #usr/include/glib-2.0/gio/gnetworkservice.h #usr/include/glib-2.0/gio/goutputstream.h +#usr/include/glib-2.0/gio/gpermission.h +#usr/include/glib-2.0/gio/gpollableinputstream.h +#usr/include/glib-2.0/gio/gpollableoutputstream.h +#usr/include/glib-2.0/gio/gproxy.h +#usr/include/glib-2.0/gio/gproxyaddress.h +#usr/include/glib-2.0/gio/gproxyaddressenumerator.h +#usr/include/glib-2.0/gio/gproxyresolver.h +#usr/include/glib-2.0/gio/gremoteactiongroup.h #usr/include/glib-2.0/gio/gresolver.h +#usr/include/glib-2.0/gio/gresource.h #usr/include/glib-2.0/gio/gseekable.h +#usr/include/glib-2.0/gio/gsettings.h +#usr/include/glib-2.0/gio/gsettingsbackend.h +#usr/include/glib-2.0/gio/gsettingsschema.h +#usr/include/glib-2.0/gio/gsimpleaction.h +#usr/include/glib-2.0/gio/gsimpleactiongroup.h #usr/include/glib-2.0/gio/gsimpleasyncresult.h +#usr/include/glib-2.0/gio/gsimplepermission.h #usr/include/glib-2.0/gio/gsocket.h #usr/include/glib-2.0/gio/gsocketaddress.h #usr/include/glib-2.0/gio/gsocketaddressenumerator.h @@ -75,31 +142,56 @@ #usr/include/glib-2.0/gio/gsocketservice.h #usr/include/glib-2.0/gio/gsrvtarget.h #usr/include/glib-2.0/gio/gtcpconnection.h +#usr/include/glib-2.0/gio/gtcpwrapperconnection.h #usr/include/glib-2.0/gio/gthemedicon.h #usr/include/glib-2.0/gio/gthreadedsocketservice.h +#usr/include/glib-2.0/gio/gtlsbackend.h +#usr/include/glib-2.0/gio/gtlscertificate.h +#usr/include/glib-2.0/gio/gtlsclientconnection.h +#usr/include/glib-2.0/gio/gtlsconnection.h +#usr/include/glib-2.0/gio/gtlsdatabase.h +#usr/include/glib-2.0/gio/gtlsfiledatabase.h +#usr/include/glib-2.0/gio/gtlsinteraction.h +#usr/include/glib-2.0/gio/gtlspassword.h +#usr/include/glib-2.0/gio/gtlsserverconnection.h #usr/include/glib-2.0/gio/gvfs.h #usr/include/glib-2.0/gio/gvolume.h #usr/include/glib-2.0/gio/gvolumemonitor.h +#usr/include/glib-2.0/gio/gzlibcompressor.h +#usr/include/glib-2.0/gio/gzlibdecompressor.h #usr/include/glib-2.0/glib #usr/include/glib-2.0/glib-object.h +#usr/include/glib-2.0/glib-unix.h #usr/include/glib-2.0/glib.h +#usr/include/glib-2.0/glib/deprecated +#usr/include/glib-2.0/glib/deprecated/gallocator.h +#usr/include/glib-2.0/glib/deprecated/gcache.h +#usr/include/glib-2.0/glib/deprecated/gcompletion.h +#usr/include/glib-2.0/glib/deprecated/gmain.h +#usr/include/glib-2.0/glib/deprecated/grel.h +#usr/include/glib-2.0/glib/deprecated/gthread.h #usr/include/glib-2.0/glib/galloca.h #usr/include/glib-2.0/glib/garray.h #usr/include/glib-2.0/glib/gasyncqueue.h #usr/include/glib-2.0/glib/gatomic.h #usr/include/glib-2.0/glib/gbacktrace.h #usr/include/glib-2.0/glib/gbase64.h +#usr/include/glib-2.0/glib/gbitlock.h #usr/include/glib-2.0/glib/gbookmarkfile.h -#usr/include/glib-2.0/glib/gcache.h +#usr/include/glib-2.0/glib/gbytes.h +#usr/include/glib-2.0/glib/gcharset.h #usr/include/glib-2.0/glib/gchecksum.h -#usr/include/glib-2.0/glib/gcompletion.h #usr/include/glib-2.0/glib/gconvert.h #usr/include/glib-2.0/glib/gdataset.h #usr/include/glib-2.0/glib/gdate.h +#usr/include/glib-2.0/glib/gdatetime.h #usr/include/glib-2.0/glib/gdir.h +#usr/include/glib-2.0/glib/genviron.h #usr/include/glib-2.0/glib/gerror.h #usr/include/glib-2.0/glib/gfileutils.h +#usr/include/glib-2.0/glib/ggettext.h #usr/include/glib-2.0/glib/ghash.h +#usr/include/glib-2.0/glib/ghmac.h #usr/include/glib-2.0/glib/ghook.h #usr/include/glib-2.0/glib/ghostutils.h #usr/include/glib-2.0/glib/gi18n-lib.h @@ -124,7 +216,6 @@ #usr/include/glib-2.0/glib/gqueue.h #usr/include/glib-2.0/glib/grand.h #usr/include/glib-2.0/glib/gregex.h -#usr/include/glib-2.0/glib/grel.h #usr/include/glib-2.0/glib/gscanner.h #usr/include/glib-2.0/glib/gsequence.h #usr/include/glib-2.0/glib/gshell.h @@ -134,21 +225,30 @@ #usr/include/glib-2.0/glib/gstdio.h #usr/include/glib-2.0/glib/gstrfuncs.h #usr/include/glib-2.0/glib/gstring.h +#usr/include/glib-2.0/glib/gstringchunk.h #usr/include/glib-2.0/glib/gtestutils.h #usr/include/glib-2.0/glib/gthread.h #usr/include/glib-2.0/glib/gthreadpool.h #usr/include/glib-2.0/glib/gtimer.h +#usr/include/glib-2.0/glib/gtimezone.h +#usr/include/glib-2.0/glib/gtrashstack.h #usr/include/glib-2.0/glib/gtree.h #usr/include/glib-2.0/glib/gtypes.h #usr/include/glib-2.0/glib/gunicode.h #usr/include/glib-2.0/glib/gurifuncs.h #usr/include/glib-2.0/glib/gutils.h +#usr/include/glib-2.0/glib/gvariant.h +#usr/include/glib-2.0/glib/gvarianttype.h +#usr/include/glib-2.0/glib/gversion.h +#usr/include/glib-2.0/glib/gversionmacros.h #usr/include/glib-2.0/glib/gwin32.h #usr/include/glib-2.0/gmodule.h #usr/include/glib-2.0/gobject +#usr/include/glib-2.0/gobject/gbinding.h #usr/include/glib-2.0/gobject/gboxed.h #usr/include/glib-2.0/gobject/gclosure.h #usr/include/glib-2.0/gobject/genums.h +#usr/include/glib-2.0/gobject/glib-types.h #usr/include/glib-2.0/gobject/gmarshal.h #usr/include/glib-2.0/gobject/gobject.h #usr/include/glib-2.0/gobject/gobjectnotifyqueue.c @@ -163,31 +263,57 @@ #usr/include/glib-2.0/gobject/gvaluearray.h #usr/include/glib-2.0/gobject/gvaluecollector.h #usr/include/glib-2.0/gobject/gvaluetypes.h +#usr/lib/gdbus-2.0 +#usr/lib/gdbus-2.0/codegen +#usr/lib/gdbus-2.0/codegen/__init__.py +#usr/lib/gdbus-2.0/codegen/__init__.pyc +#usr/lib/gdbus-2.0/codegen/__init__.pyo +#usr/lib/gdbus-2.0/codegen/codegen.py +#usr/lib/gdbus-2.0/codegen/codegen.pyc +#usr/lib/gdbus-2.0/codegen/codegen.pyo +#usr/lib/gdbus-2.0/codegen/codegen_docbook.py +#usr/lib/gdbus-2.0/codegen/codegen_docbook.pyc +#usr/lib/gdbus-2.0/codegen/codegen_docbook.pyo +#usr/lib/gdbus-2.0/codegen/codegen_main.py +#usr/lib/gdbus-2.0/codegen/codegen_main.pyc +#usr/lib/gdbus-2.0/codegen/codegen_main.pyo +#usr/lib/gdbus-2.0/codegen/config.py +#usr/lib/gdbus-2.0/codegen/config.pyc +#usr/lib/gdbus-2.0/codegen/config.pyo +#usr/lib/gdbus-2.0/codegen/dbustypes.py +#usr/lib/gdbus-2.0/codegen/dbustypes.pyc +#usr/lib/gdbus-2.0/codegen/dbustypes.pyo +#usr/lib/gdbus-2.0/codegen/parser.py +#usr/lib/gdbus-2.0/codegen/parser.pyc +#usr/lib/gdbus-2.0/codegen/parser.pyo +#usr/lib/gdbus-2.0/codegen/utils.py +#usr/lib/gdbus-2.0/codegen/utils.pyc +#usr/lib/gdbus-2.0/codegen/utils.pyo #usr/lib/gio #usr/lib/gio/modules #usr/lib/glib-2.0 #usr/lib/glib-2.0/include #usr/lib/glib-2.0/include/glibconfig.h #usr/lib/libgio-2.0.la -usr/lib/libgio-2.0.so +#usr/lib/libgio-2.0.so usr/lib/libgio-2.0.so.0 -usr/lib/libgio-2.0.so.0.2200.2 +usr/lib/libgio-2.0.so.0.3200.3 #usr/lib/libglib-2.0.la -usr/lib/libglib-2.0.so +#usr/lib/libglib-2.0.so usr/lib/libglib-2.0.so.0 -usr/lib/libglib-2.0.so.0.2200.2 +usr/lib/libglib-2.0.so.0.3200.3 #usr/lib/libgmodule-2.0.la -usr/lib/libgmodule-2.0.so +#usr/lib/libgmodule-2.0.so usr/lib/libgmodule-2.0.so.0 -usr/lib/libgmodule-2.0.so.0.2200.2 +usr/lib/libgmodule-2.0.so.0.3200.3 #usr/lib/libgobject-2.0.la -usr/lib/libgobject-2.0.so +#usr/lib/libgobject-2.0.so usr/lib/libgobject-2.0.so.0 -usr/lib/libgobject-2.0.so.0.2200.2 +usr/lib/libgobject-2.0.so.0.3200.3 #usr/lib/libgthread-2.0.la -usr/lib/libgthread-2.0.so +#usr/lib/libgthread-2.0.so usr/lib/libgthread-2.0.so.0 -usr/lib/libgthread-2.0.so.0.2200.2 +usr/lib/libgthread-2.0.so.0.3200.3 #usr/lib/pkgconfig/gio-2.0.pc #usr/lib/pkgconfig/gio-unix-2.0.pc #usr/lib/pkgconfig/glib-2.0.pc @@ -198,31 +324,63 @@ usr/lib/libgthread-2.0.so.0.2200.2 #usr/lib/pkgconfig/gthread-2.0.pc #usr/share/aclocal/glib-2.0.m4 #usr/share/aclocal/glib-gettext.m4 +#usr/share/aclocal/gsettings.m4 #usr/share/gdb #usr/share/gdb/auto-load -usr/share/gdb/auto-load/libglib-2.0.so.0.2200.2-gdb.py -usr/share/gdb/auto-load/libgobject-2.0.so.0.2200.2-gdb.py +#usr/share/gdb/auto-load/libglib-2.0.so.0.3200.3-gdb.py +#usr/share/gdb/auto-load/libgobject-2.0.so.0.3200.3-gdb.py #usr/share/glib-2.0 #usr/share/glib-2.0/gdb -usr/share/glib-2.0/gdb/glib.py -usr/share/glib-2.0/gdb/gobject.py +#usr/share/glib-2.0/gdb/glib.py +#usr/share/glib-2.0/gdb/gobject.py #usr/share/glib-2.0/gettext #usr/share/glib-2.0/gettext/mkinstalldirs #usr/share/glib-2.0/gettext/po #usr/share/glib-2.0/gettext/po/Makefile.in.in +#usr/share/glib-2.0/schemas +#usr/share/glib-2.0/schemas/gschema.dtd #usr/share/gtk-doc/html/gio +#usr/share/gtk-doc/html/gio/ExampleAnimal.html +#usr/share/gtk-doc/html/gio/ExampleCat.html +#usr/share/gtk-doc/html/gio/ExampleObject.html +#usr/share/gtk-doc/html/gio/ExampleObjectManagerClient.html +#usr/share/gtk-doc/html/gio/GAction.html +#usr/share/gtk-doc/html/gio/GActionGroup.html +#usr/share/gtk-doc/html/gio/GActionMap.html #usr/share/gtk-doc/html/gio/GAppInfo.html +#usr/share/gtk-doc/html/gio/GApplication.html +#usr/share/gtk-doc/html/gio/GApplicationCommandLine.html #usr/share/gtk-doc/html/gio/GAsyncInitable.html #usr/share/gtk-doc/html/gio/GAsyncResult.html #usr/share/gtk-doc/html/gio/GBufferedInputStream.html #usr/share/gtk-doc/html/gio/GBufferedOutputStream.html #usr/share/gtk-doc/html/gio/GCancellable.html +#usr/share/gtk-doc/html/gio/GCharsetConverter.html +#usr/share/gtk-doc/html/gio/GConverter.html +#usr/share/gtk-doc/html/gio/GCredentials.html +#usr/share/gtk-doc/html/gio/GDBusActionGroup.html +#usr/share/gtk-doc/html/gio/GDBusAuthObserver.html +#usr/share/gtk-doc/html/gio/GDBusConnection.html +#usr/share/gtk-doc/html/gio/GDBusInterface.html +#usr/share/gtk-doc/html/gio/GDBusInterfaceSkeleton.html +#usr/share/gtk-doc/html/gio/GDBusMenuModel.html +#usr/share/gtk-doc/html/gio/GDBusMessage.html +#usr/share/gtk-doc/html/gio/GDBusMethodInvocation.html +#usr/share/gtk-doc/html/gio/GDBusObject.html +#usr/share/gtk-doc/html/gio/GDBusObjectManager.html +#usr/share/gtk-doc/html/gio/GDBusObjectManagerClient.html +#usr/share/gtk-doc/html/gio/GDBusObjectManagerServer.html +#usr/share/gtk-doc/html/gio/GDBusObjectProxy.html +#usr/share/gtk-doc/html/gio/GDBusObjectSkeleton.html +#usr/share/gtk-doc/html/gio/GDBusProxy.html +#usr/share/gtk-doc/html/gio/GDBusServer.html #usr/share/gtk-doc/html/gio/GDataInputStream.html #usr/share/gtk-doc/html/gio/GDataOutputStream.html #usr/share/gtk-doc/html/gio/GDrive.html #usr/share/gtk-doc/html/gio/GEmblem.html #usr/share/gtk-doc/html/gio/GEmblemedIcon.html #usr/share/gtk-doc/html/gio/GFile.html +#usr/share/gtk-doc/html/gio/GFileDescriptorBased.html #usr/share/gtk-doc/html/gio/GFileEnumerator.html #usr/share/gtk-doc/html/gio/GFileIOStream.html #usr/share/gtk-doc/html/gio/GFileIcon.html @@ -243,14 +401,29 @@ usr/share/glib-2.0/gdb/gobject.py #usr/share/gtk-doc/html/gio/GLoadableIcon.html #usr/share/gtk-doc/html/gio/GMemoryInputStream.html #usr/share/gtk-doc/html/gio/GMemoryOutputStream.html +#usr/share/gtk-doc/html/gio/GMenu.html +#usr/share/gtk-doc/html/gio/GMenuModel.html #usr/share/gtk-doc/html/gio/GMount.html #usr/share/gtk-doc/html/gio/GMountOperation.html #usr/share/gtk-doc/html/gio/GNetworkAddress.html +#usr/share/gtk-doc/html/gio/GNetworkMonitor.html #usr/share/gtk-doc/html/gio/GNetworkService.html #usr/share/gtk-doc/html/gio/GOutputStream.html +#usr/share/gtk-doc/html/gio/GPermission.html +#usr/share/gtk-doc/html/gio/GPollableInputStream.html +#usr/share/gtk-doc/html/gio/GPollableOutputStream.html +#usr/share/gtk-doc/html/gio/GProxy.html +#usr/share/gtk-doc/html/gio/GProxyAddress.html +#usr/share/gtk-doc/html/gio/GProxyResolver.html +#usr/share/gtk-doc/html/gio/GRemoteActionGroup.html #usr/share/gtk-doc/html/gio/GResolver.html #usr/share/gtk-doc/html/gio/GSeekable.html +#usr/share/gtk-doc/html/gio/GSettings.html +#usr/share/gtk-doc/html/gio/GSettingsBackend.html +#usr/share/gtk-doc/html/gio/GSimpleAction.html +#usr/share/gtk-doc/html/gio/GSimpleActionGroup.html #usr/share/gtk-doc/html/gio/GSimpleAsyncResult.html +#usr/share/gtk-doc/html/gio/GSimplePermission.html #usr/share/gtk-doc/html/gio/GSocket.html #usr/share/gtk-doc/html/gio/GSocketAddress.html #usr/share/gtk-doc/html/gio/GSocketClient.html @@ -259,8 +432,23 @@ usr/share/glib-2.0/gdb/gobject.py #usr/share/gtk-doc/html/gio/GSocketControlMessage.html #usr/share/gtk-doc/html/gio/GSocketListener.html #usr/share/gtk-doc/html/gio/GSocketService.html +#usr/share/gtk-doc/html/gio/GSrvTarget.html +#usr/share/gtk-doc/html/gio/GTcpConnection.html +#usr/share/gtk-doc/html/gio/GTcpWrapperConnection.html #usr/share/gtk-doc/html/gio/GThemedIcon.html #usr/share/gtk-doc/html/gio/GThreadedSocketService.html +#usr/share/gtk-doc/html/gio/GTlsBackend.html +#usr/share/gtk-doc/html/gio/GTlsCertificate.html +#usr/share/gtk-doc/html/gio/GTlsClientConnection.html +#usr/share/gtk-doc/html/gio/GTlsConnection.html +#usr/share/gtk-doc/html/gio/GTlsDatabase.html +#usr/share/gtk-doc/html/gio/GTlsFileDatabase.html +#usr/share/gtk-doc/html/gio/GTlsInteraction.html +#usr/share/gtk-doc/html/gio/GTlsPassword.html +#usr/share/gtk-doc/html/gio/GTlsServerConnection.html +#usr/share/gtk-doc/html/gio/GUnixConnection.html +#usr/share/gtk-doc/html/gio/GUnixCredentialsMessage.html +#usr/share/gtk-doc/html/gio/GUnixFDList.html #usr/share/gtk-doc/html/gio/GUnixFDMessage.html #usr/share/gtk-doc/html/gio/GUnixInputStream.html #usr/share/gtk-doc/html/gio/GUnixOutputStream.html @@ -268,55 +456,129 @@ usr/share/glib-2.0/gdb/gobject.py #usr/share/gtk-doc/html/gio/GVfs.html #usr/share/gtk-doc/html/gio/GVolume.html #usr/share/gtk-doc/html/gio/GVolumeMonitor.html +#usr/share/gtk-doc/html/gio/GZlibCompressor.html +#usr/share/gtk-doc/html/gio/GZlibDecompressor.html +#usr/share/gtk-doc/html/gio/annotation-glossary.html +#usr/share/gtk-doc/html/gio/api-index-2-18.html +#usr/share/gtk-doc/html/gio/api-index-2-20.html +#usr/share/gtk-doc/html/gio/api-index-2-22.html +#usr/share/gtk-doc/html/gio/api-index-2-24.html +#usr/share/gtk-doc/html/gio/api-index-2-26.html +#usr/share/gtk-doc/html/gio/api-index-2-28.html +#usr/share/gtk-doc/html/gio/api-index-2-30.html +#usr/share/gtk-doc/html/gio/api-index-2-32.html +#usr/share/gtk-doc/html/gio/api-index-deprecated.html +#usr/share/gtk-doc/html/gio/api-index-full.html +#usr/share/gtk-doc/html/gio/application.html #usr/share/gtk-doc/html/gio/async.html #usr/share/gtk-doc/html/gio/ch01.html #usr/share/gtk-doc/html/gio/ch02.html #usr/share/gtk-doc/html/gio/ch03.html -#usr/share/gtk-doc/html/gio/ch18.html -#usr/share/gtk-doc/html/gio/ch19.html -#usr/share/gtk-doc/html/gio/ch19s02.html -#usr/share/gtk-doc/html/gio/ch19s03.html +#usr/share/gtk-doc/html/gio/ch27.html +#usr/share/gtk-doc/html/gio/ch28.html +#usr/share/gtk-doc/html/gio/ch28s02.html +#usr/share/gtk-doc/html/gio/ch28s03.html +#usr/share/gtk-doc/html/gio/ch29.html +#usr/share/gtk-doc/html/gio/ch29s02.html +#usr/share/gtk-doc/html/gio/ch29s03.html +#usr/share/gtk-doc/html/gio/ch29s04.html +#usr/share/gtk-doc/html/gio/ch29s05.html +#usr/share/gtk-doc/html/gio/ch29s06.html +#usr/share/gtk-doc/html/gio/ch29s07.html +#usr/share/gtk-doc/html/gio/ch30.html +#usr/share/gtk-doc/html/gio/ch30s02.html +#usr/share/gtk-doc/html/gio/ch30s03.html +#usr/share/gtk-doc/html/gio/ch30s04.html +#usr/share/gtk-doc/html/gio/ch30s05.html +#usr/share/gtk-doc/html/gio/conversion.html #usr/share/gtk-doc/html/gio/extending-gio.html #usr/share/gtk-doc/html/gio/extending.html #usr/share/gtk-doc/html/gio/failable_initialization.html #usr/share/gtk-doc/html/gio/file_mon.html #usr/share/gtk-doc/html/gio/file_ops.html +#usr/share/gtk-doc/html/gio/gdbus-codegen.html +#usr/share/gtk-doc/html/gio/gdbus-convenience.html +#usr/share/gtk-doc/html/gio/gdbus-lowlevel.html +#usr/share/gtk-doc/html/gio/gdbus-org.gtk.GDBus.Example.ObjectManager.Animal.html +#usr/share/gtk-doc/html/gio/gdbus-org.gtk.GDBus.Example.ObjectManager.Cat.html +#usr/share/gtk-doc/html/gio/gdbus.html +#usr/share/gtk-doc/html/gio/gio-D-Bus-Addresses.html +#usr/share/gtk-doc/html/gio/gio-D-Bus-Introspection-Data.html +#usr/share/gtk-doc/html/gio/gio-D-Bus-Utilities.html #usr/share/gtk-doc/html/gio/gio-Desktop-file-based-GAppInfo.html #usr/share/gtk-doc/html/gio/gio-Extension-Points.html +#usr/share/gtk-doc/html/gio/gio-GActionGroup-exporter.html #usr/share/gtk-doc/html/gio/gio-GContentType.html +#usr/share/gtk-doc/html/gio/gio-GConverterInputstream.html +#usr/share/gtk-doc/html/gio/gio-GConverterOutputstream.html +#usr/share/gtk-doc/html/gio/gio-GDBusError.html #usr/share/gtk-doc/html/gio/gio-GFileAttribute.html #usr/share/gtk-doc/html/gio/gio-GIOError.html #usr/share/gtk-doc/html/gio/gio-GIOScheduler.html -#usr/share/gtk-doc/html/gio/gio-GSrvTarget.html +#usr/share/gtk-doc/html/gio/gio-GInetAddressMask.html +#usr/share/gtk-doc/html/gio/gio-GMenuModel-exporter.html +#usr/share/gtk-doc/html/gio/gio-GResource.html +#usr/share/gtk-doc/html/gio/gio-GSettingsSchema-GSettingsSchemaSource.html +#usr/share/gtk-doc/html/gio/gio-GWin32InputStream.html +#usr/share/gtk-doc/html/gio/gio-GWin32OutputStream.html +#usr/share/gtk-doc/html/gio/gio-Owning-Bus-Names.html +#usr/share/gtk-doc/html/gio/gio-TLS-Overview.html #usr/share/gtk-doc/html/gio/gio-Unix-Mounts.html +#usr/share/gtk-doc/html/gio/gio-Watching-Bus-Names.html #usr/share/gtk-doc/html/gio/gio-hierarchy.html -#usr/share/gtk-doc/html/gio/gio.devhelp +#usr/share/gtk-doc/html/gio/gio-querymodules.html #usr/share/gtk-doc/html/gio/gio.devhelp2 +#usr/share/gtk-doc/html/gio/glib-compile-resources.html +#usr/share/gtk-doc/html/gio/glib-compile-schemas.html +#usr/share/gtk-doc/html/gio/gresource-tool.html +#usr/share/gtk-doc/html/gio/gsettings-tool.html #usr/share/gtk-doc/html/gio/gvfs-overview.png #usr/share/gtk-doc/html/gio/highlevel-socket.html #usr/share/gtk-doc/html/gio/home.png #usr/share/gtk-doc/html/gio/icons.html #usr/share/gtk-doc/html/gio/index.html #usr/share/gtk-doc/html/gio/index.sgml -#usr/share/gtk-doc/html/gio/ix01.html -#usr/share/gtk-doc/html/gio/ix02.html -#usr/share/gtk-doc/html/gio/ix03.html -#usr/share/gtk-doc/html/gio/ix04.html -#usr/share/gtk-doc/html/gio/ix05.html #usr/share/gtk-doc/html/gio/left.png +#usr/share/gtk-doc/html/gio/menu-example.png +#usr/share/gtk-doc/html/gio/menu-model.png #usr/share/gtk-doc/html/gio/migrating.html #usr/share/gtk-doc/html/gio/networking.html +#usr/share/gtk-doc/html/gio/permissions.html #usr/share/gtk-doc/html/gio/pt01.html #usr/share/gtk-doc/html/gio/pt02.html #usr/share/gtk-doc/html/gio/resolver.html +#usr/share/gtk-doc/html/gio/resources.html #usr/share/gtk-doc/html/gio/right.png +#usr/share/gtk-doc/html/gio/settings.html #usr/share/gtk-doc/html/gio/streaming.html #usr/share/gtk-doc/html/gio/style.css +#usr/share/gtk-doc/html/gio/tls.html +#usr/share/gtk-doc/html/gio/tools.html #usr/share/gtk-doc/html/gio/types.html #usr/share/gtk-doc/html/gio/up.png #usr/share/gtk-doc/html/gio/utils.html #usr/share/gtk-doc/html/gio/volume_mon.html #usr/share/gtk-doc/html/glib +#usr/share/gtk-doc/html/glib/annotation-glossary.html +#usr/share/gtk-doc/html/glib/api-index-2-10.html +#usr/share/gtk-doc/html/glib/api-index-2-12.html +#usr/share/gtk-doc/html/glib/api-index-2-14.html +#usr/share/gtk-doc/html/glib/api-index-2-16.html +#usr/share/gtk-doc/html/glib/api-index-2-18.html +#usr/share/gtk-doc/html/glib/api-index-2-2.html +#usr/share/gtk-doc/html/glib/api-index-2-20.html +#usr/share/gtk-doc/html/glib/api-index-2-22.html +#usr/share/gtk-doc/html/glib/api-index-2-24.html +#usr/share/gtk-doc/html/glib/api-index-2-26.html +#usr/share/gtk-doc/html/glib/api-index-2-28.html +#usr/share/gtk-doc/html/glib/api-index-2-30.html +#usr/share/gtk-doc/html/glib/api-index-2-32.html +#usr/share/gtk-doc/html/glib/api-index-2-4.html +#usr/share/gtk-doc/html/glib/api-index-2-6.html +#usr/share/gtk-doc/html/glib/api-index-2-8.html +#usr/share/gtk-doc/html/glib/api-index-deprecated.html +#usr/share/gtk-doc/html/glib/api-index-full.html +#usr/share/gtk-doc/html/glib/deprecated.html #usr/share/gtk-doc/html/glib/file-name-encodings.png #usr/share/gtk-doc/html/glib/glib-Arrays.html #usr/share/gtk-doc/html/glib/glib-Asynchronous-Queues.html @@ -332,13 +594,19 @@ usr/share/glib-2.0/gdb/gobject.py #usr/share/gtk-doc/html/glib/glib-Character-Set-Conversion.html #usr/share/gtk-doc/html/glib/glib-Commandline-option-parser.html #usr/share/gtk-doc/html/glib/glib-Data-Checksums.html +#usr/share/gtk-doc/html/glib/glib-Data-HMACs.html #usr/share/gtk-doc/html/glib/glib-Datasets.html #usr/share/gtk-doc/html/glib/glib-Date-and-Time-Functions.html +#usr/share/gtk-doc/html/glib/glib-Deprecated-Thread-APIs.html #usr/share/gtk-doc/html/glib/glib-Double-ended-Queues.html #usr/share/gtk-doc/html/glib/glib-Doubly-Linked-Lists.html #usr/share/gtk-doc/html/glib/glib-Dynamic-Loading-of-Modules.html #usr/share/gtk-doc/html/glib/glib-Error-Reporting.html #usr/share/gtk-doc/html/glib/glib-File-Utilities.html +#usr/share/gtk-doc/html/glib/glib-GDateTime.html +#usr/share/gtk-doc/html/glib/glib-GTimeZone.html +#usr/share/gtk-doc/html/glib/glib-GVariant.html +#usr/share/gtk-doc/html/glib/glib-GVariantType.html #usr/share/gtk-doc/html/glib/glib-Glob-style-pattern-matching.html #usr/share/gtk-doc/html/glib/glib-Hash-Tables.html #usr/share/gtk-doc/html/glib/glib-Hook-Functions.html @@ -348,10 +616,7 @@ usr/share/glib-2.0/gdb/gobject.py #usr/share/gtk-doc/html/glib/glib-Key-value-file-parser.html #usr/share/gtk-doc/html/glib/glib-Keyed-Data-Lists.html #usr/share/gtk-doc/html/glib/glib-Lexical-Scanner.html -#usr/share/gtk-doc/html/glib/glib-Limits-of-Basic-Types.html #usr/share/gtk-doc/html/glib/glib-Memory-Allocation.html -#usr/share/gtk-doc/html/glib/glib-Memory-Allocators.html -#usr/share/gtk-doc/html/glib/glib-Memory-Chunks.html #usr/share/gtk-doc/html/glib/glib-Memory-Slices.html #usr/share/gtk-doc/html/glib/glib-Message-Logging.html #usr/share/gtk-doc/html/glib/glib-Miscellaneous-Macros.html @@ -379,6 +644,7 @@ usr/share/glib-2.0/gdb/gobject.py #usr/share/gtk-doc/html/glib/glib-Timers.html #usr/share/gtk-doc/html/glib/glib-Trash-Stacks.html #usr/share/gtk-doc/html/glib/glib-Type-Conversion-Macros.html +#usr/share/gtk-doc/html/glib/glib-UNIX-specific-utilities-and-integration.html #usr/share/gtk-doc/html/glib/glib-URI-Functions.html #usr/share/gtk-doc/html/glib/glib-Unicode-Manipulation.html #usr/share/gtk-doc/html/glib/glib-Version-Information.html @@ -396,27 +662,15 @@ usr/share/glib-2.0/gdb/gobject.py #usr/share/gtk-doc/html/glib/glib-resources.html #usr/share/gtk-doc/html/glib/glib-running.html #usr/share/gtk-doc/html/glib/glib-utilities.html -#usr/share/gtk-doc/html/glib/glib.devhelp #usr/share/gtk-doc/html/glib/glib.devhelp2 #usr/share/gtk-doc/html/glib/glib.html #usr/share/gtk-doc/html/glib/gtester-report.html #usr/share/gtk-doc/html/glib/gtester.html +#usr/share/gtk-doc/html/glib/gvariant-format-strings.html +#usr/share/gtk-doc/html/glib/gvariant-text.html #usr/share/gtk-doc/html/glib/home.png #usr/share/gtk-doc/html/glib/index.html #usr/share/gtk-doc/html/glib/index.sgml -#usr/share/gtk-doc/html/glib/ix01.html -#usr/share/gtk-doc/html/glib/ix02.html -#usr/share/gtk-doc/html/glib/ix03.html -#usr/share/gtk-doc/html/glib/ix04.html -#usr/share/gtk-doc/html/glib/ix05.html -#usr/share/gtk-doc/html/glib/ix06.html -#usr/share/gtk-doc/html/glib/ix07.html -#usr/share/gtk-doc/html/glib/ix08.html -#usr/share/gtk-doc/html/glib/ix09.html -#usr/share/gtk-doc/html/glib/ix10.html -#usr/share/gtk-doc/html/glib/ix11.html -#usr/share/gtk-doc/html/glib/ix12.html -#usr/share/gtk-doc/html/glib/ix13.html #usr/share/gtk-doc/html/glib/left.png #usr/share/gtk-doc/html/glib/mainloop-states.gif #usr/share/gtk-doc/html/glib/right.png @@ -424,8 +678,26 @@ usr/share/glib-2.0/gdb/gobject.py #usr/share/gtk-doc/html/glib/tools.html #usr/share/gtk-doc/html/glib/up.png #usr/share/gtk-doc/html/gobject +#usr/share/gtk-doc/html/gobject/GBinding.html #usr/share/gtk-doc/html/gobject/GTypeModule.html #usr/share/gtk-doc/html/gobject/GTypePlugin.html +#usr/share/gtk-doc/html/gobject/annotation-glossary.html +#usr/share/gtk-doc/html/gobject/api-index-2-10.html +#usr/share/gtk-doc/html/gobject/api-index-2-12.html +#usr/share/gtk-doc/html/gobject/api-index-2-14.html +#usr/share/gtk-doc/html/gobject/api-index-2-18.html +#usr/share/gtk-doc/html/gobject/api-index-2-2.html +#usr/share/gtk-doc/html/gobject/api-index-2-22.html +#usr/share/gtk-doc/html/gobject/api-index-2-24.html +#usr/share/gtk-doc/html/gobject/api-index-2-26.html +#usr/share/gtk-doc/html/gobject/api-index-2-28.html +#usr/share/gtk-doc/html/gobject/api-index-2-30.html +#usr/share/gtk-doc/html/gobject/api-index-2-32.html +#usr/share/gtk-doc/html/gobject/api-index-2-4.html +#usr/share/gtk-doc/html/gobject/api-index-2-6.html +#usr/share/gtk-doc/html/gobject/api-index-2-8.html +#usr/share/gtk-doc/html/gobject/api-index-deprecated.html +#usr/share/gtk-doc/html/gobject/api-index-full.html #usr/share/gtk-doc/html/gobject/ch01s02.html #usr/share/gtk-doc/html/gobject/ch06s03.html #usr/share/gtk-doc/html/gobject/chapter-gobject.html @@ -449,7 +721,6 @@ usr/share/glib-2.0/gdb/gobject.py #usr/share/gtk-doc/html/gobject/gobject-memory.html #usr/share/gtk-doc/html/gobject/gobject-properties.html #usr/share/gtk-doc/html/gobject/gobject-query.html -#usr/share/gtk-doc/html/gobject/gobject.devhelp #usr/share/gtk-doc/html/gobject/gobject.devhelp2 #usr/share/gtk-doc/html/gobject/gtype-conventions.html #usr/share/gtk-doc/html/gobject/gtype-instantiable-classed.html @@ -468,17 +739,6 @@ usr/share/glib-2.0/gdb/gobject.py #usr/share/gtk-doc/html/gobject/howto-signals.html #usr/share/gtk-doc/html/gobject/index.html #usr/share/gtk-doc/html/gobject/index.sgml -#usr/share/gtk-doc/html/gobject/ix01.html -#usr/share/gtk-doc/html/gobject/ix02.html -#usr/share/gtk-doc/html/gobject/ix03.html -#usr/share/gtk-doc/html/gobject/ix04.html -#usr/share/gtk-doc/html/gobject/ix05.html -#usr/share/gtk-doc/html/gobject/ix06.html -#usr/share/gtk-doc/html/gobject/ix07.html -#usr/share/gtk-doc/html/gobject/ix08.html -#usr/share/gtk-doc/html/gobject/ix09.html -#usr/share/gtk-doc/html/gobject/ix10.html -#usr/share/gtk-doc/html/gobject/ix11.html #usr/share/gtk-doc/html/gobject/left.png #usr/share/gtk-doc/html/gobject/pr01.html #usr/share/gtk-doc/html/gobject/pt01.html @@ -495,11 +755,17 @@ usr/share/glib-2.0/gdb/gobject.py #usr/share/gtk-doc/html/gobject/tools-refdb.html #usr/share/gtk-doc/html/gobject/tools-vala.html #usr/share/gtk-doc/html/gobject/up.png +#usr/share/locale/af +#usr/share/locale/af/LC_MESSAGES +#usr/share/locale/af/LC_MESSAGES/glib20.mo #usr/share/locale/am #usr/share/locale/am/LC_MESSAGES #usr/share/locale/am/LC_MESSAGES/glib20.mo #usr/share/locale/ar/LC_MESSAGES/glib20.mo #usr/share/locale/as/LC_MESSAGES/glib20.mo +#usr/share/locale/ast +#usr/share/locale/ast/LC_MESSAGES +#usr/share/locale/ast/LC_MESSAGES/glib20.mo #usr/share/locale/az #usr/share/locale/az/LC_MESSAGES #usr/share/locale/az/LC_MESSAGES/glib20.mo @@ -523,8 +789,9 @@ usr/share/glib-2.0/gdb/gobject.py #usr/share/locale/dz/LC_MESSAGES #usr/share/locale/dz/LC_MESSAGES/glib20.mo #usr/share/locale/el/LC_MESSAGES/glib20.mo -#usr/share/locale/en_CA -#usr/share/locale/en_CA/LC_MESSAGES +#usr/share/locale/en@shaw +#usr/share/locale/en@shaw/LC_MESSAGES +#usr/share/locale/en@shaw/LC_MESSAGES/glib20.mo #usr/share/locale/en_CA/LC_MESSAGES/glib20.mo #usr/share/locale/en_GB/LC_MESSAGES/glib20.mo #usr/share/locale/eo @@ -540,8 +807,6 @@ usr/share/glib-2.0/gdb/gobject.py #usr/share/locale/fa/LC_MESSAGES/glib20.mo #usr/share/locale/fi/LC_MESSAGES/glib20.mo #usr/share/locale/fr/LC_MESSAGES/glib20.mo -#usr/share/locale/ga -#usr/share/locale/ga/LC_MESSAGES #usr/share/locale/ga/LC_MESSAGES/glib20.mo #usr/share/locale/gl/LC_MESSAGES/glib20.mo #usr/share/locale/gu/LC_MESSAGES/glib20.mo @@ -555,6 +820,9 @@ usr/share/glib-2.0/gdb/gobject.py #usr/share/locale/it/LC_MESSAGES/glib20.mo #usr/share/locale/ja/LC_MESSAGES/glib20.mo #usr/share/locale/ka/LC_MESSAGES/glib20.mo +#usr/share/locale/kk +#usr/share/locale/kk/LC_MESSAGES +#usr/share/locale/kk/LC_MESSAGES/glib20.mo #usr/share/locale/kn/LC_MESSAGES/glib20.mo #usr/share/locale/ko/LC_MESSAGES/glib20.mo #usr/share/locale/ku/LC_MESSAGES/glib20.mo @@ -574,6 +842,9 @@ usr/share/glib-2.0/gdb/gobject.py #usr/share/locale/mr/LC_MESSAGES/glib20.mo #usr/share/locale/ms/LC_MESSAGES/glib20.mo #usr/share/locale/nb/LC_MESSAGES/glib20.mo +#usr/share/locale/nds +#usr/share/locale/nds/LC_MESSAGES +#usr/share/locale/nds/LC_MESSAGES/glib20.mo #usr/share/locale/ne #usr/share/locale/ne/LC_MESSAGES #usr/share/locale/ne/LC_MESSAGES/glib20.mo @@ -592,8 +863,6 @@ usr/share/glib-2.0/gdb/gobject.py #usr/share/locale/pt_BR/LC_MESSAGES/glib20.mo #usr/share/locale/ro/LC_MESSAGES/glib20.mo #usr/share/locale/ru/LC_MESSAGES/glib20.mo -#usr/share/locale/rw -#usr/share/locale/rw/LC_MESSAGES #usr/share/locale/rw/LC_MESSAGES/glib20.mo #usr/share/locale/si/LC_MESSAGES/glib20.mo #usr/share/locale/sk/LC_MESSAGES/glib20.mo @@ -619,6 +888,9 @@ usr/share/glib-2.0/gdb/gobject.py #usr/share/locale/tt #usr/share/locale/tt/LC_MESSAGES #usr/share/locale/tt/LC_MESSAGES/glib20.mo +#usr/share/locale/ug +#usr/share/locale/ug/LC_MESSAGES +#usr/share/locale/ug/LC_MESSAGES/glib20.mo #usr/share/locale/uk/LC_MESSAGES/glib20.mo #usr/share/locale/vi/LC_MESSAGES/glib20.mo #usr/share/locale/wa/LC_MESSAGES/glib20.mo @@ -633,9 +905,16 @@ usr/share/glib-2.0/gdb/gobject.py #usr/share/locale/zh_HK/LC_MESSAGES #usr/share/locale/zh_HK/LC_MESSAGES/glib20.mo #usr/share/locale/zh_TW/LC_MESSAGES/glib20.mo +#usr/share/man/man1/gdbus-codegen.1 +#usr/share/man/man1/gdbus.1 +#usr/share/man/man1/gio-querymodules.1 +#usr/share/man/man1/glib-compile-resources.1 +#usr/share/man/man1/glib-compile-schemas.1 #usr/share/man/man1/glib-genmarshal.1 #usr/share/man/man1/glib-gettextize.1 #usr/share/man/man1/glib-mkenums.1 #usr/share/man/man1/gobject-query.1 +#usr/share/man/man1/gresource.1 +#usr/share/man/man1/gsettings.1 #usr/share/man/man1/gtester-report.1 #usr/share/man/man1/gtester.1 diff --git a/config/rootfiles/common/gmp b/config/rootfiles/common/gmp index 669d19133..67f557fbb 100644 --- a/config/rootfiles/common/gmp +++ b/config/rootfiles/common/gmp @@ -1,21 +1,21 @@ #usr/include/gmp.h #usr/include/gmpxx.h #usr/include/mp.h -#usr/info/gmp.info -#usr/info/gmp.info-1 -#usr/info/gmp.info-2 #usr/lib/libgmp.a #usr/lib/libgmp.la -usr/lib/libgmp.so -usr/lib/libgmp.so.3 -usr/lib/libgmp.so.3.4.4 +#usr/lib/libgmp.so +usr/lib/libgmp.so.10 +usr/lib/libgmp.so.10.0.5 #usr/lib/libgmpxx.a #usr/lib/libgmpxx.la #usr/lib/libgmpxx.so -#usr/lib/libgmpxx.so.4 -#usr/lib/libgmpxx.so.4.0.4 +usr/lib/libgmpxx.so.4 +usr/lib/libgmpxx.so.4.2.5 #usr/lib/libmp.a #usr/lib/libmp.la #usr/lib/libmp.so -#usr/lib/libmp.so.3 -#usr/lib/libmp.so.3.1.13 +usr/lib/libmp.so.3 +usr/lib/libmp.so.3.1.25 +#usr/share/info/gmp.info +#usr/share/info/gmp.info-1 +#usr/share/info/gmp.info-2 diff --git a/config/rootfiles/common/gmp-compat b/config/rootfiles/common/gmp-compat new file mode 100644 index 000000000..a4b82f25c --- /dev/null +++ b/config/rootfiles/common/gmp-compat @@ -0,0 +1,2 @@ +usr/lib/libgmp.so.3 +usr/lib/libgmp.so.3.5.2 diff --git a/config/rootfiles/common/gnupg b/config/rootfiles/common/gnupg index 616ed05c0..9aecc418a 100644 --- a/config/rootfiles/common/gnupg +++ b/config/rootfiles/common/gnupg @@ -2,18 +2,17 @@ usr/bin/gpg #usr/bin/gpg-zip #usr/bin/gpgsplit #usr/bin/gpgv -#usr/info/gpg.info -#usr/info/gpgv.info #usr/lib/gnupg usr/lib/gnupg/gpgkeys_curl usr/lib/gnupg/gpgkeys_finger usr/lib/gnupg/gpgkeys_hkp usr/lib/gnupg/gpgkeys_ldap -#usr/man/man1/gpg.1 -#usr/man/man1/gpg.ru.1 -#usr/man/man1/gpgv.1 -#usr/man/man7/gnupg.7 #usr/share/gnupg #usr/share/gnupg/FAQ -#usr/share/gnupg/faq.html #usr/share/gnupg/options.skel +#usr/share/info/gnupg1.info +#usr/share/man/man1/gpg-zip.1 +#usr/share/man/man1/gpg.1 +#usr/share/man/man1/gpg.ru.1 +#usr/share/man/man1/gpgv.1 +#usr/share/man/man7/gnupg.7 diff --git a/config/rootfiles/common/grep b/config/rootfiles/common/grep index 5d5db68a1..a00737d4d 100644 --- a/config/rootfiles/common/grep +++ b/config/rootfiles/common/grep @@ -1,7 +1,7 @@ bin/egrep bin/fgrep bin/grep -#usr/info/grep.info -#usr/man/man1/egrep.1 -#usr/man/man1/fgrep.1 -#usr/man/man1/grep.1 +#usr/share/info/grep.info +#usr/share/man/man1/egrep.1 +#usr/share/man/man1/fgrep.1 +#usr/share/man/man1/grep.1 diff --git a/config/rootfiles/common/hddtemp b/config/rootfiles/common/hddtemp deleted file mode 100644 index bc4c8d7f9..000000000 --- a/config/rootfiles/common/hddtemp +++ /dev/null @@ -1,4 +0,0 @@ -#usr/man/man8/hddtemp.8 -usr/sbin/hddtemp -#usr/share/locale/fr/LC_MESSAGES/hddtemp.mo -#usr/share/locale/ru/LC_MESSAGES/hddtemp.mo diff --git a/config/rootfiles/common/i586/acpid b/config/rootfiles/common/i586/acpid new file mode 100644 index 000000000..535e2bdcc --- /dev/null +++ b/config/rootfiles/common/i586/acpid @@ -0,0 +1,17 @@ +etc/acpi +etc/acpi/actions +etc/acpi/actions/power.sh +etc/acpi/events +etc/acpi/events/power +usr/bin/acpi_listen +usr/sbin/acpid +#usr/sbin/kacpimon +#usr/share/doc/acpid +#usr/share/doc/acpid/COPYING +#usr/share/doc/acpid/Changelog +#usr/share/doc/acpid/README +#usr/share/doc/acpid/TESTPLAN +#usr/share/doc/acpid/TODO +#usr/share/man/man8/acpi_listen.8 +#usr/share/man/man8/acpid.8 +#usr/share/man/man8/kacpimon.8 diff --git a/config/rootfiles/common/i586/binutils b/config/rootfiles/common/i586/binutils index 0cd5af915..48f20e919 100644 --- a/config/rootfiles/common/i586/binutils +++ b/config/rootfiles/common/i586/binutils @@ -2,8 +2,10 @@ #usr/bin/ar #usr/bin/as #usr/bin/c++filt +#usr/bin/elfedit #usr/bin/gprof #usr/bin/ld +#usr/bin/ld.bfd #usr/bin/nm #usr/bin/objcopy #usr/bin/objdump @@ -18,14 +20,20 @@ #usr/include/dis-asm.h #usr/include/libiberty.h #usr/include/symcat.h -#usr/info/as.info -#usr/info/bfd.info -#usr/info/binutils.info -#usr/info/configure.info -#usr/info/gprof.info -#usr/info/ld.info -#usr/info/standards.info #usr/lib/ldscripts +#usr/lib/ldscripts/elf32_x86_64.x +#usr/lib/ldscripts/elf32_x86_64.xbn +#usr/lib/ldscripts/elf32_x86_64.xc +#usr/lib/ldscripts/elf32_x86_64.xd +#usr/lib/ldscripts/elf32_x86_64.xdc +#usr/lib/ldscripts/elf32_x86_64.xdw +#usr/lib/ldscripts/elf32_x86_64.xn +#usr/lib/ldscripts/elf32_x86_64.xr +#usr/lib/ldscripts/elf32_x86_64.xs +#usr/lib/ldscripts/elf32_x86_64.xsc +#usr/lib/ldscripts/elf32_x86_64.xsw +#usr/lib/ldscripts/elf32_x86_64.xu +#usr/lib/ldscripts/elf32_x86_64.xw #usr/lib/ldscripts/elf_i386.x #usr/lib/ldscripts/elf_i386.xbn #usr/lib/ldscripts/elf_i386.xc @@ -44,32 +52,38 @@ #usr/lib/ldscripts/i386linux.xn #usr/lib/ldscripts/i386linux.xr #usr/lib/ldscripts/i386linux.xu -#usr/lib/libbfd-2.18.so +usr/lib/libbfd-2.22.so #usr/lib/libbfd.a #usr/lib/libbfd.la #usr/lib/libbfd.so #usr/lib/libiberty.a -#usr/lib/libopcodes-2.18.so +usr/lib/libopcodes-2.22.so #usr/lib/libopcodes.a #usr/lib/libopcodes.la #usr/lib/libopcodes.so -#usr/man -#usr/man/man1 -#usr/man/man1/addr2line.1 -#usr/man/man1/ar.1 -#usr/man/man1/as.1 -#usr/man/man1/c++filt.1 -#usr/man/man1/dlltool.1 -#usr/man/man1/gprof.1 -#usr/man/man1/ld.1 -#usr/man/man1/nlmconv.1 -#usr/man/man1/nm.1 -#usr/man/man1/objcopy.1 -#usr/man/man1/objdump.1 -#usr/man/man1/ranlib.1 -#usr/man/man1/readelf.1 -#usr/man/man1/size.1 -#usr/man/man1/strings.1 -#usr/man/man1/strip.1 -#usr/man/man1/windmc.1 -#usr/man/man1/windres.1 +#usr/share/info/as.info +#usr/share/info/bfd.info +#usr/share/info/binutils.info +#usr/share/info/configure.info +#usr/share/info/gprof.info +#usr/share/info/ld.info +#usr/share/info/standards.info +#usr/share/man/man1/addr2line.1 +#usr/share/man/man1/ar.1 +#usr/share/man/man1/as.1 +#usr/share/man/man1/c++filt.1 +#usr/share/man/man1/dlltool.1 +#usr/share/man/man1/elfedit.1 +#usr/share/man/man1/gprof.1 +#usr/share/man/man1/ld.1 +#usr/share/man/man1/nlmconv.1 +#usr/share/man/man1/nm.1 +#usr/share/man/man1/objcopy.1 +#usr/share/man/man1/objdump.1 +#usr/share/man/man1/ranlib.1 +#usr/share/man/man1/readelf.1 +#usr/share/man/man1/size.1 +#usr/share/man/man1/strings.1 +#usr/share/man/man1/strip.1 +#usr/share/man/man1/windmc.1 +#usr/share/man/man1/windres.1 diff --git a/config/rootfiles/common/i586/gcc b/config/rootfiles/common/i586/gcc index cde9e4f42..622d5cd8c 100644 --- a/config/rootfiles/common/i586/gcc +++ b/config/rootfiles/common/i586/gcc @@ -9,579 +9,784 @@ #usr/bin/i586-pc-linux-gnu-c++ #usr/bin/i586-pc-linux-gnu-g++ #usr/bin/i586-pc-linux-gnu-gcc -#usr/bin/i586-pc-linux-gnu-gcc-4.1.2 +#usr/bin/i586-pc-linux-gnu-gcc-4.4.7 #usr/include/c++ -#usr/include/c++/4.1.2 -#usr/include/c++/4.1.2/algorithm -#usr/include/c++/4.1.2/backward -#usr/include/c++/4.1.2/backward/algo.h -#usr/include/c++/4.1.2/backward/algobase.h -#usr/include/c++/4.1.2/backward/alloc.h -#usr/include/c++/4.1.2/backward/backward_warning.h -#usr/include/c++/4.1.2/backward/bvector.h -#usr/include/c++/4.1.2/backward/complex.h -#usr/include/c++/4.1.2/backward/defalloc.h -#usr/include/c++/4.1.2/backward/deque.h -#usr/include/c++/4.1.2/backward/fstream.h -#usr/include/c++/4.1.2/backward/function.h -#usr/include/c++/4.1.2/backward/hash_map.h -#usr/include/c++/4.1.2/backward/hash_set.h -#usr/include/c++/4.1.2/backward/hashtable.h -#usr/include/c++/4.1.2/backward/heap.h -#usr/include/c++/4.1.2/backward/iomanip.h -#usr/include/c++/4.1.2/backward/iostream.h -#usr/include/c++/4.1.2/backward/istream.h -#usr/include/c++/4.1.2/backward/iterator.h -#usr/include/c++/4.1.2/backward/list.h -#usr/include/c++/4.1.2/backward/map.h -#usr/include/c++/4.1.2/backward/multimap.h -#usr/include/c++/4.1.2/backward/multiset.h -#usr/include/c++/4.1.2/backward/new.h -#usr/include/c++/4.1.2/backward/ostream.h -#usr/include/c++/4.1.2/backward/pair.h -#usr/include/c++/4.1.2/backward/queue.h -#usr/include/c++/4.1.2/backward/rope.h -#usr/include/c++/4.1.2/backward/set.h -#usr/include/c++/4.1.2/backward/slist.h -#usr/include/c++/4.1.2/backward/stack.h -#usr/include/c++/4.1.2/backward/stream.h -#usr/include/c++/4.1.2/backward/streambuf.h -#usr/include/c++/4.1.2/backward/strstream -#usr/include/c++/4.1.2/backward/tempbuf.h -#usr/include/c++/4.1.2/backward/tree.h -#usr/include/c++/4.1.2/backward/vector.h -#usr/include/c++/4.1.2/bits -#usr/include/c++/4.1.2/bits/allocator.h -#usr/include/c++/4.1.2/bits/atomicity.h -#usr/include/c++/4.1.2/bits/basic_ios.h -#usr/include/c++/4.1.2/bits/basic_ios.tcc -#usr/include/c++/4.1.2/bits/basic_string.h -#usr/include/c++/4.1.2/bits/basic_string.tcc -#usr/include/c++/4.1.2/bits/boost_concept_check.h -#usr/include/c++/4.1.2/bits/char_traits.h -#usr/include/c++/4.1.2/bits/cmath.tcc -#usr/include/c++/4.1.2/bits/codecvt.h -#usr/include/c++/4.1.2/bits/concept_check.h -#usr/include/c++/4.1.2/bits/concurrence.h -#usr/include/c++/4.1.2/bits/cpp_type_traits.h -#usr/include/c++/4.1.2/bits/deque.tcc -#usr/include/c++/4.1.2/bits/fstream.tcc -#usr/include/c++/4.1.2/bits/functexcept.h -#usr/include/c++/4.1.2/bits/gslice.h -#usr/include/c++/4.1.2/bits/gslice_array.h -#usr/include/c++/4.1.2/bits/indirect_array.h -#usr/include/c++/4.1.2/bits/ios_base.h -#usr/include/c++/4.1.2/bits/istream.tcc -#usr/include/c++/4.1.2/bits/list.tcc -#usr/include/c++/4.1.2/bits/locale_classes.h -#usr/include/c++/4.1.2/bits/locale_facets.h -#usr/include/c++/4.1.2/bits/locale_facets.tcc -#usr/include/c++/4.1.2/bits/localefwd.h -#usr/include/c++/4.1.2/bits/mask_array.h -#usr/include/c++/4.1.2/bits/ostream.tcc -#usr/include/c++/4.1.2/bits/postypes.h -#usr/include/c++/4.1.2/bits/slice_array.h -#usr/include/c++/4.1.2/bits/sstream.tcc -#usr/include/c++/4.1.2/bits/stl_algo.h -#usr/include/c++/4.1.2/bits/stl_algobase.h -#usr/include/c++/4.1.2/bits/stl_bvector.h -#usr/include/c++/4.1.2/bits/stl_construct.h -#usr/include/c++/4.1.2/bits/stl_deque.h -#usr/include/c++/4.1.2/bits/stl_function.h -#usr/include/c++/4.1.2/bits/stl_heap.h -#usr/include/c++/4.1.2/bits/stl_iterator.h -#usr/include/c++/4.1.2/bits/stl_iterator_base_funcs.h -#usr/include/c++/4.1.2/bits/stl_iterator_base_types.h -#usr/include/c++/4.1.2/bits/stl_list.h -#usr/include/c++/4.1.2/bits/stl_map.h -#usr/include/c++/4.1.2/bits/stl_multimap.h -#usr/include/c++/4.1.2/bits/stl_multiset.h -#usr/include/c++/4.1.2/bits/stl_numeric.h -#usr/include/c++/4.1.2/bits/stl_pair.h -#usr/include/c++/4.1.2/bits/stl_queue.h -#usr/include/c++/4.1.2/bits/stl_raw_storage_iter.h -#usr/include/c++/4.1.2/bits/stl_relops.h -#usr/include/c++/4.1.2/bits/stl_set.h -#usr/include/c++/4.1.2/bits/stl_stack.h -#usr/include/c++/4.1.2/bits/stl_tempbuf.h -#usr/include/c++/4.1.2/bits/stl_tree.h -#usr/include/c++/4.1.2/bits/stl_uninitialized.h -#usr/include/c++/4.1.2/bits/stl_vector.h -#usr/include/c++/4.1.2/bits/stream_iterator.h -#usr/include/c++/4.1.2/bits/streambuf.tcc -#usr/include/c++/4.1.2/bits/streambuf_iterator.h -#usr/include/c++/4.1.2/bits/stringfwd.h -#usr/include/c++/4.1.2/bits/valarray_after.h -#usr/include/c++/4.1.2/bits/valarray_array.h -#usr/include/c++/4.1.2/bits/valarray_array.tcc -#usr/include/c++/4.1.2/bits/valarray_before.h -#usr/include/c++/4.1.2/bits/vector.tcc -#usr/include/c++/4.1.2/bitset -#usr/include/c++/4.1.2/cassert -#usr/include/c++/4.1.2/cctype -#usr/include/c++/4.1.2/cerrno -#usr/include/c++/4.1.2/cfloat -#usr/include/c++/4.1.2/ciso646 -#usr/include/c++/4.1.2/climits -#usr/include/c++/4.1.2/clocale -#usr/include/c++/4.1.2/cmath -#usr/include/c++/4.1.2/complex -#usr/include/c++/4.1.2/csetjmp -#usr/include/c++/4.1.2/csignal -#usr/include/c++/4.1.2/cstdarg -#usr/include/c++/4.1.2/cstddef -#usr/include/c++/4.1.2/cstdio -#usr/include/c++/4.1.2/cstdlib -#usr/include/c++/4.1.2/cstring -#usr/include/c++/4.1.2/ctime -#usr/include/c++/4.1.2/cwchar -#usr/include/c++/4.1.2/cwctype -#usr/include/c++/4.1.2/cxxabi.h -#usr/include/c++/4.1.2/debug -#usr/include/c++/4.1.2/debug/bitset -#usr/include/c++/4.1.2/debug/debug.h -#usr/include/c++/4.1.2/debug/deque -#usr/include/c++/4.1.2/debug/formatter.h -#usr/include/c++/4.1.2/debug/functions.h -#usr/include/c++/4.1.2/debug/hash_map -#usr/include/c++/4.1.2/debug/hash_map.h -#usr/include/c++/4.1.2/debug/hash_multimap.h -#usr/include/c++/4.1.2/debug/hash_multiset.h -#usr/include/c++/4.1.2/debug/hash_set -#usr/include/c++/4.1.2/debug/hash_set.h -#usr/include/c++/4.1.2/debug/list -#usr/include/c++/4.1.2/debug/macros.h -#usr/include/c++/4.1.2/debug/map -#usr/include/c++/4.1.2/debug/map.h -#usr/include/c++/4.1.2/debug/multimap.h -#usr/include/c++/4.1.2/debug/multiset.h -#usr/include/c++/4.1.2/debug/safe_base.h -#usr/include/c++/4.1.2/debug/safe_iterator.h -#usr/include/c++/4.1.2/debug/safe_iterator.tcc -#usr/include/c++/4.1.2/debug/safe_sequence.h -#usr/include/c++/4.1.2/debug/set -#usr/include/c++/4.1.2/debug/set.h -#usr/include/c++/4.1.2/debug/string -#usr/include/c++/4.1.2/debug/vector -#usr/include/c++/4.1.2/deque -#usr/include/c++/4.1.2/exception -#usr/include/c++/4.1.2/exception_defines.h -#usr/include/c++/4.1.2/ext -#usr/include/c++/4.1.2/ext/algorithm -#usr/include/c++/4.1.2/ext/array_allocator.h -#usr/include/c++/4.1.2/ext/bitmap_allocator.h -#usr/include/c++/4.1.2/ext/codecvt_specializations.h -#usr/include/c++/4.1.2/ext/debug_allocator.h -#usr/include/c++/4.1.2/ext/functional -#usr/include/c++/4.1.2/ext/hash_fun.h -#usr/include/c++/4.1.2/ext/hash_map -#usr/include/c++/4.1.2/ext/hash_set -#usr/include/c++/4.1.2/ext/hashtable.h -#usr/include/c++/4.1.2/ext/iterator -#usr/include/c++/4.1.2/ext/malloc_allocator.h -#usr/include/c++/4.1.2/ext/memory -#usr/include/c++/4.1.2/ext/mt_allocator.h -#usr/include/c++/4.1.2/ext/new_allocator.h -#usr/include/c++/4.1.2/ext/numeric -#usr/include/c++/4.1.2/ext/pb_assoc -#usr/include/c++/4.1.2/ext/pb_assoc/assoc_cntnr.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/data_type.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail -#usr/include/c++/4.1.2/ext/pb_assoc/detail/assoc_cntnr_base.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/d_extract_key.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/d_find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/d_insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/extract_key.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_assoc_cntnr/iterators_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_hash_assoc_cntnr -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_hash_assoc_cntnr/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_hash_assoc_cntnr/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_hash_assoc_cntnr/resize_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/node_iteration_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/policy_access_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/r_erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/r_range_iteration_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/range_iteration_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/basic_tree_assoc_cntnr/split_join_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_ -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/bin_search_tree_.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/debug_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/find_iterators.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/iterators_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/node_iterators.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/r_erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/rotate_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/bin_search_tree_/split_join_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_hash_assoc_cntnr -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_hash_assoc_cntnr/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_ -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/cc_ht_map_.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/cmp_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/cond_key_dtor_entry_dealtor.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/constructor_destructor_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/constructor_destructor_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/debug_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/debug_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/debug_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/entry_list_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/erase_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/erase_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/find_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/find_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/insert_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/insert_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/iterators_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/policy_access_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/resize_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/resize_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/resize_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/size_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cc_ht_map_/standard_policies.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/cond_dealtor.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ds_trait_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/eq_fn -#usr/include/c++/4.1.2/ext/pb_assoc/detail/eq_fn/eq_by_less.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/eq_fn/hash_eq_fn.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_hash_assoc_cntnr -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_hash_assoc_cntnr/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_ -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/constructor_destructor_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/constructor_destructor_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/debug_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/debug_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/debug_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/erase_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/erase_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/find_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/find_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/gp_ht_map_.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/insert_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/insert_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/iterator_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/policy_access_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/resize_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/resize_no_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/gp_ht_map_/resize_store_hash_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/direct_mask_range_hashing_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/direct_mod_range_hashing_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/linear_probe_fn_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/mask_based_range_hashing.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/mod_based_range_hashing.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/probe_fn_base.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/quadratic_probe_fn_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/ranged_hash_fn.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_fn/ranged_probe_fn.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/hash_types_traits.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_assoc_cntnr -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_assoc_cntnr/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_assoc_cntnr/policy_access_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_ -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/debug_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/iterators_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/lu_map_.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_map_/policy_access_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_policy -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_policy/counter_lu_metadata_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_policy/counter_lu_policy_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/lu_policy/mtf_lu_policy_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/map_debug_base.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/mapping_level_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ms_category_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ms_trait_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/order_statistics_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_ -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/cond_dtor.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/debug_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/iterators_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/node_iterators.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/ov_tree_map_.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/ov_tree_map_/split_join_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_ -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/debug_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/node.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/rb_tree_.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/rb_tree_map_/split_join_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/resize_policy -#usr/include/c++/4.1.2/ext/pb_assoc/detail/resize_policy/cc_hash_max_collision_resize_trigger_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/resize_policy/hash_exponential_size_policy_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/resize_policy/hash_prime_size_policy_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/resize_policy/hash_standard_resize_policy_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/resize_policy/ht_prime_size_policy_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/resize_policy/size_base.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_ -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/debug_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/node.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/splay_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/splay_tree_.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/splay_tree_/split_join_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/standard_policies.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/standard_sizes.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/tree_assoc_cntnr -#usr/include/c++/4.1.2/ext/pb_assoc/detail/tree_assoc_cntnr/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/tree_policy -#usr/include/c++/4.1.2/ext/pb_assoc/detail/tree_policy/null_node_updator_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/tree_policy/order_statistics_imp.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/type_utils.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist/typelist_append.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist/typelist_apply.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist/typelist_at_index.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist/typelist_contains.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist/typelist_filter.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist/typelist_transform.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/typelist/typelist_typelist_append.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/types_traits.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/unordered_iterator -#usr/include/c++/4.1.2/ext/pb_assoc/detail/unordered_iterator/const_find_iterator.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/unordered_iterator/const_iterator.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/unordered_iterator/find_iterator.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/unordered_iterator/iterator.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/constructor_destructor_and_related.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/erase_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/erase_if_pred.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/find_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/info_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/insert_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/invalidation_guarantee_selector.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/it_value_type_traits.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/iterator.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/iterator_fn_imps.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/ref_pair.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/value_type_adapter.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/detail/value_type_adapter/value_type_traits.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/ds_trait.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/exception.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/hash_policy.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/lu_policy.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/ms_trait.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/tree_policy.hpp -#usr/include/c++/4.1.2/ext/pb_assoc/trivial_iterator_def.hpp -#usr/include/c++/4.1.2/ext/pod_char_traits.h -#usr/include/c++/4.1.2/ext/pool_allocator.h -#usr/include/c++/4.1.2/ext/rb_tree -#usr/include/c++/4.1.2/ext/rc_string_base.h -#usr/include/c++/4.1.2/ext/rope -#usr/include/c++/4.1.2/ext/ropeimpl.h -#usr/include/c++/4.1.2/ext/slist -#usr/include/c++/4.1.2/ext/sso_string_base.h -#usr/include/c++/4.1.2/ext/stdio_filebuf.h -#usr/include/c++/4.1.2/ext/stdio_sync_filebuf.h -#usr/include/c++/4.1.2/ext/typelist.h -#usr/include/c++/4.1.2/ext/vstring.h -#usr/include/c++/4.1.2/ext/vstring.tcc -#usr/include/c++/4.1.2/ext/vstring_fwd.h -#usr/include/c++/4.1.2/ext/vstring_util.h -#usr/include/c++/4.1.2/fstream -#usr/include/c++/4.1.2/functional -#usr/include/c++/4.1.2/i586-pc-linux-gnu -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/atomic_word.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/basic_file.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/c++allocator.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/c++config.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/c++io.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/c++locale.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/cpu_defines.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/ctype_base.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/ctype_inline.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/ctype_noninline.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/cxxabi_tweaks.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/gthr-default.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/gthr-posix.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/gthr-single.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/gthr-tpf.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/gthr.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/messages_members.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/os_defines.h -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/stdc++.h.gch -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/stdc++.h.gch/O0g.gch -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/stdc++.h.gch/O2g.gch -#usr/include/c++/4.1.2/i586-pc-linux-gnu/bits/time_members.h -#usr/include/c++/4.1.2/iomanip -#usr/include/c++/4.1.2/ios -#usr/include/c++/4.1.2/iosfwd -#usr/include/c++/4.1.2/iostream -#usr/include/c++/4.1.2/istream -#usr/include/c++/4.1.2/iterator -#usr/include/c++/4.1.2/limits -#usr/include/c++/4.1.2/list -#usr/include/c++/4.1.2/locale -#usr/include/c++/4.1.2/map -#usr/include/c++/4.1.2/memory -#usr/include/c++/4.1.2/new -#usr/include/c++/4.1.2/numeric -#usr/include/c++/4.1.2/ostream -#usr/include/c++/4.1.2/queue -#usr/include/c++/4.1.2/set -#usr/include/c++/4.1.2/sstream -#usr/include/c++/4.1.2/stack -#usr/include/c++/4.1.2/stdexcept -#usr/include/c++/4.1.2/streambuf -#usr/include/c++/4.1.2/string -#usr/include/c++/4.1.2/tr1 -#usr/include/c++/4.1.2/tr1/array -#usr/include/c++/4.1.2/tr1/bind_iterate.h -#usr/include/c++/4.1.2/tr1/bind_repeat.h -#usr/include/c++/4.1.2/tr1/boost_shared_ptr.h -#usr/include/c++/4.1.2/tr1/functional -#usr/include/c++/4.1.2/tr1/functional_iterate.h -#usr/include/c++/4.1.2/tr1/hashtable -#usr/include/c++/4.1.2/tr1/memory -#usr/include/c++/4.1.2/tr1/mu_iterate.h -#usr/include/c++/4.1.2/tr1/ref_fwd.h -#usr/include/c++/4.1.2/tr1/ref_wrap_iterate.h -#usr/include/c++/4.1.2/tr1/repeat.h -#usr/include/c++/4.1.2/tr1/tuple -#usr/include/c++/4.1.2/tr1/tuple_iterate.h -#usr/include/c++/4.1.2/tr1/type_traits -#usr/include/c++/4.1.2/tr1/type_traits_fwd.h -#usr/include/c++/4.1.2/tr1/unordered_map -#usr/include/c++/4.1.2/tr1/unordered_set -#usr/include/c++/4.1.2/tr1/utility -#usr/include/c++/4.1.2/typeinfo -#usr/include/c++/4.1.2/utility -#usr/include/c++/4.1.2/valarray -#usr/include/c++/4.1.2/vector -#usr/include/mf-runtime.h +#usr/include/c++/4.4.7 +#usr/include/c++/4.4.7/algorithm +#usr/include/c++/4.4.7/array +#usr/include/c++/4.4.7/backward +#usr/include/c++/4.4.7/backward/auto_ptr.h +#usr/include/c++/4.4.7/backward/backward_warning.h +#usr/include/c++/4.4.7/backward/binders.h +#usr/include/c++/4.4.7/backward/hash_fun.h +#usr/include/c++/4.4.7/backward/hash_map +#usr/include/c++/4.4.7/backward/hash_set +#usr/include/c++/4.4.7/backward/hashtable.h +#usr/include/c++/4.4.7/backward/strstream +#usr/include/c++/4.4.7/bits +#usr/include/c++/4.4.7/bits/algorithmfwd.h +#usr/include/c++/4.4.7/bits/allocator.h +#usr/include/c++/4.4.7/bits/atomic_0.h +#usr/include/c++/4.4.7/bits/atomic_2.h +#usr/include/c++/4.4.7/bits/atomicfwd_c.h +#usr/include/c++/4.4.7/bits/atomicfwd_cxx.h +#usr/include/c++/4.4.7/bits/basic_ios.h +#usr/include/c++/4.4.7/bits/basic_ios.tcc +#usr/include/c++/4.4.7/bits/basic_string.h +#usr/include/c++/4.4.7/bits/basic_string.tcc +#usr/include/c++/4.4.7/bits/boost_concept_check.h +#usr/include/c++/4.4.7/bits/char_traits.h +#usr/include/c++/4.4.7/bits/cmath.tcc +#usr/include/c++/4.4.7/bits/codecvt.h +#usr/include/c++/4.4.7/bits/concept_check.h +#usr/include/c++/4.4.7/bits/cpp_type_traits.h +#usr/include/c++/4.4.7/bits/deque.tcc +#usr/include/c++/4.4.7/bits/forward_list.h +#usr/include/c++/4.4.7/bits/forward_list.tcc +#usr/include/c++/4.4.7/bits/fstream.tcc +#usr/include/c++/4.4.7/bits/functexcept.h +#usr/include/c++/4.4.7/bits/functional_hash.h +#usr/include/c++/4.4.7/bits/gslice.h +#usr/include/c++/4.4.7/bits/gslice_array.h +#usr/include/c++/4.4.7/bits/hashtable.h +#usr/include/c++/4.4.7/bits/indirect_array.h +#usr/include/c++/4.4.7/bits/ios_base.h +#usr/include/c++/4.4.7/bits/istream.tcc +#usr/include/c++/4.4.7/bits/list.tcc +#usr/include/c++/4.4.7/bits/locale_classes.h +#usr/include/c++/4.4.7/bits/locale_classes.tcc +#usr/include/c++/4.4.7/bits/locale_facets.h +#usr/include/c++/4.4.7/bits/locale_facets.tcc +#usr/include/c++/4.4.7/bits/locale_facets_nonio.h +#usr/include/c++/4.4.7/bits/locale_facets_nonio.tcc +#usr/include/c++/4.4.7/bits/localefwd.h +#usr/include/c++/4.4.7/bits/mask_array.h +#usr/include/c++/4.4.7/bits/move.h +#usr/include/c++/4.4.7/bits/ostream.tcc +#usr/include/c++/4.4.7/bits/ostream_insert.h +#usr/include/c++/4.4.7/bits/postypes.h +#usr/include/c++/4.4.7/bits/shared_ptr.h +#usr/include/c++/4.4.7/bits/slice_array.h +#usr/include/c++/4.4.7/bits/sstream.tcc +#usr/include/c++/4.4.7/bits/stl_algo.h +#usr/include/c++/4.4.7/bits/stl_algobase.h +#usr/include/c++/4.4.7/bits/stl_bvector.h +#usr/include/c++/4.4.7/bits/stl_construct.h +#usr/include/c++/4.4.7/bits/stl_deque.h +#usr/include/c++/4.4.7/bits/stl_function.h +#usr/include/c++/4.4.7/bits/stl_heap.h +#usr/include/c++/4.4.7/bits/stl_iterator.h +#usr/include/c++/4.4.7/bits/stl_iterator_base_funcs.h +#usr/include/c++/4.4.7/bits/stl_iterator_base_types.h +#usr/include/c++/4.4.7/bits/stl_list.h +#usr/include/c++/4.4.7/bits/stl_map.h +#usr/include/c++/4.4.7/bits/stl_multimap.h +#usr/include/c++/4.4.7/bits/stl_multiset.h +#usr/include/c++/4.4.7/bits/stl_numeric.h +#usr/include/c++/4.4.7/bits/stl_pair.h +#usr/include/c++/4.4.7/bits/stl_queue.h +#usr/include/c++/4.4.7/bits/stl_raw_storage_iter.h +#usr/include/c++/4.4.7/bits/stl_relops.h +#usr/include/c++/4.4.7/bits/stl_set.h +#usr/include/c++/4.4.7/bits/stl_stack.h +#usr/include/c++/4.4.7/bits/stl_tempbuf.h +#usr/include/c++/4.4.7/bits/stl_tree.h +#usr/include/c++/4.4.7/bits/stl_uninitialized.h +#usr/include/c++/4.4.7/bits/stl_vector.h +#usr/include/c++/4.4.7/bits/stream_iterator.h +#usr/include/c++/4.4.7/bits/streambuf.tcc +#usr/include/c++/4.4.7/bits/streambuf_iterator.h +#usr/include/c++/4.4.7/bits/stringfwd.h +#usr/include/c++/4.4.7/bits/unique_ptr.h +#usr/include/c++/4.4.7/bits/valarray_after.h +#usr/include/c++/4.4.7/bits/valarray_array.h +#usr/include/c++/4.4.7/bits/valarray_array.tcc +#usr/include/c++/4.4.7/bits/valarray_before.h +#usr/include/c++/4.4.7/bits/vector.tcc +#usr/include/c++/4.4.7/bitset +#usr/include/c++/4.4.7/c++0x_warning.h +#usr/include/c++/4.4.7/cassert +#usr/include/c++/4.4.7/ccomplex +#usr/include/c++/4.4.7/cctype +#usr/include/c++/4.4.7/cerrno +#usr/include/c++/4.4.7/cfenv +#usr/include/c++/4.4.7/cfloat +#usr/include/c++/4.4.7/chrono +#usr/include/c++/4.4.7/cinttypes +#usr/include/c++/4.4.7/ciso646 +#usr/include/c++/4.4.7/climits +#usr/include/c++/4.4.7/clocale +#usr/include/c++/4.4.7/cmath +#usr/include/c++/4.4.7/complex +#usr/include/c++/4.4.7/complex.h +#usr/include/c++/4.4.7/condition_variable +#usr/include/c++/4.4.7/csetjmp +#usr/include/c++/4.4.7/csignal +#usr/include/c++/4.4.7/cstdarg +#usr/include/c++/4.4.7/cstdatomic +#usr/include/c++/4.4.7/cstdbool +#usr/include/c++/4.4.7/cstddef +#usr/include/c++/4.4.7/cstdint +#usr/include/c++/4.4.7/cstdio +#usr/include/c++/4.4.7/cstdlib +#usr/include/c++/4.4.7/cstring +#usr/include/c++/4.4.7/ctgmath +#usr/include/c++/4.4.7/ctime +#usr/include/c++/4.4.7/cwchar +#usr/include/c++/4.4.7/cwctype +#usr/include/c++/4.4.7/cxxabi-forced.h +#usr/include/c++/4.4.7/cxxabi.h +#usr/include/c++/4.4.7/debug +#usr/include/c++/4.4.7/debug/bitset +#usr/include/c++/4.4.7/debug/debug.h +#usr/include/c++/4.4.7/debug/deque +#usr/include/c++/4.4.7/debug/formatter.h +#usr/include/c++/4.4.7/debug/functions.h +#usr/include/c++/4.4.7/debug/list +#usr/include/c++/4.4.7/debug/macros.h +#usr/include/c++/4.4.7/debug/map +#usr/include/c++/4.4.7/debug/map.h +#usr/include/c++/4.4.7/debug/multimap.h +#usr/include/c++/4.4.7/debug/multiset.h +#usr/include/c++/4.4.7/debug/safe_base.h +#usr/include/c++/4.4.7/debug/safe_iterator.h +#usr/include/c++/4.4.7/debug/safe_iterator.tcc +#usr/include/c++/4.4.7/debug/safe_sequence.h +#usr/include/c++/4.4.7/debug/set +#usr/include/c++/4.4.7/debug/set.h +#usr/include/c++/4.4.7/debug/string +#usr/include/c++/4.4.7/debug/unordered_map +#usr/include/c++/4.4.7/debug/unordered_set +#usr/include/c++/4.4.7/debug/vector +#usr/include/c++/4.4.7/deque +#usr/include/c++/4.4.7/exception +#usr/include/c++/4.4.7/exception_defines.h +#usr/include/c++/4.4.7/exception_ptr.h +#usr/include/c++/4.4.7/ext +#usr/include/c++/4.4.7/ext/algorithm +#usr/include/c++/4.4.7/ext/array_allocator.h +#usr/include/c++/4.4.7/ext/atomicity.h +#usr/include/c++/4.4.7/ext/bitmap_allocator.h +#usr/include/c++/4.4.7/ext/cast.h +#usr/include/c++/4.4.7/ext/codecvt_specializations.h +#usr/include/c++/4.4.7/ext/concurrence.h +#usr/include/c++/4.4.7/ext/debug_allocator.h +#usr/include/c++/4.4.7/ext/enc_filebuf.h +#usr/include/c++/4.4.7/ext/extptr_allocator.h +#usr/include/c++/4.4.7/ext/functional +#usr/include/c++/4.4.7/ext/hash_map +#usr/include/c++/4.4.7/ext/hash_set +#usr/include/c++/4.4.7/ext/iterator +#usr/include/c++/4.4.7/ext/malloc_allocator.h +#usr/include/c++/4.4.7/ext/memory +#usr/include/c++/4.4.7/ext/mt_allocator.h +#usr/include/c++/4.4.7/ext/new_allocator.h +#usr/include/c++/4.4.7/ext/numeric +#usr/include/c++/4.4.7/ext/numeric_traits.h +#usr/include/c++/4.4.7/ext/pb_ds +#usr/include/c++/4.4.7/ext/pb_ds/assoc_container.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail +#usr/include/c++/4.4.7/ext/pb_ds/detail/basic_tree_policy +#usr/include/c++/4.4.7/ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/basic_tree_policy/traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/basic_types.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/bin_search_tree_/traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/const_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/entry_pred.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/resize_policy.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_base_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/standard_policies.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/cond_dealtor.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/container_base_dispatch.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/debug_map_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/eq_fn +#usr/include/c++/4.4.7/ext/pb_ds/detail/eq_fn/eq_by_less.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/standard_policies.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/const_point_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/lu_map_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_policy +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_policy/counter_lu_metadata.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_policy/counter_lu_policy_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_policy/mtf_lu_policy_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/ov_tree_map_/traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pairing_heap_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/child_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/cond_dtor_entry_dealtor.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/head.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/internal_node.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/leaf.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/node_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/node_iterators.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/node_metadata_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/point_iterators.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/priority_queue_base_dispatch.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/node.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rb_tree_map_/traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/node.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/splay_tree_/traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/standard_policies.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_ +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/tree_policy +#usr/include/c++/4.4.7/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/tree_policy/null_node_update_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/tree_trace_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy/null_node_update_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy/sample_trie_e_access_traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy/string_trie_e_access_traits_imp.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/type_utils.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/types_traits.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/unordered_iterator +#usr/include/c++/4.4.7/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/unordered_iterator/iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp +#usr/include/c++/4.4.7/ext/pb_ds/exception.hpp +#usr/include/c++/4.4.7/ext/pb_ds/hash_policy.hpp +#usr/include/c++/4.4.7/ext/pb_ds/list_update_policy.hpp +#usr/include/c++/4.4.7/ext/pb_ds/priority_queue.hpp +#usr/include/c++/4.4.7/ext/pb_ds/tag_and_trait.hpp +#usr/include/c++/4.4.7/ext/pb_ds/tree_policy.hpp +#usr/include/c++/4.4.7/ext/pb_ds/trie_policy.hpp +#usr/include/c++/4.4.7/ext/pod_char_traits.h +#usr/include/c++/4.4.7/ext/pointer.h +#usr/include/c++/4.4.7/ext/pool_allocator.h +#usr/include/c++/4.4.7/ext/rb_tree +#usr/include/c++/4.4.7/ext/rc_string_base.h +#usr/include/c++/4.4.7/ext/rope +#usr/include/c++/4.4.7/ext/ropeimpl.h +#usr/include/c++/4.4.7/ext/slist +#usr/include/c++/4.4.7/ext/sso_string_base.h +#usr/include/c++/4.4.7/ext/stdio_filebuf.h +#usr/include/c++/4.4.7/ext/stdio_sync_filebuf.h +#usr/include/c++/4.4.7/ext/string_conversions.h +#usr/include/c++/4.4.7/ext/throw_allocator.h +#usr/include/c++/4.4.7/ext/type_traits.h +#usr/include/c++/4.4.7/ext/typelist.h +#usr/include/c++/4.4.7/ext/vstring.h +#usr/include/c++/4.4.7/ext/vstring.tcc +#usr/include/c++/4.4.7/ext/vstring_fwd.h +#usr/include/c++/4.4.7/ext/vstring_util.h +#usr/include/c++/4.4.7/fenv.h +#usr/include/c++/4.4.7/forward_list +#usr/include/c++/4.4.7/fstream +#usr/include/c++/4.4.7/functional +#usr/include/c++/4.4.7/i586-pc-linux-gnu +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/atomic_word.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/basic_file.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/c++allocator.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/c++config.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/c++io.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/c++locale.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/cpu_defines.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/ctype_base.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/ctype_inline.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/ctype_noninline.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/cxxabi_tweaks.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/error_constants.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/extc++.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/gthr-default.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/gthr-posix.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/gthr-single.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/gthr-tpf.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/gthr.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/messages_members.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/os_defines.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/stdc++.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/stdtr1c++.h +#usr/include/c++/4.4.7/i586-pc-linux-gnu/bits/time_members.h +#usr/include/c++/4.4.7/initializer_list +#usr/include/c++/4.4.7/iomanip +#usr/include/c++/4.4.7/ios +#usr/include/c++/4.4.7/iosfwd +#usr/include/c++/4.4.7/iostream +#usr/include/c++/4.4.7/istream +#usr/include/c++/4.4.7/iterator +#usr/include/c++/4.4.7/limits +#usr/include/c++/4.4.7/list +#usr/include/c++/4.4.7/locale +#usr/include/c++/4.4.7/map +#usr/include/c++/4.4.7/memory +#usr/include/c++/4.4.7/mutex +#usr/include/c++/4.4.7/new +#usr/include/c++/4.4.7/numeric +#usr/include/c++/4.4.7/ostream +#usr/include/c++/4.4.7/parallel +#usr/include/c++/4.4.7/parallel/algo.h +#usr/include/c++/4.4.7/parallel/algobase.h +#usr/include/c++/4.4.7/parallel/algorithm +#usr/include/c++/4.4.7/parallel/algorithmfwd.h +#usr/include/c++/4.4.7/parallel/balanced_quicksort.h +#usr/include/c++/4.4.7/parallel/base.h +#usr/include/c++/4.4.7/parallel/basic_iterator.h +#usr/include/c++/4.4.7/parallel/checkers.h +#usr/include/c++/4.4.7/parallel/compatibility.h +#usr/include/c++/4.4.7/parallel/compiletime_settings.h +#usr/include/c++/4.4.7/parallel/equally_split.h +#usr/include/c++/4.4.7/parallel/features.h +#usr/include/c++/4.4.7/parallel/find.h +#usr/include/c++/4.4.7/parallel/find_selectors.h +#usr/include/c++/4.4.7/parallel/for_each.h +#usr/include/c++/4.4.7/parallel/for_each_selectors.h +#usr/include/c++/4.4.7/parallel/iterator.h +#usr/include/c++/4.4.7/parallel/list_partition.h +#usr/include/c++/4.4.7/parallel/losertree.h +#usr/include/c++/4.4.7/parallel/merge.h +#usr/include/c++/4.4.7/parallel/multiseq_selection.h +#usr/include/c++/4.4.7/parallel/multiway_merge.h +#usr/include/c++/4.4.7/parallel/multiway_mergesort.h +#usr/include/c++/4.4.7/parallel/numeric +#usr/include/c++/4.4.7/parallel/numericfwd.h +#usr/include/c++/4.4.7/parallel/omp_loop.h +#usr/include/c++/4.4.7/parallel/omp_loop_static.h +#usr/include/c++/4.4.7/parallel/par_loop.h +#usr/include/c++/4.4.7/parallel/parallel.h +#usr/include/c++/4.4.7/parallel/partial_sum.h +#usr/include/c++/4.4.7/parallel/partition.h +#usr/include/c++/4.4.7/parallel/queue.h +#usr/include/c++/4.4.7/parallel/quicksort.h +#usr/include/c++/4.4.7/parallel/random_number.h +#usr/include/c++/4.4.7/parallel/random_shuffle.h +#usr/include/c++/4.4.7/parallel/search.h +#usr/include/c++/4.4.7/parallel/set_operations.h +#usr/include/c++/4.4.7/parallel/settings.h +#usr/include/c++/4.4.7/parallel/sort.h +#usr/include/c++/4.4.7/parallel/tags.h +#usr/include/c++/4.4.7/parallel/types.h +#usr/include/c++/4.4.7/parallel/unique_copy.h +#usr/include/c++/4.4.7/parallel/workstealing.h +#usr/include/c++/4.4.7/queue +#usr/include/c++/4.4.7/random +#usr/include/c++/4.4.7/ratio +#usr/include/c++/4.4.7/regex +#usr/include/c++/4.4.7/set +#usr/include/c++/4.4.7/sstream +#usr/include/c++/4.4.7/stack +#usr/include/c++/4.4.7/stdatomic.h +#usr/include/c++/4.4.7/stdexcept +#usr/include/c++/4.4.7/streambuf +#usr/include/c++/4.4.7/string +#usr/include/c++/4.4.7/system_error +#usr/include/c++/4.4.7/tgmath.h +#usr/include/c++/4.4.7/thread +#usr/include/c++/4.4.7/tr1 +#usr/include/c++/4.4.7/tr1/array +#usr/include/c++/4.4.7/tr1/bessel_function.tcc +#usr/include/c++/4.4.7/tr1/beta_function.tcc +#usr/include/c++/4.4.7/tr1/ccomplex +#usr/include/c++/4.4.7/tr1/cctype +#usr/include/c++/4.4.7/tr1/cfenv +#usr/include/c++/4.4.7/tr1/cfloat +#usr/include/c++/4.4.7/tr1/cinttypes +#usr/include/c++/4.4.7/tr1/climits +#usr/include/c++/4.4.7/tr1/cmath +#usr/include/c++/4.4.7/tr1/complex +#usr/include/c++/4.4.7/tr1/complex.h +#usr/include/c++/4.4.7/tr1/cstdarg +#usr/include/c++/4.4.7/tr1/cstdbool +#usr/include/c++/4.4.7/tr1/cstdint +#usr/include/c++/4.4.7/tr1/cstdio +#usr/include/c++/4.4.7/tr1/cstdlib +#usr/include/c++/4.4.7/tr1/ctgmath +#usr/include/c++/4.4.7/tr1/ctime +#usr/include/c++/4.4.7/tr1/ctype.h +#usr/include/c++/4.4.7/tr1/cwchar +#usr/include/c++/4.4.7/tr1/cwctype +#usr/include/c++/4.4.7/tr1/ell_integral.tcc +#usr/include/c++/4.4.7/tr1/exp_integral.tcc +#usr/include/c++/4.4.7/tr1/fenv.h +#usr/include/c++/4.4.7/tr1/float.h +#usr/include/c++/4.4.7/tr1/functional +#usr/include/c++/4.4.7/tr1/functional_hash.h +#usr/include/c++/4.4.7/tr1/gamma.tcc +#usr/include/c++/4.4.7/tr1/hashtable.h +#usr/include/c++/4.4.7/tr1/hypergeometric.tcc +#usr/include/c++/4.4.7/tr1/inttypes.h +#usr/include/c++/4.4.7/tr1/legendre_function.tcc +#usr/include/c++/4.4.7/tr1/limits.h +#usr/include/c++/4.4.7/tr1/math.h +#usr/include/c++/4.4.7/tr1/memory +#usr/include/c++/4.4.7/tr1/modified_bessel_func.tcc +#usr/include/c++/4.4.7/tr1/poly_hermite.tcc +#usr/include/c++/4.4.7/tr1/poly_laguerre.tcc +#usr/include/c++/4.4.7/tr1/random +#usr/include/c++/4.4.7/tr1/regex +#usr/include/c++/4.4.7/tr1/riemann_zeta.tcc +#usr/include/c++/4.4.7/tr1/shared_ptr.h +#usr/include/c++/4.4.7/tr1/special_function_util.h +#usr/include/c++/4.4.7/tr1/stdarg.h +#usr/include/c++/4.4.7/tr1/stdbool.h +#usr/include/c++/4.4.7/tr1/stdint.h +#usr/include/c++/4.4.7/tr1/stdio.h +#usr/include/c++/4.4.7/tr1/stdlib.h +#usr/include/c++/4.4.7/tr1/tgmath.h +#usr/include/c++/4.4.7/tr1/tuple +#usr/include/c++/4.4.7/tr1/type_traits +#usr/include/c++/4.4.7/tr1/unordered_map +#usr/include/c++/4.4.7/tr1/unordered_set +#usr/include/c++/4.4.7/tr1/utility +#usr/include/c++/4.4.7/tr1/wchar.h +#usr/include/c++/4.4.7/tr1/wctype.h +#usr/include/c++/4.4.7/tr1_impl +#usr/include/c++/4.4.7/tr1_impl/array +#usr/include/c++/4.4.7/tr1_impl/boost_sp_counted_base.h +#usr/include/c++/4.4.7/tr1_impl/cctype +#usr/include/c++/4.4.7/tr1_impl/cfenv +#usr/include/c++/4.4.7/tr1_impl/cinttypes +#usr/include/c++/4.4.7/tr1_impl/cmath +#usr/include/c++/4.4.7/tr1_impl/complex +#usr/include/c++/4.4.7/tr1_impl/cstdint +#usr/include/c++/4.4.7/tr1_impl/cstdio +#usr/include/c++/4.4.7/tr1_impl/cstdlib +#usr/include/c++/4.4.7/tr1_impl/cwchar +#usr/include/c++/4.4.7/tr1_impl/cwctype +#usr/include/c++/4.4.7/tr1_impl/functional +#usr/include/c++/4.4.7/tr1_impl/functional_hash.h +#usr/include/c++/4.4.7/tr1_impl/hashtable +#usr/include/c++/4.4.7/tr1_impl/hashtable_policy.h +#usr/include/c++/4.4.7/tr1_impl/random +#usr/include/c++/4.4.7/tr1_impl/random.tcc +#usr/include/c++/4.4.7/tr1_impl/regex +#usr/include/c++/4.4.7/tr1_impl/type_traits +#usr/include/c++/4.4.7/tr1_impl/unordered_map +#usr/include/c++/4.4.7/tr1_impl/unordered_set +#usr/include/c++/4.4.7/tr1_impl/utility +#usr/include/c++/4.4.7/tuple +#usr/include/c++/4.4.7/type_traits +#usr/include/c++/4.4.7/typeinfo +#usr/include/c++/4.4.7/unordered_map +#usr/include/c++/4.4.7/unordered_set +#usr/include/c++/4.4.7/utility +#usr/include/c++/4.4.7/valarray +#usr/include/c++/4.4.7/vector +#usr/info #usr/info/cpp.info #usr/info/cppinternals.info +#usr/info/dir #usr/info/gcc.info #usr/info/gccinstall.info #usr/info/gccint.info +#usr/info/libgomp.info #usr/lib/gcc #usr/lib/gcc/i586-pc-linux-gnu -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2 -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/cc1 -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/cc1plus -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/collect2 -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/crtbegin.o -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/crtbeginS.o -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/crtbeginT.o -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/crtend.o -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/crtendS.o -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/crtfastmath.o -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/README -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/emmintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/float.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/iso646.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/limits.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/mm3dnow.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/mm_malloc.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/mmintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/pmmintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/ssp -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/ssp/ssp.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/ssp/stdio.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/ssp/string.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/ssp/unistd.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/stdarg.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/stdbool.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/stddef.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/syslimits.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/unwind.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/varargs.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/include/xmmintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/fixinc.sh -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/fixincl -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/gsyslimits.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/include -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/include/README -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/include/emmintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/include/float.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/include/iso646.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/include/limits.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/include/mm3dnow.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/include/mm_malloc.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/include/mmintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/include/pmmintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/include/stdarg.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/include/stdbool.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/include/stddef.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/include/unwind.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/include/varargs.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/include/xmmintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/macro_list -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/mkheaders -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/install-tools/mkheaders.conf -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/libgcc.a -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/libgcc_eh.a -#usr/lib/gcc/i586-pc-linux-gnu/4.1.2/libgcov.a +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7 +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/cc1 +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/cc1plus +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/collect2 +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/crtbegin.o +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/crtbeginS.o +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/crtbeginT.o +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/crtend.o +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/crtendS.o +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/crtfastmath.o +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/crtprec32.o +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/crtprec64.o +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/crtprec80.o +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/finclude +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include-fixed +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include-fixed/README +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include-fixed/limits.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include-fixed/syslimits.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/ammintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/avxintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/bmmintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/cpuid.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/cross-stdarg.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/emmintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/float.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/immintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/iso646.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/mf-runtime.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/mm3dnow.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/mm_malloc.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/mmintrin-common.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/mmintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/nmmintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/omp.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/pmmintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/smmintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/ssp +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/ssp/ssp.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/ssp/stdio.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/ssp/string.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/ssp/unistd.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/stdarg.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/stdbool.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/stddef.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/stdfix.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/tmmintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/unwind.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/varargs.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/wmmintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/x86intrin.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/include/xmmintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/install-tools +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/install-tools/fixinc.sh +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/install-tools/fixinc_list +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/install-tools/fixincl +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/install-tools/gsyslimits.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/install-tools/include +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/install-tools/include/README +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/install-tools/include/limits.h +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/install-tools/macro_list +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/install-tools/mkheaders +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/install-tools/mkheaders.conf +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/install-tools/mkinstalldirs +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/libgcc.a +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/libgcc_eh.a +#usr/lib/gcc/i586-pc-linux-gnu/4.4.7/libgcov.a +#usr/lib/libgomp.a +#usr/lib/libgomp.la +#usr/lib/libgomp.so +usr/lib/libgomp.so.1 +usr/lib/libgomp.so.1.0.0 +#usr/lib/libgomp.spec #usr/lib/libmudflap.a #usr/lib/libmudflap.la -usr/lib/libmudflap.so +#usr/lib/libmudflap.so usr/lib/libmudflap.so.0 usr/lib/libmudflap.so.0.0.0 #usr/lib/libmudflapth.a #usr/lib/libmudflapth.la -usr/lib/libmudflapth.so +#usr/lib/libmudflapth.so usr/lib/libmudflapth.so.0 usr/lib/libmudflapth.so.0.0.0 #usr/lib/libssp.a #usr/lib/libssp.la -usr/lib/libssp.so +#usr/lib/libssp.so usr/lib/libssp.so.0 usr/lib/libssp.so.0.0.0 #usr/lib/libssp_nonshared.a #usr/lib/libssp_nonshared.la #usr/lib/libstdc++.a -#usr/lib/libstdc++.la -usr/lib/libstdc++.so -usr/lib/libstdc++.so.6 -usr/lib/libstdc++.so.6.0.8 +usr/lib/libstdc++.so.6.0.13 #usr/lib/libsupc++.a #usr/lib/libsupc++.la #usr/man/man1/cpp.1 diff --git a/config/rootfiles/common/i586/glibc b/config/rootfiles/common/i586/glibc index 4e05e8ef0..fb36915cc 100644 --- a/config/rootfiles/common/i586/glibc +++ b/config/rootfiles/common/i586/glibc @@ -1,46 +1,48 @@ #etc/ld.so.cache etc/localtime -#etc/rpc -lib/ld-2.5.so +etc/rpc +lib/ld-2.12.so lib/ld-linux.so.2 -lib/libBrokenLocale-2.5.so +lib/libBrokenLocale-2.12.so lib/libBrokenLocale.so.1 #lib/libSegFault.so -lib/libanl-2.5.so +lib/libanl-2.12.so lib/libanl.so.1 -lib/libc-2.5.so +lib/libc-2.12.so lib/libc.so.6 -lib/libcrypt-2.5.so +lib/libcidn-2.12.so +lib/libcidn.so.1 +lib/libcrypt-2.12.so lib/libcrypt.so.1 -lib/libdl-2.5.so +lib/libdl-2.12.so lib/libdl.so.2 -lib/libm-2.5.so +lib/libm-2.12.so lib/libm.so.6 #lib/libmemusage.so -lib/libnsl-2.5.so +lib/libnsl-2.12.so lib/libnsl.so.1 -lib/libnss_compat-2.5.so +lib/libnss_compat-2.12.so lib/libnss_compat.so.2 -lib/libnss_dns-2.5.so +lib/libnss_dns-2.12.so lib/libnss_dns.so.2 -lib/libnss_files-2.5.so +lib/libnss_files-2.12.so lib/libnss_files.so.2 -lib/libnss_hesiod-2.5.so +lib/libnss_hesiod-2.12.so lib/libnss_hesiod.so.2 -lib/libnss_nis-2.5.so +lib/libnss_nis-2.12.so lib/libnss_nis.so.2 -lib/libnss_nisplus-2.5.so +lib/libnss_nisplus-2.12.so lib/libnss_nisplus.so.2 #lib/libpcprofile.so -lib/libpthread-2.5.so +lib/libpthread-2.12.so lib/libpthread.so.0 -lib/libresolv-2.5.so +lib/libresolv-2.12.so lib/libresolv.so.2 -lib/librt-2.5.so +lib/librt-2.12.so lib/librt.so.1 lib/libthread_db-1.0.so lib/libthread_db.so.1 -lib/libutil-2.5.so +lib/libutil-2.12.so lib/libutil.so.1 sbin/ldconfig #sbin/sln @@ -86,7 +88,9 @@ usr/bin/ldd #usr/include/bits/endian.h #usr/include/bits/environments.h #usr/include/bits/errno.h +#usr/include/bits/error.h #usr/include/bits/fcntl.h +#usr/include/bits/fcntl2.h #usr/include/bits/fenv.h #usr/include/bits/fenvinline.h #usr/include/bits/huge_val.h @@ -110,6 +114,7 @@ usr/bin/ldd #usr/include/bits/mman.h #usr/include/bits/monetary-ldbl.h #usr/include/bits/mqueue.h +#usr/include/bits/mqueue2.h #usr/include/bits/msq.h #usr/include/bits/nan.h #usr/include/bits/netdb.h @@ -125,6 +130,7 @@ usr/bin/ldd #usr/include/bits/sem.h #usr/include/bits/semaphore.h #usr/include/bits/setjmp.h +#usr/include/bits/setjmp2.h #usr/include/bits/shm.h #usr/include/bits/sigaction.h #usr/include/bits/sigcontext.h @@ -150,7 +156,6 @@ usr/bin/ldd #usr/include/bits/string.h #usr/include/bits/string2.h #usr/include/bits/string3.h -#usr/include/bits/stropts.h #usr/include/bits/sys_errlist.h #usr/include/bits/syscall.h #usr/include/bits/syslog-ldbl.h @@ -173,7 +178,6 @@ usr/bin/ldd #usr/include/bits/wchar2.h #usr/include/bits/wordsize.h #usr/include/bits/xopen_lim.h -#usr/include/bits/xtitypes.h #usr/include/byteswap.h #usr/include/complex.h #usr/include/cpio.h @@ -207,6 +211,7 @@ usr/bin/ldd #usr/include/gnu/stubs-32.h #usr/include/gnu/stubs.h #usr/include/grp.h +#usr/include/gshadow.h #usr/include/iconv.h #usr/include/ieee754.h #usr/include/ifaddrs.h @@ -262,6 +267,8 @@ usr/bin/ldd #usr/include/netinet/udp.h #usr/include/netipx #usr/include/netipx/ipx.h +#usr/include/netiucv +#usr/include/netiucv/iucv.h #usr/include/netpacket #usr/include/netpacket/packet.h #usr/include/netrom @@ -347,8 +354,6 @@ usr/bin/ldd #usr/include/rpcsvc/yppasswd.x #usr/include/rpcsvc/ypupd.h #usr/include/sched.h -#usr/include/scsi -#usr/include/scsi/scsi.h #usr/include/scsi/scsi_ioctl.h #usr/include/scsi/sg.h #usr/include/search.h @@ -365,7 +370,6 @@ usr/bin/ldd #usr/include/stdlib.h #usr/include/string.h #usr/include/strings.h -#usr/include/stropts.h #usr/include/sys #usr/include/sys/acct.h #usr/include/sys/bitypes.h @@ -375,6 +379,7 @@ usr/bin/ldd #usr/include/sys/elf.h #usr/include/sys/epoll.h #usr/include/sys/errno.h +#usr/include/sys/eventfd.h #usr/include/sys/fcntl.h #usr/include/sys/file.h #usr/include/sys/fsuid.h @@ -411,13 +416,13 @@ usr/bin/ldd #usr/include/sys/sendfile.h #usr/include/sys/shm.h #usr/include/sys/signal.h +#usr/include/sys/signalfd.h #usr/include/sys/socket.h #usr/include/sys/socketvar.h #usr/include/sys/soundcard.h #usr/include/sys/stat.h #usr/include/sys/statfs.h #usr/include/sys/statvfs.h -#usr/include/sys/stropts.h #usr/include/sys/swap.h #usr/include/sys/syscall.h #usr/include/sys/sysctl.h @@ -427,6 +432,7 @@ usr/bin/ldd #usr/include/sys/termios.h #usr/include/sys/time.h #usr/include/sys/timeb.h +#usr/include/sys/timerfd.h #usr/include/sys/times.h #usr/include/sys/timex.h #usr/include/sys/ttychars.h @@ -470,20 +476,6 @@ usr/bin/ldd #usr/include/wctype.h #usr/include/wordexp.h #usr/include/xlocale.h -#usr/info -#usr/info/dir -#usr/info/libc.info -#usr/info/libc.info-1 -#usr/info/libc.info-10 -#usr/info/libc.info-11 -#usr/info/libc.info-2 -#usr/info/libc.info-3 -#usr/info/libc.info-4 -#usr/info/libc.info-5 -#usr/info/libc.info-6 -#usr/info/libc.info-7 -#usr/info/libc.info-8 -#usr/info/libc.info-9 #usr/lib/Mcrt1.o #usr/lib/Scrt1.o #usr/lib/crt1.o @@ -495,6 +487,7 @@ usr/lib/gconv #usr/lib/gconv/ASMO_449.so #usr/lib/gconv/BIG5.so #usr/lib/gconv/BIG5HKSCS.so +#usr/lib/gconv/BRF.so #usr/lib/gconv/CP10007.so #usr/lib/gconv/CP1125.so #usr/lib/gconv/CP1250.so @@ -545,7 +538,11 @@ usr/lib/gconv #usr/lib/gconv/GREEK-CCITT.so #usr/lib/gconv/GREEK7-OLD.so #usr/lib/gconv/GREEK7.so +#usr/lib/gconv/HP-GREEK8.so #usr/lib/gconv/HP-ROMAN8.so +#usr/lib/gconv/HP-ROMAN9.so +#usr/lib/gconv/HP-THAI8.so +#usr/lib/gconv/HP-TURKISH8.so #usr/lib/gconv/IBM037.so #usr/lib/gconv/IBM038.so #usr/lib/gconv/IBM1004.so @@ -686,6 +683,7 @@ usr/lib/gconv #usr/lib/gconv/ISO8859-7.so #usr/lib/gconv/ISO8859-8.so #usr/lib/gconv/ISO8859-9.so +#usr/lib/gconv/ISO8859-9E.so #usr/lib/gconv/ISO_10367-BOX.so #usr/lib/gconv/ISO_11548-1.so #usr/lib/gconv/ISO_2033.so @@ -697,10 +695,12 @@ usr/lib/gconv #usr/lib/gconv/JOHAB.so #usr/lib/gconv/KOI-8.so #usr/lib/gconv/KOI8-R.so +#usr/lib/gconv/KOI8-RU.so #usr/lib/gconv/KOI8-T.so #usr/lib/gconv/KOI8-U.so #usr/lib/gconv/LATIN-GREEK-1.so #usr/lib/gconv/LATIN-GREEK.so +#usr/lib/gconv/MAC-CENTRALEUROPE.so #usr/lib/gconv/MAC-IS.so #usr/lib/gconv/MAC-SAMI.so #usr/lib/gconv/MAC-UK.so @@ -735,6 +735,8 @@ usr/lib/gconv #usr/lib/glibc/getconf #usr/lib/glibc/getconf/POSIX_V6_ILP32_OFF32 #usr/lib/glibc/getconf/POSIX_V6_ILP32_OFFBIG +#usr/lib/glibc/getconf/POSIX_V7_ILP32_OFF32 +#usr/lib/glibc/getconf/POSIX_V7_ILP32_OFFBIG #usr/lib/glibc/pt_chown #usr/lib/libBrokenLocale.a #usr/lib/libBrokenLocale.so @@ -744,6 +746,7 @@ usr/lib/gconv #usr/lib/libc.a #usr/lib/libc.so #usr/lib/libc_nonshared.a +#usr/lib/libcidn.so #usr/lib/libcrypt.a #usr/lib/libcrypt.so #usr/lib/libdl.a @@ -787,6 +790,7 @@ usr/lib/locale/locale-archive #usr/share/i18n/charmaps/ASMO_449.gz #usr/share/i18n/charmaps/BIG5-HKSCS.gz #usr/share/i18n/charmaps/BIG5.gz +#usr/share/i18n/charmaps/BRF.gz #usr/share/i18n/charmaps/BS_4730.gz #usr/share/i18n/charmaps/BS_VIEWDATA.gz #usr/share/i18n/charmaps/CP10007.gz @@ -845,7 +849,11 @@ usr/lib/locale/locale-archive #usr/share/i18n/charmaps/GREEK-CCITT.gz #usr/share/i18n/charmaps/GREEK7-OLD.gz #usr/share/i18n/charmaps/GREEK7.gz +#usr/share/i18n/charmaps/HP-GREEK8.gz #usr/share/i18n/charmaps/HP-ROMAN8.gz +#usr/share/i18n/charmaps/HP-ROMAN9.gz +#usr/share/i18n/charmaps/HP-THAI8.gz +#usr/share/i18n/charmaps/HP-TURKISH8.gz #usr/share/i18n/charmaps/IBM037.gz #usr/share/i18n/charmaps/IBM038.gz #usr/share/i18n/charmaps/IBM1004.gz @@ -925,6 +933,7 @@ usr/lib/locale/locale-archive #usr/share/i18n/charmaps/ISO-8859-7.gz #usr/share/i18n/charmaps/ISO-8859-8.gz #usr/share/i18n/charmaps/ISO-8859-9.gz +#usr/share/i18n/charmaps/ISO-8859-9E.gz #usr/share/i18n/charmaps/ISO-IR-197.gz #usr/share/i18n/charmaps/ISO-IR-209.gz #usr/share/i18n/charmaps/ISO-IR-90.gz @@ -958,11 +967,13 @@ usr/lib/locale/locale-archive #usr/share/i18n/charmaps/JUS_I.B1.003-SERB.gz #usr/share/i18n/charmaps/KOI-8.gz #usr/share/i18n/charmaps/KOI8-R.gz +#usr/share/i18n/charmaps/KOI8-RU.gz #usr/share/i18n/charmaps/KOI8-T.gz #usr/share/i18n/charmaps/KOI8-U.gz #usr/share/i18n/charmaps/KSC5636.gz #usr/share/i18n/charmaps/LATIN-GREEK-1.gz #usr/share/i18n/charmaps/LATIN-GREEK.gz +#usr/share/i18n/charmaps/MAC-CENTRALEUROPE.gz #usr/share/i18n/charmaps/MAC-CYRILLIC.gz #usr/share/i18n/charmaps/MAC-IS.gz #usr/share/i18n/charmaps/MAC-SAMI.gz @@ -1028,12 +1039,17 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/ar_TN #usr/share/i18n/locales/ar_YE #usr/share/i18n/locales/as_IN +#usr/share/i18n/locales/ast_ES #usr/share/i18n/locales/az_AZ #usr/share/i18n/locales/be_BY #usr/share/i18n/locales/be_BY@latin +#usr/share/i18n/locales/ber_DZ +#usr/share/i18n/locales/ber_MA #usr/share/i18n/locales/bg_BG #usr/share/i18n/locales/bn_BD #usr/share/i18n/locales/bn_IN +#usr/share/i18n/locales/bo_CN +#usr/share/i18n/locales/bo_IN #usr/share/i18n/locales/br_FR #usr/share/i18n/locales/br_FR@euro #usr/share/i18n/locales/bs_BA @@ -1043,8 +1059,10 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/ca_ES@euro #usr/share/i18n/locales/ca_FR #usr/share/i18n/locales/ca_IT +#usr/share/i18n/locales/crh_UA #usr/share/i18n/locales/cs_CZ #usr/share/i18n/locales/csb_PL +#usr/share/i18n/locales/cv_RU #usr/share/i18n/locales/cy_GB #usr/share/i18n/locales/da_DK #usr/share/i18n/locales/de_AT @@ -1056,10 +1074,12 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/de_DE@euro #usr/share/i18n/locales/de_LU #usr/share/i18n/locales/de_LU@euro +#usr/share/i18n/locales/dv_MV #usr/share/i18n/locales/dz_BT #usr/share/i18n/locales/el_CY #usr/share/i18n/locales/el_GR #usr/share/i18n/locales/el_GR@euro +#usr/share/i18n/locales/en_AG #usr/share/i18n/locales/en_AU #usr/share/i18n/locales/en_BW #usr/share/i18n/locales/en_CA @@ -1069,6 +1089,7 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/en_IE #usr/share/i18n/locales/en_IE@euro #usr/share/i18n/locales/en_IN +#usr/share/i18n/locales/en_NG #usr/share/i18n/locales/en_NZ #usr/share/i18n/locales/en_PH #usr/share/i18n/locales/en_SG @@ -1102,6 +1123,7 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/fa_IR #usr/share/i18n/locales/fi_FI #usr/share/i18n/locales/fi_FI@euro +#usr/share/i18n/locales/fil_PH #usr/share/i18n/locales/fo_FO #usr/share/i18n/locales/fr_BE #usr/share/i18n/locales/fr_BE@euro @@ -1111,6 +1133,8 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/fr_FR@euro #usr/share/i18n/locales/fr_LU #usr/share/i18n/locales/fr_LU@euro +#usr/share/i18n/locales/fur_IT +#usr/share/i18n/locales/fy_DE #usr/share/i18n/locales/fy_NL #usr/share/i18n/locales/ga_IE #usr/share/i18n/locales/ga_IE@euro @@ -1123,19 +1147,27 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/gl_ES@euro #usr/share/i18n/locales/gu_IN #usr/share/i18n/locales/gv_GB +#usr/share/i18n/locales/ha_NG #usr/share/i18n/locales/he_IL #usr/share/i18n/locales/hi_IN +#usr/share/i18n/locales/hne_IN #usr/share/i18n/locales/hr_HR #usr/share/i18n/locales/hsb_DE +#usr/share/i18n/locales/ht_HT #usr/share/i18n/locales/hu_HU #usr/share/i18n/locales/hy_AM #usr/share/i18n/locales/i18n #usr/share/i18n/locales/id_ID +#usr/share/i18n/locales/ig_NG +#usr/share/i18n/locales/ik_CA #usr/share/i18n/locales/is_IS #usr/share/i18n/locales/iso14651_t1 +#usr/share/i18n/locales/iso14651_t1_common +#usr/share/i18n/locales/iso14651_t1_pinyin #usr/share/i18n/locales/it_CH #usr/share/i18n/locales/it_IT #usr/share/i18n/locales/it_IT@euro +#usr/share/i18n/locales/iu_CA #usr/share/i18n/locales/iw_IL #usr/share/i18n/locales/ja_JP #usr/share/i18n/locales/ka_GE @@ -1144,13 +1176,19 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/km_KH #usr/share/i18n/locales/kn_IN #usr/share/i18n/locales/ko_KR +#usr/share/i18n/locales/kok_IN +#usr/share/i18n/locales/ks_IN +#usr/share/i18n/locales/ks_IN@devanagari #usr/share/i18n/locales/ku_TR #usr/share/i18n/locales/kw_GB #usr/share/i18n/locales/ky_KG #usr/share/i18n/locales/lg_UG +#usr/share/i18n/locales/li_BE +#usr/share/i18n/locales/li_NL #usr/share/i18n/locales/lo_LA #usr/share/i18n/locales/lt_LT #usr/share/i18n/locales/lv_LV +#usr/share/i18n/locales/mai_IN #usr/share/i18n/locales/mg_MG #usr/share/i18n/locales/mi_NZ #usr/share/i18n/locales/mk_MK @@ -1159,13 +1197,19 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/mr_IN #usr/share/i18n/locales/ms_MY #usr/share/i18n/locales/mt_MT +#usr/share/i18n/locales/my_MM +#usr/share/i18n/locales/nan_TW@latin #usr/share/i18n/locales/nb_NO +#usr/share/i18n/locales/nds_DE +#usr/share/i18n/locales/nds_NL #usr/share/i18n/locales/ne_NP +#usr/share/i18n/locales/nl_AW #usr/share/i18n/locales/nl_BE #usr/share/i18n/locales/nl_BE@euro #usr/share/i18n/locales/nl_NL #usr/share/i18n/locales/nl_NL@euro #usr/share/i18n/locales/nn_NO +#usr/share/i18n/locales/no_NO #usr/share/i18n/locales/nr_ZA #usr/share/i18n/locales/nso_ZA #usr/share/i18n/locales/oc_FR @@ -1174,7 +1218,9 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/or_IN #usr/share/i18n/locales/pa_IN #usr/share/i18n/locales/pa_PK +#usr/share/i18n/locales/pap_AN #usr/share/i18n/locales/pl_PL +#usr/share/i18n/locales/ps_AF #usr/share/i18n/locales/pt_BR #usr/share/i18n/locales/pt_PT #usr/share/i18n/locales/pt_PT@euro @@ -1182,7 +1228,12 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/ru_RU #usr/share/i18n/locales/ru_UA #usr/share/i18n/locales/rw_RW +#usr/share/i18n/locales/sa_IN +#usr/share/i18n/locales/sc_IT +#usr/share/i18n/locales/sd_IN +#usr/share/i18n/locales/sd_IN@devanagari #usr/share/i18n/locales/se_NO +#usr/share/i18n/locales/shs_CA #usr/share/i18n/locales/si_LK #usr/share/i18n/locales/sid_ET #usr/share/i18n/locales/sk_SK @@ -1192,8 +1243,10 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/so_KE #usr/share/i18n/locales/so_SO #usr/share/i18n/locales/sq_AL -#usr/share/i18n/locales/sr_CS +#usr/share/i18n/locales/sq_MK #usr/share/i18n/locales/sr_ME +#usr/share/i18n/locales/sr_RS +#usr/share/i18n/locales/sr_RS@latin #usr/share/i18n/locales/ss_ZA #usr/share/i18n/locales/st_ZA #usr/share/i18n/locales/sv_FI @@ -1206,6 +1259,7 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/ti_ER #usr/share/i18n/locales/ti_ET #usr/share/i18n/locales/tig_ER +#usr/share/i18n/locales/tk_TM #usr/share/i18n/locales/tl_PH #usr/share/i18n/locales/tn_ZA #usr/share/i18n/locales/tr_CY @@ -1224,7 +1278,10 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/translit_wide #usr/share/i18n/locales/ts_ZA #usr/share/i18n/locales/tt_RU +#usr/share/i18n/locales/tt_RU@iqtelif +#usr/share/i18n/locales/ug_CN #usr/share/i18n/locales/uk_UA +#usr/share/i18n/locales/ur_IN #usr/share/i18n/locales/ur_PK #usr/share/i18n/locales/uz_UZ #usr/share/i18n/locales/uz_UZ@cyrillic @@ -1233,16 +1290,34 @@ usr/lib/locale/locale-archive #usr/share/i18n/locales/wa_BE #usr/share/i18n/locales/wa_BE@euro #usr/share/i18n/locales/wal_ET +#usr/share/i18n/locales/wo_SN #usr/share/i18n/locales/xh_ZA #usr/share/i18n/locales/yi_US +#usr/share/i18n/locales/yo_NG #usr/share/i18n/locales/zh_CN #usr/share/i18n/locales/zh_HK #usr/share/i18n/locales/zh_SG #usr/share/i18n/locales/zh_TW #usr/share/i18n/locales/zu_ZA +#usr/share/info/dir +#usr/share/info/libc.info +#usr/share/info/libc.info-1 +#usr/share/info/libc.info-10 +#usr/share/info/libc.info-11 +#usr/share/info/libc.info-2 +#usr/share/info/libc.info-3 +#usr/share/info/libc.info-4 +#usr/share/info/libc.info-5 +#usr/share/info/libc.info-6 +#usr/share/info/libc.info-7 +#usr/share/info/libc.info-8 +#usr/share/info/libc.info-9 #usr/share/locale/be #usr/share/locale/be/LC_MESSAGES #usr/share/locale/be/LC_MESSAGES/libc.mo +#usr/share/locale/bg +#usr/share/locale/bg/LC_MESSAGES +#usr/share/locale/bg/LC_MESSAGES/libc.mo #usr/share/locale/ca #usr/share/locale/ca/LC_MESSAGES #usr/share/locale/ca/LC_MESSAGES/libc.mo @@ -1279,6 +1354,9 @@ usr/lib/locale/locale-archive #usr/share/locale/hu #usr/share/locale/hu/LC_MESSAGES #usr/share/locale/hu/LC_MESSAGES/libc.mo +#usr/share/locale/id +#usr/share/locale/id/LC_MESSAGES +#usr/share/locale/id/LC_MESSAGES/libc.mo #usr/share/locale/it #usr/share/locale/it/LC_MESSAGES #usr/share/locale/it/LC_MESSAGES/libc.mo @@ -1289,6 +1367,9 @@ usr/lib/locale/locale-archive #usr/share/locale/ko/LC_MESSAGES #usr/share/locale/ko/LC_MESSAGES/libc.mo #usr/share/locale/locale.alias +#usr/share/locale/lt +#usr/share/locale/lt/LC_MESSAGES +#usr/share/locale/lt/LC_MESSAGES/libc.mo #usr/share/locale/nb #usr/share/locale/nb/LC_MESSAGES #usr/share/locale/nb/LC_MESSAGES/libc.mo @@ -1316,6 +1397,9 @@ usr/lib/locale/locale-archive #usr/share/locale/tr #usr/share/locale/tr/LC_MESSAGES #usr/share/locale/tr/LC_MESSAGES/libc.mo +#usr/share/locale/vi +#usr/share/locale/vi/LC_MESSAGES +#usr/share/locale/vi/LC_MESSAGES/libc.mo #usr/share/locale/zh_CN #usr/share/locale/zh_CN/LC_MESSAGES #usr/share/locale/zh_CN/LC_MESSAGES/libc.mo @@ -1327,6 +1411,7 @@ usr/lib/locale/locale-archive #usr/share/zoneinfo/Africa/Accra #usr/share/zoneinfo/Africa/Addis_Ababa #usr/share/zoneinfo/Africa/Algiers +#usr/share/zoneinfo/Africa/Asmara #usr/share/zoneinfo/Africa/Asmera #usr/share/zoneinfo/Africa/Bamako #usr/share/zoneinfo/Africa/Bangui @@ -1390,16 +1475,20 @@ usr/lib/locale/locale-archive #usr/share/zoneinfo/America/Argentina/La_Rioja #usr/share/zoneinfo/America/Argentina/Mendoza #usr/share/zoneinfo/America/Argentina/Rio_Gallegos +#usr/share/zoneinfo/America/Argentina/Salta #usr/share/zoneinfo/America/Argentina/San_Juan +#usr/share/zoneinfo/America/Argentina/San_Luis #usr/share/zoneinfo/America/Argentina/Tucuman #usr/share/zoneinfo/America/Argentina/Ushuaia #usr/share/zoneinfo/America/Aruba #usr/share/zoneinfo/America/Asuncion +#usr/share/zoneinfo/America/Atikokan #usr/share/zoneinfo/America/Atka #usr/share/zoneinfo/America/Bahia #usr/share/zoneinfo/America/Barbados #usr/share/zoneinfo/America/Belem #usr/share/zoneinfo/America/Belize +#usr/share/zoneinfo/America/Blanc-Sablon #usr/share/zoneinfo/America/Boa_Vista #usr/share/zoneinfo/America/Bogota #usr/share/zoneinfo/America/Boise @@ -1447,8 +1536,10 @@ usr/lib/locale/locale-archive #usr/share/zoneinfo/America/Indiana/Knox #usr/share/zoneinfo/America/Indiana/Marengo #usr/share/zoneinfo/America/Indiana/Petersburg +#usr/share/zoneinfo/America/Indiana/Tell_City #usr/share/zoneinfo/America/Indiana/Vevay #usr/share/zoneinfo/America/Indiana/Vincennes +#usr/share/zoneinfo/America/Indiana/Winamac #usr/share/zoneinfo/America/Indianapolis #usr/share/zoneinfo/America/Inuvik #usr/share/zoneinfo/America/Iqaluit @@ -1466,6 +1557,7 @@ usr/lib/locale/locale-archive #usr/share/zoneinfo/America/Maceio #usr/share/zoneinfo/America/Managua #usr/share/zoneinfo/America/Manaus +#usr/share/zoneinfo/America/Marigot #usr/share/zoneinfo/America/Martinique #usr/share/zoneinfo/America/Mazatlan #usr/share/zoneinfo/America/Mendoza @@ -1485,6 +1577,7 @@ usr/lib/locale/locale-archive #usr/share/zoneinfo/America/Noronha #usr/share/zoneinfo/America/North_Dakota #usr/share/zoneinfo/America/North_Dakota/Center +#usr/share/zoneinfo/America/North_Dakota/New_Salem #usr/share/zoneinfo/America/Panama #usr/share/zoneinfo/America/Pangnirtung #usr/share/zoneinfo/America/Paramaribo @@ -1498,13 +1591,16 @@ usr/lib/locale/locale-archive #usr/share/zoneinfo/America/Rankin_Inlet #usr/share/zoneinfo/America/Recife #usr/share/zoneinfo/America/Regina +#usr/share/zoneinfo/America/Resolute #usr/share/zoneinfo/America/Rio_Branco #usr/share/zoneinfo/America/Rosario +#usr/share/zoneinfo/America/Santarem #usr/share/zoneinfo/America/Santiago #usr/share/zoneinfo/America/Santo_Domingo #usr/share/zoneinfo/America/Sao_Paulo #usr/share/zoneinfo/America/Scoresbysund #usr/share/zoneinfo/America/Shiprock +#usr/share/zoneinfo/America/St_Barthelemy #usr/share/zoneinfo/America/St_Johns #usr/share/zoneinfo/America/St_Kitts #usr/share/zoneinfo/America/St_Lucia @@ -1565,6 +1661,7 @@ usr/lib/locale/locale-archive #usr/share/zoneinfo/Asia/Dushanbe #usr/share/zoneinfo/Asia/Gaza #usr/share/zoneinfo/Asia/Harbin +#usr/share/zoneinfo/Asia/Ho_Chi_Minh #usr/share/zoneinfo/Asia/Hong_Kong #usr/share/zoneinfo/Asia/Hovd #usr/share/zoneinfo/Asia/Irkutsk @@ -1576,7 +1673,9 @@ usr/lib/locale/locale-archive #usr/share/zoneinfo/Asia/Kamchatka #usr/share/zoneinfo/Asia/Karachi #usr/share/zoneinfo/Asia/Kashgar +#usr/share/zoneinfo/Asia/Kathmandu #usr/share/zoneinfo/Asia/Katmandu +#usr/share/zoneinfo/Asia/Kolkata #usr/share/zoneinfo/Asia/Krasnoyarsk #usr/share/zoneinfo/Asia/Kuala_Lumpur #usr/share/zoneinfo/Asia/Kuching @@ -1630,6 +1729,7 @@ usr/lib/locale/locale-archive #usr/share/zoneinfo/Atlantic/Canary #usr/share/zoneinfo/Atlantic/Cape_Verde #usr/share/zoneinfo/Atlantic/Faeroe +#usr/share/zoneinfo/Atlantic/Faroe #usr/share/zoneinfo/Atlantic/Jan_Mayen #usr/share/zoneinfo/Atlantic/Madeira #usr/share/zoneinfo/Atlantic/Reykjavik @@ -1644,6 +1744,7 @@ usr/lib/locale/locale-archive #usr/share/zoneinfo/Australia/Canberra #usr/share/zoneinfo/Australia/Currie #usr/share/zoneinfo/Australia/Darwin +#usr/share/zoneinfo/Australia/Eucla #usr/share/zoneinfo/Australia/Hobart #usr/share/zoneinfo/Australia/LHI #usr/share/zoneinfo/Australia/Lindeman @@ -1736,8 +1837,11 @@ usr/lib/locale/locale-archive #usr/share/zoneinfo/Europe/Copenhagen #usr/share/zoneinfo/Europe/Dublin #usr/share/zoneinfo/Europe/Gibraltar +#usr/share/zoneinfo/Europe/Guernsey #usr/share/zoneinfo/Europe/Helsinki +#usr/share/zoneinfo/Europe/Isle_of_Man #usr/share/zoneinfo/Europe/Istanbul +#usr/share/zoneinfo/Europe/Jersey #usr/share/zoneinfo/Europe/Kaliningrad #usr/share/zoneinfo/Europe/Kiev #usr/share/zoneinfo/Europe/Lisbon @@ -1753,6 +1857,7 @@ usr/lib/locale/locale-archive #usr/share/zoneinfo/Europe/Nicosia #usr/share/zoneinfo/Europe/Oslo #usr/share/zoneinfo/Europe/Paris +#usr/share/zoneinfo/Europe/Podgorica #usr/share/zoneinfo/Europe/Prague #usr/share/zoneinfo/Europe/Riga #usr/share/zoneinfo/Europe/Rome @@ -1771,6 +1876,7 @@ usr/lib/locale/locale-archive #usr/share/zoneinfo/Europe/Vatican #usr/share/zoneinfo/Europe/Vienna #usr/share/zoneinfo/Europe/Vilnius +#usr/share/zoneinfo/Europe/Volgograd #usr/share/zoneinfo/Europe/Warsaw #usr/share/zoneinfo/Europe/Zagreb #usr/share/zoneinfo/Europe/Zaporozhye @@ -1893,6 +1999,7 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/posix/Africa/Accra #usr/share/zoneinfo/posix/Africa/Addis_Ababa #usr/share/zoneinfo/posix/Africa/Algiers +#usr/share/zoneinfo/posix/Africa/Asmara #usr/share/zoneinfo/posix/Africa/Asmera #usr/share/zoneinfo/posix/Africa/Bamako #usr/share/zoneinfo/posix/Africa/Bangui @@ -1956,16 +2063,20 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/posix/America/Argentina/La_Rioja #usr/share/zoneinfo/posix/America/Argentina/Mendoza #usr/share/zoneinfo/posix/America/Argentina/Rio_Gallegos +#usr/share/zoneinfo/posix/America/Argentina/Salta #usr/share/zoneinfo/posix/America/Argentina/San_Juan +#usr/share/zoneinfo/posix/America/Argentina/San_Luis #usr/share/zoneinfo/posix/America/Argentina/Tucuman #usr/share/zoneinfo/posix/America/Argentina/Ushuaia #usr/share/zoneinfo/posix/America/Aruba #usr/share/zoneinfo/posix/America/Asuncion +#usr/share/zoneinfo/posix/America/Atikokan #usr/share/zoneinfo/posix/America/Atka #usr/share/zoneinfo/posix/America/Bahia #usr/share/zoneinfo/posix/America/Barbados #usr/share/zoneinfo/posix/America/Belem #usr/share/zoneinfo/posix/America/Belize +#usr/share/zoneinfo/posix/America/Blanc-Sablon #usr/share/zoneinfo/posix/America/Boa_Vista #usr/share/zoneinfo/posix/America/Bogota #usr/share/zoneinfo/posix/America/Boise @@ -2013,8 +2124,10 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/posix/America/Indiana/Knox #usr/share/zoneinfo/posix/America/Indiana/Marengo #usr/share/zoneinfo/posix/America/Indiana/Petersburg +#usr/share/zoneinfo/posix/America/Indiana/Tell_City #usr/share/zoneinfo/posix/America/Indiana/Vevay #usr/share/zoneinfo/posix/America/Indiana/Vincennes +#usr/share/zoneinfo/posix/America/Indiana/Winamac #usr/share/zoneinfo/posix/America/Indianapolis #usr/share/zoneinfo/posix/America/Inuvik #usr/share/zoneinfo/posix/America/Iqaluit @@ -2032,6 +2145,7 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/posix/America/Maceio #usr/share/zoneinfo/posix/America/Managua #usr/share/zoneinfo/posix/America/Manaus +#usr/share/zoneinfo/posix/America/Marigot #usr/share/zoneinfo/posix/America/Martinique #usr/share/zoneinfo/posix/America/Mazatlan #usr/share/zoneinfo/posix/America/Mendoza @@ -2051,6 +2165,7 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/posix/America/Noronha #usr/share/zoneinfo/posix/America/North_Dakota #usr/share/zoneinfo/posix/America/North_Dakota/Center +#usr/share/zoneinfo/posix/America/North_Dakota/New_Salem #usr/share/zoneinfo/posix/America/Panama #usr/share/zoneinfo/posix/America/Pangnirtung #usr/share/zoneinfo/posix/America/Paramaribo @@ -2064,13 +2179,16 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/posix/America/Rankin_Inlet #usr/share/zoneinfo/posix/America/Recife #usr/share/zoneinfo/posix/America/Regina +#usr/share/zoneinfo/posix/America/Resolute #usr/share/zoneinfo/posix/America/Rio_Branco #usr/share/zoneinfo/posix/America/Rosario +#usr/share/zoneinfo/posix/America/Santarem #usr/share/zoneinfo/posix/America/Santiago #usr/share/zoneinfo/posix/America/Santo_Domingo #usr/share/zoneinfo/posix/America/Sao_Paulo #usr/share/zoneinfo/posix/America/Scoresbysund #usr/share/zoneinfo/posix/America/Shiprock +#usr/share/zoneinfo/posix/America/St_Barthelemy #usr/share/zoneinfo/posix/America/St_Johns #usr/share/zoneinfo/posix/America/St_Kitts #usr/share/zoneinfo/posix/America/St_Lucia @@ -2131,6 +2249,7 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/posix/Asia/Dushanbe #usr/share/zoneinfo/posix/Asia/Gaza #usr/share/zoneinfo/posix/Asia/Harbin +#usr/share/zoneinfo/posix/Asia/Ho_Chi_Minh #usr/share/zoneinfo/posix/Asia/Hong_Kong #usr/share/zoneinfo/posix/Asia/Hovd #usr/share/zoneinfo/posix/Asia/Irkutsk @@ -2142,7 +2261,9 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/posix/Asia/Kamchatka #usr/share/zoneinfo/posix/Asia/Karachi #usr/share/zoneinfo/posix/Asia/Kashgar +#usr/share/zoneinfo/posix/Asia/Kathmandu #usr/share/zoneinfo/posix/Asia/Katmandu +#usr/share/zoneinfo/posix/Asia/Kolkata #usr/share/zoneinfo/posix/Asia/Krasnoyarsk #usr/share/zoneinfo/posix/Asia/Kuala_Lumpur #usr/share/zoneinfo/posix/Asia/Kuching @@ -2196,6 +2317,7 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/posix/Atlantic/Canary #usr/share/zoneinfo/posix/Atlantic/Cape_Verde #usr/share/zoneinfo/posix/Atlantic/Faeroe +#usr/share/zoneinfo/posix/Atlantic/Faroe #usr/share/zoneinfo/posix/Atlantic/Jan_Mayen #usr/share/zoneinfo/posix/Atlantic/Madeira #usr/share/zoneinfo/posix/Atlantic/Reykjavik @@ -2210,6 +2332,7 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/posix/Australia/Canberra #usr/share/zoneinfo/posix/Australia/Currie #usr/share/zoneinfo/posix/Australia/Darwin +#usr/share/zoneinfo/posix/Australia/Eucla #usr/share/zoneinfo/posix/Australia/Hobart #usr/share/zoneinfo/posix/Australia/LHI #usr/share/zoneinfo/posix/Australia/Lindeman @@ -2302,8 +2425,11 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/posix/Europe/Copenhagen #usr/share/zoneinfo/posix/Europe/Dublin #usr/share/zoneinfo/posix/Europe/Gibraltar +#usr/share/zoneinfo/posix/Europe/Guernsey #usr/share/zoneinfo/posix/Europe/Helsinki +#usr/share/zoneinfo/posix/Europe/Isle_of_Man #usr/share/zoneinfo/posix/Europe/Istanbul +#usr/share/zoneinfo/posix/Europe/Jersey #usr/share/zoneinfo/posix/Europe/Kaliningrad #usr/share/zoneinfo/posix/Europe/Kiev #usr/share/zoneinfo/posix/Europe/Lisbon @@ -2319,6 +2445,7 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/posix/Europe/Nicosia #usr/share/zoneinfo/posix/Europe/Oslo #usr/share/zoneinfo/posix/Europe/Paris +#usr/share/zoneinfo/posix/Europe/Podgorica #usr/share/zoneinfo/posix/Europe/Prague #usr/share/zoneinfo/posix/Europe/Riga #usr/share/zoneinfo/posix/Europe/Rome @@ -2337,6 +2464,7 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/posix/Europe/Vatican #usr/share/zoneinfo/posix/Europe/Vienna #usr/share/zoneinfo/posix/Europe/Vilnius +#usr/share/zoneinfo/posix/Europe/Volgograd #usr/share/zoneinfo/posix/Europe/Warsaw #usr/share/zoneinfo/posix/Europe/Zagreb #usr/share/zoneinfo/posix/Europe/Zaporozhye @@ -2459,6 +2587,7 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/right/Africa/Accra #usr/share/zoneinfo/right/Africa/Addis_Ababa #usr/share/zoneinfo/right/Africa/Algiers +#usr/share/zoneinfo/right/Africa/Asmara #usr/share/zoneinfo/right/Africa/Asmera #usr/share/zoneinfo/right/Africa/Bamako #usr/share/zoneinfo/right/Africa/Bangui @@ -2522,16 +2651,20 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/right/America/Argentina/La_Rioja #usr/share/zoneinfo/right/America/Argentina/Mendoza #usr/share/zoneinfo/right/America/Argentina/Rio_Gallegos +#usr/share/zoneinfo/right/America/Argentina/Salta #usr/share/zoneinfo/right/America/Argentina/San_Juan +#usr/share/zoneinfo/right/America/Argentina/San_Luis #usr/share/zoneinfo/right/America/Argentina/Tucuman #usr/share/zoneinfo/right/America/Argentina/Ushuaia #usr/share/zoneinfo/right/America/Aruba #usr/share/zoneinfo/right/America/Asuncion +#usr/share/zoneinfo/right/America/Atikokan #usr/share/zoneinfo/right/America/Atka #usr/share/zoneinfo/right/America/Bahia #usr/share/zoneinfo/right/America/Barbados #usr/share/zoneinfo/right/America/Belem #usr/share/zoneinfo/right/America/Belize +#usr/share/zoneinfo/right/America/Blanc-Sablon #usr/share/zoneinfo/right/America/Boa_Vista #usr/share/zoneinfo/right/America/Bogota #usr/share/zoneinfo/right/America/Boise @@ -2579,8 +2712,10 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/right/America/Indiana/Knox #usr/share/zoneinfo/right/America/Indiana/Marengo #usr/share/zoneinfo/right/America/Indiana/Petersburg +#usr/share/zoneinfo/right/America/Indiana/Tell_City #usr/share/zoneinfo/right/America/Indiana/Vevay #usr/share/zoneinfo/right/America/Indiana/Vincennes +#usr/share/zoneinfo/right/America/Indiana/Winamac #usr/share/zoneinfo/right/America/Indianapolis #usr/share/zoneinfo/right/America/Inuvik #usr/share/zoneinfo/right/America/Iqaluit @@ -2598,6 +2733,7 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/right/America/Maceio #usr/share/zoneinfo/right/America/Managua #usr/share/zoneinfo/right/America/Manaus +#usr/share/zoneinfo/right/America/Marigot #usr/share/zoneinfo/right/America/Martinique #usr/share/zoneinfo/right/America/Mazatlan #usr/share/zoneinfo/right/America/Mendoza @@ -2617,6 +2753,7 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/right/America/Noronha #usr/share/zoneinfo/right/America/North_Dakota #usr/share/zoneinfo/right/America/North_Dakota/Center +#usr/share/zoneinfo/right/America/North_Dakota/New_Salem #usr/share/zoneinfo/right/America/Panama #usr/share/zoneinfo/right/America/Pangnirtung #usr/share/zoneinfo/right/America/Paramaribo @@ -2630,13 +2767,16 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/right/America/Rankin_Inlet #usr/share/zoneinfo/right/America/Recife #usr/share/zoneinfo/right/America/Regina +#usr/share/zoneinfo/right/America/Resolute #usr/share/zoneinfo/right/America/Rio_Branco #usr/share/zoneinfo/right/America/Rosario +#usr/share/zoneinfo/right/America/Santarem #usr/share/zoneinfo/right/America/Santiago #usr/share/zoneinfo/right/America/Santo_Domingo #usr/share/zoneinfo/right/America/Sao_Paulo #usr/share/zoneinfo/right/America/Scoresbysund #usr/share/zoneinfo/right/America/Shiprock +#usr/share/zoneinfo/right/America/St_Barthelemy #usr/share/zoneinfo/right/America/St_Johns #usr/share/zoneinfo/right/America/St_Kitts #usr/share/zoneinfo/right/America/St_Lucia @@ -2697,6 +2837,7 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/right/Asia/Dushanbe #usr/share/zoneinfo/right/Asia/Gaza #usr/share/zoneinfo/right/Asia/Harbin +#usr/share/zoneinfo/right/Asia/Ho_Chi_Minh #usr/share/zoneinfo/right/Asia/Hong_Kong #usr/share/zoneinfo/right/Asia/Hovd #usr/share/zoneinfo/right/Asia/Irkutsk @@ -2708,7 +2849,9 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/right/Asia/Kamchatka #usr/share/zoneinfo/right/Asia/Karachi #usr/share/zoneinfo/right/Asia/Kashgar +#usr/share/zoneinfo/right/Asia/Kathmandu #usr/share/zoneinfo/right/Asia/Katmandu +#usr/share/zoneinfo/right/Asia/Kolkata #usr/share/zoneinfo/right/Asia/Krasnoyarsk #usr/share/zoneinfo/right/Asia/Kuala_Lumpur #usr/share/zoneinfo/right/Asia/Kuching @@ -2762,6 +2905,7 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/right/Atlantic/Canary #usr/share/zoneinfo/right/Atlantic/Cape_Verde #usr/share/zoneinfo/right/Atlantic/Faeroe +#usr/share/zoneinfo/right/Atlantic/Faroe #usr/share/zoneinfo/right/Atlantic/Jan_Mayen #usr/share/zoneinfo/right/Atlantic/Madeira #usr/share/zoneinfo/right/Atlantic/Reykjavik @@ -2776,6 +2920,7 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/right/Australia/Canberra #usr/share/zoneinfo/right/Australia/Currie #usr/share/zoneinfo/right/Australia/Darwin +#usr/share/zoneinfo/right/Australia/Eucla #usr/share/zoneinfo/right/Australia/Hobart #usr/share/zoneinfo/right/Australia/LHI #usr/share/zoneinfo/right/Australia/Lindeman @@ -2868,8 +3013,11 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/right/Europe/Copenhagen #usr/share/zoneinfo/right/Europe/Dublin #usr/share/zoneinfo/right/Europe/Gibraltar +#usr/share/zoneinfo/right/Europe/Guernsey #usr/share/zoneinfo/right/Europe/Helsinki +#usr/share/zoneinfo/right/Europe/Isle_of_Man #usr/share/zoneinfo/right/Europe/Istanbul +#usr/share/zoneinfo/right/Europe/Jersey #usr/share/zoneinfo/right/Europe/Kaliningrad #usr/share/zoneinfo/right/Europe/Kiev #usr/share/zoneinfo/right/Europe/Lisbon @@ -2885,6 +3033,7 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/right/Europe/Nicosia #usr/share/zoneinfo/right/Europe/Oslo #usr/share/zoneinfo/right/Europe/Paris +#usr/share/zoneinfo/right/Europe/Podgorica #usr/share/zoneinfo/right/Europe/Prague #usr/share/zoneinfo/right/Europe/Riga #usr/share/zoneinfo/right/Europe/Rome @@ -2903,6 +3052,7 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/right/Europe/Vatican #usr/share/zoneinfo/right/Europe/Vienna #usr/share/zoneinfo/right/Europe/Vilnius +#usr/share/zoneinfo/right/Europe/Volgograd #usr/share/zoneinfo/right/Europe/Warsaw #usr/share/zoneinfo/right/Europe/Zagreb #usr/share/zoneinfo/right/Europe/Zaporozhye @@ -3019,3 +3169,5 @@ usr/share/zoneinfo/posix #usr/share/zoneinfo/right/WET #usr/share/zoneinfo/right/Zulu #usr/share/zoneinfo/zone.tab +#var/cache/ldconfig +#var/cache/ldconfig/aux-cache diff --git a/config/rootfiles/common/i586/grub b/config/rootfiles/common/i586/grub index e466ff0f5..3e1ec189f 100644 --- a/config/rootfiles/common/i586/grub +++ b/config/rootfiles/common/i586/grub @@ -7,11 +7,13 @@ boot/grub/stage2 #usr/info/grub.info #usr/info/multiboot.info #usr/man/man1/mbchk.1 +#usr/man/man8/grub-crypt.8 #usr/man/man8/grub-install.8 #usr/man/man8/grub-md5-crypt.8 #usr/man/man8/grub-terminfo.8 #usr/man/man8/grub.8 usr/sbin/grub +usr/sbin/grub-crypt usr/sbin/grub-install usr/sbin/grub-md5-crypt usr/sbin/grub-terminfo diff --git a/config/rootfiles/common/iproute2 b/config/rootfiles/common/iproute2 index 8f179d7f5..bb4c05b48 100644 --- a/config/rootfiles/common/iproute2 +++ b/config/rootfiles/common/iproute2 @@ -1,11 +1,14 @@ #etc/iproute2 etc/iproute2/ematch_map +etc/iproute2/group etc/iproute2/rt_dsfield etc/iproute2/rt_protos etc/iproute2/rt_realms etc/iproute2/rt_scopes etc/iproute2/rt_tables +sbin/bridge sbin/ctstat +sbin/genl sbin/ifcfg sbin/ifstat sbin/ip @@ -24,7 +27,6 @@ sbin/tc #usr/lib/tc/normal.dist #usr/lib/tc/pareto.dist #usr/lib/tc/paretonormal.dist -#usr/lib/tc/q_netem.so usr/sbin/arpd #usr/share/doc/iproute2 #usr/share/doc/iproute2/SNAPSHOT.tex @@ -50,6 +52,7 @@ usr/sbin/arpd #usr/share/doc/iproute2/examples/diffserv/ef-prio #usr/share/doc/iproute2/examples/diffserv/efcbq #usr/share/doc/iproute2/examples/diffserv/regression-testing +#usr/share/doc/iproute2/examples/gaiconf #usr/share/doc/iproute2/ip-cref.tex #usr/share/doc/iproute2/ip-tunnels.tex #usr/share/doc/iproute2/nstat.sgml @@ -57,16 +60,48 @@ usr/sbin/arpd #usr/share/doc/iproute2/rtstat.sgml #usr/share/doc/iproute2/ss.sgml #usr/share/man/man3/libnetlink.3 +#usr/share/man/man8/arpd.8 +#usr/share/man/man8/bridge.8 +#usr/share/man/man8/ctstat.8 +#usr/share/man/man8/ip-address.8 +#usr/share/man/man8/ip-addrlabel.8 +#usr/share/man/man8/ip-link.8 +#usr/share/man/man8/ip-maddress.8 +#usr/share/man/man8/ip-monitor.8 +#usr/share/man/man8/ip-mroute.8 +#usr/share/man/man8/ip-neighbour.8 +#usr/share/man/man8/ip-netns.8 +#usr/share/man/man8/ip-ntable.8 +#usr/share/man/man8/ip-route.8 +#usr/share/man/man8/ip-rule.8 +#usr/share/man/man8/ip-tunnel.8 +#usr/share/man/man8/ip-xfrm.8 #usr/share/man/man8/ip.8 +#usr/share/man/man8/lnstat.8 +#usr/share/man/man8/nstat.8 +#usr/share/man/man8/routef.8 +#usr/share/man/man8/routel.8 +#usr/share/man/man8/rtacct.8 +#usr/share/man/man8/rtmon.8 +#usr/share/man/man8/rtstat.8 +#usr/share/man/man8/ss.8 #usr/share/man/man8/tc-bfifo.8 #usr/share/man/man8/tc-cbq-details.8 #usr/share/man/man8/tc-cbq.8 +#usr/share/man/man8/tc-choke.8 +#usr/share/man/man8/tc-codel.8 +#usr/share/man/man8/tc-drr.8 +#usr/share/man/man8/tc-fq_codel.8 +#usr/share/man/man8/tc-hfsc.8 #usr/share/man/man8/tc-htb.8 -#usr/share/man/man8/tc-pbfifo.8 +#usr/share/man/man8/tc-netem.8 #usr/share/man/man8/tc-pfifo.8 #usr/share/man/man8/tc-pfifo_fast.8 #usr/share/man/man8/tc-prio.8 #usr/share/man/man8/tc-red.8 +#usr/share/man/man8/tc-sfb.8 #usr/share/man/man8/tc-sfq.8 +#usr/share/man/man8/tc-stab.8 #usr/share/man/man8/tc-tbf.8 #usr/share/man/man8/tc.8 +var/lib/arpd diff --git a/config/rootfiles/common/iptstate b/config/rootfiles/common/iptstate deleted file mode 100644 index 57b6d0f77..000000000 --- a/config/rootfiles/common/iptstate +++ /dev/null @@ -1,2 +0,0 @@ -usr/sbin/iptstate -#usr/share/man/man8/iptstate.8 diff --git a/config/rootfiles/common/libaal b/config/rootfiles/common/libaal deleted file mode 100644 index de785ebc0..000000000 --- a/config/rootfiles/common/libaal +++ /dev/null @@ -1,31 +0,0 @@ -#usr/include/aal -#usr/include/aal/bitops.h -#usr/include/aal/block.h -#usr/include/aal/debug.h -#usr/include/aal/device.h -#usr/include/aal/endian.h -#usr/include/aal/exception.h -#usr/include/aal/file.h -#usr/include/aal/gauge.h -#usr/include/aal/hash.h -#usr/include/aal/libaal.h -#usr/include/aal/list.h -#usr/include/aal/malloc.h -#usr/include/aal/math.h -#usr/include/aal/print.h -#usr/include/aal/stream.h -#usr/include/aal/string.h -#usr/include/aal/types.h -#usr/include/aal/ui.h -#usr/include/aal/unaligned.h -usr/lib/libaal-1.0.so.5 -usr/lib/libaal-1.0.so.5.0.0 -#usr/lib/libaal-minimal.a -#usr/lib/libaal-minimal.la -usr/lib/libaal-minimal.so -usr/lib/libaal-minimal.so.0 -usr/lib/libaal-minimal.so.0.0.0 -#usr/lib/libaal.a -#usr/lib/libaal.la -usr/lib/libaal.so -#usr/share/aclocal/libaal.m4 diff --git a/config/rootfiles/common/libffi b/config/rootfiles/common/libffi new file mode 100644 index 000000000..2c887bdb3 --- /dev/null +++ b/config/rootfiles/common/libffi @@ -0,0 +1,15 @@ +#usr/lib/libffi-3.0.11 +#usr/lib/libffi-3.0.11/include +#usr/lib/libffi-3.0.11/include/ffi.h +#usr/lib/libffi-3.0.11/include/ffitarget.h +#usr/lib/libffi.a +#usr/lib/libffi.la +#usr/lib/libffi.so +usr/lib/libffi.so.6 +usr/lib/libffi.so.6.0.0 +#usr/lib/pkgconfig/libffi.pc +#usr/share/info/libffi.info +#usr/share/man/man3/ffi.3 +#usr/share/man/man3/ffi_call.3 +#usr/share/man/man3/ffi_prep_cif.3 +#usr/share/man/man3/ffi_prep_cif_var.3 diff --git a/config/rootfiles/common/libsafe b/config/rootfiles/common/libsafe deleted file mode 100644 index 8275e4aa4..000000000 --- a/config/rootfiles/common/libsafe +++ /dev/null @@ -1,4 +0,0 @@ -etc/ld.so.preload -lib/libsafe.so.2 -lib/libsafe.so.2.0.16 -#usr/man/man8/libsafe.8 diff --git a/config/rootfiles/common/libsigc++ b/config/rootfiles/common/libsigc++ index 39029d3e9..a05b64bed 100644 --- a/config/rootfiles/common/libsigc++ +++ b/config/rootfiles/common/libsigc++ @@ -78,7 +78,7 @@ #usr/include/sigc++-2.0/sigc++/visit_each.h #usr/lib/libsigc-2.0.a #usr/lib/libsigc-2.0.la -usr/lib/libsigc-2.0.so +#usr/lib/libsigc-2.0.so usr/lib/libsigc-2.0.so.0 usr/lib/libsigc-2.0.so.0.0.0 #usr/lib/pkgconfig/sigc++-2.0.pc @@ -157,6 +157,7 @@ usr/lib/libsigc-2.0.so.0.0.0 #usr/share/doc/libsigc-2.0/docs/reference/html/classes.html #usr/share/doc/libsigc-2.0/docs/reference/html/classinternal_1_1lambda__core.html #usr/share/doc/libsigc-2.0/docs/reference/html/classinternal_1_1lambda__core__inherit__graph.png +#usr/share/doc/libsigc-2.0/docs/reference/html/classnil.html #usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__argument-members.html #usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__argument.html #usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__argument_3_01const__reference__wrapper_3_01T__wrapped_01_4_01_4-members.html @@ -460,15 +461,6 @@ usr/lib/libsigc-2.0.so.0.0.0 #usr/share/doc/libsigc-2.0/docs/reference/html/connection_8h.html #usr/share/doc/libsigc-2.0/docs/reference/html/deduce__result__type_8h.html #usr/share/doc/libsigc-2.0/docs/reference/html/deprecated.html -#usr/share/doc/libsigc-2.0/docs/reference/html/dir__2Fhome_2Fmurrayc_2Fcvs_2Fgnome214_2Flibsigc_2B_2B2_2Fsigc_2B_2B_2F.html -#usr/share/doc/libsigc-2.0/docs/reference/html/dir__2Fhome_2Fmurrayc_2Fcvs_2Fgnome214_2Flibsigc_2B_2B2_2Fsigc_2B_2B_2F_dep.png -#usr/share/doc/libsigc-2.0/docs/reference/html/dir__2Fhome_2Fmurrayc_2Fcvs_2Fgnome214_2Flibsigc_2B_2B2_2Fsigc_2B_2B_2Fadaptors_2F.html -#usr/share/doc/libsigc-2.0/docs/reference/html/dir__2Fhome_2Fmurrayc_2Fcvs_2Fgnome214_2Flibsigc_2B_2B2_2Fsigc_2B_2B_2Fadaptors_2F_dep.png -#usr/share/doc/libsigc-2.0/docs/reference/html/dir__2Fhome_2Fmurrayc_2Fcvs_2Fgnome214_2Flibsigc_2B_2B2_2Fsigc_2B_2B_2Fadaptors_2Flambda_2F.html -#usr/share/doc/libsigc-2.0/docs/reference/html/dir__2Fhome_2Fmurrayc_2Fcvs_2Fgnome214_2Flibsigc_2B_2B2_2Fsigc_2B_2B_2Fadaptors_2Flambda_2F_dep.png -#usr/share/doc/libsigc-2.0/docs/reference/html/dir__2Fhome_2Fmurrayc_2Fcvs_2Fgnome214_2Flibsigc_2B_2B2_2Fsigc_2B_2B_2Ffunctors_2F.html -#usr/share/doc/libsigc-2.0/docs/reference/html/dir__2Fhome_2Fmurrayc_2Fcvs_2Fgnome214_2Flibsigc_2B_2B2_2Fsigc_2B_2B_2Ffunctors_2F_dep.png -#usr/share/doc/libsigc-2.0/docs/reference/html/dirs.html #usr/share/doc/libsigc-2.0/docs/reference/html/doxygen.css #usr/share/doc/libsigc-2.0/docs/reference/html/doxygen.png #usr/share/doc/libsigc-2.0/docs/reference/html/exception__catch_8h.html @@ -515,15 +507,40 @@ usr/lib/libsigc-2.0.so.0.0.0 #usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x7e.html #usr/share/doc/libsigc-2.0/docs/reference/html/functions_rela.html #usr/share/doc/libsigc-2.0/docs/reference/html/functions_type.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x63.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x64.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x65.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x66.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x67.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x69.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x6c.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x6f.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x70.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x72.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x73.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x74.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x76.html #usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x61.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x62.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x63.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x64.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x65.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x66.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x67.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x69.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x6c.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x6f.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x70.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x72.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x73.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x74.html +#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x76.html #usr/share/doc/libsigc-2.0/docs/reference/html/functor__trait_8h.html #usr/share/doc/libsigc-2.0/docs/reference/html/functors_2slot_8h.html #usr/share/doc/libsigc-2.0/docs/reference/html/functors_8h.html #usr/share/doc/libsigc-2.0/docs/reference/html/globals.html #usr/share/doc/libsigc-2.0/docs/reference/html/globals_defs.html -#usr/share/doc/libsigc-2.0/docs/reference/html/globals_func.html -#usr/share/doc/libsigc-2.0/docs/reference/html/globals_type.html -#usr/share/doc/libsigc-2.0/docs/reference/html/globals_vars.html #usr/share/doc/libsigc-2.0/docs/reference/html/graph_legend.dot #usr/share/doc/libsigc-2.0/docs/reference/html/graph_legend.html #usr/share/doc/libsigc-2.0/docs/reference/html/graph_legend.png @@ -740,6 +757,7 @@ usr/lib/libsigc-2.0.so.0.0.0 #usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__260.png #usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__261.png #usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__262.png +#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__263.png #usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__27.png #usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__28.png #usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__29.png @@ -828,7 +846,33 @@ usr/lib/libsigc-2.0.so.0.0.0 #usr/share/doc/libsigc-2.0/docs/reference/html/modules.html #usr/share/doc/libsigc-2.0/docs/reference/html/namespaceSigC.html #usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x62.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x63.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x64.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x65.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x66.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x67.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x68.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x6d.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x6f.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x70.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x72.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x73.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x75.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x76.html #usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x63.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x64.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x65.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x67.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x68.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x6d.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x6f.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x70.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x72.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x73.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x75.html +#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x76.html #usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_type.html #usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_vars.html #usr/share/doc/libsigc-2.0/docs/reference/html/namespaces.html diff --git a/config/rootfiles/common/misc-progs b/config/rootfiles/common/misc-progs index 3c0b398d3..2d6b2e2cb 100644 --- a/config/rootfiles/common/misc-progs +++ b/config/rootfiles/common/misc-progs @@ -7,7 +7,6 @@ usr/local/bin/extrahdctrl usr/local/bin/fireinfoctrl usr/local/bin/getconntracktable usr/local/bin/getipstat -usr/local/bin/getiptstate #usr/local/bin/iowrap usr/local/bin/ipfirereboot usr/local/bin/ipsecctrl diff --git a/config/rootfiles/common/mpfr b/config/rootfiles/common/mpfr new file mode 100644 index 000000000..e4f33374b --- /dev/null +++ b/config/rootfiles/common/mpfr @@ -0,0 +1,21 @@ +#usr/include/mpf2mpfr.h +#usr/include/mpfr.h +#usr/lib/libmpfr.a +#usr/lib/libmpfr.la +#usr/lib/libmpfr.so +usr/lib/libmpfr.so.1 +usr/lib/libmpfr.so.1.2.2 +#usr/share/doc/mpfr +#usr/share/doc/mpfr/AUTHORS +#usr/share/doc/mpfr/BUGS +#usr/share/doc/mpfr/COPYING +#usr/share/doc/mpfr/COPYING.LIB +#usr/share/doc/mpfr/FAQ.html +#usr/share/doc/mpfr/NEWS +#usr/share/doc/mpfr/TODO +#usr/share/doc/mpfr/examples +#usr/share/doc/mpfr/examples/ReadMe +#usr/share/doc/mpfr/examples/divworst.c +#usr/share/doc/mpfr/examples/rndo-add.c +#usr/share/doc/mpfr/examples/sample.c +#usr/share/info/mpfr.info diff --git a/config/rootfiles/common/nasm b/config/rootfiles/common/nasm index 8f2085005..9d3e19623 100644 --- a/config/rootfiles/common/nasm +++ b/config/rootfiles/common/nasm @@ -1,4 +1,4 @@ #usr/bin/nasm #usr/bin/ndisasm -#usr/man/man1/nasm.1 -#usr/man/man1/ndisasm.1 +#usr/share/man/man1/nasm.1 +#usr/share/man/man1/ndisasm.1 diff --git a/config/rootfiles/common/ncurses b/config/rootfiles/common/ncurses index ed892d6d0..122dc823a 100644 --- a/config/rootfiles/common/ncurses +++ b/config/rootfiles/common/ncurses @@ -1,11 +1,11 @@ -lib/libncursesw.so.5 -lib/libncursesw.so.5.5 #usr/bin/captoinfo usr/bin/clear #usr/bin/infocmp #usr/bin/infotocap -#usr/bin/reset -#usr/bin/tack +#usr/bin/ncurses5-config +#usr/bin/ncursesw5-config +usr/bin/reset +#usr/bin/tabs #usr/bin/tic #usr/bin/toe usr/bin/tput @@ -21,64 +21,106 @@ usr/bin/tput #usr/include/etip.h #usr/include/form.h #usr/include/menu.h +#usr/include/nc_tparm.h #usr/include/ncurses.h #usr/include/ncurses_dll.h #usr/include/panel.h #usr/include/term.h +#usr/include/term_entry.h #usr/include/termcap.h +#usr/include/tic.h #usr/include/unctrl.h #usr/lib/libcurses.a #usr/lib/libcurses.so -#usr/lib/libcursesw.a #usr/lib/libcursesw.so #usr/lib/libform.a -usr/lib/libform.so +#usr/lib/libform.so +usr/lib/libform.so.5 +usr/lib/libform.so.5.9 #usr/lib/libformw.a -usr/lib/libformw.so +#usr/lib/libformw.so usr/lib/libformw.so.5 -usr/lib/libformw.so.5.5 +usr/lib/libformw.so.5.9 #usr/lib/libmenu.a #usr/lib/libmenu.so +usr/lib/libmenu.so.5 +usr/lib/libmenu.so.5.9 #usr/lib/libmenuw.a -usr/lib/libmenuw.so +#usr/lib/libmenuw.so usr/lib/libmenuw.so.5 -usr/lib/libmenuw.so.5.5 -#usr/lib/libncurses++.a4 +usr/lib/libmenuw.so.5.9 +#usr/lib/libncurses++.a #usr/lib/libncurses++w.a #usr/lib/libncurses.a -usr/lib/libncurses.so +#usr/lib/libncurses.so +usr/lib/libncurses.so.5 +usr/lib/libncurses.so.5.9 #usr/lib/libncursesw.a #usr/lib/libncursesw.so -#usr/lib/libncursesw.so.5.5 +usr/lib/libncursesw.so.5 +usr/lib/libncursesw.so.5.9 #usr/lib/libpanel.a -usr/lib/libpanel.so +#usr/lib/libpanel.so +usr/lib/libpanel.so.5 +usr/lib/libpanel.so.5.9 #usr/lib/libpanelw.a -usr/lib/libpanelw.so +#usr/lib/libpanelw.so usr/lib/libpanelw.so.5 -usr/lib/libpanelw.so.5.5 +usr/lib/libpanelw.so.5.9 +#usr/lib/libtermcap.so +#usr/lib/libtic.a +#usr/lib/libtic.so +usr/lib/libtic.so.5 +usr/lib/libtic.so.5.9 +#usr/lib/libtinfo.a +#usr/lib/libtinfo.so +usr/lib/libtinfo.so.5 +usr/lib/libtinfo.so.5.9 #usr/lib/terminfo #usr/man/man1/captoinfo.1m #usr/man/man1/clear.1 #usr/man/man1/infocmp.1m #usr/man/man1/infotocap.1m +#usr/man/man1/ncursesw5-config.1 #usr/man/man1/reset.1 -#usr/man/man1/tack.1 +#usr/man/man1/tabs.1 #usr/man/man1/tic.1m #usr/man/man1/toe.1m #usr/man/man1/tput.1 #usr/man/man1/tset.1 -#usr/man/man3 +#usr/man/man3/BC.3x +#usr/man/man3/COLORS.3x #usr/man/man3/COLOR_PAIR.3x +#usr/man/man3/COLOR_PAIRS.3x +#usr/man/man3/COLS.3x +#usr/man/man3/ESCDELAY.3x +#usr/man/man3/LINES.3x #usr/man/man3/PAIR_NUMBER.3x +#usr/man/man3/PC.3x +#usr/man/man3/SP.3x +#usr/man/man3/TABSIZE.3x +#usr/man/man3/TYPE_ALNUM.3x +#usr/man/man3/TYPE_ALPHA.3x +#usr/man/man3/TYPE_ENUM.3x +#usr/man/man3/TYPE_INTEGER.3x +#usr/man/man3/TYPE_IPV4.3x +#usr/man/man3/TYPE_NUMERIC.3x +#usr/man/man3/TYPE_REGEXP.3x +#usr/man/man3/UP.3x +#usr/man/man3/_nc_free_and_exit.3x +#usr/man/man3/_nc_freeall.3x #usr/man/man3/_nc_tracebits.3x #usr/man/man3/_traceattr.3x #usr/man/man3/_traceattr2.3x +#usr/man/man3/_tracecchar_t.3x +#usr/man/man3/_tracecchar_t2.3x #usr/man/man3/_tracechar.3x #usr/man/man3/_tracechtype.3x #usr/man/man3/_tracechtype2.3x #usr/man/man3/_tracedump.3x #usr/man/man3/_tracef.3x #usr/man/man3/_tracemouse.3x +#usr/man/man3/acs_map.3x #usr/man/man3/add_wch.3x #usr/man/man3/add_wchnstr.3x #usr/man/man3/add_wchstr.3x @@ -90,6 +132,7 @@ usr/lib/libpanelw.so.5.5 #usr/man/man3/addstr.3x #usr/man/man3/addwstr.3x #usr/man/man3/assume_default_colors.3x +#usr/man/man3/assume_default_colors_sp.3x #usr/man/man3/attr_get.3x #usr/man/man3/attr_off.3x #usr/man/man3/attr_on.3x @@ -98,26 +141,36 @@ usr/lib/libpanelw.so.5.5 #usr/man/man3/attron.3x #usr/man/man3/attrset.3x #usr/man/man3/baudrate.3x +#usr/man/man3/baudrate_sp.3x #usr/man/man3/beep.3x +#usr/man/man3/beep_sp.3x #usr/man/man3/bkgd.3x #usr/man/man3/bkgdset.3x #usr/man/man3/bkgrnd.3x #usr/man/man3/bkgrndset.3x +#usr/man/man3/boolcodes.3x +#usr/man/man3/boolfnames.3x +#usr/man/man3/boolnames.3x #usr/man/man3/border.3x #usr/man/man3/border_set.3x #usr/man/man3/bottom_panel.3x #usr/man/man3/box.3x #usr/man/man3/box_set.3x #usr/man/man3/can_change_color.3x +#usr/man/man3/can_change_color_sp.3x #usr/man/man3/cbreak.3x +#usr/man/man3/cbreak_sp.3x +#usr/man/man3/ceiling_panel.3x #usr/man/man3/chgat.3x #usr/man/man3/clear.3x #usr/man/man3/clearok.3x #usr/man/man3/clrtobot.3x #usr/man/man3/clrtoeol.3x #usr/man/man3/color_content.3x +#usr/man/man3/color_content_sp.3x #usr/man/man3/color_set.3x #usr/man/man3/copywin.3x +#usr/man/man3/cur_term.3x #usr/man/man3/current_field.3x #usr/man/man3/current_item.3x #usr/man/man3/curs_add_wch.3x @@ -156,8 +209,11 @@ usr/lib/libpanelw.so.5.5 #usr/man/man3/curs_instr.3x #usr/man/man3/curs_inwstr.3x #usr/man/man3/curs_kernel.3x +#usr/man/man3/curs_legacy.3x +#usr/man/man3/curs_memleaks.3x #usr/man/man3/curs_mouse.3x #usr/man/man3/curs_move.3x +#usr/man/man3/curs_opaque.3x #usr/man/man3/curs_outopts.3x #usr/man/man3/curs_overlay.3x #usr/man/man3/curs_pad.3x @@ -168,39 +224,53 @@ usr/lib/libpanelw.so.5.5 #usr/man/man3/curs_scr_dump.3x #usr/man/man3/curs_scroll.3x #usr/man/man3/curs_set.3x +#usr/man/man3/curs_set_sp.3x #usr/man/man3/curs_slk.3x +#usr/man/man3/curs_sp_funcs.3x #usr/man/man3/curs_termattrs.3x #usr/man/man3/curs_termcap.3x #usr/man/man3/curs_terminfo.3x +#usr/man/man3/curs_threads.3x #usr/man/man3/curs_touch.3x #usr/man/man3/curs_trace.3x #usr/man/man3/curs_util.3x +#usr/man/man3/curs_variables.3x #usr/man/man3/curs_window.3x +#usr/man/man3/curscr.3x #usr/man/man3/curses_version.3x #usr/man/man3/data_ahead.3x #usr/man/man3/data_behind.3x #usr/man/man3/def_prog_mode.3x +#usr/man/man3/def_prog_mode_sp.3x #usr/man/man3/def_shell_mode.3x +#usr/man/man3/def_shell_mode_sp.3x #usr/man/man3/default_colors.3x #usr/man/man3/define_key.3x +#usr/man/man3/define_key_sp.3x #usr/man/man3/del_curterm.3x +#usr/man/man3/del_curterm_sp.3x #usr/man/man3/del_panel.3x #usr/man/man3/delay_output.3x +#usr/man/man3/delay_output_sp.3x #usr/man/man3/delch.3x #usr/man/man3/deleteln.3x #usr/man/man3/delscreen.3x #usr/man/man3/delwin.3x #usr/man/man3/derwin.3x #usr/man/man3/doupdate.3x +#usr/man/man3/doupdate_sp.3x #usr/man/man3/dup_field.3x #usr/man/man3/dupwin.3x #usr/man/man3/dynamic_field_info.3x #usr/man/man3/echo.3x +#usr/man/man3/echo_sp.3x #usr/man/man3/echo_wchar.3x #usr/man/man3/echochar.3x #usr/man/man3/endwin.3x +#usr/man/man3/endwin_sp.3x #usr/man/man3/erase.3x #usr/man/man3/erasechar.3x +#usr/man/man3/erasechar_sp.3x #usr/man/man3/erasewchar.3x #usr/man/man3/field_arg.3x #usr/man/man3/field_back.3x @@ -220,8 +290,11 @@ usr/lib/libpanelw.so.5.5 #usr/man/man3/field_type.3x #usr/man/man3/field_userptr.3x #usr/man/man3/filter.3x +#usr/man/man3/filter_sp.3x #usr/man/man3/flash.3x +#usr/man/man3/flash_sp.3x #usr/man/man3/flushinp.3x +#usr/man/man3/flushinp_sp.3x #usr/man/man3/form.3x #usr/man/man3/form_cursor.3x #usr/man/man3/form_data.3x @@ -252,33 +325,55 @@ usr/lib/libpanelw.so.5.5 #usr/man/man3/form_sub.3x #usr/man/man3/form_term.3x #usr/man/man3/form_userptr.3x +#usr/man/man3/form_variables.3x #usr/man/man3/form_win.3x #usr/man/man3/free_field.3x #usr/man/man3/free_fieldtype.3x #usr/man/man3/free_form.3x #usr/man/man3/free_item.3x #usr/man/man3/free_menu.3x +#usr/man/man3/get_escdelay.3x +#usr/man/man3/get_escdelay_sp.3x #usr/man/man3/get_wch.3x #usr/man/man3/get_wstr.3x +#usr/man/man3/getattrs.3x +#usr/man/man3/getbegx.3x +#usr/man/man3/getbegy.3x #usr/man/man3/getbegyx.3x #usr/man/man3/getbkgd.3x #usr/man/man3/getbkgrnd.3x #usr/man/man3/getcchar.3x #usr/man/man3/getch.3x +#usr/man/man3/getcurx.3x +#usr/man/man3/getcury.3x +#usr/man/man3/getmaxx.3x +#usr/man/man3/getmaxy.3x #usr/man/man3/getmaxyx.3x #usr/man/man3/getmouse.3x +#usr/man/man3/getmouse_sp.3x #usr/man/man3/getn_wstr.3x #usr/man/man3/getnstr.3x +#usr/man/man3/getparx.3x +#usr/man/man3/getpary.3x #usr/man/man3/getparyx.3x #usr/man/man3/getstr.3x #usr/man/man3/getsyx.3x #usr/man/man3/getwin.3x +#usr/man/man3/getwin_sp.3x #usr/man/man3/getyx.3x +#usr/man/man3/ground_panel.3x #usr/man/man3/halfdelay.3x +#usr/man/man3/halfdelay_sp.3x #usr/man/man3/has_colors.3x +#usr/man/man3/has_colors_sp.3x #usr/man/man3/has_ic.3x +#usr/man/man3/has_ic_sp.3x #usr/man/man3/has_il.3x +#usr/man/man3/has_il_sp.3x #usr/man/man3/has_key.3x +#usr/man/man3/has_key_sp.3x +#usr/man/man3/has_mouse.3x +#usr/man/man3/has_mouse_sp.3x #usr/man/man3/hide_panel.3x #usr/man/man3/hline.3x #usr/man/man3/hline_set.3x @@ -292,7 +387,9 @@ usr/lib/libpanelw.so.5.5 #usr/man/man3/inchnstr.3x #usr/man/man3/inchstr.3x #usr/man/man3/init_color.3x +#usr/man/man3/init_color_sp.3x #usr/man/man3/init_pair.3x +#usr/man/man3/init_pair_sp.3x #usr/man/man3/initscr.3x #usr/man/man3/innstr.3x #usr/man/man3/innwstr.3x @@ -306,11 +403,26 @@ usr/lib/libpanelw.so.5.5 #usr/man/man3/insstr.3x #usr/man/man3/instr.3x #usr/man/man3/intrflush.3x +#usr/man/man3/intrflush_sp.3x #usr/man/man3/inwstr.3x +#usr/man/man3/is_cleared.3x +#usr/man/man3/is_idcok.3x +#usr/man/man3/is_idlok.3x +#usr/man/man3/is_immedok.3x +#usr/man/man3/is_keypad.3x +#usr/man/man3/is_leaveok.3x #usr/man/man3/is_linetouched.3x +#usr/man/man3/is_nodelay.3x +#usr/man/man3/is_notimeout.3x +#usr/man/man3/is_pad.3x +#usr/man/man3/is_scrollok.3x +#usr/man/man3/is_subwin.3x +#usr/man/man3/is_syncok.3x #usr/man/man3/is_term_resized.3x +#usr/man/man3/is_term_resized_sp.3x #usr/man/man3/is_wintouched.3x #usr/man/man3/isendwin.3x +#usr/man/man3/isendwin_sp.3x #usr/man/man3/item_count.3x #usr/man/man3/item_description.3x #usr/man/man3/item_index.3x @@ -324,18 +436,25 @@ usr/lib/libpanelw.so.5.5 #usr/man/man3/item_value.3x #usr/man/man3/item_visible.3x #usr/man/man3/key_defined.3x +#usr/man/man3/key_defined_sp.3x #usr/man/man3/key_name.3x #usr/man/man3/keybound.3x +#usr/man/man3/keybound_sp.3x #usr/man/man3/keyname.3x +#usr/man/man3/keyname_sp.3x #usr/man/man3/keyok.3x +#usr/man/man3/keyok_sp.3x #usr/man/man3/keypad.3x #usr/man/man3/killchar.3x +#usr/man/man3/killchar_sp.3x #usr/man/man3/killwchar.3x #usr/man/man3/leaveok.3x +#usr/man/man3/legacy_coding.3x #usr/man/man3/link_field.3x #usr/man/man3/link_fieldtype.3x #usr/man/man3/longname.3x #usr/man/man3/mcprint.3x +#usr/man/man3/mcprint_sp.3x #usr/man/man3/menu.3x #usr/man/man3/menu_attributes.3x #usr/man/man3/menu_back.3x @@ -373,7 +492,9 @@ usr/lib/libpanelw.so.5.5 #usr/man/man3/mitem_visible.3x #usr/man/man3/mouse_trafo.3x #usr/man/man3/mouseinterval.3x +#usr/man/man3/mouseinterval_sp.3x #usr/man/man3/mousemask.3x +#usr/man/man3/mousemask_sp.3x #usr/man/man3/move.3x #usr/man/man3/move_field.3x #usr/man/man3/move_panel.3x @@ -389,6 +510,7 @@ usr/lib/libpanelw.so.5.5 #usr/man/man3/mvaddwstr.3x #usr/man/man3/mvchgat.3x #usr/man/man3/mvcur.3x +#usr/man/man3/mvcur_sp.3x #usr/man/man3/mvdelch.3x #usr/man/man3/mvderwin.3x #usr/man/man3/mvget_wch.3x @@ -461,28 +583,49 @@ usr/lib/libpanelw.so.5.5 #usr/man/man3/mvwvline.3x #usr/man/man3/mvwvline_set.3x #usr/man/man3/napms.3x +#usr/man/man3/napms_sp.3x #usr/man/man3/ncurses.3x #usr/man/man3/new_field.3x #usr/man/man3/new_fieldtype.3x #usr/man/man3/new_form.3x +#usr/man/man3/new_form_sp.3x #usr/man/man3/new_item.3x #usr/man/man3/new_menu.3x +#usr/man/man3/new_menu_sp.3x #usr/man/man3/new_page.3x #usr/man/man3/new_panel.3x +#usr/man/man3/new_prescr.3x #usr/man/man3/newpad.3x +#usr/man/man3/newpad_sp.3x +#usr/man/man3/newscr.3x #usr/man/man3/newterm.3x +#usr/man/man3/newterm_sp.3x #usr/man/man3/newwin.3x +#usr/man/man3/newwin_sp.3x #usr/man/man3/nl.3x +#usr/man/man3/nl_sp.3x #usr/man/man3/nocbreak.3x +#usr/man/man3/nocbreak_sp.3x #usr/man/man3/nodelay.3x #usr/man/man3/noecho.3x +#usr/man/man3/noecho_sp.3x +#usr/man/man3/nofilter.3x +#usr/man/man3/nofilter_sp.3x #usr/man/man3/nonl.3x +#usr/man/man3/nonl_sp.3x #usr/man/man3/noqiflush.3x +#usr/man/man3/noqiflush_sp.3x #usr/man/man3/noraw.3x +#usr/man/man3/noraw_sp.3x #usr/man/man3/notimeout.3x +#usr/man/man3/numcodes.3x +#usr/man/man3/numfnames.3x +#usr/man/man3/numnames.3x +#usr/man/man3/ospeed.3x #usr/man/man3/overlay.3x #usr/man/man3/overwrite.3x #usr/man/man3/pair_content.3x +#usr/man/man3/pair_content_sp.3x #usr/man/man3/panel.3x #usr/man/man3/panel_above.3x #usr/man/man3/panel_below.3x @@ -499,33 +642,50 @@ usr/lib/libpanelw.so.5.5 #usr/man/man3/prefresh.3x #usr/man/man3/printw.3x #usr/man/man3/putp.3x +#usr/man/man3/putp_sp.3x #usr/man/man3/putwin.3x #usr/man/man3/qiflush.3x +#usr/man/man3/qiflush_sp.3x #usr/man/man3/raw.3x +#usr/man/man3/raw_sp.3x #usr/man/man3/redrawwin.3x #usr/man/man3/refresh.3x #usr/man/man3/replace_panel.3x #usr/man/man3/reset_prog_mode.3x +#usr/man/man3/reset_prog_mode_sp.3x #usr/man/man3/reset_shell_mode.3x +#usr/man/man3/reset_shell_mode_sp.3x #usr/man/man3/resetty.3x +#usr/man/man3/resetty_sp.3x #usr/man/man3/resize_term.3x +#usr/man/man3/resize_term_sp.3x #usr/man/man3/resizeterm.3x +#usr/man/man3/resizeterm_sp.3x #usr/man/man3/restartterm.3x +#usr/man/man3/restartterm_sp.3x #usr/man/man3/ripoffline.3x +#usr/man/man3/ripoffline_sp.3x #usr/man/man3/savetty.3x +#usr/man/man3/savetty_sp.3x #usr/man/man3/scale_form.3x #usr/man/man3/scale_menu.3x #usr/man/man3/scanw.3x #usr/man/man3/scr_dump.3x #usr/man/man3/scr_init.3x +#usr/man/man3/scr_init_sp.3x #usr/man/man3/scr_restore.3x +#usr/man/man3/scr_restore_sp.3x #usr/man/man3/scr_set.3x +#usr/man/man3/scr_set_sp.3x #usr/man/man3/scrl.3x #usr/man/man3/scroll.3x #usr/man/man3/scrollok.3x #usr/man/man3/set_current_field.3x #usr/man/man3/set_current_item.3x #usr/man/man3/set_curterm.3x +#usr/man/man3/set_curterm_sp.3x +#usr/man/man3/set_escdelay.3x +#usr/man/man3/set_escdelay_sp.3x #usr/man/man3/set_field_back.3x #usr/man/man3/set_field_buffer.3x #usr/man/man3/set_field_fore.3x @@ -570,6 +730,8 @@ usr/lib/libpanelw.so.5.5 #usr/man/man3/set_menu_win.3x #usr/man/man3/set_new_page.3x #usr/man/man3/set_panel_userptr.3x +#usr/man/man3/set_tabsize.3x +#usr/man/man3/set_tabsize_sp.3x #usr/man/man3/set_term.3x #usr/man/man3/set_top_row.3x #usr/man/man3/setcchar.3x @@ -582,59 +744,109 @@ usr/lib/libpanelw.so.5.5 #usr/man/man3/slk_attr_off.3x #usr/man/man3/slk_attr_on.3x #usr/man/man3/slk_attr_set.3x +#usr/man/man3/slk_attr_set_sp.3x +#usr/man/man3/slk_attr_sp.3x #usr/man/man3/slk_attroff.3x +#usr/man/man3/slk_attroff_sp.3x #usr/man/man3/slk_attron.3x +#usr/man/man3/slk_attron_sp.3x #usr/man/man3/slk_attrset.3x +#usr/man/man3/slk_attrset_sp.3x #usr/man/man3/slk_clear.3x +#usr/man/man3/slk_clear_sp.3x #usr/man/man3/slk_color.3x +#usr/man/man3/slk_color_sp.3x #usr/man/man3/slk_init.3x +#usr/man/man3/slk_init_sp.3x #usr/man/man3/slk_label.3x +#usr/man/man3/slk_label_sp.3x #usr/man/man3/slk_noutrefresh.3x +#usr/man/man3/slk_noutrefresh_sp.3x #usr/man/man3/slk_refresh.3x +#usr/man/man3/slk_refresh_sp.3x #usr/man/man3/slk_restore.3x +#usr/man/man3/slk_restore_sp.3x #usr/man/man3/slk_set.3x +#usr/man/man3/slk_set_sp.3x #usr/man/man3/slk_touch.3x +#usr/man/man3/slk_touch_sp.3x +#usr/man/man3/slk_wset.3x #usr/man/man3/standend.3x #usr/man/man3/standout.3x #usr/man/man3/start_color.3x +#usr/man/man3/start_color_sp.3x +#usr/man/man3/stdscr.3x +#usr/man/man3/strcodes.3x +#usr/man/man3/strfnames.3x +#usr/man/man3/strnames.3x #usr/man/man3/subpad.3x #usr/man/man3/subwin.3x #usr/man/man3/syncok.3x #usr/man/man3/term_attrs.3x +#usr/man/man3/term_attrs_sp.3x +#usr/man/man3/term_variables.3x #usr/man/man3/termattrs.3x +#usr/man/man3/termattrs_sp.3x #usr/man/man3/termname.3x +#usr/man/man3/termname_sp.3x #usr/man/man3/tgetent.3x +#usr/man/man3/tgetent_sp.3x #usr/man/man3/tgetflag.3x +#usr/man/man3/tgetflag_sp.3x #usr/man/man3/tgetnum.3x +#usr/man/man3/tgetnum_sp.3x #usr/man/man3/tgetstr.3x +#usr/man/man3/tgetstr_sp.3x #usr/man/man3/tgoto.3x #usr/man/man3/tigetflag.3x +#usr/man/man3/tigetflag_sp.3x #usr/man/man3/tigetnum.3x +#usr/man/man3/tigetnum_sp.3x #usr/man/man3/tigetstr.3x +#usr/man/man3/tigetstr_sp.3x #usr/man/man3/timeout.3x +#usr/man/man3/tiparm.3x #usr/man/man3/top_panel.3x #usr/man/man3/top_row.3x #usr/man/man3/touchline.3x #usr/man/man3/touchwin.3x #usr/man/man3/tparm.3x #usr/man/man3/tputs.3x +#usr/man/man3/tputs_sp.3x #usr/man/man3/trace.3x +#usr/man/man3/ttytype.3x #usr/man/man3/typeahead.3x +#usr/man/man3/typeahead_sp.3x #usr/man/man3/unctrl.3x +#usr/man/man3/unctrl_sp.3x #usr/man/man3/unget_wch.3x +#usr/man/man3/unget_wch_sp.3x #usr/man/man3/ungetch.3x +#usr/man/man3/ungetch_sp.3x #usr/man/man3/ungetmouse.3x +#usr/man/man3/ungetmouse_sp.3x #usr/man/man3/unpost_form.3x #usr/man/man3/unpost_menu.3x #usr/man/man3/untouchwin.3x #usr/man/man3/update_panels.3x +#usr/man/man3/update_panels_sp.3x #usr/man/man3/use_default_colors.3x +#usr/man/man3/use_default_colors_sp.3x #usr/man/man3/use_env.3x +#usr/man/man3/use_env_sp.3x #usr/man/man3/use_extended_names.3x +#usr/man/man3/use_legacy_coding.3x +#usr/man/man3/use_legacy_coding_sp.3x +#usr/man/man3/use_screen.3x +#usr/man/man3/use_window.3x #usr/man/man3/vid_attr.3x +#usr/man/man3/vid_attr_sp.3x #usr/man/man3/vid_puts.3x +#usr/man/man3/vid_puts_sp.3x #usr/man/man3/vidattr.3x +#usr/man/man3/vidattr_sp.3x #usr/man/man3/vidputs.3x +#usr/man/man3/vidputs_sp.3x #usr/man/man3/vline.3x #usr/man/man3/vline_set.3x #usr/man/man3/vw_printw.3x @@ -682,6 +894,8 @@ usr/lib/libpanelw.so.5.5 #usr/man/man3/wgetch.3x #usr/man/man3/wgetn_wstr.3x #usr/man/man3/wgetnstr.3x +#usr/man/man3/wgetparent.3x +#usr/man/man3/wgetscrreg.3x #usr/man/man3/wgetstr.3x #usr/man/man3/whline.3x #usr/man/man3/whline_set.3x @@ -720,9 +934,9 @@ usr/lib/libpanelw.so.5.5 #usr/man/man3/wtimeout.3x #usr/man/man3/wtouchln.3x #usr/man/man3/wunctrl.3x +#usr/man/man3/wunctrl_sp.3x #usr/man/man3/wvline.3x #usr/man/man3/wvline_set.3x -#usr/man/man5 #usr/man/man5/term.5 #usr/man/man5/terminfo.5 #usr/man/man7/term.7 @@ -770,10 +984,13 @@ usr/lib/libpanelw.so.5.5 #usr/share/terminfo/9 #usr/share/terminfo/9/955-hb #usr/share/terminfo/9/955-w +#usr/share/terminfo/9/9term #usr/share/terminfo/A #usr/share/terminfo/A/Apple_Terminal #usr/share/terminfo/E #usr/share/terminfo/E/Eterm +#usr/share/terminfo/E/Eterm-256color +#usr/share/terminfo/E/Eterm-88color #usr/share/terminfo/E/Eterm-color #usr/share/terminfo/L #usr/share/terminfo/L/LFT-PC850 @@ -941,6 +1158,7 @@ usr/lib/libpanelw.so.5.5 #usr/share/terminfo/a/ansi+arrows #usr/share/terminfo/a/ansi+csr #usr/share/terminfo/a/ansi+cup +#usr/share/terminfo/a/ansi+enq #usr/share/terminfo/a/ansi+erase #usr/share/terminfo/a/ansi+idc #usr/share/terminfo/a/ansi+idl @@ -1015,8 +1233,18 @@ usr/lib/libpanelw.so.5.5 #usr/share/terminfo/a/arm100-am #usr/share/terminfo/a/arm100-w #usr/share/terminfo/a/arm100-wam +#usr/share/terminfo/a/at +#usr/share/terminfo/a/at-color +#usr/share/terminfo/a/at-m #usr/share/terminfo/a/at386 #usr/share/terminfo/a/atari +#usr/share/terminfo/a/atari-color +#usr/share/terminfo/a/atari-m +#usr/share/terminfo/a/atari-old +#usr/share/terminfo/a/atari_st +#usr/share/terminfo/a/atari_st-color +#usr/share/terminfo/a/atarist-m +#usr/share/terminfo/a/aterm #usr/share/terminfo/a/att2300 #usr/share/terminfo/a/att2350 #usr/share/terminfo/a/att4410 @@ -1171,6 +1399,7 @@ usr/lib/libpanelw.so.5.5 #usr/share/terminfo/b/bsdos-pc-nobold #usr/share/terminfo/b/bsdos-ppc #usr/share/terminfo/b/bsdos-sparc +#usr/share/terminfo/b/bterm #usr/share/terminfo/c #usr/share/terminfo/c/c100 #usr/share/terminfo/c/c100-1p @@ -1241,6 +1470,7 @@ usr/lib/libpanelw.so.5.5 #usr/share/terminfo/c/concept108-w8p #usr/share/terminfo/c/concept108rv4p #usr/share/terminfo/c/cons25 +#usr/share/terminfo/c/cons25-debian #usr/share/terminfo/c/cons25-iso-m #usr/share/terminfo/c/cons25-iso8859 #usr/share/terminfo/c/cons25-koi8-r @@ -1605,6 +1835,7 @@ usr/lib/libpanelw.so.5.5 #usr/share/terminfo/e/esprit #usr/share/terminfo/e/esprit-am #usr/share/terminfo/e/eterm +#usr/share/terminfo/e/eterm-color #usr/share/terminfo/e/ex155 #usr/share/terminfo/e/excel62 #usr/share/terminfo/e/excel62-rv @@ -1647,6 +1878,11 @@ usr/lib/libpanelw.so.5.5 #usr/share/terminfo/g/gigi #usr/share/terminfo/g/glasstty #usr/share/terminfo/g/gnome +#usr/share/terminfo/g/gnome+pcfkeys +#usr/share/terminfo/g/gnome-2007 +#usr/share/terminfo/g/gnome-2008 +#usr/share/terminfo/g/gnome-256color +#usr/share/terminfo/g/gnome-fc5 #usr/share/terminfo/g/gnome-rh62 #usr/share/terminfo/g/gnome-rh72 #usr/share/terminfo/g/gnome-rh80 @@ -1817,6 +2053,7 @@ usr/lib/libpanelw.so.5.5 #usr/share/terminfo/h/hpgeneric #usr/share/terminfo/h/hpsub #usr/share/terminfo/h/hpterm +#usr/share/terminfo/h/hpterm-color #usr/share/terminfo/h/htx11 #usr/share/terminfo/h/hurd #usr/share/terminfo/h/hz1000 @@ -1833,6 +2070,7 @@ usr/lib/libpanelw.so.5.5 #usr/share/terminfo/i/i3101 #usr/share/terminfo/i/i3164 #usr/share/terminfo/i/i400 +#usr/share/terminfo/i/iTerm.app #usr/share/terminfo/i/ibcs2 #usr/share/terminfo/i/ibm+16color #usr/share/terminfo/i/ibm+color @@ -1913,6 +2151,7 @@ usr/lib/libpanelw.so.5.5 #usr/share/terminfo/j/jaixterm #usr/share/terminfo/j/jaixterm-m #usr/share/terminfo/j/jerq +#usr/share/terminfo/j/jfbterm #usr/share/terminfo/k #usr/share/terminfo/k/k45 #usr/share/terminfo/k/kaypro @@ -1927,10 +2166,16 @@ usr/lib/libpanelw.so.5.5 #usr/share/terminfo/k/klone+koi8acs #usr/share/terminfo/k/klone+sgr #usr/share/terminfo/k/klone+sgr-dumb +#usr/share/terminfo/k/klone+sgr8 +#usr/share/terminfo/k/kon +#usr/share/terminfo/k/kon2 #usr/share/terminfo/k/konsole +#usr/share/terminfo/k/konsole+pcfkeys #usr/share/terminfo/k/konsole-16color +#usr/share/terminfo/k/konsole-256color #usr/share/terminfo/k/konsole-base #usr/share/terminfo/k/konsole-linux +#usr/share/terminfo/k/konsole-solaris #usr/share/terminfo/k/konsole-vt100 #usr/share/terminfo/k/konsole-vt420pc #usr/share/terminfo/k/konsole-xf3x @@ -1948,6 +2193,7 @@ usr/lib/libpanelw.so.5.5 #usr/share/terminfo/l/lft #usr/share/terminfo/l/lft-pc850 usr/share/terminfo/l/linux +#usr/share/terminfo/l/linux-16color usr/share/terminfo/l/linux-basic #usr/share/terminfo/l/linux-c #usr/share/terminfo/l/linux-c-nc @@ -1957,6 +2203,7 @@ usr/share/terminfo/l/linux-lat usr/share/terminfo/l/linux-m usr/share/terminfo/l/linux-nic usr/share/terminfo/l/linux-vt +#usr/share/terminfo/l/linux2.6.26 #usr/share/terminfo/l/lisa #usr/share/terminfo/l/lisaterm #usr/share/terminfo/l/lisaterm-w @@ -1985,6 +2232,7 @@ usr/share/terminfo/l/linux-vt #usr/share/terminfo/m/mgr #usr/share/terminfo/m/mgr-linux #usr/share/terminfo/m/mgr-sun +#usr/share/terminfo/m/mgt #usr/share/terminfo/m/mgterm #usr/share/terminfo/m/microb #usr/share/terminfo/m/microbee @@ -2012,9 +2260,13 @@ usr/share/terminfo/l/linux-vt #usr/share/terminfo/m/minitel1b #usr/share/terminfo/m/minitel1b-80 #usr/share/terminfo/m/minix +#usr/share/terminfo/m/minix-1.5 +#usr/share/terminfo/m/minix-1.7 #usr/share/terminfo/m/minix-old #usr/share/terminfo/m/minix-old-am #usr/share/terminfo/m/mlterm +#usr/share/terminfo/m/mlterm+pcfkeys +#usr/share/terminfo/m/mlterm-256color #usr/share/terminfo/m/mm314 #usr/share/terminfo/m/mm340 #usr/share/terminfo/m/mod @@ -2025,6 +2277,8 @@ usr/share/terminfo/l/linux-vt #usr/share/terminfo/m/mono-emx #usr/share/terminfo/m/morphos #usr/share/terminfo/m/mouse-sun +#usr/share/terminfo/m/mrxvt +#usr/share/terminfo/m/mrxvt-256color #usr/share/terminfo/m/ms-vt-utf8 #usr/share/terminfo/m/ms-vt100 #usr/share/terminfo/m/ms-vt100+ @@ -2104,6 +2358,15 @@ usr/share/terminfo/l/linux-vt #usr/share/terminfo/n/ncsa-ns #usr/share/terminfo/n/ncsa-vt220 #usr/share/terminfo/n/ncsa-vt220-8 +#usr/share/terminfo/n/nd9500 +#usr/share/terminfo/n/ndr9500 +#usr/share/terminfo/n/ndr9500-25 +#usr/share/terminfo/n/ndr9500-25-mc +#usr/share/terminfo/n/ndr9500-25-mc-nl +#usr/share/terminfo/n/ndr9500-25-nl +#usr/share/terminfo/n/ndr9500-mc +#usr/share/terminfo/n/ndr9500-mc-nl +#usr/share/terminfo/n/ndr9500-nl #usr/share/terminfo/n/nec #usr/share/terminfo/n/nec5520 #usr/share/terminfo/n/newhp @@ -2147,6 +2410,7 @@ usr/share/terminfo/l/linux-vt #usr/share/terminfo/n/nsterm+c41 #usr/share/terminfo/n/nsterm+mac #usr/share/terminfo/n/nsterm+s +#usr/share/terminfo/n/nsterm-16color #usr/share/terminfo/n/nsterm-7 #usr/share/terminfo/n/nsterm-7-c #usr/share/terminfo/n/nsterm-7-c-s @@ -2159,6 +2423,7 @@ usr/share/terminfo/l/linux-vt #usr/share/terminfo/n/nsterm-acs-m #usr/share/terminfo/n/nsterm-acs-m-s #usr/share/terminfo/n/nsterm-acs-s +#usr/share/terminfo/n/nsterm-bce #usr/share/terminfo/n/nsterm-c #usr/share/terminfo/n/nsterm-c-7 #usr/share/terminfo/n/nsterm-c-acs @@ -2171,6 +2436,7 @@ usr/share/terminfo/l/linux-vt #usr/share/terminfo/n/nsterm-m-s #usr/share/terminfo/n/nsterm-m-s-7 #usr/share/terminfo/n/nsterm-m-s-acs +#usr/share/terminfo/n/nsterm-old #usr/share/terminfo/n/nsterm-s #usr/share/terminfo/n/nsterm-s-7 #usr/share/terminfo/n/nsterm-s-acs @@ -2382,6 +2648,8 @@ usr/share/terminfo/l/linux-vt #usr/share/terminfo/p/pt505-24 #usr/share/terminfo/p/pty #usr/share/terminfo/p/putty +#usr/share/terminfo/p/putty-256color +#usr/share/terminfo/p/putty-vt100 #usr/share/terminfo/q #usr/share/terminfo/q/qansi #usr/share/terminfo/q/qansi-g @@ -2446,6 +2714,8 @@ usr/share/terminfo/l/linux-vt #usr/share/terminfo/r/rxvt #usr/share/terminfo/r/rxvt+pcfkeys #usr/share/terminfo/r/rxvt-16color +#usr/share/terminfo/r/rxvt-256color +#usr/share/terminfo/r/rxvt-88color #usr/share/terminfo/r/rxvt-basic #usr/share/terminfo/r/rxvt-color #usr/share/terminfo/r/rxvt-cygwin @@ -2465,11 +2735,35 @@ usr/share/terminfo/l/linux-vt #usr/share/terminfo/s/scoansi-new #usr/share/terminfo/s/scoansi-old usr/share/terminfo/s/screen +#usr/share/terminfo/s/screen+fkeys +#usr/share/terminfo/s/screen-16color +#usr/share/terminfo/s/screen-16color-bce +#usr/share/terminfo/s/screen-16color-bce-s +#usr/share/terminfo/s/screen-16color-s +#usr/share/terminfo/s/screen-256color +#usr/share/terminfo/s/screen-256color-bce +#usr/share/terminfo/s/screen-256color-bce-s +#usr/share/terminfo/s/screen-256color-s usr/share/terminfo/s/screen-bce +#usr/share/terminfo/s/screen-bce.Eterm +#usr/share/terminfo/s/screen-bce.gnome +#usr/share/terminfo/s/screen-bce.konsole +#usr/share/terminfo/s/screen-bce.linux +#usr/share/terminfo/s/screen-bce.mlterm +#usr/share/terminfo/s/screen-bce.mrxvt +#usr/share/terminfo/s/screen-bce.rxvt +#usr/share/terminfo/s/screen-bce.xterm-new usr/share/terminfo/s/screen-s usr/share/terminfo/s/screen-w +#usr/share/terminfo/s/screen.Eterm +#usr/share/terminfo/s/screen.gnome +#usr/share/terminfo/s/screen.konsole usr/share/terminfo/s/screen.linux +#usr/share/terminfo/s/screen.mlterm +#usr/share/terminfo/s/screen.mrxvt +#usr/share/terminfo/s/screen.rxvt usr/share/terminfo/s/screen.teraterm +#usr/share/terminfo/s/screen.vte usr/share/terminfo/s/screen.xterm-new usr/share/terminfo/s/screen.xterm-r6 usr/share/terminfo/s/screen.xterm-xfree86 @@ -2484,6 +2778,11 @@ usr/share/terminfo/s/screen3 #usr/share/terminfo/s/soroc140 #usr/share/terminfo/s/spinwriter #usr/share/terminfo/s/st52 +#usr/share/terminfo/s/st52-color +#usr/share/terminfo/s/st52-m +#usr/share/terminfo/s/st52-old +#usr/share/terminfo/s/stv52 +#usr/share/terminfo/s/stv52pc #usr/share/terminfo/s/sun #usr/share/terminfo/s/sun-1 #usr/share/terminfo/s/sun-12 @@ -2573,6 +2872,8 @@ usr/share/terminfo/s/screen3 #usr/share/terminfo/t/teleray #usr/share/terminfo/t/teletec #usr/share/terminfo/t/teraterm +#usr/share/terminfo/t/teraterm2.3 +#usr/share/terminfo/t/teraterm4.59 #usr/share/terminfo/t/terminet #usr/share/terminfo/t/terminet1200 #usr/share/terminfo/t/terminet300 @@ -2614,6 +2915,7 @@ usr/share/terminfo/s/screen3 #usr/share/terminfo/t/ts1p #usr/share/terminfo/t/tt #usr/share/terminfo/t/tt505-22 +#usr/share/terminfo/t/tt52 #usr/share/terminfo/t/tty33 #usr/share/terminfo/t/tty35 #usr/share/terminfo/t/tty37 @@ -2751,6 +3053,10 @@ usr/share/terminfo/s/screen3 #usr/share/terminfo/t/tvi970-2p #usr/share/terminfo/t/tvi970-vb #usr/share/terminfo/t/tvipt +#usr/share/terminfo/t/tw100 +#usr/share/terminfo/t/tw52 +#usr/share/terminfo/t/tw52-color +#usr/share/terminfo/t/tw52-m #usr/share/terminfo/t/tws-generic #usr/share/terminfo/t/tws2102-sna #usr/share/terminfo/t/tws2103 @@ -2820,6 +3126,7 @@ usr/share/terminfo/s/screen3 #usr/share/terminfo/v/vt-utf8 usr/share/terminfo/v/vt100 usr/share/terminfo/v/vt100+ +#usr/share/terminfo/v/vt100+enq usr/share/terminfo/v/vt100+fnkeys usr/share/terminfo/v/vt100+keypad usr/share/terminfo/v/vt100+pfkeys @@ -2843,6 +3150,7 @@ usr/share/terminfo/v/vt100-w-nam usr/share/terminfo/v/vt100-w-nav usr/share/terminfo/v/vt100nam usr/share/terminfo/v/vt102 +#usr/share/terminfo/v/vt102+enq usr/share/terminfo/v/vt102-nsgr usr/share/terminfo/v/vt102-w #usr/share/terminfo/v/vt125 @@ -2892,8 +3200,14 @@ usr/share/terminfo/v/vt200-w #usr/share/terminfo/v/vt525 #usr/share/terminfo/v/vt61 #usr/share/terminfo/v/vt61.5 +#usr/share/terminfo/v/vte +#usr/share/terminfo/v/vte+pcfkeys +#usr/share/terminfo/v/vte-2007 +#usr/share/terminfo/v/vte-2008 +#usr/share/terminfo/v/vte-256color #usr/share/terminfo/v/vtnt #usr/share/terminfo/v/vv100 +#usr/share/terminfo/v/vwmterm #usr/share/terminfo/w #usr/share/terminfo/w/wren #usr/share/terminfo/w/wrenw @@ -3147,6 +3461,8 @@ usr/share/terminfo/v/vt200-w #usr/share/terminfo/x/xerox-lm #usr/share/terminfo/x/xerox1720 #usr/share/terminfo/x/xerox820 +#usr/share/terminfo/x/xfce +#usr/share/terminfo/x/xiterm #usr/share/terminfo/x/xl83 #usr/share/terminfo/x/xnuppc #usr/share/terminfo/x/xnuppc+100x37 @@ -3199,9 +3515,24 @@ usr/share/terminfo/v/vt200-w #usr/share/terminfo/x/xnuppc-m-f2 #usr/share/terminfo/x/xtalk usr/share/terminfo/x/xterm +#usr/share/terminfo/x/xterm+256color +#usr/share/terminfo/x/xterm+88color +#usr/share/terminfo/x/xterm+app +#usr/share/terminfo/x/xterm+edit +#usr/share/terminfo/x/xterm+noapp +#usr/share/terminfo/x/xterm+pc+edit +#usr/share/terminfo/x/xterm+pcc0 +#usr/share/terminfo/x/xterm+pcc1 +#usr/share/terminfo/x/xterm+pcc2 +#usr/share/terminfo/x/xterm+pcc3 +#usr/share/terminfo/x/xterm+pce2 +#usr/share/terminfo/x/xterm+pcf0 +#usr/share/terminfo/x/xterm+pcf2 usr/share/terminfo/x/xterm+pcfkeys +#usr/share/terminfo/x/xterm+r6f2 usr/share/terminfo/x/xterm+sl usr/share/terminfo/x/xterm+sl-twm +#usr/share/terminfo/x/xterm+vt+edit #usr/share/terminfo/x/xterm-1002 #usr/share/terminfo/x/xterm-1003 #usr/share/terminfo/x/xterm-16color @@ -3222,6 +3553,7 @@ usr/share/terminfo/x/xterm-color #usr/share/terminfo/x/xterm-r6 #usr/share/terminfo/x/xterm-sco #usr/share/terminfo/x/xterm-sun +#usr/share/terminfo/x/xterm-utf8 usr/share/terminfo/x/xterm-vt220 usr/share/terminfo/x/xterm-vt52 #usr/share/terminfo/x/xterm-xf86-v32 diff --git a/config/rootfiles/common/openldap b/config/rootfiles/common/openldap index bb43588b1..6a72df8b1 100644 --- a/config/rootfiles/common/openldap +++ b/config/rootfiles/common/openldap @@ -41,19 +41,119 @@ #usr/include/slapi-plugin.h usr/lib/liblber-2.3.so.0 usr/lib/liblber-2.3.so.0.2.8 -#usr/lib/liblber.a #usr/lib/liblber.la -usr/lib/liblber.so +#usr/lib/liblber.so usr/lib/libldap-2.3.so.0 usr/lib/libldap-2.3.so.0.2.8 -#usr/lib/libldap.a #usr/lib/libldap.la -usr/lib/libldap.so +#usr/lib/libldap.so usr/lib/libldap_r-2.3.so.0 usr/lib/libldap_r-2.3.so.0.2.8 -#usr/lib/libldap_r.a #usr/lib/libldap_r.la -usr/lib/libldap_r.so +#usr/lib/libldap_r.so +#usr/lib/openldap +#usr/lib/openldap/accesslog-2.3.so.0 +#usr/lib/openldap/accesslog-2.3.so.0.2.8 +#usr/lib/openldap/accesslog.la +#usr/lib/openldap/accesslog.so +#usr/lib/openldap/back_bdb-2.3.so.0 +#usr/lib/openldap/back_bdb-2.3.so.0.2.8 +#usr/lib/openldap/back_bdb.la +#usr/lib/openldap/back_bdb.so +#usr/lib/openldap/back_dnssrv-2.3.so.0 +#usr/lib/openldap/back_dnssrv-2.3.so.0.2.8 +#usr/lib/openldap/back_dnssrv.la +#usr/lib/openldap/back_dnssrv.so +#usr/lib/openldap/back_hdb-2.3.so.0 +#usr/lib/openldap/back_hdb-2.3.so.0.2.8 +#usr/lib/openldap/back_hdb.la +#usr/lib/openldap/back_hdb.so +#usr/lib/openldap/back_ldap-2.3.so.0 +#usr/lib/openldap/back_ldap-2.3.so.0.2.8 +#usr/lib/openldap/back_ldap.la +#usr/lib/openldap/back_ldap.so +#usr/lib/openldap/back_ldbm-2.3.so.0 +#usr/lib/openldap/back_ldbm-2.3.so.0.2.8 +#usr/lib/openldap/back_ldbm.la +#usr/lib/openldap/back_ldbm.so +#usr/lib/openldap/back_meta-2.3.so.0 +#usr/lib/openldap/back_meta-2.3.so.0.2.8 +#usr/lib/openldap/back_meta.la +#usr/lib/openldap/back_meta.so +#usr/lib/openldap/back_monitor-2.3.so.0 +#usr/lib/openldap/back_monitor-2.3.so.0.2.8 +#usr/lib/openldap/back_monitor.la +#usr/lib/openldap/back_monitor.so +#usr/lib/openldap/back_null-2.3.so.0 +#usr/lib/openldap/back_null-2.3.so.0.2.8 +#usr/lib/openldap/back_null.la +#usr/lib/openldap/back_null.so +#usr/lib/openldap/back_passwd-2.3.so.0 +#usr/lib/openldap/back_passwd-2.3.so.0.2.8 +#usr/lib/openldap/back_passwd.la +#usr/lib/openldap/back_passwd.so +#usr/lib/openldap/back_relay-2.3.so.0 +#usr/lib/openldap/back_relay-2.3.so.0.2.8 +#usr/lib/openldap/back_relay.la +#usr/lib/openldap/back_relay.so +#usr/lib/openldap/back_shell-2.3.so.0 +#usr/lib/openldap/back_shell-2.3.so.0.2.8 +#usr/lib/openldap/back_shell.la +#usr/lib/openldap/back_shell.so +#usr/lib/openldap/denyop-2.3.so.0 +#usr/lib/openldap/denyop-2.3.so.0.2.8 +#usr/lib/openldap/denyop.la +#usr/lib/openldap/denyop.so +#usr/lib/openldap/dyngroup-2.3.so.0 +#usr/lib/openldap/dyngroup-2.3.so.0.2.8 +#usr/lib/openldap/dyngroup.la +#usr/lib/openldap/dyngroup.so +#usr/lib/openldap/dynlist-2.3.so.0 +#usr/lib/openldap/dynlist-2.3.so.0.2.8 +#usr/lib/openldap/dynlist.la +#usr/lib/openldap/dynlist.so +#usr/lib/openldap/lastmod-2.3.so.0 +#usr/lib/openldap/lastmod-2.3.so.0.2.8 +#usr/lib/openldap/lastmod.la +#usr/lib/openldap/lastmod.so +#usr/lib/openldap/pcache-2.3.so.0 +#usr/lib/openldap/pcache-2.3.so.0.2.8 +#usr/lib/openldap/pcache.la +#usr/lib/openldap/pcache.so +#usr/lib/openldap/ppolicy-2.3.so.0 +#usr/lib/openldap/ppolicy-2.3.so.0.2.8 +#usr/lib/openldap/ppolicy.la +#usr/lib/openldap/ppolicy.so +#usr/lib/openldap/refint-2.3.so.0 +#usr/lib/openldap/refint-2.3.so.0.2.8 +#usr/lib/openldap/refint.la +#usr/lib/openldap/refint.so +#usr/lib/openldap/retcode-2.3.so.0 +#usr/lib/openldap/retcode-2.3.so.0.2.8 +#usr/lib/openldap/retcode.la +#usr/lib/openldap/retcode.so +#usr/lib/openldap/rwm-2.3.so.0 +#usr/lib/openldap/rwm-2.3.so.0.2.8 +#usr/lib/openldap/rwm.la +#usr/lib/openldap/rwm.so +#usr/lib/openldap/syncprov-2.3.so.0 +#usr/lib/openldap/syncprov-2.3.so.0.2.8 +#usr/lib/openldap/syncprov.la +#usr/lib/openldap/syncprov.so +#usr/lib/openldap/translucent-2.3.so.0 +#usr/lib/openldap/translucent-2.3.so.0.2.8 +#usr/lib/openldap/translucent.la +#usr/lib/openldap/translucent.so +#usr/lib/openldap/unique-2.3.so.0 +#usr/lib/openldap/unique-2.3.so.0.2.8 +#usr/lib/openldap/unique.la +#usr/lib/openldap/unique.so +#usr/lib/openldap/valsort-2.3.so.0 +#usr/lib/openldap/valsort-2.3.so.0.2.8 +#usr/lib/openldap/valsort.la +#usr/lib/openldap/valsort.so +#usr/lib/slapd +#usr/lib/slurpd #usr/man/man1/ldapadd.1 #usr/man/man1/ldapcompare.1 #usr/man/man1/ldapdelete.1 @@ -257,9 +357,7 @@ usr/lib/libldap_r.so #usr/sbin/slapadd #usr/sbin/slapauth #usr/sbin/slapcat -#usr/sbin/slapd #usr/sbin/slapdn #usr/sbin/slapindex #usr/sbin/slappasswd #usr/sbin/slaptest -#usr/sbin/slurpd diff --git a/config/rootfiles/common/openssl b/config/rootfiles/common/openssl index 02e4c1cdd..bc1ac49f0 100644 --- a/config/rootfiles/common/openssl +++ b/config/rootfiles/common/openssl @@ -1116,6 +1116,7 @@ usr/lib/libssl.so.0.9.8 #usr/share/man/man3/dsa.3 #usr/share/man/man3/ecdsa.3 #usr/share/man/man3/engine.3 +#usr/share/man/man3/err.3 #usr/share/man/man3/evp.3 #usr/share/man/man3/hmac.3 #usr/share/man/man3/i2d_ASN1_OBJECT.3 @@ -1163,7 +1164,6 @@ usr/lib/libssl.so.0.9.8 #usr/share/man/man3/md5.3 #usr/share/man/man3/mdc2.3 #usr/share/man/man3/pem.3 -#usr/share/man/man3/rand.3 #usr/share/man/man3/rc4.3 #usr/share/man/man3/ripemd.3 #usr/share/man/man3/rsa.3 diff --git a/config/rootfiles/common/pam b/config/rootfiles/common/pam index a14302aab..3335a544a 100644 --- a/config/rootfiles/common/pam +++ b/config/rootfiles/common/pam @@ -11,7 +11,9 @@ etc/security #etc/security/group.conf #etc/security/limits.conf #etc/security/limits.d +#etc/security/namespace.conf #etc/security/namespace.d +#etc/security/namespace.init #etc/security/pam_env.conf #etc/security/time.conf lib/libpam.so.0 @@ -63,6 +65,8 @@ lib/security/pam_mail.so #lib/security/pam_mkhomedir.so #lib/security/pam_motd.la #lib/security/pam_motd.so +#lib/security/pam_namespace.la +#lib/security/pam_namespace.so #lib/security/pam_nologin.la lib/security/pam_nologin.so #lib/security/pam_permit.la @@ -161,6 +165,7 @@ usr/lib/libpamc.so #usr/share/man/man5/access.conf.5 #usr/share/man/man5/group.conf.5 #usr/share/man/man5/limits.conf.5 +#usr/share/man/man5/namespace.conf.5 #usr/share/man/man5/pam.conf.5 #usr/share/man/man5/pam.d.5 #usr/share/man/man5/pam_env.conf.5 @@ -188,6 +193,7 @@ usr/lib/libpamc.so #usr/share/man/man8/pam_mail.8 #usr/share/man/man8/pam_mkhomedir.8 #usr/share/man/man8/pam_motd.8 +#usr/share/man/man8/pam_namespace.8 #usr/share/man/man8/pam_nologin.8 #usr/share/man/man8/pam_permit.8 #usr/share/man/man8/pam_rhosts.8 diff --git a/config/rootfiles/common/pango b/config/rootfiles/common/pango new file mode 100644 index 000000000..286aa35e0 --- /dev/null +++ b/config/rootfiles/common/pango @@ -0,0 +1,143 @@ +etc/pango +etc/pango/pango.modules +usr/bin/pango-querymodules +usr/bin/pango-view +#usr/include/pango-1.0 +#usr/include/pango-1.0/pango +#usr/include/pango-1.0/pango/pango-attributes.h +#usr/include/pango-1.0/pango/pango-bidi-type.h +#usr/include/pango-1.0/pango/pango-break.h +#usr/include/pango-1.0/pango/pango-context.h +#usr/include/pango-1.0/pango/pango-coverage.h +#usr/include/pango-1.0/pango/pango-engine.h +#usr/include/pango-1.0/pango/pango-enum-types.h +#usr/include/pango-1.0/pango/pango-features.h +#usr/include/pango-1.0/pango/pango-font.h +#usr/include/pango-1.0/pango/pango-fontmap.h +#usr/include/pango-1.0/pango/pango-fontset.h +#usr/include/pango-1.0/pango/pango-glyph-item.h +#usr/include/pango-1.0/pango/pango-glyph.h +#usr/include/pango-1.0/pango/pango-gravity.h +#usr/include/pango-1.0/pango/pango-item.h +#usr/include/pango-1.0/pango/pango-language.h +#usr/include/pango-1.0/pango/pango-layout.h +#usr/include/pango-1.0/pango/pango-matrix.h +#usr/include/pango-1.0/pango/pango-modules.h +#usr/include/pango-1.0/pango/pango-ot.h +#usr/include/pango-1.0/pango/pango-renderer.h +#usr/include/pango-1.0/pango/pango-script.h +#usr/include/pango-1.0/pango/pango-tabs.h +#usr/include/pango-1.0/pango/pango-types.h +#usr/include/pango-1.0/pango/pango-utils.h +#usr/include/pango-1.0/pango/pango.h +#usr/include/pango-1.0/pango/pangocairo.h +#usr/include/pango-1.0/pango/pangofc-decoder.h +#usr/include/pango-1.0/pango/pangofc-font.h +#usr/include/pango-1.0/pango/pangofc-fontmap.h +#usr/include/pango-1.0/pango/pangoft2.h +#usr/lib/libpango-1.0.la +#usr/lib/libpango-1.0.so +usr/lib/libpango-1.0.so.0 +usr/lib/libpango-1.0.so.0.3000.1 +#usr/lib/libpangocairo-1.0.la +#usr/lib/libpangocairo-1.0.so +usr/lib/libpangocairo-1.0.so.0 +usr/lib/libpangocairo-1.0.so.0.3000.1 +#usr/lib/libpangoft2-1.0.la +#usr/lib/libpangoft2-1.0.so +usr/lib/libpangoft2-1.0.so.0 +usr/lib/libpangoft2-1.0.so.0.3000.1 +usr/lib/pango +usr/lib/pango/1.6.0 +usr/lib/pango/1.6.0/modules +#usr/lib/pango/1.6.0/modules/pango-arabic-fc.la +usr/lib/pango/1.6.0/modules/pango-arabic-fc.so +#usr/lib/pango/1.6.0/modules/pango-arabic-lang.la +usr/lib/pango/1.6.0/modules/pango-arabic-lang.so +#usr/lib/pango/1.6.0/modules/pango-basic-fc.la +usr/lib/pango/1.6.0/modules/pango-basic-fc.so +#usr/lib/pango/1.6.0/modules/pango-hangul-fc.la +usr/lib/pango/1.6.0/modules/pango-hangul-fc.so +#usr/lib/pango/1.6.0/modules/pango-hebrew-fc.la +usr/lib/pango/1.6.0/modules/pango-hebrew-fc.so +#usr/lib/pango/1.6.0/modules/pango-indic-fc.la +usr/lib/pango/1.6.0/modules/pango-indic-fc.so +#usr/lib/pango/1.6.0/modules/pango-indic-lang.la +usr/lib/pango/1.6.0/modules/pango-indic-lang.so +#usr/lib/pango/1.6.0/modules/pango-khmer-fc.la +usr/lib/pango/1.6.0/modules/pango-khmer-fc.so +#usr/lib/pango/1.6.0/modules/pango-syriac-fc.la +usr/lib/pango/1.6.0/modules/pango-syriac-fc.so +#usr/lib/pango/1.6.0/modules/pango-thai-fc.la +usr/lib/pango/1.6.0/modules/pango-thai-fc.so +#usr/lib/pango/1.6.0/modules/pango-tibetan-fc.la +usr/lib/pango/1.6.0/modules/pango-tibetan-fc.so +#usr/lib/pkgconfig/pango.pc +#usr/lib/pkgconfig/pangocairo.pc +#usr/lib/pkgconfig/pangoft2.pc +#usr/share/gtk-doc/html/pango +#usr/share/gtk-doc/html/pango/PangoEngineLang.html +#usr/share/gtk-doc/html/pango/PangoEngineShape.html +#usr/share/gtk-doc/html/pango/PangoFcDecoder.html +#usr/share/gtk-doc/html/pango/PangoFcFont.html +#usr/share/gtk-doc/html/pango/PangoFcFontMap.html +#usr/share/gtk-doc/html/pango/PangoMarkupFormat.html +#usr/share/gtk-doc/html/pango/annotation-glossary.html +#usr/share/gtk-doc/html/pango/api-index-1-10.html +#usr/share/gtk-doc/html/pango/api-index-1-12.html +#usr/share/gtk-doc/html/pango/api-index-1-14.html +#usr/share/gtk-doc/html/pango/api-index-1-16.html +#usr/share/gtk-doc/html/pango/api-index-1-18.html +#usr/share/gtk-doc/html/pango/api-index-1-2.html +#usr/share/gtk-doc/html/pango/api-index-1-20.html +#usr/share/gtk-doc/html/pango/api-index-1-22.html +#usr/share/gtk-doc/html/pango/api-index-1-24.html +#usr/share/gtk-doc/html/pango/api-index-1-26.html +#usr/share/gtk-doc/html/pango/api-index-1-28.html +#usr/share/gtk-doc/html/pango/api-index-1-30.html +#usr/share/gtk-doc/html/pango/api-index-1-4.html +#usr/share/gtk-doc/html/pango/api-index-1-6.html +#usr/share/gtk-doc/html/pango/api-index-1-8.html +#usr/share/gtk-doc/html/pango/api-index-deprecated.html +#usr/share/gtk-doc/html/pango/api-index-full.html +#usr/share/gtk-doc/html/pango/home.png +#usr/share/gtk-doc/html/pango/index.html +#usr/share/gtk-doc/html/pango/index.sgml +#usr/share/gtk-doc/html/pango/layout.gif +#usr/share/gtk-doc/html/pango/left.png +#usr/share/gtk-doc/html/pango/lowlevel.html +#usr/share/gtk-doc/html/pango/pango-ATSUI-Fonts.html +#usr/share/gtk-doc/html/pango/pango-Bidirectional-Text.html +#usr/share/gtk-doc/html/pango/pango-Cairo-Rendering.html +#usr/share/gtk-doc/html/pango/pango-CoreText-Fonts.html +#usr/share/gtk-doc/html/pango/pango-Coverage-Maps.html +#usr/share/gtk-doc/html/pango/pango-Engines.html +#usr/share/gtk-doc/html/pango/pango-Fonts.html +#usr/share/gtk-doc/html/pango/pango-FreeType-Fonts-and-Rendering.html +#usr/share/gtk-doc/html/pango/pango-Glyph-Storage.html +#usr/share/gtk-doc/html/pango/pango-Layout-Objects.html +#usr/share/gtk-doc/html/pango/pango-Miscellaneous-Utilities.html +#usr/share/gtk-doc/html/pango/pango-Modules.html +#usr/share/gtk-doc/html/pango/pango-OpenType-Font-Handling.html +#usr/share/gtk-doc/html/pango/pango-Scripts-and-Languages.html +#usr/share/gtk-doc/html/pango/pango-Tab-Stops.html +#usr/share/gtk-doc/html/pango/pango-Text-Attributes.html +#usr/share/gtk-doc/html/pango/pango-Text-Processing.html +#usr/share/gtk-doc/html/pango/pango-Version-Checking.html +#usr/share/gtk-doc/html/pango/pango-Vertical-Text.html +#usr/share/gtk-doc/html/pango/pango-Win32-Fonts-and-Rendering.html +#usr/share/gtk-doc/html/pango/pango-X-Fonts-and-Rendering.html +#usr/share/gtk-doc/html/pango/pango-Xft-Fonts-and-Rendering.html +#usr/share/gtk-doc/html/pango/pango-hierarchy.html +#usr/share/gtk-doc/html/pango/pango-pango-renderer.html +#usr/share/gtk-doc/html/pango/pango-querymodules.html +#usr/share/gtk-doc/html/pango/pango.devhelp2 +#usr/share/gtk-doc/html/pango/pango.html +#usr/share/gtk-doc/html/pango/rendering.html +#usr/share/gtk-doc/html/pango/right.png +#usr/share/gtk-doc/html/pango/rotated-text.png +#usr/share/gtk-doc/html/pango/style.css +#usr/share/gtk-doc/html/pango/tools.html +#usr/share/gtk-doc/html/pango/up.png +#usr/share/man/man1/pango-querymodules.1 +#usr/share/man/man1/pango-view.1 diff --git a/config/rootfiles/common/pcre b/config/rootfiles/common/pcre index d031bd3dd..5c292700c 100644 --- a/config/rootfiles/common/pcre +++ b/config/rootfiles/common/pcre @@ -1,5 +1,3 @@ -lib/libpcre.so.0 -lib/libpcre.so.0.0.1 #usr/bin/pcre-config #usr/bin/pcregrep #usr/bin/pcretest @@ -9,57 +7,21 @@ lib/libpcre.so.0.0.1 #usr/include/pcrecpp.h #usr/include/pcrecpparg.h #usr/include/pcreposix.h -#usr/lib/libpcre.a #usr/lib/libpcre.la usr/lib/libpcre.so -#usr/lib/libpcrecpp.a +usr/lib/libpcre.so.1 +usr/lib/libpcre.so.1.0.1 #usr/lib/libpcrecpp.la usr/lib/libpcrecpp.so usr/lib/libpcrecpp.so.0 usr/lib/libpcrecpp.so.0.0.0 -#usr/lib/libpcreposix.a #usr/lib/libpcreposix.la usr/lib/libpcreposix.so usr/lib/libpcreposix.so.0 -usr/lib/libpcreposix.so.0.0.0 +usr/lib/libpcreposix.so.0.0.1 #usr/lib/pkgconfig/libpcre.pc -#usr/man/man1/pcregrep.1 -#usr/man/man1/pcretest.1 -#usr/man/man3/pcre.3 -#usr/man/man3/pcre_compile.3 -#usr/man/man3/pcre_compile2.3 -#usr/man/man3/pcre_config.3 -#usr/man/man3/pcre_copy_named_substring.3 -#usr/man/man3/pcre_copy_substring.3 -#usr/man/man3/pcre_dfa_exec.3 -#usr/man/man3/pcre_exec.3 -#usr/man/man3/pcre_free_substring.3 -#usr/man/man3/pcre_free_substring_list.3 -#usr/man/man3/pcre_fullinfo.3 -#usr/man/man3/pcre_get_named_substring.3 -#usr/man/man3/pcre_get_stringnumber.3 -#usr/man/man3/pcre_get_stringtable_entries.3 -#usr/man/man3/pcre_get_substring.3 -#usr/man/man3/pcre_get_substring_list.3 -#usr/man/man3/pcre_info.3 -#usr/man/man3/pcre_maketables.3 -#usr/man/man3/pcre_refcount.3 -#usr/man/man3/pcre_study.3 -#usr/man/man3/pcre_version.3 -#usr/man/man3/pcreapi.3 -#usr/man/man3/pcrebuild.3 -#usr/man/man3/pcrecallout.3 -#usr/man/man3/pcrecompat.3 -#usr/man/man3/pcrecpp.3 -#usr/man/man3/pcrematching.3 -#usr/man/man3/pcrepartial.3 -#usr/man/man3/pcrepattern.3 -#usr/man/man3/pcreperform.3 -#usr/man/man3/pcreposix.3 -#usr/man/man3/pcreprecompile.3 -#usr/man/man3/pcresample.3 -#usr/man/man3/pcrestack.3 #usr/lib/pkgconfig/libpcrecpp.pc +#usr/lib/pkgconfig/libpcreposix.pc #usr/share/doc/pcre #usr/share/doc/pcre/AUTHORS #usr/share/doc/pcre/COPYING @@ -71,6 +33,8 @@ usr/lib/libpcreposix.so.0.0.0 #usr/share/doc/pcre/html/index.html #usr/share/doc/pcre/html/pcre-config.html #usr/share/doc/pcre/html/pcre.html +#usr/share/doc/pcre/html/pcre16.html +#usr/share/doc/pcre/html/pcre_assign_jit_stack.html #usr/share/doc/pcre/html/pcre_compile.html #usr/share/doc/pcre/html/pcre_compile2.html #usr/share/doc/pcre/html/pcre_config.html @@ -78,6 +42,7 @@ usr/lib/libpcreposix.so.0.0.0 #usr/share/doc/pcre/html/pcre_copy_substring.html #usr/share/doc/pcre/html/pcre_dfa_exec.html #usr/share/doc/pcre/html/pcre_exec.html +#usr/share/doc/pcre/html/pcre_free_study.html #usr/share/doc/pcre/html/pcre_free_substring.html #usr/share/doc/pcre/html/pcre_free_substring_list.html #usr/share/doc/pcre/html/pcre_fullinfo.html @@ -86,17 +51,23 @@ usr/lib/libpcreposix.so.0.0.0 #usr/share/doc/pcre/html/pcre_get_stringtable_entries.html #usr/share/doc/pcre/html/pcre_get_substring.html #usr/share/doc/pcre/html/pcre_get_substring_list.html -#usr/share/doc/pcre/html/pcre_info.html +#usr/share/doc/pcre/html/pcre_jit_stack_alloc.html +#usr/share/doc/pcre/html/pcre_jit_stack_free.html #usr/share/doc/pcre/html/pcre_maketables.html +#usr/share/doc/pcre/html/pcre_pattern_to_host_byte_order.html #usr/share/doc/pcre/html/pcre_refcount.html #usr/share/doc/pcre/html/pcre_study.html +#usr/share/doc/pcre/html/pcre_utf16_to_host_byte_order.html #usr/share/doc/pcre/html/pcre_version.html #usr/share/doc/pcre/html/pcreapi.html #usr/share/doc/pcre/html/pcrebuild.html #usr/share/doc/pcre/html/pcrecallout.html #usr/share/doc/pcre/html/pcrecompat.html #usr/share/doc/pcre/html/pcrecpp.html +#usr/share/doc/pcre/html/pcredemo.html #usr/share/doc/pcre/html/pcregrep.html +#usr/share/doc/pcre/html/pcrejit.html +#usr/share/doc/pcre/html/pcrelimits.html #usr/share/doc/pcre/html/pcrematching.html #usr/share/doc/pcre/html/pcrepartial.html #usr/share/doc/pcre/html/pcrepattern.html @@ -107,6 +78,7 @@ usr/lib/libpcreposix.so.0.0.0 #usr/share/doc/pcre/html/pcrestack.html #usr/share/doc/pcre/html/pcresyntax.html #usr/share/doc/pcre/html/pcretest.html +#usr/share/doc/pcre/html/pcreunicode.html #usr/share/doc/pcre/pcre-config.txt #usr/share/doc/pcre/pcre.txt #usr/share/doc/pcre/pcregrep.txt @@ -115,6 +87,33 @@ usr/lib/libpcreposix.so.0.0.0 #usr/share/man/man1/pcregrep.1 #usr/share/man/man1/pcretest.1 #usr/share/man/man3/pcre.3 +#usr/share/man/man3/pcre16.3 +#usr/share/man/man3/pcre16_assign_jit_stack.3 +#usr/share/man/man3/pcre16_compile.3 +#usr/share/man/man3/pcre16_compile2.3 +#usr/share/man/man3/pcre16_config.3 +#usr/share/man/man3/pcre16_copy_named_substring.3 +#usr/share/man/man3/pcre16_copy_substring.3 +#usr/share/man/man3/pcre16_dfa_exec.3 +#usr/share/man/man3/pcre16_exec.3 +#usr/share/man/man3/pcre16_free_study.3 +#usr/share/man/man3/pcre16_free_substring.3 +#usr/share/man/man3/pcre16_free_substring_list.3 +#usr/share/man/man3/pcre16_fullinfo.3 +#usr/share/man/man3/pcre16_get_named_substring.3 +#usr/share/man/man3/pcre16_get_stringnumber.3 +#usr/share/man/man3/pcre16_get_stringtable_entries.3 +#usr/share/man/man3/pcre16_get_substring.3 +#usr/share/man/man3/pcre16_get_substring_list.3 +#usr/share/man/man3/pcre16_jit_stack_alloc.3 +#usr/share/man/man3/pcre16_jit_stack_free.3 +#usr/share/man/man3/pcre16_maketables.3 +#usr/share/man/man3/pcre16_pattern_to_host_byte_order.3 +#usr/share/man/man3/pcre16_refcount.3 +#usr/share/man/man3/pcre16_study.3 +#usr/share/man/man3/pcre16_utf16_to_host_byte_order.3 +#usr/share/man/man3/pcre16_version.3 +#usr/share/man/man3/pcre_assign_jit_stack.3 #usr/share/man/man3/pcre_compile.3 #usr/share/man/man3/pcre_compile2.3 #usr/share/man/man3/pcre_config.3 @@ -122,6 +121,7 @@ usr/lib/libpcreposix.so.0.0.0 #usr/share/man/man3/pcre_copy_substring.3 #usr/share/man/man3/pcre_dfa_exec.3 #usr/share/man/man3/pcre_exec.3 +#usr/share/man/man3/pcre_free_study.3 #usr/share/man/man3/pcre_free_substring.3 #usr/share/man/man3/pcre_free_substring_list.3 #usr/share/man/man3/pcre_fullinfo.3 @@ -130,16 +130,21 @@ usr/lib/libpcreposix.so.0.0.0 #usr/share/man/man3/pcre_get_stringtable_entries.3 #usr/share/man/man3/pcre_get_substring.3 #usr/share/man/man3/pcre_get_substring_list.3 -#usr/share/man/man3/pcre_info.3 +#usr/share/man/man3/pcre_jit_stack_alloc.3 +#usr/share/man/man3/pcre_jit_stack_free.3 #usr/share/man/man3/pcre_maketables.3 +#usr/share/man/man3/pcre_pattern_to_host_byte_order.3 #usr/share/man/man3/pcre_refcount.3 #usr/share/man/man3/pcre_study.3 +#usr/share/man/man3/pcre_utf16_to_host_byte_order.3 #usr/share/man/man3/pcre_version.3 #usr/share/man/man3/pcreapi.3 #usr/share/man/man3/pcrebuild.3 #usr/share/man/man3/pcrecallout.3 #usr/share/man/man3/pcrecompat.3 #usr/share/man/man3/pcrecpp.3 +#usr/share/man/man3/pcrejit.3 +#usr/share/man/man3/pcrelimits.3 #usr/share/man/man3/pcrematching.3 #usr/share/man/man3/pcrepartial.3 #usr/share/man/man3/pcrepattern.3 @@ -149,3 +154,4 @@ usr/lib/libpcreposix.so.0.0.0 #usr/share/man/man3/pcresample.3 #usr/share/man/man3/pcrestack.3 #usr/share/man/man3/pcresyntax.3 +#usr/share/man/man3/pcreunicode.3 diff --git a/config/rootfiles/common/pcre-compat b/config/rootfiles/common/pcre-compat new file mode 100644 index 000000000..ff1b77643 --- /dev/null +++ b/config/rootfiles/common/pcre-compat @@ -0,0 +1,2 @@ +lib/libpcre.so.0 +lib/libpcre.so.0.0.1 diff --git a/config/rootfiles/common/pixman b/config/rootfiles/common/pixman new file mode 100644 index 000000000..ea44cd812 --- /dev/null +++ b/config/rootfiles/common/pixman @@ -0,0 +1,9 @@ +#usr/include/pixman-1 +#usr/include/pixman-1/pixman-version.h +#usr/include/pixman-1/pixman.h +#usr/lib/libpixman-1.a +#usr/lib/libpixman-1.la +usr/lib/libpixman-1.so +usr/lib/libpixman-1.so.0 +usr/lib/libpixman-1.so.0.26.0 +#usr/lib/pkgconfig/pixman-1.pc diff --git a/config/rootfiles/common/readline b/config/rootfiles/common/readline index edf003534..7bef2c18f 100644 --- a/config/rootfiles/common/readline +++ b/config/rootfiles/common/readline @@ -1,7 +1,3 @@ -lib/libhistory.so.5 -lib/libhistory.so.5.1 -lib/libreadline.so.5 -lib/libreadline.so.5.1 #usr/include/readline #usr/include/readline/chardefs.h #usr/include/readline/history.h @@ -11,12 +7,14 @@ lib/libreadline.so.5.1 #usr/include/readline/rlstdc.h #usr/include/readline/rltypedefs.h #usr/include/readline/tilde.h -#usr/info/history.info -#usr/info/readline.info -#usr/info/rluserman.info -#usr/lib/libhistory.a -usr/lib/libhistory.so -#usr/lib/libreadline.a -usr/lib/libreadline.so -#usr/man/man3/history.3 -#usr/man/man3/readline.3 +#usr/lib/libhistory.so +usr/lib/libhistory.so.6 +usr/lib/libhistory.so.6.2 +#usr/lib/libreadline.so +usr/lib/libreadline.so.6 +usr/lib/libreadline.so.6.2 +#usr/share/info/history.info +#usr/share/info/readline.info +#usr/share/info/rluserman.info +#usr/share/man/man3/history.3 +#usr/share/man/man3/readline.3 diff --git a/config/rootfiles/common/readline-compat b/config/rootfiles/common/readline-compat new file mode 100644 index 000000000..1ff73257c --- /dev/null +++ b/config/rootfiles/common/readline-compat @@ -0,0 +1,4 @@ +lib/libhistory.so.5 +lib/libhistory.so.5.2 +lib/libreadline.so.5 +lib/libreadline.so.5.2 diff --git a/config/rootfiles/common/reiser4progs b/config/rootfiles/common/reiser4progs deleted file mode 100644 index e01e4f8b8..000000000 --- a/config/rootfiles/common/reiser4progs +++ /dev/null @@ -1,77 +0,0 @@ -#sbin/debugfs.reiser4 -sbin/fsck.reiser4 -#sbin/make_reiser4 -sbin/measurefs.reiser4 -sbin/mkfs.reiser4 -#usr/include/reiser4 -#usr/include/reiser4/alloc.h -#usr/include/reiser4/backup.h -#usr/include/reiser4/bitmap.h -#usr/include/reiser4/factory.h -#usr/include/reiser4/fake.h -#usr/include/reiser4/filesystem.h -#usr/include/reiser4/flow.h -#usr/include/reiser4/format.h -#usr/include/reiser4/item.h -#usr/include/reiser4/journal.h -#usr/include/reiser4/key.h -#usr/include/reiser4/libreiser4.h -#usr/include/reiser4/master.h -#usr/include/reiser4/node.h -#usr/include/reiser4/object.h -#usr/include/reiser4/oid.h -#usr/include/reiser4/place.h -#usr/include/reiser4/plugin.h -#usr/include/reiser4/print.h -#usr/include/reiser4/profile.h -#usr/include/reiser4/pset.h -#usr/include/reiser4/semantic.h -#usr/include/reiser4/status.h -#usr/include/reiser4/tree.h -#usr/include/reiser4/types.h -#usr/include/repair -#usr/include/repair/add_missing.h -#usr/include/repair/alloc.h -#usr/include/repair/backup.h -#usr/include/repair/cleanup.h -#usr/include/repair/disk_scan.h -#usr/include/repair/filesystem.h -#usr/include/repair/filter.h -#usr/include/repair/format.h -#usr/include/repair/item.h -#usr/include/repair/journal.h -#usr/include/repair/librepair.h -#usr/include/repair/lost_found.h -#usr/include/repair/master.h -#usr/include/repair/node.h -#usr/include/repair/object.h -#usr/include/repair/oid.h -#usr/include/repair/place.h -#usr/include/repair/plugin.h -#usr/include/repair/pset.h -#usr/include/repair/repair.h -#usr/include/repair/semantic.h -#usr/include/repair/status.h -#usr/include/repair/tree.h -#usr/include/repair/twig_scan.h -usr/lib/libreiser4-1.0.so.6 -usr/lib/libreiser4-1.0.so.6.0.0 -usr/lib/libreiser4-minimal-1.0.so.6 -usr/lib/libreiser4-minimal-1.0.so.6.0.0 -#usr/lib/libreiser4-minimal.a -#usr/lib/libreiser4-minimal.la -usr/lib/libreiser4-minimal.so -#usr/lib/libreiser4.a -#usr/lib/libreiser4.la -usr/lib/libreiser4.so -usr/lib/librepair-1.0.so.6 -usr/lib/librepair-1.0.so.6.0.0 -#usr/lib/librepair.a -#usr/lib/librepair.la -usr/lib/librepair.so -#usr/man/man8 -#usr/man/man8/debugfs.reiser4.8 -#usr/man/man8/fsck.reiser4.8 -#usr/man/man8/measurefs.reiser4.8 -#usr/man/man8/mkfs.reiser4.8 -#usr/share/aclocal/libreiser4.m4 diff --git a/config/rootfiles/common/rrdtool b/config/rootfiles/common/rrdtool index faa0dca84..c957d523b 100644 --- a/config/rootfiles/common/rrdtool +++ b/config/rootfiles/common/rrdtool @@ -1,17 +1,20 @@ #srv/web/ipfire/html/graphs -#usr/bin/rrdcgi +usr/bin/rrdcached usr/bin/rrdtool usr/bin/rrdupdate +#usr/include/rrd.h +#usr/include/rrd_client.h +#usr/include/rrd_format.h #usr/lib/librrd.a #usr/lib/librrd.la -usr/lib/librrd.so -usr/lib/librrd.so.2 -usr/lib/librrd.so.2.0.15 +#usr/lib/librrd.so +usr/lib/librrd.so.4 +usr/lib/librrd.so.4.2.0 #usr/lib/librrd_th.a #usr/lib/librrd_th.la -usr/lib/librrd_th.so -usr/lib/librrd_th.so.2 -usr/lib/librrd_th.so.2.0.13 +#usr/lib/librrd_th.so +usr/lib/librrd_th.so.4 +usr/lib/librrd_th.so.4.2.0 usr/lib/perl5/site_perl/5.12.3/RRDp.pm usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/RRDs.pm #usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/RRDp @@ -20,17 +23,111 @@ usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/RRDs.pm #usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/RRDs/.packlist #usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/RRDs/RRDs.bs usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/RRDs/RRDs.so -#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/ntmake.pl +#usr/lib/pkgconfig/librrd.pc +#usr/share/doc/rrdtool-1.4.7 +#usr/share/doc/rrdtool-1.4.7/html +#usr/share/doc/rrdtool-1.4.7/html/RRDp.html +#usr/share/doc/rrdtool-1.4.7/html/RRDs.html +#usr/share/doc/rrdtool-1.4.7/html/bin_dec_hex.html +#usr/share/doc/rrdtool-1.4.7/html/cdeftutorial.html +#usr/share/doc/rrdtool-1.4.7/html/index.html +#usr/share/doc/rrdtool-1.4.7/html/librrd.html +#usr/share/doc/rrdtool-1.4.7/html/rpntutorial.html +#usr/share/doc/rrdtool-1.4.7/html/rrd-beginners.html +#usr/share/doc/rrdtool-1.4.7/html/rrdbuild.html +#usr/share/doc/rrdtool-1.4.7/html/rrdcached.html +#usr/share/doc/rrdtool-1.4.7/html/rrdcgi.html +#usr/share/doc/rrdtool-1.4.7/html/rrdcreate.html +#usr/share/doc/rrdtool-1.4.7/html/rrddump.html +#usr/share/doc/rrdtool-1.4.7/html/rrdfetch.html +#usr/share/doc/rrdtool-1.4.7/html/rrdfirst.html +#usr/share/doc/rrdtool-1.4.7/html/rrdflushcached.html +#usr/share/doc/rrdtool-1.4.7/html/rrdgraph.html +#usr/share/doc/rrdtool-1.4.7/html/rrdgraph_data.html +#usr/share/doc/rrdtool-1.4.7/html/rrdgraph_examples.html +#usr/share/doc/rrdtool-1.4.7/html/rrdgraph_graph.html +#usr/share/doc/rrdtool-1.4.7/html/rrdgraph_rpn.html +#usr/share/doc/rrdtool-1.4.7/html/rrdinfo.html +#usr/share/doc/rrdtool-1.4.7/html/rrdlast.html +#usr/share/doc/rrdtool-1.4.7/html/rrdlastupdate.html +#usr/share/doc/rrdtool-1.4.7/html/rrdresize.html +#usr/share/doc/rrdtool-1.4.7/html/rrdrestore.html +#usr/share/doc/rrdtool-1.4.7/html/rrdthreads.html +#usr/share/doc/rrdtool-1.4.7/html/rrdtool.html +#usr/share/doc/rrdtool-1.4.7/html/rrdtune.html +#usr/share/doc/rrdtool-1.4.7/html/rrdtutorial.html +#usr/share/doc/rrdtool-1.4.7/html/rrdupdate.html +#usr/share/doc/rrdtool-1.4.7/html/rrdxport.html +#usr/share/doc/rrdtool-1.4.7/txt +#usr/share/doc/rrdtool-1.4.7/txt/bin_dec_hex.pod +#usr/share/doc/rrdtool-1.4.7/txt/bin_dec_hex.txt +#usr/share/doc/rrdtool-1.4.7/txt/cdeftutorial.pod +#usr/share/doc/rrdtool-1.4.7/txt/cdeftutorial.txt +#usr/share/doc/rrdtool-1.4.7/txt/librrd.txt +#usr/share/doc/rrdtool-1.4.7/txt/rpntutorial.pod +#usr/share/doc/rrdtool-1.4.7/txt/rpntutorial.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrd-beginners.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrd-beginners.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdbuild.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdbuild.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdcached.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdcached.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdcgi.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdcgi.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdcreate.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdcreate.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrddump.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrddump.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdfetch.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdfetch.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdfirst.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdfirst.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdflushcached.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdflushcached.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdgraph.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdgraph.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdgraph_data.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdgraph_data.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdgraph_examples.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdgraph_examples.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdgraph_graph.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdgraph_graph.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdgraph_rpn.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdgraph_rpn.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdinfo.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdinfo.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdlast.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdlast.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdlastupdate.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdlastupdate.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdresize.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdresize.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdrestore.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdrestore.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdthreads.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdthreads.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdtool.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdtool.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdtune.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdtune.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdtutorial.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdtutorial.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdupdate.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdupdate.txt +#usr/share/doc/rrdtool-1.4.7/txt/rrdxport.pod +#usr/share/doc/rrdtool-1.4.7/txt/rrdxport.txt #usr/share/man/man1/bin_dec_hex.1 #usr/share/man/man1/cdeftutorial.1 #usr/share/man/man1/rpntutorial.1 #usr/share/man/man1/rrd-beginners.1 #usr/share/man/man1/rrdbuild.1 +#usr/share/man/man1/rrdcached.1 #usr/share/man/man1/rrdcgi.1 #usr/share/man/man1/rrdcreate.1 #usr/share/man/man1/rrddump.1 #usr/share/man/man1/rrdfetch.1 #usr/share/man/man1/rrdfirst.1 +#usr/share/man/man1/rrdflushcached.1 #usr/share/man/man1/rrdgraph.1 #usr/share/man/man1/rrdgraph_data.1 #usr/share/man/man1/rrdgraph_examples.1 @@ -49,105 +146,18 @@ usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/RRDs/RRDs.so #usr/share/man/man1/rrdxport.1 #usr/share/man/man3/RRDp.3 #usr/share/man/man3/RRDs.3 -#usr/share/rrdtool-1.2.30 -#usr/share/rrdtool-1.2.30/include -#usr/share/rrdtool-1.2.30/include/rrd.h -#usr/share/rrdtool-1.2.30/share -#usr/share/rrdtool-1.2.30/share/doc -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30 -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/RRDp.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/RRDs.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/bin_dec_hex.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/cdeftutorial.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/index.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rpntutorial.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrd-beginners.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdbuild.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdcgi.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdcreate.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrddump.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdfetch.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdfirst.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdgraph.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdgraph_data.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdgraph_examples.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdgraph_graph.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdgraph_rpn.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdinfo.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdlast.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdlastupdate.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdresize.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdrestore.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdthreads.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdtool.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdtune.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdtutorial.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdupdate.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/html/rrdxport.html -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/bin_dec_hex.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/bin_dec_hex.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/cdeftutorial.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/cdeftutorial.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rpntutorial.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rpntutorial.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrd-beginners.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrd-beginners.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdbuild.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdbuild.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdcgi.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdcgi.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdcreate.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdcreate.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrddump.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrddump.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdfetch.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdfetch.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdfirst.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdfirst.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdgraph.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdgraph.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdgraph_data.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdgraph_data.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdgraph_examples.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdgraph_examples.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdgraph_graph.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdgraph_graph.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdgraph_rpn.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdgraph_rpn.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdinfo.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdinfo.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdlast.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdlast.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdlastupdate.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdlastupdate.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdresize.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdresize.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdrestore.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdrestore.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdthreads.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdthreads.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdtool.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdtool.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdtune.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdtune.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdtutorial.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdtutorial.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdupdate.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdupdate.txt -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdxport.pod -#usr/share/rrdtool-1.2.30/share/doc/rrdtool-1.2.30/txt/rrdxport.txt -#usr/share/rrdtool-1.2.30/share/rrdtool -#usr/share/rrdtool-1.2.30/share/rrdtool/examples -#usr/share/rrdtool-1.2.30/share/rrdtool/examples/4charts.pl -#usr/share/rrdtool-1.2.30/share/rrdtool/examples/bigtops.pl -#usr/share/rrdtool-1.2.30/share/rrdtool/examples/cgi-demo.cgi -#usr/share/rrdtool-1.2.30/share/rrdtool/examples/minmax.pl -#usr/share/rrdtool-1.2.30/share/rrdtool/examples/perftest.pl -#usr/share/rrdtool-1.2.30/share/rrdtool/examples/piped-demo.pl -#usr/share/rrdtool-1.2.30/share/rrdtool/examples/shared-demo.pl -#usr/share/rrdtool-1.2.30/share/rrdtool/examples/stripes.pl -#usr/share/rrdtool-1.2.30/share/rrdtool/fonts -usr/share/rrdtool-1.2.30/share/rrdtool/fonts/DejaVuSansMono-Roman.ttf +#usr/share/man/man3/librrd.3 +#usr/share/rrdtool +#usr/share/rrdtool/examples +#usr/share/rrdtool/examples/4charts.pl +#usr/share/rrdtool/examples/bigtops.pl +#usr/share/rrdtool/examples/cgi-demo.cgi +#usr/share/rrdtool/examples/minmax.pl +#usr/share/rrdtool/examples/perftest.pl +#usr/share/rrdtool/examples/piped-demo.pl +#usr/share/rrdtool/examples/rrdcached +#usr/share/rrdtool/examples/rrdcached/RRDCached.pm +#usr/share/rrdtool/examples/rrdcached/rrdcached-size.pl +#usr/share/rrdtool/examples/shared-demo.pl +#usr/share/rrdtool/examples/stripes.pl var/log/rrd diff --git a/config/rootfiles/common/sed b/config/rootfiles/common/sed index 5cd180bef..8db08fa39 100644 --- a/config/rootfiles/common/sed +++ b/config/rootfiles/common/sed @@ -1,5 +1,3 @@ bin/sed -#usr/info/sed.info -#usr/info/sed.info-1 -#usr/info/sed.info-2 -#usr/man/man1/sed.1 +#usr/share/info/sed.info +#usr/share/man/man1/sed.1 diff --git a/config/rootfiles/common/shadow b/config/rootfiles/common/shadow index 31a273f86..ec9054efe 100644 --- a/config/rootfiles/common/shadow +++ b/config/rootfiles/common/shadow @@ -23,7 +23,7 @@ lib/libshadow.so.0.0.0 #usr/bin/sg #usr/lib/libshadow.a #usr/lib/libshadow.la -usr/lib/libshadow.so +#usr/lib/libshadow.so #usr/man/man1/chage.1 #usr/man/man1/chfn.1 #usr/man/man1/chsh.1 @@ -45,6 +45,7 @@ usr/lib/libshadow.so #usr/man/man5/porttime.5 #usr/man/man5/shadow.5 #usr/man/man5/suauth.5 +#usr/man/man8 #usr/man/man8/chpasswd.8 #usr/man/man8/faillog.8 #usr/man/man8/groupadd.8 diff --git a/config/rootfiles/common/stage2 b/config/rootfiles/common/stage2 index e59763fd4..3d21e4e2a 100644 --- a/config/rootfiles/common/stage2 +++ b/config/rootfiles/common/stage2 @@ -1,9 +1,11 @@ bin/bash bin/cat -bin/grep +bin/echo bin/pwd bin/stty #boot +dev/console +dev/null etc/bashrc etc/certparams etc/e2fsck.conf @@ -17,7 +19,6 @@ etc/ipsec.user.conf etc/ipsec.user.secrets etc/issue etc/ld.so.conf -etc/localtime etc/logrotate.conf etc/mime.types etc/modprobe.d @@ -53,11 +54,18 @@ mnt root/ipfire #sbin #srv +tmp +#usr/bin #usr/bin/perl #usr/include #usr/lib -usr/lib/libgcc_s.so +#usr/lib/libgcc_s.so usr/lib/libgcc_s.so.1 +#usr/lib/libstdc++.la +#usr/lib/libstdc++.so +usr/lib/libstdc++.so.6 +#usr/local +#usr/local/bin #usr/local/bin/archive.files usr/local/bin/backupiso usr/local/bin/connscheduler @@ -74,13 +82,15 @@ usr/local/bin/scanhd usr/local/bin/setddns.pl usr/local/bin/settime usr/local/bin/timecheck -#usr/local/bin/uname #usr/local/include #usr/local/lib #usr/local/sbin +#usr/local/share #usr/local/share/doc #usr/local/share/info #usr/local/share/locale +#usr/local/share/man +#usr/local/share/man/man1 #usr/local/share/man/man2 #usr/local/share/man/man3 #usr/local/share/man/man4 @@ -132,6 +142,3 @@ var/run var/run/utmp #var/spool var/tmp -dev/null -dev/console -tmp diff --git a/config/rootfiles/common/sysfsutils b/config/rootfiles/common/sysfsutils index c749e481a..32eca4ed5 100644 --- a/config/rootfiles/common/sysfsutils +++ b/config/rootfiles/common/sysfsutils @@ -1,18 +1,3 @@ -#opt/MACHINE-uClibc/bin/dlist_test -#opt/MACHINE-uClibc/bin/get_bus_devices_list -#opt/MACHINE-uClibc/bin/get_class_dev -#opt/MACHINE-uClibc/bin/get_classdev_parent -#opt/MACHINE-uClibc/bin/get_device -#opt/MACHINE-uClibc/bin/get_driver -#opt/MACHINE-uClibc/bin/systool -#opt/MACHINE-uClibc/bin/testlibsysfs -#opt/MACHINE-uClibc/bin/write_attr -#opt/MACHINE-uClibc/lib/libsysfs.a -#opt/MACHINE-uClibc/lib/libsysfs.la -#opt/MACHINE-uClibc/man/man1/systool.1 -#opt/MACHINE-uClibc/usr/include/sysfs -#opt/MACHINE-uClibc/usr/include/sysfs/dlist.h -#opt/MACHINE-uClibc/usr/include/sysfs/libsysfs.h #bin/dlist_test #bin/get_bus_devices_list #bin/get_class_dev diff --git a/config/rootfiles/common/uClibc b/config/rootfiles/common/uClibc deleted file mode 100644 index 373caa98e..000000000 --- a/config/rootfiles/common/uClibc +++ /dev/null @@ -1,1353 +0,0 @@ -#lib/ld-uClibc-0.9.28.so -#lib/ld-uClibc.so.0 -#lib/libc.so -#lib/libc.so.0 -#lib/libm.so.0 -#lib/libuClibc-0.9.28.so -#opt/MACHINE-uClibc/include/a.out.h -#opt/MACHINE-uClibc/include/alloca.h -#opt/MACHINE-uClibc/include/ar.h -#opt/MACHINE-uClibc/include/arpa -#opt/MACHINE-uClibc/include/arpa/ftp.h -#opt/MACHINE-uClibc/include/arpa/inet.h -#opt/MACHINE-uClibc/include/arpa/nameser.h -#opt/MACHINE-uClibc/include/arpa/nameser_compat.h -#opt/MACHINE-uClibc/include/arpa/telnet.h -#opt/MACHINE-uClibc/include/arpa/tftp.h -#opt/MACHINE-uClibc/include/asm -#opt/MACHINE-uClibc/include/asm-generic -#opt/MACHINE-uClibc/include/asm-generic/errno-base.h -#opt/MACHINE-uClibc/include/asm-generic/errno.h -#opt/MACHINE-uClibc/include/asm/8253pit.h -#opt/MACHINE-uClibc/include/asm/a.out.h -#opt/MACHINE-uClibc/include/asm/agp.h -#opt/MACHINE-uClibc/include/asm/apic.h -#opt/MACHINE-uClibc/include/asm/apicdef.h -#opt/MACHINE-uClibc/include/asm/arch_hooks.h -#opt/MACHINE-uClibc/include/asm/atomic.h -#opt/MACHINE-uClibc/include/asm/bitops.h -#opt/MACHINE-uClibc/include/asm/boot.h -#opt/MACHINE-uClibc/include/asm/byteorder.h -#opt/MACHINE-uClibc/include/asm/cache.h -#opt/MACHINE-uClibc/include/asm/cacheflush.h -#opt/MACHINE-uClibc/include/asm/checksum.h -#opt/MACHINE-uClibc/include/asm/cpu.h -#opt/MACHINE-uClibc/include/asm/cpufeature.h -#opt/MACHINE-uClibc/include/asm/debugreg.h -#opt/MACHINE-uClibc/include/asm/desc.h -#opt/MACHINE-uClibc/include/asm/dma.h -#opt/MACHINE-uClibc/include/asm/e820.h -#opt/MACHINE-uClibc/include/asm/elf.h -#opt/MACHINE-uClibc/include/asm/errno.h -#opt/MACHINE-uClibc/include/asm/fcntl.h -#opt/MACHINE-uClibc/include/asm/fixmap.h -#opt/MACHINE-uClibc/include/asm/floppy.h -#opt/MACHINE-uClibc/include/asm/genapic.h -#opt/MACHINE-uClibc/include/asm/hardirq.h -#opt/MACHINE-uClibc/include/asm/hdreg.h -#opt/MACHINE-uClibc/include/asm/hw_irq.h -#opt/MACHINE-uClibc/include/asm/i8259.h -#opt/MACHINE-uClibc/include/asm/init.h -#opt/MACHINE-uClibc/include/asm/io.h -#opt/MACHINE-uClibc/include/asm/io_apic.h -#opt/MACHINE-uClibc/include/asm/ioctl.h -#opt/MACHINE-uClibc/include/asm/ioctls.h -#opt/MACHINE-uClibc/include/asm/ipc.h -#opt/MACHINE-uClibc/include/asm/ipcbuf.h -#opt/MACHINE-uClibc/include/asm/irq.h -#opt/MACHINE-uClibc/include/asm/kdebug.h -#opt/MACHINE-uClibc/include/asm/kprobes.h -#opt/MACHINE-uClibc/include/asm/kvm.h -#opt/MACHINE-uClibc/include/asm/kvm_emulate.h -#opt/MACHINE-uClibc/include/asm/kvm_host.h -#opt/MACHINE-uClibc/include/asm/kvm_para.h -#opt/MACHINE-uClibc/include/asm/ldt.h -#opt/MACHINE-uClibc/include/asm/linkage.h -#opt/MACHINE-uClibc/include/asm/mach-bigsmp -#opt/MACHINE-uClibc/include/asm/mach-bigsmp/mach_apic.h -#opt/MACHINE-uClibc/include/asm/mach-bigsmp/mach_apicdef.h -#opt/MACHINE-uClibc/include/asm/mach-bigsmp/mach_ipi.h -#opt/MACHINE-uClibc/include/asm/mach-bigsmp/mach_mpspec.h -#opt/MACHINE-uClibc/include/asm/mach-default -#opt/MACHINE-uClibc/include/asm/mach-default/apm.h -#opt/MACHINE-uClibc/include/asm/mach-default/bios_ebda.h -#opt/MACHINE-uClibc/include/asm/mach-default/do_timer.h -#opt/MACHINE-uClibc/include/asm/mach-default/entry_arch.h -#opt/MACHINE-uClibc/include/asm/mach-default/io_ports.h -#opt/MACHINE-uClibc/include/asm/mach-default/irq_vectors.h -#opt/MACHINE-uClibc/include/asm/mach-default/mach_apic.h -#opt/MACHINE-uClibc/include/asm/mach-default/mach_apicdef.h -#opt/MACHINE-uClibc/include/asm/mach-default/mach_ipi.h -#opt/MACHINE-uClibc/include/asm/mach-default/mach_mpparse.h -#opt/MACHINE-uClibc/include/asm/mach-default/mach_mpspec.h -#opt/MACHINE-uClibc/include/asm/mach-default/mach_reboot.h -#opt/MACHINE-uClibc/include/asm/mach-default/mach_time.h -#opt/MACHINE-uClibc/include/asm/mach-default/mach_timer.h -#opt/MACHINE-uClibc/include/asm/mach-default/mach_traps.h -#opt/MACHINE-uClibc/include/asm/mach-default/mach_wakecpu.h -#opt/MACHINE-uClibc/include/asm/mach-default/pci-functions.h -#opt/MACHINE-uClibc/include/asm/mach-default/setup_arch_post.h -#opt/MACHINE-uClibc/include/asm/mach-default/setup_arch_pre.h -#opt/MACHINE-uClibc/include/asm/mach-default/smpboot_hooks.h -#opt/MACHINE-uClibc/include/asm/mach-es7000 -#opt/MACHINE-uClibc/include/asm/mach-es7000/mach_apic.h -#opt/MACHINE-uClibc/include/asm/mach-es7000/mach_apicdef.h -#opt/MACHINE-uClibc/include/asm/mach-es7000/mach_ipi.h -#opt/MACHINE-uClibc/include/asm/mach-es7000/mach_mpparse.h -#opt/MACHINE-uClibc/include/asm/mach-es7000/mach_mpspec.h -#opt/MACHINE-uClibc/include/asm/mach-es7000/mach_wakecpu.h -#opt/MACHINE-uClibc/include/asm/mach-generic -#opt/MACHINE-uClibc/include/asm/mach-generic/mach_apic.h -#opt/MACHINE-uClibc/include/asm/mach-generic/mach_apicdef.h -#opt/MACHINE-uClibc/include/asm/mach-generic/mach_ipi.h -#opt/MACHINE-uClibc/include/asm/mach-generic/mach_mpparse.h -#opt/MACHINE-uClibc/include/asm/mach-generic/mach_mpspec.h -#opt/MACHINE-uClibc/include/asm/mach-numaq -#opt/MACHINE-uClibc/include/asm/mach-numaq/mach_apic.h -#opt/MACHINE-uClibc/include/asm/mach-numaq/mach_apicdef.h -#opt/MACHINE-uClibc/include/asm/mach-numaq/mach_ipi.h -#opt/MACHINE-uClibc/include/asm/mach-numaq/mach_mpparse.h -#opt/MACHINE-uClibc/include/asm/mach-numaq/mach_mpspec.h -#opt/MACHINE-uClibc/include/asm/mach-numaq/mach_wakecpu.h -#opt/MACHINE-uClibc/include/asm/mach-summit -#opt/MACHINE-uClibc/include/asm/mach-summit/mach_apic.h -#opt/MACHINE-uClibc/include/asm/mach-summit/mach_apicdef.h -#opt/MACHINE-uClibc/include/asm/mach-summit/mach_ipi.h -#opt/MACHINE-uClibc/include/asm/mach-summit/mach_mpparse.h -#opt/MACHINE-uClibc/include/asm/mach-summit/mach_mpspec.h -#opt/MACHINE-uClibc/include/asm/mach-visws -#opt/MACHINE-uClibc/include/asm/mach-visws/cobalt.h -#opt/MACHINE-uClibc/include/asm/mach-visws/do_timer.h -#opt/MACHINE-uClibc/include/asm/mach-visws/entry_arch.h -#opt/MACHINE-uClibc/include/asm/mach-visws/irq_vectors.h -#opt/MACHINE-uClibc/include/asm/mach-visws/lithium.h -#opt/MACHINE-uClibc/include/asm/mach-visws/mach_apic.h -#opt/MACHINE-uClibc/include/asm/mach-visws/mach_apicdef.h -#opt/MACHINE-uClibc/include/asm/mach-visws/piix4.h -#opt/MACHINE-uClibc/include/asm/mach-visws/setup_arch_post.h -#opt/MACHINE-uClibc/include/asm/mach-visws/setup_arch_pre.h -#opt/MACHINE-uClibc/include/asm/mach-visws/smpboot_hooks.h -#opt/MACHINE-uClibc/include/asm/mach-voyager -#opt/MACHINE-uClibc/include/asm/mach-voyager/do_timer.h -#opt/MACHINE-uClibc/include/asm/mach-voyager/entry_arch.h -#opt/MACHINE-uClibc/include/asm/mach-voyager/irq_vectors.h -#opt/MACHINE-uClibc/include/asm/mach-voyager/setup_arch_post.h -#opt/MACHINE-uClibc/include/asm/mach-voyager/setup_arch_pre.h -#opt/MACHINE-uClibc/include/asm/math_emu.h -#opt/MACHINE-uClibc/include/asm/mca.h -#opt/MACHINE-uClibc/include/asm/mca_dma.h -#opt/MACHINE-uClibc/include/asm/mman.h -#opt/MACHINE-uClibc/include/asm/mmu.h -#opt/MACHINE-uClibc/include/asm/mmu_context.h -#opt/MACHINE-uClibc/include/asm/mmx.h -#opt/MACHINE-uClibc/include/asm/module.h -#opt/MACHINE-uClibc/include/asm/mpspec.h -#opt/MACHINE-uClibc/include/asm/mpspec_def.h -#opt/MACHINE-uClibc/include/asm/msgbuf.h -#opt/MACHINE-uClibc/include/asm/msr.h -#opt/MACHINE-uClibc/include/asm/mtrr.h -#opt/MACHINE-uClibc/include/asm/namei.h -#opt/MACHINE-uClibc/include/asm/nmi.h -#opt/MACHINE-uClibc/include/asm/node.h -#opt/MACHINE-uClibc/include/asm/numaq.h -#opt/MACHINE-uClibc/include/asm/numnodes.h -#opt/MACHINE-uClibc/include/asm/page.h -#opt/MACHINE-uClibc/include/asm/param.h -#opt/MACHINE-uClibc/include/asm/parport.h -#opt/MACHINE-uClibc/include/asm/pgalloc.h -#opt/MACHINE-uClibc/include/asm/poll.h -#opt/MACHINE-uClibc/include/asm/posix_types.h -#opt/MACHINE-uClibc/include/asm/processor.h -#opt/MACHINE-uClibc/include/asm/ptrace.h -#opt/MACHINE-uClibc/include/asm/rwlock.h -#opt/MACHINE-uClibc/include/asm/segment.h -#opt/MACHINE-uClibc/include/asm/semaphore.h -#opt/MACHINE-uClibc/include/asm/sembuf.h -#opt/MACHINE-uClibc/include/asm/serial.h -#opt/MACHINE-uClibc/include/asm/shmbuf.h -#opt/MACHINE-uClibc/include/asm/shmparam.h -#opt/MACHINE-uClibc/include/asm/sigcontext.h -#opt/MACHINE-uClibc/include/asm/siginfo.h -#opt/MACHINE-uClibc/include/asm/socket.h -#opt/MACHINE-uClibc/include/asm/sockios.h -#opt/MACHINE-uClibc/include/asm/spinlock.h -#opt/MACHINE-uClibc/include/asm/srat.h -#opt/MACHINE-uClibc/include/asm/stat.h -#opt/MACHINE-uClibc/include/asm/suspend.h -#opt/MACHINE-uClibc/include/asm/svm.h -#opt/MACHINE-uClibc/include/asm/system.h -#opt/MACHINE-uClibc/include/asm/termbits.h -#opt/MACHINE-uClibc/include/asm/termios.h -#opt/MACHINE-uClibc/include/asm/timer.h -#opt/MACHINE-uClibc/include/asm/timex.h -#opt/MACHINE-uClibc/include/asm/tlbflush.h -#opt/MACHINE-uClibc/include/asm/types.h -#opt/MACHINE-uClibc/include/asm/ucontext.h -#opt/MACHINE-uClibc/include/asm/unaligned.h -#opt/MACHINE-uClibc/include/asm/unistd.h -#opt/MACHINE-uClibc/include/asm/user.h -#opt/MACHINE-uClibc/include/asm/vga.h -#opt/MACHINE-uClibc/include/asm/vic.h -#opt/MACHINE-uClibc/include/asm/virtext.h -#opt/MACHINE-uClibc/include/asm/vm86.h -#opt/MACHINE-uClibc/include/asm/vmx.h -#opt/MACHINE-uClibc/include/asm/voyager.h -#opt/MACHINE-uClibc/include/assert.h -#opt/MACHINE-uClibc/include/atomic.h -#opt/MACHINE-uClibc/include/bits -#opt/MACHINE-uClibc/include/bits/atomic.h -#opt/MACHINE-uClibc/include/bits/atomicity.h -#opt/MACHINE-uClibc/include/bits/byteswap.h -#opt/MACHINE-uClibc/include/bits/cmathcalls.h -#opt/MACHINE-uClibc/include/bits/confname.h -#opt/MACHINE-uClibc/include/bits/dirent.h -#opt/MACHINE-uClibc/include/bits/dlfcn.h -#opt/MACHINE-uClibc/include/bits/elfclass.h -#opt/MACHINE-uClibc/include/bits/endian.h -#opt/MACHINE-uClibc/include/bits/environments.h -#opt/MACHINE-uClibc/include/bits/errno.h -#opt/MACHINE-uClibc/include/bits/errno_values.h -#opt/MACHINE-uClibc/include/bits/fcntl.h -#opt/MACHINE-uClibc/include/bits/fenv.h -#opt/MACHINE-uClibc/include/bits/fenvinline.h -#opt/MACHINE-uClibc/include/bits/getopt.h -#opt/MACHINE-uClibc/include/bits/huge_val.h -#opt/MACHINE-uClibc/include/bits/in.h -#opt/MACHINE-uClibc/include/bits/initspin.h -#opt/MACHINE-uClibc/include/bits/ioctl-types.h -#opt/MACHINE-uClibc/include/bits/ioctls.h -#opt/MACHINE-uClibc/include/bits/ipc.h -#opt/MACHINE-uClibc/include/bits/kernel_sigaction.h -#opt/MACHINE-uClibc/include/bits/kernel_stat.h -#opt/MACHINE-uClibc/include/bits/kernel_types.h -#opt/MACHINE-uClibc/include/bits/local_lim.h -#opt/MACHINE-uClibc/include/bits/locale.h -#opt/MACHINE-uClibc/include/bits/mathcalls.h -#opt/MACHINE-uClibc/include/bits/mathdef.h -#opt/MACHINE-uClibc/include/bits/mathinline.h -#opt/MACHINE-uClibc/include/bits/mman.h -#opt/MACHINE-uClibc/include/bits/msq.h -#opt/MACHINE-uClibc/include/bits/nan.h -#opt/MACHINE-uClibc/include/bits/netdb.h -#opt/MACHINE-uClibc/include/bits/poll.h -#opt/MACHINE-uClibc/include/bits/posix1_lim.h -#opt/MACHINE-uClibc/include/bits/posix2_lim.h -#opt/MACHINE-uClibc/include/bits/posix_opt.h -#opt/MACHINE-uClibc/include/bits/profil-counter.h -#opt/MACHINE-uClibc/include/bits/pthreadtypes.h -#opt/MACHINE-uClibc/include/bits/resource.h -#opt/MACHINE-uClibc/include/bits/sched.h -#opt/MACHINE-uClibc/include/bits/select.h -#opt/MACHINE-uClibc/include/bits/sem.h -#opt/MACHINE-uClibc/include/bits/setjmp.h -#opt/MACHINE-uClibc/include/bits/shm.h -#opt/MACHINE-uClibc/include/bits/sigaction.h -#opt/MACHINE-uClibc/include/bits/sigcontext.h -#opt/MACHINE-uClibc/include/bits/sigcontextinfo.h -#opt/MACHINE-uClibc/include/bits/siginfo.h -#opt/MACHINE-uClibc/include/bits/signum.h -#opt/MACHINE-uClibc/include/bits/sigset.h -#opt/MACHINE-uClibc/include/bits/sigstack.h -#opt/MACHINE-uClibc/include/bits/sigthread.h -#opt/MACHINE-uClibc/include/bits/sockaddr.h -#opt/MACHINE-uClibc/include/bits/socket.h -#opt/MACHINE-uClibc/include/bits/stackinfo.h -#opt/MACHINE-uClibc/include/bits/stat.h -#opt/MACHINE-uClibc/include/bits/statfs.h -#opt/MACHINE-uClibc/include/bits/statvfs.h -#opt/MACHINE-uClibc/include/bits/stdio.h -#opt/MACHINE-uClibc/include/bits/stdio_lim.h -#opt/MACHINE-uClibc/include/bits/syscalls.h -#opt/MACHINE-uClibc/include/bits/sysnum.h -#opt/MACHINE-uClibc/include/bits/termios.h -#opt/MACHINE-uClibc/include/bits/time.h -#opt/MACHINE-uClibc/include/bits/types.h -#opt/MACHINE-uClibc/include/bits/uClibc_clk_tck.h -#opt/MACHINE-uClibc/include/bits/uClibc_config.h -#opt/MACHINE-uClibc/include/bits/uClibc_ctype.h -#opt/MACHINE-uClibc/include/bits/uClibc_fpmax.h -#opt/MACHINE-uClibc/include/bits/uClibc_locale.h -#opt/MACHINE-uClibc/include/bits/uClibc_locale_data.h -#opt/MACHINE-uClibc/include/bits/uClibc_page.h -#opt/MACHINE-uClibc/include/bits/uClibc_pthread.h -#opt/MACHINE-uClibc/include/bits/uClibc_stdio.h -#opt/MACHINE-uClibc/include/bits/uClibc_touplow.h -#opt/MACHINE-uClibc/include/bits/uClibc_uintmaxtostr.h -#opt/MACHINE-uClibc/include/bits/uClibc_uwchar.h -#opt/MACHINE-uClibc/include/bits/uClibc_va_copy.h -#opt/MACHINE-uClibc/include/bits/uio.h -#opt/MACHINE-uClibc/include/bits/ustat.h -#opt/MACHINE-uClibc/include/bits/utmp.h -#opt/MACHINE-uClibc/include/bits/utmpx.h -#opt/MACHINE-uClibc/include/bits/utsname.h -#opt/MACHINE-uClibc/include/bits/waitflags.h -#opt/MACHINE-uClibc/include/bits/waitstatus.h -#opt/MACHINE-uClibc/include/bits/wchar.h -#opt/MACHINE-uClibc/include/bits/wordsize.h -#opt/MACHINE-uClibc/include/bits/xopen_lim.h -#opt/MACHINE-uClibc/include/byteswap.h -#opt/MACHINE-uClibc/include/complex.h -#opt/MACHINE-uClibc/include/cpio.h -#opt/MACHINE-uClibc/include/crypt.h -#opt/MACHINE-uClibc/include/ctype.h -#opt/MACHINE-uClibc/include/dirent.h -#opt/MACHINE-uClibc/include/dlfcn.h -#opt/MACHINE-uClibc/include/elf.h -#opt/MACHINE-uClibc/include/endian.h -#opt/MACHINE-uClibc/include/err.h -#opt/MACHINE-uClibc/include/errno.h -#opt/MACHINE-uClibc/include/error.h -#opt/MACHINE-uClibc/include/fcntl.h -#opt/MACHINE-uClibc/include/features.h -#opt/MACHINE-uClibc/include/fnmatch.h -#opt/MACHINE-uClibc/include/fpu_control.h -#opt/MACHINE-uClibc/include/ftw.h -#opt/MACHINE-uClibc/include/getopt.h -#opt/MACHINE-uClibc/include/glob.h -#opt/MACHINE-uClibc/include/gnu-versions.h -#opt/MACHINE-uClibc/include/grp.h -#opt/MACHINE-uClibc/include/iconv.h -#opt/MACHINE-uClibc/include/ieee754.h -#opt/MACHINE-uClibc/include/inttypes.h -#opt/MACHINE-uClibc/include/langinfo.h -#opt/MACHINE-uClibc/include/lastlog.h -#opt/MACHINE-uClibc/include/libgen.h -#opt/MACHINE-uClibc/include/limits.h -#opt/MACHINE-uClibc/include/link.h -#opt/MACHINE-uClibc/include/linux -#opt/MACHINE-uClibc/include/linux/8250_pci.h -#opt/MACHINE-uClibc/include/linux/a.out.h -#opt/MACHINE-uClibc/include/linux/acct.h -#opt/MACHINE-uClibc/include/linux/acpi.h -#opt/MACHINE-uClibc/include/linux/adb.h -#opt/MACHINE-uClibc/include/linux/adfs_fs.h -#opt/MACHINE-uClibc/include/linux/adfs_fs_sb.h -#opt/MACHINE-uClibc/include/linux/affs_fs.h -#opt/MACHINE-uClibc/include/linux/affs_hardblocks.h -#opt/MACHINE-uClibc/include/linux/agpgart.h -#opt/MACHINE-uClibc/include/linux/aio.h -#opt/MACHINE-uClibc/include/linux/aio_abi.h -#opt/MACHINE-uClibc/include/linux/amifd.h -#opt/MACHINE-uClibc/include/linux/amifdreg.h -#opt/MACHINE-uClibc/include/linux/amigaffs.h -#opt/MACHINE-uClibc/include/linux/apm_bios.h -#opt/MACHINE-uClibc/include/linux/ata.h -#opt/MACHINE-uClibc/include/linux/atalk.h -#opt/MACHINE-uClibc/include/linux/atm.h -#opt/MACHINE-uClibc/include/linux/atm_eni.h -#opt/MACHINE-uClibc/include/linux/atm_he.h -#opt/MACHINE-uClibc/include/linux/atm_idt77105.h -#opt/MACHINE-uClibc/include/linux/atm_nicstar.h -#opt/MACHINE-uClibc/include/linux/atm_suni.h -#opt/MACHINE-uClibc/include/linux/atm_tcp.h -#opt/MACHINE-uClibc/include/linux/atm_zatm.h -#opt/MACHINE-uClibc/include/linux/atmapi.h -#opt/MACHINE-uClibc/include/linux/atmarp.h -#opt/MACHINE-uClibc/include/linux/atmbr2684.h -#opt/MACHINE-uClibc/include/linux/atmclip.h -#opt/MACHINE-uClibc/include/linux/atmdev.h -#opt/MACHINE-uClibc/include/linux/atmioc.h -#opt/MACHINE-uClibc/include/linux/atmlec.h -#opt/MACHINE-uClibc/include/linux/atmmpc.h -#opt/MACHINE-uClibc/include/linux/atmppp.h -#opt/MACHINE-uClibc/include/linux/atmsap.h -#opt/MACHINE-uClibc/include/linux/atmsvc.h -#opt/MACHINE-uClibc/include/linux/audit.h -#opt/MACHINE-uClibc/include/linux/auto_fs.h -#opt/MACHINE-uClibc/include/linux/auto_fs4.h -#opt/MACHINE-uClibc/include/linux/autoconf.h -#opt/MACHINE-uClibc/include/linux/awe_voice.h -#opt/MACHINE-uClibc/include/linux/ax25.h -#opt/MACHINE-uClibc/include/linux/b1lli.h -#opt/MACHINE-uClibc/include/linux/backing-dev.h -#opt/MACHINE-uClibc/include/linux/backlight.h -#opt/MACHINE-uClibc/include/linux/baycom.h -#opt/MACHINE-uClibc/include/linux/bcd.h -#opt/MACHINE-uClibc/include/linux/bfs_fs.h -#opt/MACHINE-uClibc/include/linux/binfmts.h -#opt/MACHINE-uClibc/include/linux/bitmap.h -#opt/MACHINE-uClibc/include/linux/bitops.h -#opt/MACHINE-uClibc/include/linux/blkpg.h -#opt/MACHINE-uClibc/include/linux/blockgroup_lock.h -#opt/MACHINE-uClibc/include/linux/bootmem.h -#opt/MACHINE-uClibc/include/linux/bpqether.h -#opt/MACHINE-uClibc/include/linux/byteorder -#opt/MACHINE-uClibc/include/linux/byteorder/big_endian.h -#opt/MACHINE-uClibc/include/linux/byteorder/generic.h -#opt/MACHINE-uClibc/include/linux/byteorder/little_endian.h -#opt/MACHINE-uClibc/include/linux/byteorder/pdp_endian.h -#opt/MACHINE-uClibc/include/linux/byteorder/swab.h -#opt/MACHINE-uClibc/include/linux/byteorder/swabb.h -#opt/MACHINE-uClibc/include/linux/cache.h -#opt/MACHINE-uClibc/include/linux/capability.h -#opt/MACHINE-uClibc/include/linux/capi.h -#opt/MACHINE-uClibc/include/linux/cciss_ioctl.h -#opt/MACHINE-uClibc/include/linux/cd1400.h -#opt/MACHINE-uClibc/include/linux/cdk.h -#opt/MACHINE-uClibc/include/linux/cdrom.h -#opt/MACHINE-uClibc/include/linux/circ_buf.h -#opt/MACHINE-uClibc/include/linux/cobalt-nvram.h -#opt/MACHINE-uClibc/include/linux/coda.h -#opt/MACHINE-uClibc/include/linux/coda_proc.h -#opt/MACHINE-uClibc/include/linux/coda_psdev.h -#opt/MACHINE-uClibc/include/linux/coff.h -#opt/MACHINE-uClibc/include/linux/com20020.h -#opt/MACHINE-uClibc/include/linux/compat.h -#opt/MACHINE-uClibc/include/linux/compat_ioctl.h -#opt/MACHINE-uClibc/include/linux/compiler.h -#opt/MACHINE-uClibc/include/linux/comstats.h -#opt/MACHINE-uClibc/include/linux/config.h -#opt/MACHINE-uClibc/include/linux/console.h -#opt/MACHINE-uClibc/include/linux/console_struct.h -#opt/MACHINE-uClibc/include/linux/consolemap.h -#opt/MACHINE-uClibc/include/linux/cpu.h -#opt/MACHINE-uClibc/include/linux/cpufreq.h -#opt/MACHINE-uClibc/include/linux/cramfs_fs.h -#opt/MACHINE-uClibc/include/linux/cramfs_fs_sb.h -#opt/MACHINE-uClibc/include/linux/crc32.h -#opt/MACHINE-uClibc/include/linux/crypto.h -#opt/MACHINE-uClibc/include/linux/cryptodev.h -#opt/MACHINE-uClibc/include/linux/ctype.h -#opt/MACHINE-uClibc/include/linux/cuda.h -#opt/MACHINE-uClibc/include/linux/cyclades.h -#opt/MACHINE-uClibc/include/linux/cycx_cfm.h -#opt/MACHINE-uClibc/include/linux/cycx_drv.h -#opt/MACHINE-uClibc/include/linux/cycx_x25.h -#opt/MACHINE-uClibc/include/linux/devfs_fs.h -#opt/MACHINE-uClibc/include/linux/devfs_fs_kernel.h -#opt/MACHINE-uClibc/include/linux/device-mapper.h -#opt/MACHINE-uClibc/include/linux/device.h -#opt/MACHINE-uClibc/include/linux/devpts_fs.h -#opt/MACHINE-uClibc/include/linux/dirent.h -#opt/MACHINE-uClibc/include/linux/divert.h -#opt/MACHINE-uClibc/include/linux/dm-ioctl.h -#opt/MACHINE-uClibc/include/linux/dn.h -#opt/MACHINE-uClibc/include/linux/dnotify.h -#opt/MACHINE-uClibc/include/linux/dqblk_v1.h -#opt/MACHINE-uClibc/include/linux/dqblk_v2.h -#opt/MACHINE-uClibc/include/linux/dqblk_xfs.h -#opt/MACHINE-uClibc/include/linux/dtlk.h -#opt/MACHINE-uClibc/include/linux/dvb -#opt/MACHINE-uClibc/include/linux/dvb/audio.h -#opt/MACHINE-uClibc/include/linux/dvb/ca.h -#opt/MACHINE-uClibc/include/linux/dvb/dmx.h -#opt/MACHINE-uClibc/include/linux/dvb/frontend.h -#opt/MACHINE-uClibc/include/linux/dvb/net.h -#opt/MACHINE-uClibc/include/linux/dvb/osd.h -#opt/MACHINE-uClibc/include/linux/dvb/version.h -#opt/MACHINE-uClibc/include/linux/dvb/video.h -#opt/MACHINE-uClibc/include/linux/eeprom.h -#opt/MACHINE-uClibc/include/linux/efi.h -#opt/MACHINE-uClibc/include/linux/efs_dir.h -#opt/MACHINE-uClibc/include/linux/efs_fs.h -#opt/MACHINE-uClibc/include/linux/efs_fs_i.h -#opt/MACHINE-uClibc/include/linux/efs_fs_sb.h -#opt/MACHINE-uClibc/include/linux/efs_vh.h -#opt/MACHINE-uClibc/include/linux/eisa.h -#opt/MACHINE-uClibc/include/linux/elevator.h -#opt/MACHINE-uClibc/include/linux/elf-fdpic.h -#opt/MACHINE-uClibc/include/linux/elf.h -#opt/MACHINE-uClibc/include/linux/elfcore.h -#opt/MACHINE-uClibc/include/linux/err.h -#opt/MACHINE-uClibc/include/linux/err_kernel_only.h -#opt/MACHINE-uClibc/include/linux/errno.h -#opt/MACHINE-uClibc/include/linux/errqueue.h -#opt/MACHINE-uClibc/include/linux/ethtool.h -#opt/MACHINE-uClibc/include/linux/eventpoll.h -#opt/MACHINE-uClibc/include/linux/ext2_fs.h -#opt/MACHINE-uClibc/include/linux/ext3_fs.h -#opt/MACHINE-uClibc/include/linux/ext3_jbd.h -#opt/MACHINE-uClibc/include/linux/fadvise.h -#opt/MACHINE-uClibc/include/linux/fb.h -#opt/MACHINE-uClibc/include/linux/fcntl.h -#opt/MACHINE-uClibc/include/linux/fd.h -#opt/MACHINE-uClibc/include/linux/fd1772.h -#opt/MACHINE-uClibc/include/linux/fdreg.h -#opt/MACHINE-uClibc/include/linux/file.h -#opt/MACHINE-uClibc/include/linux/filter.h -#opt/MACHINE-uClibc/include/linux/firmware.h -#opt/MACHINE-uClibc/include/linux/flat.h -#opt/MACHINE-uClibc/include/linux/font.h -#opt/MACHINE-uClibc/include/linux/fs.h -#opt/MACHINE-uClibc/include/linux/fs_struct.h -#opt/MACHINE-uClibc/include/linux/ftape-header-segment.h -#opt/MACHINE-uClibc/include/linux/ftape-vendors.h -#opt/MACHINE-uClibc/include/linux/ftape.h -#opt/MACHINE-uClibc/include/linux/futex.h -#opt/MACHINE-uClibc/include/linux/gameport.h -#opt/MACHINE-uClibc/include/linux/gen_stats.h -#opt/MACHINE-uClibc/include/linux/generic_serial.h -#opt/MACHINE-uClibc/include/linux/genetlink.h -#opt/MACHINE-uClibc/include/linux/genhd.h -#opt/MACHINE-uClibc/include/linux/gfp.h -#opt/MACHINE-uClibc/include/linux/hash.h -#opt/MACHINE-uClibc/include/linux/hayesesp.h -#opt/MACHINE-uClibc/include/linux/hdlc -#opt/MACHINE-uClibc/include/linux/hdlc.h -#opt/MACHINE-uClibc/include/linux/hdlc/ioctl.h -#opt/MACHINE-uClibc/include/linux/hdlcdrv.h -#opt/MACHINE-uClibc/include/linux/hdreg.h -#opt/MACHINE-uClibc/include/linux/hdsmart.h -#opt/MACHINE-uClibc/include/linux/hiddev.h -#opt/MACHINE-uClibc/include/linux/highuid.h -#opt/MACHINE-uClibc/include/linux/hpfs_fs.h -#opt/MACHINE-uClibc/include/linux/hysdn_if.h -#opt/MACHINE-uClibc/include/linux/i2c-algo-bit.h -#opt/MACHINE-uClibc/include/linux/i2c-algo-ite.h -#opt/MACHINE-uClibc/include/linux/i2c-algo-pcf.h -#opt/MACHINE-uClibc/include/linux/i2c-algo-sgi.h -#opt/MACHINE-uClibc/include/linux/i2c-algo-sibyte.h -#opt/MACHINE-uClibc/include/linux/i2c-dev.h -#opt/MACHINE-uClibc/include/linux/i2c-id.h -#opt/MACHINE-uClibc/include/linux/i2c-sensor.h -#opt/MACHINE-uClibc/include/linux/i2c-vid.h -#opt/MACHINE-uClibc/include/linux/i2c.h -#opt/MACHINE-uClibc/include/linux/i2o-dev.h -#opt/MACHINE-uClibc/include/linux/i8k.h -#opt/MACHINE-uClibc/include/linux/ibmtr.h -#opt/MACHINE-uClibc/include/linux/icmp.h -#opt/MACHINE-uClibc/include/linux/icmpv6.h -#opt/MACHINE-uClibc/include/linux/ide.h -#opt/MACHINE-uClibc/include/linux/idr.h -#opt/MACHINE-uClibc/include/linux/if.h -#opt/MACHINE-uClibc/include/linux/if_arcnet.h -#opt/MACHINE-uClibc/include/linux/if_arp.h -#opt/MACHINE-uClibc/include/linux/if_bonding.h -#opt/MACHINE-uClibc/include/linux/if_bridge.h -#opt/MACHINE-uClibc/include/linux/if_cablemodem.h -#opt/MACHINE-uClibc/include/linux/if_ec.h -#opt/MACHINE-uClibc/include/linux/if_eql.h -#opt/MACHINE-uClibc/include/linux/if_ether.h -#opt/MACHINE-uClibc/include/linux/if_fc.h -#opt/MACHINE-uClibc/include/linux/if_fddi.h -#opt/MACHINE-uClibc/include/linux/if_frad.h -#opt/MACHINE-uClibc/include/linux/if_hippi.h -#opt/MACHINE-uClibc/include/linux/if_infiniband.h -#opt/MACHINE-uClibc/include/linux/if_ltalk.h -#opt/MACHINE-uClibc/include/linux/if_packet.h -#opt/MACHINE-uClibc/include/linux/if_plip.h -#opt/MACHINE-uClibc/include/linux/if_ppp.h -#opt/MACHINE-uClibc/include/linux/if_pppox.h -#opt/MACHINE-uClibc/include/linux/if_shaper.h -#opt/MACHINE-uClibc/include/linux/if_slip.h -#opt/MACHINE-uClibc/include/linux/if_strip.h -#opt/MACHINE-uClibc/include/linux/if_tr.h -#opt/MACHINE-uClibc/include/linux/if_tun.h -#opt/MACHINE-uClibc/include/linux/if_tunnel.h -#opt/MACHINE-uClibc/include/linux/if_vlan.h -#opt/MACHINE-uClibc/include/linux/if_wanpipe.h -#opt/MACHINE-uClibc/include/linux/if_wanpipe_common.h -#opt/MACHINE-uClibc/include/linux/igmp.h -#opt/MACHINE-uClibc/include/linux/in.h -#opt/MACHINE-uClibc/include/linux/in6.h -#opt/MACHINE-uClibc/include/linux/in_route.h -#opt/MACHINE-uClibc/include/linux/inetdevice.h -#opt/MACHINE-uClibc/include/linux/init.h -#opt/MACHINE-uClibc/include/linux/init_task.h -#opt/MACHINE-uClibc/include/linux/initrd.h -#opt/MACHINE-uClibc/include/linux/inotify.h -#opt/MACHINE-uClibc/include/linux/input.h -#opt/MACHINE-uClibc/include/linux/interrupt.h -#opt/MACHINE-uClibc/include/linux/ioctl.h -#opt/MACHINE-uClibc/include/linux/ioctl32.h -#opt/MACHINE-uClibc/include/linux/ioport.h -#opt/MACHINE-uClibc/include/linux/ip.h -#opt/MACHINE-uClibc/include/linux/ip6_tunnel.h -#opt/MACHINE-uClibc/include/linux/ip_mp_alg.h -#opt/MACHINE-uClibc/include/linux/ipc.h -#opt/MACHINE-uClibc/include/linux/ipmi.h -#opt/MACHINE-uClibc/include/linux/ipmi_msgdefs.h -#opt/MACHINE-uClibc/include/linux/ipmi_smi.h -#opt/MACHINE-uClibc/include/linux/ipsec.h -#opt/MACHINE-uClibc/include/linux/ipv6.h -#opt/MACHINE-uClibc/include/linux/ipv6_route.h -#opt/MACHINE-uClibc/include/linux/ipx.h -#opt/MACHINE-uClibc/include/linux/irda.h -#opt/MACHINE-uClibc/include/linux/irq.h -#opt/MACHINE-uClibc/include/linux/irq_cpustat.h -#opt/MACHINE-uClibc/include/linux/isapnp.h -#opt/MACHINE-uClibc/include/linux/isdn -#opt/MACHINE-uClibc/include/linux/isdn.h -#opt/MACHINE-uClibc/include/linux/isdn/capicmd.h -#opt/MACHINE-uClibc/include/linux/isdn/capilli.h -#opt/MACHINE-uClibc/include/linux/isdn/capiutil.h -#opt/MACHINE-uClibc/include/linux/isdn/tpam.h -#opt/MACHINE-uClibc/include/linux/isdn_divertif.h -#opt/MACHINE-uClibc/include/linux/isdn_ppp.h -#opt/MACHINE-uClibc/include/linux/isdnif.h -#opt/MACHINE-uClibc/include/linux/isicom.h -#opt/MACHINE-uClibc/include/linux/iso_fs.h -#opt/MACHINE-uClibc/include/linux/istallion.h -#opt/MACHINE-uClibc/include/linux/ite_gpio.h -#opt/MACHINE-uClibc/include/linux/ixjuser.h -#opt/MACHINE-uClibc/include/linux/jbd.h -#opt/MACHINE-uClibc/include/linux/jffs.h -#opt/MACHINE-uClibc/include/linux/jffs2.h -#opt/MACHINE-uClibc/include/linux/jffs2_fs_sb.h -#opt/MACHINE-uClibc/include/linux/jhash.h -#opt/MACHINE-uClibc/include/linux/jiffies.h -#opt/MACHINE-uClibc/include/linux/journal-head.h -#opt/MACHINE-uClibc/include/linux/joystick.h -#opt/MACHINE-uClibc/include/linux/kallsyms.h -#opt/MACHINE-uClibc/include/linux/kbd_diacr.h -#opt/MACHINE-uClibc/include/linux/kbd_kern.h -#opt/MACHINE-uClibc/include/linux/kd.h -#opt/MACHINE-uClibc/include/linux/kdev_t.h -#opt/MACHINE-uClibc/include/linux/kernel.h -#opt/MACHINE-uClibc/include/linux/kernel_stat.h -#opt/MACHINE-uClibc/include/linux/kernelcapi.h -#opt/MACHINE-uClibc/include/linux/keyboard.h -#opt/MACHINE-uClibc/include/linux/keyctl.h -#opt/MACHINE-uClibc/include/linux/kmalloc_sizes.h -#opt/MACHINE-uClibc/include/linux/kmod.h -#opt/MACHINE-uClibc/include/linux/kprobes.h -#opt/MACHINE-uClibc/include/linux/kvm.h -#opt/MACHINE-uClibc/include/linux/kvm_host.h -#opt/MACHINE-uClibc/include/linux/kvm_para.h -#opt/MACHINE-uClibc/include/linux/kvm_types.h -#opt/MACHINE-uClibc/include/linux/lapb.h -#opt/MACHINE-uClibc/include/linux/lcd.h -#opt/MACHINE-uClibc/include/linux/libata.h -#opt/MACHINE-uClibc/include/linux/libps2.h -#opt/MACHINE-uClibc/include/linux/limits.h -#opt/MACHINE-uClibc/include/linux/linkage.h -#opt/MACHINE-uClibc/include/linux/linux_logo.h -#opt/MACHINE-uClibc/include/linux/list.h -#opt/MACHINE-uClibc/include/linux/llc.h -#opt/MACHINE-uClibc/include/linux/lockd -#opt/MACHINE-uClibc/include/linux/lockd/bind.h -#opt/MACHINE-uClibc/include/linux/lockd/debug.h -#opt/MACHINE-uClibc/include/linux/lockd/nlm.h -#opt/MACHINE-uClibc/include/linux/lockd/share.h -#opt/MACHINE-uClibc/include/linux/lockd/sm_inter.h -#opt/MACHINE-uClibc/include/linux/lockd/xdr.h -#opt/MACHINE-uClibc/include/linux/lockd/xdr4.h -#opt/MACHINE-uClibc/include/linux/loop.h -#opt/MACHINE-uClibc/include/linux/lp.h -#opt/MACHINE-uClibc/include/linux/major.h -#opt/MACHINE-uClibc/include/linux/matroxfb.h -#opt/MACHINE-uClibc/include/linux/mbcache.h -#opt/MACHINE-uClibc/include/linux/mc6821.h -#opt/MACHINE-uClibc/include/linux/mca-legacy.h -#opt/MACHINE-uClibc/include/linux/mca.h -#opt/MACHINE-uClibc/include/linux/mempool.h -#opt/MACHINE-uClibc/include/linux/meye.h -#opt/MACHINE-uClibc/include/linux/mii.h -#opt/MACHINE-uClibc/include/linux/minix_fs.h -#opt/MACHINE-uClibc/include/linux/miscdevice.h -#opt/MACHINE-uClibc/include/linux/mm.h -#opt/MACHINE-uClibc/include/linux/mm_inline.h -#opt/MACHINE-uClibc/include/linux/mman.h -#opt/MACHINE-uClibc/include/linux/mod_devicetable.h -#opt/MACHINE-uClibc/include/linux/module.h -#opt/MACHINE-uClibc/include/linux/moduleloader.h -#opt/MACHINE-uClibc/include/linux/moduleparam.h -#opt/MACHINE-uClibc/include/linux/mount.h -#opt/MACHINE-uClibc/include/linux/mroute.h -#opt/MACHINE-uClibc/include/linux/msdos_fs.h -#opt/MACHINE-uClibc/include/linux/msg.h -#opt/MACHINE-uClibc/include/linux/mtd -#opt/MACHINE-uClibc/include/linux/mtd/blktrans.h -#opt/MACHINE-uClibc/include/linux/mtd/cfi.h -#opt/MACHINE-uClibc/include/linux/mtd/cfi_endian.h -#opt/MACHINE-uClibc/include/linux/mtd/compatmac.h -#opt/MACHINE-uClibc/include/linux/mtd/concat.h -#opt/MACHINE-uClibc/include/linux/mtd/doc2000.h -#opt/MACHINE-uClibc/include/linux/mtd/flashchip.h -#opt/MACHINE-uClibc/include/linux/mtd/ftl.h -#opt/MACHINE-uClibc/include/linux/mtd/gen_probe.h -#opt/MACHINE-uClibc/include/linux/mtd/iflash.h -#opt/MACHINE-uClibc/include/linux/mtd/jedec.h -#opt/MACHINE-uClibc/include/linux/mtd/map.h -#opt/MACHINE-uClibc/include/linux/mtd/nand.h -#opt/MACHINE-uClibc/include/linux/mtd/nand_ecc.h -#opt/MACHINE-uClibc/include/linux/mtd/nftl.h -#opt/MACHINE-uClibc/include/linux/mtd/partitions.h -#opt/MACHINE-uClibc/include/linux/mtd/pmc551.h -#opt/MACHINE-uClibc/include/linux/mtio.h -#opt/MACHINE-uClibc/include/linux/n_r3964.h -#opt/MACHINE-uClibc/include/linux/namei.h -#opt/MACHINE-uClibc/include/linux/nbd.h -#opt/MACHINE-uClibc/include/linux/ncp.h -#opt/MACHINE-uClibc/include/linux/ncp_fs.h -#opt/MACHINE-uClibc/include/linux/ncp_mount.h -#opt/MACHINE-uClibc/include/linux/ncp_no.h -#opt/MACHINE-uClibc/include/linux/net.h -#opt/MACHINE-uClibc/include/linux/netdevice.h -#opt/MACHINE-uClibc/include/linux/netfilter -#opt/MACHINE-uClibc/include/linux/netfilter.h -#opt/MACHINE-uClibc/include/linux/netfilter/Kbuild -#opt/MACHINE-uClibc/include/linux/netfilter/nf_conntrack_amanda.h -#opt/MACHINE-uClibc/include/linux/netfilter/nf_conntrack_common.h -#opt/MACHINE-uClibc/include/linux/netfilter/nf_conntrack_dccp.h -#opt/MACHINE-uClibc/include/linux/netfilter/nf_conntrack_ftp.h -#opt/MACHINE-uClibc/include/linux/netfilter/nf_conntrack_h323.h -#opt/MACHINE-uClibc/include/linux/netfilter/nf_conntrack_h323_asn1.h -#opt/MACHINE-uClibc/include/linux/netfilter/nf_conntrack_h323_types.h -#opt/MACHINE-uClibc/include/linux/netfilter/nf_conntrack_irc.h -#opt/MACHINE-uClibc/include/linux/netfilter/nf_conntrack_pptp.h -#opt/MACHINE-uClibc/include/linux/netfilter/nf_conntrack_proto_gre.h -#opt/MACHINE-uClibc/include/linux/netfilter/nf_conntrack_sane.h -#opt/MACHINE-uClibc/include/linux/netfilter/nf_conntrack_sctp.h -#opt/MACHINE-uClibc/include/linux/netfilter/nf_conntrack_sip.h -#opt/MACHINE-uClibc/include/linux/netfilter/nf_conntrack_tcp.h -#opt/MACHINE-uClibc/include/linux/netfilter/nf_conntrack_tftp.h -#opt/MACHINE-uClibc/include/linux/netfilter/nf_conntrack_tuple_common.h -#opt/MACHINE-uClibc/include/linux/netfilter/nfnetlink.h -#opt/MACHINE-uClibc/include/linux/netfilter/nfnetlink_compat.h -#opt/MACHINE-uClibc/include/linux/netfilter/nfnetlink_conntrack.h -#opt/MACHINE-uClibc/include/linux/netfilter/nfnetlink_log.h -#opt/MACHINE-uClibc/include/linux/netfilter/nfnetlink_queue.h -#opt/MACHINE-uClibc/include/linux/netfilter/x_tables.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_CLASSIFY.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_CONNMARK.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_CONNSECMARK.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_DSCP.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_IMQ.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_LED.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_MARK.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_NFLOG.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_NFQUEUE.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_RATEEST.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_SECMARK.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_TCPMSS.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_TCPOPTSTRIP.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_TPROXY.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_cluster.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_comment.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_connbytes.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_connlimit.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_connmark.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_conntrack.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_dccp.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_dscp.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_esp.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_hashlimit.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_helper.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_iprange.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_layer7.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_length.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_limit.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_mac.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_mark.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_multiport.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_osf.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_owner.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_physdev.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_pkttype.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_policy.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_quota.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_rateest.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_realm.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_recent.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_sctp.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_socket.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_state.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_statistic.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_string.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_tcpmss.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_tcpudp.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_time.h -#opt/MACHINE-uClibc/include/linux/netfilter/xt_u32.h -#opt/MACHINE-uClibc/include/linux/netfilter_arp -#opt/MACHINE-uClibc/include/linux/netfilter_arp.h -#opt/MACHINE-uClibc/include/linux/netfilter_arp/arp_tables.h -#opt/MACHINE-uClibc/include/linux/netfilter_arp/arpt_mangle.h -#opt/MACHINE-uClibc/include/linux/netfilter_bridge -#opt/MACHINE-uClibc/include/linux/netfilter_bridge.h -#opt/MACHINE-uClibc/include/linux/netfilter_bridge/ebt_802_3.h -#opt/MACHINE-uClibc/include/linux/netfilter_bridge/ebt_among.h -#opt/MACHINE-uClibc/include/linux/netfilter_bridge/ebt_arp.h -#opt/MACHINE-uClibc/include/linux/netfilter_bridge/ebt_arpreply.h -#opt/MACHINE-uClibc/include/linux/netfilter_bridge/ebt_ip.h -#opt/MACHINE-uClibc/include/linux/netfilter_bridge/ebt_limit.h -#opt/MACHINE-uClibc/include/linux/netfilter_bridge/ebt_log.h -#opt/MACHINE-uClibc/include/linux/netfilter_bridge/ebt_mark_m.h -#opt/MACHINE-uClibc/include/linux/netfilter_bridge/ebt_mark_t.h -#opt/MACHINE-uClibc/include/linux/netfilter_bridge/ebt_nat.h -#opt/MACHINE-uClibc/include/linux/netfilter_bridge/ebt_pkttype.h -#opt/MACHINE-uClibc/include/linux/netfilter_bridge/ebt_redirect.h -#opt/MACHINE-uClibc/include/linux/netfilter_bridge/ebt_stp.h -#opt/MACHINE-uClibc/include/linux/netfilter_bridge/ebt_ulog.h -#opt/MACHINE-uClibc/include/linux/netfilter_bridge/ebt_vlan.h -#opt/MACHINE-uClibc/include/linux/netfilter_bridge/ebtables.h -#opt/MACHINE-uClibc/include/linux/netfilter_decnet.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4 -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_conntrack.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_conntrack_amanda.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_conntrack_core.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_conntrack_ftp.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_conntrack_helper.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_conntrack_icmp.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_conntrack_irc.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_conntrack_protocol.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_conntrack_sctp.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_conntrack_tcp.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_conntrack_tftp.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_conntrack_tuple.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_nat.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_nat_core.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_nat_helper.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_nat_protocol.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_nat_rule.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_queue.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ip_tables.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_CLASSIFY.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_CLUSTERIP.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_CONNMARK.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_DSCP.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_ECN.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_LOG.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_MARK.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_REJECT.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_SAME.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_TCPMSS.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_TOS.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_ULOG.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_addrtype.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_ah.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_comment.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_connmark.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_conntrack.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_dscp.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_ecn.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_esp.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_hashlimit.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_helper.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_iprange.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_length.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_limit.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_mac.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_mark.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_multiport.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_owner.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_physdev.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_pkttype.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_realm.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_recent.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_sctp.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_state.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_tcpmss.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_tos.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/ipt_ttl.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/listhelp.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv4/lockhelp.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6 -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6/ip6_tables.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6/ip6t_LOG.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6/ip6t_MARK.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6/ip6t_ah.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6/ip6t_esp.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6/ip6t_frag.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6/ip6t_hl.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6/ip6t_ipv6header.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6/ip6t_length.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6/ip6t_limit.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6/ip6t_mac.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6/ip6t_mark.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6/ip6t_multiport.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6/ip6t_opts.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6/ip6t_owner.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6/ip6t_physdev.h -#opt/MACHINE-uClibc/include/linux/netfilter_ipv6/ip6t_rt.h -#opt/MACHINE-uClibc/include/linux/netlink.h -#opt/MACHINE-uClibc/include/linux/netrom.h -#opt/MACHINE-uClibc/include/linux/nfs.h -#opt/MACHINE-uClibc/include/linux/nfs2.h -#opt/MACHINE-uClibc/include/linux/nfs3.h -#opt/MACHINE-uClibc/include/linux/nfs4.h -#opt/MACHINE-uClibc/include/linux/nfs4_mount.h -#opt/MACHINE-uClibc/include/linux/nfs_fs.h -#opt/MACHINE-uClibc/include/linux/nfs_fs_i.h -#opt/MACHINE-uClibc/include/linux/nfs_fs_sb.h -#opt/MACHINE-uClibc/include/linux/nfs_idmap.h -#opt/MACHINE-uClibc/include/linux/nfs_mount.h -#opt/MACHINE-uClibc/include/linux/nfs_xdr.h -#opt/MACHINE-uClibc/include/linux/nfsd -#opt/MACHINE-uClibc/include/linux/nfsd/const.h -#opt/MACHINE-uClibc/include/linux/nfsd/debug.h -#opt/MACHINE-uClibc/include/linux/nfsd/export.h -#opt/MACHINE-uClibc/include/linux/nfsd/interface.h -#opt/MACHINE-uClibc/include/linux/nfsd/nfsd.h -#opt/MACHINE-uClibc/include/linux/nfsd/nfsfh.h -#opt/MACHINE-uClibc/include/linux/nfsd/state.h -#opt/MACHINE-uClibc/include/linux/nfsd/stats.h -#opt/MACHINE-uClibc/include/linux/nfsd/syscall.h -#opt/MACHINE-uClibc/include/linux/nfsd/xdr.h -#opt/MACHINE-uClibc/include/linux/nfsd/xdr3.h -#opt/MACHINE-uClibc/include/linux/nfsd/xdr4.h -#opt/MACHINE-uClibc/include/linux/nls.h -#opt/MACHINE-uClibc/include/linux/nmi.h -#opt/MACHINE-uClibc/include/linux/node.h -#opt/MACHINE-uClibc/include/linux/notifier.h -#opt/MACHINE-uClibc/include/linux/nubus.h -#opt/MACHINE-uClibc/include/linux/numa.h -#opt/MACHINE-uClibc/include/linux/nvram.h -#opt/MACHINE-uClibc/include/linux/openprom_fs.h -#opt/MACHINE-uClibc/include/linux/oprofile.h -#opt/MACHINE-uClibc/include/linux/pagemap.h -#opt/MACHINE-uClibc/include/linux/pagevec.h -#opt/MACHINE-uClibc/include/linux/param.h -#opt/MACHINE-uClibc/include/linux/parport.h -#opt/MACHINE-uClibc/include/linux/parport_pc.h -#opt/MACHINE-uClibc/include/linux/parser.h -#opt/MACHINE-uClibc/include/linux/patchkey.h -#opt/MACHINE-uClibc/include/linux/pci-dynids.h -#opt/MACHINE-uClibc/include/linux/pci.h -#opt/MACHINE-uClibc/include/linux/pci_ids.h -#opt/MACHINE-uClibc/include/linux/pcieport_if.h -#opt/MACHINE-uClibc/include/linux/percpu.h -#opt/MACHINE-uClibc/include/linux/percpu_counter.h -#opt/MACHINE-uClibc/include/linux/personality.h -#opt/MACHINE-uClibc/include/linux/pfkeyv2.h -#opt/MACHINE-uClibc/include/linux/pg.h -#opt/MACHINE-uClibc/include/linux/pipe_fs_i.h -#opt/MACHINE-uClibc/include/linux/pkt_cls.h -#opt/MACHINE-uClibc/include/linux/pkt_sched.h -#opt/MACHINE-uClibc/include/linux/pktcdvd.h -#opt/MACHINE-uClibc/include/linux/pmu.h -#opt/MACHINE-uClibc/include/linux/poll.h -#opt/MACHINE-uClibc/include/linux/posix-timers.h -#opt/MACHINE-uClibc/include/linux/posix_acl.h -#opt/MACHINE-uClibc/include/linux/posix_acl_xattr.h -#opt/MACHINE-uClibc/include/linux/posix_types.h -#opt/MACHINE-uClibc/include/linux/ppdev.h -#opt/MACHINE-uClibc/include/linux/ppp-comp.h -#opt/MACHINE-uClibc/include/linux/ppp_channel.h -#opt/MACHINE-uClibc/include/linux/ppp_defs.h -#opt/MACHINE-uClibc/include/linux/prctl.h -#opt/MACHINE-uClibc/include/linux/preempt.h -#opt/MACHINE-uClibc/include/linux/prefetch.h -#opt/MACHINE-uClibc/include/linux/proc_fs.h -#opt/MACHINE-uClibc/include/linux/ps2esdi.h -#opt/MACHINE-uClibc/include/linux/ptrace.h -#opt/MACHINE-uClibc/include/linux/qic117.h -#opt/MACHINE-uClibc/include/linux/qnx4_fs.h -#opt/MACHINE-uClibc/include/linux/qnxtypes.h -#opt/MACHINE-uClibc/include/linux/quota.h -#opt/MACHINE-uClibc/include/linux/quotaio_v1.h -#opt/MACHINE-uClibc/include/linux/quotaio_v2.h -#opt/MACHINE-uClibc/include/linux/radeonfb.h -#opt/MACHINE-uClibc/include/linux/raid -#opt/MACHINE-uClibc/include/linux/raid/linear.h -#opt/MACHINE-uClibc/include/linux/raid/md.h -#opt/MACHINE-uClibc/include/linux/raid/md_p.h -#opt/MACHINE-uClibc/include/linux/raid/md_u.h -#opt/MACHINE-uClibc/include/linux/raid/multipath.h -#opt/MACHINE-uClibc/include/linux/raid/raid0.h -#opt/MACHINE-uClibc/include/linux/raid/raid1.h -#opt/MACHINE-uClibc/include/linux/raid/raid5.h -#opt/MACHINE-uClibc/include/linux/raid/xor.h -#opt/MACHINE-uClibc/include/linux/random.h -#opt/MACHINE-uClibc/include/linux/raw.h -#opt/MACHINE-uClibc/include/linux/rbtree.h -#opt/MACHINE-uClibc/include/linux/reboot.h -#opt/MACHINE-uClibc/include/linux/reiserfs_acl.h -#opt/MACHINE-uClibc/include/linux/reiserfs_fs.h -#opt/MACHINE-uClibc/include/linux/reiserfs_xattr.h -#opt/MACHINE-uClibc/include/linux/resource.h -#opt/MACHINE-uClibc/include/linux/romfs_fs.h -#opt/MACHINE-uClibc/include/linux/root_dev.h -#opt/MACHINE-uClibc/include/linux/rose.h -#opt/MACHINE-uClibc/include/linux/route.h -#opt/MACHINE-uClibc/include/linux/rtc.h -#opt/MACHINE-uClibc/include/linux/rtnetlink.h -#opt/MACHINE-uClibc/include/linux/sc26198.h -#opt/MACHINE-uClibc/include/linux/scc.h -#opt/MACHINE-uClibc/include/linux/sched.h -#opt/MACHINE-uClibc/include/linux/sctp.h -#opt/MACHINE-uClibc/include/linux/scx200.h -#opt/MACHINE-uClibc/include/linux/scx200_gpio.h -#opt/MACHINE-uClibc/include/linux/sdla.h -#opt/MACHINE-uClibc/include/linux/sdla_asy.h -#opt/MACHINE-uClibc/include/linux/sdla_chdlc.h -#opt/MACHINE-uClibc/include/linux/sdla_fr.h -#opt/MACHINE-uClibc/include/linux/sdla_ppp.h -#opt/MACHINE-uClibc/include/linux/sdla_x25.h -#opt/MACHINE-uClibc/include/linux/sdladrv.h -#opt/MACHINE-uClibc/include/linux/sdlapci.h -#opt/MACHINE-uClibc/include/linux/sdlasfm.h -#opt/MACHINE-uClibc/include/linux/securebits.h -#opt/MACHINE-uClibc/include/linux/security.h -#opt/MACHINE-uClibc/include/linux/selection.h -#opt/MACHINE-uClibc/include/linux/selinux_netlink.h -#opt/MACHINE-uClibc/include/linux/sem.h -#opt/MACHINE-uClibc/include/linux/seqlock.h -#opt/MACHINE-uClibc/include/linux/serial.h -#opt/MACHINE-uClibc/include/linux/serial167.h -#opt/MACHINE-uClibc/include/linux/serialP.h -#opt/MACHINE-uClibc/include/linux/serial_8250.h -#opt/MACHINE-uClibc/include/linux/serial_core.h -#opt/MACHINE-uClibc/include/linux/serial_reg.h -#opt/MACHINE-uClibc/include/linux/serio.h -#opt/MACHINE-uClibc/include/linux/shm.h -#opt/MACHINE-uClibc/include/linux/siginfo.h -#opt/MACHINE-uClibc/include/linux/signal.h -#opt/MACHINE-uClibc/include/linux/skbuff.h -#opt/MACHINE-uClibc/include/linux/smb.h -#opt/MACHINE-uClibc/include/linux/smb_fs.h -#opt/MACHINE-uClibc/include/linux/smb_mount.h -#opt/MACHINE-uClibc/include/linux/smbno.h -#opt/MACHINE-uClibc/include/linux/smp_lock.h -#opt/MACHINE-uClibc/include/linux/snmp.h -#opt/MACHINE-uClibc/include/linux/socket.h -#opt/MACHINE-uClibc/include/linux/sockios.h -#opt/MACHINE-uClibc/include/linux/som.h -#opt/MACHINE-uClibc/include/linux/sonet.h -#opt/MACHINE-uClibc/include/linux/sonypi.h -#opt/MACHINE-uClibc/include/linux/sound.h -#opt/MACHINE-uClibc/include/linux/soundcard.h -#opt/MACHINE-uClibc/include/linux/spinlock.h -#opt/MACHINE-uClibc/include/linux/stallion.h -#opt/MACHINE-uClibc/include/linux/stddef.h -#opt/MACHINE-uClibc/include/linux/stringify.h -#opt/MACHINE-uClibc/include/linux/sunrpc -#opt/MACHINE-uClibc/include/linux/sunrpc/cache.h -#opt/MACHINE-uClibc/include/linux/sunrpc/clnt.h -#opt/MACHINE-uClibc/include/linux/sunrpc/debug.h -#opt/MACHINE-uClibc/include/linux/sunrpc/gss_asn1.h -#opt/MACHINE-uClibc/include/linux/sunrpc/gss_krb5.h -#opt/MACHINE-uClibc/include/linux/sunrpc/gss_spkm3.h -#opt/MACHINE-uClibc/include/linux/sunrpc/sched.h -#opt/MACHINE-uClibc/include/linux/sunrpc/stats.h -#opt/MACHINE-uClibc/include/linux/sunrpc/svc.h -#opt/MACHINE-uClibc/include/linux/sunrpc/svcsock.h -#opt/MACHINE-uClibc/include/linux/sunrpc/timer.h -#opt/MACHINE-uClibc/include/linux/sunrpc/types.h -#opt/MACHINE-uClibc/include/linux/sunrpc/xprt.h -#opt/MACHINE-uClibc/include/linux/superhyway.h -#opt/MACHINE-uClibc/include/linux/suspend.h -#opt/MACHINE-uClibc/include/linux/swap.h -#opt/MACHINE-uClibc/include/linux/swapops.h -#opt/MACHINE-uClibc/include/linux/synclink.h -#opt/MACHINE-uClibc/include/linux/sys.h -#opt/MACHINE-uClibc/include/linux/syscalls.h -#opt/MACHINE-uClibc/include/linux/sysctl.h -#opt/MACHINE-uClibc/include/linux/sysdev.h -#opt/MACHINE-uClibc/include/linux/sysfs.h -#opt/MACHINE-uClibc/include/linux/sysrq.h -#opt/MACHINE-uClibc/include/linux/sysv_fs.h -#opt/MACHINE-uClibc/include/linux/tc_act -#opt/MACHINE-uClibc/include/linux/tc_act/tc_defact.h -#opt/MACHINE-uClibc/include/linux/tc_act/tc_gact.h -#opt/MACHINE-uClibc/include/linux/tc_act/tc_ipt.h -#opt/MACHINE-uClibc/include/linux/tc_act/tc_mirred.h -#opt/MACHINE-uClibc/include/linux/tc_act/tc_pedit.h -#opt/MACHINE-uClibc/include/linux/tc_ematch -#opt/MACHINE-uClibc/include/linux/tc_ematch/tc_em_cmp.h -#opt/MACHINE-uClibc/include/linux/tc_ematch/tc_em_meta.h -#opt/MACHINE-uClibc/include/linux/tc_ematch/tc_em_nbyte.h -#opt/MACHINE-uClibc/include/linux/tcp.h -#opt/MACHINE-uClibc/include/linux/tcp_diag.h -#opt/MACHINE-uClibc/include/linux/telephony.h -#opt/MACHINE-uClibc/include/linux/termios.h -#opt/MACHINE-uClibc/include/linux/threads.h -#opt/MACHINE-uClibc/include/linux/ticable.h -#opt/MACHINE-uClibc/include/linux/time.h -#opt/MACHINE-uClibc/include/linux/times.h -#opt/MACHINE-uClibc/include/linux/timex.h -#opt/MACHINE-uClibc/include/linux/tiocl.h -#opt/MACHINE-uClibc/include/linux/toshiba.h -#opt/MACHINE-uClibc/include/linux/tty.h -#opt/MACHINE-uClibc/include/linux/types.h -#opt/MACHINE-uClibc/include/linux/udf_fs.h -#opt/MACHINE-uClibc/include/linux/udf_fs_i.h -#opt/MACHINE-uClibc/include/linux/udf_fs_sb.h -#opt/MACHINE-uClibc/include/linux/udp.h -#opt/MACHINE-uClibc/include/linux/ufs_fs.h -#opt/MACHINE-uClibc/include/linux/uinput.h -#opt/MACHINE-uClibc/include/linux/uio.h -#opt/MACHINE-uClibc/include/linux/ultrasound.h -#opt/MACHINE-uClibc/include/linux/umem.h -#opt/MACHINE-uClibc/include/linux/un.h -#opt/MACHINE-uClibc/include/linux/unistd.h -#opt/MACHINE-uClibc/include/linux/usb.h -#opt/MACHINE-uClibc/include/linux/usb_cdc.h -#opt/MACHINE-uClibc/include/linux/usb_ch9.h -#opt/MACHINE-uClibc/include/linux/usb_gadgetfs.h -#opt/MACHINE-uClibc/include/linux/usbdevice_fs.h -#opt/MACHINE-uClibc/include/linux/user.h -#opt/MACHINE-uClibc/include/linux/utime.h -#opt/MACHINE-uClibc/include/linux/uts.h -#opt/MACHINE-uClibc/include/linux/utsname.h -#opt/MACHINE-uClibc/include/linux/version.h -#opt/MACHINE-uClibc/include/linux/video_decoder.h -#opt/MACHINE-uClibc/include/linux/video_encoder.h -#opt/MACHINE-uClibc/include/linux/videodev.h -#opt/MACHINE-uClibc/include/linux/videodev2.h -#opt/MACHINE-uClibc/include/linux/videotext.h -#opt/MACHINE-uClibc/include/linux/vmalloc.h -#opt/MACHINE-uClibc/include/linux/vt.h -#opt/MACHINE-uClibc/include/linux/vt_buffer.h -#opt/MACHINE-uClibc/include/linux/vt_kern.h -#opt/MACHINE-uClibc/include/linux/wait.h -#opt/MACHINE-uClibc/include/linux/wanpipe.h -#opt/MACHINE-uClibc/include/linux/wanrouter.h -#opt/MACHINE-uClibc/include/linux/watchdog.h -#opt/MACHINE-uClibc/include/linux/wavefront.h -#opt/MACHINE-uClibc/include/linux/wireless.h -#opt/MACHINE-uClibc/include/linux/workqueue.h -#opt/MACHINE-uClibc/include/linux/x25.h -#opt/MACHINE-uClibc/include/linux/xattr.h -#opt/MACHINE-uClibc/include/linux/xattr_acl.h -#opt/MACHINE-uClibc/include/linux/xfrm.h -#opt/MACHINE-uClibc/include/linux/yam.h -#opt/MACHINE-uClibc/include/linux/zftape.h -#opt/MACHINE-uClibc/include/linux/zorro.h -#opt/MACHINE-uClibc/include/linux/zorro_ids.h -#opt/MACHINE-uClibc/include/locale.h -#opt/MACHINE-uClibc/include/malloc.h -#opt/MACHINE-uClibc/include/math.h -#opt/MACHINE-uClibc/include/memory.h -#opt/MACHINE-uClibc/include/mntent.h -#opt/MACHINE-uClibc/include/mqueue.h -#opt/MACHINE-uClibc/include/net -#opt/MACHINE-uClibc/include/net/ethernet.h -#opt/MACHINE-uClibc/include/net/if.h -#opt/MACHINE-uClibc/include/net/if_arp.h -#opt/MACHINE-uClibc/include/net/if_packet.h -#opt/MACHINE-uClibc/include/net/if_ppp.h -#opt/MACHINE-uClibc/include/net/if_shaper.h -#opt/MACHINE-uClibc/include/net/if_slip.h -#opt/MACHINE-uClibc/include/net/ppp-comp.h -#opt/MACHINE-uClibc/include/net/ppp_defs.h -#opt/MACHINE-uClibc/include/net/route.h -#opt/MACHINE-uClibc/include/netax25 -#opt/MACHINE-uClibc/include/netax25/ax25.h -#opt/MACHINE-uClibc/include/netdb.h -#opt/MACHINE-uClibc/include/neteconet -#opt/MACHINE-uClibc/include/neteconet/ec.h -#opt/MACHINE-uClibc/include/netinet -#opt/MACHINE-uClibc/include/netinet/ether.h -#opt/MACHINE-uClibc/include/netinet/icmp6.h -#opt/MACHINE-uClibc/include/netinet/if_ether.h -#opt/MACHINE-uClibc/include/netinet/if_fddi.h -#opt/MACHINE-uClibc/include/netinet/if_tr.h -#opt/MACHINE-uClibc/include/netinet/igmp.h -#opt/MACHINE-uClibc/include/netinet/in.h -#opt/MACHINE-uClibc/include/netinet/in_systm.h -#opt/MACHINE-uClibc/include/netinet/ip.h -#opt/MACHINE-uClibc/include/netinet/ip6.h -#opt/MACHINE-uClibc/include/netinet/ip_fw.h -#opt/MACHINE-uClibc/include/netinet/ip_icmp.h -#opt/MACHINE-uClibc/include/netinet/ip_tcp.h -#opt/MACHINE-uClibc/include/netinet/ip_udp.h -#opt/MACHINE-uClibc/include/netinet/protocols.h -#opt/MACHINE-uClibc/include/netinet/tcp.h -#opt/MACHINE-uClibc/include/netinet/udp.h -#opt/MACHINE-uClibc/include/netipx -#opt/MACHINE-uClibc/include/netipx/ipx.h -#opt/MACHINE-uClibc/include/netpacket -#opt/MACHINE-uClibc/include/netpacket/packet.h -#opt/MACHINE-uClibc/include/nl_types.h -#opt/MACHINE-uClibc/include/obstack.h -#opt/MACHINE-uClibc/include/paths.h -#opt/MACHINE-uClibc/include/poll.h -#opt/MACHINE-uClibc/include/printf.h -#opt/MACHINE-uClibc/include/protocols -#opt/MACHINE-uClibc/include/protocols/routed.h -#opt/MACHINE-uClibc/include/protocols/rwhod.h -#opt/MACHINE-uClibc/include/protocols/talkd.h -#opt/MACHINE-uClibc/include/protocols/timed.h -#opt/MACHINE-uClibc/include/pthread.h -#opt/MACHINE-uClibc/include/pty.h -#opt/MACHINE-uClibc/include/pwd.h -#opt/MACHINE-uClibc/include/regex.h -#opt/MACHINE-uClibc/include/regexp.h -#opt/MACHINE-uClibc/include/resolv.h -#opt/MACHINE-uClibc/include/rpc -#opt/MACHINE-uClibc/include/rpc/auth.h -#opt/MACHINE-uClibc/include/rpc/auth_des.h -#opt/MACHINE-uClibc/include/rpc/auth_unix.h -#opt/MACHINE-uClibc/include/rpc/clnt.h -#opt/MACHINE-uClibc/include/rpc/des_crypt.h -#opt/MACHINE-uClibc/include/rpc/key_prot.h -#opt/MACHINE-uClibc/include/rpc/netdb.h -#opt/MACHINE-uClibc/include/rpc/pmap_clnt.h -#opt/MACHINE-uClibc/include/rpc/pmap_prot.h -#opt/MACHINE-uClibc/include/rpc/pmap_rmt.h -#opt/MACHINE-uClibc/include/rpc/rpc.h -#opt/MACHINE-uClibc/include/rpc/rpc_des.h -#opt/MACHINE-uClibc/include/rpc/rpc_msg.h -#opt/MACHINE-uClibc/include/rpc/svc.h -#opt/MACHINE-uClibc/include/rpc/svc_auth.h -#opt/MACHINE-uClibc/include/rpc/types.h -#opt/MACHINE-uClibc/include/rpc/xdr.h -#opt/MACHINE-uClibc/include/sched.h -#opt/MACHINE-uClibc/include/scsi -#opt/MACHINE-uClibc/include/scsi/scsi.h -#opt/MACHINE-uClibc/include/scsi/scsi_ioctl.h -#opt/MACHINE-uClibc/include/scsi/sg.h -#opt/MACHINE-uClibc/include/search.h -#opt/MACHINE-uClibc/include/semaphore.h -#opt/MACHINE-uClibc/include/setjmp.h -#opt/MACHINE-uClibc/include/sgtty.h -#opt/MACHINE-uClibc/include/shadow.h -#opt/MACHINE-uClibc/include/signal.h -#opt/MACHINE-uClibc/include/stdint.h -#opt/MACHINE-uClibc/include/stdio.h -#opt/MACHINE-uClibc/include/stdio_ext.h -#opt/MACHINE-uClibc/include/stdlib.h -#opt/MACHINE-uClibc/include/string.h -#opt/MACHINE-uClibc/include/strings.h -#opt/MACHINE-uClibc/include/sys -#opt/MACHINE-uClibc/include/sys/bitypes.h -#opt/MACHINE-uClibc/include/sys/cdefs.h -#opt/MACHINE-uClibc/include/sys/debugreg.h -#opt/MACHINE-uClibc/include/sys/dir.h -#opt/MACHINE-uClibc/include/sys/elf.h -#opt/MACHINE-uClibc/include/sys/epoll.h -#opt/MACHINE-uClibc/include/sys/errno.h -#opt/MACHINE-uClibc/include/sys/fcntl.h -#opt/MACHINE-uClibc/include/sys/file.h -#opt/MACHINE-uClibc/include/sys/fsuid.h -#opt/MACHINE-uClibc/include/sys/io.h -#opt/MACHINE-uClibc/include/sys/ioctl.h -#opt/MACHINE-uClibc/include/sys/ipc.h -#opt/MACHINE-uClibc/include/sys/kd.h -#opt/MACHINE-uClibc/include/sys/kdaemon.h -#opt/MACHINE-uClibc/include/sys/klog.h -#opt/MACHINE-uClibc/include/sys/mman.h -#opt/MACHINE-uClibc/include/sys/mount.h -#opt/MACHINE-uClibc/include/sys/msg.h -#opt/MACHINE-uClibc/include/sys/mtio.h -#opt/MACHINE-uClibc/include/sys/param.h -#opt/MACHINE-uClibc/include/sys/perm.h -#opt/MACHINE-uClibc/include/sys/personality.h -#opt/MACHINE-uClibc/include/sys/poll.h -#opt/MACHINE-uClibc/include/sys/prctl.h -#opt/MACHINE-uClibc/include/sys/procfs.h -#opt/MACHINE-uClibc/include/sys/ptrace.h -#opt/MACHINE-uClibc/include/sys/queue.h -#opt/MACHINE-uClibc/include/sys/quota.h -#opt/MACHINE-uClibc/include/sys/reboot.h -#opt/MACHINE-uClibc/include/sys/reg.h -#opt/MACHINE-uClibc/include/sys/resource.h -#opt/MACHINE-uClibc/include/sys/select.h -#opt/MACHINE-uClibc/include/sys/sem.h -#opt/MACHINE-uClibc/include/sys/sendfile.h -#opt/MACHINE-uClibc/include/sys/shm.h -#opt/MACHINE-uClibc/include/sys/signal.h -#opt/MACHINE-uClibc/include/sys/socket.h -#opt/MACHINE-uClibc/include/sys/socketvar.h -#opt/MACHINE-uClibc/include/sys/soundcard.h -#opt/MACHINE-uClibc/include/sys/stat.h -#opt/MACHINE-uClibc/include/sys/statfs.h -#opt/MACHINE-uClibc/include/sys/statvfs.h -#opt/MACHINE-uClibc/include/sys/swap.h -#opt/MACHINE-uClibc/include/sys/syscall.h -#opt/MACHINE-uClibc/include/sys/sysctl.h -#opt/MACHINE-uClibc/include/sys/sysinfo.h -#opt/MACHINE-uClibc/include/sys/syslog.h -#opt/MACHINE-uClibc/include/sys/sysmacros.h -#opt/MACHINE-uClibc/include/sys/termios.h -#opt/MACHINE-uClibc/include/sys/time.h -#opt/MACHINE-uClibc/include/sys/timeb.h -#opt/MACHINE-uClibc/include/sys/times.h -#opt/MACHINE-uClibc/include/sys/timex.h -#opt/MACHINE-uClibc/include/sys/ttydefaults.h -#opt/MACHINE-uClibc/include/sys/types.h -#opt/MACHINE-uClibc/include/sys/ucontext.h -#opt/MACHINE-uClibc/include/sys/uio.h -#opt/MACHINE-uClibc/include/sys/un.h -#opt/MACHINE-uClibc/include/sys/unistd.h -#opt/MACHINE-uClibc/include/sys/user.h -#opt/MACHINE-uClibc/include/sys/ustat.h -#opt/MACHINE-uClibc/include/sys/utsname.h -#opt/MACHINE-uClibc/include/sys/vfs.h -#opt/MACHINE-uClibc/include/sys/vm86.h -#opt/MACHINE-uClibc/include/sys/vt.h -#opt/MACHINE-uClibc/include/sys/wait.h -#opt/MACHINE-uClibc/include/sys/xattr.h -#opt/MACHINE-uClibc/include/syscall.h -#opt/MACHINE-uClibc/include/sysexits.h -#opt/MACHINE-uClibc/include/syslog.h -#opt/MACHINE-uClibc/include/tar.h -#opt/MACHINE-uClibc/include/termio.h -#opt/MACHINE-uClibc/include/termios.h -#opt/MACHINE-uClibc/include/tgmath.h -#opt/MACHINE-uClibc/include/thread_db.h -#opt/MACHINE-uClibc/include/time.h -#opt/MACHINE-uClibc/include/ttyent.h -#opt/MACHINE-uClibc/include/ucontext.h -#opt/MACHINE-uClibc/include/ulimit.h -#opt/MACHINE-uClibc/include/unistd.h -#opt/MACHINE-uClibc/include/ustat.h -#opt/MACHINE-uClibc/include/utime.h -#opt/MACHINE-uClibc/include/utmp.h -#opt/MACHINE-uClibc/include/values.h -#opt/MACHINE-uClibc/include/wait.h -#opt/MACHINE-uClibc/include/wchar.h -#opt/MACHINE-uClibc/include/wctype.h -#opt/MACHINE-uClibc/include/xlocale.h -#opt/MACHINE-uClibc/lib/Scrt1.o -#opt/MACHINE-uClibc/lib/crt1.o -#opt/MACHINE-uClibc/lib/crti.o -#opt/MACHINE-uClibc/lib/crtn.o -#opt/MACHINE-uClibc/lib/ld-uClibc-0.9.28.so -#opt/MACHINE-uClibc/lib/ld-uClibc.so.0 -#opt/MACHINE-uClibc/lib/ldscripts -#opt/MACHINE-uClibc/lib/ldscripts/elf_i386.x -#opt/MACHINE-uClibc/lib/ldscripts/elf_i386.xbn -#opt/MACHINE-uClibc/lib/ldscripts/elf_i386.xc -#opt/MACHINE-uClibc/lib/ldscripts/elf_i386.xd -#opt/MACHINE-uClibc/lib/ldscripts/elf_i386.xdc -#opt/MACHINE-uClibc/lib/ldscripts/elf_i386.xdw -#opt/MACHINE-uClibc/lib/ldscripts/elf_i386.xn -#opt/MACHINE-uClibc/lib/ldscripts/elf_i386.xr -#opt/MACHINE-uClibc/lib/ldscripts/elf_i386.xs -#opt/MACHINE-uClibc/lib/ldscripts/elf_i386.xsc -#opt/MACHINE-uClibc/lib/ldscripts/elf_i386.xsw -#opt/MACHINE-uClibc/lib/ldscripts/elf_i386.xu -#opt/MACHINE-uClibc/lib/ldscripts/elf_i386.xw -#opt/MACHINE-uClibc/lib/ldscripts/i386linux.x -#opt/MACHINE-uClibc/lib/ldscripts/i386linux.xbn -#opt/MACHINE-uClibc/lib/ldscripts/i386linux.xn -#opt/MACHINE-uClibc/lib/ldscripts/i386linux.xr -#opt/MACHINE-uClibc/lib/ldscripts/i386linux.xu -#opt/MACHINE-uClibc/lib/libc.a -#opt/MACHINE-uClibc/lib/libc.so -#opt/MACHINE-uClibc/lib/libc.so.0 -#opt/MACHINE-uClibc/lib/libc_pic.a -#opt/MACHINE-uClibc/lib/libcrypt-0.9.28.so -#opt/MACHINE-uClibc/lib/libcrypt.a -#opt/MACHINE-uClibc/lib/libcrypt.so -#opt/MACHINE-uClibc/lib/libcrypt.so.0 -#opt/MACHINE-uClibc/lib/libcrypt_pic.a -#opt/MACHINE-uClibc/lib/libdl-0.9.28.so -#opt/MACHINE-uClibc/lib/libdl.a -#opt/MACHINE-uClibc/lib/libdl.so -#opt/MACHINE-uClibc/lib/libdl.so.0 -#opt/MACHINE-uClibc/lib/libm-0.9.28.so -#opt/MACHINE-uClibc/lib/libm.a -#opt/MACHINE-uClibc/lib/libm.so -#opt/MACHINE-uClibc/lib/libm.so.0 -#opt/MACHINE-uClibc/lib/libm_pic.a -#opt/MACHINE-uClibc/lib/libnsl-0.9.28.so -#opt/MACHINE-uClibc/lib/libnsl.a -#opt/MACHINE-uClibc/lib/libnsl.so -#opt/MACHINE-uClibc/lib/libnsl.so.0 -#opt/MACHINE-uClibc/lib/libnsl_pic.a -#opt/MACHINE-uClibc/lib/libpthread-0.9.28.so -#opt/MACHINE-uClibc/lib/libpthread.a -#opt/MACHINE-uClibc/lib/libpthread.so -#opt/MACHINE-uClibc/lib/libpthread.so.0 -#opt/MACHINE-uClibc/lib/libpthread_pic.a -#opt/MACHINE-uClibc/lib/libresolv-0.9.28.so -#opt/MACHINE-uClibc/lib/libresolv.a -#opt/MACHINE-uClibc/lib/libresolv.so -#opt/MACHINE-uClibc/lib/libresolv.so.0 -#opt/MACHINE-uClibc/lib/libresolv_pic.a -#opt/MACHINE-uClibc/lib/librt-0.9.28.so -#opt/MACHINE-uClibc/lib/librt.a -#opt/MACHINE-uClibc/lib/librt.so -#opt/MACHINE-uClibc/lib/librt.so.0 -#opt/MACHINE-uClibc/lib/librt_pic.a -#opt/MACHINE-uClibc/lib/libuClibc-0.9.28.so -#opt/MACHINE-uClibc/lib/libutil-0.9.28.so -#opt/MACHINE-uClibc/lib/libutil.a -#opt/MACHINE-uClibc/lib/libutil.so -#opt/MACHINE-uClibc/lib/libutil.so.0 -#opt/MACHINE-uClibc/lib/libutil_pic.a diff --git a/config/rootfiles/common/zlib b/config/rootfiles/common/zlib index b275de54b..78620f4c6 100644 --- a/config/rootfiles/common/zlib +++ b/config/rootfiles/common/zlib @@ -1,7 +1,9 @@ lib/libz.so.1 -lib/libz.so.1.2.3 +lib/libz.so.1.2.7 #usr/include/zconf.h #usr/include/zlib.h #usr/lib/libz.a -usr/lib/libz.so +#usr/lib/libz.so +#usr/lib/pkgconfig +#usr/lib/pkgconfig/zlib.pc #usr/share/man/man3/zlib.3 diff --git a/config/rootfiles/core/62/filelists/files b/config/rootfiles/core/62/filelists/files index 409e5fe8a..89987a1b6 100644 --- a/config/rootfiles/core/62/filelists/files +++ b/config/rootfiles/core/62/filelists/files @@ -1,2 +1,4 @@ etc/system-release etc/issue +srv/web/ipfire/cgi-bin/connections.cgi +usr/lib/gconv diff --git a/config/rootfiles/installer/libsafe b/config/rootfiles/installer/libsafe deleted file mode 120000 index c31e31db4..000000000 --- a/config/rootfiles/installer/libsafe +++ /dev/null @@ -1 +0,0 @@ -../common/libsafe \ No newline at end of file diff --git a/config/rootfiles/installer/pcre b/config/rootfiles/installer/pcre new file mode 120000 index 000000000..ffd861616 --- /dev/null +++ b/config/rootfiles/installer/pcre @@ -0,0 +1 @@ +../common/pcre \ No newline at end of file diff --git a/config/rootfiles/core/52/exclude b/config/rootfiles/oldcore/52/exclude similarity index 100% rename from config/rootfiles/core/52/exclude rename to config/rootfiles/oldcore/52/exclude diff --git a/config/rootfiles/core/52/filelists/apache2 b/config/rootfiles/oldcore/52/filelists/apache2 similarity index 100% rename from config/rootfiles/core/52/filelists/apache2 rename to config/rootfiles/oldcore/52/filelists/apache2 diff --git a/config/rootfiles/core/52/filelists/ethtool b/config/rootfiles/oldcore/52/filelists/ethtool similarity index 100% rename from config/rootfiles/core/52/filelists/ethtool rename to config/rootfiles/oldcore/52/filelists/ethtool diff --git a/config/rootfiles/core/52/filelists/files b/config/rootfiles/oldcore/52/filelists/files similarity index 100% rename from config/rootfiles/core/52/filelists/files rename to config/rootfiles/oldcore/52/filelists/files diff --git a/config/rootfiles/core/52/filelists/squid b/config/rootfiles/oldcore/52/filelists/squid similarity index 100% rename from config/rootfiles/core/52/filelists/squid rename to config/rootfiles/oldcore/52/filelists/squid diff --git a/config/rootfiles/core/52/meta b/config/rootfiles/oldcore/52/meta similarity index 100% rename from config/rootfiles/core/52/meta rename to config/rootfiles/oldcore/52/meta diff --git a/config/rootfiles/core/52/update.sh b/config/rootfiles/oldcore/52/update.sh similarity index 100% rename from config/rootfiles/core/52/update.sh rename to config/rootfiles/oldcore/52/update.sh diff --git a/config/rootfiles/core/53/exclude b/config/rootfiles/oldcore/53/exclude similarity index 100% rename from config/rootfiles/core/53/exclude rename to config/rootfiles/oldcore/53/exclude diff --git a/config/rootfiles/core/53/filelists/apache2 b/config/rootfiles/oldcore/53/filelists/apache2 similarity index 100% rename from config/rootfiles/core/53/filelists/apache2 rename to config/rootfiles/oldcore/53/filelists/apache2 diff --git a/config/rootfiles/core/53/filelists/files b/config/rootfiles/oldcore/53/filelists/files similarity index 100% rename from config/rootfiles/core/53/filelists/files rename to config/rootfiles/oldcore/53/filelists/files diff --git a/config/rootfiles/core/53/filelists/gmp b/config/rootfiles/oldcore/53/filelists/gmp similarity index 100% rename from config/rootfiles/core/53/filelists/gmp rename to config/rootfiles/oldcore/53/filelists/gmp diff --git a/config/rootfiles/core/53/filelists/i586/compat-wireless b/config/rootfiles/oldcore/53/filelists/i586/compat-wireless similarity index 100% rename from config/rootfiles/core/53/filelists/i586/compat-wireless rename to config/rootfiles/oldcore/53/filelists/i586/compat-wireless diff --git a/config/rootfiles/core/53/filelists/i586/gcc b/config/rootfiles/oldcore/53/filelists/i586/gcc similarity index 100% rename from config/rootfiles/core/53/filelists/i586/gcc rename to config/rootfiles/oldcore/53/filelists/i586/gcc diff --git a/config/rootfiles/core/53/filelists/i586/glibc b/config/rootfiles/oldcore/53/filelists/i586/glibc similarity index 100% rename from config/rootfiles/core/53/filelists/i586/glibc rename to config/rootfiles/oldcore/53/filelists/i586/glibc diff --git a/config/rootfiles/core/53/filelists/i586/kvm-kmod b/config/rootfiles/oldcore/53/filelists/i586/kvm-kmod similarity index 100% rename from config/rootfiles/core/53/filelists/i586/kvm-kmod rename to config/rootfiles/oldcore/53/filelists/i586/kvm-kmod diff --git a/config/rootfiles/core/53/filelists/openvpn b/config/rootfiles/oldcore/53/filelists/openvpn similarity index 100% rename from config/rootfiles/core/53/filelists/openvpn rename to config/rootfiles/oldcore/53/filelists/openvpn diff --git a/config/rootfiles/core/53/filelists/strongswan b/config/rootfiles/oldcore/53/filelists/strongswan similarity index 100% rename from config/rootfiles/core/53/filelists/strongswan rename to config/rootfiles/oldcore/53/filelists/strongswan diff --git a/config/rootfiles/core/53/filelists/usb_modeswitch b/config/rootfiles/oldcore/53/filelists/usb_modeswitch similarity index 100% rename from config/rootfiles/core/53/filelists/usb_modeswitch rename to config/rootfiles/oldcore/53/filelists/usb_modeswitch diff --git a/config/rootfiles/core/53/filelists/usb_modeswitch_data b/config/rootfiles/oldcore/53/filelists/usb_modeswitch_data similarity index 100% rename from config/rootfiles/core/53/filelists/usb_modeswitch_data rename to config/rootfiles/oldcore/53/filelists/usb_modeswitch_data diff --git a/config/rootfiles/core/53/meta b/config/rootfiles/oldcore/53/meta similarity index 100% rename from config/rootfiles/core/53/meta rename to config/rootfiles/oldcore/53/meta diff --git a/config/rootfiles/core/53/update.sh b/config/rootfiles/oldcore/53/update.sh similarity index 100% rename from config/rootfiles/core/53/update.sh rename to config/rootfiles/oldcore/53/update.sh diff --git a/config/rootfiles/core/54/exclude b/config/rootfiles/oldcore/54/exclude similarity index 100% rename from config/rootfiles/core/54/exclude rename to config/rootfiles/oldcore/54/exclude diff --git a/config/rootfiles/core/54/filelists/GeoIP b/config/rootfiles/oldcore/54/filelists/GeoIP similarity index 100% rename from config/rootfiles/core/54/filelists/GeoIP rename to config/rootfiles/oldcore/54/filelists/GeoIP diff --git a/config/rootfiles/core/54/filelists/armv5tel/intelnet-modules b/config/rootfiles/oldcore/54/filelists/armv5tel/intelnet-modules similarity index 100% rename from config/rootfiles/core/54/filelists/armv5tel/intelnet-modules rename to config/rootfiles/oldcore/54/filelists/armv5tel/intelnet-modules diff --git a/config/rootfiles/core/54/filelists/daq b/config/rootfiles/oldcore/54/filelists/daq similarity index 100% rename from config/rootfiles/core/54/filelists/daq rename to config/rootfiles/oldcore/54/filelists/daq diff --git a/config/rootfiles/core/54/filelists/dracut b/config/rootfiles/oldcore/54/filelists/dracut similarity index 100% rename from config/rootfiles/core/54/filelists/dracut rename to config/rootfiles/oldcore/54/filelists/dracut diff --git a/config/rootfiles/core/54/filelists/files b/config/rootfiles/oldcore/54/filelists/files similarity index 100% rename from config/rootfiles/core/54/filelists/files rename to config/rootfiles/oldcore/54/filelists/files diff --git a/config/rootfiles/core/54/filelists/fireinfo b/config/rootfiles/oldcore/54/filelists/fireinfo similarity index 100% rename from config/rootfiles/core/54/filelists/fireinfo rename to config/rootfiles/oldcore/54/filelists/fireinfo diff --git a/config/rootfiles/core/54/filelists/fw_ath9k_htc b/config/rootfiles/oldcore/54/filelists/fw_ath9k_htc similarity index 100% rename from config/rootfiles/core/54/filelists/fw_ath9k_htc rename to config/rootfiles/oldcore/54/filelists/fw_ath9k_htc diff --git a/config/rootfiles/core/54/filelists/i586/intelnet-modules b/config/rootfiles/oldcore/54/filelists/i586/intelnet-modules similarity index 100% rename from config/rootfiles/core/54/filelists/i586/intelnet-modules rename to config/rootfiles/oldcore/54/filelists/i586/intelnet-modules diff --git a/config/rootfiles/core/54/filelists/smartmontools b/config/rootfiles/oldcore/54/filelists/smartmontools similarity index 100% rename from config/rootfiles/core/54/filelists/smartmontools rename to config/rootfiles/oldcore/54/filelists/smartmontools diff --git a/config/rootfiles/core/54/filelists/snort b/config/rootfiles/oldcore/54/filelists/snort similarity index 100% rename from config/rootfiles/core/54/filelists/snort rename to config/rootfiles/oldcore/54/filelists/snort diff --git a/config/rootfiles/core/54/filelists/squid b/config/rootfiles/oldcore/54/filelists/squid similarity index 100% rename from config/rootfiles/core/54/filelists/squid rename to config/rootfiles/oldcore/54/filelists/squid diff --git a/config/rootfiles/core/54/filelists/strongswan b/config/rootfiles/oldcore/54/filelists/strongswan similarity index 100% rename from config/rootfiles/core/54/filelists/strongswan rename to config/rootfiles/oldcore/54/filelists/strongswan diff --git a/config/rootfiles/core/54/filelists/tzdata b/config/rootfiles/oldcore/54/filelists/tzdata similarity index 100% rename from config/rootfiles/core/54/filelists/tzdata rename to config/rootfiles/oldcore/54/filelists/tzdata diff --git a/config/rootfiles/core/54/meta b/config/rootfiles/oldcore/54/meta similarity index 100% rename from config/rootfiles/core/54/meta rename to config/rootfiles/oldcore/54/meta diff --git a/config/rootfiles/core/54/update.sh b/config/rootfiles/oldcore/54/update.sh similarity index 100% rename from config/rootfiles/core/54/update.sh rename to config/rootfiles/oldcore/54/update.sh diff --git a/config/rootfiles/core/55/exclude b/config/rootfiles/oldcore/55/exclude similarity index 100% rename from config/rootfiles/core/55/exclude rename to config/rootfiles/oldcore/55/exclude diff --git a/config/rootfiles/core/55/filelists/files b/config/rootfiles/oldcore/55/filelists/files similarity index 100% rename from config/rootfiles/core/55/filelists/files rename to config/rootfiles/oldcore/55/filelists/files diff --git a/config/rootfiles/core/55/filelists/openssh b/config/rootfiles/oldcore/55/filelists/openssh similarity index 100% rename from config/rootfiles/core/55/filelists/openssh rename to config/rootfiles/oldcore/55/filelists/openssh diff --git a/config/rootfiles/core/55/filelists/openssl b/config/rootfiles/oldcore/55/filelists/openssl similarity index 100% rename from config/rootfiles/core/55/filelists/openssl rename to config/rootfiles/oldcore/55/filelists/openssl diff --git a/config/rootfiles/core/55/meta b/config/rootfiles/oldcore/55/meta similarity index 100% rename from config/rootfiles/core/55/meta rename to config/rootfiles/oldcore/55/meta diff --git a/config/rootfiles/core/55/update.sh b/config/rootfiles/oldcore/55/update.sh similarity index 100% rename from config/rootfiles/core/55/update.sh rename to config/rootfiles/oldcore/55/update.sh diff --git a/config/rootfiles/core/56/exclude b/config/rootfiles/oldcore/56/exclude similarity index 100% rename from config/rootfiles/core/56/exclude rename to config/rootfiles/oldcore/56/exclude diff --git a/config/rootfiles/core/56/filelists/Crypt-PasswdMD5 b/config/rootfiles/oldcore/56/filelists/Crypt-PasswdMD5 similarity index 100% rename from config/rootfiles/core/56/filelists/Crypt-PasswdMD5 rename to config/rootfiles/oldcore/56/filelists/Crypt-PasswdMD5 diff --git a/config/rootfiles/core/56/filelists/files b/config/rootfiles/oldcore/56/filelists/files similarity index 100% rename from config/rootfiles/core/56/filelists/files rename to config/rootfiles/oldcore/56/filelists/files diff --git a/config/rootfiles/core/56/filelists/openssh b/config/rootfiles/oldcore/56/filelists/openssh similarity index 100% rename from config/rootfiles/core/56/filelists/openssh rename to config/rootfiles/oldcore/56/filelists/openssh diff --git a/config/rootfiles/core/56/filelists/openssl b/config/rootfiles/oldcore/56/filelists/openssl similarity index 100% rename from config/rootfiles/core/56/filelists/openssl rename to config/rootfiles/oldcore/56/filelists/openssl diff --git a/config/rootfiles/core/56/filelists/usb_modeswitch b/config/rootfiles/oldcore/56/filelists/usb_modeswitch similarity index 100% rename from config/rootfiles/core/56/filelists/usb_modeswitch rename to config/rootfiles/oldcore/56/filelists/usb_modeswitch diff --git a/config/rootfiles/core/56/filelists/usb_modeswitch_data b/config/rootfiles/oldcore/56/filelists/usb_modeswitch_data similarity index 100% rename from config/rootfiles/core/56/filelists/usb_modeswitch_data rename to config/rootfiles/oldcore/56/filelists/usb_modeswitch_data diff --git a/config/rootfiles/core/56/meta b/config/rootfiles/oldcore/56/meta similarity index 100% rename from config/rootfiles/core/56/meta rename to config/rootfiles/oldcore/56/meta diff --git a/config/rootfiles/core/56/update.sh b/config/rootfiles/oldcore/56/update.sh similarity index 100% rename from config/rootfiles/core/56/update.sh rename to config/rootfiles/oldcore/56/update.sh diff --git a/config/rootfiles/core/57/exclude b/config/rootfiles/oldcore/57/exclude similarity index 100% rename from config/rootfiles/core/57/exclude rename to config/rootfiles/oldcore/57/exclude diff --git a/config/rootfiles/core/57/filelists/apache2 b/config/rootfiles/oldcore/57/filelists/apache2 similarity index 100% rename from config/rootfiles/core/57/filelists/apache2 rename to config/rootfiles/oldcore/57/filelists/apache2 diff --git a/config/rootfiles/core/57/filelists/files b/config/rootfiles/oldcore/57/filelists/files similarity index 100% rename from config/rootfiles/core/57/filelists/files rename to config/rootfiles/oldcore/57/filelists/files diff --git a/config/rootfiles/core/57/filelists/php b/config/rootfiles/oldcore/57/filelists/php similarity index 100% rename from config/rootfiles/core/57/filelists/php rename to config/rootfiles/oldcore/57/filelists/php diff --git a/config/rootfiles/core/57/filelists/squid b/config/rootfiles/oldcore/57/filelists/squid similarity index 100% rename from config/rootfiles/core/57/filelists/squid rename to config/rootfiles/oldcore/57/filelists/squid diff --git a/config/rootfiles/core/57/filelists/strongswan b/config/rootfiles/oldcore/57/filelists/strongswan similarity index 100% rename from config/rootfiles/core/57/filelists/strongswan rename to config/rootfiles/oldcore/57/filelists/strongswan diff --git a/config/rootfiles/core/57/filelists/vim b/config/rootfiles/oldcore/57/filelists/vim similarity index 100% rename from config/rootfiles/core/57/filelists/vim rename to config/rootfiles/oldcore/57/filelists/vim diff --git a/config/rootfiles/core/57/meta b/config/rootfiles/oldcore/57/meta similarity index 100% rename from config/rootfiles/core/57/meta rename to config/rootfiles/oldcore/57/meta diff --git a/config/rootfiles/core/57/update.sh b/config/rootfiles/oldcore/57/update.sh similarity index 100% rename from config/rootfiles/core/57/update.sh rename to config/rootfiles/oldcore/57/update.sh diff --git a/config/rootfiles/core/58/exclude b/config/rootfiles/oldcore/58/exclude similarity index 100% rename from config/rootfiles/core/58/exclude rename to config/rootfiles/oldcore/58/exclude diff --git a/config/rootfiles/core/58/filelists/GeoIP b/config/rootfiles/oldcore/58/filelists/GeoIP similarity index 100% rename from config/rootfiles/core/58/filelists/GeoIP rename to config/rootfiles/oldcore/58/filelists/GeoIP diff --git a/config/rootfiles/core/58/filelists/Net-Telnet b/config/rootfiles/oldcore/58/filelists/Net-Telnet similarity index 100% rename from config/rootfiles/core/58/filelists/Net-Telnet rename to config/rootfiles/oldcore/58/filelists/Net-Telnet diff --git a/config/rootfiles/core/58/filelists/armv5tel/cryptodev b/config/rootfiles/oldcore/58/filelists/armv5tel/cryptodev similarity index 100% rename from config/rootfiles/core/58/filelists/armv5tel/cryptodev rename to config/rootfiles/oldcore/58/filelists/armv5tel/cryptodev diff --git a/config/rootfiles/core/58/filelists/files b/config/rootfiles/oldcore/58/filelists/files similarity index 100% rename from config/rootfiles/core/58/filelists/files rename to config/rootfiles/oldcore/58/filelists/files diff --git a/config/rootfiles/core/58/filelists/fireinfo b/config/rootfiles/oldcore/58/filelists/fireinfo similarity index 100% rename from config/rootfiles/core/58/filelists/fireinfo rename to config/rootfiles/oldcore/58/filelists/fireinfo diff --git a/config/rootfiles/core/58/filelists/hwdata b/config/rootfiles/oldcore/58/filelists/hwdata similarity index 100% rename from config/rootfiles/core/58/filelists/hwdata rename to config/rootfiles/oldcore/58/filelists/hwdata diff --git a/config/rootfiles/core/58/filelists/i586/cryptodev b/config/rootfiles/oldcore/58/filelists/i586/cryptodev similarity index 100% rename from config/rootfiles/core/58/filelists/i586/cryptodev rename to config/rootfiles/oldcore/58/filelists/i586/cryptodev diff --git a/config/rootfiles/core/58/filelists/libpng b/config/rootfiles/oldcore/58/filelists/libpng similarity index 100% rename from config/rootfiles/core/58/filelists/libpng rename to config/rootfiles/oldcore/58/filelists/libpng diff --git a/config/rootfiles/core/58/filelists/openssh b/config/rootfiles/oldcore/58/filelists/openssh similarity index 100% rename from config/rootfiles/core/58/filelists/openssh rename to config/rootfiles/oldcore/58/filelists/openssh diff --git a/config/rootfiles/core/58/filelists/openssl b/config/rootfiles/oldcore/58/filelists/openssl similarity index 100% rename from config/rootfiles/core/58/filelists/openssl rename to config/rootfiles/oldcore/58/filelists/openssl diff --git a/config/rootfiles/core/58/filelists/openvpn b/config/rootfiles/oldcore/58/filelists/openvpn similarity index 100% rename from config/rootfiles/core/58/filelists/openvpn rename to config/rootfiles/oldcore/58/filelists/openvpn diff --git a/config/rootfiles/core/58/filelists/strongswan b/config/rootfiles/oldcore/58/filelists/strongswan similarity index 100% rename from config/rootfiles/core/58/filelists/strongswan rename to config/rootfiles/oldcore/58/filelists/strongswan diff --git a/config/rootfiles/core/58/filelists/usb_modeswitch b/config/rootfiles/oldcore/58/filelists/usb_modeswitch similarity index 100% rename from config/rootfiles/core/58/filelists/usb_modeswitch rename to config/rootfiles/oldcore/58/filelists/usb_modeswitch diff --git a/config/rootfiles/core/58/meta b/config/rootfiles/oldcore/58/meta similarity index 100% rename from config/rootfiles/core/58/meta rename to config/rootfiles/oldcore/58/meta diff --git a/config/rootfiles/core/58/update.sh b/config/rootfiles/oldcore/58/update.sh similarity index 100% rename from config/rootfiles/core/58/update.sh rename to config/rootfiles/oldcore/58/update.sh diff --git a/config/rootfiles/core/59/exclude b/config/rootfiles/oldcore/59/exclude similarity index 100% rename from config/rootfiles/core/59/exclude rename to config/rootfiles/oldcore/59/exclude diff --git a/config/rootfiles/core/59/filelists/GeoIP b/config/rootfiles/oldcore/59/filelists/GeoIP similarity index 100% rename from config/rootfiles/core/59/filelists/GeoIP rename to config/rootfiles/oldcore/59/filelists/GeoIP diff --git a/config/rootfiles/core/59/filelists/Net-Telnet b/config/rootfiles/oldcore/59/filelists/Net-Telnet similarity index 100% rename from config/rootfiles/core/59/filelists/Net-Telnet rename to config/rootfiles/oldcore/59/filelists/Net-Telnet diff --git a/config/rootfiles/core/59/filelists/files b/config/rootfiles/oldcore/59/filelists/files similarity index 100% rename from config/rootfiles/core/59/filelists/files rename to config/rootfiles/oldcore/59/filelists/files diff --git a/config/rootfiles/core/59/filelists/openssh b/config/rootfiles/oldcore/59/filelists/openssh similarity index 100% rename from config/rootfiles/core/59/filelists/openssh rename to config/rootfiles/oldcore/59/filelists/openssh diff --git a/config/rootfiles/core/59/filelists/openssl b/config/rootfiles/oldcore/59/filelists/openssl similarity index 100% rename from config/rootfiles/core/59/filelists/openssl rename to config/rootfiles/oldcore/59/filelists/openssl diff --git a/config/rootfiles/core/59/filelists/php b/config/rootfiles/oldcore/59/filelists/php similarity index 100% rename from config/rootfiles/core/59/filelists/php rename to config/rootfiles/oldcore/59/filelists/php diff --git a/config/rootfiles/core/59/filelists/python b/config/rootfiles/oldcore/59/filelists/python similarity index 100% rename from config/rootfiles/core/59/filelists/python rename to config/rootfiles/oldcore/59/filelists/python diff --git a/config/rootfiles/core/59/filelists/strongswan b/config/rootfiles/oldcore/59/filelists/strongswan similarity index 100% rename from config/rootfiles/core/59/filelists/strongswan rename to config/rootfiles/oldcore/59/filelists/strongswan diff --git a/config/rootfiles/core/59/meta b/config/rootfiles/oldcore/59/meta similarity index 100% rename from config/rootfiles/core/59/meta rename to config/rootfiles/oldcore/59/meta diff --git a/config/rootfiles/core/59/update.sh b/config/rootfiles/oldcore/59/update.sh similarity index 100% rename from config/rootfiles/core/59/update.sh rename to config/rootfiles/oldcore/59/update.sh diff --git a/config/rootfiles/packages/applejuice b/config/rootfiles/packages/applejuice deleted file mode 100644 index ca14deeb9..000000000 --- a/config/rootfiles/packages/applejuice +++ /dev/null @@ -1,141 +0,0 @@ -etc/httpd/conf/vhosts.d/phpaj.conf -etc/rc.d/init.d/applejuice -opt/applejuice -opt/applejuice/ajcore.jar -opt/applejuice/libajnetmask.so -srv/web/phpaj -srv/web/phpaj/export -srv/web/phpaj/export/Default.php -srv/web/phpaj/export/ajl.php -srv/web/phpaj/export/bb.php -srv/web/phpaj/export/html.php -srv/web/phpaj/index.php -srv/web/phpaj/language -srv/web/phpaj/language/deutsch.xml -srv/web/phpaj/language/english.xml -srv/web/phpaj/main -srv/web/phpaj/main/classes -srv/web/phpaj/main/classes/class_core.php -srv/web/phpaj/main/classes/class_downloads.php -srv/web/phpaj/main/classes/class_icons.php -srv/web/phpaj/main/classes/class_search.php -srv/web/phpaj/main/classes/class_server.php -srv/web/phpaj/main/classes/class_share.php -srv/web/phpaj/main/classes/class_uploads.php -srv/web/phpaj/main/directory.php -srv/web/phpaj/main/dl_parts.php -srv/web/phpaj/main/dl_users.php -srv/web/phpaj/main/downloads.php -srv/web/phpaj/main/extras.php -srv/web/phpaj/main/index.php -srv/web/phpaj/main/progressbar.php -srv/web/phpaj/main/search.php -srv/web/phpaj/main/server.php -srv/web/phpaj/main/settings.php -srv/web/phpaj/main/shareexport.php -srv/web/phpaj/main/sharefiles.php -srv/web/phpaj/main/shares.php -srv/web/phpaj/main/showparts.php -srv/web/phpaj/main/start.php -srv/web/phpaj/main/status.php -srv/web/phpaj/main/subs.php -srv/web/phpaj/main/top.php -srv/web/phpaj/main/uploads.php -srv/web/phpaj/minigui -srv/web/phpaj/minigui/downloads.php -srv/web/phpaj/minigui/index.php -srv/web/phpaj/minigui/minigui.php -srv/web/phpaj/plugins -srv/web/phpaj/plugins/ajl -srv/web/phpaj/plugins/ajl/ajl.php -srv/web/phpaj/plugins/ajl/icon.gif -srv/web/phpaj/plugins/ajl/info.php -srv/web/phpaj/plugins/register.php -srv/web/phpaj/plugins/sharestats -srv/web/phpaj/plugins/sharestats/info.php -srv/web/phpaj/plugins/sharestats/sharestats.php -srv/web/phpaj/plugins/versionchecker -srv/web/phpaj/plugins/versionchecker/info.php -srv/web/phpaj/plugins/versionchecker/versionchecker.php -srv/web/phpaj/plugins/wizard -srv/web/phpaj/plugins/wizard/icon.gif -srv/web/phpaj/plugins/wizard/info.php -srv/web/phpaj/plugins/wizard/wizard.php -srv/web/phpaj/plugins/wizard/wizard.xml -srv/web/phpaj/style -srv/web/phpaj/style/default -srv/web/phpaj/style/default/default_blue.css -srv/web/phpaj/style/default/default_green.css -srv/web/phpaj/style/default/default_grey.css -srv/web/phpaj/style/default/info.png -srv/web/phpaj/style/default/minus.png -srv/web/phpaj/style/default/os -srv/web/phpaj/style/default/os/bsd.png -srv/web/phpaj/style/default/os/linux.png -srv/web/phpaj/style/default/os/mac.png -srv/web/phpaj/style/default/os/na.png -srv/web/phpaj/style/default/os/netware.png -srv/web/phpaj/style/default/os/os2.png -srv/web/phpaj/style/default/os/solaris.png -srv/web/phpaj/style/default/os/win.png -srv/web/phpaj/style/default/plus.png -srv/web/phpaj/style/default/server -srv/web/phpaj/style/default/server/alt.gif -srv/web/phpaj/style/default/server/neu.gif -srv/web/phpaj/style/default/server/verbinde.gif -srv/web/phpaj/style/default/server/verbunden.gif -srv/web/phpaj/style/default/stop.png -srv/web/phpaj/style/default/tabs -srv/web/phpaj/style/default/tabs/download.gif -srv/web/phpaj/style/default/tabs/extras.gif -srv/web/phpaj/style/default/tabs/kill.gif -srv/web/phpaj/style/default/tabs/logout.gif -srv/web/phpaj/style/default/tabs/meinshare.gif -srv/web/phpaj/style/default/tabs/optionen.gif -srv/web/phpaj/style/default/tabs/server.gif -srv/web/phpaj/style/default/tabs/start.gif -srv/web/phpaj/style/default/tabs/suchen.gif -srv/web/phpaj/style/default/tabs/upload.gif -srv/web/phpaj/style/default/user -srv/web/phpaj/style/default/user/direct.png -srv/web/phpaj/style/default/user/indirect.png -srv/web/phpaj/style/default/user/tryindirect.png -srv/web/phpaj/style/default/user/unknown.png -srv/web/phpaj/style/default/warnung.gif -srv/web/phpaj/style/default/x.png -srv/web/phpaj/style/default_blue.php -srv/web/phpaj/style/default_green.php -srv/web/phpaj/style/default_grey.php -srv/web/phpaj/style/new -srv/web/phpaj/style/new.php -srv/web/phpaj/style/new/bg.png -srv/web/phpaj/style/new/new.css -srv/web/phpaj/style/tango -srv/web/phpaj/style/tango.php -srv/web/phpaj/style/tango/bg.png -srv/web/phpaj/style/tango/icons -srv/web/phpaj/style/tango/icons/direct.png -srv/web/phpaj/style/tango/icons/down.png -srv/web/phpaj/style/tango/icons/empty.png -srv/web/phpaj/style/tango/icons/extras.png -srv/web/phpaj/style/tango/icons/home.png -srv/web/phpaj/style/tango/icons/indirect.png -srv/web/phpaj/style/tango/icons/info.png -srv/web/phpaj/style/tango/icons/kill.png -srv/web/phpaj/style/tango/icons/logout.png -srv/web/phpaj/style/tango/icons/minus.png -srv/web/phpaj/style/tango/icons/plus.png -srv/web/phpaj/style/tango/icons/preferences.png -srv/web/phpaj/style/tango/icons/search.png -srv/web/phpaj/style/tango/icons/server.png -srv/web/phpaj/style/tango/icons/share.png -srv/web/phpaj/style/tango/icons/stop.png -srv/web/phpaj/style/tango/icons/up.png -srv/web/phpaj/style/tango/icons/warning.png -srv/web/phpaj/style/tango/icons/x.png -srv/web/phpaj/style/tango/tango.css -srv/web/phpaj/vars.php -usr/local/bin/applejuicectrl -var/ipfire/applejuice -var/ipfire/applejuice/settings -#usr/lib/libajnetmask.so diff --git a/config/rootfiles/packages/centerim b/config/rootfiles/packages/centerim deleted file mode 100644 index 26f9b48f1..000000000 --- a/config/rootfiles/packages/centerim +++ /dev/null @@ -1,10 +0,0 @@ -usr/bin/centerim -usr/bin/cicqconv -#usr/share/centerim -usr/share/centerim/email.wav -usr/share/centerim/msg.wav -usr/share/centerim/offline.wav -usr/share/centerim/online.wav -usr/share/centerim/sms.wav -usr/share/centerim/url.wav -#usr/share/man/man1/cicqconv.1 diff --git a/config/rootfiles/packages/dahdi b/config/rootfiles/packages/dahdi index 8e7b8d7ce..d3291b86b 100644 --- a/config/rootfiles/packages/dahdi +++ b/config/rootfiles/packages/dahdi @@ -1,22 +1,26 @@ etc/dahdi -#etc/hotplug -#etc/hotplug/usb -etc/hotplug/usb/xpp_fxloader -etc/hotplug/usb/xpp_fxloader.usermap -etc/modprobe.d/dahdi -etc/modprobe.d/dahdi.blacklist +etc/modprobe.d/dahdi.blacklist.conf +etc/modprobe.d/dahdi.conf etc/rc.d/init.d/dahdi etc/rc.d/rc0.d/K30dahdi etc/rc.d/rc3.d/S15dahdi etc/rc.d/rc6.d/K30dahdi etc/udev/rules.d/dahdi.rules etc/udev/rules.d/xpp.rules +lib/firmware/.dahdi-fw-hx8-2.06 lib/firmware/.dahdi-fw-oct6114-064-1.05.01 lib/firmware/.dahdi-fw-oct6114-128-1.05.01 +lib/firmware/.dahdi-fw-oct6114-256-1.05.01 lib/firmware/.dahdi-fw-tc400m-MR6.12 +lib/firmware/.dahdi-fw-te820-1.76 +lib/firmware/.dahdi-fw-vpmoct032-1.12.0 +lib/firmware/dahdi-fw-hx8.bin lib/firmware/dahdi-fw-oct6114-064.bin lib/firmware/dahdi-fw-oct6114-128.bin +lib/firmware/dahdi-fw-oct6114-256.bin lib/firmware/dahdi-fw-tc400m.bin +lib/firmware/dahdi-fw-te820.bin +lib/firmware/dahdi-fw-vpmoct032.bin #usr/include/dahdi #usr/include/dahdi/dahdi_config.h #usr/include/dahdi/fasthdlc.h @@ -26,38 +30,47 @@ lib/firmware/dahdi-fw-tc400m.bin #usr/include/dahdi/wctdm_user.h #usr/lib/hotplug #usr/lib/hotplug/firmware -#usr/lib/hotplug/firmware/.dahdi-fw-oct6114-064-1.05.01 -#usr/lib/hotplug/firmware/.dahdi-fw-oct6114-128-1.05.01 -#usr/lib/hotplug/firmware/.dahdi-fw-tc400m-MR6.12 -#usr/lib/hotplug/firmware/dahdi-fw-oct6114-064.bin -#usr/lib/hotplug/firmware/dahdi-fw-oct6114-128.bin -#usr/lib/hotplug/firmware/dahdi-fw-tc400m.bin +usr/lib/hotplug/firmware/.dahdi-fw-hx8-2.06 +usr/lib/hotplug/firmware/.dahdi-fw-oct6114-064-1.05.01 +usr/lib/hotplug/firmware/.dahdi-fw-oct6114-128-1.05.01 +usr/lib/hotplug/firmware/.dahdi-fw-oct6114-256-1.05.01 +usr/lib/hotplug/firmware/.dahdi-fw-tc400m-MR6.12 +usr/lib/hotplug/firmware/.dahdi-fw-te820-1.76 +usr/lib/hotplug/firmware/.dahdi-fw-vpmoct032-1.12.0 +usr/lib/hotplug/firmware/dahdi-fw-hx8.bin +usr/lib/hotplug/firmware/dahdi-fw-oct6114-064.bin +usr/lib/hotplug/firmware/dahdi-fw-oct6114-128.bin +usr/lib/hotplug/firmware/dahdi-fw-oct6114-256.bin +usr/lib/hotplug/firmware/dahdi-fw-tc400m.bin +usr/lib/hotplug/firmware/dahdi-fw-te820.bin +usr/lib/hotplug/firmware/dahdi-fw-vpmoct032.bin #usr/lib/libtonezone.a -usr/lib/libtonezone.so +#usr/lib/libtonezone.so usr/lib/libtonezone.so.1 usr/lib/libtonezone.so.1.0 usr/lib/libtonezone.so.2 usr/lib/libtonezone.so.2.0 -#usr/lib/perl5/site_perl/5.12.3/Dahdi +usr/lib/perl5/site_perl/5.12.3/Dahdi usr/lib/perl5/site_perl/5.12.3/Dahdi.pm usr/lib/perl5/site_perl/5.12.3/Dahdi/Chans.pm -#usr/lib/perl5/site_perl/5.12.3/Dahdi/Config -#usr/lib/perl5/site_perl/5.12.3/Dahdi/Config/Gen +usr/lib/perl5/site_perl/5.12.3/Dahdi/Config +usr/lib/perl5/site_perl/5.12.3/Dahdi/Config/Gen usr/lib/perl5/site_perl/5.12.3/Dahdi/Config/Gen.pm usr/lib/perl5/site_perl/5.12.3/Dahdi/Config/Gen/Chandahdi.pm +usr/lib/perl5/site_perl/5.12.3/Dahdi/Config/Gen/Freepbxdb.pm usr/lib/perl5/site_perl/5.12.3/Dahdi/Config/Gen/Modules.pm usr/lib/perl5/site_perl/5.12.3/Dahdi/Config/Gen/System.pm usr/lib/perl5/site_perl/5.12.3/Dahdi/Config/Gen/Unicall.pm usr/lib/perl5/site_perl/5.12.3/Dahdi/Config/Gen/Users.pm usr/lib/perl5/site_perl/5.12.3/Dahdi/Config/Gen/Xpporder.pm usr/lib/perl5/site_perl/5.12.3/Dahdi/Config/Params.pm -#usr/lib/perl5/site_perl/5.12.3/Dahdi/Hardware +usr/lib/perl5/site_perl/5.12.3/Dahdi/Hardware usr/lib/perl5/site_perl/5.12.3/Dahdi/Hardware.pm usr/lib/perl5/site_perl/5.12.3/Dahdi/Hardware/PCI.pm usr/lib/perl5/site_perl/5.12.3/Dahdi/Hardware/USB.pm usr/lib/perl5/site_perl/5.12.3/Dahdi/Span.pm usr/lib/perl5/site_perl/5.12.3/Dahdi/Utils.pm -#usr/lib/perl5/site_perl/5.12.3/Dahdi/Xpp +usr/lib/perl5/site_perl/5.12.3/Dahdi/Xpp usr/lib/perl5/site_perl/5.12.3/Dahdi/Xpp.pm usr/lib/perl5/site_perl/5.12.3/Dahdi/Xpp/Line.pm usr/lib/perl5/site_perl/5.12.3/Dahdi/Xpp/Mpp.pm @@ -70,6 +83,7 @@ usr/sbin/astribank_tool usr/sbin/dahdi_cfg usr/sbin/dahdi_genconf usr/sbin/dahdi_hardware +usr/sbin/dahdi_maint usr/sbin/dahdi_monitor usr/sbin/dahdi_registration usr/sbin/dahdi_scan @@ -83,22 +97,26 @@ usr/sbin/sethdlc usr/sbin/twinstar usr/sbin/xpp_blink usr/sbin/xpp_sync -#usr/share/dahdi +usr/share/dahdi usr/share/dahdi/FPGA_1141.hex usr/share/dahdi/FPGA_1151.hex +usr/share/dahdi/FPGA_1161.201.hex usr/share/dahdi/FPGA_1161.hex usr/share/dahdi/FPGA_FXS.hex usr/share/dahdi/PIC_TYPE_1.hex usr/share/dahdi/PIC_TYPE_2.hex usr/share/dahdi/PIC_TYPE_3.hex usr/share/dahdi/PIC_TYPE_4.hex +usr/share/dahdi/USB_FW.201.hex usr/share/dahdi/USB_FW.hex +usr/share/dahdi/USB_RECOV.hex usr/share/dahdi/XppConfig.pm usr/share/dahdi/astribank_hook usr/share/dahdi/init_card_1_30 usr/share/dahdi/init_card_2_30 usr/share/dahdi/init_card_3_30 usr/share/dahdi/init_card_4_30 +usr/share/dahdi/init_card_5_30 usr/share/dahdi/waitfor_xpds usr/share/dahdi/xpp_fxloader #usr/share/man/man8/astribank_allow.8 @@ -108,6 +126,7 @@ usr/share/dahdi/xpp_fxloader #usr/share/man/man8/dahdi_cfg.8 #usr/share/man/man8/dahdi_genconf.8 #usr/share/man/man8/dahdi_hardware.8 +#usr/share/man/man8/dahdi_maint.8 #usr/share/man/man8/dahdi_monitor.8 #usr/share/man/man8/dahdi_registration.8 #usr/share/man/man8/dahdi_scan.8 @@ -120,8 +139,12 @@ usr/share/dahdi/xpp_fxloader #usr/share/man/man8/xpp_blink.8 #usr/share/man/man8/xpp_sync.8 #var/ipfire/asterisk -#var/ipfire/asterisk/dahdi +var/ipfire/asterisk/dahdi var/ipfire/asterisk/dahdi/genconf_parameters var/ipfire/asterisk/dahdi/init.conf var/ipfire/asterisk/dahdi/modules var/ipfire/asterisk/dahdi/system.conf +var/ipfire/asterisk/hotplug +var/ipfire/asterisk/hotplug/usb +var/ipfire/asterisk/hotplug/usb/xpp_fxloader +var/ipfire/asterisk/hotplug/usb/xpp_fxloader.usermap diff --git a/config/rootfiles/packages/flac b/config/rootfiles/packages/flac new file mode 100644 index 000000000..d5ca87097 --- /dev/null +++ b/config/rootfiles/packages/flac @@ -0,0 +1,314 @@ +usr/bin/flac +usr/bin/metaflac +#usr/include/FLAC +#usr/include/FLAC++ +#usr/include/FLAC++/all.h +#usr/include/FLAC++/decoder.h +#usr/include/FLAC++/encoder.h +#usr/include/FLAC++/export.h +#usr/include/FLAC++/metadata.h +#usr/include/FLAC/all.h +#usr/include/FLAC/assert.h +#usr/include/FLAC/callback.h +#usr/include/FLAC/export.h +#usr/include/FLAC/format.h +#usr/include/FLAC/metadata.h +#usr/include/FLAC/ordinals.h +#usr/include/FLAC/stream_decoder.h +#usr/include/FLAC/stream_encoder.h +#usr/lib/libFLAC++.a +#usr/lib/libFLAC++.la +#usr/lib/libFLAC++.so +usr/lib/libFLAC++.so.6 +usr/lib/libFLAC++.so.6.2.0 +#usr/lib/libFLAC.a +#usr/lib/libFLAC.la +#usr/lib/libFLAC.so +usr/lib/libFLAC.so.8 +usr/lib/libFLAC.so.8.2.0 +#usr/lib/pkgconfig/flac++.pc +#usr/lib/pkgconfig/flac.pc +#usr/man/man1/flac.1 +#usr/man/man1/metaflac.1 +#usr/share/aclocal/libFLAC++.m4 +#usr/share/aclocal/libFLAC.m4 +#usr/share/doc/flac-1.2.1 +#usr/share/doc/flac-1.2.1/FLAC.tag +#usr/share/doc/flac-1.2.1/html +#usr/share/doc/flac-1.2.1/html/api +#usr/share/doc/flac-1.2.1/html/api/+_2all_8h-source.html +#usr/share/doc/flac-1.2.1/html/api/+_2export_8h-source.html +#usr/share/doc/flac-1.2.1/html/api/+_2export_8h.html +#usr/share/doc/flac-1.2.1/html/api/+_2metadata_8h-source.html +#usr/share/doc/flac-1.2.1/html/api/+_2metadata_8h.html +#usr/share/doc/flac-1.2.1/html/api/all_8h-source.html +#usr/share/doc/flac-1.2.1/html/api/annotated.html +#usr/share/doc/flac-1.2.1/html/api/assert_8h-source.html +#usr/share/doc/flac-1.2.1/html/api/callback_8h-source.html +#usr/share/doc/flac-1.2.1/html/api/callback_8h.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1File-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1File.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1File.png +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1Stream-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1Stream.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1Stream.png +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1Stream_1_1State-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1Stream_1_1State.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1File-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1File.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1File.png +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1Stream-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1Stream.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1Stream.png +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1Stream_1_1State-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1Stream_1_1State.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Application-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Application.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Application.png +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Chain-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Chain.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Chain_1_1Status-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Chain_1_1Status.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1CueSheet-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1CueSheet.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1CueSheet.png +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1CueSheet_1_1Track-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1CueSheet_1_1Track.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Iterator-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Iterator.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Padding-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Padding.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Padding.png +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Picture-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Picture.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Picture.png +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Prototype-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Prototype.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Prototype.png +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SeekTable-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SeekTable.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SeekTable.png +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SimpleIterator-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SimpleIterator.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SimpleIterator_1_1Status-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SimpleIterator_1_1Status.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1StreamInfo-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1StreamInfo.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1StreamInfo.png +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Unknown-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Unknown.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Unknown.png +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1VorbisComment-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1VorbisComment.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1VorbisComment.png +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry-members.html +#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html +#usr/share/doc/flac-1.2.1/html/api/classes.html +#usr/share/doc/flac-1.2.1/html/api/decoder_8h-source.html +#usr/share/doc/flac-1.2.1/html/api/decoder_8h.html +#usr/share/doc/flac-1.2.1/html/api/dir_000000.html +#usr/share/doc/flac-1.2.1/html/api/dir_000001.html +#usr/share/doc/flac-1.2.1/html/api/dir_000002.html +#usr/share/doc/flac-1.2.1/html/api/dirs.html +#usr/share/doc/flac-1.2.1/html/api/doxygen.css +#usr/share/doc/flac-1.2.1/html/api/doxygen.png +#usr/share/doc/flac-1.2.1/html/api/encoder_8h-source.html +#usr/share/doc/flac-1.2.1/html/api/encoder_8h.html +#usr/share/doc/flac-1.2.1/html/api/export_8h-source.html +#usr/share/doc/flac-1.2.1/html/api/export_8h.html +#usr/share/doc/flac-1.2.1/html/api/files.html +#usr/share/doc/flac-1.2.1/html/api/format_8h-source.html +#usr/share/doc/flac-1.2.1/html/api/format_8h.html +#usr/share/doc/flac-1.2.1/html/api/functions.html +#usr/share/doc/flac-1.2.1/html/api/functions_func.html +#usr/share/doc/flac-1.2.1/html/api/functions_vars.html +#usr/share/doc/flac-1.2.1/html/api/globals.html +#usr/share/doc/flac-1.2.1/html/api/globals_0x66.html +#usr/share/doc/flac-1.2.1/html/api/globals_0x67.html +#usr/share/doc/flac-1.2.1/html/api/globals_defs.html +#usr/share/doc/flac-1.2.1/html/api/globals_enum.html +#usr/share/doc/flac-1.2.1/html/api/globals_eval.html +#usr/share/doc/flac-1.2.1/html/api/globals_func.html +#usr/share/doc/flac-1.2.1/html/api/globals_type.html +#usr/share/doc/flac-1.2.1/html/api/globals_vars.html +#usr/share/doc/flac-1.2.1/html/api/group__flac.html +#usr/share/doc/flac-1.2.1/html/api/group__flac__callbacks.html +#usr/share/doc/flac-1.2.1/html/api/group__flac__decoder.html +#usr/share/doc/flac-1.2.1/html/api/group__flac__encoder.html +#usr/share/doc/flac-1.2.1/html/api/group__flac__export.html +#usr/share/doc/flac-1.2.1/html/api/group__flac__format.html +#usr/share/doc/flac-1.2.1/html/api/group__flac__metadata.html +#usr/share/doc/flac-1.2.1/html/api/group__flac__metadata__level0.html +#usr/share/doc/flac-1.2.1/html/api/group__flac__metadata__level1.html +#usr/share/doc/flac-1.2.1/html/api/group__flac__metadata__level2.html +#usr/share/doc/flac-1.2.1/html/api/group__flac__metadata__object.html +#usr/share/doc/flac-1.2.1/html/api/group__flac__stream__decoder.html +#usr/share/doc/flac-1.2.1/html/api/group__flac__stream__encoder.html +#usr/share/doc/flac-1.2.1/html/api/group__flacpp.html +#usr/share/doc/flac-1.2.1/html/api/group__flacpp__decoder.html +#usr/share/doc/flac-1.2.1/html/api/group__flacpp__encoder.html +#usr/share/doc/flac-1.2.1/html/api/group__flacpp__export.html +#usr/share/doc/flac-1.2.1/html/api/group__flacpp__metadata.html +#usr/share/doc/flac-1.2.1/html/api/group__flacpp__metadata__level0.html +#usr/share/doc/flac-1.2.1/html/api/group__flacpp__metadata__level1.html +#usr/share/doc/flac-1.2.1/html/api/group__flacpp__metadata__level2.html +#usr/share/doc/flac-1.2.1/html/api/group__flacpp__metadata__object.html +#usr/share/doc/flac-1.2.1/html/api/group__porting.html +#usr/share/doc/flac-1.2.1/html/api/group__porting__1__1__2__to__1__1__3.html +#usr/share/doc/flac-1.2.1/html/api/group__porting__1__1__3__to__1__1__4.html +#usr/share/doc/flac-1.2.1/html/api/group__porting__1__1__4__to__1__2__0.html +#usr/share/doc/flac-1.2.1/html/api/hierarchy.html +#usr/share/doc/flac-1.2.1/html/api/index.html +#usr/share/doc/flac-1.2.1/html/api/metadata_8h-source.html +#usr/share/doc/flac-1.2.1/html/api/metadata_8h.html +#usr/share/doc/flac-1.2.1/html/api/modules.html +#usr/share/doc/flac-1.2.1/html/api/ordinals_8h-source.html +#usr/share/doc/flac-1.2.1/html/api/stream__decoder_8h-source.html +#usr/share/doc/flac-1.2.1/html/api/stream__decoder_8h.html +#usr/share/doc/flac-1.2.1/html/api/stream__encoder_8h-source.html +#usr/share/doc/flac-1.2.1/html/api/stream__encoder_8h.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____EntropyCodingMethod-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____EntropyCodingMethod.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____EntropyCodingMethod__PartitionedRice-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____EntropyCodingMethod__PartitionedRice.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____EntropyCodingMethod__PartitionedRiceContents-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____EntropyCodingMethod__PartitionedRiceContents.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____Frame-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____Frame.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____FrameFooter-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____FrameFooter.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____FrameHeader-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____FrameHeader.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____IOCallbacks-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____IOCallbacks.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamDecoder-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamDecoder.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamEncoder-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamEncoder.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Application-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Application.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__CueSheet-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__CueSheet.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__CueSheet__Index-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__CueSheet__Index.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__CueSheet__Track-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__CueSheet__Track.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Padding-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Padding.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Picture-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Picture.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__SeekPoint-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__SeekPoint.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__SeekTable-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__SeekTable.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__StreamInfo-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__StreamInfo.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Unknown-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Unknown.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__VorbisComment-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__VorbisComment.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__VorbisComment__Entry-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__VorbisComment__Entry.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__Constant-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__Constant.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__Fixed-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__Fixed.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__LPC-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__LPC.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__Verbatim-members.html +#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__Verbatim.html +#usr/share/doc/flac-1.2.1/html/changelog.html +#usr/share/doc/flac-1.2.1/html/comparison.html +#usr/share/doc/flac-1.2.1/html/comparison__chopin_prelude_24.html +#usr/share/doc/flac-1.2.1/html/comparison__dream_theater_600.html +#usr/share/doc/flac-1.2.1/html/comparison__eddie_warner_titus.html +#usr/share/doc/flac-1.2.1/html/comparison__fanfare_de_l_eventail_de_jeanne.html +#usr/share/doc/flac-1.2.1/html/comparison__gloria_estefan_conga.html +#usr/share/doc/flac-1.2.1/html/comparison__hand_in_my_pocket.html +#usr/share/doc/flac-1.2.1/html/comparison__l_sub_raga_sivapriya.html +#usr/share/doc/flac-1.2.1/html/comparison__laetatus_sum.html +#usr/share/doc/flac-1.2.1/html/comparison__mummified_in_barbed_wire.html +#usr/share/doc/flac-1.2.1/html/comparison__prokofiev_pcon3_3.html +#usr/share/doc/flac-1.2.1/html/comparison__ravel_sq4_4.html +#usr/share/doc/flac-1.2.1/html/comparison__scarlatti_k42.html +#usr/share/doc/flac-1.2.1/html/comparison__tool_forty_six_and_2.html +#usr/share/doc/flac-1.2.1/html/comparison__white_room.html +#usr/share/doc/flac-1.2.1/html/comparison_all_cpudectime.html +#usr/share/doc/flac-1.2.1/html/comparison_all_cpuenctime.html +#usr/share/doc/flac-1.2.1/html/comparison_all_procdectime.html +#usr/share/doc/flac-1.2.1/html/comparison_all_procenctime.html +#usr/share/doc/flac-1.2.1/html/comparison_all_ratio.html +#usr/share/doc/flac-1.2.1/html/developers.html +#usr/share/doc/flac-1.2.1/html/documentation.html +#usr/share/doc/flac-1.2.1/html/documentation_bugs.html +#usr/share/doc/flac-1.2.1/html/documentation_example_code.html +#usr/share/doc/flac-1.2.1/html/documentation_format_overview.html +#usr/share/doc/flac-1.2.1/html/documentation_tasks.html +#usr/share/doc/flac-1.2.1/html/documentation_tools.html +#usr/share/doc/flac-1.2.1/html/documentation_tools_flac.html +#usr/share/doc/flac-1.2.1/html/documentation_tools_metaflac.html +#usr/share/doc/flac-1.2.1/html/documentation_tools_plugins.html +#usr/share/doc/flac-1.2.1/html/download.html +#usr/share/doc/flac-1.2.1/html/faq.html +#usr/share/doc/flac-1.2.1/html/favicon.ico +#usr/share/doc/flac-1.2.1/html/features.html +#usr/share/doc/flac-1.2.1/html/flac.css +#usr/share/doc/flac-1.2.1/html/format.html +#usr/share/doc/flac-1.2.1/html/id.html +#usr/share/doc/flac-1.2.1/html/images +#usr/share/doc/flac-1.2.1/html/images/1x1.gif +#usr/share/doc/flac-1.2.1/html/images/cafebug.gif +#usr/share/doc/flac-1.2.1/html/images/hw +#usr/share/doc/flac-1.2.1/html/images/hw/Blackbird_Front_low3_325x87.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/MS300frontsmall_270x108.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/MediaBox_Frt_170x325.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/SB_Hero_Black_325x182.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/Sooloos-ControlOne_325x328.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/Z500_front_325x94.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/a2_01_325x252.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/arcus_325x135.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/bmp-1430_325x241.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/cs505_front_lrg_325x113.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/enus_3-4lft-hires_product_eva8000_325x127.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/escient_ProductLine_325x163.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/hifidelio_bl_front_Z_RGB_325x163.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/i-station-mini-dx_325x237.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/iwod-g10_325x257.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/knc_hr-2800_325x209.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/mediaready_prodmain_MRMCa_325x232.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/meizu_m6_325x206.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/musica_artwork_325x90.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/neodigits_x5000_325x124.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/onda-vx737_325x240.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/request_n_front_325x103.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/rio_karma_279x254.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/sonos_family_RGB_325x200.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/teclast-tl29_325x244.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/transporter_hero_grey_325x208.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/tvix-4000_325x204.jpg +#usr/share/doc/flac-1.2.1/html/images/hw/vibez_nofm_combi_black_b_325x220.jpg +#usr/share/doc/flac-1.2.1/html/images/logo100.gif +#usr/share/doc/flac-1.2.1/html/images/logo130.gif +#usr/share/doc/flac-1.2.1/html/index.html +#usr/share/doc/flac-1.2.1/html/itunes.html +#usr/share/doc/flac-1.2.1/html/license.html +#usr/share/doc/flac-1.2.1/html/links.html +#usr/share/doc/flac-1.2.1/html/news.html +#usr/share/doc/flac-1.2.1/html/ogg_mapping.html +#usr/share/doc/flac-1.2.1/html/ru +#usr/share/doc/flac-1.2.1/html/ru/authors.html +#usr/share/doc/flac-1.2.1/html/ru/comparison.html +#usr/share/doc/flac-1.2.1/html/ru/developers.html +#usr/share/doc/flac-1.2.1/html/ru/documentation.html +#usr/share/doc/flac-1.2.1/html/ru/download.html +#usr/share/doc/flac-1.2.1/html/ru/features.html +#usr/share/doc/flac-1.2.1/html/ru/format.html +#usr/share/doc/flac-1.2.1/html/ru/goals.html +#usr/share/doc/flac-1.2.1/html/ru/id.html +#usr/share/doc/flac-1.2.1/html/ru/index.html +#usr/share/doc/flac-1.2.1/html/ru/links.html +#usr/share/doc/flac-1.2.1/html/ru/news.html diff --git a/config/rootfiles/packages/gnump3d b/config/rootfiles/packages/gnump3d index f7b18a7c9..450adfb49 100644 --- a/config/rootfiles/packages/gnump3d +++ b/config/rootfiles/packages/gnump3d @@ -1,9 +1,9 @@ +etc/fcron.daily/gnump3d-index #etc/gnump3d etc/gnump3d/file.types etc/gnump3d/gnump3d.conf etc/gnump3d/mime.types etc/rc.d/init.d/gnump3d -etc/fcron.daily/gnump3d-index usr/bin/gnump3d usr/bin/gnump3d-index usr/bin/gnump3d-top @@ -43,7 +43,8 @@ usr/lib/perl5/5.12.3/gnump3d/readtags.pm usr/lib/perl5/5.12.3/gnump3d/sorting.pm usr/lib/perl5/5.12.3/gnump3d/tagcache.pm usr/lib/perl5/5.12.3/gnump3d/url.pm -usr/lib/perl5/5.12.3/Pod +#usr/local/man +#usr/local/man/man1 #usr/local/man/man1/gnump3d-index.1 #usr/local/man/man1/gnump3d-top.1 #usr/local/man/man1/gnump3d.1 @@ -53,7 +54,6 @@ usr/share/gnump3d #usr/share/gnump3d/Avalon/AUTHOR #usr/share/gnump3d/Avalon/COPYING.html #usr/share/gnump3d/Avalon/base.css -#usr/share/gnump3d/Avalon/bug.html #usr/share/gnump3d/Avalon/error.html #usr/share/gnump3d/Avalon/gnump3d-logo.jpg #usr/share/gnump3d/Avalon/html_footer.tmpl @@ -77,7 +77,6 @@ usr/share/gnump3d #usr/share/gnump3d/BlueBox/AUTHOR #usr/share/gnump3d/BlueBox/BlueBox.css #usr/share/gnump3d/BlueBox/COPYING.html -#usr/share/gnump3d/BlueBox/bug.html #usr/share/gnump3d/BlueBox/error.html #usr/share/gnump3d/BlueBox/extras.html #usr/share/gnump3d/BlueBox/footer.tmpl @@ -99,7 +98,6 @@ usr/share/gnump3d #usr/share/gnump3d/Clean #usr/share/gnump3d/Clean/AUTHOR #usr/share/gnump3d/Clean/COPYING.html -#usr/share/gnump3d/Clean/bug.html #usr/share/gnump3d/Clean/error.html #usr/share/gnump3d/Clean/index.html #usr/share/gnump3d/Clean/info.html @@ -118,7 +116,6 @@ usr/share/gnump3d #usr/share/gnump3d/LaFrere #usr/share/gnump3d/LaFrere/AUTHOR #usr/share/gnump3d/LaFrere/COPYING.html -#usr/share/gnump3d/LaFrere/bug.html #usr/share/gnump3d/LaFrere/error.html #usr/share/gnump3d/LaFrere/index.html #usr/share/gnump3d/LaFrere/info.html @@ -137,7 +134,6 @@ usr/share/gnump3d #usr/share/gnump3d/Liquid/AUTHOR #usr/share/gnump3d/Liquid/COPYING.html #usr/share/gnump3d/Liquid/bck.gif -#usr/share/gnump3d/Liquid/bug.html #usr/share/gnump3d/Liquid/cel-bar-anthrazite-act.gif #usr/share/gnump3d/Liquid/cel-bar-anthrazite.gif #usr/share/gnump3d/Liquid/cel-bar-aqua-act.gif @@ -188,7 +184,6 @@ usr/share/gnump3d #usr/share/gnump3d/Musicus #usr/share/gnump3d/Musicus/AUTHOR #usr/share/gnump3d/Musicus/COPYING.html -#usr/share/gnump3d/Musicus/bug.html #usr/share/gnump3d/Musicus/error.html #usr/share/gnump3d/Musicus/extras.html #usr/share/gnump3d/Musicus/footer.tmpl @@ -214,7 +209,6 @@ usr/share/gnump3d #usr/share/gnump3d/Nomad/Nomad_theme.css #usr/share/gnump3d/Nomad/SmallHome.gif #usr/share/gnump3d/Nomad/bg.gif -#usr/share/gnump3d/Nomad/bug.html #usr/share/gnump3d/Nomad/error.html #usr/share/gnump3d/Nomad/gnump3d_themes_footer.tmpl #usr/share/gnump3d/Nomad/gnump3d_themes_header.tmpl @@ -235,7 +229,6 @@ usr/share/gnump3d #usr/share/gnump3d/SchwartzNGrau #usr/share/gnump3d/SchwartzNGrau/AUTHOR #usr/share/gnump3d/SchwartzNGrau/COPYING.html -#usr/share/gnump3d/SchwartzNGrau/bug.html #usr/share/gnump3d/SchwartzNGrau/clear.gif #usr/share/gnump3d/SchwartzNGrau/error.html #usr/share/gnump3d/SchwartzNGrau/index.html @@ -254,7 +247,6 @@ usr/share/gnump3d #usr/share/gnump3d/Tabular #usr/share/gnump3d/Tabular/AUTHOR #usr/share/gnump3d/Tabular/COPYING.html -#usr/share/gnump3d/Tabular/bug.html #usr/share/gnump3d/Tabular/error.html #usr/share/gnump3d/Tabular/extras.html #usr/share/gnump3d/Tabular/footer.tmpl @@ -276,7 +268,6 @@ usr/share/gnump3d #usr/share/gnump3d/Thexder #usr/share/gnump3d/Thexder/AUTHOR #usr/share/gnump3d/Thexder/COPYING.html -#usr/share/gnump3d/Thexder/bug.html #usr/share/gnump3d/Thexder/dig_temp2_01.jpg #usr/share/gnump3d/Thexder/dig_temp2_02.jpg #usr/share/gnump3d/Thexder/dig_temp2_03.gif @@ -308,7 +299,6 @@ usr/share/gnump3d #usr/share/gnump3d/default #usr/share/gnump3d/default/AUTHOR #usr/share/gnump3d/default/COPYING.html -#usr/share/gnump3d/default/bug.html #usr/share/gnump3d/default/error.html #usr/share/gnump3d/default/footer.tmpl #usr/share/gnump3d/default/header.tmpl @@ -328,7 +318,6 @@ usr/share/gnump3d #usr/share/gnump3d/dotNET #usr/share/gnump3d/dotNET/AUTHOR #usr/share/gnump3d/dotNET/COPYING.html -#usr/share/gnump3d/dotNET/bug.html #usr/share/gnump3d/dotNET/content.tmpl #usr/share/gnump3d/dotNET/error.html #usr/share/gnump3d/dotNET/header.tmpl @@ -365,7 +354,6 @@ usr/share/gnump3d #usr/share/gnump3d/nausicaa #usr/share/gnump3d/nausicaa/AUTHOR #usr/share/gnump3d/nausicaa/COPYING.html -#usr/share/gnump3d/nausicaa/bug.html #usr/share/gnump3d/nausicaa/error.html #usr/share/gnump3d/nausicaa/extras.html #usr/share/gnump3d/nausicaa/index.html @@ -382,7 +370,6 @@ usr/share/gnump3d #usr/share/gnump3d/redgrey #usr/share/gnump3d/redgrey/AUTHOR #usr/share/gnump3d/redgrey/COPYING.html -#usr/share/gnump3d/redgrey/bug.html #usr/share/gnump3d/redgrey/error.html #usr/share/gnump3d/redgrey/header.tmpl #usr/share/gnump3d/redgrey/index.html @@ -400,5 +387,4 @@ usr/share/gnump3d var/cache/gnump3d var/cache/gnump3d/serving var/log/gnump3d -#var/mp3 var/mp3/info diff --git a/config/rootfiles/packages/hplip b/config/rootfiles/packages/hplip index 551afa73a..74a271140 100644 --- a/config/rootfiles/packages/hplip +++ b/config/rootfiles/packages/hplip @@ -1,289 +1,242 @@ -usr/bin/hpijs -#usr/share/doc/hplip-2.7.10 -#usr/share/doc/hplip-2.7.10/COPYING -#usr/share/doc/hplip-2.7.10/README_LIBJPG -#usr/share/doc/hplip-2.7.10/about.html -#usr/share/doc/hplip-2.7.10/contacts.html -#usr/share/doc/hplip-2.7.10/downloads.html -#usr/share/doc/hplip-2.7.10/faqs.html -#usr/share/doc/hplip-2.7.10/features.html -#usr/share/doc/hplip-2.7.10/howtos -#usr/share/doc/hplip-2.7.10/howtos/build.html -#usr/share/doc/hplip-2.7.10/howtos/faxing.html -#usr/share/doc/hplip-2.7.10/howtos/index.html -#usr/share/doc/hplip-2.7.10/howtos/install.html -#usr/share/doc/hplip-2.7.10/howtos/io.html -#usr/share/doc/hplip-2.7.10/howtos/known.html -#usr/share/doc/hplip-2.7.10/howtos/negative.html -#usr/share/doc/hplip-2.7.10/howtos/other.html -#usr/share/doc/hplip-2.7.10/howtos/pcard.html -#usr/share/doc/hplip-2.7.10/howtos/printing.html -#usr/share/doc/hplip-2.7.10/howtos/scanning.html -#usr/share/doc/hplip-2.7.10/howtos/toolbox.html -#usr/share/doc/hplip-2.7.10/howtos/uninstall.html -#usr/share/doc/hplip-2.7.10/images -#usr/share/doc/hplip-2.7.10/images/Screenshot-xsane.png -#usr/share/doc/hplip-2.7.10/images/back.png -#usr/share/doc/hplip-2.7.10/images/button.png -#usr/share/doc/hplip-2.7.10/images/circular.gif -#usr/share/doc/hplip-2.7.10/images/cups_device_list.png -#usr/share/doc/hplip-2.7.10/images/cups_left.png -#usr/share/doc/hplip-2.7.10/images/cups_model_list.png -#usr/share/doc/hplip-2.7.10/images/cups_opening.png -#usr/share/doc/hplip-2.7.10/images/cups_printer_model.png -#usr/share/doc/hplip-2.7.10/images/download.png -#usr/share/doc/hplip-2.7.10/images/favicon.ico -#usr/share/doc/hplip-2.7.10/images/favicon2.ico -#usr/share/doc/hplip-2.7.10/images/fullbleed_1.png -#usr/share/doc/hplip-2.7.10/images/fullbleed_2.png -#usr/share/doc/hplip-2.7.10/images/fullbleed_3.png -#usr/share/doc/hplip-2.7.10/images/fullbleed_4.png -#usr/share/doc/hplip-2.7.10/images/gs_hpijs.png -#usr/share/doc/hplip-2.7.10/images/hp-tux-printer.png -#usr/share/doc/hplip-2.7.10/images/hp_invent_logo.png -#usr/share/doc/hplip-2.7.10/images/hplip_overview.png -#usr/share/doc/hplip-2.7.10/images/hpliplogo.png -#usr/share/doc/hplip-2.7.10/images/hplogo.png -#usr/share/doc/hplip-2.7.10/images/hplogo2.png -#usr/share/doc/hplip-2.7.10/images/linux_printing_logo.png -#usr/share/doc/hplip-2.7.10/images/linuxlogo.png -#usr/share/doc/hplip-2.7.10/images/network_appssocket.png -#usr/share/doc/hplip-2.7.10/images/network_device_list.png -#usr/share/doc/hplip-2.7.10/images/network_device_uri.png -#usr/share/doc/hplip-2.7.10/images/network_model_list.png -#usr/share/doc/hplip-2.7.10/images/osi_certified.png -#usr/share/doc/hplip-2.7.10/images/python-logo.png -#usr/share/doc/hplip-2.7.10/images/rest2web.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_functions_copies.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_functions_fax.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_functions_unload.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_functions_xsane.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_hp_setup_step1.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_hp_setup_step2.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_hp_setup_step3.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_hp_setup_step4.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_hp_setup_step5.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_hp_setup_step6.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_installer_1.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_installer_10_postfix.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_installer_11.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_installer_12.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_installer_13.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_installer_14.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_installer_15.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_installer_2.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_installer_3.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_installer_4.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_installer_5.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_installer_6.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_installer_7_postfix.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_installer_9_postfix.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_toolbox_emailalerts.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_toolbox_functions.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_toolbox_functions_autorefresh.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_toolbox_functions_commands.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_toolbox_print_control.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_toolbox_print_functions.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_toolbox_print_print.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_toolbox_print_print1.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_toolbox_print_settings.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_toolbox_settings.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_toolbox_status.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_toolbox_supplies.png -#usr/share/doc/hplip-2.7.10/images/screenshots_lg_toolbox_tools.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_functions_copies.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_functions_fax.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_functions_unload.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_functions_xsane.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_hp_setup_step1.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_hp_setup_step2.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_hp_setup_step3.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_hp_setup_step4.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_hp_setup_step5.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_hp_setup_step6.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_installer_1.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_installer_10_postfix.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_installer_11.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_installer_12.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_installer_13.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_installer_14.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_installer_15.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_installer_2.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_installer_3.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_installer_4.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_installer_5.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_installer_6.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_installer_7_postfix.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_installer_9_postfix.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_toolbox_emailalerts.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_toolbox_functions.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_toolbox_functions_autorefresh.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_toolbox_functions_commands.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_toolbox_print_control.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_toolbox_print_functions.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_toolbox_print_print.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_toolbox_print_print1.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_toolbox_print_settings.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_toolbox_settings.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_toolbox_status.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_toolbox_supplies.png -#usr/share/doc/hplip-2.7.10/images/screenshots_sm_toolbox_tools.png -#usr/share/doc/hplip-2.7.10/images/sflogo.png -#usr/share/doc/hplip-2.7.10/images/topbar.png -#usr/share/doc/hplip-2.7.10/images/tux.png -#usr/share/doc/hplip-2.7.10/images/tuxlogo.png -#usr/share/doc/hplip-2.7.10/images/tuxlogo2.png -#usr/share/doc/hplip-2.7.10/images/view.png -#usr/share/doc/hplip-2.7.10/images/yast_hardware.png -#usr/share/doc/hplip-2.7.10/images/yast_opening_hw.png -#usr/share/doc/hplip-2.7.10/images/yast_other_configure.png -#usr/share/doc/hplip-2.7.10/images/yast_other_kind.png -#usr/share/doc/hplip-2.7.10/images/yast_other_printer.png -#usr/share/doc/hplip-2.7.10/images/yast_printer_model.png -#usr/share/doc/hplip-2.7.10/index.html -#usr/share/doc/hplip-2.7.10/install -#usr/share/doc/hplip-2.7.10/install/index.html -#usr/share/doc/hplip-2.7.10/install/install -#usr/share/doc/hplip-2.7.10/install/install/index.html -#usr/share/doc/hplip-2.7.10/install/manual -#usr/share/doc/hplip-2.7.10/install/manual/configure.html -#usr/share/doc/hplip-2.7.10/install/manual/distros -#usr/share/doc/hplip-2.7.10/install/manual/distros/centos.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/debian.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/fedora_core.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/freebsd.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/gentoo.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/index.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/lfs.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/linspire.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/mac.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/mandriva.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/mepis.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/novell.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/other.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/redhat.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/redhatenterprise.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/slackware.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/ubuntu.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/windows.html -#usr/share/doc/hplip-2.7.10/install/manual/distros/xandros.html -#usr/share/doc/hplip-2.7.10/install/manual/download.html -#usr/share/doc/hplip-2.7.10/install/manual/final.html -#usr/share/doc/hplip-2.7.10/install/manual/hp_setup.html -#usr/share/doc/hplip-2.7.10/install/manual/index.html -#usr/share/doc/hplip-2.7.10/install/manual/make.html -#usr/share/doc/hplip-2.7.10/install/manual/make_install.html -#usr/share/doc/hplip-2.7.10/install/manual/permissions.html -#usr/share/doc/hplip-2.7.10/install/step1 -#usr/share/doc/hplip-2.7.10/install/step1/apt.html -#usr/share/doc/hplip-2.7.10/install/step1/index.html -#usr/share/doc/hplip-2.7.10/install/step1/rpm.html -#usr/share/doc/hplip-2.7.10/install/step2 -#usr/share/doc/hplip-2.7.10/install/step2/debian.html -#usr/share/doc/hplip-2.7.10/install/step2/fc4.html -#usr/share/doc/hplip-2.7.10/install/step2/freebsd.html -#usr/share/doc/hplip-2.7.10/install/step2/index.html -#usr/share/doc/hplip-2.7.10/install/step2/mandriva06.html -#usr/share/doc/hplip-2.7.10/install/step2/other.html -#usr/share/doc/hplip-2.7.10/install/step2/slackware.html -#usr/share/doc/hplip-2.7.10/install/step2/suse10.html -#usr/share/doc/hplip-2.7.10/install/step2/ubuntu510.html -#usr/share/doc/hplip-2.7.10/install/step2/ubuntu606.html -#usr/share/doc/hplip-2.7.10/install/step3 -#usr/share/doc/hplip-2.7.10/install/step3/index.html -#usr/share/doc/hplip-2.7.10/install/step4 -#usr/share/doc/hplip-2.7.10/install/step4/cups -#usr/share/doc/hplip-2.7.10/install/step4/cups/index.html -#usr/share/doc/hplip-2.7.10/install/step4/cups/local.html -#usr/share/doc/hplip-2.7.10/install/step4/cups/net.html -#usr/share/doc/hplip-2.7.10/install/step4/index.html -#usr/share/doc/hplip-2.7.10/install/step4/setup -#usr/share/doc/hplip-2.7.10/install/step4/setup/index.html -#usr/share/doc/hplip-2.7.10/install/step4/setup/local.html -#usr/share/doc/hplip-2.7.10/install/step4/setup/net.html -#usr/share/doc/hplip-2.7.10/install/step4/suse -#usr/share/doc/hplip-2.7.10/install/step4/suse/index.html -#usr/share/doc/hplip-2.7.10/legal.html -#usr/share/doc/hplip-2.7.10/license.html -#usr/share/doc/hplip-2.7.10/mailing_lists.html -#usr/share/doc/hplip-2.7.10/other_support.html -#usr/share/doc/hplip-2.7.10/release_notes.html -#usr/share/doc/hplip-2.7.10/screenshots.html -#usr/share/doc/hplip-2.7.10/styles -#usr/share/doc/hplip-2.7.10/styles/default.css -#usr/share/doc/hplip-2.7.10/styles/rest.css -#usr/share/doc/hplip-2.7.10/support_statement.html -#usr/share/doc/hplip-2.7.10/supported_devices -#usr/share/doc/hplip-2.7.10/supported_devices/color_laser.html -#usr/share/doc/hplip-2.7.10/supported_devices/color_laser_mfp.html -#usr/share/doc/hplip-2.7.10/supported_devices/combined.html -#usr/share/doc/hplip-2.7.10/supported_devices/edgeline.html -#usr/share/doc/hplip-2.7.10/supported_devices/index.html -#usr/share/doc/hplip-2.7.10/supported_devices/inkjet.html -#usr/share/doc/hplip-2.7.10/supported_devices/inkjet_aio.html -#usr/share/doc/hplip-2.7.10/supported_devices/laser.html -#usr/share/doc/hplip-2.7.10/supported_devices/mono_laser_mfp.html -#usr/share/doc/hplip-2.7.10/supported_devices/photosmart.html -#usr/share/doc/hplip-2.7.10/supported_devices/scanjet.html -#usr/share/doc/hplip-2.7.10/supported_devices/unsupported.html -#usr/share/doc/hplip-2.7.10/system_requirements.html -#usr/share/doc/hplip-2.7.10/tech_docs -#usr/share/doc/hplip-2.7.10/tech_docs/device_classes.html -#usr/share/doc/hplip-2.7.10/tech_docs/hpijs.html -#usr/share/doc/hplip-2.7.10/tech_docs/index.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/align.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/check.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/clean.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/colorcal.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/fab.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/firmware.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/hpssd.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/index.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/info.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/install.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/levels.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/makecopies.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/makeuri.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/print.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/probe.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/scan.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/sendfax.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/setup.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/testpage.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/timedate.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/toolbox.html -#usr/share/doc/hplip-2.7.10/tech_docs/man_pages/unload.html -#usr/share/doc/hplip-2.7.10/tech_docs/overview.html -#usr/share/doc/hplip-2.7.10/tech_docs/page_sizes.html -#usr/share/doc/hplip-2.7.10/tech_docs/printable_areas.html -#usr/share/doc/hplip-2.7.10/tech_docs/tarball_install.html -#usr/share/doc/hplip-2.7.10/troubleshooting -#usr/share/doc/hplip-2.7.10/troubleshooting/build.html -#usr/share/doc/hplip-2.7.10/troubleshooting/distro.html -#usr/share/doc/hplip-2.7.10/troubleshooting/faxing.html -#usr/share/doc/hplip-2.7.10/troubleshooting/index.html -#usr/share/doc/hplip-2.7.10/troubleshooting/install.html -#usr/share/doc/hplip-2.7.10/troubleshooting/io.html -#usr/share/doc/hplip-2.7.10/troubleshooting/network.html -#usr/share/doc/hplip-2.7.10/troubleshooting/other.html -#usr/share/doc/hplip-2.7.10/troubleshooting/parallel.html -#usr/share/doc/hplip-2.7.10/troubleshooting/pcard.html -#usr/share/doc/hplip-2.7.10/troubleshooting/printing.html -#usr/share/doc/hplip-2.7.10/troubleshooting/scanning.html -#usr/share/doc/hplip-2.7.10/troubleshooting/toolbox.html -usr/share/foomatic/db/source/PPD/HP/HP_Color_LaserJet_3800.ppd.gz -usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_4Si_v2011.110.ppd.gz -usr/share/foomatic/db/source/PPD/HP/hp_LaserJet_4200_Series.ppd.gz -usr/share/foomatic/db/source/printer/HP-OfficeJet_J3600.xml -usr/share/foomatic/db/source/printer/HP-OfficeJet_J5500.xml -usr/share/foomatic/db/source/printer/HP-OfficeJet_Pro_K8600.xml -usr/share/foomatic/db/source/printer/HP-Officejet_K7100.xml -usr/share/foomatic/db/source/printer/HP-PhotoSmart_C4380.xml -usr/share/foomatic/db/source/printer/HP-PhotoSmart_C6200.xml -usr/share/foomatic/db/source/printer/HP-PhotoSmart_C7200.xml -usr/share/foomatic/db/source/printer/HP-PhotoSmart_C8100.xml -usr/share/foomatic/db/source/printer/HP-PhotoSmart_D5300.xml -usr/share/foomatic/db/source/printer/HP-PhotoSmart_D7200.xml -usr/share/foomatic/db/source/printer/HP-PhotoSmart_D7400.xml +#usr/share/doc/hplip-3.12.6 +#usr/share/doc/hplip-3.12.6/COPYING +#usr/share/doc/hplip-3.12.6/README_LIBJPG +#usr/share/doc/hplip-3.12.6/commandline.html +#usr/share/doc/hplip-3.12.6/copying.html +#usr/share/doc/hplip-3.12.6/copyright +#usr/share/doc/hplip-3.12.6/devicemanager.html +#usr/share/doc/hplip-3.12.6/faxtrouble.html +#usr/share/doc/hplip-3.12.6/gettinghelp.html +#usr/share/doc/hplip-3.12.6/hpscan.html +#usr/share/doc/hplip-3.12.6/images +#usr/share/doc/hplip-3.12.6/images/favicon.ico +#usr/share/doc/hplip-3.12.6/images/print.png +#usr/share/doc/hplip-3.12.6/images/toolbox_actions.png +#usr/share/doc/hplip-3.12.6/images/toolbox_fax.png +#usr/share/doc/hplip-3.12.6/images/toolbox_print_control.png +#usr/share/doc/hplip-3.12.6/images/toolbox_print_settings.png +#usr/share/doc/hplip-3.12.6/images/toolbox_status.png +#usr/share/doc/hplip-3.12.6/images/toolbox_supplies.png +#usr/share/doc/hplip-3.12.6/images/xsane.png +#usr/share/doc/hplip-3.12.6/index.html +#usr/share/doc/hplip-3.12.6/mainttask.html +#usr/share/doc/hplip-3.12.6/plugins.html +#usr/share/doc/hplip-3.12.6/print.html +#usr/share/doc/hplip-3.12.6/printing.html +#usr/share/doc/hplip-3.12.6/printoptions.html +#usr/share/doc/hplip-3.12.6/printtroubleshooting.html +#usr/share/doc/hplip-3.12.6/scanning.html +#usr/share/doc/hplip-3.12.6/scantrouble.html +#usr/share/doc/hplip-3.12.6/sendfax.html +#usr/share/doc/hplip-3.12.6/setup.html +#usr/share/doc/hplip-3.12.6/styles +#usr/share/doc/hplip-3.12.6/styles/css.css +#usr/share/doc/hplip-3.12.6/systray.html +#usr/share/doc/hplip-3.12.6/troubleshooting.html +#usr/share/doc/hplip-3.12.6/uninstalling.html +#usr/share/doc/hplip-3.12.6/upgrading.html usr/share/hplip +#usr/share/ppd +usr/share/ppd/HP +#usr/share/ppd/HP/hp-business_inkjet_2250-ps.ppd.gz +#usr/share/ppd/HP/hp-business_inkjet_2280-ps.ppd.gz +#usr/share/ppd/HP/hp-business_inkjet_2300-ps.ppd.gz +#usr/share/ppd/HP/hp-business_inkjet_2600-ps.ppd.gz +#usr/share/ppd/HP/hp-business_inkjet_2800-ps.ppd.gz +#usr/share/ppd/HP/hp-business_inkjet_3000-ps.ppd.gz +#usr/share/ppd/HP/hp-cm8050_mfp_with_edgeline-ps.ppd.gz +#usr/share/ppd/HP/hp-cm8060_mfp_with_edgeline-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_2500-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_2500_series-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_2550_series-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_2605-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_2605dn-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_2605dtn-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_2700-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_2700n-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_2800-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_2820-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_2830-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_2840-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_3000-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_3700-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_3700n-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_3800-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_4500-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_4550-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_4600-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_4600_series-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_4610-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_4650-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_4700-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_4730mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_5500-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_5550-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_5m-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_8500-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_8550-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_9500-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_9500_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cm1015-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cm1017-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cm1312_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cm1312nfi_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cm2320_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cm2320fxi_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cm2320n_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cm2320nf_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cm3530_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cm4540_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cm4730_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cm6030_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cm6040_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cm6049_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cp1514n-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cp1515n-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cp1518ni-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cp2025-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cp2025dn-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cp2025n-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cp2025x-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cp3505-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cp3525-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cp4005-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cp4020_series-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cp4520_series-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cp5225-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cp5225dn-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cp5225n-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cp5520_series-ps.ppd.gz +#usr/share/ppd/HP/hp-color_laserjet_cp6015-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_4000ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_4020ps-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_4500mfp.ppd.gz +#usr/share/ppd/HP/hp-designjet_4500ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_4520mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_4520ps-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_t1100ps_24in-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_t1100ps_44in-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_t1120ps_24in-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_t1120ps_44in-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_t1200_postscript-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_t1300_postscript-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_t2300_postscript-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_t7100ps-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_t7100ps_monochrome-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_t770_postscript-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_t770ps_24in-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_t790ps_24in-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_t790ps_44in-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_z6100ps_42in_photo-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_z6100ps_60in_photo-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_z6200_42in_photo-ps.ppd.gz +#usr/share/ppd/HP/hp-designjet_z6200_60in_photo-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_100_color_mfp_m175-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_1200-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_1200n-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_1220-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_1220se-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_1300-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_1300n-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_1300xi-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_1320-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_1320_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_1320n-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_1320nw-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_1320tn-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_200_colormfp_m275-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_2100-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_2100_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_2200-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_2200_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_2300-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_2300_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_2410-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_2420-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_2430-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_3015-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_3020-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_3030-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_3050-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_3052-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_3200m-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_3300_3310_3320-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_3380-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_3390-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_4-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_4000_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_400_m401-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_400_m401d-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_400_mfp_m425-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_4050_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_4100_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_4100_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_4200-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_4240-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_4250-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_4300-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_4345_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_4350-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_4_plus-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_4ml-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_4mp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_4si-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_4v-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_5000-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_5000_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_500_color_m551-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_500_color_mfp_m575-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_500_mfp_m525-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_5100_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_5200-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_5200l-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_5200lx-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_5mp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_5p-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_5si-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_5si_mopier-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_600_m601_m602_m603-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_6mp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_6p-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_8000-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_8000_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_8100_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_8100_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_8150_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_9000_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_9000_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_9040-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_9040_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_9050-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_9050_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_9055mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_9065mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_cm1410_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_cp1520_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_m1522_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_m1522n_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_m1522nf_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_m1530_mfp_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_m2727_mfp_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_m3027_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_m3035_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_m4345_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_m4349_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_m4555_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_m5025_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_m5035_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_m9040_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_m9050_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_m9059_mfp-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_p2015_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_p2055_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_p3004-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_p3005-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_p3010_series-ps.ppd.gz +#usr/share/ppd/HP/hp-laserjet_p4010_series-ps.ppd.gz +#usr/share/ppd/HP/hp-lj_300_400_color_m351_m451-ps.ppd.gz +#usr/share/ppd/HP/hp-lj_300_400_color_mfp_m375_m475-ps.ppd.gz +#usr/share/ppd/HP/hp-mopier_240-ps.ppd.gz +#usr/share/ppd/HP/hp-mopier_320-ps.ppd.gz +#usr/share/ppd/HP/hp-officejet_pro_8000_enterprise_a811a-ps.ppd.gz diff --git a/config/rootfiles/packages/libexif b/config/rootfiles/packages/libexif new file mode 100644 index 000000000..9efbc1fd8 --- /dev/null +++ b/config/rootfiles/packages/libexif @@ -0,0 +1,64 @@ +#usr/include/libexif +#usr/include/libexif/_stdint.h +#usr/include/libexif/exif-byte-order.h +#usr/include/libexif/exif-content.h +#usr/include/libexif/exif-data-type.h +#usr/include/libexif/exif-data.h +#usr/include/libexif/exif-entry.h +#usr/include/libexif/exif-format.h +#usr/include/libexif/exif-ifd.h +#usr/include/libexif/exif-loader.h +#usr/include/libexif/exif-log.h +#usr/include/libexif/exif-mem.h +#usr/include/libexif/exif-mnote-data.h +#usr/include/libexif/exif-tag.h +#usr/include/libexif/exif-utils.h +#usr/lib/libexif.la +#usr/lib/libexif.so +usr/lib/libexif.so.12 +usr/lib/libexif.so.12.3.3 +usr/lib/pkgconfig/libexif.pc +#usr/share/doc/libexif +#usr/share/doc/libexif/ABOUT-NLS +#usr/share/doc/libexif/AUTHORS +#usr/share/doc/libexif/COPYING +#usr/share/doc/libexif/ChangeLog +#usr/share/doc/libexif/NEWS +#usr/share/doc/libexif/README +#usr/share/locale/be/LC_MESSAGES/libexif-12.mo +#usr/share/locale/bs +#usr/share/locale/bs/LC_MESSAGES +#usr/share/locale/bs/LC_MESSAGES/libexif-12.mo +#usr/share/locale/cs/LC_MESSAGES/libexif-12.mo +#usr/share/locale/da/LC_MESSAGES/libexif-12.mo +#usr/share/locale/de/LC_MESSAGES/libexif-12.mo +#usr/share/locale/en_AU +#usr/share/locale/en_AU/LC_MESSAGES +#usr/share/locale/en_AU/LC_MESSAGES/libexif-12.mo +#usr/share/locale/en_CA +#usr/share/locale/en_CA/LC_MESSAGES +#usr/share/locale/en_CA/LC_MESSAGES/libexif-12.mo +#usr/share/locale/en_GB/LC_MESSAGES/libexif-12.mo +#usr/share/locale/es/LC_MESSAGES/libexif-12.mo +#usr/share/locale/fr/LC_MESSAGES/libexif-12.mo +#usr/share/locale/it/LC_MESSAGES/libexif-12.mo +#usr/share/locale/ja/LC_MESSAGES/libexif-12.mo +#usr/share/locale/nl/LC_MESSAGES/libexif-12.mo +#usr/share/locale/pl/LC_MESSAGES/libexif-12.mo +#usr/share/locale/pt +#usr/share/locale/pt/LC_MESSAGES +#usr/share/locale/pt/LC_MESSAGES/libexif-12.mo +#usr/share/locale/pt_BR/LC_MESSAGES/libexif-12.mo +#usr/share/locale/ru/LC_MESSAGES/libexif-12.mo +#usr/share/locale/sk/LC_MESSAGES/libexif-12.mo +#usr/share/locale/sq +#usr/share/locale/sq/LC_MESSAGES +#usr/share/locale/sq/LC_MESSAGES/libexif-12.mo +#usr/share/locale/sr +#usr/share/locale/sr/LC_MESSAGES +#usr/share/locale/sr/LC_MESSAGES/libexif-12.mo +#usr/share/locale/sv/LC_MESSAGES/libexif-12.mo +#usr/share/locale/tr/LC_MESSAGES/libexif-12.mo +#usr/share/locale/uk/LC_MESSAGES/libexif-12.mo +#usr/share/locale/vi/LC_MESSAGES/libexif-12.mo +#usr/share/locale/zh_CN/LC_MESSAGES/libexif-12.mo diff --git a/config/rootfiles/packages/libogg b/config/rootfiles/packages/libogg index e9ba57a43..21a8d63a5 100644 --- a/config/rootfiles/packages/libogg +++ b/config/rootfiles/packages/libogg @@ -4,85 +4,83 @@ #usr/include/ogg/os_types.h #usr/lib/libogg.a #usr/lib/libogg.la -usr/lib/libogg.so +#usr/lib/libogg.so usr/lib/libogg.so.0 -usr/lib/libogg.so.0.6.0 +usr/lib/libogg.so.0.8.0 #usr/lib/pkgconfig/ogg.pc #usr/share/aclocal/ogg.m4 -#usr/share/doc/libogg-1.1.4 -#usr/share/doc/libogg-1.1.4/framing.html -#usr/share/doc/libogg-1.1.4/index.html -#usr/share/doc/libogg-1.1.4/ogg -#usr/share/doc/libogg-1.1.4/ogg-multiplex.html -#usr/share/doc/libogg-1.1.4/ogg/bitpacking.html -#usr/share/doc/libogg-1.1.4/ogg/datastructures.html -#usr/share/doc/libogg-1.1.4/ogg/decoding.html -#usr/share/doc/libogg-1.1.4/ogg/encoding.html -#usr/share/doc/libogg-1.1.4/ogg/general.html -#usr/share/doc/libogg-1.1.4/ogg/index.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_packet.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_packet_clear.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_page.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_page_bos.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_page_checksum_set.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_page_continued.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_page_eos.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_page_granulepos.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_page_packets.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_page_pageno.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_page_serialno.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_page_version.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_stream_clear.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_stream_destroy.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_stream_eos.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_stream_flush.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_stream_init.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_stream_packetin.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_stream_packetout.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_stream_packetpeek.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_stream_pagein.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_stream_pageout.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_stream_reset.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_stream_reset_serialno.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_stream_state.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_sync_buffer.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_sync_clear.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_sync_destroy.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_sync_init.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_sync_pageout.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_sync_pageseek.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_sync_reset.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_sync_state.html -#usr/share/doc/libogg-1.1.4/ogg/ogg_sync_wrote.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_adv.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_adv1.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_bits.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_buffer.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_bytes.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_get_buffer.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_look.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_look1.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_read.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_read1.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_readinit.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_reset.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_write.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_writealign.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_writeclear.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_writecopy.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_writeinit.html -#usr/share/doc/libogg-1.1.4/ogg/oggpack_writetrunc.html -#usr/share/doc/libogg-1.1.4/ogg/overview.html -#usr/share/doc/libogg-1.1.4/ogg/reference.html -#usr/share/doc/libogg-1.1.4/ogg/style.css -#usr/share/doc/libogg-1.1.4/ogg/vorbis_comment.html -#usr/share/doc/libogg-1.1.4/ogg/vorbis_info.html -#usr/share/doc/libogg-1.1.4/oggstream.html -#usr/share/doc/libogg-1.1.4/rfc3533.txt -#usr/share/doc/libogg-1.1.4/rfc3534.txt -#usr/share/doc/libogg-1.1.4/stream.png -#usr/share/doc/libogg-1.1.4/vorbisword2.png -#usr/share/doc/libogg-1.1.4/white-ogg.png -#usr/share/doc/libogg-1.1.4/white-xifish.png -#usr/share/doc/libogg-1.1.4/rfc5334.txt -#usr/share/doc/libogg-1.1.4/skeleton.html +#usr/share/doc/libogg-1.3.0 +#usr/share/doc/libogg-1.3.0/framing.html +#usr/share/doc/libogg-1.3.0/index.html +#usr/share/doc/libogg-1.3.0/ogg +#usr/share/doc/libogg-1.3.0/ogg-multiplex.html +#usr/share/doc/libogg-1.3.0/ogg/bitpacking.html +#usr/share/doc/libogg-1.3.0/ogg/datastructures.html +#usr/share/doc/libogg-1.3.0/ogg/decoding.html +#usr/share/doc/libogg-1.3.0/ogg/encoding.html +#usr/share/doc/libogg-1.3.0/ogg/general.html +#usr/share/doc/libogg-1.3.0/ogg/index.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_packet.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_packet_clear.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_page.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_page_bos.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_page_checksum_set.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_page_continued.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_page_eos.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_page_granulepos.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_page_packets.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_page_pageno.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_page_serialno.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_page_version.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_stream_clear.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_stream_destroy.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_stream_eos.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_stream_flush.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_stream_init.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_stream_packetin.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_stream_packetout.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_stream_packetpeek.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_stream_pagein.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_stream_pageout.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_stream_pageout_fill.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_stream_reset.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_stream_reset_serialno.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_stream_state.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_sync_buffer.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_sync_clear.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_sync_destroy.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_sync_init.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_sync_pageout.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_sync_pageseek.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_sync_reset.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_sync_state.html +#usr/share/doc/libogg-1.3.0/ogg/ogg_sync_wrote.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_adv.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_adv1.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_bits.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_buffer.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_bytes.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_get_buffer.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_look.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_look1.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_read.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_read1.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_readinit.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_reset.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_write.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_writealign.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_writeclear.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_writecopy.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_writeinit.html +#usr/share/doc/libogg-1.3.0/ogg/oggpack_writetrunc.html +#usr/share/doc/libogg-1.3.0/ogg/overview.html +#usr/share/doc/libogg-1.3.0/ogg/reference.html +#usr/share/doc/libogg-1.3.0/ogg/style.css +#usr/share/doc/libogg-1.3.0/oggstream.html +#usr/share/doc/libogg-1.3.0/rfc3533.txt +#usr/share/doc/libogg-1.3.0/rfc5334.txt +#usr/share/doc/libogg-1.3.0/skeleton.html +#usr/share/doc/libogg-1.3.0/stream.png +#usr/share/doc/libogg-1.3.0/vorbisword2.png +#usr/share/doc/libogg-1.3.0/white-ogg.png +#usr/share/doc/libogg-1.3.0/white-xifish.png diff --git a/config/rootfiles/packages/libsolv b/config/rootfiles/packages/libsolv index 587d5149f..de1d12d05 100644 --- a/config/rootfiles/packages/libsolv +++ b/config/rootfiles/packages/libsolv @@ -1,13 +1,13 @@ #usr/include/solv #usr/include/solv/bitmap.h #usr/include/solv/chksum.h +#usr/include/solv/dataiterator.h #usr/include/solv/dirpool.h #usr/include/solv/evr.h #usr/include/solv/hash.h #usr/include/solv/knownid.h #usr/include/solv/policy.h #usr/include/solv/pool.h -#usr/include/solv/pool_fileconflicts.h #usr/include/solv/poolarch.h #usr/include/solv/poolid.h #usr/include/solv/pooltypes.h @@ -15,22 +15,9 @@ #usr/include/solv/problems.h #usr/include/solv/queue.h #usr/include/solv/repo.h -#usr/include/solv/repo_content.h -#usr/include/solv/repo_deb.h -#usr/include/solv/repo_deltainfoxml.h -#usr/include/solv/repo_helix.h -#usr/include/solv/repo_products.h -#usr/include/solv/repo_releasefile_products.h -#usr/include/solv/repo_repomdxml.h -#usr/include/solv/repo_rpmdb.h -#usr/include/solv/repo_rpmmd.h #usr/include/solv/repo_solv.h -#usr/include/solv/repo_susetags.h -#usr/include/solv/repo_updateinfoxml.h #usr/include/solv/repo_write.h -#usr/include/solv/repo_zyppdb.h #usr/include/solv/repodata.h -#usr/include/solv/repopage.h #usr/include/solv/rules.h #usr/include/solv/solv_xfopen.h #usr/include/solv/solvable.h @@ -38,10 +25,14 @@ #usr/include/solv/solverdebug.h #usr/include/solv/solvversion.h #usr/include/solv/strpool.h +#usr/include/solv/testcase.h #usr/include/solv/tools_util.h #usr/include/solv/transaction.h #usr/include/solv/util.h -usr/lib/libsolv.so +#usr/lib/libsolv.so usr/lib/libsolv.so.0 -usr/lib/libsolvext.so +#usr/lib/libsolvext.so usr/lib/libsolvext.so.0 +#usr/share/cmake +#usr/share/cmake/Modules +#usr/share/cmake/Modules/FindLibSolv.cmake diff --git a/config/rootfiles/packages/libvorbis b/config/rootfiles/packages/libvorbis index 212e86416..e7f7c3c1b 100644 --- a/config/rootfiles/packages/libvorbis +++ b/config/rootfiles/packages/libvorbis @@ -4,128 +4,167 @@ #usr/include/vorbis/vorbisfile.h #usr/lib/libvorbis.a #usr/lib/libvorbis.la -usr/lib/libvorbis.so +#usr/lib/libvorbis.so usr/lib/libvorbis.so.0 -usr/lib/libvorbis.so.0.4.3 +usr/lib/libvorbis.so.0.4.6 #usr/lib/libvorbisenc.a #usr/lib/libvorbisenc.la -usr/lib/libvorbisenc.so +#usr/lib/libvorbisenc.so usr/lib/libvorbisenc.so.2 -usr/lib/libvorbisenc.so.2.0.6 +usr/lib/libvorbisenc.so.2.0.9 #usr/lib/libvorbisfile.a #usr/lib/libvorbisfile.la -usr/lib/libvorbisfile.so +#usr/lib/libvorbisfile.so usr/lib/libvorbisfile.so.3 -usr/lib/libvorbisfile.so.3.3.2 +usr/lib/libvorbisfile.so.3.3.5 #usr/lib/pkgconfig/vorbis.pc #usr/lib/pkgconfig/vorbisenc.pc #usr/lib/pkgconfig/vorbisfile.pc #usr/share/aclocal/vorbis.m4 -#usr/share/doc/libvorbis-1.2.3 -#usr/share/doc/libvorbis-1.2.3/Vorbis_I_spec.cfg -#usr/share/doc/libvorbis-1.2.3/Vorbis_I_spec.css -#usr/share/doc/libvorbis-1.2.3/Vorbis_I_spec.html -#usr/share/doc/libvorbis-1.2.3/Vorbis_I_spec.pdf -#usr/share/doc/libvorbis-1.2.3/Vorbis_I_spec.tex -#usr/share/doc/libvorbis-1.2.3/eightphase.png -#usr/share/doc/libvorbis-1.2.3/evenlsp.png -#usr/share/doc/libvorbis-1.2.3/fish_xiph_org.png -#usr/share/doc/libvorbis-1.2.3/floor1_inverse_dB_table.html -#usr/share/doc/libvorbis-1.2.3/floorval.png -#usr/share/doc/libvorbis-1.2.3/fourphase.png -#usr/share/doc/libvorbis-1.2.3/framing.html -#usr/share/doc/libvorbis-1.2.3/helper.html -#usr/share/doc/libvorbis-1.2.3/index.html -#usr/share/doc/libvorbis-1.2.3/lspmap.png -#usr/share/doc/libvorbis-1.2.3/oddlsp.png -#usr/share/doc/libvorbis-1.2.3/oggstream.html -#usr/share/doc/libvorbis-1.2.3/programming.html -#usr/share/doc/libvorbis-1.2.3/rfc5215.txt -#usr/share/doc/libvorbis-1.2.3/rfc5215.xml -#usr/share/doc/libvorbis-1.2.3/squarepolar.png -#usr/share/doc/libvorbis-1.2.3/stereo.html -#usr/share/doc/libvorbis-1.2.3/stream.png -#usr/share/doc/libvorbis-1.2.3/v-comment.html -#usr/share/doc/libvorbis-1.2.3/vorbis-clip.txt -#usr/share/doc/libvorbis-1.2.3/vorbis-errors.txt -#usr/share/doc/libvorbis-1.2.3/vorbis-fidelity.html -#usr/share/doc/libvorbis-1.2.3/vorbis.html -#usr/share/doc/libvorbis-1.2.3/vorbisenc -#usr/share/doc/libvorbis-1.2.3/vorbisenc/changes.html -#usr/share/doc/libvorbis-1.2.3/vorbisenc/examples.html -#usr/share/doc/libvorbis-1.2.3/vorbisenc/index.html -#usr/share/doc/libvorbis-1.2.3/vorbisenc/ov_ectl_ratemanage2_arg.html -#usr/share/doc/libvorbis-1.2.3/vorbisenc/ov_ectl_ratemanage_arg.html -#usr/share/doc/libvorbis-1.2.3/vorbisenc/overview.html -#usr/share/doc/libvorbis-1.2.3/vorbisenc/reference.html -#usr/share/doc/libvorbis-1.2.3/vorbisenc/style.css -#usr/share/doc/libvorbis-1.2.3/vorbisenc/vorbis_encode_ctl.html -#usr/share/doc/libvorbis-1.2.3/vorbisenc/vorbis_encode_init.html -#usr/share/doc/libvorbis-1.2.3/vorbisenc/vorbis_encode_init_vbr.html -#usr/share/doc/libvorbis-1.2.3/vorbisenc/vorbis_encode_setup_init.html -#usr/share/doc/libvorbis-1.2.3/vorbisenc/vorbis_encode_setup_managed.html -#usr/share/doc/libvorbis-1.2.3/vorbisenc/vorbis_encode_setup_vbr.html -#usr/share/doc/libvorbis-1.2.3/vorbisenc/vorbis_info.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile -#usr/share/doc/libvorbis-1.2.3/vorbisfile/OggVorbis_File.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/callbacks.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/chaining_example_c.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/chainingexample.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/crosslap.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/datastructures.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/decoding.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/example.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/exampleindex.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/fileinfo.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/index.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/initialization.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_bitrate.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_bitrate_instant.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_callbacks.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_clear.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_comment.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_crosslap.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_fopen.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_info.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_open.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_open_callbacks.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_pcm_seek.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_pcm_seek_lap.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_pcm_seek_page.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_pcm_seek_page_lap.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_pcm_tell.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_pcm_total.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_raw_seek.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_raw_seek_lap.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_raw_tell.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_raw_total.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_read.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_read_float.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_seekable.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_serialnumber.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_streams.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_test.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_test_callbacks.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_test_open.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_time_seek.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_time_seek_lap.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_time_seek_page.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_time_seek_page_lap.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_time_tell.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/ov_time_total.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/overview.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/reference.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/return.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/seekexample.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/seeking.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/seeking_example_c.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/seeking_test_c.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/seekingexample.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/style.css -#usr/share/doc/libvorbis-1.2.3/vorbisfile/threads.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/vorbis_comment.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/vorbis_info.html -#usr/share/doc/libvorbis-1.2.3/vorbisfile/vorbisfile_example_c.html -#usr/share/doc/libvorbis-1.2.3/vorbisword2.png -#usr/share/doc/libvorbis-1.2.3/wait.png -#usr/share/doc/libvorbis-1.2.3/white-xifish.png +#usr/share/doc/libvorbis-1.3.3 +#usr/share/doc/libvorbis-1.3.3/doxygen-build.stamp +#usr/share/doc/libvorbis-1.3.3/eightphase.png +#usr/share/doc/libvorbis-1.3.3/evenlsp.png +#usr/share/doc/libvorbis-1.3.3/fish_xiph_org.png +#usr/share/doc/libvorbis-1.3.3/floor1_inverse_dB_table.html +#usr/share/doc/libvorbis-1.3.3/floorval.png +#usr/share/doc/libvorbis-1.3.3/fourphase.png +#usr/share/doc/libvorbis-1.3.3/framing.html +#usr/share/doc/libvorbis-1.3.3/helper.html +#usr/share/doc/libvorbis-1.3.3/index.html +#usr/share/doc/libvorbis-1.3.3/libvorbis +#usr/share/doc/libvorbis-1.3.3/libvorbis/index.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/overview.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/reference.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/return.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/style.css +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_analysis.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_analysis_blockout.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_analysis_buffer.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_analysis_headerout.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_analysis_init.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_analysis_wrote.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_bitrate_addblock.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_bitrate_flushpacket.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_block.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_block_clear.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_block_init.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_comment.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_comment_add.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_comment_add_tag.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_comment_clear.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_comment_init.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_comment_query.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_comment_query_count.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_commentheader_out.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_dsp_clear.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_dsp_state.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_granule_time.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_info.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_info_blocksize.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_info_clear.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_info_init.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_packet_blocksize.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_synthesis.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_synthesis_blockin.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_synthesis_halfrate.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_synthesis_halfrate_p.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_synthesis_headerin.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_synthesis_idheader.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_synthesis_init.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_synthesis_lapout.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_synthesis_pcmout.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_synthesis_read.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_synthesis_restart.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_synthesis_trackonly.html +#usr/share/doc/libvorbis-1.3.3/libvorbis/vorbis_version_string.html +#usr/share/doc/libvorbis-1.3.3/lspmap.png +#usr/share/doc/libvorbis-1.3.3/oddlsp.png +#usr/share/doc/libvorbis-1.3.3/oggstream.html +#usr/share/doc/libvorbis-1.3.3/programming.html +#usr/share/doc/libvorbis-1.3.3/rfc5215.txt +#usr/share/doc/libvorbis-1.3.3/rfc5215.xml +#usr/share/doc/libvorbis-1.3.3/squarepolar.png +#usr/share/doc/libvorbis-1.3.3/stereo.html +#usr/share/doc/libvorbis-1.3.3/stream.png +#usr/share/doc/libvorbis-1.3.3/v-comment.html +#usr/share/doc/libvorbis-1.3.3/vorbis-clip.txt +#usr/share/doc/libvorbis-1.3.3/vorbis-errors.txt +#usr/share/doc/libvorbis-1.3.3/vorbis-fidelity.html +#usr/share/doc/libvorbis-1.3.3/vorbis.html +#usr/share/doc/libvorbis-1.3.3/vorbisenc +#usr/share/doc/libvorbis-1.3.3/vorbisenc/changes.html +#usr/share/doc/libvorbis-1.3.3/vorbisenc/examples.html +#usr/share/doc/libvorbis-1.3.3/vorbisenc/index.html +#usr/share/doc/libvorbis-1.3.3/vorbisenc/ovectl_ratemanage2_arg.html +#usr/share/doc/libvorbis-1.3.3/vorbisenc/ovectl_ratemanage_arg.html +#usr/share/doc/libvorbis-1.3.3/vorbisenc/overview.html +#usr/share/doc/libvorbis-1.3.3/vorbisenc/reference.html +#usr/share/doc/libvorbis-1.3.3/vorbisenc/style.css +#usr/share/doc/libvorbis-1.3.3/vorbisenc/vorbis_encode_ctl.html +#usr/share/doc/libvorbis-1.3.3/vorbisenc/vorbis_encode_init.html +#usr/share/doc/libvorbis-1.3.3/vorbisenc/vorbis_encode_init_vbr.html +#usr/share/doc/libvorbis-1.3.3/vorbisenc/vorbis_encode_setup_init.html +#usr/share/doc/libvorbis-1.3.3/vorbisenc/vorbis_encode_setup_managed.html +#usr/share/doc/libvorbis-1.3.3/vorbisenc/vorbis_encode_setup_vbr.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile +#usr/share/doc/libvorbis-1.3.3/vorbisfile/OggVorbis_File.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/callbacks.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/chaining_example_c.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/chainingexample.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/crosslap.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/datastructures.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/decoding.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/example.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/exampleindex.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/fileinfo.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/index.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/initialization.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_bitrate.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_bitrate_instant.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_callbacks.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_clear.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_comment.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_crosslap.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_fopen.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_info.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_open.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_open_callbacks.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_pcm_seek.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_pcm_seek_lap.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_pcm_seek_page.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_pcm_seek_page_lap.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_pcm_tell.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_pcm_total.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_raw_seek.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_raw_seek_lap.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_raw_tell.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_raw_total.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_read.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_read_filter.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_read_float.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_seekable.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_serialnumber.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_streams.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_test.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_test_callbacks.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_test_open.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_time_seek.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_time_seek_lap.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_time_seek_page.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_time_seek_page_lap.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_time_tell.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/ov_time_total.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/overview.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/reference.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/seekexample.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/seeking.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/seeking_example_c.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/seeking_test_c.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/seekingexample.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/style.css +#usr/share/doc/libvorbis-1.3.3/vorbisfile/threads.html +#usr/share/doc/libvorbis-1.3.3/vorbisfile/vorbisfile_example_c.html +#usr/share/doc/libvorbis-1.3.3/vorbisword2.png +#usr/share/doc/libvorbis-1.3.3/wait.png +#usr/share/doc/libvorbis-1.3.3/white-xifish.png diff --git a/config/rootfiles/packages/minidlna b/config/rootfiles/packages/minidlna new file mode 100644 index 000000000..e53330e92 --- /dev/null +++ b/config/rootfiles/packages/minidlna @@ -0,0 +1,2 @@ +etc/minidlna.conf +usr/sbin/minidlna diff --git a/config/rootfiles/packages/splix b/config/rootfiles/packages/splix deleted file mode 100644 index f9c75793e..000000000 --- a/config/rootfiles/packages/splix +++ /dev/null @@ -1,87 +0,0 @@ -usr/lib/cups/filter/pstoqpdl -usr/lib/cups/filter/rastertoqpdl -usr/share/cups/model/dell -usr/share/cups/model/dell/1100.ppd -usr/share/cups/model/dell/1100fr.ppd -usr/share/cups/model/dell/1110.ppd -usr/share/cups/model/dell/1110fr.ppd -usr/share/cups/model/samsung -usr/share/cups/model/samsung/clp200.ppd -usr/share/cups/model/samsung/clp200fr.ppd -usr/share/cups/model/samsung/clp300.ppd -usr/share/cups/model/samsung/clp300fr.ppd -usr/share/cups/model/samsung/clp500.ppd -usr/share/cups/model/samsung/clp500fr.ppd -usr/share/cups/model/samsung/clp510.ppd -usr/share/cups/model/samsung/clp510fr.ppd -usr/share/cups/model/samsung/clp550.ppd -usr/share/cups/model/samsung/clp550fr.ppd -usr/share/cups/model/samsung/clp600.ppd -usr/share/cups/model/samsung/clp600fr.ppd -usr/share/cups/model/samsung/clp610.ppd -usr/share/cups/model/samsung/clp610fr.ppd -usr/share/cups/model/samsung/clx216x.ppd -usr/share/cups/model/samsung/clx216xfr.ppd -usr/share/cups/model/samsung/clx2170.ppd -usr/share/cups/model/samsung/clx2170fr.ppd -usr/share/cups/model/samsung/clx3160.ppd -usr/share/cups/model/samsung/clx3160fr.ppd -usr/share/cups/model/samsung/ml1510.ppd -usr/share/cups/model/samsung/ml1510fr.ppd -usr/share/cups/model/samsung/ml1520.ppd -usr/share/cups/model/samsung/ml1520fr.ppd -usr/share/cups/model/samsung/ml1610.ppd -usr/share/cups/model/samsung/ml1610fr.ppd -usr/share/cups/model/samsung/ml1630.ppd -usr/share/cups/model/samsung/ml1630fr.ppd -usr/share/cups/model/samsung/ml1710.ppd -usr/share/cups/model/samsung/ml1710fr.ppd -usr/share/cups/model/samsung/ml1740.ppd -usr/share/cups/model/samsung/ml1740fr.ppd -usr/share/cups/model/samsung/ml1750.ppd -usr/share/cups/model/samsung/ml1750fr.ppd -usr/share/cups/model/samsung/ml2010.ppd -usr/share/cups/model/samsung/ml2010fr.ppd -usr/share/cups/model/samsung/ml2150.ppd -usr/share/cups/model/samsung/ml2150fr.ppd -usr/share/cups/model/samsung/ml2250.ppd -usr/share/cups/model/samsung/ml2250fr.ppd -usr/share/cups/model/samsung/ml2251.ppd -usr/share/cups/model/samsung/ml2251fr.ppd -usr/share/cups/model/samsung/ml2510.ppd -usr/share/cups/model/samsung/ml2510fr.ppd -usr/share/cups/model/samsung/ml2550.ppd -usr/share/cups/model/samsung/ml2550fr.ppd -usr/share/cups/model/samsung/ml3050.ppd -usr/share/cups/model/samsung/ml3050fr.ppd -usr/share/cups/model/samsung/ml3560.ppd -usr/share/cups/model/samsung/ml3560fr.ppd -usr/share/cups/model/xerox -usr/share/cups/model/xerox/ph3115.ppd -usr/share/cups/model/xerox/ph3115fr.ppd -usr/share/cups/model/xerox/ph3116.ppd -usr/share/cups/model/xerox/ph3116fr.ppd -usr/share/cups/model/xerox/ph3117.ppd -usr/share/cups/model/xerox/ph3117fr.ppd -usr/share/cups/model/xerox/ph3120.ppd -usr/share/cups/model/xerox/ph3120fr.ppd -usr/share/cups/model/xerox/ph3121.ppd -usr/share/cups/model/xerox/ph3121fr.ppd -usr/share/cups/model/xerox/ph3122.ppd -usr/share/cups/model/xerox/ph3122fr.ppd -usr/share/cups/model/xerox/ph3130.ppd -usr/share/cups/model/xerox/ph3130fr.ppd -usr/share/cups/model/xerox/ph3150.ppd -usr/share/cups/model/xerox/ph3150fr.ppd -usr/share/cups/model/xerox/ph3160.ppd -usr/share/cups/model/xerox/ph3160fr.ppd -usr/share/cups/model/xerox/ph3420.ppd -usr/share/cups/model/xerox/ph3420fr.ppd -usr/share/cups/model/xerox/ph3425.ppd -usr/share/cups/model/xerox/ph3425fr.ppd -usr/share/cups/model/xerox/ph5500.ppd -usr/share/cups/model/xerox/ph5500fr.ppd -usr/share/cups/model/xerox/ph6100.ppd -usr/share/cups/model/xerox/ph6100fr.ppd -usr/share/cups/model/xerox/ph6110.ppd -usr/share/cups/model/xerox/ph6110fr.ppd diff --git a/config/syslinux/syslinux.cfg b/config/syslinux/syslinux.cfg index 68ad82afd..ee258cc37 100644 --- a/config/syslinux/syslinux.cfg +++ b/config/syslinux/syslinux.cfg @@ -2,13 +2,13 @@ TIMEOUT 5000 DISPLAY boot.msg PROMPT 1 DEFAULT vmlinuz - APPEND initrd=instroot vga=791 splash=silent ro + APPEND initrd=instroot vga=791 quiet rhgb ro LABEL novga KERNEL vmlinuz - APPEND initrd=instroot ro + APPEND initrd=instroot quiet rhgb ro LABEL unattended KERNEL vmlinuz - APPEND initrd=instroot vga=791 splash=silent unattended ro + APPEND initrd=instroot vga=791 quiet rhgb unattended ro LABEL memtest KERNEL memtest APPEND - diff --git a/config/uClibc/busybox.config b/config/uClibc/busybox.config deleted file mode 100644 index 968238513..000000000 --- a/config/uClibc/busybox.config +++ /dev/null @@ -1,643 +0,0 @@ -# -# Automatically generated make config: don't edit -# -HAVE_DOT_CONFIG=y - -# -# Busybox Settings -# - -# -# General Configuration -# -# CONFIG_NITPICK is not set -# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set -# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set -# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set -CONFIG_SHOW_USAGE=y -CONFIG_FEATURE_VERBOSE_USAGE=y -CONFIG_FEATURE_COMPRESS_USAGE=y -# CONFIG_FEATURE_INSTALLER is not set -# CONFIG_LOCALE_SUPPORT is not set -CONFIG_GETOPT_LONG=y -# CONFIG_FEATURE_DEVPTS is not set -# CONFIG_FEATURE_CLEAN_UP is not set -# CONFIG_FEATURE_SUID is not set -# CONFIG_FEATURE_SUID_CONFIG is not set -# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set -# CONFIG_SELINUX is not set -CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe" - -# -# Build Options -# -# CONFIG_STATIC is not set -# CONFIG_BUILD_LIBBUSYBOX is not set -# CONFIG_FEATURE_FULL_LIBBUSYBOX is not set -# CONFIG_FEATURE_SHARED_BUSYBOX is not set -CONFIG_LFS=y -USING_CROSS_COMPILER=y -CROSS_COMPILER_PREFIX="/opt/i586-uClibc/bin/i586-linux-" -# CONFIG_BUILD_AT_ONCE is not set - -# -# Debugging Options -# -# CONFIG_DEBUG is not set -# CONFIG_DEBUG_PESSIMIZE is not set -# CONFIG_NO_DEBUG_LIB is not set -# CONFIG_DMALLOC is not set -# CONFIG_EFENCE is not set -# CONFIG_DEBUG_YANK_SUSv2 is not set - -# -# Installation Options -# -CONFIG_INSTALL_NO_USR=y -CONFIG_INSTALL_APPLET_SYMLINKS=y -# CONFIG_INSTALL_APPLET_HARDLINKS is not set -# CONFIG_INSTALL_APPLET_DONT is not set -PREFIX="/install/initrd" - -# -# Busybox Library Tuning -# -CONFIG_MD5_SIZE_VS_SPEED=3 - -# -# Applets -# - -# -# Archival Utilities -# -# CONFIG_AR is not set -# CONFIG_FEATURE_AR_LONG_FILENAMES is not set -# CONFIG_BUNZIP2 is not set -# CONFIG_CPIO is not set -# CONFIG_DPKG is not set -# CONFIG_DPKG_DEB is not set -# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set -# CONFIG_GUNZIP is not set -# CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set -CONFIG_GZIP=y -# CONFIG_RPM2CPIO is not set -# CONFIG_RPM is not set -CONFIG_TAR=y -# CONFIG_FEATURE_TAR_CREATE is not set -CONFIG_FEATURE_TAR_BZIP2=y -CONFIG_FEATURE_TAR_LZMA=y -# CONFIG_FEATURE_TAR_FROM is not set -CONFIG_FEATURE_TAR_GZIP=y -# CONFIG_FEATURE_TAR_COMPRESS is not set -CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y -CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y -CONFIG_FEATURE_TAR_LONG_OPTIONS=y -# CONFIG_UNCOMPRESS is not set -# CONFIG_UNLZMA is not set -# CONFIG_FEATURE_LZMA_FAST is not set -CONFIG_UNZIP=y - -# -# Common options for cpio and tar -# -# CONFIG_FEATURE_UNARCHIVE_TAPE is not set -# CONFIG_FEATURE_DEB_TAR_GZ is not set -# CONFIG_FEATURE_DEB_TAR_BZ2 is not set -# CONFIG_FEATURE_DEB_TAR_LZMA is not set - -# -# Coreutils -# -CONFIG_BASENAME=y -# CONFIG_CAL is not set -CONFIG_CAT=y -# CONFIG_CATV is not set -# CONFIG_CHGRP is not set -CONFIG_CHMOD=y -CONFIG_CHOWN=y -CONFIG_CHROOT=y -# CONFIG_CKSUM is not set -# CONFIG_CMP is not set -# CONFIG_COMM is not set -CONFIG_CP=y -CONFIG_CUT=y -CONFIG_DATE=y -CONFIG_FEATURE_DATE_ISOFMT=y -CONFIG_DD=y -CONFIG_FEATURE_DD_SIGNAL_HANDLING=y -# CONFIG_FEATURE_DD_IBS_OBS is not set -CONFIG_DF=y -# CONFIG_DIFF is not set -# CONFIG_FEATURE_DIFF_BINARY is not set -# CONFIG_FEATURE_DIFF_DIR is not set -# CONFIG_FEATURE_DIFF_MINIMAL is not set -# CONFIG_DIRNAME is not set -# CONFIG_DOS2UNIX is not set -# CONFIG_UNIX2DOS is not set -CONFIG_DU=y -CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y -CONFIG_ECHO=y -CONFIG_FEATURE_FANCY_ECHO=y -# CONFIG_ENV is not set -# CONFIG_FEATURE_ENV_LONG_OPTIONS is not set -# CONFIG_EXPR is not set -# CONFIG_EXPR_MATH_SUPPORT_64 is not set -# CONFIG_FALSE is not set -# CONFIG_FOLD is not set -CONFIG_HEAD=y -# CONFIG_FEATURE_FANCY_HEAD is not set -# CONFIG_HOSTID is not set -# CONFIG_ID is not set -# CONFIG_INSTALL is not set -# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set -# CONFIG_LENGTH is not set -CONFIG_LN=y -# CONFIG_LOGNAME is not set -CONFIG_LS=y -CONFIG_FEATURE_LS_FILETYPES=y -CONFIG_FEATURE_LS_FOLLOWLINKS=y -CONFIG_FEATURE_LS_RECURSIVE=y -CONFIG_FEATURE_LS_SORTFILES=y -CONFIG_FEATURE_LS_TIMESTAMPS=y -CONFIG_FEATURE_LS_USERNAME=y -CONFIG_FEATURE_LS_COLOR=y -# CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set -CONFIG_MD5SUM=y -CONFIG_MKDIR=y -# CONFIG_FEATURE_MKDIR_LONG_OPTIONS is not set -CONFIG_MKFIFO=y -CONFIG_MKNOD=y -CONFIG_MV=y -CONFIG_FEATURE_MV_LONG_OPTIONS=y -CONFIG_NICE=y -# CONFIG_NOHUP is not set -# CONFIG_OD is not set -# CONFIG_PRINTENV is not set -# CONFIG_PRINTF is not set -# CONFIG_PWD is not set -# CONFIG_REALPATH is not set -CONFIG_RM=y -# CONFIG_RMDIR is not set -CONFIG_SEQ=y -# CONFIG_SHA1SUM is not set -CONFIG_SLEEP=y -# CONFIG_FEATURE_FANCY_SLEEP is not set -CONFIG_SORT=y -CONFIG_FEATURE_SORT_BIG=y -# CONFIG_STAT is not set -# CONFIG_FEATURE_STAT_FORMAT is not set -# CONFIG_STTY is not set -# CONFIG_SUM is not set -CONFIG_SYNC=y -CONFIG_TAIL=y -CONFIG_FEATURE_FANCY_TAIL=y -CONFIG_TEE=y -# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set -CONFIG_TEST=y -# CONFIG_FEATURE_TEST_64 is not set -CONFIG_TOUCH=y -CONFIG_TR=y -CONFIG_FEATURE_TR_CLASSES=y -CONFIG_FEATURE_TR_EQUIV=y -CONFIG_TRUE=y -# CONFIG_TTY is not set -CONFIG_UNAME=y -CONFIG_UNIQ=y -# CONFIG_USLEEP is not set -# CONFIG_UUDECODE is not set -# CONFIG_UUENCODE is not set -# CONFIG_WATCH is not set -CONFIG_WC=y -# CONFIG_WHO is not set -# CONFIG_WHOAMI is not set -CONFIG_YES=y - -# -# Common options for cp and mv -# -CONFIG_FEATURE_PRESERVE_HARDLINKS=y - -# -# Common options for ls, more and telnet -# -CONFIG_FEATURE_AUTOWIDTH=y - -# -# Common options for df, du, ls -# -CONFIG_FEATURE_HUMAN_READABLE=y - -# -# Common options for md5sum, sha1sum -# -# CONFIG_FEATURE_MD5_SHA1_SUM_CHECK is not set - -# -# Console Utilities -# -CONFIG_CHVT=y -CONFIG_CLEAR=y -# CONFIG_DEALLOCVT is not set -# CONFIG_DUMPKMAP is not set -CONFIG_LOADFONT=y -CONFIG_LOADKMAP=y -# CONFIG_OPENVT is not set -# CONFIG_RESET is not set -CONFIG_SETCONSOLE=y -# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set -CONFIG_SETKEYCODES=y -# CONFIG_SETLOGCONS is not set - -# -# Debian Utilities -# -# CONFIG_MKTEMP is not set -# CONFIG_PIPE_PROGRESS is not set -# CONFIG_READLINK is not set -# CONFIG_FEATURE_READLINK_FOLLOW is not set -# CONFIG_RUN_PARTS is not set -# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set -# CONFIG_START_STOP_DAEMON is not set -# CONFIG_FEATURE_START_STOP_DAEMON_FANCY is not set -# CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set -CONFIG_WHICH=y - -# -# Editors -# -CONFIG_AWK=y -# CONFIG_FEATURE_AWK_MATH is not set -# CONFIG_ED is not set -# CONFIG_PATCH is not set -CONFIG_SED=y -CONFIG_VI=y -CONFIG_FEATURE_VI_COLON=y -CONFIG_FEATURE_VI_YANKMARK=y -CONFIG_FEATURE_VI_SEARCH=y -CONFIG_FEATURE_VI_USE_SIGNALS=y -CONFIG_FEATURE_VI_DOT_CMD=y -CONFIG_FEATURE_VI_READONLY=y -CONFIG_FEATURE_VI_SETOPTS=y -CONFIG_FEATURE_VI_SET=y -CONFIG_FEATURE_VI_WIN_RESIZE=y -CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y - -# -# Finding Utilities -# -CONFIG_FIND=y -CONFIG_FEATURE_FIND_PRINT0=y -CONFIG_FEATURE_FIND_MTIME=y -CONFIG_FEATURE_FIND_MMIN=y -CONFIG_FEATURE_FIND_PERM=y -CONFIG_FEATURE_FIND_TYPE=y -CONFIG_FEATURE_FIND_XDEV=y -CONFIG_FEATURE_FIND_NEWER=y -CONFIG_FEATURE_FIND_INUM=y -CONFIG_FEATURE_FIND_EXEC=y -CONFIG_GREP=y -CONFIG_FEATURE_GREP_EGREP_ALIAS=y -CONFIG_FEATURE_GREP_FGREP_ALIAS=y -CONFIG_FEATURE_GREP_CONTEXT=y -CONFIG_XARGS=y -# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set -# CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set -# CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set -# CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM is not set - -# -# Init Utilities -# -CONFIG_INIT=y -# CONFIG_DEBUG_INIT is not set -CONFIG_FEATURE_USE_INITTAB=y -# CONFIG_FEATURE_INIT_SCTTY is not set -CONFIG_FEATURE_EXTRA_QUIET=y -# CONFIG_FEATURE_INIT_COREDUMPS is not set -CONFIG_FEATURE_INITRD=y -CONFIG_HALT=y -# CONFIG_MESG is not set - -# -# Login/Password Management Utilities -# -# CONFIG_FEATURE_SHADOWPASSWDS is not set -# CONFIG_USE_BB_SHADOW is not set -# CONFIG_USE_BB_PWD_GRP is not set -# CONFIG_ADDGROUP is not set -# CONFIG_DELGROUP is not set -# CONFIG_ADDUSER is not set -# CONFIG_DELUSER is not set -CONFIG_GETTY=y -# CONFIG_FEATURE_UTMP is not set -# CONFIG_FEATURE_WTMP is not set -# CONFIG_LOGIN is not set -# CONFIG_FEATURE_SECURETTY is not set -# CONFIG_PASSWD is not set -# CONFIG_SU is not set -# CONFIG_SULOGIN is not set -# CONFIG_VLOCK is not set - -# -# Linux Ext2 FS Progs -# -# CONFIG_CHATTR is not set -CONFIG_E2FSCK=y -CONFIG_FSCK=y -# CONFIG_LSATTR is not set -CONFIG_MKE2FS=y -CONFIG_TUNE2FS=y -CONFIG_E2LABEL=y -# CONFIG_FINDFS is not set - -# -# Linux Module Utilities -# -CONFIG_INSMOD=y -# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set -# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set -# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set -# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set -# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set -CONFIG_RMMOD=y -CONFIG_LSMOD=y -CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y -CONFIG_MODPROBE=y -CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y - -# -# Options common to multiple modutils -# -# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set -# CONFIG_FEATURE_2_4_MODULES is not set -CONFIG_FEATURE_2_6_MODULES=y -# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set - -# -# Linux System Utilities -# -CONFIG_DMESG=y -# CONFIG_FBSET is not set -# CONFIG_FEATURE_FBSET_FANCY is not set -# CONFIG_FEATURE_FBSET_READMODE is not set -# CONFIG_FDFLUSH is not set -# CONFIG_FDFORMAT is not set -CONFIG_FDISK=y -FDISK_SUPPORT_LARGE_DISKS=y -CONFIG_FEATURE_FDISK_WRITABLE=y -# CONFIG_FEATURE_AIX_LABEL is not set -# CONFIG_FEATURE_SGI_LABEL is not set -# CONFIG_FEATURE_SUN_LABEL is not set -# CONFIG_FEATURE_OSF_LABEL is not set -# CONFIG_FEATURE_FDISK_ADVANCED is not set -# CONFIG_FREERAMDISK is not set -# CONFIG_FSCK_MINIX is not set -# CONFIG_MKFS_MINIX is not set -# CONFIG_FEATURE_MINIX2 is not set -# CONFIG_GETOPT is not set -# CONFIG_HEXDUMP is not set -# CONFIG_HWCLOCK is not set -# CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS is not set -# CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set -# CONFIG_IPCRM is not set -# CONFIG_IPCS is not set -CONFIG_LOSETUP=y -# CONFIG_MDEV is not set -# CONFIG_FEATURE_MDEV_CONF is not set -# CONFIG_FEATURE_MDEV_EXEC is not set -CONFIG_MKSWAP=y -# CONFIG_FEATURE_MKSWAP_V0 is not set -CONFIG_MORE=y -CONFIG_FEATURE_USE_TERMIOS=y -CONFIG_MOUNT=y -# CONFIG_FEATURE_MOUNT_NFS is not set -CONFIG_PIVOT_ROOT=y -# CONFIG_RDATE is not set -# CONFIG_READPROFILE is not set -# CONFIG_SETARCH is not set -CONFIG_SWAPONOFF=y -# CONFIG_SWITCH_ROOT is not set -CONFIG_UMOUNT=y -CONFIG_FEATURE_UMOUNT_ALL=y - -# -# Common options for mount/umount -# -CONFIG_FEATURE_MOUNT_LOOP=y -# CONFIG_FEATURE_MTAB_SUPPORT is not set - -# -# Miscellaneous Utilities -# -# CONFIG_ADJTIMEX is not set -# CONFIG_BBCONFIG is not set -# CONFIG_CROND is not set -# CONFIG_DEBUG_CROND_OPTION is not set -# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set -# CONFIG_CRONTAB is not set -# CONFIG_DC is not set -# CONFIG_DEVFSD is not set -# CONFIG_DEVFSD_MODLOAD is not set -# CONFIG_DEVFSD_FG_NP is not set -# CONFIG_DEVFSD_VERBOSE is not set -# CONFIG_FEATURE_DEVFS is not set -CONFIG_EJECT=y -# CONFIG_LAST is not set -CONFIG_LESS=y -CONFIG_FEATURE_LESS_BRACKETS=y -CONFIG_FEATURE_LESS_FLAGS=y -# CONFIG_FEATURE_LESS_FLAGCS is not set -# CONFIG_FEATURE_LESS_MARKS is not set -# CONFIG_FEATURE_LESS_REGEXP is not set -# CONFIG_HDPARM is not set -# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set -# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set -# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set -# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set -# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set -# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set -# CONFIG_MAKEDEVS is not set -# CONFIG_FEATURE_MAKEDEVS_LEAF is not set -# CONFIG_FEATURE_MAKEDEVS_TABLE is not set -# CONFIG_MOUNTPOINT is not set -# CONFIG_MT is not set -# CONFIG_RUNLEVEL is not set -# CONFIG_RX is not set -# CONFIG_STRINGS is not set -# CONFIG_SETSID is not set -# CONFIG_TASKSET is not set -# CONFIG_TIME is not set -# CONFIG_WATCHDOG is not set - -# -# Networking Utilities -# -# CONFIG_FEATURE_IPV6 is not set -# CONFIG_ARPING is not set -# CONFIG_DNSD is not set -# CONFIG_ETHER_WAKE is not set -# CONFIG_FAKEIDENTD is not set -# CONFIG_FTPGET is not set -# CONFIG_FTPPUT is not set -# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set -CONFIG_HOSTNAME=y -# CONFIG_HTTPD is not set -# CONFIG_FEATURE_HTTPD_WITHOUT_INETD is not set -# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set -# CONFIG_FEATURE_HTTPD_SETUID is not set -# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set -# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set -# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set -# CONFIG_FEATURE_HTTPD_CGI is not set -# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set -# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set -# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set -CONFIG_IFCONFIG=y -CONFIG_FEATURE_IFCONFIG_STATUS=y -# CONFIG_FEATURE_IFCONFIG_SLIP is not set -# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set -# CONFIG_FEATURE_IFCONFIG_HW is not set -CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y -# CONFIG_IFUPDOWN is not set -# CONFIG_FEATURE_IFUPDOWN_IP is not set -# CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN is not set -# CONFIG_FEATURE_IFUPDOWN_IPV4 is not set -# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set -# CONFIG_FEATURE_IFUPDOWN_IPX is not set -# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set -# CONFIG_INETD is not set -# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set -# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set -# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set -# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set -# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set -# CONFIG_FEATURE_INETD_RPC is not set -CONFIG_IP=y -CONFIG_FEATURE_IP_ADDRESS=y -CONFIG_FEATURE_IP_LINK=y -CONFIG_FEATURE_IP_ROUTE=y -# CONFIG_FEATURE_IP_TUNNEL is not set -CONFIG_FEATURE_IP_SHORT_FORMS=y -CONFIG_IPADDR=y -CONFIG_IPLINK=y -CONFIG_IPROUTE=y -# CONFIG_IPTUNNEL is not set -# CONFIG_IPCALC is not set -# CONFIG_FEATURE_IPCALC_FANCY is not set -# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set -# CONFIG_NAMEIF is not set -# CONFIG_NC is not set -# CONFIG_NC_GAPING_SECURITY_HOLE is not set -# CONFIG_NETSTAT is not set -# CONFIG_NSLOOKUP is not set -CONFIG_PING=y -# CONFIG_FEATURE_FANCY_PING is not set -# CONFIG_PING6 is not set -# CONFIG_FEATURE_FANCY_PING6 is not set -CONFIG_ROUTE=y -# CONFIG_TELNET is not set -# CONFIG_FEATURE_TELNET_TTYPE is not set -# CONFIG_FEATURE_TELNET_AUTOLOGIN is not set -# CONFIG_TELNETD is not set -# CONFIG_FEATURE_TELNETD_INETD is not set -# CONFIG_TFTP is not set -# CONFIG_FEATURE_TFTP_GET is not set -# CONFIG_FEATURE_TFTP_PUT is not set -# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set -# CONFIG_DEBUG_TFTP is not set -# CONFIG_TRACEROUTE is not set -# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set -# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set -# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set - -# -# udhcp Server/Client -# -# CONFIG_APP_UDHCPD is not set -CONFIG_APP_UDHCPC=y -# CONFIG_APP_DUMPLEASES is not set -CONFIG_FEATURE_UDHCP_SYSLOG=y -# CONFIG_FEATURE_UDHCP_DEBUG is not set -CONFIG_VCONFIG=y -# CONFIG_WGET is not set -# CONFIG_FEATURE_WGET_STATUSBAR is not set -# CONFIG_FEATURE_WGET_AUTHENTICATION is not set -# CONFIG_FEATURE_WGET_IP6_LITERAL is not set -# CONFIG_FEATURE_WGET_LONG_OPTIONS is not set -# CONFIG_ZCIP is not set - -# -# Process Utilities -# -CONFIG_FREE=y -# CONFIG_FUSER is not set -CONFIG_KILL=y -CONFIG_KILLALL=y -# CONFIG_PIDOF is not set -# CONFIG_FEATURE_PIDOF_SINGLE is not set -# CONFIG_FEATURE_PIDOF_OMIT is not set -CONFIG_PS=y -CONFIG_FEATURE_PS_WIDE=y -CONFIG_RENICE=y -# CONFIG_BB_SYSCTL is not set -CONFIG_TOP=y -CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y -CONFIG_UPTIME=y - -# -# Shells -# -CONFIG_FEATURE_SH_IS_ASH=y -# CONFIG_FEATURE_SH_IS_HUSH is not set -# CONFIG_FEATURE_SH_IS_LASH is not set -# CONFIG_FEATURE_SH_IS_MSH is not set -# CONFIG_FEATURE_SH_IS_NONE is not set -CONFIG_ASH=y - -# -# Ash Shell Options -# -CONFIG_ASH_JOB_CONTROL=y -# CONFIG_ASH_READ_NCHARS is not set -# CONFIG_ASH_READ_TIMEOUT is not set -CONFIG_ASH_ALIAS=y -CONFIG_ASH_MATH_SUPPORT=y -# CONFIG_ASH_MATH_SUPPORT_64 is not set -CONFIG_ASH_GETOPTS=y -CONFIG_ASH_BUILTIN_ECHO=y -CONFIG_ASH_BUILTIN_TEST=y -# CONFIG_ASH_CMDCMD is not set -# CONFIG_ASH_MAIL is not set -CONFIG_ASH_OPTIMIZE_FOR_SIZE=y -# CONFIG_ASH_RANDOM_SUPPORT is not set -CONFIG_ASH_EXPAND_PRMT=y -# CONFIG_HUSH is not set -# CONFIG_LASH is not set -# CONFIG_MSH is not set - -# -# Bourne Shell Options -# -# CONFIG_FEATURE_SH_EXTRA_QUIET is not set -# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set -CONFIG_FEATURE_COMMAND_EDITING=y -# CONFIG_FEATURE_COMMAND_EDITING_VI is not set -CONFIG_FEATURE_COMMAND_HISTORY=15 -CONFIG_FEATURE_COMMAND_SAVEHISTORY=y -CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y -# CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set -CONFIG_FEATURE_SH_FANCY_PROMPT=y - -# -# System Logging Utilities -# -CONFIG_SYSLOGD=y -# CONFIG_FEATURE_ROTATE_LOGFILE is not set -# CONFIG_FEATURE_REMOTE_LOG is not set -# CONFIG_FEATURE_IPC_SYSLOG is not set -CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0 -# CONFIG_LOGREAD is not set -# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set -CONFIG_KLOGD=y -CONFIG_LOGGER=y diff --git a/config/uClibc/codesets.txt b/config/uClibc/codesets.txt deleted file mode 100644 index 98530d35c..000000000 --- a/config/uClibc/codesets.txt +++ /dev/null @@ -1,2 +0,0 @@ -./charmaps/ASCII.pairs -./charmaps/ISO-8859-1.pairs diff --git a/config/uClibc/locales.txt b/config/uClibc/locales.txt deleted file mode 100644 index a3100ecc7..000000000 --- a/config/uClibc/locales.txt +++ /dev/null @@ -1,8 +0,0 @@ -@euro e -@cyrillic c -#--------------------------------------------------------------------------- -UTF-8 yes -8-BIT yes -#--------------------------------------------------------------------------- -en_US ISO-8859-1 -en_US.UTF-8 UTF-8 diff --git a/config/uClibc/uClibc.config-i586 b/config/uClibc/uClibc.config-i586 deleted file mode 100644 index f46b1febf..000000000 --- a/config/uClibc/uClibc.config-i586 +++ /dev/null @@ -1,175 +0,0 @@ -# -# Automatically generated make config: don't edit -# -# TARGET_alpha is not set -# TARGET_arm is not set -# TARGET_bfin is not set -# TARGET_cris is not set -# TARGET_e1 is not set -# TARGET_frv is not set -# TARGET_h8300 is not set -TARGET_i386=y -# TARGET_i960 is not set -# TARGET_m68k is not set -# TARGET_microblaze is not set -# TARGET_mips is not set -# TARGET_nios is not set -# TARGET_nios2 is not set -# TARGET_powerpc is not set -# TARGET_sh is not set -# TARGET_sh64 is not set -# TARGET_sparc is not set -# TARGET_v850 is not set -# TARGET_x86_64 is not set - -# -# Target Architecture Features and Options -# -HAVE_ELF=y -ARCH_SUPPORTS_LITTLE_ENDIAN=y -TARGET_ARCH="i386" -# CONFIG_GENERIC_386 is not set -# CONFIG_386 is not set -# CONFIG_486 is not set -CONFIG_586=y -# CONFIG_586MMX is not set -# CONFIG_686 is not set -# CONFIG_PENTIUMII is not set -# CONFIG_PENTIUMIII is not set -# CONFIG_PENTIUM4 is not set -# CONFIG_K6 is not set -# CONFIG_K7 is not set -# CONFIG_ELAN is not set -# CONFIG_CRUSOE is not set -# CONFIG_WINCHIPC6 is not set -# CONFIG_WINCHIP2 is not set -# CONFIG_CYRIXIII is not set -# CONFIG_NEHEMIAH is not set -ARCH_LITTLE_ENDIAN=y -# ARCH_BIG_ENDIAN is not set -# ARCH_HAS_NO_MMU is not set -ARCH_HAS_MMU=y -UCLIBC_HAS_FLOATS=y -HAS_FPU=y -DO_C99_MATH=y -KERNEL_SOURCE="/usr" -C_SYMBOL_PREFIX="" -HAVE_DOT_CONFIG=y - -# -# General Library Settings -# -# HAVE_NO_PIC is not set -DOPIC=y -# HAVE_NO_SHARED is not set -HAVE_SHARED=y -# ARCH_HAS_NO_LDSO is not set -BUILD_UCLIBC_LDSO=y -FORCE_SHAREABLE_TEXT_SEGMENTS=y -LDSO_LDD_SUPPORT=y -LDSO_CACHE_SUPPORT=y -# LDSO_PRELOAD_FILE_SUPPORT is not set -LDSO_BASE_FILENAME="ld.so" -LDSO_RUNPATH=y -# DL_FINI_CRT_COMPAT is not set -UCLIBC_CTOR_DTOR=y -# HAS_NO_THREADS is not set -UCLIBC_HAS_THREADS=y -# PTHREADS_DEBUG_SUPPORT is not set -UCLIBC_HAS_LFS=y -# UCLIBC_STATIC_LDCONFIG is not set -# MALLOC is not set -# MALLOC_SIMPLE is not set -MALLOC_STANDARD=y -MALLOC_GLIBC_COMPAT=y -UCLIBC_DYNAMIC_ATEXIT=y -HAS_SHADOW=y -UNIX98PTY_ONLY=y -ASSUME_DEVPTS=y -UCLIBC_HAS_TM_EXTENSIONS=y -UCLIBC_HAS_TZ_CACHING=y -UCLIBC_HAS_TZ_FILE=y -UCLIBC_HAS_TZ_FILE_READ_MANY=y -UCLIBC_TZ_FILE_PATH="/etc/TZ" - -# -# Networking Support -# -# UCLIBC_HAS_IPV6 is not set -# UCLIBC_HAS_RPC is not set - -# -# String and Stdio Support -# -UCLIBC_HAS_STRING_GENERIC_OPT=y -UCLIBC_HAS_STRING_ARCH_OPT=y -UCLIBC_HAS_CTYPE_TABLES=y -UCLIBC_HAS_CTYPE_SIGNED=y -UCLIBC_HAS_CTYPE_UNSAFE=y -# UCLIBC_HAS_CTYPE_CHECKED is not set -# UCLIBC_HAS_CTYPE_ENFORCED is not set -UCLIBC_HAS_WCHAR=y -UCLIBC_HAS_LOCALE=y -UCLIBC_PREGENERATED_LOCALE_DATA=y -# UCLIBC_DOWNLOAD_PREGENERATED_LOCALE_DATA is not set -UCLIBC_HAS_XLOCALE=y -# UCLIBC_HAS_HEXADECIMAL_FLOATS is not set -# UCLIBC_HAS_GLIBC_DIGIT_GROUPING is not set -UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y -UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9 -# UCLIBC_HAS_SCANF_GLIBC_A_FLAG is not set -# UCLIBC_HAS_STDIO_BUFSIZ_NONE is not set -# UCLIBC_HAS_STDIO_BUFSIZ_256 is not set -# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set -# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set -# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set -UCLIBC_HAS_STDIO_BUFSIZ_4096=y -# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set -UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y -# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set -# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set -# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set -UCLIBC_HAS_STDIO_GETC_MACRO=y -UCLIBC_HAS_STDIO_PUTC_MACRO=y -UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y -# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set -# UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE is not set -# UCLIBC_HAS_GLIBC_CUSTOM_STREAMS is not set -# UCLIBC_HAS_PRINTF_M_SPEC is not set -UCLIBC_HAS_ERRNO_MESSAGES=y -# UCLIBC_HAS_SYS_ERRLIST is not set -UCLIBC_HAS_SIGNUM_MESSAGES=y -UCLIBC_HAS_SYS_SIGLIST=y -UCLIBC_HAS_GNU_GETOPT=y - -# -# Big and Tall -# -UCLIBC_HAS_REGEX=y -# UCLIBC_HAS_WORDEXP is not set -UCLIBC_HAS_FTW=y -UCLIBC_HAS_GLOB=y - -# -# Library Installation Options -# -SHARED_LIB_LOADER_PREFIX="/lib" -RUNTIME_PREFIX="/" -DEVEL_PREFIX="/usr/" - -# -# uClibc security related options -# -# UCLIBC_SECURITY is not set - -# -# uClibc development/debugging options -# -CROSS_COMPILER_PREFIX="" -# DODEBUG is not set -# DODEBUG_PT is not set -# DOASSERTS is not set -# SUPPORT_LD_DEBUG is not set -# SUPPORT_LD_DEBUG_EARLY is not set -WARNINGS="-Wall" -# UCLIBC_MJN3_ONLY is not set diff --git a/html/cgi-bin/connections.cgi b/html/cgi-bin/connections.cgi index fbd7fcd7c..1edf3e5d4 100644 --- a/html/cgi-bin/connections.cgi +++ b/html/cgi-bin/connections.cgi @@ -133,6 +133,11 @@ if ($netsettings{'BLUE_DEV'}) { } } +# Add Orange Firewall Interface +push(@network, $netsettings{'ORANGE_ADDRESS'}); +push(@masklen, "255.255.255.255" ); +push(@colour, ${Header::colourfw} ); + # Add Orange Network if ($netsettings{'ORANGE_DEV'}) { push(@network, $netsettings{'ORANGE_NETADDRESS'}); @@ -326,9 +331,13 @@ foreach my $line (@conntrack) { # Source and destination. my $sip; + my $sip_ret; my $dip; + my $dip_ret; my $sport; + my $sport_ret; my $dport; + my $dport_ret; my @packets; my @bytes; @@ -344,16 +353,32 @@ foreach my $line (@conntrack) { switch ($key) { case "src" { - $sip = $val; + if ($sip == "") { + $sip = $val; + } else { + $dip_ret = $val; + } } case "dst" { - $dip = $val; + if ($dip == "") { + $dip = $val; + } else { + $sip_ret = $val; + } } case "sport" { - $sport = $val; + if ($sport == "") { + $sport = $val; + } else { + $dport_ret = $val; + } } case "dport" { - $dport = $val; + if ($dport == "") { + $dport = $val; + } else { + $sport_ret = $val; + } } case "packets" { push(@packets, $val); @@ -370,17 +395,11 @@ foreach my $line (@conntrack) { my $sserv = ''; if ($sport < 1024) { $sserv = uc(getservbyport($sport, lc($l4proto))); - if ($sserv ne '') { - $sserv = " ($sserv)"; - } } my $dserv = ''; if ($dport < 1024) { $dserv = uc(getservbyport($dport, lc($l4proto))); - if ($dserv ne '') { - $dserv = " ($dserv)"; - } } my $bytes_in = format_bytes($bytes[0]); @@ -389,6 +408,49 @@ foreach my $line (@conntrack) { # Format TTL $ttl = format_time($ttl); + my $sip_extra; + if ($sip ne $sip_ret) { + $sip_extra = "> "; + $sip_extra .= ""; + $sip_extra .= " $sip_ret"; + $sip_extra .= ""; + } + + my $dip_extra; + if ($dip ne $dip_ret) { + $dip_extra = "> "; + $dip_extra .= ""; + $dip_extra .= " $dip_ret"; + $dip_extra .= ""; + } + + + my $sport_extra; + if ($sport ne $sport_ret) { + my $sserv_ret = ''; + if ($sport_ret < 1024) { + $sserv_ret = uc(getservbyport($sport_ret, lc($l4proto))); + } + + $sport_extra = "> "; + $sport_extra .= ""; + $sport_extra .= " $sport_ret"; + $sport_extra .= ""; + } + + my $dport_extra; + if ($dport ne $dport_ret) { + my $dserv_ret = ''; + if ($dport_ret < 1024) { + $dserv_ret = uc(getservbyport($dport_ret, lc($l4proto))); + } + + $dport_extra = "> "; + $dport_extra .= ""; + $dport_extra .= " $dport_ret"; + $dport_extra .= ""; + } + print < $l4proto @@ -396,21 +458,25 @@ foreach my $line (@conntrack) { $sip + $sip_extra - - $sport$sserv + + $sport + $sport_extra $dip + $dip_extra - - $dport$dserv + + $dport + $dport_extra $bytes_in / $bytes_out diff --git a/lfs/Config b/lfs/Config index 2bc075473..7360ac675 100644 --- a/lfs/Config +++ b/lfs/Config @@ -96,6 +96,8 @@ endif # ifeq "$(ROOT)" "" define POSTBUILD + @echo "Updating linker cache..." + @type -p ldconfig >/dev/null && ldconfig || : @echo "Install done; saving file list to $(TARGET) ..." @$(FIND_FILES) > $(DIR_SRC)/lsalrnew @diff $(DIR_SRC)/lsalr $(DIR_SRC)/lsalrnew | grep '^> ' | sed 's/^> //' > $(TARGET)_diff diff --git a/lfs/acpid b/lfs/acpid new file mode 100644 index 000000000..ff85e1cb5 --- /dev/null +++ b/lfs/acpid @@ -0,0 +1,84 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +# # +############################################################################### + +############################################################################### +# Definitions +############################################################################### + +include Config + +VER = 2.0.16 + +THISAPP = acpid-$(VER) +DL_FILE = $(THISAPP).tar.xz +DL_FROM = $(URL_IPFIRE) +DIR_APP = $(DIR_SRC)/$(THISAPP) +TARGET = $(DIR_INFO)/$(THISAPP) +SUP_ARCH = i586 + +############################################################################### +# Top-level Rules +############################################################################### + +objects = $(DL_FILE) + +$(DL_FILE) = $(DL_FROM)/$(DL_FILE) + +$(DL_FILE)_MD5 = d59fc02c9c34f0d5c137495302e2c074 + +install : $(TARGET) + +check : $(patsubst %,$(DIR_CHK)/%,$(objects)) + +download :$(patsubst %,$(DIR_DL)/%,$(objects)) + +md5 : $(subst %,%_MD5,$(objects)) + +############################################################################### +# Downloading, checking, md5sum +############################################################################### + +$(patsubst %,$(DIR_CHK)/%,$(objects)) : + @$(CHECK) + +$(patsubst %,$(DIR_DL)/%,$(objects)) : + @$(LOAD) + +$(subst %,%_MD5,$(objects)) : + @$(MD5) + +############################################################################### +# Installation Details +############################################################################### + +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) + @$(PREBUILD) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && ./configure --prefix=/usr + cd $(DIR_APP) && make $(MAKETUNING) OPT="$(CFLAGS)" + cd $(DIR_APP) && make install + + # Install configuration. + mkdir -pv /etc/acpi/{actions,events} + cp -vf $(DIR_SRC)/config/acpid/power /etc/acpi/events/ + cp -vf $(DIR_SRC)/config/acpid/power.sh /etc/acpi/actions/ + chmod 755 /etc/acpi/actions/power.sh + @rm -rf $(DIR_APP) + @$(POSTBUILD) diff --git a/lfs/apcupsd b/lfs/apcupsd index 5638cabc3..a0da9357e 100644 --- a/lfs/apcupsd +++ b/lfs/apcupsd @@ -77,6 +77,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/apcupsd-3.14.4-fix-gcc44.patch cd $(DIR_APP) && ./configure --prefix=/usr --enable-usb --enable-cgi \ --with-cgi-bin=/srv/web/ipfire/cgi-bin cd $(DIR_APP) && make $(MAKETUNING) diff --git a/lfs/bash b/lfs/bash index afdb511f1..34bf07533 100644 --- a/lfs/bash +++ b/lfs/bash @@ -24,7 +24,7 @@ include Config -VER = 3.1 +VER = 3.2 THISAPP = bash-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -48,7 +48,7 @@ else EXTRA_INSTALL = endif -EXTRA_CONFIG += --build=$(BUILDTARGET) +EXTRA_CONFIG += ac_cv_func_working_mktime=yes ############################################################################### # Top-level Rules @@ -58,7 +58,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = ef5304c4b22aaa5088972c792ed45d72 +$(DL_FILE)_MD5 = 00bfa16d58e034e3c2aa27f390390d30 install : $(TARGET) @@ -88,8 +88,11 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-fixes-8.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-login.patch + + for i in $$(seq 1 51); do \ + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/bash/bash32-$$(printf "%03d" "$${i}") || exit 1; \ + done + cd $(DIR_APP) && ./configure $(EXTRA_CONFIG) cd $(DIR_APP) && make $(EXTRA_MAKE) cd $(DIR_APP) && make $(EXTRA_INSTALL) install diff --git a/lfs/binutils b/lfs/binutils index 073ee2399..791483f21 100644 --- a/lfs/binutils +++ b/lfs/binutils @@ -24,40 +24,52 @@ include Config -VER = 2.18 +VER = 2.22 THISAPP = binutils-$(VER) DL_FILE = $(THISAPP).tar.bz2 DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) -# XXX maybe we can remove that ugly MACHINE= by this -#unexport MACHINE - # Normal build or /tools build. # ifeq "$(ROOT)" "" TARGET = $(DIR_INFO)/$(THISAPP) - EXTRA_CONFIG = --prefix=/usr --enable-shared --disable-nls + EXTRA_CONFIG = \ + --prefix=/usr \ + --enable-shared \ + --disable-nls EXTRA_MAKE = tooldir=/usr EXTRA_INSTALL = tooldir=/usr else ifeq "$(PASS)" "1" + CFLAGS := $(patsubst -march=%,,$(CFLAGS)) + CFLAGS := $(patsubst -mfloat-abi=%,,$(CFLAGS)) TARGET = $(DIR_INFO)/$(THISAPP)-tools1 - CFLAGS = - EXTRA_CONFIG = --prefix=/tools --disable-nls --disable-werror --disable-gprof - #EXTRA_MAKE = LDFLAGS="-all-static" + EXTRA_CONFIG = \ + --target=$(CROSSTARGET) \ + --prefix=/tools \ + --disable-nls \ + --disable-werror + EXTRA_MAKE = EXTRA_INSTALL = else TARGET = $(DIR_INFO)/$(THISAPP)-tools2 - EXTRA_CONFIG = --prefix=/tools --with-lib-path=/tools/lib --disable-nls + EXTRA_ENV = \ + CC="$(CROSSTARGET)-gcc -B/tools/lib/" \ + AR="$(CROSSTARGET)-ar" \ + RANLIB="$(CROSSTARGET)-ranlib" + EXTRA_CONFIG = \ + --host=$(BUILDTARGET) \ + --build=$(BUILDTARGET) \ + --prefix=/tools \ + --with-lib-path=/tools/lib \ + --disable-nls EXTRA_MAKE = EXTRA_INSTALL = endif endif -EXTRA_CONFIG += --build=$(BUILDTARGET) - ifeq "$(MACHINE_TYPE)" "arm" EXTRA_CONFIG += \ --with-abi=aapcs-linux \ @@ -72,7 +84,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 9d22ee4dafa3a194457caf4706f9cf01 +$(DL_FILE)_MD5 = ee0f10756c84979622b992a4a61ea3f5 install : $(TARGET) @@ -103,21 +115,17 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) $(DIR_SRC)/binutils-build && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) @mkdir $(DIR_SRC)/binutils-build - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-configure-1.patch - cd $(DIR_SRC)/binutils-build && MACHINE= $(DIR_APP)/configure $(EXTRA_CONFIG) -ifeq "$(PASS)" "1" - cd $(DIR_SRC)/binutils-build && make configure-host MAKEINFO=makeinfo MACHINE= -endif - cd $(DIR_SRC)/binutils-build && make $(EXTRA_MAKE) $(MAKETUNING) MAKEINFO=makeinfo MACHINE= - cd $(DIR_SRC)/binutils-build && make $(EXTRA_INSTALL) install MAKEINFO=makeinfo MACHINE= + + # Prevent installing libiberty to lib64. + cd $(DIR_APP) && sed -i 's%\(^MULTIOSDIR = \).*%\1 ../lib%' libiberty/Makefile.in + + cd $(DIR_SRC)/binutils-build && $(EXTRA_ENV) MACHINE= $(DIR_APP)/configure $(EXTRA_CONFIG) + cd $(DIR_SRC)/binutils-build && make $(EXTRA_MAKE) $(MAKETUNING) MACHINE= + cd $(DIR_SRC)/binutils-build && make $(EXTRA_INSTALL) install MACHINE= ifeq "$(ROOT)" "" cp -v $(DIR_APP)/include/libiberty.h /usr/include else -ifeq "$(PASS)" "1" - cd $(DIR_SRC)/binutils-build && make -C ld clean MACHINE= - cd $(DIR_SRC)/binutils-build && make -C ld LIB_PATH=/tools/lib MACHINE= - cd $(DIR_SRC)/binutils-build && cp -v ld/ld-new /tools/bin -else +ifeq "$(PASS)" "2" cd $(DIR_SRC)/binutils-build && make -C ld clean MACHINE= cd $(DIR_SRC)/binutils-build && make -C ld LIB_PATH=/usr/lib:/lib MACHINE= cd $(DIR_SRC)/binutils-build && cp -v ld/ld-new /tools/bin diff --git a/lfs/cairo b/lfs/cairo new file mode 100644 index 000000000..591549ab3 --- /dev/null +++ b/lfs/cairo @@ -0,0 +1,77 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +# # +############################################################################### + +############################################################################### +# Definitions +############################################################################### + +include Config + +VER = 1.10.2 + +THISAPP = cairo-$(VER) +DL_FILE = $(THISAPP).tar.gz +DL_FROM = $(URL_IPFIRE) +DIR_APP = $(DIR_SRC)/$(THISAPP) +TARGET = $(DIR_INFO)/$(THISAPP) + +############################################################################### +# Top-level Rules +############################################################################### + +objects = $(DL_FILE) + +$(DL_FILE) = $(DL_FROM)/$(DL_FILE) + +$(DL_FILE)_MD5 = f101a9e88b783337b20b2e26dfd26d5f + +install : $(TARGET) + +check : $(patsubst %,$(DIR_CHK)/%,$(objects)) + +download :$(patsubst %,$(DIR_DL)/%,$(objects)) + +md5 : $(subst %,%_MD5,$(objects)) + +############################################################################### +# Downloading, checking, md5sum +############################################################################### + +$(patsubst %,$(DIR_CHK)/%,$(objects)) : + @$(CHECK) + +$(patsubst %,$(DIR_DL)/%,$(objects)) : + @$(LOAD) + +$(subst %,%_MD5,$(objects)) : + @$(MD5) + +############################################################################### +# Installation Details +############################################################################### + +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) + @$(PREBUILD) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && ./configure --prefix=/usr --disable-win32 --disable-os2 --disable-beos + cd $(DIR_APP) && make $(MAKETUNING) + cd $(DIR_APP) && make install + @rm -rf $(DIR_APP) + @$(POSTBUILD) diff --git a/lfs/capi4k-utils b/lfs/capi4k-utils index 9546c43ac..b82c156e0 100644 --- a/lfs/capi4k-utils +++ b/lfs/capi4k-utils @@ -76,6 +76,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP)/capiinit && make install cd $(DIR_APP)/capi20 && sed -i -e 's/include /include \n#include /' capidyn.c cd $(DIR_APP)/capi20 && sed -i -e 's/include /include \n#include /' capi20.c + cd $(DIR_APP)/capi20 && sed -i "/include/a #include " capi20.h cd $(DIR_APP)/capi20 && sed -i -e 's/-O2/$(CFLAGS)/' configure cd $(DIR_APP)/capi20 && SED=sed ./configure cd $(DIR_APP)/capi20 && SED=sed make $(MAKETUNING) diff --git a/lfs/ccache b/lfs/ccache index 3a8dc6e53..44010f962 100644 --- a/lfs/ccache +++ b/lfs/ccache @@ -24,7 +24,7 @@ include Config -VER = 3.1.7 +VER = 3.1.8 THISAPP = ccache-$(VER) DL_FILE = $(THISAPP).tar.bz2 @@ -32,6 +32,14 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP)-pass$(PASS) +ifeq "$(PASS)" "1" + CFLAGS := $(patsubst -march=%,,$(CFLAGS)) + CFLAGS := $(patsubst -mfloat-abi=%,,$(CFLAGS)) +endif + +# Set max cache size to 5GB +CFLAGS += -DDEFAULT_MAXSIZE=5242880 + ############################################################################### # Top-level Rules ############################################################################### @@ -40,7 +48,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 82257745eac54826527946e9e3d046f4 +$(DL_FILE)_MD5 = 0e0f25fb342dcb1196d9c2986a7323cf install : $(TARGET) @@ -70,15 +78,28 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && CFLAGS="-O2 -static -DDEFAULT_MAXSIZE=5242880" ./configure --prefix=$(ROOT)/usr/local + cd $(DIR_APP) && ./configure --prefix=/tools cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP) && make install - ln -sf ccache $(ROOT)/usr/local/bin/gcc - ln -sf ccache $(ROOT)/usr/local/bin/g++ - ln -sf ccache $(ROOT)/usr/local/bin/cc - ln -sf ccache $(ROOT)/usr/local/bin/$(BUILDTARGET)-gcc - ln -sf ccache $(ROOT)/usr/local/bin/$(BUILDTARGET)-g++ - ln -sf ccache $(ROOT)/usr/local/bin/$(BUILDTARGET)-cc - $(ROOT)/usr/local/bin/ccache -z + +ifeq "$(PASS)" "1" + mkdir -pv /tools/ccache/bin + ln -svf ../../bin/ccache /tools/ccache/bin/gcc + ln -svf ../../bin/ccache /tools/ccache/bin/g++ + ln -svf ../../bin/ccache /tools/ccache/bin/cc + ln -svf ../../bin/ccache /tools/ccache/bin/c++ + ln -svf ../../bin/ccache /tools/ccache/bin/$(CROSSTARGET)-gcc + ln -svf ../../bin/ccache /tools/ccache/bin/$(CROSSTARGET)-g++ + ln -svf ../../bin/ccache /tools/ccache/bin/$(CROSSTARGET)-cc + ln -svf ../../bin/ccache /tools/ccache/bin/$(CROSSTARGET)-c++ +endif + +ifeq "$(PASS)" "2" + ln -svf ../../bin/ccache /tools/ccache/bin/$(BUILDTARGET)-gcc + ln -svf ../../bin/ccache /tools/ccache/bin/$(BUILDTARGET)-g++ + ln -svf ../../bin/ccache /tools/ccache/bin/$(BUILDTARGET)-cc + ln -svf ../../bin/ccache /tools/ccache/bin/$(BUILDTARGET)-c++ +endif + @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/cleanup-toolchain b/lfs/cleanup-toolchain index 306b781c2..0b3252f9f 100644 --- a/lfs/cleanup-toolchain +++ b/lfs/cleanup-toolchain @@ -52,30 +52,39 @@ md5 : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) ifeq "$(PASS)" "1" - mv -v /tools/bin/{ld,ld-old} - mv -v /tools/$(BUILDTARGET)/bin/{ld,ld-old} - cp -v /tools/bin/{ld-new,ld} - ln -sv /tools/bin/ld /tools/$(BUILDTARGET)/bin/ld - gcc -dumpspecs > /tools/lib/gcc/$(BUILDTARGET)/$(GCC_VER)/specs - sed 's@/lib/ld-linux.so@/tools&@g' /tools/lib/gcc/$(BUILDTARGET)/$(GCC_VER)/specs > tempspecfile - mv -vf tempspecfile /tools/lib/gcc/$(BUILDTARGET)/$(GCC_VER)/specs - find /tools/lib/gcc/$(BUILDTARGET)/$(GCC_VER)/include/* -maxdepth 0 -xtype d -exec rm -rvf '{}' \; - rm -vf `grep -l "DO NOT EDIT THIS FILE" /tools/lib/gcc/$(BUILDTARGET)/$(GCC_VER)/include/*` + SPECS=$$(dirname $$(/tools/bin/$(CROSSTARGET)-gcc -print-libgcc-file-name))/specs; \ + /tools/bin/$(CROSSTARGET)-gcc -dumpspecs | sed \ + -e 's@/lib\(64\)\?/ld@/tools&@g' \ + -e "/^\*cpp:$$/{n;s,$$, -isystem /tools/include,}" > $$SPECS endif + ifeq "$(PASS)" "2" - -strip --strip-debug /tools/lib/* - -strip --strip-unneeded /tools/{,s}bin/* - rm -rfv /tools/{info,man} /usr/local/man - chown -R root:root /tools + # Remove the first cross compiler which is not needed anymore. + find /tools/ -name "$(CROSSTARGET)*" | xargs rm -rfv + + # Remove man and info pages. + rm -rfv /tools/{,share}/{info,man} + + # Strip all binaries. + STRIP="/usr/bin/strip" $(DIR_SRC)/src/stripper /tools/ + + # Fix ownership of the toolchain. + chown -R root:root /tools/ + + # Update/create linker cache. + /tools/sbin/ldconfig endif + ifeq "$(PASS)" "3" mv -v /tools/bin/{ld,ld-old} mv -v /tools/$(BUILDTARGET)/bin/{ld,ld-old} mv -v /tools/bin/{ld-new,ld} ln -sv /tools/bin/ld /tools/$(BUILDTARGET)/bin/ld - gcc -dumpspecs | \ - perl -p -e 's@/tools/lib/ld-linux.so@/lib/ld-linux.so@g;' \ - -e 's@\*startfile_prefix_spec:\n@$$_/usr/lib/ @g;' > \ - /tools/lib/gcc/$(BUILDTARGET)/$(GCC_VER)/specs + + gcc -dumpspecs | sed \ + -e 's@/tools@@g' \ + -e '/\*startfile_prefix_spec:/{n;s@.*@/usr/lib/ @}' \ + -e '/\*cpp:/{n;s@$$@ -isystem /usr/include@}' > \ + $$(dirname $$(gcc -print-libgcc-file-name))/specs endif @$(POSTBUILD) diff --git a/lfs/cmake b/lfs/cmake index 6b7aff61c..587396538 100644 --- a/lfs/cmake +++ b/lfs/cmake @@ -70,7 +70,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./bootstrap + cd $(DIR_APP) && ./bootstrap --prefix=/usr cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install @rm -rf $(DIR_APP) diff --git a/lfs/coreutils b/lfs/coreutils index 7bdc0ecd3..c8b4d284b 100644 --- a/lfs/coreutils +++ b/lfs/coreutils @@ -45,7 +45,7 @@ else EXTRA_INSTALL = endif -EXTRA_CONFIG += --build=$(BUILDTARGET) +EXTRA_CONFIG += ac_cv_func_working_mktime=yes ############################################################################### # Top-level Rules @@ -86,6 +86,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/coreutils-5.96-rename-tee.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/coreutils-5.96-futimes.patch ifeq "$(ROOT)" "" ifeq "$(MACHINE)" "i586" cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-uname-1.patch diff --git a/lfs/cyrus-sasl b/lfs/cyrus-sasl index 1f8282ef8..749011f26 100644 --- a/lfs/cyrus-sasl +++ b/lfs/cyrus-sasl @@ -82,6 +82,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/cyrus-sasl-2.1.22-bad-elif.patch cd $(DIR_APP) && sed -i '/sasl_global/s/^static //' lib/client.c cd $(DIR_APP) && sed -i 's/cat8/man8/' saslauthd/Makefile.in diff --git a/lfs/dahdi b/lfs/dahdi index 0ae424c42..48840bd7e 100644 --- a/lfs/dahdi +++ b/lfs/dahdi @@ -26,8 +26,8 @@ include Config VERSUFIX=ipfire$(KCFG) -VER = 2.2.1 -TVER = 2.2.1 +VER = 2.6.1 +TVER = 2.6.1 DL_FILE = dahdi-linux-$(VER).tar.gz DL_FILE1 = dahdi-tools-$(TVER).tar.gz @@ -38,32 +38,29 @@ DIR_APP = $(DIR_SRC)/dahdi-linux-$(VER) DIR_APP1 = $(DIR_SRC)/dahdi-tools-$(TVER) PROG = dahdi -PAK_VER = 2 +PAK_VER = 3 DEPS = "" - ifeq "$(KMOD)" "1" TARGET = $(DIR_INFO)/$(THISAPP)-kmod-$(KVER)-$(VERSUFIX) else TARGET = $(DIR_INFO)/$(THISAPP) endif - ############################################################################### # Top-level Rules ############################################################################### -objects = $(DL_FILE) $(DL_FILE1) dahdi-linux-2.2.1-firmware.tar.bz2 +objects = $(DL_FILE) $(DL_FILE1) dahdi-linux-2.6.1-firmware.tar.gz $(DL_FILE) = $(DL_FROM)/$(DL_FILE) $(DL_FILE1) = $(DL_FROM)/$(DL_FILE1) -dahdi-linux-2.2.1-firmware.tar.bz2 = $(DL_FROM)/dahdi-linux-2.2.1-firmware.tar.bz2 - -$(DL_FILE)_MD5 = 46e4abbe743830045364fc716d293e88 -$(DL_FILE1)_MD5 = 04e7097929851f744f777400125180db -dahdi-linux-2.2.1-firmware.tar.bz2_MD5 = ccc50ded1641cd619e8d3a4615a6ad19 +dahdi-linux-2.6.1-firmware.tar.gz = $(DL_FROM)/dahdi-linux-2.6.1-firmware.tar.gz +$(DL_FILE)_MD5 = 75932fe3d4a6e656165aaaa7a1377305 +$(DL_FILE1)_MD5 = c2e4f476a8e7f96a5cad46dd9b648446 +dahdi-linux-2.6.1-firmware.tar.gz_MD5 = cb804d1b4dd1b644d3c1638daa12dcf5 install : $(TARGET) @@ -97,8 +94,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_SRC) && tar jxf $(DIR_DL)/dahdi-linux-2.2.1-firmware.tar.bz2 - cd $(DIR_APP) && make $(MAKETUNING) clean all KVERS=$(KVER) + cd $(DIR_SRC) && tar axf $(DIR_DL)/dahdi-linux-2.6.1-firmware.tar.gz + cd $(DIR_APP) && make $(MAKETUNING) clean all KVERS=$(KVER)-$(VERSUFIX) ifeq "$(KMOD)" "1" cd $(DIR_APP) && make install-modules KVERS=$(KVER)-$(VERSUFIX) @@ -141,4 +138,3 @@ else echo "dahdi_dummy" >> /etc/dahdi/modules endif @$(POSTBUILD) - diff --git a/lfs/dbus b/lfs/dbus index 818b89ea4..3a431066a 100644 --- a/lfs/dbus +++ b/lfs/dbus @@ -77,6 +77,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_SRC)/dbus* cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/dbus-1.0.3-compile-fix-1.patch cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc \ --localstatedir=/var cd $(DIR_APP) && make $(MAKETUNING) diff --git a/lfs/directfb b/lfs/directfb index e406af820..34acb593e 100644 --- a/lfs/directfb +++ b/lfs/directfb @@ -79,6 +79,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/directfb-1.1.1-fix-mknod.patch cd $(DIR_APP) && sed -i "s/checkfor_matrox=yes/checkfor_matrox=no/g" configure cd $(DIR_APP) && sed -i "s/checkfor_cle266=no/checkfor_cle266=yes/g" configure cd $(DIR_APP) && sed -i "s/checkfor_omap=.*/checkfor_omap=no/g" configure diff --git a/lfs/fake-environ b/lfs/fake-environ index b72491253..978a90d9b 100644 --- a/lfs/fake-environ +++ b/lfs/fake-environ @@ -28,7 +28,7 @@ VER = 1.0 THISAPP = fake-environ DIR_APP = $(DIR_SRC)/$(THISAPP) -TARGET = $(DIR_INFO)/$(THISAPP)-tools$(PASS) +TARGET = $(DIR_INFO)/$(THISAPP)-tools ############################################################################### # Top-level Rules diff --git a/lfs/flac b/lfs/flac new file mode 100644 index 000000000..2143d3621 --- /dev/null +++ b/lfs/flac @@ -0,0 +1,95 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +# # +############################################################################### + +############################################################################### +# Definitions +############################################################################### + +include Config + +VER = 1.2.1 + +THISAPP = flac-$(VER) +DL_FILE = $(THISAPP).tar.gz +DL_FROM = $(URL_IPFIRE) +DIR_APP = $(DIR_SRC)/$(THISAPP) +TARGET = $(DIR_INFO)/$(THISAPP) +PROG = flac +PAK_VER = 1 + +DEPS = "libogg" + +############################################################################### +# Top-level Rules +############################################################################### + +objects = $(DL_FILE) + +$(DL_FILE) = $(DL_FROM)/$(DL_FILE) + +$(DL_FILE)_MD5 = 153c8b15a54da428d1f0fadc756c22c7 + +install : $(TARGET) + +check : $(patsubst %,$(DIR_CHK)/%,$(objects)) + +download :$(patsubst %,$(DIR_DL)/%,$(objects)) + +md5 : $(subst %,%_MD5,$(objects)) + +dist: + @$(PAK) + +############################################################################### +# Downloading, checking, md5sum +############################################################################### + +$(patsubst %,$(DIR_CHK)/%,$(objects)) : + @$(CHECK) + +$(patsubst %,$(DIR_DL)/%,$(objects)) : + @$(LOAD) + +$(subst %,%_MD5,$(objects)) : + @$(MD5) + +############################################################################### +# Installation Details +############################################################################### + +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) + @$(PREBUILD) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/flac-1.2.1-asm.patch + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/flac-1.2.1-bitreader.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/flac-1.2.1-cflags.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/flac-1.2.1-gcc43.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/flac-1.2.1-hidesyms.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/flac-1.2.1-tests.patch + cd $(DIR_APP) && ./autogen.sh -V + cd $(DIR_APP) && \ + ./configure \ + --prefix=/usr \ + --disable-xmms-plugin \ + --disable-thorough-tests + cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) + cd $(DIR_APP) && make install + @rm -rf $(DIR_APP) + @$(POSTBUILD) diff --git a/lfs/fontconfig b/lfs/fontconfig index d5b020c09..6f0850be7 100644 --- a/lfs/fontconfig +++ b/lfs/fontconfig @@ -31,10 +31,6 @@ DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) -PROG = fontconfig -PAK_VER = 1 - -DEPS = "" ############################################################################### # Top-level Rules @@ -54,9 +50,6 @@ download :$(patsubst %,$(DIR_DL)/%,$(objects)) md5 : $(subst %,%_MD5,$(objects)) -dist: - $(PAK) - ############################################################################### # Downloading, checking, md5sum ############################################################################### diff --git a/lfs/gawk b/lfs/gawk index 7bf70446c..66bbfac23 100644 --- a/lfs/gawk +++ b/lfs/gawk @@ -45,6 +45,8 @@ else EXTRA_INSTALL = endif +EXTRA_CONFIG += ac_cv_func_working_mktime=yes + ############################################################################### # Top-level Rules ############################################################################### diff --git a/lfs/gcc b/lfs/gcc index 7665074c3..0bdecdaef 100644 --- a/lfs/gcc +++ b/lfs/gcc @@ -24,48 +24,76 @@ include Config -VER = 4.1.2 +VER = 4.4.7 + +GMP_VER = 5.0.5 +MPFR_VER = 2.4.2 THISAPP = gcc-$(VER) DL_FILE = $(THISAPP).tar.bz2 DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) +CFLAGS := $(patsubst -march=%,,$(CFLAGS)) +CFLAGS := $(patsubst -mtune=%,,$(CFLAGS)) +CFLAGS := $(patsubst -mfloat-abi=%,,$(CFLAGS)) + # Normal build or /tools build. # ifeq "$(ROOT)" "" TARGET = $(DIR_INFO)/$(THISAPP) - EXTRA_CONFIG = --prefix=/usr \ - --libexecdir=/usr/lib \ - --enable-shared \ - --enable-threads=posix \ - --enable-__cxa_atexit \ - --enable-clocale=gnu \ - --enable-languages=c,c++ \ - --disable-nls + EXTRA_CONFIG = \ + --prefix=/usr \ + --libexecdir=/usr/lib \ + --enable-shared \ + --enable-threads=posix \ + --enable-__cxa_atexit \ + --enable-clocale=gnu \ + --enable-languages=c,c++ \ + --disable-bootstrap \ + --disable-nls EXTRA_MAKE = EXTRA_INSTALL = else ifeq "$(PASS)" "1" TARGET = $(DIR_INFO)/$(THISAPP)-tools1 - EXTRA_CONFIG = --prefix=/tools \ - --with-local-prefix=/tools \ - --disable-nls \ - --enable-shared \ - --enable-languages=c \ - --enable-bootstrap + EXTRA_CONFIG = \ + --target=$(CROSSTARGET) \ + --prefix=/tools \ + --disable-nls \ + --disable-shared \ + --disable-decimal-float \ + --disable-threads \ + --disable-libmudflap \ + --disable-libssp \ + --disable-libgomp \ + --disable-libquadmath \ + --with-newlib \ + --without-headers \ + --without-ppl \ + --without-cloog \ + --enable-languages=c EXTRA_MAKE = EXTRA_INSTALL = else TARGET = $(DIR_INFO)/$(THISAPP)-tools2 - EXTRA_CONFIG = --prefix=/tools \ - --with-local-prefix=/tools \ - --enable-clocale=gnu \ - --enable-shared \ - --enable-threads=posix \ - --enable-__cxa_atexit \ - --enable-languages=c,c++ \ - --disable-libstdcxx-pch + EXTRA_ENV = \ + CC="$(CROSSTARGET)-gcc -B/tools/lib/" \ + AR="$(CROSSTARGET)-ar" \ + RANLIB="$(CROSSTARGET)-ranlib" + EXTRA_CONFIG = \ + --host=$(BUILDTARGET) \ + --build=$(BUILDTARGET) \ + --target=$(BUILDTARGET) \ + --prefix=/tools \ + --with-local-prefix=/tools \ + --enable-clocale=gnu \ + --enable-shared \ + --enable-threads=posix \ + --enable-__cxa_atexit \ + --enable-languages=c,c++ \ + --disable-libstdcxx-pch \ + --disable-bootstrap EXTRA_MAKE = EXTRA_INSTALL = endif @@ -73,38 +101,39 @@ endif ifeq "$(MACHINE_TYPE)" "arm" EXTRA_CONFIG += \ - --build=$(BUILDTARGET) \ - --host=$(BUILDTARGET) \ - --target=$(BUILDTARGET) \ --with-float=soft \ - --disable-libmudflap \ - --disable-libssp \ - --disable-libgomp \ - --enable-threads=posix \ - --enable-long-long \ - --enable-c99 \ - --enable-__cxa_atexit \ - --disable-multilib -else - EXTRA_CONFIG += --build=$(BUILDTARGET) --host=$(BUILDTARGET) \ - --target=$(BUILDTARGET) + --disable-sjlj-exceptions endif +ifeq "$(MACHINE)" "i586" + EXTRA_CONFIG += \ + --with-arch=i586 \ + --with-tune=generic +endif + +EXTRA_CONFIG += \ + --with-bugurl=http://bugtracker.ipfire.org \ + --disable-libunwind-exceptions \ + --enable-gnu-unique-object + export XCFLAGS = $(CFLAGS) export TCFLAGS = $(CFLAGS) -ifeq "$(PASS)" "1" - CFLAGS = -endif - ############################################################################### # Top-level Rules ############################################################################### -objects = $(DL_FILE) + +objects = $(DL_FILE) \ + gmp-$(GMP_VER).tar.bz2 \ + mpfr-$(MPFR_VER).tar.bz2 $(DL_FILE) = $(DL_FROM)/$(DL_FILE) +gmp-$(GMP_VER).tar.bz2 = $(DL_FROM)/gmp-$(GMP_VER).tar.bz2 +mpfr-$(MPFR_VER).tar.bz2 = $(DL_FROM)/mpfr-$(MPFR_VER).tar.bz2 -$(DL_FILE)_MD5 = a4a3eb15c96030906d8494959eeda23c +$(DL_FILE)_MD5 = 295709feb4441b04e87dea3f1bab4281 +gmp-$(GMP_VER).tar.bz2_MD5 = 041487d25e9c230b0c42b106361055fe +mpfr-$(MPFR_VER).tar.bz2_MD5 = 89e59fe665e2b3ad44a6789f40b059a0 install : $(TARGET) @@ -134,42 +163,71 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) $(DIR_SRC)/gcc-build && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-fix_linker_version_detection.patch @mkdir $(DIR_SRC)/gcc-build - cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/gcc-4.1.2-gcc_eh.patch - cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/gcc-4.1.2-arm-linux-soft-float.patch + # Apply patches. + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/gcc/gcc44-build-id.patch + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/gcc/gcc44-c++-builtin-redecl.patch + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/gcc/gcc44-i386-libgomp.patch + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/gcc/gcc44-libtool-no-rpath.patch + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/gcc/gcc44-no-add-needed.patch + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/gcc/gcc44-pr33763.patch + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/gcc/gcc44-rh330771.patch + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/gcc/gcc44-rh533181.patch + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/gcc/gcc44-rh610785.patch + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/gcc/gcc44-unwind-debug-hook.patch + +ifneq "$(ROOT)" "" + # Build gmp and mpfr internally in toolchain. + cd $(DIR_APP) && tar xfa $(DIR_DL)/gmp-$(GMP_VER).tar.bz2 + cd $(DIR_APP) && mv -v gmp-$(GMP_VER) gmp + cd $(DIR_APP) && tar xfa $(DIR_DL)/mpfr-$(MPFR_VER).tar.bz2 + cd $(DIR_APP) && mv -v mpfr-$(MPFR_VER) mpfr + +ifeq "$(PASS)" "1" + # GCC does not detect stack protection correctly, which causes problems + # for the build of libresolv_pic.a. + cd $(DIR_APP) && sed -i '/k prot/agcc_cv_libc_provides_ssp=yes' gcc/configure +endif + +ifeq "$(PASS)" "2" + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/gcc-4.4.3-startfiles_fix-1.patch + + for file in $$(find $(DIR_APP)/gcc/config -name linux64.h -o -name linux.h \ + -o -name sysv4.h -o -name linux-eabi.h -o -name linux-elf.h); do \ + echo "Processing $${file}..."; \ + sed -i $${file} \ + -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \ + -e 's@/usr@/tools@g'; \ + echo '#undef STANDARD_INCLUDE_DIR' >> $${file}; \ + echo '#define STANDARD_INCLUDE_DIR 0' >> $${file}; \ + echo '#define STANDARD_STARTFILE_PREFIX_1 ""' >> $${file}; \ + echo '#define STANDARD_STARTFILE_PREFIX_2 ""' >> $${file}; \ + done +endif +endif + + cd $(DIR_APP) && sed -i 's/install_to_$$(INSTALL_DEST) //' libiberty/Makefile.in + cd $(DIR_APP) && sed -i gcc/Makefile.in \ + -e 's@\./fixinc\.sh@-c true@' \ + -e 's/^T_CFLAGS =$$/& -fomit-frame-pointer/' + + # The actual build. + cd $(DIR_SRC)/gcc-build && \ + $(EXTRA_ENV) \ + $(DIR_APP)/configure \ + $(EXTRA_CONFIG) + cd $(DIR_SRC)/gcc-build && make $(MAKETUNING) $(EXTRA_MAKE) + cd $(DIR_SRC)/gcc-build && make $(EXTRA_INSTALL) install ifeq "$(ROOT)" "" - cd $(DIR_APP) && sed -i 's/install_to_$$(INSTALL_DEST) //' libiberty/Makefile.in - cd $(DIR_APP) && sed -i 's/^XCFLAGS =$$/& -fomit-frame-pointer/' gcc/Makefile.in - cd $(DIR_APP) && sed -i 's@\./fixinc\.sh@-c true@' gcc/Makefile.in - cd $(DIR_APP) && sed -i 's/@have_mktemp_command@/yes/' gcc/gccbug.in - - cd $(DIR_SRC)/gcc-build && $(DIR_APP)/configure $(EXTRA_CONFIG) - cd $(DIR_SRC)/gcc-build && make $(MAKETUNING) $(EXTRA_MAKE) - cd $(DIR_SRC)/gcc-build && make $(EXTRA_INSTALL) install - ln -sfv ../usr/bin/cpp /lib - ln -sfv gcc /usr/bin/cc + ln -svf ../usr/bin/cpp /lib + ln -svf gcc /usr/bin/cc else -ifeq "$(PASS)" "1" - cd $(DIR_SRC)/gcc-build && $(DIR_APP)/configure $(EXTRA_CONFIG) - cd $(DIR_SRC)/gcc-build && make $(MAKETUNING) $(EXTRA_MAKE) - cd $(DIR_SRC)/gcc-build && make $(EXTRA_INSTALL) install - ln -sfv gcc /tools/bin/cc - ln -sf ccache $(ROOT)/usr/local/bin/$(BUILDTARGET)-gcc - ln -sf ccache $(ROOT)/usr/local/bin/$(BUILDTARGET)-g++ - ln -sf ccache $(ROOT)/usr/local/bin/$(BUILDTARGET)-cc +ifeq "$(PASS)" "1" + ln -svf libgcc.a $$(/tools/bin/$(CROSSTARGET)-gcc -print-libgcc-file-name | sed 's/libgcc/&_eh/') else - cd $(DIR_APP) && cp -v gcc/Makefile.in{,.orig} - cd $(DIR_APP) && sed 's@\./fixinc\.sh@-c true@' gcc/Makefile.in.orig > gcc/Makefile.in - cd $(DIR_APP) && cp -v gcc/Makefile.in{,.tmp} - cd $(DIR_APP) && sed 's/^XCFLAGS =$\/& -fomit-frame-pointer/' gcc/Makefile.in.tmp \ - > gcc/Makefile.in - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-specs-1.patch - cd $(DIR_SRC)/gcc-build && $(DIR_APP)/configure $(EXTRA_CONFIG) - cd $(DIR_SRC)/gcc-build && make $(MAKETUNING) $(EXTRA_MAKE) - cd $(DIR_SRC)/gcc-build && make $(EXTRA_INSTALL) install + ln -svf gcc /tools/bin/cc endif endif @rm -rf $(DIR_APP) $(DIR_SRC)/gcc-build diff --git a/lfs/gettext b/lfs/gettext index 43e7552f3..b1ccbbebd 100644 --- a/lfs/gettext +++ b/lfs/gettext @@ -24,7 +24,7 @@ include Config -VER = 0.14.5 +VER = 0.18.1.1 THISAPP = gettext-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -34,14 +34,10 @@ DIR_APP = $(DIR_SRC)/$(THISAPP) # Normal build or /tools build. # ifeq "$(ROOT)" "" -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else TARGET = $(DIR_INFO)/$(THISAPP) EXTRA_CONFIG = --prefix=/usr --disable-nls EXTRA_MAKE = EXTRA_INSTALL = -endif else TARGET = $(DIR_INFO)/$(THISAPP)-tools EXTRA_CONFIG = --prefix=/tools --disable-shared --disable-nls @@ -57,7 +53,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = e2f6581626a22a0de66dce1d81d00de3 +$(DL_FILE)_MD5 = 3dd55b952826d2b32f51308f2f91aa89 install : $(TARGET) @@ -88,21 +84,12 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) ifeq "$(ROOT)" "" -ifeq "$(LFS_PASS)" "install" - cd $(DIR_APP) && ./configure --prefix=/ --libdir=/lib \ - --with-included-gettext --disable-rpath \ - --enable-relocatable --disable-shared - cd $(DIR_APP)/gettext-runtime && make CFLAGS="-Os -fomit-frame-pointer" -C intl/ - cd $(DIR_APP)/gettext-runtime && make CFLAGS="-Os -fomit-frame-pointer" \ - DESTDIR=/opt/$(MACHINE)-uClibc -C intl/ install -else cd $(DIR_APP) && ./configure $(EXTRA_CONFIG) cd $(DIR_APP) && make $(EXTRA_MAKE) cd $(DIR_APP) && make $(EXTRA_INSTALL) install -endif else cd $(DIR_APP)/gettext-tools && ./configure $(EXTRA_CONFIG) - cd $(DIR_APP)/gettext-tools && make -C lib + cd $(DIR_APP)/gettext-tools && make -C gnulib-lib cd $(DIR_APP)/gettext-tools && make -C src msgfmt cd $(DIR_APP)/gettext-tools && cp -v src/msgfmt /tools/bin endif diff --git a/lfs/glib b/lfs/glib index 2c41905d5..1b43287ac 100644 --- a/lfs/glib +++ b/lfs/glib @@ -24,17 +24,13 @@ include Config -VER = 2.22.2 +VER = 2.32.3 THISAPP = glib-$(VER) -DL_FILE = $(THISAPP).tar.bz2 +DL_FILE = $(THISAPP).tar.xz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) -PROG = glib -PAK_VER = 3 - -DEPS = "" ############################################################################### # Top-level Rules @@ -44,7 +40,8 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 846a86c74b74d5b16826aa5508940f9b +$(DL_FILE)_MD5 = 9bd3ac535c24b6c162be13b2c43c5adc + install : $(TARGET) check : $(patsubst %,$(DIR_CHK)/%,$(objects)) @@ -53,9 +50,6 @@ download :$(patsubst %,$(DIR_DL)/%,$(objects)) md5 : $(subst %,%_MD5,$(objects)) -dist: - @$(PAK) - ############################################################################### # Downloading, checking, md5sum ############################################################################### @@ -75,8 +69,9 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=/usr --disable-nls + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc \ + --with-pcre=system cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install @rm -rf $(DIR_APP) diff --git a/lfs/glibc b/lfs/glibc index 2e0b7f933..234a7ce11 100644 --- a/lfs/glibc +++ b/lfs/glibc @@ -24,7 +24,8 @@ include Config -VER = 2.5 +VER = 2.12-2-gc4ccff1 +PORTS_VER = 2.12.1 THISAPP = glibc-$(VER) DL_FILE = $(THISAPP).tar.bz2 @@ -35,23 +36,33 @@ DIR_APP = $(DIR_SRC)/$(THISAPP) # ifeq "$(ROOT)" "" TARGET = $(DIR_INFO)/$(THISAPP) - EXTRA_CONFIG = --prefix=/usr \ - --disable-profile --enable-add-ons \ - --enable-kernel=2.6.0 --libexecdir=/usr/lib/glibc + EXTRA_CONFIG = \ + --build=$(BUILDTARGET) \ + --prefix=/usr \ + --libexecdir=/usr/lib/glibc EXTRA_MAKE = EXTRA_INSTALL = else TARGET = $(DIR_INFO)/$(THISAPP)-tools - EXTRA_CONFIG = --prefix=/tools \ - --disable-profile --enable-add-ons \ - --enable-kernel=2.6.0 --with-binutils=/tools/bin \ - --without-gd --with-headers=/tools/include \ - --without-selinux + EXTRA_CONFIG = \ + --host=$(CROSSTARGET) \ + --build=$(BUILDTARGET) \ + --prefix=/tools \ + --with-headers=/tools/include \ + libc_cv_forced_unwind=yes \ + libc_cv_ctors_header=yes \ + libc_cv_c_cleanup=yes EXTRA_MAKE = EXTRA_INSTALL = endif -EXTRA_CONFIG += --build=$(BUILDTARGET) +# Enable some extra optimization for the glibc code. +CFLAGS = -O3 -DNDEBUG -fasynchronous-unwind-tables -fPIC -DPIC \ + -DNO_CTORS_DTORS_SECTIONS + +ifeq "$(MACHINE)" "i586" + CFLAGS += -march=i586 -mtune=generic -mno-tls-direct-seg-refs +endif ifeq "$(MACHINE_TYPE)" "arm" # Disable hardware FP for ARM. @@ -59,24 +70,30 @@ ifeq "$(MACHINE_TYPE)" "arm" --without-fp endif +# Add some general configuration flags +EXTRA_CONFIG += \ + --disable-profile \ + --enable-kernel=2.6.0 \ + --enable-add-ons \ + --without-selinux \ + --enable-experimental-malloc \ + --enable-bind-now + ############################################################################### # Top-level Rules ############################################################################### -objects = $(DL_FILE) \ - glibc-libidn-$(VER).tar.bz2 +objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -glibc-libidn-$(VER).tar.bz2 = $(DL_FROM)/glibc-libidn-$(VER).tar.bz2 -$(DL_FILE)_MD5 = 1fb29764a6a650a4d5b409dda227ac9f -glibc-libidn-$(VER).tar.bz2_MD5 = 8787868ba8962d9b125997ec2f25ac01 +$(DL_FILE)_MD5 = 450958ad3d3b5a432b356376904c96b0 # ARM needs glibc-ports ifeq "$(MACHINE_TYPE)" "arm" - objects += glibc-ports-$(VER).tar.bz2 - glibc-ports-$(VER).tar.bz2 = $(DL_FROM)/glibc-ports-$(VER).tar.bz2 - glibc-ports-$(VER).tar.bz2_MD5 = 183f6d46e8fa5e4b2aff240ab1586c2e + objects += glibc-ports-$(PORTS_VER).tar.bz2 + glibc-ports-$(PORTS_VER).tar.bz2 = $(DL_FROM)/glibc-ports-$(PORTS_VER).tar.bz2 + glibc-ports-$(PORTS_VER).tar.bz2_MD5 = cb01ab976180e98287cef5079e35359e endif install : $(TARGET) @@ -108,20 +125,126 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) $(DIR_SRC)/glibc-build && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) @mkdir $(DIR_SRC)/glibc-build + ifeq "$(MACHINE_TYPE)" "arm" - cd $(DIR_APP) && tar jxf $(DIR_DL)/glibc-ports-$(VER).tar.bz2 - cd $(DIR_APP) && mv -v glibc-ports-$(VER) ports + cd $(DIR_APP) && tar jxf $(DIR_DL)/glibc-ports-$(PORTS_VER).tar.bz2 + cd $(DIR_APP) && mv -v glibc-ports-$(PORTS_VER) ports - cd $(DIR_APP)/ports && patch -Np1 -i $(DIR_SRC)/src/patches/glibc-ports-avoid-using-asm-procinfo.patch - cd $(DIR_APP)/ports && patch -Np1 -i $(DIR_SRC)/src/patches/glibc-arm-dont-use-swp.patch - - # asm/page.h should not be included in sysdeps/unix/sysv/linux/arm/ioperm.c. - cd $(DIR_APP) && sed "/asm\/page.h/d" -i ports/sysdeps/unix/sysv/linux/arm/ioperm.c + # http://sourceware.org/bugzilla/show_bug.cgi?id=12354 + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc-cfi-entry-not-closed.patch endif + # Apply all patches. + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-aliasing.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-fedora.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-getlogin-r.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-localedata.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-recvmmsg.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh580498.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh582738.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh587360.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh593396.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh593686.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh601686.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh607010.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh607461.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh615090.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh615701.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh621959.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh623187.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh625893.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh630801.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh631011.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh641128.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh642584.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh643822.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh645672.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh646954.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh647448.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh652661.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh656014.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh656530.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh657572.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh661982.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh667974.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh676076.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh676591.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh681054.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh688720.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh688980.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh689471.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh692177.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh692838.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh694386.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh695595.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh695963.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh696472.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh697421.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh699724.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh700507.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh703480.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh703481.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh705465.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh711927.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh711987.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh712248.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh713134.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh714823.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh718057.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh726517.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh730379.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh731042.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh736346.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh737778.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh738665.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh738763.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh739184.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh739971.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh740506.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh740506-2.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh749188.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh750531.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh751750.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh752122.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh757888.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh766513.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh767146.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh767693.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh767693-2.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh767746.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh771342.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh782585.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh784402.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh785984.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh788959.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh788959-2.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh789189.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh789209.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh789238.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh789238-2.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh794817.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh794817-2.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh795498.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh797094-1.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh797094-2.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh804630.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh804689.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh808337.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh808545.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh809602.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh833716.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh837026.patch + + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc-resolv-stack_chk_fail.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc-remove-ctors-dtors-output-sections.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc-test-installation.pl-nss_test1.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc-test-installation.pl-libgcc_s.patch + + # Fixes: + # Makefile:235: *** mixed implicit and normal rules. Stop. + cd $(DIR_APP) && sed -i 's/ot \$$/ot:\n\ttouch $$@\n$$/' manual/Makefile + ifeq "$(ROOT)" "" - # This locale causes a loop on bash login - exclude it - cd $(DIR_APP) && sed -i '/vi_VN.TCVN/d' localedata/SUPPORTED ifeq "$(MACHINE_TYPE)" "arm" cd $(DIR_APP) && sed -i 's|libs -o|libs -L/usr/lib -Wl,-dynamic-linker=/lib/ld-linux.so.3 -o|' \ scripts/test-installation.pl @@ -130,21 +253,16 @@ else scripts/test-installation.pl endif endif - cd $(DIR_SRC)/glibc-build && CFLAGS="$(CFLAGS)" $(DIR_APP)/configure $(EXTRA_CONFIG) + + cd $(DIR_SRC)/glibc-build && \ + CFLAGS="$(CFLAGS) -fno-asynchronous-unwind-tables" \ + $(DIR_APP)/configure $(EXTRA_CONFIG) + cd $(DIR_SRC)/glibc-build && make PARALLELMFLAGS=$(MAKETUNING) \ + CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" + cd $(DIR_SRC)/glibc-build && make $(EXTRA_INSTALL) install ifeq "$(ROOT)" "" - touch /etc/ld.so.conf - cd $(DIR_SRC)/glibc-build && make $(MAKETUNING) $(EXTRA_MAKE) - cd $(DIR_SRC)/glibc-build && make $(EXTRA_INSTALL) install -else - -mkdir /tools/etc - touch /tools/etc/ld.so.conf - cd $(DIR_SRC)/glibc-build && make $(MAKETUNING) $(EXTRA_MAKE) - cd $(DIR_SRC)/glibc-build && make $(EXTRA_INSTALL) install -endif - # Creating the locales -ifeq "$(ROOT)" "" mkdir -p /usr/lib/locale cd $(DIR_SRC)/glibc-build && localedef -i en_US -f ISO-8859-1 en_US cd $(DIR_SRC)/glibc-build && localedef -i en_US -f UTF-8 en_US.utf8 diff --git a/lfs/gmp b/lfs/gmp index 5b5008150..cf5227671 100644 --- a/lfs/gmp +++ b/lfs/gmp @@ -24,7 +24,7 @@ include Config -VER = 4.2.4 +VER = 5.0.5 THISAPP = gmp-$(VER) DL_FILE = $(THISAPP).tar.bz2 @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = fc1e3b3a2a5038d4d74138d0b9cf8dbe +$(DL_FILE)_MD5 = 041487d25e9c230b0c42b106361055fe install : $(TARGET) diff --git a/lfs/splix b/lfs/gmp-compat similarity index 88% rename from lfs/splix rename to lfs/gmp-compat index c9e8e47e1..3d20e889a 100644 --- a/lfs/splix +++ b/lfs/gmp-compat @@ -24,17 +24,17 @@ include Config -VER = 2.0.0-rc2 +VER = 4.3.2 -THISAPP = splix-$(VER) +THISAPP = gmp-$(VER) DL_FILE = $(THISAPP).tar.bz2 DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) -PROG = splix -PAK_VER = 2 -DEPS = "cups" +ifeq "$(MACHINE)" "i586" + CONFIGURE_ARGS = ABI=32 +endif ############################################################################### # Top-level Rules @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 4381ccf9a38b08012dbdc3c0f28414fd +$(DL_FILE)_MD5 = dd60683d7057917e34630b4a787932e8 install : $(TARGET) @@ -54,9 +54,6 @@ download :$(patsubst %,$(DIR_DL)/%,$(objects)) md5 : $(subst %,%_MD5,$(objects)) -dist: - $(PAK) - ############################################################################### # Downloading, checking, md5sum ############################################################################### @@ -77,10 +74,10 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) -ifeq "$(MACHINE_TYPE)" "arm" - cd $(DIR_APP) && sed -e "s/ceill/ceil/g" -i src/*.cpp -endif - cd $(DIR_APP) && make DISABLE_JBIG=1 $(MAKETUNING) $(EXTRA_MAKE) - cd $(DIR_APP) && make install + cd $(DIR_APP) && $(CONFIGURE_ARGS) ./configure --prefix=/usr \ + --enable-cxx --enable-mpbsd --disable-nls + cd $(DIR_APP) && make $(MAKETUNING) + cd $(DIR_APP) && install -m 644 .libs/libgmp.so.3.5.2 /usr/lib + ln -svf libgmp.so.3.5.2 /usr/lib/libgmp.so.3 @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/gnupg b/lfs/gnupg index c596a5fe4..5e5ead919 100644 --- a/lfs/gnupg +++ b/lfs/gnupg @@ -24,7 +24,7 @@ include Config -VER = 1.4.5 +VER = 1.4.12 THISAPP = gnupg-$(VER) DL_FILE = $(THISAPP).tar.bz2 @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 811525965b4c0987e6418a7729a6444d +$(DL_FILE)_MD5 = ce3742e5c7912559cab7894ad8ba7f6b install : $(TARGET) diff --git a/lfs/grep b/lfs/grep index 4b3e1e1bb..e9b0b18d4 100644 --- a/lfs/grep +++ b/lfs/grep @@ -24,10 +24,10 @@ include Config -VER = 2.5.1a +VER = 2.14 THISAPP = grep-$(VER) -DL_FILE = $(THISAPP).tar.bz2 +DL_FILE = $(THISAPP).tar.xz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) @@ -41,7 +41,7 @@ ifeq "$(ROOT)" "" else TARGET = $(DIR_INFO)/$(THISAPP)-tools EXTRA_CONFIG = --prefix=/tools --disable-nls \ - --disable-perl-regexp + --disable-perl-regexp --without-included-regex EXTRA_MAKE = EXTRA_INSTALL = endif @@ -54,7 +54,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 52202fe462770fa6be1bb667bd6cf30c +$(DL_FILE)_MD5 = d4a3f03849d1e17ce56ab76aa5a24cab install : $(TARGET) @@ -83,11 +83,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) -ifeq "$(ROOT)" "" - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-redhat_fixes-2.patch - cd $(DIR_APP) && chmod +x tests/fmbtest.sh -endif + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && ./configure $(EXTRA_CONFIG) cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP) && make $(EXTRA_INSTALL) install diff --git a/lfs/grub b/lfs/grub index ad6e304aa..56935f0f7 100644 --- a/lfs/grub +++ b/lfs/grub @@ -32,7 +32,8 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) SUP_ARCH = i586 -CFLAGS = +CFLAGS = -O0 -fno-reorder-functions -fno-strict-aliasing -Wall -Werror \ + -Wno-shadow -Wno-unused -Wno-pointer-sign CXXFLAGS = ############################################################################### @@ -73,54 +74,15 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97-disk_geometry-1.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.90-append.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.90-symlinkmenulst.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.91-splashimagehelp.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.93-configfile.patch - cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/grub-0.93-endedit.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.93-graphics-bootterm.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.93-special-device-names.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.94-i2o.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.95-graphics.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.95-hiddenmenu-tweak.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.95-md.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.95-md-rework.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.95-md-mbr.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.95-moreraid.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.95-nonmbr.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.95-odirect.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.95-recheck-bad.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.95-staticcurses.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.95-xpmjunk.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97-cmdline-size.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97-datadir.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97-dmraid.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97-dmraid-partition-names.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97-install.in.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97-mactel-kbd.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97-mpath.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97-nxstack.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97-nx-multiinstall.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97-once.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.95-splash-error-term.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.94-installcopyonly.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97-prototypes.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97-stderr.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97-bz429187-cciss.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97-dmraid-recheck-bad.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97-mdadm-path.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97_grub-install_virtio.patch - # XXX Does not work anymore - #cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-0.97_grub-install_virtio.patch - - cd $(DIR_APP) && perl -pi -e 's,/usr/lib/grub/i386-pc,/usr/share/grub/i386-pc,' docs/grub.texi - cd $(DIR_APP) && sed -i 's/AM_INIT_AUTOMAKE/&\nAM_PROG_AS/' configure.ac - - cd $(DIR_APP) && aclocal && autoheader && autoconf && automake --add-missing - cd $(DIR_APP) && CFLAGS="-Os -s -fno-strict-aliasing" ./configure --prefix=/usr + # Applying patches. + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-fedora-18.patch + cd $(DIR_APP) && autoreconf + cd $(DIR_APP) && autoconf + # Build. + cd $(DIR_APP) && CFLAGS="$(CFLAGS)" ./configure --prefix=/usr \ + --disable-auto-linux-mem-opt cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install diff --git a/lfs/hplip b/lfs/hplip index 1f8658637..cfcdeef54 100644 --- a/lfs/hplip +++ b/lfs/hplip @@ -24,7 +24,7 @@ include Config -VER = 2.7.10 +VER = 3.12.6 THISAPP = hplip-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = hplip -PAK_VER = 1 +PAK_VER = 2 DEPS = "" @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = eafb815ca4b4bb5a2f35a76ee3c2dc72 +$(DL_FILE)_MD5 = 5303938e8630775ea6fb383af85775e5 install : $(TARGET) diff --git a/lfs/hwdata b/lfs/hwdata index 6716a9569..6804849a8 100644 --- a/lfs/hwdata +++ b/lfs/hwdata @@ -27,11 +27,7 @@ include Config VER = ipfire THISAPP = hwdata -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif +TARGET = $(DIR_INFO)/$(THISAPP) ############################################################################### # Top-level Rules @@ -53,11 +49,6 @@ md5 : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) -ifeq "$(LFS_PASS)" "install" - -mkdir -p -m 755 /install/initrd/usr/share/hwdata - install -m 644 $(DIR_SRC)/src/hwdata/*.ids /install/initrd/usr/share/hwdata -else -mkdir -p -m 755 /usr/share/hwdata install -m 644 $(DIR_SRC)/src/hwdata/*.ids /usr/share/hwdata -endif @$(POSTBUILD) diff --git a/lfs/icecc b/lfs/icecc index d661b193b..9c9651cde 100644 --- a/lfs/icecc +++ b/lfs/icecc @@ -24,7 +24,7 @@ include Config -VER = 0.9.6 +VER = 0.9.7 THISAPP = icecc-$(VER) DL_FILE = $(THISAPP).tar.bz2 @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = icecc -PAK_VER = 2 +PAK_VER = 3 DEPS = "" @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = c6dacb3f28eade45f603a99245cde4fd +$(DL_FILE)_MD5 = c06900c2f4011428d0d48826a04f74fb install : $(TARGET) @@ -78,6 +78,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/icecream-rename-scheduler.patch + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/icecream-0.9.7-platform-arm.patch cd $(DIR_APP) && ./configure \ --prefix=/opt/icecream cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) diff --git a/lfs/imspector b/lfs/imspector index 092211bc8..51654c5ad 100644 --- a/lfs/imspector +++ b/lfs/imspector @@ -77,6 +77,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_SRC)/imspector && sed -e "s/^SSL_LIBS.*/& -lcrypto/" -i Makefile cd $(DIR_SRC)/imspector && make install -mv /usr/etc/imspector /etc/imspector -mv /etc/imspector/imspector /etc/imspector diff --git a/lfs/inetutils b/lfs/inetutils index 03cf5deab..87a137eb1 100644 --- a/lfs/inetutils +++ b/lfs/inetutils @@ -72,6 +72,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-gcc4_fixes-3.patch cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-daemon_fixes-1.patch + cd $(DIR_APP) && sed -i '/#include/a #include ' libicmp/icmp_timestamp.c cd $(DIR_APP) && ./configure --prefix=/usr --libexecdir=/usr/sbin \ --sysconfdir=/etc --localstatedir=/var \ --mandir=/usr/share/man --infodir=/usr/share/info \ diff --git a/lfs/iproute2 b/lfs/iproute2 index 50ccf40df..42a8184d6 100644 --- a/lfs/iproute2 +++ b/lfs/iproute2 @@ -24,10 +24,10 @@ include Config -VER = 2.6.16-060323 +VER = 3.5.1 THISAPP = iproute2-$(VER) -DL_FILE = $(THISAPP).tar.gz +DL_FILE = $(THISAPP).tar.xz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) @@ -35,13 +35,12 @@ TARGET = $(DIR_INFO)/$(THISAPP) ############################################################################### # Top-level Rules ############################################################################### -objects = $(DL_FILE) htb3.6-020525.tgz + +objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -htb3.6-020525.tgz = $(DL_FROM)/htb3.6-020525.tgz -$(DL_FILE)_MD5 = f31d4516b35bbfeaa72c762f5959e97c -htb3.6-020525.tgz_MD5 = 3064fd8642ce6a7e155a29c5205b99d4 +$(DL_FILE)_MD5 = d4425b44edd5eacd6099e672e4baacbf install : $(TARGET) @@ -70,9 +69,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) -# cd $(DIR_APP) && tar xfz $(DIR_DL)/htb3.6-020525.tgz *.diff -# cd $(DIR_APP) && for i in htb3*tc.diff ; do patch -Np1 < $$i; done + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && make $(MAKETUNING) SBINDIR=/sbin cd $(DIR_APP) && make SBINDIR=/sbin install cd $(DIR_APP) && mv -v /sbin/arpd /usr/sbin diff --git a/lfs/kbd b/lfs/kbd index 72e509f0d..1c9924279 100644 --- a/lfs/kbd +++ b/lfs/kbd @@ -30,11 +30,7 @@ THISAPP = kbd-$(VER) DL_FILE = $(THISAPP).tar.bz2 DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif +TARGET = $(DIR_INFO)/$(THISAPP) ############################################################################### # Top-level Rules @@ -78,21 +74,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-more-programs-1.patch cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-backspace-1.patch cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-gcc4_fixes-1.patch -ifeq "$(LFS_PASS)" "install" - cd $(DIR_APP) && CFLAGS="-Os -fomit-frame-pointer" ./configure --disable-nls - cd $(DIR_APP)/src && make CFLAGS="-Os -fomit-frame-pointer" DATA_DIR=/lib/kbd BINDIR=/bin setfont kbd_mode dumpkeys loadkeys loadunimap showconsolefont - cd $(DIR_APP)/src && install -m 0755 setfont loadunimap kbd_mode dumpkeys loadkeys showconsolefont unicode_start unicode_stop /install/initrd/bin - mkdir -p /install/initrd/lib/kbd/consolefonts - cd $(DIR_APP) && install -m 0644 data/consolefonts/lat0-16.psfu /install/initrd/lib/kbd/consolefonts - cd $(DIR_APP) && install -m 0644 data/consolefonts/lat1-16.psfu /install/initrd/lib/kbd/consolefonts - cd $(DIR_APP) && install -m 0644 data/consolefonts/lat2-16.psfu /install/initrd/lib/kbd/consolefonts - cd $(DIR_APP) && install -m 0644 data/consolefonts/lat5-16.psfu /install/initrd/lib/kbd/consolefonts - cd $(DIR_APP) && install -m 0644 data/consolefonts/iso07u-16.psfu /install/initrd/lib/kbd/consolefonts -else cd $(DIR_APP) && ./configure --datadir=/lib/kbd --disable-nls cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install mv -v /usr/bin/{kbd_mode,openvt,setfont} /bin -endif @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/kudzu b/lfs/kudzu index f66c3252f..bc5ed020b 100644 --- a/lfs/kudzu +++ b/lfs/kudzu @@ -30,11 +30,7 @@ THISAPP = kudzu-$(VER) DL_FILE = kudzu-$(VER).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif +TARGET = $(DIR_INFO)/$(THISAPP) ############################################################################### # Top-level Rules @@ -75,18 +71,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kudzu-usbnet.patch -ifeq "$(LFS_PASS)" "install" - cd $(DIR_APP) && patch -N < $(DIR_SRC)/src/patches/kudzu-link-lintl.diff - cd $(DIR_APP) && make RPM_OPT_FLAGS="-O2 -I/opt/$(MACHINE)-uClibc/include" \ - ARCH=$(MACHINE) - cd $(DIR_APP) && install -m 0755 kudzu /install/initrd/bin/kudzu - #cd $(DIR_APP) && install -m 0644 libkudzu.a /install/initrd/lib - #cd $(DIR_APP) && install -m 0644 libkudzu_loader.a /install/initrd/lib -else rm -rf /usr/sbin/kudzu cd $(DIR_APP) && ARCH=$(MACHINE) RPM_OPT_FLAGS="$(CFLAGS)" make cd $(DIR_APP) && ARCH=$(MACHINE) RPM_OPT_FLAGS="$(CFLAGS)" make install cd $(DIR_APP) && ARCH=$(MACHINE) RPM_OPT_FLAGS="$(CFLAGS)" make install-program -endif @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/hddtemp b/lfs/libexif similarity index 88% rename from lfs/hddtemp rename to lfs/libexif index 9533f67f8..e39508d86 100644 --- a/lfs/hddtemp +++ b/lfs/libexif @@ -24,13 +24,17 @@ include Config -VER = 0.3-beta14 +VER = 0.6.21 -THISAPP = hddtemp-$(VER) +THISAPP = libexif-$(VER) DL_FILE = $(THISAPP).tar.bz2 DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) +PROG = libexif +PAK_VER = 1 + +DEPS = "" ############################################################################### # Top-level Rules @@ -40,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = bbf8be4539495e18bec54af77511a680 +$(DL_FILE)_MD5 = 27339b89850f28c8f1c237f233e05b27 install : $(TARGET) @@ -50,6 +54,9 @@ download :$(patsubst %,$(DIR_DL)/%,$(objects)) md5 : $(subst %,%_MD5,$(objects)) +dist: + @$(PAK) + ############################################################################### # Downloading, checking, md5sum ############################################################################### @@ -69,8 +76,9 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=/usr --with-db-path=/etc/hddtemp.db - cd $(DIR_APP) && make $(MAKETUNING) && make install + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && ./configure --prefix=/usr --disable-static + cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) + cd $(DIR_APP) && make install @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/centerim b/lfs/libffi similarity index 93% rename from lfs/centerim rename to lfs/libffi index 8e874a7a0..0e94b3177 100644 --- a/lfs/centerim +++ b/lfs/libffi @@ -24,17 +24,13 @@ include Config -VER = 4.22.1 +VER = 3.0.11 -THISAPP = centerim-$(VER) +THISAPP = libffi-$(VER) DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) -PROG = centerim -PAK_VER = 1 - -DEPS = "" ############################################################################### # Top-level Rules @@ -44,8 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = d128b54e3cc04a6ee651c51682a497a9 - +$(DL_FILE)_MD5 = f69b9693227d976835b4857b1ba7d0e3 install : $(TARGET) check : $(patsubst %,$(DIR_CHK)/%,$(objects)) @@ -55,7 +50,7 @@ download :$(patsubst %,$(DIR_DL)/%,$(objects)) md5 : $(subst %,%_MD5,$(objects)) dist: - $(PAK) + @$(PAK) ############################################################################### # Downloading, checking, md5sum @@ -77,7 +72,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=/usr --disable-nls + cd $(DIR_APP) && ./configure --prefix=/usr cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install @rm -rf $(DIR_APP) diff --git a/lfs/libmad b/lfs/libmad index 548374da0..ea0491e6d 100644 --- a/lfs/libmad +++ b/lfs/libmad @@ -77,6 +77,10 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/libmad-0.15.1b-cflags.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/libmad-0.15.1b-cflags-O2.patch + cd $(DIR_APP) && autoconf + cd $(DIR_APP) && ./configure --prefix=/usr cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP) && make install diff --git a/lfs/libnl b/lfs/libnl index d1747752e..ea557d913 100644 --- a/lfs/libnl +++ b/lfs/libnl @@ -73,6 +73,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/libnl-1.1-ULONG_MAX.patch cd $(DIR_APP) && ln -s /usr/src/linux/include/linux/if_vlan.h \ include/linux/if_vlan.h cd $(DIR_APP) && ln -s /usr/src/linux/include/linux/netfilter/nf_conntrack_common.h \ diff --git a/lfs/libogg b/lfs/libogg index bd9c02256..41a1c7f0c 100644 --- a/lfs/libogg +++ b/lfs/libogg @@ -24,15 +24,15 @@ include Config -VER = 1.1.4 +VER = 1.3.0 THISAPP = libogg-$(VER) -DL_FILE = $(THISAPP).tar.gz +DL_FILE = $(THISAPP).tar.xz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = libogg -PAK_VER = 2 +PAK_VER = 3 DEPS = "" @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 10200ec22543841d9d1c23e0aed4e5e9 +$(DL_FILE)_MD5 = 84a35715170f2cd4c77a4448772b95d5 install : $(TARGET) @@ -76,7 +76,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && ./configure --prefix=/usr cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP) && make install diff --git a/lfs/libsafe b/lfs/libsafe deleted file mode 100644 index 24c398c61..000000000 --- a/lfs/libsafe +++ /dev/null @@ -1,78 +0,0 @@ -############################################################################### -# # -# IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # -# # -# This program is free software: you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation, either version 3 of the License, or # -# (at your option) any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program. If not, see . # -# # -############################################################################### - -############################################################################### -# Definitions -############################################################################### - -include Config - -VER = 2.0-16 - -THISAPP = libsafe_$(VER) -DL_FILE = $(THISAPP).orig.tar.gz -DL_FROM = $(URL_IPFIRE) -DIR_APP = $(DIR_SRC)/libsafe-$(VER) -TARGET = $(DIR_INFO)/$(THISAPP) - -############################################################################### -# Top-level Rules -############################################################################### - -objects = $(DL_FILE) - -$(DL_FILE) = $(DL_FROM)/$(DL_FILE) - -$(DL_FILE)_MD5 = 6b7b6e6df84d4afb469ccc66d04fc24d - -install : $(TARGET) - -check : $(patsubst %,$(DIR_CHK)/%,$(objects)) - -download :$(patsubst %,$(DIR_DL)/%,$(objects)) - -md5 : $(subst %,%_MD5,$(objects)) - -############################################################################### -# Downloading, checking, md5sum -############################################################################### - -$(patsubst %,$(DIR_CHK)/%,$(objects)) : - @$(CHECK) - -$(patsubst %,$(DIR_DL)/%,$(objects)) : - @$(LOAD) - -$(subst %,%_MD5,$(objects)) : - @$(MD5) - -############################################################################### -# Installation Details -############################################################################### - -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) - @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/libsafe-functioncaching.diff - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/libsafe-alpha.diff - cd $(DIR_APP) && make libsafe $(MAKETUNING) - cd $(DIR_APP) && yes | make install - @rm -rf $(DIR_APP) - @$(POSTBUILD) diff --git a/lfs/libsigc++ b/lfs/libsigc++ index 3635c6ee9..0d90f4c77 100644 --- a/lfs/libsigc++ +++ b/lfs/libsigc++ @@ -24,7 +24,7 @@ include Config -VER = 2.0.17 +VER = 2.0.18 THISAPP = libsigc++-$(VER) DL_FILE = $(THISAPP).tar.bz2 @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = fde0ee69e3125e982746d9fe005763e1 +$(DL_FILE)_MD5 = ddebf5aafc8525d10366a8724abc9f28 install : $(TARGET) @@ -70,6 +70,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/libsigc++-gcc43.patch cd $(DIR_APP) && ./configure --prefix=/usr cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install diff --git a/lfs/libsolv b/lfs/libsolv index b602095ca..7651be750 100644 --- a/lfs/libsolv +++ b/lfs/libsolv @@ -24,7 +24,7 @@ include Config -VER = 0.0.0-0db9d7f +VER = 0.0.0-c02d759 THISAPP = libsolv-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -34,7 +34,7 @@ TARGET = $(DIR_INFO)/$(THISAPP) PROG = libsolv DEPS = "" -PAK_VER = 1 +PAK_VER = 2 ############################################################################### # Top-level Rules @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = ba95c404d807bc71297c508a7127a3d9 +$(DL_FILE)_MD5 = a8ba49ca49c309d61836fe78b0e0f83a install : $(TARGET) @@ -86,26 +86,15 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && sed "/examples/d" -i CMakeLists.txt cd $(DIR_APP) && sed "/tools/d" -i CMakeLists.txt - # Make sure that libsatsolverext is linked properly to all needed - # libraries. - cd $(DIR_APP) && echo "TARGET_LINK_LIBRARIES(libsolvext libsolv \$${EXPAT_LIBRARY} \$${ZLIB_LIBRARY})" \ - >> ext/CMakeLists.txt - - # Remove the RPM stuff when we build with -DFEDORA=1 because we - # do not support RPM. - cd $(DIR_APP) && sed -e "s/DEBIAN/FEDORA/g" -i ext/CMakeLists.txt - - # Our version of glibc has no __qsort_r - cd $(DIR_APP) && echo "#define USE_OWN_QSORT" >> src/util.h - cd $(DIR_APP) && mkdir build - cd $(DIR_APP)/build && cmake .. -DFEDORA=1 \ + cd $(DIR_APP)/build && cmake .. \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_SKIP_RPATH=1 + -DCMAKE_SKIP_RPATH=1 \ + -DENABLE_PERL=0 \ + -DENABLE_PYTHON=0 \ + -DENABLE_RUBY=0 cd $(DIR_APP)/build && make $(PARALELLISMFLAGS) - cd $(DIR_APP)/build && make install - @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/libvorbis b/lfs/libvorbis index 3b6d0f9d2..8213e3991 100644 --- a/lfs/libvorbis +++ b/lfs/libvorbis @@ -24,15 +24,15 @@ include Config -VER = 1.2.3 +VER = 1.3.3 THISAPP = libvorbis-$(VER) -DL_FILE = $(THISAPP).tar.bz2 +DL_FILE = $(THISAPP).tar.xz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = libvorbis -PAK_VER = 3 +PAK_VER = 4 DEPS = "libogg" @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 67beb237faf97d74782ec7071756b2b6 +$(DL_FILE)_MD5 = 71b649d3e08e63ece16649df906ce8b9 install : $(TARGET) @@ -76,11 +76,9 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && ./configure --prefix=/usr cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) - #cd $(DIR_APP) && sed -i.bak -e 's/-mno-ieee-fp//' lib/Makefile cd $(DIR_APP) && make install - cd $(DIR_APP) && install -v -m644 doc/Vorbis* /usr/share/doc/libvorbis-1.2.3 @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/linux2 b/lfs/linux2 index f6df2b4b6..7f8b76b3e 100644 --- a/lfs/linux2 +++ b/lfs/linux2 @@ -74,19 +74,19 @@ objects =$(DL_FILE) \ netfilter-layer7-v2.22.tar.gz \ patch-2.6.16-nath323-1.3.bz2 \ reiser4-for-2.6.32.patch.bz2 \ - xen-patches-2.6.32-2f.tar.bz2 + xen-patches-2.6.32-2g.tar.bz2 $(DL_FILE) = $(URL_IPFIRE)/$(DL_FILE) netfilter-layer7-v2.22.tar.gz = $(URL_IPFIRE)/netfilter-layer7-v2.22.tar.gz patch-2.6.16-nath323-1.3.bz2 = $(URL_IPFIRE)/patch-2.6.16-nath323-1.3.bz2 reiser4-for-2.6.32.patch.bz2 = $(URL_IPFIRE)/reiser4-for-2.6.32.patch.bz2 -xen-patches-2.6.32-2f.tar.bz2 = $(URL_IPFIRE)/xen-patches-2.6.32-2f.tar.bz2 +xen-patches-2.6.32-2g.tar.bz2 = $(URL_IPFIRE)/xen-patches-2.6.32-2g.tar.bz2 $(DL_FILE)_MD5 = 69c68c4a8eb0f04b051a7dbcff16f6d0 netfilter-layer7-v2.22.tar.gz_MD5 = 98dff8a3d5a31885b73341633f69501f patch-2.6.16-nath323-1.3.bz2_MD5 = f926409ff703a307baf54b57ab75d138 reiser4-for-2.6.32.patch.bz2_MD5 = 3246397973d9271eb8e6d7c97c5d2d91 -xen-patches-2.6.32-2f.tar.bz2_MD5 = b59d6f89e11accb9d40354418e13f31b +xen-patches-2.6.32-2g.tar.bz2_MD5 = d259a847c9aa73cd6e5c3605d9657d66 install : $(TARGET) @@ -124,7 +124,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) ifeq "$(KCFG)" "-xen" # Apply gentoo Xen patches mkdir -p $(DIR_SRC)/xen-patches - cd $(DIR_SRC)/xen-patches && tar jxf $(DIR_DL)/xen-patches-2.6.32-2f.tar.bz2 + cd $(DIR_SRC)/xen-patches && tar jxf $(DIR_DL)/xen-patches-2.6.32-2g.tar.bz2 for x in `ls -1 $(DIR_SRC)/xen-patches/*.patch1`; do \ echo "*********** [Patch: $$x]"; \ diff --git a/lfs/m4 b/lfs/m4 index df4b6a947..462022195 100644 --- a/lfs/m4 +++ b/lfs/m4 @@ -36,13 +36,11 @@ DIR_APP = $(DIR_SRC)/$(THISAPP) ifeq "$(ROOT)" "" TARGET = $(DIR_INFO)/$(THISAPP) EXTRA_CONFIG = --prefix=/usr --disable-nls - EXTRA_LDFLAGS = EXTRA_MAKE = EXTRA_INSTALL = else TARGET = $(DIR_INFO)/$(THISAPP)-tools EXTRA_CONFIG = --prefix=/tools --disable-nls - EXTRA_LDFLAGS = -static EXTRA_MAKE = EXTRA_INSTALL = endif @@ -85,7 +83,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && LDFLAGS="$(EXTRA_LDFLAGS)" ./configure $(EXTRA_CONFIG) + cd $(DIR_APP) && ./configure $(EXTRA_CONFIG) cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP) && make $(EXTRA_INSTALL) install @rm -rf $(DIR_APP) diff --git a/lfs/make b/lfs/make index 13968fb50..5650230f9 100644 --- a/lfs/make +++ b/lfs/make @@ -43,7 +43,7 @@ ifeq "$(ROOT)" "" EXTRA_MAKE = EXTRA_INSTALL = else - TARGET = $(DIR_INFO)/$(THISAPP)-tools-pass$(PASS) + TARGET = $(DIR_INFO)/$(THISAPP)-tools EXTRA_CONFIG = --prefix=/tools --disable-nls EXTRA_MAKE = EXTRA_INSTALL = diff --git a/lfs/minidlna b/lfs/minidlna new file mode 100644 index 000000000..47fe270bd --- /dev/null +++ b/lfs/minidlna @@ -0,0 +1,87 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +# # +############################################################################### + +############################################################################### +# Definitions +############################################################################### + +include Config + +VER = 1.0.25 + +THISAPP = minidlna-$(VER) +DL_FILE = minidlna_$(VER)_src.tar.gz +DL_FROM = $(URL_IPFIRE) +DIR_APP = $(DIR_SRC)/$(THISAPP) +TARGET = $(DIR_INFO)/$(THISAPP) +PROG = minidlna +PAK_VER = 1 + +DEPS = "ffmpeg flac libexif libid3tag libogg" + +############################################################################### +# Top-level Rules +############################################################################### + +objects = $(DL_FILE) + +$(DL_FILE) = $(DL_FROM)/$(DL_FILE) + +$(DL_FILE)_MD5 = d966256baf2f9b068b9de871ab5dade5 + +install : $(TARGET) + +check : $(patsubst %,$(DIR_CHK)/%,$(objects)) + +download :$(patsubst %,$(DIR_DL)/%,$(objects)) + +md5 : $(subst %,%_MD5,$(objects)) + +dist: + @$(PAK) + +############################################################################### +# Downloading, checking, md5sum +############################################################################### + +$(patsubst %,$(DIR_CHK)/%,$(objects)) : + @$(CHECK) + +$(patsubst %,$(DIR_DL)/%,$(objects)) : + @$(LOAD) + +$(subst %,%_MD5,$(objects)) : + @$(MD5) + +############################################################################### +# Installation Details +############################################################################### + +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) + @$(PREBUILD) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && sed -i '/include/a #include /' metadata.c + cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) + cd $(DIR_APP) && make install + + # Install configuration. + install -m 644 $(DIR_SRC)/config/minidlna/minidlna.conf /etc + @rm -rf $(DIR_APP) + @$(POSTBUILD) diff --git a/lfs/miniupnpd b/lfs/miniupnpd index c7ba93773..7129ed58a 100644 --- a/lfs/miniupnpd +++ b/lfs/miniupnpd @@ -24,7 +24,7 @@ include Config -VER = 1.4 +VER = 1.7 THISAPP = miniupnpd-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -42,7 +42,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = ffa33d4ed8732c662bdb7d511e86db76 +$(DL_FILE)_MD5 = 5af9e8332d34a7b490d0d2ed3e674196 install : $(TARGET) @@ -75,11 +75,8 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/miniupnpd-iptcrdr.patch - cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/miniupnpd-1.4_use_XT_ALIGN.patch cd $(DIR_APP) && make -f Makefile.linux \ CFLAGS="$(CFLAGS) -DIPTABLES_143 -I/usr/src/linux/include" - cd $(DIR_APP) && install -m 755 miniupnpd /usr/sbin -mkdir -pv /etc/miniupnpd cp -vf $(DIR_SRC)/config/miniupnpd/miniupnpd.conf /etc/miniupnpd/miniupnpd.conf diff --git a/lfs/misc-progs b/lfs/misc-progs index e59b30599..6902ccac1 100644 --- a/lfs/misc-progs +++ b/lfs/misc-progs @@ -28,11 +28,7 @@ VER = ipfire THISAPP = misc-progs DIR_APP = $(DIR_SRC)/$(THISAPP) -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif +TARGET = $(DIR_INFO)/$(THISAPP) ############################################################################### # Top-level Rules @@ -53,10 +49,6 @@ md5 : $(TARGET) : @$(PREBUILD) @rm -rf $(DIR_APP) $(DIR_SRC)/install+setup && cp -R $(DIR_SRC)/src/misc-progs/ $(DIR_SRC) -ifeq "$(LFS_PASS)" "install" - cd $(DIR_APP) && make CFLAGS="-Os -fomit-frame-pointer" iowrap - cd $(DIR_APP) && install -m 0755 iowrap /install/initrd/bin -else cp -R $(DIR_SRC)/src/install+setup/ $(DIR_SRC) for i in $(DIR_SRC)/langs/*/install/lang_*.c ; do \ cp $$i $(DIR_SRC)/install+setup/libsmooth; \ @@ -67,6 +59,5 @@ else -DSLOGAN='\"$(SLOGAN)\"' -DCONFIG_ROOT='\"$(CONFIG_ROOT)\"'" cd $(DIR_APP) && make CFLAGS="$(CFLAGS) -Wall -DCONFIG_ROOT='\"$(CONFIG_ROOT)\"' -DSNAME='\"$(SNAME)\"'" cd $(DIR_APP) && make install -endif @rm -rf $(DIR_APP) $(DIR_SRC)/install+setup @$(POSTBUILD) diff --git a/lfs/iptstate b/lfs/mpfr similarity index 93% rename from lfs/iptstate rename to lfs/mpfr index ee503678e..de5e006dc 100644 --- a/lfs/iptstate +++ b/lfs/mpfr @@ -24,9 +24,9 @@ include Config -VER = 2.1 +VER = 2.4.2 -THISAPP = iptstate-$(VER) +THISAPP = mpfr-$(VER) DL_FILE = $(THISAPP).tar.bz2 DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = c99e19c66645689b44a871428e003ec7 +$(DL_FILE)_MD5 = 89e59fe665e2b3ad44a6789f40b059a0 install : $(TARGET) @@ -70,6 +70,8 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && $(CONFIGURE_ARGS) ./configure --prefix=/usr \ + --enable-thread-safe --disable-nls cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install @rm -rf $(DIR_APP) diff --git a/lfs/nasm b/lfs/nasm index 9d5ad0820..f6aeac7a8 100644 --- a/lfs/nasm +++ b/lfs/nasm @@ -24,10 +24,10 @@ include Config -VER = 0.98.39 +VER = 2.10.03 THISAPP = nasm-$(VER) -DL_FILE = $(THISAPP).tar.bz2 +DL_FILE = $(THISAPP).tar.xz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 2032ad44c7359f7a9a166a40a633e772 +$(DL_FILE)_MD5 = a5d0ed070476a7c5b4f0893dc4a4ea4b install : $(TARGET) @@ -69,8 +69,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-security_fix-1.patch + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && ./configure --prefix=/usr --disable-nls cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install diff --git a/lfs/ncurses b/lfs/ncurses index 0b7bbb786..1c0fb0427 100644 --- a/lfs/ncurses +++ b/lfs/ncurses @@ -24,7 +24,7 @@ include Config -VER = 5.5 +VER = 5.9 THISAPP = ncurses-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -35,20 +35,25 @@ DIR_APP = $(DIR_SRC)/$(THISAPP) # ifeq "$(ROOT)" "" TARGET = $(DIR_INFO)/$(THISAPP) - EXTRA_CONFIG = --prefix=/usr --with-shared \ - --without-debug --enable-widec --disable-nls - EXTRA_MAKE = - EXTRA_INSTALL = + PREFIX = /usr else TARGET = $(DIR_INFO)/$(THISAPP)-tools - EXTRA_CONFIG = --prefix=/tools --with-shared \ - --without-debug --without-ada --enable-overwrite \ - --disable-nls - EXTRA_MAKE = - EXTRA_INSTALL = + PREFIX = /tools endif -EXTRA_CONFIG += --build=$(BUILDTARGET) +EXTRA_CONFIG += \ + --prefix=$(PREFIX) \ + --with-shared \ + --without-debug \ + --without-ada \ + --with-ospeed=unsigned \ + --with-chtype=long \ + --enable-hard-tabs \ + --enable-xmc-glitch \ + --enable-colorfgbg \ + --enable-overwrite \ + --with-termlib=tinfo \ + --disable-nls ############################################################################### # Top-level Rules @@ -58,7 +63,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = e73c1ac10b4bfc46db43b2ddfd6244ef +$(DL_FILE)_MD5 = 8cb9c412e5f2d96bc6f459aa8c6282a1 install : $(TARGET) @@ -88,25 +93,35 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/ncurses-5.5-fixes-1.patch - cd $(DIR_APP) && ./configure $(EXTRA_CONFIG) - cd $(DIR_APP) && make $(EXTRA_MAKE) #$(MAKETUNING) # Causes an error! - cd $(DIR_APP) && make $(EXTRA_INSTALL) install -ifeq "$(ROOT)" "" - chmod -v 755 /usr/lib/*.5.5 - chmod -v 644 /usr/lib/libncurses++w.a - mv -v /usr/lib/libncursesw.so.5* /lib - ln -sfv ../../lib/libncursesw.so.5 /usr/lib/libncursesw.so - cd $(DIR_APP) && for lib in curses ncurses form panel menu ; do \ - rm -vf /usr/lib/lib$${lib}.so ; \ - echo "INPUT(-l$${lib}w)" >/usr/lib/lib$${lib}.so ; \ - ln -sfv lib$${lib}w.a /usr/lib/lib$${lib}.a ; \ + cd $(DIR_APP) && mkdir -pv narrowc widec + + # Build narrowc version. + cd $(DIR_APP)/narrowc && ln -svf ../configure . + cd $(DIR_APP)/narrowc && ./configure $(EXTRA_CONFIG) --with-ticlib + cd $(DIR_APP)/narrowc && make libs + cd $(DIR_APP)/narrowc && make -C progs + + # Build widec version. + cd $(DIR_APP)/widec && ln -svf ../configure . + cd $(DIR_APP)/widec && ./configure $(EXTRA_CONFIG) \ + --enable-widec --without-progs + cd $(DIR_APP)/widec && make libs + + # Install everything. + cd $(DIR_APP) && make -C narrowc install.{libs,progs,data} + rm -vf $(PREFIX)/lib/libtinfo.* + cd $(DIR_APP) && make -C widec install.{libs,includes,man} + + # don't require -ltinfo when linking with --no-add-needed + for l in $(PREFIX)/lib/libncurses{,w}.so; do \ + soname=$$(basename $$(readlink $$l)); \ + rm -f $$l; \ + echo "INPUT($$soname -ltinfo)" > $$l; \ done - ln -sfv libncurses++w.a /usr/lib/libncurses++.a4 - echo "INPUT(-lncursesw)" >/usr/lib/libcursesw.so - ln -sfv libncurses.so /usr/lib/libcurses.so - ln -sfv libncursesw.a /usr/lib/libcursesw.a - ln -sfv libncurses.a /usr/lib/libcurses.a -endif + + rm -vf $(PREFIX)/lib/libcurses{,w}.so + echo "INPUT(-lncurses)" > $(PREFIX)/lib/libcurses.so + echo "INPUT(-lncursesw)" > $(PREFIX)/lib/libcursesw.so + echo "INPUT(-ltinfo)" > $(PREFIX)/lib/libtermcap.so @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/netpbm b/lfs/netpbm index 7ee4a196b..5af5e47c7 100644 --- a/lfs/netpbm +++ b/lfs/netpbm @@ -77,6 +77,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP)/converter && patch -Np1 < $(DIR_SRC)/src/patches/netpbm-10.26.46-getline.patch cp $(DIR_SRC)/config/netpbm/Makefile.config $(DIR_APP) cd $(DIR_APP) && make cd $(DIR_APP) && make package PKGDIR=/usr/local/netpbm diff --git a/lfs/newt b/lfs/newt index 34b0f69af..b5c57d0d6 100644 --- a/lfs/newt +++ b/lfs/newt @@ -30,11 +30,7 @@ THISAPP = newt-$(VER) DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif +TARGET = $(DIR_INFO)/$(THISAPP) ############################################################################### # Top-level Rules @@ -75,20 +71,11 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/newt-0.51.6-if1close.patch -ifeq "$(LFS_PASS)" "install" - cd $(DIR_APP) && ./configure --without-gpm-support --host $(MACHINE)-uclibc - cd $(DIR_APP) && sed -i 's%^CFLAGS.*$$%CFLAGS = -Os -fomit-frame-pointer -Wall -D_GNU_SOURCE -DUTF8 -I/opt/i586-uClibc/include%' Makefile - cd $(DIR_APP) && make libnewt.a - -mkdir -p /opt/$(MACHINE)-uClibc/{include,lib} - cd $(DIR_APP) && install -m 0644 libnewt.a /opt/$(MACHINE)-uClibc/lib/libnewt.a - cd $(DIR_APP) && install -m 0644 newt.h /opt/$(MACHINE)-uClibc/include/newt.h -else cd $(DIR_APP) && ./configure --without-gpm-support cd $(DIR_APP) && sed -i 's%^CFLAGS.*$$%CFLAGS = $(CFLAGS) -Wall -D_GNU_SOURCE%' Makefile cd $(DIR_APP) && make cd $(DIR_APP) && make install cd $(DIR_APP) && install -m 0644 newt.h /usr/include ln -sf libnewt.so.0.51 /usr/lib/libnewt.so -endif @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/openldap b/lfs/openldap index 9771ae441..a18d7e162 100644 --- a/lfs/openldap +++ b/lfs/openldap @@ -32,10 +32,12 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = openldap -PAK_VER = 2 +PAK_VER = 3 DEPS = "" +export CPPFLAGS = -D_GNU_SOURCE + ############################################################################### # Top-level Rules ############################################################################### @@ -77,23 +79,24 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=/usr \ - --libexecdir=/usr/sbin \ - --sysconfdir=/etc \ - --localstatedir=/srv/ldap \ - --disable-debug \ - --enable-dynamic \ - --enable-crypt \ - --enable-modules \ - --enable-ldap \ - --enable-ldbm \ - --enable-dyngroup \ - --enable-dynlist \ - --enable-ppolicy \ - --enable-valsort - cd $(DIR_APP) && make depend + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/openldap-gcc44-fixes.patch + cd $(DIR_APP) && ./configure \ + --prefix=/usr \ + --libexecdir=/usr/lib \ + --sysconfdir=/etc \ + --localstatedir=/srv/ldap \ + --with-threads=posix \ + --disable-perl \ + --enable-dynamic \ + --enable-crypt \ + --enable-modules \ + --enable-rlookups \ + --enable-backends=mod \ + --enable-overlays=mod \ + --enable-sql=no \ + --enable-ndb=no \ + --disable-static cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP) && make install - chmod -v 755 /usr/lib/libl*-2.3.so.0.2.8 @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/pango b/lfs/pango new file mode 100644 index 000000000..bd5d5f8a8 --- /dev/null +++ b/lfs/pango @@ -0,0 +1,77 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +# # +############################################################################### + +############################################################################### +# Definitions +############################################################################### + +include Config + +VER = 1.30.1 + +THISAPP = pango-$(VER) +DL_FILE = $(THISAPP).tar.xz +DL_FROM = $(URL_IPFIRE) +DIR_APP = $(DIR_SRC)/$(THISAPP) +TARGET = $(DIR_INFO)/$(THISAPP) + +############################################################################### +# Top-level Rules +############################################################################### + +objects = $(DL_FILE) + +$(DL_FILE) = $(DL_FROM)/$(DL_FILE) + +$(DL_FILE)_MD5 = ec3c1f236ee9bd4a982a5f46fcaff7b9 + +install : $(TARGET) + +check : $(patsubst %,$(DIR_CHK)/%,$(objects)) + +download :$(patsubst %,$(DIR_DL)/%,$(objects)) + +md5 : $(subst %,%_MD5,$(objects)) + +############################################################################### +# Downloading, checking, md5sum +############################################################################### + +$(patsubst %,$(DIR_CHK)/%,$(objects)) : + @$(CHECK) + +$(patsubst %,$(DIR_DL)/%,$(objects)) : + @$(LOAD) + +$(subst %,%_MD5,$(objects)) : + @$(MD5) + +############################################################################### +# Installation Details +############################################################################### + +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) + @$(PREBUILD) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc + cd $(DIR_APP) && make $(MAKETUNING) + cd $(DIR_APP) && make install + @rm -rf $(DIR_APP) + @$(POSTBUILD) diff --git a/lfs/pciutils b/lfs/pciutils index a17b692e8..164a02747 100644 --- a/lfs/pciutils +++ b/lfs/pciutils @@ -30,11 +30,7 @@ THISAPP = pciutils-$(VER) DL_FILE = $(THISAPP).tar.bz2 DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif +TARGET = $(DIR_INFO)/$(THISAPP) ############################################################################### # Top-level Rules diff --git a/lfs/pcmciautils b/lfs/pcmciautils index 67ad5601f..c80208e70 100644 --- a/lfs/pcmciautils +++ b/lfs/pcmciautils @@ -30,13 +30,7 @@ THISAPP = pcmciautils-$(VER) DL_FILE = $(THISAPP).tar.bz2 DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) - -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif - +TARGET = $(DIR_INFO)/$(THISAPP) PROG = pcmciautils PAK_VER = 1 DEPS = "" @@ -82,21 +76,8 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) - -ifeq "$(LFS_PASS)" "install" - ln -f -s ../../../../../include/sysfs /opt/$(MACHINE)-uClibc/lib/gcc/$(MACHINE)-linux-uclibc/4.0.4/include/sysfs - cd $(DIR_APP) && make - cd $(DIR_APP) && install -m 755 pccardctl /install/initrd/sbin/ - ln -f -s pccardctl /install/initrd/sbin/lspcmcia - cd $(DIR_APP) && install -m 755 pcmcia-check-broken-cis /install/initrd/sbin/ - cd $(DIR_APP) && install -m 755 pcmcia-socket-startup /install/initrd/sbin/ - cp -f /etc/udev/rules.d/60-pcmcia.rules /install/initrd/etc/udev/rules.d/60-pcmcia.rules - mkdir -p /install/initrd/etc/pcmcia - cp -f /etc/pcmcia/config.opts /install/initrd/etc/pcmcia/config.opts -else cd $(DIR_APP) && make cd $(DIR_APP) && make install @sed -i -e 's/ MODALIAS=="?[*]",//g' /etc/udev/rules.d/60-pcmcia.rules -endif @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/pcre b/lfs/pcre index f99abf378..5aa40bd20 100644 --- a/lfs/pcre +++ b/lfs/pcre @@ -24,10 +24,10 @@ include Config -VER = 7.7 +VER = 8.31 THISAPP = pcre-$(VER) -DL_FILE = $(THISAPP).tar.bz2 +DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 4b2e9cde1f7227448dddba59843efa0b +$(DL_FILE)_MD5 = fab1bb3b91a4c35398263a5c1e0858c1 install : $(TARGET) @@ -69,11 +69,14 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=/usr --enable-utf8 + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && ./configure \ + --prefix=/usr \ + --disable-static \ + --enable-utf8 \ + --enable-jit \ + --enable-unicode-properties cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install - cd $(DIR_APP) && mv -v /usr/lib/libpcre.so.* /lib/ - cd $(DIR_APP) && ln -v -sf ../../lib/libpcre.so.0 /usr/lib/libpcre.so @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/reiser4progs b/lfs/pcre-compat similarity index 92% rename from lfs/reiser4progs rename to lfs/pcre-compat index 99cbb8434..6b20bca74 100644 --- a/lfs/reiser4progs +++ b/lfs/pcre-compat @@ -24,9 +24,9 @@ include Config -VER = 1.0.6 +VER = 7.7 -THISAPP = reiser4progs-$(VER) +THISAPP = pcre-$(VER) DL_FILE = $(THISAPP).tar.bz2 DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = d408cfeac40c266623bd51afa008caf6 +$(DL_FILE)_MD5 = 4b2e9cde1f7227448dddba59843efa0b install : $(TARGET) @@ -70,8 +70,10 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=/usr --sbindir=/sbin --enable-static + cd $(DIR_APP) && ./configure --prefix=/usr --enable-utf8 cd $(DIR_APP) && make $(MAKETUNING) - cd $(DIR_APP) && make install + + install -m 755 $(DIR_APP)/.libs/libpcre.so.0.0.1 /lib + ln -svf libpcre.so.0.0.1 /lib/libpcre.so.0 @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/php b/lfs/php index 3fcac1717..c5aae146b 100644 --- a/lfs/php +++ b/lfs/php @@ -24,7 +24,7 @@ include Config -VER = 5.3.14 +VER = 5.3.15 THISAPP = php-$(VER) DL_FILE = $(THISAPP).tar.bz2 @@ -32,6 +32,10 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) +ifeq "$(MACHINE_TYPE)" "arm" + CFLAGS := $(patsubst -march=%,,$(CFLAGS)) +endif + ############################################################################### # Top-level Rules ############################################################################### @@ -42,7 +46,7 @@ $(DL_FILE) = $(DL_FROM)/$(DL_FILE) idn-0.1.tgz = $(DL_FROM)/idn-0.1.tgz Log-1.9.11.tgz = $(DL_FROM)/Log-1.9.11.tgz -$(DL_FILE)_MD5 = 7caac4f71e2f21426c11ac153e538392 +$(DL_FILE)_MD5 = 5cfcfd0fa4c4da7576f397073e7993cc idn-0.1.tgz_MD5 = ef8635ec22348325a76abd2abddca4a1 Log-1.9.11.tgz_MD5 = fb7c648b212f12fdb5ce1ab687793513 diff --git a/lfs/libaal b/lfs/pixman similarity index 96% rename from lfs/libaal rename to lfs/pixman index 08d8ac1ef..1cb2a08df 100644 --- a/lfs/libaal +++ b/lfs/pixman @@ -24,9 +24,9 @@ include Config -VER = 1.0.5 +VER = 0.26.0 -THISAPP = libaal-$(VER) +THISAPP = pixman-$(VER) DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 6c55201acd2a2c0a1f46addf248da6a2 +$(DL_FILE)_MD5 = 6563b6400b9fa23b47fd52105faf72b4 install : $(TARGET) diff --git a/lfs/popt b/lfs/popt index 25fcc69cb..ee4c3f914 100644 --- a/lfs/popt +++ b/lfs/popt @@ -30,11 +30,7 @@ THISAPP = popt-$(VER) DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif +TARGET = $(DIR_INFO)/$(THISAPP) ############################################################################### # Top-level Rules @@ -74,16 +70,9 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) -ifeq "$(LFS_PASS)" "install" - cd $(DIR_APP) && ./configure --prefix=/ --disable-nls - cd $(DIR_APP) && make $(MAKETUNING) - cd $(DIR_APP) && make DESTDIR=/opt/$(MACHINE)-uClibc install -else cd $(DIR_APP) && sed -i -e "/*origOptString ==/c 0)" popt.c - cd $(DIR_APP) && autoreconf -f -i cd $(DIR_APP) && ./configure --prefix=/usr --disable-nls cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install -endif @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/postfix b/lfs/postfix index bbb9b0ca4..5866b97d8 100644 --- a/lfs/postfix +++ b/lfs/postfix @@ -36,6 +36,9 @@ PAK_VER = 6 DEPS = "amavisd mysql" +# Fake kernel release +export UTS_RELEASE = 2.6.32-ipfire + ############################################################################### # Top-level Rules ############################################################################### diff --git a/lfs/pptp b/lfs/pptp index e3237c34a..8edb89b6c 100644 --- a/lfs/pptp +++ b/lfs/pptp @@ -70,6 +70,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/pptp-1.7.2-compat.patch cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install @rm -rf $(DIR_APP) diff --git a/lfs/qemu b/lfs/qemu index da2ea34ba..d68b97d1e 100644 --- a/lfs/qemu +++ b/lfs/qemu @@ -78,12 +78,10 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - - cd $(DIR_APP) && sed -i -e 's|CFLAGS+="-march=i486"|CFLAGS+=""|g' configure cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/qemu-0.15.0_missing_definitions_hack.patch - cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc \ - --target-list="i386-linux-user i386-softmmu arm-softmmu" + --target-list="i386-linux-user i386-softmmu arm-softmmu" \ + --extra-cflags="$(CFLAGS)" cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install @rm -rf $(DIR_APP) diff --git a/lfs/readline b/lfs/readline index e2d6248fa..7b88adff2 100644 --- a/lfs/readline +++ b/lfs/readline @@ -24,7 +24,7 @@ include Config -VER = 5.1 +VER = 6.2 THISAPP = readline-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 7ee5a692db88b30ca48927a13fd60e46 +$(DL_FILE)_MD5 = 67948acb2ca081f23359d0256e9a271c install : $(TARGET) @@ -70,16 +70,15 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/readline-5.1-fixes-3.patch - cd $(DIR_APP) && sed -i '/MV.*old/d' Makefile.in - cd $(DIR_APP) && sed -i '/{OLDSUFF}/c:' support/shlib-install - cd $(DIR_APP) && ./configure --prefix=/usr --libdir=/lib + + for i in $$(seq 1 4); do \ + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/readline/readline62-$$(printf "%03d" "$${i}") || exit 1; \ + done + + cd $(DIR_APP) && ./configure --prefix=/usr --disable-static cd $(DIR_APP) && make $(MAKETUNING) SHLIB_LIBS=-lncurses cd $(DIR_APP) && make install - chmod -v 755 /lib/lib{readline,history}.so* - mv -v /lib/lib{readline,history}.a /usr/lib - rm -v /lib/lib{readline,history}.so - ln -sfv ../../lib/libreadline.so.5 /usr/lib/libreadline.so - ln -sfv ../../lib/libhistory.so.5 /usr/lib/libhistory.so + + rm -rfv /usr/share/readline @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/applejuice b/lfs/readline-compat similarity index 82% rename from lfs/applejuice rename to lfs/readline-compat index 12e58a681..2f4388c02 100644 --- a/lfs/applejuice +++ b/lfs/readline-compat @@ -18,24 +18,19 @@ # # ############################################################################### - ############################################################################### # Definitions ############################################################################### include Config -VER = 0.31 +VER = 5.2 -THISAPP = applejuice-$(VER) +THISAPP = readline-$(VER) DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) -PROG = applejuice -PAK_VER = 2 - -DEPS = "java" ############################################################################### # Top-level Rules @@ -45,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = dc4ac444ff9ec9e1e841e856564d0234 +$(DL_FILE)_MD5 = e39331f32ad14009b9ff49cc10c5e751 install : $(TARGET) @@ -55,9 +50,6 @@ download :$(patsubst %,$(DIR_DL)/%,$(objects)) md5 : $(subst %,%_MD5,$(objects)) -dist: - @$(PAK) - ############################################################################### # Downloading, checking, md5sum ############################################################################### @@ -78,13 +70,17 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && mkdir -p /opt/applejuice && mv -fv ajcore.jar /opt/applejuice - cd $(DIR_APP) && mv -fv libajnetmask.so /opt/applejuice - ln -svf ../../opt/applejuice/libajnetmask.so /usr/lib - cd $(DIR_APP) && cp -afv phpaj /srv/web - chown nobody.nobody /srv/web/phpaj -Rv - -mkdir /var/ipfire/applejuice - echo "RAMSIZE=64M" > /var/ipfire/applejuice/settings - chown nobody.nobody /var/ipfire/applejuice -Rv + + for i in $$(seq 1 14); do \ + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/readline/readline52-$$(printf "%03d" "$${i}") || exit 1; \ + done + + cd $(DIR_APP) && ./configure --prefix=/usr --libdir=/lib --disable-static + cd $(DIR_APP) && make $(MAKETUNING) SHLIB_LIBS=-lncurses + + cd $(DIR_APP)/shlib && install -m 755 libreadline.so.$(VER) /lib + cd $(DIR_APP)/shlib && install -m 755 libhistory.so.$(VER) /lib + ln -svf libreadline.so.$(VER) /lib/libreadline.so.5 + ln -svf libhistory.so.$(VER) /lib/libhistory.so.5 @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/reiserfsprogs b/lfs/reiserfsprogs index b78baefbf..402753ee0 100644 --- a/lfs/reiserfsprogs +++ b/lfs/reiserfsprogs @@ -30,11 +30,7 @@ THISAPP = reiserfsprogs-$(VER) DL_FILE = $(THISAPP).tar.bz2 DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif +TARGET = $(DIR_INFO)/$(THISAPP) ############################################################################### # Top-level Rules @@ -74,16 +70,10 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) -ifeq "$(LFS_PASS)" "install" - cd $(DIR_APP) && ./configure --prefix=/ --sbindir=/sbin - cd $(DIR_APP) && make $(MAKETUNING) - cd $(DIR_APP) && install -v -m 755 mkreiserfs/mkreiserfs /install/initrd/sbin/mkreiserfs -else cd $(DIR_APP) && ./configure --prefix=/usr --sbindir=/sbin cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install ln -svf reiserfsck /sbin/fsck.reiserfs ln -svf mkreiserfs /sbin/mkfs.reiserfs -endif @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/rrdtool b/lfs/rrdtool index db4471609..0237b89f2 100644 --- a/lfs/rrdtool +++ b/lfs/rrdtool @@ -24,7 +24,7 @@ include Config -VER = 1.2.30 +VER = 1.4.7 THISAPP = rrdtool-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 19b24f7184a8dbf7b48c1bbb565ad9fb +$(DL_FILE)_MD5 = ffe369d8921b4dfdeaaf43812100c38f install : $(TARGET) @@ -70,13 +70,16 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=/usr/share/$(THISAPP) \ - --exec-prefix=/usr --mandir=/usr/share/man --enable-perl-site-install \ - --enable-local-libpng --enable-local-zlib --with-pic --enable-latin2 \ - --disable-python --disable-tcl + cd $(DIR_APP) && ./configure \ + --prefix=/usr \ + --disable-rrdcgi \ + --enable-perl \ + --enable-perl-site-install \ + --disable-tcl \ + --disable-ruby \ + --disable-python cd $(DIR_APP) && make cd $(DIR_APP) && make install - cd $(DIR_APP) && make site-perl-install -mkdir -p /srv/web/ipfire/html/graphs/ chmod 777 /srv/web/ipfire/html/graphs/ -mkdir -p /var/log/rrd/ diff --git a/lfs/screen b/lfs/screen index eef586262..b94d62e6e 100644 --- a/lfs/screen +++ b/lfs/screen @@ -70,6 +70,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/screen-4.0.3-stropts.patch cd $(DIR_APP) && ./configure --prefix=/usr --with-socket-dir=/var/run/screen --with-sys-screenrc=/etc/screenrc cd $(DIR_APP) && sed -i -e "s%/usr/local/etc/screenrc%/etc/screenrc%" {etc,doc}/* cd $(DIR_APP) && make $(MAKETUNING) diff --git a/lfs/sed b/lfs/sed index 22b820407..8904fd429 100644 --- a/lfs/sed +++ b/lfs/sed @@ -24,7 +24,7 @@ include Config -VER = 4.1.5 +VER = 4.2.1 THISAPP = sed-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -36,13 +36,11 @@ DIR_APP = $(DIR_SRC)/$(THISAPP) ifeq "$(ROOT)" "" TARGET = $(DIR_INFO)/$(THISAPP) EXTRA_CONFIG = --prefix=/usr --bindir=/bin --disable-nls - EXTRA_LDFLAGS = EXTRA_MAKE = EXTRA_INSTALL = else TARGET = $(DIR_INFO)/$(THISAPP)-tools EXTRA_CONFIG = --prefix=/tools --disable-nls - EXTRA_LDFLAGS = EXTRA_MAKE = EXTRA_INSTALL = endif @@ -55,7 +53,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 7a1cbbbb3341287308e140bd4834c3ba +$(DL_FILE)_MD5 = f0fd4d7da574d4707e442285fd2d3b86 install : $(TARGET) @@ -85,7 +83,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && LDFLAGS="$(EXTRA_LDFLAGS)" ./configure $(EXTRA_CONFIG) + cd $(DIR_APP) && ./configure $(EXTRA_CONFIG) cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP) && make $(EXTRA_INSTALL) install @rm -rf $(DIR_APP) diff --git a/lfs/slang b/lfs/slang index 542d32ff1..e6c8cc88d 100644 --- a/lfs/slang +++ b/lfs/slang @@ -30,11 +30,7 @@ THISAPP = slang-$(VER) DL_FILE = $(THISAPP).tar.bz2 DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif +TARGET = $(DIR_INFO)/$(THISAPP) ############################################################################### # Top-level Rules @@ -78,13 +74,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/slang-utf8-acs.patch cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/slang-1.4.5-utf8-segv.patch cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/slang-utf8-fix.patch -ifeq "$(LFS_PASS)" "install" - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/slang-1.4.9-uclibc.patch - cd $(DIR_APP) && ./configure --prefix="" - cd $(DIR_APP)/src && make $(MAKETUNING) $(EXTRA_MAKE) - cd $(DIR_APP)/src && make install DESTDIR="/opt/$(MACHINE)-uClibc" - ln -sf libslang-utf8.a /opt/$(MACHINE)-uClibc/lib/libslang.a -else perl -p -i -e 's/(ELF_CFLAGS=\"[^\"]*)-O2([^\"]*\".*)/$1'"$(CFLAGS)"' $2/gs' configure cd $(DIR_APP) && ./configure --prefix=/usr cd $(DIR_APP) && make elf all @@ -92,6 +81,5 @@ else ln -sf libslang-utf8.so.1.4.9 /usr/lib/libslang-utf8.so.1 ln -sf libslang-utf8.so /usr/lib/libslang.so ln -sf libslang-utf8.a /usr/lib/libslang.a -endif @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/stage2 b/lfs/stage2 index 5f038c325..04291d6e4 100644 --- a/lfs/stage2 +++ b/lfs/stage2 @@ -63,9 +63,11 @@ $(TARGET) : # Symlinks # for this reason, stage2 rebuild will broke the iso:perl, grubbatch - -ln -sv /tools/bin/{bash,cat,grep,pwd,stty} /bin + -ln -sv /tools/bin/{bash,cat,echo,pwd,stty} /bin -ln -sv /tools/bin/perl /usr/bin -ln -sv /tools/lib/libgcc_s.so{,.1} /usr/lib + -ln -sv /tools/lib/libstdc++.so{,.6} /usr/lib + sed 's/tools/usr/' /tools/lib/libstdc++.la > /usr/lib/libstdc++.la -ln -sv bash /bin/sh # Config files diff --git a/lfs/strip b/lfs/strip index 169419e8a..30cb9b33b 100644 --- a/lfs/strip +++ b/lfs/strip @@ -46,25 +46,5 @@ md5 : ############################################################################### $(TARGET) : - -ifeq "$(LFS_PASS)" "toolchain" - -find $(TOOLS_DIR)/lib -type f -exec $(TOOLS_DIR)/bin/strip --strip-debug '{}' ';' - -find $(TOOLS_DIR)/{bin,sbin,libexec} -type f -exec $(TOOLS_DIR)/bin/strip --strip-all '{}' ';' - rm -rf $(TOOLS_DIR)/{,share/}{doc,info,man} -endif - -ifeq "$(LFS_PASS)" "install" - # Add -ls before -exec if you want to verify what files are in the path to be stripped - # A running binary can't be stripped, so use the version from /tools - # It may fail (signal 11) under circonstance not identified by me (Gilles), - # to strip libc again so ignore the error now. Probably need a static strip for libc - # Don't use --strip-all on libraries, or they'll be destroyed. Don't use --strip-unneeded, either. - -/tools/bin/find /lib /usr/lib /usr/share/rrdtool-* /install/initrd/lib \ - -type f \( -name '*.so' -o -name '*.so[\.0-9]*' \) \ - -exec /tools/bin/strip --strip-debug {} \; 2>/dev/null - - -/tools/bin/strip --strip-all /{,usr/}{,local/}{bin,sbin}/* /install/{initrd,misc}/bin/* /usr/lib/cyrus/* 2>/dev/null - -/tools/bin/strip --strip-all /usr/lib/awk/{grcat,pwcat} 2>/dev/null - -/tools/bin/strip --strip-all /usr/lib/gcc/*-linux-gnu/4.0.4/{cc1*,collect2} 2>/dev/null -endif - + STRIP="/tools/bin/strip" $(DIR_SRC)/src/stripper / \ + --exclude=/usr/src --exclude=/tools diff --git a/lfs/sysfsutils b/lfs/sysfsutils index 297f7708b..4980f5e17 100644 --- a/lfs/sysfsutils +++ b/lfs/sysfsutils @@ -31,11 +31,7 @@ DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif +TARGET = $(DIR_INFO)/$(THISAPP) ############################################################################### # Top-level Rules @@ -75,15 +71,8 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) -ifeq "$(LFS_PASS)" "install" - cd $(DIR_APP) && ./configure --prefix="" --disable-shared - cd $(DIR_APP) && make $(MAKETUNING) - cd $(DIR_APP) && make DESTDIR=/opt/$(MACHINE)-uClibc install - mv -v /opt/$(MACHINE)-uClibc/usr/include/sysfs /opt/$(MACHINE)-uClibc/include -else cd $(DIR_APP) && ./configure --prefix="" cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install -endif @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/sysvinit b/lfs/sysvinit index 2167b9978..3f16dd981 100644 --- a/lfs/sysvinit +++ b/lfs/sysvinit @@ -30,11 +30,7 @@ THISAPP = sysvinit-$(VER) DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif +TARGET = $(DIR_INFO)/$(THISAPP) ############################################################################### # Top-level Rules @@ -74,16 +70,10 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) -ifeq "$(LFS_PASS)" "install" - cd $(DIR_APP)/src && sed -i s'/-O2/-Os\ -fomit-frame-pointer/' Makefile - cd $(DIR_APP)/src && make killall5 - cd $(DIR_APP)/src && install -m 0755 killall5 /install/initrd/bin -else cd $(DIR_APP) && cp src/init.c{,.backup} cd $(DIR_APP) && sed -i 's@Sending processes@& started by init@g' \ src/init.c cd $(DIR_APP) && make $(MAKETUNING) -C src cd $(DIR_APP) && make -C src install -endif @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/udev b/lfs/udev index 5b8b60273..6e31c9075 100644 --- a/lfs/udev +++ b/lfs/udev @@ -30,11 +30,7 @@ THISAPP = udev-$(VER) DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif +TARGET = $(DIR_INFO)/$(THISAPP) ############################################################################### # Top-level Rules diff --git a/lfs/util-linux b/lfs/util-linux index 3dac54d86..a39416601 100644 --- a/lfs/util-linux +++ b/lfs/util-linux @@ -30,18 +30,7 @@ THISAPP = util-linux-$(VER) DL_FILE = $(THISAPP).tar.bz2 DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) - -# Normal build or /tools build. -# -ifeq "$(ROOT)" "" -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif -else - TARGET = $(DIR_INFO)/$(THISAPP)-tools -endif +TARGET = $(DIR_INFO)/$(THISAPP) ############################################################################### # Top-level Rules @@ -82,16 +71,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/util-linux-2.12r-umount-no-special.patch -ifeq "$(ROOT)" "" -ifeq "$(LFS_PASS)" "install" - cd $(DIR_APP) && CFLAGS="-Os -fomit-frame-pointer" ./configure - cd $(DIR_APP) && echo "HAVE_SLANG=yes" >> make_include - cd $(DIR_APP) && echo "SLANGFLAGS=-I/opt/$(MACHINE)-uClibc/include" >> make_include - cd $(DIR_APP)/fdisk && make cfdisk - cd $(DIR_APP)/fdisk && make sfdisk - cd $(DIR_APP)/fdisk && install -m 0755 cfdisk /install/initrd/bin - cd $(DIR_APP)/fdisk && install -m 0755 sfdisk /install/initrd/bin -else cd $(DIR_APP) && sed -i 's@etc/adjtime@var/lib/hwclock/adjtime@g' \ hwclock/hwclock.c -mkdir -p /var/lib/hwclock @@ -100,14 +79,5 @@ else cd $(DIR_APP) && ./configure cd $(DIR_APP) && make $(MAKETUNING) HAVE_KILL=yes HAVE_SLN=yes cd $(DIR_APP) && make HAVE_KILL=yes HAVE_SLN=yes install -endif -else - cd $(DIR_APP) && sed -i 's@/usr/include@/tools/include@g' configure - cd $(DIR_APP) && ./configure - cd $(DIR_APP) && make $(MAKETUNING) -C lib - cd $(DIR_APP) && make $(MAKETUNING) -C mount mount umount - cd $(DIR_APP) && make $(MAKETUNING) -C text-utils more - cd $(DIR_APP) && cp mount/{,u}mount text-utils/more /tools/bin -endif @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/vdr b/lfs/vdr index af5b92150..6907e00e3 100644 --- a/lfs/vdr +++ b/lfs/vdr @@ -104,6 +104,10 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP)/PLUGINS/src && tar xvf $(DIR_DL)/$(DL_FILE4) cd $(DIR_APP)/PLUGINS/src && ln -s epgsearch-0.9.24 epgsearch cd $(DIR_APP) && patch -Np1 -i PLUGINS/src/epgsearch/patches/MainMenuHooks-v1_0.patch + cd $(DIR_APP)/PLUGINS/src/epgsearch && sed -i '/include/a #include /' \ + epgsearch.c + cd $(DIR_APP)/PLUGINS/src/epgsearch && patch -Np1 < $(DIR_SRC)/src/patches/vdr-plugin-epgsearch-gcc44.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/vdr-1.6.0-gcc44-fixes.patch cd $(DIR_APP) && make VIDEODIR=/var/video plugins $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP) && make VIDEODIR=/var/video vdr $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP) && make DFB_SUPPORT=1 FB_SUPPORT=1 VIDIX_SUPPORT=1 $(MAKETUNING) $(EXTRA_MAKE) diff --git a/lfs/wget b/lfs/wget index 0c29155f0..ce55e76f0 100644 --- a/lfs/wget +++ b/lfs/wget @@ -30,11 +30,7 @@ THISAPP = wget-$(VER) DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif +TARGET = $(DIR_INFO)/$(THISAPP) ############################################################################### # Top-level Rules @@ -74,15 +70,9 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) -ifeq "$(LFS_PASS)" "install" - cd $(DIR_APP) && ./configure --prefix=/ --disable-nls --disable-ipv6 - cd $(DIR_APP) && make $(MAKETUNING) - cd $(DIR_APP)/src && install -m 755 wget /install/initrd/bin -else cd $(DIR_APP) && ./configure --prefix=/usr --with-ssl \ --disable-nls --disable-ipv6 cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install -endif @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/xfsprogs b/lfs/xfsprogs index 0dd83d33a..2a548be83 100644 --- a/lfs/xfsprogs +++ b/lfs/xfsprogs @@ -77,6 +77,9 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && sed -i "/include/a #include " \ + libxfs/xfs_ialloc.c quota/quot.c mdrestore/xfs_mdrestore.c \ + rtcp/xfs_rtcp.c cd $(DIR_APP) && make DEBUG=-DNDEBUG INSTALL_USER=root INSTALL_GROUP=root \ LOCAL_CONFIGURE_OPTIONS="--enable-readline=yes" cd $(DIR_APP) && make install diff --git a/lfs/xz b/lfs/xz index 4845227c8..cff9bb3de 100644 --- a/lfs/xz +++ b/lfs/xz @@ -31,7 +31,13 @@ DL_FILE = $(THISAPP).tar.bz2 DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) -TARGET = $(DIR_INFO)/$(THISAPP) +ifeq "$(ROOT)" "" + PREFIX = /usr + TARGET = $(DIR_INFO)/$(THISAPP) +else + PREFIX = /tools + TARGET = $(DIR_INFO)/$(THISAPP)-tools +endif ############################################################################### # Top-level Rules @@ -43,7 +49,6 @@ $(DL_FILE) = $(DL_FROM)/$(DL_FILE) $(DL_FILE)_MD5 = cc4044fcc073b8bcf3164d1d0df82161 - install : $(TARGET) check : $(patsubst %,$(DIR_CHK)/%,$(objects)) @@ -72,7 +77,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=/usr + cd $(DIR_APP) && ./configure --prefix=$(PREFIX) cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install @rm -rf $(DIR_APP) diff --git a/lfs/zlib b/lfs/zlib index a5a6849ac..5337c7724 100644 --- a/lfs/zlib +++ b/lfs/zlib @@ -24,18 +24,15 @@ include Config -VER = 1.2.3 +VER = 1.2.7 THISAPP = zlib-$(VER) -DL_FILE = $(THISAPP).tar.bz2 +DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) -ifeq "$(LFS_PASS)" "install" - TARGET = $(DIR_INFO)/$(THISAPP)-install -else - TARGET = $(DIR_INFO)/$(THISAPP) -endif -CFLAGS += -fPIC +TARGET = $(DIR_INFO)/$(THISAPP) + +CFLAGS += -fPIC -DPIC ############################################################################### # Top-level Rules @@ -44,7 +41,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = dee233bf288ee795ac96a98cc2e369b6 +$(DL_FILE)_MD5 = 60df6a37c56e7c1366cca812414f7b85 install : $(TARGET) @@ -73,23 +70,14 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) -ifeq "$(LFS_PASS)" "install" - cd $(DIR_APP) && ./configure --prefix=/opt/$(MACHINE)-uClibc + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && ./configure --prefix=/usr --shared cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install - chmod -v 644 /opt/$(MACHINE)-uClibc/lib/libz.a -else - cd $(DIR_APP) && ./configure --prefix=/usr --shared --libdir=/lib - cd $(DIR_APP) && make $(MAKETUNING) - cd $(DIR_APP) && make install - rm -v /lib/libz.so - ln -sfv ../../lib/libz.so.1.2.3 /usr/lib/libz.so - cd $(DIR_APP) && make clean - cd $(DIR_APP) && ./configure --prefix=/usr - cd $(DIR_APP) && make $(MAKETUNING) - cd $(DIR_APP) && make install - chmod -v 644 /usr/lib/libz.a -endif + + mv -v /usr/lib/libz.so.$(VER) /lib/libz.so.$(VER) + ln -svf libz.so.$(VER) /lib/libz.so.1 + rm -vf /usr/lib/libz.so.1 + @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/make.sh b/make.sh index 58f2dfaee..07e93deb1 100755 --- a/make.sh +++ b/make.sh @@ -37,12 +37,11 @@ KVER=`grep --max-count=1 VER lfs/linux | awk '{ print $3 }'` MACHINE=`uname -m` GIT_TAG=$(git tag | tail -1) # Git Tag GIT_LASTCOMMIT=$(git log | head -n1 | cut -d" " -f2 |head -c8) # Last commit -TOOLCHAINVER=4 +TOOLCHAINVER=5 BUILDMACHINE=$MACHINE if [ "$MACHINE" = "x86_64" ]; then BUILDMACHINE="i686"; - linux32="linux32"; fi @@ -214,11 +213,6 @@ prepareenv() { mount --bind $BASEDIR/log $BASEDIR/build/usr/src/log mount --bind $BASEDIR/src $BASEDIR/build/usr/src/src - # This is a temporary hack!!! - if [ ! -f /tools/bin/hostname ]; then - cp -f /bin/hostname /tools/bin/hostname 2>/dev/null - fi - # Run LFS static binary creation scripts one by one export CCACHE_DIR=$BASEDIR/ccache export CCACHE_COMPRESS=1 @@ -232,7 +226,7 @@ buildtoolchain() { local error=false case "${MACHINE}:$(uname -m)" in # x86 - i586:i586|i586:i686) + i586:i586|i586:i686|i586:x86_64) # These are working. ;; i586:*) @@ -251,38 +245,28 @@ buildtoolchain() { ${error} && \ exiterror "Cannot build ${MACHINE} toolchain on $(uname -m). Please use the download if any." - if [ "$(uname -r | grep ipfire)" ]; then - exiterror "Cannot build toolchain on ipfire. Please use the download." - fi - - if [ ! -e /usr/include/asm -o ! -e /usr/include/bits -o ! -e /usr/include/gnu -o ! -e /usr/include/sys ]; then - exiterror "Cannot build toolchain without (asm, bits, gnu or sys includes). Please fix or use the download." - fi - - if [ ! -e /usr/lib/libc.so ]; then - exiterror "Cannot build toolchain without (/usr/lib/libc.so). Please fix or use the download." + local gcc=$(type -p gcc) + if [ -z "${gcc}" ]; then + exiterror "Could not find GCC. You will need a working build enviroment in order to build the toolchain." fi LOGFILE="$BASEDIR/log/_build.toolchain.log" export LOGFILE - NATIVEGCC=`gcc --version | grep GCC | awk {'print $3'}` - export NATIVEGCC GCCmajor=${NATIVEGCC:0:1} GCCminor=${NATIVEGCC:2:1} GCCrelease=${NATIVEGCC:4:1} - ORG_PATH=$PATH - lfsmake1 ccache PASS=1 - lfsmake1 make PASS=1 - lfsmake1 linux2 TOOLS=1 HEADERS=1 - lfsmake1 binutils PASS=1 - lfsmake1 gcc PASS=1 - export PATH=$BASEDIR/build/usr/local/bin:$BASEDIR/build/tools/bin:$PATH + + local ORG_PATH=$PATH + export PATH="/tools/ccache/bin:/tools/bin:$PATH" + lfsmake1 ccache PASS=1 + lfsmake1 binutils PASS=1 + lfsmake1 gcc PASS=1 + lfsmake1 linux2 TOOLS=1 HEADERS=1 lfsmake1 glibc - lfsmake1 cleanup-toolchain PASS=1 - lfsmake1 fake-environ + lfsmake1 cleanup-toolchain PASS=1 + lfsmake1 binutils PASS=2 + lfsmake1 gcc PASS=2 + lfsmake1 ccache PASS=2 lfsmake1 tcl lfsmake1 expect lfsmake1 dejagnu - lfsmake1 gcc PASS=2 - lfsmake1 binutils PASS=2 - lfsmake1 ccache PASS=2 lfsmake1 ncurses lfsmake1 bash lfsmake1 bzip2 @@ -294,15 +278,15 @@ buildtoolchain() { lfsmake1 grep lfsmake1 gzip lfsmake1 m4 - lfsmake1 make PASS=2 + lfsmake1 make lfsmake1 patch lfsmake1 perl lfsmake1 sed lfsmake1 tar lfsmake1 texinfo - lfsmake1 util-linux - lfsmake1 strip - lfsmake1 cleanup-toolchain PASS=2 + lfsmake1 xz + lfsmake1 fake-environ + lfsmake1 cleanup-toolchain PASS=2 export PATH=$ORG_PATH } @@ -310,13 +294,19 @@ buildbase() { LOGFILE="$BASEDIR/log/_build.base.log" export LOGFILE lfsmake2 stage2 - lfsmake2 linux2 HEADERS=1 + lfsmake2 linux2 HEADERS=1 lfsmake2 man-pages lfsmake2 glibc lfsmake2 tzdata - lfsmake2 cleanup-toolchain PASS=3 + lfsmake2 cleanup-toolchain PASS=3 + lfsmake2 zlib lfsmake2 binutils + lfsmake2 gmp + lfsmake2 gmp-compat + lfsmake2 mpfr + lfsmake2 file lfsmake2 gcc + lfsmake2 sed lfsmake2 berkeley lfsmake2 coreutils lfsmake2 iana-etc @@ -324,11 +314,12 @@ buildbase() { lfsmake2 bison lfsmake2 ncurses lfsmake2 procps - lfsmake2 sed lfsmake2 libtool lfsmake2 perl lfsmake2 readline - lfsmake2 zlib + lfsmake2 readline-compat + lfsmake2 pcre + lfsmake2 pcre-compat lfsmake2 autoconf lfsmake2 automake lfsmake2 bash @@ -336,7 +327,6 @@ buildbase() { lfsmake2 diffutils lfsmake2 e2fsprogs lfsmake2 ed - lfsmake2 file lfsmake2 findutils lfsmake2 flex lfsmake2 gawk @@ -348,7 +338,6 @@ buildbase() { lfsmake2 iproute2 lfsmake2 kbd lfsmake2 less - lfsmake2 libaal lfsmake2 make lfsmake2 man lfsmake2 mktemp @@ -356,7 +345,6 @@ buildbase() { lfsmake2 net-tools lfsmake2 patch lfsmake2 psmisc - lfsmake2 reiser4progs lfsmake2 shadow lfsmake2 sysklogd lfsmake2 sysvinit @@ -365,6 +353,7 @@ buildbase() { lfsmake2 udev lfsmake2 util-linux lfsmake2 vim + lfsmake2 xz lfsmake2 grub } @@ -381,7 +370,6 @@ buildipfire() { ipfiremake pptp ipfiremake unzip ipfiremake which - ipfiremake xz ipfiremake linux-firmware ipfiremake zd1211-firmware ipfiremake rpi-firmware @@ -393,7 +381,7 @@ buildipfire() { ipfiremake linux2 KCFG="-xen" # ipfiremake v4l-dvb KCFG="-xen" # ipfiremake mISDN KCFG="-xen" -# ipfiremake dahdi KCFG="-xen" KMOD=1 + ipfiremake dahdi KCFG="-xen" KMOD=1 ipfiremake cryptodev KCFG="-xen" ipfiremake compat-wireless KCFG="-xen" # ipfiremake r8169 KCFG="-xen" @@ -408,7 +396,7 @@ buildipfire() { # ipfiremake v4l-dvb KCFG="-pae" ipfiremake alsa KCFG="-pae" KMOD=1 # ipfiremake mISDN KCFG="-pae" -# ipfiremake dahdi KCFG="-pae" KMOD=1 + ipfiremake dahdi KCFG="-pae" KMOD=1 ipfiremake cryptodev KCFG="-pae" ipfiremake compat-wireless KCFG="-pae" # ipfiremake r8169 KCFG="-pae" @@ -423,7 +411,7 @@ buildipfire() { # ipfiremake v4l-dvb KCFG="" ipfiremake alsa KCFG="" KMOD=1 # ipfiremake mISDN KCFG="" -# ipfiremake dahdi KCFG="" KMOD=1 + ipfiremake dahdi KCFG="" KMOD=1 ipfiremake cryptodev KCFG="" ipfiremake compat-wireless KCFG="" # ipfiremake r8169 KCFG="" @@ -484,7 +472,6 @@ buildipfire() { ipfiremake dracut ipfiremake expat ipfiremake gdbm - ipfiremake gmp ipfiremake pam ipfiremake openssl ipfiremake curl @@ -496,6 +483,7 @@ buildipfire() { ipfiremake libnl ipfiremake libidn ipfiremake libjpeg + ipfiremake libexif ipfiremake libpng ipfiremake libtiff ipfiremake libart @@ -545,7 +533,6 @@ buildipfire() { ipfiremake iptables ipfiremake libupnp ipfiremake ipaddr - ipfiremake iptstate ipfiremake iputils ipfiremake l7-protocols ipfiremake mISDNuser @@ -587,12 +574,18 @@ buildipfire() { ipfiremake python-mechanize ipfiremake python-feedparser ipfiremake python-rssdler + ipfiremake libffi ipfiremake glib ipfiremake GeoIP ipfiremake fwhits ipfiremake noip_updater ipfiremake ntp ipfiremake openssh + ipfiremake fontconfig + ipfiremake freefont + ipfiremake pixman + ipfiremake cairo + ipfiremake pango ipfiremake rrdtool ipfiremake setserial ipfiremake setup @@ -607,7 +600,6 @@ buildipfire() { ipfiremake traceroute ipfiremake vlan ipfiremake wireless - ipfiremake libsafe ipfiremake pakfire ipfiremake spandsp ipfiremake lzo @@ -623,10 +615,9 @@ buildipfire() { ipfiremake wget ipfiremake bridge-utils ipfiremake screen - ipfiremake hddtemp ipfiremake smartmontools ipfiremake htop -# ipfiremake postfix # unknown system type linux 3.2.x + ipfiremake postfix ipfiremake fetchmail ipfiremake cyrus-imapd ipfiremake openmailadmin @@ -641,6 +632,7 @@ buildipfire() { ipfiremake libogg ipfiremake libvorbis ipfiremake libdvbpsi + ipfiremake flac ipfiremake lame ipfiremake sox ipfiremake libshout @@ -649,7 +641,6 @@ buildipfire() { ipfiremake cmake ipfiremake gnump3d ipfiremake libsigc++ - ipfiremake applejuice ipfiremake libtorrent ipfiremake rtorrent ipfiremake ipfireseeder @@ -668,7 +659,6 @@ buildipfire() { ipfiremake vsftpd ipfiremake strongswan ipfiremake lsof - ipfiremake centerim ipfiremake br2684ctl ipfiremake pcmciautils ipfiremake lm_sensors @@ -687,8 +677,6 @@ buildipfire() { ipfiremake nagios ipfiremake nagios_nrpe ipfiremake ebtables - ipfiremake fontconfig - ipfiremake freefont ipfiremake directfb ipfiremake dfb++ ipfiremake faad2 @@ -721,7 +709,6 @@ buildipfire() { ipfiremake netcat ipfiremake 7zip ipfiremake lynis - ipfiremake splix ipfiremake streamripper ipfiremake sshfs ipfiremake taglib @@ -743,9 +730,9 @@ buildipfire() { ipfiremake nut ipfiremake watchdog ipfiremake libpri -# ipfiremake dahdi # update needed for 3.2.x -# ipfiremake asterisk -# ipfiremake lcr + ipfiremake dahdi + ipfiremake asterisk + ipfiremake lcr ipfiremake usb_modeswitch ipfiremake usb_modeswitch_data ipfiremake zerofree @@ -755,7 +742,7 @@ buildipfire() { ipfiremake minicom ipfiremake ddrescue ipfiremake imspector -# ipfiremake miniupnpd # will not build + ipfiremake miniupnpd ipfiremake client175 ipfiremake powertop ipfiremake parted @@ -775,6 +762,8 @@ buildipfire() { ipfiremake lcd4linux ipfiremake mtr ipfiremake tcpick + ipfiremake minidlna + ipfiremake acpid echo Build on $HOSTNAME > $BASEDIR/build/var/ipfire/firebuild cat /proc/version >> $BASEDIR/build/var/ipfire/firebuild echo >> $BASEDIR/build/var/ipfire/firebuild @@ -799,7 +788,6 @@ buildinstaller() { ipfiremake mbr ipfiremake memtest ipfiremake installer - cp -f $BASEDIR/doc/COPYING $BASEDIR/build/install/initrd/ installmake strip ipfiremake initrd } @@ -1041,9 +1029,7 @@ toolchain) echo "`date -u '+%b %e %T'`: Create toolchain tar.gz for $MACHINE" | tee -a $LOGFILE test -d $BASEDIR/cache/toolchains || mkdir -p $BASEDIR/cache/toolchains cd $BASEDIR && tar -zc --exclude='log/_build.*.log' -f cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE.tar.gz \ - build/{bin,etc,usr/bin,usr/local} \ - build/tools/{bin,etc,*-linux-gnu*,include,lib,libexec,sbin,share,var} \ - log >> $LOGFILE + build/tools build/bin/sh log >> $LOGFILE md5sum cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE.tar.gz \ > cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE.md5 stdumount diff --git a/src/fake-environ/Makefile b/src/fake-environ/Makefile index a75bdf27f..3c3a3b42a 100644 --- a/src/fake-environ/Makefile +++ b/src/fake-environ/Makefile @@ -19,7 +19,7 @@ all: $(LIB) $(CC) $(CFLAGS) -o $@ -c $< $(LIB): $(OBJECTS) - $(CC) $(CFLAGS) -shared -o $@ $? -ldl + $(CC) $(CFLAGS) -shared -o $@ $? -ldl -static-libgcc .PHONY: install install: all diff --git a/src/install+setup/install/Makefile b/src/install+setup/install/Makefile index a3c95f751..89106de22 100644 --- a/src/install+setup/install/Makefile +++ b/src/install+setup/install/Makefile @@ -21,10 +21,10 @@ CC = gcc CFLAGS = -Os -Wall -INCLUDE = -I/opt/i586-uClibc/include +INCLUDE = LD = gcc -LDFLAGS = -L/install/lib +LDFLAGS = LIBS = -lnewt -lslang -lpci COMPILE = $(CC) -c $(INCLUDE) $(CFLAGS) diff --git a/src/install+setup/install/main.c b/src/install+setup/install/main.c index c181e4a8e..e1b916149 100644 --- a/src/install+setup/install/main.c +++ b/src/install+setup/install/main.c @@ -510,6 +510,15 @@ int main(int argc, char *argv[]) system("/bin/sed -e 's#/harddisk#/#g' -e 's#//#/#g' < /proc/mounts > /harddisk/etc/mtab"); + /* + * Generate device.map to help grub finding the device to install itself on. + */ + FILE *f = NULL; + if (f = fopen("/harddisk/boot/grub/device.map", "w")) { + fprintf(f, "(hd0) %s\n", hdparams.devnode_part); + fclose(f); + } + snprintf(commandstring, STRING_SIZE, "/usr/sbin/chroot /harddisk /usr/sbin/grub-install --no-floppy %s", hdparams.devnode_disk); if (runcommandwithstatus(commandstring, ctr[TR_INSTALLING_GRUB])) { diff --git a/src/install+setup/install/mountdest.sh b/src/install+setup/install/mountdest.sh index 700b8389f..42e2c7664 100644 --- a/src/install+setup/install/mountdest.sh +++ b/src/install+setup/install/mountdest.sh @@ -23,7 +23,7 @@ echo "Scanning for possible destination drives" # scan sd? echo "--> sd?" -for DEVICE in `find /sys/block/* -maxdepth 0 -name sd* -exec basename {} \; | sort | uniq` +for DEVICE in `find /sys/block/* -maxdepth 0 -name sd* -or -name vd* -exec basename {} \; | sort | uniq` do if [ "$(grep ${DEVICE} /proc/partitions)" = "" ]; then umount /harddisk 2> /dev/null diff --git a/src/install+setup/libsmooth/Makefile b/src/install+setup/libsmooth/Makefile index bc09aa623..5ce869a5f 100644 --- a/src/install+setup/libsmooth/Makefile +++ b/src/install+setup/libsmooth/Makefile @@ -20,7 +20,7 @@ CC = gcc CFLAGS = -O2 -Wall -INCLUDE = -I/opt/i586-uClibc/include +INCLUDE = LD = ld LDFLAGS = -i diff --git a/src/misc-progs/Makefile b/src/misc-progs/Makefile index 300e9ecbb..33d1d667e 100644 --- a/src/misc-progs/Makefile +++ b/src/misc-progs/Makefile @@ -29,7 +29,7 @@ SUID_PROGS = setdmzholes setportfw setxtaccess \ ipsecctrl timectrl dhcpctrl snortctrl \ applejuicectrl rebuildhosts backupctrl \ logwatch openvpnctrl outgoingfwctrl \ - wirelessctrl getipstat getiptstate qosctrl launch-ether-wake \ + wirelessctrl getipstat qosctrl launch-ether-wake \ redctrl syslogdctrl extrahdctrl sambactrl upnpctrl tripwirectrl \ smartctrl clamavctrl addonctrl pakfire mpfirectrl wlanapctrl \ setaliases urlfilterctrl updxlratorctrl fireinfoctrl rebuildroutes \ diff --git a/src/misc-progs/getiptstate.c b/src/misc-progs/getiptstate.c deleted file mode 100644 index 338b531f8..000000000 --- a/src/misc-progs/getiptstate.c +++ /dev/null @@ -1,24 +0,0 @@ -/* IPFire helper program - IPStat - * - * Get the list from IPTABLES -L - * - */ - -#include -#include -#include -#include -#include -#include -#include "setuid.h" - - -int main(void) -{ - if (!(initsetuid())) - exit(1); - - safe_system("/usr/sbin/iptstate -1rbt"); - return 0; -} - diff --git a/src/paks/applejuice/install.sh b/src/paks/applejuice/install.sh deleted file mode 100644 index 92cd67feb..000000000 --- a/src/paks/applejuice/install.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPFire is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2007 IPFire-Team . # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -extract_files -sleep 60 && /etc/init.d/applejuice start & -ln -svf ../init.d/applejuice /etc/rc.d/rc0.d/K05applejuice -ln -svf ../init.d/applejuice /etc/rc.d/rc3.d/S98applejuice -ln -svf ../init.d/applejuice /etc/rc.d/rc6.d/K05applejuice -/etc/init.d/apache reload diff --git a/src/paks/applejuice/uninstall.sh b/src/paks/applejuice/uninstall.sh deleted file mode 100644 index e14e422fa..000000000 --- a/src/paks/applejuice/uninstall.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPFire is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2007 IPFire-Team . # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -/etc/init.d/applejuice stop -remove_files -rm -rf /etc/rc.d/rc*.d/*applejuice diff --git a/src/paks/applejuice/update.sh b/src/paks/applejuice/update.sh deleted file mode 100644 index 89c40d0d7..000000000 --- a/src/paks/applejuice/update.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPFire is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2007 IPFire-Team . # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -./uninstall.sh -./install.sh diff --git a/src/patches/apcupsd-3.14.4-fix-gcc44.patch b/src/patches/apcupsd-3.14.4-fix-gcc44.patch new file mode 100644 index 000000000..00520980e --- /dev/null +++ b/src/patches/apcupsd-3.14.4-fix-gcc44.patch @@ -0,0 +1,17 @@ +diff -up apcupsd-3.14.5/src/apcaccess.c.gcc44 apcupsd-3.14.5/src/apcaccess.c +--- apcupsd-3.14.5/src/apcaccess.c.gcc44 2009-02-24 10:36:35.781325750 +0100 ++++ apcupsd-3.14.5/src/apcaccess.c 2009-02-24 10:38:12.416285478 +0100 +@@ -86,10 +86,10 @@ int main(int argc, char **argv) + } + + if (argc > 2) { /* assume host:port */ +- char *p; ++ char *p = argv[2]; + +- host = argv[2]; +- p = strchr(host, ':'); ++ host = p; ++ p = strchr(p, ':'); + if (p) { + *p++ = 0; + port = atoi(p); diff --git a/src/patches/bash-3.1-fixes-8.patch b/src/patches/bash-3.1-fixes-8.patch deleted file mode 100644 index 449f07653..000000000 --- a/src/patches/bash-3.1-fixes-8.patch +++ /dev/null @@ -1,723 +0,0 @@ -Submitted By: Jeremy Huntwork (jhuntwork at linuxfromscratch dot org) -Date: 2006-04-11 -Initial Package Version: 3.1 -Origin: http://ftp.gnu.org/gnu/bash/bash-3.1-patches/ -Upstream Status: From Upstream -Description: Contains patches 001-017 from upstream - -diff -Naur bash-3.1.orig/arrayfunc.c bash-3.1/arrayfunc.c ---- bash-3.1.orig/arrayfunc.c 2005-07-04 17:25:58.000000000 -0700 -+++ bash-3.1/arrayfunc.c 2006-04-19 15:59:29.000000000 -0700 -@@ -592,11 +592,7 @@ - exp = (char *)xmalloc (len); - strncpy (exp, s, len - 1); - exp[len - 1] = '\0'; --#if 0 -- t = expand_string_to_string (exp, 0); --#else -- t = expand_string_to_string (exp, Q_DOUBLE_QUOTES); --#endif -+ t = expand_arith_string (exp, 0); - this_command_name = (char *)NULL; - val = evalexp (t, &expok); - free (t); -diff -Naur bash-3.1.orig/doc/bash.1 bash-3.1/doc/bash.1 ---- bash-3.1.orig/doc/bash.1 2005-10-12 08:40:52.000000000 -0700 -+++ bash-3.1/doc/bash.1 2006-04-19 15:58:34.000000000 -0700 -@@ -6,12 +6,12 @@ - .\" Case Western Reserve University - .\" chet@po.cwru.edu - .\" --.\" Last Change: Sat Aug 27 13:28:44 EDT 2005 -+.\" Last Change: Wed Dec 28 19:58:45 EST 2005 - .\" - .\" bash_builtins, strip all but Built-Ins section - .if \n(zZ=1 .ig zZ - .if \n(zY=1 .ig zY --.TH BASH 1 "2005 Aug 27" "GNU Bash-3.1-beta1" -+.TH BASH 1 "2005 Dec 28" "GNU Bash-3.1" - .\" - .\" There's some problem with having a `@' - .\" in a tagged paragraph with the BSD man macros. -@@ -677,8 +677,8 @@ - .B nocasematch - is enabled, the match is performed without regard to the case - of alphabetic characters. --The return value is 0 if the string matches or does not match --the pattern, respectively, and 1 otherwise. -+The return value is 0 if the string matches (\fB==\fP) or does not match -+(\fB!=\fP) the pattern, and 1 otherwise. - Any part of the pattern may be quoted to force it to be matched as a - string. - .if t .sp 0.5 -@@ -807,6 +807,12 @@ - as for pathname expansion (see - .B Pathname Expansion - below). -+The \fIword\fP is expanded using tilde -+expansion, parameter and variable expansion, arithmetic substituion, -+command substitution, process substitution and quote removal. -+Each \fIpattern\fP examined is expanded using tilde -+expansion, parameter and variable expansion, arithmetic substituion, -+command substitution, and process substitution. - If the shell option - .B nocasematch - is enabled, the match is performed without regard to the case -@@ -8484,7 +8490,7 @@ - returns true if any of the arguments are found, false if - none are found. - .TP --\fBulimit\fP [\fB\-SHacdflmnpstuv\fP [\fIlimit\fP]] -+\fBulimit\fP [\fB\-SHacdfilmnpqstuvx\fP [\fIlimit\fP]] - Provides control over the resources available to the shell and to - processes started by it, on systems that allow such control. - The \fB\-H\fP and \fB\-S\fP options specify that the hard or soft limit is -@@ -8523,6 +8529,9 @@ - .B \-f - The maximum size of files created by the shell - .TP -+.B \-i -+The maximum number of pending signals -+.TP - .B \-l - The maximum size that may be locked into memory - .TP -@@ -8536,6 +8545,9 @@ - .B \-p - The pipe size in 512-byte blocks (this may not be set) - .TP -+.B \-q -+The maximum number of bytes in POSIX message queues -+.TP - .B \-s - The maximum stack size - .TP -@@ -8547,6 +8559,9 @@ - .TP - .B \-v - The maximum amount of virtual memory available to the shell -+.TP -+.B \-x -+The maximum number of file locks - .PD - .PP - If -diff -Naur bash-3.1.orig/doc/bashref.texi bash-3.1/doc/bashref.texi ---- bash-3.1.orig/doc/bashref.texi 2005-10-03 12:07:21.000000000 -0700 -+++ bash-3.1/doc/bashref.texi 2006-04-19 15:58:34.000000000 -0700 -@@ -961,8 +961,8 @@ - (see the description of @code{shopt} in @ref{Bash Builtins}) - is enabled, the match is performed without regard to the case - of alphabetic characters. --The return value is 0 if the string matches or does not match --the pattern, respectively, and 1 otherwise. -+The return value is 0 if the string matches (@samp{==}) or does not -+match (@samp{!=})the pattern, and 1 otherwise. - Any part of the pattern may be quoted to force it to be matched as a - string. - -@@ -2598,7 +2598,7 @@ - Builtin commands are necessary to implement functionality impossible - or inconvenient to obtain with separate utilities. - --This section briefly the builtins which Bash inherits from -+This section briefly describes the builtins which Bash inherits from - the Bourne Shell, as well as the builtin commands which are unique - to or have been extended in Bash. - -@@ -3833,7 +3833,7 @@ - @item ulimit - @btindex ulimit - @example --ulimit [-acdflmnpstuvSH] [@var{limit}] -+ulimit [-acdfilmnpqstuvxSH] [@var{limit}] - @end example - @code{ulimit} provides control over the resources available to processes - started by the shell, on systems that allow such control. If an -@@ -3857,6 +3857,9 @@ - @item -f - The maximum size of files created by the shell. - -+@item -i -+The maximum number of pending signals. -+ - @item -l - The maximum size that may be locked into memory. - -@@ -3869,6 +3872,9 @@ - @item -p - The pipe buffer size. - -+@item -q -+The maximum number of bytes in POSIX message queues. -+ - @item -s - The maximum stack size. - -@@ -3881,6 +3887,9 @@ - @item -v - The maximum amount of virtual memory available to the process. - -+@item -x -+The maximum number of file locks. -+ - @end table - - If @var{limit} is given, it is the new value of the specified resource; -@@ -4089,8 +4098,8 @@ - Print shell input lines as they are read. - - @item -x --Print a trace of simple commands, \fBfor\fP commands, \fBcase\fP --commands, \fBselect\fP commands, and arithmetic \fBfor\fP commands -+Print a trace of simple commands, @code{for} commands, @code{case} -+commands, @code{select} commands, and arithmetic @code{for} commands - and their arguments or associated word lists after they are - expanded and before they are executed. The value of the @env{PS4} - variable is expanded and the resultant value is printed before -diff -Naur bash-3.1.orig/doc/version.texi bash-3.1/doc/version.texi ---- bash-3.1.orig/doc/version.texi 2005-09-20 11:52:56.000000000 -0700 -+++ bash-3.1/doc/version.texi 2006-04-19 15:58:34.000000000 -0700 -@@ -2,9 +2,9 @@ - Copyright (C) 1988-2005 Free Software Foundation, Inc. - @end ignore - --@set LASTCHANGE Mon Sep 5 11:47:04 EDT 2005 -+@set LASTCHANGE Fri Dec 30 10:50:51 EST 2005 - --@set EDITION 3.1-beta1 --@set VERSION 3.1-beta1 --@set UPDATED 5 September 2005 --@set UPDATED-MONTH September 2005 -+@set EDITION 3.1 -+@set VERSION 3.1 -+@set UPDATED 30 December 2005 -+@set UPDATED-MONTH December 2005 -diff -Naur bash-3.1.orig/jobs.c bash-3.1/jobs.c ---- bash-3.1.orig/jobs.c 2005-11-11 20:13:27.000000000 -0800 -+++ bash-3.1/jobs.c 2006-04-19 15:58:34.000000000 -0700 -@@ -619,8 +619,11 @@ - * once in the parent and once in each child. This is where - * the parent gives it away. - * -+ * Don't give the terminal away if this shell is an asynchronous -+ * subshell. -+ * - */ -- if (job_control && newjob->pgrp) -+ if (job_control && newjob->pgrp && (subshell_environment&SUBSHELL_ASYNC) == 0) - give_terminal_to (newjob->pgrp, 0); - } - } -@@ -844,9 +847,10 @@ - realloc_jobs_list () - { - sigset_t set, oset; -- int nsize, i, j; -+ int nsize, i, j, ncur, nprev; - JOB **nlist; - -+ ncur = nprev = NO_JOB; - nsize = ((js.j_njobs + JOB_SLOTS - 1) / JOB_SLOTS); - nsize *= JOB_SLOTS; - i = js.j_njobs % JOB_SLOTS; -@@ -854,17 +858,51 @@ - nsize += JOB_SLOTS; - - BLOCK_CHILD (set, oset); -- nlist = (JOB **) xmalloc (nsize * sizeof (JOB *)); -+ nlist = (js.j_jobslots == nsize) ? jobs : (JOB **) xmalloc (nsize * sizeof (JOB *)); -+ - for (i = j = 0; i < js.j_jobslots; i++) - if (jobs[i]) -- nlist[j++] = jobs[i]; -+ { -+ if (i == js.j_current) -+ ncur = j; -+ if (i == js.j_previous) -+ nprev = j; -+ nlist[j++] = jobs[i]; -+ } -+ -+#if defined (DEBUG) -+ itrace ("realloc_jobs_list: resize jobs list from %d to %d", js.j_jobslots, nsize); -+ itrace ("realloc_jobs_list: j_lastj changed from %d to %d", js.j_lastj, (j > 0) ? j - 1 : 0); -+ itrace ("realloc_jobs_list: j_njobs changed from %d to %d", js.j_njobs, (j > 0) ? j - 1 : 0); -+#endif - - js.j_firstj = 0; -- js.j_lastj = (j > 0) ? j - 1: 0; -+ js.j_lastj = (j > 0) ? j - 1 : 0; -+ js.j_njobs = j; - js.j_jobslots = nsize; - -- free (jobs); -- jobs = nlist; -+ /* Zero out remaining slots in new jobs list */ -+ for ( ; j < nsize; j++) -+ nlist[j] = (JOB *)NULL; -+ -+ if (jobs != nlist) -+ { -+ free (jobs); -+ jobs = nlist; -+ } -+ -+ if (ncur != NO_JOB) -+ js.j_current = ncur; -+ if (nprev != NO_JOB) -+ js.j_previous = nprev; -+ -+ /* Need to reset these */ -+ if (js.j_current == NO_JOB || js.j_previous == NO_JOB || js.j_current > js.j_lastj || js.j_previous > js.j_lastj) -+ reset_current (); -+ -+#ifdef DEBUG -+ itrace ("realloc_jobs_list: reset js.j_current (%d) and js.j_previous (%d)", js.j_current, js.j_previous); -+#endif - - UNBLOCK_CHILD (oset); - } -@@ -1655,7 +1693,7 @@ - In this case, we don't want to give the terminal to the - shell's process group (we could be in the middle of a - pipeline, for example). */ -- if (async_p == 0 && pipeline_pgrp != shell_pgrp) -+ if (async_p == 0 && pipeline_pgrp != shell_pgrp && ((subshell_environment&SUBSHELL_ASYNC) == 0)) - give_terminal_to (pipeline_pgrp, 0); - - #if defined (PGRP_PIPE) -@@ -2198,7 +2236,11 @@ - /* This is possibly a race condition -- should it go in stop_pipeline? */ - wait_sigint_received = 0; - if (job_control == 0) -- old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler); -+ { -+ old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler); -+ if (old_sigint_handler == SIG_IGN) -+ set_signal_handler (SIGINT, old_sigint_handler); -+ } - - termination_state = last_command_exit_value; - -diff -Naur bash-3.1.orig/lib/glob/glob.c bash-3.1/lib/glob/glob.c ---- bash-3.1.orig/lib/glob/glob.c 2005-03-24 09:42:27.000000000 -0800 -+++ bash-3.1/lib/glob/glob.c 2006-04-19 15:58:34.000000000 -0700 -@@ -360,6 +360,7 @@ - count = lose = skip = 0; - - firstmalloc = 0; -+ nalloca = 0; - - /* If PAT is empty, skip the loop, but return one (empty) filename. */ - if (pat == 0 || *pat == '\0') -@@ -546,6 +547,8 @@ - firstmalloc = 0; - tmplink = lastlink; - } -+ else -+ tmplink = 0; - free (lastlink->name); - lastlink = lastlink->next; - FREE (tmplink); -diff -Naur bash-3.1.orig/lib/glob/sm_loop.c bash-3.1/lib/glob/sm_loop.c ---- bash-3.1.orig/lib/glob/sm_loop.c 2005-10-16 18:21:04.000000000 -0700 -+++ bash-3.1/lib/glob/sm_loop.c 2006-04-19 15:58:34.000000000 -0700 -@@ -638,12 +638,13 @@ - CHAR *psub; /* pointer to sub-pattern */ - CHAR *pnext; /* pointer to next sub-pattern */ - CHAR *srest; /* pointer to rest of string */ -- int m1, m2; -+ int m1, m2, xflags; /* xflags = flags passed to recursive matches */ - - #if DEBUG_MATCHING - fprintf(stderr, "extmatch: xc = %c\n", xc); - fprintf(stderr, "extmatch: s = %s; se = %s\n", s, se); - fprintf(stderr, "extmatch: p = %s; pe = %s\n", p, pe); -+fprintf(stderr, "extmatch: flags = %d\n", flags); - #endif - - prest = PATSCAN (p + (*p == L('(')), pe, 0); /* ) */ -@@ -677,8 +678,12 @@ - string matches the rest of the pattern. Also handle - multiple matches of the pattern. */ - if (m1) -- m2 = (GMATCH (srest, se, prest, pe, flags) == 0) || -- (s != srest && GMATCH (srest, se, p - 1, pe, flags) == 0); -+ { -+ /* if srest > s, we are not at start of string */ -+ xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags; -+ m2 = (GMATCH (srest, se, prest, pe, xflags) == 0) || -+ (s != srest && GMATCH (srest, se, p - 1, pe, xflags) == 0); -+ } - if (m1 && m2) - return (0); - } -@@ -704,8 +709,10 @@ - srest = (prest == pe) ? se : s; - for ( ; srest <= se; srest++) - { -+ /* if srest > s, we are not at start of string */ -+ xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags; - if (GMATCH (s, srest, psub, pnext - 1, flags) == 0 && -- GMATCH (srest, se, prest, pe, flags) == 0) -+ GMATCH (srest, se, prest, pe, xflags) == 0) - return (0); - } - if (pnext == prest) -@@ -726,7 +733,9 @@ - if (pnext == prest) - break; - } -- if (m1 == 0 && GMATCH (srest, se, prest, pe, flags) == 0) -+ /* if srest > s, we are not at start of string */ -+ xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags; -+ if (m1 == 0 && GMATCH (srest, se, prest, pe, xflags) == 0) - return (0); - } - return (FNM_NOMATCH); -diff -Naur bash-3.1.orig/lib/readline/display.c bash-3.1/lib/readline/display.c ---- bash-3.1.orig/lib/readline/display.c 2005-11-30 11:05:02.000000000 -0800 -+++ bash-3.1/lib/readline/display.c 2006-04-19 15:58:34.000000000 -0700 -@@ -1983,11 +1983,15 @@ - int pchar; - { - int len; -- char *pmt; -+ char *pmt, *p; - - rl_save_prompt (); - -- if (saved_local_prompt == 0) -+ /* We've saved the prompt, and can do anything with the various prompt -+ strings we need before they're restored. We want the unexpanded -+ portion of the prompt string after any final newline. */ -+ p = rl_prompt ? strrchr (rl_prompt, '\n') : 0; -+ if (p == 0) - { - len = (rl_prompt && *rl_prompt) ? strlen (rl_prompt) : 0; - pmt = (char *)xmalloc (len + 2); -@@ -1998,19 +2002,17 @@ - } - else - { -- len = *saved_local_prompt ? strlen (saved_local_prompt) : 0; -+ p++; -+ len = strlen (p); - pmt = (char *)xmalloc (len + 2); - if (len) -- strcpy (pmt, saved_local_prompt); -+ strcpy (pmt, p); - pmt[len] = pchar; - pmt[len+1] = '\0'; -- local_prompt = savestring (pmt); -- prompt_last_invisible = saved_last_invisible; -- prompt_visible_length = saved_visible_length + 1; -- } -+ } - -+ /* will be overwritten by expand_prompt, called from rl_message */ - prompt_physical_chars = saved_physical_chars + 1; -- - return pmt; - } - -diff -Naur bash-3.1.orig/lib/readline/readline.c bash-3.1/lib/readline/readline.c ---- bash-3.1.orig/lib/readline/readline.c 2005-07-04 19:29:35.000000000 -0700 -+++ bash-3.1/lib/readline/readline.c 2006-04-19 15:58:34.000000000 -0700 -@@ -282,6 +282,7 @@ - { - FREE (rl_prompt); - rl_prompt = prompt ? savestring (prompt) : (char *)NULL; -+ rl_display_prompt = rl_prompt ? rl_prompt : ""; - - rl_visible_prompt_length = rl_expand_prompt (rl_prompt); - return 0; -diff -Naur bash-3.1.orig/lib/readline/terminal.c bash-3.1/lib/readline/terminal.c ---- bash-3.1.orig/lib/readline/terminal.c 2005-11-12 17:46:54.000000000 -0800 -+++ bash-3.1/lib/readline/terminal.c 2006-04-19 15:58:34.000000000 -0700 -@@ -122,7 +122,7 @@ - static char *_rl_visible_bell; - - /* Non-zero means the terminal can auto-wrap lines. */ --int _rl_term_autowrap; -+int _rl_term_autowrap = -1; - - /* Non-zero means that this terminal has a meta key. */ - static int term_has_meta; -@@ -274,6 +274,9 @@ - _rl_set_screen_size (rows, cols) - int rows, cols; - { -+ if (_rl_term_autowrap == -1) -+ _rl_init_terminal_io (rl_terminal_name); -+ - if (rows > 0) - _rl_screenheight = rows; - if (cols > 0) -diff -Naur bash-3.1.orig/parse.y bash-3.1/parse.y ---- bash-3.1.orig/parse.y 2005-11-11 20:14:18.000000000 -0800 -+++ bash-3.1/parse.y 2006-04-19 15:58:34.000000000 -0700 -@@ -2716,6 +2716,7 @@ - #define P_ALLOWESC 0x02 - #define P_DQUOTE 0x04 - #define P_COMMAND 0x08 /* parsing a command, so look for comments */ -+#define P_BACKQUOTE 0x10 /* parsing a backquoted command substitution */ - - static char matched_pair_error; - static char * -@@ -2725,12 +2726,12 @@ - int *lenp, flags; - { - int count, ch, was_dollar, in_comment, check_comment; -- int pass_next_character, nestlen, ttranslen, start_lineno; -+ int pass_next_character, backq_backslash, nestlen, ttranslen, start_lineno; - char *ret, *nestret, *ttrans; - int retind, retsize, rflags; - - count = 1; -- pass_next_character = was_dollar = in_comment = 0; -+ pass_next_character = backq_backslash = was_dollar = in_comment = 0; - check_comment = (flags & P_COMMAND) && qc != '\'' && qc != '"' && (flags & P_DQUOTE) == 0; - - /* RFLAGS is the set of flags we want to pass to recursive calls. */ -@@ -2742,11 +2743,8 @@ - start_lineno = line_number; - while (count) - { --#if 0 -- ch = shell_getc ((qc != '\'' || (flags & P_ALLOWESC)) && pass_next_character == 0); --#else -- ch = shell_getc (qc != '\'' && pass_next_character == 0); --#endif -+ ch = shell_getc (qc != '\'' && pass_next_character == 0 && backq_backslash == 0); -+ - if (ch == EOF) - { - free (ret); -@@ -2771,9 +2769,16 @@ - continue; - } - /* Not exactly right yet */ -- else if (check_comment && in_comment == 0 && ch == '#' && (retind == 0 || ret[retind-1] == '\n' || whitespace (ret[retind -1]))) -+ else if MBTEST(check_comment && in_comment == 0 && ch == '#' && (retind == 0 || ret[retind-1] == '\n' || whitespace (ret[retind - 1]))) - in_comment = 1; - -+ /* last char was backslash inside backquoted command substitution */ -+ if (backq_backslash) -+ { -+ backq_backslash = 0; -+ /* Placeholder for adding special characters */ -+ } -+ - if (pass_next_character) /* last char was backslash */ - { - pass_next_character = 0; -@@ -2814,6 +2819,8 @@ - { - if MBTEST((flags & P_ALLOWESC) && ch == '\\') - pass_next_character++; -+ else if MBTEST((flags & P_BACKQUOTE) && ch == '\\') -+ backq_backslash++; - continue; - } - -@@ -2898,7 +2905,11 @@ - } - else if MBTEST(qc == '`' && (ch == '"' || ch == '\'') && in_comment == 0) - { -- nestret = parse_matched_pair (0, ch, ch, &nestlen, rflags); -+ /* Add P_BACKQUOTE so backslash quotes the next character and -+ shell_getc does the right thing with \. We do this for -+ a measure of backwards compatibility -- it's not strictly the -+ right POSIX thing. */ -+ nestret = parse_matched_pair (0, ch, ch, &nestlen, rflags|P_BACKQUOTE); - goto add_nestret; - } - else if MBTEST(was_dollar && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */ -@@ -2907,7 +2918,7 @@ - if (open == ch) /* undo previous increment */ - count--; - if (ch == '(') /* ) */ -- nestret = parse_matched_pair (0, '(', ')', &nestlen, rflags); -+ nestret = parse_matched_pair (0, '(', ')', &nestlen, rflags & ~P_DQUOTE); - else if (ch == '{') /* } */ - nestret = parse_matched_pair (0, '{', '}', &nestlen, P_FIRSTCLOSE|rflags); - else if (ch == '[') /* ] */ -@@ -3578,7 +3589,7 @@ - FREE (ttok); - all_digit_token = 0; - compound_assignment = 1; --#if 0 -+#if 1 - goto next_character; - #else - goto got_token; /* ksh93 seems to do this */ -@@ -3695,7 +3706,9 @@ - struct builtin *b; - b = builtin_address_internal (token, 0); - if (b && (b->flags & ASSIGNMENT_BUILTIN)) -- parser_state |= PST_ASSIGNOK; -+ parser_state |= PST_ASSIGNOK; -+ else if (STREQ (token, "eval") || STREQ (token, "let")) -+ parser_state |= PST_ASSIGNOK; - } - - yylval.word = the_word; -@@ -4686,18 +4699,21 @@ - int *retlenp; - { - WORD_LIST *wl, *rl; -- int tok, orig_line_number, orig_token_size; -+ int tok, orig_line_number, orig_token_size, orig_last_token, assignok; - char *saved_token, *ret; - - saved_token = token; - orig_token_size = token_buffer_size; - orig_line_number = line_number; -+ orig_last_token = last_read_token; - - last_read_token = WORD; /* WORD to allow reserved words here */ - - token = (char *)NULL; - token_buffer_size = 0; - -+ assignok = parser_state&PST_ASSIGNOK; /* XXX */ -+ - wl = (WORD_LIST *)NULL; /* ( */ - parser_state |= PST_COMPASSIGN; - -@@ -4740,7 +4756,7 @@ - jump_to_top_level (DISCARD); - } - -- last_read_token = WORD; -+ last_read_token = orig_last_token; /* XXX - was WORD? */ - if (wl) - { - rl = REVERSE_LIST (wl, WORD_LIST *); -@@ -4752,6 +4768,10 @@ - - if (retlenp) - *retlenp = (ret && *ret) ? strlen (ret) : 0; -+ -+ if (assignok) -+ parser_state |= PST_ASSIGNOK; -+ - return ret; - } - -diff -Naur bash-3.1.orig/patchlevel.h bash-3.1/patchlevel.h ---- bash-3.1.orig/patchlevel.h 2005-07-20 10:58:20.000000000 -0700 -+++ bash-3.1/patchlevel.h 2006-04-19 15:59:29.000000000 -0700 -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 0 -+#define PATCHLEVEL 17 - - #endif /* _PATCHLEVEL_H_ */ -diff -Naur bash-3.1.orig/subst.c bash-3.1/subst.c ---- bash-3.1.orig/subst.c 2005-10-24 06:51:13.000000000 -0700 -+++ bash-3.1/subst.c 2006-04-19 15:59:29.000000000 -0700 -@@ -2187,7 +2187,7 @@ - if (mklocal && variable_context) - { - v = find_variable (name); -- if (v == 0 || array_p (v) == 0) -+ if (v == 0 || array_p (v) == 0 || v->context != variable_context) - v = make_local_array_variable (name); - v = assign_array_var_from_string (v, value, flags); - } -@@ -2575,6 +2575,13 @@ - return (expand_string_to_string_internal (string, quoted, expand_string_assignment)); - } - -+char * -+expand_arith_string (string, quoted) -+ char *string; -+{ -+ return (expand_string_if_necessary (string, quoted, expand_string)); -+} -+ - #if defined (COND_COMMAND) - /* Just remove backslashes in STRING. Returns a new string. */ - char * -@@ -5248,7 +5255,7 @@ - else - t = (char *)0; - -- temp1 = expand_string_if_necessary (substr, Q_DOUBLE_QUOTES, expand_string); -+ temp1 = expand_arith_string (substr, Q_DOUBLE_QUOTES); - *e1p = evalexp (temp1, &expok); - free (temp1); - if (expok == 0) -@@ -5293,7 +5300,7 @@ - { - t++; - temp2 = savestring (t); -- temp1 = expand_string_if_necessary (temp2, Q_DOUBLE_QUOTES, expand_string); -+ temp1 = expand_arith_string (temp2, Q_DOUBLE_QUOTES); - free (temp2); - t[-1] = ':'; - *e2p = evalexp (temp1, &expok); -@@ -6435,7 +6442,7 @@ - temp2[t_index] = '\0'; - - /* Expand variables found inside the expression. */ -- temp1 = expand_string_if_necessary (temp2, Q_DOUBLE_QUOTES, expand_string); -+ temp1 = expand_arith_string (temp2, Q_DOUBLE_QUOTES); - free (temp2); - - arithsub: -@@ -6477,7 +6484,7 @@ - zindex = t_index; - - /* Do initial variable expansion. */ -- temp1 = expand_string_if_necessary (temp, Q_DOUBLE_QUOTES, expand_string); -+ temp1 = expand_arith_string (temp, Q_DOUBLE_QUOTES); - - goto arithsub; - -@@ -6795,6 +6802,12 @@ - if (temp && *temp && t_index > 0) - { - temp1 = bash_tilde_expand (temp, tflag); -+ if (temp1 && *temp1 == '~' && STREQ (temp, temp1)) -+ { -+ FREE (temp); -+ FREE (temp1); -+ goto add_character; /* tilde expansion failed */ -+ } - free (temp); - temp = temp1; - sindex += t_index; -diff -Naur bash-3.1.orig/subst.h bash-3.1/subst.h ---- bash-3.1.orig/subst.h 2004-11-07 12:12:28.000000000 -0800 -+++ bash-3.1/subst.h 2006-04-19 15:59:29.000000000 -0700 -@@ -151,6 +151,9 @@ - extern char *expand_string_unsplit_to_string __P((char *, int)); - extern char *expand_assignment_string_to_string __P((char *, int)); - -+/* Expand an arithmetic expression string */ -+extern char *expand_arith_string __P((char *, int)); -+ - /* De-quoted quoted characters in STRING. */ - extern char *dequote_string __P((char *)); - -diff -Naur bash-3.1.orig/variables.c bash-3.1/variables.c ---- bash-3.1.orig/variables.c 2005-11-12 18:22:37.000000000 -0800 -+++ bash-3.1/variables.c 2006-04-19 15:58:34.000000000 -0700 -@@ -860,9 +860,11 @@ - { - char val[INT_STRLEN_BOUND(int) + 1], *v; - -+#if defined (READLINE) - /* If we are currently assigning to LINES or COLUMNS, don't do anything. */ - if (winsize_assignment) - return; -+#endif - - v = inttostr (lines, val, sizeof (val)); - bind_variable ("LINES", v, 0); diff --git a/src/patches/bash-3.1-login.patch b/src/patches/bash-3.1-login.patch deleted file mode 100644 index 8e950baa5..000000000 --- a/src/patches/bash-3.1-login.patch +++ /dev/null @@ -1,15 +0,0 @@ ---- bash-3.1/shell.c.login 2006-01-13 16:52:14.000000000 +0000 -+++ bash-3.1/shell.c 2006-01-13 16:52:15.000000000 +0000 -@@ -1543,9 +1543,10 @@ - any startup files; just try to be more like /bin/sh. */ - shell_name = argv0 ? base_pathname (argv0) : PROGRAM; - -- if (*shell_name == '-') -+ if (argv0 && *argv0 == '-') - { -- shell_name++; -+ if (*shell_name == '-') -+ shell_name++; - login_shell++; - } - diff --git a/src/patches/bash/bash32-001 b/src/patches/bash/bash32-001 new file mode 100644 index 000000000..b7d1f1e07 --- /dev/null +++ b/src/patches/bash/bash32-001 @@ -0,0 +1,47 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-001 + +Bug-Reported-by: Greg Schafer +Bug-Reference-ID: <20061012084940.GA15768@tigers.local> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-10/msg00046.html + +Bug-Description: + +When using historical ``-style command substitution, bash incorrectly attempts +to interpret shell comments while scanning for the closing backquote. + +Patch: + +*** ../bash-3.2/parse.y Tue Sep 19 16:37:21 2006 +--- parse.y Thu Oct 12 10:30:57 2006 +*************** +*** 2736,2740 **** + count = 1; + pass_next_character = backq_backslash = was_dollar = in_comment = 0; +! check_comment = (flags & P_COMMAND) && qc != '\'' && qc != '"' && (flags & P_DQUOTE) == 0; + + /* RFLAGS is the set of flags we want to pass to recursive calls. */ +--- 2736,2740 ---- + count = 1; + pass_next_character = backq_backslash = was_dollar = in_comment = 0; +! check_comment = (flags & P_COMMAND) && qc != '`' && qc != '\'' && qc != '"' && (flags & P_DQUOTE) == 0; + + /* RFLAGS is the set of flags we want to pass to recursive calls. */ +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 0 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 1 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-002 b/src/patches/bash/bash32-002 new file mode 100644 index 000000000..b934df9fa --- /dev/null +++ b/src/patches/bash/bash32-002 @@ -0,0 +1,48 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-002 + +Bug-Reported-by: Jim Gifford +Bug-Reference-ID: <12j2pc3aq35mb04@corp.supernews.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-10/msg00082.html + +Bug-Description: + +An incorrect encoding specification in the Content-Type header causes msgfmt +to fail, which causes `make install' to fail. + +Patch: + +*** ../bash-3.2/po/ru.po Tue Jan 10 17:51:03 2006 +--- po/ru.po Mon Oct 16 15:13:23 2006 +*************** +*** 13,17 **** + "Language-Team: Russian \n" + "MIME-Version: 1.0\n" +! "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +--- 13,17 ---- + "Language-Team: Russian \n" + "MIME-Version: 1.0\n" +! "Content-Type: text/plain; charset=KOI8-R\n" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 1 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 2 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-003 b/src/patches/bash/bash32-003 new file mode 100644 index 000000000..922041b4a --- /dev/null +++ b/src/patches/bash/bash32-003 @@ -0,0 +1,147 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-003 + +Bug-Reported-by: John Gatewood Ham +Bug-Reference-ID: +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-10/msg00045.html + +Bug-Description: + +When using the conditional command's `=~' operator to match regular +expressions, the parser did not skip over shell metacharacters in the +regular expression, leading to syntax errors. + +Patch: + +*** ../bash-3.2-patched/parse.y Tue Oct 17 11:45:20 2006 +--- parse.y Sat Oct 14 14:56:16 2006 +*************** +*** 1029,1034 **** +--- 1029,1035 ---- + #define PST_CMDTOKEN 0x1000 /* command token OK - unused */ + #define PST_COMPASSIGN 0x2000 /* parsing x=(...) compound assignment */ + #define PST_ASSIGNOK 0x4000 /* assignment statement ok in this context */ ++ #define PST_REGEXP 0x8000 /* parsing an ERE/BRE as a single word */ + + /* Initial size to allocate for tokens, and the + amount to grow them by. */ +*************** +*** 2591,2596 **** +--- 2592,2600 ---- + return (character); + } + ++ if (parser_state & PST_REGEXP) ++ goto tokword; ++ + /* Shell meta-characters. */ + if MBTEST(shellmeta (character) && ((parser_state & PST_DBLPAREN) == 0)) + { +*************** +*** 2698,2703 **** +--- 2702,2708 ---- + if MBTEST(character == '-' && (last_read_token == LESS_AND || last_read_token == GREATER_AND)) + return (character); + ++ tokword: + /* Okay, if we got this far, we have to read a word. Read one, + and then check it against the known ones. */ + result = read_token_word (character); +*************** +*** 3202,3209 **** + if (tok == WORD && test_binop (yylval.word->word)) + op = yylval.word; + #if defined (COND_REGEXP) +! else if (tok == WORD && STREQ (yylval.word->word,"=~")) +! op = yylval.word; + #endif + else if (tok == '<' || tok == '>') + op = make_word_from_token (tok); /* ( */ +--- 3207,3217 ---- + if (tok == WORD && test_binop (yylval.word->word)) + op = yylval.word; + #if defined (COND_REGEXP) +! else if (tok == WORD && STREQ (yylval.word->word, "=~")) +! { +! op = yylval.word; +! parser_state |= PST_REGEXP; +! } + #endif + else if (tok == '<' || tok == '>') + op = make_word_from_token (tok); /* ( */ +*************** +*** 3234,3239 **** +--- 3242,3248 ---- + + /* rhs */ + tok = read_token (READ); ++ parser_state &= ~PST_REGEXP; + if (tok == WORD) + { + tright = make_cond_node (COND_TERM, yylval.word, (COND_COM *)NULL, (COND_COM *)NULL); +*************** +*** 3419,3427 **** + goto next_character; + } + + #ifdef EXTENDED_GLOB + /* Parse a ksh-style extended pattern matching specification. */ +! if (extended_glob && PATTERN_CHAR (character)) + { + peek_char = shell_getc (1); + if MBTEST(peek_char == '(') /* ) */ +--- 3428,3461 ---- + goto next_character; + } + ++ #ifdef COND_REGEXP ++ /* When parsing a regexp as a single word inside a conditional command, ++ we need to special-case characters special to both the shell and ++ regular expressions. Right now, that is only '(' and '|'. */ /*)*/ ++ if MBTEST((parser_state & PST_REGEXP) && (character == '(' || character == '|')) /*)*/ ++ { ++ if (character == '|') ++ goto got_character; ++ ++ push_delimiter (dstack, character); ++ ttok = parse_matched_pair (cd, '(', ')', &ttoklen, 0); ++ pop_delimiter (dstack); ++ if (ttok == &matched_pair_error) ++ return -1; /* Bail immediately. */ ++ RESIZE_MALLOCED_BUFFER (token, token_index, ttoklen + 2, ++ token_buffer_size, TOKEN_DEFAULT_GROW_SIZE); ++ token[token_index++] = character; ++ strcpy (token + token_index, ttok); ++ token_index += ttoklen; ++ FREE (ttok); ++ dollar_present = all_digit_token = 0; ++ goto next_character; ++ } ++ #endif /* COND_REGEXP */ ++ + #ifdef EXTENDED_GLOB + /* Parse a ksh-style extended pattern matching specification. */ +! if MBTEST(extended_glob && PATTERN_CHAR (character)) + { + peek_char = shell_getc (1); + if MBTEST(peek_char == '(') /* ) */ + +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 2 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 3 + + #endif /* _PATCHLEVEL_H_ */ + diff --git a/src/patches/bash/bash32-004 b/src/patches/bash/bash32-004 new file mode 100644 index 000000000..cd2accfa3 --- /dev/null +++ b/src/patches/bash/bash32-004 @@ -0,0 +1,96 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-004 + +Bug-Reported-by: Stuart Shelton +Bug-Reference-ID: <619141e40610261203y6cda5aa6i23cb24c7aeba996e@mail.gmail.com> +Bug-Reference-URL: + +Bug-Description: + +A bug in the parameter pattern substitution implementation treated a pattern +whose first character was `/' (after expansion) as specifying global +replacement. + +Patch: + +*** ../bash-3.2/subst.c Tue Sep 19 08:35:09 2006 +--- subst.c Thu Oct 26 09:17:50 2006 +*************** +*** 5707,5712 **** +--- 5707,5717 ---- + vtype &= ~VT_STARSUB; + + mflags = 0; ++ if (patsub && *patsub == '/') ++ { ++ mflags |= MATCH_GLOBREP; ++ patsub++; ++ } + + /* Malloc this because expand_string_if_necessary or one of the expansion + functions in its call chain may free it on a substitution error. */ +*************** +*** 5741,5753 **** + } + + /* ksh93 doesn't allow the match specifier to be a part of the expanded +! pattern. This is an extension. */ + p = pat; +! if (pat && pat[0] == '/') +! { +! mflags |= MATCH_GLOBREP|MATCH_ANY; +! p++; +! } + else if (pat && pat[0] == '#') + { + mflags |= MATCH_BEG; +--- 5746,5757 ---- + } + + /* ksh93 doesn't allow the match specifier to be a part of the expanded +! pattern. This is an extension. Make sure we don't anchor the pattern +! at the beginning or end of the string if we're doing global replacement, +! though. */ + p = pat; +! if (mflags & MATCH_GLOBREP) +! mflags |= MATCH_ANY; + else if (pat && pat[0] == '#') + { + mflags |= MATCH_BEG; +*** ../bash-3.2/tests/new-exp.right Thu Aug 10 12:00:00 2006 +--- tests/new-exp.right Sun Oct 29 16:03:36 2006 +*************** +*** 430,436 **** + Case06---1---A B C::--- + Case07---3---A:B:C--- + Case08---3---A:B:C--- +! ./new-exp.tests: line 506: /${$(($#-1))}: bad substitution + argv[1] = + argv[2] = + argv[3] = +--- 430,436 ---- + Case06---1---A B C::--- + Case07---3---A:B:C--- + Case08---3---A:B:C--- +! ./new-exp.tests: line 506: ${$(($#-1))}: bad substitution + argv[1] = + argv[2] = + argv[3] = +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 3 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 4 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-005 b/src/patches/bash/bash32-005 new file mode 100644 index 000000000..903ec5840 --- /dev/null +++ b/src/patches/bash/bash32-005 @@ -0,0 +1,223 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-005 + +Bug-Reported-by: Stuart Shelton +Bug-Reference-ID: <453F7CC8.6030907@openobjects.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-10/msg00127.html + +Bug-Description: + +A missing extern declaration for `asprintf' caused `double' arguments to be +passed as `0', leading to incorrect results. Additionally, a bug in the +replacement asprintf/snprintf function caused an infinite loop when passed +0 arguments to the floating point conversions under some circumstances. + +Patch: + +*** ../bash-3.2/builtins/printf.def Mon Sep 18 08:48:42 2006 +--- builtins/printf.def Tue Oct 31 08:19:44 2006 +*************** +*** 49,54 **** +--- 49,60 ---- + # define INT_MIN (-2147483647-1) + #endif + ++ #if defined (PREFER_STDARG) ++ # include ++ #else ++ # include ++ #endif ++ + #include + #include + +*************** +*** 151,156 **** +--- 157,166 ---- + #define SKIP1 "#'-+ 0" + #define LENMODS "hjlLtz" + ++ #ifndef HAVE_ASPRINTF ++ extern int asprintf __P((char **, const char *, ...)) __attribute__((__format__ (printf, 2, 3))); ++ #endif ++ + static void printf_erange __P((char *)); + static int printstr __P((char *, char *, int, int, int)); + static int tescape __P((char *, char *, int *)); + + +*** ../bash-3.2/lib/sh/snprintf.c Thu Apr 6 09:48:40 2006 +--- lib/sh/snprintf.c Sat Oct 28 00:00:13 2006 +*************** +*** 471,476 **** +--- 476,483 ---- + 10^x ~= r + * log_10(200) = 2; + * log_10(250) = 2; ++ * ++ * NOTE: do not call this with r == 0 -- an infinite loop results. + */ + static int + log_10(r) +*************** +*** 576,583 **** + { + integral_part[0] = '0'; + integral_part[1] = '\0'; +! fraction_part[0] = '0'; +! fraction_part[1] = '\0'; + if (fract) + *fract = fraction_part; + return integral_part; +--- 583,593 ---- + { + integral_part[0] = '0'; + integral_part[1] = '\0'; +! /* The fractional part has to take the precision into account */ +! for (ch = 0; ch < precision-1; ch++) +! fraction_part[ch] = '0'; +! fraction_part[ch] = '0'; +! fraction_part[ch+1] = '\0'; + if (fract) + *fract = fraction_part; + return integral_part; +*************** +*** 805,810 **** +--- 815,821 ---- + PUT_CHAR(*tmp, p); + tmp++; + } ++ + PAD_LEFT(p); + } + +*************** +*** 972,982 **** + if ((p->flags & PF_THOUSANDS) && grouping && (t = groupnum (tmp))) + tmp = t; + + /* calculate the padding. 1 for the dot */ + p->width = p->width - + ((d > 0. && p->justify == RIGHT) ? 1:0) - + ((p->flags & PF_SPACE) ? 1:0) - +! strlen(tmp) - p->precision - 1; + PAD_RIGHT(p); + PUT_PLUS(d, p, 0.); + PUT_SPACE(d, p, 0.); +--- 983,1003 ---- + if ((p->flags & PF_THOUSANDS) && grouping && (t = groupnum (tmp))) + tmp = t; + ++ if ((*p->pf == 'g' || *p->pf == 'G') && (p->flags & PF_ALTFORM) == 0) ++ { ++ /* smash the trailing zeros unless altform */ ++ for (i = strlen(tmp2) - 1; i >= 0 && tmp2[i] == '0'; i--) ++ tmp2[i] = '\0'; ++ if (tmp2[0] == '\0') ++ p->precision = 0; ++ } ++ + /* calculate the padding. 1 for the dot */ + p->width = p->width - + ((d > 0. && p->justify == RIGHT) ? 1:0) - + ((p->flags & PF_SPACE) ? 1:0) - +! strlen(tmp) - p->precision - +! ((p->precision != 0 || (p->flags & PF_ALTFORM)) ? 1 : 0); /* radix char */ + PAD_RIGHT(p); + PUT_PLUS(d, p, 0.); + PUT_SPACE(d, p, 0.); +*************** +*** 991,1001 **** + if (p->precision != 0 || (p->flags & PF_ALTFORM)) + PUT_CHAR(decpoint, p); /* put the '.' */ + +- if ((*p->pf == 'g' || *p->pf == 'G') && (p->flags & PF_ALTFORM) == 0) +- /* smash the trailing zeros unless altform */ +- for (i = strlen(tmp2) - 1; i >= 0 && tmp2[i] == '0'; i--) +- tmp2[i] = '\0'; +- + for (; *tmp2; tmp2++) + PUT_CHAR(*tmp2, p); /* the fraction */ + +--- 1012,1017 ---- +*************** +*** 1011,1024 **** + char *tmp, *tmp2; + int j, i; + +! if (chkinfnan(p, d, 1) || chkinfnan(p, d, 2)) + return; /* already printed nan or inf */ + + GETLOCALEDATA(decpoint, thoussep, grouping); + DEF_PREC(p); +! j = log_10(d); +! d = d / pow_10(j); /* get the Mantissa */ +! d = ROUND(d, p); + tmp = dtoa(d, p->precision, &tmp2); + + /* 1 for unit, 1 for the '.', 1 for 'e|E', +--- 1027,1045 ---- + char *tmp, *tmp2; + int j, i; + +! if (d != 0 && (chkinfnan(p, d, 1) || chkinfnan(p, d, 2))) + return; /* already printed nan or inf */ + + GETLOCALEDATA(decpoint, thoussep, grouping); + DEF_PREC(p); +! if (d == 0.) +! j = 0; +! else +! { +! j = log_10(d); +! d = d / pow_10(j); /* get the Mantissa */ +! d = ROUND(d, p); +! } + tmp = dtoa(d, p->precision, &tmp2); + + /* 1 for unit, 1 for the '.', 1 for 'e|E', +*************** +*** 1076,1081 **** +--- 1097,1103 ---- + PUT_CHAR(*tmp, p); + tmp++; + } ++ + PAD_LEFT(p); + } + #endif +*************** +*** 1358,1364 **** + STAR_ARGS(data); + DEF_PREC(data); + d = GETDOUBLE(data); +! i = log_10(d); + /* + * for '%g|%G' ANSI: use f if exponent + * is in the range or [-4,p] exclusively +--- 1380,1386 ---- + STAR_ARGS(data); + DEF_PREC(data); + d = GETDOUBLE(data); +! i = (d != 0.) ? log_10(d) : -1; + /* + * for '%g|%G' ANSI: use f if exponent + * is in the range or [-4,p] exclusively +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 4 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 5 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-006 b/src/patches/bash/bash32-006 new file mode 100644 index 000000000..589db9e59 --- /dev/null +++ b/src/patches/bash/bash32-006 @@ -0,0 +1,45 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-006 + +Bug-Reported-by: ebb9@byu.net +Bug-Reference-ID: <45540862.9030900@byu.net> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-11/msg00017.html + http://lists.gnu.org/archive/html/bug-bash/2006-11/msg00016.html + +Bug-Description: + +In some cases, code that is intended to be used in the presence of multibyte +characters is called when no such characters are present, leading to incorrect +display position calculations and incorrect redisplay. + +Patch: + +*** ../bash-3.2-patched/lib/readline/display.c Thu Sep 14 14:20:12 2006 +--- lib/readline/display.c Mon Nov 13 17:55:57 2006 +*************** +*** 2381,2384 **** +--- 2409,2414 ---- + if (end <= start) + return 0; ++ if (MB_CUR_MAX == 1 || rl_byte_oriented) ++ return (end - start); + + memset (&ps, 0, sizeof (mbstate_t)); +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 5 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 6 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-007 b/src/patches/bash/bash32-007 new file mode 100644 index 000000000..9b86f4af7 --- /dev/null +++ b/src/patches/bash/bash32-007 @@ -0,0 +1,55 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-007 + +Bug-Reported-by: jidanni@jidanni.org +Bug-Reference-ID: +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-11/msg00039.html + +Bug-Description: + +When removing the current or previous job from the jobs list, bash incorrectly +resets the current job under some circumstances. + +Patch: + +*** ../bash-3.2-patched/jobs.c Sat Jul 29 16:40:48 2006 +--- jobs.c Fri Nov 24 14:50:01 2006 +*************** +*** 985,990 **** + if (temp == 0) + return; +- if (job_index == js.j_current || job_index == js.j_previous) +- reset_current (); + + if ((dflags & DEL_NOBGPID) == 0) +--- 985,988 ---- +*************** +*** 1029,1032 **** +--- 1027,1033 ---- + else if (jobs[js.j_firstj] == 0 || jobs[js.j_lastj] == 0) + reset_job_indices (); ++ ++ if (job_index == js.j_current || job_index == js.j_previous) ++ reset_current (); + } + +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 6 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 7 + + #endif /* _PATCHLEVEL_H_ */ + + diff --git a/src/patches/bash/bash32-008 b/src/patches/bash/bash32-008 new file mode 100644 index 000000000..7ec07ffe6 --- /dev/null +++ b/src/patches/bash/bash32-008 @@ -0,0 +1,48 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-008 + +Bug-Reported-by: Linda Walsh +Bug-Reference-ID: <456041FD.8000605@tlinx.org> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-11/msg00040.html + +Bug-Description: + +When checking pathnames from the command hash table (e.g., when the `checkhash' +shell option is enabled), a bug causes bash to delete and re-lookup each +command. + +Patch: + +*** ../bash-3.2-patched/findcmd.c Wed Aug 17 16:49:54 2005 +--- findcmd.c Fri Nov 24 10:48:37 2006 +*************** +*** 309,313 **** + { + st = file_status (hashed_file); +! if ((st ^ (FS_EXISTS | FS_EXECABLE)) != 0) + { + phash_remove (pathname); +--- 309,313 ---- + { + st = file_status (hashed_file); +! if ((st & (FS_EXISTS|FS_EXECABLE)) != (FS_EXISTS|FS_EXECABLE)) + { + phash_remove (pathname); +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 7 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 8 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-009 b/src/patches/bash/bash32-009 new file mode 100644 index 000000000..9cfd16e94 --- /dev/null +++ b/src/patches/bash/bash32-009 @@ -0,0 +1,61 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-009 + +Bug-Reported-by: James.M.Botte@lowes.com +Bug-Reference-ID: +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-12/msg00000.html + +Bug-Description: + +When using its built-in replacement for snprintf/asprintf, bash does not +treat the %x, %X, and %o format specifiers as unsigned numbers. + +Patch: + +*** ../bash-3.2-patched/lib/sh/snprintf.c Mon Nov 13 08:58:52 2006 +--- lib/sh/snprintf.c Wed Dec 6 11:15:04 2006 +*************** +*** 669,673 **** + + sd = d; /* signed for ' ' padding in base 10 */ +! flags = (*p->pf == 'u' || *p->pf == 'U') ? FL_UNSIGNED : 0; + if (*p->pf == 'X') + flags |= FL_HEXUPPER; +--- 674,679 ---- + + sd = d; /* signed for ' ' padding in base 10 */ +! flags = 0; +! flags = (*p->pf == 'x' || *p->pf == 'X' || *p->pf == 'o' || *p->pf == 'u' || *p->pf == 'U') ? FL_UNSIGNED : 0; + if (*p->pf == 'X') + flags |= FL_HEXUPPER; +*************** +*** 739,743 **** + + sd = d; /* signed for ' ' padding in base 10 */ +! flags = (*p->pf == 'u' || *p->pf == 'U') ? FL_UNSIGNED : 0; + if (*p->pf == 'X') + flags |= FL_HEXUPPER; +--- 745,749 ---- + + sd = d; /* signed for ' ' padding in base 10 */ +! flags = (*p->pf == 'x' || *p->pf == 'X' || *p->pf == 'o' || *p->pf == 'u' || *p->pf == 'U') ? FL_UNSIGNED : 0; + if (*p->pf == 'X') + flags |= FL_HEXUPPER; +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 8 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 9 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-010 b/src/patches/bash/bash32-010 new file mode 100644 index 000000000..88de5758f --- /dev/null +++ b/src/patches/bash/bash32-010 @@ -0,0 +1,207 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-010 + +Bug-Reported-by: Ryan Waldron +Bug-Reference-ID: <20070119065603.546D011E9C@kansas.erebor.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-01/msg00059.html + +Bug-Description: + +The glibc implementation of regcomp/regexec does not allow backslashes to +escape "ordinary" pattern characters when matching. Bash used backslashes +to quote all characters when the pattern argument to the [[ special +command's =~ operator was quoted. This caused the match to fail on Linux +and other systems using GNU libc. + +Patch: + +*** ../bash-3.2.9/pathexp.h Sat Feb 19 17:23:18 2005 +--- pathexp.h Wed Jan 31 22:53:16 2007 +*************** +*** 1,5 **** + /* pathexp.h -- The shell interface to the globbing library. */ + +! /* Copyright (C) 1987-2005 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. +--- 1,5 ---- + /* pathexp.h -- The shell interface to the globbing library. */ + +! /* Copyright (C) 1987-2007 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. +*************** +*** 33,36 **** +--- 33,37 ---- + #define QGLOB_CVTNULL 0x01 /* convert QUOTED_NULL strings to '\0' */ + #define QGLOB_FILENAME 0x02 /* do correct quoting for matching filenames */ ++ #define QGLOB_REGEXP 0x04 /* quote an ERE for regcomp/regexec */ + + #if defined (EXTENDED_GLOB) +*** ../bash-3.2.9/pathexp.c Mon May 6 13:43:05 2002 +--- pathexp.c Mon Feb 26 16:59:23 2007 +*************** +*** 1,5 **** + /* pathexp.c -- The shell interface to the globbing library. */ + +! /* Copyright (C) 1995-2002 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. +--- 1,5 ---- + /* pathexp.c -- The shell interface to the globbing library. */ + +! /* Copyright (C) 1995-2007 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. +*************** +*** 111,114 **** +--- 111,141 ---- + } + ++ /* Return 1 if C is a character that is `special' in a POSIX ERE and needs to ++ be quoted to match itself. */ ++ static inline int ++ ere_char (c) ++ int c; ++ { ++ switch (c) ++ { ++ case '.': ++ case '[': ++ case '\\': ++ case '(': ++ case ')': ++ case '*': ++ case '+': ++ case '?': ++ case '{': ++ case '|': ++ case '^': ++ case '$': ++ return 1; ++ default: ++ return 0; ++ } ++ return (0); ++ } ++ + /* PATHNAME can contain characters prefixed by CTLESC; this indicates + that the character is to be quoted. We quote it here in the style +*************** +*** 143,146 **** +--- 170,175 ---- + if ((qflags & QGLOB_FILENAME) && pathname[i+1] == '/') + continue; ++ if ((qflags & QGLOB_REGEXP) && ere_char (pathname[i+1]) == 0) ++ continue; + temp[j++] = '\\'; + i++; +*** ../bash-3.2.9/subst.c Tue Nov 7 16:14:41 2006 +--- subst.c Wed Jan 31 23:09:58 2007 +*************** +*** 5,9 **** + beauty, but, hey, you're alright.'' */ + +! /* Copyright (C) 1987-2006 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. +--- 5,9 ---- + beauty, but, hey, you're alright.'' */ + +! /* Copyright (C) 1987-2007 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. +*************** +*** 2647,2655 **** + /* This needs better error handling. */ + /* Expand W for use as an argument to a unary or binary operator in a +! [[...]] expression. If SPECIAL is nonzero, this is the rhs argument + to the != or == operator, and should be treated as a pattern. In +! this case, we quote the string specially for the globbing code. The +! caller is responsible for removing the backslashes if the unquoted +! words is needed later. */ + char * + cond_expand_word (w, special) +--- 2647,2656 ---- + /* This needs better error handling. */ + /* Expand W for use as an argument to a unary or binary operator in a +! [[...]] expression. If SPECIAL is 1, this is the rhs argument + to the != or == operator, and should be treated as a pattern. In +! this case, we quote the string specially for the globbing code. If +! SPECIAL is 2, this is an rhs argument for the =~ operator, and should +! be quoted appropriately for regcomp/regexec. The caller is responsible +! for removing the backslashes if the unquoted word is needed later. */ + char * + cond_expand_word (w, special) +*************** +*** 2659,2662 **** +--- 2660,2664 ---- + char *r, *p; + WORD_LIST *l; ++ int qflags; + + if (w->word == 0 || w->word[0] == '\0') +*************** +*** 2673,2678 **** + else + { + p = string_list (l); +! r = quote_string_for_globbing (p, QGLOB_CVTNULL); + free (p); + } +--- 2675,2683 ---- + else + { ++ qflags = QGLOB_CVTNULL; ++ if (special == 2) ++ qflags |= QGLOB_REGEXP; + p = string_list (l); +! r = quote_string_for_globbing (p, qflags); + free (p); + } +*** ../bash-3.2.9/execute_cmd.c Sat Aug 26 00:23:17 2006 +--- execute_cmd.c Wed Jan 31 23:12:06 2007 +*************** +*** 1,5 **** + /* execute_cmd.c -- Execute a COMMAND structure. */ + +! /* Copyright (C) 1987-2005 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. +--- 1,5 ---- + /* execute_cmd.c -- Execute a COMMAND structure. */ + +! /* Copyright (C) 1987-2007 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. +*************** +*** 2547,2551 **** + if (arg1 == 0) + arg1 = nullstr; +! arg2 = cond_expand_word (cond->right->op, patmatch||rmatch); + if (arg2 == 0) + arg2 = nullstr; +--- 2547,2551 ---- + if (arg1 == 0) + arg1 = nullstr; +! arg2 = cond_expand_word (cond->right->op, rmatch ? 2 : (patmatch ? 1 : 0)); + if (arg2 == 0) + arg2 = nullstr; +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 9 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 10 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-011 b/src/patches/bash/bash32-011 new file mode 100644 index 000000000..c021f52f8 --- /dev/null +++ b/src/patches/bash/bash32-011 @@ -0,0 +1,138 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-011 + +Bug-Reported-by: Petr Sumbera +Bug-Reference-ID: <45AF5F4B.1020800@sun.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-01/msg00049.html + +Bug-Description: + +Under certain circumstances (loopback mounts), the bash getcwd does not +return correct results. This patch allows the use of the Solaris libc +getcwd even though it doesn't dynamically allocate memory. + +Run `touch configure' to make sure make doesn't try to run autoconf. +Then run configure with whatever options you like. + +Patch: + +*** ../bash-3.2-patched/configure.in Tue Sep 26 11:05:45 2006 +--- configure.in Wed Jan 31 09:48:00 2007 +*************** +*** 6,10 **** + dnl Process this file with autoconf to produce a configure script. + +! # Copyright (C) 1987-2006 Free Software Foundation, Inc. + + # This program is free software; you can redistribute it and/or modify +--- 6,10 ---- + dnl Process this file with autoconf to produce a configure script. + +! # Copyright (C) 1987-2007 Free Software Foundation, Inc. + + # This program is free software; you can redistribute it and/or modify +*************** +*** 992,996 **** + sco3.2*) LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;; + sunos4*) LOCAL_CFLAGS=-DSunOS4 ;; +! solaris2.5*) LOCAL_CFLAGS=-DSunOS5 ;; + lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; + linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading +--- 992,997 ---- + sco3.2*) LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;; + sunos4*) LOCAL_CFLAGS=-DSunOS4 ;; +! solaris2.5*) LOCAL_CFLAGS="-DSunOS5 -DSOLARIS" ;; +! solaris2*) LOCAL_CFLAGS=-DSOLARIS ;; + lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; + linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading +*** ../bash-3.2-patched/config-bot.h Tue Sep 12 16:43:04 2006 +--- config-bot.h Tue Mar 6 10:41:31 2007 +*************** +*** 2,6 **** + /* modify settings or make new ones based on what autoconf tells us. */ + +! /* Copyright (C) 1989-2002 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. +--- 2,6 ---- + /* modify settings or make new ones based on what autoconf tells us. */ + +! /* Copyright (C) 1989-2007 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. +*************** +*** 71,77 **** + #endif + +! /* If we have a getcwd(3), but it calls popen(), #undef HAVE_GETCWD so +! the replacement in getcwd.c will be built. */ +! #if defined (HAVE_GETCWD) && defined (GETCWD_BROKEN) + # undef HAVE_GETCWD + #endif +--- 71,79 ---- + #endif + +! /* If we have a getcwd(3), but one that does not dynamically allocate memory, +! #undef HAVE_GETCWD so the replacement in getcwd.c will be built. We do +! not do this on Solaris, because their implementation of loopback mounts +! breaks the traditional file system assumptions that getcwd uses. */ +! #if defined (HAVE_GETCWD) && defined (GETCWD_BROKEN) && !defined (SOLARIS) + # undef HAVE_GETCWD + #endif +*** ../bash-3.2-patched/builtins/common.c Thu Jul 27 09:39:51 2006 +--- builtins/common.c Tue Mar 6 10:43:27 2007 +*************** +*** 1,3 **** +! /* Copyright (C) 1987-2005 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. +--- 1,3 ---- +! /* Copyright (C) 1987-2007 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. +*************** +*** 476,480 **** +--- 476,484 ---- + if (the_current_working_directory == 0) + { ++ #if defined (GETCWD_BROKEN) ++ the_current_working_directory = getcwd (0, PATH_MAX); ++ #else + the_current_working_directory = getcwd (0, 0); ++ #endif + if (the_current_working_directory == 0) + { +*** ../bash-3.2-patched/configure Tue Sep 26 11:06:01 2006 +--- configure Tue Mar 6 10:59:20 2007 +*************** +*** 27317,27321 **** + sco3.2*) LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;; + sunos4*) LOCAL_CFLAGS=-DSunOS4 ;; +! solaris2.5*) LOCAL_CFLAGS=-DSunOS5 ;; + lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; + linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading +--- 27317,27322 ---- + sco3.2*) LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;; + sunos4*) LOCAL_CFLAGS=-DSunOS4 ;; +! solaris2.5*) LOCAL_CFLAGS="-DSunOS5 -DSOLARIS" ;; +! solaris2*) LOCAL_CFLAGS=-DSOLARIS ;; + lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; + linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 10 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 11 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-012 b/src/patches/bash/bash32-012 new file mode 100644 index 000000000..8d669d27c --- /dev/null +++ b/src/patches/bash/bash32-012 @@ -0,0 +1,96 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-012 + +Bug-Reported-by: John Wyman +Bug-Reference-ID: <5E7DEFC094C35044B87FAE761D9F0EE20143A3B7@exchange2k.celink.com> +Bug-Reference-URL: + +Bug-Description: + +Some systems (AIX 4.x) don't implement the PRI_xxx macros correctly, +causing syntax errors when attempting to compile bash on those systems. +This patch adds support for the PRI_MACROS_BROKEN define. + +You will need to re-run `configure' after applying the patch. Run +`touch configure' so make doesn't try to run autoconf. + +Patch: + +*** ../bash-3.2.11/config.h.in Tue Sep 12 16:00:54 2006 +--- config.h.in Tue Mar 6 11:17:55 2007 +*************** +*** 1,5 **** + /* config.h -- Configuration file for bash. */ + +! /* Copyright (C) 1987-2006 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. +--- 1,5 ---- + /* config.h -- Configuration file for bash. */ + +! /* Copyright (C) 1987-2007 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. +*************** +*** 414,417 **** +--- 414,419 ---- + #undef HAVE_DECL_STRTOLD + ++ #undef PRI_MACROS_BROKEN ++ + #undef STRTOLD_BROKEN + +*************** +*** 1007,1010 **** +--- 1009,1015 ---- + #undef HAVE_DCGETTEXT + ++ /* Define if you have the `localeconv' function. */ ++ #undef HAVE_LOCALECONV ++ + /* Define if your system has a working `malloc' function. */ + /* #undef HAVE_MALLOC */ +*** ../bash-3.2.11/builtins/printf.def Mon Nov 13 08:58:52 2006 +--- builtins/printf.def Sun Feb 4 13:58:59 2007 +*************** +*** 2,6 **** + It implements the builtin "printf" in Bash. + +! Copyright (C) 1997-2005 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. +--- 2,6 ---- + It implements the builtin "printf" in Bash. + +! Copyright (C) 1997-2007 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. +*************** +*** 71,74 **** +--- 71,78 ---- + #include "common.h" + ++ #if defined (PRI_MACROS_BROKEN) ++ # undef PRIdMAX ++ #endif ++ + #if !defined (PRIdMAX) + # if HAVE_LONG_LONG +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 11 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 12 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-013 b/src/patches/bash/bash32-013 new file mode 100644 index 000000000..d47bc1a5f --- /dev/null +++ b/src/patches/bash/bash32-013 @@ -0,0 +1,65 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-013 + +Bug-Reported-by: Magnus Svensson +Bug-Reference-ID: <45BDC44D.80609@mysql.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2007-01/msg00002.html + +Bug-Description: + +Readline neglects to reallocate the array it uses to keep track of wrapped +screen lines when increasing its size. This will eventually result in +segmentation faults when given sufficiently long input. + +Patch: + +*** ../bash-3.2-patched/lib/readline/display.c Thu Sep 14 14:20:12 2006 +--- lib/readline/display.c Fri Feb 2 20:23:17 2007 +*************** +*** 561,574 **** +--- 561,586 ---- + wrap_offset = prompt_invis_chars_first_line = 0; + } + ++ #if defined (HANDLE_MULTIBYTE) + #define CHECK_INV_LBREAKS() \ + do { \ + if (newlines >= (inv_lbsize - 2)) \ + { \ + inv_lbsize *= 2; \ + inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \ ++ _rl_wrapped_line = (int *)xrealloc (_rl_wrapped_line, inv_lbsize * sizeof (int)); \ + } \ + } while (0) ++ #else ++ #define CHECK_INV_LBREAKS() \ ++ do { \ ++ if (newlines >= (inv_lbsize - 2)) \ ++ { \ ++ inv_lbsize *= 2; \ ++ inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \ ++ } \ ++ } while (0) ++ #endif /* HANDLE_MULTIBYTE */ + + #if defined (HANDLE_MULTIBYTE) + #define CHECK_LPOS() \ + +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 12 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 13 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-014 b/src/patches/bash/bash32-014 new file mode 100644 index 000000000..b706505b7 --- /dev/null +++ b/src/patches/bash/bash32-014 @@ -0,0 +1,307 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-014 + +Bug-Reported-by: Brett Stahlman +Bug-Reference-ID: <000701c72d29$a227e0e0$5ec7cf47@computerroom> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-12/msg00065.html + +Bug-Description: + +Bash mishandles word splitting under certain circumstances when IFS is +null (IFS=). Constructs affected include ${param/pat/sub} and others +when expanding arrays (array[@]). + +Patch: + +*** ../bash-3.2-patched/array.c Wed Jun 1 16:39:22 2005 +--- array.c Mon Jan 15 22:58:00 2007 +*************** +*** 121,125 **** + } + +- #ifdef INCLUDE_UNUSED + /* + * Make and return a new array composed of the elements in array A from +--- 121,124 ---- +*************** +*** 142,146 **** + n = array_create_element (element_index(p), element_value(p)); + ADD_BEFORE(a->head, n); +! mi = element_index(ae); + } + a->num_elements = i; +--- 141,145 ---- + n = array_create_element (element_index(p), element_value(p)); + ADD_BEFORE(a->head, n); +! mi = element_index(n); + } + a->num_elements = i; +*************** +*** 148,152 **** + return a; + } +- #endif + + /* +--- 147,150 ---- +*************** +*** 301,304 **** +--- 299,319 ---- + } + ++ ARRAY * ++ array_quote_escapes(array) ++ ARRAY *array; ++ { ++ ARRAY_ELEMENT *a; ++ char *t; ++ ++ if (array == 0 || array_head(array) == 0 || array_empty(array)) ++ return (ARRAY *)NULL; ++ for (a = element_forw(array->head); a != array->head; a = element_forw(a)) { ++ t = quote_escapes (a->value); ++ FREE(a->value); ++ a->value = t; ++ } ++ return array; ++ } ++ + /* + * Return a string whose elements are the members of array A beginning at +*************** +*** 312,318 **** + int starsub, quoted; + { + ARRAY_ELEMENT *h, *p; + arrayind_t i; +! char *ifs, sep[2]; + + p = a ? array_head (a) : 0; +--- 327,334 ---- + int starsub, quoted; + { ++ ARRAY *a2; + ARRAY_ELEMENT *h, *p; + arrayind_t i; +! char *ifs, sep[2], *t; + + p = a ? array_head (a) : 0; +*************** +*** 337,340 **** +--- 353,363 ---- + ; + ++ a2 = array_slice(a, h, p); ++ ++ if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) ++ array_quote(a2); ++ else ++ array_quote_escapes(a2); ++ + if (starsub && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) { + ifs = getifs(); +*************** +*** 344,348 **** + sep[1] = '\0'; + +! return (array_to_string_internal (h, p, sep, quoted)); + } + +--- 367,374 ---- + sep[1] = '\0'; + +! t = array_to_string (a2, sep, 0); +! array_dispose(a2); +! +! return t; + } + +*************** +*** 368,372 **** + + if (mflags & MATCH_QUOTED) +! array_quote (a2); + if (mflags & MATCH_STARSUB) { + ifs = getifs(); +--- 394,400 ---- + + if (mflags & MATCH_QUOTED) +! array_quote(a2); +! else +! array_quote_escapes(a2); + if (mflags & MATCH_STARSUB) { + ifs = getifs(); +*** ../bash-3.2-patched/array.h Sun Jun 1 15:50:30 2003 +--- array.h Mon Jan 15 22:35:35 2007 +*************** +*** 56,59 **** +--- 56,60 ---- + extern int array_shift_element __P((ARRAY *, char *)); + extern ARRAY *array_quote __P((ARRAY *)); ++ extern ARRAY *array_quote_escapes __P((ARRAY *)); + + extern char *array_subrange __P((ARRAY *, arrayind_t, arrayind_t, int, int)); +*** ../bash-3.2-patched/subst.c Fri Mar 2 16:20:50 2007 +--- subst.c Tue Mar 6 11:40:55 2007 +*************** +*** 1888,1892 **** +--- 1889,1899 ---- + #endif + ++ /* XXX -- why call quote_list if ifs == 0? we can get away without doing ++ it now that quote_escapes quotes spaces */ ++ #if 0 + tlist = ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || (ifs && *ifs == 0)) ++ #else ++ tlist = (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ++ #endif + ? quote_list (list) + : list_quote_escapes (list); +*************** +*** 2922,2926 **** + /* Quote escape characters in string s, but no other characters. This is + used to protect CTLESC and CTLNUL in variable values from the rest of +! the word expansion process after the variable is expanded. */ + char * + quote_escapes (string) +--- 2935,2944 ---- + /* Quote escape characters in string s, but no other characters. This is + used to protect CTLESC and CTLNUL in variable values from the rest of +! the word expansion process after the variable is expanded. If IFS is +! null, we quote spaces as well, just in case we split on spaces later +! (in the case of unquoted $@, we will eventually attempt to split the +! entire word on spaces). Corresponding code exists in dequote_escapes. +! Even if we don't end up splitting on spaces, quoting spaces is not a +! problem. */ + char * + quote_escapes (string) +*************** +*** 2930,2933 **** +--- 2948,2952 ---- + size_t slen; + char *result, *send; ++ int quote_spaces; + DECLARE_MBSTATE; + +*************** +*** 2935,2938 **** +--- 2954,2958 ---- + send = string + slen; + ++ quote_spaces = (ifs_value && *ifs_value == 0); + t = result = (char *)xmalloc ((slen * 2) + 1); + s = string; +*************** +*** 2940,2944 **** + while (*s) + { +! if (*s == CTLESC || *s == CTLNUL) + *t++ = CTLESC; + COPY_CHAR_P (t, s, send); +--- 2960,2964 ---- + while (*s) + { +! if (*s == CTLESC || *s == CTLNUL || (quote_spaces && *s == ' ')) + *t++ = CTLESC; + COPY_CHAR_P (t, s, send); +*************** +*** 2982,2985 **** +--- 3002,3006 ---- + size_t slen; + char *result, *send; ++ int quote_spaces; + DECLARE_MBSTATE; + +*************** +*** 2996,3002 **** + return (strcpy (result, s)); + + while (*s) + { +! if (*s == CTLESC && (s[1] == CTLESC || s[1] == CTLNUL)) + { + s++; +--- 3017,3024 ---- + return (strcpy (result, s)); + ++ quote_spaces = (ifs_value && *ifs_value == 0); + while (*s) + { +! if (*s == CTLESC && (s[1] == CTLESC || s[1] == CTLNUL || (quote_spaces && s[1] == ' '))) + { + s++; +*************** +*** 4462,4466 **** + RESIZE_MALLOCED_BUFFER (istring, istring_index, 2, istring_size, DEFAULT_ARRAY_SIZE); + +! if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || c == CTLESC || c == CTLNUL) + istring[istring_index++] = CTLESC; + +--- 4498,4510 ---- + RESIZE_MALLOCED_BUFFER (istring, istring_index, 2, istring_size, DEFAULT_ARRAY_SIZE); + +! /* This is essentially quote_string inline */ +! if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) /* || c == CTLESC || c == CTLNUL */) +! istring[istring_index++] = CTLESC; +! /* Escape CTLESC and CTLNUL in the output to protect those characters +! from the rest of the word expansions (word splitting and globbing.) +! This is essentially quote_escapes inline. */ +! else if (c == CTLESC) +! istring[istring_index++] = CTLESC; +! else if (c == CTLNUL || (c == ' ' && (ifs_value && *ifs_value == 0))) + istring[istring_index++] = CTLESC; + +*************** +*** 5552,5555 **** +--- 5610,5616 ---- + rely on array_subrange to understand how to deal with them). */ + tt = array_subrange (array_cell (v), e1, e2, starsub, quoted); ++ #if 0 ++ /* array_subrange now calls array_quote_escapes as appropriate, so the ++ caller no longer needs to. */ + if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) == 0) + { +*************** +*** 5558,5561 **** +--- 5619,5623 ---- + } + else ++ #endif + temp = tt; + break; +*************** +*** 5808,5811 **** +--- 5870,5876 ---- + case VT_ARRAYVAR: + temp = array_patsub (array_cell (v), p, rep, mflags); ++ #if 0 ++ /* Don't need to do this anymore; array_patsub calls array_quote_escapes ++ as appropriate before adding the space separators. */ + if (temp && (mflags & MATCH_QUOTED) == 0) + { +*************** +*** 5814,5817 **** +--- 5879,5883 ---- + temp = tt; + } ++ #endif + break; + #endif +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 13 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 14 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-015 b/src/patches/bash/bash32-015 new file mode 100644 index 000000000..d887f6e56 --- /dev/null +++ b/src/patches/bash/bash32-015 @@ -0,0 +1,95 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-015 + +Bug-Reported-by: +Bug-Reference-ID: +Bug-Reference-URL: + +Bug-Description: + +Under certain circumstances, when using FIFOs for process substitution, +bash fails to unlink the FIFOs. This leaves open file descriptors that +can cause the shell to hang and litters the file system. + +Patch: + +*** ../bash-3.2-patched/execute_cmd.c Fri Mar 2 16:20:50 2007 +--- execute_cmd.c Wed Jan 31 23:12:06 2007 +*************** +*** 3051,3054 **** +--- 3051,3059 ---- + command_line = savestring (the_printed_command_except_trap); + ++ #if defined (PROCESS_SUBSTITUTION) ++ if ((subshell_environment & SUBSHELL_COMSUB) && (simple_command->flags & CMD_NO_FORK) && fifos_pending() > 0) ++ simple_command->flags &= ~CMD_NO_FORK; ++ #endif ++ + execute_disk_command (words, simple_command->redirects, command_line, + pipe_in, pipe_out, async, fds_to_close, +*** ../bash-3.2-patched/subst.c Fri Mar 2 16:20:50 2007 +--- subst.c Tue Mar 6 11:40:55 2007 +*************** +*** 4129,4132 **** +--- 4151,4160 ---- + } + ++ int ++ fifos_pending () ++ { ++ return nfifo; ++ } ++ + static char * + make_named_pipe () +*************** +*** 4178,4181 **** +--- 4206,4215 ---- + } + ++ int ++ fifos_pending () ++ { ++ return 0; /* used for cleanup; not needed with /dev/fd */ ++ } ++ + void + unlink_fifo_list () +*************** +*** 4671,4674 **** +--- 4719,4725 ---- + last_command_exit_value = rc; + rc = run_exit_trap (); ++ #if defined (PROCESS_SUBSTITUTION) ++ unlink_fifo_list (); ++ #endif + exit (rc); + } +*** ../bash-3.2-patched/subst.h Tue Sep 19 08:34:41 2006 +--- subst.h Wed Jan 10 09:46:47 2007 +*************** +*** 223,226 **** +--- 223,227 ---- + extern char *pat_subst __P((char *, char *, char *, int)); + ++ extern int fifos_pending __P((void)); + extern void unlink_fifo_list __P((void)); + +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 14 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 15 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-016 b/src/patches/bash/bash32-016 new file mode 100644 index 000000000..a0f065ad3 --- /dev/null +++ b/src/patches/bash/bash32-016 @@ -0,0 +1,52 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-016 + +Bug-Reported-by: Peter Volkov +Bug-Reference-ID: <1171795523.8021.18.camel@localhost> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-02/msg00054.html + +Bug-Description: + +When moving the cursor, bash sometimes misplaces the cursor when the prompt +contains two or more multibyte characters. The particular circumstance that +uncovered the problem was having the (multibyte) current directory name in +the prompt string. + +Patch: + +*** ../bash-3.2/lib/readline/display.c Fri Jan 19 13:34:50 2007 +--- lib/readline/display.c Sat Mar 10 17:25:44 2007 +*************** +*** 1745,1749 **** + { + dpos = _rl_col_width (data, 0, new); +! if (dpos > prompt_last_invisible) /* XXX - don't use woff here */ + { + dpos -= woff; +--- 1745,1752 ---- + { + dpos = _rl_col_width (data, 0, new); +! /* Use NEW when comparing against the last invisible character in the +! prompt string, since they're both buffer indices and DPOS is a +! desired display position. */ +! if (new > prompt_last_invisible) /* XXX - don't use woff here */ + { + dpos -= woff; +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 15 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 16 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-017 b/src/patches/bash/bash32-017 new file mode 100644 index 000000000..99e5e70d2 --- /dev/null +++ b/src/patches/bash/bash32-017 @@ -0,0 +1,85 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-017 + +Bug-Reported-by: Peter Volkov +Bug-Reference-ID: <1173636022.7039.36.camel@localhost> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-03/msg00039.html + +Bug-Description: + +When restoring the original prompt after finishing an incremental search, +bash sometimes places the cursor incorrectly if the primary prompt contains +invisible characters. + +Patch: + +*** ../bash-3.2.16/lib/readline/display.c Fri Apr 20 13:30:16 2007 +--- lib/readline/display.c Fri Apr 20 15:17:01 2007 +*************** +*** 1599,1604 **** + if (temp > 0) + { + _rl_output_some_chars (nfd, temp); +! _rl_last_c_pos += _rl_col_width (nfd, 0, temp);; + } + } +--- 1599,1618 ---- + if (temp > 0) + { ++ /* If nfd begins at the prompt, or before the invisible ++ characters in the prompt, we need to adjust _rl_last_c_pos ++ in a multibyte locale to account for the wrap offset and ++ set cpos_adjusted accordingly. */ + _rl_output_some_chars (nfd, temp); +! if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) +! { +! _rl_last_c_pos += _rl_col_width (nfd, 0, temp); +! if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible)) +! { +! _rl_last_c_pos -= wrap_offset; +! cpos_adjusted = 1; +! } +! } +! else +! _rl_last_c_pos += temp; + } + } +*************** +*** 1608,1613 **** +--- 1622,1639 ---- + if (temp > 0) + { ++ /* If nfd begins at the prompt, or before the invisible ++ characters in the prompt, we need to adjust _rl_last_c_pos ++ in a multibyte locale to account for the wrap offset and ++ set cpos_adjusted accordingly. */ + _rl_output_some_chars (nfd, temp); + _rl_last_c_pos += col_temp; /* XXX */ ++ if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) ++ { ++ if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible)) ++ { ++ _rl_last_c_pos -= wrap_offset; ++ cpos_adjusted = 1; ++ } ++ } + } + lendiff = (oe - old) - (ne - new); +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 16 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 17 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-018 b/src/patches/bash/bash32-018 new file mode 100644 index 000000000..d729aaf5e --- /dev/null +++ b/src/patches/bash/bash32-018 @@ -0,0 +1,98 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-018 + +Bug-Reported-by: osicka@post.cz +Bug-Reference-ID: <228.177-19682-1132061412-1179356692@post.cz> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-05/msg00061.html + +Bug-Description: + +In certain cases, bash can lose the saved status of a background job, though +it should still be reported by `wait'. Bash can also loop infinitely after +creating and waiting for 4096 jobs. + +Patch: + +*** ../bash-20070510/jobs.c Thu Mar 8 16:05:50 2007 +--- jobs.c Fri May 18 11:40:14 2007 +*************** +*** 784,792 **** + { + old = js.j_firstj++; + while (js.j_firstj != old) + { + if (js.j_firstj >= js.j_jobslots) + js.j_firstj = 0; +! if (jobs[js.j_firstj]) + break; + js.j_firstj++; +--- 784,794 ---- + { + old = js.j_firstj++; ++ if (old >= js.j_jobslots) ++ old = js.j_jobslots - 1; + while (js.j_firstj != old) + { + if (js.j_firstj >= js.j_jobslots) + js.j_firstj = 0; +! if (jobs[js.j_firstj] || js.j_firstj == old) /* needed if old == 0 */ + break; + js.j_firstj++; +*************** +*** 798,806 **** + { + old = js.j_lastj--; + while (js.j_lastj != old) + { + if (js.j_lastj < 0) + js.j_lastj = js.j_jobslots - 1; +! if (jobs[js.j_lastj]) + break; + js.j_lastj--; +--- 800,810 ---- + { + old = js.j_lastj--; ++ if (old < 0) ++ old = 0; + while (js.j_lastj != old) + { + if (js.j_lastj < 0) + js.j_lastj = js.j_jobslots - 1; +! if (jobs[js.j_lastj] || js.j_lastj == old) /* needed if old == js.j_jobslots */ + break; + js.j_lastj--; +*************** +*** 964,968 **** + realloc_jobs_list (); + +! return (js.j_lastj); + } + +--- 975,983 ---- + realloc_jobs_list (); + +! #ifdef DEBUG +! itrace("compact_jobs_list: returning %d", (js.j_lastj || jobs[js.j_lastj]) ? js.j_lastj + 1 : 0); +! #endif +! +! return ((js.j_lastj || jobs[js.j_lastj]) ? js.j_lastj + 1 : 0); + } + +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 17 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 18 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-019 b/src/patches/bash/bash32-019 new file mode 100644 index 000000000..647bd1fa3 --- /dev/null +++ b/src/patches/bash/bash32-019 @@ -0,0 +1,343 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-019 + +Bug-Reported-by: Thomas Loeber +Bug-Reference-ID: <200703082223.08919.ifp@loeber1.de> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-03/msg00036.html + +Bug-Description: + +When rl_read_key returns -1, indicating that bash's controlling terminal +has been invalidated for some reason (e.g., receiving a SIGHUP), the error +status was not reported correctly to the caller. This could cause input +loops. + +Patch: + +*** ../bash-3.2-patched/lib/readline/complete.c Fri Jul 28 11:35:49 2006 +--- lib/readline/complete.c Tue Mar 13 08:50:16 2007 +*************** +*** 429,433 **** + if (c == 'n' || c == 'N' || c == RUBOUT) + return (0); +! if (c == ABORT_CHAR) + _rl_abort_internal (); + if (for_pager && (c == NEWLINE || c == RETURN)) +--- 440,444 ---- + if (c == 'n' || c == 'N' || c == RUBOUT) + return (0); +! if (c == ABORT_CHAR || c < 0) + _rl_abort_internal (); + if (for_pager && (c == NEWLINE || c == RETURN)) +*** ../bash-3.2-patched/lib/readline/input.c Wed Aug 16 15:15:16 2006 +--- lib/readline/input.c Wed May 2 16:07:59 2007 +*************** +*** 514,518 **** + int size; + { +! int mb_len = 0; + size_t mbchar_bytes_length; + wchar_t wc; +--- 522,526 ---- + int size; + { +! int mb_len, c; + size_t mbchar_bytes_length; + wchar_t wc; +*************** +*** 521,531 **** + memset(&ps, 0, sizeof (mbstate_t)); + memset(&ps_back, 0, sizeof (mbstate_t)); +! + while (mb_len < size) + { + RL_SETSTATE(RL_STATE_MOREINPUT); +! mbchar[mb_len++] = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + + mbchar_bytes_length = mbrtowc (&wc, mbchar, mb_len, &ps); + if (mbchar_bytes_length == (size_t)(-1)) +--- 529,545 ---- + memset(&ps, 0, sizeof (mbstate_t)); + memset(&ps_back, 0, sizeof (mbstate_t)); +! +! mb_len = 0; + while (mb_len < size) + { + RL_SETSTATE(RL_STATE_MOREINPUT); +! c = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + ++ if (c < 0) ++ break; ++ ++ mbchar[mb_len++] = c; ++ + mbchar_bytes_length = mbrtowc (&wc, mbchar, mb_len, &ps); + if (mbchar_bytes_length == (size_t)(-1)) +*************** +*** 565,569 **** + c = first; + memset (mb, 0, mlen); +! for (i = 0; i < mlen; i++) + { + mb[i] = (char)c; +--- 579,583 ---- + c = first; + memset (mb, 0, mlen); +! for (i = 0; c >= 0 && i < mlen; i++) + { + mb[i] = (char)c; +*** ../bash-3.2-patched/lib/readline/isearch.c Mon Dec 26 17:18:53 2005 +--- lib/readline/isearch.c Fri Mar 9 14:30:59 2007 +*************** +*** 328,333 **** + + f = (rl_command_func_t *)NULL; +! +! /* Translate the keys we do something with to opcodes. */ + if (c >= 0 && _rl_keymap[c].type == ISFUNC) + { +--- 328,340 ---- + + f = (rl_command_func_t *)NULL; +! +! if (c < 0) +! { +! cxt->sflags |= SF_FAILED; +! cxt->history_pos = cxt->last_found_line; +! return -1; +! } +! +! /* Translate the keys we do something with to opcodes. */ + if (c >= 0 && _rl_keymap[c].type == ISFUNC) + { +*** ../bash-3.2-patched/lib/readline/misc.c Mon Dec 26 17:20:46 2005 +--- lib/readline/misc.c Fri Mar 9 14:44:11 2007 +*************** +*** 147,150 **** +--- 147,152 ---- + rl_clear_message (); + RL_UNSETSTATE(RL_STATE_NUMERICARG); ++ if (key < 0) ++ return -1; + return (_rl_dispatch (key, _rl_keymap)); + } +*** ../bash-3.2-patched/lib/readline/readline.c Wed Aug 16 15:00:36 2006 +--- lib/readline/readline.c Fri Mar 9 14:47:24 2007 +*************** +*** 646,649 **** +--- 669,677 ---- + { + nkey = _rl_subseq_getchar (cxt->okey); ++ if (nkey < 0) ++ { ++ _rl_abort_internal (); ++ return -1; ++ } + r = _rl_dispatch_subseq (nkey, cxt->dmap, cxt->subseq_arg); + cxt->flags |= KSEQ_DISPATCHED; +*** ../bash-3.2-patched/lib/readline/text.c Fri Jul 28 11:55:27 2006 +--- lib/readline/text.c Sun Mar 25 13:41:38 2007 +*************** +*** 858,861 **** +--- 864,870 ---- + RL_UNSETSTATE(RL_STATE_MOREINPUT); + ++ if (c < 0) ++ return -1; ++ + #if defined (HANDLE_SIGNALS) + if (RL_ISSTATE (RL_STATE_CALLBACK) == 0) +*************** +*** 1521,1524 **** +--- 1530,1536 ---- + mb_len = _rl_read_mbchar (mbchar, MB_LEN_MAX); + ++ if (mb_len <= 0) ++ return -1; ++ + if (count < 0) + return (_rl_char_search_internal (-count, bdir, mbchar, mb_len)); +*************** +*** 1537,1540 **** +--- 1549,1555 ---- + RL_UNSETSTATE(RL_STATE_MOREINPUT); + ++ if (c < 0) ++ return -1; ++ + if (count < 0) + return (_rl_char_search_internal (-count, bdir, c)); +*** ../bash-3.2-patched/lib/readline/vi_mode.c Sat Jul 29 16:42:28 2006 +--- lib/readline/vi_mode.c Fri Mar 9 15:02:11 2007 +*************** +*** 887,890 **** +--- 887,897 ---- + c = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); ++ ++ if (c < 0) ++ { ++ *nextkey = 0; ++ return -1; ++ } ++ + *nextkey = c; + +*************** +*** 903,906 **** +--- 910,918 ---- + c = rl_read_key (); /* real command */ + RL_UNSETSTATE(RL_STATE_MOREINPUT); ++ if (c < 0) ++ { ++ *nextkey = 0; ++ return -1; ++ } + *nextkey = c; + } +*************** +*** 1225,1236 **** + _rl_callback_generic_arg *data; + { + #if defined (HANDLE_MULTIBYTE) +! _rl_vi_last_search_mblen = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX); + #else + RL_SETSTATE(RL_STATE_MOREINPUT); +! _rl_vi_last_search_char = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + #endif + + _rl_callback_func = 0; + _rl_want_redisplay = 1; +--- 1243,1262 ---- + _rl_callback_generic_arg *data; + { ++ int c; + #if defined (HANDLE_MULTIBYTE) +! c = _rl_vi_last_search_mblen = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX); + #else + RL_SETSTATE(RL_STATE_MOREINPUT); +! c = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + #endif + ++ if (c <= 0) ++ return -1; ++ ++ #if !defined (HANDLE_MULTIBYTE) ++ _rl_vi_last_search_char = c; ++ #endif ++ + _rl_callback_func = 0; + _rl_want_redisplay = 1; +*************** +*** 1248,1251 **** +--- 1274,1278 ---- + int count, key; + { ++ int c; + #if defined (HANDLE_MULTIBYTE) + static char *target; +*************** +*** 1294,1302 **** + { + #if defined (HANDLE_MULTIBYTE) +! _rl_vi_last_search_mblen = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX); + #else + RL_SETSTATE(RL_STATE_MOREINPUT); +! _rl_vi_last_search_char = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + #endif + } +--- 1321,1335 ---- + { + #if defined (HANDLE_MULTIBYTE) +! c = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX); +! if (c <= 0) +! return -1; +! _rl_vi_last_search_mblen = c; + #else + RL_SETSTATE(RL_STATE_MOREINPUT); +! c = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); ++ if (c < 0) ++ return -1; ++ _rl_vi_last_search_char = c; + #endif + } +*************** +*** 1468,1471 **** +--- 1501,1507 ---- + RL_UNSETSTATE(RL_STATE_MOREINPUT); + ++ if (c < 0) ++ return -1; ++ + #if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) +*************** +*** 1486,1489 **** +--- 1522,1528 ---- + _rl_vi_last_replacement = c = _rl_vi_callback_getchar (mb, MB_LEN_MAX); + ++ if (c < 0) ++ return -1; ++ + _rl_callback_func = 0; + _rl_want_redisplay = 1; +*************** +*** 1517,1520 **** +--- 1556,1562 ---- + _rl_vi_last_replacement = c = _rl_vi_callback_getchar (mb, MB_LEN_MAX); + ++ if (c < 0) ++ return -1; ++ + return (_rl_vi_change_char (count, c, mb)); + } +*************** +*** 1651,1655 **** + RL_UNSETSTATE(RL_STATE_MOREINPUT); + +! if (ch < 'a' || ch > 'z') + { + rl_ding (); +--- 1693,1697 ---- + RL_UNSETSTATE(RL_STATE_MOREINPUT); + +! if (ch < 0 || ch < 'a' || ch > 'z') /* make test against 0 explicit */ + { + rl_ding (); +*************** +*** 1703,1707 **** + return 0; + } +! else if (ch < 'a' || ch > 'z') + { + rl_ding (); +--- 1745,1749 ---- + return 0; + } +! else if (ch < 0 || ch < 'a' || ch > 'z') /* make test against 0 explicit */ + { + rl_ding (); +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 18 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 19 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-020 b/src/patches/bash/bash32-020 new file mode 100644 index 000000000..8c7e32890 --- /dev/null +++ b/src/patches/bash/bash32-020 @@ -0,0 +1,183 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-020 + +Bug-Reported-by: Ian A Watson +Bug-Reference-ID: +Bug-Reference-URL: + +Bug-Description: + +In some cases of error processing, a jump back to the top-level processing +loop from a builtin command would leave the shell in an inconsistent state. + +Patch: + +*** ../bash-3.2-patched/sig.c Wed Jan 25 14:57:59 2006 +--- sig.c Sat Mar 10 11:11:30 2007 +*************** +*** 351,354 **** +--- 351,373 ---- + #undef XHANDLER + ++ /* Run some of the cleanups that should be performed when we run ++ jump_to_top_level from a builtin command context. XXX - might want to ++ also call reset_parser here. */ ++ void ++ top_level_cleanup () ++ { ++ /* Clean up string parser environment. */ ++ while (parse_and_execute_level) ++ parse_and_execute_cleanup (); ++ ++ #if defined (PROCESS_SUBSTITUTION) ++ unlink_fifo_list (); ++ #endif /* PROCESS_SUBSTITUTION */ ++ ++ run_unwind_protects (); ++ loop_level = continuing = breaking = 0; ++ return_catch_flag = 0; ++ } ++ + /* What to do when we've been interrupted, and it is safe to handle it. */ + void +*** ../bash-3.2-patched/sig.h Wed Jan 25 14:50:27 2006 +--- sig.h Sat Mar 10 11:14:18 2007 +*************** +*** 122,125 **** +--- 122,126 ---- + extern void initialize_terminating_signals __P((void)); + extern void reset_terminating_signals __P((void)); ++ extern void top_level_cleanup __P((void)); + extern void throw_to_top_level __P((void)); + extern void jump_to_top_level __P((int)) __attribute__((__noreturn__)); +*** ../bash-3.2-patched/builtins/common.c Tue Apr 3 16:47:13 2007 +--- builtins/common.c Mon Apr 30 15:01:33 2007 +*************** +*** 132,135 **** +--- 132,136 ---- + { + builtin_error (_("too many arguments")); ++ top_level_cleanup (); + jump_to_top_level (DISCARD); + } +*************** +*** 396,400 **** + throw_to_top_level (); + else +! jump_to_top_level (DISCARD); + } + no_args (list->next); +--- 410,417 ---- + throw_to_top_level (); + else +! { +! top_level_cleanup (); +! jump_to_top_level (DISCARD); +! } + } + no_args (list->next); +*** ../bash-3.2-patched/subst.c Tue Apr 3 16:47:19 2007 +--- subst.c Tue Jul 17 09:45:11 2007 +*************** +*** 1279,1283 **** + if (no_longjmp_on_fatal_error == 0) + { /* { */ +! report_error ("bad substitution: no closing `%s' in %s", "}", string); + last_command_exit_value = EXECUTION_FAILURE; + exp_jump_to_top_level (DISCARD); +--- 1290,1294 ---- + if (no_longjmp_on_fatal_error == 0) + { /* { */ +! report_error (_("bad substitution: no closing `%s' in %s"), "}", string); + last_command_exit_value = EXECUTION_FAILURE; + exp_jump_to_top_level (DISCARD); +*************** +*** 7662,7665 **** +--- 7706,7711 ---- + expand_no_split_dollar_star = 0; /* XXX */ + expanding_redir = 0; ++ ++ top_level_cleanup (); /* from sig.c */ + + jump_to_top_level (v); +*************** +*** 7880,7884 **** + { + report_error (_("no match: %s"), tlist->word->word); +! jump_to_top_level (DISCARD); + } + else if (allow_null_glob_expansion == 0) +--- 7927,7931 ---- + { + report_error (_("no match: %s"), tlist->word->word); +! exp_jump_to_top_level (DISCARD); + } + else if (allow_null_glob_expansion == 0) +*** ../bash-3.2-patched/arrayfunc.c Thu Jul 27 09:37:59 2006 +--- arrayfunc.c Thu May 31 11:55:46 2007 +*************** +*** 619,622 **** +--- 619,624 ---- + { + last_command_exit_value = EXECUTION_FAILURE; ++ ++ top_level_cleanup (); + jump_to_top_level (DISCARD); + } +*** ../bash-3.2-patched/expr.c Wed Dec 28 17:47:03 2005 +--- expr.c Tue Apr 24 14:17:59 2007 +*************** +*** 930,933 **** +--- 930,934 ---- + { + expr_unwind (); ++ top_level_cleanup (); + jump_to_top_level (DISCARD); + } +*** ../bash-3.2-patched/variables.c Fri Sep 8 13:33:32 2006 +--- variables.c Tue Jul 17 09:54:59 2007 +*************** +*** 1822,1830 **** + lval = evalexp (oval, &expok); /* ksh93 seems to do this */ + if (expok == 0) +! jump_to_top_level (DISCARD); + } + rval = evalexp (value, &expok); + if (expok == 0) +! jump_to_top_level (DISCARD); + if (flags & ASS_APPEND) + rval += lval; +--- 1855,1869 ---- + lval = evalexp (oval, &expok); /* ksh93 seems to do this */ + if (expok == 0) +! { +! top_level_cleanup (); +! jump_to_top_level (DISCARD); +! } + } + rval = evalexp (value, &expok); + if (expok == 0) +! { +! top_level_cleanup (); +! jump_to_top_level (DISCARD); +! } + if (flags & ASS_APPEND) + rval += lval; +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 19 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 20 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-021 b/src/patches/bash/bash32-021 new file mode 100644 index 000000000..003489c6b --- /dev/null +++ b/src/patches/bash/bash32-021 @@ -0,0 +1,72 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-021 + +Bug-Reported-by: BAGSHAW Paul RD-TECH-REN +Bug-Reference-ID: <941BA0BF46DB8F4983FF7C8AFE800BC205EA7D4B@ftrdmel3.rd.francetelecom.fr> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-03/msg00065.html + +Bug-Description: + +When the parser read a backslash-escaped character that would be treated +internally as an escape, it would double the number of escape characters. + +Patch: + +*** ../bash-3.2-patched/parse.y Mon Oct 30 17:22:00 2006 +--- parse.y Sat Mar 24 17:13:20 2007 +*************** +*** 3377,3381 **** + { + pass_next_character = 0; +! goto got_character; + } + +--- 3377,3381 ---- + { + pass_next_character = 0; +! goto got_escaped_character; + } + +*************** +*** 3651,3660 **** + got_character: + +- all_digit_token &= DIGIT (character); +- dollar_present |= character == '$'; +- + if (character == CTLESC || character == CTLNUL) + token[token_index++] = CTLESC; + + token[token_index++] = character; + +--- 3651,3662 ---- + got_character: + + if (character == CTLESC || character == CTLNUL) + token[token_index++] = CTLESC; + ++ got_escaped_character: ++ ++ all_digit_token &= DIGIT (character); ++ dollar_present |= character == '$'; ++ + token[token_index++] = character; + +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 20 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 21 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-022 b/src/patches/bash/bash32-022 new file mode 100644 index 000000000..d3679e67f --- /dev/null +++ b/src/patches/bash/bash32-022 @@ -0,0 +1,126 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-022 + +Bug-Reported-by: Chet Ramey +Bug-Reference-ID: +Bug-Reference-URL: + +Bug-Description: + +POSIX specifies that the `read' builtin invoked from an interative shell +must prompt with $PS2 when a line is continued using a backslash while +reading from a terminal. + +Patch: + +*** ../bash-3.2-patched/builtins/read.def Tue Sep 19 08:45:48 2006 +--- builtins/read.def Thu May 24 16:03:30 2007 +*************** +*** 128,133 **** + { + register char *varname; +! int size, i, nr, pass_next, saw_escape, eof, opt, retval, code; +! int input_is_tty, input_is_pipe, unbuffered_read; + int raw, edit, nchars, silent, have_timeout, fd; + unsigned int tmout; +--- 131,136 ---- + { + register char *varname; +! int size, i, nr, pass_next, saw_escape, eof, opt, retval, code, print_ps2; +! int input_is_tty, input_is_pipe, unbuffered_read, skip_ctlesc, skip_ctlnul; + int raw, edit, nchars, silent, have_timeout, fd; + unsigned int tmout; +*************** +*** 135,139 **** + char c; + char *input_string, *orig_input_string, *ifs_chars, *prompt, *arrayname; +! char *e, *t, *t1; + struct stat tsb; + SHELL_VAR *var; +--- 138,142 ---- + char c; + char *input_string, *orig_input_string, *ifs_chars, *prompt, *arrayname; +! char *e, *t, *t1, *ps2; + struct stat tsb; + SHELL_VAR *var; +*************** +*** 149,152 **** +--- 152,156 ---- + USE_VAR(i); + USE_VAR(pass_next); ++ USE_VAR(print_ps2); + USE_VAR(saw_escape); + USE_VAR(input_is_pipe); +*************** +*** 164,167 **** +--- 168,172 ---- + #endif + USE_VAR(list); ++ USE_VAR(ps2); + + i = 0; /* Index into the string that we are reading. */ +*************** +*** 387,391 **** + #endif + +! for (eof = retval = 0;;) + { + #if defined (READLINE) +--- 394,399 ---- + #endif + +! ps2 = 0; +! for (print_ps2 = eof = retval = 0;;) + { + #if defined (READLINE) +*************** +*** 413,416 **** +--- 421,433 ---- + #endif + ++ if (print_ps2) ++ { ++ if (ps2 == 0) ++ ps2 = get_string_value ("PS2"); ++ fprintf (stderr, "%s", ps2 ? ps2 : ""); ++ fflush (stderr); ++ print_ps2 = 0; ++ } ++ + if (unbuffered_read) + retval = zread (fd, &c, 1); +*************** +*** 441,445 **** + pass_next = 0; + if (c == '\n') +! i--; /* back up over the CTLESC */ + else + goto add_char; +--- 458,466 ---- + pass_next = 0; + if (c == '\n') +! { +! i--; /* back up over the CTLESC */ +! if (interactive && input_is_tty && raw == 0) +! print_ps2 = 1; +! } + else + goto add_char; +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 21 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 22 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-023 b/src/patches/bash/bash32-023 new file mode 100644 index 000000000..34a63947f --- /dev/null +++ b/src/patches/bash/bash32-023 @@ -0,0 +1,51 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-023 + +Bug-Reported-by: Chet Ramey +Bug-Reference-ID: +Bug-Reference-URL: + +Bug-Description: + +When an error occurs during the pattern removal word expansion, the shell +can free unallocated memory or free memory multiple times. + +Patch: + +*** ../bash-3.2-patched/subst.c Tue Apr 3 16:47:19 2007 +--- subst.c Tue Jul 17 09:45:11 2007 +*************** +*** 3975,3979 **** + patstr++; + +! pattern = getpattern (patstr, quoted, 1); + + temp1 = (char *)NULL; /* shut up gcc */ +--- 4008,4016 ---- + patstr++; + +! /* Need to pass getpattern newly-allocated memory in case of expansion -- +! the expansion code will free the passed string on an error. */ +! temp1 = savestring (patstr); +! pattern = getpattern (temp1, quoted, 1); +! free (temp1); + + temp1 = (char *)NULL; /* shut up gcc */ +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 22 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 23 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-024 b/src/patches/bash/bash32-024 new file mode 100644 index 000000000..1575f37a9 --- /dev/null +++ b/src/patches/bash/bash32-024 @@ -0,0 +1,77 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-024 + +Bug-Reported-by: Peter Volkov +Bug-Reference-ID: <1178376645.9063.25.camel@localhost> +Bug-Reference-URL: http://bugs.gentoo.org/177095 + +Bug-Description: + +The readline display code miscalculated the screen position when performing +a redisplay in which the new text occupies more screen space that the old, +but takes fewer bytes to do so (e.g., when replacing a shorter string +containing multibyte characters with a longer one containing only ASCII). + +Patch: + +*** ../bash-3.2-patched/lib/readline/display.c Thu Apr 26 11:38:22 2007 +--- lib/readline/display.c Thu Jul 12 23:10:10 2007 +*************** +*** 1519,1527 **** + /* Non-zero if we're increasing the number of lines. */ + int gl = current_line >= _rl_vis_botlin && inv_botlin > _rl_vis_botlin; + /* Sometimes it is cheaper to print the characters rather than + use the terminal's capabilities. If we're growing the number + of lines, make sure we actually cause the new line to wrap + around on auto-wrapping terminals. */ +! if (_rl_terminal_can_insert && ((2 * col_temp) >= col_lendiff || _rl_term_IC) && (!_rl_term_autowrap || !gl)) + { + /* If lendiff > prompt_visible_length and _rl_last_c_pos == 0 and +--- 1568,1596 ---- + /* Non-zero if we're increasing the number of lines. */ + int gl = current_line >= _rl_vis_botlin && inv_botlin > _rl_vis_botlin; ++ /* If col_lendiff is > 0, implying that the new string takes up more ++ screen real estate than the old, but lendiff is < 0, meaning that it ++ takes fewer bytes, we need to just output the characters starting ++ from the first difference. These will overwrite what is on the ++ display, so there's no reason to do a smart update. This can really ++ only happen in a multibyte environment. */ ++ if (lendiff < 0) ++ { ++ _rl_output_some_chars (nfd, temp); ++ _rl_last_c_pos += _rl_col_width (nfd, 0, temp); ++ /* If nfd begins before any invisible characters in the prompt, ++ adjust _rl_last_c_pos to account for wrap_offset and set ++ cpos_adjusted to let the caller know. */ ++ if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible)) ++ { ++ _rl_last_c_pos -= wrap_offset; ++ cpos_adjusted = 1; ++ } ++ return; ++ } + /* Sometimes it is cheaper to print the characters rather than + use the terminal's capabilities. If we're growing the number + of lines, make sure we actually cause the new line to wrap + around on auto-wrapping terminals. */ +! else if (_rl_terminal_can_insert && ((2 * col_temp) >= col_lendiff || _rl_term_IC) && (!_rl_term_autowrap || !gl)) + { + /* If lendiff > prompt_visible_length and _rl_last_c_pos == 0 and +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 23 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 24 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-025 b/src/patches/bash/bash32-025 new file mode 100644 index 000000000..4d53d89d7 --- /dev/null +++ b/src/patches/bash/bash32-025 @@ -0,0 +1,79 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-025 + +Bug-Reported-by: Tom Bjorkholm +Bug-Reference-ID: +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2007-04/msg00004.html + +Bug-Description: + +An off-by-one error in readline's input buffering caused readline to drop +each 511th character of buffered input (e.g., when pasting a large amount +of data into a terminal window). + +Patch: + +*** ../bash-3.2-patched/lib/readline/input.c Wed Aug 16 15:15:16 2006 +--- lib/readline/input.c Tue Jul 17 09:24:21 2007 +*************** +*** 134,139 **** + + *key = ibuffer[pop_index++]; +! + if (pop_index >= ibuffer_len) + pop_index = 0; + +--- 134,142 ---- + + *key = ibuffer[pop_index++]; +! #if 0 + if (pop_index >= ibuffer_len) ++ #else ++ if (pop_index > ibuffer_len) ++ #endif + pop_index = 0; + +*************** +*** 251,255 **** + { + k = (*rl_getc_function) (rl_instream); +! rl_stuff_char (k); + if (k == NEWLINE || k == RETURN) + break; +--- 254,259 ---- + { + k = (*rl_getc_function) (rl_instream); +! if (rl_stuff_char (k) == 0) +! break; /* some problem; no more room */ + if (k == NEWLINE || k == RETURN) + break; +*************** +*** 374,378 **** +--- 378,386 ---- + } + ibuffer[push_index++] = key; ++ #if 0 + if (push_index >= ibuffer_len) ++ #else ++ if (push_index > ibuffer_len) ++ #endif + push_index = 0; + +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 24 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 25 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-026 b/src/patches/bash/bash32-026 new file mode 100644 index 000000000..ba7de50a8 --- /dev/null +++ b/src/patches/bash/bash32-026 @@ -0,0 +1,82 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-026 + +Bug-Reported-by: Chet Ramey +Bug-Reference-ID: +Bug-Reference-URL: + +Bug-Description: + +This keeps the Apple linker from attempting to link bash against Apple's +readline library "replacement" rather than the one shipped with bash. It +extends the configure workaround to Mac OS X Leopard (10.5). + +As a side effect, the patch updates the copyright date displayed in the +version string. + +You must re-run configure after applying the patch, and before rebuilding +bash. + +Patch: + +*** ../bash-3.2-patched/configure.in 2007-03-06 11:07:38.000000000 -0500 +--- configure.in 2007-11-23 15:37:41.000000000 -0500 +*************** +*** 519,523 **** + # dynamic version + case "${host_os}" in +! darwin8*) READLINE_LIB='${READLINE_LIBRARY}' ;; + *) READLINE_LIB=-lreadline ;; + esac +--- 519,523 ---- + # dynamic version + case "${host_os}" in +! darwin[[89]]*) READLINE_LIB='${READLINE_LIBRARY}' ;; + *) READLINE_LIB=-lreadline ;; + esac +*** ../bash-3.2-patched/configure 2007-03-24 14:51:22.000000000 -0400 +--- configure 2007-11-23 15:46:15.000000000 -0500 +*************** +*** 4872,4876 **** + # dynamic version + case "${host_os}" in +! darwin8*) READLINE_LIB='${READLINE_LIBRARY}' ;; + *) READLINE_LIB=-lreadline ;; + esac +--- 4872,4876 ---- + # dynamic version + case "${host_os}" in +! darwin[89]*) READLINE_LIB='${READLINE_LIBRARY}' ;; + *) READLINE_LIB=-lreadline ;; + esac +*** ../bash-3.2-patched/version.c 2005-05-16 11:58:34.000000000 -0400 +--- version.c 2007-11-23 16:03:40.000000000 -0500 +*************** +*** 80,83 **** + printf ("GNU bash, version %s (%s)\n", shell_version_string (), MACHTYPE); + if (extended) +! printf (_("Copyright (C) 2005 Free Software Foundation, Inc.\n")); + } +--- 80,83 ---- + printf ("GNU bash, version %s (%s)\n", shell_version_string (), MACHTYPE); + if (extended) +! printf (_("Copyright (C) 2007 Free Software Foundation, Inc.\n")); + } +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 25 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 26 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-027 b/src/patches/bash/bash32-027 new file mode 100644 index 000000000..5e110cb96 --- /dev/null +++ b/src/patches/bash/bash32-027 @@ -0,0 +1,85 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-027 + +Bug-Reported-by: dAniel hAhler +Bug-Reference-ID: <4702ED8A.5000503@thequod.de> +Bug-Reference-URL: https://bugs.launchpad.net/ubuntu/+source/bash/+bug/119938 + +Bug-Description: + +When updating the display after displaying, for instance, a list of possible +completions, readline will place the cursor at the wrong position if the +prompt contains invisible characters and a newline. + +Patch: + +*** ../bash-3.2.25/lib/readline/display.c Mon Aug 6 14:26:29 2007 +--- lib/readline/display.c Wed Oct 10 22:43:58 2007 +*************** +*** 1049,1053 **** + else + tx = nleft; +! if (_rl_last_c_pos > tx) + { + _rl_backspace (_rl_last_c_pos - tx); /* XXX */ +--- 1049,1053 ---- + else + tx = nleft; +! if (tx >= 0 && _rl_last_c_pos > tx) + { + _rl_backspace (_rl_last_c_pos - tx); /* XXX */ +*************** +*** 1205,1209 **** + { + register char *ofd, *ols, *oe, *nfd, *nls, *ne; +! int temp, lendiff, wsatend, od, nd; + int current_invis_chars; + int col_lendiff, col_temp; +--- 1205,1209 ---- + { + register char *ofd, *ols, *oe, *nfd, *nls, *ne; +! int temp, lendiff, wsatend, od, nd, o_cpos; + int current_invis_chars; + int col_lendiff, col_temp; +*************** +*** 1466,1469 **** +--- 1466,1471 ---- + } + ++ o_cpos = _rl_last_c_pos; ++ + /* When this function returns, _rl_last_c_pos is correct, and an absolute + cursor postion in multibyte mode, but a buffer index when not in a +*************** +*** 1475,1479 **** + invisible characters in the prompt string. Let's see if setting this when + we make sure we're at the end of the drawn prompt string works. */ +! if (current_line == 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0 && _rl_last_c_pos == prompt_physical_chars) + cpos_adjusted = 1; + #endif +--- 1477,1483 ---- + invisible characters in the prompt string. Let's see if setting this when + we make sure we're at the end of the drawn prompt string works. */ +! if (current_line == 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0 && +! (_rl_last_c_pos > 0 || o_cpos > 0) && +! _rl_last_c_pos == prompt_physical_chars) + cpos_adjusted = 1; + #endif +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 26 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 27 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-028 b/src/patches/bash/bash32-028 new file mode 100644 index 000000000..e8182948d --- /dev/null +++ b/src/patches/bash/bash32-028 @@ -0,0 +1,60 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-028 + +Bug-Reported-by: dAniel hAhler +Bug-Reference-ID: +Bug-Reference-URL: + +Bug-Description: + +Under some circumstances, readline will incorrectly display a prompt string +containing invisible characters after the final newline. + +Patch: + +*** ../bash-3.2-patched/lib/readline/display.c 2007-08-25 13:47:08.000000000 -0400 +--- lib/readline/display.c 2007-11-10 17:51:29.000000000 -0500 +*************** +*** 392,396 **** + local_prompt = expand_prompt (p, &prompt_visible_length, + &prompt_last_invisible, +! (int *)NULL, + &prompt_physical_chars); + c = *t; *t = '\0'; +--- 420,424 ---- + local_prompt = expand_prompt (p, &prompt_visible_length, + &prompt_last_invisible, +! &prompt_invis_chars_first_line, + &prompt_physical_chars); + c = *t; *t = '\0'; +*************** +*** 399,403 **** + local_prompt_prefix = expand_prompt (prompt, &prompt_prefix_length, + (int *)NULL, +! &prompt_invis_chars_first_line, + (int *)NULL); + *t = c; +--- 427,431 ---- + local_prompt_prefix = expand_prompt (prompt, &prompt_prefix_length, + (int *)NULL, +! (int *)NULL, + (int *)NULL); + *t = c; +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 27 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 28 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-029 b/src/patches/bash/bash32-029 new file mode 100644 index 000000000..9de208584 --- /dev/null +++ b/src/patches/bash/bash32-029 @@ -0,0 +1,52 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-029 + +Bug-Reported-by: Tomas Janousek +Bug-Reference-ID: <20071102104034.GA26893@redhat.com> +Bug-Reference-URL: https://bugzilla.redhat.com/show_bug.cgi?id=286861 + +Bug-Description: + +When the bash arithmetic expression evaluator has temporarily turned off +evalation, such as when parsing a pre- or post-decrement or -increment +operator, and an error occurs, evaluation is not re-enabled. + +Patch: + +*** ../bash-3.2-patched/expr.c 2007-08-25 13:47:05.000000000 -0400 +--- expr.c 2007-10-18 08:08:44.000000000 -0400 +*************** +*** 287,290 **** +--- 287,292 ---- + } + free (expr_stack[expr_depth]); /* free the allocated EXPR_CONTEXT */ ++ ++ noeval = 0; /* XXX */ + } + +*************** +*** 320,323 **** +--- 322,326 ---- + + val = 0; ++ noeval = 0; + + FASTCOPY (evalbuf, oevalbuf, sizeof (evalbuf)); +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 28 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 29 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-030 b/src/patches/bash/bash32-030 new file mode 100644 index 000000000..3f12c2833 --- /dev/null +++ b/src/patches/bash/bash32-030 @@ -0,0 +1,50 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-030 + +Bug-Reported-by: Paul Eggert Andreas Schwab +Bug-Reference-ID: <877il0nu84.fsf_-_@penguin.cs.ucla.edu> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-11/msg00023.html http://lists.gnu.org/archive/html/bug-bash/2007-11/msg00022.htmlhttp://lists.gnu.org/archive/html/bug-bash/2007-11/msg00022.html + +Bug-Description: + +If redirections attached to a compound command fail, bash does not set the +command's exit status correctly. This only happens when the command is the +first in a sequential list. + +Patch: + +*** ../bash-3.2-patched/execute_cmd.c 2007-03-24 14:51:05.000000000 -0400 +--- execute_cmd.c 2007-11-05 22:31:14.000000000 -0500 +*************** +*** 615,619 **** + redirection_undo_list = (REDIRECT *)NULL; + dispose_exec_redirects (); +! return (EXECUTION_FAILURE); + } + +--- 620,624 ---- + redirection_undo_list = (REDIRECT *)NULL; + dispose_exec_redirects (); +! return (last_command_exit_value = EXECUTION_FAILURE); + } + +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 29 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 30 + + #endif /* _PATCHLEVEL_H_ */ + + diff --git a/src/patches/bash/bash32-031 b/src/patches/bash/bash32-031 new file mode 100644 index 000000000..6c96fb9d0 --- /dev/null +++ b/src/patches/bash/bash32-031 @@ -0,0 +1,62 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-031 + +Bug-Reported-by: Miroslav Lichvar +Bug-Reference-ID: Fri, 02 Nov 2007 14:07:45 +0100 +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2007-11/msg00000.html + +Bug-Description: + +In certain cases when outputting characters at the end of the line, +e.g., when displaying the prompt string, readline positions the cursor +incorrectly if the prompt string contains invisible characters and the +text being drawn begins before the last invisible character in the line. + +Patch: + +*** ../bash-3.2-patched/lib/readline/display.c 2007-08-25 13:47:08.000000000 -0400 +--- lib/readline/display.c 2007-11-10 17:51:29.000000000 -0500 +*************** +*** 1566,1574 **** + else + { +- /* We have horizontal scrolling and we are not inserting at +- the end. We have invisible characters in this line. This +- is a dumb update. */ + _rl_output_some_chars (nfd, temp); + _rl_last_c_pos += col_temp; + return; + } +--- 1619,1632 ---- + else + { + _rl_output_some_chars (nfd, temp); + _rl_last_c_pos += col_temp; ++ /* If nfd begins before any invisible characters in the prompt, ++ adjust _rl_last_c_pos to account for wrap_offset and set ++ cpos_adjusted to let the caller know. */ ++ if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible)) ++ { ++ _rl_last_c_pos -= wrap_offset; ++ cpos_adjusted = 1; ++ } + return; + } +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 30 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 31 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-032 b/src/patches/bash/bash32-032 new file mode 100644 index 000000000..5e53e2919 --- /dev/null +++ b/src/patches/bash/bash32-032 @@ -0,0 +1,47 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-032 + +Bug-Reported-by: Uwe Doering +Bug-Reference-ID: <46F3DD72.2090801@geminix.org> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-09/msg00102.html + +Bug-Description: + +There is an off-by-one error in the code that buffers characters received +very quickly in succession, causing characters to be dropped. + +Patch: + +*** ../bash-3.2-patched/lib/readline/input.c 2007-08-25 13:47:10.000000000 -0400 +--- lib/readline/input.c 2007-10-12 22:55:25.000000000 -0400 +*************** +*** 155,159 **** + pop_index--; + if (pop_index < 0) +! pop_index = ibuffer_len - 1; + ibuffer[pop_index] = key; + return (1); +--- 155,159 ---- + pop_index--; + if (pop_index < 0) +! pop_index = ibuffer_len; + ibuffer[pop_index] = key; + return (1); +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 31 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 32 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-033 b/src/patches/bash/bash32-033 new file mode 100644 index 000000000..0d698108b --- /dev/null +++ b/src/patches/bash/bash32-033 @@ -0,0 +1,88 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-033 + +Bug-Reported-by: Christophe Martin +Bug-Reference-ID: <465ABA4A.3030805@free.fr> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-05/msg00104.html + +Bug-Description: + +References made within a function to an uninitialized local array variable +using the [*] subscript in a double-quoted string can result in spurious +ASCII 127 characters in the expanded value. + +Patch: + +*** ../bash-3.2-patched/arrayfunc.c 2007-08-25 13:47:05.000000000 -0400 +--- arrayfunc.c 2007-05-31 11:55:46.000000000 -0400 +*************** +*** 723,727 **** + { + if (rtype) +! *rtype = 1; + if (allow_all == 0) + { +--- 723,727 ---- + { + if (rtype) +! *rtype = (t[0] == '*') ? 1 : 2; + if (allow_all == 0) + { +*** ../bash-3.2-patched/subst.c 2007-08-25 13:47:08.000000000 -0400 +--- subst.c 2007-11-14 15:43:00.000000000 -0500 +*************** +*** 4908,4915 **** + intmax_t arg_index; + SHELL_VAR *var; +! int atype; + + ret = 0; + temp = 0; + + /* Handle multiple digit arguments, as in ${11}. */ +--- 4973,4981 ---- + intmax_t arg_index; + SHELL_VAR *var; +! int atype, rflags; + + ret = 0; + temp = 0; ++ rflags = 0; + + /* Handle multiple digit arguments, as in ${11}. */ +*************** +*** 4944,4947 **** +--- 5010,5015 ---- + ? quote_string (temp) + : quote_escapes (temp); ++ else if (atype == 1 && temp && QUOTED_NULL (temp) && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) ++ rflags |= W_HASQUOTEDNULL; + } + #endif +*************** +*** 4971,4974 **** +--- 5039,5043 ---- + ret = alloc_word_desc (); + ret->word = temp; ++ ret->flags |= rflags; + } + return ret; +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 32 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 33 + + #endif /* _PATCHLEVEL_H_ */ + diff --git a/src/patches/bash/bash32-034 b/src/patches/bash/bash32-034 new file mode 100644 index 000000000..4f081624b --- /dev/null +++ b/src/patches/bash/bash32-034 @@ -0,0 +1,74 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-034 + +Bug-Reported-by: Ian Campbell +Bug-Reference-ID: +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-10/msg00060.html + +Bug-Description: + +The bash getcwd replacement will write past the end of allocated memory +when it allocates the buffer itself if it uses the buffer size passed as +an argument, and that size is less than the length of the pathname. + +Patch: + +*** ../bash-3.2-patched/lib/sh/getcwd.c 2004-07-21 17:15:19.000000000 -0400 +--- lib/sh/getcwd.c 2007-12-31 19:26:36.000000000 -0500 +*************** +*** 252,268 **** + { + size_t len = pathbuf + pathsize - pathp; + if (buf == NULL) + { +! if (len < (size_t) size) +! len = size; +! buf = (char *) malloc (len); + if (buf == NULL) + goto lose2; + } +! else if ((size_t) size < len) +! { +! errno = ERANGE; +! goto lose2; +! } + (void) memcpy((PTR_T) buf, (PTR_T) pathp, len); + } +--- 287,305 ---- + { + size_t len = pathbuf + pathsize - pathp; ++ if (buf == NULL && size <= 0) ++ size = len; ++ ++ if ((size_t) size < len) ++ { ++ errno = ERANGE; ++ goto lose2; ++ } + if (buf == NULL) + { +! buf = (char *) malloc (size); + if (buf == NULL) + goto lose2; + } +! + (void) memcpy((PTR_T) buf, (PTR_T) pathp, len); + } +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 33 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 34 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-035 b/src/patches/bash/bash32-035 new file mode 100644 index 000000000..55506baef --- /dev/null +++ b/src/patches/bash/bash32-035 @@ -0,0 +1,159 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-035 + +Bug-Reported-by: Ingo Molnar +Bug-Reference-ID: <20071205202901.GA25202@elte.hu> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-12/msg00014.html + +Bug-Description: + +Bash incorrectly puts the second and subsequent children spawned by a +shell forked to run a command substitution in the wrong process group. + +Patch: + +*** ../bash-3.2-patched/subst.c 2007-12-13 22:31:21.000000000 -0500 +--- subst.c 2008-01-17 22:48:15.000000000 -0500 +*************** +*** 4621,4627 **** + + #if defined (JOB_CONTROL) + set_sigchld_handler (); + stop_making_children (); +! pipeline_pgrp = old_pipeline_pgrp; + #else + stop_making_children (); +--- 4721,4728 ---- + + #if defined (JOB_CONTROL) + set_sigchld_handler (); + stop_making_children (); +! if (pid != 0) +! pipeline_pgrp = old_pipeline_pgrp; + #else + stop_making_children (); +*** ../bash-3.2-patched/jobs.c 2007-08-25 13:46:59.000000000 -0400 +--- jobs.c 2007-12-08 16:47:43.000000000 -0500 +*************** +*** 251,254 **** +--- 251,255 ---- + static int set_job_status_and_cleanup __P((int)); + ++ static WAIT job_signal_status __P((int)); + static WAIT raw_job_exit_status __P((int)); + +*************** +*** 2220,2223 **** +--- 2238,2261 ---- + } + ++ static WAIT ++ job_signal_status (job) ++ int job; ++ { ++ register PROCESS *p; ++ WAIT s; ++ ++ p = jobs[job]->pipe; ++ do ++ { ++ s = p->status; ++ if (WIFSIGNALED(s) || WIFSTOPPED(s)) ++ break; ++ p = p->next; ++ } ++ while (p != jobs[job]->pipe); ++ ++ return s; ++ } ++ + /* Return the exit status of the last process in the pipeline for job JOB. + This is the exit status of the entire job. */ +*************** +*** 2302,2310 **** + received, only if one of the jobs run is killed via SIGINT. If + job control is not set, the job will be run in the same pgrp as +! the shell, and the shell will see any signals the job gets. */ + + /* This is possibly a race condition -- should it go in stop_pipeline? */ + wait_sigint_received = 0; +! if (job_control == 0) + { + old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler); +--- 2343,2354 ---- + received, only if one of the jobs run is killed via SIGINT. If + job control is not set, the job will be run in the same pgrp as +! the shell, and the shell will see any signals the job gets. In +! fact, we want this set every time the waiting shell and the waited- +! for process are in the same process group, including command +! substitution. */ + + /* This is possibly a race condition -- should it go in stop_pipeline? */ + wait_sigint_received = 0; +! if (job_control == 0 || (subshell_environment&SUBSHELL_COMSUB)) + { + old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler); +*************** +*** 2452,2464 **** + the last process in the pipeline. If no process exits due to a + signal, S is left as the status of the last job in the pipeline. */ +! p = jobs[job]->pipe; +! do +! { +! s = p->status; +! if (WIFSIGNALED(s) || WIFSTOPPED(s)) +! break; +! p = p->next; +! } +! while (p != jobs[job]->pipe); + + if (WIFSIGNALED (s) || WIFSTOPPED (s)) +--- 2496,2500 ---- + the last process in the pipeline. If no process exits due to a + signal, S is left as the status of the last job in the pipeline. */ +! s = job_signal_status (job); + + if (WIFSIGNALED (s) || WIFSTOPPED (s)) +*************** +*** 2494,2497 **** +--- 2530,2551 ---- + } + } ++ else if ((subshell_environment & SUBSHELL_COMSUB) && wait_sigint_received) ++ { ++ /* If waiting for a job in a subshell started to do command ++ substitution, simulate getting and being killed by the SIGINT to ++ pass the status back to our parent. */ ++ s = job_signal_status (job); ++ ++ if (WIFSIGNALED (s) && WTERMSIG (s) == SIGINT && signal_is_trapped (SIGINT) == 0) ++ { ++ UNBLOCK_CHILD (oset); ++ restore_sigint_handler (); ++ old_sigint_handler = set_signal_handler (SIGINT, SIG_DFL); ++ if (old_sigint_handler == SIG_IGN) ++ restore_sigint_handler (); ++ else ++ kill (getpid (), SIGINT); ++ } ++ } + + /* Moved here from set_job_status_and_cleanup, which is in the SIGCHLD +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 34 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 35 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-036 b/src/patches/bash/bash32-036 new file mode 100644 index 000000000..ef22e60e0 --- /dev/null +++ b/src/patches/bash/bash32-036 @@ -0,0 +1,44 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-036 + +Bug-Reported-by: Len Lattanzi +Bug-Reference-ID: <87493131-7AEC-4301-A684-E6CC6D06E3E1@apple.com> +Bug-Reference-URL: + +Bug-Description: + +When initializing a subshell, bash did not reset a sentinel keeping track +of the number of command substitutions, leading to an infinite loop if +an error was encountered in the subshell. + +Patch: + +*** ../bash-3.2-patched/execute_cmd.c 2007-12-13 22:31:14.000000000 -0500 +--- execute_cmd.c 2007-12-20 08:52:34.000000000 -0500 +*************** +*** 3881,3884 **** +--- 3916,3921 ---- + + clear_unwind_protect_list (0); ++ /* XXX -- are there other things we should be resetting here? */ ++ parse_and_execute_level = 0; /* nothing left to restore it */ + + /* We're no longer inside a shell function. */ +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 35 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 36 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-037 b/src/patches/bash/bash32-037 new file mode 100644 index 000000000..376bd937c --- /dev/null +++ b/src/patches/bash/bash32-037 @@ -0,0 +1,110 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-037 + +Bug-Reported-by: jared r r spiegel +Bug-Reference-ID: <200801152201.m0FM1lDp021260@iorek.ice-nine.org> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2008-01/msg00049.html + +Bug-Description: + +Bash inappropriately evaluates command substitutions while expanding +directory names as part of command substitution. + +Patch: + +*** ../bash-3.2-patched/subst.c 2007-12-13 22:31:21.000000000 -0500 +--- subst.c 2008-01-17 22:48:15.000000000 -0500 +*************** +*** 2815,2821 **** + to jump_to_top_level here so we don't endlessly loop. */ + WORD_LIST * +! expand_prompt_string (string, quoted) + char *string; + int quoted; + { + WORD_LIST *value; +--- 2895,2902 ---- + to jump_to_top_level here so we don't endlessly loop. */ + WORD_LIST * +! expand_prompt_string (string, quoted, wflags) + char *string; + int quoted; ++ int wflags; + { + WORD_LIST *value; +*************** +*** 2825,2829 **** + return ((WORD_LIST *)NULL); + +! td.flags = 0; + td.word = savestring (string); + +--- 2906,2910 ---- + return ((WORD_LIST *)NULL); + +! td.flags = wflags; + td.word = savestring (string); + +*** ../bash-3.2-patched/subst.h 2007-03-24 14:51:05.000000000 -0400 +--- subst.h 2008-01-17 22:46:08.000000000 -0500 +*************** +*** 136,140 **** + + /* Expand a prompt string. */ +! extern WORD_LIST *expand_prompt_string __P((char *, int)); + + /* Expand STRING just as if you were expanding a word. This also returns +--- 137,141 ---- + + /* Expand a prompt string. */ +! extern WORD_LIST *expand_prompt_string __P((char *, int, int)); + + /* Expand STRING just as if you were expanding a word. This also returns +*** ../bash-3.2-patched/parse.y 2007-08-25 13:47:06.000000000 -0400 +--- parse.y 2008-01-17 22:46:30.000000000 -0500 +*************** +*** 4367,4371 **** + { + last_exit_value = last_command_exit_value; +! list = expand_prompt_string (result, Q_DOUBLE_QUOTES); + free (result); + result = string_list (list); +--- 4367,4371 ---- + { + last_exit_value = last_command_exit_value; +! list = expand_prompt_string (result, Q_DOUBLE_QUOTES, 0); + free (result); + result = string_list (list); +*** ../bash-3.2-patched/bashline.c 2006-07-29 16:39:30.000000000 -0400 +--- bashline.c 2008-02-17 12:53:42.000000000 -0500 +*************** +*** 2358,2362 **** + { + new_dirname = savestring (local_dirname); +! wl = expand_prompt_string (new_dirname, 0); /* does the right thing */ + if (wl) + { +--- 2376,2380 ---- + { + new_dirname = savestring (local_dirname); +! wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB); /* does the right thing */ + if (wl) + { +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 36 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 37 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-038 b/src/patches/bash/bash32-038 new file mode 100644 index 000000000..842b1b501 --- /dev/null +++ b/src/patches/bash/bash32-038 @@ -0,0 +1,80 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-038 + +Bug-Reported-by: Wojciech Puchar +Bug-Reference-ID: <200803131141.m2DBf9vo001136@wojtek.tensor.gdynia.pl> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2008-03/msg00029.html + +Bug-Description: + +When reading input lines into a single variable using the `read' builtin, +bash did not free the memory it read after assigining it to the named +variable, causing a memory leak noticable when reading large amounts of +data. + + +Patch: + +*** ../bash-3.2-patched/builtins/read.def 2007-08-25 13:47:07.000000000 -0400 +--- builtins/read.def 2008-03-07 12:55:47.000000000 -0500 +*************** +*** 135,139 **** + char c; + char *input_string, *orig_input_string, *ifs_chars, *prompt, *arrayname; +! char *e, *t, *t1, *ps2; + struct stat tsb; + SHELL_VAR *var; +--- 152,156 ---- + char c; + char *input_string, *orig_input_string, *ifs_chars, *prompt, *arrayname; +! char *e, *t, *t1, *ps2, *tofree; + struct stat tsb; + SHELL_VAR *var; +*************** +*** 675,678 **** +--- 728,732 ---- + /* Check whether or not the number of fields is exactly the same as the + number of variables. */ ++ tofree = NULL; + if (*input_string) + { +*************** +*** 680,684 **** + t = get_word_from_string (&input_string, ifs_chars, &e); + if (*input_string == 0) +! input_string = t; + else + input_string = strip_trailing_ifs_whitespace (t1, ifs_chars, saw_escape); +--- 734,738 ---- + t = get_word_from_string (&input_string, ifs_chars, &e); + if (*input_string == 0) +! tofree = input_string = t; + else + input_string = strip_trailing_ifs_whitespace (t1, ifs_chars, saw_escape); +*************** +*** 695,698 **** +--- 749,754 ---- + var = bind_read_variable (list->word->word, input_string); + stupidly_hack_special_variables (list->word->word); ++ FREE (tofree); ++ + if (var) + VUNSETATTR (var, att_invisible); +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 37 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 38 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-039 b/src/patches/bash/bash32-039 new file mode 100644 index 000000000..c225a5af4 --- /dev/null +++ b/src/patches/bash/bash32-039 @@ -0,0 +1,175 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-039 + +Bug-Reported-by: rew@erebor.com +Bug-Reference-ID: <20070119065603.546D011E9C@kansas.erebor.com> +Bug-Reference-URL: + +Bug-Description: + +Bash-3.2 changed the behavior of the [[ command's `=~' operator when the +right-hand side was quoted: it matched the quoted portions as strings. +This patch introduces a new shell option: compat31. When enabled, it +restores the bash-3.1 behavior with respect to evaluating quoted arguments +to the =~ operator. + +Patch: + +*** ../bash-3.2-patched/execute_cmd.c 2007-12-14 21:12:39.000000000 -0500 +--- execute_cmd.c 2008-02-22 21:20:40.000000000 -0500 +*************** +*** 2547,2551 **** + if (arg1 == 0) + arg1 = nullstr; +! arg2 = cond_expand_word (cond->right->op, rmatch ? 2 : (patmatch ? 1 : 0)); + if (arg2 == 0) + arg2 = nullstr; +--- 2552,2557 ---- + if (arg1 == 0) + arg1 = nullstr; +! arg2 = cond_expand_word (cond->right->op, +! (rmatch && shell_compatibility_level > 31) ? 2 : (patmatch ? 1 : 0)); + if (arg2 == 0) + arg2 = nullstr; +*** ../bash-3.2-patched/shell.h 2003-06-01 15:04:36.000000000 -0400 +--- shell.h 2008-02-22 21:16:48.000000000 -0500 +*************** +*** 90,93 **** +--- 90,94 ---- + extern int interactive, interactive_shell; + extern int startup_state; ++ extern int shell_compatibility_level; + + /* Structure to pass around that holds a bitmap of file descriptors +*** ../bash-3.2-patched/version.c 2007-12-14 21:12:29.000000000 -0500 +--- version.c 2008-04-10 08:22:22.000000000 -0400 +*************** +*** 44,47 **** +--- 44,50 ---- + const char *sccs_version = SCCSVERSION; + ++ /* If == 31, shell compatible with bash-3.1, == 32 with bash-3.2, and so on */ ++ int shell_compatibility_level = 32; ++ + /* Functions for getting, setting, and displaying the shell version. */ + +*** ../bash-3.2-patched/builtins/shopt.def 2005-02-19 17:25:03.000000000 -0500 +--- builtins/shopt.def 2008-04-10 08:13:32.000000000 -0400 +*************** +*** 102,105 **** +--- 102,107 ---- + static int set_shellopts_after_change __P((int)); + ++ static int set_compatibility_level __P((int)); ++ + #if defined (RESTRICTED_SHELL) + static int set_restricted_shell __P((int)); +*************** +*** 107,110 **** +--- 109,113 ---- + + static int shopt_login_shell; ++ static int shopt_compat31; + + typedef int shopt_set_func_t __P((int)); +*************** +*** 122,125 **** +--- 125,129 ---- + { "cmdhist", &command_oriented_history, (shopt_set_func_t *)NULL }, + #endif ++ { "compat31", &shopt_compat31, set_compatibility_level }, + { "dotglob", &glob_dot_filenames, (shopt_set_func_t *)NULL }, + { "execfail", &no_exit_on_failed_exec, (shopt_set_func_t *)NULL }, +*************** +*** 460,463 **** +--- 464,479 ---- + } + ++ static int ++ set_compatibility_level (mode) ++ int mode; ++ { ++ /* Need to change logic here as we add more compatibility levels */ ++ if (shopt_compat31) ++ shell_compatibility_level = 31; ++ else ++ shell_compatibility_level = 32; ++ return 0; ++ } ++ + #if defined (RESTRICTED_SHELL) + /* Don't allow the value of restricted_shell to be modified. */ +*** ../bash-3.2-patched/doc/bash.1 2006-09-28 10:26:05.000000000 -0400 +--- doc/bash.1 2008-04-25 12:32:49.000000000 -0400 +*************** +*** 7978,7981 **** +--- 8200,8209 ---- + easy re-editing of multi-line commands. + .TP 8 ++ .B compat31 ++ If set, ++ .B bash ++ changes its behavior to that of version 3.1 with respect to quoted ++ arguments to the conditional command's =~ operator. ++ .TP 8 + .B dotglob + If set, +*** ../bash-20080214/doc/bashref.texi 2008-02-08 21:28:35.000000000 -0500 +--- doc/bashref.texi 2008-02-22 21:44:51.000000000 -0500 +*************** +*** 4053,4056 **** +--- 4061,4069 ---- + easy re-editing of multi-line commands. + ++ @item compat31 ++ If set, Bash ++ changes its behavior to that of version 3.1 with respect to quoted ++ arguments to the conditional command's =~ operator. ++ + @item dotglob + If set, Bash includes filenames beginning with a `.' in +*** ../bash-3.2-patched/tests/shopt.right 2005-02-19 17:46:09.000000000 -0500 +--- tests/shopt.right 2008-04-28 09:13:07.000000000 -0400 +*************** +*** 7,10 **** +--- 7,11 ---- + shopt -u checkwinsize + shopt -s cmdhist ++ shopt -u compat31 + shopt -u dotglob + shopt -u execfail +*************** +*** 54,57 **** +--- 55,59 ---- + shopt -u checkhash + shopt -u checkwinsize ++ shopt -u compat31 + shopt -u dotglob + shopt -u execfail +*************** +*** 78,81 **** +--- 80,84 ---- + checkhash off + checkwinsize off ++ compat31 off + dotglob off + execfail off + +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 38 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 39 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-040 b/src/patches/bash/bash32-040 new file mode 100644 index 000000000..50b85bbe5 --- /dev/null +++ b/src/patches/bash/bash32-040 @@ -0,0 +1,47 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-040 + +Bug-Reported-by: John McCabe-Dansted +Bug-Reference-ID: +Bug-Reference-URL: https://bugs.launchpad.net/ubuntu/+source/bash/+bug/202885 + +Bug-Description: + +When using the `set' builtin to list all shell variables, the shell uses +the wrong variable when computing the length of a variable's value. + +Patch: + +*** ../bash-3.2-patched/array.c 2007-03-24 14:51:03.000000000 -0400 +--- array.c 2008-08-17 13:07:04.000000000 -0400 +*************** +*** 684,688 **** + valstr = element_value (ae) ? sh_double_quote (element_value(ae)) + : (char *)NULL; +! elen = STRLEN (indstr) + 8 + STRLEN (valstr); + RESIZE_MALLOCED_BUFFER (result, rlen, (elen + 1), rsize, rsize); + +--- 809,813 ---- + valstr = element_value (ae) ? sh_double_quote (element_value(ae)) + : (char *)NULL; +! elen = STRLEN (is) + 8 + STRLEN (valstr); + RESIZE_MALLOCED_BUFFER (result, rlen, (elen + 1), rsize, rsize); + +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 39 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 40 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-041 b/src/patches/bash/bash32-041 new file mode 100644 index 000000000..3c05c04ea --- /dev/null +++ b/src/patches/bash/bash32-041 @@ -0,0 +1,154 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-041 + +Bug-Reported-by: Dan Jacobson +Bug-Reference-ID: <873arjs11h.fsf@jidanni.org> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2008-02/msg00049.html + +Bug-Description: + +Bash saved and restored the value of `set -o history' while sourcing files, +preventing users from turning off history with `set +o history' in .bashrc. + +Patch: + +*** ../bash-3.2-patched/bashhist.c 2005-12-26 13:31:16.000000000 -0500 +--- bashhist.c 2008-08-17 13:07:40.000000000 -0400 +*************** +*** 81,84 **** +--- 81,85 ---- + becomes zero when we read lines from a file, for example. */ + int remember_on_history = 1; ++ int enable_history_list = 1; /* value for `set -o history' */ + + /* The number of lines that Bash has added to this history session. The +*************** +*** 235,239 **** + history_expansion_inhibited = 1; + #endif +! remember_on_history = interact != 0; + history_inhibit_expansion_function = bash_history_inhibit_expansion; + } +--- 236,240 ---- + history_expansion_inhibited = 1; + #endif +! remember_on_history = enable_history_list = interact != 0; + history_inhibit_expansion_function = bash_history_inhibit_expansion; + } +*** ../bash-3.2-patched/builtins/set.def 2006-07-27 09:41:43.000000000 -0400 +--- builtins/set.def 2008-08-14 16:33:41.000000000 -0400 +*************** +*** 190,194 **** + #endif /* BANG_HISTORY */ + #if defined (HISTORY) +! { "history", '\0', &remember_on_history, bash_set_history, (setopt_get_func_t *)NULL }, + #endif + { "ignoreeof", '\0', &ignoreeof, set_ignoreeof, (setopt_get_func_t *)NULL }, +--- 198,202 ---- + #endif /* BANG_HISTORY */ + #if defined (HISTORY) +! { "history", '\0', &enable_history_list, bash_set_history, (setopt_get_func_t *)NULL }, + #endif + { "ignoreeof", '\0', &ignoreeof, set_ignoreeof, (setopt_get_func_t *)NULL }, +*************** +*** 382,385 **** +--- 390,394 ---- + if (on_or_off == FLAG_ON) + { ++ enable_history_list = 1; + bash_history_enable (); + if (history_lines_this_session == 0) +*************** +*** 387,392 **** + } + else +! bash_history_disable (); +! return (1 - remember_on_history); + } + #endif +--- 396,404 ---- + } + else +! { +! enable_history_list = 0; +! bash_history_disable (); +! } +! return (1 - enable_history_list); + } + #endif +*************** +*** 566,570 **** + { + #if defined (HISTORY) +! remember_on_history = 1; + #endif + ignoreeof = 0; +--- 578,582 ---- + { + #if defined (HISTORY) +! remember_on_history = enable_history_list = 1; + #endif + ignoreeof = 0; +*** ../bash-3.2-patched/builtins/evalstring.c 2006-07-28 15:12:16.000000000 -0400 +--- builtins/evalstring.c 2008-11-10 21:17:16.000000000 -0500 +*************** +*** 68,71 **** +--- 68,79 ---- + static int cat_file __P((REDIRECT *)); + ++ #if defined (HISTORY) ++ static void ++ set_history_remembering () ++ { ++ remember_on_history = enable_history_list; ++ } ++ #endif ++ + /* How to force parse_and_execute () to clean up after itself. */ + void +*************** +*** 116,120 **** + + #if defined (HISTORY) +! unwind_protect_int (remember_on_history); /* can be used in scripts */ + # if defined (BANG_HISTORY) + if (interactive_shell) +--- 124,131 ---- + + #if defined (HISTORY) +! if (parse_and_execute_level == 0) +! add_unwind_protect (set_history_remembering, (char *)NULL); +! else +! unwind_protect_int (remember_on_history); /* can be used in scripts */ + # if defined (BANG_HISTORY) + if (interactive_shell) +*** ../bash-3.2-patched/bashhist.h 2005-07-01 15:44:41.000000000 -0400 +--- bashhist.h 2008-08-17 12:51:07.000000000 -0400 +*************** +*** 32,35 **** +--- 32,38 ---- + + extern int remember_on_history; ++ extern int enable_history_list; /* value for `set -o history' */ ++ extern int literal_history; /* controlled by `shopt lithist' */ ++ extern int force_append_history; + extern int history_lines_this_session; + extern int history_lines_in_file; +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 40 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 41 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-042 b/src/patches/bash/bash32-042 new file mode 100644 index 000000000..4c9f4d6df --- /dev/null +++ b/src/patches/bash/bash32-042 @@ -0,0 +1,48 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-042 + +Bug-Reported-by: Archimerged Ark Submedes +Bug-Reference-ID: <5ba4bef00804182116g65ff71e0qdffcf672f205e708@mail.gmail.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2008-04/msg00041.html + +Bug-Description: + +An operator precedence error prevented the bash arithmetic evaluator from +parsing conditional commands correctly. + +Patch: + +*** ../bash-3.2-patched/expr.c 2007-12-13 22:30:43.000000000 -0500 +--- expr.c 2008-08-17 13:09:59.000000000 -0400 +*************** +*** 521,525 **** + noeval++; + } +! val2 = explor (); + if (set_noeval) + noeval--; +--- 521,526 ---- + noeval++; + } +! +! val2 = expcond (); + if (set_noeval) + noeval--; +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 41 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 42 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-043 b/src/patches/bash/bash32-043 new file mode 100644 index 000000000..5a51843d2 --- /dev/null +++ b/src/patches/bash/bash32-043 @@ -0,0 +1,62 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-043 + +Bug-Reported-by: Morita Sho +Bug-Reference-ID: +Bug-Reference-URL: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=478096 + +Bug-Description: + +Side effects caused by setting function-local versions of variables bash +handles specially persisted after the function returned. + +Patch: + +*** ../bash-3.2-patched/variables.c 2007-08-25 13:47:05.000000000 -0400 +--- variables.c 2008-11-09 17:47:31.000000000 -0500 +*************** +*** 3459,3465 **** + var->attributes &= ~(att_tempvar|att_propagate); + else +! shell_variables->flags |= VC_HASTMPVAR; + v->attributes |= var->attributes; + } + + dispose_variable (var); +--- 3771,3779 ---- + var->attributes &= ~(att_tempvar|att_propagate); + else +! shell_variables->flags |= VC_HASTMPVAR; + v->attributes |= var->attributes; + } ++ else ++ stupidly_hack_special_variables (var->name); /* XXX */ + + dispose_variable (var); +*************** +*** 3548,3551 **** +--- 3862,3867 ---- + v->attributes |= var->attributes; + } ++ else ++ stupidly_hack_special_variables (var->name); /* XXX */ + + dispose_variable (var); +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 42 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 43 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-044 b/src/patches/bash/bash32-044 new file mode 100644 index 000000000..3e7a392d4 --- /dev/null +++ b/src/patches/bash/bash32-044 @@ -0,0 +1,150 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-044 + +Bug-Reported-by: slinkp +Bug-Reference-ID: +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2008-05/msg00085.html + +Bug-Description: + +The presence of invisible characters in a prompt longer than the screenwidth +with invisible characters on the first and last prompt lines caused readline +to place the cursor in the wrong physical location. + +Patch: + +*** ../bash-3.2-patched/lib/readline/display.c 2007-12-14 21:12:40.000000000 -0500 +--- lib/readline/display.c 2008-10-23 09:39:46.000000000 -0400 +*************** +*** 911,914 **** +--- 944,951 ---- + OFFSET (which has already been calculated above). */ + ++ #define INVIS_FIRST() (prompt_physical_chars > _rl_screenwidth ? prompt_invis_chars_first_line : wrap_offset) ++ #define WRAP_OFFSET(line, offset) ((line == 0) \ ++ ? (offset ? INVIS_FIRST() : 0) \ ++ : ((line == prompt_last_screen_line) ? wrap_offset-prompt_invis_chars_first_line : 0)) + #define W_OFFSET(line, offset) ((line) == 0 ? offset : 0) + #define VIS_LLEN(l) ((l) > _rl_vis_botlin ? 0 : (vis_lbreaks[l+1] - vis_lbreaks[l])) +*************** +*** 945,949 **** + _rl_last_c_pos > wrap_offset && + o_cpos < prompt_last_invisible) +! _rl_last_c_pos -= wrap_offset; + + /* If this is the line with the prompt, we might need to +--- 982,992 ---- + _rl_last_c_pos > wrap_offset && + o_cpos < prompt_last_invisible) +! _rl_last_c_pos -= prompt_invis_chars_first_line; /* XXX - was wrap_offset */ +! else if (linenum == prompt_last_screen_line && prompt_physical_chars > _rl_screenwidth && +! (MB_CUR_MAX > 1 && rl_byte_oriented == 0) && +! cpos_adjusted == 0 && +! _rl_last_c_pos != o_cpos && +! _rl_last_c_pos > (prompt_last_invisible - _rl_screenwidth - prompt_invis_chars_first_line)) +! _rl_last_c_pos -= (wrap_offset-prompt_invis_chars_first_line); + + /* If this is the line with the prompt, we might need to +*************** +*** 1205,1209 **** + { + register char *ofd, *ols, *oe, *nfd, *nls, *ne; +! int temp, lendiff, wsatend, od, nd, o_cpos; + int current_invis_chars; + int col_lendiff, col_temp; +--- 1264,1268 ---- + { + register char *ofd, *ols, *oe, *nfd, *nls, *ne; +! int temp, lendiff, wsatend, od, nd, twidth, o_cpos; + int current_invis_chars; + int col_lendiff, col_temp; +*************** +*** 1221,1225 **** + temp = _rl_last_c_pos; + else +! temp = _rl_last_c_pos - W_OFFSET(_rl_last_v_pos, visible_wrap_offset); + if (temp == _rl_screenwidth && _rl_term_autowrap && !_rl_horizontal_scroll_mode + && _rl_last_v_pos == current_line - 1) +--- 1280,1284 ---- + temp = _rl_last_c_pos; + else +! temp = _rl_last_c_pos - WRAP_OFFSET (_rl_last_v_pos, visible_wrap_offset); + if (temp == _rl_screenwidth && _rl_term_autowrap && !_rl_horizontal_scroll_mode + && _rl_last_v_pos == current_line - 1) +*************** +*** 1587,1599 **** + { + _rl_output_some_chars (nfd + lendiff, temp - lendiff); +- #if 1 + /* XXX -- this bears closer inspection. Fixes a redisplay bug + reported against bash-3.0-alpha by Andreas Schwab involving + multibyte characters and prompt strings with invisible + characters, but was previously disabled. */ +! _rl_last_c_pos += _rl_col_width (nfd+lendiff, 0, temp-col_lendiff); +! #else +! _rl_last_c_pos += _rl_col_width (nfd+lendiff, 0, temp-lendiff); +! #endif + } + } +--- 1648,1660 ---- + { + _rl_output_some_chars (nfd + lendiff, temp - lendiff); + /* XXX -- this bears closer inspection. Fixes a redisplay bug + reported against bash-3.0-alpha by Andreas Schwab involving + multibyte characters and prompt strings with invisible + characters, but was previously disabled. */ +! if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) +! twidth = _rl_col_width (nfd+lendiff, 0, temp-col_lendiff); +! else +! twidth = temp - lendiff; +! _rl_last_c_pos += twidth; + } + } +*************** +*** 1789,1793 **** + int cpos, dpos; /* current and desired cursor positions */ + +! woff = W_OFFSET (_rl_last_v_pos, wrap_offset); + cpos = _rl_last_c_pos; + #if defined (HANDLE_MULTIBYTE) +--- 1850,1854 ---- + int cpos, dpos; /* current and desired cursor positions */ + +! woff = WRAP_OFFSET (_rl_last_v_pos, wrap_offset); + cpos = _rl_last_c_pos; + #if defined (HANDLE_MULTIBYTE) +*************** +*** 1803,1807 **** + prompt string, since they're both buffer indices and DPOS is a + desired display position. */ +! if (new > prompt_last_invisible) /* XXX - don't use woff here */ + { + dpos -= woff; +--- 1864,1872 ---- + prompt string, since they're both buffer indices and DPOS is a + desired display position. */ +! if ((new > prompt_last_invisible) || /* XXX - don't use woff here */ +! (prompt_physical_chars > _rl_screenwidth && +! _rl_last_v_pos == prompt_last_screen_line && +! wrap_offset != woff && +! new > (prompt_last_invisible-_rl_screenwidth-wrap_offset))) + { + dpos -= woff; +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 43 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 44 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-045 b/src/patches/bash/bash32-045 new file mode 100644 index 000000000..68b91ffe1 --- /dev/null +++ b/src/patches/bash/bash32-045 @@ -0,0 +1,50 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-045 + +Bug-Reported-by: Roman Rakus +Bug-Reference-ID: <4864B4A0.1060402@redhat.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2008-06/msg00098.html + +Bug-Description: + +When short-circuiting execution due to the `break' or `continue' builtins, +bash did not preserve the value of $?. + +Patch: + +*** ../bash-3.2-patched/execute_cmd.c 2008-04-28 22:00:24.000000000 -0400 +--- execute_cmd.c 2008-10-18 14:35:03.000000000 -0400 +*************** +*** 502,507 **** +--- 514,526 ---- + volatile int save_line_number; + ++ #if 0 + if (command == 0 || breaking || continuing || read_but_dont_execute) + return (EXECUTION_SUCCESS); ++ #else ++ if (breaking || continuing) ++ return (last_command_exit_value); ++ if (command == 0 || read_but_dont_execute) ++ return (EXECUTION_SUCCESS); ++ #endif + + QUIT; +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 44 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 45 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-046 b/src/patches/bash/bash32-046 new file mode 100644 index 000000000..78aaf0176 --- /dev/null +++ b/src/patches/bash/bash32-046 @@ -0,0 +1,47 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-046 + +Bug-Reported-by: Wang Xin +Bug-Reference-ID: <9a73e1570807062042ide16698m10e1b18036c95592@mail.gmail.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2008-07/msg00014.html + +Bug-Description: + +Bash did not compute the length of multibyte characters correctly when +performing array element length references (e.g., ${#var[subscript]}). + +Patch: + +*** /usr/src/local/bash/bash-3.2-patched/subst.c 2008-04-28 22:00:20.000000000 -0400 +--- subst.c 2008-11-10 22:02:38.000000000 -0500 +*************** +*** 4813,4817 **** + t = (ind == 0) ? value_cell (var) : (char *)NULL; + +! len = STRLEN (t); + return (len); + } +--- 4813,4817 ---- + t = (ind == 0) ? value_cell (var) : (char *)NULL; + +! len = MB_STRLEN (t); + return (len); + } +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 45 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 46 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-047 b/src/patches/bash/bash32-047 new file mode 100644 index 000000000..b8272b1ee --- /dev/null +++ b/src/patches/bash/bash32-047 @@ -0,0 +1,65 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-047 + +Bug-Reported-by: Roman Rakus +Bug-Reference-ID: <48A89EBC.906@redhat.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2008-08/msg00026.html + +Bug-Description: + +When using the `.' (source) builtin, under certain circumstances bash was +too careful in discarding state to preserve internal consistency. One +effect was that assignments to readonly variables would cause entire scripts +to be aborted instead of execution of the offending command. This behavior +was introduced by bash-3.2 patch 20. + +Patch: + +*** /usr/src/local/chet/src/bash/bash-3.2-patched/subst.c 2008-04-29 21:24:55.000000000 -0400 +--- subst.c 2008-11-13 17:44:25.000000000 -0500 +*************** +*** 138,142 **** + extern int last_command_exit_value, last_command_exit_signal; + extern int subshell_environment; +! extern int subshell_level; + extern int eof_encountered; + extern int return_catch_flag, return_catch_value; +--- 138,142 ---- + extern int last_command_exit_value, last_command_exit_signal; + extern int subshell_environment; +! extern int subshell_level, parse_and_execute_level; + extern int eof_encountered; + extern int return_catch_flag, return_catch_value; +*************** +*** 7673,7677 **** + expanding_redir = 0; + +! top_level_cleanup (); /* from sig.c */ + + jump_to_top_level (v); +--- 7673,7679 ---- + expanding_redir = 0; + +! if (parse_and_execute_level == 0) +! top_level_cleanup (); /* from sig.c */ +! + + jump_to_top_level (v); +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 46 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 47 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-048 b/src/patches/bash/bash32-048 new file mode 100644 index 000000000..551dadefe --- /dev/null +++ b/src/patches/bash/bash32-048 @@ -0,0 +1,56 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-048 + +Bug-Reported-by: Steffen Kiess +Bug-Reference-ID: <1223929957.5383.6.camel@fips> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2008-10/msg00047.html + +Bug-Description: + +When invoked as `bash -c', bash did not execute an EXIT trap when the last +command in the executed list was a command run from the file system. + +Patch: + +*** /Users/chet/src/bash/bash-3.2-patched/builtins/evalstring.c 2006-07-28 15:12:16.000000000 -0400 +--- builtins/evalstring.c 2008-11-13 18:38:45.000000000 -0500 +*************** +*** 249,252 **** +--- 249,253 ---- + * we're not running a trap AND + * we have parsed the full command (string == '\0') AND ++ * we're not going to run the exit trap AND + * we have a simple command without redirections AND + * the command is not being timed AND +*************** +*** 259,263 **** + *bash_input.location.string == '\0' && + command->type == cm_simple && +! !command->redirects && !command->value.Simple->redirects && + ((command->flags & CMD_TIME_PIPELINE) == 0) && + ((command->flags & CMD_INVERT_RETURN) == 0)) +--- 260,265 ---- + *bash_input.location.string == '\0' && + command->type == cm_simple && +! signal_is_trapped (EXIT_TRAP) == 0 && +! command->redirects == 0 && command->value.Simple->redirects == 0 && + ((command->flags & CMD_TIME_PIPELINE) == 0) && + ((command->flags & CMD_INVERT_RETURN) == 0)) +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 47 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 48 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-049 b/src/patches/bash/bash32-049 new file mode 100644 index 000000000..469c4c891 --- /dev/null +++ b/src/patches/bash/bash32-049 @@ -0,0 +1,64 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-049 + +Bug-Reported-by: Len Lattanzi +Bug-Reference-ID: <52B1297F-6675-45CC-B63E-24745337D006@apple.com> +Bug-Reference-URL: + +Bug-Description: + +On systems where mbrtowc() returns -2 when passed a length argument with +value 0, when using a multibyte locale, Readline's emacs-mode forward-char +at the end of a line will leave the point beyond the end of the line. + +Patch: + +*** ../bash-3.2-patched/lib/readline/mbutil.c 2009-05-29 23:09:26.000000000 -0400 +--- lib/readline/mbutil.c 2009-05-29 23:10:12.000000000 -0400 +*************** +*** 78,82 **** + int seed, count, find_non_zero; + { +! size_t tmp; + mbstate_t ps; + int point; +--- 78,82 ---- + int seed, count, find_non_zero; + { +! size_t tmp, len; + mbstate_t ps; + int point; +*************** +*** 99,103 **** + while (count > 0) + { +! tmp = mbrtowc (&wc, string+point, strlen(string + point), &ps); + if (MB_INVALIDCH ((size_t)tmp)) + { +--- 99,106 ---- + while (count > 0) + { +! len = strlen (string + point); +! if (len == 0) +! break; +! tmp = mbrtowc (&wc, string+point, len, &ps); + if (MB_INVALIDCH ((size_t)tmp)) + { +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 48 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 49 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-050 b/src/patches/bash/bash32-050 new file mode 100644 index 000000000..aef537e18 --- /dev/null +++ b/src/patches/bash/bash32-050 @@ -0,0 +1,56 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-050 + +Bug-Reported-by: Jan Hnatek +Bug-Reference-ID: <4A44991F.8010005@sun.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-06/msg00084.html + +Bug-Description: + +On systems where mbrtowc() returns -2 when passed a length argument with +value 0, when using a multibyte locale, Readline's emacs-mode forward-char +at the end of a line will leave the point beyond the end of the line. + +Patch: + +*** ../bash-3.2-patched/lib/readline/mbutil.c 2009-06-16 11:26:50.000000000 -0400 +--- lib/readline/mbutil.c 2009-01-04 14:32:33.000000000 -0500 +*************** +*** 132,141 **** + { + tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps); +! while (tmp > 0 && wcwidth (wc) == 0) + { + point += tmp; + tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps); +- if (MB_NULLWCH (tmp) || MB_INVALIDCH (tmp)) +- break; + } + } +--- 130,137 ---- + { + tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps); +! while (MB_NULLWCH (tmp) == 0 && MB_INVALIDCH (tmp) == 0 && wcwidth (wc) == 0) + { + point += tmp; + tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps); + } + } +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 49 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 50 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-051 b/src/patches/bash/bash32-051 new file mode 100644 index 000000000..404fbd646 --- /dev/null +++ b/src/patches/bash/bash32-051 @@ -0,0 +1,46 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-051 + +Bug-Reported-by: werner@suse.de +Bug-Reference-ID: <201002251238.o1PCcYcg016893@boole.suse.de> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2010-02/msg00132.html + +Bug-Description: + +When the `read' builtin times out after the timeout specified with -t is +exceeded, it does not reset the flags that tell signal handlers to process +signals immediately instead of deferring their handling. This can result +in unsafe functions being called from signal handlers, which can cause bash +to hang or dump core. + +Patch: + +*** ../bash-3.2-patched/builtins/read.def 2008-04-29 21:25:00.000000000 -0400 +--- builtins/read.def 2010-03-17 09:50:51.000000000 -0400 +*************** +*** 327,330 **** +--- 327,332 ---- + if (code) + { ++ interrupt_immediately--; ++ terminate_immediately = 0; + run_unwind_frame ("read_builtin"); + return (EXECUTION_FAILURE); +*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 +--- patchlevel.h Mon Oct 16 14:22:54 2006 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 50 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 51 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/binutils-2.18-configure-1.patch b/src/patches/binutils-2.18-configure-1.patch deleted file mode 100644 index ae6aaa3d9..000000000 --- a/src/patches/binutils-2.18-configure-1.patch +++ /dev/null @@ -1,19 +0,0 @@ -Submitted By: Matt Burgess (matthew at linuxfromscratch dot org) -Date: 2007-11-19 -Initial Package Version: 2.18 -Origin: Upstream (http://sourceware.org/cgi-bin/cvsweb.cgi/src/configure.diff?r1=1.268&r2=1.268.2.1&cvsroot=src) -Upstream Status: Applied -Description: Fixes the configure script to correctly dictate Texinfo > 4.9. - -diff -Naur binutils-2.18.orig/configure binutils-2.18/configure ---- binutils-2.18.orig/configure 2007-08-06 20:29:40.000000000 +0000 -+++ binutils-2.18/configure 2007-11-18 22:37:58.000000000 +0000 -@@ -6128,7 +6128,7 @@ - # For an installed makeinfo, we require it to be from texinfo 4.4 or - # higher, else we use the "missing" dummy. - if ${MAKEINFO} --version \ -- | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|[5-9])' >/dev/null 2>&1; then -+ | egrep 'texinfo[^0-9]*(4\.([4-9]|[1-9][0-9])|[5-9]|[1-9][0-9])' >/dev/null 2>&1; then - : - else - MAKEINFO="$MISSING makeinfo" diff --git a/src/patches/coreutils-5.96-futimes.patch b/src/patches/coreutils-5.96-futimes.patch new file mode 100644 index 000000000..e91f1df02 --- /dev/null +++ b/src/patches/coreutils-5.96-futimes.patch @@ -0,0 +1,56 @@ +--- coreutils-6.0.orig/lib/utimens.c 2006-06-11 09:14:31.000000000 +0200 ++++ coreutils-6.0/lib/utimens.c 2007-07-17 00:41:08.000000000 +0200 +@@ -75,7 +75,7 @@ + Return 0 on success, -1 (setting errno) on failure. */ + + int +-futimens (int fd ATTRIBUTE_UNUSED, ++cu_futimens (int fd ATTRIBUTE_UNUSED, + char const *file, struct timespec const timespec[2]) + { + /* There's currently no interface to set file timestamps with +@@ -168,5 +168,5 @@ + int + utimens (char const *file, struct timespec const timespec[2]) + { +- return futimens (-1, file, timespec); ++ return cu_futimens (-1, file, timespec); + } +--- coreutils-6.0.orig/lib/utimens.h 2004-11-23 21:41:51.000000000 +0100 ++++ coreutils-6.0/lib/utimens.h 2007-07-17 00:41:31.000000000 +0200 +@@ -1,3 +1,3 @@ + #include "timespec.h" +-int futimens (int, char const *, struct timespec const [2]); ++int cu_futimens (int, char const *, struct timespec const [2]); + int utimens (char const *, struct timespec const [2]); +--- coreutils-6.0.orig/src/copy.c 2007-07-16 23:18:42.000000000 +0200 ++++ coreutils-6.0/src/copy.c 2007-07-17 00:43:10.000000000 +0200 +@@ -648,7 +648,7 @@ + timespec[0] = get_stat_atime (src_sb); + timespec[1] = get_stat_mtime (src_sb); + +- if (futimens (dest_desc, dst_name, timespec) != 0) ++ if (cu_futimens (dest_desc, dst_name, timespec) != 0) + { + error (0, errno, _("preserving times for %s"), quote (dst_name)); + if (x->require_preserve) +--- coreutils-6.0.orig/src/touch.c 2005-11-02 11:01:07.000000000 +0100 ++++ coreutils-6.0/src/touch.c 2007-07-17 00:43:51.000000000 +0200 +@@ -167,7 +167,7 @@ + + if (amtime_now) + { +- /* Pass NULL to futimens so it will not fail if we have ++ /* Pass NULL to cu_futimens so it will not fail if we have + write access to the file, but don't own it. */ + t = NULL; + } +@@ -182,7 +182,7 @@ + t = timespec; + } + +- ok = (futimens (fd, (fd == STDOUT_FILENO ? NULL : file), t) == 0); ++ ok = (cu_futimens (fd, (fd == STDOUT_FILENO ? NULL : file), t) == 0); + + if (fd == STDIN_FILENO) + { diff --git a/src/patches/cyrus-sasl-2.1.22-bad-elif.patch b/src/patches/cyrus-sasl-2.1.22-bad-elif.patch new file mode 100644 index 000000000..33550c428 --- /dev/null +++ b/src/patches/cyrus-sasl-2.1.22-bad-elif.patch @@ -0,0 +1,21 @@ +diff -up cyrus-sasl-2.1.22/plugins/digestmd5.c.elif cyrus-sasl-2.1.22/plugins/digestmd5.c +--- cyrus-sasl-2.1.22/plugins/digestmd5.c.elif 2009-01-23 09:40:31.000000000 +0100 ++++ cyrus-sasl-2.1.22/plugins/digestmd5.c 2009-02-06 15:20:15.000000000 +0100 +@@ -2743,7 +2743,7 @@ static sasl_server_plug_t digestmd5_serv + "DIGEST-MD5", /* mech_name */ + #ifdef WITH_RC4 + 128, /* max_ssf */ +-#elif WITH_DES ++#elif defined(WITH_DES) + 112, + #else + 1, +@@ -4071,7 +4071,7 @@ static sasl_client_plug_t digestmd5_clie + "DIGEST-MD5", + #ifdef WITH_RC4 /* mech_name */ + 128, /* max ssf */ +-#elif WITH_DES ++#elif defined(WITH_DES) + 112, + #else + 1, diff --git a/src/patches/dbus-1.0.3-compile-fix-1.patch b/src/patches/dbus-1.0.3-compile-fix-1.patch new file mode 100644 index 000000000..86fd2b323 --- /dev/null +++ b/src/patches/dbus-1.0.3-compile-fix-1.patch @@ -0,0 +1,11 @@ +--- dbus-1.0.1.orig/dbus/dbus-sysdeps-unix.c 2009-01-01 03:50:33.000000000 +0200 ++++ dbus-1.0.1.orig/dbus/dbus-sysdeps-unix.c 2009-01-01 04:09:24.000000000 +0200 +@@ -992,7 +992,7 @@ + _dbus_verbose ("read credentials byte\n"); + + { +-#ifdef SO_PEERCRED ++#if defined(SO_PEERCRED) && defined(HAVE_GETPEERUCRED) + struct ucred cr; + int cr_len = sizeof (cr); + diff --git a/src/patches/directfb-1.1.1-fix-mknod.patch b/src/patches/directfb-1.1.1-fix-mknod.patch new file mode 100644 index 000000000..97633e2b1 --- /dev/null +++ b/src/patches/directfb-1.1.1-fix-mknod.patch @@ -0,0 +1,26 @@ +Description: directfb ftbfs on armel. Implicit declaration error + Fix for ARM builds failing on: + ../../../gfxdrivers/davinci/davinci_c64x.c: In function 'davinci_c64x_open': + ../../../gfxdrivers/davinci/davinci_c64x.c:1900:6: error: implicit declaration of function 'mknod' [-Werror=implicit-function-declaration] + cc1: some warnings being treated as errors + . + directfb (1.2.10.0-4.3) unstable; urgency=low + . + * Non-maintainer upload. + * Fix "directfb ftbfs on armel. Implicit declaration error" + - Thanks Peter Green for bug report and patch (Closes: #644782) + * Remove m4 macros when calling clean target +Author: Hector Oron +Bug-Debian: http://bugs.debian.org/644782 + +--- directfb-1.2.10.0.orig/gfxdrivers/davinci/davinci_c64x.c ++++ directfb-1.2.10.0/gfxdrivers/davinci/davinci_c64x.c +@@ -37,6 +37,8 @@ + #include + #include + #include ++#include ++ + #include + + #include diff --git a/src/patches/flac-1.2.1-asm.patch b/src/patches/flac-1.2.1-asm.patch new file mode 100644 index 000000000..932a76192 --- /dev/null +++ b/src/patches/flac-1.2.1-asm.patch @@ -0,0 +1,73 @@ +diff -up flac-1.2.1/src/libFLAC/stream_decoder.c.asm flac-1.2.1/src/libFLAC/stream_decoder.c +--- flac-1.2.1/src/libFLAC/stream_decoder.c.asm 2007-09-13 17:38:05.000000000 +0200 ++++ flac-1.2.1/src/libFLAC/stream_decoder.c 2008-01-29 10:32:17.000000000 +0100 +@@ -421,7 +421,7 @@ static FLAC__StreamDecoderInitStatus ini + #ifdef FLAC__CPU_IA32 + FLAC__ASSERT(decoder->private_->cpuinfo.type == FLAC__CPUINFO_TYPE_IA32); + #ifdef FLAC__HAS_NASM +-#if 1 /*@@@@@@ OPT: not clearly faster, needs more testing */ ++#if 0 /*@@@@@@ OPT: not clearly faster, needs more testing */ + if(decoder->private_->cpuinfo.data.ia32.bswap) + decoder->private_->local_bitreader_read_rice_signed_block = FLAC__bitreader_read_rice_signed_block_asm_ia32_bswap; + #endif +diff -up flac-1.2.1/src/libFLAC/ia32/lpc_asm.nasm.asm flac-1.2.1/src/libFLAC/ia32/lpc_asm.nasm +--- flac-1.2.1/src/libFLAC/ia32/lpc_asm.nasm.asm 2007-03-22 05:13:05.000000000 +0100 ++++ flac-1.2.1/src/libFLAC/ia32/lpc_asm.nasm 2008-01-29 10:34:09.000000000 +0100 +@@ -1507,5 +1507,5 @@ cident FLAC__lpc_restore_signal_asm_ia32 + end + + %ifdef OBJ_FORMAT_elf +- section .note.GNU-stack noalloc ++ section .note.GNU-stack progbits noalloc noexec nowrite align=1 + %endif +diff -up flac-1.2.1/src/libFLAC/ia32/Makefile.am.asm flac-1.2.1/src/libFLAC/ia32/Makefile.am +--- flac-1.2.1/src/libFLAC/ia32/Makefile.am.asm 2007-04-04 02:01:13.000000000 +0200 ++++ flac-1.2.1/src/libFLAC/ia32/Makefile.am 2008-03-17 14:04:37.000000000 +0100 +@@ -37,7 +37,6 @@ STRIP_NON_ASM = sh $(top_srcdir)/strip_n + + noinst_LTLIBRARIES = libFLAC-asm.la + libFLAC_asm_la_SOURCES = \ +- bitreader_asm.nasm \ + cpu_asm.nasm \ + fixed_asm.nasm \ + lpc_asm.nasm \ +diff -up flac-1.2.1/src/libFLAC/ia32/bitreader_asm.nasm.asm flac-1.2.1/src/libFLAC/ia32/bitreader_asm.nasm +--- flac-1.2.1/src/libFLAC/ia32/bitreader_asm.nasm.asm 2007-03-30 02:54:53.000000000 +0200 ++++ flac-1.2.1/src/libFLAC/ia32/bitreader_asm.nasm 2008-01-29 10:32:57.000000000 +0100 +@@ -564,5 +564,5 @@ cident FLAC__bitreader_read_rice_signed_ + end + + %ifdef OBJ_FORMAT_elf +- section .note.GNU-stack noalloc ++ section .note.GNU-stack progbits noalloc noexec nowrite align=1 + %endif +diff -up flac-1.2.1/src/libFLAC/ia32/fixed_asm.nasm.asm flac-1.2.1/src/libFLAC/ia32/fixed_asm.nasm +--- flac-1.2.1/src/libFLAC/ia32/fixed_asm.nasm.asm 2007-03-22 05:13:05.000000000 +0100 ++++ flac-1.2.1/src/libFLAC/ia32/fixed_asm.nasm 2008-01-29 10:33:52.000000000 +0100 +@@ -308,5 +308,5 @@ cident FLAC__fixed_compute_best_predicto + end + + %ifdef OBJ_FORMAT_elf +- section .note.GNU-stack noalloc ++ section .note.GNU-stack progbits noalloc noexec nowrite align=1 + %endif +diff -up flac-1.2.1/src/libFLAC/ia32/cpu_asm.nasm.asm flac-1.2.1/src/libFLAC/ia32/cpu_asm.nasm +--- flac-1.2.1/src/libFLAC/ia32/cpu_asm.nasm.asm 2007-03-22 05:13:05.000000000 +0100 ++++ flac-1.2.1/src/libFLAC/ia32/cpu_asm.nasm 2008-01-29 10:33:24.000000000 +0100 +@@ -117,5 +117,5 @@ cident FLAC__cpu_info_extended_amd_asm_i + end + + %ifdef OBJ_FORMAT_elf +- section .note.GNU-stack noalloc ++ section .note.GNU-stack progbits noalloc noexec nowrite align=1 + %endif +diff -up flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm.asm flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm +--- flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm.asm 2007-06-19 22:01:27.000000000 +0200 ++++ flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm 2008-01-29 10:34:40.000000000 +0100 +@@ -155,5 +155,5 @@ cident precompute_partition_info_sums_32 + end + + %ifdef OBJ_FORMAT_elf +- section .note.GNU-stack noalloc ++ section .note.GNU-stack progbits noalloc noexec nowrite align=1 + %endif diff --git a/src/patches/flac-1.2.1-bitreader.patch b/src/patches/flac-1.2.1-bitreader.patch new file mode 100644 index 000000000..9d47af33e --- /dev/null +++ b/src/patches/flac-1.2.1-bitreader.patch @@ -0,0 +1,558 @@ +Index: src/libFLAC/bitreader.c +=================================================================== +RCS file: /cvsroot/flac/flac/src/libFLAC/bitreader.c,v +retrieving revision 1.15 +diff -u -r1.15 bitreader.c +--- src/libFLAC/bitreader.c 28 Feb 2008 05:34:26 -0000 1.15 ++++ src/libFLAC/bitreader.c 14 Mar 2008 11:07:07 -0000 +@@ -69,13 +69,12 @@ + #endif + /* counts the # of zero MSBs in a word */ + #define COUNT_ZERO_MSBS(word) ( \ +- (word) <= 0xffff ? \ +- ( (word) <= 0xff? byte_to_unary_table[word] + 24 : byte_to_unary_table[(word) >> 8] + 16 ) : \ +- ( (word) <= 0xffffff? byte_to_unary_table[word >> 16] + 8 : byte_to_unary_table[(word) >> 24] ) \ ++ word > 0xffffff ? byte_to_unary_table[(word) >> 24] : \ ++ !word ? 32 : \ ++ word > 0xffff ? byte_to_unary_table[word >> 16] + 8 : \ ++ word > 0xff ? byte_to_unary_table[(word) >> 8] + 16 : \ ++ byte_to_unary_table[word] + 24 \ + ) +-/* this alternate might be slightly faster on some systems/compilers: */ +-#define COUNT_ZERO_MSBS2(word) ( (word) <= 0xff ? byte_to_unary_table[word] + 24 : ((word) <= 0xffff ? byte_to_unary_table[(word) >> 8] + 16 : ((word) <= 0xffffff ? byte_to_unary_table[(word) >> 16] + 8 : byte_to_unary_table[(word) >> 24])) ) +- + + /* + * This should be at least twice as large as the largest number of words +Index: src/libFLAC/bitreader.c +=================================================================== +RCS file: /cvsroot/flac/flac/src/libFLAC/bitreader.c,v +retrieving revision 1.15 +diff -u -r1.15 bitreader.c +--- src/libFLAC/bitreader.c 28 Feb 2008 05:34:26 -0000 1.15 ++++ src/libFLAC/bitreader.c 14 Mar 2008 13:19:46 -0000 +@@ -149,6 +148,7 @@ + FLAC__CPUInfo cpu_info; + }; + ++#if FLAC__BYTES_PER_WORD == 4 && FLAC__CPU_IA32 + #ifdef _MSC_VER + /* OPT: an MSVC built-in would be better */ + static _inline FLAC__uint32 local_swap32_(FLAC__uint32 x) +@@ -173,6 +173,15 @@ + done1: + } + } ++#elif __GNUC__ ++static void local_swap32_block_(FLAC__uint32 *start, FLAC__uint32 len) ++{ ++ FLAC__uint32 *end; ++ ++ for(end = start + len; start < end; start++) ++ asm ("bswap %0" : "=r"(*start) : "0"(*start)); ++} ++#endif + #endif + + static FLaC__INLINE void crc16_update_word_(FLAC__BitReader *br, brword word) +@@ -263,7 +272,7 @@ + #if WORDS_BIGENDIAN + #else + end = (br->words*FLAC__BYTES_PER_WORD + br->bytes + bytes + (FLAC__BYTES_PER_WORD-1)) / FLAC__BYTES_PER_WORD; +-# if defined(_MSC_VER) && (FLAC__BYTES_PER_WORD == 4) ++# if FLAC__CPU_IA32 && (__GNUC__ || defined(_MSC_VER)) && FLAC__BYTES_PER_WORD == 4 + if(br->cpu_info.type == FLAC__CPUINFO_TYPE_IA32 && br->cpu_info.data.ia32.bswap) { + start = br->words; + local_swap32_block_(br->buffer + start, end - start); +Index: src/libFLAC/bitreader.c +=================================================================== +RCS file: /cvsroot/flac/flac/src/libFLAC/bitreader.c,v +retrieving revision 1.15 +diff -u -r1.15 bitreader.c +--- src/libFLAC/bitreader.c 28 Feb 2008 05:34:26 -0000 1.15 ++++ src/libFLAC/bitreader.c 17 Mar 2008 15:42:57 -0000 +@@ -803,379 +812,144 @@ + } + + /* this is by far the most heavily used reader call. it ain't pretty but it's fast */ +-/* a lot of the logic is copied, then adapted, from FLAC__bitreader_read_unary_unsigned() and FLAC__bitreader_read_raw_uint32() */ + FLAC__bool FLAC__bitreader_read_rice_signed_block(FLAC__BitReader *br, int vals[], unsigned nvals, unsigned parameter) +-/* OPT: possibly faster version for use with MSVC */ +-#ifdef _MSC_VER + { +- unsigned i; +- unsigned uval = 0; +- unsigned bits; /* the # of binary LSBs left to read to finish a rice codeword */ +- + /* try and get br->consumed_words and br->consumed_bits into register; + * must remember to flush them back to *br before calling other +- * bitwriter functions that use them, and before returning */ +- register unsigned cwords; +- register unsigned cbits; ++ * bitreader functions that use them, and before returning */ ++ unsigned cwords, words, lsbs, msbs, x, y; ++ unsigned ucbits; /* keep track of the number of unconsumed bits in word */ ++ brword b; ++ int *val, *end; + + FLAC__ASSERT(0 != br); + FLAC__ASSERT(0 != br->buffer); + /* WATCHOUT: code does not work with <32bit words; we can make things much faster with this assertion */ + FLAC__ASSERT(FLAC__BITS_PER_WORD >= 32); + FLAC__ASSERT(parameter < 32); +- /* the above two asserts also guarantee that the binary part never straddles more that 2 words, so we don't have to loop to read it */ +- +- if(nvals == 0) +- return true; +- +- cbits = br->consumed_bits; +- cwords = br->consumed_words; ++ /* the above two asserts also guarantee that the binary part never straddles more than 2 words, so we don't have to loop to read it */ + +- while(1) { ++ val = vals; ++ end = vals + nvals; + +- /* read unary part */ +- while(1) { +- while(cwords < br->words) { /* if we've not consumed up to a partial tail word... */ +- brword b = br->buffer[cwords] << cbits; +- if(b) { +-#if 0 /* slower, probably due to bad register allocation... */ && defined FLAC__CPU_IA32 && !defined FLAC__NO_ASM && FLAC__BITS_PER_WORD == 32 +- __asm { +- bsr eax, b +- not eax +- and eax, 31 +- mov i, eax +- } +-#else +- i = COUNT_ZERO_MSBS(b); +-#endif +- uval += i; +- bits = parameter; +- i++; +- cbits += i; +- if(cbits == FLAC__BITS_PER_WORD) { +- crc16_update_word_(br, br->buffer[cwords]); +- cwords++; +- cbits = 0; +- } +- goto break1; +- } +- else { +- uval += FLAC__BITS_PER_WORD - cbits; +- crc16_update_word_(br, br->buffer[cwords]); +- cwords++; +- cbits = 0; +- /* didn't find stop bit yet, have to keep going... */ +- } +- } +- /* at this point we've eaten up all the whole words; have to try +- * reading through any tail bytes before calling the read callback. +- * this is a repeat of the above logic adjusted for the fact we +- * don't have a whole word. note though if the client is feeding +- * us data a byte at a time (unlikely), br->consumed_bits may not +- * be zero. +- */ +- if(br->bytes) { +- const unsigned end = br->bytes * 8; +- brword b = (br->buffer[cwords] & (FLAC__WORD_ALL_ONES << (FLAC__BITS_PER_WORD-end))) << cbits; +- if(b) { +- i = COUNT_ZERO_MSBS(b); +- uval += i; +- bits = parameter; +- i++; +- cbits += i; +- FLAC__ASSERT(cbits < FLAC__BITS_PER_WORD); +- goto break1; +- } +- else { +- uval += end - cbits; +- cbits += end; +- FLAC__ASSERT(cbits < FLAC__BITS_PER_WORD); +- /* didn't find stop bit yet, have to keep going... */ +- } +- } +- /* flush registers and read; bitreader_read_from_client_() does +- * not touch br->consumed_bits at all but we still need to set +- * it in case it fails and we have to return false. +- */ +- br->consumed_bits = cbits; +- br->consumed_words = cwords; +- if(!bitreader_read_from_client_(br)) ++ if(parameter == 0) { ++ while(val < end) { ++ /* read the unary MSBs and end bit */ ++ if(!FLAC__bitreader_read_unary_unsigned(br, &msbs)) + return false; +- cwords = br->consumed_words; +- } +-break1: +- /* read binary part */ +- FLAC__ASSERT(cwords <= br->words); +- +- if(bits) { +- while((br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8 - cbits < bits) { +- /* flush registers and read; bitreader_read_from_client_() does +- * not touch br->consumed_bits at all but we still need to set +- * it in case it fails and we have to return false. +- */ +- br->consumed_bits = cbits; +- br->consumed_words = cwords; +- if(!bitreader_read_from_client_(br)) +- return false; +- cwords = br->consumed_words; +- } +- if(cwords < br->words) { /* if we've not consumed up to a partial tail word... */ +- if(cbits) { +- /* this also works when consumed_bits==0, it's just a little slower than necessary for that case */ +- const unsigned n = FLAC__BITS_PER_WORD - cbits; +- const brword word = br->buffer[cwords]; +- if(bits < n) { +- uval <<= bits; +- uval |= (word & (FLAC__WORD_ALL_ONES >> cbits)) >> (n-bits); +- cbits += bits; +- goto break2; +- } +- uval <<= n; +- uval |= word & (FLAC__WORD_ALL_ONES >> cbits); +- bits -= n; +- crc16_update_word_(br, word); +- cwords++; +- cbits = 0; +- if(bits) { /* if there are still bits left to read, there have to be less than 32 so they will all be in the next word */ +- uval <<= bits; +- uval |= (br->buffer[cwords] >> (FLAC__BITS_PER_WORD-bits)); +- cbits = bits; +- } +- goto break2; +- } +- else { +- FLAC__ASSERT(bits < FLAC__BITS_PER_WORD); +- uval <<= bits; +- uval |= br->buffer[cwords] >> (FLAC__BITS_PER_WORD-bits); +- cbits = bits; +- goto break2; +- } +- } +- else { +- /* in this case we're starting our read at a partial tail word; +- * the reader has guaranteed that we have at least 'bits' bits +- * available to read, which makes this case simpler. +- */ +- uval <<= bits; +- if(cbits) { +- /* this also works when consumed_bits==0, it's just a little slower than necessary for that case */ +- FLAC__ASSERT(cbits + bits <= br->bytes*8); +- uval |= (br->buffer[cwords] & (FLAC__WORD_ALL_ONES >> cbits)) >> (FLAC__BITS_PER_WORD-cbits-bits); +- cbits += bits; +- goto break2; +- } +- else { +- uval |= br->buffer[cwords] >> (FLAC__BITS_PER_WORD-bits); +- cbits += bits; +- goto break2; +- } +- } +- } +-break2: +- /* compose the value */ +- *vals = (int)(uval >> 1 ^ -(int)(uval & 1)); + +- /* are we done? */ +- --nvals; +- if(nvals == 0) { +- br->consumed_bits = cbits; +- br->consumed_words = cwords; +- return true; ++ *val++ = (int)(msbs >> 1) ^ -(int)(msbs & 1); + } + +- uval = 0; +- ++vals; +- ++ return true; + } +-} +-#else +-{ +- unsigned i; +- unsigned uval = 0; + +- /* try and get br->consumed_words and br->consumed_bits into register; +- * must remember to flush them back to *br before calling other +- * bitwriter functions that use them, and before returning */ +- register unsigned cwords; +- register unsigned cbits; +- unsigned ucbits; /* keep track of the number of unconsumed bits in the buffer */ ++ FLAC__ASSERT(parameter > 0); + +- FLAC__ASSERT(0 != br); +- FLAC__ASSERT(0 != br->buffer); +- /* WATCHOUT: code does not work with <32bit words; we can make things much faster with this assertion */ +- FLAC__ASSERT(FLAC__BITS_PER_WORD >= 32); +- FLAC__ASSERT(parameter < 32); +- /* the above two asserts also guarantee that the binary part never straddles more than 2 words, so we don't have to loop to read it */ ++ cwords = br->consumed_words; ++ words = br->words; + +- if(nvals == 0) +- return true; ++ /* if we've not consumed up to a partial tail word... */ ++ if(cwords >= words) { ++ x = 0; ++ goto process_tail; ++ } ++ ++ ucbits = FLAC__BITS_PER_WORD - br->consumed_bits; ++ b = br->buffer[cwords] << br->consumed_bits; /* keep unconsumed bits aligned to left */ ++ ++ while(val < end) { ++ /* read the unary MSBs and end bit */ ++ x = y = COUNT_ZERO_MSBS(b); ++ if(x == FLAC__BITS_PER_WORD) { ++ x = ucbits; ++ do { ++ /* didn't find stop bit yet, have to keep going... */ ++ crc16_update_word_(br, br->buffer[cwords++]); ++ if (cwords >= words) ++ goto incomplete_msbs; ++ b = br->buffer[cwords]; ++ y = COUNT_ZERO_MSBS(b); ++ x += y; ++ } while(y == FLAC__BITS_PER_WORD); ++ } ++ b <<= y; ++ b <<= 1; /* account for stop bit */ ++ ucbits = (ucbits - x - 1) % FLAC__BITS_PER_WORD; ++ msbs = x; ++ ++ /* read the binary LSBs */ ++ x = b >> (FLAC__BITS_PER_WORD - parameter); ++ if(parameter <= ucbits) { ++ ucbits -= parameter; ++ b <<= parameter; ++ } else { ++ /* there are still bits left to read, they will all be in the next word */ ++ crc16_update_word_(br, br->buffer[cwords++]); ++ if (cwords >= words) ++ goto incomplete_lsbs; ++ b = br->buffer[cwords]; ++ ucbits += FLAC__BITS_PER_WORD - parameter; ++ x |= b >> ucbits; ++ b <<= FLAC__BITS_PER_WORD - ucbits; ++ } ++ lsbs = x; + +- cbits = br->consumed_bits; +- cwords = br->consumed_words; +- ucbits = (br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8 - cbits; ++ /* compose the value */ ++ x = (msbs << parameter) | lsbs; ++ *val++ = (int)(x >> 1) ^ -(int)(x & 1); + +- while(1) { ++ continue; + +- /* read unary part */ +- while(1) { +- while(cwords < br->words) { /* if we've not consumed up to a partial tail word... */ +- brword b = br->buffer[cwords] << cbits; +- if(b) { +-#if 0 /* is not discernably faster... */ && defined FLAC__CPU_IA32 && !defined FLAC__NO_ASM && FLAC__BITS_PER_WORD == 32 && defined __GNUC__ +- asm volatile ( +- "bsrl %1, %0;" +- "notl %0;" +- "andl $31, %0;" +- : "=r"(i) +- : "r"(b) +- ); +-#else +- i = COUNT_ZERO_MSBS(b); +-#endif +- uval += i; +- cbits += i; +- cbits++; /* skip over stop bit */ +- if(cbits >= FLAC__BITS_PER_WORD) { /* faster way of testing if(cbits == FLAC__BITS_PER_WORD) */ +- crc16_update_word_(br, br->buffer[cwords]); +- cwords++; +- cbits = 0; +- } +- goto break1; +- } +- else { +- uval += FLAC__BITS_PER_WORD - cbits; +- crc16_update_word_(br, br->buffer[cwords]); +- cwords++; +- cbits = 0; +- /* didn't find stop bit yet, have to keep going... */ +- } +- } +- /* at this point we've eaten up all the whole words; have to try +- * reading through any tail bytes before calling the read callback. +- * this is a repeat of the above logic adjusted for the fact we +- * don't have a whole word. note though if the client is feeding +- * us data a byte at a time (unlikely), br->consumed_bits may not +- * be zero. +- */ +- if(br->bytes) { +- const unsigned end = br->bytes * 8; +- brword b = (br->buffer[cwords] & ~(FLAC__WORD_ALL_ONES >> end)) << cbits; +- if(b) { +- i = COUNT_ZERO_MSBS(b); +- uval += i; +- cbits += i; +- cbits++; /* skip over stop bit */ +- FLAC__ASSERT(cbits < FLAC__BITS_PER_WORD); +- goto break1; +- } +- else { +- uval += end - cbits; +- cbits += end; +- FLAC__ASSERT(cbits < FLAC__BITS_PER_WORD); +- /* didn't find stop bit yet, have to keep going... */ +- } ++ /* at this point we've eaten up all the whole words */ ++process_tail: ++ do { ++ if(0) { ++incomplete_msbs: ++ br->consumed_bits = 0; ++ br->consumed_words = cwords; + } +- /* flush registers and read; bitreader_read_from_client_() does +- * not touch br->consumed_bits at all but we still need to set +- * it in case it fails and we have to return false. +- */ +- br->consumed_bits = cbits; +- br->consumed_words = cwords; +- if(!bitreader_read_from_client_(br)) ++ ++ /* read the unary MSBs and end bit */ ++ if(!FLAC__bitreader_read_unary_unsigned(br, &msbs)) + return false; +- cwords = br->consumed_words; +- ucbits = (br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8 - cbits + uval; +- /* + uval to offset our count by the # of unary bits already +- * consumed before the read, because we will add these back +- * in all at once at break1 +- */ +- } +-break1: +- ucbits -= uval; +- ucbits--; /* account for stop bit */ +- +- /* read binary part */ +- FLAC__ASSERT(cwords <= br->words); +- +- if(parameter) { +- while(ucbits < parameter) { +- /* flush registers and read; bitreader_read_from_client_() does +- * not touch br->consumed_bits at all but we still need to set +- * it in case it fails and we have to return false. +- */ +- br->consumed_bits = cbits; ++ msbs += x; ++ x = ucbits = 0; ++ ++ if(0) { ++incomplete_lsbs: ++ br->consumed_bits = 0; + br->consumed_words = cwords; +- if(!bitreader_read_from_client_(br)) +- return false; +- cwords = br->consumed_words; +- ucbits = (br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8 - cbits; +- } +- if(cwords < br->words) { /* if we've not consumed up to a partial tail word... */ +- if(cbits) { +- /* this also works when consumed_bits==0, it's just slower than necessary for that case */ +- const unsigned n = FLAC__BITS_PER_WORD - cbits; +- const brword word = br->buffer[cwords]; +- if(parameter < n) { +- uval <<= parameter; +- uval |= (word & (FLAC__WORD_ALL_ONES >> cbits)) >> (n-parameter); +- cbits += parameter; +- } +- else { +- uval <<= n; +- uval |= word & (FLAC__WORD_ALL_ONES >> cbits); +- crc16_update_word_(br, word); +- cwords++; +- cbits = parameter - n; +- if(cbits) { /* parameter > n, i.e. if there are still bits left to read, there have to be less than 32 so they will all be in the next word */ +- uval <<= cbits; +- uval |= (br->buffer[cwords] >> (FLAC__BITS_PER_WORD-cbits)); +- } +- } +- } +- else { +- cbits = parameter; +- uval <<= parameter; +- uval |= br->buffer[cwords] >> (FLAC__BITS_PER_WORD-cbits); +- } + } +- else { +- /* in this case we're starting our read at a partial tail word; +- * the reader has guaranteed that we have at least 'parameter' +- * bits available to read, which makes this case simpler. +- */ +- uval <<= parameter; +- if(cbits) { +- /* this also works when consumed_bits==0, it's just a little slower than necessary for that case */ +- FLAC__ASSERT(cbits + parameter <= br->bytes*8); +- uval |= (br->buffer[cwords] & (FLAC__WORD_ALL_ONES >> cbits)) >> (FLAC__BITS_PER_WORD-cbits-parameter); +- cbits += parameter; +- } +- else { +- cbits = parameter; +- uval |= br->buffer[cwords] >> (FLAC__BITS_PER_WORD-cbits); +- } +- } +- } + +- ucbits -= parameter; +- +- /* compose the value */ +- *vals = (int)(uval >> 1 ^ -(int)(uval & 1)); ++ /* read the binary LSBs */ ++ if(!FLAC__bitreader_read_raw_uint32(br, &lsbs, parameter - ucbits)) ++ return false; ++ lsbs = x | lsbs; + +- /* are we done? */ +- --nvals; +- if(nvals == 0) { +- br->consumed_bits = cbits; +- br->consumed_words = cwords; +- return true; +- } ++ /* compose the value */ ++ x = (msbs << parameter) | lsbs; ++ *val++ = (int)(x >> 1) ^ -(int)(x & 1); ++ x = 0; + +- uval = 0; +- ++vals; ++ cwords = br->consumed_words; ++ words = br->words; ++ ucbits = FLAC__BITS_PER_WORD - br->consumed_bits; ++ b = br->buffer[cwords] << br->consumed_bits; ++ } while(cwords >= words && val < end); ++ } + ++ if(ucbits == 0 && cwords < words) { ++ /* don't leave the head word with no unconsumed bits */ ++ crc16_update_word_(br, br->buffer[cwords++]); ++ ucbits = FLAC__BITS_PER_WORD; + } ++ ++ br->consumed_bits = FLAC__BITS_PER_WORD - ucbits; ++ br->consumed_words = cwords; ++ ++ return true; + } +-#endif + + #if 0 /* UNUSED */ + FLAC__bool FLAC__bitreader_read_golomb_signed(FLAC__BitReader *br, int *val, unsigned parameter) diff --git a/src/patches/flac-1.2.1-cflags.patch b/src/patches/flac-1.2.1-cflags.patch new file mode 100644 index 000000000..032fa5e2b --- /dev/null +++ b/src/patches/flac-1.2.1-cflags.patch @@ -0,0 +1,45 @@ +diff -up flac-1.2.1/src/libFLAC/Makefile.am.cflags flac-1.2.1/src/libFLAC/Makefile.am +--- flac-1.2.1/src/libFLAC/Makefile.am.cflags 2007-09-14 23:06:17.000000000 +0200 ++++ flac-1.2.1/src/libFLAC/Makefile.am 2008-03-17 14:19:29.000000000 +0100 +@@ -41,7 +41,7 @@ CPUCFLAGS = -faltivec -force_cpusubtype_ + else + # Linux-gcc for PPC does not have -force_cpusubtype_ALL, it is Darwin-specific + #@@@ PPC optimizations temporarily disabled +-CPUCFLAGS = -maltivec -mabi=altivec -DFLAC__NO_ASM ++CPUCFLAGS = -DFLAC__NO_ASM + endif + endif + +@@ -69,7 +69,7 @@ endif + endif + endif + +-libFLAC_la_LIBADD = $(LOCAL_EXTRA_LIBADD) @OGG_LIBS@ ++libFLAC_la_LIBADD = $(LOCAL_EXTRA_LIBADD) @OGG_LIBS@ libFLAC_extracflags.la + + SUBDIRS = $(ARCH_SUBDIRS) include . + +@@ -112,7 +112,10 @@ libFLAC_la_SOURCES = \ + metadata_iterators.c \ + metadata_object.c \ + stream_decoder.c \ +- stream_encoder.c \ + stream_encoder_framing.c \ + window.c \ + $(extra_ogg_sources) ++ ++noinst_LTLIBRARIES = libFLAC_extracflags.la ++libFLAC_extracflags_la_SOURCES = stream_encoder.c ++libFLAC_extracflags_la_CFLAGS = $(AM_CFLAGS) -funroll-loops +diff -up flac-1.2.1/configure.in.cflags flac-1.2.1/configure.in +--- flac-1.2.1/configure.in.cflags 2007-09-13 17:48:42.000000000 +0200 ++++ flac-1.2.1/configure.in 2008-03-17 14:17:08.000000000 +0100 +@@ -301,7 +301,7 @@ else + CPPFLAGS="-DNDEBUG $CPPFLAGS" + if test "x$GCC" = xyes; then + CPPFLAGS="-DFLaC__INLINE=__inline__ $CPPFLAGS" +- CFLAGS="-O3 -funroll-loops -finline-functions -Wall -W -Winline $CFLAGS" ++ CFLAGS="-Wall -W -Winline $CFLAGS" + fi + fi + diff --git a/src/patches/flac-1.2.1-gcc43.patch b/src/patches/flac-1.2.1-gcc43.patch new file mode 100644 index 000000000..7fdbf8067 --- /dev/null +++ b/src/patches/flac-1.2.1-gcc43.patch @@ -0,0 +1,11 @@ +diff -up flac-1.2.1/examples/cpp/encode/file/main.cpp.gcc43 flac-1.2.1/examples/cpp/encode/file/main.cpp +--- flac-1.2.1/examples/cpp/encode/file/main.cpp.gcc43 2007-09-13 17:58:03.000000000 +0200 ++++ flac-1.2.1/examples/cpp/encode/file/main.cpp 2008-01-08 10:27:39.000000000 +0100 +@@ -29,6 +29,7 @@ + #endif + + #include ++#include + #include + #include "FLAC++/metadata.h" + #include "FLAC++/encoder.h" diff --git a/src/patches/flac-1.2.1-hidesyms.patch b/src/patches/flac-1.2.1-hidesyms.patch new file mode 100644 index 000000000..0f4c10418 --- /dev/null +++ b/src/patches/flac-1.2.1-hidesyms.patch @@ -0,0 +1,39 @@ +diff -up flac-1.2.1/src/libFLAC/include/private/ogg_helper.h.hidesyms flac-1.2.1/src/libFLAC/include/private/ogg_helper.h +--- flac-1.2.1/src/libFLAC/include/private/ogg_helper.h.hidesyms 2007-02-02 07:22:40.000000000 +0100 ++++ flac-1.2.1/src/libFLAC/include/private/ogg_helper.h 2008-01-29 15:27:13.000000000 +0100 +@@ -35,9 +35,13 @@ + #include + #include "FLAC/stream_encoder.h" /* for FLAC__StreamEncoder */ + ++__attribute__((__visibility__("hidden"))) + void simple_ogg_page__init(ogg_page *page); ++__attribute__((__visibility__("hidden"))) + void simple_ogg_page__clear(ogg_page *page); ++__attribute__((__visibility__("hidden"))) + FLAC__bool simple_ogg_page__get_at(FLAC__StreamEncoder *encoder, FLAC__uint64 position, ogg_page *page, FLAC__StreamEncoderSeekCallback seek_callback, FLAC__StreamEncoderReadCallback read_callback, void *client_data); ++__attribute__((__visibility__("hidden"))) + FLAC__bool simple_ogg_page__set_at(FLAC__StreamEncoder *encoder, FLAC__uint64 position, ogg_page *page, FLAC__StreamEncoderSeekCallback seek_callback, FLAC__StreamEncoderWriteCallback write_callback, void *client_data); + + #endif +diff -up flac-1.2.1/src/libFLAC/include/private/bitreader.h.hidesyms flac-1.2.1/src/libFLAC/include/private/bitreader.h +--- flac-1.2.1/src/libFLAC/include/private/bitreader.h.hidesyms 2007-07-10 22:22:19.000000000 +0200 ++++ flac-1.2.1/src/libFLAC/include/private/bitreader.h 2008-01-29 15:27:13.000000000 +0100 +@@ -95,5 +95,6 @@ FLAC__bool FLAC__bitreader_read_golomb_u + FLAC__bool FLAC__bitreader_read_utf8_uint32(FLAC__BitReader *br, FLAC__uint32 *val, FLAC__byte *raw, unsigned *rawlen); + FLAC__bool FLAC__bitreader_read_utf8_uint64(FLAC__BitReader *br, FLAC__uint64 *val, FLAC__byte *raw, unsigned *rawlen); + ++__attribute__((__visibility__("hidden"))) + FLAC__bool bitreader_read_from_client_(FLAC__BitReader *br); + #endif +diff -up flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm.hidesyms flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm +--- flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm.hidesyms 2008-01-29 15:27:13.000000000 +0100 ++++ flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm 2008-01-29 15:28:32.000000000 +0100 +@@ -34,7 +34,7 @@ + + data_section + +-cglobal precompute_partition_info_sums_32bit_asm_ia32_ ++cglobal precompute_partition_info_sums_32bit_asm_ia32_:function hidden + + code_section + diff --git a/src/patches/flac-1.2.1-tests.patch b/src/patches/flac-1.2.1-tests.patch new file mode 100644 index 000000000..89c59216d --- /dev/null +++ b/src/patches/flac-1.2.1-tests.patch @@ -0,0 +1,41 @@ +diff -up flac-1.2.1/test/test_seeking.sh.tests flac-1.2.1/test/test_seeking.sh +--- flac-1.2.1/test/test_seeking.sh.tests 2007-09-11 09:33:04.000000000 +0200 ++++ flac-1.2.1/test/test_seeking.sh 2008-01-29 13:52:03.000000000 +0100 +@@ -103,7 +103,7 @@ tiny_seek_count=100 + if [ "$FLAC__TEST_LEVEL" -gt 1 ] ; then + small_seek_count=10000 + else +- small_seek_count=100000 ++ small_seek_count=100 + fi + + for suffix in '' '-s' ; do +diff -up flac-1.2.1/test/test_streams.sh.tests flac-1.2.1/test/test_streams.sh +--- flac-1.2.1/test/test_streams.sh.tests 2007-06-16 21:58:39.000000000 +0200 ++++ flac-1.2.1/test/test_streams.sh 2008-03-17 13:57:39.000000000 +0100 +@@ -39,6 +39,10 @@ if [ x"$FLAC__TEST_LEVEL" = x ] ; then + FLAC__TEST_LEVEL=1 + fi + ++if [ "$FLAC__TEST_LEVEL" -eq 0 ] ; then ++ exit 0 ++fi ++ + flac --help 1>/dev/null 2>/dev/null || die "ERROR can't find flac executable" + + run_flac () +diff -up flac-1.2.1/src/test_streams/main.c.tests flac-1.2.1/src/test_streams/main.c +--- flac-1.2.1/src/test_streams/main.c.tests 2007-08-31 07:54:49.000000000 +0200 ++++ flac-1.2.1/src/test_streams/main.c 2008-01-29 13:53:46.000000000 +0100 +@@ -898,9 +898,9 @@ int main(int argc, char *argv[]) + if(!generate_noise("noise.raw", 65536 * 8 * 3)) return 1; + if(!generate_noise("noise8m32.raw", 32)) return 1; + if(!generate_wackywavs()) return 1; +- for(channels = 1; channels <= 8; channels++) { ++ for(channels = 1; channels <= 2; channels++) { + unsigned bits_per_sample; +- for(bits_per_sample = 4; bits_per_sample <= 24; bits_per_sample++) { ++ for(bits_per_sample = 8; bits_per_sample <= 24; bits_per_sample += 8) { + static const unsigned nsamples[] = { 1, 111, 4777 } ; + unsigned samples; + for(samples = 0; samples < sizeof(nsamples)/sizeof(nsamples[0]); samples++) { diff --git a/src/patches/gcc-4.0.4-specs-1.patch b/src/patches/gcc-4.0.4-specs-1.patch deleted file mode 100644 index 46521e16e..000000000 --- a/src/patches/gcc-4.0.4-specs-1.patch +++ /dev/null @@ -1,336 +0,0 @@ -Submitted By: Robert Connolly (ashes) -Date: 2006-01-16 -Initial Package Version: 4.0.0 -Upstream Status: Not Sent - LFS Specfic -Origin: Idea originally developed by Ryan Oliver and Greg Schafer for - the Pure LFS project. - More architectures added by Zack Winkles. - Further fine tunings by Greg Schafer. - Modified for gcc 3.3.2 by Oliver Brakmann. -Rediffed against gcc 3.4.0 by Zack Winkles. - Rediffed against gcc 3.4.3 by Jim Gifford. - Rediffed against gcc 4.0.0 by Robert Connolly. -Description: This patch modifies the location of the dynamic linker for - the GCC Pass 2 build in LFS Chapter 5. - -diff -Naur gcc-20050116.orig/gcc/config/alpha/linux-elf.h gcc-20050116/gcc/config/alpha/linux-elf.h ---- gcc-20050116.orig/gcc/config/alpha/linux-elf.h 2005-01-17 00:45:16.000000000 +0000 -+++ gcc-20050116/gcc/config/alpha/linux-elf.h 2005-01-17 00:46:14.560651027 +0000 -@@ -27,7 +27,7 @@ - #define SUBTARGET_EXTRA_SPECS \ - { "elf_dynamic_linker", ELF_DYNAMIC_LINKER }, - --#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#define ELF_DYNAMIC_LINKER "/tools/lib/ld-linux.so.2" - - #define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \ - %{O*:-O3} %{!O*:-O1} \ -diff -Naur gcc-20050116.orig/gcc/config/arm/linux-elf.h gcc-20050116/gcc/config/arm/linux-elf.h ---- gcc-20050116.orig/gcc/config/arm/linux-elf.h 2005-01-17 00:45:16.000000000 +0000 -+++ gcc-20050116/gcc/config/arm/linux-elf.h 2005-01-17 00:46:50.538578614 +0000 -@@ -87,7 +87,7 @@ - %{shared:-shared} \ - %{symbolic:-Bsymbolic} \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2} \ - -X \ - %{mbig-endian:-EB}" \ - SUBTARGET_EXTRA_LINK_SPEC -diff -Naur gcc-20050116.orig/gcc/config/frv/linux.h gcc-20050116/gcc/config/frv/linux.h ---- gcc-20050116.orig/gcc/config/frv/linux.h 2005-01-17 00:45:16.000000000 +0000 -+++ gcc-20050116/gcc/config/frv/linux.h 2005-01-17 01:33:50.600805260 +0000 -@@ -41,7 +41,7 @@ - %{mfdpic: -m elf32frvfd -z text} %{shared} %{pie} \ - %{!shared: %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}} \ - %{static}}" - - /* Support for compile-time default CPU. */ -diff -Naur gcc-20050116.orig/gcc/config/i386/gnu.h gcc-20050116/gcc/config/i386/gnu.h ---- gcc-20050116.orig/gcc/config/i386/gnu.h 2005-01-17 00:45:16.000000000 +0000 -+++ gcc-20050116/gcc/config/i386/gnu.h 2005-01-17 01:34:11.142021939 +0000 -@@ -27,7 +27,7 @@ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so}} \ - %{static:-static}}" - - #undef STARTFILE_SPEC -diff -Naur gcc-20050116.orig/gcc/config/i386/linux.h gcc-20050116/gcc/config/i386/linux.h ---- gcc-20050116.orig/gcc/config/i386/linux.h 2005-01-17 00:45:16.000000000 +0000 -+++ gcc-20050116/gcc/config/i386/linux.h 2005-01-17 00:49:27.412667132 +0000 -@@ -105,7 +105,7 @@ - /* If ELF is the default format, we should not use /lib/elf. */ - - #define LINK_EMULATION "elf_i386" --#define DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#define DYNAMIC_LINKER "/tools/lib/ld-linux.so.2" - - #undef SUBTARGET_EXTRA_SPECS - #define SUBTARGET_EXTRA_SPECS \ -diff -Naur gcc-20050116.orig/gcc/config/i386/linux64.h gcc-20050116/gcc/config/i386/linux64.h ---- gcc-20050116.orig/gcc/config/i386/linux64.h 2005-01-17 00:45:16.000000000 +0000 -+++ gcc-20050116/gcc/config/i386/linux64.h 2005-01-17 00:50:23.055094690 +0000 -@@ -60,8 +60,8 @@ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -- %{!m32:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}} \ -+ %{m32:%{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \ -+ %{!m32:%{!dynamic-linker:-dynamic-linker /tools/lib64/ld-linux-x86-64.so.2}}} \ - %{static:-static}}" - - #define MULTILIB_DEFAULTS { "m64" } -diff -Naur gcc-20050116.orig/gcc/config/ia64/linux.h gcc-20050116/gcc/config/ia64/linux.h ---- gcc-20050116.orig/gcc/config/ia64/linux.h 2005-01-17 00:45:17.000000000 +0000 -+++ gcc-20050116/gcc/config/ia64/linux.h 2005-01-17 00:50:43.146472133 +0000 -@@ -43,7 +43,7 @@ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux-ia64.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux-ia64.so.2}} \ - %{static:-static}}" - - -diff -Naur gcc-20050116.orig/gcc/config/linux.h gcc-20050116/gcc/config/linux.h ---- gcc-20050116.orig/gcc/config/linux.h 2005-01-17 00:45:16.000000000 +0000 -+++ gcc-20050116/gcc/config/linux.h 2005-01-17 00:51:14.101809663 +0000 -@@ -104,3 +104,7 @@ - #define TARGET_C99_FUNCTIONS 1 - - #define TARGET_HAS_F_SETLKW -+ -+/* Remove /usr/include from the end of the include search path. */ -+#undef STANDARD_INCLUDE_DIR -+#define STANDARD_INCLUDE_DIR 0 -diff -Naur gcc-20050116.orig/gcc/config/m32r/linux.h gcc-20050116/gcc/config/m32r/linux.h ---- gcc-20050116.orig/gcc/config/m32r/linux.h 2005-01-17 00:45:17.000000000 +0000 -+++ gcc-20050116/gcc/config/m32r/linux.h 2005-01-17 00:51:39.720640870 +0000 -@@ -66,7 +66,7 @@ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \ - %{static:-static}}}" - #else - #define LINK_SPEC "%(link_cpu) -m m32relf_linux %{shared:-shared} \ -@@ -74,7 +74,7 @@ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \ - %{static:-static}}}" - #endif - -diff -Naur gcc-20050116.orig/gcc/config/m68k/linux.h gcc-20050116/gcc/config/m68k/linux.h ---- gcc-20050116.orig/gcc/config/m68k/linux.h 2005-01-17 00:45:17.000000000 +0000 -+++ gcc-20050116/gcc/config/m68k/linux.h 2005-01-17 00:52:07.633830392 +0000 -@@ -132,7 +132,7 @@ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker*:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker*:-dynamic-linker /tools/lib/ld.so.1}} \ - %{static}}" - - /* For compatibility with linux/a.out */ -diff -Naur gcc-20050116.orig/gcc/config/mips/linux.h gcc-20050116/gcc/config/mips/linux.h ---- gcc-20050116.orig/gcc/config/mips/linux.h 2005-01-17 00:45:17.000000000 +0000 -+++ gcc-20050116/gcc/config/mips/linux.h 2005-01-17 00:52:28.348034505 +0000 -@@ -115,7 +115,7 @@ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}} \ - %{static:-static}}}" - - #undef SUBTARGET_ASM_SPEC -diff -Naur gcc-20050116.orig/gcc/config/mips/linux64.h gcc-20050116/gcc/config/mips/linux64.h ---- gcc-20050116.orig/gcc/config/mips/linux64.h 2005-01-17 00:45:17.000000000 +0000 -+++ gcc-20050116/gcc/config/mips/linux64.h 2005-01-17 00:53:04.645878728 +0000 -@@ -60,9 +60,9 @@ - %{!static: \ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker: \ -- %{mabi=n32: -dynamic-linker /lib32/ld.so.1} \ -- %{mabi=64: -dynamic-linker /lib64/ld.so.1} \ -- %{mabi=32: -dynamic-linker /lib/ld.so.1}}} \ -+ %{mabi=n32: -dynamic-linker /tools/lib32/ld.so.1} \ -+ %{mabi=64: -dynamic-linker /tools/lib64/ld.so.1} \ -+ %{mabi=32: -dynamic-linker /tools/lib/ld.so.1}}} \ - %{static:-static}}} \ - %{mabi=n32:-melf32%{EB:b}%{EL:l}tsmipn32} \ - %{mabi=64:-melf64%{EB:b}%{EL:l}tsmip} \ -diff -Naur gcc-20050116.orig/gcc/config/mn10300/linux.h gcc-20050116/gcc/config/mn10300/linux.h ---- gcc-20050116.orig/gcc/config/mn10300/linux.h 2005-01-17 00:45:17.000000000 +0000 -+++ gcc-20050116/gcc/config/mn10300/linux.h 2005-01-17 00:53:23.477610026 +0000 -@@ -37,7 +37,7 @@ - #define LINK_SPEC "%{mrelax:--relax} %{shared:-shared} \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}} \ - %{static:-static}" - - #undef LIB_SPEC -diff -Naur gcc-20050116.orig/gcc/config/pa/pa-linux.h gcc-20050116/gcc/config/pa/pa-linux.h ---- gcc-20050116.orig/gcc/config/pa/pa-linux.h 2005-01-17 00:45:17.000000000 +0000 -+++ gcc-20050116/gcc/config/pa/pa-linux.h 2005-01-17 00:53:45.334495141 +0000 -@@ -88,7 +88,7 @@ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}} \ - %{static:-static}}" - - /* glibc's profiling functions don't need gcc to allocate counters. */ -diff -Naur gcc-20050116.orig/gcc/config/rs6000/linux64.h gcc-20050116/gcc/config/rs6000/linux64.h ---- gcc-20050116.orig/gcc/config/rs6000/linux64.h 2005-01-17 00:45:17.000000000 +0000 -+++ gcc-20050116/gcc/config/rs6000/linux64.h 2005-01-17 00:54:28.524412534 +0000 -@@ -351,11 +351,11 @@ - - #define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux %{!shared: %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}" -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}}}" - - #define LINK_OS_LINUX_SPEC64 "-m elf64ppc %{!shared: %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib64/ld64.so.1}}}" -+ %{!dynamic-linker:-dynamic-linker /tools/lib64/ld64.so.1}}}" - - #undef TOC_SECTION_ASM_OP - #define TOC_SECTION_ASM_OP \ -diff -Naur gcc-20050116.orig/gcc/config/rs6000/sysv4.h gcc-20050116/gcc/config/rs6000/sysv4.h ---- gcc-20050116.orig/gcc/config/rs6000/sysv4.h 2005-01-17 00:45:17.000000000 +0000 -+++ gcc-20050116/gcc/config/rs6000/sysv4.h 2005-01-17 01:26:39.126999460 +0000 -@@ -1131,7 +1131,7 @@ - - #define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}" -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}}}" - - #if defined(HAVE_LD_EH_FRAME_HDR) - # define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " -@@ -1162,7 +1162,7 @@ - - #define LINK_OS_GNU_SPEC "-m elf32ppclinux %{!shared: %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}" -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}}}" - - #define CPP_OS_GNU_SPEC "-D__unix__ -D__gnu_hurd__ -D__GNU__ \ - %{!undef: \ -diff -Naur gcc-20050116.orig/gcc/config/s390/linux.h gcc-20050116/gcc/config/s390/linux.h ---- gcc-20050116.orig/gcc/config/s390/linux.h 2005-01-17 00:45:17.000000000 +0000 -+++ gcc-20050116/gcc/config/s390/linux.h 2005-01-17 01:26:58.672523211 +0000 -@@ -86,8 +86,8 @@ - %{!static: \ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker: \ -- %{m31:-dynamic-linker /lib/ld.so.1} \ -- %{m64:-dynamic-linker /lib/ld64.so.1}}}}" -+ %{m31:-dynamic-linker /tools/lib/ld.so.1} \ -+ %{m64:-dynamic-linker /tools/lib/ld64.so.1}}}}" - - - #define TARGET_ASM_FILE_END file_end_indicate_exec_stack -diff -Naur gcc-20050116.orig/gcc/config/sh/linux.h gcc-20050116/gcc/config/sh/linux.h ---- gcc-20050116.orig/gcc/config/sh/linux.h 2005-01-17 00:45:18.000000000 +0000 -+++ gcc-20050116/gcc/config/sh/linux.h 2005-01-17 01:27:19.588663163 +0000 -@@ -70,7 +70,7 @@ - "%{shared:-shared} \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \ - %{static:-static}" - - #undef LIB_SPEC -diff -Naur gcc-20050116.orig/gcc/config/sparc/linux.h gcc-20050116/gcc/config/sparc/linux.h ---- gcc-20050116.orig/gcc/config/sparc/linux.h 2005-01-17 00:45:18.000000000 +0000 -+++ gcc-20050116/gcc/config/sparc/linux.h 2005-01-17 01:30:07.282688639 +0000 -@@ -131,13 +131,13 @@ - /* If ELF is the default format, we should not use /lib/elf. */ - - #undef LINK_SPEC --#define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ -+#define LINK_SPEC "-m elf32_sparc -Y P,/tools/lib %{shared:-shared} \ - %{!mno-relax:%{!r:-relax}} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \ - %{static:-static}}}" - - /* The sun bundled assembler doesn't accept -Yd, (and neither does gas). -diff -Naur gcc-20050116.orig/gcc/config/sparc/linux64.h gcc-20050116/gcc/config/sparc/linux64.h ---- gcc-20050116.orig/gcc/config/sparc/linux64.h 2005-01-17 00:45:18.000000000 +0000 -+++ gcc-20050116/gcc/config/sparc/linux64.h 2005-01-17 01:31:18.242712476 +0000 -@@ -167,21 +167,21 @@ - { "link_arch_default", LINK_ARCH_DEFAULT_SPEC }, \ - { "link_arch", LINK_ARCH_SPEC }, - --#define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ -+#define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/tools/lib %{shared:-shared} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \ - %{static:-static}}} \ - " - --#define LINK_ARCH64_SPEC "-m elf64_sparc -Y P,/usr/lib64 %{shared:-shared} \ -+#define LINK_ARCH64_SPEC "-m elf64_sparc -Y P,/tools/lib64 %{shared:-shared} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib64/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib64/ld-linux.so.2}} \ - %{static:-static}}} \ - " - -@@ -257,12 +257,12 @@ - #else /* !SPARC_BI_ARCH */ - - #undef LINK_SPEC --#define LINK_SPEC "-m elf64_sparc -Y P,/usr/lib64 %{shared:-shared} \ -+#define LINK_SPEC "-m elf64_sparc -Y P,/tools/lib64 %{shared:-shared} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib64/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib64/ld-linux.so.2}} \ - %{static:-static}}} \ - %{mlittle-endian:-EL} \ - %{!mno-relax:%{!r:-relax}} \ -diff -Naur gcc-20050116.orig/gcc/config/xtensa/linux.h gcc-20050116/gcc/config/xtensa/linux.h ---- gcc-20050116.orig/gcc/config/xtensa/linux.h 2005-01-17 00:45:18.000000000 +0000 -+++ gcc-20050116/gcc/config/xtensa/linux.h 2005-01-17 01:32:08.951429623 +0000 -@@ -50,7 +50,7 @@ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}} \ - %{static:-static}}}" - - #undef LOCAL_LABEL_PREFIX diff --git a/src/patches/gcc-4.1.2-arm-linux-soft-float.patch b/src/patches/gcc-4.1.2-arm-linux-soft-float.patch deleted file mode 100644 index c22bc385b..000000000 --- a/src/patches/gcc-4.1.2-arm-linux-soft-float.patch +++ /dev/null @@ -1,30 +0,0 @@ -diff -u -r gcc-4.0.2/gcc/config/arm/t-linux gcc-4.0.2/gcc/config/arm.new/t-linux ---- gcc-4.0.2/gcc/config/arm/t-linux 2005-10-18 22:04:44.000000000 +1000 -+++ gcc-4.0.2/gcc/config/arm.new/t-linux 2005-10-18 22:05:03.000000000 +1000 -@@ -4,7 +4,12 @@ TARGET_LIBGCC2_CFLAGS = -fomit-frame-poi - LIBGCC2_DEBUG_CFLAGS = -g0 - - LIB1ASMSRC = arm/lib1funcs.asm --LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx -+LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \ -+ _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \ -+ _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \ -+ _fixsfsi _fixunssfsi _floatdidf _floatdisf \ -+ _bb_init_func _call_via_rX _interwork_call_via_rX \ -+ _lshrdi3 _ashrdi3 _ashldi3 - - # MULTILIB_OPTIONS = mhard-float/msoft-float - # MULTILIB_DIRNAMES = hard-float soft-float - - ---- gcc-4.1.1/gcc/config/arm/linux-elf.h 2007-01-06 11:17:51.000000000 +0000 -+++ gcc-4.1.1/gcc/config/arm/linux-elf-soft.h 2007-01-06 11:22:01.000000000 +0000 -@@ -49,7 +49,7 @@ - %{shared:-lc} \ - %{!shared:%{profile:-lc_p}%{!profile:-lc}}" - --#define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc" -+/* #define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc" */ - - #define LINUX_TARGET_INTERPRETER "/lib/ld-linux.so.2" - diff --git a/src/patches/gcc-4.1.2-fix_linker_version_detection.patch b/src/patches/gcc-4.1.2-fix_linker_version_detection.patch deleted file mode 100644 index 36a756cef..000000000 --- a/src/patches/gcc-4.1.2-fix_linker_version_detection.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -Naur gcc-4.1.2.org/libstdc++-v3/configure gcc-4.1.2/libstdc++-v3/configure ---- gcc-4.1.2.org/libstdc++-v3/configure 2007-01-29 11:51:01.000000000 +0100 -+++ gcc-4.1.2/libstdc++-v3/configure 2011-08-29 19:25:22.973430586 +0200 -@@ -8281,7 +8281,7 @@ - if test x"$with_gnu_ld" = x"yes"; then - - ldver=`$LD --version 2>/dev/null | head -1 | \ -- sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'` -+ sed -e 's/GNU ld .*) \([0-9.][0-9.]*\).*/\1/'` - - glibcxx_gnu_ld_version=`echo $ldver | \ - $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'` diff --git a/src/patches/gcc-4.1.2-gcc_eh.patch b/src/patches/gcc-4.1.2-gcc_eh.patch deleted file mode 100644 index 9a2589a81..000000000 --- a/src/patches/gcc-4.1.2-gcc_eh.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff -ur gcc-4.1.2/gcc/cp/g++spec.c gcc-4.1.2-gcc_eh/gcc/cp/g++spec.c ---- gcc-4.1.2/gcc/cp/g++spec.c 2005-06-25 02:59:41.000000000 +0200 -+++ gcc-4.1.2-gcc_eh/gcc/cp/g++spec.c 2007-08-03 14:46:03.000000000 +0200 -@@ -251,7 +251,7 @@ - #endif - - /* Make sure to have room for the trailing NULL argument. */ -- num_args = argc + added + need_math + shared_libgcc + (library > 0) + 1; -+ num_args = argc + added + need_math + shared_libgcc + 2 * (library > 0) + 1; - arglist = xmalloc (num_args * sizeof (char *)); - - i = 0; -@@ -311,7 +311,10 @@ - { - arglist[j] = saw_profile_flag ? LIBSTDCXX_PROFILE : LIBSTDCXX; - if (arglist[j][0] != '-' || arglist[j][1] == 'l') -- added_libraries++; -+ { -+ arglist[++j] = "-lgcc_eh"; -+ added_libraries += 2; -+ } - j++; - } - if (saw_math) diff --git a/src/patches/gcc-4.1.2-specs-1.patch b/src/patches/gcc-4.1.2-specs-1.patch deleted file mode 100644 index 28ebb433f..000000000 --- a/src/patches/gcc-4.1.2-specs-1.patch +++ /dev/null @@ -1,507 +0,0 @@ -diff -Naur gcc-4.1.2.orig/gcc/config/alpha/linux-elf.h gcc-4.1.2/gcc/config/alpha/linux-elf.h ---- gcc-4.1.2.orig/gcc/config/alpha/linux-elf.h 2005-06-25 01:22:41.000000000 +0000 -+++ gcc-4.1.2/gcc/config/alpha/linux-elf.h 2011-09-01 17:11:11.000000000 +0000 -@@ -27,7 +27,7 @@ - #define SUBTARGET_EXTRA_SPECS \ - { "elf_dynamic_linker", ELF_DYNAMIC_LINKER }, - --#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#define ELF_DYNAMIC_LINKER "/tools/lib/ld-linux.so.2" - - #define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \ - %{O*:-O3} %{!O*:-O1} \ -diff -Naur gcc-4.1.2.orig/gcc/config/arm/linux-eabi.h gcc-4.1.2/gcc/config/arm/linux-eabi.h ---- gcc-4.1.2.orig/gcc/config/arm/linux-eabi.h 2005-11-15 14:32:13.000000000 +0000 -+++ gcc-4.1.2/gcc/config/arm/linux-eabi.h 2011-09-01 17:11:47.000000000 +0000 -@@ -53,7 +53,7 @@ - /* Use ld-linux.so.3 so that it will be possible to run "classic" - GNU/Linux binaries on an EABI system. */ - #undef LINUX_TARGET_INTERPRETER --#define LINUX_TARGET_INTERPRETER "/lib/ld-linux.so.3" -+#define LINUX_TARGET_INTERPRETER "/tools/lib/ld-linux.so.3" - - /* At this point, bpabi.h will have clobbered LINK_SPEC. We want to - use the GNU/Linux version, not the generic BPABI version. */ -diff -Naur gcc-4.1.2.orig/gcc/config/arm/linux-elf.h gcc-4.1.2/gcc/config/arm/linux-elf.h ---- gcc-4.1.2.orig/gcc/config/arm/linux-elf.h 2005-10-10 01:04:31.000000000 +0000 -+++ gcc-4.1.2/gcc/config/arm/linux-elf.h 2011-09-01 17:11:11.000000000 +0000 -@@ -51,7 +51,7 @@ - - #define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc" - --#define LINUX_TARGET_INTERPRETER "/lib/ld-linux.so.2" -+#define LINUX_TARGET_INTERPRETER "/tools/lib/ld-linux.so.2" - - #define LINUX_TARGET_LINK_SPEC "%{h*} %{version:-v} \ - %{b} \ -diff -Naur gcc-4.1.2.orig/gcc/config/frv/linux.h gcc-4.1.2/gcc/config/frv/linux.h ---- gcc-4.1.2.orig/gcc/config/frv/linux.h 2005-06-25 01:22:41.000000000 +0000 -+++ gcc-4.1.2/gcc/config/frv/linux.h 2011-09-01 17:11:11.000000000 +0000 -@@ -41,7 +41,7 @@ - %{mfdpic: -m elf32frvfd -z text} %{shared} %{pie} \ - %{!shared: %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}} \ - %{static}}" - - /* Support for compile-time default CPU. */ -diff -Naur gcc-4.1.2.orig/gcc/config/i386/gnu.h gcc-4.1.2/gcc/config/i386/gnu.h ---- gcc-4.1.2.orig/gcc/config/i386/gnu.h 2004-09-08 00:17:19.000000000 +0000 -+++ gcc-4.1.2/gcc/config/i386/gnu.h 2011-09-01 17:11:11.000000000 +0000 -@@ -27,7 +27,7 @@ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so}} \ - %{static:-static}}" - - #undef STARTFILE_SPEC -diff -Naur gcc-4.1.2.orig/gcc/config/i386/linux64.h gcc-4.1.2/gcc/config/i386/linux64.h ---- gcc-4.1.2.orig/gcc/config/i386/linux64.h 2005-08-10 17:53:01.000000000 +0000 -+++ gcc-4.1.2/gcc/config/i386/linux64.h 2011-09-01 17:11:11.000000000 +0000 -@@ -60,8 +60,8 @@ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -- %{!m32:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}} \ -+ %{m32:%{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \ -+ %{!m32:%{!dynamic-linker:-dynamic-linker /tools/lib64/ld-linux-x86-64.so.2}}} \ - %{static:-static}}" - - /* Similar to standard Linux, but adding -ffast-math support. */ -diff -Naur gcc-4.1.2.orig/gcc/config/i386/linux.h gcc-4.1.2/gcc/config/i386/linux.h ---- gcc-4.1.2.orig/gcc/config/i386/linux.h 2005-08-10 17:53:01.000000000 +0000 -+++ gcc-4.1.2/gcc/config/i386/linux.h 2011-09-01 17:11:11.000000000 +0000 -@@ -105,7 +105,7 @@ - /* If ELF is the default format, we should not use /lib/elf. */ - - #define LINK_EMULATION "elf_i386" --#define DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#define DYNAMIC_LINKER "/tools/lib/ld-linux.so.2" - - #undef SUBTARGET_EXTRA_SPECS - #define SUBTARGET_EXTRA_SPECS \ -diff -Naur gcc-4.1.2.orig/gcc/config/ia64/linux.h gcc-4.1.2/gcc/config/ia64/linux.h ---- gcc-4.1.2.orig/gcc/config/ia64/linux.h 2006-12-12 15:24:07.000000000 +0000 -+++ gcc-4.1.2/gcc/config/ia64/linux.h 2011-09-01 17:11:11.000000000 +0000 -@@ -43,7 +43,7 @@ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux-ia64.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux-ia64.so.2}} \ - %{static:-static}}" - - #define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}" -diff -Naur gcc-4.1.2.orig/gcc/config/ia64/linux.h.orig gcc-4.1.2/gcc/config/ia64/linux.h.orig ---- gcc-4.1.2.orig/gcc/config/ia64/linux.h.orig 1970-01-01 00:00:00.000000000 +0000 -+++ gcc-4.1.2/gcc/config/ia64/linux.h.orig 2006-12-12 15:24:07.000000000 +0000 -@@ -0,0 +1,59 @@ -+/* Definitions for ia64-linux target. */ -+ -+/* This macro is a C statement to print on `stderr' a string describing the -+ particular machine description choice. */ -+ -+#define TARGET_VERSION fprintf (stderr, " (IA-64) Linux"); -+ -+/* This is for -profile to use -lc_p instead of -lc. */ -+#undef CC1_SPEC -+#define CC1_SPEC "%{profile:-p} %{G*}" -+ -+/* Target OS builtins. */ -+#define TARGET_OS_CPP_BUILTINS() \ -+do { \ -+ LINUX_TARGET_OS_CPP_BUILTINS(); \ -+ builtin_define("_LONGLONG"); \ -+} while (0) -+ -+/* Need to override linux.h STARTFILE_SPEC, since it has crtbeginT.o in. */ -+#undef STARTFILE_SPEC -+#ifdef HAVE_LD_PIE -+#define STARTFILE_SPEC \ -+ "%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}}\ -+ crti.o%s %{shared|pie:crtbeginS.o%s;:crtbegin.o%s}" -+#else -+#define STARTFILE_SPEC \ -+ "%{!shared: %{pg|p|profile:gcrt1.o%s;:crt1.o%s}}\ -+ crti.o%s %{shared|pie:crtbeginS.o%s;:crtbegin.o%s}" -+#endif -+ -+/* Similar to standard Linux, but adding -ffast-math support. */ -+#undef ENDFILE_SPEC -+#define ENDFILE_SPEC \ -+ "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \ -+ %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s" -+ -+/* Define this for shared library support because it isn't in the main -+ linux.h file. */ -+ -+#undef LINK_SPEC -+#define LINK_SPEC "\ -+ %{shared:-shared} \ -+ %{!shared: \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-linux-ia64.so.2}} \ -+ %{static:-static}}" -+ -+#define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}" -+ -+#define JMP_BUF_SIZE 76 -+ -+/* Override linux.h LINK_EH_SPEC definition. -+ Signalize that because we have fde-glibc, we don't need all C shared libs -+ linked against -lgcc_s. */ -+#undef LINK_EH_SPEC -+#define LINK_EH_SPEC "" -+ -+#define MD_UNWIND_SUPPORT "config/ia64/linux-unwind.h" -diff -Naur gcc-4.1.2.orig/gcc/config/linux.h gcc-4.1.2/gcc/config/linux.h ---- gcc-4.1.2.orig/gcc/config/linux.h 2005-08-06 13:26:35.000000000 +0000 -+++ gcc-4.1.2/gcc/config/linux.h 2011-09-01 17:11:11.000000000 +0000 -@@ -104,3 +104,7 @@ - #define TARGET_C99_FUNCTIONS 1 - - #define TARGET_POSIX_IO -+ -+/* Remove /usr/include from the end of the include search path. */ -+#undef STANDARD_INCLUDE_DIR -+#define STANDARD_INCLUDE_DIR 0 -diff -Naur gcc-4.1.2.orig/gcc/config/m32r/linux.h gcc-4.1.2/gcc/config/m32r/linux.h ---- gcc-4.1.2.orig/gcc/config/m32r/linux.h 2005-07-08 10:00:15.000000000 +0000 -+++ gcc-4.1.2/gcc/config/m32r/linux.h 2011-09-01 17:11:11.000000000 +0000 -@@ -66,7 +66,7 @@ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \ - %{static:-static}}}" - #else - #define LINK_SPEC "%(link_cpu) -m m32relf_linux %{shared:-shared} \ -@@ -74,7 +74,7 @@ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \ - %{static:-static}}}" - #endif - -diff -Naur gcc-4.1.2.orig/gcc/config/m68k/linux.h gcc-4.1.2/gcc/config/m68k/linux.h ---- gcc-4.1.2.orig/gcc/config/m68k/linux.h 2005-06-25 01:22:41.000000000 +0000 -+++ gcc-4.1.2/gcc/config/m68k/linux.h 2011-09-01 17:11:11.000000000 +0000 -@@ -128,7 +128,7 @@ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker*:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker*:-dynamic-linker /tools/lib/ld.so.1}} \ - %{static}}" - - /* For compatibility with linux/a.out */ -diff -Naur gcc-4.1.2.orig/gcc/config/mips/linux64.h gcc-4.1.2/gcc/config/mips/linux64.h ---- gcc-4.1.2.orig/gcc/config/mips/linux64.h 2005-06-25 01:22:41.000000000 +0000 -+++ gcc-4.1.2/gcc/config/mips/linux64.h 2011-09-01 17:11:11.000000000 +0000 -@@ -47,9 +47,9 @@ - %{!static: \ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker: \ -- %{mabi=n32: -dynamic-linker /lib32/ld.so.1} \ -- %{mabi=64: -dynamic-linker /lib64/ld.so.1} \ -- %{mabi=32: -dynamic-linker /lib/ld.so.1}}} \ -+ %{mabi=n32: -dynamic-linker /tools/lib32/ld.so.1} \ -+ %{mabi=64: -dynamic-linker /tools/lib64/ld.so.1} \ -+ %{mabi=32: -dynamic-linker /tools/lib/ld.so.1}}} \ - %{static:-static}}} \ - %{mabi=n32:-melf32%{EB:b}%{EL:l}tsmipn32} \ - %{mabi=64:-melf64%{EB:b}%{EL:l}tsmip} \ -diff -Naur gcc-4.1.2.orig/gcc/config/mips/linux.h gcc-4.1.2/gcc/config/mips/linux.h ---- gcc-4.1.2.orig/gcc/config/mips/linux.h 2006-12-17 13:57:31.000000000 +0000 -+++ gcc-4.1.2/gcc/config/mips/linux.h 2011-09-01 17:11:11.000000000 +0000 -@@ -112,7 +112,7 @@ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}} \ - %{static:-static}}}" - - #undef SUBTARGET_ASM_SPEC -diff -Naur gcc-4.1.2.orig/gcc/config/mn10300/linux.h gcc-4.1.2/gcc/config/mn10300/linux.h ---- gcc-4.1.2.orig/gcc/config/mn10300/linux.h 2005-06-25 01:22:41.000000000 +0000 -+++ gcc-4.1.2/gcc/config/mn10300/linux.h 2011-09-01 17:11:11.000000000 +0000 -@@ -37,7 +37,7 @@ - #define LINK_SPEC "%{mrelax:--relax} %{shared:-shared} \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}} \ - %{static:-static}" - - #undef PROCESSOR_DEFAULT -diff -Naur gcc-4.1.2.orig/gcc/config/pa/pa-linux.h gcc-4.1.2/gcc/config/pa/pa-linux.h ---- gcc-4.1.2.orig/gcc/config/pa/pa-linux.h 2007-01-12 02:23:38.000000000 +0000 -+++ gcc-4.1.2/gcc/config/pa/pa-linux.h 2011-09-01 17:11:11.000000000 +0000 -@@ -55,7 +55,7 @@ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}} \ - %{static:-static}}" - - /* glibc's profiling functions don't need gcc to allocate counters. */ -diff -Naur gcc-4.1.2.orig/gcc/config/rs6000/linux64.h gcc-4.1.2/gcc/config/rs6000/linux64.h ---- gcc-4.1.2.orig/gcc/config/rs6000/linux64.h 2006-02-10 20:58:33.000000000 +0000 -+++ gcc-4.1.2/gcc/config/rs6000/linux64.h 2011-09-01 17:11:11.000000000 +0000 -@@ -339,11 +339,11 @@ - - #define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux %{!shared: %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}" -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}}}" - - #define LINK_OS_LINUX_SPEC64 "-m elf64ppc %{!shared: %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib64/ld64.so.1}}}" -+ %{!dynamic-linker:-dynamic-linker /tools/lib64/ld64.so.1}}}" - - #undef TOC_SECTION_ASM_OP - #define TOC_SECTION_ASM_OP \ -diff -Naur gcc-4.1.2.orig/gcc/config/rs6000/sysv4.h gcc-4.1.2/gcc/config/rs6000/sysv4.h ---- gcc-4.1.2.orig/gcc/config/rs6000/sysv4.h 2006-02-10 20:58:33.000000000 +0000 -+++ gcc-4.1.2/gcc/config/rs6000/sysv4.h 2011-09-01 17:11:11.000000000 +0000 -@@ -1041,7 +1041,7 @@ - - #define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}" -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}}}" - - #if defined(HAVE_LD_EH_FRAME_HDR) - # define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " -@@ -1072,7 +1072,7 @@ - - #define LINK_OS_GNU_SPEC "-m elf32ppclinux %{!shared: %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}" -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}}}" - - #define CPP_OS_GNU_SPEC "-D__unix__ -D__gnu_hurd__ -D__GNU__ \ - %{!undef: \ -diff -Naur gcc-4.1.2.orig/gcc/config/s390/linux.h gcc-4.1.2/gcc/config/s390/linux.h ---- gcc-4.1.2.orig/gcc/config/s390/linux.h 2006-12-12 15:24:07.000000000 +0000 -+++ gcc-4.1.2/gcc/config/s390/linux.h 2011-09-01 17:11:11.000000000 +0000 -@@ -86,8 +86,8 @@ - %{!static: \ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker: \ -- %{m31:-dynamic-linker /lib/ld.so.1} \ -- %{m64:-dynamic-linker /lib/ld64.so.1}}}}" -+ %{m31:-dynamic-linker /tools/lib/ld.so.1} \ -+ %{m64:-dynamic-linker /tools/lib/ld64.so.1}}}}" - - #define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}" - -diff -Naur gcc-4.1.2.orig/gcc/config/s390/linux.h.orig gcc-4.1.2/gcc/config/s390/linux.h.orig ---- gcc-4.1.2.orig/gcc/config/s390/linux.h.orig 1970-01-01 00:00:00.000000000 +0000 -+++ gcc-4.1.2/gcc/config/s390/linux.h.orig 2006-12-12 15:24:07.000000000 +0000 -@@ -0,0 +1,107 @@ -+/* Definitions for Linux for S/390. -+ Copyright (C) 1999, 2000, 2001, 2002, 2004 Free Software Foundation, Inc. -+ Contributed by Hartmut Penner (hpenner@de.ibm.com) and -+ Ulrich Weigand (uweigand@de.ibm.com). -+ -+This file is part of GCC. -+ -+GCC is free software; you can redistribute it and/or modify it under -+the terms of the GNU General Public License as published by the Free -+Software Foundation; either version 2, or (at your option) any later -+version. -+ -+GCC is distributed in the hope that it will be useful, but WITHOUT ANY -+WARRANTY; without even the implied warranty of MERCHANTABILITY or -+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+for more details. -+ -+You should have received a copy of the GNU General Public License -+along with GCC; see the file COPYING. If not, write to the Free -+Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA -+02110-1301, USA. */ -+ -+#ifndef _LINUX_H -+#define _LINUX_H -+ -+/* Target specific version string. */ -+ -+#ifdef DEFAULT_TARGET_64BIT -+#undef TARGET_VERSION -+#define TARGET_VERSION fprintf (stderr, " (Linux for zSeries)"); -+#else -+#undef TARGET_VERSION -+#define TARGET_VERSION fprintf (stderr, " (Linux for S/390)"); -+#endif -+ -+ -+/* Target specific type definitions. */ -+ -+/* ??? Do we really want long as size_t on 31-bit? */ -+#undef SIZE_TYPE -+#define SIZE_TYPE (TARGET_64BIT ? "long unsigned int" : "long unsigned int") -+#undef PTRDIFF_TYPE -+#define PTRDIFF_TYPE (TARGET_64BIT ? "long int" : "int") -+ -+#undef WCHAR_TYPE -+#define WCHAR_TYPE "int" -+#undef WCHAR_TYPE_SIZE -+#define WCHAR_TYPE_SIZE 32 -+ -+ -+/* Target specific preprocessor settings. */ -+ -+#define TARGET_OS_CPP_BUILTINS() \ -+ do \ -+ { \ -+ LINUX_TARGET_OS_CPP_BUILTINS(); \ -+ if (flag_pic) \ -+ { \ -+ builtin_define ("__PIC__"); \ -+ builtin_define ("__pic__"); \ -+ } \ -+ } \ -+ while (0) -+ -+ -+/* Target specific assembler settings. */ -+ -+#undef ASM_SPEC -+#define ASM_SPEC "%{m31&m64}%{mesa&mzarch}%{march=*}" -+ -+ -+/* Target specific linker settings. */ -+ -+#ifdef DEFAULT_TARGET_64BIT -+#define MULTILIB_DEFAULTS { "m64" } -+#else -+#define MULTILIB_DEFAULTS { "m31" } -+#endif -+ -+#undef LINK_SPEC -+#define LINK_SPEC \ -+ "%{m31:-m elf_s390}%{m64:-m elf64_s390} \ -+ %{shared:-shared} \ -+ %{!shared: \ -+ %{static:-static} \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker: \ -+ %{m31:-dynamic-linker /lib/ld.so.1} \ -+ %{m64:-dynamic-linker /lib/ld64.so.1}}}}" -+ -+#define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}" -+ -+#define TARGET_ASM_FILE_END file_end_indicate_exec_stack -+ -+#define MD_UNWIND_SUPPORT "config/s390/linux-unwind.h" -+ -+#ifdef TARGET_LIBC_PROVIDES_SSP -+/* s390 glibc provides __stack_chk_guard in 0x14(tp), -+ s390x glibc provides it at 0x28(tp). */ -+#define TARGET_THREAD_SSP_OFFSET (TARGET_64BIT ? 0x28 : 0x14) -+#endif -+ -+/* Define if long doubles should be mangled as 'g'. */ -+#define TARGET_ALTERNATE_LONG_DOUBLE_MANGLING -+ -+#endif -diff -Naur gcc-4.1.2.orig/gcc/config/sh/linux.h gcc-4.1.2/gcc/config/sh/linux.h ---- gcc-4.1.2.orig/gcc/config/sh/linux.h 2005-06-25 01:22:41.000000000 +0000 -+++ gcc-4.1.2/gcc/config/sh/linux.h 2011-09-01 17:11:11.000000000 +0000 -@@ -60,7 +60,7 @@ - "%{shared:-shared} \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \ - %{static:-static}" - - /* Output assembler code to STREAM to call the profiler. */ -diff -Naur gcc-4.1.2.orig/gcc/config/sparc/linux64.h gcc-4.1.2/gcc/config/sparc/linux64.h ---- gcc-4.1.2.orig/gcc/config/sparc/linux64.h 2006-02-11 08:38:51.000000000 +0000 -+++ gcc-4.1.2/gcc/config/sparc/linux64.h 2011-09-01 17:11:11.000000000 +0000 -@@ -162,21 +162,21 @@ - { "link_arch_default", LINK_ARCH_DEFAULT_SPEC }, \ - { "link_arch", LINK_ARCH_SPEC }, - --#define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ -+#define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/tools/lib %{shared:-shared} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \ - %{static:-static}}} \ - " - --#define LINK_ARCH64_SPEC "-m elf64_sparc -Y P,/usr/lib64 %{shared:-shared} \ -+#define LINK_ARCH64_SPEC "-m elf64_sparc -Y P,/tools/lib64 %{shared:-shared} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib64/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib64/ld-linux.so.2}} \ - %{static:-static}}} \ - " - -@@ -252,12 +252,12 @@ - #else /* !SPARC_BI_ARCH */ - - #undef LINK_SPEC --#define LINK_SPEC "-m elf64_sparc -Y P,/usr/lib64 %{shared:-shared} \ -+#define LINK_SPEC "-m elf64_sparc -Y P,/tools/lib64 %{shared:-shared} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib64/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib64/ld-linux.so.2}} \ - %{static:-static}}} \ - %{mlittle-endian:-EL} \ - %{!mno-relax:%{!r:-relax}} \ -diff -Naur gcc-4.1.2.orig/gcc/config/sparc/linux.h gcc-4.1.2/gcc/config/sparc/linux.h ---- gcc-4.1.2.orig/gcc/config/sparc/linux.h 2006-02-11 08:38:51.000000000 +0000 -+++ gcc-4.1.2/gcc/config/sparc/linux.h 2011-09-01 17:11:11.000000000 +0000 -@@ -126,13 +126,13 @@ - /* If ELF is the default format, we should not use /lib/elf. */ - - #undef LINK_SPEC --#define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ -+#define LINK_SPEC "-m elf32_sparc -Y P,/tools/lib %{shared:-shared} \ - %{!mno-relax:%{!r:-relax}} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \ - %{static:-static}}}" - - /* The sun bundled assembler doesn't accept -Yd, (and neither does gas). -diff -Naur gcc-4.1.2.orig/gcc/config/xtensa/linux.h gcc-4.1.2/gcc/config/xtensa/linux.h ---- gcc-4.1.2.orig/gcc/config/xtensa/linux.h 2005-06-25 01:22:41.000000000 +0000 -+++ gcc-4.1.2/gcc/config/xtensa/linux.h 2011-09-01 17:11:11.000000000 +0000 -@@ -50,7 +50,7 @@ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}} \ - %{static:-static}}}" - - #undef LOCAL_LABEL_PREFIX diff --git a/src/patches/gcc-4.4.3-startfiles_fix-1.patch b/src/patches/gcc-4.4.3-startfiles_fix-1.patch new file mode 100644 index 000000000..a2eac9e46 --- /dev/null +++ b/src/patches/gcc-4.4.3-startfiles_fix-1.patch @@ -0,0 +1,33 @@ +Submitted By: Jeremy Huntwork (jhuntwork AT linuxfromscratch DOT org) +Date: 2008-12-05 +Initial Package Version: 4.3.2 +Upstream Status: See below. +Origin: DIY Linux, See below. +Description: Original patch follows: + +# DIY Linux Patch +Date: 2008-09-09 +Author: Refer Origin. +Origin: Partial revert of http://gcc.gnu.org/ml/gcc-cvs/2006-11/msg00416.html +Maker: Greg Schafer +Upstream Status: Not applicable. Tweak only for Temptools phase GCC-Pass2. +Description: Partially revert GCC driver to pre-GCC-4.3 state to allow startfiles to be + found in $prefix when GCC is configured for a non-standard prefix eg: /temptools. Full + background info in thread starting here: http://gcc.gnu.org/ml/gcc/2008-03/msg00095.html + and GCC bugzilla here: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35532 + +diff -Naur gcc-4.3.0-RC-20080222.orig/gcc/gcc.c gcc-4.3.0-RC-20080222/gcc/gcc.c +--- gcc-4.3.0-RC-20080222.orig/gcc/gcc.c 2008-01-24 18:57:12.000000000 +0000 ++++ gcc-4.3.0-RC-20080222/gcc/gcc.c 2008-03-02 06:07:36.000000000 +0000 +@@ -6370,6 +6370,11 @@ + machine_suffix, + standard_startfile_prefix, NULL), + NULL, PREFIX_PRIORITY_LAST, 0, 1); ++ add_prefix (&startfile_prefixes, ++ concat (standard_exec_prefix, ++ machine_suffix, ++ standard_startfile_prefix, NULL), ++ NULL, PREFIX_PRIORITY_LAST, 0, 1); + } + + /* Sysrooted prefixes are relocated because target_system_root is diff --git a/src/patches/gcc-libstdc++-pic.patch b/src/patches/gcc-libstdc++-pic.patch deleted file mode 100644 index a9d6e7185..000000000 --- a/src/patches/gcc-libstdc++-pic.patch +++ /dev/null @@ -1,45 +0,0 @@ ---- gcc-4.0.0/libstdc++-v3/src/Makefile.am -+++ gcc-4.0.0/libstdc++-v3/src/Makefile.am -@@ -214,6 +214,10 @@ - $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LDFLAGS) -o $@ - - -+install-exec-local: -+ $(AR) cru libstdc++_pic.a *.o $(top_builddir)/libsupc++/*.o -+ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir) -+ - # Added bits to build debug library. - if GLIBCXX_BUILD_DEBUG - all-local: build_debug ---- gcc-4.0.0/libstdc++-v3/src/Makefile.in -+++ gcc-4.0.0/libstdc++-v3/src/Makefile.in -@@ -625,7 +625,7 @@ - - install-data-am: install-data-local - --install-exec-am: install-toolexeclibLTLIBRARIES -+install-exec-am: install-toolexeclibLTLIBRARIES install-exec-local - - install-info: install-info-am - -@@ -664,7 +664,7 @@ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-info-am \ -- uninstall-toolexeclibLTLIBRARIES -+ uninstall-toolexeclibLTLIBRARIES install-exec-local - - @GLIBCXX_BUILD_VERSIONED_SHLIB_TRUE@libstdc++-symbol.ver: ${glibcxx_srcdir}/$(SYMVER_MAP) - @GLIBCXX_BUILD_VERSIONED_SHLIB_TRUE@ cp ${glibcxx_srcdir}/$(SYMVER_MAP) ./libstdc++-symbol.ver -@@ -743,6 +743,11 @@ - install_debug: - (cd ${debugdir} && $(MAKE) \ - toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install) -+ -+install-exec-local: -+ $(AR) cru libstdc++_pic.a *.o $(top_builddir)/libsupc++/*.o -+ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir) -+ - # Tell versions [3.59,3.63) of GNU make to not export all variables. - # Otherwise a system limit (for SysV at least) may be exceeded. - .NOEXPORT: diff --git a/src/patches/gcc-sdk-libstdc++-includes.patch b/src/patches/gcc-sdk-libstdc++-includes.patch deleted file mode 100644 index c7676ae6a..000000000 --- a/src/patches/gcc-sdk-libstdc++-includes.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff -urN gcc-4.0.0-100/libstdc++-v3/fragment.am gcc-4.0.0/libstdc++-v3/fragment.am ---- gcc-4.0.0-100/libstdc++-v3/fragment.am 2004-10-25 15:32:40.000000000 -0500 -+++ gcc-4.0.0/libstdc++-v3/fragment.am 2005-04-28 21:48:43.000000000 -0500 -@@ -18,5 +18,5 @@ - $(WARN_FLAGS) $(WERROR) -fdiagnostics-show-location=once - - # -I/-D flags to pass when compiling. --AM_CPPFLAGS = $(GLIBCXX_INCLUDES) -+AM_CPPFLAGS = $(GLIBCXX_INCLUDES) -I$(toplevel_srcdir)/include - -diff -urN gcc-4.0.0-100/libstdc++-v3/libmath/Makefile.am gcc-4.0.0/libstdc++-v3/libmath/Makefile.am ---- gcc-4.0.0-100/libstdc++-v3/libmath/Makefile.am 2003-08-27 16:29:42.000000000 -0500 -+++ gcc-4.0.0/libstdc++-v3/libmath/Makefile.am 2005-04-28 21:48:43.000000000 -0500 -@@ -32,7 +32,7 @@ - - libmath_la_SOURCES = stubs.c - --AM_CPPFLAGS = $(CANADIAN_INCLUDES) -+AM_CPPFLAGS = $(CANADIAN_INCLUDES) -I$(toplevel_srcdir)/include - - # Only compiling "C" sources in this directory. - LIBTOOL = @LIBTOOL@ --tag CC diff --git a/src/patches/gcc-uclibc-conf.patch b/src/patches/gcc-uclibc-conf.patch deleted file mode 100644 index 3be7d0975..000000000 --- a/src/patches/gcc-uclibc-conf.patch +++ /dev/null @@ -1,553 +0,0 @@ ---- gcc-4.0.2/gcc/config/t-linux-uclibc -+++ gcc-4.0.2/gcc/config/t-linux-uclibc -@@ -0,0 +1,5 @@ -+# Remove glibc specific files added in t-linux -+SHLIB_MAPFILES := $(filter-out $(srcdir)/config/libgcc-glibc.ver, $(SHLIB_MAPFILES)) -+ -+# Use unwind-dw2-fde instead of unwind-dw2-fde-glibc -+LIB2ADDEH := $(subst unwind-dw2-fde-glibc.c,unwind-dw2-fde.c,$(LIB2ADDEH)) ---- gcc-4.0.2/gcc/config.gcc -+++ gcc-4.0.2/gcc/config.gcc -@@ -1778,7 +1778,7 @@ - ;; - sh-*-elf* | sh[12346l]*-*-elf* | sh*-*-kaos* | \ - sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \ -- sh-*-linux* | sh[346lbe]*-*-linux* | \ -+ sh*-*-linux* | sh[346lbe]*-*-linux* | \ - sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \ - sh64-*-netbsd* | sh64l*-*-netbsd*) - tmake_file="${tmake_file} sh/t-sh sh/t-elf" -@@ -2234,10 +2234,16 @@ - *) - echo "*** Configuration ${target} not supported" 1>&2 - exit 1 - ;; - esac -+ -+# Rather than hook into each target, just do it after all the linux -+# targets have been processed -+case ${target} in -+*-linux-uclibc*) tm_defines="${tm_defines} USE_UCLIBC" ; tmake_file="${tmake_file} t-linux-uclibc" -+esac - - case ${target} in - i[34567]86-*-linux*aout* | i[34567]86-*-linux*libc1) - tmake_file="${tmake_file} i386/t-gmm_malloc" - ;; ---- gcc-4.0.2/gcc/config/alpha/linux-elf.h -+++ gcc-4.0.2/gcc/config/alpha/linux-elf.h -@@ -27,7 +27,11 @@ - #define SUBTARGET_EXTRA_SPECS \ - { "elf_dynamic_linker", ELF_DYNAMIC_LINKER }, - -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else - #define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#endif - - #define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \ - %{O*:-O3} %{!O*:-O1} \ ---- gcc-4.0.2/gcc/config/arm/linux-elf.h -+++ gcc-4.0.2/gcc/config/arm/linux-elf.h -@@ -81,14 +81,19 @@ - #define ENDFILE_SPEC \ - "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s" - -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#endif - #undef LINK_SPEC - #define LINK_SPEC "%{h*} %{version:-v} \ - %{b} %{Wl,*:%*} \ - %{static:-Bstatic} \ - %{shared:-shared} \ - %{symbolic:-Bsymbolic} \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \ -+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "} \ - -X \ - %{mbig-endian:-EB}" \ - SUBTARGET_EXTRA_LINK_SPEC ---- gcc-4.0.2/gcc/config/cris/linux.h -+++ gcc-4.0.2/gcc/config/cris/linux.h -@@ -79,6 +79,25 @@ - #undef CRIS_DEFAULT_CPU_VERSION - #define CRIS_DEFAULT_CPU_VERSION CRIS_CPU_NG - -+#ifdef USE_UCLIBC -+ -+#undef CRIS_SUBTARGET_VERSION -+#define CRIS_SUBTARGET_VERSION " - cris-axis-linux-uclibc" -+ -+#undef CRIS_LINK_SUBTARGET_SPEC -+#define CRIS_LINK_SUBTARGET_SPEC \ -+ "-mcrislinux\ -+ -rpath-link include/asm/../..%s\ -+ %{shared} %{static}\ -+ %{symbolic:-Bdynamic} %{shlib:-Bdynamic} %{static:-Bstatic}\ -+ %{!shared: \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}} \ -+ %{!r:%{O2|O3: --gc-sections}}" -+ -+#else /* USE_UCLIBC */ -+ - #undef CRIS_SUBTARGET_VERSION - #define CRIS_SUBTARGET_VERSION " - cris-axis-linux-gnu" - -@@ -93,6 +112,8 @@ - %{!shared:%{!static:%{rdynamic:-export-dynamic}}}\ - %{!r:%{O2|O3: --gc-sections}}" - -+#endif /* USE_UCLIBC */ -+ - - /* Node: Run-time Target */ - ---- gcc-4.0.2/gcc/config/i386/linux.h -+++ gcc-4.0.2/gcc/config/i386/linux.h -@@ -107,6 +107,11 @@ - #define LINK_EMULATION "elf_i386" - #define DYNAMIC_LINKER "/lib/ld-linux.so.2" - -+#ifdef USE_UCLIBC -+#undef DYNAMIC_LINKER -+#define DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#endif -+ - #undef SUBTARGET_EXTRA_SPECS - #define SUBTARGET_EXTRA_SPECS \ - { "link_emulation", LINK_EMULATION },\ ---- gcc-4.0.2/gcc/config/i386/linux64.h -+++ gcc-4.0.2/gcc/config/i386/linux64.h -@@ -54,14 +54,21 @@ - When the -shared link option is used a final link is not being - done. */ - -+#ifdef USE_UCLIBC -+#define ELF32_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#define ELF64_DYNAMIC_LINKER "/lib/ld64-uClibc.so.0" -+#else -+#define ELF32_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#define ELF64_DYNAMIC_LINKER "/lib64/ld-linux-x86-64.so.2" -+#endif - #undef LINK_SPEC - #define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} \ - %{shared:-shared} \ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -- %{!m32:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}} \ -+ %{m32:%{!dynamic-linker:-dynamic-linker " ELF32_DYNAMIC_LINKER "}} \ -+ %{!m32:%{!dynamic-linker:-dynamic-linker " ELF64_DYNAMIC_LINKER "}}} \ - %{static:-static}}" - - #define MULTILIB_DEFAULTS { "m64" } ---- gcc-4.0.2/gcc/config/ia64/linux.h -+++ gcc-4.0.2/gcc/config/ia64/linux.h -@@ -37,13 +37,18 @@ - /* Define this for shared library support because it isn't in the main - linux.h file. */ - -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2" -+#endif - #undef LINK_SPEC - #define LINK_SPEC "\ - %{shared:-shared} \ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux-ia64.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ - %{static:-static}}" - - ---- gcc-4.0.2/gcc/config/m68k/linux.h -+++ gcc-4.0.2/gcc/config/m68k/linux.h -@@ -127,12 +127,17 @@ - - /* If ELF is the default format, we should not use /lib/elf. */ - -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1" -+#endif - #undef LINK_SPEC - #define LINK_SPEC "-m m68kelf %{shared} \ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker*:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker*:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ - %{static}}" - - /* For compatibility with linux/a.out */ ---- gcc-4.0.2/gcc/config/mips/linux.h -+++ gcc-4.0.2/gcc/config/mips/linux.h -@@ -108,14 +108,19 @@ - - /* Borrowed from sparc/linux.h */ - #undef LINK_SPEC -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1" -+#endif - #define LINK_SPEC \ - "%(endian_spec) \ - %{shared:-shared} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ - %{static:-static}}}" - - #undef SUBTARGET_ASM_SPEC ---- gcc-4.0.2/gcc/config/pa/pa-linux.h -+++ gcc-4.0.2/gcc/config/pa/pa-linux.h -@@ -82,13 +82,18 @@ - /* Define this for shared library support because it isn't in the main - linux.h file. */ - -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1" -+#endif - #undef LINK_SPEC - #define LINK_SPEC "\ - %{shared:-shared} \ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ - %{static:-static}}" - - /* glibc's profiling functions don't need gcc to allocate counters. */ ---- gcc-4.0.2/gcc/config/rs6000/linux.h -+++ gcc-4.0.2/gcc/config/rs6000/linux.h -@@ -69,7 +69,11 @@ - #define LINK_START_DEFAULT_SPEC "%(link_start_linux)" - - #undef LINK_OS_DEFAULT_SPEC -+#ifdef USE_UCLIBC -+#define LINK_OS_DEFAULT_SPEC "%(link_os_linux_uclibc)" -+#else - #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)" -+#endif - - #define LINK_GCC_C_SEQUENCE_SPEC \ - "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}" ---- gcc-4.0.2/gcc/config/rs6000/sysv4.h -+++ gcc-4.0.2/gcc/config/rs6000/sysv4.h -@@ -949,6 +949,7 @@ - mcall-linux : %(link_os_linux) ; \ - mcall-gnu : %(link_os_gnu) ; \ - mcall-netbsd : %(link_os_netbsd) ; \ -+ mcall-linux-uclibc : %(link_os_linux_uclibc); \ - mcall-openbsd: %(link_os_openbsd) ; \ - : %(link_os_default) }" - -@@ -1127,6 +1128,10 @@ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}" - -+#define LINK_OS_LINUX_UCLIBC_SPEC "-m elf32ppclinux %{!shared: %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}}" -+ - #if defined(HAVE_LD_EH_FRAME_HDR) - # define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " - #endif -@@ -1293,6 +1298,7 @@ - { "link_os_sim", LINK_OS_SIM_SPEC }, \ - { "link_os_freebsd", LINK_OS_FREEBSD_SPEC }, \ - { "link_os_linux", LINK_OS_LINUX_SPEC }, \ -+ { "link_os_linux_uclibc", LINK_OS_LINUX_UCLIBC_SPEC }, \ - { "link_os_gnu", LINK_OS_GNU_SPEC }, \ - { "link_os_netbsd", LINK_OS_NETBSD_SPEC }, \ - { "link_os_openbsd", LINK_OS_OPENBSD_SPEC }, \ ---- gcc-4.0.2/gcc/config/s390/linux.h -+++ gcc-4.0.2/gcc/config/s390/linux.h -@@ -77,6 +77,13 @@ - #define MULTILIB_DEFAULTS { "m31" } - #endif - -+#ifdef USE_UCLIBC -+#define ELF31_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#define ELF64_DYNAMIC_LINKER "/lib/ld64-uClibc.so.0" -+#else -+#define ELF31_DYNAMIC_LINKER "/lib/ld.so.1" -+#define ELF64_DYNAMIC_LINKER "/lib/ld64.so.1" -+#endif - #undef LINK_SPEC - #define LINK_SPEC \ - "%{m31:-m elf_s390}%{m64:-m elf64_s390} \ -@@ -86,8 +93,8 @@ - %{!static: \ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker: \ -- %{m31:-dynamic-linker /lib/ld.so.1} \ -- %{m64:-dynamic-linker /lib/ld64.so.1}}}}" -+ %{m31:-dynamic-linker " ELF31_DYNAMIC_LINKER "} \ -+ %{m64:-dynamic-linker " ELF64_DYNAMIC_LINKER "}}}}" - - - #define TARGET_ASM_FILE_END file_end_indicate_exec_stack ---- gcc-4.0.2/gcc/config/sh/linux.h -+++ gcc-4.0.2/gcc/config/sh/linux.h -@@ -67,11 +67,16 @@ - #undef SUBTARGET_LINK_EMUL_SUFFIX - #define SUBTARGET_LINK_EMUL_SUFFIX "_linux" - #undef SUBTARGET_LINK_SPEC -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#endif - #define SUBTARGET_LINK_SPEC \ - "%{shared:-shared} \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ - %{static:-static}" - - #undef LIB_SPEC ---- gcc-4.0.2/gcc/config/sparc/linux.h -+++ gcc-4.0.2/gcc/config/sparc/linux.h -@@ -130,14 +130,19 @@ - - /* If ELF is the default format, we should not use /lib/elf. */ - -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#endif - #undef LINK_SPEC - #define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ - %{!mno-relax:%{!r:-relax}} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ - %{static:-static}}}" - - /* The sun bundled assembler doesn't accept -Yd, (and neither does gas). ---- gcc-4.0.2/gcc/config/sparc/linux64.h -+++ gcc-4.0.2/gcc/config/sparc/linux64.h -@@ -167,12 +166,17 @@ - { "link_arch_default", LINK_ARCH_DEFAULT_SPEC }, \ - { "link_arch", LINK_ARCH_SPEC }, - -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#endif - #define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ - %{static:-static}}} \ - " - ---- gcc-4.0.2/libtool.m4 -+++ gcc-4.0.2/libtool.m4 -@@ -682,6 +682,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'] ---- gcc-4.0.2/ltconfig -+++ gcc-4.0.2/ltconfig -@@ -603,6 +603,7 @@ - - # Transform linux* to *-*-linux-gnu*, to support old configure scripts. - case $host_os in -+linux-uclibc*) ;; - linux-gnu*) ;; - linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` - esac -@@ -1274,6 +1275,23 @@ - dynamic_linker='GNU/Linux ld.so' - ;; - -+linux-uclibc*) -+ version_type=linux -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -+ soname_spec='${libname}${release}.so$major' -+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ # This implies no fast_install, which is unacceptable. -+ # Some rework will be needed to allow for fast_install -+ # before this can be enabled. -+ hardcode_into_libs=yes -+ # Assume using the uClibc dynamic linker. -+ dynamic_linker="uClibc ld.so" -+ ;; -+ - netbsd*) - need_lib_prefix=no - need_version=no ---- gcc-4.0.2/libffi/configure -+++ gcc-4.0.2/libffi/configure -@@ -3457,6 +3457,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' ---- gcc-4.0.2/libgfortran/configure -+++ gcc-4.0.2/libgfortran/configure -@@ -3681,6 +3681,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' ---- gcc-4.0.2/libjava/configure -+++ gcc-4.0.2/libjava/configure -@@ -4351,6 +4351,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' ---- gcc-4.0.2/libmudflap/configure -+++ gcc-4.0.2/libmudflap/configure -@@ -5380,6 +5380,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' ---- gcc-4.0.2/libobjc/configure -+++ gcc-4.0.2/libobjc/configure -@@ -3283,6 +3283,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' ---- gcc-4.0.2/boehm-gc/configure -+++ gcc-4.0.2/boehm-gc/configure -@@ -4320,6 +4320,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' ---- gcc-4.0.2/configure -+++ gcc-4.0.2/configure -@@ -1141,7 +1141,7 @@ - ;; - "") - case "${target}" in -- *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu) -+ *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*) - # Enable libmudflap by default in GNU and friends. - ;; - *-*-freebsd*) ---- gcc-4.0.2/configure.in -+++ gcc-4.0.2/configure.in -@@ -350,7 +350,7 @@ - ;; - "") - case "${target}" in -- *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu) -+ *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*) - # Enable libmudflap by default in GNU and friends. - ;; - *-*-freebsd*) ---- gcc-4.0.2/contrib/regression/objs-gcc.sh -+++ gcc-4.0.2/contrib/regression/objs-gcc.sh -@@ -105,6 +105,10 @@ - then - make all-gdb all-dejagnu all-ld || exit 1 - make install-gdb install-dejagnu install-ld || exit 1 -+elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ] -+ then -+ make all-gdb all-dejagnu all-ld || exit 1 -+ make install-gdb install-dejagnu install-ld || exit 1 - elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then - make bootstrap || exit 1 - make install || exit 1 ---- gcc-4.0.2/zlib/configure -+++ gcc-4.0.2/zlib/configure -@@ -3426,6 +3426,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' diff --git a/src/patches/gcc-uclibc-locale.patch b/src/patches/gcc-uclibc-locale.patch deleted file mode 100644 index ac4cf9720..000000000 --- a/src/patches/gcc-uclibc-locale.patch +++ /dev/null @@ -1,3237 +0,0 @@ -diff -urN gcc-4.0.0-100/libstdc++-v3/acinclude.m4 gcc-4.0.0/libstdc++-v3/acinclude.m4 ---- gcc-4.0.0-100/libstdc++-v3/acinclude.m4 2005-04-30 13:06:53.000000000 -0500 -+++ gcc-4.0.0/libstdc++-v3/acinclude.m4 2005-04-28 20:19:01.000000000 -0500 -@@ -1104,7 +1104,7 @@ - AC_MSG_CHECKING([for C locale to use]) - GLIBCXX_ENABLE(clocale,auto,[@<:@=MODEL@:>@], - [use MODEL for target locale package], -- [permit generic|gnu|ieee_1003.1-2001|yes|no|auto]) -+ [permit generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto]) - - # If they didn't use this option switch, or if they specified --enable - # with no specific model, we'll have to look for one. If they -@@ -1120,6 +1120,9 @@ - # Default to "generic". - if test $enable_clocale_flag = auto; then - case ${target_os} in -+ *-uclibc*) -+ enable_clocale_flag=uclibc -+ ;; - linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu) - AC_EGREP_CPP([_GLIBCXX_ok], [ - #include -@@ -1263,6 +1266,40 @@ - CTIME_CC=config/locale/generic/time_members.cc - CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h - ;; -+ uclibc) -+ AC_MSG_RESULT(uclibc) -+ -+ # Declare intention to use gettext, and add support for specific -+ # languages. -+ # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT -+ ALL_LINGUAS="de fr" -+ -+ # Don't call AM-GNU-GETTEXT here. Instead, assume glibc. -+ AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no) -+ if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then -+ USE_NLS=yes -+ fi -+ # Export the build objects. -+ for ling in $ALL_LINGUAS; do \ -+ glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \ -+ glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \ -+ done -+ AC_SUBST(glibcxx_MOFILES) -+ AC_SUBST(glibcxx_POFILES) -+ -+ CLOCALE_H=config/locale/uclibc/c_locale.h -+ CLOCALE_CC=config/locale/uclibc/c_locale.cc -+ CCODECVT_CC=config/locale/uclibc/codecvt_members.cc -+ CCOLLATE_CC=config/locale/uclibc/collate_members.cc -+ CCTYPE_CC=config/locale/uclibc/ctype_members.cc -+ CMESSAGES_H=config/locale/uclibc/messages_members.h -+ CMESSAGES_CC=config/locale/uclibc/messages_members.cc -+ CMONEY_CC=config/locale/uclibc/monetary_members.cc -+ CNUMERIC_CC=config/locale/uclibc/numeric_members.cc -+ CTIME_H=config/locale/uclibc/time_members.h -+ CTIME_CC=config/locale/uclibc/time_members.cc -+ CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h -+ ;; - esac - - # This is where the testsuite looks for locale catalogs, using the -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c++locale_internal.h gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c++locale_internal.h ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,59 @@ -+// Prototypes for GLIBC thread locale __-prefixed functions -*- C++ -*- -+ -+// Copyright (C) 2002, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// Written by Jakub Jelinek -+ -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning clean this up -+#endif -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ -+extern "C" __typeof(iswctype_l) __iswctype_l; -+extern "C" __typeof(nl_langinfo_l) __nl_langinfo_l; -+extern "C" __typeof(strcoll_l) __strcoll_l; -+extern "C" __typeof(strftime_l) __strftime_l; -+extern "C" __typeof(strtod_l) __strtod_l; -+extern "C" __typeof(strtof_l) __strtof_l; -+extern "C" __typeof(strtold_l) __strtold_l; -+extern "C" __typeof(strxfrm_l) __strxfrm_l; -+extern "C" __typeof(towlower_l) __towlower_l; -+extern "C" __typeof(towupper_l) __towupper_l; -+extern "C" __typeof(wcscoll_l) __wcscoll_l; -+extern "C" __typeof(wcsftime_l) __wcsftime_l; -+extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l; -+extern "C" __typeof(wctype_l) __wctype_l; -+extern "C" __typeof(newlocale) __newlocale; -+extern "C" __typeof(freelocale) __freelocale; -+extern "C" __typeof(duplocale) __duplocale; -+extern "C" __typeof(uselocale) __uselocale; -+ -+#endif // GLIBC 2.3 and later -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c_locale.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c_locale.cc ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c_locale.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c_locale.cc 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,160 @@ -+// Wrapper for underlying C-language localization -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.8 Standard locale categories. -+// -+ -+// Written by Benjamin Kosnik -+ -+#include // For errno -+#include -+#include -+#include -+#include -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __strtol_l(S, E, B, L) strtol((S), (E), (B)) -+#define __strtoul_l(S, E, B, L) strtoul((S), (E), (B)) -+#define __strtoll_l(S, E, B, L) strtoll((S), (E), (B)) -+#define __strtoull_l(S, E, B, L) strtoull((S), (E), (B)) -+#define __strtof_l(S, E, L) strtof((S), (E)) -+#define __strtod_l(S, E, L) strtod((S), (E)) -+#define __strtold_l(S, E, L) strtold((S), (E)) -+#warning should dummy __newlocale check for C|POSIX ? -+#define __newlocale(a, b, c) NULL -+#define __freelocale(a) ((void)0) -+#define __duplocale(a) __c_locale() -+#endif -+ -+namespace std -+{ -+ template<> -+ void -+ __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ float __f = __strtof_l(__s, &__sanity, __cloc); -+ if (__sanity != __s && errno != ERANGE) -+ __v = __f; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+ template<> -+ void -+ __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ double __d = __strtod_l(__s, &__sanity, __cloc); -+ if (__sanity != __s && errno != ERANGE) -+ __v = __d; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+ template<> -+ void -+ __convert_to_v(const char* __s, long double& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ long double __ld = __strtold_l(__s, &__sanity, __cloc); -+ if (__sanity != __s && errno != ERANGE) -+ __v = __ld; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+ void -+ locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s, -+ __c_locale __old) -+ { -+ __cloc = __newlocale(1 << LC_ALL, __s, __old); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ if (!__cloc) -+ { -+ // This named locale is not supported by the underlying OS. -+ __throw_runtime_error(__N("locale::facet::_S_create_c_locale " -+ "name not valid")); -+ } -+#endif -+ } -+ -+ void -+ locale::facet::_S_destroy_c_locale(__c_locale& __cloc) -+ { -+ if (_S_get_c_locale() != __cloc) -+ __freelocale(__cloc); -+ } -+ -+ __c_locale -+ locale::facet::_S_clone_c_locale(__c_locale& __cloc) -+ { return __duplocale(__cloc); } -+} // namespace std -+ -+namespace __gnu_cxx -+{ -+ const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] = -+ { -+ "LC_CTYPE", -+ "LC_NUMERIC", -+ "LC_TIME", -+ "LC_COLLATE", -+ "LC_MONETARY", -+ "LC_MESSAGES", -+#if _GLIBCXX_NUM_CATEGORIES != 0 -+ "LC_PAPER", -+ "LC_NAME", -+ "LC_ADDRESS", -+ "LC_TELEPHONE", -+ "LC_MEASUREMENT", -+ "LC_IDENTIFICATION" -+#endif -+ }; -+} -+ -+namespace std -+{ -+ const char* const* const locale::_S_categories = __gnu_cxx::category_names; -+} // namespace std -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c_locale.h gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c_locale.h ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c_locale.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c_locale.h 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,115 @@ -+// Wrapper for underlying C-language localization -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.8 Standard locale categories. -+// -+ -+// Written by Benjamin Kosnik -+ -+#ifndef _C_LOCALE_H -+#define _C_LOCALE_H 1 -+ -+#pragma GCC system_header -+ -+#include // get std::strlen -+#include // get std::snprintf or std::sprintf -+#include -+#include // For codecvt -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this -+#endif -+#ifdef __UCLIBC_HAS_LOCALE__ -+#include // For codecvt using iconv, iconv_t -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+#include // For messages -+#endif -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning what is _GLIBCXX_C_LOCALE_GNU for -+#endif -+#define _GLIBCXX_C_LOCALE_GNU 1 -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix categories -+#endif -+// #define _GLIBCXX_NUM_CATEGORIES 6 -+#define _GLIBCXX_NUM_CATEGORIES 0 -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+namespace __gnu_cxx -+{ -+ extern "C" __typeof(uselocale) __uselocale; -+} -+#endif -+ -+namespace std -+{ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ typedef __locale_t __c_locale; -+#else -+ typedef int* __c_locale; -+#endif -+ -+ // Convert numeric value of type _Tv to string and return length of -+ // string. If snprintf is available use it, otherwise fall back to -+ // the unsafe sprintf which, in general, can be dangerous and should -+ // be avoided. -+ template -+ int -+ __convert_from_v(char* __out, const int __size, const char* __fmt, -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ _Tv __v, const __c_locale& __cloc, int __prec) -+ { -+ __c_locale __old = __gnu_cxx::__uselocale(__cloc); -+#else -+ _Tv __v, const __c_locale&, int __prec) -+ { -+# ifdef __UCLIBC_HAS_LOCALE__ -+ char* __old = std::setlocale(LC_ALL, NULL); -+ char* __sav = new char[std::strlen(__old) + 1]; -+ std::strcpy(__sav, __old); -+ std::setlocale(LC_ALL, "C"); -+# endif -+#endif -+ -+ const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __gnu_cxx::__uselocale(__old); -+#elif defined __UCLIBC_HAS_LOCALE__ -+ std::setlocale(LC_ALL, __sav); -+ delete [] __sav; -+#endif -+ return __ret; -+ } -+} -+ -+#endif -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/codecvt_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/codecvt_members.cc ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/codecvt_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/codecvt_members.cc 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,306 @@ -+// std::codecvt implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.1.5 - Template class codecvt -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+namespace std -+{ -+ // Specializations. -+#ifdef _GLIBCXX_USE_WCHAR_T -+ codecvt_base::result -+ codecvt:: -+ do_out(state_type& __state, const intern_type* __from, -+ const intern_type* __from_end, const intern_type*& __from_next, -+ extern_type* __to, extern_type* __to_end, -+ extern_type*& __to_next) const -+ { -+ result __ret = ok; -+ state_type __tmp_state(__state); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ -+ // wcsnrtombs is *very* fast but stops if encounters NUL characters: -+ // in case we fall back to wcrtomb and then continue, in a loop. -+ // NB: wcsnrtombs is a GNU extension -+ for (__from_next = __from, __to_next = __to; -+ __from_next < __from_end && __to_next < __to_end -+ && __ret == ok;) -+ { -+ const intern_type* __from_chunk_end = wmemchr(__from_next, L'\0', -+ __from_end - __from_next); -+ if (!__from_chunk_end) -+ __from_chunk_end = __from_end; -+ -+ __from = __from_next; -+ const size_t __conv = wcsnrtombs(__to_next, &__from_next, -+ __from_chunk_end - __from_next, -+ __to_end - __to_next, &__state); -+ if (__conv == static_cast(-1)) -+ { -+ // In case of error, in order to stop at the exact place we -+ // have to start again from the beginning with a series of -+ // wcrtomb. -+ for (; __from < __from_next; ++__from) -+ __to_next += wcrtomb(__to_next, *__from, &__tmp_state); -+ __state = __tmp_state; -+ __ret = error; -+ } -+ else if (__from_next && __from_next < __from_chunk_end) -+ { -+ __to_next += __conv; -+ __ret = partial; -+ } -+ else -+ { -+ __from_next = __from_chunk_end; -+ __to_next += __conv; -+ } -+ -+ if (__from_next < __from_end && __ret == ok) -+ { -+ extern_type __buf[MB_LEN_MAX]; -+ __tmp_state = __state; -+ const size_t __conv = wcrtomb(__buf, *__from_next, &__tmp_state); -+ if (__conv > static_cast(__to_end - __to_next)) -+ __ret = partial; -+ else -+ { -+ memcpy(__to_next, __buf, __conv); -+ __state = __tmp_state; -+ __to_next += __conv; -+ ++__from_next; -+ } -+ } -+ } -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ -+ return __ret; -+ } -+ -+ codecvt_base::result -+ codecvt:: -+ do_in(state_type& __state, const extern_type* __from, -+ const extern_type* __from_end, const extern_type*& __from_next, -+ intern_type* __to, intern_type* __to_end, -+ intern_type*& __to_next) const -+ { -+ result __ret = ok; -+ state_type __tmp_state(__state); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ -+ // mbsnrtowcs is *very* fast but stops if encounters NUL characters: -+ // in case we store a L'\0' and then continue, in a loop. -+ // NB: mbsnrtowcs is a GNU extension -+ for (__from_next = __from, __to_next = __to; -+ __from_next < __from_end && __to_next < __to_end -+ && __ret == ok;) -+ { -+ const extern_type* __from_chunk_end; -+ __from_chunk_end = static_cast(memchr(__from_next, '\0', -+ __from_end -+ - __from_next)); -+ if (!__from_chunk_end) -+ __from_chunk_end = __from_end; -+ -+ __from = __from_next; -+ size_t __conv = mbsnrtowcs(__to_next, &__from_next, -+ __from_chunk_end - __from_next, -+ __to_end - __to_next, &__state); -+ if (__conv == static_cast(-1)) -+ { -+ // In case of error, in order to stop at the exact place we -+ // have to start again from the beginning with a series of -+ // mbrtowc. -+ for (;; ++__to_next, __from += __conv) -+ { -+ __conv = mbrtowc(__to_next, __from, __from_end - __from, -+ &__tmp_state); -+ if (__conv == static_cast(-1) -+ || __conv == static_cast(-2)) -+ break; -+ } -+ __from_next = __from; -+ __state = __tmp_state; -+ __ret = error; -+ } -+ else if (__from_next && __from_next < __from_chunk_end) -+ { -+ // It is unclear what to return in this case (see DR 382). -+ __to_next += __conv; -+ __ret = partial; -+ } -+ else -+ { -+ __from_next = __from_chunk_end; -+ __to_next += __conv; -+ } -+ -+ if (__from_next < __from_end && __ret == ok) -+ { -+ if (__to_next < __to_end) -+ { -+ // XXX Probably wrong for stateful encodings -+ __tmp_state = __state; -+ ++__from_next; -+ *__to_next++ = L'\0'; -+ } -+ else -+ __ret = partial; -+ } -+ } -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ -+ return __ret; -+ } -+ -+ int -+ codecvt:: -+ do_encoding() const throw() -+ { -+ // XXX This implementation assumes that the encoding is -+ // stateless and is either single-byte or variable-width. -+ int __ret = 0; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ if (MB_CUR_MAX == 1) -+ __ret = 1; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return __ret; -+ } -+ -+ int -+ codecvt:: -+ do_max_length() const throw() -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ // XXX Probably wrong for stateful encodings. -+ int __ret = MB_CUR_MAX; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return __ret; -+ } -+ -+ int -+ codecvt:: -+ do_length(state_type& __state, const extern_type* __from, -+ const extern_type* __end, size_t __max) const -+ { -+ int __ret = 0; -+ state_type __tmp_state(__state); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ -+ // mbsnrtowcs is *very* fast but stops if encounters NUL characters: -+ // in case we advance past it and then continue, in a loop. -+ // NB: mbsnrtowcs is a GNU extension -+ -+ // A dummy internal buffer is needed in order for mbsnrtocws to consider -+ // its fourth parameter (it wouldn't with NULL as first parameter). -+ wchar_t* __to = static_cast(__builtin_alloca(sizeof(wchar_t) -+ * __max)); -+ while (__from < __end && __max) -+ { -+ const extern_type* __from_chunk_end; -+ __from_chunk_end = static_cast(memchr(__from, '\0', -+ __end -+ - __from)); -+ if (!__from_chunk_end) -+ __from_chunk_end = __end; -+ -+ const extern_type* __tmp_from = __from; -+ size_t __conv = mbsnrtowcs(__to, &__from, -+ __from_chunk_end - __from, -+ __max, &__state); -+ if (__conv == static_cast(-1)) -+ { -+ // In case of error, in order to stop at the exact place we -+ // have to start again from the beginning with a series of -+ // mbrtowc. -+ for (__from = __tmp_from;; __from += __conv) -+ { -+ __conv = mbrtowc(NULL, __from, __end - __from, -+ &__tmp_state); -+ if (__conv == static_cast(-1) -+ || __conv == static_cast(-2)) -+ break; -+ } -+ __state = __tmp_state; -+ __ret += __from - __tmp_from; -+ break; -+ } -+ if (!__from) -+ __from = __from_chunk_end; -+ -+ __ret += __from - __tmp_from; -+ __max -= __conv; -+ -+ if (__from < __end && __max) -+ { -+ // XXX Probably wrong for stateful encodings -+ __tmp_state = __state; -+ ++__from; -+ ++__ret; -+ --__max; -+ } -+ } -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ -+ return __ret; -+ } -+#endif -+} -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/collate_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/collate_members.cc ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/collate_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/collate_members.cc 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,80 @@ -+// std::collate implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.4.1.2 collate virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __strcoll_l(S1, S2, L) strcoll((S1), (S2)) -+#define __strxfrm_l(S1, S2, N, L) strxfrm((S1), (S2), (N)) -+#define __wcscoll_l(S1, S2, L) wcscoll((S1), (S2)) -+#define __wcsxfrm_l(S1, S2, N, L) wcsxfrm((S1), (S2), (N)) -+#endif -+ -+namespace std -+{ -+ // These are basically extensions to char_traits, and perhaps should -+ // be put there instead of here. -+ template<> -+ int -+ collate::_M_compare(const char* __one, const char* __two) const -+ { -+ int __cmp = __strcoll_l(__one, __two, _M_c_locale_collate); -+ return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); -+ } -+ -+ template<> -+ size_t -+ collate::_M_transform(char* __to, const char* __from, -+ size_t __n) const -+ { return __strxfrm_l(__to, __from, __n, _M_c_locale_collate); } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ int -+ collate::_M_compare(const wchar_t* __one, -+ const wchar_t* __two) const -+ { -+ int __cmp = __wcscoll_l(__one, __two, _M_c_locale_collate); -+ return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); -+ } -+ -+ template<> -+ size_t -+ collate::_M_transform(wchar_t* __to, const wchar_t* __from, -+ size_t __n) const -+ { return __wcsxfrm_l(__to, __from, __n, _M_c_locale_collate); } -+#endif -+} -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/ctype_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/ctype_members.cc ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/ctype_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/ctype_members.cc 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,300 @@ -+// std::ctype implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.1.1.2 ctype virtual functions. -+// -+ -+// Written by Benjamin Kosnik -+ -+#define _LIBC -+#include -+#undef _LIBC -+#include -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __wctype_l(S, L) wctype((S)) -+#define __towupper_l(C, L) towupper((C)) -+#define __towlower_l(C, L) towlower((C)) -+#define __iswctype_l(C, M, L) iswctype((C), (M)) -+#endif -+ -+namespace std -+{ -+ // NB: The other ctype specializations are in src/locale.cc and -+ // various /config/os/* files. -+ template<> -+ ctype_byname::ctype_byname(const char* __s, size_t __refs) -+ : ctype(0, false, __refs) -+ { -+ if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) -+ { -+ this->_S_destroy_c_locale(this->_M_c_locale_ctype); -+ this->_S_create_c_locale(this->_M_c_locale_ctype, __s); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ this->_M_toupper = this->_M_c_locale_ctype->__ctype_toupper; -+ this->_M_tolower = this->_M_c_locale_ctype->__ctype_tolower; -+ this->_M_table = this->_M_c_locale_ctype->__ctype_b; -+#endif -+ } -+ } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ ctype::__wmask_type -+ ctype::_M_convert_to_wmask(const mask __m) const -+ { -+ __wmask_type __ret; -+ switch (__m) -+ { -+ case space: -+ __ret = __wctype_l("space", _M_c_locale_ctype); -+ break; -+ case print: -+ __ret = __wctype_l("print", _M_c_locale_ctype); -+ break; -+ case cntrl: -+ __ret = __wctype_l("cntrl", _M_c_locale_ctype); -+ break; -+ case upper: -+ __ret = __wctype_l("upper", _M_c_locale_ctype); -+ break; -+ case lower: -+ __ret = __wctype_l("lower", _M_c_locale_ctype); -+ break; -+ case alpha: -+ __ret = __wctype_l("alpha", _M_c_locale_ctype); -+ break; -+ case digit: -+ __ret = __wctype_l("digit", _M_c_locale_ctype); -+ break; -+ case punct: -+ __ret = __wctype_l("punct", _M_c_locale_ctype); -+ break; -+ case xdigit: -+ __ret = __wctype_l("xdigit", _M_c_locale_ctype); -+ break; -+ case alnum: -+ __ret = __wctype_l("alnum", _M_c_locale_ctype); -+ break; -+ case graph: -+ __ret = __wctype_l("graph", _M_c_locale_ctype); -+ break; -+ default: -+ __ret = __wmask_type(); -+ } -+ return __ret; -+ } -+ -+ wchar_t -+ ctype::do_toupper(wchar_t __c) const -+ { return __towupper_l(__c, _M_c_locale_ctype); } -+ -+ const wchar_t* -+ ctype::do_toupper(wchar_t* __lo, const wchar_t* __hi) const -+ { -+ while (__lo < __hi) -+ { -+ *__lo = __towupper_l(*__lo, _M_c_locale_ctype); -+ ++__lo; -+ } -+ return __hi; -+ } -+ -+ wchar_t -+ ctype::do_tolower(wchar_t __c) const -+ { return __towlower_l(__c, _M_c_locale_ctype); } -+ -+ const wchar_t* -+ ctype::do_tolower(wchar_t* __lo, const wchar_t* __hi) const -+ { -+ while (__lo < __hi) -+ { -+ *__lo = __towlower_l(*__lo, _M_c_locale_ctype); -+ ++__lo; -+ } -+ return __hi; -+ } -+ -+ bool -+ ctype:: -+ do_is(mask __m, wchar_t __c) const -+ { -+ // Highest bitmask in ctype_base == 10, but extra in "C" -+ // library for blank. -+ bool __ret = false; -+ const size_t __bitmasksize = 11; -+ for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) -+ if (__m & _M_bit[__bitcur] -+ && __iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype)) -+ { -+ __ret = true; -+ break; -+ } -+ return __ret; -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const -+ { -+ for (; __lo < __hi; ++__vec, ++__lo) -+ { -+ // Highest bitmask in ctype_base == 10, but extra in "C" -+ // library for blank. -+ const size_t __bitmasksize = 11; -+ mask __m = 0; -+ for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) -+ if (__iswctype_l(*__lo, _M_wmask[__bitcur], _M_c_locale_ctype)) -+ __m |= _M_bit[__bitcur]; -+ *__vec = __m; -+ } -+ return __hi; -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const -+ { -+ while (__lo < __hi && !this->do_is(__m, *__lo)) -+ ++__lo; -+ return __lo; -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const -+ { -+ while (__lo < __hi && this->do_is(__m, *__lo) != 0) -+ ++__lo; -+ return __lo; -+ } -+ -+ wchar_t -+ ctype:: -+ do_widen(char __c) const -+ { return _M_widen[static_cast(__c)]; } -+ -+ const char* -+ ctype:: -+ do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const -+ { -+ while (__lo < __hi) -+ { -+ *__dest = _M_widen[static_cast(*__lo)]; -+ ++__lo; -+ ++__dest; -+ } -+ return __hi; -+ } -+ -+ char -+ ctype:: -+ do_narrow(wchar_t __wc, char __dfault) const -+ { -+ if (__wc >= 0 && __wc < 128 && _M_narrow_ok) -+ return _M_narrow[__wc]; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ const int __c = wctob(__wc); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return (__c == EOF ? __dfault : static_cast(__c)); -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_narrow(const wchar_t* __lo, const wchar_t* __hi, char __dfault, -+ char* __dest) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ if (_M_narrow_ok) -+ while (__lo < __hi) -+ { -+ if (*__lo >= 0 && *__lo < 128) -+ *__dest = _M_narrow[*__lo]; -+ else -+ { -+ const int __c = wctob(*__lo); -+ *__dest = (__c == EOF ? __dfault : static_cast(__c)); -+ } -+ ++__lo; -+ ++__dest; -+ } -+ else -+ while (__lo < __hi) -+ { -+ const int __c = wctob(*__lo); -+ *__dest = (__c == EOF ? __dfault : static_cast(__c)); -+ ++__lo; -+ ++__dest; -+ } -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return __hi; -+ } -+ -+ void -+ ctype::_M_initialize_ctype() -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ wint_t __i; -+ for (__i = 0; __i < 128; ++__i) -+ { -+ const int __c = wctob(__i); -+ if (__c == EOF) -+ break; -+ else -+ _M_narrow[__i] = static_cast(__c); -+ } -+ if (__i == 128) -+ _M_narrow_ok = true; -+ else -+ _M_narrow_ok = false; -+ for (size_t __j = 0; -+ __j < sizeof(_M_widen) / sizeof(wint_t); ++__j) -+ _M_widen[__j] = btowc(__j); -+ -+ for (size_t __k = 0; __k <= 11; ++__k) -+ { -+ _M_bit[__k] = static_cast(_ISbit(__k)); -+ _M_wmask[__k] = _M_convert_to_wmask(_M_bit[__k]); -+ } -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ } -+#endif // _GLIBCXX_USE_WCHAR_T -+} -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/messages_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/messages_members.cc ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/messages_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/messages_members.cc 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,100 @@ -+// std::messages implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.7.1.2 messages virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix gettext stuff -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+extern "C" char *__dcgettext(const char *domainname, -+ const char *msgid, int category); -+#undef gettext -+#define gettext(msgid) __dcgettext(NULL, msgid, LC_MESSAGES) -+#else -+#undef gettext -+#define gettext(msgid) (msgid) -+#endif -+ -+namespace std -+{ -+ // Specializations. -+ template<> -+ string -+ messages::do_get(catalog, int, int, const string& __dfault) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_messages); -+ const char* __msg = const_cast(gettext(__dfault.c_str())); -+ __uselocale(__old); -+ return string(__msg); -+#elif defined __UCLIBC_HAS_LOCALE__ -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_messages); -+ const char* __msg = gettext(__dfault.c_str()); -+ setlocale(LC_ALL, __old); -+ free(__old); -+ return string(__msg); -+#else -+ const char* __msg = gettext(__dfault.c_str()); -+ return string(__msg); -+#endif -+ } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ wstring -+ messages::do_get(catalog, int, int, const wstring& __dfault) const -+ { -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_messages); -+ char* __msg = gettext(_M_convert_to_char(__dfault)); -+ __uselocale(__old); -+ return _M_convert_from_char(__msg); -+# elif defined __UCLIBC_HAS_LOCALE__ -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_messages); -+ char* __msg = gettext(_M_convert_to_char(__dfault)); -+ setlocale(LC_ALL, __old); -+ free(__old); -+ return _M_convert_from_char(__msg); -+# else -+ char* __msg = gettext(_M_convert_to_char(__dfault)); -+ return _M_convert_from_char(__msg); -+# endif -+ } -+#endif -+} -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/messages_members.h gcc-4.0.0/libstdc++-v3/config/locale/uclibc/messages_members.h ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/messages_members.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/messages_members.h 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,118 @@ -+// std::messages implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.7.1.2 messages functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix prototypes for *textdomain funcs -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+extern "C" char *__textdomain(const char *domainname); -+extern "C" char *__bindtextdomain(const char *domainname, -+ const char *dirname); -+#else -+#undef __textdomain -+#undef __bindtextdomain -+#define __textdomain(D) ((void)0) -+#define __bindtextdomain(D,P) ((void)0) -+#endif -+ -+ // Non-virtual member functions. -+ template -+ messages<_CharT>::messages(size_t __refs) -+ : facet(__refs), _M_c_locale_messages(_S_get_c_locale()), -+ _M_name_messages(_S_get_c_name()) -+ { } -+ -+ template -+ messages<_CharT>::messages(__c_locale __cloc, const char* __s, -+ size_t __refs) -+ : facet(__refs), _M_c_locale_messages(_S_clone_c_locale(__cloc)), -+ _M_name_messages(__s) -+ { -+ char* __tmp = new char[std::strlen(__s) + 1]; -+ std::strcpy(__tmp, __s); -+ _M_name_messages = __tmp; -+ } -+ -+ template -+ typename messages<_CharT>::catalog -+ messages<_CharT>::open(const basic_string& __s, const locale& __loc, -+ const char* __dir) const -+ { -+ __bindtextdomain(__s.c_str(), __dir); -+ return this->do_open(__s, __loc); -+ } -+ -+ // Virtual member functions. -+ template -+ messages<_CharT>::~messages() -+ { -+ if (_M_name_messages != _S_get_c_name()) -+ delete [] _M_name_messages; -+ _S_destroy_c_locale(_M_c_locale_messages); -+ } -+ -+ template -+ typename messages<_CharT>::catalog -+ messages<_CharT>::do_open(const basic_string& __s, -+ const locale&) const -+ { -+ // No error checking is done, assume the catalog exists and can -+ // be used. -+ __textdomain(__s.c_str()); -+ return 0; -+ } -+ -+ template -+ void -+ messages<_CharT>::do_close(catalog) const -+ { } -+ -+ // messages_byname -+ template -+ messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) -+ : messages<_CharT>(__refs) -+ { -+ if (this->_M_name_messages != locale::facet::_S_get_c_name()) -+ delete [] this->_M_name_messages; -+ char* __tmp = new char[std::strlen(__s) + 1]; -+ std::strcpy(__tmp, __s); -+ this->_M_name_messages = __tmp; -+ -+ if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) -+ { -+ this->_S_destroy_c_locale(this->_M_c_locale_messages); -+ this->_S_create_c_locale(this->_M_c_locale_messages, __s); -+ } -+ } -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/monetary_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/monetary_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2005-04-28 01:23:02.000000000 -0500 -@@ -0,0 +1,692 @@ -+// std::moneypunct implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.6.3.2 moneypunct virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#define _LIBC -+#include -+#undef _LIBC -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning optimize this for uclibc -+#warning tailor for stub locale support -+#endif -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __nl_langinfo_l(N, L) nl_langinfo((N)) -+#endif -+ -+namespace std -+{ -+ // Construct and return valid pattern consisting of some combination of: -+ // space none symbol sign value -+ money_base::pattern -+ money_base::_S_construct_pattern(char __precedes, char __space, char __posn) -+ { -+ pattern __ret; -+ -+ // This insanely complicated routine attempts to construct a valid -+ // pattern for use with monyepunct. A couple of invariants: -+ -+ // if (__precedes) symbol -> value -+ // else value -> symbol -+ -+ // if (__space) space -+ // else none -+ -+ // none == never first -+ // space never first or last -+ -+ // Any elegant implementations of this are welcome. -+ switch (__posn) -+ { -+ case 0: -+ case 1: -+ // 1 The sign precedes the value and symbol. -+ __ret.field[0] = sign; -+ if (__space) -+ { -+ // Pattern starts with sign. -+ if (__precedes) -+ { -+ __ret.field[1] = symbol; -+ __ret.field[3] = value; -+ } -+ else -+ { -+ __ret.field[1] = value; -+ __ret.field[3] = symbol; -+ } -+ __ret.field[2] = space; -+ } -+ else -+ { -+ // Pattern starts with sign and ends with none. -+ if (__precedes) -+ { -+ __ret.field[1] = symbol; -+ __ret.field[2] = value; -+ } -+ else -+ { -+ __ret.field[1] = value; -+ __ret.field[2] = symbol; -+ } -+ __ret.field[3] = none; -+ } -+ break; -+ case 2: -+ // 2 The sign follows the value and symbol. -+ if (__space) -+ { -+ // Pattern either ends with sign. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[2] = value; -+ } -+ else -+ { -+ __ret.field[0] = value; -+ __ret.field[2] = symbol; -+ } -+ __ret.field[1] = space; -+ __ret.field[3] = sign; -+ } -+ else -+ { -+ // Pattern ends with sign then none. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[1] = value; -+ } -+ else -+ { -+ __ret.field[0] = value; -+ __ret.field[1] = symbol; -+ } -+ __ret.field[2] = sign; -+ __ret.field[3] = none; -+ } -+ break; -+ case 3: -+ // 3 The sign immediately precedes the symbol. -+ if (__precedes) -+ { -+ __ret.field[0] = sign; -+ __ret.field[1] = symbol; -+ if (__space) -+ { -+ __ret.field[2] = space; -+ __ret.field[3] = value; -+ } -+ else -+ { -+ __ret.field[2] = value; -+ __ret.field[3] = none; -+ } -+ } -+ else -+ { -+ __ret.field[0] = value; -+ if (__space) -+ { -+ __ret.field[1] = space; -+ __ret.field[2] = sign; -+ __ret.field[3] = symbol; -+ } -+ else -+ { -+ __ret.field[1] = sign; -+ __ret.field[2] = symbol; -+ __ret.field[3] = none; -+ } -+ } -+ break; -+ case 4: -+ // 4 The sign immediately follows the symbol. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[1] = sign; -+ if (__space) -+ { -+ __ret.field[2] = space; -+ __ret.field[3] = value; -+ } -+ else -+ { -+ __ret.field[2] = value; -+ __ret.field[3] = none; -+ } -+ } -+ else -+ { -+ __ret.field[0] = value; -+ if (__space) -+ { -+ __ret.field[1] = space; -+ __ret.field[2] = symbol; -+ __ret.field[3] = sign; -+ } -+ else -+ { -+ __ret.field[1] = symbol; -+ __ret.field[2] = sign; -+ __ret.field[3] = none; -+ } -+ } -+ break; -+ default: -+ __ret = pattern(); -+ } -+ return __ret; -+ } -+ -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+ const char*) -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = '.'; -+ _M_data->_M_thousands_sep = ','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = ""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = ""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = ""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ _M_data->_M_atoms[__i] = money_base::_S_atoms[__i]; -+ } -+ else -+ { -+ // Named locale. -+ _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, -+ __cloc)); -+ _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, -+ __cloc)); -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign); -+ -+ char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc)); -+ if (!__nposn) -+ _M_data->_M_negative_sign = "()"; -+ else -+ _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, -+ __cloc); -+ _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign); -+ -+ // _Intl == true -+ _M_data->_M_curr_symbol = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc); -+ _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol); -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, -+ __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ } -+ } -+ -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+ const char*) -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = '.'; -+ _M_data->_M_thousands_sep = ','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = ""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = ""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = ""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ _M_data->_M_atoms[__i] = money_base::_S_atoms[__i]; -+ } -+ else -+ { -+ // Named locale. -+ _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, -+ __cloc)); -+ _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, -+ __cloc)); -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign); -+ -+ char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc)); -+ if (!__nposn) -+ _M_data->_M_negative_sign = "()"; -+ else -+ _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, -+ __cloc); -+ _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign); -+ -+ // _Intl == false -+ _M_data->_M_curr_symbol = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc); -+ _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol); -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ } -+ } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { delete _M_data; } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { delete _M_data; } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ const char*) -+#else -+ const char* __name) -+#endif -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = L'.'; -+ _M_data->_M_thousands_sep = L','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ // Use ctype::widen code without the facet... -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ _M_data->_M_atoms[__i] = -+ static_cast(money_base::_S_atoms[__i]); -+ } -+ else -+ { -+ // Named locale. -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(__cloc); -+#else -+ // Switch to named locale so that mbsrtowcs will work. -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, __name); -+#endif -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this... should be monetary -+#endif -+#ifdef __UCLIBC__ -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ _M_data->_M_decimal_point = __cloc->decimal_point_wc; -+ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; -+# else -+ _M_data->_M_decimal_point = __global_locale->decimal_point_wc; -+ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; -+# endif -+#else -+ union { char *__s; wchar_t __w; } __u; -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc); -+ _M_data->_M_decimal_point = __u.__w; -+ -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc); -+ _M_data->_M_thousands_sep = __u.__w; -+#endif -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ -+ const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc); -+ const char* __ccurr = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc); -+ -+ wchar_t* __wcs_ps = 0; -+ wchar_t* __wcs_ns = 0; -+ const char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc)); -+ try -+ { -+ mbstate_t __state; -+ size_t __len = strlen(__cpossign); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ps = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state); -+ _M_data->_M_positive_sign = __wcs_ps; -+ } -+ else -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign); -+ -+ __len = strlen(__cnegsign); -+ if (!__nposn) -+ _M_data->_M_negative_sign = L"()"; -+ else if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ns = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state); -+ _M_data->_M_negative_sign = __wcs_ns; -+ } -+ else -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign); -+ -+ // _Intl == true. -+ __len = strlen(__ccurr); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ wchar_t* __wcs = new wchar_t[__len]; -+ mbsrtowcs(__wcs, &__ccurr, __len, &__state); -+ _M_data->_M_curr_symbol = __wcs; -+ } -+ else -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol); -+ } -+ catch (...) -+ { -+ delete _M_data; -+ _M_data = 0; -+ delete __wcs_ps; -+ delete __wcs_ns; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ __throw_exception_again; -+ } -+ -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, -+ __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ } -+ } -+ -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ const char*) -+#else -+ const char* __name) -+#endif -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = L'.'; -+ _M_data->_M_thousands_sep = L','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ // Use ctype::widen code without the facet... -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ _M_data->_M_atoms[__i] = -+ static_cast(money_base::_S_atoms[__i]); -+ } -+ else -+ { -+ // Named locale. -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(__cloc); -+#else -+ // Switch to named locale so that mbsrtowcs will work. -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, __name); -+#endif -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this... should be monetary -+#endif -+#ifdef __UCLIBC__ -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ _M_data->_M_decimal_point = __cloc->decimal_point_wc; -+ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; -+# else -+ _M_data->_M_decimal_point = __global_locale->decimal_point_wc; -+ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; -+# endif -+#else -+ union { char *__s; wchar_t __w; } __u; -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc); -+ _M_data->_M_decimal_point = __u.__w; -+ -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc); -+ _M_data->_M_thousands_sep = __u.__w; -+#endif -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ -+ const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc); -+ const char* __ccurr = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc); -+ -+ wchar_t* __wcs_ps = 0; -+ wchar_t* __wcs_ns = 0; -+ const char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc)); -+ try -+ { -+ mbstate_t __state; -+ size_t __len; -+ __len = strlen(__cpossign); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ps = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state); -+ _M_data->_M_positive_sign = __wcs_ps; -+ } -+ else -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign); -+ -+ __len = strlen(__cnegsign); -+ if (!__nposn) -+ _M_data->_M_negative_sign = L"()"; -+ else if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ns = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state); -+ _M_data->_M_negative_sign = __wcs_ns; -+ } -+ else -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign); -+ -+ // _Intl == true. -+ __len = strlen(__ccurr); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ wchar_t* __wcs = new wchar_t[__len]; -+ mbsrtowcs(__wcs, &__ccurr, __len, &__state); -+ _M_data->_M_curr_symbol = __wcs; -+ } -+ else -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol); -+ } -+ catch (...) -+ { -+ delete _M_data; -+ _M_data = 0; -+ delete __wcs_ps; -+ delete __wcs_ns; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ __throw_exception_again; -+ } -+ -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ } -+ } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { -+ if (_M_data->_M_positive_sign_size) -+ delete [] _M_data->_M_positive_sign; -+ if (_M_data->_M_negative_sign_size -+ && wcscmp(_M_data->_M_negative_sign, L"()") != 0) -+ delete [] _M_data->_M_negative_sign; -+ if (_M_data->_M_curr_symbol_size) -+ delete [] _M_data->_M_curr_symbol; -+ delete _M_data; -+ } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { -+ if (_M_data->_M_positive_sign_size) -+ delete [] _M_data->_M_positive_sign; -+ if (_M_data->_M_negative_sign_size -+ && wcscmp(_M_data->_M_negative_sign, L"()") != 0) -+ delete [] _M_data->_M_negative_sign; -+ if (_M_data->_M_curr_symbol_size) -+ delete [] _M_data->_M_curr_symbol; -+ delete _M_data; -+ } -+#endif -+} -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/numeric_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/numeric_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2005-04-28 01:20:20.000000000 -0500 -@@ -0,0 +1,173 @@ -+// std::numpunct implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.3.1.2 numpunct virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#define _LIBC -+#include -+#undef _LIBC -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning tailor for stub locale support -+#endif -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __nl_langinfo_l(N, L) nl_langinfo((N)) -+#endif -+ -+namespace std -+{ -+ template<> -+ void -+ numpunct::_M_initialize_numpunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __numpunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_use_grouping = false; -+ -+ _M_data->_M_decimal_point = '.'; -+ _M_data->_M_thousands_sep = ','; -+ -+ for (size_t __i = 0; __i < __num_base::_S_oend; ++__i) -+ _M_data->_M_atoms_out[__i] = __num_base::_S_atoms_out[__i]; -+ -+ for (size_t __j = 0; __j < __num_base::_S_iend; ++__j) -+ _M_data->_M_atoms_in[__j] = __num_base::_S_atoms_in[__j]; -+ } -+ else -+ { -+ // Named locale. -+ _M_data->_M_decimal_point = *(__nl_langinfo_l(DECIMAL_POINT, -+ __cloc)); -+ _M_data->_M_thousands_sep = *(__nl_langinfo_l(THOUSANDS_SEP, -+ __cloc)); -+ -+ // Check for NULL, which implies no grouping. -+ if (_M_data->_M_thousands_sep == '\0') -+ _M_data->_M_grouping = ""; -+ else -+ _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ } -+ -+ // NB: There is no way to extact this info from posix locales. -+ // _M_truename = __nl_langinfo_l(YESSTR, __cloc); -+ _M_data->_M_truename = "true"; -+ _M_data->_M_truename_size = 4; -+ // _M_falsename = __nl_langinfo_l(NOSTR, __cloc); -+ _M_data->_M_falsename = "false"; -+ _M_data->_M_falsename_size = 5; -+ } -+ -+ template<> -+ numpunct::~numpunct() -+ { delete _M_data; } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ void -+ numpunct::_M_initialize_numpunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __numpunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_use_grouping = false; -+ -+ _M_data->_M_decimal_point = L'.'; -+ _M_data->_M_thousands_sep = L','; -+ -+ // Use ctype::widen code without the facet... -+ for (size_t __i = 0; __i < __num_base::_S_oend; ++__i) -+ _M_data->_M_atoms_out[__i] = -+ static_cast(__num_base::_S_atoms_out[__i]); -+ -+ for (size_t __j = 0; __j < __num_base::_S_iend; ++__j) -+ _M_data->_M_atoms_in[__j] = -+ static_cast(__num_base::_S_atoms_in[__j]); -+ } -+ else -+ { -+ // Named locale. -+ // NB: In the GNU model wchar_t is always 32 bit wide. -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this -+#endif -+#ifdef __UCLIBC__ -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ _M_data->_M_decimal_point = __cloc->decimal_point_wc; -+ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; -+# else -+ _M_data->_M_decimal_point = __global_locale->decimal_point_wc; -+ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; -+# endif -+#else -+ union { char *__s; wchar_t __w; } __u; -+ __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc); -+ _M_data->_M_decimal_point = __u.__w; -+ -+ __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc); -+ _M_data->_M_thousands_sep = __u.__w; -+#endif -+ -+ if (_M_data->_M_thousands_sep == L'\0') -+ _M_data->_M_grouping = ""; -+ else -+ _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ } -+ -+ // NB: There is no way to extact this info from posix locales. -+ // _M_truename = __nl_langinfo_l(YESSTR, __cloc); -+ _M_data->_M_truename = L"true"; -+ _M_data->_M_truename_size = 4; -+ // _M_falsename = __nl_langinfo_l(NOSTR, __cloc); -+ _M_data->_M_falsename = L"false"; -+ _M_data->_M_falsename_size = 5; -+ } -+ -+ template<> -+ numpunct::~numpunct() -+ { delete _M_data; } -+ #endif -+} -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/time_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/time_members.cc ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/time_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/time_members.cc 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,406 @@ -+// std::time_get, std::time_put implementation, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.5.1.2 - time_get virtual functions -+// ISO C++ 14882: 22.2.5.3.2 - time_put virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning tailor for stub locale support -+#endif -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __nl_langinfo_l(N, L) nl_langinfo((N)) -+#endif -+ -+namespace std -+{ -+ template<> -+ void -+ __timepunct:: -+ _M_put(char* __s, size_t __maxlen, const char* __format, -+ const tm* __tm) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ const size_t __len = __strftime_l(__s, __maxlen, __format, __tm, -+ _M_c_locale_timepunct); -+#else -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_timepunct); -+ const size_t __len = strftime(__s, __maxlen, __format, __tm); -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ // Make sure __s is null terminated. -+ if (__len == 0) -+ __s[0] = '\0'; -+ } -+ -+ template<> -+ void -+ __timepunct::_M_initialize_timepunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __timepunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_c_locale_timepunct = _S_get_c_locale(); -+ -+ _M_data->_M_date_format = "%m/%d/%y"; -+ _M_data->_M_date_era_format = "%m/%d/%y"; -+ _M_data->_M_time_format = "%H:%M:%S"; -+ _M_data->_M_time_era_format = "%H:%M:%S"; -+ _M_data->_M_date_time_format = ""; -+ _M_data->_M_date_time_era_format = ""; -+ _M_data->_M_am = "AM"; -+ _M_data->_M_pm = "PM"; -+ _M_data->_M_am_pm_format = ""; -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_data->_M_day1 = "Sunday"; -+ _M_data->_M_day2 = "Monday"; -+ _M_data->_M_day3 = "Tuesday"; -+ _M_data->_M_day4 = "Wednesday"; -+ _M_data->_M_day5 = "Thursday"; -+ _M_data->_M_day6 = "Friday"; -+ _M_data->_M_day7 = "Saturday"; -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_data->_M_aday1 = "Sun"; -+ _M_data->_M_aday2 = "Mon"; -+ _M_data->_M_aday3 = "Tue"; -+ _M_data->_M_aday4 = "Wed"; -+ _M_data->_M_aday5 = "Thu"; -+ _M_data->_M_aday6 = "Fri"; -+ _M_data->_M_aday7 = "Sat"; -+ -+ // Month names, starting with "C"'s January. -+ _M_data->_M_month01 = "January"; -+ _M_data->_M_month02 = "February"; -+ _M_data->_M_month03 = "March"; -+ _M_data->_M_month04 = "April"; -+ _M_data->_M_month05 = "May"; -+ _M_data->_M_month06 = "June"; -+ _M_data->_M_month07 = "July"; -+ _M_data->_M_month08 = "August"; -+ _M_data->_M_month09 = "September"; -+ _M_data->_M_month10 = "October"; -+ _M_data->_M_month11 = "November"; -+ _M_data->_M_month12 = "December"; -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_data->_M_amonth01 = "Jan"; -+ _M_data->_M_amonth02 = "Feb"; -+ _M_data->_M_amonth03 = "Mar"; -+ _M_data->_M_amonth04 = "Apr"; -+ _M_data->_M_amonth05 = "May"; -+ _M_data->_M_amonth06 = "Jun"; -+ _M_data->_M_amonth07 = "Jul"; -+ _M_data->_M_amonth08 = "Aug"; -+ _M_data->_M_amonth09 = "Sep"; -+ _M_data->_M_amonth10 = "Oct"; -+ _M_data->_M_amonth11 = "Nov"; -+ _M_data->_M_amonth12 = "Dec"; -+ } -+ else -+ { -+ _M_c_locale_timepunct = _S_clone_c_locale(__cloc); -+ -+ _M_data->_M_date_format = __nl_langinfo_l(D_FMT, __cloc); -+ _M_data->_M_date_era_format = __nl_langinfo_l(ERA_D_FMT, __cloc); -+ _M_data->_M_time_format = __nl_langinfo_l(T_FMT, __cloc); -+ _M_data->_M_time_era_format = __nl_langinfo_l(ERA_T_FMT, __cloc); -+ _M_data->_M_date_time_format = __nl_langinfo_l(D_T_FMT, __cloc); -+ _M_data->_M_date_time_era_format = __nl_langinfo_l(ERA_D_T_FMT, -+ __cloc); -+ _M_data->_M_am = __nl_langinfo_l(AM_STR, __cloc); -+ _M_data->_M_pm = __nl_langinfo_l(PM_STR, __cloc); -+ _M_data->_M_am_pm_format = __nl_langinfo_l(T_FMT_AMPM, __cloc); -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_data->_M_day1 = __nl_langinfo_l(DAY_1, __cloc); -+ _M_data->_M_day2 = __nl_langinfo_l(DAY_2, __cloc); -+ _M_data->_M_day3 = __nl_langinfo_l(DAY_3, __cloc); -+ _M_data->_M_day4 = __nl_langinfo_l(DAY_4, __cloc); -+ _M_data->_M_day5 = __nl_langinfo_l(DAY_5, __cloc); -+ _M_data->_M_day6 = __nl_langinfo_l(DAY_6, __cloc); -+ _M_data->_M_day7 = __nl_langinfo_l(DAY_7, __cloc); -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_data->_M_aday1 = __nl_langinfo_l(ABDAY_1, __cloc); -+ _M_data->_M_aday2 = __nl_langinfo_l(ABDAY_2, __cloc); -+ _M_data->_M_aday3 = __nl_langinfo_l(ABDAY_3, __cloc); -+ _M_data->_M_aday4 = __nl_langinfo_l(ABDAY_4, __cloc); -+ _M_data->_M_aday5 = __nl_langinfo_l(ABDAY_5, __cloc); -+ _M_data->_M_aday6 = __nl_langinfo_l(ABDAY_6, __cloc); -+ _M_data->_M_aday7 = __nl_langinfo_l(ABDAY_7, __cloc); -+ -+ // Month names, starting with "C"'s January. -+ _M_data->_M_month01 = __nl_langinfo_l(MON_1, __cloc); -+ _M_data->_M_month02 = __nl_langinfo_l(MON_2, __cloc); -+ _M_data->_M_month03 = __nl_langinfo_l(MON_3, __cloc); -+ _M_data->_M_month04 = __nl_langinfo_l(MON_4, __cloc); -+ _M_data->_M_month05 = __nl_langinfo_l(MON_5, __cloc); -+ _M_data->_M_month06 = __nl_langinfo_l(MON_6, __cloc); -+ _M_data->_M_month07 = __nl_langinfo_l(MON_7, __cloc); -+ _M_data->_M_month08 = __nl_langinfo_l(MON_8, __cloc); -+ _M_data->_M_month09 = __nl_langinfo_l(MON_9, __cloc); -+ _M_data->_M_month10 = __nl_langinfo_l(MON_10, __cloc); -+ _M_data->_M_month11 = __nl_langinfo_l(MON_11, __cloc); -+ _M_data->_M_month12 = __nl_langinfo_l(MON_12, __cloc); -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_data->_M_amonth01 = __nl_langinfo_l(ABMON_1, __cloc); -+ _M_data->_M_amonth02 = __nl_langinfo_l(ABMON_2, __cloc); -+ _M_data->_M_amonth03 = __nl_langinfo_l(ABMON_3, __cloc); -+ _M_data->_M_amonth04 = __nl_langinfo_l(ABMON_4, __cloc); -+ _M_data->_M_amonth05 = __nl_langinfo_l(ABMON_5, __cloc); -+ _M_data->_M_amonth06 = __nl_langinfo_l(ABMON_6, __cloc); -+ _M_data->_M_amonth07 = __nl_langinfo_l(ABMON_7, __cloc); -+ _M_data->_M_amonth08 = __nl_langinfo_l(ABMON_8, __cloc); -+ _M_data->_M_amonth09 = __nl_langinfo_l(ABMON_9, __cloc); -+ _M_data->_M_amonth10 = __nl_langinfo_l(ABMON_10, __cloc); -+ _M_data->_M_amonth11 = __nl_langinfo_l(ABMON_11, __cloc); -+ _M_data->_M_amonth12 = __nl_langinfo_l(ABMON_12, __cloc); -+ } -+ } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ void -+ __timepunct:: -+ _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, -+ const tm* __tm) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __wcsftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct); -+ const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm, -+ _M_c_locale_timepunct); -+#else -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_timepunct); -+ const size_t __len = wcsftime(__s, __maxlen, __format, __tm); -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ // Make sure __s is null terminated. -+ if (__len == 0) -+ __s[0] = L'\0'; -+ } -+ -+ template<> -+ void -+ __timepunct::_M_initialize_timepunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __timepunct_cache; -+ -+#warning wide time stuff -+// if (!__cloc) -+ { -+ // "C" locale -+ _M_c_locale_timepunct = _S_get_c_locale(); -+ -+ _M_data->_M_date_format = L"%m/%d/%y"; -+ _M_data->_M_date_era_format = L"%m/%d/%y"; -+ _M_data->_M_time_format = L"%H:%M:%S"; -+ _M_data->_M_time_era_format = L"%H:%M:%S"; -+ _M_data->_M_date_time_format = L""; -+ _M_data->_M_date_time_era_format = L""; -+ _M_data->_M_am = L"AM"; -+ _M_data->_M_pm = L"PM"; -+ _M_data->_M_am_pm_format = L""; -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_data->_M_day1 = L"Sunday"; -+ _M_data->_M_day2 = L"Monday"; -+ _M_data->_M_day3 = L"Tuesday"; -+ _M_data->_M_day4 = L"Wednesday"; -+ _M_data->_M_day5 = L"Thursday"; -+ _M_data->_M_day6 = L"Friday"; -+ _M_data->_M_day7 = L"Saturday"; -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_data->_M_aday1 = L"Sun"; -+ _M_data->_M_aday2 = L"Mon"; -+ _M_data->_M_aday3 = L"Tue"; -+ _M_data->_M_aday4 = L"Wed"; -+ _M_data->_M_aday5 = L"Thu"; -+ _M_data->_M_aday6 = L"Fri"; -+ _M_data->_M_aday7 = L"Sat"; -+ -+ // Month names, starting with "C"'s January. -+ _M_data->_M_month01 = L"January"; -+ _M_data->_M_month02 = L"February"; -+ _M_data->_M_month03 = L"March"; -+ _M_data->_M_month04 = L"April"; -+ _M_data->_M_month05 = L"May"; -+ _M_data->_M_month06 = L"June"; -+ _M_data->_M_month07 = L"July"; -+ _M_data->_M_month08 = L"August"; -+ _M_data->_M_month09 = L"September"; -+ _M_data->_M_month10 = L"October"; -+ _M_data->_M_month11 = L"November"; -+ _M_data->_M_month12 = L"December"; -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_data->_M_amonth01 = L"Jan"; -+ _M_data->_M_amonth02 = L"Feb"; -+ _M_data->_M_amonth03 = L"Mar"; -+ _M_data->_M_amonth04 = L"Apr"; -+ _M_data->_M_amonth05 = L"May"; -+ _M_data->_M_amonth06 = L"Jun"; -+ _M_data->_M_amonth07 = L"Jul"; -+ _M_data->_M_amonth08 = L"Aug"; -+ _M_data->_M_amonth09 = L"Sep"; -+ _M_data->_M_amonth10 = L"Oct"; -+ _M_data->_M_amonth11 = L"Nov"; -+ _M_data->_M_amonth12 = L"Dec"; -+ } -+#if 0 -+ else -+ { -+ _M_c_locale_timepunct = _S_clone_c_locale(__cloc); -+ -+ union { char *__s; wchar_t *__w; } __u; -+ -+ __u.__s = __nl_langinfo_l(_NL_WD_FMT, __cloc); -+ _M_data->_M_date_format = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WERA_D_FMT, __cloc); -+ _M_data->_M_date_era_format = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WT_FMT, __cloc); -+ _M_data->_M_time_format = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WERA_T_FMT, __cloc); -+ _M_data->_M_time_era_format = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WD_T_FMT, __cloc); -+ _M_data->_M_date_time_format = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc); -+ _M_data->_M_date_time_era_format = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WAM_STR, __cloc); -+ _M_data->_M_am = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WPM_STR, __cloc); -+ _M_data->_M_pm = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc); -+ _M_data->_M_am_pm_format = __u.__w; -+ -+ // Day names, starting with "C"'s Sunday. -+ __u.__s = __nl_langinfo_l(_NL_WDAY_1, __cloc); -+ _M_data->_M_day1 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WDAY_2, __cloc); -+ _M_data->_M_day2 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WDAY_3, __cloc); -+ _M_data->_M_day3 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WDAY_4, __cloc); -+ _M_data->_M_day4 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WDAY_5, __cloc); -+ _M_data->_M_day5 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WDAY_6, __cloc); -+ _M_data->_M_day6 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WDAY_7, __cloc); -+ _M_data->_M_day7 = __u.__w; -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_1, __cloc); -+ _M_data->_M_aday1 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_2, __cloc); -+ _M_data->_M_aday2 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_3, __cloc); -+ _M_data->_M_aday3 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_4, __cloc); -+ _M_data->_M_aday4 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_5, __cloc); -+ _M_data->_M_aday5 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_6, __cloc); -+ _M_data->_M_aday6 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_7, __cloc); -+ _M_data->_M_aday7 = __u.__w; -+ -+ // Month names, starting with "C"'s January. -+ __u.__s = __nl_langinfo_l(_NL_WMON_1, __cloc); -+ _M_data->_M_month01 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_2, __cloc); -+ _M_data->_M_month02 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_3, __cloc); -+ _M_data->_M_month03 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_4, __cloc); -+ _M_data->_M_month04 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_5, __cloc); -+ _M_data->_M_month05 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_6, __cloc); -+ _M_data->_M_month06 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_7, __cloc); -+ _M_data->_M_month07 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_8, __cloc); -+ _M_data->_M_month08 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_9, __cloc); -+ _M_data->_M_month09 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_10, __cloc); -+ _M_data->_M_month10 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_11, __cloc); -+ _M_data->_M_month11 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_12, __cloc); -+ _M_data->_M_month12 = __u.__w; -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ __u.__s = __nl_langinfo_l(_NL_WABMON_1, __cloc); -+ _M_data->_M_amonth01 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_2, __cloc); -+ _M_data->_M_amonth02 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_3, __cloc); -+ _M_data->_M_amonth03 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_4, __cloc); -+ _M_data->_M_amonth04 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_5, __cloc); -+ _M_data->_M_amonth05 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_6, __cloc); -+ _M_data->_M_amonth06 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_7, __cloc); -+ _M_data->_M_amonth07 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_8, __cloc); -+ _M_data->_M_amonth08 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_9, __cloc); -+ _M_data->_M_amonth09 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_10, __cloc); -+ _M_data->_M_amonth10 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_11, __cloc); -+ _M_data->_M_amonth11 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_12, __cloc); -+ _M_data->_M_amonth12 = __u.__w; -+ } -+#endif // 0 -+ } -+#endif -+} -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/time_members.h gcc-4.0.0/libstdc++-v3/config/locale/uclibc/time_members.h ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/time_members.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/time_members.h 2004-05-22 18:46:31.000000000 -0500 -@@ -0,0 +1,68 @@ -+// std::time_get, std::time_put implementation, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.5.1.2 - time_get functions -+// ISO C++ 14882: 22.2.5.3.2 - time_put functions -+// -+ -+// Written by Benjamin Kosnik -+ -+ template -+ __timepunct<_CharT>::__timepunct(size_t __refs) -+ : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), -+ _M_name_timepunct(_S_get_c_name()) -+ { _M_initialize_timepunct(); } -+ -+ template -+ __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) -+ : facet(__refs), _M_data(__cache), _M_c_locale_timepunct(NULL), -+ _M_name_timepunct(_S_get_c_name()) -+ { _M_initialize_timepunct(); } -+ -+ template -+ __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, -+ size_t __refs) -+ : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), -+ _M_name_timepunct(__s) -+ { -+ char* __tmp = new char[std::strlen(__s) + 1]; -+ std::strcpy(__tmp, __s); -+ _M_name_timepunct = __tmp; -+ _M_initialize_timepunct(__cloc); -+ } -+ -+ template -+ __timepunct<_CharT>::~__timepunct() -+ { -+ if (_M_name_timepunct != _S_get_c_name()) -+ delete [] _M_name_timepunct; -+ delete _M_data; -+ _S_destroy_c_locale(_M_c_locale_timepunct); -+ } -diff -urN gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_base.h gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_base.h ---- gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_base.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_base.h 2005-04-28 01:10:27.000000000 -0500 -@@ -0,0 +1,64 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003, 2004 -+// Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+/** @file ctype_base.h -+ * This is an internal header file, included by other library headers. -+ * You should not attempt to use it directly. -+ */ -+ -+// Information as gleaned from /usr/include/ctype.h -+ -+ /// @brief Base class for ctype. -+ struct ctype_base -+ { -+ // Note: In uClibc, the following two types depend on configuration. -+ -+ // Non-standard typedefs. -+ typedef const __ctype_touplow_t* __to_type; -+ -+ // NB: Offsets into ctype::_M_table force a particular size -+ // on the mask type. Because of this, we don't use an enum. -+ typedef __ctype_mask_t mask; -+ static const mask upper = _ISupper; -+ static const mask lower = _ISlower; -+ static const mask alpha = _ISalpha; -+ static const mask digit = _ISdigit; -+ static const mask xdigit = _ISxdigit; -+ static const mask space = _ISspace; -+ static const mask print = _ISprint; -+ static const mask graph = _ISalpha | _ISdigit | _ISpunct; -+ static const mask cntrl = _IScntrl; -+ static const mask punct = _ISpunct; -+ static const mask alnum = _ISalpha | _ISdigit; -+ }; -diff -urN gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_inline.h gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_inline.h ---- gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_inline.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_inline.h 2002-06-24 00:49:19.000000000 -0500 -@@ -0,0 +1,69 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 2000, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) -+// functions go in ctype.cc -+ -+ bool -+ ctype:: -+ is(mask __m, char __c) const -+ { return _M_table[static_cast(__c)] & __m; } -+ -+ const char* -+ ctype:: -+ is(const char* __low, const char* __high, mask* __vec) const -+ { -+ while (__low < __high) -+ *__vec++ = _M_table[static_cast(*__low++)]; -+ return __high; -+ } -+ -+ const char* -+ ctype:: -+ scan_is(mask __m, const char* __low, const char* __high) const -+ { -+ while (__low < __high -+ && !(_M_table[static_cast(*__low)] & __m)) -+ ++__low; -+ return __low; -+ } -+ -+ const char* -+ ctype:: -+ scan_not(mask __m, const char* __low, const char* __high) const -+ { -+ while (__low < __high -+ && (_M_table[static_cast(*__low)] & __m) != 0) -+ ++__low; -+ return __low; -+ } -diff -urN gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_noninline.h gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_noninline.h ---- gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_noninline.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_noninline.h 2005-04-28 01:10:27.000000000 -0500 -@@ -0,0 +1,92 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004 -+// Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+// Information as gleaned from /usr/include/ctype.h -+ -+ const ctype_base::mask* -+ ctype::classic_table() throw() -+ { return __C_ctype_b; } -+ -+ ctype::ctype(__c_locale, const mask* __table, bool __del, -+ size_t __refs) -+ : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()), -+ _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0) -+ { -+ _M_toupper = __C_ctype_toupper; -+ _M_tolower = __C_ctype_tolower; -+ _M_table = __table ? __table : __C_ctype_b; -+ memset(_M_widen, 0, sizeof(_M_widen)); -+ memset(_M_narrow, 0, sizeof(_M_narrow)); -+ } -+ -+ ctype::ctype(const mask* __table, bool __del, size_t __refs) -+ : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()), -+ _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0) -+ { -+ _M_toupper = __C_ctype_toupper; -+ _M_tolower = __C_ctype_tolower; -+ _M_table = __table ? __table : __C_ctype_b; -+ memset(_M_widen, 0, sizeof(_M_widen)); -+ memset(_M_narrow, 0, sizeof(_M_narrow)); -+ } -+ -+ char -+ ctype::do_toupper(char __c) const -+ { return _M_toupper[static_cast(__c)]; } -+ -+ const char* -+ ctype::do_toupper(char* __low, const char* __high) const -+ { -+ while (__low < __high) -+ { -+ *__low = _M_toupper[static_cast(*__low)]; -+ ++__low; -+ } -+ return __high; -+ } -+ -+ char -+ ctype::do_tolower(char __c) const -+ { return _M_tolower[static_cast(__c)]; } -+ -+ const char* -+ ctype::do_tolower(char* __low, const char* __high) const -+ { -+ while (__low < __high) -+ { -+ *__low = _M_tolower[static_cast(*__low)]; -+ ++__low; -+ } -+ return __high; -+ } -diff -urN gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/os_defines.h gcc-4.0.0/libstdc++-v3/config/os/uclibc/os_defines.h ---- gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/os_defines.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/os/uclibc/os_defines.h 2005-04-28 01:10:27.000000000 -0500 -@@ -0,0 +1,44 @@ -+// Specific definitions for GNU/Linux -*- C++ -*- -+ -+// Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+#ifndef _GLIBCXX_OS_DEFINES -+#define _GLIBCXX_OS_DEFINES 1 -+ -+// System-specific #define, typedefs, corrections, etc, go here. This -+// file will come before all others. -+ -+// This keeps isanum, et al from being propagated as macros. -+#define __NO_CTYPE 1 -+ -+#include -+ -+// We must not see the optimized string functions GNU libc defines. -+#define __NO_STRING_INLINES -+ -+#endif -diff -urN gcc-4.0.0-100/libstdc++-v3/configure gcc-4.0.0/libstdc++-v3/configure ---- gcc-4.0.0-100/libstdc++-v3/configure 2005-04-30 13:06:53.683055232 -0500 -+++ gcc-4.0.0/libstdc++-v3/configure 2005-04-30 12:24:24.000000000 -0500 -@@ -3998,6 +3998,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' -@@ -5672,7 +5677,7 @@ - enableval="$enable_clocale" - - case "$enableval" in -- generic|gnu|ieee_1003.1-2001|yes|no|auto) ;; -+ generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto) ;; - *) { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable clocale" >&5 - echo "$as_me: error: Unknown argument to enable/disable clocale" >&2;} - { (exit 1); exit 1; }; } ;; -@@ -5697,6 +5702,9 @@ - # Default to "generic". - if test $enable_clocale_flag = auto; then - case ${target_os} in -+ linux-uclibc*) -+ enable_clocale_flag=uclibc -+ ;; - linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu) - cat >conftest.$ac_ext <<_ACEOF - /* confdefs.h. */ -@@ -5927,6 +5935,76 @@ - CTIME_CC=config/locale/generic/time_members.cc - CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h - ;; -+ uclibc) -+ echo "$as_me:$LINENO: result: uclibc" >&5 -+echo "${ECHO_T}uclibc" >&6 -+ -+ # Declare intention to use gettext, and add support for specific -+ # languages. -+ # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT -+ ALL_LINGUAS="de fr" -+ -+ # Don't call AM-GNU-GETTEXT here. Instead, assume glibc. -+ # Extract the first word of "msgfmt", so it can be a program name with args. -+set dummy msgfmt; 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_check_msgfmt+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$check_msgfmt"; then -+ ac_cv_prog_check_msgfmt="$check_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_check_msgfmt="yes" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+ -+ test -z "$ac_cv_prog_check_msgfmt" && ac_cv_prog_check_msgfmt="no" -+fi -+fi -+check_msgfmt=$ac_cv_prog_check_msgfmt -+if test -n "$check_msgfmt"; then -+ echo "$as_me:$LINENO: result: $check_msgfmt" >&5 -+echo "${ECHO_T}$check_msgfmt" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+ if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then -+ USE_NLS=yes -+ fi -+ # Export the build objects. -+ for ling in $ALL_LINGUAS; do \ -+ glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \ -+ glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \ -+ done -+ -+ -+ -+ CLOCALE_H=config/locale/uclibc/c_locale.h -+ CLOCALE_CC=config/locale/uclibc/c_locale.cc -+ CCODECVT_CC=config/locale/uclibc/codecvt_members.cc -+ CCOLLATE_CC=config/locale/uclibc/collate_members.cc -+ CCTYPE_CC=config/locale/uclibc/ctype_members.cc -+ CMESSAGES_H=config/locale/uclibc/messages_members.h -+ CMESSAGES_CC=config/locale/uclibc/messages_members.cc -+ CMONEY_CC=config/locale/uclibc/monetary_members.cc -+ CNUMERIC_CC=config/locale/uclibc/numeric_members.cc -+ CTIME_H=config/locale/uclibc/time_members.h -+ CTIME_CC=config/locale/uclibc/time_members.cc -+ CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h -+ ;; - esac - - # This is where the testsuite looks for locale catalogs, using the -diff -urN gcc-4.0.0-100/libstdc++-v3/configure.host gcc-4.0.0/libstdc++-v3/configure.host ---- gcc-4.0.0-100/libstdc++-v3/configure.host 2005-04-30 13:06:53.688054472 -0500 -+++ gcc-4.0.0/libstdc++-v3/configure.host 2005-04-28 20:20:32.000000000 -0500 -@@ -249,6 +249,12 @@ - ;; - esac - -+# Override for uClibc since linux-uclibc gets mishandled above. -+case "${host_os}" in -+ *-uclibc*) -+ os_include_dir="os/uclibc" -+ ;; -+esac - - # Set any OS-dependent and CPU-dependent bits. - # THIS TABLE IS SORTED. KEEP IT THAT WAY. -diff -urN gcc-4.0.0-100/libstdc++-v3/crossconfig.m4 gcc-4.0.0/libstdc++-v3/crossconfig.m4 ---- gcc-4.0.0-100/libstdc++-v3/crossconfig.m4 2005-04-30 13:06:53.689054320 -0500 -+++ gcc-4.0.0/libstdc++-v3/crossconfig.m4 2005-04-28 20:27:15.000000000 -0500 -@@ -142,6 +142,98 @@ - ;; - esac - ;; -+ *-uclibc*) -+# Temporary hack until we implement the float versions of the libm funcs -+ AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \ -+ machine/endian.h machine/param.h sys/machine.h sys/types.h \ -+ fp.h float.h endian.h inttypes.h locale.h float.h stdint.h]) -+ SECTION_FLAGS='-ffunction-sections -fdata-sections' -+ AC_SUBST(SECTION_FLAGS) -+ GLIBCXX_CHECK_LINKER_FEATURES -+ GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT -+ GLIBCXX_CHECK_WCHAR_T_SUPPORT -+ -+ # For LFS. -+ AC_DEFINE(HAVE_INT64_T) -+ case "$target" in -+ *-uclinux*) -+ # Don't enable LFS with uClinux -+ ;; -+ *) -+ AC_DEFINE(_GLIBCXX_USE_LFS) -+ esac -+ -+ # For showmanyc_helper(). -+ AC_CHECK_HEADERS(sys/ioctl.h sys/filio.h) -+ GLIBCXX_CHECK_POLL -+ GLIBCXX_CHECK_S_ISREG_OR_S_IFREG -+ -+ # For xsputn_2(). -+ AC_CHECK_HEADERS(sys/uio.h) -+ GLIBCXX_CHECK_WRITEV -+ -+# AC_DEFINE(HAVE_ACOSF) -+# AC_DEFINE(HAVE_ASINF) -+# AC_DEFINE(HAVE_ATANF) -+# AC_DEFINE(HAVE_ATAN2F) -+ AC_DEFINE(HAVE_CEILF) -+ AC_DEFINE(HAVE_COPYSIGN) -+# AC_DEFINE(HAVE_COPYSIGNF) -+# AC_DEFINE(HAVE_COSF) -+# AC_DEFINE(HAVE_COSHF) -+# AC_DEFINE(HAVE_EXPF) -+# AC_DEFINE(HAVE_FABSF) -+ AC_DEFINE(HAVE_FINITE) -+ AC_DEFINE(HAVE_FINITEF) -+ AC_DEFINE(HAVE_FLOORF) -+# AC_DEFINE(HAVE_FMODF) -+# AC_DEFINE(HAVE_FREXPF) -+ AC_DEFINE(HAVE_HYPOT) -+# AC_DEFINE(HAVE_HYPOTF) -+ AC_DEFINE(HAVE_ISINF) -+ AC_DEFINE(HAVE_ISINFF) -+ AC_DEFINE(HAVE_ISNAN) -+ AC_DEFINE(HAVE_ISNANF) -+# AC_DEFINE(HAVE_LOGF) -+# AC_DEFINE(HAVE_LOG10F) -+# AC_DEFINE(HAVE_MODFF) -+# AC_DEFINE(HAVE_SINF) -+# AC_DEFINE(HAVE_SINHF) -+# AC_DEFINE(HAVE_SINCOS) -+# AC_DEFINE(HAVE_SINCOSF) -+ AC_DEFINE(HAVE_SQRTF) -+# AC_DEFINE(HAVE_TANF) -+# AC_DEFINE(HAVE_TANHF) -+ if test x"long_double_math_on_this_cpu" = x"yes"; then -+# AC_DEFINE(HAVE_ACOSL) -+# AC_DEFINE(HAVE_ASINL) -+# AC_DEFINE(HAVE_ATANL) -+# AC_DEFINE(HAVE_ATAN2L) -+# AC_DEFINE(HAVE_CEILL) -+# AC_DEFINE(HAVE_COPYSIGNL) -+# AC_DEFINE(HAVE_COSL) -+# AC_DEFINE(HAVE_COSHL) -+# AC_DEFINE(HAVE_EXPL) -+# AC_DEFINE(HAVE_FABSL) -+# AC_DEFINE(HAVE_FINITEL) -+# AC_DEFINE(HAVE_FLOORL) -+# AC_DEFINE(HAVE_FMODL) -+# AC_DEFINE(HAVE_FREXPL) -+# AC_DEFINE(HAVE_HYPOTL) -+# AC_DEFINE(HAVE_ISINFL) -+# AC_DEFINE(HAVE_ISNANL) -+# AC_DEFINE(HAVE_LOGL) -+# AC_DEFINE(HAVE_LOG10L) -+# AC_DEFINE(HAVE_MODFL) -+# AC_DEFINE(HAVE_POWL) -+# AC_DEFINE(HAVE_SINL) -+# AC_DEFINE(HAVE_SINHL) -+# AC_DEFINE(HAVE_SINCOSL) -+# AC_DEFINE(HAVE_SQRTL) -+# AC_DEFINE(HAVE_TANL) -+# AC_DEFINE(HAVE_TANHL) -+ fi -+ ;; - *-linux* | *-uclinux* | *-gnu* | *-kfreebsd*-gnu | *-knetbsd*-gnu) - AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \ - machine/endian.h machine/param.h sys/machine.h sys/types.h \ -@@ -156,7 +248,7 @@ - AC_DEFINE(HAVE_INT64_T) - case "$target" in - *-uclinux*) -- # Don't enable LFS with uClibc -+ # Don't enable LFS with uClinux - ;; - *) - AC_DEFINE(_GLIBCXX_USE_LFS) -diff -urN gcc-4.0.0-100/libstdc++-v3/include/c_compatibility/wchar.h gcc-4.0.0/libstdc++-v3/include/c_compatibility/wchar.h ---- gcc-4.0.0-100/libstdc++-v3/include/c_compatibility/wchar.h 2005-04-30 13:06:53.690054168 -0500 -+++ gcc-4.0.0/libstdc++-v3/include/c_compatibility/wchar.h 2005-04-28 20:15:56.000000000 -0500 -@@ -101,7 +101,9 @@ - using std::wmemcpy; - using std::wmemmove; - using std::wmemset; -+#if _GLIBCXX_HAVE_WCSFTIME - using std::wcsftime; -+#endif - - #if _GLIBCXX_USE_C99 - using std::wcstold; -diff -urN gcc-4.0.0-100/libstdc++-v3/include/c_std/std_cwchar.h gcc-4.0.0/libstdc++-v3/include/c_std/std_cwchar.h ---- gcc-4.0.0-100/libstdc++-v3/include/c_std/std_cwchar.h 2005-04-30 13:06:53.691054016 -0500 -+++ gcc-4.0.0/libstdc++-v3/include/c_std/std_cwchar.h 2005-04-28 20:15:56.000000000 -0500 -@@ -179,7 +179,9 @@ - using ::wcscoll; - using ::wcscpy; - using ::wcscspn; -+#if _GLIBCXX_HAVE_WCSFTIME - using ::wcsftime; -+#endif - using ::wcslen; - using ::wcsncat; - using ::wcsncmp; diff --git a/src/patches/gcc/gcc44-build-id.patch b/src/patches/gcc/gcc44-build-id.patch new file mode 100644 index 000000000..f76f9396f --- /dev/null +++ b/src/patches/gcc/gcc44-build-id.patch @@ -0,0 +1,52 @@ +2007-07-22 Roland McGrath + + * config/rs6000/sysv4.h (LINK_EH_SPEC): Add --build-id for + non-relocatable link. + * config/linux.h (LINK_EH_SPEC): Likewise. + * config/alpha/elf.h (LINK_EH_SPEC): Likewise. + * config/ia64/linux.h (LINK_EH_SPEC): Likewise. + +--- gcc/config/rs6000/sysv4.h.~1~ ++++ gcc/config/rs6000/sysv4.h +@@ -906,7 +906,7 @@ extern int fixuplabelno; + %{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "}}}" + + #if defined(HAVE_LD_EH_FRAME_HDR) +-# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " ++# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} " + #endif + + #define CPP_OS_LINUX_SPEC "-D__unix__ -D__gnu_linux__ -D__linux__ \ +--- gcc/config/linux.h.~1~ ++++ gcc/config/linux.h +@@ -85,7 +85,7 @@ Boston, MA 02110-1301, USA. */ + } while (0) + + #if defined(HAVE_LD_EH_FRAME_HDR) +-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " ++#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} " + #endif + + /* Define this so we can compile MS code for use with WINE. */ +--- gcc/config/alpha/elf.h.~1~ ++++ gcc/config/alpha/elf.h +@@ -421,7 +421,7 @@ extern int alpha_this_gpdisp_sequence_nu + I imagine that other systems will catch up. In the meantime, it + doesn't harm to make sure that the data exists to be used later. */ + #if defined(HAVE_LD_EH_FRAME_HDR) +-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " ++#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} " + #endif + + /* A C statement (sans semicolon) to output to the stdio stream STREAM +--- gcc/config/ia64/linux.h.~1~ ++++ gcc/config/ia64/linux.h +@@ -56,7 +56,7 @@ do { \ + Signalize that because we have fde-glibc, we don't need all C shared libs + linked against -lgcc_s. */ + #undef LINK_EH_SPEC +-#define LINK_EH_SPEC "" ++#define LINK_EH_SPEC "%{!r:--build-id} " + + #define MD_UNWIND_SUPPORT "config/ia64/linux-unwind.h" + diff --git a/src/patches/gcc/gcc44-c++-builtin-redecl.patch b/src/patches/gcc/gcc44-c++-builtin-redecl.patch new file mode 100644 index 000000000..1f36f1fe0 --- /dev/null +++ b/src/patches/gcc/gcc44-c++-builtin-redecl.patch @@ -0,0 +1,102 @@ +2007-10-02 Jakub Jelinek + + * decl.c (duplicate_decls): When redeclaring a builtin function, + keep the merged decl builtin whenever types match, even if new + decl defines a function. + + * gcc.dg/builtins-65.c: New test. + * g++.dg/ext/builtin10.C: New test. + +--- gcc/cp/decl.c.jj 2007-10-01 22:11:09.000000000 +0200 ++++ gcc/cp/decl.c 2007-10-02 11:39:46.000000000 +0200 +@@ -2001,23 +2001,21 @@ duplicate_decls (tree newdecl, tree oldd + DECL_ARGUMENTS (olddecl) = DECL_ARGUMENTS (newdecl); + DECL_RESULT (olddecl) = DECL_RESULT (newdecl); + } ++ /* If redeclaring a builtin function, it stays built in. */ ++ if (types_match && DECL_BUILT_IN (olddecl)) ++ { ++ DECL_BUILT_IN_CLASS (newdecl) = DECL_BUILT_IN_CLASS (olddecl); ++ DECL_FUNCTION_CODE (newdecl) = DECL_FUNCTION_CODE (olddecl); ++ /* If we're keeping the built-in definition, keep the rtl, ++ regardless of declaration matches. */ ++ COPY_DECL_RTL (olddecl, newdecl); ++ } + if (new_defines_function) + /* If defining a function declared with other language + linkage, use the previously declared language linkage. */ + SET_DECL_LANGUAGE (newdecl, DECL_LANGUAGE (olddecl)); + else if (types_match) + { +- /* If redeclaring a builtin function, and not a definition, +- it stays built in. */ +- if (DECL_BUILT_IN (olddecl)) +- { +- DECL_BUILT_IN_CLASS (newdecl) = DECL_BUILT_IN_CLASS (olddecl); +- DECL_FUNCTION_CODE (newdecl) = DECL_FUNCTION_CODE (olddecl); +- /* If we're keeping the built-in definition, keep the rtl, +- regardless of declaration matches. */ +- COPY_DECL_RTL (olddecl, newdecl); +- } +- + DECL_RESULT (newdecl) = DECL_RESULT (olddecl); + /* Don't clear out the arguments if we're just redeclaring a + function. */ +--- gcc/testsuite/gcc.dg/builtins-65.c.jj 2007-10-02 11:23:51.000000000 +0200 ++++ gcc/testsuite/gcc.dg/builtins-65.c 2007-10-02 11:24:12.000000000 +0200 +@@ -0,0 +1,25 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++typedef __SIZE_TYPE__ size_t; ++extern void __chk_fail (void); ++extern int snprintf (char *, size_t, const char *, ...); ++extern inline __attribute__((gnu_inline, always_inline)) int snprintf (char *a, size_t b, const char *fmt, ...) ++{ ++ if (__builtin_object_size (a, 0) != -1UL && __builtin_object_size (a, 0) < b) ++ __chk_fail (); ++ return __builtin_snprintf (a, b, fmt, __builtin_va_arg_pack ()); ++} ++extern int snprintf (char *, size_t, const char *, ...) __asm ("mysnprintf"); ++ ++char buf[10]; ++ ++int ++main (void) ++{ ++ snprintf (buf, 10, "%d%d\n", 10, 10); ++ return 0; ++} ++ ++/* { dg-final { scan-assembler "mysnprintf" } } */ ++/* { dg-final { scan-assembler-not "__chk_fail" } } */ +--- gcc/testsuite/g++.dg/ext/builtin10.C.jj 2007-10-02 11:19:45.000000000 +0200 ++++ gcc/testsuite/g++.dg/ext/builtin10.C 2007-10-02 11:23:26.000000000 +0200 +@@ -0,0 +1,27 @@ ++// { dg-do compile } ++// { dg-options "-O2" } ++ ++typedef __SIZE_TYPE__ size_t; ++extern "C" { ++extern void __chk_fail (void); ++extern int snprintf (char *, size_t, const char *, ...); ++extern inline __attribute__((gnu_inline, always_inline)) int snprintf (char *a, size_t b, const char *fmt, ...) ++{ ++ if (__builtin_object_size (a, 0) != -1UL && __builtin_object_size (a, 0) < b) ++ __chk_fail (); ++ return __builtin_snprintf (a, b, fmt, __builtin_va_arg_pack ()); ++} ++extern int snprintf (char *, size_t, const char *, ...) __asm ("mysnprintf"); ++} ++ ++char buf[10]; ++ ++int ++main (void) ++{ ++ snprintf (buf, 10, "%d%d\n", 10, 10); ++ return 0; ++} ++ ++// { dg-final { scan-assembler "mysnprintf" } } ++// { dg-final { scan-assembler-not "__chk_fail" } } diff --git a/src/patches/gcc/gcc44-i386-libgomp.patch b/src/patches/gcc/gcc44-i386-libgomp.patch new file mode 100644 index 000000000..5d1eea84c --- /dev/null +++ b/src/patches/gcc/gcc44-i386-libgomp.patch @@ -0,0 +1,61 @@ +Build i386.rpm libgomp and libsupc++.a(guard.o) as i486+, pre-i486 +hardware isn't supported because NPTL doesn't support it anyway. + +--- libgomp/configure.tgt.jj 2008-01-10 20:53:48.000000000 +0100 ++++ libgomp/configure.tgt 2008-03-27 12:44:51.000000000 +0100 +@@ -44,14 +44,14 @@ if test $enable_linux_futex = yes; then + ;; + + # Note that bare i386 is not included here. We need cmpxchg. +- i[456]86-*-linux*) ++ i[3456]86-*-linux*) + config_path="linux/x86 linux posix" + case " ${CC} ${CFLAGS} " in + *" -m64 "*) + ;; + *) + if test -z "$with_arch"; then +- XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}" ++ XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic" + fi + esac + ;; +@@ -63,7 +63,7 @@ if test $enable_linux_futex = yes; then + config_path="linux/x86 linux posix" + case " ${CC} ${CFLAGS} " in + *" -m32 "*) +- XCFLAGS="${XCFLAGS} -march=i486 -mtune=i686" ++ XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic" + ;; + esac + ;; +--- libstdc++-v3/libsupc++/guard.cc.jj 2008-03-01 00:58:24.000000000 +0100 ++++ libstdc++-v3/libsupc++/guard.cc 2008-03-27 14:08:44.000000000 +0100 +@@ -35,6 +35,27 @@ + #include + #include + #include ++#if defined __i386__ && !defined _GLIBCXX_ATOMIC_BUILTINS_4 ++# define _GLIBCXX_ATOMIC_BUILTINS_4 1 ++# define __sync_val_compare_and_swap(a, b, c) \ ++ ({ \ ++ typedef char sltast[sizeof (*a) == sizeof (int) ? 1 : -1]; \ ++ int sltas; \ ++ __asm __volatile ("lock; cmpxchgl %3, (%1)" \ ++ : "=a" (sltas) \ ++ : "r" (a), "0" (b), "r" (c) : "memory"); \ ++ sltas; \ ++ }) ++# define __sync_lock_test_and_set(a, b) \ ++ ({ \ ++ typedef char sltast[sizeof (*a) == sizeof (int) ? 1 : -1]; \ ++ int sltas; \ ++ __asm __volatile ("xchgl (%1), %0" \ ++ : "=r" (sltas) \ ++ : "r" (a), "0" (b) : "memory"); \ ++ sltas; \ ++ }) ++#endif + #if defined(__GTHREADS) && defined(__GTHREAD_HAS_COND) \ + && defined(_GLIBCXX_ATOMIC_BUILTINS_4) && defined(_GLIBCXX_HAVE_LINUX_FUTEX) + # include diff --git a/src/patches/gcc/gcc44-libtool-no-rpath.patch b/src/patches/gcc/gcc44-libtool-no-rpath.patch new file mode 100644 index 000000000..466c661e0 --- /dev/null +++ b/src/patches/gcc/gcc44-libtool-no-rpath.patch @@ -0,0 +1,27 @@ +libtool sucks. +--- ltmain.sh.jj 2007-12-07 14:53:21.000000000 +0100 ++++ ltmain.sh 2008-09-05 21:51:48.000000000 +0200 +@@ -5394,6 +5394,7 @@ EOF + rpath="$finalize_rpath" + test "$mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do ++ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then +@@ -6071,6 +6072,7 @@ EOF + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do ++ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then +@@ -6120,6 +6122,7 @@ EOF + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do ++ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then diff --git a/src/patches/gcc/gcc44-no-add-needed.patch b/src/patches/gcc/gcc44-no-add-needed.patch new file mode 100644 index 000000000..4570c0c05 --- /dev/null +++ b/src/patches/gcc/gcc44-no-add-needed.patch @@ -0,0 +1,52 @@ +2010-02-08 Roland McGrath + + * config/rs6000/sysv4.h (LINK_EH_SPEC): Pass --no-add-needed to the + linker. + * config/linux.h (LINK_EH_SPEC): Likewise. + * config/alpha/elf.h (LINK_EH_SPEC): Likewise. + * config/ia64/linux.h (LINK_EH_SPEC): Likewise. + +--- gcc/config/alpha/elf.h.~1~ ++++ gcc/config/alpha/elf.h +@@ -421,7 +421,7 @@ extern int alpha_this_gpdisp_sequence_nu + I imagine that other systems will catch up. In the meantime, it + doesn't harm to make sure that the data exists to be used later. */ + #if defined(HAVE_LD_EH_FRAME_HDR) +-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} " ++#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} %{!r:--build-id} " + #endif + + /* A C statement (sans semicolon) to output to the stdio stream STREAM +--- gcc/config/ia64/linux.h.~1~ ++++ gcc/config/ia64/linux.h +@@ -58,7 +58,7 @@ do { \ + Signalize that because we have fde-glibc, we don't need all C shared libs + linked against -lgcc_s. */ + #undef LINK_EH_SPEC +-#define LINK_EH_SPEC "%{!r:--build-id} " ++#define LINK_EH_SPEC "--no-add-needed %{!r:--build-id} " + + #define MD_UNWIND_SUPPORT "config/ia64/linux-unwind.h" + +--- gcc/config/linux.h.~1~ ++++ gcc/config/linux.h +@@ -89,7 +89,7 @@ see the files COPYING3 and COPYING.RUNTI + } while (0) + + #if defined(HAVE_LD_EH_FRAME_HDR) +-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} " ++#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} %{!r:--build-id} " + #endif + + /* Define this so we can compile MS code for use with WINE. */ +--- gcc/config/rs6000/sysv4.h.~1~ ++++ gcc/config/rs6000/sysv4.h +@@ -917,7 +917,7 @@ SVR4_ASM_SPEC \ + %{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "}}}" + + #if defined(HAVE_LD_EH_FRAME_HDR) +-# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} " ++# define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} %{!r:--build-id} " + #endif + + #define CPP_OS_LINUX_SPEC "-D__unix__ -D__gnu_linux__ -D__linux__ \ diff --git a/src/patches/gcc/gcc44-pr33763.patch b/src/patches/gcc/gcc44-pr33763.patch new file mode 100644 index 000000000..86c8ac7e1 --- /dev/null +++ b/src/patches/gcc/gcc44-pr33763.patch @@ -0,0 +1,153 @@ +2007-11-06 Jakub Jelinek + + PR tree-optimization/33763 + * gcc.dg/pr33763.c: New test. + * g++.dg/opt/inline13.C: New test. + +2007-11-06 Jan Hubicka + + PR tree-optimization/33763 + * tree-inline.c (expand_call_inline): Silently ignore always_inline + attribute for redefined extern inline functions. + +--- gcc/tree-inline.c.jj 2007-11-06 09:29:04.000000000 +0100 ++++ gcc/tree-inline.c 2007-11-06 16:19:12.000000000 +0100 +@@ -3157,6 +3157,12 @@ expand_call_inline (basic_block bb, gimp + goto egress; + + if (lookup_attribute ("always_inline", DECL_ATTRIBUTES (fn)) ++ /* For extern inline functions that get redefined we always ++ silently ignored alway_inline flag. Better behaviour would ++ be to be able to keep both bodies and use extern inline body ++ for inlining, but we can't do that because frontends overwrite ++ the body. */ ++ && !cg_edge->callee->local.redefined_extern_inline + /* Avoid warnings during early inline pass. */ + && cgraph_global_info_ready) + { +--- gcc/testsuite/gcc.dg/pr33763.c.jj 2007-11-06 16:19:12.000000000 +0100 ++++ gcc/testsuite/gcc.dg/pr33763.c 2007-11-06 16:19:12.000000000 +0100 +@@ -0,0 +1,60 @@ ++/* PR tree-optimization/33763 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++typedef struct ++{ ++ void *a; ++ void *b; ++} T; ++extern void *foo (const char *, const char *); ++extern void *bar (void *, const char *, T); ++extern int baz (const char *, int); ++ ++extern inline __attribute__ ((always_inline, gnu_inline)) int ++baz (const char *x, int y) ++{ ++ return 2; ++} ++ ++int ++baz (const char *x, int y) ++{ ++ return 1; ++} ++ ++int xa, xb; ++ ++static void * ++inl (const char *x, const char *y) ++{ ++ T t = { &xa, &xb }; ++ int *f = (int *) __builtin_malloc (sizeof (int)); ++ const char *z; ++ int o = 0; ++ void *r = 0; ++ ++ for (z = y; *z; z++) ++ { ++ if (*z == 'r') ++ o |= 1; ++ if (*z == 'w') ++ o |= 2; ++ } ++ if (o == 1) ++ *f = baz (x, 0); ++ if (o == 2) ++ *f = baz (x, 1); ++ if (o == 3) ++ *f = baz (x, 2); ++ ++ if (o && *f > 0) ++ r = bar (f, "w", t); ++ return r; ++} ++ ++void * ++foo (const char *x, const char *y) ++{ ++ return inl (x, y); ++} +--- gcc/testsuite/g++.dg/opt/inline13.C.jj 2007-11-06 16:20:20.000000000 +0100 ++++ gcc/testsuite/g++.dg/opt/inline13.C 2007-11-06 16:21:30.000000000 +0100 +@@ -0,0 +1,60 @@ ++// PR tree-optimization/33763 ++// { dg-do compile } ++// { dg-options "-O2" } ++ ++typedef struct ++{ ++ void *a; ++ void *b; ++} T; ++extern void *foo (const char *, const char *); ++extern void *bar (void *, const char *, T); ++extern int baz (const char *, int); ++ ++extern inline __attribute__ ((always_inline, gnu_inline)) int ++baz (const char *x, int y) ++{ ++ return 2; ++} ++ ++int ++baz (const char *x, int y) ++{ ++ return 1; ++} ++ ++int xa, xb; ++ ++static void * ++inl (const char *x, const char *y) ++{ ++ T t = { &xa, &xb }; ++ int *f = (int *) __builtin_malloc (sizeof (int)); ++ const char *z; ++ int o = 0; ++ void *r = 0; ++ ++ for (z = y; *z; z++) ++ { ++ if (*z == 'r') ++ o |= 1; ++ if (*z == 'w') ++ o |= 2; ++ } ++ if (o == 1) ++ *f = baz (x, 0); ++ if (o == 2) ++ *f = baz (x, 1); ++ if (o == 3) ++ *f = baz (x, 2); ++ ++ if (o && *f > 0) ++ r = bar (f, "w", t); ++ return r; ++} ++ ++void * ++foo (const char *x, const char *y) ++{ ++ return inl (x, y); ++} diff --git a/src/patches/gcc/gcc44-rh330771.patch b/src/patches/gcc/gcc44-rh330771.patch new file mode 100644 index 000000000..f7c365dc8 --- /dev/null +++ b/src/patches/gcc/gcc44-rh330771.patch @@ -0,0 +1,34 @@ +2007-10-16 Jakub Jelinek + + * Makefile.am (libgcj_tools_la_LIBADD): Add. + * Makefile.in: Regenerated. + +--- libjava/Makefile.am.jj 2009-05-06 08:14:50.000000000 +0200 ++++ libjava/Makefile.am 2009-05-06 10:26:43.000000000 +0200 +@@ -314,6 +314,8 @@ libgcj_tools_la_SOURCES = classpath/tool + libgcj_tools_la_GCJFLAGS = $(AM_GCJFLAGS) -findirect-dispatch \ + -fno-bootstrap-classes -fno-indirect-classes \ + -fsource-filename=$(here)/classpath/tools/all-classes.lst ++## See jv_convert_LDADD. ++libgcj_tools_la_LIBADD = -L$(here)/.libs libgcj.la + libgcj_tools_la_LDFLAGS = -rpath $(toolexeclibdir) \ + -version-info `grep -v '^\#' $(srcdir)/libtool-version` \ + $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) +--- libjava/Makefile.in.jj 2009-05-06 08:14:49.000000000 +0200 ++++ libjava/Makefile.in 2009-05-06 10:27:18.000000000 +0200 +@@ -160,7 +160,6 @@ am__objects_1 = gnu/gcj/xlib/lib_gnu_awt + am_lib_gnu_awt_xlib_la_OBJECTS = $(am__objects_1) + lib_gnu_awt_xlib_la_OBJECTS = $(am_lib_gnu_awt_xlib_la_OBJECTS) + @XLIB_AWT_TRUE@am_lib_gnu_awt_xlib_la_rpath = -rpath $(toolexeclibdir) +-libgcj_tools_la_LIBADD = + am_libgcj_tools_la_OBJECTS = classpath/tools/libgcj_tools_la-tools.lo + libgcj_tools_la_OBJECTS = $(am_libgcj_tools_la_OBJECTS) + @INTERPRETER_TRUE@am__DEPENDENCIES_1 = gnu/classpath/jdwp.lo \ +@@ -1041,6 +1040,7 @@ libgcj_tools_la_GCJFLAGS = $(AM_GCJFLAGS + -fno-bootstrap-classes -fno-indirect-classes \ + -fsource-filename=$(here)/classpath/tools/all-classes.lst + ++libgcj_tools_la_LIBADD = -L$(here)/.libs libgcj.la + libgcj_tools_la_LDFLAGS = -rpath $(toolexeclibdir) \ + -version-info `grep -v '^\#' $(srcdir)/libtool-version` \ + $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) diff --git a/src/patches/gcc/gcc44-rh533181.patch b/src/patches/gcc/gcc44-rh533181.patch new file mode 100644 index 000000000..76326e299 --- /dev/null +++ b/src/patches/gcc/gcc44-rh533181.patch @@ -0,0 +1,153 @@ +2010-07-22 Jakub Jelinek + + * gimplify.c (enum gimplify_omp_var_data): Add + GOVD_THREADPRIVATE_WARNED. + (gimplify_bind_expr): Add GOVD_LOCAL | GOVD_SEEN even for global vars. + (omp_notice_threadprivate_variable): Note used threadprivate vars + with current function's context in shared clauses. + (gimplify_adjust_omp_clauses_1): Allow globals with current function's + context in taskreg shared clause. + * omp-low.c (lower_rec_input_clauses): For function-local is_global_var + VAR_DECLs in shared clauses add a decl copy with DECL_VALUE_EXPR + pointing to the original. + + * trans-openmp.c (gfc_omp_private_debug_clause): Return false for + threadprivate decls. + + * gcc.dg/gomp/tls-3.c: New test. + +--- gcc/fortran/trans-openmp.c.jj 2010-06-24 21:47:09.908230044 +0200 ++++ gcc/fortran/trans-openmp.c 2010-07-26 10:45:15.830229443 +0200 +@@ -351,6 +351,18 @@ gfc_omp_disregard_value_expr (tree decl, + bool + gfc_omp_private_debug_clause (tree decl, bool shared) + { ++ if (TREE_STATIC (decl) || DECL_EXTERNAL (decl)) ++ { ++ if (DECL_THREAD_LOCAL_P (decl)) ++ return false; ++ if (DECL_HAS_VALUE_EXPR_P (decl)) ++ { ++ tree value = get_base_address (DECL_VALUE_EXPR (decl)); ++ if (value && DECL_P (value) && DECL_THREAD_LOCAL_P (value)) ++ return false; ++ } ++ } ++ + if (GFC_DECL_CRAY_POINTEE (decl)) + return true; + +--- gcc/gimplify.c.jj 2010-07-09 09:01:37.049604412 +0200 ++++ gcc/gimplify.c 2010-07-26 10:50:05.646291216 +0200 +@@ -66,6 +66,7 @@ enum gimplify_omp_var_data + GOVD_LOCAL = 128, + GOVD_DEBUG_PRIVATE = 256, + GOVD_PRIVATE_OUTER_REF = 512, ++ GOVD_THREADPRIVATE_WARNED = 1024, + GOVD_DATA_SHARE_CLASS = (GOVD_SHARED | GOVD_PRIVATE | GOVD_FIRSTPRIVATE + | GOVD_LASTPRIVATE | GOVD_REDUCTION | GOVD_LOCAL) + }; +@@ -1234,7 +1235,7 @@ gimplify_bind_expr (tree *expr_p, gimple + struct gimplify_omp_ctx *ctx = gimplify_omp_ctxp; + + /* Mark variable as local. */ +- if (ctx && !is_global_var (t) ++ if (ctx + && (! DECL_SEEN_IN_BIND_EXPR_P (t) + || splay_tree_lookup (ctx->variables, + (splay_tree_key) t) == NULL)) +@@ -5339,18 +5340,36 @@ omp_notice_threadprivate_variable (struc + { + splay_tree_node n; + +- if (ctx->region_type != ORT_UNTIED_TASK) ++ while (ctx && ctx->region_type == ORT_WORKSHARE) ++ { ++ n = splay_tree_lookup (ctx->variables, (splay_tree_key)decl); ++ if (n != NULL) ++ { ++ gcc_assert (n->value & GOVD_LOCAL); ++ return false; ++ } ++ ctx = ctx->outer_context; ++ } ++ if (ctx == NULL) + return false; ++ + n = splay_tree_lookup (ctx->variables, (splay_tree_key)decl); + if (n == NULL) ++ n = splay_tree_insert (ctx->variables, (splay_tree_key)decl, ++ DECL_CONTEXT (decl) == current_function_decl ++ ? GOVD_SHARED | GOVD_SEEN : 0); ++ if (ctx->region_type == ORT_UNTIED_TASK ++ && (n->value & GOVD_THREADPRIVATE_WARNED) == 0) + { + error ("threadprivate variable %qs used in untied task", + IDENTIFIER_POINTER (DECL_NAME (decl))); + error ("%Henclosing task", &ctx->location); +- splay_tree_insert (ctx->variables, (splay_tree_key)decl, 0); ++ n->value |= GOVD_THREADPRIVATE_WARNED; + } + if (decl2) +- splay_tree_insert (ctx->variables, (splay_tree_key)decl2, 0); ++ splay_tree_insert (ctx->variables, (splay_tree_key)decl2, ++ DECL_CONTEXT (decl2) == current_function_decl ++ ? GOVD_SHARED | GOVD_SEEN : 0); + return false; + } + +@@ -5779,7 +5798,9 @@ gimplify_adjust_omp_clauses_1 (splay_tre + break; + ctx = ctx->outer_context; + } +- if (ctx == NULL) ++ if (ctx == NULL ++ && (DECL_CONTEXT (decl) != current_function_decl ++ || gimplify_omp_ctxp->region_type == ORT_WORKSHARE)) + return 0; + } + code = OMP_CLAUSE_SHARED; +--- gcc/omp-low.c.jj 2010-06-11 11:06:00.913659301 +0200 ++++ gcc/omp-low.c 2010-07-26 10:45:15.866229447 +0200 +@@ -2222,6 +2222,17 @@ lower_rec_input_clauses (tree clauses, g + continue; + break; + case OMP_CLAUSE_SHARED: ++ if (pass == 0 ++ && is_global_var (OMP_CLAUSE_DECL (c)) ++ && (DECL_CONTEXT (OMP_CLAUSE_DECL (c)) ++ == current_function_decl) ++ && is_taskreg_ctx (ctx) ++ && !DECL_IGNORED_P (OMP_CLAUSE_DECL (c))) ++ { ++ new_var = omp_copy_decl_1 (OMP_CLAUSE_DECL (c), ctx); ++ SET_DECL_VALUE_EXPR (new_var, OMP_CLAUSE_DECL (c)); ++ DECL_HAS_VALUE_EXPR_P (new_var) = 1; ++ } + if (maybe_lookup_decl (OMP_CLAUSE_DECL (c), ctx) == NULL) + { + gcc_assert (is_global_var (OMP_CLAUSE_DECL (c))); +--- gcc/testsuite/gcc.dg/gomp/tls-3.c.jj 2010-07-26 10:45:15.868228753 +0200 ++++ gcc/testsuite/gcc.dg/gomp/tls-3.c 2010-07-26 10:45:15.868228753 +0200 +@@ -0,0 +1,21 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target tls_native } */ ++ ++int thr; ++#pragma omp threadprivate(thr) ++ ++void ++foo (void) ++{ ++ #pragma omp task untied /* { dg-error "enclosing task" } */ ++ { ++ static int thr2; ++ #pragma omp threadprivate(thr2) ++ static int thr3; ++ #pragma omp threadprivate(thr3) ++ thr++; /* { dg-error "used in untied task" } */ ++ thr2++; /* { dg-error "used in untied task" } */ ++ thr++; ++ thr2++; ++ } ++} diff --git a/src/patches/gcc/gcc44-rh610785.patch b/src/patches/gcc/gcc44-rh610785.patch new file mode 100644 index 000000000..91d093469 --- /dev/null +++ b/src/patches/gcc/gcc44-rh610785.patch @@ -0,0 +1,74 @@ +2010-07-07 Jakub Jelinek + + * tree-sra.c (sra_build_assignment): Don't add BIT_XOR_EXPR/MINUS_EXPR + of signbit if signbit is the most significant bit of utype already. + + * gcc.c-torture/execute/20100707-1.c: New test. + +--- gcc/tree-sra.c.jj 2010-05-13 13:08:52.000000000 +0200 ++++ gcc/tree-sra.c 2010-07-06 19:50:09.000000000 +0200 +@@ -2211,7 +2211,10 @@ sra_build_assignment (tree dst, tree src + + /* Perform sign extension, if required. + ??? This should never be necessary. */ +- if (!unsignedp) ++ if (!unsignedp ++ && (TREE_INT_CST_LOW (width) != TYPE_PRECISION (utype) ++ || (TREE_INT_CST_LOW (width) ++ != GET_MODE_BITSIZE (TYPE_MODE (utype))))) + { + tree signbit = int_const_binop (LSHIFT_EXPR, + build_int_cst_wide (utype, 1, 0), +--- gcc/testsuite/gcc.c-torture/execute/20100707-1.c 2010-05-27 15:41:40.446237053 +0200 ++++ gcc/testsuite/gcc.c-torture/execute/20100707-1.c 2010-07-06 13:55:35.000000000 +0200 +@@ -0,0 +1,50 @@ ++struct S { int s; }; ++struct T { int w; int h; }; ++int vr; ++ ++inline struct T ++bar (const struct S * x) ++{ ++ struct T t; ++ t.w = vr; ++ t.h = x->s; ++ return t; ++} ++ ++__attribute__ ((noinline)) ++void foo (struct S * w, unsigned char *x, int y, int *z[2]) ++{ ++ struct T t; ++ int i, j, k; ++ t = bar (w); ++ k = t.w + 2; ++ for (i = 0; i <= t.h; i++) ++ { ++ int *u = z[i > 0] + 1; ++ unsigned char *v; ++ int q = 0; ++ v = x + k * i + 1; ++ for (j = 0; j < t.w; j++) ++ { ++ int m = u[j]; ++ if (m > y && !q && v[j - k] != 2) ++ v[j] = 0; ++ } ++ } ++} ++ ++unsigned char b[64]; ++ ++int ++main (void) ++{ ++ int v[32], *z[2]; ++ struct S s; ++ __builtin_memset (v, 0, sizeof (v)); ++ vr = 16; ++ s.s = 16; ++ z[0] = v; ++ z[1] = v; ++ foo (&s, b + 32, -1, z); ++ return 0; ++} diff --git a/src/patches/gcc/gcc44-unwind-debug-hook.patch b/src/patches/gcc/gcc44-unwind-debug-hook.patch new file mode 100644 index 000000000..9b7c59eb0 --- /dev/null +++ b/src/patches/gcc/gcc44-unwind-debug-hook.patch @@ -0,0 +1,51 @@ +2010-04-27 Jakub Jelinek + + * unwind-dw2.c (_Unwind_DebugHook): Add used attribute. + +2009-05-27 Tom Tromey + + * unwind-dw2.c (_Unwind_DebugHook): New function. + (uw_install_context): Call _Unwind_DebugHook. + +--- gcc/unwind-dw2.c (revision 147933) ++++ gcc/unwind-dw2.c (revision 147934) +@@ -1473,18 +1473,32 @@ uw_init_context_1 (struct _Unwind_Contex + context->ra = __builtin_extract_return_addr (outer_ra); + } + ++static void _Unwind_DebugHook (void *, void *) ++ __attribute__ ((__noinline__, __used__)); ++ ++/* This function is called during unwinding. It is intended as a hook ++ for a debugger to intercept exceptions. CFA is the CFA of the ++ target frame. HANDLER is the PC to which control will be ++ transferred. */ ++static void ++_Unwind_DebugHook (void *cfa __attribute__ ((__unused__)), ++ void *handler __attribute__ ((__unused__))) ++{ ++ asm (""); ++} + + /* Install TARGET into CURRENT so that we can return to it. This is a + macro because __builtin_eh_return must be invoked in the context of + our caller. */ + +-#define uw_install_context(CURRENT, TARGET) \ +- do \ +- { \ +- long offset = uw_install_context_1 ((CURRENT), (TARGET)); \ +- void *handler = __builtin_frob_return_addr ((TARGET)->ra); \ +- __builtin_eh_return (offset, handler); \ +- } \ ++#define uw_install_context(CURRENT, TARGET) \ ++ do \ ++ { \ ++ long offset = uw_install_context_1 ((CURRENT), (TARGET)); \ ++ void *handler = __builtin_frob_return_addr ((TARGET)->ra); \ ++ _Unwind_DebugHook ((TARGET)->cfa, handler); \ ++ __builtin_eh_return (offset, handler); \ ++ } \ + while (0) + + static long diff --git a/src/patches/glibc-cfi-entry-not-closed.patch b/src/patches/glibc-cfi-entry-not-closed.patch new file mode 100644 index 000000000..02cfe8fa6 --- /dev/null +++ b/src/patches/glibc-cfi-entry-not-closed.patch @@ -0,0 +1,23 @@ +--- glibc-2.12.2/ports/sysdeps/unix/sysv/linux/arm/sigrestorer.S 2011-09-08 22:22:41.000000000 +0400 ++++ glibc-2.12.2/ports/sysdeps/unix/sysv/linux/arm/sigrestorer.S 2011-09-08 21:44:49.000000000 +0400 +@@ -18,16 +18,20 @@ + + #include + ++ .text ++ + /* If no SA_RESTORER function was specified by the application we use + one of these. This avoids the need for the kernel to synthesise a return + instruction on the stack, which would involve expensive cache flushes. */ + + ENTRY(__default_sa_restorer) + swi SYS_ify(sigreturn) ++PSEUDO_END (__default_sa_restorer) + + #ifdef __NR_rt_sigreturn + + ENTRY(__default_rt_sa_restorer) + swi SYS_ify(rt_sigreturn) ++PSEUDO_END (__default_rt_sa_restorer) + + #endif diff --git a/src/patches/glibc-ports-avoid-using-asm-procinfo.patch b/src/patches/glibc-ports-avoid-using-asm-procinfo.patch deleted file mode 100644 index 53a6d1b4d..000000000 --- a/src/patches/glibc-ports-avoid-using-asm-procinfo.patch +++ /dev/null @@ -1,340 +0,0 @@ -# -# Submitted-By: Marc Kleine-Budde, 2006-11-22 -# Committed-By: Marc Kleine-Budde -# -# Error: -# -# try to compile glibc-ports with sanitized headers -# -# arm-v4t-linux-gnueabi-gcc ../ports/sysdeps/arm/eabi/setfpucw.c -c -#-std=gnu99 -O2 -Wall -Winline -Wwrite-strings -fmerge-all-constants -#-g -Wstrict-prototypes -Wno-uninitialized -D__NO_MATH_INLINES -#-D__LIBC_INTERNAL_MATH_INLINES -DNO_LONG_DOUBLE -#-D_Mlong_double_=double -I../include -#-I/home/mkl/pengutronix/ptxdist/build/OSELAS.Toolchain-trunk-headers/build-target/glibc-2.5-build/math -#-I/home/mkl/pengutronix/ptxdist/build/OSELAS.Toolchain-trunk-headers/build-target/glibc-2.5-build -#-I../ports/sysdeps/arm/elf -#-I../ports/sysdeps/unix/sysv/linux/arm/eabi/nptl -#-I../ports/sysdeps/unix/sysv/linux/arm/eabi -#-I../ports/sysdeps/unix/sysv/linux/arm/nptl -#-I../ports/sysdeps/unix/sysv/linux/arm -#-I../ports/sysdeps/unix/sysv/linux -I../nptl/sysdeps/unix/sysv/linux -#-I../nptl/sysdeps/pthread -I../sysdeps/pthread -#-I../sysdeps/unix/sysv/linux -I../sysdeps/gnu -#-I../sysdeps/unix/common -I../sysdeps/unix/mman -#-I../sysdeps/unix/inet -I../ports/sysdeps/unix/sysv -#-I../nptl/sysdeps/unix/sysv -I../sysdeps/unix/sysv -#-I../ports/sysdeps/unix/arm -I../ports/sysdeps/unix -#-I../nptl/sysdeps/unix -I../sysdeps/unix -I../sysdeps/posix -#-I../ports/sysdeps/arm/eabi -I../ports/sysdeps/arm/nptl -#-I../ports/sysdeps/arm -I../sysdeps/wordsize-32 -#-I../sysdeps/ieee754/flt-32 -I../sysdeps/ieee754/dbl-64 -#-I../sysdeps/ieee754 -I../sysdeps/generic/elf -I../sysdeps/generic -#-I../ports -I../nptl -I.. -I../libio -I. -nostdinc -isystem -#/ptx/work/mkl/ptxdist/build/OSELAS.Toolchain-trunk-headers/install/arm-v4t-linux-gnueabi/gcc-4.1.1-glibc-2.5-linux-2.6.19-rc6-s/bin/../lib/gcc/arm-v4t-linux-gnueabi/4.1.1/include -#-isystem -#/home/mkl/pengutronix/ptxdist/build/OSELAS.Toolchain-trunk-headers/install/arm-v4t-linux-gnueabi/gcc-4.1.1-glibc-2.5-linux-2.6.19-rc6-s/sysroot-arm-v4t-linux-gnueabi/usr/include -#-D_LIBC_REENTRANT -include ../include/libc-symbols.h -o -#/home/mkl/pengutronix/ptxdist/build/OSELAS.Toolchain-trunk-headers/build-target/glibc-2.5-build/math/setfpucw.o -#-MD -MP -MF -#/home/mkl/pengutronix/ptxdist/build/OSELAS.Toolchain-trunk-headers/build-target/glibc-2.5-build/math/setfpucw.o.dt -#-MT -#/home/mkl/pengutronix/ptxdist/build/OSELAS.Toolchain-trunk-headers/build-target/glibc-2.5-build/math/setfpucw.o -# ../ports/sysdeps/arm/eabi/setfpucw.c:26:26: error: asm/procinfo.h: No such file or directory -# ../ports/sysdeps/arm/eabi/setfpucw.c: In function '__setfpucw': -# ../ports/sysdeps/arm/eabi/setfpucw.c:31: error: 'HWCAP_VFP' undeclared (first use in this function) -# ../ports/sysdeps/arm/eabi/setfpucw.c:31: error: (Each undeclared identifier is reported only once -# ../ports/sysdeps/arm/eabi/setfpucw.c:31: error: for each function it appears in.) -# -# Description: -# -# http://sourceware.org/ml/libc-ports/2006-10/msg00040.html -# -# State: -# -# added to glibc-ports on 10/31/2006 06:20 PM -# -Date: Tue, 24 Oct 2006 19:25:12 +0000 (UTC) -From: "Joseph S. Myers" -To: libc-ports@sourceware.org -Subject: Avoid using asm/procinfo.h - -I previously noted - that the -use of , a Linux-specific kernel header, in -sysdeps/arm/eabi, is an abstraction violation, and that in principle -all the files in sysdeps/arm/eabi should use sysdep.h not -asm/procinfo.h for HWCAP_VFP. - -The ARM kernel maintainers have now declared that -should not be used outside the kernel at all (and in particular that -headers_install is correct in not exporting it), and that these -definitions will move to a different kernel header. This gives a -concrete reason for making the change to use glibc's internal -definitions, which this patch does, thereby allowing glibc to build -with the exported headers. - -2006-10-24 Joseph S. Myers - - * sysdeps/arm/eabi/fclrexcpt.c: Include instead of - . Use HWCAP_ARM_VFP instead of HWCAP_VFP. - * sysdeps/arm/eabi/fedisblxcpt.c: Likewise. - * sysdeps/arm/eabi/feenablxcpt.c: Likewise. - * sysdeps/arm/eabi/fegetenv.c: Likewise. - * sysdeps/arm/eabi/fegetexcept.c: Likewise. - * sysdeps/arm/eabi/fegetround.c: Likewise. - * sysdeps/arm/eabi/feholdexcpt.c: Likewise. - * sysdeps/arm/eabi/fesetenv.c: Likewise. - * sysdeps/arm/eabi/fesetround.c: Likewise. - * sysdeps/arm/eabi/fraiseexcpt.c: Likewise. - * sysdeps/arm/eabi/fsetexcptflg.c: Likewise. - * sysdeps/arm/eabi/ftestexcept.c: Likewise. - * sysdeps/arm/eabi/setfpucw.c: Likewise. - -Index: glibc-ports-2.5/sysdeps/arm/eabi/fclrexcpt.c -=================================================================== ---- glibc-ports-2.5.orig/sysdeps/arm/eabi/fclrexcpt.c -+++ glibc-ports-2.5/sysdeps/arm/eabi/fclrexcpt.c -@@ -23,12 +23,12 @@ - #include - #include - #include --#include -+#include - - int - __feclearexcept (int excepts) - { -- if (GLRO (dl_hwcap) & HWCAP_VFP) -+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) - { - unsigned long int temp; - -Index: glibc-ports-2.5/sysdeps/arm/eabi/fedisblxcpt.c -=================================================================== ---- glibc-ports-2.5.orig/sysdeps/arm/eabi/fedisblxcpt.c -+++ glibc-ports-2.5/sysdeps/arm/eabi/fedisblxcpt.c -@@ -24,12 +24,12 @@ - #include - #include - #include --#include -+#include - - int - fedisableexcept (int excepts) - { -- if (GLRO (dl_hwcap) & HWCAP_VFP) -+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) - { - unsigned long int new_exc, old_exc; - -Index: glibc-ports-2.5/sysdeps/arm/eabi/feenablxcpt.c -=================================================================== ---- glibc-ports-2.5.orig/sysdeps/arm/eabi/feenablxcpt.c -+++ glibc-ports-2.5/sysdeps/arm/eabi/feenablxcpt.c -@@ -24,12 +24,12 @@ - #include - #include - #include --#include -+#include - - int - feenableexcept (int excepts) - { -- if (GLRO (dl_hwcap) & HWCAP_VFP) -+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) - { - unsigned long int new_exc, old_exc; - -Index: glibc-ports-2.5/sysdeps/arm/eabi/fegetenv.c -=================================================================== ---- glibc-ports-2.5.orig/sysdeps/arm/eabi/fegetenv.c -+++ glibc-ports-2.5/sysdeps/arm/eabi/fegetenv.c -@@ -23,12 +23,12 @@ - #include - #include - #include --#include -+#include - - int - __fegetenv (fenv_t *envp) - { -- if (GLRO (dl_hwcap) & HWCAP_VFP) -+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) - { - unsigned long int temp; - _FPU_GETCW (temp); -Index: glibc-ports-2.5/sysdeps/arm/eabi/fegetexcept.c -=================================================================== ---- glibc-ports-2.5.orig/sysdeps/arm/eabi/fegetexcept.c -+++ glibc-ports-2.5/sysdeps/arm/eabi/fegetexcept.c -@@ -24,12 +24,12 @@ - #include - #include - #include --#include -+#include - - int - fegetexcept (void) - { -- if (GLRO (dl_hwcap) & HWCAP_VFP) -+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) - { - unsigned long temp; - -Index: glibc-ports-2.5/sysdeps/arm/eabi/fegetround.c -=================================================================== ---- glibc-ports-2.5.orig/sysdeps/arm/eabi/fegetround.c -+++ glibc-ports-2.5/sysdeps/arm/eabi/fegetround.c -@@ -23,12 +23,12 @@ - #include - #include - #include --#include -+#include - - int - fegetround (void) - { -- if (GLRO (dl_hwcap) & HWCAP_VFP) -+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) - { - unsigned int temp; - -Index: glibc-ports-2.5/sysdeps/arm/eabi/feholdexcpt.c -=================================================================== ---- glibc-ports-2.5.orig/sysdeps/arm/eabi/feholdexcpt.c -+++ glibc-ports-2.5/sysdeps/arm/eabi/feholdexcpt.c -@@ -23,12 +23,12 @@ - #include - #include - #include --#include -+#include - - int - feholdexcept (fenv_t *envp) - { -- if (GLRO (dl_hwcap) & HWCAP_VFP) -+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) - { - unsigned long int temp; - -Index: glibc-ports-2.5/sysdeps/arm/eabi/fesetenv.c -=================================================================== ---- glibc-ports-2.5.orig/sysdeps/arm/eabi/fesetenv.c -+++ glibc-ports-2.5/sysdeps/arm/eabi/fesetenv.c -@@ -23,12 +23,12 @@ - #include - #include - #include --#include -+#include - - int - __fesetenv (const fenv_t *envp) - { -- if (GLRO (dl_hwcap) & HWCAP_VFP) -+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) - { - unsigned int temp; - -Index: glibc-ports-2.5/sysdeps/arm/eabi/fesetround.c -=================================================================== ---- glibc-ports-2.5.orig/sysdeps/arm/eabi/fesetround.c -+++ glibc-ports-2.5/sysdeps/arm/eabi/fesetround.c -@@ -23,12 +23,12 @@ - #include - #include - #include --#include -+#include - - int - fesetround (int round) - { -- if (GLRO (dl_hwcap) & HWCAP_VFP) -+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) - { - fpu_control_t temp; - -Index: glibc-ports-2.5/sysdeps/arm/eabi/fraiseexcpt.c -=================================================================== ---- glibc-ports-2.5.orig/sysdeps/arm/eabi/fraiseexcpt.c -+++ glibc-ports-2.5/sysdeps/arm/eabi/fraiseexcpt.c -@@ -24,12 +24,12 @@ - #include - #include - #include --#include -+#include - - int - feraiseexcept (int excepts) - { -- if (GLRO (dl_hwcap) & HWCAP_VFP) -+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) - { - int fpscr; - const float fp_zero = 0.0, fp_one = 1.0, fp_max = FLT_MAX, -Index: glibc-ports-2.5/sysdeps/arm/eabi/fsetexcptflg.c -=================================================================== ---- glibc-ports-2.5.orig/sysdeps/arm/eabi/fsetexcptflg.c -+++ glibc-ports-2.5/sysdeps/arm/eabi/fsetexcptflg.c -@@ -24,12 +24,12 @@ - #include - #include - #include --#include -+#include - - int - __fesetexceptflag (const fexcept_t *flagp, int excepts) - { -- if (GLRO (dl_hwcap) & HWCAP_VFP) -+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) - { - fexcept_t temp; - -Index: glibc-ports-2.5/sysdeps/arm/eabi/ftestexcept.c -=================================================================== ---- glibc-ports-2.5.orig/sysdeps/arm/eabi/ftestexcept.c -+++ glibc-ports-2.5/sysdeps/arm/eabi/ftestexcept.c -@@ -23,12 +23,12 @@ - #include - #include - #include --#include -+#include - - int - fetestexcept (int excepts) - { -- if (GLRO (dl_hwcap) & HWCAP_VFP) -+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) - { - fexcept_t temp; - -Index: glibc-ports-2.5/sysdeps/arm/eabi/setfpucw.c -=================================================================== ---- glibc-ports-2.5.orig/sysdeps/arm/eabi/setfpucw.c -+++ glibc-ports-2.5/sysdeps/arm/eabi/setfpucw.c -@@ -23,12 +23,12 @@ - #include - #include - #include --#include -+#include - - void - __setfpucw (fpu_control_t set) - { -- if (GLRO (dl_hwcap) & HWCAP_VFP) -+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP) - { - fpu_control_t cw; - diff --git a/src/patches/glibc-remove-ctors-dtors-output-sections.patch b/src/patches/glibc-remove-ctors-dtors-output-sections.patch new file mode 100644 index 000000000..91155c9af --- /dev/null +++ b/src/patches/glibc-remove-ctors-dtors-output-sections.patch @@ -0,0 +1,150 @@ +From 4a531bb0b3b582cb693de9f76d2d97d970f9a5d5 Mon Sep 17 00:00:00 2001 +From: H.J. Lu +Date: Fri, 24 Dec 2010 20:14:37 -0500 +Subject: [PATCH] Remove `.ctors' and `.dtors' output sections + +--- + config.h.in | 3 + + configure.in | 2 + + elf/sofini.c | 2 + + elf/soinit.c | 2 + + sysdeps/i386/init-first.c | 2 + + sysdeps/mach/hurd/i386/init-first.c | 2 +- + sysdeps/mach/hurd/powerpc/init-first.c | 2 +- + sysdeps/sh/init-first.c | 2 + + sysdeps/unix/sysv/linux/init-first.c | 2 +- + 9 files changed, 16 insertions(+), 3 deletions(-) + +diff --git a/config.h.in b/config.h.in +index 18bf01a..9e797eb 100644 +--- a/config.h.in ++++ b/config.h.in +@@ -201,6 +201,9 @@ + /* Define if multi-arch DSOs should be generated. */ + #undef USE_MULTIARCH + ++/* Define if `.ctors' and `.dtors' sections shouldn't be used. */ ++#undef NO_CTORS_DTORS_SECTIONS ++ + /* + */ + +diff --git a/configure.in b/configure.in +index d8cd5f1..ad25b9b 100644 +--- a/configure.in ++++ b/configure.in +@@ -1497,6 +1497,8 @@ EOF + rm -f conftest*]) + if test $libc_cv_initfini_array != yes; then + AC_MSG_ERROR([Need linker with .init_array/.fini_array support.]) ++ elif AC_TRY_COMMAND([${CC-cc} -Wl,--verbose 2>&1|grep SORT_BY_INIT_PRIORITY 1>&AS_MESSAGE_LOG_FD]); then ++ AC_DEFINE(NO_CTORS_DTORS_SECTIONS) + fi + + AC_CACHE_CHECK(for libunwind-support in compiler, +diff --git a/elf/sofini.c b/elf/sofini.c +index 5e06f0c..13e74b7 100644 +--- a/elf/sofini.c ++++ b/elf/sofini.c +@@ -1,12 +1,14 @@ + /* Finalizer module for ELF shared C library. This provides terminating + null pointer words in the `.ctors' and `.dtors' sections. */ + ++#ifndef NO_CTORS_DTORS_SECTIONS + static void (*const __CTOR_END__[1]) (void) + __attribute__ ((used, section (".ctors"))) + = { 0 }; + static void (*const __DTOR_END__[1]) (void) + __attribute__ ((used, section (".dtors"))) + = { 0 }; ++#endif + + /* Terminate the frame unwind info section with a 4byte 0 as a sentinel; + this would be the 'length' field in a real FDE. */ +diff --git a/elf/soinit.c b/elf/soinit.c +index 6fecbb5..1db676a 100644 +--- a/elf/soinit.c ++++ b/elf/soinit.c +@@ -3,6 +3,7 @@ + the `.ctors' and `.dtors' sections so the lists are terminated, and + calling those lists of functions. */ + ++#ifndef NO_CTORS_DTORS_SECTIONS + #include + #include + +@@ -40,3 +41,4 @@ __libc_fini (void) + + void (*_fini_ptr) (void) __attribute__ ((section (".fini_array"))) + = &__libc_fini; ++#endif +diff --git a/sysdeps/i386/init-first.c b/sysdeps/i386/init-first.c +index c6355a8..2af042f 100644 +--- a/sysdeps/i386/init-first.c ++++ b/sysdeps/i386/init-first.c +@@ -59,7 +59,9 @@ _init (int argc, ...) + { + init (&argc); + ++#ifndef NO_CTORS_DTORS_SECTIONS + __libc_global_ctors (); ++#endif + } + #endif + +diff --git a/sysdeps/mach/hurd/i386/init-first.c b/sysdeps/mach/hurd/i386/init-first.c +index f9a7a58..60823bd 100644 +--- a/sysdeps/mach/hurd/i386/init-first.c ++++ b/sysdeps/mach/hurd/i386/init-first.c +@@ -92,7 +92,7 @@ posixland_init (int argc, char **argv, char **envp) + __getopt_clean_environment (envp); + #endif + +-#ifdef SHARED ++#if defined SHARED && !defined NO_CTORS_DTORS_SECTIONS + __libc_global_ctors (); + #endif + } +diff --git a/sysdeps/mach/hurd/powerpc/init-first.c b/sysdeps/mach/hurd/powerpc/init-first.c +index 20fa1d4..21b5054 100644 +--- a/sysdeps/mach/hurd/powerpc/init-first.c ++++ b/sysdeps/mach/hurd/powerpc/init-first.c +@@ -82,7 +82,7 @@ posixland_init (int argc, char **argv, char **envp) + __getopt_clean_environment (__environ); + #endif + +-#ifdef SHARED ++#if defined SHARED && !defined NO_CTORS_DTORS_SECTIONS + __libc_global_ctors (); + #endif + } +diff --git a/sysdeps/sh/init-first.c b/sysdeps/sh/init-first.c +index d816625..1f3a821 100644 +--- a/sysdeps/sh/init-first.c ++++ b/sysdeps/sh/init-first.c +@@ -59,7 +59,9 @@ _init (int argc, ...) + { + init (&argc); + ++#ifndef NO_CTORS_DTORS_SECTIONS + __libc_global_ctors (); ++#endif + } + #endif + +diff --git a/sysdeps/unix/sysv/linux/init-first.c b/sysdeps/unix/sysv/linux/init-first.c +index 7b2333d..a60212f 100644 +--- a/sysdeps/unix/sysv/linux/init-first.c ++++ b/sysdeps/unix/sysv/linux/init-first.c +@@ -93,7 +93,7 @@ _init (int argc, char **argv, char **envp) + __getopt_clean_environment (envp); + #endif + +-#ifdef SHARED ++#if defined SHARED && !defined NO_CTORS_DTORS_SECTIONS + __libc_global_ctors (); + #endif + } +-- +1.7.3.4 + diff --git a/src/patches/glibc-resolv-stack_chk_fail.patch b/src/patches/glibc-resolv-stack_chk_fail.patch new file mode 100644 index 000000000..00bb710ab --- /dev/null +++ b/src/patches/glibc-resolv-stack_chk_fail.patch @@ -0,0 +1,35 @@ +From e057a1b5930ec538c2b8abbba700a436ef2c81d5 Mon Sep 17 00:00:00 2001 +From: Joseph Myers +Date: Wed, 21 Sep 2011 13:27:50 -0700 +Subject: [PATCH] Link libresolv.so with ld.so for __stack_chk_guard. + +--- + resolv/Makefile | 8 +++++++- + 1 files changed, 7 insertions(+), 1 deletions(-) + +diff --git a/resolv/Makefile b/resolv/Makefile +index ec3788f..b4287de 100644 +--- a/resolv/Makefile ++++ b/resolv/Makefile +@@ -1,4 +1,5 @@ +-# Copyright (C) 1994-2001,2003,2004,2007,2008 Free Software Foundation, Inc. ++# Copyright (C) 1994-2001,2003,2004,2007,2008,2011 ++# 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 +@@ -88,6 +89,11 @@ CFLAGS-res_hconf.c = -fexceptions + # This ensures they will load libc.so for needed symbols if loaded by + # a statically-linked program that hasn't already loaded it. + $(objpfx)libresolv.so: $(common-objpfx)libc.so $(common-objpfx)libc_nonshared.a ++# Some hosts need '__stack_chk_guard', so pull in the definition from ++# ld.so if required. ++ifeq (yesyes,$(have-ssp)$(elf)) ++LDLIBS-resolv.so += $(as-needed) $(elfobjdir)/ld.so $(no-as-needed) ++endif + + # The DNS NSS modules needs the resolver. + $(objpfx)libnss_dns.so: $(objpfx)libresolv.so $(common-objpfx)libc.so \ +-- +1.7.3.4 + diff --git a/src/patches/glibc-test-installation.pl-libgcc_s.patch b/src/patches/glibc-test-installation.pl-libgcc_s.patch new file mode 100644 index 000000000..a63d5d826 --- /dev/null +++ b/src/patches/glibc-test-installation.pl-libgcc_s.patch @@ -0,0 +1,97 @@ +From 6e236b92765cdafb46d19e4907471699accc8269 Mon Sep 17 00:00:00 2001 +From: Siddhesh Poyarekar +Date: Thu, 26 Apr 2012 09:18:48 +0530 +Subject: [PATCH] move libgcc_s soname definition to shlib-versions + +diff --git a/nptl/sysdeps/pthread/unwind-forcedunwind.c b/nptl/sysdeps/pthread/unwind-forcedunwind.c +index adce6e7..60dfbe6 100644 +--- a/nptl/sysdeps/pthread/unwind-forcedunwind.c ++++ b/nptl/sysdeps/pthread/unwind-forcedunwind.c +@@ -21,7 +21,7 @@ + #include + #include + #include +-#include ++#include + + static void *libgcc_s_handle; + static void (*libgcc_s_resume) (struct _Unwind_Exception *exc); +diff --git a/scripts/test-installation.pl b/scripts/test-installation.pl +index c4f3d6d..1b22086 100755 +--- a/scripts/test-installation.pl ++++ b/scripts/test-installation.pl + +@@ -105,9 +105,10 @@ while () { + # - libnss1_* from glibc-compat add-on + # - libthread_db since it contains unresolved references + # - it's just a test NSS module ++ # - We don't provide the libgcc so we don't test it + if ($name ne "nss_ldap" && $name ne "db1" + && !($name =~/^nss1_/) && $name ne "thread_db" +- && $name ne "nss_test1") { ++ && $name ne "nss_test1" && $name ne "libgcc_s") { + $link_libs .= " -l$name"; + $versions{$name} = $version; + } +diff --git a/shlib-versions b/shlib-versions +index c530a44..840e08f 100644 +--- a/shlib-versions ++++ b/shlib-versions +@@ -124,3 +124,7 @@ sparc64.*-.*-.* libBrokenLocale=1 GLIBC_2.2 + + # The asynchronous name lookup library. + .*-.*-.* libanl=1 ++ ++# This defines the libgcc soname version this glibc is to load for ++# asynchronous cancellation to work correctly. ++.*-.*-.* libgcc_s=1 +diff --git a/sysdeps/generic/framestate.c b/sysdeps/generic/framestate.c +index 3638bbe..3bad5b5 100644 +--- a/sysdeps/generic/framestate.c ++++ b/sysdeps/generic/framestate.c +@@ -1,5 +1,5 @@ + /* __frame_state_for unwinder helper function wrapper. +- Copyright (C) 2001, 2003 Free Software Foundation, Inc. ++ Copyright (C) 2001-2012 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jakub Jelinek , 2001. + +@@ -23,7 +23,7 @@ + #define __frame_state_for fallback_frame_state_for + #include + #undef __frame_state_for +-#include ++#include + + typedef struct frame_state * (*framesf)(void *pc, struct frame_state *); + struct frame_state *__frame_state_for (void *pc, +diff --git a/sysdeps/generic/libgcc_s.h b/sysdeps/generic/libgcc_s.h +deleted file mode 100644 +index e74a103..0000000 +--- a/sysdeps/generic/libgcc_s.h ++++ /dev/null +@@ -1,2 +0,0 @@ +-/* Name of libgcc_s library provided by gcc. */ +-#define LIBGCC_S_SO "libgcc_s.so.1" +diff --git a/sysdeps/gnu/unwind-resume.c b/sysdeps/gnu/unwind-resume.c +index 1d3e33f..6afaebd 100644 +--- a/sysdeps/gnu/unwind-resume.c ++++ b/sysdeps/gnu/unwind-resume.c +@@ -1,4 +1,4 @@ +-/* Copyright (C) 2003 Free Software Foundation, Inc. ++/* Copyright (C) 2003-2012 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jakub Jelinek . + +@@ -19,7 +19,7 @@ + #include + #include + #include +-#include ++#include + + static void (*libgcc_s_resume) (struct _Unwind_Exception *exc); + static _Unwind_Reason_Code (*libgcc_s_personality) +-- +1.7.3.4 + diff --git a/src/patches/glibc-test-installation.pl-nss_test1.patch b/src/patches/glibc-test-installation.pl-nss_test1.patch new file mode 100644 index 000000000..8881d9498 --- /dev/null +++ b/src/patches/glibc-test-installation.pl-nss_test1.patch @@ -0,0 +1,31 @@ +From 9191c04a7e19fffbea0a08523e579cd8e55142df Mon Sep 17 00:00:00 2001 +From: Ulrich Drepper +Date: Sat, 23 Jul 2011 15:28:31 -0400 +Subject: [PATCH] Adjust test for correct installation + +diff --git a/scripts/test-installation.pl b/scripts/test-installation.pl +index 90cd9d7..25a919b 100755 +--- a/scripts/test-installation.pl ++++ b/scripts/test-installation.pl +@@ -1,5 +1,5 @@ + #! /usr/bin/perl -w +-# Copyright (C) 1997, 1998, 1999, 2004 Free Software Foundation, Inc. ++# Copyright (C) 1997, 1998, 1999, 2004, 2011 Free Software Foundation, Inc. + # This file is part of the GNU C Library. + # Contributed by Andreas Jaeger , 1997. + +@@ -105,8 +105,10 @@ while () { + # - libdb1 since it conflicts with libdb + # - libnss1_* from glibc-compat add-on + # - libthread_db since it contains unresolved references ++ # - it's just a test NSS module + if ($name ne "nss_ldap" && $name ne "db1" +- && !($name =~/^nss1_/) && $name ne "thread_db") { ++ && !($name =~/^nss1_/) && $name ne "thread_db" ++ && $name ne "nss_test1") { + $link_libs .= " -l$name"; + $versions{$name} = $version; + } +-- +1.7.3.4 + diff --git a/src/patches/glibc/glibc-aliasing.patch b/src/patches/glibc/glibc-aliasing.patch new file mode 100644 index 000000000..016a4d496 --- /dev/null +++ b/src/patches/glibc/glibc-aliasing.patch @@ -0,0 +1,87 @@ +Index: glibc-2.12-2-gc4ccff1/elf/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/Makefile ++++ glibc-2.12-2-gc4ccff1/elf/Makefile +@@ -129,6 +129,7 @@ include ../Makeconfig + ifeq ($(unwind-find-fde),yes) + routines += unwind-dw2-fde-glibc + shared-only-routines += unwind-dw2-fde-glibc ++CFLAGS-unwind-dw2-fde-glibc.c += -fno-strict-aliasing + endif + + before-compile = $(objpfx)trusted-dirs.h +Index: glibc-2.12-2-gc4ccff1/inet/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/inet/Makefile ++++ glibc-2.12-2-gc4ccff1/inet/Makefile +@@ -57,6 +57,8 @@ tests := htontest test_ifindex tst-ntoa + + include ../Rules + ++CFLAGS-tst-inet6_rth.c += -fno-strict-aliasing ++ + ifeq ($(have-thread-library),yes) + + CFLAGS-gethstbyad_r.c = -DUSE_NSCD=1 -fexceptions +Index: glibc-2.12-2-gc4ccff1/nis/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nis/Makefile ++++ glibc-2.12-2-gc4ccff1/nis/Makefile +@@ -69,6 +69,8 @@ libnss_nisplus-inhibit-o = $(filter-out + + include ../Rules + ++CFLAGS-nis_findserv.c += -fno-strict-aliasing ++CFLAGS-ypclnt.c += -fno-strict-aliasing + + $(objpfx)libnss_compat.so: $(objpfx)libnsl.so$(libnsl.so-version) + $(objpfx)libnss_nis.so: $(objpfx)libnsl.so$(libnsl.so-version) \ +Index: glibc-2.12-2-gc4ccff1/nss/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nss/Makefile ++++ glibc-2.12-2-gc4ccff1/nss/Makefile +@@ -74,6 +74,7 @@ endif + + include ../Rules + ++CFLAGS-files-hosts.c += -fno-strict-aliasing + + ifeq (yes,$(build-static-nss)) + $(objpfx)getent: $(objpfx)libnss_files.a +Index: glibc-2.12-2-gc4ccff1/resolv/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/resolv/Makefile ++++ glibc-2.12-2-gc4ccff1/resolv/Makefile +@@ -77,6 +77,7 @@ CPPFLAGS += -Dgethostbyname=res_gethostb + -Dgetnetbyaddr=res_getnetbyaddr + + CFLAGS-res_hconf.c = -fexceptions ++CFLAGS-res_send.c += -fno-strict-aliasing + + # The BIND code elicits some harmless warnings. + +cflags += -Wno-strict-prototypes -Wno-write-strings +Index: glibc-2.12-2-gc4ccff1/sunrpc/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sunrpc/Makefile ++++ glibc-2.12-2-gc4ccff1/sunrpc/Makefile +@@ -129,6 +129,10 @@ CFLAGS-openchild.c = -fexceptions + + CPPFLAGS += -D_RPC_THREAD_SAFE_ + ++CFLAGS-clnt_tcp.c += -fno-strict-aliasing ++CFLAGS-clnt_udp.c += -fno-strict-aliasing ++CFLAGS-clnt_unix.c += -fno-strict-aliasing ++ + include ../Rules + + $(objpfx)rpcgen: $(addprefix $(objpfx),$(rpcgen-objs)) \ +Index: glibc-2.12-2-gc4ccff1/sysdeps/powerpc/powerpc64/elf/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/powerpc/powerpc64/elf/Makefile ++++ glibc-2.12-2-gc4ccff1/sysdeps/powerpc/powerpc64/elf/Makefile +@@ -9,3 +9,5 @@ CFLAGS-rtld-mempcpy.os = $(no-special-re + CFLAGS-rtld-memmove.os = $(no-special-regs) + CFLAGS-rtld-memchr.os = $(no-special-regs) + CFLAGS-rtld-strnlen.os = $(no-special-regs) ++ ++CFLAGS-gmon-start.c += -fno-strict-aliasing diff --git a/src/patches/glibc/glibc-fedora.patch b/src/patches/glibc/glibc-fedora.patch new file mode 100644 index 000000000..5a7fce94d --- /dev/null +++ b/src/patches/glibc/glibc-fedora.patch @@ -0,0 +1,2106 @@ +--- glibc-2.12-2-gc4ccff1/ChangeLog ++++ glibc-2.12-1/ChangeLog +@@ -241,6 +241,12 @@ + + * Makerules (libc-abis): Fix search for libc-abis in add-ons. + ++2010-04-06 Ulrich Drepper ++ ++ * sysdeps/posix/getaddrinfo.c (default_scopes): Assign global ++ scope to RFC 1918 addresses. ++ * posix/gai.conf: Document difference from RFC 3484. ++ + 2010-04-05 Thomas Schwinge + + * sysdeps/gnu/unwind-resume.c: New, moved from nptl/sysdeps/pthread/. +@@ -995,6 +1001,19 @@ + * sysdeps/x86_64/fpu/fegetenv.c: Likewise + * sysdeps/s390/fpu/fegetenv.c: Likewise. Remove unused headers. + ++2009-10-27 Aurelien Jarno ++ ++ [BZ #10855] ++ * locale/programs/locarchive.c: use MMAP_SHARED to reserve memory ++ used later with MMAP_FIXED | MMAP_SHARED to cope with different ++ alignment restrictions. ++ ++2010-02-08 Andreas Schwab ++ ++ [BZ #11155] ++ * sysdeps/unix/sysv/linux/sparc/sparc64/fxstat.c: Include i386 ++ version. ++ + 2010-02-05 H.J. Lu + + [BZ #11230] +@@ -2938,6 +2957,11 @@ d2009-10-30 Ulrich Drepper ++ ++ * Makeconfig (ASFLAGS): Append $(sysdep-ASFLAGS). ++ * sysdeps/i386/Makefile (sysdep-ASFLAGS): Add -U__i686. ++ + 2009-07-21 Ulrich Drepper + + * sysdeps/x86_64/multiarch/strstr.c: Minor cleanups. Remove +@@ -3203,6 +3227,11 @@ d2009-10-30 Ulrich Drepper ++ ++ * timezone/zic.c (stringzone): Don't try to generate a POSIX TZ ++ string when the timezone ends in DST. ++ + 2009-06-26 Ulrich Drepper + + * resolv/resolv.h: Define RES_SNGLKUPREOP. +@@ -11896,6 +11925,10 @@ d2009-10-30 Ulrich Drepper ++ ++ * locale/programs/locarchive.c (add_alias, insert_name): Remove static. ++ + 2007-04-16 Ulrich Drepper + + [BZ #4364] +@@ -13153,6 +13186,15 @@ d2009-10-30 Ulrich Drepper ++ ++ * sysdeps/unix/sysv/linux/netlinkaccess.h: Include linux/if_addr.h ++ if IFA_MAX is not defined. ++ (IFA_RTA, IFA_PAYLOAD, IFLA_RTA, IFLA_PAYLOAD): Define if not ++ defined. ++ * sysdeps/unix/sysv/linux/check_pf.c: Include netlinkaccess.h ++ instead of asm/types.h, linux/netlink.h and linux/rtnetlink.h. ++ + 2006-12-09 Ulrich Drepper + + [BZ #3632] +--- glibc-2.12-2-gc4ccff1/ChangeLog.15 ++++ glibc-2.12-1/ChangeLog.15 +@@ -477,6 +477,14 @@ + + 2004-11-26 Jakub Jelinek + ++ * posix/Makefile (generated: Add getconf.speclist. ++ ($(inst_libexecdir)/getconf): Use getconf.speclist instead of ++ getconf output. ++ ($(objpfx)getconf.speclist): New rule. ++ * posix/getconf.speclist.h: New file. ++ ++2004-11-26 Jakub Jelinek ++ + * sysdeps/generic/unsecvars.h (UNSECURE_ENVVARS): Add GETCONF_DIR. + + 2004-11-26 Kaz Kojima +@@ -1103,6 +1111,13 @@ + * sysdeps/generic/tempname.c (__path_search): Add missing argument + TRY_TMPDIR. + ++2004-11-02 Jakub Jelinek ++ ++ * include/features.h (__USE_FORTIFY_LEVEL): Also set for Red Hat ++ GCC 3.4.x-RH >= 3.4.2-8. ++ * debug/tst-chk1.c (do_test): Deal with GCC 3.4.x-RH not ++ being able to recognize subobjects. ++ + 2004-10-31 Mariusz Mazur + + * sysdeps/unix/sysv/linux/alpha/setregid.c: New file. +@@ -1443,6 +1458,11 @@ + * sysdeps/generic/readonly-area.c (__readonly_str): Renamed to ... + (__readonly_area): ... this. + ++2004-10-19 Jakub Jelinek ++ ++ * include/features.h (__USE_FORTIFY_LEVEL): Enable even with ++ Red Hat gcc4 4.0.0 and above. ++ + 2004-10-18 Jakub Jelinek + + * sysdeps/generic/strcpy_chk.c (__strcpy_chk): Speed up by checking +@@ -3182,6 +3202,23 @@ + before return type. + * locale/localename.c (__current_locale_name): Likewise. + ++2004-08-31 Jakub Jelinek ++ ++ * elf/ldconfig.c (parse_conf): Add prefix argument, prepend it ++ before arguments to add_dir and pass to parse_conf_include. ++ (parse_conf_include): Add prefix argument, pass it down to ++ parse_conf. ++ (main): Call arch_startup. Adjust parse_conf caller. ++ Call add_arch_dirs. ++ * sysdeps/generic/dl-cache.h (arch_startup, add_arch_dirs): Define. ++ * sysdeps/unix/sysv/linux/i386/dl-cache.h: New file. ++ * sysdeps/unix/sysv/linux/ia64/dl-cache.h (EMUL_HACK, arch_startup, ++ add_arch_dirs): Define. ++ * sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed: Prepend ++ /emul/ia32-linux before the 32-bit ld.so pathname. ++ * sysdeps/unix/sysv/linux/ia64/dl-procinfo.c: New file. ++ * sysdeps/unix/sysv/linux/ia64/dl-procinfo.h: New file. ++ + 2004-08-30 Roland McGrath + + * scripts/extract-abilist.awk: If `lastversion' variable defined, omit +--- glibc-2.12-2-gc4ccff1/ChangeLog.16 ++++ glibc-2.12-1/ChangeLog.16 +@@ -2042,6 +2042,9 @@ + (__MATHDECL_2): Use __REDIRECT_NTH instead of __REDIRECT + followed by __THROW. + ++ * sysdeps/unix/sysv/linux/futimesat.c (futimesat): If ++ file == NULL, use __futimes unconditionally. ++ + 2006-02-02 Ulrich Drepper + + * sysdeps/unix/sysv/linux/futimesat.c [__NR_futimesat] +@@ -2101,6 +2104,11 @@ + * sysdeps/ieee754/ldbl-128/s_llrintl.c (__llrintl): Fix a typo. + * sysdeps/s390/fpu/libm-test-ulps: Remove llrint ulps. + ++2006-01-30 Jakub Jelinek ++ ++ * include/bits/stdlib-ldbl.h: New file. ++ * include/bits/wchar-ldbl.h: New file. ++ + 2006-01-19 Thomas Schwinge + + * libio/genops.c: Include . +@@ -8922,6 +8930,12 @@ + * argp/argp-help.c (__argp_error): __asprintf -> vasprintf. + (__argp_failure): Likewise. + ++2005-08-08 Jakub Jelinek ++ ++ * sysdeps/unix/sysv/linux/dl-osinfo.h (_dl_setup_stack_chk_guard): ++ Shift marked &errno down on big-endian instead of up. ++ * elf/tst-stackguard1.c (do_test): Fix a typo. ++ + 2005-08-08 Ulrich Drepper + + * nscd/cache.c (cache_add): Commit hash table and header to disk. +@@ -9046,6 +9060,17 @@ + __syslog_chk. + * misc/Versions: Export __syslog_chk and __vsyslog_chk. + ++2005-07-29 Jakub Jelinek ++ ++ * sysdeps/unix/sysv/linux/dl-osinfo.h: Include errno.h, hp-timing.h, ++ endian.h. ++ (_dl_setup_stack_chk_guard): Even without ++ --enable-stackguard-randomization attempt to do some guard ++ randomization using hp-timing (if available) and kernel stack and ++ mmap randomization. ++ * elf/tst-stackguard1.c (do_test): Don't fail if the poor man's ++ randomization doesn't work well enough. ++ + 2005-07-28 Thomas Schwinge + + [BZ #1137] +--- glibc-2.12-2-gc4ccff1/Makeconfig ++++ glibc-2.12-1/Makeconfig +@@ -789,12 +789,12 @@ endif + # The assembler can generate debug information too. + ifndef ASFLAGS + ifeq ($(have-cpp-asm-debuginfo),yes) +-ASFLAGS := $(filter -g% -fdebug-prefix-map=%,$(CFLAGS)) ++ASFLAGS = $(filter -g% -fdebug-prefix-map=%,$(CFLAGS)) + else +-ASFLAGS := ++ASFLAGS = + endif + endif +-ASFLAGS += $(ASFLAGS-config) $(asflags-cpu) ++ASFLAGS += $(ASFLAGS-config) $(asflags-cpu) $(sysdep-ASFLAGS) + + ifndef BUILD_CC + BUILD_CC = $(CC) +--- glibc-2.12-2-gc4ccff1/csu/Makefile ++++ glibc-2.12-1/csu/Makefile +@@ -93,7 +93,8 @@ omit-deps += $(crtstuff) + $(crtstuff:%=$(objpfx)%.o): %.o: %.S $(objpfx)defs.h + $(compile.S) -g0 $(ASFLAGS-.os) -o $@ + +-CFLAGS-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time) ++CFLAGS-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time) \ ++ -fno-asynchronous-unwind-tables + + vpath initfini.c $(sysdirs) + +--- glibc-2.12-2-gc4ccff1/csu/elf-init.c ++++ glibc-2.12-1/csu/elf-init.c +@@ -63,6 +63,23 @@ extern void (*__init_array_end []) (int, + extern void (*__fini_array_start []) (void) attribute_hidden; + extern void (*__fini_array_end []) (void) attribute_hidden; + ++#if defined HAVE_VISIBILITY_ATTRIBUTE \ ++ && (defined SHARED || defined LIBC_NONSHARED) ++# define hidden_undef_2(x) #x ++# define hidden_undef_1(x) hidden_undef_2 (x) ++# define hidden_undef(x) \ ++ __asm (hidden_undef_1 (ASM_GLOBAL_DIRECTIVE) " " #x); \ ++ __asm (".hidden " #x); ++#else ++# define hidden_undef(x) ++#endif ++ ++hidden_undef (__preinit_array_start) ++hidden_undef (__preinit_array_end) ++hidden_undef (__init_array_start) ++hidden_undef (__init_array_end) ++hidden_undef (__fini_array_start) ++hidden_undef (__fini_array_end) + + /* These function symbols are provided for the .init/.fini section entry + points automagically by the linker. */ +--- glibc-2.12-2-gc4ccff1/debug/tst-chk1.c ++++ glibc-2.12-1/debug/tst-chk1.c +@@ -17,6 +17,9 @@ + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + ++/* Hack: make sure GCC doesn't know __chk_fail () will not return. */ ++#define __noreturn__ ++ + #include + #include + #include +@@ -242,7 +245,7 @@ do_test (void) + if (memcmp (a.buf1, "aabcdabcjj", 10)) + FAIL (); + +-#if __USE_FORTIFY_LEVEL < 2 ++#if __USE_FORTIFY_LEVEL < 2 || !__GNUC_PREREQ (4, 0) + /* The following tests are supposed to crash with -D_FORTIFY_SOURCE=2 + and sufficient GCC support, as the string operations overflow + from a.buf1 into a.buf2. */ +@@ -357,7 +360,7 @@ do_test (void) + memset (a.buf1 + 9, 'j', l0 + 2); + CHK_FAIL_END + +-# if __USE_FORTIFY_LEVEL >= 2 ++# if __USE_FORTIFY_LEVEL >= 2 && __GNUC_PREREQ (4, 0) + # define O 0 + # else + # define O 1 +--- glibc-2.12-2-gc4ccff1/elf/ldconfig.c ++++ glibc-2.12-1/elf/ldconfig.c +@@ -1031,17 +1031,19 @@ search_dirs (void) + + + static void parse_conf_include (const char *config_file, unsigned int lineno, +- bool do_chroot, const char *pattern); ++ const char *prefix, bool do_chroot, ++ const char *pattern); + + /* Parse configuration file. */ + static void +-parse_conf (const char *filename, bool do_chroot) ++parse_conf (const char *filename, const char *prefix, bool do_chroot) + { + FILE *file = NULL; + char *line = NULL; + const char *canon; + size_t len = 0; + unsigned int lineno; ++ size_t prefix_len = prefix ? strlen (prefix) : 0; + + if (do_chroot && opt_chroot) + { +@@ -1102,7 +1104,14 @@ parse_conf (const char *filename, bool d + cp += 8; + while ((dir = strsep (&cp, " \t")) != NULL) + if (dir[0] != '\0') +- parse_conf_include (filename, lineno, do_chroot, dir); ++ parse_conf_include (filename, lineno, prefix, do_chroot, dir); ++ } ++ else if (prefix != NULL) ++ { ++ size_t cp_len = strlen (cp); ++ char new_cp [prefix_len + cp_len + 1]; ++ memcpy (mempcpy (new_cp, prefix, prefix_len), cp, cp_len + 1); ++ add_dir (new_cp); + } + else if (!strncasecmp (cp, "hwcap", 5) && isblank (cp[5])) + { +@@ -1165,7 +1174,7 @@ parse_conf (const char *filename, bool d + config files to read. */ + static void + parse_conf_include (const char *config_file, unsigned int lineno, +- bool do_chroot, const char *pattern) ++ const char *prefix, bool do_chroot, const char *pattern) + { + if (opt_chroot && pattern[0] != '/') + error (EXIT_FAILURE, 0, +@@ -1197,7 +1206,7 @@ parse_conf_include (const char *config_f + { + case 0: + for (size_t i = 0; i < gl.gl_pathc; ++i) +- parse_conf (gl.gl_pathv[i], false); ++ parse_conf (gl.gl_pathv[i], prefix, false); + globfree64 (&gl); + break; + +@@ -1240,6 +1249,8 @@ main (int argc, char **argv) + /* Set the text message domain. */ + textdomain (_libc_intl_domainname); + ++ arch_startup (argc, argv); ++ + /* Parse and process arguments. */ + int remaining; + argp_parse (&argp, argc, argv, 0, &remaining, NULL); +@@ -1349,12 +1360,14 @@ main (int argc, char **argv) + + if (!opt_only_cline) + { +- parse_conf (config_file, true); ++ parse_conf (config_file, NULL, true); + + /* Always add the standard search paths. */ + add_system_dir (SLIBDIR); + if (strcmp (SLIBDIR, LIBDIR)) + add_system_dir (LIBDIR); ++ ++ add_arch_dirs (config_file); + } + + char *aux_cache_file = _PATH_LDCONFIG_AUX_CACHE; +--- glibc-2.12-2-gc4ccff1/elf/tst-stackguard1.c ++++ glibc-2.12-1/elf/tst-stackguard1.c +@@ -160,17 +160,21 @@ do_test (void) + the 16 runs, something is very wrong. */ + int ndifferences = 0; + int ndefaults = 0; ++ int npartlyrandomized = 0; + for (i = 0; i < N; ++i) + { + if (child_stack_chk_guards[i] != child_stack_chk_guards[i+1]) + ndifferences++; + else if (child_stack_chk_guards[i] == default_guard) + ndefaults++; ++ else if (*(char *) &child_stack_chk_guards[i] == 0) ++ npartlyrandomized++; + } + +- printf ("differences %d defaults %d\n", ndifferences, ndefaults); ++ printf ("differences %d defaults %d partly randomized %d\n", ++ ndifferences, ndefaults, npartlyrandomized); + +- if (ndifferences < N / 2 && ndefaults < N / 2) ++ if ((ndifferences + ndefaults + npartlyrandomized) < 3 * N / 4) + { + puts ("stack guard canaries are not randomized enough"); + puts ("nor equal to the default canary value"); +--- glibc-2.12-2-gc4ccff1/include/bits/stdlib-ldbl.h ++++ glibc-2.12-1/include/bits/stdlib-ldbl.h +@@ -0,0 +1 @@ ++#include +--- glibc-2.12-2-gc4ccff1/include/bits/wchar-ldbl.h ++++ glibc-2.12-1/include/bits/wchar-ldbl.h +@@ -0,0 +1 @@ ++#include +--- glibc-2.12-2-gc4ccff1/include/features.h ++++ glibc-2.12-1/include/features.h +@@ -308,8 +308,13 @@ + #endif + + #if defined _FORTIFY_SOURCE && _FORTIFY_SOURCE > 0 \ +- && __GNUC_PREREQ (4, 1) && defined __OPTIMIZE__ && __OPTIMIZE__ > 0 +-# if _FORTIFY_SOURCE > 1 ++ && defined __OPTIMIZE__ && __OPTIMIZE__ > 0 ++# if !__GNUC_PREREQ (4, 1) ++# ifdef __GNUC_RH_RELEASE__ ++# warning _FORTIFY_SOURCE supported only with GCC 4.1 and later ++# endif ++# define __USE_FORTIFY_LEVEL 0 ++# elif _FORTIFY_SOURCE > 1 + # define __USE_FORTIFY_LEVEL 2 + # else + # define __USE_FORTIFY_LEVEL 1 +--- glibc-2.12-2-gc4ccff1/intl/locale.alias ++++ glibc-2.12-1/intl/locale.alias +@@ -57,8 +57,6 @@ korean ko_KR.eucKR + korean.euc ko_KR.eucKR + ko_KR ko_KR.eucKR + lithuanian lt_LT.ISO-8859-13 +-no_NO nb_NO.ISO-8859-1 +-no_NO.ISO-8859-1 nb_NO.ISO-8859-1 + norwegian nb_NO.ISO-8859-1 + nynorsk nn_NO.ISO-8859-1 + polish pl_PL.ISO-8859-2 +--- glibc-2.12-2-gc4ccff1/libio/stdio.h ++++ glibc-2.12-1/libio/stdio.h +@@ -165,10 +165,12 @@ typedef _G_fpos64_t fpos64_t; + extern struct _IO_FILE *stdin; /* Standard input stream. */ + extern struct _IO_FILE *stdout; /* Standard output stream. */ + extern struct _IO_FILE *stderr; /* Standard error output stream. */ ++#ifdef __STDC__ + /* C89/C99 say they're macros. Make them happy. */ + #define stdin stdin + #define stdout stdout + #define stderr stderr ++#endif + + __BEGIN_NAMESPACE_STD + /* Remove file FILENAME. */ +--- glibc-2.12-2-gc4ccff1/locale/iso-4217.def ++++ glibc-2.12-1/locale/iso-4217.def +@@ -8,6 +8,7 @@ + * + * !!! The list has to be sorted !!! + */ ++DEFINE_INT_CURR("ADP") /* Andorran Peseta -> EUR */ + DEFINE_INT_CURR("AED") /* United Arab Emirates Dirham */ + DEFINE_INT_CURR("AFN") /* Afghanistan Afgani */ + DEFINE_INT_CURR("ALL") /* Albanian Lek */ +@@ -15,12 +16,14 @@ DEFINE_INT_CURR("AMD") /* Armenia Dram + DEFINE_INT_CURR("ANG") /* Netherlands Antilles */ + DEFINE_INT_CURR("AOA") /* Angolan Kwanza */ + DEFINE_INT_CURR("ARS") /* Argentine Peso */ ++DEFINE_INT_CURR("ATS") /* Austrian Schilling -> EUR */ + DEFINE_INT_CURR("AUD") /* Australian Dollar */ + DEFINE_INT_CURR("AWG") /* Aruba Guilder */ + DEFINE_INT_CURR("AZM") /* Azerbaijan Manat */ + DEFINE_INT_CURR("BAM") /* Bosnian and Herzegovina Convertible Mark */ + DEFINE_INT_CURR("BBD") /* Barbados Dollar */ + DEFINE_INT_CURR("BDT") /* Bangladesh Taka */ ++DEFINE_INT_CURR("BEF") /* Belgian Franc -> EUR */ + DEFINE_INT_CURR("BGN") /* Bulgarian Lev */ + DEFINE_INT_CURR("BHD") /* Bahraini Dinar */ + DEFINE_INT_CURR("BIF") /* Burundi Franc */ +@@ -44,6 +47,7 @@ DEFINE_INT_CURR("CUP") /* Cuban Peso * + DEFINE_INT_CURR("CVE") /* Cape Verde Escudo */ + DEFINE_INT_CURR("CYP") /* Cypriot Pound */ + DEFINE_INT_CURR("CZK") /* Czech Koruna */ ++DEFINE_INT_CURR("DEM") /* German Mark -> EUR */ + DEFINE_INT_CURR("DJF") /* Djibouti Franc */ + DEFINE_INT_CURR("DKK") /* Danish Krone (Faroe Islands, Greenland) */ + DEFINE_INT_CURR("DOP") /* Dominican Republic */ +@@ -51,16 +55,20 @@ DEFINE_INT_CURR("DZD") /* Algerian Dina + DEFINE_INT_CURR("EEK") /* Estonian Kroon */ + DEFINE_INT_CURR("EGP") /* Egyptian Pound */ + DEFINE_INT_CURR("ERN") /* Eritrean Nakfa */ ++DEFINE_INT_CURR("ESP") /* Spanish Peseta -> EUR */ + DEFINE_INT_CURR("ETB") /* Ethiopian Birr */ + DEFINE_INT_CURR("EUR") /* European Union Euro */ ++DEFINE_INT_CURR("FIM") /* Finnish Markka -> EUR */ + DEFINE_INT_CURR("FJD") /* Fiji Dollar */ + DEFINE_INT_CURR("FKP") /* Falkland Islands Pound (Malvinas) */ ++DEFINE_INT_CURR("FRF") /* French Franc -> EUR */ + DEFINE_INT_CURR("GBP") /* British Pound */ + DEFINE_INT_CURR("GEL") /* Georgia Lari */ + DEFINE_INT_CURR("GHC") /* Ghana Cedi */ + DEFINE_INT_CURR("GIP") /* Gibraltar Pound */ + DEFINE_INT_CURR("GMD") /* Gambian Dalasi */ + DEFINE_INT_CURR("GNF") /* Guinea Franc */ ++DEFINE_INT_CURR("GRD") /* Greek Drachma -> EUR */ + DEFINE_INT_CURR("GTQ") /* Guatemala Quetzal */ + DEFINE_INT_CURR("GYD") /* Guyana Dollar */ + DEFINE_INT_CURR("HKD") /* Hong Kong Dollar */ +@@ -69,12 +77,14 @@ DEFINE_INT_CURR("HRK") /* Croatia Kuna + DEFINE_INT_CURR("HTG") /* Haiti Gourde */ + DEFINE_INT_CURR("HUF") /* Hungarian Forint */ + DEFINE_INT_CURR("IDR") /* Indonesia Rupiah */ ++DEFINE_INT_CURR("IEP") /* Irish Pound -> EUR */ + DEFINE_INT_CURR("ILS") /* Israeli Shekel */ + DEFINE_INT_CURR("IMP") /* Isle of Man Pounds */ + DEFINE_INT_CURR("INR") /* Indian Rupee (Bhutan) */ + DEFINE_INT_CURR("IQD") /* Iraqi Dinar */ + DEFINE_INT_CURR("IRR") /* Iranian Rial */ + DEFINE_INT_CURR("ISK") /* Iceland Krona */ ++DEFINE_INT_CURR("ITL") /* Italian Lira -> EUR */ + DEFINE_INT_CURR("JEP") /* Jersey Pound */ + DEFINE_INT_CURR("JMD") /* Jamaican Dollar */ + DEFINE_INT_CURR("JOD") /* Jordanian Dinar */ +@@ -94,6 +104,7 @@ DEFINE_INT_CURR("LKR") /* Sri Lankan Ru + DEFINE_INT_CURR("LRD") /* Liberian Dollar */ + DEFINE_INT_CURR("LSL") /* Lesotho Maloti */ + DEFINE_INT_CURR("LTL") /* Lithuanian Litas */ ++DEFINE_INT_CURR("LUF") /* Luxembourg Franc -> EUR */ + DEFINE_INT_CURR("LVL") /* Latvia Lat */ + DEFINE_INT_CURR("LYD") /* Libyan Arab Jamahiriya Dinar */ + DEFINE_INT_CURR("MAD") /* Moroccan Dirham */ +@@ -114,6 +125,7 @@ DEFINE_INT_CURR("MZM") /* Mozambique Me + DEFINE_INT_CURR("NAD") /* Namibia Dollar */ + DEFINE_INT_CURR("NGN") /* Nigeria Naira */ + DEFINE_INT_CURR("NIO") /* Nicaragua Cordoba Oro */ ++DEFINE_INT_CURR("NLG") /* Netherlands Guilder -> EUR */ + DEFINE_INT_CURR("NOK") /* Norwegian Krone */ + DEFINE_INT_CURR("NPR") /* Nepalese Rupee */ + DEFINE_INT_CURR("NZD") /* New Zealand Dollar */ +@@ -124,6 +136,7 @@ DEFINE_INT_CURR("PGK") /* Papau New Gui + DEFINE_INT_CURR("PHP") /* Philippines Peso */ + DEFINE_INT_CURR("PKR") /* Pakistan Rupee */ + DEFINE_INT_CURR("PLN") /* Polish Zloty */ ++DEFINE_INT_CURR("PTE") /* Portugese Escudo -> EUR */ + DEFINE_INT_CURR("PYG") /* Paraguay Guarani */ + DEFINE_INT_CURR("QAR") /* Qatar Rial */ + DEFINE_INT_CURR("ROL") /* Romanian Leu */ +--- glibc-2.12-2-gc4ccff1/locale/programs/locarchive.c ++++ glibc-2.12-1/locale/programs/locarchive.c +@@ -134,7 +134,7 @@ create_archive (const char *archivefname + size_t reserved = RESERVE_MMAP_SIZE; + int xflags = 0; + if (total < reserved +- && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON, ++ && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_SHARED | MAP_ANON, + -1, 0)) != MAP_FAILED)) + xflags = MAP_FIXED; + else +@@ -241,9 +241,9 @@ oldlocrecentcmp (const void *a, const vo + /* forward decls for below */ + static uint32_t add_locale (struct locarhandle *ah, const char *name, + locale_data_t data, bool replace); +-static void add_alias (struct locarhandle *ah, const char *alias, +- bool replace, const char *oldname, +- uint32_t *locrec_offset_p); ++void add_alias (struct locarhandle *ah, const char *alias, ++ bool replace, const char *oldname, ++ uint32_t *locrec_offset_p); + + + static bool +@@ -396,7 +396,7 @@ enlarge_archive (struct locarhandle *ah, + size_t reserved = RESERVE_MMAP_SIZE; + int xflags = 0; + if (total < reserved +- && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON, ++ && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_SHARED | MAP_ANON, + -1, 0)) != MAP_FAILED)) + xflags = MAP_FIXED; + else +@@ -614,7 +614,7 @@ open_archive (struct locarhandle *ah, bo + int xflags = 0; + void *p; + if (st.st_size < reserved +- && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON, ++ && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_SHARED | MAP_ANON, + -1, 0)) != MAP_FAILED)) + xflags = MAP_FIXED; + else +@@ -649,7 +649,7 @@ close_archive (struct locarhandle *ah) + #include "../../intl/explodename.c" + #include "../../intl/l10nflist.c" + +-static struct namehashent * ++struct namehashent * + insert_name (struct locarhandle *ah, + const char *name, size_t name_len, bool replace) + { +@@ -707,7 +707,7 @@ insert_name (struct locarhandle *ah, + return &namehashtab[idx]; + } + +-static void ++void + add_alias (struct locarhandle *ah, const char *alias, bool replace, + const char *oldname, uint32_t *locrec_offset_p) + { +--- glibc-2.12-2-gc4ccff1/localedata/Makefile ++++ glibc-2.12-1/localedata/Makefile +@@ -227,6 +227,7 @@ $(INSTALL-SUPPORTED-LOCALES): install-lo + echo -n '...'; \ + input=`echo $$locale | sed 's/\([^.]*\)[^@]*\(.*\)/\1\2/'`; \ + $(LOCALEDEF) --alias-file=../intl/locale.alias \ ++ --no-archive \ + -i locales/$$input -c -f charmaps/$$charset \ + $(addprefix --prefix=,$(install_root)) $$locale; \ + echo ' done'; \ +--- glibc-2.12-2-gc4ccff1/localedata/SUPPORTED ++++ glibc-2.12-1/localedata/SUPPORTED +@@ -85,6 +85,7 @@ cy_GB.UTF-8/UTF-8 \ + cy_GB/ISO-8859-14 \ + da_DK.UTF-8/UTF-8 \ + da_DK/ISO-8859-1 \ ++da_DK.ISO-8859-15/ISO-8859-15 \ + de_AT.UTF-8/UTF-8 \ + de_AT/ISO-8859-1 \ + de_AT@euro/ISO-8859-15 \ +@@ -116,6 +117,7 @@ en_DK.UTF-8/UTF-8 \ + en_DK/ISO-8859-1 \ + en_GB.UTF-8/UTF-8 \ + en_GB/ISO-8859-1 \ ++en_GB.ISO-8859-15/ISO-8859-15 \ + en_HK.UTF-8/UTF-8 \ + en_HK/ISO-8859-1 \ + en_IE.UTF-8/UTF-8 \ +@@ -131,6 +133,7 @@ en_SG.UTF-8/UTF-8 \ + en_SG/ISO-8859-1 \ + en_US.UTF-8/UTF-8 \ + en_US/ISO-8859-1 \ ++en_US.ISO-8859-15/ISO-8859-15 \ + en_ZA.UTF-8/UTF-8 \ + en_ZA/ISO-8859-1 \ + en_ZW.UTF-8/UTF-8 \ +@@ -307,6 +310,8 @@ nl_NL/ISO-8859-1 \ + nl_NL@euro/ISO-8859-15 \ + nn_NO.UTF-8/UTF-8 \ + nn_NO/ISO-8859-1 \ ++no_NO.UTF-8/UTF-8 \ ++no_NO/ISO-8859-1 \ + nr_ZA/UTF-8 \ + nso_ZA/UTF-8 \ + oc_FR.UTF-8/UTF-8 \ +@@ -367,6 +372,7 @@ sv_FI/ISO-8859-1 \ + sv_FI@euro/ISO-8859-15 \ + sv_SE.UTF-8/UTF-8 \ + sv_SE/ISO-8859-1 \ ++sv_SE.ISO-8859-15/ISO-8859-15 \ + ta_IN/UTF-8 \ + te_IN/UTF-8 \ + tg_TJ.UTF-8/UTF-8 \ +--- glibc-2.12-2-gc4ccff1/localedata/locales/cy_GB ++++ glibc-2.12-1/localedata/locales/cy_GB +@@ -248,8 +248,11 @@ mon "" + d_fmt "" + t_fmt "" +-am_pm "";"" +-t_fmt_ampm "" ++am_pm "";"" ++t_fmt_ampm "" ++date_fmt "/ ++/ ++" + END LC_TIME + + LC_MESSAGES +--- glibc-2.12-2-gc4ccff1/localedata/locales/en_GB ++++ glibc-2.12-1/localedata/locales/en_GB +@@ -116,8 +116,8 @@ mon "" + d_fmt "" + t_fmt "" +-am_pm "";"" +-t_fmt_ampm "" ++am_pm "";"" ++t_fmt_ampm "" + date_fmt "/ + / + " +--- glibc-2.12-2-gc4ccff1/localedata/locales/no_NO ++++ glibc-2.12-1/localedata/locales/no_NO +@@ -0,0 +1,69 @@ ++escape_char / ++comment_char % ++ ++% Norwegian language locale for Norway ++% Source: Norsk Standardiseringsforbund ++% Address: University Library, ++% Drammensveien 41, N-9242 Oslo, Norge ++% Contact: Kolbjoern Aamboe ++% Tel: +47 - 22859109 ++% Fax: +47 - 22434497 ++% Email: kolbjorn.aambo@usit.uio.no ++% Language: no ++% Territory: NO ++% Revision: 4.3 ++% Date: 1996-10-15 ++% Application: general ++% Users: general ++% Repertoiremap: mnemonic.ds ++% Charset: ISO-8859-1 ++% Distribution and use is free, also ++% for commercial purposes. ++ ++LC_IDENTIFICATION ++copy "nb_NO" ++END LC_IDENTIFICATION ++ ++LC_COLLATE ++copy "nb_NO" ++END LC_COLLATE ++ ++LC_CTYPE ++copy "nb_NO" ++END LC_CTYPE ++ ++LC_MONETARY ++copy "nb_NO" ++END LC_MONETARY ++ ++LC_NUMERIC ++copy "nb_NO" ++END LC_NUMERIC ++ ++LC_TIME ++copy "nb_NO" ++END LC_TIME ++ ++LC_MESSAGES ++copy "nb_NO" ++END LC_MESSAGES ++ ++LC_PAPER ++copy "nb_NO" ++END LC_PAPER ++ ++LC_TELEPHONE ++copy "nb_NO" ++END LC_TELEPHONE ++ ++LC_MEASUREMENT ++copy "nb_NO" ++END LC_MEASUREMENT ++ ++LC_NAME ++copy "nb_NO" ++END LC_NAME ++ ++LC_ADDRESS ++copy "nb_NO" ++END LC_ADDRESS +--- glibc-2.12-2-gc4ccff1/localedata/locales/zh_TW ++++ glibc-2.12-1/localedata/locales/zh_TW +@@ -1,7 +1,7 @@ + comment_char % + escape_char / + % +-% Chinese language locale for Taiwan R.O.C. ++% Chinese language locale for Taiwan + % charmap: BIG5-CP950 + % + % Original Author: +@@ -17,7 +17,7 @@ escape_char / + % Reference: http://wwwold.dkuug.dk/JTC1/SC22/WG20/docs/n690.pdf + + LC_IDENTIFICATION +-title "Chinese locale for Taiwan R.O.C." ++title "Chinese locale for Taiwan" + source "" + address "" + contact "" +@@ -25,7 +25,7 @@ email "bug-glibc-locales@gnu.org" + tel "" + fax "" + language "Chinese" +-territory "Taiwan R.O.C." ++territory "Taiwan" + revision "0.2" + date "2000-08-02" + % +--- glibc-2.12-2-gc4ccff1/malloc/mcheck.c ++++ glibc-2.12-1/malloc/mcheck.c +@@ -24,9 +24,25 @@ + # include + # include + # include ++# include + # include + #endif + ++#ifdef _LIBC ++extern __typeof (malloc) __libc_malloc; ++extern __typeof (free) __libc_free; ++extern __typeof (realloc) __libc_realloc; ++libc_hidden_proto (__libc_malloc) ++libc_hidden_proto (__libc_realloc) ++libc_hidden_proto (__libc_free) ++libc_hidden_proto (__libc_memalign) ++#else ++# define __libc_malloc(sz) malloc (sz) ++# define __libc_free(ptr) free (ptr) ++# define __libc_realloc(ptr, sz) realloc (ptr, sz) ++# define __libc_memalign(al, sz) memalign (al, sz) ++#endif ++ + /* Old hook values. */ + static void (*old_free_hook) (__ptr_t ptr, __const __ptr_t); + static __ptr_t (*old_malloc_hook) (__malloc_size_t size, const __ptr_t); +@@ -197,7 +213,7 @@ freehook (__ptr_t ptr, const __ptr_t cal + if (old_free_hook != NULL) + (*old_free_hook) (ptr, caller); + else +- free (ptr); ++ __libc_free (ptr); + __free_hook = freehook; + } + +@@ -214,7 +230,7 @@ mallochook (__malloc_size_t size, const + hdr = (struct hdr *) (*old_malloc_hook) (sizeof (struct hdr) + size + 1, + caller); + else +- hdr = (struct hdr *) malloc (sizeof (struct hdr) + size + 1); ++ hdr = (struct hdr *) __libc_malloc (sizeof (struct hdr) + size + 1); + __malloc_hook = mallochook; + if (hdr == NULL) + return NULL; +@@ -245,7 +261,7 @@ memalignhook (__malloc_size_t alignment, + if (old_memalign_hook != NULL) + block = (*old_memalign_hook) (alignment, slop + size + 1, caller); + else +- block = memalign (alignment, slop + size + 1); ++ block = __libc_memalign (alignment, slop + size + 1); + __memalign_hook = memalignhook; + if (block == NULL) + return NULL; +@@ -300,8 +316,8 @@ reallochook (__ptr_t ptr, __malloc_size_ + sizeof (struct hdr) + size + 1, + caller); + else +- hdr = (struct hdr *) realloc ((__ptr_t) hdr, +- sizeof (struct hdr) + size + 1); ++ hdr = (struct hdr *) __libc_realloc ((__ptr_t) hdr, ++ sizeof (struct hdr) + size + 1); + __free_hook = freehook; + __malloc_hook = mallochook; + __memalign_hook = memalignhook; +@@ -361,8 +377,8 @@ mcheck (func) + if (__malloc_initialized <= 0 && !mcheck_used) + { + /* We call malloc() once here to ensure it is initialized. */ +- void *p = malloc (0); +- free (p); ++ void *p = __libc_malloc (0); ++ __libc_free (p); + + old_free_hook = __free_hook; + __free_hook = freehook; +--- glibc-2.12-2-gc4ccff1/manual/libc.texinfo ++++ glibc-2.12-1/manual/libc.texinfo +@@ -5,7 +5,7 @@ + @c setchapternewpage odd + + @comment Tell install-info what to do. +-@dircategory Software libraries ++@dircategory Libraries + @direntry + * Libc: (libc). C library. + @end direntry +--- glibc-2.12-2-gc4ccff1/misc/sys/cdefs.h ++++ glibc-2.12-1/misc/sys/cdefs.h +@@ -132,7 +132,10 @@ + #define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1) + #define __bos0(ptr) __builtin_object_size (ptr, 0) + +-#if __GNUC_PREREQ (4,3) ++#if __GNUC_PREREQ (4,3) \ ++ || (defined __GNUC_RH_RELEASE__ && __GNUC__ == 4 \ ++ && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ == 2 \ ++ && __GNUC_RH_RELEASE__ >= 31) + # define __warndecl(name, msg) \ + extern void name (void) __attribute__((__warning__ (msg))) + # define __warnattr(msg) __attribute__((__warning__ (msg))) +@@ -291,10 +294,16 @@ + + /* GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99 + inline semantics, unless -fgnu89-inline is used. */ +-#if !defined __cplusplus || __GNUC_PREREQ (4,3) ++#if !defined __cplusplus || __GNUC_PREREQ (4,3) \ ++ || (defined __GNUC_RH_RELEASE__ && __GNUC__ == 4 \ ++ && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ == 2 \ ++ && __GNUC_RH_RELEASE__ >= 31) + # if defined __GNUC_STDC_INLINE__ || defined __cplusplus + # define __extern_inline extern __inline __attribute__ ((__gnu_inline__)) +-# if __GNUC_PREREQ (4,3) ++# if __GNUC_PREREQ (4,3) \ ++ || (defined __GNUC_RH_RELEASE__ && __GNUC__ == 4 \ ++ && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ == 2 \ ++ && __GNUC_RH_RELEASE__ >= 31) + # define __extern_always_inline \ + extern __always_inline __attribute__ ((__gnu_inline__, __artificial__)) + # else +@@ -314,7 +323,10 @@ + + /* GCC 4.3 and above allow passing all anonymous arguments of an + __extern_always_inline function to some other vararg function. */ +-#if __GNUC_PREREQ (4,3) ++#if __GNUC_PREREQ (4,3) \ ++ || (defined __GNUC_RH_RELEASE__ && __GNUC__ == 4 \ ++ && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ == 2 \ ++ && __GNUC_RH_RELEASE__ >= 31) + # define __va_arg_pack() __builtin_va_arg_pack () + # define __va_arg_pack_len() __builtin_va_arg_pack_len () + #endif +--- glibc-2.12-2-gc4ccff1/nis/nss ++++ glibc-2.12-1/nis/nss +@@ -25,7 +25,7 @@ + # memory with every getXXent() call. Otherwise each getXXent() call + # might result into a network communication with the server to get + # the next entry. +-#SETENT_BATCH_READ=TRUE ++SETENT_BATCH_READ=TRUE + # + # ADJUNCT_AS_SHADOW + # If set to TRUE, the passwd routines in the NIS NSS module will not +--- glibc-2.12-2-gc4ccff1/nptl/ChangeLog ++++ glibc-2.12-1/nptl/ChangeLog +@@ -3884,6 +3884,15 @@ + Use __sigfillset. Document that sigfillset does the right thing wrt + to SIGSETXID. + ++2005-08-08 Jakub Jelinek ++ ++ * tst-stackguard1.c (do_test): Likewise. ++ ++2005-07-29 Jakub Jelinek ++ ++ * tst-stackguard1.c (do_test): Don't fail if the poor man's ++ randomization doesn't work well enough. ++ + 2005-07-11 Jakub Jelinek + + [BZ #1102] +@@ -4620,6 +4629,11 @@ + Move definition inside libpthread, libc, librt check. Provide + definition for rtld. + ++2004-09-02 Jakub Jelinek ++ ++ * pthread_cond_destroy.c (__pthread_cond_destroy): If there are ++ waiters, awake all waiters on the associated mutex. ++ + 2004-09-02 Ulrich Drepper + + * sysdeps/alpha/jmpbuf-unwind.h: Define __libc_unwind_longjmp. +@@ -6694,6 +6708,11 @@ + + * Makefile [$(build-shared) = yes] (tests): Depend on $(test-modules). + ++2003-07-22 Jakub Jelinek ++ ++ * descr.h: Don't include lowlevellock.h, pthreaddef.h and dl-sysdep.h ++ if __need_struct_pthread_size, instead define lll_lock_t. ++ + 2003-07-25 Jakub Jelinek + + * tst-cancel17.c (do_test): Check if aio_cancel failed. +--- glibc-2.12-2-gc4ccff1/nptl/Makefile ++++ glibc-2.12-1/nptl/Makefile +@@ -341,7 +341,8 @@ endif + extra-objs += $(crti-objs) $(crtn-objs) + omit-deps += crti crtn + +-CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time) ++CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time) \ ++ -fno-asynchronous-unwind-tables + endif + + CFLAGS-flockfile.c = -D_IO_MTSAFE_IO +@@ -527,15 +528,19 @@ $(addprefix $(objpfx), \ + $(tests) $(xtests) $(test-srcs))): $(objpfx)libpthread.so \ + $(objpfx)libpthread_nonshared.a + $(objpfx)tst-unload: $(common-objpfx)dlfcn/libdl.so +-# $(objpfx)../libc.so is used instead of $(common-objpfx)libc.so, ++# $(objpfx)linklibc.so is used instead of $(common-objpfx)libc.so, + # since otherwise libpthread.so comes before libc.so when linking. + $(addprefix $(objpfx), $(tests-reverse)): \ +- $(objpfx)../libc.so $(objpfx)libpthread.so \ ++ $(objpfx)linklibc.so $(objpfx)libpthread.so \ + $(objpfx)libpthread_nonshared.a + $(objpfx)../libc.so: $(common-objpfx)libc.so ; + $(addprefix $(objpfx),$(tests-static) $(xtests-static)): $(objpfx)libpthread.a + + $(objpfx)tst-atfork2.out: $(objpfx)tst-atfork2mod.so ++ ++$(objpfx)linklibc.so: $(common-objpfx)libc.so ++ ln -s ../libc.so $@ ++generated += libclink.so + else + $(addprefix $(objpfx),$(tests) $(test-srcs)): $(objpfx)libpthread.a + endif +--- glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h ++++ glibc-2.12-1/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h +@@ -189,4 +189,7 @@ + /* Typed memory objects are not available. */ + #define _POSIX_TYPED_MEMORY_OBJECTS -1 + ++/* Streams are not available. */ ++#define _XOPEN_STREAMS -1 ++ + #endif /* bits/posix_opt.h */ +--- glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/kernel-features.h ++++ glibc-2.12-1/nptl/sysdeps/unix/sysv/linux/kernel-features.h +@@ -0,0 +1,6 @@ ++#include_next ++ ++/* NPTL can always assume all clone thread flags work. */ ++#ifndef __ASSUME_CLONE_THREAD_FLAGS ++# define __ASSUME_CLONE_THREAD_FLAGS 1 ++#endif +--- glibc-2.12-2-gc4ccff1/nptl/tst-stackguard1.c ++++ glibc-2.12-1/nptl/tst-stackguard1.c +@@ -190,17 +190,21 @@ do_test (void) + the 16 runs, something is very wrong. */ + int ndifferences = 0; + int ndefaults = 0; ++ int npartlyrandomized = 0; + for (i = 0; i < N; ++i) + { + if (child_stack_chk_guards[i] != child_stack_chk_guards[i+1]) + ndifferences++; + else if (child_stack_chk_guards[i] == default_guard) + ndefaults++; ++ else if (*(char *) &child_stack_chk_guards[i] == 0) ++ npartlyrandomized++; + } + +- printf ("differences %d defaults %d\n", ndifferences, ndefaults); ++ printf ("differences %d defaults %d partly randomized %d\n", ++ ndifferences, ndefaults, npartlyrandomized); + +- if (ndifferences < N / 2 && ndefaults < N / 2) ++ if ((ndifferences + ndefaults + npartlyrandomized) < 3 * N / 4) + { + puts ("stack guard canaries are not randomized enough"); + puts ("nor equal to the default canary value"); +--- glibc-2.12-2-gc4ccff1/nscd/nscd.conf ++++ glibc-2.12-1/nscd/nscd.conf +@@ -33,7 +33,7 @@ + # logfile /var/log/nscd.log + # threads 4 + # max-threads 32 +-# server-user nobody ++ server-user nscd + # stat-user somebody + debug-level 0 + # reload-count 5 +--- glibc-2.12-2-gc4ccff1/nscd/nscd.init ++++ glibc-2.12-1/nscd/nscd.init +@@ -9,6 +9,7 @@ + # slow naming services like NIS, NIS+, LDAP, or hesiod. + # processname: /usr/sbin/nscd + # config: /etc/nscd.conf ++# config: /etc/sysconfig/nscd + # + ### BEGIN INIT INFO + # Provides: nscd +@@ -28,20 +29,8 @@ + # Source function library. + . /etc/init.d/functions + +-# nscd does not run on any kernel lower than 2.2.0 because of threading +-# problems, so we require that in first place. +-case $(uname -r) in +- 2.[2-9].*) +- # this is okay +- ;; +- [3-9]*) +- # these are of course also okay +- ;; +- *) +- #this is not +- exit 1 +- ;; +-esac ++# Source an auxiliary options file if we have one, and pick up NSCD_OPTIONS. ++[ -r /etc/sysconfig/nscd ] && . /etc/sysconfig/nscd + + RETVAL=0 + prog=nscd +@@ -50,7 +39,7 @@ start () { + [ -d /var/run/nscd ] || mkdir /var/run/nscd + [ -d /var/db/nscd ] || mkdir /var/db/nscd + echo -n $"Starting $prog: " +- daemon /usr/sbin/nscd ++ daemon /usr/sbin/nscd $NSCD_OPTIONS + RETVAL=$? + echo + [ $RETVAL -eq 0 ] && touch /var/lock/subsys/nscd +@@ -83,7 +72,7 @@ restart() { + # See how we were called. + case "$1" in + start) +- start ++ [ -e /var/lock/subsys/nscd ] || start + RETVAL=$? + ;; + stop) +@@ -99,14 +88,17 @@ case "$1" in + RETVAL=$? + ;; + try-restart | condrestart) +- [ -e /var/lock/subsys/nscd ] && restart ++ [ ! -e /var/lock/subsys/nscd ] || restart + RETVAL=$? + ;; + force-reload | reload) + echo -n $"Reloading $prog: " +- killproc /usr/sbin/nscd -HUP +- RETVAL=$? +- echo ++ RETVAL=0 ++ /usr/sbin/nscd -i passwd || RETVAL=$? ++ /usr/sbin/nscd -i group || RETVAL=$? ++ /usr/sbin/nscd -i hosts || RETVAL=$? ++ /usr/sbin/nscd -i services || RETVAL=$? ++ echo + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|reload|condrestart}" +--- glibc-2.12-2-gc4ccff1/posix/Makefile ++++ glibc-2.12-1/posix/Makefile +@@ -305,15 +305,8 @@ $(inst_libexecdir)/getconf: $(inst_bindi + mv -f $@/$$spec.new $@/$$spec; \ + done < $(objpfx)getconf.speclist + +-$(objpfx)getconf.speclist: $(objpfx)getconf +-ifeq (no,$(cross-compiling)) +- LC_ALL=C GETCONF_DIR=/dev/null \ +- $(run-program-prefix) $< _POSIX_V7_WIDTH_RESTRICTED_ENVS > $@.new +- LC_ALL=C GETCONF_DIR=/dev/null \ +- $(run-program-prefix) $< _POSIX_V6_WIDTH_RESTRICTED_ENVS >> $@.new +- LC_ALL=C GETCONF_DIR=/dev/null \ +- $(run-program-prefix) $< _XBS5_WIDTH_RESTRICTED_ENVS >> $@.new +-else +- > $@.new +-endif ++$(objpfx)getconf.speclist: getconf.speclist.h ++ $(CC) -E $(CFLAGS) $(CPPFLAGS) $< \ ++ | sed -n -e '/START_OF_STRINGS/,$${/\(POSIX_V[67]\|_XBS5\)_/{s/^[^"]*"//;s/".*$$//;p}}' \ ++ > $@.new + mv -f $@.new $@ +--- glibc-2.12-2-gc4ccff1/posix/gai.conf ++++ glibc-2.12-1/posix/gai.conf +@@ -41,7 +41,7 @@ + # + # precedence + # Add another rule to the RFC 3484 precedence table. See section 2.1 +-# and 10.3 in RFC 3484. The default is: ++# and 10.3 in RFC 3484. The RFC requires: + # + #precedence ::1/128 50 + #precedence ::/0 40 +@@ -58,7 +58,7 @@ + # Add another rule to the RFC 3484 scope table for IPv4 addresses. + # By default the scope IDs described in section 3.2 in RFC 3484 are + # used. Changing these defaults should hardly ever be necessary. +-# The defaults are equivalent to: ++# The definitions in RFC 1918 are equivalent to: + # + #scopev4 ::ffff:169.254.0.0/112 2 + #scopev4 ::ffff:127.0.0.0/104 2 +@@ -75,3 +75,5 @@ + #scopev4 ::ffff:169.254.0.0/112 2 + #scopev4 ::ffff:127.0.0.0/104 2 + #scopev4 ::ffff:0.0.0.0/96 14 ++# ++# This is what the Red Hat setting currently uses. +--- glibc-2.12-2-gc4ccff1/posix/getconf.speclist.h ++++ glibc-2.12-1/posix/getconf.speclist.h +@@ -0,0 +1,39 @@ ++#include ++const char *START_OF_STRINGS = ++#if _POSIX_V7_ILP32_OFF32 == 1 ++"POSIX_V7_ILP32_OFF32" ++#endif ++#if _POSIX_V7_ILP32_OFFBIG == 1 ++"POSIX_V7_ILP32_OFFBIG" ++#endif ++#if _POSIX_V7_LP64_OFF64 == 1 ++"POSIX_V7_LP64_OFF64" ++#endif ++#if _POSIX_V7_LPBIG_OFFBIG == 1 ++"POSIX_V7_LPBIG_OFFBIG" ++#endif ++#if _POSIX_V6_ILP32_OFF32 == 1 ++"POSIX_V6_ILP32_OFF32" ++#endif ++#if _POSIX_V6_ILP32_OFFBIG == 1 ++"POSIX_V6_ILP32_OFFBIG" ++#endif ++#if _POSIX_V6_LP64_OFF64 == 1 ++"POSIX_V6_LP64_OFF64" ++#endif ++#if _POSIX_V6_LPBIG_OFFBIG == 1 ++"POSIX_V6_LPBIG_OFFBIG" ++#endif ++#if _XBS5_ILP32_OFF32 == 1 ++"XBS5_ILP32_OFF32" ++#endif ++#if _XBS5_ILP32_OFFBIG == 1 ++"XBS5_ILP32_OFFBIG" ++#endif ++#if _XBS5_LP64_OFF64 == 1 ++"XBS5_LP64_OFF64" ++#endif ++#if _XBS5_LPBIG_OFFBIG == 1 ++"XBS5_LPBIG_OFFBIG" ++#endif ++""; +--- glibc-2.12-2-gc4ccff1/streams/Makefile ++++ glibc-2.12-1/streams/Makefile +@@ -21,7 +21,7 @@ + # + subdir := streams + +-headers = stropts.h sys/stropts.h bits/stropts.h bits/xtitypes.h ++#headers = stropts.h sys/stropts.h bits/stropts.h bits/xtitypes.h + routines = isastream getmsg getpmsg putmsg putpmsg fattach fdetach + + include ../Rules +--- glibc-2.12-2-gc4ccff1/sysdeps/generic/dl-cache.h ++++ glibc-2.12-1/sysdeps/generic/dl-cache.h +@@ -36,6 +36,14 @@ + # define add_system_dir(dir) add_dir (dir) + #endif + ++#ifndef arch_startup ++# define arch_startup(argc, argv) do { } while (0) ++#endif ++ ++#ifndef add_arch_dirs ++# define add_arch_dirs(config_file) do { } while (0) ++#endif ++ + #define CACHEMAGIC "ld.so-1.7.0" + + /* libc5 and glibc 2.0/2.1 use the same format. For glibc 2.2 another +--- glibc-2.12-2-gc4ccff1/sysdeps/i386/Makefile ++++ glibc-2.12-1/sysdeps/i386/Makefile +@@ -2,6 +2,8 @@ + # Every i386 port in use uses gas syntax (I think). + asm-CPPFLAGS += -DGAS_SYNTAX + ++sysdep-ASFLAGS += -U__i686 ++ + # The i386 `long double' is a distinct type we support. + long-double-fcts = yes + +@@ -64,6 +66,14 @@ endif + + ifneq (,$(filter -mno-tls-direct-seg-refs,$(CFLAGS))) + defines += -DNO_TLS_DIRECT_SEG_REFS ++else ++# .a libraries are not performance critical and so we ++# build them without direct TLS segment references ++# always. ++CPPFLAGS-.o += -DNO_TLS_DIRECT_SEG_REFS ++CFLAGS-.o += -mno-tls-direct-seg-refs ++CPPFLAGS-.oS += -DNO_TLS_DIRECT_SEG_REFS ++CFLAGS-.oS += -mno-tls-direct-seg-refs + endif + + ifeq ($(subdir),elf) +--- glibc-2.12-2-gc4ccff1/sysdeps/ia64/Makefile ++++ glibc-2.12-1/sysdeps/ia64/Makefile +@@ -12,8 +12,8 @@ elide-routines.os += hp-timing + + ifeq (yes,$(build-shared)) + # Compatibility +-sysdep_routines += ia64libgcc +-shared-only-routines += ia64libgcc ++sysdep_routines += libgcc-compat ++shared-only-routines += libgcc-compat + endif + endif + +--- glibc-2.12-2-gc4ccff1/sysdeps/ia64/ia64libgcc.S ++++ glibc-2.12-1/sysdeps/ia64/ia64libgcc.S +@@ -1,350 +0,0 @@ +-/* From the Intel IA-64 Optimization Guide, choose the minimum latency +- alternative. */ +- +-#include +-#undef ret +- +-#include +- +-#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_2_6) +- +-/* __divtf3 +- Compute a 80-bit IEEE double-extended quotient. +- farg0 holds the dividend. farg1 holds the divisor. */ +- +-ENTRY(___divtf3) +- cmp.eq p7, p0 = r0, r0 +- frcpa.s0 f10, p6 = farg0, farg1 +- ;; +-(p6) cmp.ne p7, p0 = r0, r0 +- .pred.rel.mutex p6, p7 +-(p6) fnma.s1 f11 = farg1, f10, f1 +-(p6) fma.s1 f12 = farg0, f10, f0 +- ;; +-(p6) fma.s1 f13 = f11, f11, f0 +-(p6) fma.s1 f14 = f11, f11, f11 +- ;; +-(p6) fma.s1 f11 = f13, f13, f11 +-(p6) fma.s1 f13 = f14, f10, f10 +- ;; +-(p6) fma.s1 f10 = f13, f11, f10 +-(p6) fnma.s1 f11 = farg1, f12, farg0 +- ;; +-(p6) fma.s1 f11 = f11, f10, f12 +-(p6) fnma.s1 f12 = farg1, f10, f1 +- ;; +-(p6) fma.s1 f10 = f12, f10, f10 +-(p6) fnma.s1 f12 = farg1, f11, farg0 +- ;; +-(p6) fma.s0 fret0 = f12, f10, f11 +-(p7) mov fret0 = f10 +- br.ret.sptk rp +-END(___divtf3) +- .symver ___divtf3, __divtf3@GLIBC_2.2 +- +-/* __divdf3 +- Compute a 64-bit IEEE double quotient. +- farg0 holds the dividend. farg1 holds the divisor. */ +- +-ENTRY(___divdf3) +- cmp.eq p7, p0 = r0, r0 +- frcpa.s0 f10, p6 = farg0, farg1 +- ;; +-(p6) cmp.ne p7, p0 = r0, r0 +- .pred.rel.mutex p6, p7 +-(p6) fmpy.s1 f11 = farg0, f10 +-(p6) fnma.s1 f12 = farg1, f10, f1 +- ;; +-(p6) fma.s1 f11 = f12, f11, f11 +-(p6) fmpy.s1 f13 = f12, f12 +- ;; +-(p6) fma.s1 f10 = f12, f10, f10 +-(p6) fma.s1 f11 = f13, f11, f11 +- ;; +-(p6) fmpy.s1 f12 = f13, f13 +-(p6) fma.s1 f10 = f13, f10, f10 +- ;; +-(p6) fma.d.s1 f11 = f12, f11, f11 +-(p6) fma.s1 f10 = f12, f10, f10 +- ;; +-(p6) fnma.d.s1 f8 = farg1, f11, farg0 +- ;; +-(p6) fma.d fret0 = f8, f10, f11 +-(p7) mov fret0 = f10 +- br.ret.sptk rp +- ;; +-END(___divdf3) +- .symver ___divdf3, __divdf3@GLIBC_2.2 +- +-/* __divsf3 +- Compute a 32-bit IEEE float quotient. +- farg0 holds the dividend. farg1 holds the divisor. */ +- +-ENTRY(___divsf3) +- cmp.eq p7, p0 = r0, r0 +- frcpa.s0 f10, p6 = farg0, farg1 +- ;; +-(p6) cmp.ne p7, p0 = r0, r0 +- .pred.rel.mutex p6, p7 +-(p6) fmpy.s1 f8 = farg0, f10 +-(p6) fnma.s1 f9 = farg1, f10, f1 +- ;; +-(p6) fma.s1 f8 = f9, f8, f8 +-(p6) fmpy.s1 f9 = f9, f9 +- ;; +-(p6) fma.s1 f8 = f9, f8, f8 +-(p6) fmpy.s1 f9 = f9, f9 +- ;; +-(p6) fma.d.s1 f10 = f9, f8, f8 +- ;; +-(p6) fnorm.s.s0 fret0 = f10 +-(p7) mov fret0 = f10 +- br.ret.sptk rp +- ;; +-END(___divsf3) +- .symver ___divsf3, __divsf3@GLIBC_2.2 +- +-/* __divdi3 +- Compute a 64-bit integer quotient. +- in0 holds the dividend. in1 holds the divisor. */ +- +-ENTRY(___divdi3) +- .regstk 2,0,0,0 +- /* Transfer inputs to FP registers. */ +- setf.sig f8 = in0 +- setf.sig f9 = in1 +- ;; +- /* Convert the inputs to FP, so that they won't be treated as +- unsigned. */ +- fcvt.xf f8 = f8 +- fcvt.xf f9 = f9 +- ;; +- /* Compute the reciprocal approximation. */ +- frcpa.s1 f10, p6 = f8, f9 +- ;; +- /* 3 Newton-Raphson iterations. */ +-(p6) fnma.s1 f11 = f9, f10, f1 +-(p6) fmpy.s1 f12 = f8, f10 +- ;; +-(p6) fmpy.s1 f13 = f11, f11 +-(p6) fma.s1 f12 = f11, f12, f12 +- ;; +-(p6) fma.s1 f10 = f11, f10, f10 +-(p6) fma.s1 f11 = f13, f12, f12 +- ;; +-(p6) fma.s1 f10 = f13, f10, f10 +-(p6) fnma.s1 f12 = f9, f11, f8 +- ;; +-(p6) fma.s1 f10 = f12, f10, f11 +- ;; +- /* Round quotient to an integer. */ +- fcvt.fx.trunc.s1 f10 = f10 +- ;; +- /* Transfer result to GP registers. */ +- getf.sig ret0 = f10 +- br.ret.sptk rp +- ;; +-END(___divdi3) +- .symver ___divdi3, __divdi3@GLIBC_2.2 +- +-/* __moddi3 +- Compute a 64-bit integer modulus. +- in0 holds the dividend (a). in1 holds the divisor (b). */ +- +-ENTRY(___moddi3) +- .regstk 2,0,0,0 +- /* Transfer inputs to FP registers. */ +- setf.sig f14 = in0 +- setf.sig f9 = in1 +- ;; +- /* Convert the inputs to FP, so that they won't be treated as +- unsigned. */ +- fcvt.xf f8 = f14 +- fcvt.xf f9 = f9 +- ;; +- /* Compute the reciprocal approximation. */ +- frcpa.s1 f10, p6 = f8, f9 +- ;; +- /* 3 Newton-Raphson iterations. */ +-(p6) fmpy.s1 f12 = f8, f10 +-(p6) fnma.s1 f11 = f9, f10, f1 +- ;; +-(p6) fma.s1 f12 = f11, f12, f12 +-(p6) fmpy.s1 f13 = f11, f11 +- ;; +-(p6) fma.s1 f10 = f11, f10, f10 +-(p6) fma.s1 f11 = f13, f12, f12 +- ;; +- sub in1 = r0, in1 +-(p6) fma.s1 f10 = f13, f10, f10 +-(p6) fnma.s1 f12 = f9, f11, f8 +- ;; +- setf.sig f9 = in1 +-(p6) fma.s1 f10 = f12, f10, f11 +- ;; +- fcvt.fx.trunc.s1 f10 = f10 +- ;; +- /* r = q * (-b) + a */ +- xma.l f10 = f10, f9, f14 +- ;; +- /* Transfer result to GP registers. */ +- getf.sig ret0 = f10 +- br.ret.sptk rp +- ;; +-END(___moddi3) +- .symver ___moddi3, __moddi3@GLIBC_2.2 +- +-/* __udivdi3 +- Compute a 64-bit unsigned integer quotient. +- in0 holds the dividend. in1 holds the divisor. */ +- +-ENTRY(___udivdi3) +- .regstk 2,0,0,0 +- /* Transfer inputs to FP registers. */ +- setf.sig f8 = in0 +- setf.sig f9 = in1 +- ;; +- /* Convert the inputs to FP, to avoid FP software-assist faults. */ +- fcvt.xuf.s1 f8 = f8 +- fcvt.xuf.s1 f9 = f9 +- ;; +- /* Compute the reciprocal approximation. */ +- frcpa.s1 f10, p6 = f8, f9 +- ;; +- /* 3 Newton-Raphson iterations. */ +-(p6) fnma.s1 f11 = f9, f10, f1 +-(p6) fmpy.s1 f12 = f8, f10 +- ;; +-(p6) fmpy.s1 f13 = f11, f11 +-(p6) fma.s1 f12 = f11, f12, f12 +- ;; +-(p6) fma.s1 f10 = f11, f10, f10 +-(p6) fma.s1 f11 = f13, f12, f12 +- ;; +-(p6) fma.s1 f10 = f13, f10, f10 +-(p6) fnma.s1 f12 = f9, f11, f8 +- ;; +-(p6) fma.s1 f10 = f12, f10, f11 +- ;; +- /* Round quotient to an unsigned integer. */ +- fcvt.fxu.trunc.s1 f10 = f10 +- ;; +- /* Transfer result to GP registers. */ +- getf.sig ret0 = f10 +- br.ret.sptk rp +- ;; +-END(___udivdi3) +- .symver ___udivdi3, __udivdi3@GLIBC_2.2 +- +-/* __umoddi3 +- Compute a 64-bit unsigned integer modulus. +- in0 holds the dividend (a). in1 holds the divisor (b). */ +- +-ENTRY(___umoddi3) +- .regstk 2,0,0,0 +- /* Transfer inputs to FP registers. */ +- setf.sig f14 = in0 +- setf.sig f9 = in1 +- ;; +- /* Convert the inputs to FP, to avoid FP software assist faults. */ +- fcvt.xuf.s1 f8 = f14 +- fcvt.xuf.s1 f9 = f9 +- ;; +- /* Compute the reciprocal approximation. */ +- frcpa.s1 f10, p6 = f8, f9 +- ;; +- /* 3 Newton-Raphson iterations. */ +-(p6) fmpy.s1 f12 = f8, f10 +-(p6) fnma.s1 f11 = f9, f10, f1 +- ;; +-(p6) fma.s1 f12 = f11, f12, f12 +-(p6) fmpy.s1 f13 = f11, f11 +- ;; +-(p6) fma.s1 f10 = f11, f10, f10 +-(p6) fma.s1 f11 = f13, f12, f12 +- ;; +- sub in1 = r0, in1 +-(p6) fma.s1 f10 = f13, f10, f10 +-(p6) fnma.s1 f12 = f9, f11, f8 +- ;; +- setf.sig f9 = in1 +-(p6) fma.s1 f10 = f12, f10, f11 +- ;; +- /* Round quotient to an unsigned integer. */ +- fcvt.fxu.trunc.s1 f10 = f10 +- ;; +- /* r = q * (-b) + a */ +- xma.l f10 = f10, f9, f14 +- ;; +- /* Transfer result to GP registers. */ +- getf.sig ret0 = f10 +- br.ret.sptk rp +- ;; +-END(___umoddi3) +- .symver ___umoddi3, __umoddi3@GLIBC_2.2 +- +-/* __multi3 +- Compute a 128-bit multiply of 128-bit multiplicands. +- in0/in1 holds one multiplicand (a), in2/in3 holds the other one (b). */ +- +-ENTRY(___multi3) +- .regstk 4,0,0,0 +- setf.sig f6 = in1 +- movl r19 = 0xffffffff +- setf.sig f7 = in2 +- ;; +- and r14 = r19, in0 +- ;; +- setf.sig f10 = r14 +- and r14 = r19, in2 +- xmpy.l f9 = f6, f7 +- ;; +- setf.sig f6 = r14 +- shr.u r14 = in0, 32 +- ;; +- setf.sig f7 = r14 +- shr.u r14 = in2, 32 +- ;; +- setf.sig f8 = r14 +- xmpy.l f11 = f10, f6 +- xmpy.l f6 = f7, f6 +- ;; +- getf.sig r16 = f11 +- xmpy.l f7 = f7, f8 +- ;; +- shr.u r14 = r16, 32 +- and r16 = r19, r16 +- getf.sig r17 = f6 +- setf.sig f6 = in0 +- ;; +- setf.sig f11 = r14 +- getf.sig r21 = f7 +- setf.sig f7 = in3 +- ;; +- xma.l f11 = f10, f8, f11 +- xma.l f6 = f6, f7, f9 +- ;; +- getf.sig r18 = f11 +- ;; +- add r18 = r18, r17 +- ;; +- and r15 = r19, r18 +- cmp.ltu p7, p6 = r18, r17 +- ;; +- getf.sig r22 = f6 +-(p7) adds r14 = 1, r19 +- ;; +-(p7) add r21 = r21, r14 +- shr.u r14 = r18, 32 +- shl r15 = r15, 32 +- ;; +- add r20 = r21, r14 +- ;; +- add ret0 = r15, r16 +- add ret1 = r22, r20 +- br.ret.sptk rp +- ;; +-END(___multi3) +- .symver ___multi3, __multi3@GLIBC_2.2 +- +-#endif +--- glibc-2.12-2-gc4ccff1/sysdeps/ia64/libgcc-compat.c ++++ glibc-2.12-1/sysdeps/ia64/libgcc-compat.c +@@ -0,0 +1,84 @@ ++/* pre-.hidden libgcc compatibility ++ Copyright (C) 2002 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 ++ ++#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_2_6) ++ ++typedef int int128_t __attribute__((__mode__(TI))); ++ ++extern long double __divtf3 (long double, long double) attribute_hidden; ++long double INTUSE (__divtf3) (long double x, long double y) ++{ ++ return __divtf3 (x, y); ++} ++symbol_version (INTUSE (__divtf3), __divtf3, GLIBC_2.2); ++ ++extern double __divdf3 (double, double) attribute_hidden; ++double INTUSE (__divdf3) (double x, double y) ++{ ++ return __divdf3 (x, y); ++} ++symbol_version (INTUSE (__divdf3), __divdf3, GLIBC_2.2); ++ ++extern float __divsf3 (float, float) attribute_hidden; ++float INTUSE (__divsf3) (float x, float y) ++{ ++ return __divsf3 (x, y); ++} ++symbol_version (INTUSE (__divsf3), __divsf3, GLIBC_2.2); ++ ++extern int64_t __divdi3 (int64_t, int64_t) attribute_hidden; ++int64_t INTUSE (__divdi3) (int64_t x, int64_t y) ++{ ++ return __divdi3 (x, y); ++} ++symbol_version (INTUSE (__divdi3), __divdi3, GLIBC_2.2); ++ ++extern int64_t __moddi3 (int64_t, int64_t) attribute_hidden; ++int64_t INTUSE (__moddi3) (int64_t x, int64_t y) ++{ ++ return __moddi3 (x, y); ++} ++symbol_version (INTUSE (__moddi3), __moddi3, GLIBC_2.2); ++ ++extern uint64_t __udivdi3 (uint64_t, uint64_t) attribute_hidden; ++uint64_t INTUSE (__udivdi3) (uint64_t x, uint64_t y) ++{ ++ return __udivdi3 (x, y); ++} ++symbol_version (INTUSE (__udivdi3), __udivdi3, GLIBC_2.2); ++ ++extern uint64_t __umoddi3 (uint64_t, uint64_t) attribute_hidden; ++uint64_t INTUSE (__umoddi3) (uint64_t x, uint64_t y) ++{ ++ return __umoddi3 (x, y); ++} ++symbol_version (INTUSE (__umoddi3), __umoddi3, GLIBC_2.2); ++ ++extern int128_t __multi3 (int128_t, int128_t) attribute_hidden; ++int128_t INTUSE (__multi3) (int128_t x, int128_t y) ++{ ++ return __multi3 (x, y); ++} ++symbol_version (INTUSE (__multi3), __multi3, GLIBC_2.2); ++ ++#endif +--- glibc-2.12-2-gc4ccff1/sysdeps/posix/getaddrinfo.c ++++ glibc-2.12-1/sysdeps/posix/getaddrinfo.c +@@ -1099,10 +1099,12 @@ static const struct scopeentry + /* Link-local addresses: scope 2. */ + { { { 169, 254, 0, 0 } }, htonl_c (0xffff0000), 2 }, + { { { 127, 0, 0, 0 } }, htonl_c (0xff000000), 2 }, ++#if 0 + /* Site-local addresses: scope 5. */ + { { { 10, 0, 0, 0 } }, htonl_c (0xff000000), 5 }, + { { { 172, 16, 0, 0 } }, htonl_c (0xfff00000), 5 }, + { { { 192, 168, 0, 0 } }, htonl_c (0xffff0000), 5 }, ++#endif + /* Default: scope 14. */ + { { { 0, 0, 0, 0 } }, htonl_c (0x00000000), 14 } + }; +--- glibc-2.12-2-gc4ccff1/sysdeps/powerpc/powerpc64/Makefile ++++ glibc-2.12-1/sysdeps/powerpc/powerpc64/Makefile +@@ -30,6 +30,7 @@ ifneq ($(elf),no) + # we use -fpic instead which is much better. + CFLAGS-initfini.s += -fpic -O1 + endif ++CFLAGS-libc-start.c += -fno-asynchronous-unwind-tables + endif + + ifeq ($(subdir),elf) +--- glibc-2.12-2-gc4ccff1/sysdeps/unix/nice.c ++++ glibc-2.12-1/sysdeps/unix/nice.c +@@ -42,7 +42,12 @@ nice (int incr) + __set_errno (save); + } + +- result = setpriority (PRIO_PROCESS, 0, prio + incr); ++ prio += incr; ++ if (prio < PRIO_MIN) ++ prio = PRIO_MIN; ++ else if (prio >= PRIO_MAX) ++ prio = PRIO_MAX - 1; ++ result = setpriority (PRIO_PROCESS, 0, prio); + if (result == -1) + { + if (errno == EACCES) +--- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/check_pf.c ++++ glibc-2.12-1/sysdeps/unix/sysv/linux/check_pf.c +@@ -27,13 +27,10 @@ + #include + #include + +-#include +-#include +-#include +- + #include + #include + ++#include "netlinkaccess.h" + + #ifndef IFA_F_HOMEADDRESS + # define IFA_F_HOMEADDRESS 0 +--- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/dl-osinfo.h ++++ glibc-2.12-1/sysdeps/unix/sysv/linux/dl-osinfo.h +@@ -17,10 +17,13 @@ + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + ++#include + #include + #include + #include + #include ++#include ++#include + + #ifndef MIN + # define MIN(a,b) (((a)<(b))?(a):(b)) +@@ -80,6 +83,32 @@ _dl_setup_stack_chk_guard (void *dl_rand + unsigned char *p = (unsigned char *) &ret; + p[sizeof (ret) - 1] = 255; + p[sizeof (ret) - 2] = '\n'; ++#ifdef HP_TIMING_NOW ++ hp_timing_t hpt; ++ HP_TIMING_NOW (hpt); ++ hpt = (hpt & 0xffff) << 8; ++ ret ^= hpt; ++#endif ++ uintptr_t stk; ++ /* Avoid GCC being too smart. */ ++ asm ("" : "=r" (stk) : "r" (p)); ++ stk &= 0x7ffff0; ++#if __BYTE_ORDER == __LITTLE_ENDIAN ++ stk <<= (__WORDSIZE - 23); ++#elif __WORDSIZE == 64 ++ stk <<= 31; ++#endif ++ ret ^= stk; ++ /* Avoid GCC being too smart. */ ++ p = (unsigned char *) &errno; ++ asm ("" : "=r" (stk) : "r" (p)); ++ stk &= 0x7fff00; ++#if __BYTE_ORDER == __LITTLE_ENDIAN ++ stk <<= (__WORDSIZE - 29); ++#else ++ stk >>= 8; ++#endif ++ ret ^= stk; + } + else + #endif +--- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/futimesat.c ++++ glibc-2.12-1/sysdeps/unix/sysv/linux/futimesat.c +@@ -37,14 +37,14 @@ futimesat (fd, file, tvp) + { + int result; + ++ if (file == NULL) ++ return __futimes (fd, tvp); ++ + #ifdef __NR_futimesat + # ifndef __ASSUME_ATFCTS + if (__have_atfcts >= 0) + # endif + { +- if (file == NULL) +- return __futimes (fd, tvp); +- + result = INLINE_SYSCALL (futimesat, 3, fd, file, tvp); + # ifndef __ASSUME_ATFCTS + if (result == -1 && errno == ENOSYS) +@@ -58,22 +58,7 @@ futimesat (fd, file, tvp) + #ifndef __ASSUME_ATFCTS + char *buf = NULL; + +- if (file == NULL) +- { +- static const char procfd[] = "/proc/self/fd/%d"; +- /* Buffer for the path name we are going to use. It consists of +- - the string /proc/self/fd/ +- - the file descriptor number. +- The final NUL is included in the sizeof. A bit of overhead +- due to the format elements compensates for possible negative +- numbers. */ +- size_t buflen = sizeof (procfd) + sizeof (int) * 3; +- buf = alloca (buflen); +- +- __snprintf (buf, buflen, procfd, fd); +- file = buf; +- } +- else if (fd != AT_FDCWD && file[0] != '/') ++ if (fd != AT_FDCWD && file[0] != '/') + { + size_t filelen = strlen (file); + if (__builtin_expect (filelen == 0, 0)) +--- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/i386/dl-cache.h ++++ glibc-2.12-1/sysdeps/unix/sysv/linux/i386/dl-cache.h +@@ -0,0 +1,59 @@ ++/* Support for reading /etc/ld.so.cache files written by Linux ldconfig. ++ Copyright (C) 2004 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. */ ++ ++static inline int ++is_ia64 (void) ++{ ++ unsigned int fl1, fl2; ++ ++ /* See if we can use cpuid. */ ++ __asm__ ("pushfl; pushfl; popl %0; movl %0,%1; xorl %2,%0;" ++ "pushl %0; popfl; pushfl; popl %0; popfl" ++ : "=&r" (fl1), "=&r" (fl2) ++ : "i" (0x00200000)); ++ if (((fl1 ^ fl2) & 0x00200000) == 0) ++ return 0; ++ ++ /* Host supports cpuid. See if cpuid gives capabilities, try ++ CPUID(0). Preserve %ebx and %ecx; cpuid insn clobbers these, we ++ don't need their CPUID values here, and %ebx may be the PIC ++ register. */ ++ __asm__ ("pushl %%ecx; pushl %%ebx; cpuid; popl %%ebx; popl %%ecx" ++ : "=a" (fl1) : "0" (0) : "edx", "cc"); ++ if (fl1 == 0) ++ return 0; ++ ++ /* Invoke CPUID(1), return %edx; caller can examine bits to ++ determine what's supported. */ ++ __asm__ ("pushl %%ecx; pushl %%ebx; cpuid; popl %%ebx; popl %%ecx" ++ : "=d" (fl2), "=a" (fl1) : "1" (1) : "cc"); ++ return (fl2 & (1 << 30)) != 0; ++} ++ ++#define arch_startup(argc, argv) \ ++ do { \ ++ /* On IA-64, try to execute 64-bit ldconfig if possible. \ ++ This is because the badly designed /emul/ia32-linux hack \ ++ will cause 32-bit ldconfig to do all sorts of weird things. */ \ ++ if (is_ia64 ()) \ ++ execv ("/emul/ia32-linux/../../sbin/ldconfig", \ ++ (char *const *) argv); \ ++ } while (0) ++ ++#include_next +--- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/ia64/dl-cache.h ++++ glibc-2.12-1/sysdeps/unix/sysv/linux/ia64/dl-cache.h +@@ -22,4 +22,31 @@ + #define _dl_cache_check_flags(flags) \ + ((flags) == _DL_CACHE_DEFAULT_ID) + ++#define EMUL_HACK "/emul/ia32-linux" ++ ++#define arch_startup(argc, argv) unlink (EMUL_HACK LD_SO_CACHE) ++ ++#define add_arch_dirs(config_file) \ ++ do { \ ++ int save_verbose = opt_verbose; \ ++ opt_verbose = 0; \ ++ \ ++ parse_conf (config_file, EMUL_HACK, true); \ ++ \ ++ /* Always add the standard search paths. */ \ ++ add_system_dir (EMUL_HACK SLIBDIR); \ ++ if (strcmp (SLIBDIR, LIBDIR)) \ ++ add_system_dir (EMUL_HACK LIBDIR); \ ++ \ ++ char emul_config_file[strlen (config_file) \ ++ + sizeof EMUL_HACK]; \ ++ strcpy (mempcpy (emul_config_file, EMUL_HACK, \ ++ strlen (EMUL_HACK)), config_file); \ ++ \ ++ if (! access (emul_config_file, R_OK)) \ ++ parse_conf (emul_config_file, EMUL_HACK, true); \ ++ \ ++ opt_verbose = save_verbose; \ ++ } while (0) ++ + #include_next +--- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/ia64/dl-procinfo.c ++++ glibc-2.12-1/sysdeps/unix/sysv/linux/ia64/dl-procinfo.c +@@ -0,0 +1,5 @@ ++#ifdef IS_IN_ldconfig ++#include ++#else ++#include ++#endif +--- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/ia64/dl-procinfo.h ++++ glibc-2.12-1/sysdeps/unix/sysv/linux/ia64/dl-procinfo.h +@@ -0,0 +1,5 @@ ++#ifdef IS_IN_ldconfig ++#include ++#else ++#include ++#endif +--- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed ++++ glibc-2.12-1/sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed +@@ -1 +1 @@ +-s_^\(RTLDLIST=\)\([^ ]*\)-ia64\(\.so\.[0-9.]*\)[ ]*$_\1"\2-ia64\3 \2\3"_ ++s_^\(RTLDLIST=\)\([^ ]*\)-ia64\(\.so\.[0-9.]*\)[ ]*$_\1"\2-ia64\3 /emul/ia32-linux\2\3"_ +--- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/netlinkaccess.h ++++ glibc-2.12-1/sysdeps/unix/sysv/linux/netlinkaccess.h +@@ -25,6 +25,24 @@ + + #include + ++#ifndef IFA_MAX ++/* 2.6.19 kernel headers helpfully removed some macros and ++ moved lots of stuff into new headers, some of which aren't ++ included by linux/rtnetlink.h. */ ++#include ++#endif ++ ++#ifndef IFA_RTA ++# define IFA_RTA(r) \ ++ ((struct rtattr*) ((char*)(r) + NLMSG_ALIGN (sizeof (struct ifaddrmsg)))) ++# define IFA_PAYLOAD(n) NLMSG_PAYLOAD (n, sizeof (struct ifaddrmsg)) ++#endif ++ ++#ifndef IFLA_RTA ++# define IFLA_RTA(r) \ ++ ((struct rtattr*) ((char*)(r) + NLMSG_ALIGN (sizeof (struct ifinfomsg)))) ++# define IFLA_PAYLOAD(n) NLMSG_PAYLOAD (n, sizeof (struct ifinfomsg)) ++#endif + + struct netlink_res + { +--- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/paths.h ++++ glibc-2.12-1/sysdeps/unix/sysv/linux/paths.h +@@ -62,7 +62,7 @@ + #define _PATH_TTY "/dev/tty" + #define _PATH_UNIX "/boot/vmlinux" + #define _PATH_UTMP "/var/run/utmp" +-#define _PATH_VI "/usr/bin/vi" ++#define _PATH_VI "/bin/vi" + #define _PATH_WTMP "/var/log/wtmp" + + /* Provide trailing slash, since mostly used for building pathnames. */ +--- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/sparc/sparc64/fxstat.c ++++ glibc-2.12-1/sysdeps/unix/sysv/linux/sparc/sparc64/fxstat.c +@@ -1 +1 @@ +-#include "../../fxstat.c" ++#include "../../i386/fxstat.c" +--- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/tcsetattr.c ++++ glibc-2.12-1/sysdeps/unix/sysv/linux/tcsetattr.c +@@ -49,6 +49,7 @@ tcsetattr (fd, optional_actions, termios + { + struct __kernel_termios k_termios; + unsigned long int cmd; ++ int retval; + + switch (optional_actions) + { +@@ -80,6 +81,35 @@ tcsetattr (fd, optional_actions, termios + memcpy (&k_termios.c_cc[0], &termios_p->c_cc[0], + __KERNEL_NCCS * sizeof (cc_t)); + +- return INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios); ++ retval = INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios); ++ ++ if (retval == 0 && cmd == TCSETS) ++ { ++ /* The Linux kernel has a bug which silently ignore the invalid ++ c_cflag on pty. We have to check it here. */ ++ int save = errno; ++ retval = INLINE_SYSCALL (ioctl, 3, fd, TCGETS, &k_termios); ++ if (retval) ++ { ++ /* We cannot verify if the setting is ok. We don't return ++ an error (?). */ ++ __set_errno (save); ++ retval = 0; ++ } ++ else if ((termios_p->c_cflag & (PARENB | CREAD)) ++ != (k_termios.c_cflag & (PARENB | CREAD)) ++ || ((termios_p->c_cflag & CSIZE) ++ && ((termios_p->c_cflag & CSIZE) ++ != (k_termios.c_cflag & CSIZE)))) ++ { ++ /* It looks like the Linux kernel silently changed the ++ PARENB/CREAD/CSIZE bits in c_cflag. Report it as an ++ error. */ ++ __set_errno (EINVAL); ++ retval = -1; ++ } ++ } ++ ++ return retval; + } + libc_hidden_def (tcsetattr) +--- glibc-2.12-2-gc4ccff1/timezone/zic.c ++++ glibc-2.12-1/timezone/zic.c +@@ -1921,7 +1921,7 @@ const int zonecount; + if (stdrp != NULL && stdrp->r_hiyear == 2037) + return; + } +- if (stdrp == NULL && zp->z_nrules != 0) ++ if (stdrp == NULL && (zp->z_nrules != 0 || zp->z_stdoff != 0)) + return; + abbrvar = (stdrp == NULL) ? "" : stdrp->r_abbrvar; + doabbr(result, zp->z_format, abbrvar, FALSE, TRUE); diff --git a/src/patches/glibc/glibc-getlogin-r.patch b/src/patches/glibc/glibc-getlogin-r.patch new file mode 100644 index 000000000..9181ce12c --- /dev/null +++ b/src/patches/glibc/glibc-getlogin-r.patch @@ -0,0 +1,36 @@ +2010-05-05 Ulrich Drepper + + [BZ #11571] + * sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid): Handle + too small buffers according to the standard. + +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/getlogin_r.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/getlogin_r.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/getlogin_r.c +@@ -81,13 +81,22 @@ __getlogin_r_loginuid (name, namesize) + if (tpwd == NULL) + goto fail; + +- strncpy (name, pwd.pw_name, namesize - 1); +- name[namesize - 1] = '\0'; ++ int result = 0; ++ size_t needed = strlen (pwd.pw_name) + 1; ++ if (needed > namesize) ++ { ++ __set_errno (ERANGE); ++ result = ERANGE; ++ goto out; ++ } + ++ memcpy (name, pwd.pw_name, needed); ++ ++ out: + if (use_malloc) + free (buf); + +- return 0; ++ return result; + } + + diff --git a/src/patches/glibc/glibc-localedata.patch b/src/patches/glibc/glibc-localedata.patch new file mode 100644 index 000000000..15de7c6d6 --- /dev/null +++ b/src/patches/glibc/glibc-localedata.patch @@ -0,0 +1,18 @@ +2010-05-04 Andreas Schwab + + * SUPPORTED (SUPPORTED-LOCALES): Fix name of tt_RU.UTF-8@iqtelif + locale. + +Index: glibc-2.12-2-gc4ccff1/localedata/SUPPORTED +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/SUPPORTED ++++ glibc-2.12-2-gc4ccff1/localedata/SUPPORTED +@@ -392,7 +392,7 @@ tr_TR.UTF-8/UTF-8 \ + tr_TR/ISO-8859-9 \ + ts_ZA/UTF-8 \ + tt_RU.UTF-8/UTF-8 \ +-tt_RU@iqtelif.UTF-8/UTF-8 \ ++tt_RU.UTF-8@iqtelif/UTF-8 \ + ug_CN/UTF-8 \ + uk_UA.UTF-8/UTF-8 \ + uk_UA/KOI8-U \ diff --git a/src/patches/glibc/glibc-recvmmsg.patch b/src/patches/glibc/glibc-recvmmsg.patch new file mode 100644 index 000000000..9e3aa7ade --- /dev/null +++ b/src/patches/glibc/glibc-recvmmsg.patch @@ -0,0 +1,182 @@ +2010-05-21 Andreas Schwab + + * sysdeps/unix/sysv/linux/Makefile (sysdep_routines): Add recvmmsg + and internal_recvmmsg. + * sysdeps/unix/sysv/linux/recvmmsg.c: New file. + * sysdeps/unix/sysv/linux/internal_recvmmsg.S: New file. + * sysdeps/unix/sysv/linux/socketcall.h (SOCKOP_recvmmsg): Define. + * sysdeps/unix/sysv/linux/syscalls.list (recvmmsg): Remove. + +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/Makefile ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/Makefile +@@ -12,7 +12,7 @@ CFLAGS-malloc.c += -DMORECORE_CLEARS=2 + endif + + ifeq ($(subdir),socket) +-sysdep_routines += internal_accept4 ++sysdep_routines += internal_accept4 recvmmsg internal_recvmmsg + endif + + ifeq ($(subdir),misc) +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/internal_recvmmsg.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/internal_recvmmsg.S +@@ -0,0 +1,14 @@ ++#include ++#include ++#if !defined __NR_recvmmsg && defined __NR_socketcall ++# define socket recvmmsg ++# ifdef __ASSUME_RECVMMSG ++# define __socket recvmmsg ++# else ++# define __socket __internal_recvmmsg ++# endif ++# define NARGS 5 ++# define NEED_CANCELLATION ++# define NO_WEAK_ALIAS ++# include ++#endif +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/kernel-features.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/kernel-features.h ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/kernel-features.h +@@ -547,3 +547,8 @@ + #if __LINUX_KERNEL_VERSION >= 0x020620 + # define __ASSUME_F_GETOWN_EX 1 + #endif ++ ++/* Support for the recvmmsg syscall was added in 2.6.33. */ ++#if __LINUX_KERNEL_VERSION >= 0x020621 ++# define __ASSUME_RECVMMSG 1 ++#endif +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/recvmmsg.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/recvmmsg.c +@@ -0,0 +1,100 @@ ++/* Copyright (C) 2010 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Andreas Schwab , 2010. ++ ++ 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 ++ ++ ++#ifdef __NR_recvmmsg ++int ++recvmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags, ++ const struct timespec *tmo) ++{ ++ if (SINGLE_THREAD_P) ++ return INLINE_SYSCALL (recvmmsg, 5, fd, vmessages, vlen, flags, tmo); ++ ++ int oldtype = LIBC_CANCEL_ASYNC (); ++ ++ int result = INLINE_SYSCALL (recvmmsg, 5, fd, vmessages, vlen, flags, tmo); ++ ++ LIBC_CANCEL_RESET (oldtype); ++ ++ return result; ++} ++#elif defined __NR_socketcall ++# ifndef __ASSUME_RECVMMSG ++extern int __internal_recvmmsg (int fd, struct mmsghdr *vmessages, ++ unsigned int vlen, int flags, ++ const struct timespec *tmo) ++ attribute_hidden; ++ ++static int have_recvmmsg; ++ ++int ++recvmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags, ++ const struct timespec *tmo) ++{ ++ if (__builtin_expect (have_recvmmsg >= 0, 1)) ++ { ++ int ret = __internal_recvmmsg (fd, vmessages, vlen, flags, tmo); ++ /* The kernel returns -EINVAL for unknown socket operations. ++ We need to convert that error to an ENOSYS error. */ ++ if (__builtin_expect (ret < 0, 0) ++ && have_recvmmsg == 0 ++ && errno == EINVAL) ++ { ++ /* Try another call, this time with an invalid file ++ descriptor and all other parameters cleared. This call ++ will not cause any harm and it will return ++ immediately. */ ++ ret = __internal_recvmmsg (-1, 0, 0, 0, 0); ++ if (errno == EINVAL) ++ { ++ have_recvmmsg = -1; ++ __set_errno (ENOSYS); ++ } ++ else ++ { ++ have_recvmmsg = 1; ++ __set_errno (EINVAL); ++ } ++ return -1; ++ } ++ return ret; ++ } ++ __set_errno (ENOSYS); ++ return -1; ++} ++# else ++/* When __ASSUME_RECVMMSG recvmmsg is defined in internal_recvmmsg.S. */ ++# endif ++#else ++int ++recvmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags, ++ const struct timespec *tmo) ++{ ++ __set_errno (ENOSYS); ++ return -1; ++} ++stub_warning (recvmmsg) ++#endif +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/socketcall.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/socketcall.h ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/socketcall.h +@@ -44,5 +44,6 @@ + #define SOCKOP_sendmsg 16 + #define SOCKOP_recvmsg 17 + #define SOCKOP_accept4 18 ++#define SOCKOP_recvmmsg 19 + + #endif /* sys/socketcall.h */ +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/syscalls.list +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/syscalls.list ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/syscalls.list +@@ -53,7 +53,6 @@ prctl EXTRA prctl i:iiiii __prctl prc + putpmsg - putpmsg i:ippii putpmsg + query_module EXTRA query_module i:sipip query_module + quotactl EXTRA quotactl i:isip quotactl +-recvmmsg EXTRA recvmmsg Ci:ipiip recvmmsg + remap_file_pages - remap_file_pages i:piiii __remap_file_pages remap_file_pages + sched_getp - sched_getparam i:ip __sched_getparam sched_getparam + sched_gets - sched_getscheduler i:i __sched_getscheduler sched_getscheduler diff --git a/src/patches/glibc/glibc-rh580498.patch b/src/patches/glibc/glibc-rh580498.patch new file mode 100644 index 000000000..05b673a9f --- /dev/null +++ b/src/patches/glibc/glibc-rh580498.patch @@ -0,0 +1,296 @@ +2010-07-03 Ulrich Drepper + + * tst-abstime.c (do_test): Some more cleanups + +2010-07-02 Ulrich Drepper + + * tst-abstime.c: Correct testing and add test for sem_timedwait. + +2010-07-01 Andreas Schwab + Ulrich Drepper + + * Makefile (tests): Add tst-abstime. + * tst-abstime.c: New file. + * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S + (__lll_timedlock_wait): Check for timestamp before the Epoch. + * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S + (__lll_timedlock_wait): Likewise. + * sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S + (__lll_robust_timedlock_wait): Likewise. + * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S + (__pthread_cond_timedwait): Likewise. + * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S + (pthread_rwlock_timedrdlock): Likewise. + * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S + (pthread_rwlock_timedwrlock): Likewise. + * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S (sem_timedwait): + Likewise. + +Index: glibc-2.12-2-gc4ccff1/nptl/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/Makefile ++++ glibc-2.12-2-gc4ccff1/nptl/Makefile +@@ -256,6 +256,7 @@ tests = tst-typesizes \ + tst-sched1 \ + tst-backtrace1 \ + tst-oddstacklimit \ ++ tst-abstime \ + tst-vfork1 tst-vfork2 tst-vfork1x tst-vfork2x \ + tst-getpid1 tst-getpid2 tst-getpid3 \ + tst-initializers1 $(patsubst %,tst-initializers1-%,c89 gnu89 c99 gnu99) +Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S ++++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S +@@ -188,6 +188,9 @@ __lll_timedlock_wait: + je .Lreltmo + # endif + ++ cmpl $0, (%edx) ++ js 8f ++ + movl %ecx, %ebx + movl %esi, %ecx + movl %edx, %esi +@@ -223,6 +226,9 @@ __lll_timedlock_wait: + cfi_restore(%ebp) + ret + ++8: movl $ETIMEDOUT, %eax ++ jmp 7b ++ + # ifndef __ASSUME_FUTEX_CLOCK_REALTIME + .Lreltmo: + /* Check for a valid timeout value. */ +Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S ++++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S +@@ -169,9 +169,13 @@ __lll_timedlock_wait: + je .Lreltmo + # endif + ++ cmpq $0, (%rdx) ++ js 5f ++ + pushq %r9 + cfi_adjust_cfa_offset(8) + cfi_rel_offset(%r9, 0) ++ + movq %rdx, %r10 + movl $0xffffffff, %r9d + LOAD_FUTEX_WAIT_ABS (%esi) +@@ -202,6 +206,9 @@ __lll_timedlock_wait: + cfi_restore(%r9) + retq + ++5: movl $ETIMEDOUT, %eax ++ retq ++ + # ifndef __ASSUME_FUTEX_CLOCK_REALTIME + .Lreltmo: + /* Check for a valid timeout value. */ +Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S ++++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S +@@ -125,6 +125,9 @@ __lll_robust_timedlock_wait: + je .Lreltmo + # endif + ++ cmpq $0, (%rdx) ++ js 7f ++ + pushq %r9 + cfi_adjust_cfa_offset(8) + cfi_rel_offset(%r9, 0) +@@ -180,6 +183,9 @@ __lll_robust_timedlock_wait: + cfi_adjust_cfa_offset(-8) + cfi_restore(%r9) + ++7: movl $ETIMEDOUT, %eax ++ retq ++ + + # ifndef __ASSUME_FUTEX_CLOCK_REALTIME + .Lreltmo: +Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S ++++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S +@@ -144,6 +144,10 @@ __pthread_cond_timedwait: + movq %r9, 24(%rsp) + movl %edx, 4(%rsp) + ++ cmpq $0, (%r13) ++ movq $-ETIMEDOUT, %r14 ++ js 36f ++ + 38: movl cond_futex(%rdi), %r12d + + /* Unlock. */ +Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S ++++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S +@@ -102,6 +102,9 @@ pthread_rwlock_timedrdlock: + je .Lreltmo + #endif + ++ cmpq $0, (%r13) ++ js 16f /* Time is already up. */ ++ + movl $FUTEX_PRIVATE_FLAG|FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, %esi + xorl PSHARED(%r12), %esi + movq %r13, %r10 +Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S ++++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S +@@ -99,6 +99,9 @@ pthread_rwlock_timedwrlock: + je .Lreltmo + #endif + ++ cmpq $0, (%r13) ++ js 16f /* Time is already up. */ ++ + movl $FUTEX_PRIVATE_FLAG|FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, %esi + xorl PSHARED(%r12), %esi + movq %r13, %r10 +Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S ++++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S +@@ -77,6 +77,9 @@ sem_timedwait: + je .Lreltmo + #endif + ++ cmpq $0, (%rsi) ++ js 16f ++ + /* This push is only needed to store the sem_t pointer for the + exception handler. */ + pushq %rdi +@@ -169,6 +172,19 @@ sem_timedwait: + + retq + ++16: ++#if USE___THREAD ++ movq errno@gottpoff(%rip), %rdx ++ movl $ETIMEDOUT, %fs:(%rdx) ++#else ++ callq __errno_location@plt ++ movl $ETIMEDOUT, (%rax) ++#endif ++ ++ orl $-1, %eax ++ ++ retq ++ + #ifndef __ASSUME_FUTEX_CLOCK_REALTIME + .Lreltmo: + pushq %r12 +Index: glibc-2.12-2-gc4ccff1/nptl/tst-abstime.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/nptl/tst-abstime.c +@@ -0,0 +1,98 @@ ++/* Copyright (C) 2010 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Andreas Schwab , 2010. ++ ++ 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 pthread_cond_t c = PTHREAD_COND_INITIALIZER; ++static pthread_mutex_t m1 = PTHREAD_MUTEX_INITIALIZER; ++static pthread_mutex_t m2 = PTHREAD_MUTEX_INITIALIZER; ++static pthread_rwlock_t rw1 = PTHREAD_RWLOCK_INITIALIZER; ++static pthread_rwlock_t rw2 = PTHREAD_RWLOCK_INITIALIZER; ++static sem_t sem; ++ ++static void * ++th (void *arg) ++{ ++ long int res = 0; ++ int r; ++ struct timespec t = { -2, 0 }; ++ ++ r = pthread_mutex_timedlock (&m1, &t); ++ if (r != ETIMEDOUT) ++ { ++ puts ("pthread_mutex_timedlock did not return ETIMEDOUT"); ++ res = 1; ++ } ++ r = pthread_rwlock_timedrdlock (&rw1, &t); ++ if (r != ETIMEDOUT) ++ { ++ puts ("pthread_rwlock_timedrdlock did not return ETIMEDOUT"); ++ res = 1; ++ } ++ r = pthread_rwlock_timedwrlock (&rw2, &t); ++ if (r != ETIMEDOUT) ++ { ++ puts ("pthread_rwlock_timedwrlock did not return ETIMEDOUT"); ++ res = 1; ++ } ++ return (void *) res; ++} ++ ++static int ++do_test (void) ++{ ++ int res = 0; ++ int r; ++ struct timespec t = { -2, 0 }; ++ pthread_t pth; ++ ++ sem_init (&sem, 0, 0); ++ r = sem_timedwait (&sem, &t); ++ if (r != -1 || errno != ETIMEDOUT) ++ { ++ puts ("sem_timedwait did not fail with ETIMEDOUT"); ++ res = 1; ++ } ++ ++ pthread_mutex_lock (&m1); ++ pthread_rwlock_wrlock (&rw1); ++ pthread_rwlock_rdlock (&rw2); ++ pthread_mutex_lock (&m2); ++ if (pthread_create (&pth, 0, th, 0) != 0) ++ { ++ puts ("cannot create thread"); ++ return 1; ++ } ++ r = pthread_cond_timedwait (&c, &m2, &t); ++ if (r != ETIMEDOUT) ++ { ++ puts ("pthread_cond_timedwait did not return ETIMEDOUT"); ++ res = 1; ++ } ++ void *thres; ++ pthread_join (pth, &thres); ++ return res | (thres != NULL); ++} ++ ++ ++#define TEST_FUNCTION do_test () ++#include "../test-skeleton.c" diff --git a/src/patches/glibc/glibc-rh582738.patch b/src/patches/glibc/glibc-rh582738.patch new file mode 100644 index 000000000..40f7b80ff --- /dev/null +++ b/src/patches/glibc/glibc-rh582738.patch @@ -0,0 +1,13 @@ +Index: glibc-2.11-382-g1cdb215/nscd/nscd.init +=================================================================== +--- glibc-2.11-382-g1cdb215.orig/nscd/nscd.init ++++ glibc-2.11-382-g1cdb215/nscd/nscd.init +@@ -76,7 +76,7 @@ case "$1" in + RETVAL=$? + ;; + stop) +- stop ++ [ ! -e /var/lock/subsys/nscd ] || stop + RETVAL=$? + ;; + status) diff --git a/src/patches/glibc/glibc-rh587360.patch b/src/patches/glibc/glibc-rh587360.patch new file mode 100644 index 000000000..07b62e60b --- /dev/null +++ b/src/patches/glibc/glibc-rh587360.patch @@ -0,0 +1,13 @@ +Index: glibc-2.11-382-g1cdb215/posix/regexec.c +=================================================================== +--- glibc-2.11-382-g1cdb215.orig/posix/regexec.c ++++ glibc-2.11-382-g1cdb215/posix/regexec.c +@@ -4031,7 +4031,7 @@ find_collation_sequence_value (const uns + /* Skip the collation sequence value. */ + idx += sizeof (uint32_t); + /* Skip the wide char sequence of the collating element. */ +- idx = idx + sizeof (uint32_t) * (extra[idx] + 1); ++ idx = idx + sizeof (uint32_t) * (*(int32_t *) (extra + idx) + 1); + /* If we found the entry, return the sequence value. */ + if (found) + return *(uint32_t *) (extra + idx); diff --git a/src/patches/glibc/glibc-rh593396.patch b/src/patches/glibc/glibc-rh593396.patch new file mode 100644 index 000000000..b907a364d --- /dev/null +++ b/src/patches/glibc/glibc-rh593396.patch @@ -0,0 +1,42 @@ +2010-05-06 Ulrich Drepper + + * malloc/malloc.c (_int_free): Possible race in the most recently + added check. Only act on the data if no current modification + happened. + +Index: glibc-2.12-2-gc4ccff1/malloc/malloc.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/malloc/malloc.c ++++ glibc-2.12-2-gc4ccff1/malloc/malloc.c +@@ -4859,6 +4859,7 @@ _int_free(mstate av, mchunkptr p) + #ifdef ATOMIC_FASTBINS + mchunkptr fd; + mchunkptr old = *fb; ++ unsigned int old_idx = ~0u; + do + { + /* Another simple check: make sure the top of the bin is not the +@@ -4868,15 +4869,17 @@ _int_free(mstate av, mchunkptr p) + errstr = "double free or corruption (fasttop)"; + goto errout; + } +- if (old != NULL +- && __builtin_expect (fastbin_index(chunksize(old)) != idx, 0)) +- { +- errstr = "invalid fastbin entry (free)"; +- goto errout; +- } ++ if (old != NULL) ++ old_idx = fastbin_index(chunksize(old)); + p->fd = fd = old; + } + while ((old = catomic_compare_and_exchange_val_rel (fb, p, fd)) != fd); ++ ++ if (fd != NULL && __builtin_expect (old_idx != idx, 0)) ++ { ++ errstr = "invalid fastbin entry (free)"; ++ goto errout; ++ } + #else + /* Another simple check: make sure the top of the bin is not the + record we are going to add (i.e., double free). */ diff --git a/src/patches/glibc/glibc-rh593686.patch b/src/patches/glibc/glibc-rh593686.patch new file mode 100644 index 000000000..3eceb6829 --- /dev/null +++ b/src/patches/glibc/glibc-rh593686.patch @@ -0,0 +1,179 @@ +2010-05-26 Andreas Schwab + + * elf/Makefile: Add rules to build and run unload8 test. + * elf/unload8.c: New file. + * elf/unload8mod1.c: New file. + * elf/unload8mod1x.c: New file. + * elf/unload8mod2.c: New file. + * elf/unload8mod3.c: New file. + + * elf/dl-close.c (_dl_close_worker): Reset private search list if + it wasn't used. + +Index: glibc-2.12-2-gc4ccff1/elf/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/Makefile ++++ glibc-2.12-2-gc4ccff1/elf/Makefile +@@ -89,6 +89,7 @@ distribute := rtld-Rules \ + unload4mod1.c unload4mod2.c unload4mod3.c unload4mod4.c \ + unload6mod1.c unload6mod2.c unload6mod3.c \ + unload7mod1.c unload7mod2.c \ ++ unload8mod1.c unload8mod1x.c unload8mod2.c unload8mod3.c \ + tst-audit1.c tst-audit2.c tst-audit3.c tst-audit4.c \ + tst-auditmod1.c tst-auditmod3a.c tst-auditmod3b.c \ + tst-auditmod4a.c tst-auditmod4b.c \ +@@ -196,7 +197,7 @@ tests += loadtest restest1 preloadtest l + tst-align tst-align2 $(tests-execstack-$(have-z-execstack)) \ + tst-dlmodcount tst-dlopenrpath tst-deep1 \ + tst-dlmopen1 tst-dlmopen2 tst-dlmopen3 \ +- unload3 unload4 unload5 unload6 unload7 tst-global1 order2 \ ++ unload3 unload4 unload5 unload6 unload7 unload8 tst-global1 order2 \ + tst-audit1 tst-audit2 \ + tst-stackguard1 tst-addr1 tst-thrlock \ + tst-unique1 tst-unique2 +@@ -247,6 +248,7 @@ modules-names = testobj1 testobj2 testob + unload4mod1 unload4mod2 unload4mod3 unload4mod4 \ + unload6mod1 unload6mod2 unload6mod3 \ + unload7mod1 unload7mod2 \ ++ unload8mod1 unload8mod1x unload8mod2 unload8mod3 \ + order2mod1 order2mod2 order2mod3 order2mod4 \ + tst-unique1mod1 tst-unique1mod2 \ + tst-unique2mod1 tst-unique2mod2 +@@ -522,6 +524,9 @@ $(objpfx)unload6mod2.so: $(libdl) + $(objpfx)unload6mod3.so: $(libdl) + $(objpfx)unload7mod1.so: $(libdl) + $(objpfx)unload7mod2.so: $(objpfx)unload7mod1.so ++$(objpfx)unload8mod1.so: $(objpfx)unload8mod2.so ++$(objpfx)unload8mod2.so: $(objpfx)unload8mod3.so ++$(objpfx)unload8mod3.so: $(libdl) + + LDFLAGS-tst-tlsmod5.so = -nostdlib + LDFLAGS-tst-tlsmod6.so = -nostdlib +@@ -823,6 +828,9 @@ $(objpfx)unload7: $(libdl) + $(objpfx)unload7.out: $(objpfx)unload7mod1.so $(objpfx)unload7mod2.so + unload7-ENV = MALLOC_PERTURB_=85 + ++$(objpfx)unload8: $(libdl) ++$(objpfx)unload8.out: $(objpfx)unload8mod1.so $(objpfx)unload8mod1x.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 +Index: glibc-2.12-2-gc4ccff1/elf/dl-close.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/dl-close.c ++++ glibc-2.12-2-gc4ccff1/elf/dl-close.c +@@ -421,6 +421,13 @@ _dl_close_worker (struct link_map *map) + + imap->l_scope_max = new_size; + } ++ else if (new_list != NULL) ++ { ++ /* We didn't change the scope array, so reset the search ++ list. */ ++ imap->l_searchlist.r_list = NULL; ++ imap->l_searchlist.r_nlist = 0; ++ } + + /* The loader is gone, so mark the object as not having one. + Note: l_idx != IDX_STILL_USED -> object will be removed. */ +Index: glibc-2.12-2-gc4ccff1/elf/unload8.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/elf/unload8.c +@@ -0,0 +1,33 @@ ++#include ++#include ++ ++int ++main (void) ++{ ++ void *h = dlopen ("$ORIGIN/unload8mod1.so", RTLD_LAZY); ++ if (h == NULL) ++ { ++ puts ("dlopen unload8mod1.so failed"); ++ return 1; ++ } ++ ++ void *h2 = dlopen ("$ORIGIN/unload8mod1x.so", RTLD_LAZY); ++ if (h2 == NULL) ++ { ++ puts ("dlopen unload8mod1x.so failed"); ++ return 1; ++ } ++ dlclose (h2); ++ ++ int (*mod1) (void) = dlsym (h, "mod1"); ++ if (mod1 == NULL) ++ { ++ puts ("dlsym failed"); ++ return 1; ++ } ++ ++ mod1 (); ++ dlclose (h); ++ ++ return 0; ++} +Index: glibc-2.12-2-gc4ccff1/elf/unload8mod1.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/elf/unload8mod1.c +@@ -0,0 +1,7 @@ ++extern void mod2 (void); ++ ++void ++mod1 (void) ++{ ++ mod2 (); ++} +Index: glibc-2.12-2-gc4ccff1/elf/unload8mod1x.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/elf/unload8mod1x.c +@@ -0,0 +1 @@ ++int mod1x; +Index: glibc-2.12-2-gc4ccff1/elf/unload8mod2.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/elf/unload8mod2.c +@@ -0,0 +1,7 @@ ++extern void mod3 (void); ++ ++void ++mod2 (void) ++{ ++ mod3 (); ++} +Index: glibc-2.12-2-gc4ccff1/elf/unload8mod3.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/elf/unload8mod3.c +@@ -0,0 +1,27 @@ ++#include ++#include ++#include ++ ++void ++mod3_fini2 (void) ++{ ++} ++ ++void ++mod3_fini (void) ++{ ++ mod3_fini2 (); ++} ++ ++void ++mod3 (void) ++{ ++ void *h = dlopen ("$ORIGIN/unload8mod2.so", RTLD_LAZY); ++ if (h == NULL) ++ { ++ puts ("dlopen unload8mod2.so failed"); ++ exit (1); ++ } ++ ++ atexit (mod3_fini); ++} diff --git a/src/patches/glibc/glibc-rh601686.patch b/src/patches/glibc/glibc-rh601686.patch new file mode 100644 index 000000000..01e42dce4 --- /dev/null +++ b/src/patches/glibc/glibc-rh601686.patch @@ -0,0 +1,4640 @@ +2010-11-09 H.J. Lu + + [BZ #12205] + * string/test-strncasecmp.c (check_result): New function. + (do_one_test): Use it. + (check1): New function. + (test_main): Use it. + * sysdeps/i386/i686/multiarch/strcmp.S (nibble_ashr_use_sse4_2_exit): + Support strcasecmp and strncasecmp. + +2010-10-03 Ulrich Drepper + + [BZ #12077] + * sysdeps/x86_64/strcmp.S: Fix handling of remaining bytes in buffer + for strncmp and strncasecmp. + * string/stratcliff.c: Add tests for strcmp and strncmp. + * wcsmbs/wcsatcliff.c: Adjust for stratcliff change. + +2010-09-20 Ulrich Drepper + + * sysdeps/x86_64/strcmp.S: Fix another type in strncasecmp limit + detection. + +2010-08-19 Ulrich Drepper + + * sysdeps/x86_64/multiarch/strcmp.S: Fix two typos in strncasecmp + handling. + +2010-08-15 Ulrich Drepper + + * sysdeps/x86_64/strcmp.S: Use correct register for fourth parameter + of strncasecmp_l. + * sysdeps/multiarch/strcmp.S: Likewise. + +2010-08-14 Ulrich Drepper + + * sysdeps/x86_64/Makefile [subdir=string] (sysdep_routines): Add + strncase_l-nonascii. + * sysdeps/x86_64/multiarch/Makefile [subdir=string] (sysdep_routines): + Add strncase_l-ssse3. + * sysdeps/x86_64/multiarch/strcmp.S: Prepare for use as strncasecmp. + * sysdeps/x86_64/strcmp.S: Likewise. + * sysdeps/x86_64/multiarch/strncase_l-ssse3.S: New file. + * sysdeps/x86_64/multiarch/strncase_l.S: New file. + * sysdeps/x86_64/strncase.S: New file. + * sysdeps/x86_64/strncase_l-nonascii.c: New file. + * sysdeps/x86_64/strncase_l.S: New file. + * string/Makefile (strop-tests): Add strncasecmp. + * string/test-strncasecmp.c: New file. + + * sysdeps/x86_64/strcasecmp_l-nonascii.c: Add prototype to avoid + warning. + + * sysdeps/x86_64/strcmp.S: Move definition of NO_NOLOCALE_ALIAS to... + * sysdeps/x86_64/multiarch/strcasecmp_l-ssse3.S: ... here. + +2010-07-31 Ulrich Drepper + + * sysdeps/x86_64/multiarch/Makefile [subdir=string] (sysdep_routines): + Add strcasecmp_l-ssse3. + * sysdeps/x86_64/multiarch/strcmp.S: Add support to compile for + strcasecmp. + * sysdeps/x86_64/strcmp.S: Allow more flexible compiling of strcasecmp. + * sysdeps/x86_64/multiarch/strcasecmp_l.S: New file. + * sysdeps/x86_64/multiarch/strcasecmp_l-ssse3.S: New file. + +2010-07-30 Ulrich Drepper + + * sysdeps/x86_64/multiarch/strcmp.S: Pretty printing. + + * string/Makefile (strop-tests): Add strcasecmp. + * sysdeps/x86_64/Makefile [subdir=string] (sysdep_routines): Add + strcasecmp_l-nonascii. + (gen-as-const-headers): Add locale-defines.sym. + * sysdeps/x86_64/strcmp.S: Add support for strcasecmp implementation. + * sysdeps/x86_64/strcasecmp.S: New file. + * sysdeps/x86_64/strcasecmp_l.S: New file. + * sysdeps/x86_64/strcasecmp_l-nonascii.c: New file. + * sysdeps/x86_64/locale-defines.sym: New file. + * string/test-strcasecmp.c: New file. + + * string/test-strcasestr.c: Test both ends of the range of characters. + * sysdeps/x86_64/multiarch/strstr.c: Fix UCHIGH definition. + +2010-07-26 Ulrich Drepper + + * string/test-strnlen.c: New file. + * string/Makefile (strop-tests): Add strnlen. + * string/tester.c (test_strnlen): Add a few more test cases. + * string/tst-strlen.c: Better error reporting. + + * sysdeps/x86_64/strnlen.S: New file. + +2010-07-24 Ulrich Drepper + + * sysdeps/x86_64/multiarch/strstr.c (__m128i_strloadu_tolower): Use + lower-latency instructions. + +2010-07-23 Ulrich Drepper + + * string/test-strcasestr.c: New file. + * string/test-strstr.c: New file. + * string/Makefile (strop-tests): Add strstr and strcasestr. + * string/str-two-way.h: Don't undefine MAX. + * string/strcasestr.c: Don't define alias if NO_ALIAS is defined. + +2010-07-21 Andreas Schwab + + * sysdeps/i386/i686/multiarch/Makefile (sysdep_routines): Add + strcasestr-nonascii. + (CFLAGS-strcasestr-nonascii.c): Define. + * sysdeps/i386/i686/multiarch/strcasestr-nonascii.c: New file. + * sysdeps/x86_64/multiarch/strcasestr-nonascii.c (STRSTR_SSE42): + Remove unused attribute. + +2010-07-16 Ulrich Drepper + + * sysdeps/x86_64/multiarch/strstr.c: Rewrite to avoid indirect function + call in strcasestr. + * sysdeps/x86_64/multiarch/strcasestr.c: Declare + __strcasestr_sse42_nonascii. + * sysdeps/x86_64/multiarch/Makefile: Add rules to build + strcasestr-nonascii.c. + * sysdeps/x86_64/multiarch/strcasestr-nonascii.c: New file. + +Index: glibc-2.12-2-gc4ccff1/string/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/string/Makefile ++++ glibc-2.12-2-gc4ccff1/string/Makefile +@@ -48,7 +48,8 @@ o-objects.ob := memcpy.o memset.o memchr + + strop-tests := memchr memcmp memcpy memmove mempcpy memset memccpy \ + stpcpy stpncpy strcat strchr strcmp strcpy strcspn \ +- strlen strncmp strncpy strpbrk strrchr strspn memmem ++ strlen strncmp strncpy strpbrk strrchr strspn memmem \ ++ strstr strcasestr strnlen strcasecmp strncasecmp + tests := tester inl-tester noinl-tester testcopy test-ffs \ + tst-strlen stratcliff tst-svc tst-inlcall \ + bug-strncat1 bug-strspn1 bug-strpbrk1 tst-bswap \ +Index: glibc-2.12-2-gc4ccff1/string/str-two-way.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/string/str-two-way.h ++++ glibc-2.12-2-gc4ccff1/string/str-two-way.h +@@ -426,5 +426,4 @@ two_way_long_needle (const unsigned char + #undef AVAILABLE + #undef CANON_ELEMENT + #undef CMP_FUNC +-#undef MAX + #undef RETURN_TYPE +Index: glibc-2.12-2-gc4ccff1/string/stratcliff.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/string/stratcliff.c ++++ glibc-2.12-2-gc4ccff1/string/stratcliff.c +@@ -47,6 +47,8 @@ + # define MEMCPY memcpy + # define MEMPCPY mempcpy + # define MEMCHR memchr ++# define STRCMP strcmp ++# define STRNCMP strncmp + #endif + + +@@ -277,7 +279,74 @@ do_test (void) + + adr[inner] = L('T'); + } +- } ++ } ++ ++ /* strcmp/wcscmp tests */ ++ for (outer = 1; outer < 32; ++outer) ++ for (middle = 0; middle < 16; ++middle) ++ { ++ MEMSET (adr + middle, L('T'), 256); ++ adr[256] = L('\0'); ++ MEMSET (dest + nchars - outer, L('T'), outer - 1); ++ dest[nchars - 1] = L('\0'); ++ ++ if (STRCMP (adr + middle, dest + nchars - outer) <= 0) ++ { ++ printf ("%s 1 flunked for outer = %d, middle = %d\n", ++ STRINGIFY (STRCMP), outer, middle); ++ result = 1; ++ } ++ ++ if (STRCMP (dest + nchars - outer, adr + middle) >= 0) ++ { ++ printf ("%s 2 flunked for outer = %d, middle = %d\n", ++ STRINGIFY (STRCMP), outer, middle); ++ result = 1; ++ } ++ } ++ ++ /* strncmp/wcsncmp tests */ ++ for (outer = 1; outer < 32; ++outer) ++ for (middle = 0; middle < 16; ++middle) ++ { ++ MEMSET (adr + middle, L('T'), 256); ++ adr[256] = L('\0'); ++ MEMSET (dest + nchars - outer, L('T'), outer - 1); ++ dest[nchars - 1] = L('U'); ++ ++ for (inner = 0; inner < outer; ++inner) ++ { ++ if (STRNCMP (adr + middle, dest + nchars - outer, inner) != 0) ++ { ++ printf ("%s 1 flunked for outer = %d, middle = %d, " ++ "inner = %d\n", ++ STRINGIFY (STRNCMP), outer, middle, inner); ++ result = 1; ++ } ++ ++ if (STRNCMP (dest + nchars - outer, adr + middle, inner) != 0) ++ { ++ printf ("%s 2 flunked for outer = %d, middle = %d, " ++ "inner = %d\n", ++ STRINGIFY (STRNCMP), outer, middle, inner); ++ result = 1; ++ } ++ } ++ ++ if (STRNCMP (adr + middle, dest + nchars - outer, outer) >= 0) ++ { ++ printf ("%s 1 flunked for outer = %d, middle = %d, full\n", ++ STRINGIFY (STRNCMP), outer, middle); ++ result = 1; ++ } ++ ++ if (STRNCMP (dest + nchars - outer, adr + middle, outer) <= 0) ++ { ++ printf ("%s 2 flunked for outer = %d, middle = %d, full\n", ++ STRINGIFY (STRNCMP), outer, middle); ++ result = 1; ++ } ++ } + + /* strncpy/wcsncpy tests */ + adr[nchars - 1] = L('T'); +Index: glibc-2.12-2-gc4ccff1/string/strcasestr.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/string/strcasestr.c ++++ glibc-2.12-2-gc4ccff1/string/strcasestr.c +@@ -103,4 +103,6 @@ STRCASESTR (const char *haystack_start, + + #undef LONG_NEEDLE_THRESHOLD + ++#ifndef NO_ALIAS + weak_alias (__strcasestr, strcasestr) ++#endif +Index: glibc-2.12-2-gc4ccff1/string/test-strcasecmp.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/string/test-strcasecmp.c +@@ -0,0 +1,276 @@ ++/* Test and measure strcasecmp functions. ++ Copyright (C) 1999, 2002, 2003, 2005, 2010 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Written by Jakub Jelinek , 1999. ++ ++ 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 TEST_MAIN ++#include "test-string.h" ++ ++typedef int (*proto_t) (const char *, const char *); ++static int simple_strcasecmp (const char *, const char *); ++static int stupid_strcasecmp (const char *, const char *); ++ ++IMPL (stupid_strcasecmp, 0) ++IMPL (simple_strcasecmp, 0) ++IMPL (strcasecmp, 1) ++ ++static int ++simple_strcasecmp (const char *s1, const char *s2) ++{ ++ int ret; ++ ++ while ((ret = ((unsigned char) tolower (*s1) ++ - (unsigned char) tolower (*s2))) == 0 ++ && *s1++) ++ ++s2; ++ return ret; ++} ++ ++static int ++stupid_strcasecmp (const char *s1, const char *s2) ++{ ++ size_t ns1 = strlen (s1) + 1, ns2 = strlen (s2) + 1; ++ size_t n = ns1 < ns2 ? ns1 : ns2; ++ int ret = 0; ++ ++ while (n--) ++ { ++ if ((ret = ((unsigned char) tolower (*s1) ++ - (unsigned char) tolower (*s2))) != 0) ++ break; ++ ++s1; ++ ++s2; ++ } ++ return ret; ++} ++ ++static void ++do_one_test (impl_t *impl, const char *s1, const char *s2, int exp_result) ++{ ++ int result = CALL (impl, s1, s2); ++ if ((exp_result == 0 && result != 0) ++ || (exp_result < 0 && result >= 0) ++ || (exp_result > 0 && result <= 0)) ++ { ++ error (0, 0, "Wrong result in function %s %d %d", impl->name, ++ result, exp_result); ++ ret = 1; ++ return; ++ } ++ ++ if (HP_TIMING_AVAIL) ++ { ++ hp_timing_t start __attribute ((unused)); ++ hp_timing_t stop __attribute ((unused)); ++ hp_timing_t best_time = ~ (hp_timing_t) 0; ++ size_t i; ++ ++ for (i = 0; i < 32; ++i) ++ { ++ HP_TIMING_NOW (start); ++ CALL (impl, s1, s2); ++ HP_TIMING_NOW (stop); ++ HP_TIMING_BEST (best_time, start, stop); ++ } ++ ++ printf ("\t%zd", (size_t) best_time); ++ } ++} ++ ++static void ++do_test (size_t align1, size_t align2, size_t len, int max_char, ++ int exp_result) ++{ ++ size_t i; ++ char *s1, *s2; ++ ++ if (len == 0) ++ return; ++ ++ align1 &= 7; ++ if (align1 + len + 1 >= page_size) ++ return; ++ ++ align2 &= 7; ++ if (align2 + len + 1 >= page_size) ++ return; ++ ++ s1 = (char *) (buf1 + align1); ++ s2 = (char *) (buf2 + align2); ++ ++ for (i = 0; i < len; i++) ++ { ++ s1[i] = toupper (1 + 23 * i % max_char); ++ s2[i] = tolower (s1[i]); ++ } ++ ++ s1[len] = s2[len] = 0; ++ s1[len + 1] = 23; ++ s2[len + 1] = 24 + exp_result; ++ if ((s2[len - 1] == 'z' && exp_result == -1) ++ || (s2[len - 1] == 'a' && exp_result == 1)) ++ s1[len - 1] += exp_result; ++ else ++ s2[len - 1] -= exp_result; ++ ++ if (HP_TIMING_AVAIL) ++ printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, s1, s2, exp_result); ++ ++ if (HP_TIMING_AVAIL) ++ putchar ('\n'); ++} ++ ++static void ++do_random_tests (void) ++{ ++ size_t i, j, n, align1, align2, pos, len1, len2; ++ int result; ++ long r; ++ unsigned char *p1 = buf1 + page_size - 512; ++ unsigned char *p2 = buf2 + page_size - 512; ++ ++ for (n = 0; n < ITERATIONS; n++) ++ { ++ align1 = random () & 31; ++ if (random () & 1) ++ align2 = random () & 31; ++ else ++ align2 = align1 + (random () & 24); ++ pos = random () & 511; ++ j = align1 > align2 ? align1 : align2; ++ if (pos + j >= 511) ++ pos = 510 - j - (random () & 7); ++ len1 = random () & 511; ++ if (pos >= len1 && (random () & 1)) ++ len1 = pos + (random () & 7); ++ if (len1 + j >= 512) ++ len1 = 511 - j - (random () & 7); ++ if (pos >= len1) ++ len2 = len1; ++ else ++ len2 = len1 + (len1 != 511 - j ? random () % (511 - j - len1) : 0); ++ j = (pos > len2 ? pos : len2) + align1 + 64; ++ if (j > 512) ++ j = 512; ++ for (i = 0; i < j; ++i) ++ { ++ p1[i] = tolower (random () & 255); ++ if (i < len1 + align1 && !p1[i]) ++ { ++ p1[i] = tolower (random () & 255); ++ if (!p1[i]) ++ p1[i] = tolower (1 + (random () & 127)); ++ } ++ } ++ for (i = 0; i < j; ++i) ++ { ++ p2[i] = toupper (random () & 255); ++ if (i < len2 + align2 && !p2[i]) ++ { ++ p2[i] = toupper (random () & 255); ++ if (!p2[i]) ++ toupper (p2[i] = 1 + (random () & 127)); ++ } ++ } ++ ++ result = 0; ++ memcpy (p2 + align2, p1 + align1, pos); ++ if (pos < len1) ++ { ++ if (tolower (p2[align2 + pos]) == p1[align1 + pos]) ++ { ++ p2[align2 + pos] = toupper (random () & 255); ++ if (tolower (p2[align2 + pos]) == p1[align1 + pos]) ++ p2[align2 + pos] = toupper (p1[align1 + pos] ++ + 3 + (random () & 127)); ++ } ++ ++ if (p1[align1 + pos] < tolower (p2[align2 + pos])) ++ result = -1; ++ else ++ result = 1; ++ } ++ p1[len1 + align1] = 0; ++ p2[len2 + align2] = 0; ++ ++ FOR_EACH_IMPL (impl, 1) ++ { ++ r = CALL (impl, (char *) (p1 + align1), (char *) (p2 + align2)); ++ /* Test whether on 64-bit architectures where ABI requires ++ callee to promote has the promotion been done. */ ++ asm ("" : "=g" (r) : "0" (r)); ++ if ((r == 0 && result) ++ || (r < 0 && result >= 0) ++ || (r > 0 && result <= 0)) ++ { ++ error (0, 0, "Iteration %zd - wrong result in function %s (%zd, %zd, %zd, %zd, %zd) %ld != %d, p1 %p p2 %p", ++ n, impl->name, align1, align2, len1, len2, pos, r, result, p1, p2); ++ ret = 1; ++ } ++ } ++ } ++} ++ ++int ++test_main (void) ++{ ++ size_t i; ++ ++ test_init (); ++ ++ printf ("%23s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (i = 1; i < 16; ++i) ++ { ++ do_test (i, i, i, 127, 0); ++ do_test (i, i, i, 127, 1); ++ do_test (i, i, i, 127, -1); ++ } ++ ++ for (i = 1; i < 10; ++i) ++ { ++ do_test (0, 0, 2 << i, 127, 0); ++ do_test (0, 0, 2 << i, 254, 0); ++ do_test (0, 0, 2 << i, 127, 1); ++ do_test (0, 0, 2 << i, 254, 1); ++ do_test (0, 0, 2 << i, 127, -1); ++ do_test (0, 0, 2 << i, 254, -1); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (i, 2 * i, 8 << i, 127, 0); ++ do_test (2 * i, i, 8 << i, 254, 0); ++ do_test (i, 2 * i, 8 << i, 127, 1); ++ do_test (2 * i, i, 8 << i, 254, 1); ++ do_test (i, 2 * i, 8 << i, 127, -1); ++ do_test (2 * i, i, 8 << i, 254, -1); ++ } ++ ++ do_random_tests (); ++ return ret; ++} ++ ++#include "../test-skeleton.c" +Index: glibc-2.12-2-gc4ccff1/string/test-strcasestr.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/string/test-strcasestr.c +@@ -0,0 +1,197 @@ ++/* Test and measure strcasestr functions. ++ Copyright (C) 2010 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Written by Ulrich Drepper , 2010. ++ ++ 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. */ ++ ++#define TEST_MAIN ++#include "test-string.h" ++ ++ ++#define STRCASESTR simple_strcasestr ++#define NO_ALIAS ++#define __strncasecmp strncasecmp ++#include "strcasestr.c" ++ ++ ++static char * ++stupid_strcasestr (const char *s1, const char *s2) ++{ ++ ssize_t s1len = strlen (s1); ++ ssize_t s2len = strlen (s2); ++ ++ if (s2len > s1len) ++ return NULL; ++ ++ for (ssize_t i = 0; i <= s1len - s2len; ++i) ++ { ++ size_t j; ++ for (j = 0; j < s2len; ++j) ++ if (tolower (s1[i + j]) != tolower (s2[j])) ++ break; ++ if (j == s2len) ++ return (char *) s1 + i; ++ } ++ ++ return NULL; ++} ++ ++ ++typedef char *(*proto_t) (const char *, const char *); ++ ++IMPL (stupid_strcasestr, 0) ++IMPL (simple_strcasestr, 0) ++IMPL (strcasestr, 1) ++ ++ ++static void ++do_one_test (impl_t *impl, const char *s1, const char *s2, char *exp_result) ++{ ++ char *result = CALL (impl, s1, s2); ++ if (result != exp_result) ++ { ++ error (0, 0, "Wrong result in function %s %s %s", impl->name, ++ result, exp_result); ++ ret = 1; ++ return; ++ } ++ ++ if (HP_TIMING_AVAIL) ++ { ++ hp_timing_t start __attribute ((unused)); ++ hp_timing_t stop __attribute ((unused)); ++ hp_timing_t best_time = ~(hp_timing_t) 0; ++ size_t i; ++ ++ for (i = 0; i < 32; ++i) ++ { ++ HP_TIMING_NOW (start); ++ CALL (impl, s1, s2); ++ HP_TIMING_NOW (stop); ++ HP_TIMING_BEST (best_time, start, stop); ++ } ++ ++ printf ("\t%zd", (size_t) best_time); ++ } ++} ++ ++ ++static void ++do_test (size_t align1, size_t align2, size_t len1, size_t len2, ++ int fail) ++{ ++ char *s1 = (char *) (buf1 + align1); ++ char *s2 = (char *) (buf2 + align2); ++ ++ static const char d[] = "1234567890abcxyz"; ++#define dl (sizeof (d) - 1) ++ char *ss2 = s2; ++ for (size_t l = len2; l > 0; l = l > dl ? l - dl : 0) ++ { ++ size_t t = l > dl ? dl : l; ++ ss2 = mempcpy (ss2, d, t); ++ } ++ s2[len2] = '\0'; ++ ++ if (fail) ++ { ++ char *ss1 = s1; ++ for (size_t l = len1; l > 0; l = l > dl ? l - dl : 0) ++ { ++ size_t t = l > dl ? dl : l; ++ memcpy (ss1, d, t); ++ ++ss1[len2 > 7 ? 7 : len2 - 1]; ++ ss1 += t; ++ } ++ } ++ else ++ { ++ memset (s1, '0', len1); ++ for (size_t i = 0; i < len2; ++i) ++ s1[len1 - len2 + i] = toupper (s2[i]); ++ } ++ s1[len1] = '\0'; ++ ++ if (HP_TIMING_AVAIL) ++ printf ("Length %4zd/%zd, alignment %2zd/%2zd, %s:", ++ len1, len2, align1, align2, fail ? "fail" : "found"); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, s1, s2, fail ? NULL : s1 + len1 - len2); ++ ++ if (HP_TIMING_AVAIL) ++ putchar ('\n'); ++} ++ ++ ++static int ++test_main (void) ++{ ++ test_init (); ++ ++ printf ("%23s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (size_t klen = 2; klen < 32; ++klen) ++ for (size_t hlen = 2 * klen; hlen < 16 * klen; hlen += klen) ++ { ++ do_test (0, 0, hlen, klen, 0); ++ do_test (0, 0, hlen, klen, 1); ++ do_test (0, 3, hlen, klen, 0); ++ do_test (0, 3, hlen, klen, 1); ++ do_test (0, 9, hlen, klen, 0); ++ do_test (0, 9, hlen, klen, 1); ++ do_test (0, 15, hlen, klen, 0); ++ do_test (0, 15, hlen, klen, 1); ++ ++ do_test (3, 0, hlen, klen, 0); ++ do_test (3, 0, hlen, klen, 1); ++ do_test (3, 3, hlen, klen, 0); ++ do_test (3, 3, hlen, klen, 1); ++ do_test (3, 9, hlen, klen, 0); ++ do_test (3, 9, hlen, klen, 1); ++ do_test (3, 15, hlen, klen, 0); ++ do_test (3, 15, hlen, klen, 1); ++ ++ do_test (9, 0, hlen, klen, 0); ++ do_test (9, 0, hlen, klen, 1); ++ do_test (9, 3, hlen, klen, 0); ++ do_test (9, 3, hlen, klen, 1); ++ do_test (9, 9, hlen, klen, 0); ++ do_test (9, 9, hlen, klen, 1); ++ do_test (9, 15, hlen, klen, 0); ++ do_test (9, 15, hlen, klen, 1); ++ ++ do_test (15, 0, hlen, klen, 0); ++ do_test (15, 0, hlen, klen, 1); ++ do_test (15, 3, hlen, klen, 0); ++ do_test (15, 3, hlen, klen, 1); ++ do_test (15, 9, hlen, klen, 0); ++ do_test (15, 9, hlen, klen, 1); ++ do_test (15, 15, hlen, klen, 0); ++ do_test (15, 15, hlen, klen, 1); ++ } ++ ++ do_test (0, 0, page_size - 1, 16, 0); ++ do_test (0, 0, page_size - 1, 16, 1); ++ ++ return ret; ++} ++ ++#include "../test-skeleton.c" +Index: glibc-2.12-2-gc4ccff1/string/test-strncasecmp.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/string/test-strncasecmp.c +@@ -0,0 +1,349 @@ ++/* Test and measure strncasecmp functions. ++ Copyright (C) 1999, 2002, 2003, 2005, 2010 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Written by Jakub Jelinek , 1999. ++ ++ 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 TEST_MAIN ++#include "test-string.h" ++ ++typedef int (*proto_t) (const char *, const char *, size_t); ++static int simple_strncasecmp (const char *, const char *, size_t); ++static int stupid_strncasecmp (const char *, const char *, size_t); ++ ++IMPL (stupid_strncasecmp, 0) ++IMPL (simple_strncasecmp, 0) ++IMPL (strncasecmp, 1) ++ ++static int ++simple_strncasecmp (const char *s1, const char *s2, size_t n) ++{ ++ int ret; ++ ++ if (n == 0) ++ return 0; ++ ++ while ((ret = ((unsigned char) tolower (*s1) ++ - (unsigned char) tolower (*s2))) == 0 ++ && *s1++) ++ { ++ if (--n == 0) ++ return 0; ++ ++s2; ++ } ++ return ret; ++} ++ ++static int ++stupid_strncasecmp (const char *s1, const char *s2, size_t max) ++{ ++ size_t ns1 = strlen (s1) + 1; ++ size_t ns2 = strlen (s2) + 1; ++ size_t n = ns1 < ns2 ? ns1 : ns2; ++ if (n > max) ++ n = max; ++ int ret = 0; ++ ++ while (n--) ++ { ++ if ((ret = ((unsigned char) tolower (*s1) ++ - (unsigned char) tolower (*s2))) != 0) ++ break; ++ ++s1; ++ ++s2; ++ } ++ return ret; ++} ++ ++static int ++check_result (impl_t *impl, const char *s1, const char *s2, size_t n, ++ int exp_result) ++{ ++ int result = CALL (impl, s1, s2, n); ++ if ((exp_result == 0 && result != 0) ++ || (exp_result < 0 && result >= 0) ++ || (exp_result > 0 && result <= 0)) ++ { ++ error (0, 0, "Wrong result in function %s %d %d", impl->name, ++ result, exp_result); ++ ret = 1; ++ return -1; ++ } ++ ++ return 0; ++} ++ ++static void ++do_one_test (impl_t *impl, const char *s1, const char *s2, size_t n, ++ int exp_result) ++{ ++ if (check_result (impl, s1, s2, n, exp_result) < 0) ++ return; ++ ++ if (HP_TIMING_AVAIL) ++ { ++ hp_timing_t start __attribute ((unused)); ++ hp_timing_t stop __attribute ((unused)); ++ hp_timing_t best_time = ~ (hp_timing_t) 0; ++ size_t i; ++ ++ for (i = 0; i < 32; ++i) ++ { ++ HP_TIMING_NOW (start); ++ CALL (impl, s1, s2, n); ++ HP_TIMING_NOW (stop); ++ HP_TIMING_BEST (best_time, start, stop); ++ } ++ ++ printf ("\t%zd", (size_t) best_time); ++ } ++} ++ ++static void ++do_test (size_t align1, size_t align2, size_t n, size_t len, int max_char, ++ int exp_result) ++{ ++ size_t i; ++ char *s1, *s2; ++ ++ if (len == 0) ++ return; ++ ++ align1 &= 7; ++ if (align1 + len + 1 >= page_size) ++ return; ++ ++ align2 &= 7; ++ if (align2 + len + 1 >= page_size) ++ return; ++ ++ s1 = (char *) (buf1 + align1); ++ s2 = (char *) (buf2 + align2); ++ ++ for (i = 0; i < len; i++) ++ { ++ s1[i] = toupper (1 + 23 * i % max_char); ++ s2[i] = tolower (s1[i]); ++ } ++ ++ s1[len] = s2[len] = 0; ++ s1[len + 1] = 23; ++ s2[len + 1] = 24 + exp_result; ++ if ((s2[len - 1] == 'z' && exp_result == -1) ++ || (s2[len - 1] == 'a' && exp_result == 1)) ++ s1[len - 1] += exp_result; ++ else ++ s2[len - 1] -= exp_result; ++ ++ if (HP_TIMING_AVAIL) ++ printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, s1, s2, n, exp_result); ++ ++ if (HP_TIMING_AVAIL) ++ putchar ('\n'); ++} ++ ++static void ++do_random_tests (void) ++{ ++ size_t i, j, n, align1, align2, pos, len1, len2; ++ int result; ++ long r; ++ unsigned char *p1 = buf1 + page_size - 512; ++ unsigned char *p2 = buf2 + page_size - 512; ++ ++ for (n = 0; n < ITERATIONS; n++) ++ { ++ align1 = random () & 31; ++ if (random () & 1) ++ align2 = random () & 31; ++ else ++ align2 = align1 + (random () & 24); ++ pos = random () & 511; ++ j = align1 > align2 ? align1 : align2; ++ if (pos + j >= 511) ++ pos = 510 - j - (random () & 7); ++ len1 = random () & 511; ++ if (pos >= len1 && (random () & 1)) ++ len1 = pos + (random () & 7); ++ if (len1 + j >= 512) ++ len1 = 511 - j - (random () & 7); ++ if (pos >= len1) ++ len2 = len1; ++ else ++ len2 = len1 + (len1 != 511 - j ? random () % (511 - j - len1) : 0); ++ j = (pos > len2 ? pos : len2) + align1 + 64; ++ if (j > 512) ++ j = 512; ++ for (i = 0; i < j; ++i) ++ { ++ p1[i] = tolower (random () & 255); ++ if (i < len1 + align1 && !p1[i]) ++ { ++ p1[i] = tolower (random () & 255); ++ if (!p1[i]) ++ p1[i] = tolower (1 + (random () & 127)); ++ } ++ } ++ for (i = 0; i < j; ++i) ++ { ++ p2[i] = toupper (random () & 255); ++ if (i < len2 + align2 && !p2[i]) ++ { ++ p2[i] = toupper (random () & 255); ++ if (!p2[i]) ++ toupper (p2[i] = 1 + (random () & 127)); ++ } ++ } ++ ++ result = 0; ++ memcpy (p2 + align2, p1 + align1, pos); ++ if (pos < len1) ++ { ++ if (tolower (p2[align2 + pos]) == p1[align1 + pos]) ++ { ++ p2[align2 + pos] = toupper (random () & 255); ++ if (tolower (p2[align2 + pos]) == p1[align1 + pos]) ++ p2[align2 + pos] = toupper (p1[align1 + pos] ++ + 3 + (random () & 127)); ++ } ++ ++ if (p1[align1 + pos] < tolower (p2[align2 + pos])) ++ result = -1; ++ else ++ result = 1; ++ } ++ p1[len1 + align1] = 0; ++ p2[len2 + align2] = 0; ++ ++ FOR_EACH_IMPL (impl, 1) ++ { ++ r = CALL (impl, (char *) (p1 + align1), (char *) (p2 + align2), ++ pos + 1 + (random () & 255)); ++ /* Test whether on 64-bit architectures where ABI requires ++ callee to promote has the promotion been done. */ ++ asm ("" : "=g" (r) : "0" (r)); ++ if ((r == 0 && result) ++ || (r < 0 && result >= 0) ++ || (r > 0 && result <= 0)) ++ { ++ error (0, 0, "Iteration %zd - wrong result in function %s (%zd, %zd, %zd, %zd, %zd) %ld != %d, p1 %p p2 %p", ++ n, impl->name, align1, align2, len1, len2, pos, r, result, p1, p2); ++ ret = 1; ++ } ++ } ++ } ++} ++ ++ ++static void ++check1 (void) ++{ ++ static char cp [4096+16] __attribute__ ((aligned(4096))); ++ static char gotrel[4096] __attribute__ ((aligned(4096))); ++ char *s1 = cp + 0xffa; ++ char *s2 = gotrel + 0xcbe; ++ int exp_result; ++ size_t n = 6; ++ ++ strcpy (s1, "gottpoff"); ++ strcpy (s2, "GOTPLT"); ++ ++ exp_result = simple_strncasecmp (s1, s2, n); ++ FOR_EACH_IMPL (impl, 0) ++ check_result (impl, s1, s2, n, exp_result); ++} ++ ++int ++test_main (void) ++{ ++ size_t i; ++ ++ test_init (); ++ ++ check1 (); ++ ++ printf ("%23s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (i = 1; i < 16; ++i) ++ { ++ do_test (i, i, i - 1, i, 127, 0); ++ ++ do_test (i, i, i, i, 127, 0); ++ do_test (i, i, i, i, 127, 1); ++ do_test (i, i, i, i, 127, -1); ++ ++ do_test (i, i, i + 1, i, 127, 0); ++ do_test (i, i, i + 1, i, 127, 1); ++ do_test (i, i, i + 1, i, 127, -1); ++ } ++ ++ for (i = 1; i < 10; ++i) ++ { ++ do_test (0, 0, (2 << i) - 1, 2 << i, 127, 0); ++ do_test (0, 0, 2 << i, 2 << i, 254, 0); ++ do_test (0, 0, (2 << i) + 1, 2 << i, 127, 0); ++ ++ do_test (0, 0, (2 << i) + 1, 2 << i, 254, 0); ++ ++ do_test (0, 0, 2 << i, 2 << i, 127, 1); ++ do_test (0, 0, (2 << i) + 10, 2 << i, 127, 1); ++ ++ do_test (0, 0, 2 << i, 2 << i, 254, 1); ++ do_test (0, 0, (2 << i) + 10, 2 << i, 254, 1); ++ ++ do_test (0, 0, 2 << i, 2 << i, 127, -1); ++ do_test (0, 0, (2 << i) + 10, 2 << i, 127, -1); ++ ++ do_test (0, 0, 2 << i, 2 << i, 254, -1); ++ do_test (0, 0, (2 << i) + 10, 2 << i, 254, -1); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (i, 2 * i, (8 << i) - 1, 8 << i, 127, 0); ++ do_test (i, 2 * i, 8 << i, 8 << i, 127, 0); ++ do_test (i, 2 * i, (8 << i) + 100, 8 << i, 127, 0); ++ ++ do_test (2 * i, i, (8 << i) - 1, 8 << i, 254, 0); ++ do_test (2 * i, i, 8 << i, 8 << i, 254, 0); ++ do_test (2 * i, i, (8 << i) + 100, 8 << i, 254, 0); ++ ++ do_test (i, 2 * i, 8 << i, 8 << i, 127, 1); ++ do_test (i, 2 * i, (8 << i) + 100, 8 << i, 127, 1); ++ ++ do_test (2 * i, i, 8 << i, 8 << i, 254, 1); ++ do_test (2 * i, i, (8 << i) + 100, 8 << i, 254, 1); ++ ++ do_test (i, 2 * i, 8 << i, 8 << i, 127, -1); ++ do_test (i, 2 * i, (8 << i) + 100, 8 << i, 127, -1); ++ ++ do_test (2 * i, i, 8 << i, 8 << i, 254, -1); ++ do_test (2 * i, i, (8 << i) + 100, 8 << i, 254, -1); ++ } ++ ++ do_random_tests (); ++ return ret; ++} ++ ++#include "../test-skeleton.c" +Index: glibc-2.12-2-gc4ccff1/string/test-strnlen.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/string/test-strnlen.c +@@ -0,0 +1,197 @@ ++/* Test and measure strlen functions. ++ Copyright (C) 1999, 2002, 2003, 2005, 2010 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Written by Jakub Jelinek , 1999. ++ ++ 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. */ ++ ++#define TEST_MAIN ++#include "test-string.h" ++ ++typedef size_t (*proto_t) (const char *, size_t); ++size_t simple_strnlen (const char *, size_t); ++ ++IMPL (simple_strnlen, 0) ++IMPL (strnlen, 1) ++ ++size_t ++simple_strnlen (const char *s, size_t maxlen) ++{ ++ size_t i; ++ ++ for (i = 0; i < maxlen && s[i]; ++i); ++ return i; ++} ++ ++static void ++do_one_test (impl_t *impl, const char *s, size_t maxlen, size_t exp_len) ++{ ++ size_t len = CALL (impl, s, maxlen); ++ if (len != exp_len) ++ { ++ error (0, 0, "Wrong result in function %s %zd %zd", impl->name, ++ len, exp_len); ++ ret = 1; ++ return; ++ } ++ ++ if (HP_TIMING_AVAIL) ++ { ++ hp_timing_t start __attribute ((unused)); ++ hp_timing_t stop __attribute ((unused)); ++ hp_timing_t best_time = ~ (hp_timing_t) 0; ++ size_t i; ++ ++ for (i = 0; i < 32; ++i) ++ { ++ HP_TIMING_NOW (start); ++ CALL (impl, s, maxlen); ++ HP_TIMING_NOW (stop); ++ HP_TIMING_BEST (best_time, start, stop); ++ } ++ ++ printf ("\t%zd", (size_t) best_time); ++ } ++} ++ ++static void ++do_test (size_t align, size_t len, size_t maxlen, int max_char) ++{ ++ size_t i; ++ ++ align &= 7; ++ if (align + len >= page_size) ++ return; ++ ++ for (i = 0; i < len; ++i) ++ buf1[align + i] = 1 + 7 * i % max_char; ++ buf1[align + len] = 0; ++ ++ if (HP_TIMING_AVAIL) ++ printf ("Length %4zd, alignment %2zd:", len, align); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, (char *) (buf1 + align), maxlen, MIN (len, maxlen)); ++ ++ if (HP_TIMING_AVAIL) ++ putchar ('\n'); ++} ++ ++static void ++do_random_tests (void) ++{ ++ size_t i, j, n, align, len; ++ unsigned char *p = buf1 + page_size - 512; ++ ++ for (n = 0; n < ITERATIONS; n++) ++ { ++ align = random () & 15; ++ len = random () & 511; ++ if (len + align > 510) ++ len = 511 - align - (random () & 7); ++ j = len + align + 64; ++ if (j > 512) ++ j = 512; ++ ++ for (i = 0; i < j; i++) ++ { ++ if (i == len + align) ++ p[i] = 0; ++ else ++ { ++ p[i] = random () & 255; ++ if (i >= align && i < len + align && !p[i]) ++ p[i] = (random () & 127) + 1; ++ } ++ } ++ ++ FOR_EACH_IMPL (impl, 1) ++ { ++ if (len > 0 ++ && CALL (impl, (char *) (p + align), len - 1) != len - 1) ++ { ++ error (0, 0, "Iteration %zd (limited) - wrong result in function %s (%zd) %zd != %zd, p %p", ++ n, impl->name, align, ++ CALL (impl, (char *) (p + align), len - 1), len - 1, p); ++ ret = 1; ++ } ++ if (CALL (impl, (char *) (p + align), len) != len) ++ { ++ error (0, 0, "Iteration %zd (exact) - wrong result in function %s (%zd) %zd != %zd, p %p", ++ n, impl->name, align, ++ CALL (impl, (char *) (p + align), len), len, p); ++ ret = 1; ++ } ++ if (CALL (impl, (char *) (p + align), len + 1) != len) ++ { ++ error (0, 0, "Iteration %zd (long) - wrong result in function %s (%zd) %zd != %zd, p %p", ++ n, impl->name, align, ++ CALL (impl, (char *) (p + align), len + 1), len, p); ++ ret = 1; ++ } ++ } ++ } ++} ++ ++int ++test_main (void) ++{ ++ size_t i; ++ ++ test_init (); ++ ++ printf ("%20s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (0, i, i - 1, 127); ++ do_test (0, i, i, 127); ++ do_test (0, i, i + 1, 127); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (i, i, i - 1, 127); ++ do_test (i, i, i, 127); ++ do_test (i, i, i + 1, 127); ++ } ++ ++ for (i = 2; i <= 10; ++i) ++ { ++ do_test (0, 1 << i, 5000, 127); ++ do_test (1, 1 << i, 5000, 127); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ do_test (0, i, 5000, 255); ++ ++ for (i = 1; i < 8; ++i) ++ do_test (i, i, 5000, 255); ++ ++ for (i = 2; i <= 10; ++i) ++ { ++ do_test (0, 1 << i, 5000, 255); ++ do_test (1, 1 << i, 5000, 255); ++ } ++ ++ do_random_tests (); ++ return ret; ++} ++ ++#include "../test-skeleton.c" +Index: glibc-2.12-2-gc4ccff1/string/test-strstr.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/string/test-strstr.c +@@ -0,0 +1,194 @@ ++/* Test and measure strstr functions. ++ Copyright (C) 2010 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Written by Ulrich Drepper , 2010. ++ ++ 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. */ ++ ++#define TEST_MAIN ++#include "test-string.h" ++ ++ ++#define STRSTR simple_strstr ++#include "strstr.c" ++ ++ ++static char * ++stupid_strstr (const char *s1, const char *s2) ++{ ++ ssize_t s1len = strlen (s1); ++ ssize_t s2len = strlen (s2); ++ ++ if (s2len > s1len) ++ return NULL; ++ ++ for (ssize_t i = 0; i <= s1len - s2len; ++i) ++ { ++ size_t j; ++ for (j = 0; j < s2len; ++j) ++ if (s1[i + j] != s2[j]) ++ break; ++ if (j == s2len) ++ return (char *) s1 + i; ++ } ++ ++ return NULL; ++} ++ ++ ++typedef char *(*proto_t) (const char *, const char *); ++ ++IMPL (stupid_strstr, 0) ++IMPL (simple_strstr, 0) ++IMPL (strstr, 1) ++ ++ ++static void ++do_one_test (impl_t *impl, const char *s1, const char *s2, char *exp_result) ++{ ++ char *result = CALL (impl, s1, s2); ++ if (result != exp_result) ++ { ++ error (0, 0, "Wrong result in function %s %s %s", impl->name, ++ result, exp_result); ++ ret = 1; ++ return; ++ } ++ ++ if (HP_TIMING_AVAIL) ++ { ++ hp_timing_t start __attribute ((unused)); ++ hp_timing_t stop __attribute ((unused)); ++ hp_timing_t best_time = ~(hp_timing_t) 0; ++ size_t i; ++ ++ for (i = 0; i < 32; ++i) ++ { ++ HP_TIMING_NOW (start); ++ CALL (impl, s1, s2); ++ HP_TIMING_NOW (stop); ++ HP_TIMING_BEST (best_time, start, stop); ++ } ++ ++ printf ("\t%zd", (size_t) best_time); ++ } ++} ++ ++ ++static void ++do_test (size_t align1, size_t align2, size_t len1, size_t len2, ++ int fail) ++{ ++ char *s1 = (char *) (buf1 + align1); ++ char *s2 = (char *) (buf2 + align2); ++ ++ static const char d[] = "1234567890abcdef"; ++#define dl (sizeof (d) - 1) ++ char *ss2 = s2; ++ for (size_t l = len2; l > 0; l = l > dl ? l - dl : 0) ++ { ++ size_t t = l > dl ? dl : l; ++ ss2 = mempcpy (ss2, d, t); ++ } ++ s2[len2] = '\0'; ++ ++ if (fail) ++ { ++ char *ss1 = s1; ++ for (size_t l = len1; l > 0; l = l > dl ? l - dl : 0) ++ { ++ size_t t = l > dl ? dl : l; ++ memcpy (ss1, d, t); ++ ++ss1[len2 > 7 ? 7 : len2 - 1]; ++ ss1 += t; ++ } ++ } ++ else ++ { ++ memset (s1, '0', len1); ++ memcpy (s1 + len1 - len2, s2, len2); ++ } ++ s1[len1] = '\0'; ++ ++ if (HP_TIMING_AVAIL) ++ printf ("Length %4zd/%zd, alignment %2zd/%2zd, %s:", ++ len1, len2, align1, align2, fail ? "fail" : "found"); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, s1, s2, fail ? NULL : s1 + len1 - len2); ++ ++ if (HP_TIMING_AVAIL) ++ putchar ('\n'); ++} ++ ++ ++static int ++test_main (void) ++{ ++ test_init (); ++ ++ printf ("%23s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (size_t klen = 2; klen < 32; ++klen) ++ for (size_t hlen = 2 * klen; hlen < 16 * klen; hlen += klen) ++ { ++ do_test (0, 0, hlen, klen, 0); ++ do_test (0, 0, hlen, klen, 1); ++ do_test (0, 3, hlen, klen, 0); ++ do_test (0, 3, hlen, klen, 1); ++ do_test (0, 9, hlen, klen, 0); ++ do_test (0, 9, hlen, klen, 1); ++ do_test (0, 15, hlen, klen, 0); ++ do_test (0, 15, hlen, klen, 1); ++ ++ do_test (3, 0, hlen, klen, 0); ++ do_test (3, 0, hlen, klen, 1); ++ do_test (3, 3, hlen, klen, 0); ++ do_test (3, 3, hlen, klen, 1); ++ do_test (3, 9, hlen, klen, 0); ++ do_test (3, 9, hlen, klen, 1); ++ do_test (3, 15, hlen, klen, 0); ++ do_test (3, 15, hlen, klen, 1); ++ ++ do_test (9, 0, hlen, klen, 0); ++ do_test (9, 0, hlen, klen, 1); ++ do_test (9, 3, hlen, klen, 0); ++ do_test (9, 3, hlen, klen, 1); ++ do_test (9, 9, hlen, klen, 0); ++ do_test (9, 9, hlen, klen, 1); ++ do_test (9, 15, hlen, klen, 0); ++ do_test (9, 15, hlen, klen, 1); ++ ++ do_test (15, 0, hlen, klen, 0); ++ do_test (15, 0, hlen, klen, 1); ++ do_test (15, 3, hlen, klen, 0); ++ do_test (15, 3, hlen, klen, 1); ++ do_test (15, 9, hlen, klen, 0); ++ do_test (15, 9, hlen, klen, 1); ++ do_test (15, 15, hlen, klen, 0); ++ do_test (15, 15, hlen, klen, 1); ++ } ++ ++ do_test (0, 0, page_size - 1, 16, 0); ++ do_test (0, 0, page_size - 1, 16, 1); ++ ++ return ret; ++} ++ ++#include "../test-skeleton.c" +Index: glibc-2.12-2-gc4ccff1/string/tester.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/string/tester.c ++++ glibc-2.12-2-gc4ccff1/string/tester.c +@@ -441,20 +441,21 @@ test_strnlen (void) + check (strnlen ("", 10) == 0, 1); /* Empty. */ + check (strnlen ("a", 10) == 1, 2); /* Single char. */ + check (strnlen ("abcd", 10) == 4, 3); /* Multiple chars. */ +- check (strnlen ("foo", (size_t)-1) == 3, 4); /* limits of n. */ ++ check (strnlen ("foo", (size_t) -1) == 3, 4); /* limits of n. */ ++ check (strnlen ("abcd", 0) == 0, 5); /* Restricted. */ ++ check (strnlen ("abcd", 1) == 1, 6); /* Restricted. */ ++ check (strnlen ("abcd", 2) == 2, 7); /* Restricted. */ ++ check (strnlen ("abcd", 3) == 3, 8); /* Restricted. */ ++ check (strnlen ("abcd", 4) == 4, 9); /* Restricted. */ + +- { +- char buf[4096]; +- int i; +- char *p; +- for (i=0; i < 0x100; i++) +- { +- p = (char *) ((unsigned long int)(buf + 0xff) & ~0xff) + i; +- strcpy (p, "OK"); +- strcpy (p+3, "BAD/WRONG"); +- check (strnlen (p, 100) == 2, 5+i); +- } +- } ++ char buf[4096]; ++ for (int i = 0; i < 0x100; ++i) ++ { ++ char *p = (char *) ((unsigned long int)(buf + 0xff) & ~0xff) + i; ++ strcpy (p, "OK"); ++ strcpy (p + 3, "BAD/WRONG"); ++ check (strnlen (p, 100) == 2, 10 + i); ++ } + } + + static void +Index: glibc-2.12-2-gc4ccff1/string/tst-strlen.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/string/tst-strlen.c ++++ glibc-2.12-2-gc4ccff1/string/tst-strlen.c +@@ -31,11 +31,21 @@ main(int argc, char *argv[]) + buf[words * 4 + 3] = (last & 8) != 0 ? 'e' : '\0'; + buf[words * 4 + 4] = '\0'; + +- if (strlen (buf) != words * 4 + lens[last] +- || strnlen (buf, -1) != words * 4 + lens[last]) ++ if (strlen (buf) != words * 4 + lens[last]) + { +- printf ("failed for base=%Zu, words=%Zu, and last=%Zu\n", +- base, words, last); ++ printf ("\ ++strlen failed for base=%Zu, words=%Zu, and last=%Zu (is %zd, expected %zd)\n", ++ base, words, last, ++ strlen (buf), words * 4 + lens[last]); ++ return 1; ++ } ++ ++ if (strnlen (buf, -1) != words * 4 + lens[last]) ++ { ++ printf ("\ ++strnlen failed for base=%Zu, words=%Zu, and last=%Zu (is %zd, expected %zd)\n", ++ base, words, last, ++ strnlen (buf, -1), words * 4 + lens[last]); + return 1; + } + } +Index: glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/i386/i686/multiarch/Makefile ++++ glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/Makefile +@@ -9,7 +9,7 @@ sysdep_routines += bzero-sse2 memset-sse + memmove-ssse3-rep bcopy-ssse3 bcopy-ssse3-rep \ + memset-sse2-rep bzero-sse2-rep strcmp-ssse3 \ + strcmp-sse4 strncmp-c strncmp-ssse3 strncmp-sse4 \ +- memcmp-ssse3 memcmp-sse4 ++ memcmp-ssse3 memcmp-sse4 strcasestr-nonascii + ifeq (yes,$(config-cflags-sse4)) + sysdep_routines += strcspn-c strpbrk-c strspn-c strstr-c strcasestr-c + CFLAGS-strcspn-c.c += -msse4 +@@ -17,6 +17,7 @@ CFLAGS-strpbrk-c.c += -msse4 + CFLAGS-strspn-c.c += -msse4 + CFLAGS-strstr.c += -msse4 + CFLAGS-strcasestr.c += -msse4 ++CFLAGS-strcasestr-nonascii.c += -msse4 + endif + endif + +Index: glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strcasestr-nonascii.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strcasestr-nonascii.c +@@ -0,0 +1,2 @@ ++#include ++#include +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/Makefile ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/Makefile +@@ -12,7 +12,8 @@ sysdep_routines += _mcount + endif + + ifeq ($(subdir),string) +-sysdep_routines += cacheinfo ++sysdep_routines += cacheinfo strcasecmp_l-nonascii strncase_l-nonascii ++gen-as-const-headers += locale-defines.sym + endif + + ifeq ($(subdir),elf) +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/locale-defines.sym +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/locale-defines.sym +@@ -0,0 +1,11 @@ ++#include ++#include ++#include ++ ++-- ++ ++LOCALE_T___LOCALES offsetof (struct __locale_struct, __locales) ++LC_CTYPE ++_NL_CTYPE_NONASCII_CASE ++LOCALE_DATA_VALUES offsetof (struct __locale_data, values) ++SIZEOF_VALUES sizeof (((struct __locale_data *) 0)->values[0]) +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/Makefile ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/Makefile +@@ -5,7 +5,9 @@ endif + + ifeq ($(subdir),string) + sysdep_routines += stpncpy-c strncpy-c strcmp-ssse3 strncmp-ssse3 \ +- strend-sse4 memcmp-sse4 ++ strend-sse4 memcmp-sse4 \ ++ strcasestr-nonascii strcasecmp_l-ssse3 \ ++ strncase_l-ssse3 + ifeq (yes,$(config-cflags-sse4)) + sysdep_routines += strcspn-c strpbrk-c strspn-c strstr-c strcasestr-c + CFLAGS-strcspn-c.c += -msse4 +@@ -13,5 +15,6 @@ CFLAGS-strpbrk-c.c += -msse4 + CFLAGS-strspn-c.c += -msse4 + CFLAGS-strstr.c += -msse4 + CFLAGS-strcasestr.c += -msse4 ++CFLAGS-strcasestr-nonascii.c += -msse4 + endif + endif +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcasecmp_l-ssse3.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcasecmp_l-ssse3.S +@@ -0,0 +1,6 @@ ++#define USE_SSSE3 1 ++#define USE_AS_STRCASECMP_L ++#define NO_NOLOCALE_ALIAS ++#define STRCMP __strcasecmp_l_ssse3 ++#define __strcasecmp __strcasecmp_ssse3 ++#include "../strcmp.S" +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcasecmp_l.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcasecmp_l.S +@@ -0,0 +1,6 @@ ++#define STRCMP __strcasecmp_l ++#define USE_AS_STRCASECMP_L ++#include "strcmp.S" ++ ++weak_alias (__strcasecmp_l, strcasecmp_l) ++libc_hidden_def (strcasecmp_l) +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcasestr-nonascii.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcasestr-nonascii.c +@@ -0,0 +1,50 @@ ++/* strstr with SSE4.2 intrinsics ++ Copyright (C) 2010 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 ++ ++ ++/* Similar to __m128i_strloadu. Convert to lower case for none-POSIX/C ++ locale. */ ++static inline __m128i ++__m128i_strloadu_tolower (const unsigned char *p) ++{ ++ union ++ { ++ char b[16]; ++ __m128i x; ++ } u; ++ ++ for (int i = 0; i < 16; ++i) ++ if (p[i] == 0) ++ { ++ u.b[i] = 0; ++ break; ++ } ++ else ++ u.b[i] = tolower (p[i]); ++ ++ return u.x; ++} ++ ++ ++#define STRCASESTR_NONASCII ++#define USE_AS_STRCASESTR ++#define STRSTR_SSE42 __strcasestr_sse42_nonascii ++#include "strstr.c" +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcasestr.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/strcasestr.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcasestr.c +@@ -1,3 +1,7 @@ ++extern char *__strcasestr_sse42_nonascii (const unsigned char *s1, ++ const unsigned char *s2) ++ attribute_hidden; ++ + #define USE_AS_STRCASESTR + #define STRSTR_SSE42 __strcasestr_sse42 + #include "strstr.c" +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcmp.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/strcmp.S ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcmp.S +@@ -24,7 +24,7 @@ + #ifdef USE_AS_STRNCMP + /* Since the counter, %r11, is unsigned, we branch to strcmp_exitz + if the new counter > the old one or is 0. */ +-#define UPDATE_STRNCMP_COUNTER \ ++# define UPDATE_STRNCMP_COUNTER \ + /* calculate left number to compare */ \ + lea -16(%rcx, %r11), %r9; \ + cmp %r9, %r11; \ +@@ -33,23 +33,50 @@ + je LABEL(strcmp_exitz_sse4_2); \ + mov %r9, %r11 + +-#define STRCMP_SSE42 __strncmp_sse42 +-#define STRCMP_SSSE3 __strncmp_ssse3 +-#define STRCMP_SSE2 __strncmp_sse2 +-#define __GI_STRCMP __GI_strncmp ++# define STRCMP_SSE42 __strncmp_sse42 ++# define STRCMP_SSSE3 __strncmp_ssse3 ++# define STRCMP_SSE2 __strncmp_sse2 ++# define __GI_STRCMP __GI_strncmp ++#elif defined USE_AS_STRCASECMP_L ++# include "locale-defines.h" ++ ++# define UPDATE_STRNCMP_COUNTER ++ ++# define STRCMP_SSE42 __strcasecmp_l_sse42 ++# define STRCMP_SSSE3 __strcasecmp_l_ssse3 ++# define STRCMP_SSE2 __strcasecmp_l_sse2 ++# define __GI_STRCMP __GI___strcasecmp_l ++#elif defined USE_AS_STRNCASECMP_L ++# include "locale-defines.h" ++ ++/* Since the counter, %r11, is unsigned, we branch to strcmp_exitz ++ if the new counter > the old one or is 0. */ ++# define UPDATE_STRNCMP_COUNTER \ ++ /* calculate left number to compare */ \ ++ lea -16(%rcx, %r11), %r9; \ ++ cmp %r9, %r11; \ ++ jb LABEL(strcmp_exitz_sse4_2); \ ++ test %r9, %r9; \ ++ je LABEL(strcmp_exitz_sse4_2); \ ++ mov %r9, %r11 ++ ++# define STRCMP_SSE42 __strncasecmp_l_sse42 ++# define STRCMP_SSSE3 __strncasecmp_l_ssse3 ++# define STRCMP_SSE2 __strncasecmp_l_sse2 ++# define __GI_STRCMP __GI___strncasecmp_l + #else +-#define UPDATE_STRNCMP_COUNTER +-#ifndef STRCMP +-#define STRCMP strcmp +-#define STRCMP_SSE42 __strcmp_sse42 +-#define STRCMP_SSSE3 __strcmp_ssse3 +-#define STRCMP_SSE2 __strcmp_sse2 +-#define __GI_STRCMP __GI_strcmp +-#endif ++# define UPDATE_STRNCMP_COUNTER ++# ifndef STRCMP ++# define STRCMP strcmp ++# define STRCMP_SSE42 __strcmp_sse42 ++# define STRCMP_SSSE3 __strcmp_ssse3 ++# define STRCMP_SSE2 __strcmp_sse2 ++# define __GI_STRCMP __GI_strcmp ++# endif + #endif + + #ifndef LABEL +-#define LABEL(l) L(l) ++# define LABEL(l) L(l) + #endif + + /* Define multiple versions only for the definition in libc. Don't +@@ -73,6 +100,43 @@ ENTRY(STRCMP) + 2: ret + END(STRCMP) + ++# ifdef USE_AS_STRCASECMP_L ++ENTRY(__strcasecmp) ++ .type __strcasecmp, @gnu_indirect_function ++ cmpl $0, __cpu_features+KIND_OFFSET(%rip) ++ jne 1f ++ call __init_cpu_features ++1: ++ leaq __strcasecmp_sse42(%rip), %rax ++ testl $bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip) ++ jnz 2f ++ leaq __strcasecmp_ssse3(%rip), %rax ++ testl $bit_SSSE3, __cpu_features+CPUID_OFFSET+index_SSSE3(%rip) ++ jnz 2f ++ leaq __strcasecmp_sse2(%rip), %rax ++2: ret ++END(__strcasecmp) ++weak_alias (__strcasecmp, strcasecmp) ++# endif ++# ifdef USE_AS_STRNCASECMP_L ++ENTRY(__strncasecmp) ++ .type __strncasecmp, @gnu_indirect_function ++ cmpl $0, __cpu_features+KIND_OFFSET(%rip) ++ jne 1f ++ call __init_cpu_features ++1: ++ leaq __strncasecmp_sse42(%rip), %rax ++ testl $bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip) ++ jnz 2f ++ leaq __strncasecmp_ssse3(%rip), %rax ++ testl $bit_SSSE3, __cpu_features+CPUID_OFFSET+index_SSSE3(%rip) ++ jnz 2f ++ leaq __strncasecmp_sse2(%rip), %rax ++2: ret ++END(__strncasecmp) ++weak_alias (__strncasecmp, strncasecmp) ++# endif ++ + /* We use 0x1a: + _SIDD_SBYTE_OPS + | _SIDD_CMP_EQUAL_EACH +@@ -101,8 +165,31 @@ END(STRCMP) + + /* Put all SSE 4.2 functions together. */ + .section .text.sse4.2,"ax",@progbits +- .align 16 ++ .align 16 + .type STRCMP_SSE42, @function ++# ifdef USE_AS_STRCASECMP_L ++ENTRY (__strcasecmp_sse42) ++ movq __libc_tsd_LOCALE@gottpoff(%rip),%rax ++ movq %fs:(%rax),%rdx ++ ++ // XXX 5 byte should be before the function ++ /* 5-byte NOP. */ ++ .byte 0x0f,0x1f,0x44,0x00,0x00 ++END (__strcasecmp_sse42) ++ /* FALLTHROUGH to strcasecmp_l. */ ++# endif ++# ifdef USE_AS_STRNCASECMP_L ++ENTRY (__strncasecmp_sse42) ++ movq __libc_tsd_LOCALE@gottpoff(%rip),%rax ++ movq %fs:(%rax),%rcx ++ ++ // XXX 5 byte should be before the function ++ /* 5-byte NOP. */ ++ .byte 0x0f,0x1f,0x44,0x00,0x00 ++END (__strncasecmp_sse42) ++ /* FALLTHROUGH to strncasecmp_l. */ ++# endif ++ + STRCMP_SSE42: + cfi_startproc + CALL_MCOUNT +@@ -110,24 +197,87 @@ STRCMP_SSE42: + /* + * This implementation uses SSE to compare up to 16 bytes at a time. + */ +-#ifdef USE_AS_STRNCMP ++# ifdef USE_AS_STRCASECMP_L ++ /* We have to fall back on the C implementation for locales ++ with encodings not matching ASCII for single bytes. */ ++# if LOCALE_T___LOCALES != 0 || LC_CTYPE != 0 ++ movq LOCALE_T___LOCALES+LC_CTYPE*8(%rdx), %rax ++# else ++ movq (%rdx), %rax ++# endif ++ testl $0, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%rax) ++ jne __strcasecmp_l_nonascii ++# endif ++# ifdef USE_AS_STRNCASECMP_L ++ /* We have to fall back on the C implementation for locales ++ with encodings not matching ASCII for single bytes. */ ++# if LOCALE_T___LOCALES != 0 || LC_CTYPE != 0 ++ movq LOCALE_T___LOCALES+LC_CTYPE*8(%rcx), %rax ++# else ++ movq (%rcx), %rax ++# endif ++ testl $0, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%rax) ++ jne __strncasecmp_l_nonascii ++# endif ++ ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + test %rdx, %rdx + je LABEL(strcmp_exitz_sse4_2) + cmp $1, %rdx + je LABEL(Byte0_sse4_2) + mov %rdx, %r11 +-#endif ++# endif + mov %esi, %ecx + mov %edi, %eax + /* Use 64bit AND here to avoid long NOP padding. */ + and $0x3f, %rcx /* rsi alignment in cache line */ + and $0x3f, %rax /* rdi alignment in cache line */ ++# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L ++ .section .rodata.cst16,"aM",@progbits,16 ++ .align 16 ++.Lbelowupper_sse4: ++ .quad 0x4040404040404040 ++ .quad 0x4040404040404040 ++.Ltopupper_sse4: ++ .quad 0x5b5b5b5b5b5b5b5b ++ .quad 0x5b5b5b5b5b5b5b5b ++.Ltouppermask_sse4: ++ .quad 0x2020202020202020 ++ .quad 0x2020202020202020 ++ .previous ++ movdqa .Lbelowupper_sse4(%rip), %xmm4 ++# define UCLOW_reg %xmm4 ++ movdqa .Ltopupper_sse4(%rip), %xmm5 ++# define UCHIGH_reg %xmm5 ++ movdqa .Ltouppermask_sse4(%rip), %xmm6 ++# define LCQWORD_reg %xmm6 ++# endif + cmp $0x30, %ecx + ja LABEL(crosscache_sse4_2)/* rsi: 16-byte load will cross cache line */ + cmp $0x30, %eax + ja LABEL(crosscache_sse4_2)/* rdi: 16-byte load will cross cache line */ + movdqu (%rdi), %xmm1 + movdqu (%rsi), %xmm2 ++# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L ++# define TOLOWER(reg1, reg2) \ ++ movdqa reg1, %xmm7; \ ++ movdqa UCHIGH_reg, %xmm8; \ ++ movdqa reg2, %xmm9; \ ++ movdqa UCHIGH_reg, %xmm10; \ ++ pcmpgtb UCLOW_reg, %xmm7; \ ++ pcmpgtb reg1, %xmm8; \ ++ pcmpgtb UCLOW_reg, %xmm9; \ ++ pcmpgtb reg2, %xmm10; \ ++ pand %xmm8, %xmm7; \ ++ pand %xmm10, %xmm9; \ ++ pand LCQWORD_reg, %xmm7; \ ++ pand LCQWORD_reg, %xmm9; \ ++ por %xmm7, reg1; \ ++ por %xmm9, reg2 ++ TOLOWER (%xmm1, %xmm2) ++# else ++# define TOLOWER(reg1, reg2) ++# endif + pxor %xmm0, %xmm0 /* clear %xmm0 for null char checks */ + pcmpeqb %xmm1, %xmm0 /* Any null chars? */ + pcmpeqb %xmm2, %xmm1 /* compare first 16 bytes for equality */ +@@ -135,10 +285,10 @@ STRCMP_SSE42: + pmovmskb %xmm1, %edx + sub $0xffff, %edx /* if first 16 bytes are same, edx == 0xffff */ + jnz LABEL(less16bytes_sse4_2)/* If not, find different value or null char */ +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2)/* finish comparision */ +-#endif ++# endif + add $16, %rsi /* prepare to search next 16 bytes */ + add $16, %rdi /* prepare to search next 16 bytes */ + +@@ -180,7 +330,13 @@ LABEL(ashr_0_sse4_2): + movdqa (%rsi), %xmm1 + pxor %xmm0, %xmm0 /* clear %xmm0 for null char check */ + pcmpeqb %xmm1, %xmm0 /* Any null chars? */ ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L + pcmpeqb (%rdi), %xmm1 /* compare 16 bytes for equality */ ++# else ++ movdqa (%rdi), %xmm2 ++ TOLOWER (%xmm1, %xmm2) ++ pcmpeqb %xmm2, %xmm1 /* compare 16 bytes for equality */ ++# endif + psubb %xmm0, %xmm1 /* packed sub of comparison results*/ + pmovmskb %xmm1, %r9d + shr %cl, %edx /* adjust 0xffff for offset */ +@@ -204,44 +360,60 @@ LABEL(ashr_0_sse4_2): + .p2align 4 + LABEL(ashr_0_use_sse4_2): + movdqa (%rdi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L + pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + lea 16(%rdx), %rdx + jbe LABEL(ashr_0_use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + + movdqa (%rdi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L + pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + lea 16(%rdx), %rdx + jbe LABEL(ashr_0_use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + jmp LABEL(ashr_0_use_sse4_2) + + + .p2align 4 + LABEL(ashr_0_use_sse4_2_exit): + jnc LABEL(strcmp_exitz_sse4_2) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub %rcx, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + lea -16(%rdx, %rcx), %rcx + movzbl (%rdi, %rcx), %eax + movzbl (%rsi, %rcx), %edx ++# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L ++ leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rcx ++ movl (%rcx,%rax,4), %eax ++ movl (%rcx,%rdx,4), %edx ++# endif + sub %edx, %eax + ret + + + +- + /* + * The following cases will be handled by ashr_1 +- * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case ++ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case + * n(15) n -15 0(15 +(n-15) - n) ashr_1 + */ + .p2align 4 +@@ -251,6 +423,7 @@ LABEL(ashr_1_sse4_2): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 /* Any null chars? */ + pslldq $15, %xmm2 /* shift first string to align with second */ ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 /* compare 16 bytes for equality */ + psubb %xmm0, %xmm2 /* packed sub of comparison results*/ + pmovmskb %xmm2, %r9d +@@ -281,12 +454,18 @@ LABEL(loop_ashr_1_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $1, -16(%rdi, %rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L + pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + + add $16, %rdx + add $16, %r10 +@@ -294,12 +473,18 @@ LABEL(loop_ashr_1_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $1, -16(%rdi, %rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L + pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + add $16, %rdx + jmp LABEL(loop_ashr_1_use_sse4_2) + +@@ -309,10 +494,10 @@ LABEL(nibble_ashr_1_use_sse4_2): + movdqa -16(%rdi, %rdx), %xmm0 + psrldq $1, %xmm0 + pcmpistri $0x3a,%xmm0, %xmm0 +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + cmp %r11, %rcx + jae LABEL(nibble_ashr_use_sse4_2_exit) +-#endif ++# endif + cmp $14, %ecx + ja LABEL(loop_ashr_1_use_sse4_2) + +@@ -320,7 +505,7 @@ LABEL(nibble_ashr_1_use_sse4_2): + + /* + * The following cases will be handled by ashr_2 +- * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case ++ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case + * n(14~15) n -14 1(15 +(n-14) - n) ashr_2 + */ + .p2align 4 +@@ -330,6 +515,7 @@ LABEL(ashr_2_sse4_2): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $14, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -360,12 +546,18 @@ LABEL(loop_ashr_2_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $2, -16(%rdi, %rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L + pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + + add $16, %rdx + add $16, %r10 +@@ -373,12 +565,18 @@ LABEL(loop_ashr_2_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $2, -16(%rdi, %rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L + pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + add $16, %rdx + jmp LABEL(loop_ashr_2_use_sse4_2) + +@@ -388,10 +586,10 @@ LABEL(nibble_ashr_2_use_sse4_2): + movdqa -16(%rdi, %rdx), %xmm0 + psrldq $2, %xmm0 + pcmpistri $0x3a,%xmm0, %xmm0 +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + cmp %r11, %rcx + jae LABEL(nibble_ashr_use_sse4_2_exit) +-#endif ++# endif + cmp $13, %ecx + ja LABEL(loop_ashr_2_use_sse4_2) + +@@ -409,6 +607,7 @@ LABEL(ashr_3_sse4_2): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $13, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -439,12 +638,18 @@ LABEL(loop_ashr_3_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $3, -16(%rdi, %rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L + pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + + add $16, %rdx + add $16, %r10 +@@ -452,12 +657,18 @@ LABEL(loop_ashr_3_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $3, -16(%rdi, %rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L + pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + add $16, %rdx + jmp LABEL(loop_ashr_3_use_sse4_2) + +@@ -467,10 +678,10 @@ LABEL(nibble_ashr_3_use_sse4_2): + movdqa -16(%rdi, %rdx), %xmm0 + psrldq $3, %xmm0 + pcmpistri $0x3a,%xmm0, %xmm0 +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + cmp %r11, %rcx + jae LABEL(nibble_ashr_use_sse4_2_exit) +-#endif ++# endif + cmp $12, %ecx + ja LABEL(loop_ashr_3_use_sse4_2) + +@@ -488,6 +699,7 @@ LABEL(ashr_4_sse4_2): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $12, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -519,12 +731,18 @@ LABEL(loop_ashr_4_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $4, -16(%rdi, %rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L + pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + + add $16, %rdx + add $16, %r10 +@@ -532,12 +750,18 @@ LABEL(loop_ashr_4_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $4, -16(%rdi, %rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L + pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + add $16, %rdx + jmp LABEL(loop_ashr_4_use_sse4_2) + +@@ -547,10 +771,10 @@ LABEL(nibble_ashr_4_use_sse4_2): + movdqa -16(%rdi, %rdx), %xmm0 + psrldq $4, %xmm0 + pcmpistri $0x3a,%xmm0, %xmm0 +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + cmp %r11, %rcx + jae LABEL(nibble_ashr_use_sse4_2_exit) +-#endif ++# endif + cmp $11, %ecx + ja LABEL(loop_ashr_4_use_sse4_2) + +@@ -559,7 +783,7 @@ LABEL(nibble_ashr_4_use_sse4_2): + /* + * The following cases will be handled by ashr_5 + * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case +- * n(11~15) n - 11 4(15 +(n-11) - n) ashr_5 ++ * n(11~15) n - 11 4(15 +(n-11) - n) ashr_5 + */ + .p2align 4 + LABEL(ashr_5_sse4_2): +@@ -568,6 +792,7 @@ LABEL(ashr_5_sse4_2): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $11, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -599,12 +824,18 @@ LABEL(loop_ashr_5_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $5, -16(%rdi, %rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L + pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + + add $16, %rdx + add $16, %r10 +@@ -613,12 +844,18 @@ LABEL(loop_ashr_5_use_sse4_2): + movdqa (%rdi, %rdx), %xmm0 + + palignr $5, -16(%rdi, %rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L + pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + add $16, %rdx + jmp LABEL(loop_ashr_5_use_sse4_2) + +@@ -628,10 +865,10 @@ LABEL(nibble_ashr_5_use_sse4_2): + movdqa -16(%rdi, %rdx), %xmm0 + psrldq $5, %xmm0 + pcmpistri $0x3a,%xmm0, %xmm0 +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + cmp %r11, %rcx + jae LABEL(nibble_ashr_use_sse4_2_exit) +-#endif ++# endif + cmp $10, %ecx + ja LABEL(loop_ashr_5_use_sse4_2) + +@@ -640,7 +877,7 @@ LABEL(nibble_ashr_5_use_sse4_2): + /* + * The following cases will be handled by ashr_6 + * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case +- * n(10~15) n - 10 5(15 +(n-10) - n) ashr_6 ++ * n(10~15) n - 10 5(15 +(n-10) - n) ashr_6 + */ + .p2align 4 + LABEL(ashr_6_sse4_2): +@@ -649,6 +886,7 @@ LABEL(ashr_6_sse4_2): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $10, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -680,12 +918,18 @@ LABEL(loop_ashr_6_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $6, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + + add $16, %rdx + add $16, %r10 +@@ -693,12 +937,18 @@ LABEL(loop_ashr_6_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $6, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + add $16, %rdx + jmp LABEL(loop_ashr_6_use_sse4_2) + +@@ -708,10 +958,10 @@ LABEL(nibble_ashr_6_use_sse4_2): + movdqa -16(%rdi, %rdx), %xmm0 + psrldq $6, %xmm0 + pcmpistri $0x3a,%xmm0, %xmm0 +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + cmp %r11, %rcx + jae LABEL(nibble_ashr_use_sse4_2_exit) +-#endif ++# endif + cmp $9, %ecx + ja LABEL(loop_ashr_6_use_sse4_2) + +@@ -720,7 +970,7 @@ LABEL(nibble_ashr_6_use_sse4_2): + /* + * The following cases will be handled by ashr_7 + * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case +- * n(9~15) n - 9 6(15 +(n - 9) - n) ashr_7 ++ * n(9~15) n - 9 6(15 +(n - 9) - n) ashr_7 + */ + .p2align 4 + LABEL(ashr_7_sse4_2): +@@ -729,6 +979,7 @@ LABEL(ashr_7_sse4_2): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $9, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -760,12 +1011,18 @@ LABEL(loop_ashr_7_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $7, -16(%rdi, %rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L + pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + + add $16, %rdx + add $16, %r10 +@@ -773,12 +1030,18 @@ LABEL(loop_ashr_7_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $7, -16(%rdi, %rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L + pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + add $16, %rdx + jmp LABEL(loop_ashr_7_use_sse4_2) + +@@ -788,10 +1051,10 @@ LABEL(nibble_ashr_7_use_sse4_2): + movdqa -16(%rdi, %rdx), %xmm0 + psrldq $7, %xmm0 + pcmpistri $0x3a,%xmm0, %xmm0 +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + cmp %r11, %rcx + jae LABEL(nibble_ashr_use_sse4_2_exit) +-#endif ++# endif + cmp $8, %ecx + ja LABEL(loop_ashr_7_use_sse4_2) + +@@ -800,7 +1063,7 @@ LABEL(nibble_ashr_7_use_sse4_2): + /* + * The following cases will be handled by ashr_8 + * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case +- * n(8~15) n - 8 7(15 +(n - 8) - n) ashr_8 ++ * n(8~15) n - 8 7(15 +(n - 8) - n) ashr_8 + */ + .p2align 4 + LABEL(ashr_8_sse4_2): +@@ -809,6 +1072,7 @@ LABEL(ashr_8_sse4_2): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $8, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -840,12 +1104,18 @@ LABEL(loop_ashr_8_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $8, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + + add $16, %rdx + add $16, %r10 +@@ -853,12 +1123,18 @@ LABEL(loop_ashr_8_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $8, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + add $16, %rdx + jmp LABEL(loop_ashr_8_use_sse4_2) + +@@ -868,10 +1144,10 @@ LABEL(nibble_ashr_8_use_sse4_2): + movdqa -16(%rdi, %rdx), %xmm0 + psrldq $8, %xmm0 + pcmpistri $0x3a,%xmm0, %xmm0 +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + cmp %r11, %rcx + jae LABEL(nibble_ashr_use_sse4_2_exit) +-#endif ++# endif + cmp $7, %ecx + ja LABEL(loop_ashr_8_use_sse4_2) + +@@ -880,7 +1156,7 @@ LABEL(nibble_ashr_8_use_sse4_2): + /* + * The following cases will be handled by ashr_9 + * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case +- * n(7~15) n - 7 8(15 +(n - 7) - n) ashr_9 ++ * n(7~15) n - 7 8(15 +(n - 7) - n) ashr_9 + */ + .p2align 4 + LABEL(ashr_9_sse4_2): +@@ -889,6 +1165,7 @@ LABEL(ashr_9_sse4_2): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $7, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -921,12 +1198,18 @@ LABEL(loop_ashr_9_use_sse4_2): + movdqa (%rdi, %rdx), %xmm0 + + palignr $9, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + + add $16, %rdx + add $16, %r10 +@@ -934,12 +1217,18 @@ LABEL(loop_ashr_9_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $9, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + add $16, %rdx + jmp LABEL(loop_ashr_9_use_sse4_2) + +@@ -949,10 +1238,10 @@ LABEL(nibble_ashr_9_use_sse4_2): + movdqa -16(%rdi, %rdx), %xmm0 + psrldq $9, %xmm0 + pcmpistri $0x3a,%xmm0, %xmm0 +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + cmp %r11, %rcx + jae LABEL(nibble_ashr_use_sse4_2_exit) +-#endif ++# endif + cmp $6, %ecx + ja LABEL(loop_ashr_9_use_sse4_2) + +@@ -961,7 +1250,7 @@ LABEL(nibble_ashr_9_use_sse4_2): + /* + * The following cases will be handled by ashr_10 + * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case +- * n(6~15) n - 6 9(15 +(n - 6) - n) ashr_10 ++ * n(6~15) n - 6 9(15 +(n - 6) - n) ashr_10 + */ + .p2align 4 + LABEL(ashr_10_sse4_2): +@@ -970,6 +1259,7 @@ LABEL(ashr_10_sse4_2): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $6, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -1001,12 +1291,18 @@ LABEL(loop_ashr_10_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $10, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + + add $16, %rdx + add $16, %r10 +@@ -1014,12 +1310,18 @@ LABEL(loop_ashr_10_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $10, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + add $16, %rdx + jmp LABEL(loop_ashr_10_use_sse4_2) + +@@ -1029,10 +1331,10 @@ LABEL(nibble_ashr_10_use_sse4_2): + movdqa -16(%rdi, %rdx), %xmm0 + psrldq $10, %xmm0 + pcmpistri $0x3a,%xmm0, %xmm0 +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + cmp %r11, %rcx + jae LABEL(nibble_ashr_use_sse4_2_exit) +-#endif ++# endif + cmp $5, %ecx + ja LABEL(loop_ashr_10_use_sse4_2) + +@@ -1041,7 +1343,7 @@ LABEL(nibble_ashr_10_use_sse4_2): + /* + * The following cases will be handled by ashr_11 + * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case +- * n(5~15) n - 5 10(15 +(n - 5) - n) ashr_11 ++ * n(5~15) n - 5 10(15 +(n - 5) - n) ashr_11 + */ + .p2align 4 + LABEL(ashr_11_sse4_2): +@@ -1050,6 +1352,7 @@ LABEL(ashr_11_sse4_2): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $5, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -1081,12 +1384,18 @@ LABEL(loop_ashr_11_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $11, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + + add $16, %rdx + add $16, %r10 +@@ -1094,12 +1403,18 @@ LABEL(loop_ashr_11_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $11, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + add $16, %rdx + jmp LABEL(loop_ashr_11_use_sse4_2) + +@@ -1109,10 +1424,10 @@ LABEL(nibble_ashr_11_use_sse4_2): + movdqa -16(%rdi, %rdx), %xmm0 + psrldq $11, %xmm0 + pcmpistri $0x3a,%xmm0, %xmm0 +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + cmp %r11, %rcx + jae LABEL(nibble_ashr_use_sse4_2_exit) +-#endif ++# endif + cmp $4, %ecx + ja LABEL(loop_ashr_11_use_sse4_2) + +@@ -1121,7 +1436,7 @@ LABEL(nibble_ashr_11_use_sse4_2): + /* + * The following cases will be handled by ashr_12 + * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case +- * n(4~15) n - 4 11(15 +(n - 4) - n) ashr_12 ++ * n(4~15) n - 4 11(15 +(n - 4) - n) ashr_12 + */ + .p2align 4 + LABEL(ashr_12_sse4_2): +@@ -1130,6 +1445,7 @@ LABEL(ashr_12_sse4_2): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $4, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -1161,12 +1477,18 @@ LABEL(loop_ashr_12_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $12, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + + add $16, %rdx + add $16, %r10 +@@ -1174,12 +1496,18 @@ LABEL(loop_ashr_12_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $12, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + add $16, %rdx + jmp LABEL(loop_ashr_12_use_sse4_2) + +@@ -1189,10 +1517,10 @@ LABEL(nibble_ashr_12_use_sse4_2): + movdqa -16(%rdi, %rdx), %xmm0 + psrldq $12, %xmm0 + pcmpistri $0x3a,%xmm0, %xmm0 +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + cmp %r11, %rcx + jae LABEL(nibble_ashr_use_sse4_2_exit) +-#endif ++# endif + cmp $3, %ecx + ja LABEL(loop_ashr_12_use_sse4_2) + +@@ -1201,7 +1529,7 @@ LABEL(nibble_ashr_12_use_sse4_2): + /* + * The following cases will be handled by ashr_13 + * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case +- * n(3~15) n - 3 12(15 +(n - 3) - n) ashr_13 ++ * n(3~15) n - 3 12(15 +(n - 3) - n) ashr_13 + */ + .p2align 4 + LABEL(ashr_13_sse4_2): +@@ -1210,6 +1538,7 @@ LABEL(ashr_13_sse4_2): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $3, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -1242,12 +1571,18 @@ LABEL(loop_ashr_13_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $13, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + + add $16, %rdx + add $16, %r10 +@@ -1255,12 +1590,18 @@ LABEL(loop_ashr_13_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $13, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + add $16, %rdx + jmp LABEL(loop_ashr_13_use_sse4_2) + +@@ -1270,10 +1611,10 @@ LABEL(nibble_ashr_13_use_sse4_2): + movdqa -16(%rdi, %rdx), %xmm0 + psrldq $13, %xmm0 + pcmpistri $0x3a,%xmm0, %xmm0 +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + cmp %r11, %rcx + jae LABEL(nibble_ashr_use_sse4_2_exit) +-#endif ++# endif + cmp $2, %ecx + ja LABEL(loop_ashr_13_use_sse4_2) + +@@ -1282,7 +1623,7 @@ LABEL(nibble_ashr_13_use_sse4_2): + /* + * The following cases will be handled by ashr_14 + * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case +- * n(2~15) n - 2 13(15 +(n - 2) - n) ashr_14 ++ * n(2~15) n - 2 13(15 +(n - 2) - n) ashr_14 + */ + .p2align 4 + LABEL(ashr_14_sse4_2): +@@ -1291,6 +1632,7 @@ LABEL(ashr_14_sse4_2): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $2, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -1323,12 +1665,18 @@ LABEL(loop_ashr_14_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $14, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + + add $16, %rdx + add $16, %r10 +@@ -1336,12 +1684,18 @@ LABEL(loop_ashr_14_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $14, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + add $16, %rdx + jmp LABEL(loop_ashr_14_use_sse4_2) + +@@ -1351,10 +1705,10 @@ LABEL(nibble_ashr_14_use_sse4_2): + movdqa -16(%rdi, %rdx), %xmm0 + psrldq $14, %xmm0 + pcmpistri $0x3a,%xmm0, %xmm0 +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + cmp %r11, %rcx + jae LABEL(nibble_ashr_use_sse4_2_exit) +-#endif ++# endif + cmp $1, %ecx + ja LABEL(loop_ashr_14_use_sse4_2) + +@@ -1363,7 +1717,7 @@ LABEL(nibble_ashr_14_use_sse4_2): + /* + * The following cases will be handled by ashr_15 + * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case +- * n(1~15) n - 1 14(15 +(n - 1) - n) ashr_15 ++ * n(1~15) n - 1 14(15 +(n - 1) - n) ashr_15 + */ + .p2align 4 + LABEL(ashr_15_sse4_2): +@@ -1372,6 +1726,7 @@ LABEL(ashr_15_sse4_2): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $1, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -1406,12 +1761,18 @@ LABEL(loop_ashr_15_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $15, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + + add $16, %rdx + add $16, %r10 +@@ -1419,12 +1780,18 @@ LABEL(loop_ashr_15_use_sse4_2): + + movdqa (%rdi, %rdx), %xmm0 + palignr $15, -16(%rdi, %rdx), %xmm0 +- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L ++ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + jbe LABEL(use_sse4_2_exit) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + add $16, %rdx + jmp LABEL(loop_ashr_15_use_sse4_2) + +@@ -1434,22 +1801,28 @@ LABEL(nibble_ashr_15_use_sse4_2): + movdqa -16(%rdi, %rdx), %xmm0 + psrldq $15, %xmm0 + pcmpistri $0x3a,%xmm0, %xmm0 +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + cmp %r11, %rcx + jae LABEL(nibble_ashr_use_sse4_2_exit) +-#endif ++# endif + cmp $0, %ecx + ja LABEL(loop_ashr_15_use_sse4_2) + + LABEL(nibble_ashr_use_sse4_2_exit): ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L + pcmpistri $0x1a,(%rsi,%rdx), %xmm0 ++# else ++ movdqa (%rsi,%rdx), %xmm1 ++ TOLOWER (%xmm0, %xmm1) ++ pcmpistri $0x1a, %xmm1, %xmm0 ++# endif + .p2align 4 + LABEL(use_sse4_2_exit): + jnc LABEL(strcmp_exitz_sse4_2) +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub %rcx, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + add %rcx, %rdx + lea -16(%rdi, %r9), %rdi + movzbl (%rdi, %rdx), %eax +@@ -1458,6 +1831,12 @@ LABEL(use_sse4_2_exit): + jz LABEL(use_sse4_2_ret_sse4_2) + xchg %eax, %edx + LABEL(use_sse4_2_ret_sse4_2): ++# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L ++ leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rcx ++ movl (%rcx,%rdx,4), %edx ++ movl (%rcx,%rax,4), %eax ++# endif ++ + sub %edx, %eax + ret + +@@ -1473,13 +1852,19 @@ LABEL(ret_sse4_2): + LABEL(less16bytes_sse4_2): + bsf %rdx, %rdx /* find and store bit index in %rdx */ + +-#ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub %rdx, %r11 + jbe LABEL(strcmp_exitz_sse4_2) +-#endif ++# endif + movzbl (%rsi, %rdx), %ecx + movzbl (%rdi, %rdx), %eax + ++# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L ++ leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rdx ++ movl (%rdx,%rcx,4), %ecx ++ movl (%rdx,%rax,4), %eax ++# endif ++ + sub %ecx, %eax + ret + +@@ -1488,15 +1873,27 @@ LABEL(strcmp_exitz_sse4_2): + ret + + .p2align 4 ++ // XXX Same as code above + LABEL(Byte0_sse4_2): + movzx (%rsi), %ecx + movzx (%rdi), %eax + ++# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L ++ leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rdx ++ movl (%rdx,%rcx,4), %ecx ++ movl (%rdx,%rax,4), %eax ++# endif ++ + sub %ecx, %eax + ret + cfi_endproc + .size STRCMP_SSE42, .-STRCMP_SSE42 + ++# undef UCLOW_reg ++# undef UCHIGH_reg ++# undef LCQWORD_reg ++# undef TOLOWER ++ + /* Put all SSE 4.2 functions together. */ + .section .rodata.sse4.2,"a",@progbits + .p2align 3 +@@ -1528,6 +1925,27 @@ LABEL(unaligned_table_sse4_2): + # undef END + # define END(name) \ + cfi_endproc; .size STRCMP_SSE2, .-STRCMP_SSE2 ++ ++# ifdef USE_AS_STRCASECMP_L ++# define ENTRY2(name) \ ++ .type __strcasecmp_sse2, @function; \ ++ .align 16; \ ++ __strcasecmp_sse2: cfi_startproc; \ ++ CALL_MCOUNT ++# define END2(name) \ ++ cfi_endproc; .size __strcasecmp_sse2, .-__strcasecmp_sse2 ++# endif ++ ++# ifdef USE_AS_STRNCASECMP_L ++# define ENTRY2(name) \ ++ .type __strncasecmp_sse2, @function; \ ++ .align 16; \ ++ __strncasecmp_sse2: cfi_startproc; \ ++ CALL_MCOUNT ++# define END2(name) \ ++ cfi_endproc; .size __strncasecmp_sse2, .-__strncasecmp_sse2 ++# endif ++ + # undef libc_hidden_builtin_def + /* It doesn't make sense to send libc-internal strcmp calls through a PLT. + The speedup we get from using SSE4.2 instruction is likely eaten away +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strncase_l-ssse3.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strncase_l-ssse3.S +@@ -0,0 +1,6 @@ ++#define USE_SSSE3 1 ++#define USE_AS_STRNCASECMP_L ++#define NO_NOLOCALE_ALIAS ++#define STRCMP __strncasecmp_l_ssse3 ++#define __strncasecmp __strncasecmp_ssse3 ++#include "../strcmp.S" +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strncase_l.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strncase_l.S +@@ -0,0 +1,6 @@ ++#define STRCMP __strncasecmp_l ++#define USE_AS_STRNCASECMP_L ++#include "strcmp.S" ++ ++weak_alias (__strncasecmp_l, strncasecmp_l) ++libc_hidden_def (strncasecmp_l) +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strstr.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/strstr.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strstr.c +@@ -67,10 +67,10 @@ + + case ECX CFlag ZFlag SFlag + 3 X 1 0 0/1 +- 4a 0 1 0 0 +- 4b 0 1 0 1 +- 4c 0 < X 1 0 0/1 +- 5 16 0 1 0 ++ 4a 0 1 0 0 ++ 4b 0 1 0 1 ++ 4c 0 < X 1 0 0/1 ++ 5 16 0 1 0 + + 3. An initial ordered-comparison fragment match, we fix up to do + subsequent string comparison +@@ -147,8 +147,7 @@ __m128i_shift_right (__m128i value, int + If EOS occurs within less than 16B before 4KB boundary, we don't + cross to next page. */ + +-static __m128i +-__attribute__ ((section (".text.sse4.2"))) ++static inline __m128i + __m128i_strloadu (const unsigned char * p) + { + int offset = ((size_t) p & (16 - 1)); +@@ -164,59 +163,36 @@ __m128i_strloadu (const unsigned char * + return _mm_loadu_si128 ((__m128i *) p); + } + +-#ifdef USE_AS_STRCASESTR ++#if defined USE_AS_STRCASESTR && !defined STRCASESTR_NONASCII + + /* Similar to __m128i_strloadu. Convert to lower case for POSIX/C + locale. */ +- +-static __m128i +-__attribute__ ((section (".text.sse4.2"))) +-__m128i_strloadu_tolower_posix (const unsigned char * p) ++static inline __m128i ++__m128i_strloadu_tolower (const unsigned char *p, __m128i rangeuc, ++ __m128i u2ldelta) + { + __m128i frag = __m128i_strloadu (p); + +- /* Convert frag to lower case for POSIX/C locale. */ +- __m128i rangeuc = _mm_set_epi64x (0x0, 0x5a41); +- __m128i u2ldelta = _mm_set1_epi64x (0xe0e0e0e0e0e0e0e0); +- __m128i mask1 = _mm_cmpistrm (rangeuc, frag, 0x44); +- __m128i mask2 = _mm_blendv_epi8 (u2ldelta, frag, mask1); +- mask2 = _mm_sub_epi8 (mask2, u2ldelta); +- return _mm_blendv_epi8 (frag, mask2, mask1); ++#define UCLOW 0x4040404040404040ULL ++#define UCHIGH 0x5b5b5b5b5b5b5b5bULL ++#define LCQWORD 0x2020202020202020ULL ++ /* Compare if 'Z' > bytes. Inverted way to get a mask for byte <= 'Z'. */ ++ __m128i r2 = _mm_cmpgt_epi8 (_mm_set1_epi64x (UCHIGH), frag); ++ /* Compare if bytes are > 'A' - 1. */ ++ __m128i r1 = _mm_cmpgt_epi8 (frag, _mm_set1_epi64x (UCLOW)); ++ /* Mask byte == ff if byte(r2) <= 'Z' and byte(r1) > 'A' - 1. */ ++ __m128i mask = _mm_and_si128 (r2, r1); ++ /* Apply lowercase bit 6 mask for above mask bytes == ff. */ ++ return _mm_or_si128 (frag, _mm_and_si128 (mask, _mm_set1_epi64x (LCQWORD))); + } + +-/* Similar to __m128i_strloadu. Convert to lower case for none-POSIX/C +- locale. */ +- +-static __m128i +-__attribute__ ((section (".text.sse4.2"))) +-__m128i_strloadu_tolower (const unsigned char * p) +-{ +- union +- { +- char b[16]; +- __m128i x; +- } u; +- +- for (int i = 0; i < 16; i++) +- if (p[i] == 0) +- { +- u.b[i] = 0; +- break; +- } +- else +- u.b[i] = tolower (p[i]); +- +- return u.x; +-} + #endif + + /* Calculate Knuth-Morris-Pratt string searching algorithm (or KMP + algorithm) overlap for a fully populated 16B vector. + Input parameter: 1st 16Byte loaded from the reference string of a + strstr function. +- We don't use KMP algorithm if reference string is less than 16B. +- */ +- ++ We don't use KMP algorithm if reference string is less than 16B. */ + static int + __inline__ __attribute__ ((__always_inline__,)) + KMP16Bovrlap (__m128i s2) +@@ -236,7 +212,7 @@ KMP16Bovrlap (__m128i s2) + return 1; + else if (!k1) + { +- /* There are al least two ditinct char in s2. If byte 0 and 1 are ++ /* There are al least two distinct chars in s2. If byte 0 and 1 are + idential and the distinct value lies farther down, we can deduce + the next byte offset to restart full compare is least no earlier + than byte 3. */ +@@ -256,23 +232,30 @@ STRSTR_SSE42 (const unsigned char *s1, c + #define p1 s1 + const unsigned char *p2 = s2; + +- if (p2[0] == '\0') ++#ifndef STRCASESTR_NONASCII ++ if (__builtin_expect (p2[0] == '\0', 0)) + return (char *) p1; + +- if (p1[0] == '\0') ++ if (__builtin_expect (p1[0] == '\0', 0)) + return NULL; + + /* Check if p1 length is 1 byte long. */ +- if (p1[1] == '\0') ++ if (__builtin_expect (p1[1] == '\0', 0)) + return p2[1] == '\0' && CMPBYTE (p1[0], p2[0]) ? (char *) p1 : NULL; ++#endif + + #ifdef USE_AS_STRCASESTR +- __m128i (*strloadu) (const unsigned char *); +- +- if (_NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_NONASCII_CASE) == 0) +- strloadu = __m128i_strloadu_tolower_posix; +- else +- strloadu = __m128i_strloadu_tolower; ++# ifndef STRCASESTR_NONASCII ++ if (__builtin_expect (_NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_NONASCII_CASE) ++ != 0, 0)) ++ return __strcasestr_sse42_nonascii (s1, s2); ++ ++ const __m128i rangeuc = _mm_set_epi64x (0x0, 0x5a41); ++ const __m128i u2ldelta = _mm_set1_epi64x (0xe0e0e0e0e0e0e0e0); ++# define strloadu(p) __m128i_strloadu_tolower (p, rangeuc, u2ldelta) ++# else ++# define strloadu __m128i_strloadu_tolower ++# endif + #else + # define strloadu __m128i_strloadu + #endif +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strcasecmp.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strcasecmp.S +@@ -0,0 +1 @@ ++/* In strcasecmp_l.S. */ +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strcasecmp_l-nonascii.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strcasecmp_l-nonascii.c +@@ -0,0 +1,8 @@ ++#include ++ ++extern int __strcasecmp_l_nonascii (__const char *__s1, __const char *__s2, ++ __locale_t __loc); ++ ++#define __strcasecmp_l __strcasecmp_l_nonascii ++#define USE_IN_EXTENDED_LOCALE_MODEL 1 ++#include +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strcasecmp_l.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strcasecmp_l.S +@@ -0,0 +1,6 @@ ++#define STRCMP __strcasecmp_l ++#define USE_AS_STRCASECMP_L ++#include "strcmp.S" ++ ++weak_alias (__strcasecmp_l, strcasecmp_l) ++libc_hidden_def (strcasecmp_l) +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strcmp.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/strcmp.S ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strcmp.S +@@ -51,6 +51,31 @@ + je LABEL(strcmp_exitz); \ + mov %r9, %r11 + ++#elif defined USE_AS_STRCASECMP_L ++# include "locale-defines.h" ++ ++/* No support for strcasecmp outside libc so far since it is not needed. */ ++# ifdef NOT_IN_lib ++# error "strcasecmp_l not implemented so far" ++# endif ++ ++# define UPDATE_STRNCMP_COUNTER ++#elif defined USE_AS_STRNCASECMP_L ++# include "locale-defines.h" ++ ++/* No support for strncasecmp outside libc so far since it is not needed. */ ++# ifdef NOT_IN_lib ++# error "strncasecmp_l not implemented so far" ++# endif ++ ++# define UPDATE_STRNCMP_COUNTER \ ++ /* calculate left number to compare */ \ ++ lea -16(%rcx, %r11), %r9; \ ++ cmp %r9, %r11; \ ++ jb LABEL(strcmp_exitz); \ ++ test %r9, %r9; \ ++ je LABEL(strcmp_exitz); \ ++ mov %r9, %r11 + #else + # define UPDATE_STRNCMP_COUNTER + # ifndef STRCMP +@@ -64,6 +89,46 @@ + .section .text.ssse3,"ax",@progbits + #endif + ++#ifdef USE_AS_STRCASECMP_L ++# ifndef ENTRY2 ++# define ENTRY2(name) ENTRY (name) ++# define END2(name) END (name) ++# endif ++ ++ENTRY2 (__strcasecmp) ++ movq __libc_tsd_LOCALE@gottpoff(%rip),%rax ++ movq %fs:(%rax),%rdx ++ ++ // XXX 5 byte should be before the function ++ /* 5-byte NOP. */ ++ .byte 0x0f,0x1f,0x44,0x00,0x00 ++END2 (__strcasecmp) ++# ifndef NO_NOLOCALE_ALIAS ++weak_alias (__strcasecmp, strcasecmp) ++libc_hidden_def (__strcasecmp) ++# endif ++ /* FALLTHROUGH to strcasecmp_l. */ ++#elif defined USE_AS_STRNCASECMP_L ++# ifndef ENTRY2 ++# define ENTRY2(name) ENTRY (name) ++# define END2(name) END (name) ++# endif ++ ++ENTRY2 (__strncasecmp) ++ movq __libc_tsd_LOCALE@gottpoff(%rip),%rax ++ movq %fs:(%rax),%rcx ++ ++ // XXX 5 byte should be before the function ++ /* 5-byte NOP. */ ++ .byte 0x0f,0x1f,0x44,0x00,0x00 ++END2 (__strncasecmp) ++# ifndef NO_NOLOCALE_ALIAS ++weak_alias (__strncasecmp, strncasecmp) ++libc_hidden_def (__strncasecmp) ++# endif ++ /* FALLTHROUGH to strncasecmp_l. */ ++#endif ++ + ENTRY (BP_SYM (STRCMP)) + #ifdef NOT_IN_libc + /* Simple version since we can't use SSE registers in ld.so. */ +@@ -84,10 +149,32 @@ L(neq): movl $1, %eax + ret + END (BP_SYM (STRCMP)) + #else /* NOT_IN_libc */ ++# ifdef USE_AS_STRCASECMP_L ++ /* We have to fall back on the C implementation for locales ++ with encodings not matching ASCII for single bytes. */ ++# if LOCALE_T___LOCALES != 0 || LC_CTYPE != 0 ++ movq LOCALE_T___LOCALES+LC_CTYPE*8(%rdx), %rax ++# else ++ movq (%rdx), %rax ++# endif ++ testl $0, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%rax) ++ jne __strcasecmp_l_nonascii ++# elif defined USE_AS_STRNCASECMP_L ++ /* We have to fall back on the C implementation for locales ++ with encodings not matching ASCII for single bytes. */ ++# if LOCALE_T___LOCALES != 0 || LC_CTYPE != 0 ++ movq LOCALE_T___LOCALES+LC_CTYPE*8(%rcx), %rax ++# else ++ movq (%rcx), %rax ++# endif ++ testl $0, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%rax) ++ jne __strncasecmp_l_nonascii ++# endif ++ + /* + * This implementation uses SSE to compare up to 16 bytes at a time. + */ +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + test %rdx, %rdx + je LABEL(strcmp_exitz) + cmp $1, %rdx +@@ -99,6 +186,26 @@ END (BP_SYM (STRCMP)) + /* Use 64bit AND here to avoid long NOP padding. */ + and $0x3f, %rcx /* rsi alignment in cache line */ + and $0x3f, %rax /* rdi alignment in cache line */ ++# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L ++ .section .rodata.cst16,"aM",@progbits,16 ++ .align 16 ++.Lbelowupper: ++ .quad 0x4040404040404040 ++ .quad 0x4040404040404040 ++.Ltopupper: ++ .quad 0x5b5b5b5b5b5b5b5b ++ .quad 0x5b5b5b5b5b5b5b5b ++.Ltouppermask: ++ .quad 0x2020202020202020 ++ .quad 0x2020202020202020 ++ .previous ++ movdqa .Lbelowupper(%rip), %xmm5 ++# define UCLOW_reg %xmm5 ++ movdqa .Ltopupper(%rip), %xmm6 ++# define UCHIGH_reg %xmm6 ++ movdqa .Ltouppermask(%rip), %xmm7 ++# define LCQWORD_reg %xmm7 ++# endif + cmp $0x30, %ecx + ja LABEL(crosscache) /* rsi: 16-byte load will cross cache line */ + cmp $0x30, %eax +@@ -107,6 +214,26 @@ END (BP_SYM (STRCMP)) + movlpd (%rsi), %xmm2 + movhpd 8(%rdi), %xmm1 + movhpd 8(%rsi), %xmm2 ++# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L ++# define TOLOWER(reg1, reg2) \ ++ movdqa reg1, %xmm8; \ ++ movdqa UCHIGH_reg, %xmm9; \ ++ movdqa reg2, %xmm10; \ ++ movdqa UCHIGH_reg, %xmm11; \ ++ pcmpgtb UCLOW_reg, %xmm8; \ ++ pcmpgtb reg1, %xmm9; \ ++ pcmpgtb UCLOW_reg, %xmm10; \ ++ pcmpgtb reg2, %xmm11; \ ++ pand %xmm9, %xmm8; \ ++ pand %xmm11, %xmm10; \ ++ pand LCQWORD_reg, %xmm8; \ ++ pand LCQWORD_reg, %xmm10; \ ++ por %xmm8, reg1; \ ++ por %xmm10, reg2 ++ TOLOWER (%xmm1, %xmm2) ++# else ++# define TOLOWER(reg1, reg2) ++# endif + pxor %xmm0, %xmm0 /* clear %xmm0 for null char checks */ + pcmpeqb %xmm1, %xmm0 /* Any null chars? */ + pcmpeqb %xmm2, %xmm1 /* compare first 16 bytes for equality */ +@@ -114,7 +241,7 @@ END (BP_SYM (STRCMP)) + pmovmskb %xmm1, %edx + sub $0xffff, %edx /* if first 16 bytes are same, edx == 0xffff */ + jnz LABEL(less16bytes) /* If not, find different value or null char */ +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) /* finish comparision */ + # endif +@@ -159,7 +286,13 @@ LABEL(ashr_0): + movdqa (%rsi), %xmm1 + pxor %xmm0, %xmm0 /* clear %xmm0 for null char check */ + pcmpeqb %xmm1, %xmm0 /* Any null chars? */ ++# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L + pcmpeqb (%rdi), %xmm1 /* compare 16 bytes for equality */ ++# else ++ movdqa (%rdi), %xmm2 ++ TOLOWER (%xmm1, %xmm2) ++ pcmpeqb %xmm2, %xmm1 /* compare 16 bytes for equality */ ++# endif + psubb %xmm0, %xmm1 /* packed sub of comparison results*/ + pmovmskb %xmm1, %r9d + shr %cl, %edx /* adjust 0xffff for offset */ +@@ -183,6 +316,7 @@ LABEL(ashr_0): + LABEL(loop_ashr_0): + movdqa (%rsi, %rcx), %xmm1 + movdqa (%rdi, %rcx), %xmm2 ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -191,13 +325,14 @@ LABEL(loop_ashr_0): + sub $0xffff, %edx + jnz LABEL(exit) /* mismatch or null char seen */ + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif + add $16, %rcx + movdqa (%rsi, %rcx), %xmm1 + movdqa (%rdi, %rcx), %xmm2 ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -205,7 +340,7 @@ LABEL(loop_ashr_0): + pmovmskb %xmm1, %edx + sub $0xffff, %edx + jnz LABEL(exit) +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -214,7 +349,7 @@ LABEL(loop_ashr_0): + + /* + * The following cases will be handled by ashr_1 +- * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case ++ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case + * n(15) n -15 0(15 +(n-15) - n) ashr_1 + */ + .p2align 4 +@@ -224,6 +359,7 @@ LABEL(ashr_1): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 /* Any null chars? */ + pslldq $15, %xmm2 /* shift first string to align with second */ ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 /* compare 16 bytes for equality */ + psubb %xmm0, %xmm2 /* packed sub of comparison results*/ + pmovmskb %xmm2, %r9d +@@ -263,6 +399,7 @@ LABEL(gobble_ashr_1): + # else + palignr $1, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -271,7 +408,7 @@ LABEL(gobble_ashr_1): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -292,6 +429,7 @@ LABEL(gobble_ashr_1): + # else + palignr $1, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -300,7 +438,7 @@ LABEL(gobble_ashr_1): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -319,8 +457,8 @@ LABEL(nibble_ashr_1): + test $0xfffe, %edx + jnz LABEL(ashr_1_exittail) /* find null char*/ + +-# ifdef USE_AS_STRNCMP +- cmp $14, %r11 ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L ++ cmp $15, %r11 + jbe LABEL(ashr_1_exittail) + # endif + +@@ -351,6 +489,7 @@ LABEL(ashr_2): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $14, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -390,6 +529,7 @@ LABEL(gobble_ashr_2): + # else + palignr $2, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -398,7 +538,7 @@ LABEL(gobble_ashr_2): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -420,6 +560,7 @@ LABEL(gobble_ashr_2): + # else + palignr $2, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -428,7 +569,7 @@ LABEL(gobble_ashr_2): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -444,8 +585,8 @@ LABEL(nibble_ashr_2): + test $0xfffc, %edx + jnz LABEL(ashr_2_exittail) + +-# ifdef USE_AS_STRNCMP +- cmp $13, %r11 ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L ++ cmp $14, %r11 + jbe LABEL(ashr_2_exittail) + # endif + +@@ -472,6 +613,7 @@ LABEL(ashr_3): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $13, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -512,6 +654,7 @@ LABEL(gobble_ashr_3): + # else + palignr $3, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -520,7 +663,7 @@ LABEL(gobble_ashr_3): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -542,6 +685,7 @@ LABEL(gobble_ashr_3): + # else + palignr $3, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -550,7 +694,7 @@ LABEL(gobble_ashr_3): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -566,8 +710,8 @@ LABEL(nibble_ashr_3): + test $0xfff8, %edx + jnz LABEL(ashr_3_exittail) + +-# ifdef USE_AS_STRNCMP +- cmp $12, %r11 ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L ++ cmp $13, %r11 + jbe LABEL(ashr_3_exittail) + # endif + +@@ -594,6 +738,7 @@ LABEL(ashr_4): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $12, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -634,6 +779,7 @@ LABEL(gobble_ashr_4): + # else + palignr $4, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -642,7 +788,7 @@ LABEL(gobble_ashr_4): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -664,6 +810,7 @@ LABEL(gobble_ashr_4): + # else + palignr $4, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -672,7 +819,7 @@ LABEL(gobble_ashr_4): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -688,8 +835,8 @@ LABEL(nibble_ashr_4): + test $0xfff0, %edx + jnz LABEL(ashr_4_exittail) + +-# ifdef USE_AS_STRNCMP +- cmp $11, %r11 ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L ++ cmp $12, %r11 + jbe LABEL(ashr_4_exittail) + # endif + +@@ -716,6 +863,7 @@ LABEL(ashr_5): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $11, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -756,6 +904,7 @@ LABEL(gobble_ashr_5): + # else + palignr $5, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -764,7 +913,7 @@ LABEL(gobble_ashr_5): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -786,6 +935,7 @@ LABEL(gobble_ashr_5): + # else + palignr $5, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -794,7 +944,7 @@ LABEL(gobble_ashr_5): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -810,8 +960,8 @@ LABEL(nibble_ashr_5): + test $0xffe0, %edx + jnz LABEL(ashr_5_exittail) + +-# ifdef USE_AS_STRNCMP +- cmp $10, %r11 ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L ++ cmp $11, %r11 + jbe LABEL(ashr_5_exittail) + # endif + +@@ -838,6 +988,7 @@ LABEL(ashr_6): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $10, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -878,6 +1029,7 @@ LABEL(gobble_ashr_6): + # else + palignr $6, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -886,7 +1038,7 @@ LABEL(gobble_ashr_6): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -908,6 +1060,7 @@ LABEL(gobble_ashr_6): + # else + palignr $6, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -916,7 +1069,7 @@ LABEL(gobble_ashr_6): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -932,8 +1085,8 @@ LABEL(nibble_ashr_6): + test $0xffc0, %edx + jnz LABEL(ashr_6_exittail) + +-# ifdef USE_AS_STRNCMP +- cmp $9, %r11 ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L ++ cmp $10, %r11 + jbe LABEL(ashr_6_exittail) + # endif + +@@ -960,6 +1113,7 @@ LABEL(ashr_7): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $9, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -1000,6 +1154,7 @@ LABEL(gobble_ashr_7): + # else + palignr $7, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -1008,7 +1163,7 @@ LABEL(gobble_ashr_7): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -1030,6 +1185,7 @@ LABEL(gobble_ashr_7): + # else + palignr $7, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -1038,7 +1194,7 @@ LABEL(gobble_ashr_7): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -1054,8 +1210,8 @@ LABEL(nibble_ashr_7): + test $0xff80, %edx + jnz LABEL(ashr_7_exittail) + +-# ifdef USE_AS_STRNCMP +- cmp $8, %r11 ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L ++ cmp $9, %r11 + jbe LABEL(ashr_7_exittail) + # endif + +@@ -1082,6 +1238,7 @@ LABEL(ashr_8): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $8, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -1122,6 +1279,7 @@ LABEL(gobble_ashr_8): + # else + palignr $8, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -1130,7 +1288,7 @@ LABEL(gobble_ashr_8): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -1152,6 +1310,7 @@ LABEL(gobble_ashr_8): + # else + palignr $8, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -1160,7 +1319,7 @@ LABEL(gobble_ashr_8): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -1176,8 +1335,8 @@ LABEL(nibble_ashr_8): + test $0xff00, %edx + jnz LABEL(ashr_8_exittail) + +-# ifdef USE_AS_STRNCMP +- cmp $7, %r11 ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L ++ cmp $8, %r11 + jbe LABEL(ashr_8_exittail) + # endif + +@@ -1204,6 +1363,7 @@ LABEL(ashr_9): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $7, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -1244,6 +1404,7 @@ LABEL(gobble_ashr_9): + # else + palignr $9, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -1252,7 +1413,7 @@ LABEL(gobble_ashr_9): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -1274,6 +1435,7 @@ LABEL(gobble_ashr_9): + # else + palignr $9, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -1282,7 +1444,7 @@ LABEL(gobble_ashr_9): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -1298,8 +1460,8 @@ LABEL(nibble_ashr_9): + test $0xfe00, %edx + jnz LABEL(ashr_9_exittail) + +-# ifdef USE_AS_STRNCMP +- cmp $6, %r11 ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L ++ cmp $7, %r11 + jbe LABEL(ashr_9_exittail) + # endif + +@@ -1326,6 +1488,7 @@ LABEL(ashr_10): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $6, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -1366,6 +1529,7 @@ LABEL(gobble_ashr_10): + # else + palignr $10, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -1374,7 +1538,7 @@ LABEL(gobble_ashr_10): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -1396,6 +1560,7 @@ LABEL(gobble_ashr_10): + # else + palignr $10, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -1404,7 +1569,7 @@ LABEL(gobble_ashr_10): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -1420,8 +1585,8 @@ LABEL(nibble_ashr_10): + test $0xfc00, %edx + jnz LABEL(ashr_10_exittail) + +-# ifdef USE_AS_STRNCMP +- cmp $5, %r11 ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L ++ cmp $6, %r11 + jbe LABEL(ashr_10_exittail) + # endif + +@@ -1448,6 +1613,7 @@ LABEL(ashr_11): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $5, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -1488,6 +1654,7 @@ LABEL(gobble_ashr_11): + # else + palignr $11, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -1496,7 +1663,7 @@ LABEL(gobble_ashr_11): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -1518,6 +1685,7 @@ LABEL(gobble_ashr_11): + # else + palignr $11, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -1526,7 +1694,7 @@ LABEL(gobble_ashr_11): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -1542,8 +1710,8 @@ LABEL(nibble_ashr_11): + test $0xf800, %edx + jnz LABEL(ashr_11_exittail) + +-# ifdef USE_AS_STRNCMP +- cmp $4, %r11 ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L ++ cmp $5, %r11 + jbe LABEL(ashr_11_exittail) + # endif + +@@ -1570,6 +1738,7 @@ LABEL(ashr_12): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $4, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -1610,6 +1779,7 @@ LABEL(gobble_ashr_12): + # else + palignr $12, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -1618,7 +1788,7 @@ LABEL(gobble_ashr_12): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -1640,6 +1810,7 @@ LABEL(gobble_ashr_12): + # else + palignr $12, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -1648,7 +1819,7 @@ LABEL(gobble_ashr_12): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -1664,8 +1835,8 @@ LABEL(nibble_ashr_12): + test $0xf000, %edx + jnz LABEL(ashr_12_exittail) + +-# ifdef USE_AS_STRNCMP +- cmp $3, %r11 ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L ++ cmp $4, %r11 + jbe LABEL(ashr_12_exittail) + # endif + +@@ -1692,6 +1863,7 @@ LABEL(ashr_13): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $3, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -1732,6 +1904,7 @@ LABEL(gobble_ashr_13): + # else + palignr $13, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -1740,7 +1913,7 @@ LABEL(gobble_ashr_13): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -1762,6 +1935,7 @@ LABEL(gobble_ashr_13): + # else + palignr $13, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -1770,7 +1944,7 @@ LABEL(gobble_ashr_13): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -1786,8 +1960,8 @@ LABEL(nibble_ashr_13): + test $0xe000, %edx + jnz LABEL(ashr_13_exittail) + +-# ifdef USE_AS_STRNCMP +- cmp $2, %r11 ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L ++ cmp $3, %r11 + jbe LABEL(ashr_13_exittail) + # endif + +@@ -1814,6 +1988,7 @@ LABEL(ashr_14): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $2, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -1854,6 +2029,7 @@ LABEL(gobble_ashr_14): + # else + palignr $14, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -1862,7 +2038,7 @@ LABEL(gobble_ashr_14): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -1884,6 +2060,7 @@ LABEL(gobble_ashr_14): + # else + palignr $14, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -1892,7 +2069,7 @@ LABEL(gobble_ashr_14): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP | defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -1908,8 +2085,8 @@ LABEL(nibble_ashr_14): + test $0xc000, %edx + jnz LABEL(ashr_14_exittail) + +-# ifdef USE_AS_STRNCMP +- cmp $1, %r11 ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L ++ cmp $2, %r11 + jbe LABEL(ashr_14_exittail) + # endif + +@@ -1936,6 +2113,7 @@ LABEL(ashr_15): + movdqa (%rsi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pslldq $1, %xmm2 ++ TOLOWER (%xmm1, %xmm2) + pcmpeqb %xmm1, %xmm2 + psubb %xmm0, %xmm2 + pmovmskb %xmm2, %r9d +@@ -1978,6 +2156,7 @@ LABEL(gobble_ashr_15): + # else + palignr $15, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -1986,7 +2165,7 @@ LABEL(gobble_ashr_15): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -2008,6 +2187,7 @@ LABEL(gobble_ashr_15): + # else + palignr $15, %xmm3, %xmm2 /* merge into one 16byte value */ + # endif ++ TOLOWER (%xmm1, %xmm2) + + pcmpeqb %xmm1, %xmm0 + pcmpeqb %xmm2, %xmm1 +@@ -2016,7 +2196,7 @@ LABEL(gobble_ashr_15): + sub $0xffff, %edx + jnz LABEL(exit) + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub $16, %r11 + jbe LABEL(strcmp_exitz) + # endif +@@ -2032,9 +2212,9 @@ LABEL(nibble_ashr_15): + test $0x8000, %edx + jnz LABEL(ashr_15_exittail) + +-# ifdef USE_AS_STRNCMP +- test %r11, %r11 +- je LABEL(ashr_15_exittail) ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L ++ cmpq $1, %r11 ++ jbe LABEL(ashr_15_exittail) + # endif + + pxor %xmm0, %xmm0 +@@ -2049,6 +2229,7 @@ LABEL(ashr_15_exittail): + + .p2align 4 + LABEL(aftertail): ++ TOLOWER (%xmm1, %xmm3) + pcmpeqb %xmm3, %xmm1 + psubb %xmm0, %xmm1 + pmovmskb %xmm1, %edx +@@ -2069,13 +2250,19 @@ LABEL(ret): + LABEL(less16bytes): + bsf %rdx, %rdx /* find and store bit index in %rdx */ + +-# ifdef USE_AS_STRNCMP ++# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L + sub %rdx, %r11 + jbe LABEL(strcmp_exitz) + # endif + movzbl (%rsi, %rdx), %ecx + movzbl (%rdi, %rdx), %eax + ++# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L ++ leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rdx ++ movl (%rdx,%rcx,4), %ecx ++ movl (%rdx,%rax,4), %eax ++# endif ++ + sub %ecx, %eax + ret + +@@ -2088,6 +2275,12 @@ LABEL(Byte0): + movzx (%rsi), %ecx + movzx (%rdi), %eax + ++# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L ++ leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rdx ++ movl (%rdx,%rcx,4), %ecx ++ movl (%rdx,%rax,4), %eax ++# endif ++ + sub %ecx, %eax + ret + END (BP_SYM (STRCMP)) +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strncase.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strncase.S +@@ -0,0 +1 @@ ++/* In strncase_l.S. */ +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strncase_l-nonascii.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strncase_l-nonascii.c +@@ -0,0 +1,8 @@ ++#include ++ ++extern int __strncasecmp_l_nonascii (__const char *__s1, __const char *__s2, ++ size_t __n, __locale_t __loc); ++ ++#define __strncasecmp_l __strncasecmp_l_nonascii ++#define USE_IN_EXTENDED_LOCALE_MODEL 1 ++#include +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strncase_l.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strncase_l.S +@@ -0,0 +1,6 @@ ++#define STRCMP __strncasecmp_l ++#define USE_AS_STRNCASECMP_L ++#include "strcmp.S" ++ ++weak_alias (__strncasecmp_l, strncasecmp_l) ++libc_hidden_def (strncasecmp_l) +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strnlen.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strnlen.S +@@ -0,0 +1,64 @@ ++/* strnlen(str,maxlen) -- determine the length of the string STR up to MAXLEN. ++ Copyright (C) 2010 Free Software Foundation, Inc. ++ Contributed by Ulrich Drepper . ++ 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 ++ ++ ++ .text ++ENTRY(__strnlen) ++ movq %rsi, %rax ++ testq %rsi, %rsi ++ jz 3f ++ pxor %xmm2, %xmm2 ++ movq %rdi, %rcx ++ movq %rdi, %r8 ++ movq $16, %r9 ++ andq $~15, %rdi ++ movdqa %xmm2, %xmm1 ++ pcmpeqb (%rdi), %xmm2 ++ orl $0xffffffff, %r10d ++ subq %rdi, %rcx ++ shll %cl, %r10d ++ subq %rcx, %r9 ++ pmovmskb %xmm2, %edx ++ andl %r10d, %edx ++ jnz 1f ++ subq %r9, %rsi ++ jbe 3f ++ ++2: movdqa 16(%rdi), %xmm0 ++ leaq 16(%rdi), %rdi ++ pcmpeqb %xmm1, %xmm0 ++ pmovmskb %xmm0, %edx ++ testl %edx, %edx ++ jnz 1f ++ subq $16, %rsi ++ jnbe 2b ++3: ret ++ ++1: subq %r8, %rdi ++ bsfl %edx, %edx ++ addq %rdi, %rdx ++ cmpq %rdx, %rax ++ cmovnbq %rdx, %rax ++ ret ++END(__strnlen) ++weak_alias (__strnlen, strnlen) ++libc_hidden_def (strnlen) +Index: glibc-2.12-2-gc4ccff1/wcsmbs/wcsatcliff.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/wcsmbs/wcsatcliff.c ++++ glibc-2.12-2-gc4ccff1/wcsmbs/wcsatcliff.c +@@ -16,6 +16,8 @@ + #define MEMCPY wmemcpy + #define MEMPCPY wmempcpy + #define MEMCHR wmemchr ++#define STRCMP wcscmp ++#define STRNCMP wcsncmp + + + #include "../string/stratcliff.c" diff --git a/src/patches/glibc/glibc-rh607010.patch b/src/patches/glibc/glibc-rh607010.patch new file mode 100644 index 000000000..6952dad85 --- /dev/null +++ b/src/patches/glibc/glibc-rh607010.patch @@ -0,0 +1,26 @@ +2010-09-07 H.J. Lu + + * sysdeps/x86_64/cacheinfo.c (init_cacheinfo): Round cache sizes + up to multiple of 256 bytes. + +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/cacheinfo.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/cacheinfo.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/cacheinfo.c +@@ -661,12 +661,16 @@ init_cacheinfo (void) + + if (data > 0) + { ++ /* Round data cache size up to multiple of 256 bytes. */ ++ data = (data + 255) & ~255L; + __x86_64_data_cache_size_half = data / 2; + __x86_64_data_cache_size = data; + } + + if (shared > 0) + { ++ /* Round shared cache size up to multiple of 256 bytes. */ ++ shared = (shared + 255) & ~255L; + __x86_64_shared_cache_size_half = shared / 2; + __x86_64_shared_cache_size = shared; + } diff --git a/src/patches/glibc/glibc-rh607461.patch b/src/patches/glibc/glibc-rh607461.patch new file mode 100644 index 000000000..79fc72cb6 --- /dev/null +++ b/src/patches/glibc/glibc-rh607461.patch @@ -0,0 +1,22 @@ +Index: glibc-2.12-2-gc4ccff1/nptl/allocatestack.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/allocatestack.c ++++ glibc-2.12-2-gc4ccff1/nptl/allocatestack.c +@@ -994,7 +994,16 @@ setxid_mark_thread (struct xid_command * + + /* If the thread is exiting right now, ignore it. */ + if ((ch & EXITING_BITMASK) != 0) +- return; ++ { ++ /* Release the futex if there is no other setxid in ++ progress. */ ++ if ((ch & SETXID_BITMASK) == 0) ++ { ++ t->setxid_futex = 1; ++ lll_futex_wake (&t->setxid_futex, 1, LLL_PRIVATE); ++ } ++ return; ++ } + } + while (atomic_compare_and_exchange_bool_acq (&t->cancelhandling, + ch | SETXID_BITMASK, ch)); diff --git a/src/patches/glibc/glibc-rh615090.patch b/src/patches/glibc/glibc-rh615090.patch new file mode 100644 index 000000000..e6c00f05b --- /dev/null +++ b/src/patches/glibc/glibc-rh615090.patch @@ -0,0 +1,21 @@ +2010-07-27 Andreas Schwab + + * manual/memory.texi (Malloc Tunable Parameters): Document + M_PERTURB. + +Index: glibc-2.12-2-gc4ccff1/manual/memory.texi +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/manual/memory.texi ++++ glibc-2.12-2-gc4ccff1/manual/memory.texi +@@ -702,6 +702,11 @@ be allocated via @code{mmap}. + @item M_MMAP_MAX + The maximum number of chunks to allocate with @code{mmap}. Setting this + to zero disables all use of @code{mmap}. ++@item M_PERTURB ++If non-zero, memory blocks are filled with values depending on some ++low order bits of this parameter when they are allocated (except when ++allocated by @code{calloc}) and freed. This can be used to debug the ++use of uninitialized or freed heap memory. + @end table + + @end deftypefun diff --git a/src/patches/glibc/glibc-rh615701.patch b/src/patches/glibc/glibc-rh615701.patch new file mode 100644 index 000000000..283e3feb1 --- /dev/null +++ b/src/patches/glibc/glibc-rh615701.patch @@ -0,0 +1,23 @@ +2010-07-20 Roland McGrath + + * elf/dl-sysdep.c (_dl_important_hwcaps): Add dsocaps mask to + dl_hwcap_mask as well as dl_hwcap. Without this, dsocaps matching in + ld.so.cache was broken. With it, there is no way to disable dsocaps + like LD_HWCAP_MASK can disable hwcaps. + +Index: glibc-2.12-2-gc4ccff1/elf/dl-sysdep.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/dl-sysdep.c ++++ glibc-2.12-2-gc4ccff1/elf/dl-sysdep.c +@@ -425,6 +425,11 @@ _dl_important_hwcaps (const char *platfo + { + const ElfW(Word) mask = ((const ElfW(Word) *) dsocaps)[-1]; + GLRO(dl_hwcap) |= (uint64_t) mask << _DL_FIRST_EXTRA; ++ /* Note that we add the dsocaps to the set already chosen by the ++ LD_HWCAP_MASK environment variable (or default HWCAP_IMPORTANT). ++ So there is no way to request ignoring an OS-supplied dsocap ++ string and bit like you can ignore an OS-supplied HWCAP bit. */ ++ GLRO(dl_hwcap_mask) |= (uint64_t) mask << _DL_FIRST_EXTRA; + size_t len; + for (const char *p = dsocaps; p < dsocaps + dsocapslen; p += len + 1) + { diff --git a/src/patches/glibc/glibc-rh621959.patch b/src/patches/glibc/glibc-rh621959.patch new file mode 100644 index 000000000..315521f66 --- /dev/null +++ b/src/patches/glibc/glibc-rh621959.patch @@ -0,0 +1,120 @@ +2010-08-06 Ulrich Drepper + + * sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid): + Also fail if tpwd after pwuid call is NULL. + +2010-06-21 Andreas Schwab + + * sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid): + Restore proper fallback handling. + +2010-06-19 Ulrich Drepper + + * sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid): Handle + OOM in getpwuid_r correctly. Return error number when the caller + should return, otherwise -1. + (getlogin_r): Adjust to return also for result of __getlogin_r_loginuid + call returning > 0 value. + * sysdeps/unix/sysv/linux/getlogin.c (getlogin): Likewise. + +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/getlogin.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/getlogin.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/getlogin.c +@@ -32,8 +32,9 @@ + char * + getlogin (void) + { +- if (__getlogin_r_loginuid (name, sizeof (name)) == 0) +- return name; ++ int res = __getlogin_r_loginuid (name, sizeof (name)); ++ if (res >= 0) ++ return res == 0 ? name : NULL; + + return getlogin_fd0 (); + } +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/getlogin_r.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/getlogin_r.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/getlogin_r.c +@@ -27,6 +27,10 @@ static int getlogin_r_fd0 (char *name, s + #undef getlogin_r + + ++/* Try to determine login name from /proc/self/loginuid and return 0 ++ if successful. If /proc/self/loginuid cannot be read return -1. ++ Otherwise return the error number. */ ++ + int + attribute_hidden + __getlogin_r_loginuid (name, namesize) +@@ -35,7 +39,7 @@ __getlogin_r_loginuid (name, namesize) + { + int fd = open_not_cancel_2 ("/proc/self/loginuid", O_RDONLY); + if (fd == -1) +- return 1; ++ return -1; + + /* We are reading a 32-bit number. 12 bytes are enough for the text + representation. If not, something is wrong. */ +@@ -51,37 +55,38 @@ __getlogin_r_loginuid (name, namesize) + || (uidbuf[n] = '\0', + uid = strtoul (uidbuf, &endp, 10), + endp == uidbuf || *endp != '\0')) +- return 1; ++ return -1; + + size_t buflen = 1024; + char *buf = alloca (buflen); + bool use_malloc = false; + struct passwd pwd; + struct passwd *tpwd; ++ int result = 0; + int res; + +- while ((res = __getpwuid_r (uid, &pwd, buf, buflen, &tpwd)) != 0) ++ while ((res = __getpwuid_r (uid, &pwd, buf, buflen, &tpwd)) == ERANGE) + if (__libc_use_alloca (2 * buflen)) +- extend_alloca (buf, buflen, 2 * buflen); ++ buf = extend_alloca (buf, buflen, 2 * buflen); + else + { + buflen *= 2; + char *newp = realloc (use_malloc ? buf : NULL, buflen); + if (newp == NULL) + { +- fail: +- if (use_malloc) +- free (buf); +- return 1; ++ result = ENOMEM; ++ goto out; + } + buf = newp; + use_malloc = true; + } + +- if (tpwd == NULL) +- goto fail; ++ if (res != 0 || tpwd == NULL) ++ { ++ result = -1; ++ goto out; ++ } + +- int result = 0; + size_t needed = strlen (pwd.pw_name) + 1; + if (needed > namesize) + { +@@ -109,8 +114,9 @@ getlogin_r (name, namesize) + char *name; + size_t namesize; + { +- if (__getlogin_r_loginuid (name, namesize) == 0) +- return 0; ++ int res = __getlogin_r_loginuid (name, namesize); ++ if (res >= 0) ++ return res; + + return getlogin_r_fd0 (name, namesize); + } diff --git a/src/patches/glibc/glibc-rh623187.patch b/src/patches/glibc/glibc-rh623187.patch new file mode 100644 index 000000000..596fdd6bc --- /dev/null +++ b/src/patches/glibc/glibc-rh623187.patch @@ -0,0 +1,18 @@ +2010-08-10 Dinakar Guniguntala + Stefan Hajnoczi + + * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: If + FUTEX_WAKE_OP fails make sure to call FUTEX_WAKE instead. + +Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S ++++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S +@@ -163,7 +163,6 @@ __pthread_cond_signal: + #endif + orl $FUTEX_WAKE, %ecx + +- xorl $(FUTEX_WAKE ^ FUTEX_WAKE_OP), %ecx + movl $SYS_futex, %eax + /* %edx should be 1 already from $FUTEX_WAKE_OP syscall. + movl $1, %edx */ diff --git a/src/patches/glibc/glibc-rh625893.patch b/src/patches/glibc/glibc-rh625893.patch new file mode 100644 index 000000000..5337a425c --- /dev/null +++ b/src/patches/glibc/glibc-rh625893.patch @@ -0,0 +1,79 @@ +2010-08-12 Andreas Schwab + + [BZ #11904] + * locale/programs/locale.c (print_assignment): New function. + (show_locale_vars): Use it. + +Index: glibc-2.12-2-gc4ccff1/locale/programs/locale.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/locale/programs/locale.c ++++ glibc-2.12-2-gc4ccff1/locale/programs/locale.c +@@ -762,6 +762,29 @@ write_charmaps (void) + twalk (all_data, print_names); + } + ++/* Print a properly quoted assignment of NAME with VAL, using double ++ quotes iff DQUOTE is true. */ ++static void ++print_assignment (const char *name, const char *val, bool dquote) ++{ ++ printf ("%s=", name); ++ if (dquote) ++ putchar ('"'); ++ while (*val != '\0') ++ { ++ size_t segment ++ = strcspn (val, dquote ? "$`\"\\" : "~|&;<>()$`\\\"' \t\n"); ++ printf ("%.*s", (int) segment, val); ++ val += segment; ++ if (*val == '\0') ++ break; ++ putchar ('\\'); ++ putchar (*val++); ++ } ++ if (dquote) ++ putchar ('"'); ++ putchar ('\n'); ++} + + /* We have to show the contents of the environments determining the + locale. */ +@@ -769,7 +792,7 @@ static void + show_locale_vars (void) + { + size_t cat_no; +- const char *lcall = getenv ("LC_ALL"); ++ const char *lcall = getenv ("LC_ALL") ? : ""; + const char *lang = getenv ("LANG") ? : ""; + + auto void get_source (const char *name); +@@ -778,15 +801,15 @@ show_locale_vars (void) + { + char *val = getenv (name); + +- if ((lcall ?: "")[0] != '\0' || val == NULL) +- printf ("%s=\"%s\"\n", name, +- (lcall ?: "")[0] ? lcall : (lang ?: "")[0] ? lang : "POSIX"); ++ if (lcall[0] != '\0' || val == NULL) ++ print_assignment (name, lcall[0] ? lcall : lang[0] ? lang : "POSIX", ++ true); + else +- printf ("%s=%s\n", name, val); ++ print_assignment (name, val, false); + } + + /* LANG has to be the first value. */ +- printf ("LANG=%s\n", lang); ++ print_assignment ("LANG", lang, false); + + /* Now all categories in an unspecified order. */ + for (cat_no = 0; cat_no < NCATEGORIES; ++cat_no) +@@ -794,7 +817,7 @@ show_locale_vars (void) + get_source (category[cat_no].name); + + /* The last is the LC_ALL value. */ +- printf ("LC_ALL=%s\n", lcall ? : ""); ++ print_assignment ("LC_ALL", lcall, false); + } + + diff --git a/src/patches/glibc/glibc-rh630801.patch b/src/patches/glibc/glibc-rh630801.patch new file mode 100644 index 000000000..5bd3c6652 --- /dev/null +++ b/src/patches/glibc/glibc-rh630801.patch @@ -0,0 +1,29 @@ +2010-05-26 H.J. Lu + + [BZ #11640] + * sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): + Properly check family and model. + +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/init-arch.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.c +@@ -62,15 +62,15 @@ __init_cpu_features (void) + unsigned int eax = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].eax; + unsigned int extended_family = (eax >> 20) & 0xff; + unsigned int extended_model = (eax >> 12) & 0xf0; +- if (__cpu_features.family == 0x0f) ++ if (family == 0x0f) + { + family += extended_family; + model += extended_model; + } +- else if (__cpu_features.family == 0x06) ++ else if (family == 0x06) + { + model += extended_model; +- switch (__cpu_features.model) ++ switch (model) + { + case 0x1a: + case 0x1e: diff --git a/src/patches/glibc/glibc-rh631011.patch b/src/patches/glibc/glibc-rh631011.patch new file mode 100644 index 000000000..42a1a56e4 --- /dev/null +++ b/src/patches/glibc/glibc-rh631011.patch @@ -0,0 +1,17 @@ +2010-08-19 Andreas Schwab + + * sysdeps/i386/i686/multiarch/strspn.S [!SHARED]: Fix SSE4.2 check. + +Index: glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strspn.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/i386/i686/multiarch/strspn.S ++++ glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strspn.S +@@ -65,7 +65,7 @@ ENTRY(strspn) + jne 1f + call __init_cpu_features + 1: leal __strspn_ia32, %eax +- testl $index_SSE2, CPUID_OFFSET+index_SSE4_2+__cpu_features ++ testl $bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features + jz 2f + leal __strspn_sse42, %eax + 2: ret diff --git a/src/patches/glibc/glibc-rh641128.patch b/src/patches/glibc/glibc-rh641128.patch new file mode 100644 index 000000000..52df4aee0 --- /dev/null +++ b/src/patches/glibc/glibc-rh641128.patch @@ -0,0 +1,78 @@ +2010-10-06 Ulrich Drepper + + * string/bug-strstr1.c: New file. + * string/Makefile: Add rules to build and run bug-strstr1. + +2010-10-05 Eric Blake + + [BZ #12092] + * string/str-two-way.h (two_way_long_needle): Always clear memory + when skipping input due to the shift table. + +Index: glibc-2.12-2-gc4ccff1/string/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/string/Makefile ++++ glibc-2.12-2-gc4ccff1/string/Makefile +@@ -54,7 +54,8 @@ tests := tester inl-tester noinl-tester + bug-strncat1 bug-strspn1 bug-strpbrk1 tst-bswap \ + tst-strtok tst-strxfrm bug-strcoll1 tst-strfry \ + bug-strtok1 $(addprefix test-,$(strop-tests)) \ +- bug-envz1 tst-strxfrm2 tst-endian tst-svc2 ++ bug-envz1 tst-strxfrm2 tst-endian tst-svc2 \ ++ bug-strstr1 + distribute := memcopy.h pagecopy.h tst-svc.expect test-string.h \ + str-two-way.h + +@@ -73,6 +74,7 @@ CFLAGS-tst-strlen.c = -fno-builtin + CFLAGS-stratcliff.c = -fno-builtin + CFLAGS-test-ffs.c = -fno-builtin + CFLAGS-tst-inlcall.c = -fno-builtin ++CFLAGS-bug-strstr1.c = -fno-builtin + + ifeq ($(cross-compiling),no) + tests: $(objpfx)tst-svc.out +Index: glibc-2.12-2-gc4ccff1/string/bug-strstr1.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/string/bug-strstr1.c +@@ -0,0 +1,26 @@ ++#include ++#include ++ ++int main (int argc, char** argv) ++{ ++ const char haystack[] = ++ "F_BD_CE_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_C3_88_20_EF_BF_BD_EF_BF_BD_EF_BF_BD_C3_A7_20_EF_BF_BD"; ++ ++ const char needle[] = ++ "_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD"; ++ ++ const char* sub = strstr (haystack, needle); ++ ++ if (sub != NULL) ++ { ++ int j; ++ ++ fprintf (stderr, "BUG: expected NULL, got:\n%s\n%s\n", sub, needle); ++ for (j = 0; needle[j] != '\0'; ++j) ++ putchar (needle[j] == sub[j] ? ' ' : '^'); ++ puts (""); ++ return 1; ++ } ++ ++ return 0; ++} +Index: glibc-2.12-2-gc4ccff1/string/str-two-way.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/string/str-two-way.h ++++ glibc-2.12-2-gc4ccff1/string/str-two-way.h +@@ -350,8 +350,8 @@ two_way_long_needle (const unsigned char + a byte out of place, there can be no match until + after the mismatch. */ + shift = needle_len - period; +- memory = 0; + } ++ memory = 0; + j += shift; + continue; + } diff --git a/src/patches/glibc/glibc-rh642584.patch b/src/patches/glibc/glibc-rh642584.patch new file mode 100644 index 000000000..7fd390d3c --- /dev/null +++ b/src/patches/glibc/glibc-rh642584.patch @@ -0,0 +1,41 @@ +2010-10-13 H.J. Lu + + [BZ #12113] + * sysdeps/x86_64/pthreaddef.h (TCB_ALIGNMENT): Changed to 32. + * sysdeps/x86_64/tls.h (TLS_TCB_ALIGN): Defined with alignment + of "struct pthread". + +Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/x86_64/pthreaddef.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/x86_64/pthreaddef.h ++++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/x86_64/pthreaddef.h +@@ -27,8 +27,9 @@ + /* Minimal stack size after allocating thread descriptor and guard size. */ + #define MINIMAL_REST_STACK 2048 + +-/* Alignment requirement for TCB. */ +-#define TCB_ALIGNMENT 16 ++/* Alignment requirement for TCB. Need to store post-AVX vector registers ++ in the TCB and we want the storage to be aligned at 32-byte. */ ++#define TCB_ALIGNMENT 32 + + + /* Location of current stack frame. The frame pointer is not usable. */ +Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/x86_64/tls.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/x86_64/tls.h ++++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/x86_64/tls.h +@@ -117,12 +117,7 @@ typedef struct + # define TLS_TCB_SIZE sizeof (struct pthread) + + /* Alignment requirements for the TCB. */ +-//# define TLS_TCB_ALIGN __alignof__ (struct pthread) +-// Normally the above would be correct But we have to store post-AVX +-// vector registers in the TCB and we want the storage to be aligned. +-// unfortunately there isn't yet a type for these values and hence no +-// 32-byte alignment requirement. Make this explicit, for now. +-# define TLS_TCB_ALIGN 32 ++# define TLS_TCB_ALIGN __alignof__ (struct pthread) + + /* The TCB can have any size and the memory following the address the + thread pointer points to is unspecified. Allocate the TCB there. */ diff --git a/src/patches/glibc/glibc-rh643822.patch b/src/patches/glibc/glibc-rh643822.patch new file mode 100644 index 000000000..c32c1fea1 --- /dev/null +++ b/src/patches/glibc/glibc-rh643822.patch @@ -0,0 +1,64 @@ +2010-12-09 Andreas Schwab + + * elf/dl-object.c (_dl_new_object): Ignore origin of privileged + program. + +2010-10-18 Andreas Schwab + + * elf/dl-open.c (dl_open_worker): Don't expand DST here, let + _dl_map_object do it. + +Index: glibc-2.12-2-gc4ccff1/elf/dl-object.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/dl-object.c ++++ glibc-2.12-2-gc4ccff1/elf/dl-object.c +@@ -214,6 +214,9 @@ _dl_new_object (char *realname, const ch + out: + new->l_origin = origin; + } ++ else if (INTUSE(__libc_enable_secure) && type == lt_executable) ++ /* The origin of a privileged program cannot be trusted. */ ++ new->l_origin = (char *) -1; + + return new; + } +Index: glibc-2.12-2-gc4ccff1/elf/dl-open.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/dl-open.c ++++ glibc-2.12-2-gc4ccff1/elf/dl-open.c +@@ -221,35 +221,6 @@ dl_open_worker (void *a) + + assert (_dl_debug_initialize (0, args->nsid)->r_state == RT_CONSISTENT); + +- /* Maybe we have to expand a DST. */ +- if (__builtin_expect (dst != NULL, 0)) +- { +- size_t len = strlen (file); +- +- /* Determine how much space we need. We have to allocate the +- memory locally. */ +- size_t required = DL_DST_REQUIRED (call_map, file, len, +- _dl_dst_count (dst, 0)); +- +- /* Get space for the new file name. */ +- char *new_file = (char *) alloca (required + 1); +- +- /* Generate the new file name. */ +- _dl_dst_substitute (call_map, file, new_file, 0); +- +- /* If the substitution failed don't try to load. */ +- if (*new_file == '\0') +- _dl_signal_error (0, "dlopen", NULL, +- N_("empty dynamic string token substitution")); +- +- /* Now we have a new file name. */ +- file = new_file; +- +- /* It does not matter whether call_map is set even if we +- computed it only because of the DST. Since the path contains +- a slash the value is not used. See dl-load.c. */ +- } +- + /* Load the named object. */ + struct link_map *new; + args->map = new = _dl_map_object (call_map, file, 0, lt_loaded, 0, diff --git a/src/patches/glibc/glibc-rh645672.patch b/src/patches/glibc/glibc-rh645672.patch new file mode 100644 index 000000000..644614ed6 --- /dev/null +++ b/src/patches/glibc/glibc-rh645672.patch @@ -0,0 +1,215 @@ +2010-10-22 Andreas Schwab + + * include/dlfcn.h (__RTLD_SECURE): Define. + * elf/dl-load.c (_dl_map_object): Remove preloaded parameter. Use + mode & __RTLD_SECURE instead. + (open_path): Remove preloaded parameter to secure. + * sysdeps/generic/ldsodefs.h (_dl_map_object): Adjust declaration. + * elf/dl-open.c (dl_open_worker): Adjust call to _dl_map_object. + * elf/dl-deps.c (openaux): Likewise. + * elf/rtld.c (struct map_args): Remove is_preloaded. + (map_doit): Don't use it. + (dl_main): Likewise. + (do_preload): Use __RTLD_SECURE instead of is_preloaded. + (dlmopen_doit): Add __RTLD_SECURE to mode bits. + +Index: glibc-2.12-2-gc4ccff1/elf/dl-deps.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/dl-deps.c ++++ glibc-2.12-2-gc4ccff1/elf/dl-deps.c +@@ -62,7 +62,7 @@ openaux (void *a) + { + struct openaux_args *args = (struct openaux_args *) a; + +- args->aux = _dl_map_object (args->map, args->name, 0, ++ args->aux = _dl_map_object (args->map, args->name, + (args->map->l_type == lt_executable + ? lt_library : args->map->l_type), + args->trace_mode, args->open_mode, +Index: glibc-2.12-2-gc4ccff1/elf/dl-load.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/dl-load.c ++++ glibc-2.12-2-gc4ccff1/elf/dl-load.c +@@ -1811,7 +1811,7 @@ open_verify (const char *name, struct fi + if MAY_FREE_DIRS is true. */ + + static int +-open_path (const char *name, size_t namelen, int preloaded, ++open_path (const char *name, size_t namelen, int secure, + struct r_search_path_struct *sps, char **realname, + struct filebuf *fbp, struct link_map *loader, int whatcode, + bool *found_other_class) +@@ -1893,7 +1893,7 @@ open_path (const char *name, size_t name + /* Remember whether we found any existing directory. */ + here_any |= this_dir->status[cnt] != nonexisting; + +- if (fd != -1 && __builtin_expect (preloaded, 0) ++ if (fd != -1 && __builtin_expect (secure, 0) + && INTUSE(__libc_enable_secure)) + { + /* This is an extra security effort to make sure nobody can +@@ -1962,7 +1962,7 @@ open_path (const char *name, size_t name + + struct link_map * + internal_function +-_dl_map_object (struct link_map *loader, const char *name, int preloaded, ++_dl_map_object (struct link_map *loader, const char *name, + int type, int trace_mode, int mode, Lmid_t nsid) + { + int fd; +@@ -2066,7 +2066,8 @@ _dl_map_object (struct link_map *loader, + for (l = loader; l; l = l->l_loader) + if (cache_rpath (l, &l->l_rpath_dirs, DT_RPATH, "RPATH")) + { +- fd = open_path (name, namelen, preloaded, &l->l_rpath_dirs, ++ fd = open_path (name, namelen, mode & __RTLD_SECURE, ++ &l->l_rpath_dirs, + &realname, &fb, loader, LA_SER_RUNPATH, + &found_other_class); + if (fd != -1) +@@ -2081,14 +2082,15 @@ _dl_map_object (struct link_map *loader, + && main_map != NULL && main_map->l_type != lt_loaded + && cache_rpath (main_map, &main_map->l_rpath_dirs, DT_RPATH, + "RPATH")) +- fd = open_path (name, namelen, preloaded, &main_map->l_rpath_dirs, ++ fd = open_path (name, namelen, mode & __RTLD_SECURE, ++ &main_map->l_rpath_dirs, + &realname, &fb, loader ?: main_map, LA_SER_RUNPATH, + &found_other_class); + } + + /* Try the LD_LIBRARY_PATH environment variable. */ + if (fd == -1 && env_path_list.dirs != (void *) -1) +- fd = open_path (name, namelen, preloaded, &env_path_list, ++ fd = open_path (name, namelen, mode & __RTLD_SECURE, &env_path_list, + &realname, &fb, + loader ?: GL(dl_ns)[LM_ID_BASE]._ns_loaded, + LA_SER_LIBPATH, &found_other_class); +@@ -2097,12 +2099,12 @@ _dl_map_object (struct link_map *loader, + if (fd == -1 && loader != NULL + && cache_rpath (loader, &loader->l_runpath_dirs, + DT_RUNPATH, "RUNPATH")) +- fd = open_path (name, namelen, preloaded, ++ fd = open_path (name, namelen, mode & __RTLD_SECURE, + &loader->l_runpath_dirs, &realname, &fb, loader, + LA_SER_RUNPATH, &found_other_class); + + if (fd == -1 +- && (__builtin_expect (! preloaded, 1) ++ && (__builtin_expect (! (mode & __RTLD_SECURE), 1) + || ! INTUSE(__libc_enable_secure))) + { + /* Check the list of libraries in the file /etc/ld.so.cache, +@@ -2168,7 +2170,7 @@ _dl_map_object (struct link_map *loader, + && ((l = loader ?: GL(dl_ns)[nsid]._ns_loaded) == NULL + || __builtin_expect (!(l->l_flags_1 & DF_1_NODEFLIB), 1)) + && rtld_search_dirs.dirs != (void *) -1) +- fd = open_path (name, namelen, preloaded, &rtld_search_dirs, ++ fd = open_path (name, namelen, mode & __RTLD_SECURE, &rtld_search_dirs, + &realname, &fb, l, LA_SER_DEFAULT, &found_other_class); + + /* Add another newline when we are tracing the library loading. */ +Index: glibc-2.12-2-gc4ccff1/elf/dl-open.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/dl-open.c ++++ glibc-2.12-2-gc4ccff1/elf/dl-open.c +@@ -252,7 +252,7 @@ dl_open_worker (void *a) + + /* Load the named object. */ + struct link_map *new; +- args->map = new = _dl_map_object (call_map, file, 0, lt_loaded, 0, ++ args->map = new = _dl_map_object (call_map, file, lt_loaded, 0, + mode | __RTLD_CALLMAP, args->nsid); + + /* If the pointer returned is NULL this means the RTLD_NOLOAD flag is +Index: glibc-2.12-2-gc4ccff1/elf/rtld.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/rtld.c ++++ glibc-2.12-2-gc4ccff1/elf/rtld.c +@@ -589,7 +589,6 @@ struct map_args + /* Argument to map_doit. */ + char *str; + struct link_map *loader; +- int is_preloaded; + int mode; + /* Return value of map_doit. */ + struct link_map *map; +@@ -627,16 +626,17 @@ static void + map_doit (void *a) + { + struct map_args *args = (struct map_args *) a; +- args->map = _dl_map_object (args->loader, args->str, +- args->is_preloaded, lt_library, 0, args->mode, +- LM_ID_BASE); ++ args->map = _dl_map_object (args->loader, args->str, lt_library, 0, ++ args->mode, LM_ID_BASE); + } + + static void + dlmopen_doit (void *a) + { + struct dlmopen_args *args = (struct dlmopen_args *) a; +- args->map = _dl_open (args->fname, RTLD_LAZY | __RTLD_DLOPEN | __RTLD_AUDIT, ++ args->map = _dl_open (args->fname, ++ (RTLD_LAZY | __RTLD_DLOPEN | __RTLD_AUDIT ++ | __RTLD_SECURE), + dl_main, LM_ID_NEWLM, _dl_argc, INTUSE(_dl_argv), + __environ); + } +@@ -806,8 +806,7 @@ do_preload (char *fname, struct link_map + + args.str = fname; + args.loader = main_map; +- args.is_preloaded = 1; +- args.mode = 0; ++ args.mode = __RTLD_SECURE; + + unsigned int old_nloaded = GL(dl_ns)[LM_ID_BASE]._ns_nloaded; + +@@ -1054,7 +1053,6 @@ of this helper program; chances are you + + args.str = rtld_progname; + args.loader = NULL; +- args.is_preloaded = 0; + args.mode = __RTLD_OPENEXEC; + (void) _dl_catch_error (&objname, &err_str, &malloced, map_doit, + &args); +@@ -1066,7 +1064,7 @@ of this helper program; chances are you + else + { + HP_TIMING_NOW (start); +- _dl_map_object (NULL, rtld_progname, 0, lt_library, 0, ++ _dl_map_object (NULL, rtld_progname, lt_library, 0, + __RTLD_OPENEXEC, LM_ID_BASE); + HP_TIMING_NOW (stop); + +Index: glibc-2.12-2-gc4ccff1/include/dlfcn.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/include/dlfcn.h ++++ glibc-2.12-2-gc4ccff1/include/dlfcn.h +@@ -9,6 +9,7 @@ + #define __RTLD_OPENEXEC 0x20000000 + #define __RTLD_CALLMAP 0x10000000 + #define __RTLD_AUDIT 0x08000000 ++#define __RTLD_SECURE 0x04000000 /* Apply additional security checks. */ + + #define __LM_ID_CALLER -2 + +Index: glibc-2.12-2-gc4ccff1/sysdeps/generic/ldsodefs.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/generic/ldsodefs.h ++++ glibc-2.12-2-gc4ccff1/sysdeps/generic/ldsodefs.h +@@ -824,11 +824,9 @@ extern void _dl_receive_error (receiver_ + + /* Open the shared object NAME and map in its segments. + LOADER's DT_RPATH is used in searching for NAME. +- If the object is already opened, returns its existing map. +- For preloaded shared objects PRELOADED is set to a non-zero +- value to allow additional security checks. */ ++ If the object is already opened, returns its existing map. */ + extern struct link_map *_dl_map_object (struct link_map *loader, +- const char *name, int preloaded, ++ const char *name, + int type, int trace_mode, int mode, + Lmid_t nsid) + internal_function attribute_hidden; diff --git a/src/patches/glibc/glibc-rh646954.patch b/src/patches/glibc/glibc-rh646954.patch new file mode 100644 index 000000000..bbb959e5a --- /dev/null +++ b/src/patches/glibc/glibc-rh646954.patch @@ -0,0 +1,216 @@ +2010-10-26 Ulrich Drepper + + * elf/rtld.c (dl_main): Move assertion after the point where rtld map + is added to the list. + +2010-10-20 Andreas Krebbel + Ulrich Drepper + + * elf/dl-object.c (_dl_new_object): Don't append the new object to + the global list here. Move code to... + (_dl_add_to_namespace_list): ...here. New function. + * elf/rtld.c (dl_main): Invoke _dl_add_to_namespace_list. + * sysdeps/generic/ldsodefs.h (_dl_add_to_namespace_list): Declare. + * elf/dl-load.c (lose): Don't remove the element from the list. + (_dl_map_object_from_fd): Invoke _dl_add_to_namespace_list. + (_dl_map_object): Likewise. + +Index: glibc-2.12-2-gc4ccff1/elf/dl-load.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/dl-load.c ++++ glibc-2.12-2-gc4ccff1/elf/dl-load.c +@@ -797,22 +797,7 @@ lose (int code, int fd, const char *name + /* The file might already be closed. */ + if (fd != -1) + (void) __close (fd); +- if (l != NULL) +- { +- /* We modify the list of loaded objects. */ +- __rtld_lock_lock_recursive (GL(dl_load_write_lock)); +- /* Remove the stillborn object from the list and free it. */ +- assert (l->l_next == NULL); +- if (l->l_prev == NULL) +- /* No other module loaded. This happens only in the static library, +- or in rtld under --verify. */ +- GL(dl_ns)[l->l_ns]._ns_loaded = NULL; +- else +- l->l_prev->l_next = NULL; +- --GL(dl_ns)[l->l_ns]._ns_nloaded; +- free (l); +- __rtld_lock_unlock_recursive (GL(dl_load_write_lock)); +- } ++ free (l); + free (realname); + + if (r != NULL) +@@ -897,6 +882,9 @@ _dl_map_object_from_fd (const char *name + never be unloaded. */ + __close (fd); + ++ /* Add the map for the mirrored object to the object list. */ ++ _dl_add_to_namespace_list (l, nsid); ++ + return l; + } + #endif +@@ -1491,6 +1479,9 @@ cannot enable executable stack as shared + add_name_to_object (l, ((const char *) D_PTR (l, l_info[DT_STRTAB]) + + l->l_info[DT_SONAME]->d_un.d_val)); + ++ /* Now that the object is fully initialized add it to the object list. */ ++ _dl_add_to_namespace_list (l, nsid); ++ + #ifdef SHARED + /* Auditing checkpoint: we have a new object. */ + if (__builtin_expect (GLRO(dl_naudit) > 0, 0) +@@ -2215,7 +2206,7 @@ _dl_map_object (struct link_map *loader, + have. */ + static const Elf_Symndx dummy_bucket = STN_UNDEF; + +- /* Enter the new object in the list of loaded objects. */ ++ /* Allocate a new object map. */ + if ((name_copy = local_strdup (name)) == NULL + || (l = _dl_new_object (name_copy, name, type, loader, + mode, nsid)) == NULL) +@@ -2233,6 +2224,9 @@ _dl_map_object (struct link_map *loader, + l->l_nbuckets = 1; + l->l_relocated = 1; + ++ /* Enter the object in the object list. */ ++ _dl_add_to_namespace_list (l, nsid); ++ + return l; + } + else if (found_other_class) +Index: glibc-2.12-2-gc4ccff1/elf/dl-object.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/dl-object.c ++++ glibc-2.12-2-gc4ccff1/elf/dl-object.c +@@ -26,16 +26,41 @@ + #include + + ++/* Add the new link_map NEW to the end of the namespace list. */ ++void ++internal_function ++_dl_add_to_namespace_list (struct link_map *new, Lmid_t nsid) ++{ ++ /* We modify the list of loaded objects. */ ++ __rtld_lock_lock_recursive (GL(dl_load_write_lock)); ++ ++ if (GL(dl_ns)[nsid]._ns_loaded != NULL) ++ { ++ struct link_map *l = GL(dl_ns)[nsid]._ns_loaded; ++ while (l->l_next != NULL) ++ l = l->l_next; ++ new->l_prev = l; ++ /* new->l_next = NULL; Would be necessary but we use calloc. */ ++ l->l_next = new; ++ } ++ else ++ GL(dl_ns)[nsid]._ns_loaded = new; ++ ++GL(dl_ns)[nsid]._ns_nloaded; ++ new->l_serial = GL(dl_load_adds); ++ ++GL(dl_load_adds); ++ ++ __rtld_lock_unlock_recursive (GL(dl_load_write_lock)); ++} ++ ++ + /* Allocate a `struct link_map' for a new object being loaded, + and enter it into the _dl_loaded list. */ +- + struct link_map * + internal_function + _dl_new_object (char *realname, const char *libname, int type, + struct link_map *loader, int mode, Lmid_t nsid) + { + struct link_map *l; +- int idx; + size_t libname_len = strlen (libname) + 1; + struct link_map *new; + struct libname_list *newname; +@@ -93,31 +118,12 @@ _dl_new_object (char *realname, const ch + new->l_scope = new->l_scope_mem; + new->l_scope_max = sizeof (new->l_scope_mem) / sizeof (new->l_scope_mem[0]); + +- /* We modify the list of loaded objects. */ +- __rtld_lock_lock_recursive (GL(dl_load_write_lock)); +- + /* Counter for the scopes we have to handle. */ +- idx = 0; ++ int idx = 0; + + if (GL(dl_ns)[nsid]._ns_loaded != NULL) +- { +- l = GL(dl_ns)[nsid]._ns_loaded; +- while (l->l_next != NULL) +- l = l->l_next; +- new->l_prev = l; +- /* new->l_next = NULL; Would be necessary but we use calloc. */ +- l->l_next = new; +- +- /* Add the global scope. */ +- new->l_scope[idx++] = &GL(dl_ns)[nsid]._ns_loaded->l_searchlist; +- } +- else +- GL(dl_ns)[nsid]._ns_loaded = new; +- ++GL(dl_ns)[nsid]._ns_nloaded; +- new->l_serial = GL(dl_load_adds); +- ++GL(dl_load_adds); +- +- __rtld_lock_unlock_recursive (GL(dl_load_write_lock)); ++ /* Add the global scope. */ ++ new->l_scope[idx++] = &GL(dl_ns)[nsid]._ns_loaded->l_searchlist; + + /* If we have no loader the new object acts as it. */ + if (loader == NULL) +Index: glibc-2.12-2-gc4ccff1/elf/rtld.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/rtld.c ++++ glibc-2.12-2-gc4ccff1/elf/rtld.c +@@ -1108,11 +1108,15 @@ of this helper program; chances are you + main_map = _dl_new_object ((char *) "", "", lt_executable, NULL, + __RTLD_OPENEXEC, LM_ID_BASE); + assert (main_map != NULL); +- assert (main_map == GL(dl_ns)[LM_ID_BASE]._ns_loaded); + main_map->l_phdr = phdr; + main_map->l_phnum = phnum; + main_map->l_entry = *user_entry; + ++ /* Even though the link map is not yet fully initialized we can add ++ it to the map list since there are no possible users running yet. */ ++ _dl_add_to_namespace_list (main_map, LM_ID_BASE); ++ assert (main_map == GL(dl_ns)[LM_ID_BASE]._ns_loaded); ++ + /* At this point we are in a bit of trouble. We would have to + fill in the values for l_dev and l_ino. But in general we + do not know where the file is. We also do not handle AT_EXECFD +@@ -1380,6 +1384,9 @@ of this helper program; chances are you + l->l_libname->name = memcpy (copy, dsoname, len); + } + ++ /* Add the vDSO to the object list. */ ++ _dl_add_to_namespace_list (l, LM_ID_BASE); ++ + /* Rearrange the list so this DSO appears after rtld_map. */ + assert (l->l_next == NULL); + assert (l->l_prev == main_map); +Index: glibc-2.12-2-gc4ccff1/sysdeps/generic/ldsodefs.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/generic/ldsodefs.h ++++ glibc-2.12-2-gc4ccff1/sysdeps/generic/ldsodefs.h +@@ -891,8 +891,11 @@ extern lookup_t _dl_lookup_symbol_x (con + extern ElfW(Addr) _dl_symbol_value (struct link_map *map, const char *name) + internal_function; + +-/* Allocate a `struct link_map' for a new object being loaded, +- and enter it into the _dl_main_map list. */ ++/* Add the new link_map NEW to the end of the namespace list. */ ++extern void _dl_add_to_namespace_list (struct link_map *new, Lmid_t nsid) ++ internal_function attribute_hidden; ++ ++/* Allocate a `struct link_map' for a new object being loaded. */ + extern struct link_map *_dl_new_object (char *realname, const char *libname, + int type, struct link_map *loader, + int mode, Lmid_t nsid) diff --git a/src/patches/glibc/glibc-rh647448.patch b/src/patches/glibc/glibc-rh647448.patch new file mode 100644 index 000000000..ff5594560 --- /dev/null +++ b/src/patches/glibc/glibc-rh647448.patch @@ -0,0 +1,58 @@ +2010-10-25 Ulrich Drepper + + [BZ #12159] + * sysdeps/x86_64/multiarch/strchr.S: Fix propagation of search byte + into all bytes of SSE register. + Patch by Richard Li . + +Index: glibc-2.12-2-gc4ccff1/string/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/string/Makefile ++++ glibc-2.12-2-gc4ccff1/string/Makefile +@@ -55,7 +55,7 @@ tests := tester inl-tester noinl-tester + tst-strtok tst-strxfrm bug-strcoll1 tst-strfry \ + bug-strtok1 $(addprefix test-,$(strop-tests)) \ + bug-envz1 tst-strxfrm2 tst-endian tst-svc2 \ +- bug-strstr1 ++ bug-strstr1 bug-strchr1 + distribute := memcopy.h pagecopy.h tst-svc.expect test-string.h \ + str-two-way.h + +Index: glibc-2.12-2-gc4ccff1/string/bug-strchr1.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/string/bug-strchr1.c +@@ -0,0 +1,14 @@ ++#include ++#include ++ ++static int ++do_test (void) ++{ ++ char s[] __attribute__((aligned(16))) = "\xff"; ++ char *p = strchr (s, '\xfe'); ++ printf ("%p\n", p); ++ return p != NULL; ++} ++ ++#define TEST_FUNCTION do_test () ++#include "../test-skeleton.c" +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strchr.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/strchr.S ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strchr.S +@@ -87,13 +87,13 @@ __strchr_sse42: + pxor %xmm2, %xmm2 + movd %esi, %xmm1 + movl %edi, %ecx ++ pshufb %xmm2, %xmm1 + andl $15, %ecx + movq %rdi, %r8 + je L(aligned_start) + + /* Handle unaligned string. */ + andq $-16, %r8 +- pshufb %xmm2, %xmm1 + movdqa (%r8), %xmm0 + pcmpeqb %xmm0, %xmm2 + pcmpeqb %xmm1, %xmm0 diff --git a/src/patches/glibc/glibc-rh652661.patch b/src/patches/glibc/glibc-rh652661.patch new file mode 100644 index 000000000..79a3212a7 --- /dev/null +++ b/src/patches/glibc/glibc-rh652661.patch @@ -0,0 +1,21 @@ +2010-05-20 Andreas Schwab + + * sysdeps/unix/sysv/linux/sys/timex.h: Use __REDIRECT_NTH. + +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/sys/timex.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/sys/timex.h ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/sys/timex.h +@@ -140,9 +140,9 @@ __BEGIN_DECLS + extern int __adjtimex (struct timex *__ntx) __THROW; + extern int adjtimex (struct timex *__ntx) __THROW; + +-#if defined __GNUC__ && __GNUC__ >= 2 +-extern int ntp_gettime (struct ntptimeval *__ntv) +- __asm__ ("ntp_gettimex") __THROW; ++#ifdef __REDIRECT_NTH ++extern int __REDIRECT_NTH (ntp_gettime, (struct ntptimeval *__ntv), ++ ntp_gettimex); + #else + extern int ntp_gettimex (struct ntptimeval *__ntv) __THROW; + # define ntp_gettime ntp_gettimex diff --git a/src/patches/glibc/glibc-rh656014.patch b/src/patches/glibc/glibc-rh656014.patch new file mode 100644 index 000000000..5ef68dcbf --- /dev/null +++ b/src/patches/glibc/glibc-rh656014.patch @@ -0,0 +1,45 @@ +2010-11-24 Andreas Schwab + + * resolv/nss_dns/dns-host.c (getanswer_r): Don't handle ttl == 0 + specially. + (gaih_getanswer_slice): Likewise. + +Index: glibc-2.12-2-gc4ccff1/resolv/nss_dns/dns-host.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/resolv/nss_dns/dns-host.c ++++ glibc-2.12-2-gc4ccff1/resolv/nss_dns/dns-host.c +@@ -599,7 +599,6 @@ getanswer_r (const querybuf *answer, int + int (*name_ok) (const char *); + u_char packtmp[NS_MAXCDNAME]; + int have_to_map = 0; +- int32_t ttl = 0; + uintptr_t pad = -(uintptr_t) buffer % __alignof__ (struct host_data); + buffer += pad; + if (__builtin_expect (buflen < sizeof (struct host_data) + pad, 0)) +@@ -733,7 +732,7 @@ getanswer_r (const querybuf *answer, int + cp += INT16SZ; /* type */ + class = __ns_get16 (cp); + cp += INT16SZ; /* class */ +- ttl = __ns_get32 (cp); ++ int32_t ttl = __ns_get32 (cp); + cp += INT32SZ; /* TTL */ + n = __ns_get16 (cp); + cp += INT16SZ; /* len */ +@@ -907,7 +906,7 @@ getanswer_r (const querybuf *answer, int + { + register int nn; + +- if (ttlp != NULL && ttl != 0) ++ if (ttlp != NULL) + *ttlp = ttl; + if (canonp != NULL) + *canonp = bp; +@@ -1163,7 +1162,7 @@ gaih_getanswer_slice (const querybuf *an + + if (*firstp) + { +- if (ttl != 0 && ttlp != NULL) ++ if (ttlp != NULL) + *ttlp = ttl; + + (*pat)->name = canon ?: h_name; diff --git a/src/patches/glibc/glibc-rh656530.patch b/src/patches/glibc/glibc-rh656530.patch new file mode 100644 index 000000000..f10143069 --- /dev/null +++ b/src/patches/glibc/glibc-rh656530.patch @@ -0,0 +1,21 @@ +2010-11-10 Luis Machado + + * sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c (__ieee754_sqrtl): Force + signed comparison. + +Index: glibc-2.12-2-gc4ccff1/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c +@@ -73,9 +73,9 @@ long double __ieee754_sqrtl(long double + m = ((a.i[2] >> 20) & 0x7ff) - 54; + } + m += n; +- if (m > 0) ++ if ((int) m > 0) + a.i[2] = (a.i[2] & 0x800fffff) | (m << 20); +- else if (m <= -54) { ++ else if ((int) m <= -54) { + a.i[2] &= 0x80000000; + a.i[3] = 0; + } else { diff --git a/src/patches/glibc/glibc-rh657572.patch b/src/patches/glibc/glibc-rh657572.patch new file mode 100644 index 000000000..a7201309d --- /dev/null +++ b/src/patches/glibc/glibc-rh657572.patch @@ -0,0 +1,141 @@ +commit 42c5011242e48f846111237552d3bf3ca18c4885 +Author: Ulrich Drepper +Date: Fri Dec 23 09:51:10 2011 -0500 + + Various fixes to fi_FI + + 2011-12-23 Ulrich Drepper + + [BZ #12962] + * locales/fi_FI: Various fixups. + Patch by Marko Myllynen . + +diff --git a/localedata/locales/fi_FI b/localedata/locales/fi_FI +index acc9ce6..f51700c 100644 +--- a/localedata/locales/fi_FI ++++ b/localedata/locales/fi_FI +@@ -1,4 +1,4 @@ +-escape_char / ++escape_char / + comment_char % + + % Finnish language locale for Finland +@@ -45,10 +45,10 @@ category "fi_FI:2000";LC_NUMERIC + category "fi_FI:2000";LC_MONETARY + category "fi_FI:2000";LC_MESSAGES + category "fi_FI:2000";LC_PAPER ++category "fi_FI:2000";LC_MEASUREMENT + category "fi_FI:2000";LC_NAME + category "fi_FI:2000";LC_ADDRESS + category "fi_FI:2000";LC_TELEPHONE +- + END LC_IDENTIFICATION + + LC_COLLATE +@@ -125,7 +125,6 @@ reorder-after + ;;;IGNORE + + reorder-end +- + END LC_COLLATE + + LC_CTYPE +@@ -146,12 +145,10 @@ positive_sign "" + negative_sign "" + int_frac_digits 2 + frac_digits 2 +-% int_curr_symbol precedes +-% curr_symbol succeeds + p_cs_precedes 0 +-p_sep_by_space 2 ++p_sep_by_space 1 + n_cs_precedes 0 +-n_sep_by_space 2 ++n_sep_by_space 1 + p_sign_posn 1 + n_sign_posn 1 + END LC_MONETARY +@@ -173,18 +170,18 @@ day "";/ + "";/ + "";/ + "" +-abmon "";/ +- "";/ ++abmon "";/ ++ "";/ + "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ + "";/ +- "" ++ "" + mon "";/ + "";/ + "";/ +@@ -207,13 +204,14 @@ t_fmt_ampm "" + date_fmt "/ + / + " ++week 7;19971130;4 + first_weekday 2 % Monday + first_workday 2 % Monday + END LC_TIME + + LC_MESSAGES +-yesexpr "" +-noexpr "" ++yesexpr "" ++noexpr "" + END LC_MESSAGES + + LC_PAPER +@@ -222,6 +220,7 @@ width 210 + END LC_PAPER + + LC_TELEPHONE ++tel_dom_fmt "" + tel_int_fmt "/ + " + int_prefix "" +@@ -235,15 +234,25 @@ END LC_MEASUREMENT + LC_NAME + name_fmt "/ + " ++% Finnish equivalents for Mr/Mrs/Miss/Ms are herra/rouva/rouva/neiti ++% but they are practically never used, thus we don't define them here. + END LC_NAME + + LC_ADDRESS +-postal_fmt "/ +-/ +-/ +-/ ++postal_fmt "/ ++/ ++/ ++/ + " + country_ab2 "" + country_ab3 "" + country_num 246 ++country_name "" ++country_post "" ++country_car "" ++country_isbn 952 ++lang_name "" ++lang_ab "" ++lang_term "" ++lang_lib "" + END LC_ADDRESS diff --git a/src/patches/glibc/glibc-rh661982.patch b/src/patches/glibc/glibc-rh661982.patch new file mode 100644 index 000000000..60b840bb8 --- /dev/null +++ b/src/patches/glibc/glibc-rh661982.patch @@ -0,0 +1,188 @@ +2010-12-10 Andreas Schwab + + * wcsmbs/wchar.h (wcpcpy, wcpncpy): Only declare under + _GNU_SOURCE. + +2010-12-10 Andreas Schwab + + * wcsmbs/wchar.h (wcpcpy, wcpncpy): Add __restrict. + * wcsmbs/bits/wchar2.h (__wmemmove_chk_warn, wmemmove, wmemset): + Remove __restrict. + (wcscpy, __wcpcpy_chk, __wcpcpy_alias, wcpcpy, wcsncpy, wcpncpy) + (wcscat, wcsncat, __wcrtomb_chk, wcrtomb): Add __restrict. + +2010-12-09 Jakub Jelinek + + * string/bits/string3.h (memmove, bcopy): Remove __restrict. + +Index: glibc-2.12-2-gc4ccff1/string/bits/string3.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/string/bits/string3.h ++++ glibc-2.12-2-gc4ccff1/string/bits/string3.h +@@ -53,8 +53,7 @@ __NTH (memcpy (void *__restrict __dest, + } + + __extern_always_inline void * +-__NTH (memmove (void *__restrict __dest, __const void *__restrict __src, +- size_t __len)) ++__NTH (memmove (void *__dest, __const void *__src, size_t __len)) + { + return __builtin___memmove_chk (__dest, __src, __len, __bos0 (__dest)); + } +@@ -88,8 +87,7 @@ __NTH (memset (void *__dest, int __ch, s + + #ifdef __USE_BSD + __extern_always_inline void +-__NTH (bcopy (__const void *__restrict __src, void *__restrict __dest, +- size_t __len)) ++__NTH (bcopy (__const void *__src, void *__dest, size_t __len)) + { + (void) __builtin___memmove_chk (__dest, __src, __len, __bos0 (__dest)); + } +Index: glibc-2.12-2-gc4ccff1/wcsmbs/bits/wchar2.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/wcsmbs/bits/wchar2.h ++++ glibc-2.12-2-gc4ccff1/wcsmbs/bits/wchar2.h +@@ -60,15 +60,13 @@ extern wchar_t *__REDIRECT_NTH (__wmemmo + __const wchar_t *__s2, + size_t __n), wmemmove); + extern wchar_t *__REDIRECT_NTH (__wmemmove_chk_warn, +- (wchar_t *__restrict __s1, +- __const wchar_t *__restrict __s2, size_t __n, +- size_t __ns1), __wmemmove_chk) ++ (wchar_t *__s1, __const wchar_t *__s2, ++ size_t __n, size_t __ns1), __wmemmove_chk) + __warnattr ("wmemmove called with length bigger than size of destination " + "buffer"); + + __extern_always_inline wchar_t * +-__NTH (wmemmove (wchar_t *__restrict __s1, __const wchar_t *__restrict __s2, +- size_t __n)) ++__NTH (wmemmove (wchar_t *__s1, __const wchar_t *__s2, size_t __n)) + { + if (__bos0 (__s1) != (size_t) -1) + { +@@ -129,7 +127,7 @@ extern wchar_t *__REDIRECT_NTH (__wmemse + "buffer"); + + __extern_always_inline wchar_t * +-__NTH (wmemset (wchar_t *__restrict __s, wchar_t __c, size_t __n)) ++__NTH (wmemset (wchar_t *__s, wchar_t __c, size_t __n)) + { + if (__bos0 (__s) != (size_t) -1) + { +@@ -152,7 +150,7 @@ extern wchar_t *__REDIRECT_NTH (__wcscpy + __const wchar_t *__restrict __src), wcscpy); + + __extern_always_inline wchar_t * +-__NTH (wcscpy (wchar_t *__dest, __const wchar_t *__src)) ++__NTH (wcscpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src)) + { + if (__bos (__dest) != (size_t) -1) + return __wcscpy_chk (__dest, __src, __bos (__dest) / sizeof (wchar_t)); +@@ -160,14 +158,15 @@ __NTH (wcscpy (wchar_t *__dest, __const + } + + +-extern wchar_t *__wcpcpy_chk (wchar_t *__dest, __const wchar_t *__src, ++extern wchar_t *__wcpcpy_chk (wchar_t *__restrict __dest, ++ __const wchar_t *__restrict __src, + size_t __destlen) __THROW; +-extern wchar_t *__REDIRECT_NTH (__wcpcpy_alias, (wchar_t *__dest, +- __const wchar_t *__src), +- wcpcpy); ++extern wchar_t *__REDIRECT_NTH (__wcpcpy_alias, ++ (wchar_t *__restrict __dest, ++ __const wchar_t *__restrict __src), wcpcpy); + + __extern_always_inline wchar_t * +-__NTH (wcpcpy (wchar_t *__dest, __const wchar_t *__src)) ++__NTH (wcpcpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src)) + { + if (__bos (__dest) != (size_t) -1) + return __wcpcpy_chk (__dest, __src, __bos (__dest) / sizeof (wchar_t)); +@@ -190,7 +189,8 @@ extern wchar_t *__REDIRECT_NTH (__wcsncp + "buffer"); + + __extern_always_inline wchar_t * +-__NTH (wcsncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n)) ++__NTH (wcsncpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src, ++ size_t __n)) + { + if (__bos (__dest) != (size_t) -1) + { +@@ -220,7 +220,8 @@ extern wchar_t *__REDIRECT_NTH (__wcpncp + "buffer"); + + __extern_always_inline wchar_t * +-__NTH (wcpncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n)) ++__NTH (wcpncpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src, ++ size_t __n)) + { + if (__bos (__dest) != (size_t) -1) + { +@@ -243,7 +244,7 @@ extern wchar_t *__REDIRECT_NTH (__wcscat + __const wchar_t *__restrict __src), wcscat); + + __extern_always_inline wchar_t * +-__NTH (wcscat (wchar_t *__dest, __const wchar_t *__src)) ++__NTH (wcscat (wchar_t *__restrict __dest, __const wchar_t *__restrict __src)) + { + if (__bos (__dest) != (size_t) -1) + return __wcscat_chk (__dest, __src, __bos (__dest) / sizeof (wchar_t)); +@@ -260,7 +261,8 @@ extern wchar_t *__REDIRECT_NTH (__wcsnca + size_t __n), wcsncat); + + __extern_always_inline wchar_t * +-__NTH (wcsncat (wchar_t *__dest, __const wchar_t *__src, size_t __n)) ++__NTH (wcsncat (wchar_t *__restrict __dest, __const wchar_t *__restrict __src, ++ size_t __n)) + { + if (__bos (__dest) != (size_t) -1) + return __wcsncat_chk (__dest, __src, __n, +@@ -428,14 +430,16 @@ fgetws_unlocked (wchar_t *__restrict __s + #endif + + +-extern size_t __wcrtomb_chk (char *__s, wchar_t __wchar, mbstate_t *__p, +- size_t __buflen) __THROW __wur; ++extern size_t __wcrtomb_chk (char *__restrict __s, wchar_t __wchar, ++ mbstate_t *__restrict __p, ++ size_t __buflen) __THROW __wur; + extern size_t __REDIRECT_NTH (__wcrtomb_alias, + (char *__restrict __s, wchar_t __wchar, + mbstate_t *__restrict __ps), wcrtomb) __wur; + + __extern_always_inline __wur size_t +-__NTH (wcrtomb (char *__s, wchar_t __wchar, mbstate_t *__ps)) ++__NTH (wcrtomb (char *__restrict __s, wchar_t __wchar, ++ mbstate_t *__restrict __ps)) + { + /* We would have to include to get a definition of MB_LEN_MAX. + But this would only disturb the namespace. So we define our own +Index: glibc-2.12-2-gc4ccff1/wcsmbs/wchar.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/wcsmbs/wchar.h ++++ glibc-2.12-2-gc4ccff1/wcsmbs/wchar.h +@@ -555,17 +555,17 @@ extern float wcstof_l (__const wchar_t * + extern long double wcstold_l (__const wchar_t *__restrict __nptr, + wchar_t **__restrict __endptr, + __locale_t __loc) __THROW; +-#endif /* GNU */ + + +-#ifdef __USE_XOPEN2K8 + /* Copy SRC to DEST, returning the address of the terminating L'\0' in + DEST. */ +-extern wchar_t *wcpcpy (wchar_t *__dest, __const wchar_t *__src) __THROW; ++extern wchar_t *wcpcpy (wchar_t *__restrict __dest, ++ __const wchar_t *__restrict __src) __THROW; + + /* Copy no more than N characters of SRC to DEST, returning the address of + the last character written into DEST. */ +-extern wchar_t *wcpncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n) ++extern wchar_t *wcpncpy (wchar_t *__restrict __dest, ++ __const wchar_t *__restrict __src, size_t __n) + __THROW; + #endif /* use GNU */ + diff --git a/src/patches/glibc/glibc-rh667974.patch b/src/patches/glibc/glibc-rh667974.patch new file mode 100644 index 000000000..48aacac8c --- /dev/null +++ b/src/patches/glibc/glibc-rh667974.patch @@ -0,0 +1,160 @@ +2011-03-14 Andreas Schwab + + * elf/dl-load.c (is_dst): Remove parameter secure, all callers + changed. Don't check for isolated use. + (_dl_dst_substitute): Ignore rpath elements containing + non-isolated use of $ORIGIN when privileged. + + * elf/dl-load.c (_dl_dst_substitute): When skipping the first + rpath element also skip the following colon. + (expand_dynamic_string_token): Add is_path parameter and pass + down to DL_DST_REQUIRED and _dl_dst_substitute. + (decompose_rpath): Call expand_dynamic_string_token with + non-zero is_path. Ignore empty rpaths. + (_dl_map_object_from_fd): Call expand_dynamic_string_token + with zero is_path. + +Index: glibc-2.12-2-gc4ccff1/elf/dl-load.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/dl-load.c ++++ glibc-2.12-2-gc4ccff1/elf/dl-load.c +@@ -169,8 +169,7 @@ local_strdup (const char *s) + + + static size_t +-is_dst (const char *start, const char *name, const char *str, +- int is_path, int secure) ++is_dst (const char *start, const char *name, const char *str, int is_path) + { + size_t len; + bool is_curly = false; +@@ -199,11 +198,6 @@ is_dst (const char *start, const char *n + && (!is_path || name[len] != ':')) + return 0; + +- if (__builtin_expect (secure, 0) +- && ((name[len] != '\0' && (!is_path || name[len] != ':')) +- || (name != start + 1 && (!is_path || name[-2] != ':')))) +- return 0; +- + return len; + } + +@@ -218,13 +212,10 @@ _dl_dst_count (const char *name, int is_ + { + size_t len; + +- /* $ORIGIN is not expanded for SUID/GUID programs (except if it +- is $ORIGIN alone) and it must always appear first in path. */ + ++name; +- if ((len = is_dst (start, name, "ORIGIN", is_path, +- INTUSE(__libc_enable_secure))) != 0 +- || (len = is_dst (start, name, "PLATFORM", is_path, 0)) != 0 +- || (len = is_dst (start, name, "LIB", is_path, 0)) != 0) ++ if ((len = is_dst (start, name, "ORIGIN", is_path)) != 0 ++ || (len = is_dst (start, name, "PLATFORM", is_path)) != 0 ++ || (len = is_dst (start, name, "LIB", is_path)) != 0) + ++cnt; + + name = strchr (name + len, '$'); +@@ -256,9 +247,16 @@ _dl_dst_substitute (struct link_map *l, + size_t len; + + ++name; +- if ((len = is_dst (start, name, "ORIGIN", is_path, +- INTUSE(__libc_enable_secure))) != 0) ++ if ((len = is_dst (start, name, "ORIGIN", is_path)) != 0) + { ++ /* $ORIGIN is not expanded for SUID/GUID programs ++ (except if it is $ORIGIN alone) and it must always ++ appear first in path. */ ++ if (__builtin_expect (INTUSE(__libc_enable_secure), 0) ++ && ((name[len] != '\0' && (!is_path || name[len] != ':')) ++ || (name != start + 1 && (!is_path || name[-2] != ':')))) ++ repl = (const char *) -1; ++ else + #ifndef SHARED + if (l == NULL) + repl = _dl_get_origin (); +@@ -266,9 +264,9 @@ _dl_dst_substitute (struct link_map *l, + #endif + repl = l->l_origin; + } +- else if ((len = is_dst (start, name, "PLATFORM", is_path, 0)) != 0) ++ else if ((len = is_dst (start, name, "PLATFORM", is_path)) != 0) + repl = GLRO(dl_platform); +- else if ((len = is_dst (start, name, "LIB", is_path, 0)) != 0) ++ else if ((len = is_dst (start, name, "LIB", is_path)) != 0) + repl = DL_DST_LIB; + + if (repl != NULL && repl != (const char *) -1) +@@ -284,6 +282,10 @@ _dl_dst_substitute (struct link_map *l, + name += len; + while (*name != '\0' && (!is_path || *name != ':')) + ++name; ++ /* Also skip following colon if this is the first rpath ++ element, but keep an empty element at the end. */ ++ if (wp == result && is_path && *name == ':' && name[1] != '\0') ++ ++name; + } + else + /* No DST we recognize. */ +@@ -310,7 +312,7 @@ _dl_dst_substitute (struct link_map *l, + belonging to the map is loaded. In this case the path element + containing $ORIGIN is left out. */ + static char * +-expand_dynamic_string_token (struct link_map *l, const char *s) ++expand_dynamic_string_token (struct link_map *l, const char *s, int is_path) + { + /* We make two runs over the string. First we determine how large the + resulting string is and then we copy it over. Since this is no +@@ -321,7 +323,7 @@ expand_dynamic_string_token (struct link + char *result; + + /* Determine the number of DST elements. */ +- cnt = DL_DST_COUNT (s, 1); ++ cnt = DL_DST_COUNT (s, is_path); + + /* If we do not have to replace anything simply copy the string. */ + if (__builtin_expect (cnt, 0) == 0) +@@ -335,7 +337,7 @@ expand_dynamic_string_token (struct link + if (result == NULL) + return NULL; + +- return _dl_dst_substitute (l, s, result, 1); ++ return _dl_dst_substitute (l, s, result, is_path); + } + + +@@ -551,13 +553,21 @@ decompose_rpath (struct r_search_path_st + + /* Make a writable copy. At the same time expand possible dynamic + string tokens. */ +- copy = expand_dynamic_string_token (l, rpath); ++ copy = expand_dynamic_string_token (l, rpath, 1); + if (copy == NULL) + { + errstring = N_("cannot create RUNPATH/RPATH copy"); + goto signal_error; + } + ++ /* Ignore empty rpaths. */ ++ if (*copy == 0) ++ { ++ free (copy); ++ sps->dirs = (char *) -1; ++ return false; ++ } ++ + /* Count the number of necessary elements in the result array. */ + nelems = 0; + for (cp = copy; *cp != '\0'; ++cp) +@@ -2176,7 +2186,7 @@ _dl_map_object (struct link_map *loader, + { + /* The path may contain dynamic string tokens. */ + realname = (loader +- ? expand_dynamic_string_token (loader, name) ++ ? expand_dynamic_string_token (loader, name, 0) + : local_strdup (name)); + if (realname == NULL) + fd = -1; diff --git a/src/patches/glibc/glibc-rh676076.patch b/src/patches/glibc/glibc-rh676076.patch new file mode 100644 index 000000000..c5aa2d430 --- /dev/null +++ b/src/patches/glibc/glibc-rh676076.patch @@ -0,0 +1,714 @@ +2011-03-02 Harsha Jagasia + Ulrich Drepper + + * sysdeps/x86_64/memset.S: After aligning destination, code + branches to different locations depending on the value of + misalignment, when multiarch is enabled. Fix this. + +2011-03-02 Harsha Jagasia + + * sysdeps/x86_64/cacheinfo.c (init_cacheinfo): + Set _x86_64_preferred_memory_instruction for AMD processsors. + * sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): + Set bit_Prefer_SSE_for_memop for AMD processors. + +2010-11-07 H.J. Lu + + * sysdeps/x86_64/memset.S: Check USE_MULTIARCH and USE_SSE2 for + IFUNC support. + * sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Add + memset-x86-64. + * sysdeps/x86_64/multiarch/bzero.S: New file. + * sysdeps/x86_64/multiarch/cacheinfo.c: New file. + * sysdeps/x86_64/multiarch/memset-x86-64.S: New file. + * sysdeps/x86_64/multiarch/memset.S: New file. + * sysdeps/x86_64/multiarch/memset_chk.S: New file. + * sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): + Set bit_Prefer_SSE_for_memop for Intel processors. + * sysdeps/x86_64/multiarch/init-arch.h (bit_Prefer_SSE_for_memop): + Define. + (index_Prefer_SSE_for_memop): Define. + (HAS_PREFER_SSE_FOR_MEMOP): Define. + +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/cacheinfo.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/cacheinfo.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/cacheinfo.c +@@ -613,6 +613,25 @@ init_cacheinfo (void) + long int core = handle_amd (_SC_LEVEL2_CACHE_SIZE); + shared = handle_amd (_SC_LEVEL3_CACHE_SIZE); + ++#ifndef DISABLE_PREFERRED_MEMORY_INSTRUCTION ++# ifdef USE_MULTIARCH ++ eax = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].eax; ++ ebx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ebx; ++ ecx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx; ++ edx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].edx; ++# else ++ __cpuid (1, eax, ebx, ecx, edx); ++# endif ++ ++ /* AMD prefers SSSE3 instructions for memory/string routines ++ if they are avaiable, otherwise it prefers integer ++ instructions. */ ++ if ((ecx & 0x200)) ++ __x86_64_preferred_memory_instruction = 3; ++ else ++ __x86_64_preferred_memory_instruction = 0; ++#endif ++ + /* Get maximum extended function. */ + __cpuid (0x80000000, max_cpuid_ex, ebx, ecx, edx); + +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/memset.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/memset.S ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/memset.S +@@ -24,7 +24,7 @@ + #define __STOS_UPPER_BOUNDARY $65536 + + .text +-#ifndef NOT_IN_libc ++#if !defined NOT_IN_libc && !defined USE_MULTIARCH + ENTRY(__bzero) + mov %rsi,%rdx /* Adjust parameter. */ + xorl %esi,%esi /* Fill with 0s. */ +@@ -34,10 +34,10 @@ weak_alias (__bzero, bzero) + #endif + + #if defined PIC && !defined NOT_IN_libc +-ENTRY (__memset_chk) ++ENTRY_CHK (__memset_chk) + cmpq %rdx, %rcx + jb HIDDEN_JUMPTARGET (__chk_fail) +-END (__memset_chk) ++END_CHK (__memset_chk) + #endif + ENTRY (memset) + L(memset_entry): +@@ -591,157 +591,15 @@ L(A6Q1): mov %dx,-0xe(%rdi) + L(A7Q0): mov %dl,-0x7(%rdi) + L(A6Q0): mov %dx,-0x6(%rdi) + mov %edx,-0x4(%rdi) +- jmp L(aligned_now) +- +- .balign 16 +-L(aligned_now): +- +- cmpl $0x1,__x86_64_preferred_memory_instruction(%rip) +- jg L(SSE_pre) +- +-L(8byte_move_try): +- cmpq __STOS_LOWER_BOUNDARY,%r8 +- jae L(8byte_stos_try) +- +- .balign 16 +-L(8byte_move): +- movq %r8,%rcx +- shrq $7,%rcx +- jz L(8byte_move_skip) +- +- .p2align 4 +- +-L(8byte_move_loop): +- decq %rcx +- +- movq %rdx, (%rdi) +- movq %rdx, 8 (%rdi) +- movq %rdx, 16 (%rdi) +- movq %rdx, 24 (%rdi) +- movq %rdx, 32 (%rdi) +- movq %rdx, 40 (%rdi) +- movq %rdx, 48 (%rdi) +- movq %rdx, 56 (%rdi) +- movq %rdx, 64 (%rdi) +- movq %rdx, 72 (%rdi) +- movq %rdx, 80 (%rdi) +- movq %rdx, 88 (%rdi) +- movq %rdx, 96 (%rdi) +- movq %rdx, 104 (%rdi) +- movq %rdx, 112 (%rdi) +- movq %rdx, 120 (%rdi) +- +- leaq 128 (%rdi),%rdi +- +- jnz L(8byte_move_loop) +- +-L(8byte_move_skip): +- andl $127,%r8d +- lea (%rdi,%r8,1),%rdi +- +-#ifndef PIC +- lea L(setPxQx)(%rip),%r11 +- jmpq *(%r11,%r8,8) # old scheme remained for nonPIC +-#else +- lea L(Got0)(%rip),%r11 +- lea L(setPxQx)(%rip),%rcx +- movswq (%rcx,%r8,2),%rcx +- lea (%rcx,%r11,1),%r11 +- jmpq *%r11 +-#endif +- +- .balign 16 +-L(8byte_stos_try): +- mov __x86_64_shared_cache_size(%rip),%r9d // ck largest cache size +- cmpq %r8,%r9 // calculate the lesser of remaining +- cmovaq %r8,%r9 // bytes and largest cache size +- jbe L(8byte_stos) +- +-L(8byte_move_reuse_try): +- cmp __STOS_UPPER_BOUNDARY,%r8 +- jae L(8byte_move) +- +- .balign 16 +-L(8byte_stos): +- movq %r9,%rcx +- andq $-8,%r9 +- +- shrq $3,%rcx +- jz L(8byte_stos_skip) +- +- xchgq %rax,%rdx +- +- rep +- stosq +- +- xchgq %rax,%rdx +- +-L(8byte_stos_skip): +- subq %r9,%r8 +- ja L(8byte_nt_move) +- +- andl $7,%r8d +- lea (%rdi,%r8,1),%rdi +-#ifndef PIC +- lea L(setPxQx)(%rip),%r11 +- jmpq *(%r11,%r8,8) # old scheme remained for nonPIC +-#else +- lea L(Got0)(%rip),%r11 +- lea L(setPxQx)(%rip),%rcx +- movswq (%rcx,%r8,2),%rcx +- lea (%rcx,%r11,1),%r11 +- jmpq *%r11 +-#endif + +- .balign 16 +-L(8byte_nt_move): +- movq %r8,%rcx +- shrq $7,%rcx +- jz L(8byte_nt_move_skip) +- +- .balign 16 +-L(8byte_nt_move_loop): +- decq %rcx +- +- movntiq %rdx, (%rdi) +- movntiq %rdx, 8 (%rdi) +- movntiq %rdx, 16 (%rdi) +- movntiq %rdx, 24 (%rdi) +- movntiq %rdx, 32 (%rdi) +- movntiq %rdx, 40 (%rdi) +- movntiq %rdx, 48 (%rdi) +- movntiq %rdx, 56 (%rdi) +- movntiq %rdx, 64 (%rdi) +- movntiq %rdx, 72 (%rdi) +- movntiq %rdx, 80 (%rdi) +- movntiq %rdx, 88 (%rdi) +- movntiq %rdx, 96 (%rdi) +- movntiq %rdx, 104 (%rdi) +- movntiq %rdx, 112 (%rdi) +- movntiq %rdx, 120 (%rdi) +- +- leaq 128 (%rdi),%rdi +- +- jnz L(8byte_nt_move_loop) +- +- sfence +- +-L(8byte_nt_move_skip): +- andl $127,%r8d ++#ifndef USE_MULTIARCH ++ jmp L(aligned_now) + +- lea (%rdi,%r8,1),%rdi +-#ifndef PIC +- lea L(setPxQx)(%rip),%r11 +- jmpq *(%r11,%r8,8) # old scheme remained for nonPIC ++L(SSE_pre): + #else +- lea L(Got0)(%rip),%r11 +- lea L(setPxQx)(%rip),%rcx +- movswq (%rcx,%r8,2),%rcx +- lea (%rcx,%r11,1),%r11 +- jmpq *%r11 ++L(aligned_now): + #endif +- +-L(SSE_pre): ++#if !defined USE_MULTIARCH || defined USE_SSE2 + # fill RegXMM0 with the pattern + movd %rdx,%xmm0 + punpcklqdq %xmm0,%xmm0 +@@ -1342,11 +1200,162 @@ L(SSExDx): + .short L(SSE15QB)-L(SSE0Q0) + #endif + .popsection ++#endif /* !defined USE_MULTIARCH || defined USE_SSE2 */ ++ ++ .balign 16 ++#ifndef USE_MULTIARCH ++L(aligned_now): ++ ++ cmpl $0x1,__x86_64_preferred_memory_instruction(%rip) ++ jg L(SSE_pre) ++#endif /* USE_MULTIARCH */ ++ ++L(8byte_move_try): ++ cmpq __STOS_LOWER_BOUNDARY,%r8 ++ jae L(8byte_stos_try) ++ ++ .balign 16 ++L(8byte_move): ++ movq %r8,%rcx ++ shrq $7,%rcx ++ jz L(8byte_move_skip) ++ ++ .p2align 4 ++ ++L(8byte_move_loop): ++ decq %rcx ++ ++ movq %rdx, (%rdi) ++ movq %rdx, 8 (%rdi) ++ movq %rdx, 16 (%rdi) ++ movq %rdx, 24 (%rdi) ++ movq %rdx, 32 (%rdi) ++ movq %rdx, 40 (%rdi) ++ movq %rdx, 48 (%rdi) ++ movq %rdx, 56 (%rdi) ++ movq %rdx, 64 (%rdi) ++ movq %rdx, 72 (%rdi) ++ movq %rdx, 80 (%rdi) ++ movq %rdx, 88 (%rdi) ++ movq %rdx, 96 (%rdi) ++ movq %rdx, 104 (%rdi) ++ movq %rdx, 112 (%rdi) ++ movq %rdx, 120 (%rdi) ++ ++ leaq 128 (%rdi),%rdi ++ ++ jnz L(8byte_move_loop) ++ ++L(8byte_move_skip): ++ andl $127,%r8d ++ lea (%rdi,%r8,1),%rdi ++ ++#ifndef PIC ++ lea L(setPxQx)(%rip),%r11 ++ jmpq *(%r11,%r8,8) # old scheme remained for nonPIC ++#else ++ lea L(Got0)(%rip),%r11 ++ lea L(setPxQx)(%rip),%rcx ++ movswq (%rcx,%r8,2),%rcx ++ lea (%rcx,%r11,1),%r11 ++ jmpq *%r11 ++#endif ++ ++ .balign 16 ++L(8byte_stos_try): ++ mov __x86_64_shared_cache_size(%rip),%r9d // ck largest cache size ++ cmpq %r8,%r9 // calculate the lesser of remaining ++ cmovaq %r8,%r9 // bytes and largest cache size ++ jbe L(8byte_stos) ++ ++L(8byte_move_reuse_try): ++ cmp __STOS_UPPER_BOUNDARY,%r8 ++ jae L(8byte_move) ++ ++ .balign 16 ++L(8byte_stos): ++ movq %r9,%rcx ++ andq $-8,%r9 ++ ++ shrq $3,%rcx ++ jz L(8byte_stos_skip) ++ ++ xchgq %rax,%rdx ++ ++ rep ++ stosq ++ ++ xchgq %rax,%rdx ++ ++L(8byte_stos_skip): ++ subq %r9,%r8 ++ ja L(8byte_nt_move) ++ ++ andl $7,%r8d ++ lea (%rdi,%r8,1),%rdi ++#ifndef PIC ++ lea L(setPxQx)(%rip),%r11 ++ jmpq *(%r11,%r8,8) # old scheme remained for nonPIC ++#else ++ lea L(Got0)(%rip),%r11 ++ lea L(setPxQx)(%rip),%rcx ++ movswq (%rcx,%r8,2),%rcx ++ lea (%rcx,%r11,1),%r11 ++ jmpq *%r11 ++#endif ++ ++ .balign 16 ++L(8byte_nt_move): ++ movq %r8,%rcx ++ shrq $7,%rcx ++ jz L(8byte_nt_move_skip) ++ ++ .balign 16 ++L(8byte_nt_move_loop): ++ decq %rcx ++ ++ movntiq %rdx, (%rdi) ++ movntiq %rdx, 8 (%rdi) ++ movntiq %rdx, 16 (%rdi) ++ movntiq %rdx, 24 (%rdi) ++ movntiq %rdx, 32 (%rdi) ++ movntiq %rdx, 40 (%rdi) ++ movntiq %rdx, 48 (%rdi) ++ movntiq %rdx, 56 (%rdi) ++ movntiq %rdx, 64 (%rdi) ++ movntiq %rdx, 72 (%rdi) ++ movntiq %rdx, 80 (%rdi) ++ movntiq %rdx, 88 (%rdi) ++ movntiq %rdx, 96 (%rdi) ++ movntiq %rdx, 104 (%rdi) ++ movntiq %rdx, 112 (%rdi) ++ movntiq %rdx, 120 (%rdi) ++ ++ leaq 128 (%rdi),%rdi ++ ++ jnz L(8byte_nt_move_loop) ++ ++ sfence ++ ++L(8byte_nt_move_skip): ++ andl $127,%r8d ++ ++ lea (%rdi,%r8,1),%rdi ++#ifndef PIC ++ lea L(setPxQx)(%rip),%r11 ++ jmpq *(%r11,%r8,8) # old scheme remained for nonPIC ++#else ++ lea L(Got0)(%rip),%r11 ++ lea L(setPxQx)(%rip),%rcx ++ movswq (%rcx,%r8,2),%rcx ++ lea (%rcx,%r11,1),%r11 ++ jmpq *%r11 ++#endif + + END (memset) + libc_hidden_builtin_def (memset) + +-#if defined PIC && !defined NOT_IN_libc ++#if defined PIC && !defined NOT_IN_libc && !defined USE_MULTIARCH + strong_alias (__memset_chk, __memset_zero_constant_len_parameter) + .section .gnu.warning.__memset_zero_constant_len_parameter + .string "memset used with constant zero length parameter; this could be due to transposed parameters" +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/Makefile ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/Makefile +@@ -7,7 +7,8 @@ ifeq ($(subdir),string) + sysdep_routines += stpncpy-c strncpy-c strcmp-ssse3 strncmp-ssse3 \ + strend-sse4 memcmp-sse4 \ + strcasestr-nonascii strcasecmp_l-ssse3 \ +- strncase_l-ssse3 ++ strncase_l-ssse3 \ ++ memset-x86-64 + ifeq (yes,$(config-cflags-sse4)) + sysdep_routines += strcspn-c strpbrk-c strspn-c strstr-c strcasestr-c + CFLAGS-strcspn-c.c += -msse4 +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/bzero.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/bzero.S +@@ -0,0 +1,56 @@ ++/* Multiple versions of bzero ++ Copyright (C) 2010 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 ++ ++ .text ++ENTRY(__bzero) ++ .type __bzero, @gnu_indirect_function ++ cmpl $0, __cpu_features+KIND_OFFSET(%rip) ++ jne 1f ++ call __init_cpu_features ++1: leaq __bzero_x86_64(%rip), %rax ++ testl $bit_Prefer_SSE_for_memop, __cpu_features+FEATURE_OFFSET+index_Prefer_SSE_for_memop(%rip) ++ jz 2f ++ leaq __bzero_sse2(%rip), %rax ++2: ret ++END(__bzero) ++ ++ .type __bzero_sse2, @function ++__bzero_sse2: ++ cfi_startproc ++ CALL_MCOUNT ++ mov %rsi,%rdx /* Adjust parameter. */ ++ xorl %esi,%esi /* Fill with 0s. */ ++ jmp __memset_sse2 ++ cfi_endproc ++ .size __bzero_sse2, .-__bzero_sse2 ++ ++ .type __bzero_x86_64, @function ++__bzero_x86_64: ++ cfi_startproc ++ CALL_MCOUNT ++ mov %rsi,%rdx /* Adjust parameter. */ ++ xorl %esi,%esi /* Fill with 0s. */ ++ jmp __memset_x86_64 ++ cfi_endproc ++ .size __bzero_x86_64, .-__bzero_x86_64 ++ ++weak_alias (__bzero, bzero) +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/cacheinfo.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/cacheinfo.c +@@ -0,0 +1,2 @@ ++#define DISABLE_PREFERRED_MEMORY_INSTRUCTION ++#include "../cacheinfo.c" +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/init-arch.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.c +@@ -59,6 +59,11 @@ __init_cpu_features (void) + + get_common_indeces (&family, &model); + ++ /* Intel processors prefer SSE instruction for memory/string ++ routines if they are avaiable. */ ++ __cpu_features.feature[index_Prefer_SSE_for_memop] ++ |= bit_Prefer_SSE_for_memop; ++ + unsigned int eax = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].eax; + unsigned int extended_family = (eax >> 20) & 0xff; + unsigned int extended_model = (eax >> 12) & 0xf0; +@@ -92,6 +97,14 @@ __init_cpu_features (void) + kind = arch_kind_amd; + + get_common_indeces (&family, &model); ++ ++ unsigned int ecx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx; ++ ++ /* AMD processors prefer SSE instructions for memory/string routines ++ if they are available, otherwise they prefer integer instructions. */ ++ if ((ecx & 0x200)) ++ __cpu_features.feature[index_Prefer_SSE_for_memop] ++ |= bit_Prefer_SSE_for_memop; + } + else + kind = arch_kind_other; +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/init-arch.h ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.h +@@ -16,7 +16,8 @@ + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +-#define bit_Fast_Rep_String (1 << 0) ++#define bit_Fast_Rep_String (1 << 0) ++#define bit_Prefer_SSE_for_memop (1 << 3) + + #ifdef __ASSEMBLER__ + +@@ -33,6 +34,7 @@ + # define index_SSE4_2 COMMON_CPUID_INDEX_1*CPUID_SIZE+CPUID_ECX_OFFSET + + #define index_Fast_Rep_String FEATURE_INDEX_1*FEATURE_SIZE ++# define index_Prefer_SSE_for_memop FEATURE_INDEX_1*FEATURE_SIZE + + #else /* __ASSEMBLER__ */ + +@@ -103,5 +105,12 @@ extern const struct cpu_features *__get_ + # define HAS_FMA HAS_CPU_FEATURE (COMMON_CPUID_INDEX_1, ecx, 12) + + # define index_Fast_Rep_String FEATURE_INDEX_1 ++# define index_Prefer_SSE_for_memop FEATURE_INDEX_1 ++ ++#define HAS_ARCH_FEATURE(idx, bit) \ ++ ((__get_cpu_features ()->feature[idx] & (bit)) != 0) ++ ++#define HAS_PREFER_SSE_FOR_MEMOP \ ++ HAS_ARCH_FEATURE (index_Prefer_SSE_for_memop, bit_Prefer_SSE_for_memop) + + #endif /* __ASSEMBLER__ */ +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/memset-x86-64.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/memset-x86-64.S +@@ -0,0 +1,18 @@ ++#include ++ ++#ifndef NOT_IN_libc ++# undef ENTRY_CHK ++# define ENTRY_CHK(name) \ ++ .type __memset_chk_x86_64, @function; \ ++ .globl __memset_chk_x86_64; \ ++ .p2align 4; \ ++ __memset_chk_x86_64: cfi_startproc; \ ++ CALL_MCOUNT ++# undef END_CHK ++# define END_CHK(name) \ ++ cfi_endproc; .size __memset_chk_x86_64, .-__memset_chk_x86_64 ++ ++# define libc_hidden_builtin_def(name) ++# define memset __memset_x86_64 ++# include "../memset.S" ++#endif +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/memset.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/memset.S +@@ -0,0 +1,74 @@ ++/* Multiple versions of memset ++ Copyright (C) 2010 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 ++ ++/* Define multiple versions only for the definition in lib. */ ++#ifndef NOT_IN_libc ++ENTRY(memset) ++ .type memset, @gnu_indirect_function ++ cmpl $0, __cpu_features+KIND_OFFSET(%rip) ++ jne 1f ++ call __init_cpu_features ++1: leaq __memset_x86_64(%rip), %rax ++ testl $bit_Prefer_SSE_for_memop, __cpu_features+FEATURE_OFFSET+index_Prefer_SSE_for_memop(%rip) ++ jz 2f ++ leaq __memset_sse2(%rip), %rax ++2: ret ++END(memset) ++ ++# define USE_SSE2 1 ++ ++# undef ENTRY ++# define ENTRY(name) \ ++ .type __memset_sse2, @function; \ ++ .globl __memset_sse2; \ ++ .p2align 4; \ ++ __memset_sse2: cfi_startproc; \ ++ CALL_MCOUNT ++# undef END ++# define END(name) \ ++ cfi_endproc; .size __memset_sse2, .-__memset_sse2 ++ ++# undef ENTRY_CHK ++# define ENTRY_CHK(name) \ ++ .type __memset_chk_sse2, @function; \ ++ .globl __memset_chk_sse2; \ ++ .p2align 4; \ ++ __memset_chk_sse2: cfi_startproc; \ ++ CALL_MCOUNT ++# undef END_CHK ++# define END_CHK(name) \ ++ cfi_endproc; .size __memset_chk_sse2, .-__memset_chk_sse2 ++ ++# ifdef SHARED ++# undef libc_hidden_builtin_def ++/* It doesn't make sense to send libc-internal memset calls through a PLT. ++ The speedup we get from using GPR instruction is likely eaten away ++ by the indirect call in the PLT. */ ++# define libc_hidden_builtin_def(name) \ ++ .globl __GI_memset; __GI_memset = __memset_sse2 ++# endif ++ ++# undef strong_alias ++# define strong_alias(original, alias) ++#endif ++ ++#include "../memset.S" +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/memset_chk.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/memset_chk.S +@@ -0,0 +1,44 @@ ++/* Multiple versions of __memset_chk ++ Copyright (C) 2010 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 ++ ++/* Define multiple versions only for the definition in lib. */ ++#ifndef NOT_IN_libc ++# ifdef SHARED ++ENTRY(__memset_chk) ++ .type __memset_chk, @gnu_indirect_function ++ cmpl $0, __cpu_features+KIND_OFFSET(%rip) ++ jne 1f ++ call __init_cpu_features ++1: leaq __memset_chk_x86_64(%rip), %rax ++ testl $bit_Prefer_SSE_for_memop, __cpu_features+FEATURE_OFFSET+index_Prefer_SSE_for_memop(%rip) ++ jz 2f ++ leaq __memset_chk_sse2(%rip), %rax ++2: ret ++END(__memset_chk) ++ ++strong_alias (__memset_chk, __memset_zero_constant_len_parameter) ++ .section .gnu.warning.__memset_zero_constant_len_parameter ++ .string "memset used with constant zero length parameter; this could be due to transposed parameters" ++# else ++# include "../memset_chk.S" ++# endif ++#endif diff --git a/src/patches/glibc/glibc-rh676591.patch b/src/patches/glibc/glibc-rh676591.patch new file mode 100644 index 000000000..fd6df1e42 --- /dev/null +++ b/src/patches/glibc/glibc-rh676591.patch @@ -0,0 +1,352 @@ +2011-05-15 Ulrich Drepper + + [BZ #11901] + * include/stdlib.h: Move include protection to the right place. + Define abort_msg_s. Declare __abort_msg with it. + * stdlib/abort.c (__abort_msg): Adjust type. + * assert/assert.c (__assert_fail_base): New function. Majority + of code from __assert_fail. Allocate memory for __abort_msg with + mmap. + (__assert_fail): Now call __assert_fail_base. + * assert/assert-perr.c: Remove bulk of implementation. Use + __assert_fail_base. + * include/assert.hL Declare __assert_fail_base. + * sysdeps/posix/libc_fatal.c: Allocate memory for __abort_msg with + mmap. + * sysdeps/unix/sysv/linux/libc_fatal.c: Likewise. + +Index: glibc-2.12-2-gc4ccff1/assert/assert-perr.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/assert/assert-perr.c ++++ glibc-2.12-2-gc4ccff1/assert/assert-perr.c +@@ -17,66 +17,23 @@ + 02111-1307 USA. */ + + #include +-#include + #include +-#include +-#include + #include +-#include +-#include + + +-extern const char *__progname; +- +-#ifdef USE_IN_LIBIO +-# include +-# include +-# define fflush(s) INTUSE(_IO_fflush) (s) +-#endif +- + /* This function, when passed an error number, a filename, and a line + number, prints a message on the standard error stream of the form: +- a.c:10: foobar: Unexpected error: Computer bought the farm ++ a.c:10: foobar: Unexpected error: Computer bought the farm + It then aborts program execution via a call to `abort'. */ +- +-#ifdef FATAL_PREPARE_INCLUDE +-# include FATAL_PREPARE_INCLUDE +-#endif +- + void + __assert_perror_fail (int errnum, + const char *file, unsigned int line, + const char *function) + { + char errbuf[1024]; +- char *buf; +- +-#ifdef FATAL_PREPARE +- FATAL_PREPARE; +-#endif +- +- if (__asprintf (&buf, _("%s%s%s:%u: %s%sUnexpected error: %s.\n"), +- __progname, __progname[0] ? ": " : "", +- file, line, +- function ? function : "", function ? ": " : "", +- __strerror_r (errnum, errbuf, sizeof errbuf)) >= 0) +- { +- /* Print the message. */ +- (void) __fxprintf (NULL, "%s", buf); +- (void) fflush (stderr); +- +- /* We have to free the old buffer since the application might +- catch the SIGABRT signal. */ +- char *old = atomic_exchange_acq (&__abort_msg, buf); +- free (old); +- } +- else +- { +- /* At least print a minimal message. */ +- static const char errstr[] = "Unexpected error.\n"; +- __libc_write (STDERR_FILENO, errstr, sizeof (errstr) - 1); +- } + +- abort (); ++ char *e = __strerror_r (errnum, errbuf, sizeof errbuf); ++ __assert_fail_base (_("%s%s%s:%u: %s%sUnexpected error: %s.\n"), ++ e, file, line, function); + } + libc_hidden_def (__assert_perror_fail) +Index: glibc-2.12-2-gc4ccff1/assert/assert.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/assert/assert.c ++++ glibc-2.12-2-gc4ccff1/assert/assert.c +@@ -19,11 +19,13 @@ + + #include + #include ++#include + #include + #include + #include + #include + #include ++#include + + + extern const char *__progname; +@@ -45,31 +47,44 @@ extern const char *__progname; + #endif + + +-#undef __assert_fail + void +-__assert_fail (const char *assertion, const char *file, unsigned int line, +- const char *function) ++__assert_fail_base (const char *fmt, const char *assertion, const char *file, ++ unsigned int line, const char *function) + { +- char *buf; ++ char *str; + + #ifdef FATAL_PREPARE + FATAL_PREPARE; + #endif + +- if (__asprintf (&buf, _("%s%s%s:%u: %s%sAssertion `%s' failed.\n"), ++ int total; ++ if (__asprintf (&str, fmt, + __progname, __progname[0] ? ": " : "", + file, line, + function ? function : "", function ? ": " : "", +- assertion) >= 0) ++ assertion, &total) >= 0) + { + /* Print the message. */ +- (void) __fxprintf (NULL, "%s", buf); ++ (void) __fxprintf (NULL, "%s", str); + (void) fflush (stderr); + +- /* We have to free the old buffer since the application might +- catch the SIGABRT signal. */ +- char *old = atomic_exchange_acq (&__abort_msg, buf); +- free (old); ++ total = (total + 1 + GLRO(dl_pagesize) - 1) & ~(GLRO(dl_pagesize) - 1); ++ struct abort_msg_s *buf = __mmap (NULL, total, PROT_READ | PROT_WRITE, ++ MAP_ANON | MAP_PRIVATE, -1, 0); ++ if (__builtin_expect (buf != MAP_FAILED, 1)) ++ { ++ buf->size = total; ++ strcpy (buf->msg, str); ++ ++ /* We have to free the old buffer since the application might ++ catch the SIGABRT signal. */ ++ struct abort_msg_s *old = atomic_exchange_acq (&__abort_msg, buf); ++ ++ if (old != NULL) ++ __munmap (old, old->size); ++ } ++ ++ free (str); + } + else + { +@@ -80,4 +95,14 @@ __assert_fail (const char *assertion, co + + abort (); + } ++ ++ ++#undef __assert_fail ++void ++__assert_fail (const char *assertion, const char *file, unsigned int line, ++ const char *function) ++{ ++ __assert_fail_base (_("%s%s%s:%u: %s%sAssertion `%s' failed.\n%n"), ++ assertion, file, line, function); ++} + hidden_def(__assert_fail) +Index: glibc-2.12-2-gc4ccff1/include/assert.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/include/assert.h ++++ glibc-2.12-2-gc4ccff1/include/assert.h +@@ -13,6 +13,12 @@ extern void __assert_perror_fail (int __ + __const char *__function) + __THROW __attribute__ ((__noreturn__)); + ++/* The real implementation of the two functions above. */ ++extern void __assert_fail_base (const char *fmt, const char *assertion, ++ const char *file, unsigned int line, ++ const char *function) ++ __THROW __attribute__ ((__noreturn__)); ++ + #if !defined NOT_IN_libc || defined IS_IN_rtld + hidden_proto (__assert_fail) + hidden_proto (__assert_perror_fail) +Index: glibc-2.12-2-gc4ccff1/include/stdlib.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/include/stdlib.h ++++ glibc-2.12-2-gc4ccff1/include/stdlib.h +@@ -223,16 +223,21 @@ extern int __qfcvt_r (long double __valu + # define __cxa_atexit(func, arg, d) INTUSE(__cxa_atexit) (func, arg, d) + # endif + +-#endif +- + extern void *__default_morecore (ptrdiff_t) __THROW; + libc_hidden_proto (__default_morecore) + +-extern char *__abort_msg; ++struct abort_msg_s ++{ ++ unsigned int size; ++ char msg[0]; ++}; ++extern struct abort_msg_s *__abort_msg; + libc_hidden_proto (__abort_msg) + + __END_DECLS + ++#endif ++ + #undef __Need_M_And_C + + #endif /* include/stdlib.h */ +Index: glibc-2.12-2-gc4ccff1/stdlib/abort.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/stdlib/abort.c ++++ glibc-2.12-2-gc4ccff1/stdlib/abort.c +@@ -37,7 +37,7 @@ + #endif + + /* Exported variable to locate abort message in core files etc. */ +-char *__abort_msg __attribute__ ((nocommon)); ++struct abort_msg_s *__abort_msg __attribute__ ((nocommon)); + libc_hidden_def (__abort_msg) + + /* We must avoid to run in circles. Therefore we remember how far we +Index: glibc-2.12-2-gc4ccff1/sysdeps/posix/libc_fatal.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/posix/libc_fatal.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/posix/libc_fatal.c +@@ -20,6 +20,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -125,18 +126,28 @@ __libc_message (int do_abort, const char + if (TEMP_FAILURE_RETRY (__writev (fd, iov, nlist)) == total) + written = true; + +- char *buf = do_abort ? malloc (total + 1) : NULL; +- if (buf != NULL) ++ if (do_abort) + { +- char *wp = buf; +- for (int cnt = 0; cnt < nlist; ++cnt) +- wp = mempcpy (wp, iov[cnt].iov_base, iov[cnt].iov_len); +- *wp = '\0'; +- +- /* We have to free the old buffer since the application might +- catch the SIGABRT signal. */ +- char *old = atomic_exchange_acq (&__abort_msg, buf); +- free (old); ++ total = ((total + 1 + GLRO(dl_pagesize) - 1) ++ & ~(GLRO(dl_pagesize) - 1)); ++ struct abort_msg_s *buf = __mmap (NULL, total, ++ PROT_READ | PROT_WRITE, ++ MAP_ANON | MAP_PRIVATE, -1, 0); ++ if (buf != MAP_FAILED) ++ { ++ buf->size = total; ++ char *wp = buf->msg; ++ for (int cnt = 0; cnt < nlist; ++cnt) ++ wp = mempcpy (wp, iov[cnt].iov_base, iov[cnt].iov_len); ++ *wp = '\0'; ++ ++ /* We have to free the old buffer since the application might ++ catch the SIGABRT signal. */ ++ struct abort_msg_s *old = atomic_exchange_acq (&__abort_msg, ++ buf); ++ if (old != NULL) ++ __munmap (old, old->size); ++ } + } + } + +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/libc_fatal.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/libc_fatal.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/libc_fatal.c +@@ -20,6 +20,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -28,6 +29,7 @@ + #include + #include + #include ++#include + #include + #include + +@@ -134,18 +136,28 @@ __libc_message (int do_abort, const char + if (cnt == total) + written = true; + +- char *buf = do_abort ? malloc (total + 1) : NULL; +- if (buf != NULL) ++ if (do_abort) + { +- char *wp = buf; +- for (int cnt = 0; cnt < nlist; ++cnt) +- wp = mempcpy (wp, iov[cnt].iov_base, iov[cnt].iov_len); +- *wp = '\0'; +- +- /* We have to free the old buffer since the application might +- catch the SIGABRT signal. */ +- char *old = atomic_exchange_acq (&__abort_msg, buf); +- free (old); ++ total = ((total + 1 + GLRO(dl_pagesize) - 1) ++ & ~(GLRO(dl_pagesize) - 1)); ++ struct abort_msg_s *buf = __mmap (NULL, total, ++ PROT_READ | PROT_WRITE, ++ MAP_ANON | MAP_PRIVATE, -1, 0); ++ if (__builtin_expect (buf != MAP_FAILED, 1)) ++ { ++ buf->size = total; ++ char *wp = buf->msg; ++ for (int cnt = 0; cnt < nlist; ++cnt) ++ wp = mempcpy (wp, iov[cnt].iov_base, iov[cnt].iov_len); ++ *wp = '\0'; ++ ++ /* We have to free the old buffer since the application might ++ catch the SIGABRT signal. */ ++ struct abort_msg_s *old = atomic_exchange_acq (&__abort_msg, ++ buf); ++ if (old != NULL) ++ __munmap (old, old->size); ++ } + } + } + diff --git a/src/patches/glibc/glibc-rh681054.patch b/src/patches/glibc/glibc-rh681054.patch new file mode 100644 index 000000000..27b736183 --- /dev/null +++ b/src/patches/glibc/glibc-rh681054.patch @@ -0,0 +1,514 @@ +2011-03-18 Ulrich Drepper + + * posix/fnmatch.c (fnmatch): Check size of pattern in wide + character representation. + Partly based on a patch by Tomas Hoger . + +2010-11-11 Andreas Schwab + + * posix/fnmatch_loop.c (NEW_PATTERN): Fix use of alloca. + * posix/Makefile (tests): Add $(objpfx)tst-fnmatch-mem. + (tst-fnmatch-ENV): Set MALLOC_TRACE. + ($(objpfx)tst-fnmatch-mem): New rule. + (generated): Add tst-fnmatch-mem and tst-fnmatch.mtrace. + * posix/tst-fnmatch.c (main): Call mtrace. + +2010-08-09 Ulrich Drepper + + [BZ #11883] + * posix/fnmatch.c: Keep track of alloca use and fall back on malloc. + * posix/fnmatch_loop.c: Likewise. + +Index: glibc-2.12-2-gc4ccff1/posix/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/posix/Makefile ++++ glibc-2.12-2-gc4ccff1/posix/Makefile +@@ -114,7 +114,8 @@ generated := $(addprefix wordexp-test-re + tst-rxspencer-mem tst-rxspencer.mtrace tst-getconf.out \ + tst-pcre-mem tst-pcre.mtrace tst-boost-mem tst-boost.mtrace \ + bug-ga2.mtrace bug-ga2-mem bug-glob2.mtrace bug-glob2-mem \ +- tst-vfork3-mem tst-vfork3.mtrace getconf.speclist ++ tst-vfork3-mem tst-vfork3.mtrace getconf.speclist \ ++ tst-fnmatch-mem tst-fnmatch.mtrace + + include ../Rules + +@@ -226,7 +227,7 @@ ifeq (no,$(cross-compiling)) + tests: $(objpfx)bug-regex2-mem $(objpfx)bug-regex14-mem \ + $(objpfx)bug-regex21-mem $(objpfx)tst-rxspencer-mem \ + $(objpfx)tst-pcre-mem $(objpfx)tst-boost-mem $(objpfx)tst-getconf.out \ +- $(objpfx)bug-glob2-mem $(objpfx)tst-vfork3-mem ++ $(objpfx)bug-glob2-mem $(objpfx)tst-vfork3-mem $(objpfx)tst-fnmatch-mem + xtests: $(objpfx)bug-ga2-mem + endif + +@@ -238,6 +239,11 @@ annexc-CFLAGS = -O + $(objpfx)annexc: annexc.c + $(native-compile) + ++tst-fnmatch-ENV += MALLOC_TRACE=$(objpfx)tst-fnmatch.mtrace ++ ++$(objpfx)tst-fnmatch-mem: $(objpfx)tst-fnmatch.out ++ $(common-objpfx)malloc/mtrace $(objpfx)tst-fnmatch.mtrace > $@ ++ + bug-regex2-ENV = MALLOC_TRACE=$(objpfx)bug-regex2.mtrace + + $(objpfx)bug-regex2-mem: $(objpfx)bug-regex2.out +Index: glibc-2.12-2-gc4ccff1/posix/fnmatch.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/posix/fnmatch.c ++++ glibc-2.12-2-gc4ccff1/posix/fnmatch.c +@@ -41,6 +41,12 @@ + # include + #endif + ++#ifdef _LIBC ++# include ++#else ++# define alloca_account(size., var) alloca (size) ++#endif ++ + /* For platform which support the ISO C amendement 1 functionality we + support user defined character classes. */ + #if defined _LIBC || (defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H) +@@ -330,8 +336,11 @@ fnmatch (pattern, string, flags) + mbstate_t ps; + size_t n; + const char *p; ++ wchar_t *wpattern_malloc = NULL; + wchar_t *wpattern; ++ wchar_t *wstring_malloc = NULL; + wchar_t *wstring; ++ size_t alloca_used = 0; + + /* Convert the strings into wide characters. */ + memset (&ps, '\0', sizeof (ps)); +@@ -343,7 +352,8 @@ fnmatch (pattern, string, flags) + #endif + if (__builtin_expect (n < 1024, 1)) + { +- wpattern = (wchar_t *) alloca ((n + 1) * sizeof (wchar_t)); ++ wpattern = (wchar_t *) alloca_account ((n + 1) * sizeof (wchar_t), ++ alloca_used); + n = mbsrtowcs (wpattern, &p, n + 1, &ps); + if (__builtin_expect (n == (size_t) -1, 0)) + /* Something wrong. +@@ -365,8 +375,16 @@ fnmatch (pattern, string, flags) + XXX Do we have to set `errno' to something which mbsrtows hasn't + already done? */ + return -1; +- wpattern = (wchar_t *) alloca ((n + 1) * sizeof (wchar_t)); ++ if (__builtin_expect (n >= (size_t) -1 / sizeof (wchar_t), 0)) ++ { ++ __set_errno (ENOMEM); ++ return -2; ++ } ++ wpattern_malloc = wpattern ++ = (wchar_t *) malloc ((n + 1) * sizeof (wchar_t)); + assert (mbsinit (&ps)); ++ if (wpattern == NULL) ++ return -2; + (void) mbsrtowcs (wpattern, &pattern, n + 1, &ps); + } + +@@ -379,13 +397,18 @@ fnmatch (pattern, string, flags) + p = string; + if (__builtin_expect (n < 1024, 1)) + { +- wstring = (wchar_t *) alloca ((n + 1) * sizeof (wchar_t)); ++ wstring = (wchar_t *) alloca_account ((n + 1) * sizeof (wchar_t), ++ alloca_used); + n = mbsrtowcs (wstring, &p, n + 1, &ps); + if (__builtin_expect (n == (size_t) -1, 0)) +- /* Something wrong. +- XXX Do we have to set `errno' to something which mbsrtows hasn't +- already done? */ +- return -1; ++ { ++ /* Something wrong. ++ XXX Do we have to set `errno' to something which ++ mbsrtows hasn't already done? */ ++ free_return: ++ free (wpattern_malloc); ++ return -1; ++ } + if (p) + { + memset (&ps, '\0', sizeof (ps)); +@@ -400,19 +423,38 @@ fnmatch (pattern, string, flags) + /* Something wrong. + XXX Do we have to set `errno' to something which mbsrtows hasn't + already done? */ +- return -1; +- wstring = (wchar_t *) alloca ((n + 1) * sizeof (wchar_t)); ++ goto free_return; ++ if (__builtin_expect (n >= (size_t) -1 / sizeof (wchar_t), 0)) ++ { ++ free (wpattern_malloc); ++ __set_errno (ENOMEM); ++ return -2; ++ } ++ ++ wstring_malloc = wstring ++ = (wchar_t *) malloc ((n + 1) * sizeof (wchar_t)); ++ if (wstring == NULL) ++ { ++ free (wpattern_malloc); ++ return -2; ++ } + assert (mbsinit (&ps)); + (void) mbsrtowcs (wstring, &string, n + 1, &ps); + } + +- return internal_fnwmatch (wpattern, wstring, wstring + n, +- flags & FNM_PERIOD, flags, NULL); ++ int res = internal_fnwmatch (wpattern, wstring, wstring + n, ++ flags & FNM_PERIOD, flags, NULL, ++ alloca_used); ++ ++ free (wstring_malloc); ++ free (wpattern_malloc); ++ ++ return res; + } + # endif /* mbstate_t and mbsrtowcs or _LIBC. */ + + return internal_fnmatch (pattern, string, string + strlen (string), +- flags & FNM_PERIOD, flags, NULL); ++ flags & FNM_PERIOD, flags, NULL, 0); + } + + # ifdef _LIBC +Index: glibc-2.12-2-gc4ccff1/posix/fnmatch_loop.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/posix/fnmatch_loop.c ++++ glibc-2.12-2-gc4ccff1/posix/fnmatch_loop.c +@@ -28,22 +28,24 @@ struct STRUCT + it matches, nonzero if not. */ + static int FCT (const CHAR *pattern, const CHAR *string, + const CHAR *string_end, int no_leading_period, int flags, +- struct STRUCT *ends) ++ struct STRUCT *ends, size_t alloca_used) + internal_function; + static int EXT (INT opt, const CHAR *pattern, const CHAR *string, +- const CHAR *string_end, int no_leading_period, int flags) ++ const CHAR *string_end, int no_leading_period, int flags, ++ size_t alloca_used) + internal_function; + static const CHAR *END (const CHAR *patternp) internal_function; + + static int + internal_function +-FCT (pattern, string, string_end, no_leading_period, flags, ends) ++FCT (pattern, string, string_end, no_leading_period, flags, ends, alloca_used) + const CHAR *pattern; + const CHAR *string; + const CHAR *string_end; + int no_leading_period; + int flags; + struct STRUCT *ends; ++ size_t alloca_used; + { + register const CHAR *p = pattern, *n = string; + register UCHAR c; +@@ -67,10 +69,8 @@ FCT (pattern, string, string_end, no_lea + case L('?'): + if (__builtin_expect (flags & FNM_EXTMATCH, 0) && *p == '(') + { +- int res; +- +- res = EXT (c, p, n, string_end, no_leading_period, +- flags); ++ int res = EXT (c, p, n, string_end, no_leading_period, ++ flags, alloca_used); + if (res != -1) + return res; + } +@@ -99,10 +99,8 @@ FCT (pattern, string, string_end, no_lea + case L('*'): + if (__builtin_expect (flags & FNM_EXTMATCH, 0) && *p == '(') + { +- int res; +- +- res = EXT (c, p, n, string_end, no_leading_period, +- flags); ++ int res = EXT (c, p, n, string_end, no_leading_period, ++ flags, alloca_used); + if (res != -1) + return res; + } +@@ -191,7 +189,7 @@ FCT (pattern, string, string_end, no_lea + + for (--p; n < endp; ++n, no_leading_period = 0) + if (FCT (p, n, string_end, no_leading_period, flags2, +- &end) == 0) ++ &end, alloca_used) == 0) + goto found; + } + else if (c == L('/') && (flags & FNM_FILE_NAME)) +@@ -200,7 +198,7 @@ FCT (pattern, string, string_end, no_lea + ++n; + if (n < string_end && *n == L('/') + && (FCT (p, n + 1, string_end, flags & FNM_PERIOD, flags, +- NULL) == 0)) ++ NULL, alloca_used) == 0)) + return 0; + } + else +@@ -214,7 +212,7 @@ FCT (pattern, string, string_end, no_lea + for (--p; n < endp; ++n, no_leading_period = 0) + if (FOLD ((UCHAR) *n) == c + && (FCT (p, n, string_end, no_leading_period, flags2, +- &end) == 0)) ++ &end, alloca_used) == 0)) + { + found: + if (end.pattern == NULL) +@@ -749,7 +747,7 @@ FCT (pattern, string, string_end, no_lea + _NL_COLLATE_SYMB_EXTRAMB); + + /* Locate the character in the hashing +- table. */ ++ table. */ + hash = elem_hash (str, c1); + + idx = 0; +@@ -971,9 +969,8 @@ FCT (pattern, string, string_end, no_lea + case L('!'): + if (__builtin_expect (flags & FNM_EXTMATCH, 0) && *p == '(') + { +- int res; +- +- res = EXT (c, p, n, string_end, no_leading_period, flags); ++ int res = EXT (c, p, n, string_end, no_leading_period, flags, ++ alloca_used); + if (res != -1) + return res; + } +@@ -1052,26 +1049,32 @@ END (const CHAR *pattern) + static int + internal_function + EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end, +- int no_leading_period, int flags) ++ int no_leading_period, int flags, size_t alloca_used) + { + const CHAR *startp; + int level; + struct patternlist + { + struct patternlist *next; ++ CHAR malloced; + CHAR str[0]; + } *list = NULL; + struct patternlist **lastp = &list; + size_t pattern_len = STRLEN (pattern); ++ int any_malloced = 0; + const CHAR *p; + const CHAR *rs; ++ int retval = 0; + + /* Parse the pattern. Store the individual parts in the list. */ + level = 0; + for (startp = p = pattern + 1; level >= 0; ++p) + if (*p == L('\0')) +- /* This is an invalid pattern. */ +- return -1; ++ { ++ /* This is an invalid pattern. */ ++ retval = -1; ++ goto out; ++ } + else if (*p == L('[')) + { + /* Handle brackets special. */ +@@ -1088,8 +1091,11 @@ EXT (INT opt, const CHAR *pattern, const + /* Skip over all characters of the list. */ + while (*p != L(']')) + if (*p++ == L('\0')) +- /* This is no valid pattern. */ +- return -1; ++ { ++ /* This is no valid pattern. */ ++ retval = -1; ++ goto out; ++ } + } + else if ((*p == L('?') || *p == L('*') || *p == L('+') || *p == L('@') + || *p == L('!')) && p[1] == L('(')) +@@ -1102,15 +1108,25 @@ EXT (INT opt, const CHAR *pattern, const + /* This means we found the end of the pattern. */ + #define NEW_PATTERN \ + struct patternlist *newp; \ +- \ +- if (opt == L('?') || opt == L('@')) \ +- newp = alloca (sizeof (struct patternlist) \ +- + (pattern_len * sizeof (CHAR))); \ ++ size_t slen = (opt == L('?') || opt == L('@') \ ++ ? pattern_len : (p - startp + 1)); \ ++ slen = sizeof (struct patternlist) + (slen * sizeof (CHAR)); \ ++ int malloced = ! __libc_use_alloca (alloca_used + slen); \ ++ if (__builtin_expect (malloced, 0)) \ ++ { \ ++ newp = malloc (slen); \ ++ if (newp == NULL) \ ++ { \ ++ retval = -2; \ ++ goto out; \ ++ } \ ++ any_malloced = 1; \ ++ } \ + else \ +- newp = alloca (sizeof (struct patternlist) \ +- + ((p - startp + 1) * sizeof (CHAR))); \ +- *((CHAR *) MEMPCPY (newp->str, startp, p - startp)) = L('\0'); \ ++ newp = alloca_account (slen, alloca_used); \ + newp->next = NULL; \ ++ newp->malloced = malloced; \ ++ *((CHAR *) MEMPCPY (newp->str, startp, p - startp)) = L('\0'); \ + *lastp = newp; \ + lastp = &newp->next + NEW_PATTERN; +@@ -1131,8 +1147,9 @@ EXT (INT opt, const CHAR *pattern, const + switch (opt) + { + case L('*'): +- if (FCT (p, string, string_end, no_leading_period, flags, NULL) == 0) +- return 0; ++ if (FCT (p, string, string_end, no_leading_period, flags, NULL, ++ alloca_used) == 0) ++ goto success; + /* FALLTHROUGH */ + + case L('+'): +@@ -1143,7 +1160,7 @@ EXT (INT opt, const CHAR *pattern, const + current pattern. */ + if (FCT (list->str, string, rs, no_leading_period, + flags & FNM_FILE_NAME ? flags : flags & ~FNM_PERIOD, +- NULL) == 0 ++ NULL, alloca_used) == 0 + /* This was successful. Now match the rest with the rest + of the pattern. */ + && (FCT (p, rs, string_end, +@@ -1151,7 +1168,7 @@ EXT (INT opt, const CHAR *pattern, const + ? no_leading_period + : rs[-1] == '/' && NO_LEADING_PERIOD (flags) ? 1 : 0, + flags & FNM_FILE_NAME +- ? flags : flags & ~FNM_PERIOD, NULL) == 0 ++ ? flags : flags & ~FNM_PERIOD, NULL, alloca_used) == 0 + /* This didn't work. Try the whole pattern. */ + || (rs != string + && FCT (pattern - 1, rs, string_end, +@@ -1160,18 +1177,21 @@ EXT (INT opt, const CHAR *pattern, const + : (rs[-1] == '/' && NO_LEADING_PERIOD (flags) + ? 1 : 0), + flags & FNM_FILE_NAME +- ? flags : flags & ~FNM_PERIOD, NULL) == 0))) ++ ? flags : flags & ~FNM_PERIOD, NULL, ++ alloca_used) == 0))) + /* It worked. Signal success. */ +- return 0; ++ goto success; + } + while ((list = list->next) != NULL); + + /* None of the patterns lead to a match. */ +- return FNM_NOMATCH; ++ retval = FNM_NOMATCH; ++ break; + + case L('?'): +- if (FCT (p, string, string_end, no_leading_period, flags, NULL) == 0) +- return 0; ++ if (FCT (p, string, string_end, no_leading_period, flags, NULL, ++ alloca_used) == 0) ++ goto success; + /* FALLTHROUGH */ + + case L('@'): +@@ -1183,13 +1203,14 @@ EXT (INT opt, const CHAR *pattern, const + if (FCT (STRCAT (list->str, p), string, string_end, + no_leading_period, + flags & FNM_FILE_NAME ? flags : flags & ~FNM_PERIOD, +- NULL) == 0) ++ NULL, alloca_used) == 0) + /* It worked. Signal success. */ +- return 0; ++ goto success; + while ((list = list->next) != NULL); + + /* None of the patterns lead to a match. */ +- return FNM_NOMATCH; ++ retval = FNM_NOMATCH; ++ break; + + case L('!'): + for (rs = string; rs <= string_end; ++rs) +@@ -1199,7 +1220,7 @@ EXT (INT opt, const CHAR *pattern, const + for (runp = list; runp != NULL; runp = runp->next) + if (FCT (runp->str, string, rs, no_leading_period, + flags & FNM_FILE_NAME ? flags : flags & ~FNM_PERIOD, +- NULL) == 0) ++ NULL, alloca_used) == 0) + break; + + /* If none of the patterns matched see whether the rest does. */ +@@ -1209,21 +1230,34 @@ EXT (INT opt, const CHAR *pattern, const + ? no_leading_period + : rs[-1] == '/' && NO_LEADING_PERIOD (flags) ? 1 : 0, + flags & FNM_FILE_NAME ? flags : flags & ~FNM_PERIOD, +- NULL) == 0)) ++ NULL, alloca_used) == 0)) + /* This is successful. */ +- return 0; ++ goto success; + } + + /* None of the patterns together with the rest of the pattern + lead to a match. */ +- return FNM_NOMATCH; ++ retval = FNM_NOMATCH; ++ break; + + default: + assert (! "Invalid extended matching operator"); ++ retval = -1; + break; + } + +- return -1; ++ success: ++ out: ++ if (any_malloced) ++ while (list != NULL) ++ { ++ struct patternlist *old = list; ++ list = list->next; ++ if (old->malloced) ++ free (old); ++ } ++ ++ return retval; + } + + +Index: glibc-2.12-2-gc4ccff1/posix/tst-fnmatch.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/posix/tst-fnmatch.c ++++ glibc-2.12-2-gc4ccff1/posix/tst-fnmatch.c +@@ -25,6 +25,7 @@ + #include + #include + #include ++#include + + + static char *next_input (char **line, int first, int last); +@@ -46,6 +47,8 @@ main (void) + size_t escpatternlen = 0; + int nr = 0; + ++ mtrace (); ++ + /* Read lines from stdin with the following format: + + locale input-string match-string flags result diff --git a/src/patches/glibc/glibc-rh688720.patch b/src/patches/glibc/glibc-rh688720.patch new file mode 100644 index 000000000..0c86f2540 --- /dev/null +++ b/src/patches/glibc/glibc-rh688720.patch @@ -0,0 +1,1638 @@ +2011-11-11 Ulrich Drepper + + [BZ #13147] + * locales/de_AT: Use de_DE for LC_NUMERIC. + * locales/es_BO: Use es_ES for LC_MESSAGES and LC_NUMERIC. + * locales/es_CL: Likewise. + * locales/es_CO: Likewise. + * locales/es_DO: Likewise. + * locales/es_EC: Likewise. + * locales/es_GT: Likewise. + * locales/es_HN: Likewise. + * locales/es_MX: Likewise. + * locales/es_NI: Likewise. + * locales/es_PA: Likewise. + * locales/es_PE: Likewise. + * locales/es_PR: Likewise. + * locales/es_PY: Likewise. + * locales/es_SV: Likewise. + * locales/es_UY: Likewise. + * locales/es_VE: Likewise. + * locales/es_ES: Fix LC_NUMERIC. + * locales/es_CR: Use es_ES for LC_MESSAGES. + * locales/fr_BE: Actually use grouping in LC_NUMERIC. + * locales/fr_CA: Use fr_FR for LC_MESSAGES and LC_NUMERIC. + * locales/fr_CH: Use de_CH for LC_NUMERIC. + * locales/fr_LU: Use same grouping in LC_NUMERIC as in LC_MONETARY. + +2010-05-17 Andreas Schwab + + * locales/es_CR (LC_ADDRESS): Fix character names in lang_ab. + +Index: glibc-2.12-2-gc4ccff1/localedata/locales/de_AT +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/de_AT ++++ glibc-2.12-2-gc4ccff1/localedata/locales/de_AT +@@ -78,41 +78,39 @@ n_sign_posn 1 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "" +-thousands_sep "" +-grouping 0;0 ++copy "de_DE" + END LC_NUMERIC + + LC_TIME + abday "";"";/ +- "";"";/ +- "";"";/ +- "" ++ "";"";/ ++ "";"";/ ++ "" + day "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + abmon "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"" ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"" + mon "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + d_t_fmt "" + d_fmt "" + t_fmt "" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_BO +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_BO ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_BO +@@ -56,8 +56,7 @@ copy "es_ES" + END LC_CTYPE + + LC_MESSAGES +-yesexpr "" +-noexpr "" ++copy "es_ES" + END LC_MESSAGES + + LC_MONETARY +@@ -79,41 +78,39 @@ n_sign_posn 1 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "" +-thousands_sep "" +-grouping 0;0 ++copy "es_ES" + END LC_NUMERIC + + LC_TIME + abday "";"";/ +- "";"";/ +- "";"";/ +- "" ++ "";"";/ ++ "";"";/ ++ "" + day "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + abmon "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"" ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"" + mon "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + d_t_fmt "" + d_fmt "" + t_fmt "" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_CL +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_CL ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_CL +@@ -56,8 +56,7 @@ copy "es_ES" + END LC_CTYPE + + LC_MESSAGES +-yesexpr "" +-noexpr "" ++copy "es_ES" + END LC_MESSAGES + + LC_MONETARY +@@ -79,41 +78,39 @@ n_sign_posn 1 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "" +-thousands_sep "" +-grouping 0;0 ++copy "es_ES" + END LC_NUMERIC + + LC_TIME + abday "";"";/ +- "";"";/ +- "";"";/ +- "" ++ "";"";/ ++ "";"";/ ++ "" + day "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + abmon "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"" ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"" + mon "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + d_t_fmt "" + d_fmt "" + t_fmt "" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_CO +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_CO ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_CO +@@ -56,8 +56,7 @@ copy "es_ES" + END LC_CTYPE + + LC_MESSAGES +-yesexpr "" +-noexpr "" ++copy "es_ES" + END LC_MESSAGES + + LC_MONETARY +@@ -79,41 +78,39 @@ n_sign_posn 1 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "" +-thousands_sep "" +-grouping 0;0 ++copy "es_ES" + END LC_NUMERIC + + LC_TIME + abday "";"";/ +- "";"";/ +- "";"";/ +- "" ++ "";"";/ ++ "";"";/ ++ "" + day "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + abmon "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"" ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"" + mon "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + d_t_fmt "" + d_fmt "" + t_fmt "" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_CR +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_CR ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_CR +@@ -47,8 +47,7 @@ copy "es_ES" + END LC_CTYPE + + LC_MESSAGES +-yesexpr "" +-noexpr "" ++copy "es_ES" + END LC_MESSAGES + + LC_MONETARY +@@ -79,34 +78,34 @@ END LC_NUMERIC + + LC_TIME + abday "";"";/ +- "";"";/ +- "";"";/ +- "" ++ "";"";/ ++ "";"";/ ++ "" + day "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + abmon "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"" ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"" + mon "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + d_t_fmt "" + d_fmt "" + t_fmt "" +@@ -157,7 +156,7 @@ country_post "" + country_car "" + country_isbn "9930,9977,9968" + lang_name "" +-lang_ab "<0065><0073>" ++lang_ab "" + lang_term "" + country_ab2 "" + country_ab3 "" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_DO +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_DO ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_DO +@@ -56,8 +56,7 @@ copy "es_ES" + END LC_CTYPE + + LC_MESSAGES +-yesexpr "" +-noexpr "" ++copy "es_ES" + END LC_MESSAGES + + LC_MONETARY +@@ -79,41 +78,39 @@ n_sign_posn 1 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "" +-thousands_sep "" +-grouping 0;0 ++copy "es_ES" + END LC_NUMERIC + + LC_TIME + abday "";"";/ +- "";"";/ +- "";"";/ +- "" ++ "";"";/ ++ "";"";/ ++ "" + day "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + abmon "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"" ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"" + mon "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + d_t_fmt "" + d_fmt "" + t_fmt "" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_EC +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_EC ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_EC +@@ -56,8 +56,7 @@ copy "es_ES" + END LC_CTYPE + + LC_MESSAGES +-yesexpr "" +-noexpr "" ++copy "es_ES" + END LC_MESSAGES + + LC_MONETARY +@@ -79,41 +78,39 @@ n_sign_posn 1 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "" +-thousands_sep "" +-grouping 0;0 ++copy "es_ES" + END LC_NUMERIC + + LC_TIME + abday "";"";/ +- "";"";/ +- "";"";/ +- "" ++ "";"";/ ++ "";"";/ ++ "" + day "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + abmon "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"" ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"" + mon "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + d_t_fmt "" + d_fmt "" + t_fmt "" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_ES +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_ES ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_ES +@@ -85,40 +85,40 @@ END LC_MONETARY + + LC_NUMERIC + decimal_point "" +-thousands_sep "" +-grouping 0;0 ++thousands_sep "" ++grouping 3;3 + END LC_NUMERIC + + LC_TIME + abday "";"";/ +- "";"";/ +- "";"";/ +- "" ++ "";"";/ ++ "";"";/ ++ "" + day "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + abmon "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"" ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"" + mon "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + d_t_fmt "" + d_fmt "" + t_fmt "" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_GT +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_GT ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_GT +@@ -55,8 +55,7 @@ copy "es_ES" + END LC_CTYPE + + LC_MESSAGES +-yesexpr "" +-noexpr "" ++copy "es_ES" + END LC_MESSAGES + + LC_MONETARY +@@ -78,9 +77,7 @@ n_sign_posn 1 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "" +-thousands_sep "" +-grouping 0;0 ++copy "es_ES" + END LC_NUMERIC + + LC_TIME +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_HN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_HN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_HN +@@ -56,8 +56,7 @@ copy "es_ES" + END LC_CTYPE + + LC_MESSAGES +-yesexpr "" +-noexpr "" ++copy "es_ES" + END LC_MESSAGES + + LC_MONETARY +@@ -79,41 +78,39 @@ n_sign_posn 1 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "" +-thousands_sep "" +-grouping 0;0 ++copy "es_ES" + END LC_NUMERIC + + LC_TIME + abday "";"";/ +- "";"";/ +- "";"";/ +- "" ++ "";"";/ ++ "";"";/ ++ "" + day "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + abmon "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"" ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"" + mon "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + d_t_fmt "" + d_fmt "" + t_fmt "" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_MX +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_MX ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_MX +@@ -56,8 +56,7 @@ copy "es_ES" + END LC_CTYPE + + LC_MESSAGES +-yesexpr "" +-noexpr "" ++copy "es_ES" + END LC_MESSAGES + + LC_MONETARY +@@ -79,41 +78,39 @@ n_sign_posn 1 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "" +-thousands_sep "" +-grouping 0;0 ++copy "es_ES" + END LC_NUMERIC + + LC_TIME + abday "";"";/ +- "";"";/ +- "";"";/ +- "" ++ "";"";/ ++ "";"";/ ++ "" + day "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + abmon "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"" ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"" + mon "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + d_t_fmt "" + d_fmt "" + t_fmt "" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_NI +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_NI ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_NI +@@ -47,8 +47,7 @@ copy "es_ES" + END LC_CTYPE + + LC_MESSAGES +-yesexpr "" +-noexpr "" ++copy "es_ES" + END LC_MESSAGES + + LC_MONETARY +@@ -70,9 +69,7 @@ n_sign_posn 1 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "" +-thousands_sep "" +-grouping 0;0 ++copy "es_ES" + END LC_NUMERIC + + LC_TIME +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_PA +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_PA ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_PA +@@ -56,8 +56,7 @@ copy "es_ES" + END LC_CTYPE + + LC_MESSAGES +-yesexpr "" +-noexpr "" ++copy "es_ES" + END LC_MESSAGES + + LC_MONETARY +@@ -79,41 +78,39 @@ n_sign_posn 1 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "" +-thousands_sep "" +-grouping 0;0 ++copy "es_ES" + END LC_NUMERIC + + LC_TIME + abday "";"";/ +- "";"";/ +- "";"";/ +- "" ++ "";"";/ ++ "";"";/ ++ "" + day "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + abmon "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"" ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"" + mon "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + d_t_fmt "" + d_fmt "" + t_fmt "" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_PE +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_PE ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_PE +@@ -56,8 +56,7 @@ copy "es_ES" + END LC_CTYPE + + LC_MESSAGES +-yesexpr "" +-noexpr "" ++copy "es_ES" + END LC_MESSAGES + + LC_MONETARY +@@ -79,41 +78,39 @@ n_sign_posn 1 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "" +-thousands_sep "" +-grouping 0;0 ++copy "es_ES" + END LC_NUMERIC + + LC_TIME + abday "";"";/ +- "";"";/ +- "";"";/ +- "" ++ "";"";/ ++ "";"";/ ++ "" + day "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + abmon "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"" ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"" + mon "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + d_t_fmt "" + d_fmt "" + t_fmt "" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_PR +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_PR ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_PR +@@ -47,8 +47,7 @@ copy "es_ES" + END LC_CTYPE + + LC_MESSAGES +-yesexpr "" +-noexpr "" ++copy "es_ES" + END LC_MESSAGES + + LC_MONETARY +@@ -70,41 +69,39 @@ n_sign_posn 1 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "" +-thousands_sep "" +-grouping 0;0 ++copy "es_ES" + END LC_NUMERIC + + LC_TIME + abday "";"";/ +- "";"";/ +- "";"";/ +- "" ++ "";"";/ ++ "";"";/ ++ "" + day "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + abmon "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"" ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"" + mon "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + d_t_fmt "" + d_fmt "" + t_fmt "" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_PY +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_PY ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_PY +@@ -56,8 +56,7 @@ copy "es_ES" + END LC_CTYPE + + LC_MESSAGES +-yesexpr "" +-noexpr "" ++copy "es_ES" + END LC_MESSAGES + + LC_MONETARY +@@ -79,41 +78,39 @@ n_sign_posn 1 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "" +-thousands_sep "" +-grouping 0;0 ++copy "es_ES" + END LC_NUMERIC + + LC_TIME + abday "";"";/ +- "";"";/ +- "";"";/ +- "" ++ "";"";/ ++ "";"";/ ++ "" + day "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + abmon "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"" ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"" + mon "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + d_t_fmt "" + d_fmt "" + t_fmt "" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_SV +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_SV ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_SV +@@ -56,8 +56,7 @@ copy "es_ES" + END LC_CTYPE + + LC_MESSAGES +-yesexpr "" +-noexpr "" ++copy "es_ES" + END LC_MESSAGES + + LC_MONETARY +@@ -79,9 +78,7 @@ n_sign_posn 1 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "" +-thousands_sep "" +-grouping 0;0 ++copy "es_ES" + END LC_NUMERIC + + LC_TIME +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_UY +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_UY ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_UY +@@ -56,8 +56,7 @@ copy "es_ES" + END LC_CTYPE + + LC_MESSAGES +-yesexpr "" +-noexpr "" ++copy "es_ES" + END LC_MESSAGES + + LC_MONETARY +@@ -79,41 +78,39 @@ n_sign_posn 1 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "" +-thousands_sep "" +-grouping 0;0 ++copy "es_ES" + END LC_NUMERIC + + LC_TIME + abday "";"";/ +- "";"";/ +- "";"";/ +- "" ++ "";"";/ ++ "";"";/ ++ "" + day "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + abmon "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"" ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"" + mon "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + d_t_fmt "" + d_fmt "" + t_fmt "" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_VE +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_VE ++++ glibc-2.12-2-gc4ccff1/localedata/locales/es_VE +@@ -56,8 +56,7 @@ copy "es_ES" + END LC_CTYPE + + LC_MESSAGES +-yesexpr "" +-noexpr "" ++copy "es_ES" + END LC_MESSAGES + + LC_MONETARY +@@ -79,41 +78,39 @@ n_sign_posn 1 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "" +-thousands_sep "" +-grouping 0;0 ++copy "es_ES" + END LC_NUMERIC + + LC_TIME + abday "";"";/ +- "";"";/ +- "";"";/ +- "" ++ "";"";/ ++ "";"";/ ++ "" + day "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + abmon "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"" ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"" + mon "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + d_t_fmt "" + d_fmt "" + t_fmt "" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/fr_BE +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/fr_BE ++++ glibc-2.12-2-gc4ccff1/localedata/locales/fr_BE +@@ -79,7 +79,7 @@ END LC_MONETARY + LC_NUMERIC + decimal_point "" + thousands_sep "" +-grouping 0;0 ++grouping 3;3 + END LC_NUMERIC + + LC_TIME +Index: glibc-2.12-2-gc4ccff1/localedata/locales/fr_CA +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/fr_CA ++++ glibc-2.12-2-gc4ccff1/localedata/locales/fr_CA +@@ -55,8 +55,7 @@ copy "en_CA" + END LC_COLLATE + + LC_MESSAGES +-yesexpr "" +-noexpr "" ++copy "fr_FR" + END LC_MESSAGES + + LC_MONETARY +@@ -78,41 +77,39 @@ n_sign_posn 0 + END LC_MONETARY + + LC_NUMERIC +-decimal_point "" +-thousands_sep "" +-grouping 0;0 ++copy "fr_FR" + END LC_NUMERIC + + LC_TIME + abday "";"";/ +- "";"";/ +- "";"";/ +- "" ++ "";"";/ ++ "";"";/ ++ "" + day "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + abmon "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"" ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"" + mon "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + d_t_fmt "" + d_fmt "" + t_fmt "" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/fr_CH +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/fr_CH ++++ glibc-2.12-2-gc4ccff1/localedata/locales/fr_CH +@@ -64,41 +64,39 @@ copy "de_CH" + END LC_MONETARY + + LC_NUMERIC +-decimal_point "" +-thousands_sep "" +-grouping 0;0 ++copy "de_CH" + END LC_NUMERIC + + LC_TIME + abday "";"";/ +- "";"";/ +- "";"";/ +- "" ++ "";"";/ ++ "";"";/ ++ "" + day "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + abmon "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"" ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"" + mon "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + d_t_fmt "" + d_fmt "" + t_fmt "" +Index: glibc-2.12-2-gc4ccff1/localedata/locales/fr_LU +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/fr_LU ++++ glibc-2.12-2-gc4ccff1/localedata/locales/fr_LU +@@ -78,40 +78,40 @@ END LC_MONETARY + + LC_NUMERIC + decimal_point "" +-thousands_sep "" +-grouping 0;0 ++thousands_sep "" ++grouping 3;3 + END LC_NUMERIC + + LC_TIME + abday "";"";/ +- "";"";/ +- "";"";/ +- "" ++ "";"";/ ++ "";"";/ ++ "" + day "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + abmon "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"" ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"" + mon "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + d_t_fmt "" + d_fmt "" + t_fmt "" diff --git a/src/patches/glibc/glibc-rh688980.patch b/src/patches/glibc/glibc-rh688980.patch new file mode 100644 index 000000000..ce989264f --- /dev/null +++ b/src/patches/glibc/glibc-rh688980.patch @@ -0,0 +1,20 @@ +2011-05-11 Ulrich Drepper + + [BZ #12625] + * misc/mntent_r.c (addmntent): Flush the stream after the output + +Index: glibc-2.12-2-gc4ccff1/misc/mntent_r.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/misc/mntent_r.c ++++ glibc-2.12-2-gc4ccff1/misc/mntent_r.c +@@ -263,8 +263,8 @@ __addmntent (FILE *stream, const struct + mntcopy.mnt_type, + mntcopy.mnt_opts, + mntcopy.mnt_freq, +- mntcopy.mnt_passno) +- < 0 ? 1 : 0); ++ mntcopy.mnt_passno) < 0 ++ || fflush (stream) != 0); + } + weak_alias (__addmntent, addmntent) + diff --git a/src/patches/glibc/glibc-rh689471.patch b/src/patches/glibc/glibc-rh689471.patch new file mode 100644 index 000000000..4c7fc8a7f --- /dev/null +++ b/src/patches/glibc/glibc-rh689471.patch @@ -0,0 +1,333 @@ +2011-03-20 H.J. Lu + + [BZ #12597] + * string/test-strncmp.c (do_page_test): New function. + (check2): Likewise. + (test_main): Call check2. + * sysdeps/x86_64/multiarch/strcmp.S: Properly cross page boundary. + +Index: glibc-2.12-2-gc4ccff1/string/test-strncmp.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/string/test-strncmp.c ++++ glibc-2.12-2-gc4ccff1/string/test-strncmp.c +@@ -200,6 +200,27 @@ do_test (size_t align1, size_t align2, s + } + + static void ++do_page_test (size_t offset1, size_t offset2, char *s2) ++{ ++ char *s1; ++ int exp_result; ++ ++ if (offset1 >= page_size || offset2 >= page_size) ++ return; ++ ++ s1 = (char *) (buf1 + offset1); ++ s2 += offset2; ++ ++ exp_result= *s1; ++ ++ FOR_EACH_IMPL (impl, 0) ++ { ++ check_result (impl, s1, s2, page_size, -exp_result); ++ check_result (impl, s2, s1, page_size, exp_result); ++ } ++} ++ ++static void + do_random_tests (void) + { + size_t i, j, n, align1, align2, pos, len1, len2, size; +@@ -312,6 +333,25 @@ check1 (void) + } + } + ++static void ++check2 (void) ++{ ++ size_t i; ++ char *s1, *s2; ++ ++ s1 = (char *) buf1; ++ for (i = 0; i < page_size - 1; i++) ++ s1[i] = 23; ++ s1[i] = 0; ++ ++ s2 = strdup (s1); ++ ++ for (i = 0; i < 64; ++i) ++ do_page_test (3990 + i, 2635, s2); ++ ++ free (s2); ++} ++ + int + test_main (void) + { +@@ -320,6 +360,7 @@ test_main (void) + test_init (); + + check1 (); ++ check2 (); + + printf ("%23s", ""); + FOR_EACH_IMPL (impl, 0) +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcmp.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/strcmp.S ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcmp.S +@@ -452,6 +452,7 @@ LABEL(loop_ashr_1_use_sse4_2): + add $16, %r10 + jg LABEL(nibble_ashr_1_use_sse4_2) + ++LABEL(nibble_ashr_1_use_sse4_2_restart): + movdqa (%rdi, %rdx), %xmm0 + palignr $1, -16(%rdi, %rdx), %xmm0 + # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L +@@ -499,7 +500,7 @@ LABEL(nibble_ashr_1_use_sse4_2): + jae LABEL(nibble_ashr_use_sse4_2_exit) + # endif + cmp $14, %ecx +- ja LABEL(loop_ashr_1_use_sse4_2) ++ ja LABEL(nibble_ashr_1_use_sse4_2_restart) + + jmp LABEL(nibble_ashr_use_sse4_2_exit) + +@@ -544,6 +545,7 @@ LABEL(loop_ashr_2_use_sse4_2): + add $16, %r10 + jg LABEL(nibble_ashr_2_use_sse4_2) + ++LABEL(nibble_ashr_2_use_sse4_2_restart): + movdqa (%rdi, %rdx), %xmm0 + palignr $2, -16(%rdi, %rdx), %xmm0 + # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L +@@ -591,7 +593,7 @@ LABEL(nibble_ashr_2_use_sse4_2): + jae LABEL(nibble_ashr_use_sse4_2_exit) + # endif + cmp $13, %ecx +- ja LABEL(loop_ashr_2_use_sse4_2) ++ ja LABEL(nibble_ashr_2_use_sse4_2_restart) + + jmp LABEL(nibble_ashr_use_sse4_2_exit) + +@@ -636,6 +638,7 @@ LABEL(loop_ashr_3_use_sse4_2): + add $16, %r10 + jg LABEL(nibble_ashr_3_use_sse4_2) + ++LABEL(nibble_ashr_3_use_sse4_2_restart): + movdqa (%rdi, %rdx), %xmm0 + palignr $3, -16(%rdi, %rdx), %xmm0 + # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L +@@ -683,7 +686,7 @@ LABEL(nibble_ashr_3_use_sse4_2): + jae LABEL(nibble_ashr_use_sse4_2_exit) + # endif + cmp $12, %ecx +- ja LABEL(loop_ashr_3_use_sse4_2) ++ ja LABEL(nibble_ashr_3_use_sse4_2_restart) + + jmp LABEL(nibble_ashr_use_sse4_2_exit) + +@@ -729,6 +732,7 @@ LABEL(loop_ashr_4_use_sse4_2): + add $16, %r10 + jg LABEL(nibble_ashr_4_use_sse4_2) + ++LABEL(nibble_ashr_4_use_sse4_2_restart): + movdqa (%rdi, %rdx), %xmm0 + palignr $4, -16(%rdi, %rdx), %xmm0 + # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L +@@ -776,7 +780,7 @@ LABEL(nibble_ashr_4_use_sse4_2): + jae LABEL(nibble_ashr_use_sse4_2_exit) + # endif + cmp $11, %ecx +- ja LABEL(loop_ashr_4_use_sse4_2) ++ ja LABEL(nibble_ashr_4_use_sse4_2_restart) + + jmp LABEL(nibble_ashr_use_sse4_2_exit) + +@@ -822,6 +826,7 @@ LABEL(loop_ashr_5_use_sse4_2): + add $16, %r10 + jg LABEL(nibble_ashr_5_use_sse4_2) + ++LABEL(nibble_ashr_5_use_sse4_2_restart): + movdqa (%rdi, %rdx), %xmm0 + palignr $5, -16(%rdi, %rdx), %xmm0 + # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L +@@ -870,7 +875,7 @@ LABEL(nibble_ashr_5_use_sse4_2): + jae LABEL(nibble_ashr_use_sse4_2_exit) + # endif + cmp $10, %ecx +- ja LABEL(loop_ashr_5_use_sse4_2) ++ ja LABEL(nibble_ashr_5_use_sse4_2_restart) + + jmp LABEL(nibble_ashr_use_sse4_2_exit) + +@@ -916,6 +921,7 @@ LABEL(loop_ashr_6_use_sse4_2): + add $16, %r10 + jg LABEL(nibble_ashr_6_use_sse4_2) + ++LABEL(nibble_ashr_6_use_sse4_2_restart): + movdqa (%rdi, %rdx), %xmm0 + palignr $6, -16(%rdi, %rdx), %xmm0 + # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L +@@ -963,7 +969,7 @@ LABEL(nibble_ashr_6_use_sse4_2): + jae LABEL(nibble_ashr_use_sse4_2_exit) + # endif + cmp $9, %ecx +- ja LABEL(loop_ashr_6_use_sse4_2) ++ ja LABEL(nibble_ashr_6_use_sse4_2_restart) + + jmp LABEL(nibble_ashr_use_sse4_2_exit) + +@@ -1009,6 +1015,7 @@ LABEL(loop_ashr_7_use_sse4_2): + add $16, %r10 + jg LABEL(nibble_ashr_7_use_sse4_2) + ++LABEL(nibble_ashr_7_use_sse4_2_restart): + movdqa (%rdi, %rdx), %xmm0 + palignr $7, -16(%rdi, %rdx), %xmm0 + # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L +@@ -1056,7 +1063,7 @@ LABEL(nibble_ashr_7_use_sse4_2): + jae LABEL(nibble_ashr_use_sse4_2_exit) + # endif + cmp $8, %ecx +- ja LABEL(loop_ashr_7_use_sse4_2) ++ ja LABEL(nibble_ashr_7_use_sse4_2_restart) + + jmp LABEL(nibble_ashr_use_sse4_2_exit) + +@@ -1102,6 +1109,7 @@ LABEL(loop_ashr_8_use_sse4_2): + add $16, %r10 + jg LABEL(nibble_ashr_8_use_sse4_2) + ++LABEL(nibble_ashr_8_use_sse4_2_restart): + movdqa (%rdi, %rdx), %xmm0 + palignr $8, -16(%rdi, %rdx), %xmm0 + # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L +@@ -1149,7 +1157,7 @@ LABEL(nibble_ashr_8_use_sse4_2): + jae LABEL(nibble_ashr_use_sse4_2_exit) + # endif + cmp $7, %ecx +- ja LABEL(loop_ashr_8_use_sse4_2) ++ ja LABEL(nibble_ashr_8_use_sse4_2_restart) + + jmp LABEL(nibble_ashr_use_sse4_2_exit) + +@@ -1195,6 +1203,7 @@ LABEL(loop_ashr_9_use_sse4_2): + add $16, %r10 + jg LABEL(nibble_ashr_9_use_sse4_2) + ++LABEL(nibble_ashr_9_use_sse4_2_restart): + movdqa (%rdi, %rdx), %xmm0 + + palignr $9, -16(%rdi, %rdx), %xmm0 +@@ -1243,7 +1252,7 @@ LABEL(nibble_ashr_9_use_sse4_2): + jae LABEL(nibble_ashr_use_sse4_2_exit) + # endif + cmp $6, %ecx +- ja LABEL(loop_ashr_9_use_sse4_2) ++ ja LABEL(nibble_ashr_9_use_sse4_2_restart) + + jmp LABEL(nibble_ashr_use_sse4_2_exit) + +@@ -1289,6 +1298,7 @@ LABEL(loop_ashr_10_use_sse4_2): + add $16, %r10 + jg LABEL(nibble_ashr_10_use_sse4_2) + ++LABEL(nibble_ashr_10_use_sse4_2_restart): + movdqa (%rdi, %rdx), %xmm0 + palignr $10, -16(%rdi, %rdx), %xmm0 + # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L +@@ -1336,7 +1346,7 @@ LABEL(nibble_ashr_10_use_sse4_2): + jae LABEL(nibble_ashr_use_sse4_2_exit) + # endif + cmp $5, %ecx +- ja LABEL(loop_ashr_10_use_sse4_2) ++ ja LABEL(nibble_ashr_10_use_sse4_2_restart) + + jmp LABEL(nibble_ashr_use_sse4_2_exit) + +@@ -1382,6 +1392,7 @@ LABEL(loop_ashr_11_use_sse4_2): + add $16, %r10 + jg LABEL(nibble_ashr_11_use_sse4_2) + ++LABEL(nibble_ashr_11_use_sse4_2_restart): + movdqa (%rdi, %rdx), %xmm0 + palignr $11, -16(%rdi, %rdx), %xmm0 + # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L +@@ -1429,7 +1440,7 @@ LABEL(nibble_ashr_11_use_sse4_2): + jae LABEL(nibble_ashr_use_sse4_2_exit) + # endif + cmp $4, %ecx +- ja LABEL(loop_ashr_11_use_sse4_2) ++ ja LABEL(nibble_ashr_11_use_sse4_2_restart) + + jmp LABEL(nibble_ashr_use_sse4_2_exit) + +@@ -1475,6 +1486,7 @@ LABEL(loop_ashr_12_use_sse4_2): + add $16, %r10 + jg LABEL(nibble_ashr_12_use_sse4_2) + ++LABEL(nibble_ashr_12_use_sse4_2_restart): + movdqa (%rdi, %rdx), %xmm0 + palignr $12, -16(%rdi, %rdx), %xmm0 + # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L +@@ -1522,7 +1534,7 @@ LABEL(nibble_ashr_12_use_sse4_2): + jae LABEL(nibble_ashr_use_sse4_2_exit) + # endif + cmp $3, %ecx +- ja LABEL(loop_ashr_12_use_sse4_2) ++ ja LABEL(nibble_ashr_12_use_sse4_2_restart) + + jmp LABEL(nibble_ashr_use_sse4_2_exit) + +@@ -1569,6 +1581,7 @@ LABEL(loop_ashr_13_use_sse4_2): + add $16, %r10 + jg LABEL(nibble_ashr_13_use_sse4_2) + ++LABEL(nibble_ashr_13_use_sse4_2_restart): + movdqa (%rdi, %rdx), %xmm0 + palignr $13, -16(%rdi, %rdx), %xmm0 + # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L +@@ -1616,7 +1629,7 @@ LABEL(nibble_ashr_13_use_sse4_2): + jae LABEL(nibble_ashr_use_sse4_2_exit) + # endif + cmp $2, %ecx +- ja LABEL(loop_ashr_13_use_sse4_2) ++ ja LABEL(nibble_ashr_13_use_sse4_2_restart) + + jmp LABEL(nibble_ashr_use_sse4_2_exit) + +@@ -1663,6 +1676,7 @@ LABEL(loop_ashr_14_use_sse4_2): + add $16, %r10 + jg LABEL(nibble_ashr_14_use_sse4_2) + ++LABEL(nibble_ashr_14_use_sse4_2_restart): + movdqa (%rdi, %rdx), %xmm0 + palignr $14, -16(%rdi, %rdx), %xmm0 + # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L +@@ -1710,7 +1724,7 @@ LABEL(nibble_ashr_14_use_sse4_2): + jae LABEL(nibble_ashr_use_sse4_2_exit) + # endif + cmp $1, %ecx +- ja LABEL(loop_ashr_14_use_sse4_2) ++ ja LABEL(nibble_ashr_14_use_sse4_2_restart) + + jmp LABEL(nibble_ashr_use_sse4_2_exit) + +@@ -1759,6 +1773,7 @@ LABEL(loop_ashr_15_use_sse4_2): + add $16, %r10 + jg LABEL(nibble_ashr_15_use_sse4_2) + ++LABEL(nibble_ashr_15_use_sse4_2_restart): + movdqa (%rdi, %rdx), %xmm0 + palignr $15, -16(%rdi, %rdx), %xmm0 + # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L +@@ -1806,7 +1821,7 @@ LABEL(nibble_ashr_15_use_sse4_2): + jae LABEL(nibble_ashr_use_sse4_2_exit) + # endif + cmp $0, %ecx +- ja LABEL(loop_ashr_15_use_sse4_2) ++ ja LABEL(nibble_ashr_15_use_sse4_2_restart) + + LABEL(nibble_ashr_use_sse4_2_exit): + # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L diff --git a/src/patches/glibc/glibc-rh692177.patch b/src/patches/glibc/glibc-rh692177.patch new file mode 100644 index 000000000..1036769bf --- /dev/null +++ b/src/patches/glibc/glibc-rh692177.patch @@ -0,0 +1,137 @@ +2011-03-22 Ulrich Drepper + + * sysdeps/unix/sysv/linux/i386/sysconf.c (intel_check_word): Increment + round counter. + * sysdeps/x86_64/cacheinfo.c (intel_check_word): Likewise. + +2011-03-20 Ulrich Drepper + + [BZ #12587] + * sysdeps/unix/sysv/linux/i386/sysconf.c (intel_check_word): + Handle cache information in CPU leaf 4. + * sysdeps/x86_64/cacheinfo.c (intel_check_word): Likewise. + +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/i386/sysconf.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/i386/sysconf.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/i386/sysconf.c +@@ -186,6 +186,57 @@ intel_check_word (int name, unsigned int + /* No need to look further. */ + break; + } ++ else if (byte == 0xff) ++ { ++ /* CPUID leaf 0x4 contains all the information. We need to ++ iterate over it. */ ++ unsigned int eax; ++ unsigned int ebx; ++ unsigned int ecx; ++ unsigned int edx; ++ ++ unsigned int round = 0; ++ while (1) ++ { ++ asm volatile ("xchgl %%ebx, %1; cpuid; xchgl %%ebx, %1" ++ : "=a" (eax), "=r" (ebx), "=c" (ecx), "=d" (edx) ++ : "0" (4), "2" (round)); ++ ++ enum { null = 0, data = 1, inst = 2, uni = 3 } type = eax & 0x1f; ++ if (type == null) ++ /* That was the end. */ ++ break; ++ ++ unsigned int level = (eax >> 5) & 0x7; ++ ++ if ((level == 1 && type == data ++ && folded_rel_name == M(_SC_LEVEL1_DCACHE_SIZE)) ++ || (level == 1 && type == inst ++ && folded_rel_name == M(_SC_LEVEL1_ICACHE_SIZE)) ++ || (level == 2 && folded_rel_name == M(_SC_LEVEL2_CACHE_SIZE)) ++ || (level == 3 && folded_rel_name == M(_SC_LEVEL3_CACHE_SIZE)) ++ || (level == 4 && folded_rel_name == M(_SC_LEVEL4_CACHE_SIZE))) ++ { ++ unsigned int offset = M(name) - folded_rel_name; ++ ++ if (offset == 0) ++ /* Cache size. */ ++ return (((ebx >> 22) + 1) ++ * (((ebx >> 12) & 0x3ff) + 1) ++ * ((ebx & 0xfff) + 1) ++ * (ecx + 1)); ++ if (offset == 1) ++ return (ebx >> 22) + 1; ++ ++ assert (offset == 2); ++ return (ebx & 0xfff) + 1; ++ } ++ ++ ++round; ++ } ++ /* There is no other cache information anywhere else. */ ++ break; ++ } + else + { + if (byte == 0x49 && folded_rel_name == M(_SC_LEVEL3_CACHE_SIZE)) +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/cacheinfo.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/cacheinfo.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/cacheinfo.c +@@ -181,6 +181,57 @@ intel_check_word (int name, unsigned int + /* No need to look further. */ + break; + } ++ else if (byte == 0xff) ++ { ++ /* CPUID leaf 0x4 contains all the information. We need to ++ iterate over it. */ ++ unsigned int eax; ++ unsigned int ebx; ++ unsigned int ecx; ++ unsigned int edx; ++ ++ unsigned int round = 0; ++ while (1) ++ { ++ asm volatile ("xchgl %%ebx, %1; cpuid; xchgl %%ebx, %1" ++ : "=a" (eax), "=r" (ebx), "=c" (ecx), "=d" (edx) ++ : "0" (4), "2" (round)); ++ ++ enum { null = 0, data = 1, inst = 2, uni = 3 } type = eax & 0x1f; ++ if (type == null) ++ /* That was the end. */ ++ break; ++ ++ unsigned int level = (eax >> 5) & 0x7; ++ ++ if ((level == 1 && type == data ++ && folded_rel_name == M(_SC_LEVEL1_DCACHE_SIZE)) ++ || (level == 1 && type == inst ++ && folded_rel_name == M(_SC_LEVEL1_ICACHE_SIZE)) ++ || (level == 2 && folded_rel_name == M(_SC_LEVEL2_CACHE_SIZE)) ++ || (level == 3 && folded_rel_name == M(_SC_LEVEL3_CACHE_SIZE)) ++ || (level == 4 && folded_rel_name == M(_SC_LEVEL4_CACHE_SIZE))) ++ { ++ unsigned int offset = M(name) - folded_rel_name; ++ ++ if (offset == 0) ++ /* Cache size. */ ++ return (((ebx >> 22) + 1) ++ * (((ebx >> 12) & 0x3ff) + 1) ++ * ((ebx & 0xfff) + 1) ++ * (ecx + 1)); ++ if (offset == 1) ++ return (ebx >> 22) + 1; ++ ++ assert (offset == 2); ++ return (ebx & 0xfff) + 1; ++ } ++ ++ ++round; ++ } ++ /* There is no other cache information anywhere else. */ ++ break; ++ } + else + { + if (byte == 0x49 && folded_rel_name == M(_SC_LEVEL3_CACHE_SIZE)) diff --git a/src/patches/glibc/glibc-rh692838.patch b/src/patches/glibc/glibc-rh692838.patch new file mode 100644 index 000000000..aa2adf14f --- /dev/null +++ b/src/patches/glibc/glibc-rh692838.patch @@ -0,0 +1,6165 @@ +2011-05-09 Ulrich Drepper + + [BZ #12541] + * locales/ar_IN: Update currency_symbol. + * locales/as_IN: Likewise. + * locales/bn_IN: Likewise. + * locales/en_IN: Likewise. + * locales/gu_IN: Likewise. + * locales/hi_IN: Likewise. + * locales/kn_IN: Likewise. + * locales/kok_IN: Likewise. + * locales/ks_IN: Likewise. + * locales/ml_IN: Likewise. + * locales/mr_IN: Likewise. + * locales/or_IN: Likewise. + * locales/pa_IN: Likewise. + * locales/sa_IN: Likewise. + * locales/sd_IN: Likewise. + * locales/ta_IN: Likewise. + * locales/te_IN: Likewise. + Patch by pravin.d.s@gmail.com. + +2011-05-09 Ulrich Drepper + + [BZ #12711] + * locale/C-translit.h.in: Add entry for U20B9. + Patch by pravin.d.s@gmail.com. + +Index: glibc-2.12-2-gc4ccff1/locale/C-translit.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/locale/C-translit.h ++++ glibc-2.12-2-gc4ccff1/locale/C-translit.h +@@ -1,4 +1,4 @@ +-#define NTRANSLIT 1353 ++#define NTRANSLIT 1354 + static const uint32_t translit_from_idx[] = + { + 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, +@@ -113,7 +113,7 @@ static const uint32_t translit_from_idx[ + 2616, 2618, 2620, 2622, 2624, 2626, 2628, 2630, 2632, 2634, 2636, 2638, + 2640, 2642, 2644, 2646, 2648, 2650, 2652, 2654, 2656, 2658, 2660, 2662, + 2664, 2666, 2668, 2670, 2672, 2674, 2676, 2678, 2680, 2682, 2684, 2686, +- 2688, 2690, 2692, 2694, 2696, 2698, 2700, 2702, 2704 ++ 2688, 2690, 2692, 2694, 2696, 2698, 2700, 2702, 2704, 2706 + }; + static const wchar_t translit_from_tbl[] = + L"\x00a0" L"\0" L"\x00a9" L"\0" L"\x00ab" L"\0" L"\x00ad" L"\0" L"\x00ae" +@@ -134,334 +134,334 @@ static const wchar_t translit_from_tbl[] + L"\0" L"\x2035" L"\0" L"\x2036" L"\0" L"\x2037" L"\0" L"\x2039" L"\0" + L"\x203a" L"\0" L"\x203c" L"\0" L"\x2044" L"\0" L"\x2047" L"\0" L"\x2048" + L"\0" L"\x2049" L"\0" L"\x205f" L"\0" L"\x2060" L"\0" L"\x2061" L"\0" +- L"\x2062" L"\0" L"\x2063" L"\0" L"\x20a8" L"\0" L"\x20ac" L"\0" L"\x2100" +- L"\0" L"\x2101" L"\0" L"\x2102" L"\0" L"\x2105" L"\0" L"\x2106" L"\0" +- L"\x210a" L"\0" L"\x210b" L"\0" L"\x210c" L"\0" L"\x210d" L"\0" L"\x210e" +- L"\0" L"\x2110" L"\0" L"\x2111" L"\0" L"\x2112" L"\0" L"\x2113" L"\0" +- L"\x2115" L"\0" L"\x2116" L"\0" L"\x2119" L"\0" L"\x211a" L"\0" L"\x211b" +- L"\0" L"\x211c" L"\0" L"\x211d" L"\0" L"\x2121" L"\0" L"\x2122" L"\0" +- L"\x2124" L"\0" L"\x2126" L"\0" L"\x2128" L"\0" L"\x212c" L"\0" L"\x212d" +- L"\0" L"\x212e" L"\0" L"\x212f" L"\0" L"\x2130" L"\0" L"\x2131" L"\0" +- L"\x2133" L"\0" L"\x2134" L"\0" L"\x2139" L"\0" L"\x2145" L"\0" L"\x2146" +- L"\0" L"\x2147" L"\0" L"\x2148" L"\0" L"\x2149" L"\0" L"\x2153" L"\0" +- L"\x2154" L"\0" L"\x2155" L"\0" L"\x2156" L"\0" L"\x2157" L"\0" L"\x2158" +- L"\0" L"\x2159" L"\0" L"\x215a" L"\0" L"\x215b" L"\0" L"\x215c" L"\0" +- L"\x215d" L"\0" L"\x215e" L"\0" L"\x215f" L"\0" L"\x2160" L"\0" L"\x2161" +- L"\0" L"\x2162" L"\0" L"\x2163" L"\0" L"\x2164" L"\0" L"\x2165" L"\0" +- L"\x2166" L"\0" L"\x2167" L"\0" L"\x2168" L"\0" L"\x2169" L"\0" L"\x216a" +- L"\0" L"\x216b" L"\0" L"\x216c" L"\0" L"\x216d" L"\0" L"\x216e" L"\0" +- L"\x216f" L"\0" L"\x2170" L"\0" L"\x2171" L"\0" L"\x2172" L"\0" L"\x2173" +- L"\0" L"\x2174" L"\0" L"\x2175" L"\0" L"\x2176" L"\0" L"\x2177" L"\0" +- L"\x2178" L"\0" L"\x2179" L"\0" L"\x217a" L"\0" L"\x217b" L"\0" L"\x217c" +- L"\0" L"\x217d" L"\0" L"\x217e" L"\0" L"\x217f" L"\0" L"\x2190" L"\0" +- L"\x2192" L"\0" L"\x2194" L"\0" L"\x21d0" L"\0" L"\x21d2" L"\0" L"\x21d4" +- L"\0" L"\x2212" L"\0" L"\x2215" L"\0" L"\x2216" L"\0" L"\x2217" L"\0" +- L"\x2223" L"\0" L"\x2236" L"\0" L"\x223c" L"\0" L"\x2264" L"\0" L"\x2265" +- L"\0" L"\x226a" L"\0" L"\x226b" L"\0" L"\x22d8" L"\0" L"\x22d9" L"\0" +- L"\x2400" L"\0" L"\x2401" L"\0" L"\x2402" L"\0" L"\x2403" L"\0" L"\x2404" +- L"\0" L"\x2405" L"\0" L"\x2406" L"\0" L"\x2407" L"\0" L"\x2408" L"\0" +- L"\x2409" L"\0" L"\x240a" L"\0" L"\x240b" L"\0" L"\x240c" L"\0" L"\x240d" +- L"\0" L"\x240e" L"\0" L"\x240f" L"\0" L"\x2410" L"\0" L"\x2411" L"\0" +- L"\x2412" L"\0" L"\x2413" L"\0" L"\x2414" L"\0" L"\x2415" L"\0" L"\x2416" +- L"\0" L"\x2417" L"\0" L"\x2418" L"\0" L"\x2419" L"\0" L"\x241a" L"\0" +- L"\x241b" L"\0" L"\x241c" L"\0" L"\x241d" L"\0" L"\x241e" L"\0" L"\x241f" +- L"\0" L"\x2420" L"\0" L"\x2421" L"\0" L"\x2423" L"\0" L"\x2424" L"\0" +- L"\x2460" L"\0" L"\x2461" L"\0" L"\x2462" L"\0" L"\x2463" L"\0" L"\x2464" +- L"\0" L"\x2465" L"\0" L"\x2466" L"\0" L"\x2467" L"\0" L"\x2468" L"\0" +- L"\x2469" L"\0" L"\x246a" L"\0" L"\x246b" L"\0" L"\x246c" L"\0" L"\x246d" +- L"\0" L"\x246e" L"\0" L"\x246f" L"\0" L"\x2470" L"\0" L"\x2471" L"\0" +- L"\x2472" L"\0" L"\x2473" L"\0" L"\x2474" L"\0" L"\x2475" L"\0" L"\x2476" +- L"\0" L"\x2477" L"\0" L"\x2478" L"\0" L"\x2479" L"\0" L"\x247a" L"\0" +- L"\x247b" L"\0" L"\x247c" L"\0" L"\x247d" L"\0" L"\x247e" L"\0" L"\x247f" +- L"\0" L"\x2480" L"\0" L"\x2481" L"\0" L"\x2482" L"\0" L"\x2483" L"\0" +- L"\x2484" L"\0" L"\x2485" L"\0" L"\x2486" L"\0" L"\x2487" L"\0" L"\x2488" +- L"\0" L"\x2489" L"\0" L"\x248a" L"\0" L"\x248b" L"\0" L"\x248c" L"\0" +- L"\x248d" L"\0" L"\x248e" L"\0" L"\x248f" L"\0" L"\x2490" L"\0" L"\x2491" +- L"\0" L"\x2492" L"\0" L"\x2493" L"\0" L"\x2494" L"\0" L"\x2495" L"\0" +- L"\x2496" L"\0" L"\x2497" L"\0" L"\x2498" L"\0" L"\x2499" L"\0" L"\x249a" +- L"\0" L"\x249b" L"\0" L"\x249c" L"\0" L"\x249d" L"\0" L"\x249e" L"\0" +- L"\x249f" L"\0" L"\x24a0" L"\0" L"\x24a1" L"\0" L"\x24a2" L"\0" L"\x24a3" +- L"\0" L"\x24a4" L"\0" L"\x24a5" L"\0" L"\x24a6" L"\0" L"\x24a7" L"\0" +- L"\x24a8" L"\0" L"\x24a9" L"\0" L"\x24aa" L"\0" L"\x24ab" L"\0" L"\x24ac" +- L"\0" L"\x24ad" L"\0" L"\x24ae" L"\0" L"\x24af" L"\0" L"\x24b0" L"\0" +- L"\x24b1" L"\0" L"\x24b2" L"\0" L"\x24b3" L"\0" L"\x24b4" L"\0" L"\x24b5" +- L"\0" L"\x24b6" L"\0" L"\x24b7" L"\0" L"\x24b8" L"\0" L"\x24b9" L"\0" +- L"\x24ba" L"\0" L"\x24bb" L"\0" L"\x24bc" L"\0" L"\x24bd" L"\0" L"\x24be" +- L"\0" L"\x24bf" L"\0" L"\x24c0" L"\0" L"\x24c1" L"\0" L"\x24c2" L"\0" +- L"\x24c3" L"\0" L"\x24c4" L"\0" L"\x24c5" L"\0" L"\x24c6" L"\0" L"\x24c7" +- L"\0" L"\x24c8" L"\0" L"\x24c9" L"\0" L"\x24ca" L"\0" L"\x24cb" L"\0" +- L"\x24cc" L"\0" L"\x24cd" L"\0" L"\x24ce" L"\0" L"\x24cf" L"\0" L"\x24d0" +- L"\0" L"\x24d1" L"\0" L"\x24d2" L"\0" L"\x24d3" L"\0" L"\x24d4" L"\0" +- L"\x24d5" L"\0" L"\x24d6" L"\0" L"\x24d7" L"\0" L"\x24d8" L"\0" L"\x24d9" +- L"\0" L"\x24da" L"\0" L"\x24db" L"\0" L"\x24dc" L"\0" L"\x24dd" L"\0" +- L"\x24de" L"\0" L"\x24df" L"\0" L"\x24e0" L"\0" L"\x24e1" L"\0" L"\x24e2" +- L"\0" L"\x24e3" L"\0" L"\x24e4" L"\0" L"\x24e5" L"\0" L"\x24e6" L"\0" +- L"\x24e7" L"\0" L"\x24e8" L"\0" L"\x24e9" L"\0" L"\x24ea" L"\0" L"\x2500" +- L"\0" L"\x2502" L"\0" L"\x250c" L"\0" L"\x2510" L"\0" L"\x2514" L"\0" +- L"\x2518" L"\0" L"\x251c" L"\0" L"\x2524" L"\0" L"\x252c" L"\0" L"\x2534" +- L"\0" L"\x253c" L"\0" L"\x25e6" L"\0" L"\x2a74" L"\0" L"\x2a75" L"\0" +- L"\x2a76" L"\0" L"\x3000" L"\0" L"\x30a0" L"\0" L"\x3251" L"\0" L"\x3252" +- L"\0" L"\x3253" L"\0" L"\x3254" L"\0" L"\x3255" L"\0" L"\x3256" L"\0" +- L"\x3257" L"\0" L"\x3258" L"\0" L"\x3259" L"\0" L"\x325a" L"\0" L"\x325b" +- L"\0" L"\x325c" L"\0" L"\x325d" L"\0" L"\x325e" L"\0" L"\x325f" L"\0" +- L"\x32b1" L"\0" L"\x32b2" L"\0" L"\x32b3" L"\0" L"\x32b4" L"\0" L"\x32b5" +- L"\0" L"\x32b6" L"\0" L"\x32b7" L"\0" L"\x32b8" L"\0" L"\x32b9" L"\0" +- L"\x32ba" L"\0" L"\x32bb" L"\0" L"\x32bc" L"\0" L"\x32bd" L"\0" L"\x32be" +- L"\0" L"\x32bf" L"\0" L"\x3371" L"\0" L"\x3372" L"\0" L"\x3373" L"\0" +- L"\x3374" L"\0" L"\x3375" L"\0" L"\x3376" L"\0" L"\x3380" L"\0" L"\x3381" +- L"\0" L"\x3382" L"\0" L"\x3383" L"\0" L"\x3384" L"\0" L"\x3385" L"\0" +- L"\x3386" L"\0" L"\x3387" L"\0" L"\x3388" L"\0" L"\x3389" L"\0" L"\x338a" +- L"\0" L"\x338b" L"\0" L"\x338c" L"\0" L"\x338d" L"\0" L"\x338e" L"\0" +- L"\x338f" L"\0" L"\x3390" L"\0" L"\x3391" L"\0" L"\x3392" L"\0" L"\x3393" +- L"\0" L"\x3394" L"\0" L"\x3395" L"\0" L"\x3396" L"\0" L"\x3397" L"\0" +- L"\x3398" L"\0" L"\x3399" L"\0" L"\x339a" L"\0" L"\x339b" L"\0" L"\x339c" +- L"\0" L"\x339d" L"\0" L"\x339e" L"\0" L"\x339f" L"\0" L"\x33a0" L"\0" +- L"\x33a1" L"\0" L"\x33a2" L"\0" L"\x33a3" L"\0" L"\x33a4" L"\0" L"\x33a5" +- L"\0" L"\x33a6" L"\0" L"\x33a7" L"\0" L"\x33a8" L"\0" L"\x33a9" L"\0" +- L"\x33aa" L"\0" L"\x33ab" L"\0" L"\x33ac" L"\0" L"\x33ad" L"\0" L"\x33ae" +- L"\0" L"\x33af" L"\0" L"\x33b0" L"\0" L"\x33b1" L"\0" L"\x33b2" L"\0" +- L"\x33b3" L"\0" L"\x33b4" L"\0" L"\x33b5" L"\0" L"\x33b6" L"\0" L"\x33b7" +- L"\0" L"\x33b8" L"\0" L"\x33b9" L"\0" L"\x33ba" L"\0" L"\x33bb" L"\0" +- L"\x33bc" L"\0" L"\x33bd" L"\0" L"\x33be" L"\0" L"\x33bf" L"\0" L"\x33c2" +- L"\0" L"\x33c3" L"\0" L"\x33c4" L"\0" L"\x33c5" L"\0" L"\x33c6" L"\0" +- L"\x33c7" L"\0" L"\x33c8" L"\0" L"\x33c9" L"\0" L"\x33ca" L"\0" L"\x33cb" +- L"\0" L"\x33cc" L"\0" L"\x33cd" L"\0" L"\x33ce" L"\0" L"\x33cf" L"\0" +- L"\x33d0" L"\0" L"\x33d1" L"\0" L"\x33d2" L"\0" L"\x33d3" L"\0" L"\x33d4" +- L"\0" L"\x33d5" L"\0" L"\x33d6" L"\0" L"\x33d7" L"\0" L"\x33d8" L"\0" +- L"\x33d9" L"\0" L"\x33da" L"\0" L"\x33db" L"\0" L"\x33dc" L"\0" L"\x33dd" +- L"\0" L"\xfb00" L"\0" L"\xfb01" L"\0" L"\xfb02" L"\0" L"\xfb03" L"\0" +- L"\xfb04" L"\0" L"\xfb06" L"\0" L"\xfb29" L"\0" L"\xfe00" L"\0" L"\xfe01" +- L"\0" L"\xfe02" L"\0" L"\xfe03" L"\0" L"\xfe04" L"\0" L"\xfe05" L"\0" +- L"\xfe06" L"\0" L"\xfe07" L"\0" L"\xfe08" L"\0" L"\xfe09" L"\0" L"\xfe0a" +- L"\0" L"\xfe0b" L"\0" L"\xfe0c" L"\0" L"\xfe0d" L"\0" L"\xfe0e" L"\0" +- L"\xfe0f" L"\0" L"\xfe4d" L"\0" L"\xfe4e" L"\0" L"\xfe4f" L"\0" L"\xfe50" +- L"\0" L"\xfe52" L"\0" L"\xfe54" L"\0" L"\xfe55" L"\0" L"\xfe56" L"\0" +- L"\xfe57" L"\0" L"\xfe59" L"\0" L"\xfe5a" L"\0" L"\xfe5b" L"\0" L"\xfe5c" +- L"\0" L"\xfe5f" L"\0" L"\xfe60" L"\0" L"\xfe61" L"\0" L"\xfe62" L"\0" +- L"\xfe63" L"\0" L"\xfe64" L"\0" L"\xfe65" L"\0" L"\xfe66" L"\0" L"\xfe68" +- L"\0" L"\xfe69" L"\0" L"\xfe6a" L"\0" L"\xfe6b" L"\0" L"\xfeff" L"\0" +- L"\xff01" L"\0" L"\xff02" L"\0" L"\xff03" L"\0" L"\xff04" L"\0" L"\xff05" +- L"\0" L"\xff06" L"\0" L"\xff07" L"\0" L"\xff08" L"\0" L"\xff09" L"\0" +- L"\xff0a" L"\0" L"\xff0b" L"\0" L"\xff0c" L"\0" L"\xff0d" L"\0" L"\xff0e" +- L"\0" L"\xff0f" L"\0" L"\xff10" L"\0" L"\xff11" L"\0" L"\xff12" L"\0" +- L"\xff13" L"\0" L"\xff14" L"\0" L"\xff15" L"\0" L"\xff16" L"\0" L"\xff17" +- L"\0" L"\xff18" L"\0" L"\xff19" L"\0" L"\xff1a" L"\0" L"\xff1b" L"\0" +- L"\xff1c" L"\0" L"\xff1d" L"\0" L"\xff1e" L"\0" L"\xff1f" L"\0" L"\xff20" +- L"\0" L"\xff21" L"\0" L"\xff22" L"\0" L"\xff23" L"\0" L"\xff24" L"\0" +- L"\xff25" L"\0" L"\xff26" L"\0" L"\xff27" L"\0" L"\xff28" L"\0" L"\xff29" +- L"\0" L"\xff2a" L"\0" L"\xff2b" L"\0" L"\xff2c" L"\0" L"\xff2d" L"\0" +- L"\xff2e" L"\0" L"\xff2f" L"\0" L"\xff30" L"\0" L"\xff31" L"\0" L"\xff32" +- L"\0" L"\xff33" L"\0" L"\xff34" L"\0" L"\xff35" L"\0" L"\xff36" L"\0" +- L"\xff37" L"\0" L"\xff38" L"\0" L"\xff39" L"\0" L"\xff3a" L"\0" L"\xff3b" +- L"\0" L"\xff3c" L"\0" L"\xff3d" L"\0" L"\xff3e" L"\0" L"\xff3f" L"\0" +- L"\xff40" L"\0" L"\xff41" L"\0" L"\xff42" L"\0" L"\xff43" L"\0" L"\xff44" +- L"\0" L"\xff45" L"\0" L"\xff46" L"\0" L"\xff47" L"\0" L"\xff48" L"\0" +- L"\xff49" L"\0" L"\xff4a" L"\0" L"\xff4b" L"\0" L"\xff4c" L"\0" L"\xff4d" +- L"\0" L"\xff4e" L"\0" L"\xff4f" L"\0" L"\xff50" L"\0" L"\xff51" L"\0" +- L"\xff52" L"\0" L"\xff53" L"\0" L"\xff54" L"\0" L"\xff55" L"\0" L"\xff56" +- L"\0" L"\xff57" L"\0" L"\xff58" L"\0" L"\xff59" L"\0" L"\xff5a" L"\0" +- L"\xff5b" L"\0" L"\xff5c" L"\0" L"\xff5d" L"\0" L"\xff5e" L"\0" +- L"\x0001d400" L"\0" L"\x0001d401" L"\0" L"\x0001d402" L"\0" L"\x0001d403" +- L"\0" L"\x0001d404" L"\0" L"\x0001d405" L"\0" L"\x0001d406" L"\0" +- L"\x0001d407" L"\0" L"\x0001d408" L"\0" L"\x0001d409" L"\0" L"\x0001d40a" +- L"\0" L"\x0001d40b" L"\0" L"\x0001d40c" L"\0" L"\x0001d40d" L"\0" +- L"\x0001d40e" L"\0" L"\x0001d40f" L"\0" L"\x0001d410" L"\0" L"\x0001d411" +- L"\0" L"\x0001d412" L"\0" L"\x0001d413" L"\0" L"\x0001d414" L"\0" +- L"\x0001d415" L"\0" L"\x0001d416" L"\0" L"\x0001d417" L"\0" L"\x0001d418" +- L"\0" L"\x0001d419" L"\0" L"\x0001d41a" L"\0" L"\x0001d41b" L"\0" +- L"\x0001d41c" L"\0" L"\x0001d41d" L"\0" L"\x0001d41e" L"\0" L"\x0001d41f" +- L"\0" L"\x0001d420" L"\0" L"\x0001d421" L"\0" L"\x0001d422" L"\0" +- L"\x0001d423" L"\0" L"\x0001d424" L"\0" L"\x0001d425" L"\0" L"\x0001d426" +- L"\0" L"\x0001d427" L"\0" L"\x0001d428" L"\0" L"\x0001d429" L"\0" +- L"\x0001d42a" L"\0" L"\x0001d42b" L"\0" L"\x0001d42c" L"\0" L"\x0001d42d" +- L"\0" L"\x0001d42e" L"\0" L"\x0001d42f" L"\0" L"\x0001d430" L"\0" +- L"\x0001d431" L"\0" L"\x0001d432" L"\0" L"\x0001d433" L"\0" L"\x0001d434" +- L"\0" L"\x0001d435" L"\0" L"\x0001d436" L"\0" L"\x0001d437" L"\0" +- L"\x0001d438" L"\0" L"\x0001d439" L"\0" L"\x0001d43a" L"\0" L"\x0001d43b" +- L"\0" L"\x0001d43c" L"\0" L"\x0001d43d" L"\0" L"\x0001d43e" L"\0" +- L"\x0001d43f" L"\0" L"\x0001d440" L"\0" L"\x0001d441" L"\0" L"\x0001d442" +- L"\0" L"\x0001d443" L"\0" L"\x0001d444" L"\0" L"\x0001d445" L"\0" +- L"\x0001d446" L"\0" L"\x0001d447" L"\0" L"\x0001d448" L"\0" L"\x0001d449" +- L"\0" L"\x0001d44a" L"\0" L"\x0001d44b" L"\0" L"\x0001d44c" L"\0" +- L"\x0001d44d" L"\0" L"\x0001d44e" L"\0" L"\x0001d44f" L"\0" L"\x0001d450" +- L"\0" L"\x0001d451" L"\0" L"\x0001d452" L"\0" L"\x0001d453" L"\0" +- L"\x0001d454" L"\0" L"\x0001d456" L"\0" L"\x0001d457" L"\0" L"\x0001d458" +- L"\0" L"\x0001d459" L"\0" L"\x0001d45a" L"\0" L"\x0001d45b" L"\0" +- L"\x0001d45c" L"\0" L"\x0001d45d" L"\0" L"\x0001d45e" L"\0" L"\x0001d45f" +- L"\0" L"\x0001d460" L"\0" L"\x0001d461" L"\0" L"\x0001d462" L"\0" +- L"\x0001d463" L"\0" L"\x0001d464" L"\0" L"\x0001d465" L"\0" L"\x0001d466" +- L"\0" L"\x0001d467" L"\0" L"\x0001d468" L"\0" L"\x0001d469" L"\0" +- L"\x0001d46a" L"\0" L"\x0001d46b" L"\0" L"\x0001d46c" L"\0" L"\x0001d46d" +- L"\0" L"\x0001d46e" L"\0" L"\x0001d46f" L"\0" L"\x0001d470" L"\0" +- L"\x0001d471" L"\0" L"\x0001d472" L"\0" L"\x0001d473" L"\0" L"\x0001d474" +- L"\0" L"\x0001d475" L"\0" L"\x0001d476" L"\0" L"\x0001d477" L"\0" +- L"\x0001d478" L"\0" L"\x0001d479" L"\0" L"\x0001d47a" L"\0" L"\x0001d47b" +- L"\0" L"\x0001d47c" L"\0" L"\x0001d47d" L"\0" L"\x0001d47e" L"\0" +- L"\x0001d47f" L"\0" L"\x0001d480" L"\0" L"\x0001d481" L"\0" L"\x0001d482" +- L"\0" L"\x0001d483" L"\0" L"\x0001d484" L"\0" L"\x0001d485" L"\0" +- L"\x0001d486" L"\0" L"\x0001d487" L"\0" L"\x0001d488" L"\0" L"\x0001d489" +- L"\0" L"\x0001d48a" L"\0" L"\x0001d48b" L"\0" L"\x0001d48c" L"\0" +- L"\x0001d48d" L"\0" L"\x0001d48e" L"\0" L"\x0001d48f" L"\0" L"\x0001d490" +- L"\0" L"\x0001d491" L"\0" L"\x0001d492" L"\0" L"\x0001d493" L"\0" +- L"\x0001d494" L"\0" L"\x0001d495" L"\0" L"\x0001d496" L"\0" L"\x0001d497" +- L"\0" L"\x0001d498" L"\0" L"\x0001d499" L"\0" L"\x0001d49a" L"\0" +- L"\x0001d49b" L"\0" L"\x0001d49c" L"\0" L"\x0001d49e" L"\0" L"\x0001d49f" +- L"\0" L"\x0001d4a2" L"\0" L"\x0001d4a5" L"\0" L"\x0001d4a6" L"\0" +- L"\x0001d4a9" L"\0" L"\x0001d4aa" L"\0" L"\x0001d4ab" L"\0" L"\x0001d4ac" +- L"\0" L"\x0001d4ae" L"\0" L"\x0001d4af" L"\0" L"\x0001d4b0" L"\0" +- L"\x0001d4b1" L"\0" L"\x0001d4b2" L"\0" L"\x0001d4b3" L"\0" L"\x0001d4b4" +- L"\0" L"\x0001d4b5" L"\0" L"\x0001d4b6" L"\0" L"\x0001d4b7" L"\0" +- L"\x0001d4b8" L"\0" L"\x0001d4b9" L"\0" L"\x0001d4bb" L"\0" L"\x0001d4bd" +- L"\0" L"\x0001d4be" L"\0" L"\x0001d4bf" L"\0" L"\x0001d4c0" L"\0" +- L"\x0001d4c2" L"\0" L"\x0001d4c3" L"\0" L"\x0001d4c5" L"\0" L"\x0001d4c6" +- L"\0" L"\x0001d4c7" L"\0" L"\x0001d4c8" L"\0" L"\x0001d4c9" L"\0" +- L"\x0001d4ca" L"\0" L"\x0001d4cb" L"\0" L"\x0001d4cc" L"\0" L"\x0001d4cd" +- L"\0" L"\x0001d4ce" L"\0" L"\x0001d4cf" L"\0" L"\x0001d4d0" L"\0" +- L"\x0001d4d1" L"\0" L"\x0001d4d2" L"\0" L"\x0001d4d3" L"\0" L"\x0001d4d4" +- L"\0" L"\x0001d4d5" L"\0" L"\x0001d4d6" L"\0" L"\x0001d4d7" L"\0" +- L"\x0001d4d8" L"\0" L"\x0001d4d9" L"\0" L"\x0001d4da" L"\0" L"\x0001d4db" +- L"\0" L"\x0001d4dc" L"\0" L"\x0001d4dd" L"\0" L"\x0001d4de" L"\0" +- L"\x0001d4df" L"\0" L"\x0001d4e0" L"\0" L"\x0001d4e1" L"\0" L"\x0001d4e2" +- L"\0" L"\x0001d4e3" L"\0" L"\x0001d4e4" L"\0" L"\x0001d4e5" L"\0" +- L"\x0001d4e6" L"\0" L"\x0001d4e7" L"\0" L"\x0001d4e8" L"\0" L"\x0001d4e9" +- L"\0" L"\x0001d4ea" L"\0" L"\x0001d4eb" L"\0" L"\x0001d4ec" L"\0" +- L"\x0001d4ed" L"\0" L"\x0001d4ee" L"\0" L"\x0001d4ef" L"\0" L"\x0001d4f0" +- L"\0" L"\x0001d4f1" L"\0" L"\x0001d4f2" L"\0" L"\x0001d4f3" L"\0" +- L"\x0001d4f4" L"\0" L"\x0001d4f5" L"\0" L"\x0001d4f6" L"\0" L"\x0001d4f7" +- L"\0" L"\x0001d4f8" L"\0" L"\x0001d4f9" L"\0" L"\x0001d4fa" L"\0" +- L"\x0001d4fb" L"\0" L"\x0001d4fc" L"\0" L"\x0001d4fd" L"\0" L"\x0001d4fe" +- L"\0" L"\x0001d4ff" L"\0" L"\x0001d500" L"\0" L"\x0001d501" L"\0" +- L"\x0001d502" L"\0" L"\x0001d503" L"\0" L"\x0001d504" L"\0" L"\x0001d505" +- L"\0" L"\x0001d507" L"\0" L"\x0001d508" L"\0" L"\x0001d509" L"\0" +- L"\x0001d50a" L"\0" L"\x0001d50d" L"\0" L"\x0001d50e" L"\0" L"\x0001d50f" +- L"\0" L"\x0001d510" L"\0" L"\x0001d511" L"\0" L"\x0001d512" L"\0" +- L"\x0001d513" L"\0" L"\x0001d514" L"\0" L"\x0001d516" L"\0" L"\x0001d517" +- L"\0" L"\x0001d518" L"\0" L"\x0001d519" L"\0" L"\x0001d51a" L"\0" +- L"\x0001d51b" L"\0" L"\x0001d51c" L"\0" L"\x0001d51e" L"\0" L"\x0001d51f" +- L"\0" L"\x0001d520" L"\0" L"\x0001d521" L"\0" L"\x0001d522" L"\0" +- L"\x0001d523" L"\0" L"\x0001d524" L"\0" L"\x0001d525" L"\0" L"\x0001d526" +- L"\0" L"\x0001d527" L"\0" L"\x0001d528" L"\0" L"\x0001d529" L"\0" +- L"\x0001d52a" L"\0" L"\x0001d52b" L"\0" L"\x0001d52c" L"\0" L"\x0001d52d" +- L"\0" L"\x0001d52e" L"\0" L"\x0001d52f" L"\0" L"\x0001d530" L"\0" +- L"\x0001d531" L"\0" L"\x0001d532" L"\0" L"\x0001d533" L"\0" L"\x0001d534" +- L"\0" L"\x0001d535" L"\0" L"\x0001d536" L"\0" L"\x0001d537" L"\0" +- L"\x0001d538" L"\0" L"\x0001d539" L"\0" L"\x0001d53b" L"\0" L"\x0001d53c" +- L"\0" L"\x0001d53d" L"\0" L"\x0001d53e" L"\0" L"\x0001d540" L"\0" +- L"\x0001d541" L"\0" L"\x0001d542" L"\0" L"\x0001d543" L"\0" L"\x0001d544" +- L"\0" L"\x0001d546" L"\0" L"\x0001d54a" L"\0" L"\x0001d54b" L"\0" +- L"\x0001d54c" L"\0" L"\x0001d54d" L"\0" L"\x0001d54e" L"\0" L"\x0001d54f" +- L"\0" L"\x0001d550" L"\0" L"\x0001d552" L"\0" L"\x0001d553" L"\0" +- L"\x0001d554" L"\0" L"\x0001d555" L"\0" L"\x0001d556" L"\0" L"\x0001d557" +- L"\0" L"\x0001d558" L"\0" L"\x0001d559" L"\0" L"\x0001d55a" L"\0" +- L"\x0001d55b" L"\0" L"\x0001d55c" L"\0" L"\x0001d55d" L"\0" L"\x0001d55e" +- L"\0" L"\x0001d55f" L"\0" L"\x0001d560" L"\0" L"\x0001d561" L"\0" +- L"\x0001d562" L"\0" L"\x0001d563" L"\0" L"\x0001d564" L"\0" L"\x0001d565" +- L"\0" L"\x0001d566" L"\0" L"\x0001d567" L"\0" L"\x0001d568" L"\0" +- L"\x0001d569" L"\0" L"\x0001d56a" L"\0" L"\x0001d56b" L"\0" L"\x0001d56c" +- L"\0" L"\x0001d56d" L"\0" L"\x0001d56e" L"\0" L"\x0001d56f" L"\0" +- L"\x0001d570" L"\0" L"\x0001d571" L"\0" L"\x0001d572" L"\0" L"\x0001d573" +- L"\0" L"\x0001d574" L"\0" L"\x0001d575" L"\0" L"\x0001d576" L"\0" +- L"\x0001d577" L"\0" L"\x0001d578" L"\0" L"\x0001d579" L"\0" L"\x0001d57a" +- L"\0" L"\x0001d57b" L"\0" L"\x0001d57c" L"\0" L"\x0001d57d" L"\0" +- L"\x0001d57e" L"\0" L"\x0001d57f" L"\0" L"\x0001d580" L"\0" L"\x0001d581" +- L"\0" L"\x0001d582" L"\0" L"\x0001d583" L"\0" L"\x0001d584" L"\0" +- L"\x0001d585" L"\0" L"\x0001d586" L"\0" L"\x0001d587" L"\0" L"\x0001d588" +- L"\0" L"\x0001d589" L"\0" L"\x0001d58a" L"\0" L"\x0001d58b" L"\0" +- L"\x0001d58c" L"\0" L"\x0001d58d" L"\0" L"\x0001d58e" L"\0" L"\x0001d58f" +- L"\0" L"\x0001d590" L"\0" L"\x0001d591" L"\0" L"\x0001d592" L"\0" +- L"\x0001d593" L"\0" L"\x0001d594" L"\0" L"\x0001d595" L"\0" L"\x0001d596" +- L"\0" L"\x0001d597" L"\0" L"\x0001d598" L"\0" L"\x0001d599" L"\0" +- L"\x0001d59a" L"\0" L"\x0001d59b" L"\0" L"\x0001d59c" L"\0" L"\x0001d59d" +- L"\0" L"\x0001d59e" L"\0" L"\x0001d59f" L"\0" L"\x0001d5a0" L"\0" +- L"\x0001d5a1" L"\0" L"\x0001d5a2" L"\0" L"\x0001d5a3" L"\0" L"\x0001d5a4" +- L"\0" L"\x0001d5a5" L"\0" L"\x0001d5a6" L"\0" L"\x0001d5a7" L"\0" +- L"\x0001d5a8" L"\0" L"\x0001d5a9" L"\0" L"\x0001d5aa" L"\0" L"\x0001d5ab" +- L"\0" L"\x0001d5ac" L"\0" L"\x0001d5ad" L"\0" L"\x0001d5ae" L"\0" +- L"\x0001d5af" L"\0" L"\x0001d5b0" L"\0" L"\x0001d5b1" L"\0" L"\x0001d5b2" +- L"\0" L"\x0001d5b3" L"\0" L"\x0001d5b4" L"\0" L"\x0001d5b5" L"\0" +- L"\x0001d5b6" L"\0" L"\x0001d5b7" L"\0" L"\x0001d5b8" L"\0" L"\x0001d5b9" +- L"\0" L"\x0001d5ba" L"\0" L"\x0001d5bb" L"\0" L"\x0001d5bc" L"\0" +- L"\x0001d5bd" L"\0" L"\x0001d5be" L"\0" L"\x0001d5bf" L"\0" L"\x0001d5c0" +- L"\0" L"\x0001d5c1" L"\0" L"\x0001d5c2" L"\0" L"\x0001d5c3" L"\0" +- L"\x0001d5c4" L"\0" L"\x0001d5c5" L"\0" L"\x0001d5c6" L"\0" L"\x0001d5c7" +- L"\0" L"\x0001d5c8" L"\0" L"\x0001d5c9" L"\0" L"\x0001d5ca" L"\0" +- L"\x0001d5cb" L"\0" L"\x0001d5cc" L"\0" L"\x0001d5cd" L"\0" L"\x0001d5ce" +- L"\0" L"\x0001d5cf" L"\0" L"\x0001d5d0" L"\0" L"\x0001d5d1" L"\0" +- L"\x0001d5d2" L"\0" L"\x0001d5d3" L"\0" L"\x0001d5d4" L"\0" L"\x0001d5d5" +- L"\0" L"\x0001d5d6" L"\0" L"\x0001d5d7" L"\0" L"\x0001d5d8" L"\0" +- L"\x0001d5d9" L"\0" L"\x0001d5da" L"\0" L"\x0001d5db" L"\0" L"\x0001d5dc" +- L"\0" L"\x0001d5dd" L"\0" L"\x0001d5de" L"\0" L"\x0001d5df" L"\0" +- L"\x0001d5e0" L"\0" L"\x0001d5e1" L"\0" L"\x0001d5e2" L"\0" L"\x0001d5e3" +- L"\0" L"\x0001d5e4" L"\0" L"\x0001d5e5" L"\0" L"\x0001d5e6" L"\0" +- L"\x0001d5e7" L"\0" L"\x0001d5e8" L"\0" L"\x0001d5e9" L"\0" L"\x0001d5ea" +- L"\0" L"\x0001d5eb" L"\0" L"\x0001d5ec" L"\0" L"\x0001d5ed" L"\0" +- L"\x0001d5ee" L"\0" L"\x0001d5ef" L"\0" L"\x0001d5f0" L"\0" L"\x0001d5f1" +- L"\0" L"\x0001d5f2" L"\0" L"\x0001d5f3" L"\0" L"\x0001d5f4" L"\0" +- L"\x0001d5f5" L"\0" L"\x0001d5f6" L"\0" L"\x0001d5f7" L"\0" L"\x0001d5f8" +- L"\0" L"\x0001d5f9" L"\0" L"\x0001d5fa" L"\0" L"\x0001d5fb" L"\0" +- L"\x0001d5fc" L"\0" L"\x0001d5fd" L"\0" L"\x0001d5fe" L"\0" L"\x0001d5ff" +- L"\0" L"\x0001d600" L"\0" L"\x0001d601" L"\0" L"\x0001d602" L"\0" +- L"\x0001d603" L"\0" L"\x0001d604" L"\0" L"\x0001d605" L"\0" L"\x0001d606" +- L"\0" L"\x0001d607" L"\0" L"\x0001d608" L"\0" L"\x0001d609" L"\0" +- L"\x0001d60a" L"\0" L"\x0001d60b" L"\0" L"\x0001d60c" L"\0" L"\x0001d60d" +- L"\0" L"\x0001d60e" L"\0" L"\x0001d60f" L"\0" L"\x0001d610" L"\0" +- L"\x0001d611" L"\0" L"\x0001d612" L"\0" L"\x0001d613" L"\0" L"\x0001d614" +- L"\0" L"\x0001d615" L"\0" L"\x0001d616" L"\0" L"\x0001d617" L"\0" +- L"\x0001d618" L"\0" L"\x0001d619" L"\0" L"\x0001d61a" L"\0" L"\x0001d61b" +- L"\0" L"\x0001d61c" L"\0" L"\x0001d61d" L"\0" L"\x0001d61e" L"\0" +- L"\x0001d61f" L"\0" L"\x0001d620" L"\0" L"\x0001d621" L"\0" L"\x0001d622" +- L"\0" L"\x0001d623" L"\0" L"\x0001d624" L"\0" L"\x0001d625" L"\0" +- L"\x0001d626" L"\0" L"\x0001d627" L"\0" L"\x0001d628" L"\0" L"\x0001d629" +- L"\0" L"\x0001d62a" L"\0" L"\x0001d62b" L"\0" L"\x0001d62c" L"\0" +- L"\x0001d62d" L"\0" L"\x0001d62e" L"\0" L"\x0001d62f" L"\0" L"\x0001d630" +- L"\0" L"\x0001d631" L"\0" L"\x0001d632" L"\0" L"\x0001d633" L"\0" +- L"\x0001d634" L"\0" L"\x0001d635" L"\0" L"\x0001d636" L"\0" L"\x0001d637" +- L"\0" L"\x0001d638" L"\0" L"\x0001d639" L"\0" L"\x0001d63a" L"\0" +- L"\x0001d63b" L"\0" L"\x0001d63c" L"\0" L"\x0001d63d" L"\0" L"\x0001d63e" +- L"\0" L"\x0001d63f" L"\0" L"\x0001d640" L"\0" L"\x0001d641" L"\0" +- L"\x0001d642" L"\0" L"\x0001d643" L"\0" L"\x0001d644" L"\0" L"\x0001d645" +- L"\0" L"\x0001d646" L"\0" L"\x0001d647" L"\0" L"\x0001d648" L"\0" +- L"\x0001d649" L"\0" L"\x0001d64a" L"\0" L"\x0001d64b" L"\0" L"\x0001d64c" +- L"\0" L"\x0001d64d" L"\0" L"\x0001d64e" L"\0" L"\x0001d64f" L"\0" +- L"\x0001d650" L"\0" L"\x0001d651" L"\0" L"\x0001d652" L"\0" L"\x0001d653" +- L"\0" L"\x0001d654" L"\0" L"\x0001d655" L"\0" L"\x0001d656" L"\0" +- L"\x0001d657" L"\0" L"\x0001d658" L"\0" L"\x0001d659" L"\0" L"\x0001d65a" +- L"\0" L"\x0001d65b" L"\0" L"\x0001d65c" L"\0" L"\x0001d65d" L"\0" +- L"\x0001d65e" L"\0" L"\x0001d65f" L"\0" L"\x0001d660" L"\0" L"\x0001d661" +- L"\0" L"\x0001d662" L"\0" L"\x0001d663" L"\0" L"\x0001d664" L"\0" +- L"\x0001d665" L"\0" L"\x0001d666" L"\0" L"\x0001d667" L"\0" L"\x0001d668" +- L"\0" L"\x0001d669" L"\0" L"\x0001d66a" L"\0" L"\x0001d66b" L"\0" +- L"\x0001d66c" L"\0" L"\x0001d66d" L"\0" L"\x0001d66e" L"\0" L"\x0001d66f" +- L"\0" L"\x0001d670" L"\0" L"\x0001d671" L"\0" L"\x0001d672" L"\0" +- L"\x0001d673" L"\0" L"\x0001d674" L"\0" L"\x0001d675" L"\0" L"\x0001d676" +- L"\0" L"\x0001d677" L"\0" L"\x0001d678" L"\0" L"\x0001d679" L"\0" +- L"\x0001d67a" L"\0" L"\x0001d67b" L"\0" L"\x0001d67c" L"\0" L"\x0001d67d" +- L"\0" L"\x0001d67e" L"\0" L"\x0001d67f" L"\0" L"\x0001d680" L"\0" +- L"\x0001d681" L"\0" L"\x0001d682" L"\0" L"\x0001d683" L"\0" L"\x0001d684" +- L"\0" L"\x0001d685" L"\0" L"\x0001d686" L"\0" L"\x0001d687" L"\0" +- L"\x0001d688" L"\0" L"\x0001d689" L"\0" L"\x0001d68a" L"\0" L"\x0001d68b" +- L"\0" L"\x0001d68c" L"\0" L"\x0001d68d" L"\0" L"\x0001d68e" L"\0" +- L"\x0001d68f" L"\0" L"\x0001d690" L"\0" L"\x0001d691" L"\0" L"\x0001d692" +- L"\0" L"\x0001d693" L"\0" L"\x0001d694" L"\0" L"\x0001d695" L"\0" +- L"\x0001d696" L"\0" L"\x0001d697" L"\0" L"\x0001d698" L"\0" L"\x0001d699" +- L"\0" L"\x0001d69a" L"\0" L"\x0001d69b" L"\0" L"\x0001d69c" L"\0" +- L"\x0001d69d" L"\0" L"\x0001d69e" L"\0" L"\x0001d69f" L"\0" L"\x0001d6a0" +- L"\0" L"\x0001d6a1" L"\0" L"\x0001d6a2" L"\0" L"\x0001d6a3" L"\0" +- L"\x0001d7ce" L"\0" L"\x0001d7cf" L"\0" L"\x0001d7d0" L"\0" L"\x0001d7d1" +- L"\0" L"\x0001d7d2" L"\0" L"\x0001d7d3" L"\0" L"\x0001d7d4" L"\0" +- L"\x0001d7d5" L"\0" L"\x0001d7d6" L"\0" L"\x0001d7d7" L"\0" L"\x0001d7d8" +- L"\0" L"\x0001d7d9" L"\0" L"\x0001d7da" L"\0" L"\x0001d7db" L"\0" +- L"\x0001d7dc" L"\0" L"\x0001d7dd" L"\0" L"\x0001d7de" L"\0" L"\x0001d7df" +- L"\0" L"\x0001d7e0" L"\0" L"\x0001d7e1" L"\0" L"\x0001d7e2" L"\0" +- L"\x0001d7e3" L"\0" L"\x0001d7e4" L"\0" L"\x0001d7e5" L"\0" L"\x0001d7e6" +- L"\0" L"\x0001d7e7" L"\0" L"\x0001d7e8" L"\0" L"\x0001d7e9" L"\0" +- L"\x0001d7ea" L"\0" L"\x0001d7eb" L"\0" L"\x0001d7ec" L"\0" L"\x0001d7ed" +- L"\0" L"\x0001d7ee" L"\0" L"\x0001d7ef" L"\0" L"\x0001d7f0" L"\0" +- L"\x0001d7f1" L"\0" L"\x0001d7f2" L"\0" L"\x0001d7f3" L"\0" L"\x0001d7f4" +- L"\0" L"\x0001d7f5" L"\0" L"\x0001d7f6" L"\0" L"\x0001d7f7" L"\0" +- L"\x0001d7f8" L"\0" L"\x0001d7f9" L"\0" L"\x0001d7fa" L"\0" L"\x0001d7fb" +- L"\0" L"\x0001d7fc" L"\0" L"\x0001d7fd" L"\0" L"\x0001d7fe" L"\0" +- L"\x0001d7ff"; ++ L"\x2062" L"\0" L"\x2063" L"\0" L"\x20a8" L"\0" L"\x20ac" L"\0" L"\x20b9" ++ L"\0" L"\x2100" L"\0" L"\x2101" L"\0" L"\x2102" L"\0" L"\x2105" L"\0" ++ L"\x2106" L"\0" L"\x210a" L"\0" L"\x210b" L"\0" L"\x210c" L"\0" L"\x210d" ++ L"\0" L"\x210e" L"\0" L"\x2110" L"\0" L"\x2111" L"\0" L"\x2112" L"\0" ++ L"\x2113" L"\0" L"\x2115" L"\0" L"\x2116" L"\0" L"\x2119" L"\0" L"\x211a" ++ L"\0" L"\x211b" L"\0" L"\x211c" L"\0" L"\x211d" L"\0" L"\x2121" L"\0" ++ L"\x2122" L"\0" L"\x2124" L"\0" L"\x2126" L"\0" L"\x2128" L"\0" L"\x212c" ++ L"\0" L"\x212d" L"\0" L"\x212e" L"\0" L"\x212f" L"\0" L"\x2130" L"\0" ++ L"\x2131" L"\0" L"\x2133" L"\0" L"\x2134" L"\0" L"\x2139" L"\0" L"\x2145" ++ L"\0" L"\x2146" L"\0" L"\x2147" L"\0" L"\x2148" L"\0" L"\x2149" L"\0" ++ L"\x2153" L"\0" L"\x2154" L"\0" L"\x2155" L"\0" L"\x2156" L"\0" L"\x2157" ++ L"\0" L"\x2158" L"\0" L"\x2159" L"\0" L"\x215a" L"\0" L"\x215b" L"\0" ++ L"\x215c" L"\0" L"\x215d" L"\0" L"\x215e" L"\0" L"\x215f" L"\0" L"\x2160" ++ L"\0" L"\x2161" L"\0" L"\x2162" L"\0" L"\x2163" L"\0" L"\x2164" L"\0" ++ L"\x2165" L"\0" L"\x2166" L"\0" L"\x2167" L"\0" L"\x2168" L"\0" L"\x2169" ++ L"\0" L"\x216a" L"\0" L"\x216b" L"\0" L"\x216c" L"\0" L"\x216d" L"\0" ++ L"\x216e" L"\0" L"\x216f" L"\0" L"\x2170" L"\0" L"\x2171" L"\0" L"\x2172" ++ L"\0" L"\x2173" L"\0" L"\x2174" L"\0" L"\x2175" L"\0" L"\x2176" L"\0" ++ L"\x2177" L"\0" L"\x2178" L"\0" L"\x2179" L"\0" L"\x217a" L"\0" L"\x217b" ++ L"\0" L"\x217c" L"\0" L"\x217d" L"\0" L"\x217e" L"\0" L"\x217f" L"\0" ++ L"\x2190" L"\0" L"\x2192" L"\0" L"\x2194" L"\0" L"\x21d0" L"\0" L"\x21d2" ++ L"\0" L"\x21d4" L"\0" L"\x2212" L"\0" L"\x2215" L"\0" L"\x2216" L"\0" ++ L"\x2217" L"\0" L"\x2223" L"\0" L"\x2236" L"\0" L"\x223c" L"\0" L"\x2264" ++ L"\0" L"\x2265" L"\0" L"\x226a" L"\0" L"\x226b" L"\0" L"\x22d8" L"\0" ++ L"\x22d9" L"\0" L"\x2400" L"\0" L"\x2401" L"\0" L"\x2402" L"\0" L"\x2403" ++ L"\0" L"\x2404" L"\0" L"\x2405" L"\0" L"\x2406" L"\0" L"\x2407" L"\0" ++ L"\x2408" L"\0" L"\x2409" L"\0" L"\x240a" L"\0" L"\x240b" L"\0" L"\x240c" ++ L"\0" L"\x240d" L"\0" L"\x240e" L"\0" L"\x240f" L"\0" L"\x2410" L"\0" ++ L"\x2411" L"\0" L"\x2412" L"\0" L"\x2413" L"\0" L"\x2414" L"\0" L"\x2415" ++ L"\0" L"\x2416" L"\0" L"\x2417" L"\0" L"\x2418" L"\0" L"\x2419" L"\0" ++ L"\x241a" L"\0" L"\x241b" L"\0" L"\x241c" L"\0" L"\x241d" L"\0" L"\x241e" ++ L"\0" L"\x241f" L"\0" L"\x2420" L"\0" L"\x2421" L"\0" L"\x2423" L"\0" ++ L"\x2424" L"\0" L"\x2460" L"\0" L"\x2461" L"\0" L"\x2462" L"\0" L"\x2463" ++ L"\0" L"\x2464" L"\0" L"\x2465" L"\0" L"\x2466" L"\0" L"\x2467" L"\0" ++ L"\x2468" L"\0" L"\x2469" L"\0" L"\x246a" L"\0" L"\x246b" L"\0" L"\x246c" ++ L"\0" L"\x246d" L"\0" L"\x246e" L"\0" L"\x246f" L"\0" L"\x2470" L"\0" ++ L"\x2471" L"\0" L"\x2472" L"\0" L"\x2473" L"\0" L"\x2474" L"\0" L"\x2475" ++ L"\0" L"\x2476" L"\0" L"\x2477" L"\0" L"\x2478" L"\0" L"\x2479" L"\0" ++ L"\x247a" L"\0" L"\x247b" L"\0" L"\x247c" L"\0" L"\x247d" L"\0" L"\x247e" ++ L"\0" L"\x247f" L"\0" L"\x2480" L"\0" L"\x2481" L"\0" L"\x2482" L"\0" ++ L"\x2483" L"\0" L"\x2484" L"\0" L"\x2485" L"\0" L"\x2486" L"\0" L"\x2487" ++ L"\0" L"\x2488" L"\0" L"\x2489" L"\0" L"\x248a" L"\0" L"\x248b" L"\0" ++ L"\x248c" L"\0" L"\x248d" L"\0" L"\x248e" L"\0" L"\x248f" L"\0" L"\x2490" ++ L"\0" L"\x2491" L"\0" L"\x2492" L"\0" L"\x2493" L"\0" L"\x2494" L"\0" ++ L"\x2495" L"\0" L"\x2496" L"\0" L"\x2497" L"\0" L"\x2498" L"\0" L"\x2499" ++ L"\0" L"\x249a" L"\0" L"\x249b" L"\0" L"\x249c" L"\0" L"\x249d" L"\0" ++ L"\x249e" L"\0" L"\x249f" L"\0" L"\x24a0" L"\0" L"\x24a1" L"\0" L"\x24a2" ++ L"\0" L"\x24a3" L"\0" L"\x24a4" L"\0" L"\x24a5" L"\0" L"\x24a6" L"\0" ++ L"\x24a7" L"\0" L"\x24a8" L"\0" L"\x24a9" L"\0" L"\x24aa" L"\0" L"\x24ab" ++ L"\0" L"\x24ac" L"\0" L"\x24ad" L"\0" L"\x24ae" L"\0" L"\x24af" L"\0" ++ L"\x24b0" L"\0" L"\x24b1" L"\0" L"\x24b2" L"\0" L"\x24b3" L"\0" L"\x24b4" ++ L"\0" L"\x24b5" L"\0" L"\x24b6" L"\0" L"\x24b7" L"\0" L"\x24b8" L"\0" ++ L"\x24b9" L"\0" L"\x24ba" L"\0" L"\x24bb" L"\0" L"\x24bc" L"\0" L"\x24bd" ++ L"\0" L"\x24be" L"\0" L"\x24bf" L"\0" L"\x24c0" L"\0" L"\x24c1" L"\0" ++ L"\x24c2" L"\0" L"\x24c3" L"\0" L"\x24c4" L"\0" L"\x24c5" L"\0" L"\x24c6" ++ L"\0" L"\x24c7" L"\0" L"\x24c8" L"\0" L"\x24c9" L"\0" L"\x24ca" L"\0" ++ L"\x24cb" L"\0" L"\x24cc" L"\0" L"\x24cd" L"\0" L"\x24ce" L"\0" L"\x24cf" ++ L"\0" L"\x24d0" L"\0" L"\x24d1" L"\0" L"\x24d2" L"\0" L"\x24d3" L"\0" ++ L"\x24d4" L"\0" L"\x24d5" L"\0" L"\x24d6" L"\0" L"\x24d7" L"\0" L"\x24d8" ++ L"\0" L"\x24d9" L"\0" L"\x24da" L"\0" L"\x24db" L"\0" L"\x24dc" L"\0" ++ L"\x24dd" L"\0" L"\x24de" L"\0" L"\x24df" L"\0" L"\x24e0" L"\0" L"\x24e1" ++ L"\0" L"\x24e2" L"\0" L"\x24e3" L"\0" L"\x24e4" L"\0" L"\x24e5" L"\0" ++ L"\x24e6" L"\0" L"\x24e7" L"\0" L"\x24e8" L"\0" L"\x24e9" L"\0" L"\x24ea" ++ L"\0" L"\x2500" L"\0" L"\x2502" L"\0" L"\x250c" L"\0" L"\x2510" L"\0" ++ L"\x2514" L"\0" L"\x2518" L"\0" L"\x251c" L"\0" L"\x2524" L"\0" L"\x252c" ++ L"\0" L"\x2534" L"\0" L"\x253c" L"\0" L"\x25e6" L"\0" L"\x2a74" L"\0" ++ L"\x2a75" L"\0" L"\x2a76" L"\0" L"\x3000" L"\0" L"\x30a0" L"\0" L"\x3251" ++ L"\0" L"\x3252" L"\0" L"\x3253" L"\0" L"\x3254" L"\0" L"\x3255" L"\0" ++ L"\x3256" L"\0" L"\x3257" L"\0" L"\x3258" L"\0" L"\x3259" L"\0" L"\x325a" ++ L"\0" L"\x325b" L"\0" L"\x325c" L"\0" L"\x325d" L"\0" L"\x325e" L"\0" ++ L"\x325f" L"\0" L"\x32b1" L"\0" L"\x32b2" L"\0" L"\x32b3" L"\0" L"\x32b4" ++ L"\0" L"\x32b5" L"\0" L"\x32b6" L"\0" L"\x32b7" L"\0" L"\x32b8" L"\0" ++ L"\x32b9" L"\0" L"\x32ba" L"\0" L"\x32bb" L"\0" L"\x32bc" L"\0" L"\x32bd" ++ L"\0" L"\x32be" L"\0" L"\x32bf" L"\0" L"\x3371" L"\0" L"\x3372" L"\0" ++ L"\x3373" L"\0" L"\x3374" L"\0" L"\x3375" L"\0" L"\x3376" L"\0" L"\x3380" ++ L"\0" L"\x3381" L"\0" L"\x3382" L"\0" L"\x3383" L"\0" L"\x3384" L"\0" ++ L"\x3385" L"\0" L"\x3386" L"\0" L"\x3387" L"\0" L"\x3388" L"\0" L"\x3389" ++ L"\0" L"\x338a" L"\0" L"\x338b" L"\0" L"\x338c" L"\0" L"\x338d" L"\0" ++ L"\x338e" L"\0" L"\x338f" L"\0" L"\x3390" L"\0" L"\x3391" L"\0" L"\x3392" ++ L"\0" L"\x3393" L"\0" L"\x3394" L"\0" L"\x3395" L"\0" L"\x3396" L"\0" ++ L"\x3397" L"\0" L"\x3398" L"\0" L"\x3399" L"\0" L"\x339a" L"\0" L"\x339b" ++ L"\0" L"\x339c" L"\0" L"\x339d" L"\0" L"\x339e" L"\0" L"\x339f" L"\0" ++ L"\x33a0" L"\0" L"\x33a1" L"\0" L"\x33a2" L"\0" L"\x33a3" L"\0" L"\x33a4" ++ L"\0" L"\x33a5" L"\0" L"\x33a6" L"\0" L"\x33a7" L"\0" L"\x33a8" L"\0" ++ L"\x33a9" L"\0" L"\x33aa" L"\0" L"\x33ab" L"\0" L"\x33ac" L"\0" L"\x33ad" ++ L"\0" L"\x33ae" L"\0" L"\x33af" L"\0" L"\x33b0" L"\0" L"\x33b1" L"\0" ++ L"\x33b2" L"\0" L"\x33b3" L"\0" L"\x33b4" L"\0" L"\x33b5" L"\0" L"\x33b6" ++ L"\0" L"\x33b7" L"\0" L"\x33b8" L"\0" L"\x33b9" L"\0" L"\x33ba" L"\0" ++ L"\x33bb" L"\0" L"\x33bc" L"\0" L"\x33bd" L"\0" L"\x33be" L"\0" L"\x33bf" ++ L"\0" L"\x33c2" L"\0" L"\x33c3" L"\0" L"\x33c4" L"\0" L"\x33c5" L"\0" ++ L"\x33c6" L"\0" L"\x33c7" L"\0" L"\x33c8" L"\0" L"\x33c9" L"\0" L"\x33ca" ++ L"\0" L"\x33cb" L"\0" L"\x33cc" L"\0" L"\x33cd" L"\0" L"\x33ce" L"\0" ++ L"\x33cf" L"\0" L"\x33d0" L"\0" L"\x33d1" L"\0" L"\x33d2" L"\0" L"\x33d3" ++ L"\0" L"\x33d4" L"\0" L"\x33d5" L"\0" L"\x33d6" L"\0" L"\x33d7" L"\0" ++ L"\x33d8" L"\0" L"\x33d9" L"\0" L"\x33da" L"\0" L"\x33db" L"\0" L"\x33dc" ++ L"\0" L"\x33dd" L"\0" L"\xfb00" L"\0" L"\xfb01" L"\0" L"\xfb02" L"\0" ++ L"\xfb03" L"\0" L"\xfb04" L"\0" L"\xfb06" L"\0" L"\xfb29" L"\0" L"\xfe00" ++ L"\0" L"\xfe01" L"\0" L"\xfe02" L"\0" L"\xfe03" L"\0" L"\xfe04" L"\0" ++ L"\xfe05" L"\0" L"\xfe06" L"\0" L"\xfe07" L"\0" L"\xfe08" L"\0" L"\xfe09" ++ L"\0" L"\xfe0a" L"\0" L"\xfe0b" L"\0" L"\xfe0c" L"\0" L"\xfe0d" L"\0" ++ L"\xfe0e" L"\0" L"\xfe0f" L"\0" L"\xfe4d" L"\0" L"\xfe4e" L"\0" L"\xfe4f" ++ L"\0" L"\xfe50" L"\0" L"\xfe52" L"\0" L"\xfe54" L"\0" L"\xfe55" L"\0" ++ L"\xfe56" L"\0" L"\xfe57" L"\0" L"\xfe59" L"\0" L"\xfe5a" L"\0" L"\xfe5b" ++ L"\0" L"\xfe5c" L"\0" L"\xfe5f" L"\0" L"\xfe60" L"\0" L"\xfe61" L"\0" ++ L"\xfe62" L"\0" L"\xfe63" L"\0" L"\xfe64" L"\0" L"\xfe65" L"\0" L"\xfe66" ++ L"\0" L"\xfe68" L"\0" L"\xfe69" L"\0" L"\xfe6a" L"\0" L"\xfe6b" L"\0" ++ L"\xfeff" L"\0" L"\xff01" L"\0" L"\xff02" L"\0" L"\xff03" L"\0" L"\xff04" ++ L"\0" L"\xff05" L"\0" L"\xff06" L"\0" L"\xff07" L"\0" L"\xff08" L"\0" ++ L"\xff09" L"\0" L"\xff0a" L"\0" L"\xff0b" L"\0" L"\xff0c" L"\0" L"\xff0d" ++ L"\0" L"\xff0e" L"\0" L"\xff0f" L"\0" L"\xff10" L"\0" L"\xff11" L"\0" ++ L"\xff12" L"\0" L"\xff13" L"\0" L"\xff14" L"\0" L"\xff15" L"\0" L"\xff16" ++ L"\0" L"\xff17" L"\0" L"\xff18" L"\0" L"\xff19" L"\0" L"\xff1a" L"\0" ++ L"\xff1b" L"\0" L"\xff1c" L"\0" L"\xff1d" L"\0" L"\xff1e" L"\0" L"\xff1f" ++ L"\0" L"\xff20" L"\0" L"\xff21" L"\0" L"\xff22" L"\0" L"\xff23" L"\0" ++ L"\xff24" L"\0" L"\xff25" L"\0" L"\xff26" L"\0" L"\xff27" L"\0" L"\xff28" ++ L"\0" L"\xff29" L"\0" L"\xff2a" L"\0" L"\xff2b" L"\0" L"\xff2c" L"\0" ++ L"\xff2d" L"\0" L"\xff2e" L"\0" L"\xff2f" L"\0" L"\xff30" L"\0" L"\xff31" ++ L"\0" L"\xff32" L"\0" L"\xff33" L"\0" L"\xff34" L"\0" L"\xff35" L"\0" ++ L"\xff36" L"\0" L"\xff37" L"\0" L"\xff38" L"\0" L"\xff39" L"\0" L"\xff3a" ++ L"\0" L"\xff3b" L"\0" L"\xff3c" L"\0" L"\xff3d" L"\0" L"\xff3e" L"\0" ++ L"\xff3f" L"\0" L"\xff40" L"\0" L"\xff41" L"\0" L"\xff42" L"\0" L"\xff43" ++ L"\0" L"\xff44" L"\0" L"\xff45" L"\0" L"\xff46" L"\0" L"\xff47" L"\0" ++ L"\xff48" L"\0" L"\xff49" L"\0" L"\xff4a" L"\0" L"\xff4b" L"\0" L"\xff4c" ++ L"\0" L"\xff4d" L"\0" L"\xff4e" L"\0" L"\xff4f" L"\0" L"\xff50" L"\0" ++ L"\xff51" L"\0" L"\xff52" L"\0" L"\xff53" L"\0" L"\xff54" L"\0" L"\xff55" ++ L"\0" L"\xff56" L"\0" L"\xff57" L"\0" L"\xff58" L"\0" L"\xff59" L"\0" ++ L"\xff5a" L"\0" L"\xff5b" L"\0" L"\xff5c" L"\0" L"\xff5d" L"\0" L"\xff5e" ++ L"\0" L"\x0001d400" L"\0" L"\x0001d401" L"\0" L"\x0001d402" L"\0" ++ L"\x0001d403" L"\0" L"\x0001d404" L"\0" L"\x0001d405" L"\0" L"\x0001d406" ++ L"\0" L"\x0001d407" L"\0" L"\x0001d408" L"\0" L"\x0001d409" L"\0" ++ L"\x0001d40a" L"\0" L"\x0001d40b" L"\0" L"\x0001d40c" L"\0" L"\x0001d40d" ++ L"\0" L"\x0001d40e" L"\0" L"\x0001d40f" L"\0" L"\x0001d410" L"\0" ++ L"\x0001d411" L"\0" L"\x0001d412" L"\0" L"\x0001d413" L"\0" L"\x0001d414" ++ L"\0" L"\x0001d415" L"\0" L"\x0001d416" L"\0" L"\x0001d417" L"\0" ++ L"\x0001d418" L"\0" L"\x0001d419" L"\0" L"\x0001d41a" L"\0" L"\x0001d41b" ++ L"\0" L"\x0001d41c" L"\0" L"\x0001d41d" L"\0" L"\x0001d41e" L"\0" ++ L"\x0001d41f" L"\0" L"\x0001d420" L"\0" L"\x0001d421" L"\0" L"\x0001d422" ++ L"\0" L"\x0001d423" L"\0" L"\x0001d424" L"\0" L"\x0001d425" L"\0" ++ L"\x0001d426" L"\0" L"\x0001d427" L"\0" L"\x0001d428" L"\0" L"\x0001d429" ++ L"\0" L"\x0001d42a" L"\0" L"\x0001d42b" L"\0" L"\x0001d42c" L"\0" ++ L"\x0001d42d" L"\0" L"\x0001d42e" L"\0" L"\x0001d42f" L"\0" L"\x0001d430" ++ L"\0" L"\x0001d431" L"\0" L"\x0001d432" L"\0" L"\x0001d433" L"\0" ++ L"\x0001d434" L"\0" L"\x0001d435" L"\0" L"\x0001d436" L"\0" L"\x0001d437" ++ L"\0" L"\x0001d438" L"\0" L"\x0001d439" L"\0" L"\x0001d43a" L"\0" ++ L"\x0001d43b" L"\0" L"\x0001d43c" L"\0" L"\x0001d43d" L"\0" L"\x0001d43e" ++ L"\0" L"\x0001d43f" L"\0" L"\x0001d440" L"\0" L"\x0001d441" L"\0" ++ L"\x0001d442" L"\0" L"\x0001d443" L"\0" L"\x0001d444" L"\0" L"\x0001d445" ++ L"\0" L"\x0001d446" L"\0" L"\x0001d447" L"\0" L"\x0001d448" L"\0" ++ L"\x0001d449" L"\0" L"\x0001d44a" L"\0" L"\x0001d44b" L"\0" L"\x0001d44c" ++ L"\0" L"\x0001d44d" L"\0" L"\x0001d44e" L"\0" L"\x0001d44f" L"\0" ++ L"\x0001d450" L"\0" L"\x0001d451" L"\0" L"\x0001d452" L"\0" L"\x0001d453" ++ L"\0" L"\x0001d454" L"\0" L"\x0001d456" L"\0" L"\x0001d457" L"\0" ++ L"\x0001d458" L"\0" L"\x0001d459" L"\0" L"\x0001d45a" L"\0" L"\x0001d45b" ++ L"\0" L"\x0001d45c" L"\0" L"\x0001d45d" L"\0" L"\x0001d45e" L"\0" ++ L"\x0001d45f" L"\0" L"\x0001d460" L"\0" L"\x0001d461" L"\0" L"\x0001d462" ++ L"\0" L"\x0001d463" L"\0" L"\x0001d464" L"\0" L"\x0001d465" L"\0" ++ L"\x0001d466" L"\0" L"\x0001d467" L"\0" L"\x0001d468" L"\0" L"\x0001d469" ++ L"\0" L"\x0001d46a" L"\0" L"\x0001d46b" L"\0" L"\x0001d46c" L"\0" ++ L"\x0001d46d" L"\0" L"\x0001d46e" L"\0" L"\x0001d46f" L"\0" L"\x0001d470" ++ L"\0" L"\x0001d471" L"\0" L"\x0001d472" L"\0" L"\x0001d473" L"\0" ++ L"\x0001d474" L"\0" L"\x0001d475" L"\0" L"\x0001d476" L"\0" L"\x0001d477" ++ L"\0" L"\x0001d478" L"\0" L"\x0001d479" L"\0" L"\x0001d47a" L"\0" ++ L"\x0001d47b" L"\0" L"\x0001d47c" L"\0" L"\x0001d47d" L"\0" L"\x0001d47e" ++ L"\0" L"\x0001d47f" L"\0" L"\x0001d480" L"\0" L"\x0001d481" L"\0" ++ L"\x0001d482" L"\0" L"\x0001d483" L"\0" L"\x0001d484" L"\0" L"\x0001d485" ++ L"\0" L"\x0001d486" L"\0" L"\x0001d487" L"\0" L"\x0001d488" L"\0" ++ L"\x0001d489" L"\0" L"\x0001d48a" L"\0" L"\x0001d48b" L"\0" L"\x0001d48c" ++ L"\0" L"\x0001d48d" L"\0" L"\x0001d48e" L"\0" L"\x0001d48f" L"\0" ++ L"\x0001d490" L"\0" L"\x0001d491" L"\0" L"\x0001d492" L"\0" L"\x0001d493" ++ L"\0" L"\x0001d494" L"\0" L"\x0001d495" L"\0" L"\x0001d496" L"\0" ++ L"\x0001d497" L"\0" L"\x0001d498" L"\0" L"\x0001d499" L"\0" L"\x0001d49a" ++ L"\0" L"\x0001d49b" L"\0" L"\x0001d49c" L"\0" L"\x0001d49e" L"\0" ++ L"\x0001d49f" L"\0" L"\x0001d4a2" L"\0" L"\x0001d4a5" L"\0" L"\x0001d4a6" ++ L"\0" L"\x0001d4a9" L"\0" L"\x0001d4aa" L"\0" L"\x0001d4ab" L"\0" ++ L"\x0001d4ac" L"\0" L"\x0001d4ae" L"\0" L"\x0001d4af" L"\0" L"\x0001d4b0" ++ L"\0" L"\x0001d4b1" L"\0" L"\x0001d4b2" L"\0" L"\x0001d4b3" L"\0" ++ L"\x0001d4b4" L"\0" L"\x0001d4b5" L"\0" L"\x0001d4b6" L"\0" L"\x0001d4b7" ++ L"\0" L"\x0001d4b8" L"\0" L"\x0001d4b9" L"\0" L"\x0001d4bb" L"\0" ++ L"\x0001d4bd" L"\0" L"\x0001d4be" L"\0" L"\x0001d4bf" L"\0" L"\x0001d4c0" ++ L"\0" L"\x0001d4c2" L"\0" L"\x0001d4c3" L"\0" L"\x0001d4c5" L"\0" ++ L"\x0001d4c6" L"\0" L"\x0001d4c7" L"\0" L"\x0001d4c8" L"\0" L"\x0001d4c9" ++ L"\0" L"\x0001d4ca" L"\0" L"\x0001d4cb" L"\0" L"\x0001d4cc" L"\0" ++ L"\x0001d4cd" L"\0" L"\x0001d4ce" L"\0" L"\x0001d4cf" L"\0" L"\x0001d4d0" ++ L"\0" L"\x0001d4d1" L"\0" L"\x0001d4d2" L"\0" L"\x0001d4d3" L"\0" ++ L"\x0001d4d4" L"\0" L"\x0001d4d5" L"\0" L"\x0001d4d6" L"\0" L"\x0001d4d7" ++ L"\0" L"\x0001d4d8" L"\0" L"\x0001d4d9" L"\0" L"\x0001d4da" L"\0" ++ L"\x0001d4db" L"\0" L"\x0001d4dc" L"\0" L"\x0001d4dd" L"\0" L"\x0001d4de" ++ L"\0" L"\x0001d4df" L"\0" L"\x0001d4e0" L"\0" L"\x0001d4e1" L"\0" ++ L"\x0001d4e2" L"\0" L"\x0001d4e3" L"\0" L"\x0001d4e4" L"\0" L"\x0001d4e5" ++ L"\0" L"\x0001d4e6" L"\0" L"\x0001d4e7" L"\0" L"\x0001d4e8" L"\0" ++ L"\x0001d4e9" L"\0" L"\x0001d4ea" L"\0" L"\x0001d4eb" L"\0" L"\x0001d4ec" ++ L"\0" L"\x0001d4ed" L"\0" L"\x0001d4ee" L"\0" L"\x0001d4ef" L"\0" ++ L"\x0001d4f0" L"\0" L"\x0001d4f1" L"\0" L"\x0001d4f2" L"\0" L"\x0001d4f3" ++ L"\0" L"\x0001d4f4" L"\0" L"\x0001d4f5" L"\0" L"\x0001d4f6" L"\0" ++ L"\x0001d4f7" L"\0" L"\x0001d4f8" L"\0" L"\x0001d4f9" L"\0" L"\x0001d4fa" ++ L"\0" L"\x0001d4fb" L"\0" L"\x0001d4fc" L"\0" L"\x0001d4fd" L"\0" ++ L"\x0001d4fe" L"\0" L"\x0001d4ff" L"\0" L"\x0001d500" L"\0" L"\x0001d501" ++ L"\0" L"\x0001d502" L"\0" L"\x0001d503" L"\0" L"\x0001d504" L"\0" ++ L"\x0001d505" L"\0" L"\x0001d507" L"\0" L"\x0001d508" L"\0" L"\x0001d509" ++ L"\0" L"\x0001d50a" L"\0" L"\x0001d50d" L"\0" L"\x0001d50e" L"\0" ++ L"\x0001d50f" L"\0" L"\x0001d510" L"\0" L"\x0001d511" L"\0" L"\x0001d512" ++ L"\0" L"\x0001d513" L"\0" L"\x0001d514" L"\0" L"\x0001d516" L"\0" ++ L"\x0001d517" L"\0" L"\x0001d518" L"\0" L"\x0001d519" L"\0" L"\x0001d51a" ++ L"\0" L"\x0001d51b" L"\0" L"\x0001d51c" L"\0" L"\x0001d51e" L"\0" ++ L"\x0001d51f" L"\0" L"\x0001d520" L"\0" L"\x0001d521" L"\0" L"\x0001d522" ++ L"\0" L"\x0001d523" L"\0" L"\x0001d524" L"\0" L"\x0001d525" L"\0" ++ L"\x0001d526" L"\0" L"\x0001d527" L"\0" L"\x0001d528" L"\0" L"\x0001d529" ++ L"\0" L"\x0001d52a" L"\0" L"\x0001d52b" L"\0" L"\x0001d52c" L"\0" ++ L"\x0001d52d" L"\0" L"\x0001d52e" L"\0" L"\x0001d52f" L"\0" L"\x0001d530" ++ L"\0" L"\x0001d531" L"\0" L"\x0001d532" L"\0" L"\x0001d533" L"\0" ++ L"\x0001d534" L"\0" L"\x0001d535" L"\0" L"\x0001d536" L"\0" L"\x0001d537" ++ L"\0" L"\x0001d538" L"\0" L"\x0001d539" L"\0" L"\x0001d53b" L"\0" ++ L"\x0001d53c" L"\0" L"\x0001d53d" L"\0" L"\x0001d53e" L"\0" L"\x0001d540" ++ L"\0" L"\x0001d541" L"\0" L"\x0001d542" L"\0" L"\x0001d543" L"\0" ++ L"\x0001d544" L"\0" L"\x0001d546" L"\0" L"\x0001d54a" L"\0" L"\x0001d54b" ++ L"\0" L"\x0001d54c" L"\0" L"\x0001d54d" L"\0" L"\x0001d54e" L"\0" ++ L"\x0001d54f" L"\0" L"\x0001d550" L"\0" L"\x0001d552" L"\0" L"\x0001d553" ++ L"\0" L"\x0001d554" L"\0" L"\x0001d555" L"\0" L"\x0001d556" L"\0" ++ L"\x0001d557" L"\0" L"\x0001d558" L"\0" L"\x0001d559" L"\0" L"\x0001d55a" ++ L"\0" L"\x0001d55b" L"\0" L"\x0001d55c" L"\0" L"\x0001d55d" L"\0" ++ L"\x0001d55e" L"\0" L"\x0001d55f" L"\0" L"\x0001d560" L"\0" L"\x0001d561" ++ L"\0" L"\x0001d562" L"\0" L"\x0001d563" L"\0" L"\x0001d564" L"\0" ++ L"\x0001d565" L"\0" L"\x0001d566" L"\0" L"\x0001d567" L"\0" L"\x0001d568" ++ L"\0" L"\x0001d569" L"\0" L"\x0001d56a" L"\0" L"\x0001d56b" L"\0" ++ L"\x0001d56c" L"\0" L"\x0001d56d" L"\0" L"\x0001d56e" L"\0" L"\x0001d56f" ++ L"\0" L"\x0001d570" L"\0" L"\x0001d571" L"\0" L"\x0001d572" L"\0" ++ L"\x0001d573" L"\0" L"\x0001d574" L"\0" L"\x0001d575" L"\0" L"\x0001d576" ++ L"\0" L"\x0001d577" L"\0" L"\x0001d578" L"\0" L"\x0001d579" L"\0" ++ L"\x0001d57a" L"\0" L"\x0001d57b" L"\0" L"\x0001d57c" L"\0" L"\x0001d57d" ++ L"\0" L"\x0001d57e" L"\0" L"\x0001d57f" L"\0" L"\x0001d580" L"\0" ++ L"\x0001d581" L"\0" L"\x0001d582" L"\0" L"\x0001d583" L"\0" L"\x0001d584" ++ L"\0" L"\x0001d585" L"\0" L"\x0001d586" L"\0" L"\x0001d587" L"\0" ++ L"\x0001d588" L"\0" L"\x0001d589" L"\0" L"\x0001d58a" L"\0" L"\x0001d58b" ++ L"\0" L"\x0001d58c" L"\0" L"\x0001d58d" L"\0" L"\x0001d58e" L"\0" ++ L"\x0001d58f" L"\0" L"\x0001d590" L"\0" L"\x0001d591" L"\0" L"\x0001d592" ++ L"\0" L"\x0001d593" L"\0" L"\x0001d594" L"\0" L"\x0001d595" L"\0" ++ L"\x0001d596" L"\0" L"\x0001d597" L"\0" L"\x0001d598" L"\0" L"\x0001d599" ++ L"\0" L"\x0001d59a" L"\0" L"\x0001d59b" L"\0" L"\x0001d59c" L"\0" ++ L"\x0001d59d" L"\0" L"\x0001d59e" L"\0" L"\x0001d59f" L"\0" L"\x0001d5a0" ++ L"\0" L"\x0001d5a1" L"\0" L"\x0001d5a2" L"\0" L"\x0001d5a3" L"\0" ++ L"\x0001d5a4" L"\0" L"\x0001d5a5" L"\0" L"\x0001d5a6" L"\0" L"\x0001d5a7" ++ L"\0" L"\x0001d5a8" L"\0" L"\x0001d5a9" L"\0" L"\x0001d5aa" L"\0" ++ L"\x0001d5ab" L"\0" L"\x0001d5ac" L"\0" L"\x0001d5ad" L"\0" L"\x0001d5ae" ++ L"\0" L"\x0001d5af" L"\0" L"\x0001d5b0" L"\0" L"\x0001d5b1" L"\0" ++ L"\x0001d5b2" L"\0" L"\x0001d5b3" L"\0" L"\x0001d5b4" L"\0" L"\x0001d5b5" ++ L"\0" L"\x0001d5b6" L"\0" L"\x0001d5b7" L"\0" L"\x0001d5b8" L"\0" ++ L"\x0001d5b9" L"\0" L"\x0001d5ba" L"\0" L"\x0001d5bb" L"\0" L"\x0001d5bc" ++ L"\0" L"\x0001d5bd" L"\0" L"\x0001d5be" L"\0" L"\x0001d5bf" L"\0" ++ L"\x0001d5c0" L"\0" L"\x0001d5c1" L"\0" L"\x0001d5c2" L"\0" L"\x0001d5c3" ++ L"\0" L"\x0001d5c4" L"\0" L"\x0001d5c5" L"\0" L"\x0001d5c6" L"\0" ++ L"\x0001d5c7" L"\0" L"\x0001d5c8" L"\0" L"\x0001d5c9" L"\0" L"\x0001d5ca" ++ L"\0" L"\x0001d5cb" L"\0" L"\x0001d5cc" L"\0" L"\x0001d5cd" L"\0" ++ L"\x0001d5ce" L"\0" L"\x0001d5cf" L"\0" L"\x0001d5d0" L"\0" L"\x0001d5d1" ++ L"\0" L"\x0001d5d2" L"\0" L"\x0001d5d3" L"\0" L"\x0001d5d4" L"\0" ++ L"\x0001d5d5" L"\0" L"\x0001d5d6" L"\0" L"\x0001d5d7" L"\0" L"\x0001d5d8" ++ L"\0" L"\x0001d5d9" L"\0" L"\x0001d5da" L"\0" L"\x0001d5db" L"\0" ++ L"\x0001d5dc" L"\0" L"\x0001d5dd" L"\0" L"\x0001d5de" L"\0" L"\x0001d5df" ++ L"\0" L"\x0001d5e0" L"\0" L"\x0001d5e1" L"\0" L"\x0001d5e2" L"\0" ++ L"\x0001d5e3" L"\0" L"\x0001d5e4" L"\0" L"\x0001d5e5" L"\0" L"\x0001d5e6" ++ L"\0" L"\x0001d5e7" L"\0" L"\x0001d5e8" L"\0" L"\x0001d5e9" L"\0" ++ L"\x0001d5ea" L"\0" L"\x0001d5eb" L"\0" L"\x0001d5ec" L"\0" L"\x0001d5ed" ++ L"\0" L"\x0001d5ee" L"\0" L"\x0001d5ef" L"\0" L"\x0001d5f0" L"\0" ++ L"\x0001d5f1" L"\0" L"\x0001d5f2" L"\0" L"\x0001d5f3" L"\0" L"\x0001d5f4" ++ L"\0" L"\x0001d5f5" L"\0" L"\x0001d5f6" L"\0" L"\x0001d5f7" L"\0" ++ L"\x0001d5f8" L"\0" L"\x0001d5f9" L"\0" L"\x0001d5fa" L"\0" L"\x0001d5fb" ++ L"\0" L"\x0001d5fc" L"\0" L"\x0001d5fd" L"\0" L"\x0001d5fe" L"\0" ++ L"\x0001d5ff" L"\0" L"\x0001d600" L"\0" L"\x0001d601" L"\0" L"\x0001d602" ++ L"\0" L"\x0001d603" L"\0" L"\x0001d604" L"\0" L"\x0001d605" L"\0" ++ L"\x0001d606" L"\0" L"\x0001d607" L"\0" L"\x0001d608" L"\0" L"\x0001d609" ++ L"\0" L"\x0001d60a" L"\0" L"\x0001d60b" L"\0" L"\x0001d60c" L"\0" ++ L"\x0001d60d" L"\0" L"\x0001d60e" L"\0" L"\x0001d60f" L"\0" L"\x0001d610" ++ L"\0" L"\x0001d611" L"\0" L"\x0001d612" L"\0" L"\x0001d613" L"\0" ++ L"\x0001d614" L"\0" L"\x0001d615" L"\0" L"\x0001d616" L"\0" L"\x0001d617" ++ L"\0" L"\x0001d618" L"\0" L"\x0001d619" L"\0" L"\x0001d61a" L"\0" ++ L"\x0001d61b" L"\0" L"\x0001d61c" L"\0" L"\x0001d61d" L"\0" L"\x0001d61e" ++ L"\0" L"\x0001d61f" L"\0" L"\x0001d620" L"\0" L"\x0001d621" L"\0" ++ L"\x0001d622" L"\0" L"\x0001d623" L"\0" L"\x0001d624" L"\0" L"\x0001d625" ++ L"\0" L"\x0001d626" L"\0" L"\x0001d627" L"\0" L"\x0001d628" L"\0" ++ L"\x0001d629" L"\0" L"\x0001d62a" L"\0" L"\x0001d62b" L"\0" L"\x0001d62c" ++ L"\0" L"\x0001d62d" L"\0" L"\x0001d62e" L"\0" L"\x0001d62f" L"\0" ++ L"\x0001d630" L"\0" L"\x0001d631" L"\0" L"\x0001d632" L"\0" L"\x0001d633" ++ L"\0" L"\x0001d634" L"\0" L"\x0001d635" L"\0" L"\x0001d636" L"\0" ++ L"\x0001d637" L"\0" L"\x0001d638" L"\0" L"\x0001d639" L"\0" L"\x0001d63a" ++ L"\0" L"\x0001d63b" L"\0" L"\x0001d63c" L"\0" L"\x0001d63d" L"\0" ++ L"\x0001d63e" L"\0" L"\x0001d63f" L"\0" L"\x0001d640" L"\0" L"\x0001d641" ++ L"\0" L"\x0001d642" L"\0" L"\x0001d643" L"\0" L"\x0001d644" L"\0" ++ L"\x0001d645" L"\0" L"\x0001d646" L"\0" L"\x0001d647" L"\0" L"\x0001d648" ++ L"\0" L"\x0001d649" L"\0" L"\x0001d64a" L"\0" L"\x0001d64b" L"\0" ++ L"\x0001d64c" L"\0" L"\x0001d64d" L"\0" L"\x0001d64e" L"\0" L"\x0001d64f" ++ L"\0" L"\x0001d650" L"\0" L"\x0001d651" L"\0" L"\x0001d652" L"\0" ++ L"\x0001d653" L"\0" L"\x0001d654" L"\0" L"\x0001d655" L"\0" L"\x0001d656" ++ L"\0" L"\x0001d657" L"\0" L"\x0001d658" L"\0" L"\x0001d659" L"\0" ++ L"\x0001d65a" L"\0" L"\x0001d65b" L"\0" L"\x0001d65c" L"\0" L"\x0001d65d" ++ L"\0" L"\x0001d65e" L"\0" L"\x0001d65f" L"\0" L"\x0001d660" L"\0" ++ L"\x0001d661" L"\0" L"\x0001d662" L"\0" L"\x0001d663" L"\0" L"\x0001d664" ++ L"\0" L"\x0001d665" L"\0" L"\x0001d666" L"\0" L"\x0001d667" L"\0" ++ L"\x0001d668" L"\0" L"\x0001d669" L"\0" L"\x0001d66a" L"\0" L"\x0001d66b" ++ L"\0" L"\x0001d66c" L"\0" L"\x0001d66d" L"\0" L"\x0001d66e" L"\0" ++ L"\x0001d66f" L"\0" L"\x0001d670" L"\0" L"\x0001d671" L"\0" L"\x0001d672" ++ L"\0" L"\x0001d673" L"\0" L"\x0001d674" L"\0" L"\x0001d675" L"\0" ++ L"\x0001d676" L"\0" L"\x0001d677" L"\0" L"\x0001d678" L"\0" L"\x0001d679" ++ L"\0" L"\x0001d67a" L"\0" L"\x0001d67b" L"\0" L"\x0001d67c" L"\0" ++ L"\x0001d67d" L"\0" L"\x0001d67e" L"\0" L"\x0001d67f" L"\0" L"\x0001d680" ++ L"\0" L"\x0001d681" L"\0" L"\x0001d682" L"\0" L"\x0001d683" L"\0" ++ L"\x0001d684" L"\0" L"\x0001d685" L"\0" L"\x0001d686" L"\0" L"\x0001d687" ++ L"\0" L"\x0001d688" L"\0" L"\x0001d689" L"\0" L"\x0001d68a" L"\0" ++ L"\x0001d68b" L"\0" L"\x0001d68c" L"\0" L"\x0001d68d" L"\0" L"\x0001d68e" ++ L"\0" L"\x0001d68f" L"\0" L"\x0001d690" L"\0" L"\x0001d691" L"\0" ++ L"\x0001d692" L"\0" L"\x0001d693" L"\0" L"\x0001d694" L"\0" L"\x0001d695" ++ L"\0" L"\x0001d696" L"\0" L"\x0001d697" L"\0" L"\x0001d698" L"\0" ++ L"\x0001d699" L"\0" L"\x0001d69a" L"\0" L"\x0001d69b" L"\0" L"\x0001d69c" ++ L"\0" L"\x0001d69d" L"\0" L"\x0001d69e" L"\0" L"\x0001d69f" L"\0" ++ L"\x0001d6a0" L"\0" L"\x0001d6a1" L"\0" L"\x0001d6a2" L"\0" L"\x0001d6a3" ++ L"\0" L"\x0001d7ce" L"\0" L"\x0001d7cf" L"\0" L"\x0001d7d0" L"\0" ++ L"\x0001d7d1" L"\0" L"\x0001d7d2" L"\0" L"\x0001d7d3" L"\0" L"\x0001d7d4" ++ L"\0" L"\x0001d7d5" L"\0" L"\x0001d7d6" L"\0" L"\x0001d7d7" L"\0" ++ L"\x0001d7d8" L"\0" L"\x0001d7d9" L"\0" L"\x0001d7da" L"\0" L"\x0001d7db" ++ L"\0" L"\x0001d7dc" L"\0" L"\x0001d7dd" L"\0" L"\x0001d7de" L"\0" ++ L"\x0001d7df" L"\0" L"\x0001d7e0" L"\0" L"\x0001d7e1" L"\0" L"\x0001d7e2" ++ L"\0" L"\x0001d7e3" L"\0" L"\x0001d7e4" L"\0" L"\x0001d7e5" L"\0" ++ L"\x0001d7e6" L"\0" L"\x0001d7e7" L"\0" L"\x0001d7e8" L"\0" L"\x0001d7e9" ++ L"\0" L"\x0001d7ea" L"\0" L"\x0001d7eb" L"\0" L"\x0001d7ec" L"\0" ++ L"\x0001d7ed" L"\0" L"\x0001d7ee" L"\0" L"\x0001d7ef" L"\0" L"\x0001d7f0" ++ L"\0" L"\x0001d7f1" L"\0" L"\x0001d7f2" L"\0" L"\x0001d7f3" L"\0" ++ L"\x0001d7f4" L"\0" L"\x0001d7f5" L"\0" L"\x0001d7f6" L"\0" L"\x0001d7f7" ++ L"\0" L"\x0001d7f8" L"\0" L"\x0001d7f9" L"\0" L"\x0001d7fa" L"\0" ++ L"\x0001d7fb" L"\0" L"\x0001d7fc" L"\0" L"\x0001d7fd" L"\0" L"\x0001d7fe" ++ L"\0" L"\x0001d7ff"; + static const uint32_t translit_to_idx[] = + { + 0, 3, 8, 12, 15, 20, 23, 26, 30, 37, 44, 51, +@@ -471,22 +471,22 @@ static const uint32_t translit_to_idx[] + 180, 183, 186, 189, 192, 196, 199, 202, 205, 208, 211, 214, + 217, 221, 224, 227, 230, 233, 237, 242, 245, 248, 252, 257, + 260, 263, 267, 270, 274, 278, 282, 285, 287, 289, 291, 293, +- 297, 302, 307, 312, 315, 320, 325, 328, 331, 334, 337, 340, +- 343, 346, 349, 352, 355, 359, 362, 365, 368, 371, 374, 379, +- 385, 388, 393, 396, 399, 402, 405, 408, 411, 414, 417, 420, +- 423, 426, 429, 432, 435, 438, 445, 452, 459, 466, 473, 480, +- 487, 494, 501, 508, 515, 522, 527, 530, 534, 539, 543, 546, +- 550, 555, 561, 565, 568, 572, 577, 580, 583, 586, 589, 592, +- 596, 601, 605, 608, 612, 617, 623, 627, 630, 634, 639, 642, +- 645, 648, 651, 655, 659, 664, 668, 672, 677, 680, 683, 686, +- 689, 692, 695, 698, 702, 706, 710, 714, 719, 724, 729, 734, +- 739, 744, 749, 754, 759, 764, 768, 772, 776, 780, 784, 788, +- 792, 796, 801, 806, 811, 816, 821, 826, 831, 836, 841, 845, +- 850, 855, 859, 863, 867, 871, 875, 880, 883, 887, 892, 897, +- 902, 907, 912, 917, 922, 927, 932, 938, 944, 950, 956, 962, +- 968, 974, 980, 986, 992, 998, 1003, 1008, 1013, 1018, 1023, 1028, +- 1033, 1038, 1043, 1049, 1055, 1061, 1067, 1073, 1079, 1085, 1091, 1097, +- 1103, 1109, 1113, 1117, 1121, 1125, 1129, 1133, 1137, 1141, 1145, 1150, ++ 297, 302, 307, 312, 317, 320, 325, 330, 333, 336, 339, 342, ++ 345, 348, 351, 354, 357, 360, 364, 367, 370, 373, 376, 379, ++ 384, 390, 393, 398, 401, 404, 407, 410, 413, 416, 419, 422, ++ 425, 428, 431, 434, 437, 440, 443, 450, 457, 464, 471, 478, ++ 485, 492, 499, 506, 513, 520, 527, 532, 535, 539, 544, 548, ++ 551, 555, 560, 566, 570, 573, 577, 582, 585, 588, 591, 594, ++ 597, 601, 606, 610, 613, 617, 622, 628, 632, 635, 639, 644, ++ 647, 650, 653, 656, 660, 664, 669, 673, 677, 682, 685, 688, ++ 691, 694, 697, 700, 703, 707, 711, 715, 719, 724, 729, 734, ++ 739, 744, 749, 754, 759, 764, 769, 773, 777, 781, 785, 789, ++ 793, 797, 801, 806, 811, 816, 821, 826, 831, 836, 841, 846, ++ 850, 855, 860, 864, 868, 872, 876, 880, 885, 888, 892, 897, ++ 902, 907, 912, 917, 922, 927, 932, 937, 943, 949, 955, 961, ++ 967, 973, 979, 985, 991, 997, 1003, 1008, 1013, 1018, 1023, 1028, ++ 1033, 1038, 1043, 1048, 1054, 1060, 1066, 1072, 1078, 1084, 1090, 1096, ++ 1102, 1108, 1114, 1118, 1122, 1126, 1130, 1134, 1138, 1142, 1146, 1150, + 1155, 1160, 1165, 1170, 1175, 1180, 1185, 1190, 1195, 1200, 1205, 1210, + 1215, 1220, 1225, 1230, 1235, 1240, 1245, 1250, 1255, 1260, 1265, 1270, + 1275, 1280, 1285, 1290, 1295, 1300, 1305, 1310, 1315, 1320, 1325, 1330, +@@ -494,89 +494,89 @@ static const uint32_t translit_to_idx[] + 1395, 1400, 1405, 1410, 1415, 1420, 1425, 1430, 1435, 1440, 1445, 1450, + 1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1505, 1510, + 1515, 1520, 1525, 1530, 1535, 1540, 1545, 1550, 1555, 1560, 1565, 1570, +- 1575, 1580, 1585, 1590, 1595, 1598, 1601, 1604, 1607, 1610, 1613, 1616, +- 1619, 1622, 1625, 1628, 1631, 1636, 1640, 1645, 1648, 1651, 1657, 1663, +- 1669, 1675, 1681, 1687, 1693, 1699, 1705, 1711, 1717, 1723, 1729, 1735, +- 1741, 1747, 1753, 1759, 1765, 1771, 1777, 1783, 1789, 1795, 1801, 1807, +- 1813, 1819, 1825, 1831, 1836, 1840, 1844, 1849, 1853, 1857, 1861, 1865, +- 1869, 1873, 1877, 1881, 1885, 1889, 1894, 1900, 1904, 1908, 1912, 1916, +- 1920, 1924, 1928, 1933, 1938, 1943, 1948, 1952, 1956, 1960, 1964, 1968, +- 1972, 1976, 1980, 1984, 1988, 1994, 2000, 2005, 2011, 2017, 2023, 2028, +- 2034, 2039, 2046, 2050, 2055, 2060, 2065, 2070, 2077, 2086, 2090, 2094, +- 2098, 2102, 2106, 2110, 2114, 2118, 2122, 2126, 2130, 2134, 2138, 2142, +- 2146, 2150, 2156, 2160, 2164, 2168, 2174, 2179, 2183, 2187, 2191, 2195, +- 2199, 2203, 2207, 2211, 2215, 2219, 2224, 2228, 2232, 2237, 2242, 2246, +- 2252, 2257, 2261, 2265, 2269, 2273, 2277, 2281, 2285, 2290, 2295, 2299, +- 2302, 2304, 2306, 2308, 2310, 2312, 2314, 2316, 2318, 2320, 2322, 2324, +- 2326, 2328, 2330, 2332, 2334, 2337, 2340, 2343, 2346, 2349, 2352, 2355, +- 2358, 2361, 2364, 2367, 2370, 2373, 2376, 2379, 2382, 2385, 2388, 2391, +- 2394, 2397, 2400, 2403, 2406, 2409, 2411, 2414, 2417, 2420, 2423, 2426, +- 2429, 2432, 2435, 2438, 2441, 2444, 2447, 2450, 2453, 2456, 2459, 2462, +- 2465, 2468, 2471, 2474, 2477, 2480, 2483, 2486, 2489, 2492, 2495, 2498, +- 2501, 2504, 2507, 2510, 2513, 2516, 2519, 2522, 2525, 2528, 2531, 2534, +- 2537, 2540, 2543, 2546, 2549, 2552, 2555, 2558, 2561, 2564, 2567, 2570, +- 2573, 2576, 2579, 2582, 2585, 2588, 2591, 2594, 2597, 2600, 2603, 2606, +- 2609, 2612, 2615, 2618, 2621, 2624, 2627, 2630, 2633, 2636, 2639, 2642, +- 2645, 2648, 2651, 2654, 2657, 2660, 2663, 2666, 2669, 2672, 2675, 2678, +- 2681, 2684, 2687, 2690, 2693, 2696, 2699, 2702, 2705, 2708, 2711, 2714, +- 2717, 2720, 2723, 2726, 2729, 2732, 2735, 2738, 2741, 2744, 2747, 2750, +- 2753, 2756, 2759, 2762, 2765, 2768, 2771, 2774, 2777, 2780, 2783, 2786, +- 2789, 2792, 2795, 2798, 2801, 2804, 2807, 2810, 2813, 2816, 2819, 2822, +- 2825, 2828, 2831, 2834, 2837, 2840, 2843, 2846, 2849, 2852, 2855, 2858, +- 2861, 2864, 2867, 2870, 2873, 2876, 2879, 2882, 2885, 2888, 2891, 2894, +- 2897, 2900, 2903, 2906, 2909, 2912, 2915, 2918, 2921, 2924, 2927, 2930, +- 2933, 2936, 2939, 2942, 2945, 2948, 2951, 2954, 2957, 2960, 2963, 2966, +- 2969, 2972, 2975, 2978, 2981, 2984, 2987, 2990, 2993, 2996, 2999, 3002, +- 3005, 3008, 3011, 3014, 3017, 3020, 3023, 3026, 3029, 3032, 3035, 3038, +- 3041, 3044, 3047, 3050, 3053, 3056, 3059, 3062, 3065, 3068, 3071, 3074, +- 3077, 3080, 3083, 3086, 3089, 3092, 3095, 3098, 3101, 3104, 3107, 3110, +- 3113, 3116, 3119, 3122, 3125, 3128, 3131, 3134, 3137, 3140, 3143, 3146, +- 3149, 3152, 3155, 3158, 3161, 3164, 3167, 3170, 3173, 3176, 3179, 3182, +- 3185, 3188, 3191, 3194, 3197, 3200, 3203, 3206, 3209, 3212, 3215, 3218, +- 3221, 3224, 3227, 3230, 3233, 3236, 3239, 3242, 3245, 3248, 3251, 3254, +- 3257, 3260, 3263, 3266, 3269, 3272, 3275, 3278, 3281, 3284, 3287, 3290, +- 3293, 3296, 3299, 3302, 3305, 3308, 3311, 3314, 3317, 3320, 3323, 3326, +- 3329, 3332, 3335, 3338, 3341, 3344, 3347, 3350, 3353, 3356, 3359, 3362, +- 3365, 3368, 3371, 3374, 3377, 3380, 3383, 3386, 3389, 3392, 3395, 3398, +- 3401, 3404, 3407, 3410, 3413, 3416, 3419, 3422, 3425, 3428, 3431, 3434, +- 3437, 3440, 3443, 3446, 3449, 3452, 3455, 3458, 3461, 3464, 3467, 3470, +- 3473, 3476, 3479, 3482, 3485, 3488, 3491, 3494, 3497, 3500, 3503, 3506, +- 3509, 3512, 3515, 3518, 3521, 3524, 3527, 3530, 3533, 3536, 3539, 3542, +- 3545, 3548, 3551, 3554, 3557, 3560, 3563, 3566, 3569, 3572, 3575, 3578, +- 3581, 3584, 3587, 3590, 3593, 3596, 3599, 3602, 3605, 3608, 3611, 3614, +- 3617, 3620, 3623, 3626, 3629, 3632, 3635, 3638, 3641, 3644, 3647, 3650, +- 3653, 3656, 3659, 3662, 3665, 3668, 3671, 3674, 3677, 3680, 3683, 3686, +- 3689, 3692, 3695, 3698, 3701, 3704, 3707, 3710, 3713, 3716, 3719, 3722, +- 3725, 3728, 3731, 3734, 3737, 3740, 3743, 3746, 3749, 3752, 3755, 3758, +- 3761, 3764, 3767, 3770, 3773, 3776, 3779, 3782, 3785, 3788, 3791, 3794, +- 3797, 3800, 3803, 3806, 3809, 3812, 3815, 3818, 3821, 3824, 3827, 3830, +- 3833, 3836, 3839, 3842, 3845, 3848, 3851, 3854, 3857, 3860, 3863, 3866, +- 3869, 3872, 3875, 3878, 3881, 3884, 3887, 3890, 3893, 3896, 3899, 3902, +- 3905, 3908, 3911, 3914, 3917, 3920, 3923, 3926, 3929, 3932, 3935, 3938, +- 3941, 3944, 3947, 3950, 3953, 3956, 3959, 3962, 3965, 3968, 3971, 3974, +- 3977, 3980, 3983, 3986, 3989, 3992, 3995, 3998, 4001, 4004, 4007, 4010, +- 4013, 4016, 4019, 4022, 4025, 4028, 4031, 4034, 4037, 4040, 4043, 4046, +- 4049, 4052, 4055, 4058, 4061, 4064, 4067, 4070, 4073, 4076, 4079, 4082, +- 4085, 4088, 4091, 4094, 4097, 4100, 4103, 4106, 4109, 4112, 4115, 4118, +- 4121, 4124, 4127, 4130, 4133, 4136, 4139, 4142, 4145, 4148, 4151, 4154, +- 4157, 4160, 4163, 4166, 4169, 4172, 4175, 4178, 4181, 4184, 4187, 4190, +- 4193, 4196, 4199, 4202, 4205, 4208, 4211, 4214, 4217, 4220, 4223, 4226, +- 4229, 4232, 4235, 4238, 4241, 4244, 4247, 4250, 4253, 4256, 4259, 4262, +- 4265, 4268, 4271, 4274, 4277, 4280, 4283, 4286, 4289, 4292, 4295, 4298, +- 4301, 4304, 4307, 4310, 4313, 4316, 4319, 4322, 4325, 4328, 4331, 4334, +- 4337, 4340, 4343, 4346, 4349, 4352, 4355, 4358, 4361, 4364, 4367, 4370, +- 4373, 4376, 4379, 4382, 4385, 4388, 4391, 4394, 4397, 4400, 4403, 4406, +- 4409, 4412, 4415, 4418, 4421, 4424, 4427, 4430, 4433, 4436, 4439, 4442, +- 4445, 4448, 4451, 4454, 4457, 4460, 4463, 4466, 4469, 4472, 4475, 4478, +- 4481, 4484, 4487, 4490, 4493, 4496, 4499, 4502, 4505, 4508, 4511, 4514, +- 4517, 4520, 4523, 4526, 4529, 4532, 4535, 4538, 4541, 4544, 4547, 4550, +- 4553, 4556, 4559, 4562, 4565, 4568, 4571, 4574, 4577, 4580, 4583, 4586, +- 4589, 4592, 4595, 4598, 4601, 4604, 4607, 4610, 4613, 4616, 4619, 4622, +- 4625, 4628, 4631, 4634, 4637, 4640, 4643, 4646, 4649, 4652, 4655, 4658, +- 4661, 4664, 4667, 4670, 4673, 4676, 4679, 4682, 4685, 4688, 4691, 4694, +- 4697, 4700, 4703, 4706, 4709, 4712, 4715, 4718, 4721, 4724, 4727, 4730, +- 4733, 4736, 4739, 4742, 4745, 4748, 4751, 4754, 4757, 4760, 4763, 4766, +- 4769, 4772, 4775, 4778, 4781, 4784, 4787, 4790, 4793 ++ 1575, 1580, 1585, 1590, 1595, 1600, 1603, 1606, 1609, 1612, 1615, 1618, ++ 1621, 1624, 1627, 1630, 1633, 1636, 1641, 1645, 1650, 1653, 1656, 1662, ++ 1668, 1674, 1680, 1686, 1692, 1698, 1704, 1710, 1716, 1722, 1728, 1734, ++ 1740, 1746, 1752, 1758, 1764, 1770, 1776, 1782, 1788, 1794, 1800, 1806, ++ 1812, 1818, 1824, 1830, 1836, 1841, 1845, 1849, 1854, 1858, 1862, 1866, ++ 1870, 1874, 1878, 1882, 1886, 1890, 1894, 1899, 1905, 1909, 1913, 1917, ++ 1921, 1925, 1929, 1933, 1938, 1943, 1948, 1953, 1957, 1961, 1965, 1969, ++ 1973, 1977, 1981, 1985, 1989, 1993, 1999, 2005, 2010, 2016, 2022, 2028, ++ 2033, 2039, 2044, 2051, 2055, 2060, 2065, 2070, 2075, 2082, 2091, 2095, ++ 2099, 2103, 2107, 2111, 2115, 2119, 2123, 2127, 2131, 2135, 2139, 2143, ++ 2147, 2151, 2155, 2161, 2165, 2169, 2173, 2179, 2184, 2188, 2192, 2196, ++ 2200, 2204, 2208, 2212, 2216, 2220, 2224, 2229, 2233, 2237, 2242, 2247, ++ 2251, 2257, 2262, 2266, 2270, 2274, 2278, 2282, 2286, 2290, 2295, 2300, ++ 2304, 2307, 2309, 2311, 2313, 2315, 2317, 2319, 2321, 2323, 2325, 2327, ++ 2329, 2331, 2333, 2335, 2337, 2339, 2342, 2345, 2348, 2351, 2354, 2357, ++ 2360, 2363, 2366, 2369, 2372, 2375, 2378, 2381, 2384, 2387, 2390, 2393, ++ 2396, 2399, 2402, 2405, 2408, 2411, 2414, 2416, 2419, 2422, 2425, 2428, ++ 2431, 2434, 2437, 2440, 2443, 2446, 2449, 2452, 2455, 2458, 2461, 2464, ++ 2467, 2470, 2473, 2476, 2479, 2482, 2485, 2488, 2491, 2494, 2497, 2500, ++ 2503, 2506, 2509, 2512, 2515, 2518, 2521, 2524, 2527, 2530, 2533, 2536, ++ 2539, 2542, 2545, 2548, 2551, 2554, 2557, 2560, 2563, 2566, 2569, 2572, ++ 2575, 2578, 2581, 2584, 2587, 2590, 2593, 2596, 2599, 2602, 2605, 2608, ++ 2611, 2614, 2617, 2620, 2623, 2626, 2629, 2632, 2635, 2638, 2641, 2644, ++ 2647, 2650, 2653, 2656, 2659, 2662, 2665, 2668, 2671, 2674, 2677, 2680, ++ 2683, 2686, 2689, 2692, 2695, 2698, 2701, 2704, 2707, 2710, 2713, 2716, ++ 2719, 2722, 2725, 2728, 2731, 2734, 2737, 2740, 2743, 2746, 2749, 2752, ++ 2755, 2758, 2761, 2764, 2767, 2770, 2773, 2776, 2779, 2782, 2785, 2788, ++ 2791, 2794, 2797, 2800, 2803, 2806, 2809, 2812, 2815, 2818, 2821, 2824, ++ 2827, 2830, 2833, 2836, 2839, 2842, 2845, 2848, 2851, 2854, 2857, 2860, ++ 2863, 2866, 2869, 2872, 2875, 2878, 2881, 2884, 2887, 2890, 2893, 2896, ++ 2899, 2902, 2905, 2908, 2911, 2914, 2917, 2920, 2923, 2926, 2929, 2932, ++ 2935, 2938, 2941, 2944, 2947, 2950, 2953, 2956, 2959, 2962, 2965, 2968, ++ 2971, 2974, 2977, 2980, 2983, 2986, 2989, 2992, 2995, 2998, 3001, 3004, ++ 3007, 3010, 3013, 3016, 3019, 3022, 3025, 3028, 3031, 3034, 3037, 3040, ++ 3043, 3046, 3049, 3052, 3055, 3058, 3061, 3064, 3067, 3070, 3073, 3076, ++ 3079, 3082, 3085, 3088, 3091, 3094, 3097, 3100, 3103, 3106, 3109, 3112, ++ 3115, 3118, 3121, 3124, 3127, 3130, 3133, 3136, 3139, 3142, 3145, 3148, ++ 3151, 3154, 3157, 3160, 3163, 3166, 3169, 3172, 3175, 3178, 3181, 3184, ++ 3187, 3190, 3193, 3196, 3199, 3202, 3205, 3208, 3211, 3214, 3217, 3220, ++ 3223, 3226, 3229, 3232, 3235, 3238, 3241, 3244, 3247, 3250, 3253, 3256, ++ 3259, 3262, 3265, 3268, 3271, 3274, 3277, 3280, 3283, 3286, 3289, 3292, ++ 3295, 3298, 3301, 3304, 3307, 3310, 3313, 3316, 3319, 3322, 3325, 3328, ++ 3331, 3334, 3337, 3340, 3343, 3346, 3349, 3352, 3355, 3358, 3361, 3364, ++ 3367, 3370, 3373, 3376, 3379, 3382, 3385, 3388, 3391, 3394, 3397, 3400, ++ 3403, 3406, 3409, 3412, 3415, 3418, 3421, 3424, 3427, 3430, 3433, 3436, ++ 3439, 3442, 3445, 3448, 3451, 3454, 3457, 3460, 3463, 3466, 3469, 3472, ++ 3475, 3478, 3481, 3484, 3487, 3490, 3493, 3496, 3499, 3502, 3505, 3508, ++ 3511, 3514, 3517, 3520, 3523, 3526, 3529, 3532, 3535, 3538, 3541, 3544, ++ 3547, 3550, 3553, 3556, 3559, 3562, 3565, 3568, 3571, 3574, 3577, 3580, ++ 3583, 3586, 3589, 3592, 3595, 3598, 3601, 3604, 3607, 3610, 3613, 3616, ++ 3619, 3622, 3625, 3628, 3631, 3634, 3637, 3640, 3643, 3646, 3649, 3652, ++ 3655, 3658, 3661, 3664, 3667, 3670, 3673, 3676, 3679, 3682, 3685, 3688, ++ 3691, 3694, 3697, 3700, 3703, 3706, 3709, 3712, 3715, 3718, 3721, 3724, ++ 3727, 3730, 3733, 3736, 3739, 3742, 3745, 3748, 3751, 3754, 3757, 3760, ++ 3763, 3766, 3769, 3772, 3775, 3778, 3781, 3784, 3787, 3790, 3793, 3796, ++ 3799, 3802, 3805, 3808, 3811, 3814, 3817, 3820, 3823, 3826, 3829, 3832, ++ 3835, 3838, 3841, 3844, 3847, 3850, 3853, 3856, 3859, 3862, 3865, 3868, ++ 3871, 3874, 3877, 3880, 3883, 3886, 3889, 3892, 3895, 3898, 3901, 3904, ++ 3907, 3910, 3913, 3916, 3919, 3922, 3925, 3928, 3931, 3934, 3937, 3940, ++ 3943, 3946, 3949, 3952, 3955, 3958, 3961, 3964, 3967, 3970, 3973, 3976, ++ 3979, 3982, 3985, 3988, 3991, 3994, 3997, 4000, 4003, 4006, 4009, 4012, ++ 4015, 4018, 4021, 4024, 4027, 4030, 4033, 4036, 4039, 4042, 4045, 4048, ++ 4051, 4054, 4057, 4060, 4063, 4066, 4069, 4072, 4075, 4078, 4081, 4084, ++ 4087, 4090, 4093, 4096, 4099, 4102, 4105, 4108, 4111, 4114, 4117, 4120, ++ 4123, 4126, 4129, 4132, 4135, 4138, 4141, 4144, 4147, 4150, 4153, 4156, ++ 4159, 4162, 4165, 4168, 4171, 4174, 4177, 4180, 4183, 4186, 4189, 4192, ++ 4195, 4198, 4201, 4204, 4207, 4210, 4213, 4216, 4219, 4222, 4225, 4228, ++ 4231, 4234, 4237, 4240, 4243, 4246, 4249, 4252, 4255, 4258, 4261, 4264, ++ 4267, 4270, 4273, 4276, 4279, 4282, 4285, 4288, 4291, 4294, 4297, 4300, ++ 4303, 4306, 4309, 4312, 4315, 4318, 4321, 4324, 4327, 4330, 4333, 4336, ++ 4339, 4342, 4345, 4348, 4351, 4354, 4357, 4360, 4363, 4366, 4369, 4372, ++ 4375, 4378, 4381, 4384, 4387, 4390, 4393, 4396, 4399, 4402, 4405, 4408, ++ 4411, 4414, 4417, 4420, 4423, 4426, 4429, 4432, 4435, 4438, 4441, 4444, ++ 4447, 4450, 4453, 4456, 4459, 4462, 4465, 4468, 4471, 4474, 4477, 4480, ++ 4483, 4486, 4489, 4492, 4495, 4498, 4501, 4504, 4507, 4510, 4513, 4516, ++ 4519, 4522, 4525, 4528, 4531, 4534, 4537, 4540, 4543, 4546, 4549, 4552, ++ 4555, 4558, 4561, 4564, 4567, 4570, 4573, 4576, 4579, 4582, 4585, 4588, ++ 4591, 4594, 4597, 4600, 4603, 4606, 4609, 4612, 4615, 4618, 4621, 4624, ++ 4627, 4630, 4633, 4636, 4639, 4642, 4645, 4648, 4651, 4654, 4657, 4660, ++ 4663, 4666, 4669, 4672, 4675, 4678, 4681, 4684, 4687, 4690, 4693, 4696, ++ 4699, 4702, 4705, 4708, 4711, 4714, 4717, 4720, 4723, 4726, 4729, 4732, ++ 4735, 4738, 4741, 4744, 4747, 4750, 4753, 4756, 4759, 4762, 4765, 4768, ++ 4771, 4774, 4777, 4780, 4783, 4786, 4789, 4792, 4795, 4798 + }; + static const wchar_t translit_to_tbl[] = + L" \0" L"\0" L"(C)\0" L"\0" L"<<\0" L"\0" L"-\0" L"\0" L"(R)\0" L"\0" L"u\0" +@@ -594,73 +594,73 @@ static const wchar_t translit_to_tbl[] = + L"\0" L"..\0" L"\0" L"...\0" L"\0" L" \0" L"\0" L"`\0" L"\0" L"``\0" L"\0" + L"```\0" L"\0" L"<\0" L"\0" L">\0" L"\0" L"!!\0" L"\0" L"/\0" L"\0" L"??\0" + L"\0" L"?!\0" L"\0" L"!?\0" L"\0" L" \0" L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" +- L"\0" L"\0" L"\0" L"Rs\0" L"\0" L"EUR\0" L"\0" L"a/c\0" L"\0" L"a/s\0" L"\0" +- L"C\0" L"\0" L"c/o\0" L"\0" L"c/u\0" L"\0" L"g\0" L"\0" L"H\0" L"\0" L"H\0" +- L"\0" L"H\0" L"\0" L"h\0" L"\0" L"I\0" L"\0" L"I\0" L"\0" L"L\0" L"\0" +- L"l\0" L"\0" L"N\0" L"\0" L"No\0" L"\0" L"P\0" L"\0" L"Q\0" L"\0" L"R\0" +- L"\0" L"R\0" L"\0" L"R\0" L"\0" L"TEL\0" L"\0" L"(TM)\0" L"\0" L"Z\0" L"\0" +- L"Ohm\0" L"\0" L"Z\0" L"\0" L"B\0" L"\0" L"C\0" L"\0" L"e\0" L"\0" L"e\0" +- L"\0" L"E\0" L"\0" L"F\0" L"\0" L"M\0" L"\0" L"o\0" L"\0" L"i\0" L"\0" +- L"D\0" L"\0" L"d\0" L"\0" L"e\0" L"\0" L"i\0" L"\0" L"j\0" L"\0" L" 1/3 \0" +- L"\0" L" 2/3 \0" L"\0" L" 1/5 \0" L"\0" L" 2/5 \0" L"\0" L" 3/5 \0" L"\0" +- L" 4/5 \0" L"\0" L" 1/6 \0" L"\0" L" 5/6 \0" L"\0" L" 1/8 \0" L"\0" +- L" 3/8 \0" L"\0" L" 5/8 \0" L"\0" L" 7/8 \0" L"\0" L" 1/\0" L"\0" L"I\0" +- L"\0" L"II\0" L"\0" L"III\0" L"\0" L"IV\0" L"\0" L"V\0" L"\0" L"VI\0" L"\0" +- L"VII\0" L"\0" L"VIII\0" L"\0" L"IX\0" L"\0" L"X\0" L"\0" L"XI\0" L"\0" +- L"XII\0" L"\0" L"L\0" L"\0" L"C\0" L"\0" L"D\0" L"\0" L"M\0" L"\0" L"i\0" +- L"\0" L"ii\0" L"\0" L"iii\0" L"\0" L"iv\0" L"\0" L"v\0" L"\0" L"vi\0" L"\0" +- L"vii\0" L"\0" L"viii\0" L"\0" L"ix\0" L"\0" L"x\0" L"\0" L"xi\0" L"\0" +- L"xii\0" L"\0" L"l\0" L"\0" L"c\0" L"\0" L"d\0" L"\0" L"m\0" L"\0" L"<-\0" +- L"\0" L"->\0" L"\0" L"<->\0" L"\0" L"<=\0" L"\0" L"=>\0" L"\0" L"<=>\0" +- L"\0" L"-\0" L"\0" L"/\0" L"\0" L"\\\0" L"\0" L"*\0" L"\0" L"|\0" L"\0" +- L":\0" L"\0" L"~\0" L"\0" L"<=\0" L"\0" L">=\0" L"\0" L"<<\0" L"\0" L">>\0" +- L"\0" L"<<<\0" L"\0" L">>>\0" L"\0" L"NUL\0" L"\0" L"SOH\0" L"\0" L"STX\0" +- L"\0" L"ETX\0" L"\0" L"EOT\0" L"\0" L"ENQ\0" L"\0" L"ACK\0" L"\0" L"BEL\0" +- L"\0" L"BS\0" L"\0" L"HT\0" L"\0" L"LF\0" L"\0" L"VT\0" L"\0" L"FF\0" L"\0" +- L"CR\0" L"\0" L"SO\0" L"\0" L"SI\0" L"\0" L"DLE\0" L"\0" L"DC1\0" L"\0" +- L"DC2\0" L"\0" L"DC3\0" L"\0" L"DC4\0" L"\0" L"NAK\0" L"\0" L"SYN\0" L"\0" +- L"ETB\0" L"\0" L"CAN\0" L"\0" L"EM\0" L"\0" L"SUB\0" L"\0" L"ESC\0" L"\0" +- L"FS\0" L"\0" L"GS\0" L"\0" L"RS\0" L"\0" L"US\0" L"\0" L"SP\0" L"\0" +- L"DEL\0" L"\0" L"_\0" L"\0" L"NL\0" L"\0" L"(1)\0" L"\0" L"(2)\0" L"\0" +- L"(3)\0" L"\0" L"(4)\0" L"\0" L"(5)\0" L"\0" L"(6)\0" L"\0" L"(7)\0" L"\0" +- L"(8)\0" L"\0" L"(9)\0" L"\0" L"(10)\0" L"\0" L"(11)\0" L"\0" L"(12)\0" +- L"\0" L"(13)\0" L"\0" L"(14)\0" L"\0" L"(15)\0" L"\0" L"(16)\0" L"\0" +- L"(17)\0" L"\0" L"(18)\0" L"\0" L"(19)\0" L"\0" L"(20)\0" L"\0" L"(1)\0" +- L"\0" L"(2)\0" L"\0" L"(3)\0" L"\0" L"(4)\0" L"\0" L"(5)\0" L"\0" L"(6)\0" +- L"\0" L"(7)\0" L"\0" L"(8)\0" L"\0" L"(9)\0" L"\0" L"(10)\0" L"\0" L"(11)\0" +- L"\0" L"(12)\0" L"\0" L"(13)\0" L"\0" L"(14)\0" L"\0" L"(15)\0" L"\0" +- L"(16)\0" L"\0" L"(17)\0" L"\0" L"(18)\0" L"\0" L"(19)\0" L"\0" L"(20)\0" +- L"\0" L"1.\0" L"\0" L"2.\0" L"\0" L"3.\0" L"\0" L"4.\0" L"\0" L"5.\0" L"\0" +- L"6.\0" L"\0" L"7.\0" L"\0" L"8.\0" L"\0" L"9.\0" L"\0" L"10.\0" L"\0" +- L"11.\0" L"\0" L"12.\0" L"\0" L"13.\0" L"\0" L"14.\0" L"\0" L"15.\0" L"\0" +- L"16.\0" L"\0" L"17.\0" L"\0" L"18.\0" L"\0" L"19.\0" L"\0" L"20.\0" L"\0" +- L"(a)\0" L"\0" L"(b)\0" L"\0" L"(c)\0" L"\0" L"(d)\0" L"\0" L"(e)\0" L"\0" +- L"(f)\0" L"\0" L"(g)\0" L"\0" L"(h)\0" L"\0" L"(i)\0" L"\0" L"(j)\0" L"\0" +- L"(k)\0" L"\0" L"(l)\0" L"\0" L"(m)\0" L"\0" L"(n)\0" L"\0" L"(o)\0" L"\0" +- L"(p)\0" L"\0" L"(q)\0" L"\0" L"(r)\0" L"\0" L"(s)\0" L"\0" L"(t)\0" L"\0" +- L"(u)\0" L"\0" L"(v)\0" L"\0" L"(w)\0" L"\0" L"(x)\0" L"\0" L"(y)\0" L"\0" +- L"(z)\0" L"\0" L"(A)\0" L"\0" L"(B)\0" L"\0" L"(C)\0" L"\0" L"(D)\0" L"\0" +- L"(E)\0" L"\0" L"(F)\0" L"\0" L"(G)\0" L"\0" L"(H)\0" L"\0" L"(I)\0" L"\0" +- L"(J)\0" L"\0" L"(K)\0" L"\0" L"(L)\0" L"\0" L"(M)\0" L"\0" L"(N)\0" L"\0" +- L"(O)\0" L"\0" L"(P)\0" L"\0" L"(Q)\0" L"\0" L"(R)\0" L"\0" L"(S)\0" L"\0" +- L"(T)\0" L"\0" L"(U)\0" L"\0" L"(V)\0" L"\0" L"(W)\0" L"\0" L"(X)\0" L"\0" +- L"(Y)\0" L"\0" L"(Z)\0" L"\0" L"(a)\0" L"\0" L"(b)\0" L"\0" L"(c)\0" L"\0" +- L"(d)\0" L"\0" L"(e)\0" L"\0" L"(f)\0" L"\0" L"(g)\0" L"\0" L"(h)\0" L"\0" +- L"(i)\0" L"\0" L"(j)\0" L"\0" L"(k)\0" L"\0" L"(l)\0" L"\0" L"(m)\0" L"\0" +- L"(n)\0" L"\0" L"(o)\0" L"\0" L"(p)\0" L"\0" L"(q)\0" L"\0" L"(r)\0" L"\0" +- L"(s)\0" L"\0" L"(t)\0" L"\0" L"(u)\0" L"\0" L"(v)\0" L"\0" L"(w)\0" L"\0" +- L"(x)\0" L"\0" L"(y)\0" L"\0" L"(z)\0" L"\0" L"(0)\0" L"\0" L"-\0" L"\0" +- L"|\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" +- L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"o\0" L"\0" +- L"::=\0" L"\0" L"==\0" L"\0" L"===\0" L"\0" L" \0" L"\0" L"=\0" L"\0" +- L"(21)\0" L"\0" L"(22)\0" L"\0" L"(23)\0" L"\0" L"(24)\0" L"\0" L"(25)\0" +- L"\0" L"(26)\0" L"\0" L"(27)\0" L"\0" L"(28)\0" L"\0" L"(29)\0" L"\0" +- L"(30)\0" L"\0" L"(31)\0" L"\0" L"(32)\0" L"\0" L"(33)\0" L"\0" L"(34)\0" +- L"\0" L"(35)\0" L"\0" L"(36)\0" L"\0" L"(37)\0" L"\0" L"(38)\0" L"\0" +- L"(39)\0" L"\0" L"(40)\0" L"\0" L"(41)\0" L"\0" L"(42)\0" L"\0" L"(43)\0" +- L"\0" L"(44)\0" L"\0" L"(45)\0" L"\0" L"(46)\0" L"\0" L"(47)\0" L"\0" +- L"(48)\0" L"\0" L"(49)\0" L"\0" L"(50)\0" L"\0" L"hPa\0" L"\0" L"da\0" L"\0" +- L"AU\0" L"\0" L"bar\0" L"\0" L"oV\0" L"\0" L"pc\0" L"\0" L"pA\0" L"\0" ++ L"\0" L"\0" L"\0" L"Rs\0" L"\0" L"EUR\0" L"\0" L"INR\0" L"\0" L"a/c\0" L"\0" ++ L"a/s\0" L"\0" L"C\0" L"\0" L"c/o\0" L"\0" L"c/u\0" L"\0" L"g\0" L"\0" ++ L"H\0" L"\0" L"H\0" L"\0" L"H\0" L"\0" L"h\0" L"\0" L"I\0" L"\0" L"I\0" ++ L"\0" L"L\0" L"\0" L"l\0" L"\0" L"N\0" L"\0" L"No\0" L"\0" L"P\0" L"\0" ++ L"Q\0" L"\0" L"R\0" L"\0" L"R\0" L"\0" L"R\0" L"\0" L"TEL\0" L"\0" L"(TM)\0" ++ L"\0" L"Z\0" L"\0" L"Ohm\0" L"\0" L"Z\0" L"\0" L"B\0" L"\0" L"C\0" L"\0" ++ L"e\0" L"\0" L"e\0" L"\0" L"E\0" L"\0" L"F\0" L"\0" L"M\0" L"\0" L"o\0" ++ L"\0" L"i\0" L"\0" L"D\0" L"\0" L"d\0" L"\0" L"e\0" L"\0" L"i\0" L"\0" ++ L"j\0" L"\0" L" 1/3 \0" L"\0" L" 2/3 \0" L"\0" L" 1/5 \0" L"\0" L" 2/5 \0" ++ L"\0" L" 3/5 \0" L"\0" L" 4/5 \0" L"\0" L" 1/6 \0" L"\0" L" 5/6 \0" L"\0" ++ L" 1/8 \0" L"\0" L" 3/8 \0" L"\0" L" 5/8 \0" L"\0" L" 7/8 \0" L"\0" L" 1/\0" ++ L"\0" L"I\0" L"\0" L"II\0" L"\0" L"III\0" L"\0" L"IV\0" L"\0" L"V\0" L"\0" ++ L"VI\0" L"\0" L"VII\0" L"\0" L"VIII\0" L"\0" L"IX\0" L"\0" L"X\0" L"\0" ++ L"XI\0" L"\0" L"XII\0" L"\0" L"L\0" L"\0" L"C\0" L"\0" L"D\0" L"\0" L"M\0" ++ L"\0" L"i\0" L"\0" L"ii\0" L"\0" L"iii\0" L"\0" L"iv\0" L"\0" L"v\0" L"\0" ++ L"vi\0" L"\0" L"vii\0" L"\0" L"viii\0" L"\0" L"ix\0" L"\0" L"x\0" L"\0" ++ L"xi\0" L"\0" L"xii\0" L"\0" L"l\0" L"\0" L"c\0" L"\0" L"d\0" L"\0" L"m\0" ++ L"\0" L"<-\0" L"\0" L"->\0" L"\0" L"<->\0" L"\0" L"<=\0" L"\0" L"=>\0" L"\0" ++ L"<=>\0" L"\0" L"-\0" L"\0" L"/\0" L"\0" L"\\\0" L"\0" L"*\0" L"\0" L"|\0" ++ L"\0" L":\0" L"\0" L"~\0" L"\0" L"<=\0" L"\0" L">=\0" L"\0" L"<<\0" L"\0" ++ L">>\0" L"\0" L"<<<\0" L"\0" L">>>\0" L"\0" L"NUL\0" L"\0" L"SOH\0" L"\0" ++ L"STX\0" L"\0" L"ETX\0" L"\0" L"EOT\0" L"\0" L"ENQ\0" L"\0" L"ACK\0" L"\0" ++ L"BEL\0" L"\0" L"BS\0" L"\0" L"HT\0" L"\0" L"LF\0" L"\0" L"VT\0" L"\0" ++ L"FF\0" L"\0" L"CR\0" L"\0" L"SO\0" L"\0" L"SI\0" L"\0" L"DLE\0" L"\0" ++ L"DC1\0" L"\0" L"DC2\0" L"\0" L"DC3\0" L"\0" L"DC4\0" L"\0" L"NAK\0" L"\0" ++ L"SYN\0" L"\0" L"ETB\0" L"\0" L"CAN\0" L"\0" L"EM\0" L"\0" L"SUB\0" L"\0" ++ L"ESC\0" L"\0" L"FS\0" L"\0" L"GS\0" L"\0" L"RS\0" L"\0" L"US\0" L"\0" ++ L"SP\0" L"\0" L"DEL\0" L"\0" L"_\0" L"\0" L"NL\0" L"\0" L"(1)\0" L"\0" ++ L"(2)\0" L"\0" L"(3)\0" L"\0" L"(4)\0" L"\0" L"(5)\0" L"\0" L"(6)\0" L"\0" ++ L"(7)\0" L"\0" L"(8)\0" L"\0" L"(9)\0" L"\0" L"(10)\0" L"\0" L"(11)\0" L"\0" ++ L"(12)\0" L"\0" L"(13)\0" L"\0" L"(14)\0" L"\0" L"(15)\0" L"\0" L"(16)\0" ++ L"\0" L"(17)\0" L"\0" L"(18)\0" L"\0" L"(19)\0" L"\0" L"(20)\0" L"\0" ++ L"(1)\0" L"\0" L"(2)\0" L"\0" L"(3)\0" L"\0" L"(4)\0" L"\0" L"(5)\0" L"\0" ++ L"(6)\0" L"\0" L"(7)\0" L"\0" L"(8)\0" L"\0" L"(9)\0" L"\0" L"(10)\0" L"\0" ++ L"(11)\0" L"\0" L"(12)\0" L"\0" L"(13)\0" L"\0" L"(14)\0" L"\0" L"(15)\0" ++ L"\0" L"(16)\0" L"\0" L"(17)\0" L"\0" L"(18)\0" L"\0" L"(19)\0" L"\0" ++ L"(20)\0" L"\0" L"1.\0" L"\0" L"2.\0" L"\0" L"3.\0" L"\0" L"4.\0" L"\0" ++ L"5.\0" L"\0" L"6.\0" L"\0" L"7.\0" L"\0" L"8.\0" L"\0" L"9.\0" L"\0" ++ L"10.\0" L"\0" L"11.\0" L"\0" L"12.\0" L"\0" L"13.\0" L"\0" L"14.\0" L"\0" ++ L"15.\0" L"\0" L"16.\0" L"\0" L"17.\0" L"\0" L"18.\0" L"\0" L"19.\0" L"\0" ++ L"20.\0" L"\0" L"(a)\0" L"\0" L"(b)\0" L"\0" L"(c)\0" L"\0" L"(d)\0" L"\0" ++ L"(e)\0" L"\0" L"(f)\0" L"\0" L"(g)\0" L"\0" L"(h)\0" L"\0" L"(i)\0" L"\0" ++ L"(j)\0" L"\0" L"(k)\0" L"\0" L"(l)\0" L"\0" L"(m)\0" L"\0" L"(n)\0" L"\0" ++ L"(o)\0" L"\0" L"(p)\0" L"\0" L"(q)\0" L"\0" L"(r)\0" L"\0" L"(s)\0" L"\0" ++ L"(t)\0" L"\0" L"(u)\0" L"\0" L"(v)\0" L"\0" L"(w)\0" L"\0" L"(x)\0" L"\0" ++ L"(y)\0" L"\0" L"(z)\0" L"\0" L"(A)\0" L"\0" L"(B)\0" L"\0" L"(C)\0" L"\0" ++ L"(D)\0" L"\0" L"(E)\0" L"\0" L"(F)\0" L"\0" L"(G)\0" L"\0" L"(H)\0" L"\0" ++ L"(I)\0" L"\0" L"(J)\0" L"\0" L"(K)\0" L"\0" L"(L)\0" L"\0" L"(M)\0" L"\0" ++ L"(N)\0" L"\0" L"(O)\0" L"\0" L"(P)\0" L"\0" L"(Q)\0" L"\0" L"(R)\0" L"\0" ++ L"(S)\0" L"\0" L"(T)\0" L"\0" L"(U)\0" L"\0" L"(V)\0" L"\0" L"(W)\0" L"\0" ++ L"(X)\0" L"\0" L"(Y)\0" L"\0" L"(Z)\0" L"\0" L"(a)\0" L"\0" L"(b)\0" L"\0" ++ L"(c)\0" L"\0" L"(d)\0" L"\0" L"(e)\0" L"\0" L"(f)\0" L"\0" L"(g)\0" L"\0" ++ L"(h)\0" L"\0" L"(i)\0" L"\0" L"(j)\0" L"\0" L"(k)\0" L"\0" L"(l)\0" L"\0" ++ L"(m)\0" L"\0" L"(n)\0" L"\0" L"(o)\0" L"\0" L"(p)\0" L"\0" L"(q)\0" L"\0" ++ L"(r)\0" L"\0" L"(s)\0" L"\0" L"(t)\0" L"\0" L"(u)\0" L"\0" L"(v)\0" L"\0" ++ L"(w)\0" L"\0" L"(x)\0" L"\0" L"(y)\0" L"\0" L"(z)\0" L"\0" L"(0)\0" L"\0" ++ L"-\0" L"\0" L"|\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" ++ L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" ++ L"o\0" L"\0" L"::=\0" L"\0" L"==\0" L"\0" L"===\0" L"\0" L" \0" L"\0" L"=\0" ++ L"\0" L"(21)\0" L"\0" L"(22)\0" L"\0" L"(23)\0" L"\0" L"(24)\0" L"\0" ++ L"(25)\0" L"\0" L"(26)\0" L"\0" L"(27)\0" L"\0" L"(28)\0" L"\0" L"(29)\0" ++ L"\0" L"(30)\0" L"\0" L"(31)\0" L"\0" L"(32)\0" L"\0" L"(33)\0" L"\0" ++ L"(34)\0" L"\0" L"(35)\0" L"\0" L"(36)\0" L"\0" L"(37)\0" L"\0" L"(38)\0" ++ L"\0" L"(39)\0" L"\0" L"(40)\0" L"\0" L"(41)\0" L"\0" L"(42)\0" L"\0" ++ L"(43)\0" L"\0" L"(44)\0" L"\0" L"(45)\0" L"\0" L"(46)\0" L"\0" L"(47)\0" ++ L"\0" L"(48)\0" L"\0" L"(49)\0" L"\0" L"(50)\0" L"\0" L"hPa\0" L"\0" L"da\0" ++ L"\0" L"AU\0" L"\0" L"bar\0" L"\0" L"oV\0" L"\0" L"pc\0" L"\0" L"pA\0" L"\0" + L"nA\0" L"\0" L"uA\0" L"\0" L"mA\0" L"\0" L"kA\0" L"\0" L"KB\0" L"\0" + L"MB\0" L"\0" L"GB\0" L"\0" L"cal\0" L"\0" L"kcal\0" L"\0" L"pF\0" L"\0" + L"nF\0" L"\0" L"uF\0" L"\0" L"ug\0" L"\0" L"mg\0" L"\0" L"kg\0" L"\0" +Index: glibc-2.12-2-gc4ccff1/locale/C-translit.h.in +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/locale/C-translit.h.in ++++ glibc-2.12-2-gc4ccff1/locale/C-translit.h.in +@@ -105,6 +105,7 @@ + "\x2063" "" /* INVISIBLE SEPARATOR */ + "\x20a8" "Rs" /* RUPEE SIGN */ + "\x20ac" "EUR" /* EURO SIGN */ ++"\x20b9" "INR" /* INDIAN RUPEE SIGN */ + "\x2100" "a/c" /* ACCOUNT OF */ + "\x2101" "a/s" /* ADDRESSED TO THE SUBJECT */ + "\x2102" "C" /* DOUBLE-STRUCK CAPITAL C */ +Index: glibc-2.12-2-gc4ccff1/localedata/charmaps/UTF-8 +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/charmaps/UTF-8 ++++ glibc-2.12-2-gc4ccff1/localedata/charmaps/UTF-8 +@@ -1312,6 +1312,10 @@ CHARMAP + /xd4/xa1 CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK + /xd4/xa2 CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK + /xd4/xa3 CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK ++ /xd4/xa4 CYRILLIC CAPITAL LETTER PE WITH DESCENDER ++ /xd4/xa5 CYRILLIC SMALL LETTER PE WITH DESCENDER ++ /xd4/xa6 CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER ++ /xd4/xa7 CYRILLIC SMALL LETTER SHHA WITH DESCENDER + /xd4/xb1 ARMENIAN CAPITAL LETTER AYB + /xd4/xb2 ARMENIAN CAPITAL LETTER BEN + /xd4/xb3 ARMENIAN CAPITAL LETTER GIM +@@ -1513,6 +1517,7 @@ CHARMAP + /xd8/x9b ARABIC SEMICOLON + /xd8/x9e ARABIC TRIPLE DOT PUNCTUATION MARK + /xd8/x9f ARABIC QUESTION MARK ++ /xd8/xa0 ARABIC LETTER KASHMIRI YEH + /xd8/xa1 ARABIC LETTER HAMZA + /xd8/xa2 ARABIC LETTER ALEF WITH MADDA ABOVE + /xd8/xa3 ARABIC LETTER ALEF WITH HAMZA ABOVE +@@ -1575,6 +1580,7 @@ CHARMAP + /xd9/x9c ARABIC VOWEL SIGN DOT BELOW + /xd9/x9d ARABIC REVERSED DAMMA + /xd9/x9e ARABIC FATHA WITH TWO DOTS ++ /xd9/x9f ARABIC WAVY HAMZA BELOW + /xd9/xa0 ARABIC-INDIC DIGIT ZERO + /xd9/xa1 ARABIC-INDIC DIGIT ONE + /xd9/xa2 ARABIC-INDIC DIGIT TWO +@@ -1969,6 +1975,97 @@ CHARMAP + /xdf/xb8 NKO COMMA + /xdf/xb9 NKO EXCLAMATION MARK + /xdf/xba NKO LAJANYALAN ++ /xe0/xa0/x80 SAMARITAN LETTER ALAF ++ /xe0/xa0/x81 SAMARITAN LETTER BIT ++ /xe0/xa0/x82 SAMARITAN LETTER GAMAN ++ /xe0/xa0/x83 SAMARITAN LETTER DALAT ++ /xe0/xa0/x84 SAMARITAN LETTER IY ++ /xe0/xa0/x85 SAMARITAN LETTER BAA ++ /xe0/xa0/x86 SAMARITAN LETTER ZEN ++ /xe0/xa0/x87 SAMARITAN LETTER IT ++ /xe0/xa0/x88 SAMARITAN LETTER TIT ++ /xe0/xa0/x89 SAMARITAN LETTER YUT ++ /xe0/xa0/x8a SAMARITAN LETTER KAAF ++ /xe0/xa0/x8b SAMARITAN LETTER LABAT ++ /xe0/xa0/x8c SAMARITAN LETTER MIM ++ /xe0/xa0/x8d SAMARITAN LETTER NUN ++ /xe0/xa0/x8e SAMARITAN LETTER SINGAAT ++ /xe0/xa0/x8f SAMARITAN LETTER IN ++ /xe0/xa0/x90 SAMARITAN LETTER FI ++ /xe0/xa0/x91 SAMARITAN LETTER TSAADIY ++ /xe0/xa0/x92 SAMARITAN LETTER QUF ++ /xe0/xa0/x93 SAMARITAN LETTER RISH ++ /xe0/xa0/x94 SAMARITAN LETTER SHAN ++ /xe0/xa0/x95 SAMARITAN LETTER TAAF ++ /xe0/xa0/x96 SAMARITAN MARK IN ++ /xe0/xa0/x97 SAMARITAN MARK IN-ALAF ++ /xe0/xa0/x98 SAMARITAN MARK OCCLUSION ++ /xe0/xa0/x99 SAMARITAN MARK DAGESH ++ /xe0/xa0/x9a SAMARITAN MODIFIER LETTER EPENTHETIC YUT ++ /xe0/xa0/x9b SAMARITAN MARK EPENTHETIC YUT ++ /xe0/xa0/x9c SAMARITAN VOWEL SIGN LONG E ++ /xe0/xa0/x9d SAMARITAN VOWEL SIGN E ++ /xe0/xa0/x9e SAMARITAN VOWEL SIGN OVERLONG AA ++ /xe0/xa0/x9f SAMARITAN VOWEL SIGN LONG AA ++ /xe0/xa0/xa0 SAMARITAN VOWEL SIGN AA ++ /xe0/xa0/xa1 SAMARITAN VOWEL SIGN OVERLONG A ++ /xe0/xa0/xa2 SAMARITAN VOWEL SIGN LONG A ++ /xe0/xa0/xa3 SAMARITAN VOWEL SIGN A ++ /xe0/xa0/xa4 SAMARITAN MODIFIER LETTER SHORT A ++ /xe0/xa0/xa5 SAMARITAN VOWEL SIGN SHORT A ++ /xe0/xa0/xa6 SAMARITAN VOWEL SIGN LONG U ++ /xe0/xa0/xa7 SAMARITAN VOWEL SIGN U ++ /xe0/xa0/xa8 SAMARITAN MODIFIER LETTER I ++ /xe0/xa0/xa9 SAMARITAN VOWEL SIGN LONG I ++ /xe0/xa0/xaa SAMARITAN VOWEL SIGN I ++ /xe0/xa0/xab SAMARITAN VOWEL SIGN O ++ /xe0/xa0/xac SAMARITAN VOWEL SIGN SUKUN ++ /xe0/xa0/xad SAMARITAN MARK NEQUDAA ++ /xe0/xa0/xb0 SAMARITAN PUNCTUATION NEQUDAA ++ /xe0/xa0/xb1 SAMARITAN PUNCTUATION AFSAAQ ++ /xe0/xa0/xb2 SAMARITAN PUNCTUATION ANGED ++ /xe0/xa0/xb3 SAMARITAN PUNCTUATION BAU ++ /xe0/xa0/xb4 SAMARITAN PUNCTUATION ATMAAU ++ /xe0/xa0/xb5 SAMARITAN PUNCTUATION SHIYYAALAA ++ /xe0/xa0/xb6 SAMARITAN ABBREVIATION MARK ++ /xe0/xa0/xb7 SAMARITAN PUNCTUATION MELODIC QITSA ++ /xe0/xa0/xb8 SAMARITAN PUNCTUATION ZIQAA ++ /xe0/xa0/xb9 SAMARITAN PUNCTUATION QITSA ++ /xe0/xa0/xba SAMARITAN PUNCTUATION ZAEF ++ /xe0/xa0/xbb SAMARITAN PUNCTUATION TURU ++ /xe0/xa0/xbc SAMARITAN PUNCTUATION ARKAANU ++ /xe0/xa0/xbd SAMARITAN PUNCTUATION SOF MASHFAAT ++ /xe0/xa0/xbe SAMARITAN PUNCTUATION ANNAAU ++ /xe0/xa1/x80 MANDAIC LETTER HALQA ++ /xe0/xa1/x81 MANDAIC LETTER AB ++ /xe0/xa1/x82 MANDAIC LETTER AG ++ /xe0/xa1/x83 MANDAIC LETTER AD ++ /xe0/xa1/x84 MANDAIC LETTER AH ++ /xe0/xa1/x85 MANDAIC LETTER USHENNA ++ /xe0/xa1/x86 MANDAIC LETTER AZ ++ /xe0/xa1/x87 MANDAIC LETTER IT ++ /xe0/xa1/x88 MANDAIC LETTER ATT ++ /xe0/xa1/x89 MANDAIC LETTER AKSA ++ /xe0/xa1/x8a MANDAIC LETTER AK ++ /xe0/xa1/x8b MANDAIC LETTER AL ++ /xe0/xa1/x8c MANDAIC LETTER AM ++ /xe0/xa1/x8d MANDAIC LETTER AN ++ /xe0/xa1/x8e MANDAIC LETTER AS ++ /xe0/xa1/x8f MANDAIC LETTER IN ++ /xe0/xa1/x90 MANDAIC LETTER AP ++ /xe0/xa1/x91 MANDAIC LETTER ASZ ++ /xe0/xa1/x92 MANDAIC LETTER AQ ++ /xe0/xa1/x93 MANDAIC LETTER AR ++ /xe0/xa1/x94 MANDAIC LETTER ASH ++ /xe0/xa1/x95 MANDAIC LETTER AT ++ /xe0/xa1/x96 MANDAIC LETTER DUSHENNA ++ /xe0/xa1/x97 MANDAIC LETTER KAD ++ /xe0/xa1/x98 MANDAIC LETTER AIN ++ /xe0/xa1/x99 MANDAIC AFFRICATION MARK ++ /xe0/xa1/x9a MANDAIC VOCALIZATION MARK ++ /xe0/xa1/x9b MANDAIC GEMINATION MARK ++ /xe0/xa1/x9e MANDAIC PUNCTUATION ++ /xe0/xa4/x80 DEVANAGARI SIGN INVERTED CANDRABINDU + /xe0/xa4/x81 DEVANAGARI SIGN CANDRABINDU + /xe0/xa4/x82 DEVANAGARI SIGN ANUSVARA + /xe0/xa4/x83 DEVANAGARI SIGN VISARGA +@@ -2026,6 +2123,8 @@ CHARMAP + /xe0/xa4/xb7 DEVANAGARI LETTER SSA + /xe0/xa4/xb8 DEVANAGARI LETTER SA + /xe0/xa4/xb9 DEVANAGARI LETTER HA ++ /xe0/xa4/xba DEVANAGARI VOWEL SIGN OE ++ /xe0/xa4/xbb DEVANAGARI VOWEL SIGN OOE + /xe0/xa4/xbc DEVANAGARI SIGN NUKTA + /xe0/xa4/xbd DEVANAGARI SIGN AVAGRAHA + /xe0/xa4/xbe DEVANAGARI VOWEL SIGN AA +@@ -2044,11 +2143,16 @@ CHARMAP + /xe0/xa5/x8b DEVANAGARI VOWEL SIGN O + /xe0/xa5/x8c DEVANAGARI VOWEL SIGN AU + /xe0/xa5/x8d DEVANAGARI SIGN VIRAMA ++ /xe0/xa5/x8e DEVANAGARI VOWEL SIGN PRISHTHAMATRA E ++ /xe0/xa5/x8f DEVANAGARI VOWEL SIGN AW + /xe0/xa5/x90 DEVANAGARI OM + /xe0/xa5/x91 DEVANAGARI STRESS SIGN UDATTA + /xe0/xa5/x92 DEVANAGARI STRESS SIGN ANUDATTA + /xe0/xa5/x93 DEVANAGARI GRAVE ACCENT + /xe0/xa5/x94 DEVANAGARI ACUTE ACCENT ++ /xe0/xa5/x95 DEVANAGARI VOWEL SIGN CANDRA LONG E ++ /xe0/xa5/x96 DEVANAGARI VOWEL SIGN UE ++ /xe0/xa5/x97 DEVANAGARI VOWEL SIGN UUE + /xe0/xa5/x98 DEVANAGARI LETTER QA + /xe0/xa5/x99 DEVANAGARI LETTER KHHA + /xe0/xa5/x9a DEVANAGARI LETTER GHHA +@@ -2076,6 +2180,13 @@ CHARMAP + /xe0/xa5/xb0 DEVANAGARI ABBREVIATION SIGN + /xe0/xa5/xb1 DEVANAGARI SIGN HIGH SPACING DOT + /xe0/xa5/xb2 DEVANAGARI LETTER CANDRA A ++ /xe0/xa5/xb3 DEVANAGARI LETTER OE ++ /xe0/xa5/xb4 DEVANAGARI LETTER OOE ++ /xe0/xa5/xb5 DEVANAGARI LETTER AW ++ /xe0/xa5/xb6 DEVANAGARI LETTER UE ++ /xe0/xa5/xb7 DEVANAGARI LETTER UUE ++ /xe0/xa5/xb9 DEVANAGARI LETTER ZHA ++ /xe0/xa5/xba DEVANAGARI LETTER HEAVY YA + /xe0/xa5/xbb DEVANAGARI LETTER GGA + /xe0/xa5/xbc DEVANAGARI LETTER JJA + /xe0/xa5/xbd DEVANAGARI LETTER GLOTTAL STOP +@@ -2172,6 +2283,7 @@ CHARMAP + /xe0/xa7/xb8 BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR + /xe0/xa7/xb9 BENGALI CURRENCY DENOMINATOR SIXTEEN + /xe0/xa7/xba BENGALI ISSHAR ++ /xe0/xa7/xbb BENGALI GANDA MARK + /xe0/xa8/x81 GURMUKHI SIGN ADAK BINDI + /xe0/xa8/x82 GURMUKHI SIGN BINDI + /xe0/xa8/x83 GURMUKHI SIGN VISARGA +@@ -2418,6 +2530,12 @@ CHARMAP + /xe0/xad/xaf ORIYA DIGIT NINE + /xe0/xad/xb0 ORIYA ISSHAR + /xe0/xad/xb1 ORIYA LETTER WA ++ /xe0/xad/xb2 ORIYA FRACTION ONE QUARTER ++ /xe0/xad/xb3 ORIYA FRACTION ONE HALF ++ /xe0/xad/xb4 ORIYA FRACTION THREE QUARTERS ++ /xe0/xad/xb5 ORIYA FRACTION ONE SIXTEENTH ++ /xe0/xad/xb6 ORIYA FRACTION ONE EIGHTH ++ /xe0/xad/xb7 ORIYA FRACTION THREE SIXTEENTHS + /xe0/xae/x82 TAMIL SIGN ANUSVARA + /xe0/xae/x83 TAMIL SIGN VISARGA + /xe0/xae/x85 TAMIL LETTER A +@@ -2705,6 +2823,7 @@ CHARMAP + /xe0/xb4/xa6 MALAYALAM LETTER DA + /xe0/xb4/xa7 MALAYALAM LETTER DHA + /xe0/xb4/xa8 MALAYALAM LETTER NA ++ /xe0/xb4/xa9 MALAYALAM LETTER NNNA + /xe0/xb4/xaa MALAYALAM LETTER PA + /xe0/xb4/xab MALAYALAM LETTER PHA + /xe0/xb4/xac MALAYALAM LETTER BA +@@ -2721,6 +2840,7 @@ CHARMAP + /xe0/xb4/xb7 MALAYALAM LETTER SSA + /xe0/xb4/xb8 MALAYALAM LETTER SA + /xe0/xb4/xb9 MALAYALAM LETTER HA ++ /xe0/xb4/xba MALAYALAM LETTER TTTA + /xe0/xb4/xbd MALAYALAM SIGN AVAGRAHA + /xe0/xb4/xbe MALAYALAM VOWEL SIGN AA + /xe0/xb4/xbf MALAYALAM VOWEL SIGN I +@@ -2736,6 +2856,7 @@ CHARMAP + /xe0/xb5/x8b MALAYALAM VOWEL SIGN OO + /xe0/xb5/x8c MALAYALAM VOWEL SIGN AU + /xe0/xb5/x8d MALAYALAM SIGN VIRAMA ++ /xe0/xb5/x8e MALAYALAM LETTER DOT REPH + /xe0/xb5/x97 MALAYALAM AU LENGTH MARK + /xe0/xb5/xa0 MALAYALAM LETTER VOCALIC RR + /xe0/xb5/xa1 MALAYALAM LETTER VOCALIC LL +@@ -3131,6 +3252,10 @@ CHARMAP + /xe0/xbe/x89 TIBETAN SIGN MCHU CAN + /xe0/xbe/x8a TIBETAN SIGN GRU CAN RGYINGS + /xe0/xbe/x8b TIBETAN SIGN GRU MED RGYINGS ++ /xe0/xbe/x8c TIBETAN SIGN INVERTED MCHU CAN ++ /xe0/xbe/x8d TIBETAN SUBJOINED SIGN LCE TSA CAN ++ /xe0/xbe/x8e TIBETAN SUBJOINED SIGN MCHU CAN ++ /xe0/xbe/x8f TIBETAN SUBJOINED SIGN INVERTED MCHU CAN + /xe0/xbe/x90 TIBETAN SUBJOINED LETTER KA + /xe0/xbe/x91 TIBETAN SUBJOINED LETTER KHA + /xe0/xbe/x92 TIBETAN SUBJOINED LETTER GA +@@ -3197,6 +3322,12 @@ CHARMAP + /xe0/xbf/x92 TIBETAN MARK NYIS TSHEG + /xe0/xbf/x93 TIBETAN MARK INITIAL BRDA RNYING YIG MGO MDUN MA + /xe0/xbf/x94 TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA ++ /xe0/xbf/x95 RIGHT-FACING SVASTI SIGN ++ /xe0/xbf/x96 LEFT-FACING SVASTI SIGN ++ /xe0/xbf/x97 RIGHT-FACING SVASTI SIGN WITH DOTS ++ /xe0/xbf/x98 LEFT-FACING SVASTI SIGN WITH DOTS ++ /xe0/xbf/x99 TIBETAN MARK LEADING MCHAN RTAGS ++ /xe0/xbf/x9a TIBETAN MARK TRAILING MCHAN RTAGS + /xe1/x80/x80 MYANMAR LETTER KA + /xe1/x80/x81 MYANMAR LETTER KHA + /xe1/x80/x82 MYANMAR LETTER GA +@@ -3351,6 +3482,10 @@ CHARMAP + /xe1/x82/x97 MYANMAR SHAN DIGIT SEVEN + /xe1/x82/x98 MYANMAR SHAN DIGIT EIGHT + /xe1/x82/x99 MYANMAR SHAN DIGIT NINE ++ /xe1/x82/x9a MYANMAR SIGN KHAMTI TONE-1 ++ /xe1/x82/x9b MYANMAR SIGN KHAMTI TONE-3 ++ /xe1/x82/x9c MYANMAR VOWEL SIGN AITON A ++ /xe1/x82/x9d MYANMAR VOWEL SIGN AITON AI + /xe1/x82/x9e MYANMAR SYMBOL SHAN ONE + /xe1/x82/x9f MYANMAR SYMBOL SHAN EXCLAMATION + /xe1/x82/xa0 GEORGIAN CAPITAL LETTER AN +@@ -3526,6 +3661,11 @@ CHARMAP + /xe1/x85/x97 HANGUL CHOSEONG KAPYEOUNPHIEUPH + /xe1/x85/x98 HANGUL CHOSEONG SSANGHIEUH + /xe1/x85/x99 HANGUL CHOSEONG YEORINHIEUH ++ /xe1/x85/x9a HANGUL CHOSEONG KIYEOK-TIKEUT ++ /xe1/x85/x9b HANGUL CHOSEONG NIEUN-SIOS ++ /xe1/x85/x9c HANGUL CHOSEONG NIEUN-CIEUC ++ /xe1/x85/x9d HANGUL CHOSEONG NIEUN-HIEUH ++ /xe1/x85/x9e HANGUL CHOSEONG TIKEUT-RIEUL + /xe1/x85/x9f HANGUL CHOSEONG FILLER + /xe1/x85/xa0 HANGUL JUNGSEONG FILLER + /xe1/x85/xa1 HANGUL JUNGSEONG A +@@ -3594,6 +3734,11 @@ CHARMAP + /xe1/x86/xa0 HANGUL JUNGSEONG ARAEA-U + /xe1/x86/xa1 HANGUL JUNGSEONG ARAEA-I + /xe1/x86/xa2 HANGUL JUNGSEONG SSANGARAEA ++ /xe1/x86/xa3 HANGUL JUNGSEONG A-EU ++ /xe1/x86/xa4 HANGUL JUNGSEONG YA-U ++ /xe1/x86/xa5 HANGUL JUNGSEONG YEO-YA ++ /xe1/x86/xa6 HANGUL JUNGSEONG O-YA ++ /xe1/x86/xa7 HANGUL JUNGSEONG O-YAE + /xe1/x86/xa8 HANGUL JONGSEONG KIYEOK + /xe1/x86/xa9 HANGUL JONGSEONG SSANGKIYEOK + /xe1/x86/xaa HANGUL JONGSEONG KIYEOK-SIOS +@@ -3676,6 +3821,12 @@ CHARMAP + /xe1/x87/xb7 HANGUL JONGSEONG HIEUH-MIEUM + /xe1/x87/xb8 HANGUL JONGSEONG HIEUH-PIEUP + /xe1/x87/xb9 HANGUL JONGSEONG YEORINHIEUH ++ /xe1/x87/xba HANGUL JONGSEONG KIYEOK-NIEUN ++ /xe1/x87/xbb HANGUL JONGSEONG KIYEOK-PIEUP ++ /xe1/x87/xbc HANGUL JONGSEONG KIYEOK-CHIEUCH ++ /xe1/x87/xbd HANGUL JONGSEONG KIYEOK-KHIEUKH ++ /xe1/x87/xbe HANGUL JONGSEONG KIYEOK-HIEUH ++ /xe1/x87/xbf HANGUL JONGSEONG SSANGNIEUN + /xe1/x88/x80 ETHIOPIC SYLLABLE HA + /xe1/x88/x81 ETHIOPIC SYLLABLE HU + /xe1/x88/x82 ETHIOPIC SYLLABLE HI +@@ -4002,6 +4153,8 @@ CHARMAP + /xe1/x8d/x98 ETHIOPIC SYLLABLE RYA + /xe1/x8d/x99 ETHIOPIC SYLLABLE MYA + /xe1/x8d/x9a ETHIOPIC SYLLABLE FYA ++ /xe1/x8d/x9d ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK ++ /xe1/x8d/x9e ETHIOPIC COMBINING VOWEL LENGTH MARK + /xe1/x8d/x9f ETHIOPIC COMBINING GEMINATION MARK + /xe1/x8d/xa0 ETHIOPIC SECTION MARK + /xe1/x8d/xa1 ETHIOPIC WORDSPACE +@@ -4143,6 +4296,7 @@ CHARMAP + /xe1/x8f/xb2 CHEROKEE LETTER YO + /xe1/x8f/xb3 CHEROKEE LETTER YU + /xe1/x8f/xb4 CHEROKEE LETTER YV ++ /xe1/x90/x80 CANADIAN SYLLABICS HYPHEN + /xe1/x90/x81 CANADIAN SYLLABICS E + /xe1/x90/x82 CANADIAN SYLLABICS AAI + /xe1/x90/x83 CANADIAN SYLLABICS I +@@ -4773,6 +4927,15 @@ CHARMAP + /xe1/x99/xb4 CANADIAN SYLLABICS NNGOO + /xe1/x99/xb5 CANADIAN SYLLABICS NNGA + /xe1/x99/xb6 CANADIAN SYLLABICS NNGAA ++ /xe1/x99/xb7 CANADIAN SYLLABICS WOODS-CREE THWEE ++ /xe1/x99/xb8 CANADIAN SYLLABICS WOODS-CREE THWI ++ /xe1/x99/xb9 CANADIAN SYLLABICS WOODS-CREE THWII ++ /xe1/x99/xba CANADIAN SYLLABICS WOODS-CREE THWO ++ /xe1/x99/xbb CANADIAN SYLLABICS WOODS-CREE THWOO ++ /xe1/x99/xbc CANADIAN SYLLABICS WOODS-CREE THWA ++ /xe1/x99/xbd CANADIAN SYLLABICS WOODS-CREE THWAA ++ /xe1/x99/xbe CANADIAN SYLLABICS WOODS-CREE FINAL TH ++ /xe1/x99/xbf CANADIAN SYLLABICS BLACKFOOT W + /xe1/x9a/x80 OGHAM SPACE MARK + /xe1/x9a/x81 OGHAM LETTER BEITH + /xe1/x9a/x82 OGHAM LETTER LUIS +@@ -5234,6 +5397,76 @@ CHARMAP + /xe1/xa2/xa8 MONGOLIAN LETTER MANCHU ALI GALI BHA + /xe1/xa2/xa9 MONGOLIAN LETTER ALI GALI DAGALGA + /xe1/xa2/xaa MONGOLIAN LETTER MANCHU ALI GALI LHA ++ /xe1/xa2/xb0 CANADIAN SYLLABICS OY ++ /xe1/xa2/xb1 CANADIAN SYLLABICS AY ++ /xe1/xa2/xb2 CANADIAN SYLLABICS AAY ++ /xe1/xa2/xb3 CANADIAN SYLLABICS WAY ++ /xe1/xa2/xb4 CANADIAN SYLLABICS POY ++ /xe1/xa2/xb5 CANADIAN SYLLABICS PAY ++ /xe1/xa2/xb6 CANADIAN SYLLABICS PWOY ++ /xe1/xa2/xb7 CANADIAN SYLLABICS TAY ++ /xe1/xa2/xb8 CANADIAN SYLLABICS KAY ++ /xe1/xa2/xb9 CANADIAN SYLLABICS KWAY ++ /xe1/xa2/xba CANADIAN SYLLABICS MAY ++ /xe1/xa2/xbb CANADIAN SYLLABICS NOY ++ /xe1/xa2/xbc CANADIAN SYLLABICS NAY ++ /xe1/xa2/xbd CANADIAN SYLLABICS LAY ++ /xe1/xa2/xbe CANADIAN SYLLABICS SOY ++ /xe1/xa2/xbf CANADIAN SYLLABICS SAY ++ /xe1/xa3/x80 CANADIAN SYLLABICS SHOY ++ /xe1/xa3/x81 CANADIAN SYLLABICS SHAY ++ /xe1/xa3/x82 CANADIAN SYLLABICS SHWOY ++ /xe1/xa3/x83 CANADIAN SYLLABICS YOY ++ /xe1/xa3/x84 CANADIAN SYLLABICS YAY ++ /xe1/xa3/x85 CANADIAN SYLLABICS RAY ++ /xe1/xa3/x86 CANADIAN SYLLABICS NWI ++ /xe1/xa3/x87 CANADIAN SYLLABICS OJIBWAY NWI ++ /xe1/xa3/x88 CANADIAN SYLLABICS NWII ++ /xe1/xa3/x89 CANADIAN SYLLABICS OJIBWAY NWII ++ /xe1/xa3/x8a CANADIAN SYLLABICS NWO ++ /xe1/xa3/x8b CANADIAN SYLLABICS OJIBWAY NWO ++ /xe1/xa3/x8c CANADIAN SYLLABICS NWOO ++ /xe1/xa3/x8d CANADIAN SYLLABICS OJIBWAY NWOO ++ /xe1/xa3/x8e CANADIAN SYLLABICS RWEE ++ /xe1/xa3/x8f CANADIAN SYLLABICS RWI ++ /xe1/xa3/x90 CANADIAN SYLLABICS RWII ++ /xe1/xa3/x91 CANADIAN SYLLABICS RWO ++ /xe1/xa3/x92 CANADIAN SYLLABICS RWOO ++ /xe1/xa3/x93 CANADIAN SYLLABICS RWA ++ /xe1/xa3/x94 CANADIAN SYLLABICS OJIBWAY P ++ /xe1/xa3/x95 CANADIAN SYLLABICS OJIBWAY T ++ /xe1/xa3/x96 CANADIAN SYLLABICS OJIBWAY K ++ /xe1/xa3/x97 CANADIAN SYLLABICS OJIBWAY C ++ /xe1/xa3/x98 CANADIAN SYLLABICS OJIBWAY M ++ /xe1/xa3/x99 CANADIAN SYLLABICS OJIBWAY N ++ /xe1/xa3/x9a CANADIAN SYLLABICS OJIBWAY S ++ /xe1/xa3/x9b CANADIAN SYLLABICS OJIBWAY SH ++ /xe1/xa3/x9c CANADIAN SYLLABICS EASTERN W ++ /xe1/xa3/x9d CANADIAN SYLLABICS WESTERN W ++ /xe1/xa3/x9e CANADIAN SYLLABICS FINAL SMALL RING ++ /xe1/xa3/x9f CANADIAN SYLLABICS FINAL RAISED DOT ++ /xe1/xa3/xa0 CANADIAN SYLLABICS R-CREE RWE ++ /xe1/xa3/xa1 CANADIAN SYLLABICS WEST-CREE LOO ++ /xe1/xa3/xa2 CANADIAN SYLLABICS WEST-CREE LAA ++ /xe1/xa3/xa3 CANADIAN SYLLABICS THWE ++ /xe1/xa3/xa4 CANADIAN SYLLABICS THWA ++ /xe1/xa3/xa5 CANADIAN SYLLABICS TTHWE ++ /xe1/xa3/xa6 CANADIAN SYLLABICS TTHOO ++ /xe1/xa3/xa7 CANADIAN SYLLABICS TTHAA ++ /xe1/xa3/xa8 CANADIAN SYLLABICS TLHWE ++ /xe1/xa3/xa9 CANADIAN SYLLABICS TLHOO ++ /xe1/xa3/xaa CANADIAN SYLLABICS SAYISI SHWE ++ /xe1/xa3/xab CANADIAN SYLLABICS SAYISI SHOO ++ /xe1/xa3/xac CANADIAN SYLLABICS SAYISI HOO ++ /xe1/xa3/xad CANADIAN SYLLABICS CARRIER GWU ++ /xe1/xa3/xae CANADIAN SYLLABICS CARRIER DENE GEE ++ /xe1/xa3/xaf CANADIAN SYLLABICS CARRIER GAA ++ /xe1/xa3/xb0 CANADIAN SYLLABICS CARRIER GWA ++ /xe1/xa3/xb1 CANADIAN SYLLABICS SAYISI JUU ++ /xe1/xa3/xb2 CANADIAN SYLLABICS CARRIER JWA ++ /xe1/xa3/xb3 CANADIAN SYLLABICS BEAVER DENE L ++ /xe1/xa3/xb4 CANADIAN SYLLABICS BEAVER DENE R ++ /xe1/xa3/xb5 CANADIAN SYLLABICS CARRIER DENTAL S + /xe1/xa4/x80 LIMBU VOWEL-CARRIER LETTER + /xe1/xa4/x81 LIMBU LETTER KA + /xe1/xa4/x82 LIMBU LETTER KHA +@@ -5377,6 +5610,8 @@ CHARMAP + /xe1/xa6/xa7 NEW TAI LUE LETTER HIGH XVA + /xe1/xa6/xa8 NEW TAI LUE LETTER LOW KVA + /xe1/xa6/xa9 NEW TAI LUE LETTER LOW XVA ++ /xe1/xa6/xaa NEW TAI LUE LETTER HIGH SUA ++ /xe1/xa6/xab NEW TAI LUE LETTER LOW SUA + /xe1/xa6/xb0 NEW TAI LUE VOWEL SIGN VOWEL SHORTENER + /xe1/xa6/xb1 NEW TAI LUE VOWEL SIGN AA + /xe1/xa6/xb2 NEW TAI LUE VOWEL SIGN II +@@ -5413,6 +5648,7 @@ CHARMAP + /xe1/xa7/x97 NEW TAI LUE DIGIT SEVEN + /xe1/xa7/x98 NEW TAI LUE DIGIT EIGHT + /xe1/xa7/x99 NEW TAI LUE DIGIT NINE ++ /xe1/xa7/x9a NEW TAI LUE THAM DIGIT ONE + /xe1/xa7/x9e NEW TAI LUE SIGN LAE + /xe1/xa7/x9f NEW TAI LUE SIGN LAEV + /xe1/xa7/xa0 KHMER SYMBOL PATHAMASAT +@@ -5477,6 +5713,133 @@ CHARMAP + /xe1/xa8/x9b BUGINESE VOWEL SIGN AE + /xe1/xa8/x9e BUGINESE PALLAWA + /xe1/xa8/x9f BUGINESE END OF SECTION ++ /xe1/xa8/xa0 TAI THAM LETTER HIGH KA ++ /xe1/xa8/xa1 TAI THAM LETTER HIGH KHA ++ /xe1/xa8/xa2 TAI THAM LETTER HIGH KXA ++ /xe1/xa8/xa3 TAI THAM LETTER LOW KA ++ /xe1/xa8/xa4 TAI THAM LETTER LOW KXA ++ /xe1/xa8/xa5 TAI THAM LETTER LOW KHA ++ /xe1/xa8/xa6 TAI THAM LETTER NGA ++ /xe1/xa8/xa7 TAI THAM LETTER HIGH CA ++ /xe1/xa8/xa8 TAI THAM LETTER HIGH CHA ++ /xe1/xa8/xa9 TAI THAM LETTER LOW CA ++ /xe1/xa8/xaa TAI THAM LETTER LOW SA ++ /xe1/xa8/xab TAI THAM LETTER LOW CHA ++ /xe1/xa8/xac TAI THAM LETTER NYA ++ /xe1/xa8/xad TAI THAM LETTER RATA ++ /xe1/xa8/xae TAI THAM LETTER HIGH RATHA ++ /xe1/xa8/xaf TAI THAM LETTER DA ++ /xe1/xa8/xb0 TAI THAM LETTER LOW RATHA ++ /xe1/xa8/xb1 TAI THAM LETTER RANA ++ /xe1/xa8/xb2 TAI THAM LETTER HIGH TA ++ /xe1/xa8/xb3 TAI THAM LETTER HIGH THA ++ /xe1/xa8/xb4 TAI THAM LETTER LOW TA ++ /xe1/xa8/xb5 TAI THAM LETTER LOW THA ++ /xe1/xa8/xb6 TAI THAM LETTER NA ++ /xe1/xa8/xb7 TAI THAM LETTER BA ++ /xe1/xa8/xb8 TAI THAM LETTER HIGH PA ++ /xe1/xa8/xb9 TAI THAM LETTER HIGH PHA ++ /xe1/xa8/xba TAI THAM LETTER HIGH FA ++ /xe1/xa8/xbb TAI THAM LETTER LOW PA ++ /xe1/xa8/xbc TAI THAM LETTER LOW FA ++ /xe1/xa8/xbd TAI THAM LETTER LOW PHA ++ /xe1/xa8/xbe TAI THAM LETTER MA ++ /xe1/xa8/xbf TAI THAM LETTER LOW YA ++ /xe1/xa9/x80 TAI THAM LETTER HIGH YA ++ /xe1/xa9/x81 TAI THAM LETTER RA ++ /xe1/xa9/x82 TAI THAM LETTER RUE ++ /xe1/xa9/x83 TAI THAM LETTER LA ++ /xe1/xa9/x84 TAI THAM LETTER LUE ++ /xe1/xa9/x85 TAI THAM LETTER WA ++ /xe1/xa9/x86 TAI THAM LETTER HIGH SHA ++ /xe1/xa9/x87 TAI THAM LETTER HIGH SSA ++ /xe1/xa9/x88 TAI THAM LETTER HIGH SA ++ /xe1/xa9/x89 TAI THAM LETTER HIGH HA ++ /xe1/xa9/x8a TAI THAM LETTER LLA ++ /xe1/xa9/x8b TAI THAM LETTER A ++ /xe1/xa9/x8c TAI THAM LETTER LOW HA ++ /xe1/xa9/x8d TAI THAM LETTER I ++ /xe1/xa9/x8e TAI THAM LETTER II ++ /xe1/xa9/x8f TAI THAM LETTER U ++ /xe1/xa9/x90 TAI THAM LETTER UU ++ /xe1/xa9/x91 TAI THAM LETTER EE ++ /xe1/xa9/x92 TAI THAM LETTER OO ++ /xe1/xa9/x93 TAI THAM LETTER LAE ++ /xe1/xa9/x94 TAI THAM LETTER GREAT SA ++ /xe1/xa9/x95 TAI THAM CONSONANT SIGN MEDIAL RA ++ /xe1/xa9/x96 TAI THAM CONSONANT SIGN MEDIAL LA ++ /xe1/xa9/x97 TAI THAM CONSONANT SIGN LA TANG LAI ++ /xe1/xa9/x98 TAI THAM SIGN MAI KANG LAI ++ /xe1/xa9/x99 TAI THAM CONSONANT SIGN FINAL NGA ++ /xe1/xa9/x9a TAI THAM CONSONANT SIGN LOW PA ++ /xe1/xa9/x9b TAI THAM CONSONANT SIGN HIGH RATHA OR LOW PA ++ /xe1/xa9/x9c TAI THAM CONSONANT SIGN MA ++ /xe1/xa9/x9d TAI THAM CONSONANT SIGN BA ++ /xe1/xa9/x9e TAI THAM CONSONANT SIGN SA ++ /xe1/xa9/xa0 TAI THAM SIGN SAKOT ++ /xe1/xa9/xa1 TAI THAM VOWEL SIGN A ++ /xe1/xa9/xa2 TAI THAM VOWEL SIGN MAI SAT ++ /xe1/xa9/xa3 TAI THAM VOWEL SIGN AA ++ /xe1/xa9/xa4 TAI THAM VOWEL SIGN TALL AA ++ /xe1/xa9/xa5 TAI THAM VOWEL SIGN I ++ /xe1/xa9/xa6 TAI THAM VOWEL SIGN II ++ /xe1/xa9/xa7 TAI THAM VOWEL SIGN UE ++ /xe1/xa9/xa8 TAI THAM VOWEL SIGN UUE ++ /xe1/xa9/xa9 TAI THAM VOWEL SIGN U ++ /xe1/xa9/xaa TAI THAM VOWEL SIGN UU ++ /xe1/xa9/xab TAI THAM VOWEL SIGN O ++ /xe1/xa9/xac TAI THAM VOWEL SIGN OA BELOW ++ /xe1/xa9/xad TAI THAM VOWEL SIGN OY ++ /xe1/xa9/xae TAI THAM VOWEL SIGN E ++ /xe1/xa9/xaf TAI THAM VOWEL SIGN AE ++ /xe1/xa9/xb0 TAI THAM VOWEL SIGN OO ++ /xe1/xa9/xb1 TAI THAM VOWEL SIGN AI ++ /xe1/xa9/xb2 TAI THAM VOWEL SIGN THAM AI ++ /xe1/xa9/xb3 TAI THAM VOWEL SIGN OA ABOVE ++ /xe1/xa9/xb4 TAI THAM SIGN MAI KANG ++ /xe1/xa9/xb5 TAI THAM SIGN TONE-1 ++ /xe1/xa9/xb6 TAI THAM SIGN TONE-2 ++ /xe1/xa9/xb7 TAI THAM SIGN KHUEN TONE-3 ++ /xe1/xa9/xb8 TAI THAM SIGN KHUEN TONE-4 ++ /xe1/xa9/xb9 TAI THAM SIGN KHUEN TONE-5 ++ /xe1/xa9/xba TAI THAM SIGN RA HAAM ++ /xe1/xa9/xbb TAI THAM SIGN MAI SAM ++ /xe1/xa9/xbc TAI THAM SIGN KHUEN-LUE KARAN ++ /xe1/xa9/xbf TAI THAM COMBINING CRYPTOGRAMMIC DOT ++ /xe1/xaa/x80 TAI THAM HORA DIGIT ZERO ++ /xe1/xaa/x81 TAI THAM HORA DIGIT ONE ++ /xe1/xaa/x82 TAI THAM HORA DIGIT TWO ++ /xe1/xaa/x83 TAI THAM HORA DIGIT THREE ++ /xe1/xaa/x84 TAI THAM HORA DIGIT FOUR ++ /xe1/xaa/x85 TAI THAM HORA DIGIT FIVE ++ /xe1/xaa/x86 TAI THAM HORA DIGIT SIX ++ /xe1/xaa/x87 TAI THAM HORA DIGIT SEVEN ++ /xe1/xaa/x88 TAI THAM HORA DIGIT EIGHT ++ /xe1/xaa/x89 TAI THAM HORA DIGIT NINE ++ /xe1/xaa/x90 TAI THAM THAM DIGIT ZERO ++ /xe1/xaa/x91 TAI THAM THAM DIGIT ONE ++ /xe1/xaa/x92 TAI THAM THAM DIGIT TWO ++ /xe1/xaa/x93 TAI THAM THAM DIGIT THREE ++ /xe1/xaa/x94 TAI THAM THAM DIGIT FOUR ++ /xe1/xaa/x95 TAI THAM THAM DIGIT FIVE ++ /xe1/xaa/x96 TAI THAM THAM DIGIT SIX ++ /xe1/xaa/x97 TAI THAM THAM DIGIT SEVEN ++ /xe1/xaa/x98 TAI THAM THAM DIGIT EIGHT ++ /xe1/xaa/x99 TAI THAM THAM DIGIT NINE ++ /xe1/xaa/xa0 TAI THAM SIGN WIANG ++ /xe1/xaa/xa1 TAI THAM SIGN WIANGWAAK ++ /xe1/xaa/xa2 TAI THAM SIGN SAWAN ++ /xe1/xaa/xa3 TAI THAM SIGN KEOW ++ /xe1/xaa/xa4 TAI THAM SIGN HOY ++ /xe1/xaa/xa5 TAI THAM SIGN DOKMAI ++ /xe1/xaa/xa6 TAI THAM SIGN REVERSED ROTATED RANA ++ /xe1/xaa/xa7 TAI THAM SIGN MAI YAMOK ++ /xe1/xaa/xa8 TAI THAM SIGN KAAN ++ /xe1/xaa/xa9 TAI THAM SIGN KAANKUU ++ /xe1/xaa/xaa TAI THAM SIGN SATKAAN ++ /xe1/xaa/xab TAI THAM SIGN SATKAANKUU ++ /xe1/xaa/xac TAI THAM SIGN HANG ++ /xe1/xaa/xad TAI THAM SIGN CAANG + /xe1/xac/x80 BALINESE SIGN ULU RICEM + /xe1/xac/x81 BALINESE SIGN ULU CANDRA + /xe1/xac/x82 BALINESE SIGN CECEK +@@ -5653,6 +6016,62 @@ CHARMAP + /xe1/xae/xb7 SUNDANESE DIGIT SEVEN + /xe1/xae/xb8 SUNDANESE DIGIT EIGHT + /xe1/xae/xb9 SUNDANESE DIGIT NINE ++ /xe1/xaf/x80 BATAK LETTER A ++ /xe1/xaf/x81 BATAK LETTER SIMALUNGUN A ++ /xe1/xaf/x82 BATAK LETTER HA ++ /xe1/xaf/x83 BATAK LETTER SIMALUNGUN HA ++ /xe1/xaf/x84 BATAK LETTER MANDAILING HA ++ /xe1/xaf/x85 BATAK LETTER BA ++ /xe1/xaf/x86 BATAK LETTER KARO BA ++ /xe1/xaf/x87 BATAK LETTER PA ++ /xe1/xaf/x88 BATAK LETTER SIMALUNGUN PA ++ /xe1/xaf/x89 BATAK LETTER NA ++ /xe1/xaf/x8a BATAK LETTER MANDAILING NA ++ /xe1/xaf/x8b BATAK LETTER WA ++ /xe1/xaf/x8c BATAK LETTER SIMALUNGUN WA ++ /xe1/xaf/x8d BATAK LETTER PAKPAK WA ++ /xe1/xaf/x8e BATAK LETTER GA ++ /xe1/xaf/x8f BATAK LETTER SIMALUNGUN GA ++ /xe1/xaf/x90 BATAK LETTER JA ++ /xe1/xaf/x91 BATAK LETTER DA ++ /xe1/xaf/x92 BATAK LETTER RA ++ /xe1/xaf/x93 BATAK LETTER SIMALUNGUN RA ++ /xe1/xaf/x94 BATAK LETTER MA ++ /xe1/xaf/x95 BATAK LETTER SIMALUNGUN MA ++ /xe1/xaf/x96 BATAK LETTER SOUTHERN TA ++ /xe1/xaf/x97 BATAK LETTER NORTHERN TA ++ /xe1/xaf/x98 BATAK LETTER SA ++ /xe1/xaf/x99 BATAK LETTER SIMALUNGUN SA ++ /xe1/xaf/x9a BATAK LETTER MANDAILING SA ++ /xe1/xaf/x9b BATAK LETTER YA ++ /xe1/xaf/x9c BATAK LETTER SIMALUNGUN YA ++ /xe1/xaf/x9d BATAK LETTER NGA ++ /xe1/xaf/x9e BATAK LETTER LA ++ /xe1/xaf/x9f BATAK LETTER SIMALUNGUN LA ++ /xe1/xaf/xa0 BATAK LETTER NYA ++ /xe1/xaf/xa1 BATAK LETTER CA ++ /xe1/xaf/xa2 BATAK LETTER NDA ++ /xe1/xaf/xa3 BATAK LETTER MBA ++ /xe1/xaf/xa4 BATAK LETTER I ++ /xe1/xaf/xa5 BATAK LETTER U ++ /xe1/xaf/xa6 BATAK SIGN TOMPI ++ /xe1/xaf/xa7 BATAK VOWEL SIGN E ++ /xe1/xaf/xa8 BATAK VOWEL SIGN PAKPAK E ++ /xe1/xaf/xa9 BATAK VOWEL SIGN EE ++ /xe1/xaf/xaa BATAK VOWEL SIGN I ++ /xe1/xaf/xab BATAK VOWEL SIGN KARO I ++ /xe1/xaf/xac BATAK VOWEL SIGN O ++ /xe1/xaf/xad BATAK VOWEL SIGN KARO O ++ /xe1/xaf/xae BATAK VOWEL SIGN U ++ /xe1/xaf/xaf BATAK VOWEL SIGN U FOR SIMALUNGUN SA ++ /xe1/xaf/xb0 BATAK CONSONANT SIGN NG ++ /xe1/xaf/xb1 BATAK CONSONANT SIGN H ++ /xe1/xaf/xb2 BATAK PANGOLAT ++ /xe1/xaf/xb3 BATAK PANONGONAN ++ /xe1/xaf/xbc BATAK SYMBOL BINDU NA METEK ++ /xe1/xaf/xbd BATAK SYMBOL BINDU PINARBORAS ++ /xe1/xaf/xbe BATAK SYMBOL BINDU JUDUL ++ /xe1/xaf/xbf BATAK SYMBOL BINDU PANGOLAT + /xe1/xb0/x80 LEPCHA LETTER KA + /xe1/xb0/x81 LEPCHA LETTER KLA + /xe1/xb0/x82 LEPCHA LETTER KHA +@@ -5775,6 +6194,41 @@ CHARMAP + /xe1/xb1/xbd OL CHIKI AHAD + /xe1/xb1/xbe OL CHIKI PUNCTUATION MUCAAD + /xe1/xb1/xbf OL CHIKI PUNCTUATION DOUBLE MUCAAD ++ /xe1/xb3/x90 VEDIC TONE KARSHANA ++ /xe1/xb3/x91 VEDIC TONE SHARA ++ /xe1/xb3/x92 VEDIC TONE PRENKHA ++ /xe1/xb3/x93 VEDIC SIGN NIHSHVASA ++ /xe1/xb3/x94 VEDIC SIGN YAJURVEDIC MIDLINE SVARITA ++ /xe1/xb3/x95 VEDIC TONE YAJURVEDIC AGGRAVATED INDEPENDENT SVARITA ++ /xe1/xb3/x96 VEDIC TONE YAJURVEDIC INDEPENDENT SVARITA ++ /xe1/xb3/x97 VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA ++ /xe1/xb3/x98 VEDIC TONE CANDRA BELOW ++ /xe1/xb3/x99 VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA SCHROEDER ++ /xe1/xb3/x9a VEDIC TONE DOUBLE SVARITA ++ /xe1/xb3/x9b VEDIC TONE TRIPLE SVARITA ++ /xe1/xb3/x9c VEDIC TONE KATHAKA ANUDATTA ++ /xe1/xb3/x9d VEDIC TONE DOT BELOW ++ /xe1/xb3/x9e VEDIC TONE TWO DOTS BELOW ++ /xe1/xb3/x9f VEDIC TONE THREE DOTS BELOW ++ /xe1/xb3/xa0 VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA ++ /xe1/xb3/xa1 VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA ++ /xe1/xb3/xa2 VEDIC SIGN VISARGA SVARITA ++ /xe1/xb3/xa3 VEDIC SIGN VISARGA UDATTA ++ /xe1/xb3/xa4 VEDIC SIGN REVERSED VISARGA UDATTA ++ /xe1/xb3/xa5 VEDIC SIGN VISARGA ANUDATTA ++ /xe1/xb3/xa6 VEDIC SIGN REVERSED VISARGA ANUDATTA ++ /xe1/xb3/xa7 VEDIC SIGN VISARGA UDATTA WITH TAIL ++ /xe1/xb3/xa8 VEDIC SIGN VISARGA ANUDATTA WITH TAIL ++ /xe1/xb3/xa9 VEDIC SIGN ANUSVARA ANTARGOMUKHA ++ /xe1/xb3/xaa VEDIC SIGN ANUSVARA BAHIRGOMUKHA ++ /xe1/xb3/xab VEDIC SIGN ANUSVARA VAMAGOMUKHA ++ /xe1/xb3/xac VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL ++ /xe1/xb3/xad VEDIC SIGN TIRYAK ++ /xe1/xb3/xae VEDIC SIGN HEXIFORM LONG ANUSVARA ++ /xe1/xb3/xaf VEDIC SIGN LONG ANUSVARA ++ /xe1/xb3/xb0 VEDIC SIGN RTHANG LONG ANUSVARA ++ /xe1/xb3/xb1 VEDIC SIGN ANUSVARA UBHAYATO MUKHA ++ /xe1/xb3/xb2 VEDIC SIGN ARDHAVISARGA + /xe1/xb4/x80 LATIN LETTER SMALL CAPITAL A + /xe1/xb4/x81 LATIN LETTER SMALL CAPITAL AE + /xe1/xb4/x82 LATIN SMALL LETTER TURNED AE +@@ -6006,6 +6460,8 @@ CHARMAP + /xe1/xb7/xa4 COMBINING LATIN SMALL LETTER S + /xe1/xb7/xa5 COMBINING LATIN SMALL LETTER LONG S + /xe1/xb7/xa6 COMBINING LATIN SMALL LETTER Z ++ /xe1/xb7/xbc COMBINING DOUBLE INVERTED BREVE BELOW ++ /xe1/xb7/xbd COMBINING ALMOST EQUAL TO BELOW + /xe1/xb7/xbe COMBINING LEFT ARROWHEAD ABOVE + /xe1/xb7/xbf COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW + /xe1/xb8/x80 LATIN CAPITAL LETTER A WITH RING BELOW +@@ -6638,6 +7094,14 @@ CHARMAP + /xe2/x82/x92 LATIN SUBSCRIPT SMALL LETTER O + /xe2/x82/x93 LATIN SUBSCRIPT SMALL LETTER X + /xe2/x82/x94 LATIN SUBSCRIPT SMALL LETTER SCHWA ++ /xe2/x82/x95 LATIN SUBSCRIPT SMALL LETTER H ++ /xe2/x82/x96 LATIN SUBSCRIPT SMALL LETTER K ++ /xe2/x82/x97 LATIN SUBSCRIPT SMALL LETTER L ++ /xe2/x82/x98 LATIN SUBSCRIPT SMALL LETTER M ++ /xe2/x82/x99 LATIN SUBSCRIPT SMALL LETTER N ++ /xe2/x82/x9a LATIN SUBSCRIPT SMALL LETTER P ++ /xe2/x82/x9b LATIN SUBSCRIPT SMALL LETTER S ++ /xe2/x82/x9c LATIN SUBSCRIPT SMALL LETTER T + /xe2/x82/xa0 EURO-CURRENCY SIGN + /xe2/x82/xa1 COLON SIGN + /xe2/x82/xa2 CRUZEIRO SIGN +@@ -6660,6 +7124,10 @@ CHARMAP + /xe2/x82/xb3 AUSTRAL SIGN + /xe2/x82/xb4 HRYVNIA SIGN + /xe2/x82/xb5 CEDI SIGN ++ /xe2/x82/xb6 LIVRE TOURNOIS SIGN ++ /xe2/x82/xb7 SPESMILO SIGN ++ /xe2/x82/xb8 TENGE SIGN ++ /xe2/x82/xb9 INDIAN RUPEE SIGN + /xe2/x83/x90 COMBINING LEFT HARPOON ABOVE + /xe2/x83/x91 COMBINING RIGHT HARPOON ABOVE + /xe2/x83/x92 COMBINING LONG VERTICAL LINE OVERLAY +@@ -6773,6 +7241,9 @@ CHARMAP + /xe2/x85/x8d AKTIESELSKAB + /xe2/x85/x8e TURNED SMALL F + /xe2/x85/x8f SYMBOL FOR SAMARITAN SOURCE ++ /xe2/x85/x90 VULGAR FRACTION ONE SEVENTH ++ /xe2/x85/x91 VULGAR FRACTION ONE NINTH ++ /xe2/x85/x92 VULGAR FRACTION ONE TENTH + /xe2/x85/x93 VULGAR FRACTION ONE THIRD + /xe2/x85/x94 VULGAR FRACTION TWO THIRDS + /xe2/x85/x95 VULGAR FRACTION ONE FIFTH +@@ -6827,6 +7298,7 @@ CHARMAP + /xe2/x86/x86 ROMAN NUMERAL FIFTY EARLY FORM + /xe2/x86/x87 ROMAN NUMERAL FIFTY THOUSAND + /xe2/x86/x88 ROMAN NUMERAL ONE HUNDRED THOUSAND ++ /xe2/x86/x89 VULGAR FRACTION ZERO THIRDS + /xe2/x86/x90 LEFTWARDS ARROW + /xe2/x86/x91 UPWARDS ARROW + /xe2/x86/x92 RIGHTWARDS ARROW +@@ -7427,6 +7899,18 @@ CHARMAP + /xe2/x8f/xa5 FLATNESS + /xe2/x8f/xa6 AC CURRENT + /xe2/x8f/xa7 ELECTRICAL INTERSECTION ++ /xe2/x8f/xa8 DECIMAL EXPONENT SYMBOL ++ /xe2/x8f/xa9 BLACK RIGHT-POINTING DOUBLE TRIANGLE ++ /xe2/x8f/xaa BLACK LEFT-POINTING DOUBLE TRIANGLE ++ /xe2/x8f/xab BLACK UP-POINTING DOUBLE TRIANGLE ++ /xe2/x8f/xac BLACK DOWN-POINTING DOUBLE TRIANGLE ++ /xe2/x8f/xad BLACK RIGHT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR ++ /xe2/x8f/xae BLACK LEFT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR ++ /xe2/x8f/xaf BLACK RIGHT-POINTING TRIANGLE WITH DOUBLE VERTICAL BAR ++ /xe2/x8f/xb0 ALARM CLOCK ++ /xe2/x8f/xb1 STOPWATCH ++ /xe2/x8f/xb2 TIMER CLOCK ++ /xe2/x8f/xb3 HOURGLASS WITH FLOWING SAND + /xe2/x90/x80 SYMBOL FOR NULL + /xe2/x90/x81 SYMBOL FOR START OF HEADING + /xe2/x90/x82 SYMBOL FOR START OF TEXT +@@ -8051,6 +8535,8 @@ CHARMAP + /xe2/x9a/x9b ATOM SYMBOL + /xe2/x9a/x9c FLEUR-DE-LIS + /xe2/x9a/x9d OUTLINED WHITE STAR ++ /xe2/x9a/x9e THREE LINES CONVERGING RIGHT ++ /xe2/x9a/x9f THREE LINES CONVERGING LEFT + /xe2/x9a/xa0 WARNING SIGN + /xe2/x9a/xa1 HIGH VOLTAGE SIGN + /xe2/x9a/xa2 DOUBLED FEMALE SIGN +@@ -8080,18 +8566,84 @@ CHARMAP + /xe2/x9a/xba SEMISEXTILE + /xe2/x9a/xbb QUINCUNX + /xe2/x9a/xbc SESQUIQUADRATE ++ /xe2/x9a/xbd SOCCER BALL ++ /xe2/x9a/xbe BASEBALL ++ /xe2/x9a/xbf SQUARED KEY + /xe2/x9b/x80 WHITE DRAUGHTS MAN + /xe2/x9b/x81 WHITE DRAUGHTS KING + /xe2/x9b/x82 BLACK DRAUGHTS MAN + /xe2/x9b/x83 BLACK DRAUGHTS KING ++ /xe2/x9b/x84 SNOWMAN WITHOUT SNOW ++ /xe2/x9b/x85 SUN BEHIND CLOUD ++ /xe2/x9b/x86 RAIN ++ /xe2/x9b/x87 BLACK SNOWMAN ++ /xe2/x9b/x88 THUNDER CLOUD AND RAIN ++ /xe2/x9b/x89 TURNED WHITE SHOGI PIECE ++ /xe2/x9b/x8a TURNED BLACK SHOGI PIECE ++ /xe2/x9b/x8b WHITE DIAMOND IN SQUARE ++ /xe2/x9b/x8c CROSSING LANES ++ /xe2/x9b/x8d DISABLED CAR ++ /xe2/x9b/x8e OPHIUCHUS ++ /xe2/x9b/x8f PICK ++ /xe2/x9b/x90 CAR SLIDING ++ /xe2/x9b/x91 HELMET WITH WHITE CROSS ++ /xe2/x9b/x92 CIRCLED CROSSING LANES ++ /xe2/x9b/x93 CHAINS ++ /xe2/x9b/x94 NO ENTRY ++ /xe2/x9b/x95 ALTERNATE ONE-WAY LEFT WAY TRAFFIC ++ /xe2/x9b/x96 BLACK TWO-WAY LEFT WAY TRAFFIC ++ /xe2/x9b/x97 WHITE TWO-WAY LEFT WAY TRAFFIC ++ /xe2/x9b/x98 BLACK LEFT LANE MERGE ++ /xe2/x9b/x99 WHITE LEFT LANE MERGE ++ /xe2/x9b/x9a DRIVE SLOW SIGN ++ /xe2/x9b/x9b HEAVY WHITE DOWN-POINTING TRIANGLE ++ /xe2/x9b/x9c LEFT CLOSED ENTRY ++ /xe2/x9b/x9d SQUARED SALTIRE ++ /xe2/x9b/x9e FALLING DIAGONAL IN WHITE CIRCLE IN BLACK SQUARE ++ /xe2/x9b/x9f BLACK TRUCK ++ /xe2/x9b/xa0 RESTRICTED LEFT ENTRY-1 ++ /xe2/x9b/xa1 RESTRICTED LEFT ENTRY-2 ++ /xe2/x9b/xa2 ASTRONOMICAL SYMBOL FOR URANUS ++ /xe2/x9b/xa3 HEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVE ++ /xe2/x9b/xa4 PENTAGRAM ++ /xe2/x9b/xa5 RIGHT-HANDED INTERLACED PENTAGRAM ++ /xe2/x9b/xa6 LEFT-HANDED INTERLACED PENTAGRAM ++ /xe2/x9b/xa7 INVERTED PENTAGRAM ++ /xe2/x9b/xa8 BLACK CROSS ON SHIELD ++ /xe2/x9b/xa9 SHINTO SHRINE ++ /xe2/x9b/xaa CHURCH ++ /xe2/x9b/xab CASTLE ++ /xe2/x9b/xac HISTORIC SITE ++ /xe2/x9b/xad GEAR WITHOUT HUB ++ /xe2/x9b/xae GEAR WITH HANDLES ++ /xe2/x9b/xaf MAP SYMBOL FOR LIGHTHOUSE ++ /xe2/x9b/xb0 MOUNTAIN ++ /xe2/x9b/xb1 UMBRELLA ON GROUND ++ /xe2/x9b/xb2 FOUNTAIN ++ /xe2/x9b/xb3 FLAG IN HOLE ++ /xe2/x9b/xb4 FERRY ++ /xe2/x9b/xb5 SAILBOAT ++ /xe2/x9b/xb6 SQUARE FOUR CORNERS ++ /xe2/x9b/xb7 SKIER ++ /xe2/x9b/xb8 ICE SKATE ++ /xe2/x9b/xb9 PERSON WITH BALL ++ /xe2/x9b/xba TENT ++ /xe2/x9b/xbb JAPANESE BANK SYMBOL ++ /xe2/x9b/xbc HEADSTONE GRAVEYARD SYMBOL ++ /xe2/x9b/xbd FUEL PUMP ++ /xe2/x9b/xbe CUP ON BLACK SQUARE ++ /xe2/x9b/xbf WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE + /xe2/x9c/x81 UPPER BLADE SCISSORS + /xe2/x9c/x82 BLACK SCISSORS + /xe2/x9c/x83 LOWER BLADE SCISSORS + /xe2/x9c/x84 WHITE SCISSORS ++ /xe2/x9c/x85 WHITE HEAVY CHECK MARK + /xe2/x9c/x86 TELEPHONE LOCATION SIGN + /xe2/x9c/x87 TAPE DRIVE + /xe2/x9c/x88 AIRPLANE + /xe2/x9c/x89 ENVELOPE ++ /xe2/x9c/x8a RAISED FIST ++ /xe2/x9c/x8b RAISED HAND + /xe2/x9c/x8c VICTORY HAND + /xe2/x9c/x8d WRITING HAND + /xe2/x9c/x8e LOWER RIGHT PENCIL +@@ -8120,6 +8672,7 @@ CHARMAP + /xe2/x9c/xa5 FOUR CLUB-SPOKED ASTERISK + /xe2/x9c/xa6 BLACK FOUR POINTED STAR + /xe2/x9c/xa7 WHITE FOUR POINTED STAR ++ /xe2/x9c/xa8 SPARKLES + /xe2/x9c/xa9 STRESS OUTLINED WHITE STAR + /xe2/x9c/xaa CIRCLED WHITE STAR + /xe2/x9c/xab OPEN CENTRE BLACK STAR +@@ -8155,12 +8708,18 @@ CHARMAP + /xe2/x9d/x89 BALLOON-SPOKED ASTERISK + /xe2/x9d/x8a EIGHT TEARDROP-SPOKED PROPELLER ASTERISK + /xe2/x9d/x8b HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK ++ /xe2/x9d/x8c CROSS MARK + /xe2/x9d/x8d SHADOWED WHITE CIRCLE ++ /xe2/x9d/x8e NEGATIVE SQUARED CROSS MARK + /xe2/x9d/x8f LOWER RIGHT DROP-SHADOWED WHITE SQUARE + /xe2/x9d/x90 UPPER RIGHT DROP-SHADOWED WHITE SQUARE + /xe2/x9d/x91 LOWER RIGHT SHADOWED WHITE SQUARE + /xe2/x9d/x92 UPPER RIGHT SHADOWED WHITE SQUARE ++ /xe2/x9d/x93 BLACK QUESTION MARK ORNAMENT ++ /xe2/x9d/x94 WHITE QUESTION MARK ORNAMENT ++ /xe2/x9d/x95 WHITE EXCLAMATION MARK ORNAMENT + /xe2/x9d/x96 BLACK DIAMOND MINUS WHITE X ++ /xe2/x9d/x97 HEAVY EXCLAMATION MARK SYMBOL + /xe2/x9d/x98 LIGHT VERTICAL BAR + /xe2/x9d/x99 MEDIUM VERTICAL BAR + /xe2/x9d/x9a HEAVY VERTICAL BAR +@@ -8168,6 +8727,8 @@ CHARMAP + /xe2/x9d/x9c HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT + /xe2/x9d/x9d HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT + /xe2/x9d/x9e HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT ++ /xe2/x9d/x9f HEAVY LOW SINGLE COMMA QUOTATION MARK ORNAMENT ++ /xe2/x9d/xa0 HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT + /xe2/x9d/xa1 CURVED STEM PARAGRAPH SIGN ORNAMENT + /xe2/x9d/xa2 HEAVY EXCLAMATION MARK ORNAMENT + /xe2/x9d/xa3 HEAVY HEART EXCLAMATION MARK ORNAMENT +@@ -8220,6 +8781,9 @@ CHARMAP + /xe2/x9e/x92 DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE + /xe2/x9e/x93 DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN + /xe2/x9e/x94 HEAVY WIDE-HEADED RIGHTWARDS ARROW ++ /xe2/x9e/x95 HEAVY PLUS SIGN ++ /xe2/x9e/x96 HEAVY MINUS SIGN ++ /xe2/x9e/x97 HEAVY DIVISION SIGN + /xe2/x9e/x98 HEAVY SOUTH EAST ARROW + /xe2/x9e/x99 HEAVY RIGHTWARDS ARROW + /xe2/x9e/x9a HEAVY NORTH EAST ARROW +@@ -8244,6 +8808,7 @@ CHARMAP + /xe2/x9e/xad HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW + /xe2/x9e/xae HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW + /xe2/x9e/xaf NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW ++ /xe2/x9e/xb0 CURLY LOOP + /xe2/x9e/xb1 NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW + /xe2/x9e/xb2 CIRCLED HEAVY WHITE RIGHTWARDS ARROW + /xe2/x9e/xb3 WHITE-FEATHERED RIGHTWARDS ARROW +@@ -8258,6 +8823,7 @@ CHARMAP + /xe2/x9e/xbc WEDGE-TAILED RIGHTWARDS ARROW + /xe2/x9e/xbd HEAVY WEDGE-TAILED RIGHTWARDS ARROW + /xe2/x9e/xbe OPEN-OUTLINED RIGHTWARDS ARROW ++ /xe2/x9e/xbf DOUBLE CURLY LOOP + /xe2/x9f/x80 THREE DIMENSIONAL ANGLE + /xe2/x9f/x81 WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE + /xe2/x9f/x82 PERPENDICULAR +@@ -8270,6 +8836,8 @@ CHARMAP + /xe2/x9f/x89 SUPERSET PRECEDING SOLIDUS + /xe2/x9f/x8a VERTICAL BAR WITH HORIZONTAL STROKE + /xe2/x9f/x8c LONG DIVISION ++ /xe2/x9f/x8e SQUARED LOGICAL AND ++ /xe2/x9f/x8f SQUARED LOGICAL OR + /xe2/x9f/x90 WHITE DIAMOND WITH CENTRED DOT + /xe2/x9f/x91 AND WITH DOT + /xe2/x9f/x92 ELEMENT OF OPENING UPWARDS +@@ -9168,6 +9736,11 @@ CHARMAP + /xe2/xad/x92 WHITE SMALL STAR + /xe2/xad/x93 BLACK RIGHT-POINTING PENTAGON + /xe2/xad/x94 WHITE RIGHT-POINTING PENTAGON ++ /xe2/xad/x95 HEAVY LARGE CIRCLE ++ /xe2/xad/x96 HEAVY OVAL WITH OVAL INSIDE ++ /xe2/xad/x97 HEAVY CIRCLE WITH CIRCLE INSIDE ++ /xe2/xad/x98 HEAVY CIRCLE ++ /xe2/xad/x99 HEAVY CIRCLED SALTIRE + /xe2/xb0/x80 GLAGOLITIC CAPITAL LETTER AZU + /xe2/xb0/x81 GLAGOLITIC CAPITAL LETTER BUKY + /xe2/xb0/x82 GLAGOLITIC CAPITAL LETTER VEDE +@@ -9278,6 +9851,7 @@ CHARMAP + /xe2/xb1/xad LATIN CAPITAL LETTER ALPHA + /xe2/xb1/xae LATIN CAPITAL LETTER M WITH HOOK + /xe2/xb1/xaf LATIN CAPITAL LETTER TURNED A ++ /xe2/xb1/xb0 LATIN CAPITAL LETTER TURNED ALPHA + /xe2/xb1/xb1 LATIN SMALL LETTER V WITH RIGHT HOOK + /xe2/xb1/xb2 LATIN CAPITAL LETTER W WITH HOOK + /xe2/xb1/xb3 LATIN SMALL LETTER W WITH HOOK +@@ -9291,6 +9865,8 @@ CHARMAP + /xe2/xb1/xbb LATIN LETTER SMALL CAPITAL TURNED E + /xe2/xb1/xbc LATIN SUBSCRIPT SMALL LETTER J + /xe2/xb1/xbd MODIFIER LETTER CAPITAL V ++ /xe2/xb1/xbe LATIN CAPITAL LETTER S WITH SWASH TAIL ++ /xe2/xb1/xbf LATIN CAPITAL LETTER Z WITH SWASH TAIL + /xe2/xb2/x80 COPTIC CAPITAL LETTER ALFA + /xe2/xb2/x81 COPTIC SMALL LETTER ALFA + /xe2/xb2/x82 COPTIC CAPITAL LETTER VIDA +@@ -9398,6 +9974,13 @@ CHARMAP + /xe2/xb3/xa8 COPTIC SYMBOL TAU RO + /xe2/xb3/xa9 COPTIC SYMBOL KHI RO + /xe2/xb3/xaa COPTIC SYMBOL SHIMA SIMA ++ /xe2/xb3/xab COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI ++ /xe2/xb3/xac COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI ++ /xe2/xb3/xad COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA ++ /xe2/xb3/xae COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA ++ /xe2/xb3/xaf COPTIC COMBINING NI ABOVE ++ /xe2/xb3/xb0 COPTIC COMBINING SPIRITUS ASPER ++ /xe2/xb3/xb1 COPTIC COMBINING SPIRITUS LENIS + /xe2/xb3/xb9 COPTIC OLD NUBIAN FULL STOP + /xe2/xb3/xba COPTIC OLD NUBIAN DIRECT QUESTION MARK + /xe2/xb3/xbb COPTIC OLD NUBIAN INDIRECT QUESTION MARK +@@ -9498,6 +10081,8 @@ CHARMAP + /xe2/xb5/xa4 TIFINAGH LETTER TAWELLEMET YAZ + /xe2/xb5/xa5 TIFINAGH LETTER YAZZ + /xe2/xb5/xaf TIFINAGH MODIFIER LETTER LABIALIZATION MARK ++ /xe2/xb5/xb0 TIFINAGH SEPARATOR MARK ++ /xe2/xb5/xbf TIFINAGH CONSONANT JOINER + /xe2/xb6/x80 ETHIOPIC SYLLABLE LOA + /xe2/xb6/x81 ETHIOPIC SYLLABLE MOA + /xe2/xb6/x82 ETHIOPIC SYLLABLE ROA +@@ -9658,6 +10243,7 @@ CHARMAP + /xe2/xb8/xae REVERSED QUESTION MARK + /xe2/xb8/xaf VERTICAL TILDE + /xe2/xb8/xb0 RING POINT ++ /xe2/xb8/xb1 WORD SEPARATOR MIDDLE DOT + /xe2/xba/x80 CJK RADICAL REPEAT + /xe2/xba/x81 CJK RADICAL CLIFF + /xe2/xba/x82 CJK RADICAL SECOND ONE +@@ -10427,6 +11013,9 @@ CHARMAP + /xe3/x86/xb5 BOPOMOFO FINAL LETTER T + /xe3/x86/xb6 BOPOMOFO FINAL LETTER K + /xe3/x86/xb7 BOPOMOFO FINAL LETTER H ++ /xe3/x86/xb8 BOPOMOFO LETTER GH ++ /xe3/x86/xb9 BOPOMOFO LETTER LH ++ /xe3/x86/xba BOPOMOFO LETTER ZY + /xe3/x87/x80 CJK STROKE T + /xe3/x87/x81 CJK STROKE WG + /xe3/x87/x82 CJK STROKE XG +@@ -10546,6 +11135,18 @@ CHARMAP + /xe3/x89/x81 PARENTHESIZED IDEOGRAPH REST + /xe3/x89/x82 PARENTHESIZED IDEOGRAPH SELF + /xe3/x89/x83 PARENTHESIZED IDEOGRAPH REACH ++ /xe3/x89/x84 CIRCLED IDEOGRAPH QUESTION ++ /xe3/x89/x85 CIRCLED IDEOGRAPH KINDERGARTEN ++ /xe3/x89/x86 CIRCLED IDEOGRAPH SCHOOL ++ /xe3/x89/x87 CIRCLED IDEOGRAPH KOTO ++ /xe3/x89/x88 CIRCLED NUMBER TEN ON BLACK SQUARE ++ /xe3/x89/x89 CIRCLED NUMBER TWENTY ON BLACK SQUARE ++ /xe3/x89/x8a CIRCLED NUMBER THIRTY ON BLACK SQUARE ++ /xe3/x89/x8b CIRCLED NUMBER FORTY ON BLACK SQUARE ++ /xe3/x89/x8c CIRCLED NUMBER FIFTY ON BLACK SQUARE ++ /xe3/x89/x8d CIRCLED NUMBER SIXTY ON BLACK SQUARE ++ /xe3/x89/x8e CIRCLED NUMBER SEVENTY ON BLACK SQUARE ++ /xe3/x89/x8f CIRCLED NUMBER EIGHTY ON BLACK SQUARE + /xe3/x89/x90 PARTNERSHIP SIGN + /xe3/x89/x91 CIRCLED NUMBER TWENTY ONE + /xe3/x89/x92 CIRCLED NUMBER TWENTY TWO +@@ -12691,6 +13292,54 @@ CHARMAP + /xea/x93/x84 YI RADICAL ZZIET + /xea/x93/x85 YI RADICAL NBIE + /xea/x93/x86 YI RADICAL KE ++ /xea/x93/x90 LISU LETTER BA ++ /xea/x93/x91 LISU LETTER PA ++ /xea/x93/x92 LISU LETTER PHA ++ /xea/x93/x93 LISU LETTER DA ++ /xea/x93/x94 LISU LETTER TA ++ /xea/x93/x95 LISU LETTER THA ++ /xea/x93/x96 LISU LETTER GA ++ /xea/x93/x97 LISU LETTER KA ++ /xea/x93/x98 LISU LETTER KHA ++ /xea/x93/x99 LISU LETTER JA ++ /xea/x93/x9a LISU LETTER CA ++ /xea/x93/x9b LISU LETTER CHA ++ /xea/x93/x9c LISU LETTER DZA ++ /xea/x93/x9d LISU LETTER TSA ++ /xea/x93/x9e LISU LETTER TSHA ++ /xea/x93/x9f LISU LETTER MA ++ /xea/x93/xa0 LISU LETTER NA ++ /xea/x93/xa1 LISU LETTER LA ++ /xea/x93/xa2 LISU LETTER SA ++ /xea/x93/xa3 LISU LETTER ZHA ++ /xea/x93/xa4 LISU LETTER ZA ++ /xea/x93/xa5 LISU LETTER NGA ++ /xea/x93/xa6 LISU LETTER HA ++ /xea/x93/xa7 LISU LETTER XA ++ /xea/x93/xa8 LISU LETTER HHA ++ /xea/x93/xa9 LISU LETTER FA ++ /xea/x93/xaa LISU LETTER WA ++ /xea/x93/xab LISU LETTER SHA ++ /xea/x93/xac LISU LETTER YA ++ /xea/x93/xad LISU LETTER GHA ++ /xea/x93/xae LISU LETTER A ++ /xea/x93/xaf LISU LETTER AE ++ /xea/x93/xb0 LISU LETTER E ++ /xea/x93/xb1 LISU LETTER EU ++ /xea/x93/xb2 LISU LETTER I ++ /xea/x93/xb3 LISU LETTER O ++ /xea/x93/xb4 LISU LETTER U ++ /xea/x93/xb5 LISU LETTER UE ++ /xea/x93/xb6 LISU LETTER UH ++ /xea/x93/xb7 LISU LETTER OE ++ /xea/x93/xb8 LISU LETTER TONE MYA TI ++ /xea/x93/xb9 LISU LETTER TONE NA PO ++ /xea/x93/xba LISU LETTER TONE MYA CYA ++ /xea/x93/xbb LISU LETTER TONE MYA BO ++ /xea/x93/xbc LISU LETTER TONE MYA NA ++ /xea/x93/xbd LISU LETTER TONE MYA JEU ++ /xea/x93/xbe LISU PUNCTUATION COMMA ++ /xea/x93/xbf LISU PUNCTUATION FULL STOP + /xea/x94/x80 VAI SYLLABLE EE + /xea/x94/x81 VAI SYLLABLE EEN + /xea/x94/x82 VAI SYLLABLE HEE +@@ -13023,6 +13672,8 @@ CHARMAP + /xea/x99/x9d CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS + /xea/x99/x9e CYRILLIC CAPITAL LETTER YN + /xea/x99/x9f CYRILLIC SMALL LETTER YN ++ /xea/x99/xa0 CYRILLIC CAPITAL LETTER REVERSED TSE ++ /xea/x99/xa1 CYRILLIC SMALL LETTER REVERSED TSE + /xea/x99/xa2 CYRILLIC CAPITAL LETTER SOFT DE + /xea/x99/xa3 CYRILLIC SMALL LETTER SOFT DE + /xea/x99/xa4 CYRILLIC CAPITAL LETTER SOFT EL +@@ -13069,6 +13720,94 @@ CHARMAP + /xea/x9a/x95 CYRILLIC SMALL LETTER HWE + /xea/x9a/x96 CYRILLIC CAPITAL LETTER SHWE + /xea/x9a/x97 CYRILLIC SMALL LETTER SHWE ++ /xea/x9a/xa0 BAMUM LETTER A ++ /xea/x9a/xa1 BAMUM LETTER KA ++ /xea/x9a/xa2 BAMUM LETTER U ++ /xea/x9a/xa3 BAMUM LETTER KU ++ /xea/x9a/xa4 BAMUM LETTER EE ++ /xea/x9a/xa5 BAMUM LETTER REE ++ /xea/x9a/xa6 BAMUM LETTER TAE ++ /xea/x9a/xa7 BAMUM LETTER O ++ /xea/x9a/xa8 BAMUM LETTER NYI ++ /xea/x9a/xa9 BAMUM LETTER I ++ /xea/x9a/xaa BAMUM LETTER LA ++ /xea/x9a/xab BAMUM LETTER PA ++ /xea/x9a/xac BAMUM LETTER RII ++ /xea/x9a/xad BAMUM LETTER RIEE ++ /xea/x9a/xae BAMUM LETTER LEEEE ++ /xea/x9a/xaf BAMUM LETTER MEEEE ++ /xea/x9a/xb0 BAMUM LETTER TAA ++ /xea/x9a/xb1 BAMUM LETTER NDAA ++ /xea/x9a/xb2 BAMUM LETTER NJAEM ++ /xea/x9a/xb3 BAMUM LETTER M ++ /xea/x9a/xb4 BAMUM LETTER SUU ++ /xea/x9a/xb5 BAMUM LETTER MU ++ /xea/x9a/xb6 BAMUM LETTER SHII ++ /xea/x9a/xb7 BAMUM LETTER SI ++ /xea/x9a/xb8 BAMUM LETTER SHEUX ++ /xea/x9a/xb9 BAMUM LETTER SEUX ++ /xea/x9a/xba BAMUM LETTER KYEE ++ /xea/x9a/xbb BAMUM LETTER KET ++ /xea/x9a/xbc BAMUM LETTER NUAE ++ /xea/x9a/xbd BAMUM LETTER NU ++ /xea/x9a/xbe BAMUM LETTER NJUAE ++ /xea/x9a/xbf BAMUM LETTER YOQ ++ /xea/x9b/x80 BAMUM LETTER SHU ++ /xea/x9b/x81 BAMUM LETTER YUQ ++ /xea/x9b/x82 BAMUM LETTER YA ++ /xea/x9b/x83 BAMUM LETTER NSHA ++ /xea/x9b/x84 BAMUM LETTER KEUX ++ /xea/x9b/x85 BAMUM LETTER PEUX ++ /xea/x9b/x86 BAMUM LETTER NJEE ++ /xea/x9b/x87 BAMUM LETTER NTEE ++ /xea/x9b/x88 BAMUM LETTER PUE ++ /xea/x9b/x89 BAMUM LETTER WUE ++ /xea/x9b/x8a BAMUM LETTER PEE ++ /xea/x9b/x8b BAMUM LETTER FEE ++ /xea/x9b/x8c BAMUM LETTER RU ++ /xea/x9b/x8d BAMUM LETTER LU ++ /xea/x9b/x8e BAMUM LETTER MI ++ /xea/x9b/x8f BAMUM LETTER NI ++ /xea/x9b/x90 BAMUM LETTER REUX ++ /xea/x9b/x91 BAMUM LETTER RAE ++ /xea/x9b/x92 BAMUM LETTER KEN ++ /xea/x9b/x93 BAMUM LETTER NGKWAEN ++ /xea/x9b/x94 BAMUM LETTER NGGA ++ /xea/x9b/x95 BAMUM LETTER NGA ++ /xea/x9b/x96 BAMUM LETTER SHO ++ /xea/x9b/x97 BAMUM LETTER PUAE ++ /xea/x9b/x98 BAMUM LETTER FU ++ /xea/x9b/x99 BAMUM LETTER FOM ++ /xea/x9b/x9a BAMUM LETTER WA ++ /xea/x9b/x9b BAMUM LETTER NA ++ /xea/x9b/x9c BAMUM LETTER LI ++ /xea/x9b/x9d BAMUM LETTER PI ++ /xea/x9b/x9e BAMUM LETTER LOQ ++ /xea/x9b/x9f BAMUM LETTER KO ++ /xea/x9b/xa0 BAMUM LETTER MBEN ++ /xea/x9b/xa1 BAMUM LETTER REN ++ /xea/x9b/xa2 BAMUM LETTER MEN ++ /xea/x9b/xa3 BAMUM LETTER MA ++ /xea/x9b/xa4 BAMUM LETTER TI ++ /xea/x9b/xa5 BAMUM LETTER KI ++ /xea/x9b/xa6 BAMUM LETTER MO ++ /xea/x9b/xa7 BAMUM LETTER MBAA ++ /xea/x9b/xa8 BAMUM LETTER TET ++ /xea/x9b/xa9 BAMUM LETTER KPA ++ /xea/x9b/xaa BAMUM LETTER TEN ++ /xea/x9b/xab BAMUM LETTER NTUU ++ /xea/x9b/xac BAMUM LETTER SAMBA ++ /xea/x9b/xad BAMUM LETTER FAAMAE ++ /xea/x9b/xae BAMUM LETTER KOVUU ++ /xea/x9b/xaf BAMUM LETTER KOGHOM ++ /xea/x9b/xb0 BAMUM COMBINING MARK KOQNDON ++ /xea/x9b/xb1 BAMUM COMBINING MARK TUKWENTIS ++ /xea/x9b/xb2 BAMUM NJAEMLI ++ /xea/x9b/xb3 BAMUM FULL STOP ++ /xea/x9b/xb4 BAMUM COLON ++ /xea/x9b/xb5 BAMUM COMMA ++ /xea/x9b/xb6 BAMUM SEMICOLON ++ /xea/x9b/xb7 BAMUM QUESTION MARK + /xea/x9c/x80 MODIFIER LETTER CHINESE TONE YIN PING + /xea/x9c/x81 MODIFIER LETTER CHINESE TONE YANG PING + /xea/x9c/x82 MODIFIER LETTER CHINESE TONE YIN SHANG +@@ -13210,6 +13949,21 @@ CHARMAP + /xea/x9e/x8a MODIFIER LETTER SHORT EQUALS SIGN + /xea/x9e/x8b LATIN CAPITAL LETTER SALTILLO + /xea/x9e/x8c LATIN SMALL LETTER SALTILLO ++ /xea/x9e/x8d LATIN CAPITAL LETTER TURNED H ++ /xea/x9e/x8e LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT ++ /xea/x9e/x90 LATIN CAPITAL LETTER N WITH DESCENDER ++ /xea/x9e/x91 LATIN SMALL LETTER N WITH DESCENDER ++ /xea/x9e/xa0 LATIN CAPITAL LETTER G WITH OBLIQUE STROKE ++ /xea/x9e/xa1 LATIN SMALL LETTER G WITH OBLIQUE STROKE ++ /xea/x9e/xa2 LATIN CAPITAL LETTER K WITH OBLIQUE STROKE ++ /xea/x9e/xa3 LATIN SMALL LETTER K WITH OBLIQUE STROKE ++ /xea/x9e/xa4 LATIN CAPITAL LETTER N WITH OBLIQUE STROKE ++ /xea/x9e/xa5 LATIN SMALL LETTER N WITH OBLIQUE STROKE ++ /xea/x9e/xa6 LATIN CAPITAL LETTER R WITH OBLIQUE STROKE ++ /xea/x9e/xa7 LATIN SMALL LETTER R WITH OBLIQUE STROKE ++ /xea/x9e/xa8 LATIN CAPITAL LETTER S WITH OBLIQUE STROKE ++ /xea/x9e/xa9 LATIN SMALL LETTER S WITH OBLIQUE STROKE ++ /xea/x9f/xba LATIN LETTER SMALL CAPITAL TURNED M + /xea/x9f/xbb LATIN EPIGRAPHIC LETTER REVERSED F + /xea/x9f/xbc LATIN EPIGRAPHIC LETTER REVERSED P + /xea/x9f/xbd LATIN EPIGRAPHIC LETTER INVERTED M +@@ -13259,6 +14013,16 @@ CHARMAP + /xea/xa0/xa9 SYLOTI NAGRI POETRY MARK-2 + /xea/xa0/xaa SYLOTI NAGRI POETRY MARK-3 + /xea/xa0/xab SYLOTI NAGRI POETRY MARK-4 ++ /xea/xa0/xb0 NORTH INDIC FRACTION ONE QUARTER ++ /xea/xa0/xb1 NORTH INDIC FRACTION ONE HALF ++ /xea/xa0/xb2 NORTH INDIC FRACTION THREE QUARTERS ++ /xea/xa0/xb3 NORTH INDIC FRACTION ONE SIXTEENTH ++ /xea/xa0/xb4 NORTH INDIC FRACTION ONE EIGHTH ++ /xea/xa0/xb5 NORTH INDIC FRACTION THREE SIXTEENTHS ++ /xea/xa0/xb6 NORTH INDIC QUARTER MARK ++ /xea/xa0/xb7 NORTH INDIC PLACEHOLDER MARK ++ /xea/xa0/xb8 NORTH INDIC RUPEE MARK ++ /xea/xa0/xb9 NORTH INDIC QUANTITY MARK + /xea/xa1/x80 PHAGS-PA LETTER KA + /xea/xa1/x81 PHAGS-PA LETTER KHA + /xea/xa1/x82 PHAGS-PA LETTER GA +@@ -13396,6 +14160,34 @@ CHARMAP + /xea/xa3/x97 SAURASHTRA DIGIT SEVEN + /xea/xa3/x98 SAURASHTRA DIGIT EIGHT + /xea/xa3/x99 SAURASHTRA DIGIT NINE ++ /xea/xa3/xa0 COMBINING DEVANAGARI DIGIT ZERO ++ /xea/xa3/xa1 COMBINING DEVANAGARI DIGIT ONE ++ /xea/xa3/xa2 COMBINING DEVANAGARI DIGIT TWO ++ /xea/xa3/xa3 COMBINING DEVANAGARI DIGIT THREE ++ /xea/xa3/xa4 COMBINING DEVANAGARI DIGIT FOUR ++ /xea/xa3/xa5 COMBINING DEVANAGARI DIGIT FIVE ++ /xea/xa3/xa6 COMBINING DEVANAGARI DIGIT SIX ++ /xea/xa3/xa7 COMBINING DEVANAGARI DIGIT SEVEN ++ /xea/xa3/xa8 COMBINING DEVANAGARI DIGIT EIGHT ++ /xea/xa3/xa9 COMBINING DEVANAGARI DIGIT NINE ++ /xea/xa3/xaa COMBINING DEVANAGARI LETTER A ++ /xea/xa3/xab COMBINING DEVANAGARI LETTER U ++ /xea/xa3/xac COMBINING DEVANAGARI LETTER KA ++ /xea/xa3/xad COMBINING DEVANAGARI LETTER NA ++ /xea/xa3/xae COMBINING DEVANAGARI LETTER PA ++ /xea/xa3/xaf COMBINING DEVANAGARI LETTER RA ++ /xea/xa3/xb0 COMBINING DEVANAGARI LETTER VI ++ /xea/xa3/xb1 COMBINING DEVANAGARI SIGN AVAGRAHA ++ /xea/xa3/xb2 DEVANAGARI SIGN SPACING CANDRABINDU ++ /xea/xa3/xb3 DEVANAGARI SIGN CANDRABINDU VIRAMA ++ /xea/xa3/xb4 DEVANAGARI SIGN DOUBLE CANDRABINDU VIRAMA ++ /xea/xa3/xb5 DEVANAGARI SIGN CANDRABINDU TWO ++ /xea/xa3/xb6 DEVANAGARI SIGN CANDRABINDU THREE ++ /xea/xa3/xb7 DEVANAGARI SIGN CANDRABINDU AVAGRAHA ++ /xea/xa3/xb8 DEVANAGARI SIGN PUSHPIKA ++ /xea/xa3/xb9 DEVANAGARI GAP FILLER ++ /xea/xa3/xba DEVANAGARI CARET ++ /xea/xa3/xbb DEVANAGARI HEADSTROKE + /xea/xa4/x80 KAYAH LI DIGIT ZERO + /xea/xa4/x81 KAYAH LI DIGIT ONE + /xea/xa4/x82 KAYAH LI DIGIT TWO +@@ -13481,6 +14273,126 @@ CHARMAP + /xea/xa5/x92 REJANG CONSONANT SIGN H + /xea/xa5/x93 REJANG VIRAMA + /xea/xa5/x9f REJANG SECTION MARK ++ /xea/xa5/xa0 HANGUL CHOSEONG TIKEUT-MIEUM ++ /xea/xa5/xa1 HANGUL CHOSEONG TIKEUT-PIEUP ++ /xea/xa5/xa2 HANGUL CHOSEONG TIKEUT-SIOS ++ /xea/xa5/xa3 HANGUL CHOSEONG TIKEUT-CIEUC ++ /xea/xa5/xa4 HANGUL CHOSEONG RIEUL-KIYEOK ++ /xea/xa5/xa5 HANGUL CHOSEONG RIEUL-SSANGKIYEOK ++ /xea/xa5/xa6 HANGUL CHOSEONG RIEUL-TIKEUT ++ /xea/xa5/xa7 HANGUL CHOSEONG RIEUL-SSANGTIKEUT ++ /xea/xa5/xa8 HANGUL CHOSEONG RIEUL-MIEUM ++ /xea/xa5/xa9 HANGUL CHOSEONG RIEUL-PIEUP ++ /xea/xa5/xaa HANGUL CHOSEONG RIEUL-SSANGPIEUP ++ /xea/xa5/xab HANGUL CHOSEONG RIEUL-KAPYEOUNPIEUP ++ /xea/xa5/xac HANGUL CHOSEONG RIEUL-SIOS ++ /xea/xa5/xad HANGUL CHOSEONG RIEUL-CIEUC ++ /xea/xa5/xae HANGUL CHOSEONG RIEUL-KHIEUKH ++ /xea/xa5/xaf HANGUL CHOSEONG MIEUM-KIYEOK ++ /xea/xa5/xb0 HANGUL CHOSEONG MIEUM-TIKEUT ++ /xea/xa5/xb1 HANGUL CHOSEONG MIEUM-SIOS ++ /xea/xa5/xb2 HANGUL CHOSEONG PIEUP-SIOS-THIEUTH ++ /xea/xa5/xb3 HANGUL CHOSEONG PIEUP-KHIEUKH ++ /xea/xa5/xb4 HANGUL CHOSEONG PIEUP-HIEUH ++ /xea/xa5/xb5 HANGUL CHOSEONG SSANGSIOS-PIEUP ++ /xea/xa5/xb6 HANGUL CHOSEONG IEUNG-RIEUL ++ /xea/xa5/xb7 HANGUL CHOSEONG IEUNG-HIEUH ++ /xea/xa5/xb8 HANGUL CHOSEONG SSANGCIEUC-HIEUH ++ /xea/xa5/xb9 HANGUL CHOSEONG SSANGTHIEUTH ++ /xea/xa5/xba HANGUL CHOSEONG PHIEUPH-HIEUH ++ /xea/xa5/xbb HANGUL CHOSEONG HIEUH-SIOS ++ /xea/xa5/xbc HANGUL CHOSEONG SSANGYEORINHIEUH ++ /xea/xa6/x80 JAVANESE SIGN PANYANGGA ++ /xea/xa6/x81 JAVANESE SIGN CECAK ++ /xea/xa6/x82 JAVANESE SIGN LAYAR ++ /xea/xa6/x83 JAVANESE SIGN WIGNYAN ++ /xea/xa6/x84 JAVANESE LETTER A ++ /xea/xa6/x85 JAVANESE LETTER I KAWI ++ /xea/xa6/x86 JAVANESE LETTER I ++ /xea/xa6/x87 JAVANESE LETTER II ++ /xea/xa6/x88 JAVANESE LETTER U ++ /xea/xa6/x89 JAVANESE LETTER PA CEREK ++ /xea/xa6/x8a JAVANESE LETTER NGA LELET ++ /xea/xa6/x8b JAVANESE LETTER NGA LELET RASWADI ++ /xea/xa6/x8c JAVANESE LETTER E ++ /xea/xa6/x8d JAVANESE LETTER AI ++ /xea/xa6/x8e JAVANESE LETTER O ++ /xea/xa6/x8f JAVANESE LETTER KA ++ /xea/xa6/x90 JAVANESE LETTER KA SASAK ++ /xea/xa6/x91 JAVANESE LETTER KA MURDA ++ /xea/xa6/x92 JAVANESE LETTER GA ++ /xea/xa6/x93 JAVANESE LETTER GA MURDA ++ /xea/xa6/x94 JAVANESE LETTER NGA ++ /xea/xa6/x95 JAVANESE LETTER CA ++ /xea/xa6/x96 JAVANESE LETTER CA MURDA ++ /xea/xa6/x97 JAVANESE LETTER JA ++ /xea/xa6/x98 JAVANESE LETTER NYA MURDA ++ /xea/xa6/x99 JAVANESE LETTER JA MAHAPRANA ++ /xea/xa6/x9a JAVANESE LETTER NYA ++ /xea/xa6/x9b JAVANESE LETTER TTA ++ /xea/xa6/x9c JAVANESE LETTER TTA MAHAPRANA ++ /xea/xa6/x9d JAVANESE LETTER DDA ++ /xea/xa6/x9e JAVANESE LETTER DDA MAHAPRANA ++ /xea/xa6/x9f JAVANESE LETTER NA MURDA ++ /xea/xa6/xa0 JAVANESE LETTER TA ++ /xea/xa6/xa1 JAVANESE LETTER TA MURDA ++ /xea/xa6/xa2 JAVANESE LETTER DA ++ /xea/xa6/xa3 JAVANESE LETTER DA MAHAPRANA ++ /xea/xa6/xa4 JAVANESE LETTER NA ++ /xea/xa6/xa5 JAVANESE LETTER PA ++ /xea/xa6/xa6 JAVANESE LETTER PA MURDA ++ /xea/xa6/xa7 JAVANESE LETTER BA ++ /xea/xa6/xa8 JAVANESE LETTER BA MURDA ++ /xea/xa6/xa9 JAVANESE LETTER MA ++ /xea/xa6/xaa JAVANESE LETTER YA ++ /xea/xa6/xab JAVANESE LETTER RA ++ /xea/xa6/xac JAVANESE LETTER RA AGUNG ++ /xea/xa6/xad JAVANESE LETTER LA ++ /xea/xa6/xae JAVANESE LETTER WA ++ /xea/xa6/xaf JAVANESE LETTER SA MURDA ++ /xea/xa6/xb0 JAVANESE LETTER SA MAHAPRANA ++ /xea/xa6/xb1 JAVANESE LETTER SA ++ /xea/xa6/xb2 JAVANESE LETTER HA ++ /xea/xa6/xb3 JAVANESE SIGN CECAK TELU ++ /xea/xa6/xb4 JAVANESE VOWEL SIGN TARUNG ++ /xea/xa6/xb5 JAVANESE VOWEL SIGN TOLONG ++ /xea/xa6/xb6 JAVANESE VOWEL SIGN WULU ++ /xea/xa6/xb7 JAVANESE VOWEL SIGN WULU MELIK ++ /xea/xa6/xb8 JAVANESE VOWEL SIGN SUKU ++ /xea/xa6/xb9 JAVANESE VOWEL SIGN SUKU MENDUT ++ /xea/xa6/xba JAVANESE VOWEL SIGN TALING ++ /xea/xa6/xbb JAVANESE VOWEL SIGN DIRGA MURE ++ /xea/xa6/xbc JAVANESE VOWEL SIGN PEPET ++ /xea/xa6/xbd JAVANESE CONSONANT SIGN KERET ++ /xea/xa6/xbe JAVANESE CONSONANT SIGN PENGKAL ++ /xea/xa6/xbf JAVANESE CONSONANT SIGN CAKRA ++ /xea/xa7/x80 JAVANESE PANGKON ++ /xea/xa7/x81 JAVANESE LEFT RERENGGAN ++ /xea/xa7/x82 JAVANESE RIGHT RERENGGAN ++ /xea/xa7/x83 JAVANESE PADA ANDAP ++ /xea/xa7/x84 JAVANESE PADA MADYA ++ /xea/xa7/x85 JAVANESE PADA LUHUR ++ /xea/xa7/x86 JAVANESE PADA WINDU ++ /xea/xa7/x87 JAVANESE PADA PANGKAT ++ /xea/xa7/x88 JAVANESE PADA LINGSA ++ /xea/xa7/x89 JAVANESE PADA LUNGSI ++ /xea/xa7/x8a JAVANESE PADA ADEG ++ /xea/xa7/x8b JAVANESE PADA ADEG ADEG ++ /xea/xa7/x8c JAVANESE PADA PISELEH ++ /xea/xa7/x8d JAVANESE TURNED PADA PISELEH ++ /xea/xa7/x8f JAVANESE PANGRANGKEP ++ /xea/xa7/x90 JAVANESE DIGIT ZERO ++ /xea/xa7/x91 JAVANESE DIGIT ONE ++ /xea/xa7/x92 JAVANESE DIGIT TWO ++ /xea/xa7/x93 JAVANESE DIGIT THREE ++ /xea/xa7/x94 JAVANESE DIGIT FOUR ++ /xea/xa7/x95 JAVANESE DIGIT FIVE ++ /xea/xa7/x96 JAVANESE DIGIT SIX ++ /xea/xa7/x97 JAVANESE DIGIT SEVEN ++ /xea/xa7/x98 JAVANESE DIGIT EIGHT ++ /xea/xa7/x99 JAVANESE DIGIT NINE ++ /xea/xa7/x9e JAVANESE PADA TIRTA TUMETES ++ /xea/xa7/x9f JAVANESE PADA ISEN-ISEN + /xea/xa8/x80 CHAM LETTER A + /xea/xa8/x81 CHAM LETTER I + /xea/xa8/x82 CHAM LETTER U +@@ -13564,6 +14476,194 @@ CHARMAP + /xea/xa9/x9d CHAM PUNCTUATION DANDA + /xea/xa9/x9e CHAM PUNCTUATION DOUBLE DANDA + /xea/xa9/x9f CHAM PUNCTUATION TRIPLE DANDA ++ /xea/xa9/xa0 MYANMAR LETTER KHAMTI GA ++ /xea/xa9/xa1 MYANMAR LETTER KHAMTI CA ++ /xea/xa9/xa2 MYANMAR LETTER KHAMTI CHA ++ /xea/xa9/xa3 MYANMAR LETTER KHAMTI JA ++ /xea/xa9/xa4 MYANMAR LETTER KHAMTI JHA ++ /xea/xa9/xa5 MYANMAR LETTER KHAMTI NYA ++ /xea/xa9/xa6 MYANMAR LETTER KHAMTI TTA ++ /xea/xa9/xa7 MYANMAR LETTER KHAMTI TTHA ++ /xea/xa9/xa8 MYANMAR LETTER KHAMTI DDA ++ /xea/xa9/xa9 MYANMAR LETTER KHAMTI DDHA ++ /xea/xa9/xaa MYANMAR LETTER KHAMTI DHA ++ /xea/xa9/xab MYANMAR LETTER KHAMTI NA ++ /xea/xa9/xac MYANMAR LETTER KHAMTI SA ++ /xea/xa9/xad MYANMAR LETTER KHAMTI HA ++ /xea/xa9/xae MYANMAR LETTER KHAMTI HHA ++ /xea/xa9/xaf MYANMAR LETTER KHAMTI FA ++ /xea/xa9/xb0 MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION ++ /xea/xa9/xb1 MYANMAR LETTER KHAMTI XA ++ /xea/xa9/xb2 MYANMAR LETTER KHAMTI ZA ++ /xea/xa9/xb3 MYANMAR LETTER KHAMTI RA ++ /xea/xa9/xb4 MYANMAR LOGOGRAM KHAMTI OAY ++ /xea/xa9/xb5 MYANMAR LOGOGRAM KHAMTI QN ++ /xea/xa9/xb6 MYANMAR LOGOGRAM KHAMTI HM ++ /xea/xa9/xb7 MYANMAR SYMBOL AITON EXCLAMATION ++ /xea/xa9/xb8 MYANMAR SYMBOL AITON ONE ++ /xea/xa9/xb9 MYANMAR SYMBOL AITON TWO ++ /xea/xa9/xba MYANMAR LETTER AITON RA ++ /xea/xa9/xbb MYANMAR SIGN PAO KAREN TONE ++ /xea/xaa/x80 TAI VIET LETTER LOW KO ++ /xea/xaa/x81 TAI VIET LETTER HIGH KO ++ /xea/xaa/x82 TAI VIET LETTER LOW KHO ++ /xea/xaa/x83 TAI VIET LETTER HIGH KHO ++ /xea/xaa/x84 TAI VIET LETTER LOW KHHO ++ /xea/xaa/x85 TAI VIET LETTER HIGH KHHO ++ /xea/xaa/x86 TAI VIET LETTER LOW GO ++ /xea/xaa/x87 TAI VIET LETTER HIGH GO ++ /xea/xaa/x88 TAI VIET LETTER LOW NGO ++ /xea/xaa/x89 TAI VIET LETTER HIGH NGO ++ /xea/xaa/x8a TAI VIET LETTER LOW CO ++ /xea/xaa/x8b TAI VIET LETTER HIGH CO ++ /xea/xaa/x8c TAI VIET LETTER LOW CHO ++ /xea/xaa/x8d TAI VIET LETTER HIGH CHO ++ /xea/xaa/x8e TAI VIET LETTER LOW SO ++ /xea/xaa/x8f TAI VIET LETTER HIGH SO ++ /xea/xaa/x90 TAI VIET LETTER LOW NYO ++ /xea/xaa/x91 TAI VIET LETTER HIGH NYO ++ /xea/xaa/x92 TAI VIET LETTER LOW DO ++ /xea/xaa/x93 TAI VIET LETTER HIGH DO ++ /xea/xaa/x94 TAI VIET LETTER LOW TO ++ /xea/xaa/x95 TAI VIET LETTER HIGH TO ++ /xea/xaa/x96 TAI VIET LETTER LOW THO ++ /xea/xaa/x97 TAI VIET LETTER HIGH THO ++ /xea/xaa/x98 TAI VIET LETTER LOW NO ++ /xea/xaa/x99 TAI VIET LETTER HIGH NO ++ /xea/xaa/x9a TAI VIET LETTER LOW BO ++ /xea/xaa/x9b TAI VIET LETTER HIGH BO ++ /xea/xaa/x9c TAI VIET LETTER LOW PO ++ /xea/xaa/x9d TAI VIET LETTER HIGH PO ++ /xea/xaa/x9e TAI VIET LETTER LOW PHO ++ /xea/xaa/x9f TAI VIET LETTER HIGH PHO ++ /xea/xaa/xa0 TAI VIET LETTER LOW FO ++ /xea/xaa/xa1 TAI VIET LETTER HIGH FO ++ /xea/xaa/xa2 TAI VIET LETTER LOW MO ++ /xea/xaa/xa3 TAI VIET LETTER HIGH MO ++ /xea/xaa/xa4 TAI VIET LETTER LOW YO ++ /xea/xaa/xa5 TAI VIET LETTER HIGH YO ++ /xea/xaa/xa6 TAI VIET LETTER LOW RO ++ /xea/xaa/xa7 TAI VIET LETTER HIGH RO ++ /xea/xaa/xa8 TAI VIET LETTER LOW LO ++ /xea/xaa/xa9 TAI VIET LETTER HIGH LO ++ /xea/xaa/xaa TAI VIET LETTER LOW VO ++ /xea/xaa/xab TAI VIET LETTER HIGH VO ++ /xea/xaa/xac TAI VIET LETTER LOW HO ++ /xea/xaa/xad TAI VIET LETTER HIGH HO ++ /xea/xaa/xae TAI VIET LETTER LOW O ++ /xea/xaa/xaf TAI VIET LETTER HIGH O ++ /xea/xaa/xb0 TAI VIET MAI KANG ++ /xea/xaa/xb1 TAI VIET VOWEL AA ++ /xea/xaa/xb2 TAI VIET VOWEL I ++ /xea/xaa/xb3 TAI VIET VOWEL UE ++ /xea/xaa/xb4 TAI VIET VOWEL U ++ /xea/xaa/xb5 TAI VIET VOWEL E ++ /xea/xaa/xb6 TAI VIET VOWEL O ++ /xea/xaa/xb7 TAI VIET MAI KHIT ++ /xea/xaa/xb8 TAI VIET VOWEL IA ++ /xea/xaa/xb9 TAI VIET VOWEL UEA ++ /xea/xaa/xba TAI VIET VOWEL UA ++ /xea/xaa/xbb TAI VIET VOWEL AUE ++ /xea/xaa/xbc TAI VIET VOWEL AY ++ /xea/xaa/xbd TAI VIET VOWEL AN ++ /xea/xaa/xbe TAI VIET VOWEL AM ++ /xea/xaa/xbf TAI VIET TONE MAI EK ++ /xea/xab/x80 TAI VIET TONE MAI NUENG ++ /xea/xab/x81 TAI VIET TONE MAI THO ++ /xea/xab/x82 TAI VIET TONE MAI SONG ++ /xea/xab/x9b TAI VIET SYMBOL KON ++ /xea/xab/x9c TAI VIET SYMBOL NUENG ++ /xea/xab/x9d TAI VIET SYMBOL SAM ++ /xea/xab/x9e TAI VIET SYMBOL HO HOI ++ /xea/xab/x9f TAI VIET SYMBOL KOI KOI ++ /xea/xac/x81 ETHIOPIC SYLLABLE TTHU ++ /xea/xac/x82 ETHIOPIC SYLLABLE TTHI ++ /xea/xac/x83 ETHIOPIC SYLLABLE TTHAA ++ /xea/xac/x84 ETHIOPIC SYLLABLE TTHEE ++ /xea/xac/x85 ETHIOPIC SYLLABLE TTHE ++ /xea/xac/x86 ETHIOPIC SYLLABLE TTHO ++ /xea/xac/x89 ETHIOPIC SYLLABLE DDHU ++ /xea/xac/x8a ETHIOPIC SYLLABLE DDHI ++ /xea/xac/x8b ETHIOPIC SYLLABLE DDHAA ++ /xea/xac/x8c ETHIOPIC SYLLABLE DDHEE ++ /xea/xac/x8d ETHIOPIC SYLLABLE DDHE ++ /xea/xac/x8e ETHIOPIC SYLLABLE DDHO ++ /xea/xac/x91 ETHIOPIC SYLLABLE DZU ++ /xea/xac/x92 ETHIOPIC SYLLABLE DZI ++ /xea/xac/x93 ETHIOPIC SYLLABLE DZAA ++ /xea/xac/x94 ETHIOPIC SYLLABLE DZEE ++ /xea/xac/x95 ETHIOPIC SYLLABLE DZE ++ /xea/xac/x96 ETHIOPIC SYLLABLE DZO ++ /xea/xac/xa0 ETHIOPIC SYLLABLE CCHHA ++ /xea/xac/xa1 ETHIOPIC SYLLABLE CCHHU ++ /xea/xac/xa2 ETHIOPIC SYLLABLE CCHHI ++ /xea/xac/xa3 ETHIOPIC SYLLABLE CCHHAA ++ /xea/xac/xa4 ETHIOPIC SYLLABLE CCHHEE ++ /xea/xac/xa5 ETHIOPIC SYLLABLE CCHHE ++ /xea/xac/xa6 ETHIOPIC SYLLABLE CCHHO ++ /xea/xac/xa8 ETHIOPIC SYLLABLE BBA ++ /xea/xac/xa9 ETHIOPIC SYLLABLE BBU ++ /xea/xac/xaa ETHIOPIC SYLLABLE BBI ++ /xea/xac/xab ETHIOPIC SYLLABLE BBAA ++ /xea/xac/xac ETHIOPIC SYLLABLE BBEE ++ /xea/xac/xad ETHIOPIC SYLLABLE BBE ++ /xea/xac/xae ETHIOPIC SYLLABLE BBO ++ /xea/xaf/x80 MEETEI MAYEK LETTER KOK ++ /xea/xaf/x81 MEETEI MAYEK LETTER SAM ++ /xea/xaf/x82 MEETEI MAYEK LETTER LAI ++ /xea/xaf/x83 MEETEI MAYEK LETTER MIT ++ /xea/xaf/x84 MEETEI MAYEK LETTER PA ++ /xea/xaf/x85 MEETEI MAYEK LETTER NA ++ /xea/xaf/x86 MEETEI MAYEK LETTER CHIL ++ /xea/xaf/x87 MEETEI MAYEK LETTER TIL ++ /xea/xaf/x88 MEETEI MAYEK LETTER KHOU ++ /xea/xaf/x89 MEETEI MAYEK LETTER NGOU ++ /xea/xaf/x8a MEETEI MAYEK LETTER THOU ++ /xea/xaf/x8b MEETEI MAYEK LETTER WAI ++ /xea/xaf/x8c MEETEI MAYEK LETTER YANG ++ /xea/xaf/x8d MEETEI MAYEK LETTER HUK ++ /xea/xaf/x8e MEETEI MAYEK LETTER UN ++ /xea/xaf/x8f MEETEI MAYEK LETTER I ++ /xea/xaf/x90 MEETEI MAYEK LETTER PHAM ++ /xea/xaf/x91 MEETEI MAYEK LETTER ATIYA ++ /xea/xaf/x92 MEETEI MAYEK LETTER GOK ++ /xea/xaf/x93 MEETEI MAYEK LETTER JHAM ++ /xea/xaf/x94 MEETEI MAYEK LETTER RAI ++ /xea/xaf/x95 MEETEI MAYEK LETTER BA ++ /xea/xaf/x96 MEETEI MAYEK LETTER JIL ++ /xea/xaf/x97 MEETEI MAYEK LETTER DIL ++ /xea/xaf/x98 MEETEI MAYEK LETTER GHOU ++ /xea/xaf/x99 MEETEI MAYEK LETTER DHOU ++ /xea/xaf/x9a MEETEI MAYEK LETTER BHAM ++ /xea/xaf/x9b MEETEI MAYEK LETTER KOK LONSUM ++ /xea/xaf/x9c MEETEI MAYEK LETTER LAI LONSUM ++ /xea/xaf/x9d MEETEI MAYEK LETTER MIT LONSUM ++ /xea/xaf/x9e MEETEI MAYEK LETTER PA LONSUM ++ /xea/xaf/x9f MEETEI MAYEK LETTER NA LONSUM ++ /xea/xaf/xa0 MEETEI MAYEK LETTER TIL LONSUM ++ /xea/xaf/xa1 MEETEI MAYEK LETTER NGOU LONSUM ++ /xea/xaf/xa2 MEETEI MAYEK LETTER I LONSUM ++ /xea/xaf/xa3 MEETEI MAYEK VOWEL SIGN ONAP ++ /xea/xaf/xa4 MEETEI MAYEK VOWEL SIGN INAP ++ /xea/xaf/xa5 MEETEI MAYEK VOWEL SIGN ANAP ++ /xea/xaf/xa6 MEETEI MAYEK VOWEL SIGN YENAP ++ /xea/xaf/xa7 MEETEI MAYEK VOWEL SIGN SOUNAP ++ /xea/xaf/xa8 MEETEI MAYEK VOWEL SIGN UNAP ++ /xea/xaf/xa9 MEETEI MAYEK VOWEL SIGN CHEINAP ++ /xea/xaf/xaa MEETEI MAYEK VOWEL SIGN NUNG ++ /xea/xaf/xab MEETEI MAYEK CHEIKHEI ++ /xea/xaf/xac MEETEI MAYEK LUM IYEK ++ /xea/xaf/xad MEETEI MAYEK APUN IYEK ++ /xea/xaf/xb0 MEETEI MAYEK DIGIT ZERO ++ /xea/xaf/xb1 MEETEI MAYEK DIGIT ONE ++ /xea/xaf/xb2 MEETEI MAYEK DIGIT TWO ++ /xea/xaf/xb3 MEETEI MAYEK DIGIT THREE ++ /xea/xaf/xb4 MEETEI MAYEK DIGIT FOUR ++ /xea/xaf/xb5 MEETEI MAYEK DIGIT FIVE ++ /xea/xaf/xb6 MEETEI MAYEK DIGIT SIX ++ /xea/xaf/xb7 MEETEI MAYEK DIGIT SEVEN ++ /xea/xaf/xb8 MEETEI MAYEK DIGIT EIGHT ++ /xea/xaf/xb9 MEETEI MAYEK DIGIT NINE + /xea/xb0/x80 HANGUL SYLLABLE GA + /xea/xb0/x81 HANGUL SYLLABLE GAG + /xea/xb0/x82 HANGUL SYLLABLE GAGG +@@ -24736,6 +25836,78 @@ CHARMAP + /xed/x9e/xa1 HANGUL SYLLABLE HIT + /xed/x9e/xa2 HANGUL SYLLABLE HIP + /xed/x9e/xa3 HANGUL SYLLABLE HIH ++ /xed/x9e/xb0 HANGUL JUNGSEONG O-YEO ++ /xed/x9e/xb1 HANGUL JUNGSEONG O-O-I ++ /xed/x9e/xb2 HANGUL JUNGSEONG YO-A ++ /xed/x9e/xb3 HANGUL JUNGSEONG YO-AE ++ /xed/x9e/xb4 HANGUL JUNGSEONG YO-EO ++ /xed/x9e/xb5 HANGUL JUNGSEONG U-YEO ++ /xed/x9e/xb6 HANGUL JUNGSEONG U-I-I ++ /xed/x9e/xb7 HANGUL JUNGSEONG YU-AE ++ /xed/x9e/xb8 HANGUL JUNGSEONG YU-O ++ /xed/x9e/xb9 HANGUL JUNGSEONG EU-A ++ /xed/x9e/xba HANGUL JUNGSEONG EU-EO ++ /xed/x9e/xbb HANGUL JUNGSEONG EU-E ++ /xed/x9e/xbc HANGUL JUNGSEONG EU-O ++ /xed/x9e/xbd HANGUL JUNGSEONG I-YA-O ++ /xed/x9e/xbe HANGUL JUNGSEONG I-YAE ++ /xed/x9e/xbf HANGUL JUNGSEONG I-YEO ++ /xed/x9f/x80 HANGUL JUNGSEONG I-YE ++ /xed/x9f/x81 HANGUL JUNGSEONG I-O-I ++ /xed/x9f/x82 HANGUL JUNGSEONG I-YO ++ /xed/x9f/x83 HANGUL JUNGSEONG I-YU ++ /xed/x9f/x84 HANGUL JUNGSEONG I-I ++ /xed/x9f/x85 HANGUL JUNGSEONG ARAEA-A ++ /xed/x9f/x86 HANGUL JUNGSEONG ARAEA-E ++ /xed/x9f/x8b HANGUL JONGSEONG NIEUN-RIEUL ++ /xed/x9f/x8c HANGUL JONGSEONG NIEUN-CHIEUCH ++ /xed/x9f/x8d HANGUL JONGSEONG SSANGTIKEUT ++ /xed/x9f/x8e HANGUL JONGSEONG SSANGTIKEUT-PIEUP ++ /xed/x9f/x8f HANGUL JONGSEONG TIKEUT-PIEUP ++ /xed/x9f/x90 HANGUL JONGSEONG TIKEUT-SIOS ++ /xed/x9f/x91 HANGUL JONGSEONG TIKEUT-SIOS-KIYEOK ++ /xed/x9f/x92 HANGUL JONGSEONG TIKEUT-CIEUC ++ /xed/x9f/x93 HANGUL JONGSEONG TIKEUT-CHIEUCH ++ /xed/x9f/x94 HANGUL JONGSEONG TIKEUT-THIEUTH ++ /xed/x9f/x95 HANGUL JONGSEONG RIEUL-SSANGKIYEOK ++ /xed/x9f/x96 HANGUL JONGSEONG RIEUL-KIYEOK-HIEUH ++ /xed/x9f/x97 HANGUL JONGSEONG SSANGRIEUL-KHIEUKH ++ /xed/x9f/x98 HANGUL JONGSEONG RIEUL-MIEUM-HIEUH ++ /xed/x9f/x99 HANGUL JONGSEONG RIEUL-PIEUP-TIKEUT ++ /xed/x9f/x9a HANGUL JONGSEONG RIEUL-PIEUP-PHIEUPH ++ /xed/x9f/x9b HANGUL JONGSEONG RIEUL-YESIEUNG ++ /xed/x9f/x9c HANGUL JONGSEONG RIEUL-YEORINHIEUH-HIEUH ++ /xed/x9f/x9d HANGUL JONGSEONG KAPYEOUNRIEUL ++ /xed/x9f/x9e HANGUL JONGSEONG MIEUM-NIEUN ++ /xed/x9f/x9f HANGUL JONGSEONG MIEUM-SSANGNIEUN ++ /xed/x9f/xa0 HANGUL JONGSEONG SSANGMIEUM ++ /xed/x9f/xa1 HANGUL JONGSEONG MIEUM-PIEUP-SIOS ++ /xed/x9f/xa2 HANGUL JONGSEONG MIEUM-CIEUC ++ /xed/x9f/xa3 HANGUL JONGSEONG PIEUP-TIKEUT ++ /xed/x9f/xa4 HANGUL JONGSEONG PIEUP-RIEUL-PHIEUPH ++ /xed/x9f/xa5 HANGUL JONGSEONG PIEUP-MIEUM ++ /xed/x9f/xa6 HANGUL JONGSEONG SSANGPIEUP ++ /xed/x9f/xa7 HANGUL JONGSEONG PIEUP-SIOS-TIKEUT ++ /xed/x9f/xa8 HANGUL JONGSEONG PIEUP-CIEUC ++ /xed/x9f/xa9 HANGUL JONGSEONG PIEUP-CHIEUCH ++ /xed/x9f/xaa HANGUL JONGSEONG SIOS-MIEUM ++ /xed/x9f/xab HANGUL JONGSEONG SIOS-KAPYEOUNPIEUP ++ /xed/x9f/xac HANGUL JONGSEONG SSANGSIOS-KIYEOK ++ /xed/x9f/xad HANGUL JONGSEONG SSANGSIOS-TIKEUT ++ /xed/x9f/xae HANGUL JONGSEONG SIOS-PANSIOS ++ /xed/x9f/xaf HANGUL JONGSEONG SIOS-CIEUC ++ /xed/x9f/xb0 HANGUL JONGSEONG SIOS-CHIEUCH ++ /xed/x9f/xb1 HANGUL JONGSEONG SIOS-THIEUTH ++ /xed/x9f/xb2 HANGUL JONGSEONG SIOS-HIEUH ++ /xed/x9f/xb3 HANGUL JONGSEONG PANSIOS-PIEUP ++ /xed/x9f/xb4 HANGUL JONGSEONG PANSIOS-KAPYEOUNPIEUP ++ /xed/x9f/xb5 HANGUL JONGSEONG YESIEUNG-MIEUM ++ /xed/x9f/xb6 HANGUL JONGSEONG YESIEUNG-HIEUH ++ /xed/x9f/xb7 HANGUL JONGSEONG CIEUC-PIEUP ++ /xed/x9f/xb8 HANGUL JONGSEONG CIEUC-SSANGPIEUP ++ /xed/x9f/xb9 HANGUL JONGSEONG SSANGCIEUC ++ /xed/x9f/xba HANGUL JONGSEONG PHIEUPH-SIOS ++ /xed/x9f/xbb HANGUL JONGSEONG PHIEUPH-THIEUTH + % /xed/xa0/x80 + % /xed/xad/xbf + % /xed/xae/x80 +@@ -25203,6 +26375,9 @@ CHARMAP + /xef/xa9/xa8 CJK COMPATIBILITY IDEOGRAPH-FA68 + /xef/xa9/xa9 CJK COMPATIBILITY IDEOGRAPH-FA69 + /xef/xa9/xaa CJK COMPATIBILITY IDEOGRAPH-FA6A ++ /xef/xa9/xab CJK COMPATIBILITY IDEOGRAPH-FA6B ++ /xef/xa9/xac CJK COMPATIBILITY IDEOGRAPH-FA6C ++ /xef/xa9/xad CJK COMPATIBILITY IDEOGRAPH-FA6D + /xef/xa9/xb0 CJK COMPATIBILITY IDEOGRAPH-FA70 + /xef/xa9/xb1 CJK COMPATIBILITY IDEOGRAPH-FA71 + /xef/xa9/xb2 CJK COMPATIBILITY IDEOGRAPH-FA72 +@@ -25465,6 +26640,22 @@ CHARMAP + /xef/xae/xaf ARABIC LETTER YEH BARREE FINAL FORM + /xef/xae/xb0 ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM + /xef/xae/xb1 ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM ++ /xef/xae/xb2 ARABIC SYMBOL DOT ABOVE ++ /xef/xae/xb3 ARABIC SYMBOL DOT BELOW ++ /xef/xae/xb4 ARABIC SYMBOL TWO DOTS ABOVE ++ /xef/xae/xb5 ARABIC SYMBOL TWO DOTS BELOW ++ /xef/xae/xb6 ARABIC SYMBOL THREE DOTS ABOVE ++ /xef/xae/xb7 ARABIC SYMBOL THREE DOTS BELOW ++ /xef/xae/xb8 ARABIC SYMBOL THREE DOTS POINTING DOWNWARDS ABOVE ++ /xef/xae/xb9 ARABIC SYMBOL THREE DOTS POINTING DOWNWARDS BELOW ++ /xef/xae/xba ARABIC SYMBOL FOUR DOTS ABOVE ++ /xef/xae/xbb ARABIC SYMBOL FOUR DOTS BELOW ++ /xef/xae/xbc ARABIC SYMBOL DOUBLE VERTICAL BAR BELOW ++ /xef/xae/xbd ARABIC SYMBOL TWO DOTS VERTICALLY ABOVE ++ /xef/xae/xbe ARABIC SYMBOL TWO DOTS VERTICALLY BELOW ++ /xef/xae/xbf ARABIC SYMBOL RING ++ /xef/xaf/x80 ARABIC SYMBOL SMALL TAH ABOVE ++ /xef/xaf/x81 ARABIC SYMBOL SMALL TAH BELOW + /xef/xaf/x93 ARABIC LETTER NG ISOLATED FORM + /xef/xaf/x94 ARABIC LETTER NG FINAL FORM + /xef/xaf/x95 ARABIC LETTER NG INITIAL FORM +@@ -27269,6 +28460,37 @@ CHARMAP + /xf0/x90/xa0/xb8 CYPRIOT SYLLABLE XE + /xf0/x90/xa0/xbc CYPRIOT SYLLABLE ZA + /xf0/x90/xa0/xbf CYPRIOT SYLLABLE ZO ++ /xf0/x90/xa1/x80 IMPERIAL ARAMAIC LETTER ALEPH ++ /xf0/x90/xa1/x81 IMPERIAL ARAMAIC LETTER BETH ++ /xf0/x90/xa1/x82 IMPERIAL ARAMAIC LETTER GIMEL ++ /xf0/x90/xa1/x83 IMPERIAL ARAMAIC LETTER DALETH ++ /xf0/x90/xa1/x84 IMPERIAL ARAMAIC LETTER HE ++ /xf0/x90/xa1/x85 IMPERIAL ARAMAIC LETTER WAW ++ /xf0/x90/xa1/x86 IMPERIAL ARAMAIC LETTER ZAYIN ++ /xf0/x90/xa1/x87 IMPERIAL ARAMAIC LETTER HETH ++ /xf0/x90/xa1/x88 IMPERIAL ARAMAIC LETTER TETH ++ /xf0/x90/xa1/x89 IMPERIAL ARAMAIC LETTER YODH ++ /xf0/x90/xa1/x8a IMPERIAL ARAMAIC LETTER KAPH ++ /xf0/x90/xa1/x8b IMPERIAL ARAMAIC LETTER LAMEDH ++ /xf0/x90/xa1/x8c IMPERIAL ARAMAIC LETTER MEM ++ /xf0/x90/xa1/x8d IMPERIAL ARAMAIC LETTER NUN ++ /xf0/x90/xa1/x8e IMPERIAL ARAMAIC LETTER SAMEKH ++ /xf0/x90/xa1/x8f IMPERIAL ARAMAIC LETTER AYIN ++ /xf0/x90/xa1/x90 IMPERIAL ARAMAIC LETTER PE ++ /xf0/x90/xa1/x91 IMPERIAL ARAMAIC LETTER SADHE ++ /xf0/x90/xa1/x92 IMPERIAL ARAMAIC LETTER QOPH ++ /xf0/x90/xa1/x93 IMPERIAL ARAMAIC LETTER RESH ++ /xf0/x90/xa1/x94 IMPERIAL ARAMAIC LETTER SHIN ++ /xf0/x90/xa1/x95 IMPERIAL ARAMAIC LETTER TAW ++ /xf0/x90/xa1/x97 IMPERIAL ARAMAIC SECTION SIGN ++ /xf0/x90/xa1/x98 IMPERIAL ARAMAIC NUMBER ONE ++ /xf0/x90/xa1/x99 IMPERIAL ARAMAIC NUMBER TWO ++ /xf0/x90/xa1/x9a IMPERIAL ARAMAIC NUMBER THREE ++ /xf0/x90/xa1/x9b IMPERIAL ARAMAIC NUMBER TEN ++ /xf0/x90/xa1/x9c IMPERIAL ARAMAIC NUMBER TWENTY ++ /xf0/x90/xa1/x9d IMPERIAL ARAMAIC NUMBER ONE HUNDRED ++ /xf0/x90/xa1/x9e IMPERIAL ARAMAIC NUMBER ONE THOUSAND ++ /xf0/x90/xa1/x9f IMPERIAL ARAMAIC NUMBER TEN THOUSAND + /xf0/x90/xa4/x80 PHOENICIAN LETTER ALF + /xf0/x90/xa4/x81 PHOENICIAN LETTER BET + /xf0/x90/xa4/x82 PHOENICIAN LETTER GAML +@@ -27295,6 +28517,8 @@ CHARMAP + /xf0/x90/xa4/x97 PHOENICIAN NUMBER TEN + /xf0/x90/xa4/x98 PHOENICIAN NUMBER TWENTY + /xf0/x90/xa4/x99 PHOENICIAN NUMBER ONE HUNDRED ++ /xf0/x90/xa4/x9a PHOENICIAN NUMBER TWO ++ /xf0/x90/xa4/x9b PHOENICIAN NUMBER THREE + /xf0/x90/xa4/x9f PHOENICIAN WORD SEPARATOR + /xf0/x90/xa4/xa0 LYDIAN LETTER A + /xf0/x90/xa4/xa1 LYDIAN LETTER B +@@ -27388,6 +28612,434 @@ CHARMAP + /xf0/x90/xa9/x96 KHAROSHTHI PUNCTUATION DANDA + /xf0/x90/xa9/x97 KHAROSHTHI PUNCTUATION DOUBLE DANDA + /xf0/x90/xa9/x98 KHAROSHTHI PUNCTUATION LINES ++ /xf0/x90/xa9/xa0 OLD SOUTH ARABIAN LETTER HE ++ /xf0/x90/xa9/xa1 OLD SOUTH ARABIAN LETTER LAMEDH ++ /xf0/x90/xa9/xa2 OLD SOUTH ARABIAN LETTER HETH ++ /xf0/x90/xa9/xa3 OLD SOUTH ARABIAN LETTER MEM ++ /xf0/x90/xa9/xa4 OLD SOUTH ARABIAN LETTER QOPH ++ /xf0/x90/xa9/xa5 OLD SOUTH ARABIAN LETTER WAW ++ /xf0/x90/xa9/xa6 OLD SOUTH ARABIAN LETTER SHIN ++ /xf0/x90/xa9/xa7 OLD SOUTH ARABIAN LETTER RESH ++ /xf0/x90/xa9/xa8 OLD SOUTH ARABIAN LETTER BETH ++ /xf0/x90/xa9/xa9 OLD SOUTH ARABIAN LETTER TAW ++ /xf0/x90/xa9/xaa OLD SOUTH ARABIAN LETTER SAT ++ /xf0/x90/xa9/xab OLD SOUTH ARABIAN LETTER KAPH ++ /xf0/x90/xa9/xac OLD SOUTH ARABIAN LETTER NUN ++ /xf0/x90/xa9/xad OLD SOUTH ARABIAN LETTER KHETH ++ /xf0/x90/xa9/xae OLD SOUTH ARABIAN LETTER SADHE ++ /xf0/x90/xa9/xaf OLD SOUTH ARABIAN LETTER SAMEKH ++ /xf0/x90/xa9/xb0 OLD SOUTH ARABIAN LETTER FE ++ /xf0/x90/xa9/xb1 OLD SOUTH ARABIAN LETTER ALEF ++ /xf0/x90/xa9/xb2 OLD SOUTH ARABIAN LETTER AYN ++ /xf0/x90/xa9/xb3 OLD SOUTH ARABIAN LETTER DHADHE ++ /xf0/x90/xa9/xb4 OLD SOUTH ARABIAN LETTER GIMEL ++ /xf0/x90/xa9/xb5 OLD SOUTH ARABIAN LETTER DALETH ++ /xf0/x90/xa9/xb6 OLD SOUTH ARABIAN LETTER GHAYN ++ /xf0/x90/xa9/xb7 OLD SOUTH ARABIAN LETTER TETH ++ /xf0/x90/xa9/xb8 OLD SOUTH ARABIAN LETTER ZAYN ++ /xf0/x90/xa9/xb9 OLD SOUTH ARABIAN LETTER DHALETH ++ /xf0/x90/xa9/xba OLD SOUTH ARABIAN LETTER YODH ++ /xf0/x90/xa9/xbb OLD SOUTH ARABIAN LETTER THAW ++ /xf0/x90/xa9/xbc OLD SOUTH ARABIAN LETTER THETH ++ /xf0/x90/xa9/xbd OLD SOUTH ARABIAN NUMBER ONE ++ /xf0/x90/xa9/xbe OLD SOUTH ARABIAN NUMBER FIFTY ++ /xf0/x90/xa9/xbf OLD SOUTH ARABIAN NUMERIC INDICATOR ++ /xf0/x90/xac/x80 AVESTAN LETTER A ++ /xf0/x90/xac/x81 AVESTAN LETTER AA ++ /xf0/x90/xac/x82 AVESTAN LETTER AO ++ /xf0/x90/xac/x83 AVESTAN LETTER AAO ++ /xf0/x90/xac/x84 AVESTAN LETTER AN ++ /xf0/x90/xac/x85 AVESTAN LETTER AAN ++ /xf0/x90/xac/x86 AVESTAN LETTER AE ++ /xf0/x90/xac/x87 AVESTAN LETTER AEE ++ /xf0/x90/xac/x88 AVESTAN LETTER E ++ /xf0/x90/xac/x89 AVESTAN LETTER EE ++ /xf0/x90/xac/x8a AVESTAN LETTER O ++ /xf0/x90/xac/x8b AVESTAN LETTER OO ++ /xf0/x90/xac/x8c AVESTAN LETTER I ++ /xf0/x90/xac/x8d AVESTAN LETTER II ++ /xf0/x90/xac/x8e AVESTAN LETTER U ++ /xf0/x90/xac/x8f AVESTAN LETTER UU ++ /xf0/x90/xac/x90 AVESTAN LETTER KE ++ /xf0/x90/xac/x91 AVESTAN LETTER XE ++ /xf0/x90/xac/x92 AVESTAN LETTER XYE ++ /xf0/x90/xac/x93 AVESTAN LETTER XVE ++ /xf0/x90/xac/x94 AVESTAN LETTER GE ++ /xf0/x90/xac/x95 AVESTAN LETTER GGE ++ /xf0/x90/xac/x96 AVESTAN LETTER GHE ++ /xf0/x90/xac/x97 AVESTAN LETTER CE ++ /xf0/x90/xac/x98 AVESTAN LETTER JE ++ /xf0/x90/xac/x99 AVESTAN LETTER TE ++ /xf0/x90/xac/x9a AVESTAN LETTER THE ++ /xf0/x90/xac/x9b AVESTAN LETTER DE ++ /xf0/x90/xac/x9c AVESTAN LETTER DHE ++ /xf0/x90/xac/x9d AVESTAN LETTER TTE ++ /xf0/x90/xac/x9e AVESTAN LETTER PE ++ /xf0/x90/xac/x9f AVESTAN LETTER FE ++ /xf0/x90/xac/xa0 AVESTAN LETTER BE ++ /xf0/x90/xac/xa1 AVESTAN LETTER BHE ++ /xf0/x90/xac/xa2 AVESTAN LETTER NGE ++ /xf0/x90/xac/xa3 AVESTAN LETTER NGYE ++ /xf0/x90/xac/xa4 AVESTAN LETTER NGVE ++ /xf0/x90/xac/xa5 AVESTAN LETTER NE ++ /xf0/x90/xac/xa6 AVESTAN LETTER NYE ++ /xf0/x90/xac/xa7 AVESTAN LETTER NNE ++ /xf0/x90/xac/xa8 AVESTAN LETTER ME ++ /xf0/x90/xac/xa9 AVESTAN LETTER HME ++ /xf0/x90/xac/xaa AVESTAN LETTER YYE ++ /xf0/x90/xac/xab AVESTAN LETTER YE ++ /xf0/x90/xac/xac AVESTAN LETTER VE ++ /xf0/x90/xac/xad AVESTAN LETTER RE ++ /xf0/x90/xac/xae AVESTAN LETTER LE ++ /xf0/x90/xac/xaf AVESTAN LETTER SE ++ /xf0/x90/xac/xb0 AVESTAN LETTER ZE ++ /xf0/x90/xac/xb1 AVESTAN LETTER SHE ++ /xf0/x90/xac/xb2 AVESTAN LETTER ZHE ++ /xf0/x90/xac/xb3 AVESTAN LETTER SHYE ++ /xf0/x90/xac/xb4 AVESTAN LETTER SSHE ++ /xf0/x90/xac/xb5 AVESTAN LETTER HE ++ /xf0/x90/xac/xb9 AVESTAN ABBREVIATION MARK ++ /xf0/x90/xac/xba TINY TWO DOTS OVER ONE DOT PUNCTUATION ++ /xf0/x90/xac/xbb SMALL TWO DOTS OVER ONE DOT PUNCTUATION ++ /xf0/x90/xac/xbc LARGE TWO DOTS OVER ONE DOT PUNCTUATION ++ /xf0/x90/xac/xbd LARGE ONE DOT OVER TWO DOTS PUNCTUATION ++ /xf0/x90/xac/xbe LARGE TWO RINGS OVER ONE RING PUNCTUATION ++ /xf0/x90/xac/xbf LARGE ONE RING OVER TWO RINGS PUNCTUATION ++ /xf0/x90/xad/x80 INSCRIPTIONAL PARTHIAN LETTER ALEPH ++ /xf0/x90/xad/x81 INSCRIPTIONAL PARTHIAN LETTER BETH ++ /xf0/x90/xad/x82 INSCRIPTIONAL PARTHIAN LETTER GIMEL ++ /xf0/x90/xad/x83 INSCRIPTIONAL PARTHIAN LETTER DALETH ++ /xf0/x90/xad/x84 INSCRIPTIONAL PARTHIAN LETTER HE ++ /xf0/x90/xad/x85 INSCRIPTIONAL PARTHIAN LETTER WAW ++ /xf0/x90/xad/x86 INSCRIPTIONAL PARTHIAN LETTER ZAYIN ++ /xf0/x90/xad/x87 INSCRIPTIONAL PARTHIAN LETTER HETH ++ /xf0/x90/xad/x88 INSCRIPTIONAL PARTHIAN LETTER TETH ++ /xf0/x90/xad/x89 INSCRIPTIONAL PARTHIAN LETTER YODH ++ /xf0/x90/xad/x8a INSCRIPTIONAL PARTHIAN LETTER KAPH ++ /xf0/x90/xad/x8b INSCRIPTIONAL PARTHIAN LETTER LAMEDH ++ /xf0/x90/xad/x8c INSCRIPTIONAL PARTHIAN LETTER MEM ++ /xf0/x90/xad/x8d INSCRIPTIONAL PARTHIAN LETTER NUN ++ /xf0/x90/xad/x8e INSCRIPTIONAL PARTHIAN LETTER SAMEKH ++ /xf0/x90/xad/x8f INSCRIPTIONAL PARTHIAN LETTER AYIN ++ /xf0/x90/xad/x90 INSCRIPTIONAL PARTHIAN LETTER PE ++ /xf0/x90/xad/x91 INSCRIPTIONAL PARTHIAN LETTER SADHE ++ /xf0/x90/xad/x92 INSCRIPTIONAL PARTHIAN LETTER QOPH ++ /xf0/x90/xad/x93 INSCRIPTIONAL PARTHIAN LETTER RESH ++ /xf0/x90/xad/x94 INSCRIPTIONAL PARTHIAN LETTER SHIN ++ /xf0/x90/xad/x95 INSCRIPTIONAL PARTHIAN LETTER TAW ++ /xf0/x90/xad/x98 INSCRIPTIONAL PARTHIAN NUMBER ONE ++ /xf0/x90/xad/x99 INSCRIPTIONAL PARTHIAN NUMBER TWO ++ /xf0/x90/xad/x9a INSCRIPTIONAL PARTHIAN NUMBER THREE ++ /xf0/x90/xad/x9b INSCRIPTIONAL PARTHIAN NUMBER FOUR ++ /xf0/x90/xad/x9c INSCRIPTIONAL PARTHIAN NUMBER TEN ++ /xf0/x90/xad/x9d INSCRIPTIONAL PARTHIAN NUMBER TWENTY ++ /xf0/x90/xad/x9e INSCRIPTIONAL PARTHIAN NUMBER ONE HUNDRED ++ /xf0/x90/xad/x9f INSCRIPTIONAL PARTHIAN NUMBER ONE THOUSAND ++ /xf0/x90/xad/xa0 INSCRIPTIONAL PAHLAVI LETTER ALEPH ++ /xf0/x90/xad/xa1 INSCRIPTIONAL PAHLAVI LETTER BETH ++ /xf0/x90/xad/xa2 INSCRIPTIONAL PAHLAVI LETTER GIMEL ++ /xf0/x90/xad/xa3 INSCRIPTIONAL PAHLAVI LETTER DALETH ++ /xf0/x90/xad/xa4 INSCRIPTIONAL PAHLAVI LETTER HE ++ /xf0/x90/xad/xa5 INSCRIPTIONAL PAHLAVI LETTER WAW-AYIN-RESH ++ /xf0/x90/xad/xa6 INSCRIPTIONAL PAHLAVI LETTER ZAYIN ++ /xf0/x90/xad/xa7 INSCRIPTIONAL PAHLAVI LETTER HETH ++ /xf0/x90/xad/xa8 INSCRIPTIONAL PAHLAVI LETTER TETH ++ /xf0/x90/xad/xa9 INSCRIPTIONAL PAHLAVI LETTER YODH ++ /xf0/x90/xad/xaa INSCRIPTIONAL PAHLAVI LETTER KAPH ++ /xf0/x90/xad/xab INSCRIPTIONAL PAHLAVI LETTER LAMEDH ++ /xf0/x90/xad/xac INSCRIPTIONAL PAHLAVI LETTER MEM-QOPH ++ /xf0/x90/xad/xad INSCRIPTIONAL PAHLAVI LETTER NUN ++ /xf0/x90/xad/xae INSCRIPTIONAL PAHLAVI LETTER SAMEKH ++ /xf0/x90/xad/xaf INSCRIPTIONAL PAHLAVI LETTER PE ++ /xf0/x90/xad/xb0 INSCRIPTIONAL PAHLAVI LETTER SADHE ++ /xf0/x90/xad/xb1 INSCRIPTIONAL PAHLAVI LETTER SHIN ++ /xf0/x90/xad/xb2 INSCRIPTIONAL PAHLAVI LETTER TAW ++ /xf0/x90/xad/xb8 INSCRIPTIONAL PAHLAVI NUMBER ONE ++ /xf0/x90/xad/xb9 INSCRIPTIONAL PAHLAVI NUMBER TWO ++ /xf0/x90/xad/xba INSCRIPTIONAL PAHLAVI NUMBER THREE ++ /xf0/x90/xad/xbb INSCRIPTIONAL PAHLAVI NUMBER FOUR ++ /xf0/x90/xad/xbc INSCRIPTIONAL PAHLAVI NUMBER TEN ++ /xf0/x90/xad/xbd INSCRIPTIONAL PAHLAVI NUMBER TWENTY ++ /xf0/x90/xad/xbe INSCRIPTIONAL PAHLAVI NUMBER ONE HUNDRED ++ /xf0/x90/xad/xbf INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND ++ /xf0/x90/xb0/x80 OLD TURKIC LETTER ORKHON A ++ /xf0/x90/xb0/x81 OLD TURKIC LETTER YENISEI A ++ /xf0/x90/xb0/x82 OLD TURKIC LETTER YENISEI AE ++ /xf0/x90/xb0/x83 OLD TURKIC LETTER ORKHON I ++ /xf0/x90/xb0/x84 OLD TURKIC LETTER YENISEI I ++ /xf0/x90/xb0/x85 OLD TURKIC LETTER YENISEI E ++ /xf0/x90/xb0/x86 OLD TURKIC LETTER ORKHON O ++ /xf0/x90/xb0/x87 OLD TURKIC LETTER ORKHON OE ++ /xf0/x90/xb0/x88 OLD TURKIC LETTER YENISEI OE ++ /xf0/x90/xb0/x89 OLD TURKIC LETTER ORKHON AB ++ /xf0/x90/xb0/x8a OLD TURKIC LETTER YENISEI AB ++ /xf0/x90/xb0/x8b OLD TURKIC LETTER ORKHON AEB ++ /xf0/x90/xb0/x8c OLD TURKIC LETTER YENISEI AEB ++ /xf0/x90/xb0/x8d OLD TURKIC LETTER ORKHON AG ++ /xf0/x90/xb0/x8e OLD TURKIC LETTER YENISEI AG ++ /xf0/x90/xb0/x8f OLD TURKIC LETTER ORKHON AEG ++ /xf0/x90/xb0/x90 OLD TURKIC LETTER YENISEI AEG ++ /xf0/x90/xb0/x91 OLD TURKIC LETTER ORKHON AD ++ /xf0/x90/xb0/x92 OLD TURKIC LETTER YENISEI AD ++ /xf0/x90/xb0/x93 OLD TURKIC LETTER ORKHON AED ++ /xf0/x90/xb0/x94 OLD TURKIC LETTER ORKHON EZ ++ /xf0/x90/xb0/x95 OLD TURKIC LETTER YENISEI EZ ++ /xf0/x90/xb0/x96 OLD TURKIC LETTER ORKHON AY ++ /xf0/x90/xb0/x97 OLD TURKIC LETTER YENISEI AY ++ /xf0/x90/xb0/x98 OLD TURKIC LETTER ORKHON AEY ++ /xf0/x90/xb0/x99 OLD TURKIC LETTER YENISEI AEY ++ /xf0/x90/xb0/x9a OLD TURKIC LETTER ORKHON AEK ++ /xf0/x90/xb0/x9b OLD TURKIC LETTER YENISEI AEK ++ /xf0/x90/xb0/x9c OLD TURKIC LETTER ORKHON OEK ++ /xf0/x90/xb0/x9d OLD TURKIC LETTER YENISEI OEK ++ /xf0/x90/xb0/x9e OLD TURKIC LETTER ORKHON AL ++ /xf0/x90/xb0/x9f OLD TURKIC LETTER YENISEI AL ++ /xf0/x90/xb0/xa0 OLD TURKIC LETTER ORKHON AEL ++ /xf0/x90/xb0/xa1 OLD TURKIC LETTER ORKHON ELT ++ /xf0/x90/xb0/xa2 OLD TURKIC LETTER ORKHON EM ++ /xf0/x90/xb0/xa3 OLD TURKIC LETTER ORKHON AN ++ /xf0/x90/xb0/xa4 OLD TURKIC LETTER ORKHON AEN ++ /xf0/x90/xb0/xa5 OLD TURKIC LETTER YENISEI AEN ++ /xf0/x90/xb0/xa6 OLD TURKIC LETTER ORKHON ENT ++ /xf0/x90/xb0/xa7 OLD TURKIC LETTER YENISEI ENT ++ /xf0/x90/xb0/xa8 OLD TURKIC LETTER ORKHON ENC ++ /xf0/x90/xb0/xa9 OLD TURKIC LETTER YENISEI ENC ++ /xf0/x90/xb0/xaa OLD TURKIC LETTER ORKHON ENY ++ /xf0/x90/xb0/xab OLD TURKIC LETTER YENISEI ENY ++ /xf0/x90/xb0/xac OLD TURKIC LETTER YENISEI ANG ++ /xf0/x90/xb0/xad OLD TURKIC LETTER ORKHON ENG ++ /xf0/x90/xb0/xae OLD TURKIC LETTER YENISEI AENG ++ /xf0/x90/xb0/xaf OLD TURKIC LETTER ORKHON EP ++ /xf0/x90/xb0/xb0 OLD TURKIC LETTER ORKHON OP ++ /xf0/x90/xb0/xb1 OLD TURKIC LETTER ORKHON IC ++ /xf0/x90/xb0/xb2 OLD TURKIC LETTER ORKHON EC ++ /xf0/x90/xb0/xb3 OLD TURKIC LETTER YENISEI EC ++ /xf0/x90/xb0/xb4 OLD TURKIC LETTER ORKHON AQ ++ /xf0/x90/xb0/xb5 OLD TURKIC LETTER YENISEI AQ ++ /xf0/x90/xb0/xb6 OLD TURKIC LETTER ORKHON IQ ++ /xf0/x90/xb0/xb7 OLD TURKIC LETTER YENISEI IQ ++ /xf0/x90/xb0/xb8 OLD TURKIC LETTER ORKHON OQ ++ /xf0/x90/xb0/xb9 OLD TURKIC LETTER YENISEI OQ ++ /xf0/x90/xb0/xba OLD TURKIC LETTER ORKHON AR ++ /xf0/x90/xb0/xbb OLD TURKIC LETTER YENISEI AR ++ /xf0/x90/xb0/xbc OLD TURKIC LETTER ORKHON AER ++ /xf0/x90/xb0/xbd OLD TURKIC LETTER ORKHON AS ++ /xf0/x90/xb0/xbe OLD TURKIC LETTER ORKHON AES ++ /xf0/x90/xb0/xbf OLD TURKIC LETTER ORKHON ASH ++ /xf0/x90/xb1/x80 OLD TURKIC LETTER YENISEI ASH ++ /xf0/x90/xb1/x81 OLD TURKIC LETTER ORKHON ESH ++ /xf0/x90/xb1/x82 OLD TURKIC LETTER YENISEI ESH ++ /xf0/x90/xb1/x83 OLD TURKIC LETTER ORKHON AT ++ /xf0/x90/xb1/x84 OLD TURKIC LETTER YENISEI AT ++ /xf0/x90/xb1/x85 OLD TURKIC LETTER ORKHON AET ++ /xf0/x90/xb1/x86 OLD TURKIC LETTER YENISEI AET ++ /xf0/x90/xb1/x87 OLD TURKIC LETTER ORKHON OT ++ /xf0/x90/xb1/x88 OLD TURKIC LETTER ORKHON BASH ++ /xf0/x90/xb9/xa0 RUMI DIGIT ONE ++ /xf0/x90/xb9/xa1 RUMI DIGIT TWO ++ /xf0/x90/xb9/xa2 RUMI DIGIT THREE ++ /xf0/x90/xb9/xa3 RUMI DIGIT FOUR ++ /xf0/x90/xb9/xa4 RUMI DIGIT FIVE ++ /xf0/x90/xb9/xa5 RUMI DIGIT SIX ++ /xf0/x90/xb9/xa6 RUMI DIGIT SEVEN ++ /xf0/x90/xb9/xa7 RUMI DIGIT EIGHT ++ /xf0/x90/xb9/xa8 RUMI DIGIT NINE ++ /xf0/x90/xb9/xa9 RUMI NUMBER TEN ++ /xf0/x90/xb9/xaa RUMI NUMBER TWENTY ++ /xf0/x90/xb9/xab RUMI NUMBER THIRTY ++ /xf0/x90/xb9/xac RUMI NUMBER FORTY ++ /xf0/x90/xb9/xad RUMI NUMBER FIFTY ++ /xf0/x90/xb9/xae RUMI NUMBER SIXTY ++ /xf0/x90/xb9/xaf RUMI NUMBER SEVENTY ++ /xf0/x90/xb9/xb0 RUMI NUMBER EIGHTY ++ /xf0/x90/xb9/xb1 RUMI NUMBER NINETY ++ /xf0/x90/xb9/xb2 RUMI NUMBER ONE HUNDRED ++ /xf0/x90/xb9/xb3 RUMI NUMBER TWO HUNDRED ++ /xf0/x90/xb9/xb4 RUMI NUMBER THREE HUNDRED ++ /xf0/x90/xb9/xb5 RUMI NUMBER FOUR HUNDRED ++ /xf0/x90/xb9/xb6 RUMI NUMBER FIVE HUNDRED ++ /xf0/x90/xb9/xb7 RUMI NUMBER SIX HUNDRED ++ /xf0/x90/xb9/xb8 RUMI NUMBER SEVEN HUNDRED ++ /xf0/x90/xb9/xb9 RUMI NUMBER EIGHT HUNDRED ++ /xf0/x90/xb9/xba RUMI NUMBER NINE HUNDRED ++ /xf0/x90/xb9/xbb RUMI FRACTION ONE HALF ++ /xf0/x90/xb9/xbc RUMI FRACTION ONE QUARTER ++ /xf0/x90/xb9/xbd RUMI FRACTION ONE THIRD ++ /xf0/x90/xb9/xbe RUMI FRACTION TWO THIRDS ++ /xf0/x91/x80/x80 BRAHMI SIGN CANDRABINDU ++ /xf0/x91/x80/x81 BRAHMI SIGN ANUSVARA ++ /xf0/x91/x80/x82 BRAHMI SIGN VISARGA ++ /xf0/x91/x80/x83 BRAHMI SIGN JIHVAMULIYA ++ /xf0/x91/x80/x84 BRAHMI SIGN UPADHMANIYA ++ /xf0/x91/x80/x85 BRAHMI LETTER A ++ /xf0/x91/x80/x86 BRAHMI LETTER AA ++ /xf0/x91/x80/x87 BRAHMI LETTER I ++ /xf0/x91/x80/x88 BRAHMI LETTER II ++ /xf0/x91/x80/x89 BRAHMI LETTER U ++ /xf0/x91/x80/x8a BRAHMI LETTER UU ++ /xf0/x91/x80/x8b BRAHMI LETTER VOCALIC R ++ /xf0/x91/x80/x8c BRAHMI LETTER VOCALIC RR ++ /xf0/x91/x80/x8d BRAHMI LETTER VOCALIC L ++ /xf0/x91/x80/x8e BRAHMI LETTER VOCALIC LL ++ /xf0/x91/x80/x8f BRAHMI LETTER E ++ /xf0/x91/x80/x90 BRAHMI LETTER AI ++ /xf0/x91/x80/x91 BRAHMI LETTER O ++ /xf0/x91/x80/x92 BRAHMI LETTER AU ++ /xf0/x91/x80/x93 BRAHMI LETTER KA ++ /xf0/x91/x80/x94 BRAHMI LETTER KHA ++ /xf0/x91/x80/x95 BRAHMI LETTER GA ++ /xf0/x91/x80/x96 BRAHMI LETTER GHA ++ /xf0/x91/x80/x97 BRAHMI LETTER NGA ++ /xf0/x91/x80/x98 BRAHMI LETTER CA ++ /xf0/x91/x80/x99 BRAHMI LETTER CHA ++ /xf0/x91/x80/x9a BRAHMI LETTER JA ++ /xf0/x91/x80/x9b BRAHMI LETTER JHA ++ /xf0/x91/x80/x9c BRAHMI LETTER NYA ++ /xf0/x91/x80/x9d BRAHMI LETTER TTA ++ /xf0/x91/x80/x9e BRAHMI LETTER TTHA ++ /xf0/x91/x80/x9f BRAHMI LETTER DDA ++ /xf0/x91/x80/xa0 BRAHMI LETTER DDHA ++ /xf0/x91/x80/xa1 BRAHMI LETTER NNA ++ /xf0/x91/x80/xa2 BRAHMI LETTER TA ++ /xf0/x91/x80/xa3 BRAHMI LETTER THA ++ /xf0/x91/x80/xa4 BRAHMI LETTER DA ++ /xf0/x91/x80/xa5 BRAHMI LETTER DHA ++ /xf0/x91/x80/xa6 BRAHMI LETTER NA ++ /xf0/x91/x80/xa7 BRAHMI LETTER PA ++ /xf0/x91/x80/xa8 BRAHMI LETTER PHA ++ /xf0/x91/x80/xa9 BRAHMI LETTER BA ++ /xf0/x91/x80/xaa BRAHMI LETTER BHA ++ /xf0/x91/x80/xab BRAHMI LETTER MA ++ /xf0/x91/x80/xac BRAHMI LETTER YA ++ /xf0/x91/x80/xad BRAHMI LETTER RA ++ /xf0/x91/x80/xae BRAHMI LETTER LA ++ /xf0/x91/x80/xaf BRAHMI LETTER VA ++ /xf0/x91/x80/xb0 BRAHMI LETTER SHA ++ /xf0/x91/x80/xb1 BRAHMI LETTER SSA ++ /xf0/x91/x80/xb2 BRAHMI LETTER SA ++ /xf0/x91/x80/xb3 BRAHMI LETTER HA ++ /xf0/x91/x80/xb4 BRAHMI LETTER LLA ++ /xf0/x91/x80/xb5 BRAHMI LETTER OLD TAMIL LLLA ++ /xf0/x91/x80/xb6 BRAHMI LETTER OLD TAMIL RRA ++ /xf0/x91/x80/xb7 BRAHMI LETTER OLD TAMIL NNNA ++ /xf0/x91/x80/xb8 BRAHMI VOWEL SIGN AA ++ /xf0/x91/x80/xb9 BRAHMI VOWEL SIGN BHATTIPROLU AA ++ /xf0/x91/x80/xba BRAHMI VOWEL SIGN I ++ /xf0/x91/x80/xbb BRAHMI VOWEL SIGN II ++ /xf0/x91/x80/xbc BRAHMI VOWEL SIGN U ++ /xf0/x91/x80/xbd BRAHMI VOWEL SIGN UU ++ /xf0/x91/x80/xbe BRAHMI VOWEL SIGN VOCALIC R ++ /xf0/x91/x80/xbf BRAHMI VOWEL SIGN VOCALIC RR ++ /xf0/x91/x81/x80 BRAHMI VOWEL SIGN VOCALIC L ++ /xf0/x91/x81/x81 BRAHMI VOWEL SIGN VOCALIC LL ++ /xf0/x91/x81/x82 BRAHMI VOWEL SIGN E ++ /xf0/x91/x81/x83 BRAHMI VOWEL SIGN AI ++ /xf0/x91/x81/x84 BRAHMI VOWEL SIGN O ++ /xf0/x91/x81/x85 BRAHMI VOWEL SIGN AU ++ /xf0/x91/x81/x86 BRAHMI VIRAMA ++ /xf0/x91/x81/x87 BRAHMI DANDA ++ /xf0/x91/x81/x88 BRAHMI DOUBLE DANDA ++ /xf0/x91/x81/x89 BRAHMI PUNCTUATION DOT ++ /xf0/x91/x81/x8a BRAHMI PUNCTUATION DOUBLE DOT ++ /xf0/x91/x81/x8b BRAHMI PUNCTUATION LINE ++ /xf0/x91/x81/x8c BRAHMI PUNCTUATION CRESCENT BAR ++ /xf0/x91/x81/x8d BRAHMI PUNCTUATION LOTUS ++ /xf0/x91/x81/x92 BRAHMI NUMBER ONE ++ /xf0/x91/x81/x93 BRAHMI NUMBER TWO ++ /xf0/x91/x81/x94 BRAHMI NUMBER THREE ++ /xf0/x91/x81/x95 BRAHMI NUMBER FOUR ++ /xf0/x91/x81/x96 BRAHMI NUMBER FIVE ++ /xf0/x91/x81/x97 BRAHMI NUMBER SIX ++ /xf0/x91/x81/x98 BRAHMI NUMBER SEVEN ++ /xf0/x91/x81/x99 BRAHMI NUMBER EIGHT ++ /xf0/x91/x81/x9a BRAHMI NUMBER NINE ++ /xf0/x91/x81/x9b BRAHMI NUMBER TEN ++ /xf0/x91/x81/x9c BRAHMI NUMBER TWENTY ++ /xf0/x91/x81/x9d BRAHMI NUMBER THIRTY ++ /xf0/x91/x81/x9e BRAHMI NUMBER FORTY ++ /xf0/x91/x81/x9f BRAHMI NUMBER FIFTY ++ /xf0/x91/x81/xa0 BRAHMI NUMBER SIXTY ++ /xf0/x91/x81/xa1 BRAHMI NUMBER SEVENTY ++ /xf0/x91/x81/xa2 BRAHMI NUMBER EIGHTY ++ /xf0/x91/x81/xa3 BRAHMI NUMBER NINETY ++ /xf0/x91/x81/xa4 BRAHMI NUMBER ONE HUNDRED ++ /xf0/x91/x81/xa5 BRAHMI NUMBER ONE THOUSAND ++ /xf0/x91/x81/xa6 BRAHMI DIGIT ZERO ++ /xf0/x91/x81/xa7 BRAHMI DIGIT ONE ++ /xf0/x91/x81/xa8 BRAHMI DIGIT TWO ++ /xf0/x91/x81/xa9 BRAHMI DIGIT THREE ++ /xf0/x91/x81/xaa BRAHMI DIGIT FOUR ++ /xf0/x91/x81/xab BRAHMI DIGIT FIVE ++ /xf0/x91/x81/xac BRAHMI DIGIT SIX ++ /xf0/x91/x81/xad BRAHMI DIGIT SEVEN ++ /xf0/x91/x81/xae BRAHMI DIGIT EIGHT ++ /xf0/x91/x81/xaf BRAHMI DIGIT NINE ++ /xf0/x91/x82/x80 KAITHI SIGN CANDRABINDU ++ /xf0/x91/x82/x81 KAITHI SIGN ANUSVARA ++ /xf0/x91/x82/x82 KAITHI SIGN VISARGA ++ /xf0/x91/x82/x83 KAITHI LETTER A ++ /xf0/x91/x82/x84 KAITHI LETTER AA ++ /xf0/x91/x82/x85 KAITHI LETTER I ++ /xf0/x91/x82/x86 KAITHI LETTER II ++ /xf0/x91/x82/x87 KAITHI LETTER U ++ /xf0/x91/x82/x88 KAITHI LETTER UU ++ /xf0/x91/x82/x89 KAITHI LETTER E ++ /xf0/x91/x82/x8a KAITHI LETTER AI ++ /xf0/x91/x82/x8b KAITHI LETTER O ++ /xf0/x91/x82/x8c KAITHI LETTER AU ++ /xf0/x91/x82/x8d KAITHI LETTER KA ++ /xf0/x91/x82/x8e KAITHI LETTER KHA ++ /xf0/x91/x82/x8f KAITHI LETTER GA ++ /xf0/x91/x82/x90 KAITHI LETTER GHA ++ /xf0/x91/x82/x91 KAITHI LETTER NGA ++ /xf0/x91/x82/x92 KAITHI LETTER CA ++ /xf0/x91/x82/x93 KAITHI LETTER CHA ++ /xf0/x91/x82/x94 KAITHI LETTER JA ++ /xf0/x91/x82/x95 KAITHI LETTER JHA ++ /xf0/x91/x82/x96 KAITHI LETTER NYA ++ /xf0/x91/x82/x97 KAITHI LETTER TTA ++ /xf0/x91/x82/x98 KAITHI LETTER TTHA ++ /xf0/x91/x82/x99 KAITHI LETTER DDA ++ /xf0/x91/x82/x9a KAITHI LETTER DDDHA ++ /xf0/x91/x82/x9b KAITHI LETTER DDHA ++ /xf0/x91/x82/x9c KAITHI LETTER RHA ++ /xf0/x91/x82/x9d KAITHI LETTER NNA ++ /xf0/x91/x82/x9e KAITHI LETTER TA ++ /xf0/x91/x82/x9f KAITHI LETTER THA ++ /xf0/x91/x82/xa0 KAITHI LETTER DA ++ /xf0/x91/x82/xa1 KAITHI LETTER DHA ++ /xf0/x91/x82/xa2 KAITHI LETTER NA ++ /xf0/x91/x82/xa3 KAITHI LETTER PA ++ /xf0/x91/x82/xa4 KAITHI LETTER PHA ++ /xf0/x91/x82/xa5 KAITHI LETTER BA ++ /xf0/x91/x82/xa6 KAITHI LETTER BHA ++ /xf0/x91/x82/xa7 KAITHI LETTER MA ++ /xf0/x91/x82/xa8 KAITHI LETTER YA ++ /xf0/x91/x82/xa9 KAITHI LETTER RA ++ /xf0/x91/x82/xaa KAITHI LETTER LA ++ /xf0/x91/x82/xab KAITHI LETTER VA ++ /xf0/x91/x82/xac KAITHI LETTER SHA ++ /xf0/x91/x82/xad KAITHI LETTER SSA ++ /xf0/x91/x82/xae KAITHI LETTER SA ++ /xf0/x91/x82/xaf KAITHI LETTER HA ++ /xf0/x91/x82/xb0 KAITHI VOWEL SIGN AA ++ /xf0/x91/x82/xb1 KAITHI VOWEL SIGN I ++ /xf0/x91/x82/xb2 KAITHI VOWEL SIGN II ++ /xf0/x91/x82/xb3 KAITHI VOWEL SIGN U ++ /xf0/x91/x82/xb4 KAITHI VOWEL SIGN UU ++ /xf0/x91/x82/xb5 KAITHI VOWEL SIGN E ++ /xf0/x91/x82/xb6 KAITHI VOWEL SIGN AI ++ /xf0/x91/x82/xb7 KAITHI VOWEL SIGN O ++ /xf0/x91/x82/xb8 KAITHI VOWEL SIGN AU ++ /xf0/x91/x82/xb9 KAITHI SIGN VIRAMA ++ /xf0/x91/x82/xba KAITHI SIGN NUKTA ++ /xf0/x91/x82/xbb KAITHI ABBREVIATION SIGN ++ /xf0/x91/x82/xbc KAITHI ENUMERATION SIGN ++ /xf0/x91/x82/xbd KAITHI NUMBER SIGN ++ /xf0/x91/x82/xbe KAITHI SECTION MARK ++ /xf0/x91/x82/xbf KAITHI DOUBLE SECTION MARK ++ /xf0/x91/x83/x80 KAITHI DANDA ++ /xf0/x91/x83/x81 KAITHI DOUBLE DANDA + /xf0/x92/x80/x80 CUNEIFORM SIGN A + /xf0/x92/x80/x81 CUNEIFORM SIGN A TIMES A + /xf0/x92/x80/x82 CUNEIFORM SIGN A TIMES BAD +@@ -28370,6 +30022,1648 @@ CHARMAP + /xf0/x92/x91/xb1 CUNEIFORM PUNCTUATION SIGN VERTICAL COLON + /xf0/x92/x91/xb2 CUNEIFORM PUNCTUATION SIGN DIAGONAL COLON + /xf0/x92/x91/xb3 CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON ++ /xf0/x93/x80/x80 EGYPTIAN HIEROGLYPH A001 ++ /xf0/x93/x80/x81 EGYPTIAN HIEROGLYPH A002 ++ /xf0/x93/x80/x82 EGYPTIAN HIEROGLYPH A003 ++ /xf0/x93/x80/x83 EGYPTIAN HIEROGLYPH A004 ++ /xf0/x93/x80/x84 EGYPTIAN HIEROGLYPH A005 ++ /xf0/x93/x80/x85 EGYPTIAN HIEROGLYPH A005A ++ /xf0/x93/x80/x86 EGYPTIAN HIEROGLYPH A006 ++ /xf0/x93/x80/x87 EGYPTIAN HIEROGLYPH A006A ++ /xf0/x93/x80/x88 EGYPTIAN HIEROGLYPH A006B ++ /xf0/x93/x80/x89 EGYPTIAN HIEROGLYPH A007 ++ /xf0/x93/x80/x8a EGYPTIAN HIEROGLYPH A008 ++ /xf0/x93/x80/x8b EGYPTIAN HIEROGLYPH A009 ++ /xf0/x93/x80/x8c EGYPTIAN HIEROGLYPH A010 ++ /xf0/x93/x80/x8d EGYPTIAN HIEROGLYPH A011 ++ /xf0/x93/x80/x8e EGYPTIAN HIEROGLYPH A012 ++ /xf0/x93/x80/x8f EGYPTIAN HIEROGLYPH A013 ++ /xf0/x93/x80/x90 EGYPTIAN HIEROGLYPH A014 ++ /xf0/x93/x80/x91 EGYPTIAN HIEROGLYPH A014A ++ /xf0/x93/x80/x92 EGYPTIAN HIEROGLYPH A015 ++ /xf0/x93/x80/x93 EGYPTIAN HIEROGLYPH A016 ++ /xf0/x93/x80/x94 EGYPTIAN HIEROGLYPH A017 ++ /xf0/x93/x80/x95 EGYPTIAN HIEROGLYPH A017A ++ /xf0/x93/x80/x96 EGYPTIAN HIEROGLYPH A018 ++ /xf0/x93/x80/x97 EGYPTIAN HIEROGLYPH A019 ++ /xf0/x93/x80/x98 EGYPTIAN HIEROGLYPH A020 ++ /xf0/x93/x80/x99 EGYPTIAN HIEROGLYPH A021 ++ /xf0/x93/x80/x9a EGYPTIAN HIEROGLYPH A022 ++ /xf0/x93/x80/x9b EGYPTIAN HIEROGLYPH A023 ++ /xf0/x93/x80/x9c EGYPTIAN HIEROGLYPH A024 ++ /xf0/x93/x80/x9d EGYPTIAN HIEROGLYPH A025 ++ /xf0/x93/x80/x9e EGYPTIAN HIEROGLYPH A026 ++ /xf0/x93/x80/x9f EGYPTIAN HIEROGLYPH A027 ++ /xf0/x93/x80/xa0 EGYPTIAN HIEROGLYPH A028 ++ /xf0/x93/x80/xa1 EGYPTIAN HIEROGLYPH A029 ++ /xf0/x93/x80/xa2 EGYPTIAN HIEROGLYPH A030 ++ /xf0/x93/x80/xa3 EGYPTIAN HIEROGLYPH A031 ++ /xf0/x93/x80/xa4 EGYPTIAN HIEROGLYPH A032 ++ /xf0/x93/x80/xa5 EGYPTIAN HIEROGLYPH A032A ++ /xf0/x93/x80/xa6 EGYPTIAN HIEROGLYPH A033 ++ /xf0/x93/x80/xa7 EGYPTIAN HIEROGLYPH A034 ++ /xf0/x93/x80/xa8 EGYPTIAN HIEROGLYPH A035 ++ /xf0/x93/x80/xa9 EGYPTIAN HIEROGLYPH A036 ++ /xf0/x93/x80/xaa EGYPTIAN HIEROGLYPH A037 ++ /xf0/x93/x80/xab EGYPTIAN HIEROGLYPH A038 ++ /xf0/x93/x80/xac EGYPTIAN HIEROGLYPH A039 ++ /xf0/x93/x80/xad EGYPTIAN HIEROGLYPH A040 ++ /xf0/x93/x80/xae EGYPTIAN HIEROGLYPH A040A ++ /xf0/x93/x80/xaf EGYPTIAN HIEROGLYPH A041 ++ /xf0/x93/x80/xb0 EGYPTIAN HIEROGLYPH A042 ++ /xf0/x93/x80/xb1 EGYPTIAN HIEROGLYPH A042A ++ /xf0/x93/x80/xb2 EGYPTIAN HIEROGLYPH A043 ++ /xf0/x93/x80/xb3 EGYPTIAN HIEROGLYPH A043A ++ /xf0/x93/x80/xb4 EGYPTIAN HIEROGLYPH A044 ++ /xf0/x93/x80/xb5 EGYPTIAN HIEROGLYPH A045 ++ /xf0/x93/x80/xb6 EGYPTIAN HIEROGLYPH A045A ++ /xf0/x93/x80/xb7 EGYPTIAN HIEROGLYPH A046 ++ /xf0/x93/x80/xb8 EGYPTIAN HIEROGLYPH A047 ++ /xf0/x93/x80/xb9 EGYPTIAN HIEROGLYPH A048 ++ /xf0/x93/x80/xba EGYPTIAN HIEROGLYPH A049 ++ /xf0/x93/x80/xbb EGYPTIAN HIEROGLYPH A050 ++ /xf0/x93/x80/xbc EGYPTIAN HIEROGLYPH A051 ++ /xf0/x93/x80/xbd EGYPTIAN HIEROGLYPH A052 ++ /xf0/x93/x80/xbe EGYPTIAN HIEROGLYPH A053 ++ /xf0/x93/x80/xbf EGYPTIAN HIEROGLYPH A054 ++ /xf0/x93/x81/x80 EGYPTIAN HIEROGLYPH A055 ++ /xf0/x93/x81/x81 EGYPTIAN HIEROGLYPH A056 ++ /xf0/x93/x81/x82 EGYPTIAN HIEROGLYPH A057 ++ /xf0/x93/x81/x83 EGYPTIAN HIEROGLYPH A058 ++ /xf0/x93/x81/x84 EGYPTIAN HIEROGLYPH A059 ++ /xf0/x93/x81/x85 EGYPTIAN HIEROGLYPH A060 ++ /xf0/x93/x81/x86 EGYPTIAN HIEROGLYPH A061 ++ /xf0/x93/x81/x87 EGYPTIAN HIEROGLYPH A062 ++ /xf0/x93/x81/x88 EGYPTIAN HIEROGLYPH A063 ++ /xf0/x93/x81/x89 EGYPTIAN HIEROGLYPH A064 ++ /xf0/x93/x81/x8a EGYPTIAN HIEROGLYPH A065 ++ /xf0/x93/x81/x8b EGYPTIAN HIEROGLYPH A066 ++ /xf0/x93/x81/x8c EGYPTIAN HIEROGLYPH A067 ++ /xf0/x93/x81/x8d EGYPTIAN HIEROGLYPH A068 ++ /xf0/x93/x81/x8e EGYPTIAN HIEROGLYPH A069 ++ /xf0/x93/x81/x8f EGYPTIAN HIEROGLYPH A070 ++ /xf0/x93/x81/x90 EGYPTIAN HIEROGLYPH B001 ++ /xf0/x93/x81/x91 EGYPTIAN HIEROGLYPH B002 ++ /xf0/x93/x81/x92 EGYPTIAN HIEROGLYPH B003 ++ /xf0/x93/x81/x93 EGYPTIAN HIEROGLYPH B004 ++ /xf0/x93/x81/x94 EGYPTIAN HIEROGLYPH B005 ++ /xf0/x93/x81/x95 EGYPTIAN HIEROGLYPH B005A ++ /xf0/x93/x81/x96 EGYPTIAN HIEROGLYPH B006 ++ /xf0/x93/x81/x97 EGYPTIAN HIEROGLYPH B007 ++ /xf0/x93/x81/x98 EGYPTIAN HIEROGLYPH B008 ++ /xf0/x93/x81/x99 EGYPTIAN HIEROGLYPH B009 ++ /xf0/x93/x81/x9a EGYPTIAN HIEROGLYPH C001 ++ /xf0/x93/x81/x9b EGYPTIAN HIEROGLYPH C002 ++ /xf0/x93/x81/x9c EGYPTIAN HIEROGLYPH C002A ++ /xf0/x93/x81/x9d EGYPTIAN HIEROGLYPH C002B ++ /xf0/x93/x81/x9e EGYPTIAN HIEROGLYPH C002C ++ /xf0/x93/x81/x9f EGYPTIAN HIEROGLYPH C003 ++ /xf0/x93/x81/xa0 EGYPTIAN HIEROGLYPH C004 ++ /xf0/x93/x81/xa1 EGYPTIAN HIEROGLYPH C005 ++ /xf0/x93/x81/xa2 EGYPTIAN HIEROGLYPH C006 ++ /xf0/x93/x81/xa3 EGYPTIAN HIEROGLYPH C007 ++ /xf0/x93/x81/xa4 EGYPTIAN HIEROGLYPH C008 ++ /xf0/x93/x81/xa5 EGYPTIAN HIEROGLYPH C009 ++ /xf0/x93/x81/xa6 EGYPTIAN HIEROGLYPH C010 ++ /xf0/x93/x81/xa7 EGYPTIAN HIEROGLYPH C010A ++ /xf0/x93/x81/xa8 EGYPTIAN HIEROGLYPH C011 ++ /xf0/x93/x81/xa9 EGYPTIAN HIEROGLYPH C012 ++ /xf0/x93/x81/xaa EGYPTIAN HIEROGLYPH C013 ++ /xf0/x93/x81/xab EGYPTIAN HIEROGLYPH C014 ++ /xf0/x93/x81/xac EGYPTIAN HIEROGLYPH C015 ++ /xf0/x93/x81/xad EGYPTIAN HIEROGLYPH C016 ++ /xf0/x93/x81/xae EGYPTIAN HIEROGLYPH C017 ++ /xf0/x93/x81/xaf EGYPTIAN HIEROGLYPH C018 ++ /xf0/x93/x81/xb0 EGYPTIAN HIEROGLYPH C019 ++ /xf0/x93/x81/xb1 EGYPTIAN HIEROGLYPH C020 ++ /xf0/x93/x81/xb2 EGYPTIAN HIEROGLYPH C021 ++ /xf0/x93/x81/xb3 EGYPTIAN HIEROGLYPH C022 ++ /xf0/x93/x81/xb4 EGYPTIAN HIEROGLYPH C023 ++ /xf0/x93/x81/xb5 EGYPTIAN HIEROGLYPH C024 ++ /xf0/x93/x81/xb6 EGYPTIAN HIEROGLYPH D001 ++ /xf0/x93/x81/xb7 EGYPTIAN HIEROGLYPH D002 ++ /xf0/x93/x81/xb8 EGYPTIAN HIEROGLYPH D003 ++ /xf0/x93/x81/xb9 EGYPTIAN HIEROGLYPH D004 ++ /xf0/x93/x81/xba EGYPTIAN HIEROGLYPH D005 ++ /xf0/x93/x81/xbb EGYPTIAN HIEROGLYPH D006 ++ /xf0/x93/x81/xbc EGYPTIAN HIEROGLYPH D007 ++ /xf0/x93/x81/xbd EGYPTIAN HIEROGLYPH D008 ++ /xf0/x93/x81/xbe EGYPTIAN HIEROGLYPH D008A ++ /xf0/x93/x81/xbf EGYPTIAN HIEROGLYPH D009 ++ /xf0/x93/x82/x80 EGYPTIAN HIEROGLYPH D010 ++ /xf0/x93/x82/x81 EGYPTIAN HIEROGLYPH D011 ++ /xf0/x93/x82/x82 EGYPTIAN HIEROGLYPH D012 ++ /xf0/x93/x82/x83 EGYPTIAN HIEROGLYPH D013 ++ /xf0/x93/x82/x84 EGYPTIAN HIEROGLYPH D014 ++ /xf0/x93/x82/x85 EGYPTIAN HIEROGLYPH D015 ++ /xf0/x93/x82/x86 EGYPTIAN HIEROGLYPH D016 ++ /xf0/x93/x82/x87 EGYPTIAN HIEROGLYPH D017 ++ /xf0/x93/x82/x88 EGYPTIAN HIEROGLYPH D018 ++ /xf0/x93/x82/x89 EGYPTIAN HIEROGLYPH D019 ++ /xf0/x93/x82/x8a EGYPTIAN HIEROGLYPH D020 ++ /xf0/x93/x82/x8b EGYPTIAN HIEROGLYPH D021 ++ /xf0/x93/x82/x8c EGYPTIAN HIEROGLYPH D022 ++ /xf0/x93/x82/x8d EGYPTIAN HIEROGLYPH D023 ++ /xf0/x93/x82/x8e EGYPTIAN HIEROGLYPH D024 ++ /xf0/x93/x82/x8f EGYPTIAN HIEROGLYPH D025 ++ /xf0/x93/x82/x90 EGYPTIAN HIEROGLYPH D026 ++ /xf0/x93/x82/x91 EGYPTIAN HIEROGLYPH D027 ++ /xf0/x93/x82/x92 EGYPTIAN HIEROGLYPH D027A ++ /xf0/x93/x82/x93 EGYPTIAN HIEROGLYPH D028 ++ /xf0/x93/x82/x94 EGYPTIAN HIEROGLYPH D029 ++ /xf0/x93/x82/x95 EGYPTIAN HIEROGLYPH D030 ++ /xf0/x93/x82/x96 EGYPTIAN HIEROGLYPH D031 ++ /xf0/x93/x82/x97 EGYPTIAN HIEROGLYPH D031A ++ /xf0/x93/x82/x98 EGYPTIAN HIEROGLYPH D032 ++ /xf0/x93/x82/x99 EGYPTIAN HIEROGLYPH D033 ++ /xf0/x93/x82/x9a EGYPTIAN HIEROGLYPH D034 ++ /xf0/x93/x82/x9b EGYPTIAN HIEROGLYPH D034A ++ /xf0/x93/x82/x9c EGYPTIAN HIEROGLYPH D035 ++ /xf0/x93/x82/x9d EGYPTIAN HIEROGLYPH D036 ++ /xf0/x93/x82/x9e EGYPTIAN HIEROGLYPH D037 ++ /xf0/x93/x82/x9f EGYPTIAN HIEROGLYPH D038 ++ /xf0/x93/x82/xa0 EGYPTIAN HIEROGLYPH D039 ++ /xf0/x93/x82/xa1 EGYPTIAN HIEROGLYPH D040 ++ /xf0/x93/x82/xa2 EGYPTIAN HIEROGLYPH D041 ++ /xf0/x93/x82/xa3 EGYPTIAN HIEROGLYPH D042 ++ /xf0/x93/x82/xa4 EGYPTIAN HIEROGLYPH D043 ++ /xf0/x93/x82/xa5 EGYPTIAN HIEROGLYPH D044 ++ /xf0/x93/x82/xa6 EGYPTIAN HIEROGLYPH D045 ++ /xf0/x93/x82/xa7 EGYPTIAN HIEROGLYPH D046 ++ /xf0/x93/x82/xa8 EGYPTIAN HIEROGLYPH D046A ++ /xf0/x93/x82/xa9 EGYPTIAN HIEROGLYPH D047 ++ /xf0/x93/x82/xaa EGYPTIAN HIEROGLYPH D048 ++ /xf0/x93/x82/xab EGYPTIAN HIEROGLYPH D048A ++ /xf0/x93/x82/xac EGYPTIAN HIEROGLYPH D049 ++ /xf0/x93/x82/xad EGYPTIAN HIEROGLYPH D050 ++ /xf0/x93/x82/xae EGYPTIAN HIEROGLYPH D050A ++ /xf0/x93/x82/xaf EGYPTIAN HIEROGLYPH D050B ++ /xf0/x93/x82/xb0 EGYPTIAN HIEROGLYPH D050C ++ /xf0/x93/x82/xb1 EGYPTIAN HIEROGLYPH D050D ++ /xf0/x93/x82/xb2 EGYPTIAN HIEROGLYPH D050E ++ /xf0/x93/x82/xb3 EGYPTIAN HIEROGLYPH D050F ++ /xf0/x93/x82/xb4 EGYPTIAN HIEROGLYPH D050G ++ /xf0/x93/x82/xb5 EGYPTIAN HIEROGLYPH D050H ++ /xf0/x93/x82/xb6 EGYPTIAN HIEROGLYPH D050I ++ /xf0/x93/x82/xb7 EGYPTIAN HIEROGLYPH D051 ++ /xf0/x93/x82/xb8 EGYPTIAN HIEROGLYPH D052 ++ /xf0/x93/x82/xb9 EGYPTIAN HIEROGLYPH D052A ++ /xf0/x93/x82/xba EGYPTIAN HIEROGLYPH D053 ++ /xf0/x93/x82/xbb EGYPTIAN HIEROGLYPH D054 ++ /xf0/x93/x82/xbc EGYPTIAN HIEROGLYPH D054A ++ /xf0/x93/x82/xbd EGYPTIAN HIEROGLYPH D055 ++ /xf0/x93/x82/xbe EGYPTIAN HIEROGLYPH D056 ++ /xf0/x93/x82/xbf EGYPTIAN HIEROGLYPH D057 ++ /xf0/x93/x83/x80 EGYPTIAN HIEROGLYPH D058 ++ /xf0/x93/x83/x81 EGYPTIAN HIEROGLYPH D059 ++ /xf0/x93/x83/x82 EGYPTIAN HIEROGLYPH D060 ++ /xf0/x93/x83/x83 EGYPTIAN HIEROGLYPH D061 ++ /xf0/x93/x83/x84 EGYPTIAN HIEROGLYPH D062 ++ /xf0/x93/x83/x85 EGYPTIAN HIEROGLYPH D063 ++ /xf0/x93/x83/x86 EGYPTIAN HIEROGLYPH D064 ++ /xf0/x93/x83/x87 EGYPTIAN HIEROGLYPH D065 ++ /xf0/x93/x83/x88 EGYPTIAN HIEROGLYPH D066 ++ /xf0/x93/x83/x89 EGYPTIAN HIEROGLYPH D067 ++ /xf0/x93/x83/x8a EGYPTIAN HIEROGLYPH D067A ++ /xf0/x93/x83/x8b EGYPTIAN HIEROGLYPH D067B ++ /xf0/x93/x83/x8c EGYPTIAN HIEROGLYPH D067C ++ /xf0/x93/x83/x8d EGYPTIAN HIEROGLYPH D067D ++ /xf0/x93/x83/x8e EGYPTIAN HIEROGLYPH D067E ++ /xf0/x93/x83/x8f EGYPTIAN HIEROGLYPH D067F ++ /xf0/x93/x83/x90 EGYPTIAN HIEROGLYPH D067G ++ /xf0/x93/x83/x91 EGYPTIAN HIEROGLYPH D067H ++ /xf0/x93/x83/x92 EGYPTIAN HIEROGLYPH E001 ++ /xf0/x93/x83/x93 EGYPTIAN HIEROGLYPH E002 ++ /xf0/x93/x83/x94 EGYPTIAN HIEROGLYPH E003 ++ /xf0/x93/x83/x95 EGYPTIAN HIEROGLYPH E004 ++ /xf0/x93/x83/x96 EGYPTIAN HIEROGLYPH E005 ++ /xf0/x93/x83/x97 EGYPTIAN HIEROGLYPH E006 ++ /xf0/x93/x83/x98 EGYPTIAN HIEROGLYPH E007 ++ /xf0/x93/x83/x99 EGYPTIAN HIEROGLYPH E008 ++ /xf0/x93/x83/x9a EGYPTIAN HIEROGLYPH E008A ++ /xf0/x93/x83/x9b EGYPTIAN HIEROGLYPH E009 ++ /xf0/x93/x83/x9c EGYPTIAN HIEROGLYPH E009A ++ /xf0/x93/x83/x9d EGYPTIAN HIEROGLYPH E010 ++ /xf0/x93/x83/x9e EGYPTIAN HIEROGLYPH E011 ++ /xf0/x93/x83/x9f EGYPTIAN HIEROGLYPH E012 ++ /xf0/x93/x83/xa0 EGYPTIAN HIEROGLYPH E013 ++ /xf0/x93/x83/xa1 EGYPTIAN HIEROGLYPH E014 ++ /xf0/x93/x83/xa2 EGYPTIAN HIEROGLYPH E015 ++ /xf0/x93/x83/xa3 EGYPTIAN HIEROGLYPH E016 ++ /xf0/x93/x83/xa4 EGYPTIAN HIEROGLYPH E016A ++ /xf0/x93/x83/xa5 EGYPTIAN HIEROGLYPH E017 ++ /xf0/x93/x83/xa6 EGYPTIAN HIEROGLYPH E017A ++ /xf0/x93/x83/xa7 EGYPTIAN HIEROGLYPH E018 ++ /xf0/x93/x83/xa8 EGYPTIAN HIEROGLYPH E019 ++ /xf0/x93/x83/xa9 EGYPTIAN HIEROGLYPH E020 ++ /xf0/x93/x83/xaa EGYPTIAN HIEROGLYPH E020A ++ /xf0/x93/x83/xab EGYPTIAN HIEROGLYPH E021 ++ /xf0/x93/x83/xac EGYPTIAN HIEROGLYPH E022 ++ /xf0/x93/x83/xad EGYPTIAN HIEROGLYPH E023 ++ /xf0/x93/x83/xae EGYPTIAN HIEROGLYPH E024 ++ /xf0/x93/x83/xaf EGYPTIAN HIEROGLYPH E025 ++ /xf0/x93/x83/xb0 EGYPTIAN HIEROGLYPH E026 ++ /xf0/x93/x83/xb1 EGYPTIAN HIEROGLYPH E027 ++ /xf0/x93/x83/xb2 EGYPTIAN HIEROGLYPH E028 ++ /xf0/x93/x83/xb3 EGYPTIAN HIEROGLYPH E028A ++ /xf0/x93/x83/xb4 EGYPTIAN HIEROGLYPH E029 ++ /xf0/x93/x83/xb5 EGYPTIAN HIEROGLYPH E030 ++ /xf0/x93/x83/xb6 EGYPTIAN HIEROGLYPH E031 ++ /xf0/x93/x83/xb7 EGYPTIAN HIEROGLYPH E032 ++ /xf0/x93/x83/xb8 EGYPTIAN HIEROGLYPH E033 ++ /xf0/x93/x83/xb9 EGYPTIAN HIEROGLYPH E034 ++ /xf0/x93/x83/xba EGYPTIAN HIEROGLYPH E034A ++ /xf0/x93/x83/xbb EGYPTIAN HIEROGLYPH E036 ++ /xf0/x93/x83/xbc EGYPTIAN HIEROGLYPH E037 ++ /xf0/x93/x83/xbd EGYPTIAN HIEROGLYPH E038 ++ /xf0/x93/x83/xbe EGYPTIAN HIEROGLYPH F001 ++ /xf0/x93/x83/xbf EGYPTIAN HIEROGLYPH F001A ++ /xf0/x93/x84/x80 EGYPTIAN HIEROGLYPH F002 ++ /xf0/x93/x84/x81 EGYPTIAN HIEROGLYPH F003 ++ /xf0/x93/x84/x82 EGYPTIAN HIEROGLYPH F004 ++ /xf0/x93/x84/x83 EGYPTIAN HIEROGLYPH F005 ++ /xf0/x93/x84/x84 EGYPTIAN HIEROGLYPH F006 ++ /xf0/x93/x84/x85 EGYPTIAN HIEROGLYPH F007 ++ /xf0/x93/x84/x86 EGYPTIAN HIEROGLYPH F008 ++ /xf0/x93/x84/x87 EGYPTIAN HIEROGLYPH F009 ++ /xf0/x93/x84/x88 EGYPTIAN HIEROGLYPH F010 ++ /xf0/x93/x84/x89 EGYPTIAN HIEROGLYPH F011 ++ /xf0/x93/x84/x8a EGYPTIAN HIEROGLYPH F012 ++ /xf0/x93/x84/x8b EGYPTIAN HIEROGLYPH F013 ++ /xf0/x93/x84/x8c EGYPTIAN HIEROGLYPH F013A ++ /xf0/x93/x84/x8d EGYPTIAN HIEROGLYPH F014 ++ /xf0/x93/x84/x8e EGYPTIAN HIEROGLYPH F015 ++ /xf0/x93/x84/x8f EGYPTIAN HIEROGLYPH F016 ++ /xf0/x93/x84/x90 EGYPTIAN HIEROGLYPH F017 ++ /xf0/x93/x84/x91 EGYPTIAN HIEROGLYPH F018 ++ /xf0/x93/x84/x92 EGYPTIAN HIEROGLYPH F019 ++ /xf0/x93/x84/x93 EGYPTIAN HIEROGLYPH F020 ++ /xf0/x93/x84/x94 EGYPTIAN HIEROGLYPH F021 ++ /xf0/x93/x84/x95 EGYPTIAN HIEROGLYPH F021A ++ /xf0/x93/x84/x96 EGYPTIAN HIEROGLYPH F022 ++ /xf0/x93/x84/x97 EGYPTIAN HIEROGLYPH F023 ++ /xf0/x93/x84/x98 EGYPTIAN HIEROGLYPH F024 ++ /xf0/x93/x84/x99 EGYPTIAN HIEROGLYPH F025 ++ /xf0/x93/x84/x9a EGYPTIAN HIEROGLYPH F026 ++ /xf0/x93/x84/x9b EGYPTIAN HIEROGLYPH F027 ++ /xf0/x93/x84/x9c EGYPTIAN HIEROGLYPH F028 ++ /xf0/x93/x84/x9d EGYPTIAN HIEROGLYPH F029 ++ /xf0/x93/x84/x9e EGYPTIAN HIEROGLYPH F030 ++ /xf0/x93/x84/x9f EGYPTIAN HIEROGLYPH F031 ++ /xf0/x93/x84/xa0 EGYPTIAN HIEROGLYPH F031A ++ /xf0/x93/x84/xa1 EGYPTIAN HIEROGLYPH F032 ++ /xf0/x93/x84/xa2 EGYPTIAN HIEROGLYPH F033 ++ /xf0/x93/x84/xa3 EGYPTIAN HIEROGLYPH F034 ++ /xf0/x93/x84/xa4 EGYPTIAN HIEROGLYPH F035 ++ /xf0/x93/x84/xa5 EGYPTIAN HIEROGLYPH F036 ++ /xf0/x93/x84/xa6 EGYPTIAN HIEROGLYPH F037 ++ /xf0/x93/x84/xa7 EGYPTIAN HIEROGLYPH F037A ++ /xf0/x93/x84/xa8 EGYPTIAN HIEROGLYPH F038 ++ /xf0/x93/x84/xa9 EGYPTIAN HIEROGLYPH F038A ++ /xf0/x93/x84/xaa EGYPTIAN HIEROGLYPH F039 ++ /xf0/x93/x84/xab EGYPTIAN HIEROGLYPH F040 ++ /xf0/x93/x84/xac EGYPTIAN HIEROGLYPH F041 ++ /xf0/x93/x84/xad EGYPTIAN HIEROGLYPH F042 ++ /xf0/x93/x84/xae EGYPTIAN HIEROGLYPH F043 ++ /xf0/x93/x84/xaf EGYPTIAN HIEROGLYPH F044 ++ /xf0/x93/x84/xb0 EGYPTIAN HIEROGLYPH F045 ++ /xf0/x93/x84/xb1 EGYPTIAN HIEROGLYPH F045A ++ /xf0/x93/x84/xb2 EGYPTIAN HIEROGLYPH F046 ++ /xf0/x93/x84/xb3 EGYPTIAN HIEROGLYPH F046A ++ /xf0/x93/x84/xb4 EGYPTIAN HIEROGLYPH F047 ++ /xf0/x93/x84/xb5 EGYPTIAN HIEROGLYPH F047A ++ /xf0/x93/x84/xb6 EGYPTIAN HIEROGLYPH F048 ++ /xf0/x93/x84/xb7 EGYPTIAN HIEROGLYPH F049 ++ /xf0/x93/x84/xb8 EGYPTIAN HIEROGLYPH F050 ++ /xf0/x93/x84/xb9 EGYPTIAN HIEROGLYPH F051 ++ /xf0/x93/x84/xba EGYPTIAN HIEROGLYPH F051A ++ /xf0/x93/x84/xbb EGYPTIAN HIEROGLYPH F051B ++ /xf0/x93/x84/xbc EGYPTIAN HIEROGLYPH F051C ++ /xf0/x93/x84/xbd EGYPTIAN HIEROGLYPH F052 ++ /xf0/x93/x84/xbe EGYPTIAN HIEROGLYPH F053 ++ /xf0/x93/x84/xbf EGYPTIAN HIEROGLYPH G001 ++ /xf0/x93/x85/x80 EGYPTIAN HIEROGLYPH G002 ++ /xf0/x93/x85/x81 EGYPTIAN HIEROGLYPH G003 ++ /xf0/x93/x85/x82 EGYPTIAN HIEROGLYPH G004 ++ /xf0/x93/x85/x83 EGYPTIAN HIEROGLYPH G005 ++ /xf0/x93/x85/x84 EGYPTIAN HIEROGLYPH G006 ++ /xf0/x93/x85/x85 EGYPTIAN HIEROGLYPH G006A ++ /xf0/x93/x85/x86 EGYPTIAN HIEROGLYPH G007 ++ /xf0/x93/x85/x87 EGYPTIAN HIEROGLYPH G007A ++ /xf0/x93/x85/x88 EGYPTIAN HIEROGLYPH G007B ++ /xf0/x93/x85/x89 EGYPTIAN HIEROGLYPH G008 ++ /xf0/x93/x85/x8a EGYPTIAN HIEROGLYPH G009 ++ /xf0/x93/x85/x8b EGYPTIAN HIEROGLYPH G010 ++ /xf0/x93/x85/x8c EGYPTIAN HIEROGLYPH G011 ++ /xf0/x93/x85/x8d EGYPTIAN HIEROGLYPH G011A ++ /xf0/x93/x85/x8e EGYPTIAN HIEROGLYPH G012 ++ /xf0/x93/x85/x8f EGYPTIAN HIEROGLYPH G013 ++ /xf0/x93/x85/x90 EGYPTIAN HIEROGLYPH G014 ++ /xf0/x93/x85/x91 EGYPTIAN HIEROGLYPH G015 ++ /xf0/x93/x85/x92 EGYPTIAN HIEROGLYPH G016 ++ /xf0/x93/x85/x93 EGYPTIAN HIEROGLYPH G017 ++ /xf0/x93/x85/x94 EGYPTIAN HIEROGLYPH G018 ++ /xf0/x93/x85/x95 EGYPTIAN HIEROGLYPH G019 ++ /xf0/x93/x85/x96 EGYPTIAN HIEROGLYPH G020 ++ /xf0/x93/x85/x97 EGYPTIAN HIEROGLYPH G020A ++ /xf0/x93/x85/x98 EGYPTIAN HIEROGLYPH G021 ++ /xf0/x93/x85/x99 EGYPTIAN HIEROGLYPH G022 ++ /xf0/x93/x85/x9a EGYPTIAN HIEROGLYPH G023 ++ /xf0/x93/x85/x9b EGYPTIAN HIEROGLYPH G024 ++ /xf0/x93/x85/x9c EGYPTIAN HIEROGLYPH G025 ++ /xf0/x93/x85/x9d EGYPTIAN HIEROGLYPH G026 ++ /xf0/x93/x85/x9e EGYPTIAN HIEROGLYPH G026A ++ /xf0/x93/x85/x9f EGYPTIAN HIEROGLYPH G027 ++ /xf0/x93/x85/xa0 EGYPTIAN HIEROGLYPH G028 ++ /xf0/x93/x85/xa1 EGYPTIAN HIEROGLYPH G029 ++ /xf0/x93/x85/xa2 EGYPTIAN HIEROGLYPH G030 ++ /xf0/x93/x85/xa3 EGYPTIAN HIEROGLYPH G031 ++ /xf0/x93/x85/xa4 EGYPTIAN HIEROGLYPH G032 ++ /xf0/x93/x85/xa5 EGYPTIAN HIEROGLYPH G033 ++ /xf0/x93/x85/xa6 EGYPTIAN HIEROGLYPH G034 ++ /xf0/x93/x85/xa7 EGYPTIAN HIEROGLYPH G035 ++ /xf0/x93/x85/xa8 EGYPTIAN HIEROGLYPH G036 ++ /xf0/x93/x85/xa9 EGYPTIAN HIEROGLYPH G036A ++ /xf0/x93/x85/xaa EGYPTIAN HIEROGLYPH G037 ++ /xf0/x93/x85/xab EGYPTIAN HIEROGLYPH G037A ++ /xf0/x93/x85/xac EGYPTIAN HIEROGLYPH G038 ++ /xf0/x93/x85/xad EGYPTIAN HIEROGLYPH G039 ++ /xf0/x93/x85/xae EGYPTIAN HIEROGLYPH G040 ++ /xf0/x93/x85/xaf EGYPTIAN HIEROGLYPH G041 ++ /xf0/x93/x85/xb0 EGYPTIAN HIEROGLYPH G042 ++ /xf0/x93/x85/xb1 EGYPTIAN HIEROGLYPH G043 ++ /xf0/x93/x85/xb2 EGYPTIAN HIEROGLYPH G043A ++ /xf0/x93/x85/xb3 EGYPTIAN HIEROGLYPH G044 ++ /xf0/x93/x85/xb4 EGYPTIAN HIEROGLYPH G045 ++ /xf0/x93/x85/xb5 EGYPTIAN HIEROGLYPH G045A ++ /xf0/x93/x85/xb6 EGYPTIAN HIEROGLYPH G046 ++ /xf0/x93/x85/xb7 EGYPTIAN HIEROGLYPH G047 ++ /xf0/x93/x85/xb8 EGYPTIAN HIEROGLYPH G048 ++ /xf0/x93/x85/xb9 EGYPTIAN HIEROGLYPH G049 ++ /xf0/x93/x85/xba EGYPTIAN HIEROGLYPH G050 ++ /xf0/x93/x85/xbb EGYPTIAN HIEROGLYPH G051 ++ /xf0/x93/x85/xbc EGYPTIAN HIEROGLYPH G052 ++ /xf0/x93/x85/xbd EGYPTIAN HIEROGLYPH G053 ++ /xf0/x93/x85/xbe EGYPTIAN HIEROGLYPH G054 ++ /xf0/x93/x85/xbf EGYPTIAN HIEROGLYPH H001 ++ /xf0/x93/x86/x80 EGYPTIAN HIEROGLYPH H002 ++ /xf0/x93/x86/x81 EGYPTIAN HIEROGLYPH H003 ++ /xf0/x93/x86/x82 EGYPTIAN HIEROGLYPH H004 ++ /xf0/x93/x86/x83 EGYPTIAN HIEROGLYPH H005 ++ /xf0/x93/x86/x84 EGYPTIAN HIEROGLYPH H006 ++ /xf0/x93/x86/x85 EGYPTIAN HIEROGLYPH H006A ++ /xf0/x93/x86/x86 EGYPTIAN HIEROGLYPH H007 ++ /xf0/x93/x86/x87 EGYPTIAN HIEROGLYPH H008 ++ /xf0/x93/x86/x88 EGYPTIAN HIEROGLYPH I001 ++ /xf0/x93/x86/x89 EGYPTIAN HIEROGLYPH I002 ++ /xf0/x93/x86/x8a EGYPTIAN HIEROGLYPH I003 ++ /xf0/x93/x86/x8b EGYPTIAN HIEROGLYPH I004 ++ /xf0/x93/x86/x8c EGYPTIAN HIEROGLYPH I005 ++ /xf0/x93/x86/x8d EGYPTIAN HIEROGLYPH I005A ++ /xf0/x93/x86/x8e EGYPTIAN HIEROGLYPH I006 ++ /xf0/x93/x86/x8f EGYPTIAN HIEROGLYPH I007 ++ /xf0/x93/x86/x90 EGYPTIAN HIEROGLYPH I008 ++ /xf0/x93/x86/x91 EGYPTIAN HIEROGLYPH I009 ++ /xf0/x93/x86/x92 EGYPTIAN HIEROGLYPH I009A ++ /xf0/x93/x86/x93 EGYPTIAN HIEROGLYPH I010 ++ /xf0/x93/x86/x94 EGYPTIAN HIEROGLYPH I010A ++ /xf0/x93/x86/x95 EGYPTIAN HIEROGLYPH I011 ++ /xf0/x93/x86/x96 EGYPTIAN HIEROGLYPH I011A ++ /xf0/x93/x86/x97 EGYPTIAN HIEROGLYPH I012 ++ /xf0/x93/x86/x98 EGYPTIAN HIEROGLYPH I013 ++ /xf0/x93/x86/x99 EGYPTIAN HIEROGLYPH I014 ++ /xf0/x93/x86/x9a EGYPTIAN HIEROGLYPH I015 ++ /xf0/x93/x86/x9b EGYPTIAN HIEROGLYPH K001 ++ /xf0/x93/x86/x9c EGYPTIAN HIEROGLYPH K002 ++ /xf0/x93/x86/x9d EGYPTIAN HIEROGLYPH K003 ++ /xf0/x93/x86/x9e EGYPTIAN HIEROGLYPH K004 ++ /xf0/x93/x86/x9f EGYPTIAN HIEROGLYPH K005 ++ /xf0/x93/x86/xa0 EGYPTIAN HIEROGLYPH K006 ++ /xf0/x93/x86/xa1 EGYPTIAN HIEROGLYPH K007 ++ /xf0/x93/x86/xa2 EGYPTIAN HIEROGLYPH K008 ++ /xf0/x93/x86/xa3 EGYPTIAN HIEROGLYPH L001 ++ /xf0/x93/x86/xa4 EGYPTIAN HIEROGLYPH L002 ++ /xf0/x93/x86/xa5 EGYPTIAN HIEROGLYPH L002A ++ /xf0/x93/x86/xa6 EGYPTIAN HIEROGLYPH L003 ++ /xf0/x93/x86/xa7 EGYPTIAN HIEROGLYPH L004 ++ /xf0/x93/x86/xa8 EGYPTIAN HIEROGLYPH L005 ++ /xf0/x93/x86/xa9 EGYPTIAN HIEROGLYPH L006 ++ /xf0/x93/x86/xaa EGYPTIAN HIEROGLYPH L006A ++ /xf0/x93/x86/xab EGYPTIAN HIEROGLYPH L007 ++ /xf0/x93/x86/xac EGYPTIAN HIEROGLYPH L008 ++ /xf0/x93/x86/xad EGYPTIAN HIEROGLYPH M001 ++ /xf0/x93/x86/xae EGYPTIAN HIEROGLYPH M001A ++ /xf0/x93/x86/xaf EGYPTIAN HIEROGLYPH M001B ++ /xf0/x93/x86/xb0 EGYPTIAN HIEROGLYPH M002 ++ /xf0/x93/x86/xb1 EGYPTIAN HIEROGLYPH M003 ++ /xf0/x93/x86/xb2 EGYPTIAN HIEROGLYPH M003A ++ /xf0/x93/x86/xb3 EGYPTIAN HIEROGLYPH M004 ++ /xf0/x93/x86/xb4 EGYPTIAN HIEROGLYPH M005 ++ /xf0/x93/x86/xb5 EGYPTIAN HIEROGLYPH M006 ++ /xf0/x93/x86/xb6 EGYPTIAN HIEROGLYPH M007 ++ /xf0/x93/x86/xb7 EGYPTIAN HIEROGLYPH M008 ++ /xf0/x93/x86/xb8 EGYPTIAN HIEROGLYPH M009 ++ /xf0/x93/x86/xb9 EGYPTIAN HIEROGLYPH M010 ++ /xf0/x93/x86/xba EGYPTIAN HIEROGLYPH M010A ++ /xf0/x93/x86/xbb EGYPTIAN HIEROGLYPH M011 ++ /xf0/x93/x86/xbc EGYPTIAN HIEROGLYPH M012 ++ /xf0/x93/x86/xbd EGYPTIAN HIEROGLYPH M012A ++ /xf0/x93/x86/xbe EGYPTIAN HIEROGLYPH M012B ++ /xf0/x93/x86/xbf EGYPTIAN HIEROGLYPH M012C ++ /xf0/x93/x87/x80 EGYPTIAN HIEROGLYPH M012D ++ /xf0/x93/x87/x81 EGYPTIAN HIEROGLYPH M012E ++ /xf0/x93/x87/x82 EGYPTIAN HIEROGLYPH M012F ++ /xf0/x93/x87/x83 EGYPTIAN HIEROGLYPH M012G ++ /xf0/x93/x87/x84 EGYPTIAN HIEROGLYPH M012H ++ /xf0/x93/x87/x85 EGYPTIAN HIEROGLYPH M013 ++ /xf0/x93/x87/x86 EGYPTIAN HIEROGLYPH M014 ++ /xf0/x93/x87/x87 EGYPTIAN HIEROGLYPH M015 ++ /xf0/x93/x87/x88 EGYPTIAN HIEROGLYPH M015A ++ /xf0/x93/x87/x89 EGYPTIAN HIEROGLYPH M016 ++ /xf0/x93/x87/x8a EGYPTIAN HIEROGLYPH M016A ++ /xf0/x93/x87/x8b EGYPTIAN HIEROGLYPH M017 ++ /xf0/x93/x87/x8c EGYPTIAN HIEROGLYPH M017A ++ /xf0/x93/x87/x8d EGYPTIAN HIEROGLYPH M018 ++ /xf0/x93/x87/x8e EGYPTIAN HIEROGLYPH M019 ++ /xf0/x93/x87/x8f EGYPTIAN HIEROGLYPH M020 ++ /xf0/x93/x87/x90 EGYPTIAN HIEROGLYPH M021 ++ /xf0/x93/x87/x91 EGYPTIAN HIEROGLYPH M022 ++ /xf0/x93/x87/x92 EGYPTIAN HIEROGLYPH M022A ++ /xf0/x93/x87/x93 EGYPTIAN HIEROGLYPH M023 ++ /xf0/x93/x87/x94 EGYPTIAN HIEROGLYPH M024 ++ /xf0/x93/x87/x95 EGYPTIAN HIEROGLYPH M024A ++ /xf0/x93/x87/x96 EGYPTIAN HIEROGLYPH M025 ++ /xf0/x93/x87/x97 EGYPTIAN HIEROGLYPH M026 ++ /xf0/x93/x87/x98 EGYPTIAN HIEROGLYPH M027 ++ /xf0/x93/x87/x99 EGYPTIAN HIEROGLYPH M028 ++ /xf0/x93/x87/x9a EGYPTIAN HIEROGLYPH M028A ++ /xf0/x93/x87/x9b EGYPTIAN HIEROGLYPH M029 ++ /xf0/x93/x87/x9c EGYPTIAN HIEROGLYPH M030 ++ /xf0/x93/x87/x9d EGYPTIAN HIEROGLYPH M031 ++ /xf0/x93/x87/x9e EGYPTIAN HIEROGLYPH M031A ++ /xf0/x93/x87/x9f EGYPTIAN HIEROGLYPH M032 ++ /xf0/x93/x87/xa0 EGYPTIAN HIEROGLYPH M033 ++ /xf0/x93/x87/xa1 EGYPTIAN HIEROGLYPH M033A ++ /xf0/x93/x87/xa2 EGYPTIAN HIEROGLYPH M033B ++ /xf0/x93/x87/xa3 EGYPTIAN HIEROGLYPH M034 ++ /xf0/x93/x87/xa4 EGYPTIAN HIEROGLYPH M035 ++ /xf0/x93/x87/xa5 EGYPTIAN HIEROGLYPH M036 ++ /xf0/x93/x87/xa6 EGYPTIAN HIEROGLYPH M037 ++ /xf0/x93/x87/xa7 EGYPTIAN HIEROGLYPH M038 ++ /xf0/x93/x87/xa8 EGYPTIAN HIEROGLYPH M039 ++ /xf0/x93/x87/xa9 EGYPTIAN HIEROGLYPH M040 ++ /xf0/x93/x87/xaa EGYPTIAN HIEROGLYPH M040A ++ /xf0/x93/x87/xab EGYPTIAN HIEROGLYPH M041 ++ /xf0/x93/x87/xac EGYPTIAN HIEROGLYPH M042 ++ /xf0/x93/x87/xad EGYPTIAN HIEROGLYPH M043 ++ /xf0/x93/x87/xae EGYPTIAN HIEROGLYPH M044 ++ /xf0/x93/x87/xaf EGYPTIAN HIEROGLYPH N001 ++ /xf0/x93/x87/xb0 EGYPTIAN HIEROGLYPH N002 ++ /xf0/x93/x87/xb1 EGYPTIAN HIEROGLYPH N003 ++ /xf0/x93/x87/xb2 EGYPTIAN HIEROGLYPH N004 ++ /xf0/x93/x87/xb3 EGYPTIAN HIEROGLYPH N005 ++ /xf0/x93/x87/xb4 EGYPTIAN HIEROGLYPH N006 ++ /xf0/x93/x87/xb5 EGYPTIAN HIEROGLYPH N007 ++ /xf0/x93/x87/xb6 EGYPTIAN HIEROGLYPH N008 ++ /xf0/x93/x87/xb7 EGYPTIAN HIEROGLYPH N009 ++ /xf0/x93/x87/xb8 EGYPTIAN HIEROGLYPH N010 ++ /xf0/x93/x87/xb9 EGYPTIAN HIEROGLYPH N011 ++ /xf0/x93/x87/xba EGYPTIAN HIEROGLYPH N012 ++ /xf0/x93/x87/xbb EGYPTIAN HIEROGLYPH N013 ++ /xf0/x93/x87/xbc EGYPTIAN HIEROGLYPH N014 ++ /xf0/x93/x87/xbd EGYPTIAN HIEROGLYPH N015 ++ /xf0/x93/x87/xbe EGYPTIAN HIEROGLYPH N016 ++ /xf0/x93/x87/xbf EGYPTIAN HIEROGLYPH N017 ++ /xf0/x93/x88/x80 EGYPTIAN HIEROGLYPH N018 ++ /xf0/x93/x88/x81 EGYPTIAN HIEROGLYPH N018A ++ /xf0/x93/x88/x82 EGYPTIAN HIEROGLYPH N018B ++ /xf0/x93/x88/x83 EGYPTIAN HIEROGLYPH N019 ++ /xf0/x93/x88/x84 EGYPTIAN HIEROGLYPH N020 ++ /xf0/x93/x88/x85 EGYPTIAN HIEROGLYPH N021 ++ /xf0/x93/x88/x86 EGYPTIAN HIEROGLYPH N022 ++ /xf0/x93/x88/x87 EGYPTIAN HIEROGLYPH N023 ++ /xf0/x93/x88/x88 EGYPTIAN HIEROGLYPH N024 ++ /xf0/x93/x88/x89 EGYPTIAN HIEROGLYPH N025 ++ /xf0/x93/x88/x8a EGYPTIAN HIEROGLYPH N025A ++ /xf0/x93/x88/x8b EGYPTIAN HIEROGLYPH N026 ++ /xf0/x93/x88/x8c EGYPTIAN HIEROGLYPH N027 ++ /xf0/x93/x88/x8d EGYPTIAN HIEROGLYPH N028 ++ /xf0/x93/x88/x8e EGYPTIAN HIEROGLYPH N029 ++ /xf0/x93/x88/x8f EGYPTIAN HIEROGLYPH N030 ++ /xf0/x93/x88/x90 EGYPTIAN HIEROGLYPH N031 ++ /xf0/x93/x88/x91 EGYPTIAN HIEROGLYPH N032 ++ /xf0/x93/x88/x92 EGYPTIAN HIEROGLYPH N033 ++ /xf0/x93/x88/x93 EGYPTIAN HIEROGLYPH N033A ++ /xf0/x93/x88/x94 EGYPTIAN HIEROGLYPH N034 ++ /xf0/x93/x88/x95 EGYPTIAN HIEROGLYPH N034A ++ /xf0/x93/x88/x96 EGYPTIAN HIEROGLYPH N035 ++ /xf0/x93/x88/x97 EGYPTIAN HIEROGLYPH N035A ++ /xf0/x93/x88/x98 EGYPTIAN HIEROGLYPH N036 ++ /xf0/x93/x88/x99 EGYPTIAN HIEROGLYPH N037 ++ /xf0/x93/x88/x9a EGYPTIAN HIEROGLYPH N037A ++ /xf0/x93/x88/x9b EGYPTIAN HIEROGLYPH N038 ++ /xf0/x93/x88/x9c EGYPTIAN HIEROGLYPH N039 ++ /xf0/x93/x88/x9d EGYPTIAN HIEROGLYPH N040 ++ /xf0/x93/x88/x9e EGYPTIAN HIEROGLYPH N041 ++ /xf0/x93/x88/x9f EGYPTIAN HIEROGLYPH N042 ++ /xf0/x93/x88/xa0 EGYPTIAN HIEROGLYPH NL001 ++ /xf0/x93/x88/xa1 EGYPTIAN HIEROGLYPH NL002 ++ /xf0/x93/x88/xa2 EGYPTIAN HIEROGLYPH NL003 ++ /xf0/x93/x88/xa3 EGYPTIAN HIEROGLYPH NL004 ++ /xf0/x93/x88/xa4 EGYPTIAN HIEROGLYPH NL005 ++ /xf0/x93/x88/xa5 EGYPTIAN HIEROGLYPH NL005A ++ /xf0/x93/x88/xa6 EGYPTIAN HIEROGLYPH NL006 ++ /xf0/x93/x88/xa7 EGYPTIAN HIEROGLYPH NL007 ++ /xf0/x93/x88/xa8 EGYPTIAN HIEROGLYPH NL008 ++ /xf0/x93/x88/xa9 EGYPTIAN HIEROGLYPH NL009 ++ /xf0/x93/x88/xaa EGYPTIAN HIEROGLYPH NL010 ++ /xf0/x93/x88/xab EGYPTIAN HIEROGLYPH NL011 ++ /xf0/x93/x88/xac EGYPTIAN HIEROGLYPH NL012 ++ /xf0/x93/x88/xad EGYPTIAN HIEROGLYPH NL013 ++ /xf0/x93/x88/xae EGYPTIAN HIEROGLYPH NL014 ++ /xf0/x93/x88/xaf EGYPTIAN HIEROGLYPH NL015 ++ /xf0/x93/x88/xb0 EGYPTIAN HIEROGLYPH NL016 ++ /xf0/x93/x88/xb1 EGYPTIAN HIEROGLYPH NL017 ++ /xf0/x93/x88/xb2 EGYPTIAN HIEROGLYPH NL017A ++ /xf0/x93/x88/xb3 EGYPTIAN HIEROGLYPH NL018 ++ /xf0/x93/x88/xb4 EGYPTIAN HIEROGLYPH NL019 ++ /xf0/x93/x88/xb5 EGYPTIAN HIEROGLYPH NL020 ++ /xf0/x93/x88/xb6 EGYPTIAN HIEROGLYPH NU001 ++ /xf0/x93/x88/xb7 EGYPTIAN HIEROGLYPH NU002 ++ /xf0/x93/x88/xb8 EGYPTIAN HIEROGLYPH NU003 ++ /xf0/x93/x88/xb9 EGYPTIAN HIEROGLYPH NU004 ++ /xf0/x93/x88/xba EGYPTIAN HIEROGLYPH NU005 ++ /xf0/x93/x88/xbb EGYPTIAN HIEROGLYPH NU006 ++ /xf0/x93/x88/xbc EGYPTIAN HIEROGLYPH NU007 ++ /xf0/x93/x88/xbd EGYPTIAN HIEROGLYPH NU008 ++ /xf0/x93/x88/xbe EGYPTIAN HIEROGLYPH NU009 ++ /xf0/x93/x88/xbf EGYPTIAN HIEROGLYPH NU010 ++ /xf0/x93/x89/x80 EGYPTIAN HIEROGLYPH NU010A ++ /xf0/x93/x89/x81 EGYPTIAN HIEROGLYPH NU011 ++ /xf0/x93/x89/x82 EGYPTIAN HIEROGLYPH NU011A ++ /xf0/x93/x89/x83 EGYPTIAN HIEROGLYPH NU012 ++ /xf0/x93/x89/x84 EGYPTIAN HIEROGLYPH NU013 ++ /xf0/x93/x89/x85 EGYPTIAN HIEROGLYPH NU014 ++ /xf0/x93/x89/x86 EGYPTIAN HIEROGLYPH NU015 ++ /xf0/x93/x89/x87 EGYPTIAN HIEROGLYPH NU016 ++ /xf0/x93/x89/x88 EGYPTIAN HIEROGLYPH NU017 ++ /xf0/x93/x89/x89 EGYPTIAN HIEROGLYPH NU018 ++ /xf0/x93/x89/x8a EGYPTIAN HIEROGLYPH NU018A ++ /xf0/x93/x89/x8b EGYPTIAN HIEROGLYPH NU019 ++ /xf0/x93/x89/x8c EGYPTIAN HIEROGLYPH NU020 ++ /xf0/x93/x89/x8d EGYPTIAN HIEROGLYPH NU021 ++ /xf0/x93/x89/x8e EGYPTIAN HIEROGLYPH NU022 ++ /xf0/x93/x89/x8f EGYPTIAN HIEROGLYPH NU022A ++ /xf0/x93/x89/x90 EGYPTIAN HIEROGLYPH O001 ++ /xf0/x93/x89/x91 EGYPTIAN HIEROGLYPH O001A ++ /xf0/x93/x89/x92 EGYPTIAN HIEROGLYPH O002 ++ /xf0/x93/x89/x93 EGYPTIAN HIEROGLYPH O003 ++ /xf0/x93/x89/x94 EGYPTIAN HIEROGLYPH O004 ++ /xf0/x93/x89/x95 EGYPTIAN HIEROGLYPH O005 ++ /xf0/x93/x89/x96 EGYPTIAN HIEROGLYPH O005A ++ /xf0/x93/x89/x97 EGYPTIAN HIEROGLYPH O006 ++ /xf0/x93/x89/x98 EGYPTIAN HIEROGLYPH O006A ++ /xf0/x93/x89/x99 EGYPTIAN HIEROGLYPH O006B ++ /xf0/x93/x89/x9a EGYPTIAN HIEROGLYPH O006C ++ /xf0/x93/x89/x9b EGYPTIAN HIEROGLYPH O006D ++ /xf0/x93/x89/x9c EGYPTIAN HIEROGLYPH O006E ++ /xf0/x93/x89/x9d EGYPTIAN HIEROGLYPH O006F ++ /xf0/x93/x89/x9e EGYPTIAN HIEROGLYPH O007 ++ /xf0/x93/x89/x9f EGYPTIAN HIEROGLYPH O008 ++ /xf0/x93/x89/xa0 EGYPTIAN HIEROGLYPH O009 ++ /xf0/x93/x89/xa1 EGYPTIAN HIEROGLYPH O010 ++ /xf0/x93/x89/xa2 EGYPTIAN HIEROGLYPH O010A ++ /xf0/x93/x89/xa3 EGYPTIAN HIEROGLYPH O010B ++ /xf0/x93/x89/xa4 EGYPTIAN HIEROGLYPH O010C ++ /xf0/x93/x89/xa5 EGYPTIAN HIEROGLYPH O011 ++ /xf0/x93/x89/xa6 EGYPTIAN HIEROGLYPH O012 ++ /xf0/x93/x89/xa7 EGYPTIAN HIEROGLYPH O013 ++ /xf0/x93/x89/xa8 EGYPTIAN HIEROGLYPH O014 ++ /xf0/x93/x89/xa9 EGYPTIAN HIEROGLYPH O015 ++ /xf0/x93/x89/xaa EGYPTIAN HIEROGLYPH O016 ++ /xf0/x93/x89/xab EGYPTIAN HIEROGLYPH O017 ++ /xf0/x93/x89/xac EGYPTIAN HIEROGLYPH O018 ++ /xf0/x93/x89/xad EGYPTIAN HIEROGLYPH O019 ++ /xf0/x93/x89/xae EGYPTIAN HIEROGLYPH O019A ++ /xf0/x93/x89/xaf EGYPTIAN HIEROGLYPH O020 ++ /xf0/x93/x89/xb0 EGYPTIAN HIEROGLYPH O020A ++ /xf0/x93/x89/xb1 EGYPTIAN HIEROGLYPH O021 ++ /xf0/x93/x89/xb2 EGYPTIAN HIEROGLYPH O022 ++ /xf0/x93/x89/xb3 EGYPTIAN HIEROGLYPH O023 ++ /xf0/x93/x89/xb4 EGYPTIAN HIEROGLYPH O024 ++ /xf0/x93/x89/xb5 EGYPTIAN HIEROGLYPH O024A ++ /xf0/x93/x89/xb6 EGYPTIAN HIEROGLYPH O025 ++ /xf0/x93/x89/xb7 EGYPTIAN HIEROGLYPH O025A ++ /xf0/x93/x89/xb8 EGYPTIAN HIEROGLYPH O026 ++ /xf0/x93/x89/xb9 EGYPTIAN HIEROGLYPH O027 ++ /xf0/x93/x89/xba EGYPTIAN HIEROGLYPH O028 ++ /xf0/x93/x89/xbb EGYPTIAN HIEROGLYPH O029 ++ /xf0/x93/x89/xbc EGYPTIAN HIEROGLYPH O029A ++ /xf0/x93/x89/xbd EGYPTIAN HIEROGLYPH O030 ++ /xf0/x93/x89/xbe EGYPTIAN HIEROGLYPH O030A ++ /xf0/x93/x89/xbf EGYPTIAN HIEROGLYPH O031 ++ /xf0/x93/x8a/x80 EGYPTIAN HIEROGLYPH O032 ++ /xf0/x93/x8a/x81 EGYPTIAN HIEROGLYPH O033 ++ /xf0/x93/x8a/x82 EGYPTIAN HIEROGLYPH O033A ++ /xf0/x93/x8a/x83 EGYPTIAN HIEROGLYPH O034 ++ /xf0/x93/x8a/x84 EGYPTIAN HIEROGLYPH O035 ++ /xf0/x93/x8a/x85 EGYPTIAN HIEROGLYPH O036 ++ /xf0/x93/x8a/x86 EGYPTIAN HIEROGLYPH O036A ++ /xf0/x93/x8a/x87 EGYPTIAN HIEROGLYPH O036B ++ /xf0/x93/x8a/x88 EGYPTIAN HIEROGLYPH O036C ++ /xf0/x93/x8a/x89 EGYPTIAN HIEROGLYPH O036D ++ /xf0/x93/x8a/x8a EGYPTIAN HIEROGLYPH O037 ++ /xf0/x93/x8a/x8b EGYPTIAN HIEROGLYPH O038 ++ /xf0/x93/x8a/x8c EGYPTIAN HIEROGLYPH O039 ++ /xf0/x93/x8a/x8d EGYPTIAN HIEROGLYPH O040 ++ /xf0/x93/x8a/x8e EGYPTIAN HIEROGLYPH O041 ++ /xf0/x93/x8a/x8f EGYPTIAN HIEROGLYPH O042 ++ /xf0/x93/x8a/x90 EGYPTIAN HIEROGLYPH O043 ++ /xf0/x93/x8a/x91 EGYPTIAN HIEROGLYPH O044 ++ /xf0/x93/x8a/x92 EGYPTIAN HIEROGLYPH O045 ++ /xf0/x93/x8a/x93 EGYPTIAN HIEROGLYPH O046 ++ /xf0/x93/x8a/x94 EGYPTIAN HIEROGLYPH O047 ++ /xf0/x93/x8a/x95 EGYPTIAN HIEROGLYPH O048 ++ /xf0/x93/x8a/x96 EGYPTIAN HIEROGLYPH O049 ++ /xf0/x93/x8a/x97 EGYPTIAN HIEROGLYPH O050 ++ /xf0/x93/x8a/x98 EGYPTIAN HIEROGLYPH O050A ++ /xf0/x93/x8a/x99 EGYPTIAN HIEROGLYPH O050B ++ /xf0/x93/x8a/x9a EGYPTIAN HIEROGLYPH O051 ++ /xf0/x93/x8a/x9b EGYPTIAN HIEROGLYPH P001 ++ /xf0/x93/x8a/x9c EGYPTIAN HIEROGLYPH P001A ++ /xf0/x93/x8a/x9d EGYPTIAN HIEROGLYPH P002 ++ /xf0/x93/x8a/x9e EGYPTIAN HIEROGLYPH P003 ++ /xf0/x93/x8a/x9f EGYPTIAN HIEROGLYPH P003A ++ /xf0/x93/x8a/xa0 EGYPTIAN HIEROGLYPH P004 ++ /xf0/x93/x8a/xa1 EGYPTIAN HIEROGLYPH P005 ++ /xf0/x93/x8a/xa2 EGYPTIAN HIEROGLYPH P006 ++ /xf0/x93/x8a/xa3 EGYPTIAN HIEROGLYPH P007 ++ /xf0/x93/x8a/xa4 EGYPTIAN HIEROGLYPH P008 ++ /xf0/x93/x8a/xa5 EGYPTIAN HIEROGLYPH P009 ++ /xf0/x93/x8a/xa6 EGYPTIAN HIEROGLYPH P010 ++ /xf0/x93/x8a/xa7 EGYPTIAN HIEROGLYPH P011 ++ /xf0/x93/x8a/xa8 EGYPTIAN HIEROGLYPH Q001 ++ /xf0/x93/x8a/xa9 EGYPTIAN HIEROGLYPH Q002 ++ /xf0/x93/x8a/xaa EGYPTIAN HIEROGLYPH Q003 ++ /xf0/x93/x8a/xab EGYPTIAN HIEROGLYPH Q004 ++ /xf0/x93/x8a/xac EGYPTIAN HIEROGLYPH Q005 ++ /xf0/x93/x8a/xad EGYPTIAN HIEROGLYPH Q006 ++ /xf0/x93/x8a/xae EGYPTIAN HIEROGLYPH Q007 ++ /xf0/x93/x8a/xaf EGYPTIAN HIEROGLYPH R001 ++ /xf0/x93/x8a/xb0 EGYPTIAN HIEROGLYPH R002 ++ /xf0/x93/x8a/xb1 EGYPTIAN HIEROGLYPH R002A ++ /xf0/x93/x8a/xb2 EGYPTIAN HIEROGLYPH R003 ++ /xf0/x93/x8a/xb3 EGYPTIAN HIEROGLYPH R003A ++ /xf0/x93/x8a/xb4 EGYPTIAN HIEROGLYPH R003B ++ /xf0/x93/x8a/xb5 EGYPTIAN HIEROGLYPH R004 ++ /xf0/x93/x8a/xb6 EGYPTIAN HIEROGLYPH R005 ++ /xf0/x93/x8a/xb7 EGYPTIAN HIEROGLYPH R006 ++ /xf0/x93/x8a/xb8 EGYPTIAN HIEROGLYPH R007 ++ /xf0/x93/x8a/xb9 EGYPTIAN HIEROGLYPH R008 ++ /xf0/x93/x8a/xba EGYPTIAN HIEROGLYPH R009 ++ /xf0/x93/x8a/xbb EGYPTIAN HIEROGLYPH R010 ++ /xf0/x93/x8a/xbc EGYPTIAN HIEROGLYPH R010A ++ /xf0/x93/x8a/xbd EGYPTIAN HIEROGLYPH R011 ++ /xf0/x93/x8a/xbe EGYPTIAN HIEROGLYPH R012 ++ /xf0/x93/x8a/xbf EGYPTIAN HIEROGLYPH R013 ++ /xf0/x93/x8b/x80 EGYPTIAN HIEROGLYPH R014 ++ /xf0/x93/x8b/x81 EGYPTIAN HIEROGLYPH R015 ++ /xf0/x93/x8b/x82 EGYPTIAN HIEROGLYPH R016 ++ /xf0/x93/x8b/x83 EGYPTIAN HIEROGLYPH R016A ++ /xf0/x93/x8b/x84 EGYPTIAN HIEROGLYPH R017 ++ /xf0/x93/x8b/x85 EGYPTIAN HIEROGLYPH R018 ++ /xf0/x93/x8b/x86 EGYPTIAN HIEROGLYPH R019 ++ /xf0/x93/x8b/x87 EGYPTIAN HIEROGLYPH R020 ++ /xf0/x93/x8b/x88 EGYPTIAN HIEROGLYPH R021 ++ /xf0/x93/x8b/x89 EGYPTIAN HIEROGLYPH R022 ++ /xf0/x93/x8b/x8a EGYPTIAN HIEROGLYPH R023 ++ /xf0/x93/x8b/x8b EGYPTIAN HIEROGLYPH R024 ++ /xf0/x93/x8b/x8c EGYPTIAN HIEROGLYPH R025 ++ /xf0/x93/x8b/x8d EGYPTIAN HIEROGLYPH R026 ++ /xf0/x93/x8b/x8e EGYPTIAN HIEROGLYPH R027 ++ /xf0/x93/x8b/x8f EGYPTIAN HIEROGLYPH R028 ++ /xf0/x93/x8b/x90 EGYPTIAN HIEROGLYPH R029 ++ /xf0/x93/x8b/x91 EGYPTIAN HIEROGLYPH S001 ++ /xf0/x93/x8b/x92 EGYPTIAN HIEROGLYPH S002 ++ /xf0/x93/x8b/x93 EGYPTIAN HIEROGLYPH S002A ++ /xf0/x93/x8b/x94 EGYPTIAN HIEROGLYPH S003 ++ /xf0/x93/x8b/x95 EGYPTIAN HIEROGLYPH S004 ++ /xf0/x93/x8b/x96 EGYPTIAN HIEROGLYPH S005 ++ /xf0/x93/x8b/x97 EGYPTIAN HIEROGLYPH S006 ++ /xf0/x93/x8b/x98 EGYPTIAN HIEROGLYPH S006A ++ /xf0/x93/x8b/x99 EGYPTIAN HIEROGLYPH S007 ++ /xf0/x93/x8b/x9a EGYPTIAN HIEROGLYPH S008 ++ /xf0/x93/x8b/x9b EGYPTIAN HIEROGLYPH S009 ++ /xf0/x93/x8b/x9c EGYPTIAN HIEROGLYPH S010 ++ /xf0/x93/x8b/x9d EGYPTIAN HIEROGLYPH S011 ++ /xf0/x93/x8b/x9e EGYPTIAN HIEROGLYPH S012 ++ /xf0/x93/x8b/x9f EGYPTIAN HIEROGLYPH S013 ++ /xf0/x93/x8b/xa0 EGYPTIAN HIEROGLYPH S014 ++ /xf0/x93/x8b/xa1 EGYPTIAN HIEROGLYPH S014A ++ /xf0/x93/x8b/xa2 EGYPTIAN HIEROGLYPH S014B ++ /xf0/x93/x8b/xa3 EGYPTIAN HIEROGLYPH S015 ++ /xf0/x93/x8b/xa4 EGYPTIAN HIEROGLYPH S016 ++ /xf0/x93/x8b/xa5 EGYPTIAN HIEROGLYPH S017 ++ /xf0/x93/x8b/xa6 EGYPTIAN HIEROGLYPH S017A ++ /xf0/x93/x8b/xa7 EGYPTIAN HIEROGLYPH S018 ++ /xf0/x93/x8b/xa8 EGYPTIAN HIEROGLYPH S019 ++ /xf0/x93/x8b/xa9 EGYPTIAN HIEROGLYPH S020 ++ /xf0/x93/x8b/xaa EGYPTIAN HIEROGLYPH S021 ++ /xf0/x93/x8b/xab EGYPTIAN HIEROGLYPH S022 ++ /xf0/x93/x8b/xac EGYPTIAN HIEROGLYPH S023 ++ /xf0/x93/x8b/xad EGYPTIAN HIEROGLYPH S024 ++ /xf0/x93/x8b/xae EGYPTIAN HIEROGLYPH S025 ++ /xf0/x93/x8b/xaf EGYPTIAN HIEROGLYPH S026 ++ /xf0/x93/x8b/xb0 EGYPTIAN HIEROGLYPH S026A ++ /xf0/x93/x8b/xb1 EGYPTIAN HIEROGLYPH S026B ++ /xf0/x93/x8b/xb2 EGYPTIAN HIEROGLYPH S027 ++ /xf0/x93/x8b/xb3 EGYPTIAN HIEROGLYPH S028 ++ /xf0/x93/x8b/xb4 EGYPTIAN HIEROGLYPH S029 ++ /xf0/x93/x8b/xb5 EGYPTIAN HIEROGLYPH S030 ++ /xf0/x93/x8b/xb6 EGYPTIAN HIEROGLYPH S031 ++ /xf0/x93/x8b/xb7 EGYPTIAN HIEROGLYPH S032 ++ /xf0/x93/x8b/xb8 EGYPTIAN HIEROGLYPH S033 ++ /xf0/x93/x8b/xb9 EGYPTIAN HIEROGLYPH S034 ++ /xf0/x93/x8b/xba EGYPTIAN HIEROGLYPH S035 ++ /xf0/x93/x8b/xbb EGYPTIAN HIEROGLYPH S035A ++ /xf0/x93/x8b/xbc EGYPTIAN HIEROGLYPH S036 ++ /xf0/x93/x8b/xbd EGYPTIAN HIEROGLYPH S037 ++ /xf0/x93/x8b/xbe EGYPTIAN HIEROGLYPH S038 ++ /xf0/x93/x8b/xbf EGYPTIAN HIEROGLYPH S039 ++ /xf0/x93/x8c/x80 EGYPTIAN HIEROGLYPH S040 ++ /xf0/x93/x8c/x81 EGYPTIAN HIEROGLYPH S041 ++ /xf0/x93/x8c/x82 EGYPTIAN HIEROGLYPH S042 ++ /xf0/x93/x8c/x83 EGYPTIAN HIEROGLYPH S043 ++ /xf0/x93/x8c/x84 EGYPTIAN HIEROGLYPH S044 ++ /xf0/x93/x8c/x85 EGYPTIAN HIEROGLYPH S045 ++ /xf0/x93/x8c/x86 EGYPTIAN HIEROGLYPH S046 ++ /xf0/x93/x8c/x87 EGYPTIAN HIEROGLYPH T001 ++ /xf0/x93/x8c/x88 EGYPTIAN HIEROGLYPH T002 ++ /xf0/x93/x8c/x89 EGYPTIAN HIEROGLYPH T003 ++ /xf0/x93/x8c/x8a EGYPTIAN HIEROGLYPH T003A ++ /xf0/x93/x8c/x8b EGYPTIAN HIEROGLYPH T004 ++ /xf0/x93/x8c/x8c EGYPTIAN HIEROGLYPH T005 ++ /xf0/x93/x8c/x8d EGYPTIAN HIEROGLYPH T006 ++ /xf0/x93/x8c/x8e EGYPTIAN HIEROGLYPH T007 ++ /xf0/x93/x8c/x8f EGYPTIAN HIEROGLYPH T007A ++ /xf0/x93/x8c/x90 EGYPTIAN HIEROGLYPH T008 ++ /xf0/x93/x8c/x91 EGYPTIAN HIEROGLYPH T008A ++ /xf0/x93/x8c/x92 EGYPTIAN HIEROGLYPH T009 ++ /xf0/x93/x8c/x93 EGYPTIAN HIEROGLYPH T009A ++ /xf0/x93/x8c/x94 EGYPTIAN HIEROGLYPH T010 ++ /xf0/x93/x8c/x95 EGYPTIAN HIEROGLYPH T011 ++ /xf0/x93/x8c/x96 EGYPTIAN HIEROGLYPH T011A ++ /xf0/x93/x8c/x97 EGYPTIAN HIEROGLYPH T012 ++ /xf0/x93/x8c/x98 EGYPTIAN HIEROGLYPH T013 ++ /xf0/x93/x8c/x99 EGYPTIAN HIEROGLYPH T014 ++ /xf0/x93/x8c/x9a EGYPTIAN HIEROGLYPH T015 ++ /xf0/x93/x8c/x9b EGYPTIAN HIEROGLYPH T016 ++ /xf0/x93/x8c/x9c EGYPTIAN HIEROGLYPH T016A ++ /xf0/x93/x8c/x9d EGYPTIAN HIEROGLYPH T017 ++ /xf0/x93/x8c/x9e EGYPTIAN HIEROGLYPH T018 ++ /xf0/x93/x8c/x9f EGYPTIAN HIEROGLYPH T019 ++ /xf0/x93/x8c/xa0 EGYPTIAN HIEROGLYPH T020 ++ /xf0/x93/x8c/xa1 EGYPTIAN HIEROGLYPH T021 ++ /xf0/x93/x8c/xa2 EGYPTIAN HIEROGLYPH T022 ++ /xf0/x93/x8c/xa3 EGYPTIAN HIEROGLYPH T023 ++ /xf0/x93/x8c/xa4 EGYPTIAN HIEROGLYPH T024 ++ /xf0/x93/x8c/xa5 EGYPTIAN HIEROGLYPH T025 ++ /xf0/x93/x8c/xa6 EGYPTIAN HIEROGLYPH T026 ++ /xf0/x93/x8c/xa7 EGYPTIAN HIEROGLYPH T027 ++ /xf0/x93/x8c/xa8 EGYPTIAN HIEROGLYPH T028 ++ /xf0/x93/x8c/xa9 EGYPTIAN HIEROGLYPH T029 ++ /xf0/x93/x8c/xaa EGYPTIAN HIEROGLYPH T030 ++ /xf0/x93/x8c/xab EGYPTIAN HIEROGLYPH T031 ++ /xf0/x93/x8c/xac EGYPTIAN HIEROGLYPH T032 ++ /xf0/x93/x8c/xad EGYPTIAN HIEROGLYPH T032A ++ /xf0/x93/x8c/xae EGYPTIAN HIEROGLYPH T033 ++ /xf0/x93/x8c/xaf EGYPTIAN HIEROGLYPH T033A ++ /xf0/x93/x8c/xb0 EGYPTIAN HIEROGLYPH T034 ++ /xf0/x93/x8c/xb1 EGYPTIAN HIEROGLYPH T035 ++ /xf0/x93/x8c/xb2 EGYPTIAN HIEROGLYPH T036 ++ /xf0/x93/x8c/xb3 EGYPTIAN HIEROGLYPH U001 ++ /xf0/x93/x8c/xb4 EGYPTIAN HIEROGLYPH U002 ++ /xf0/x93/x8c/xb5 EGYPTIAN HIEROGLYPH U003 ++ /xf0/x93/x8c/xb6 EGYPTIAN HIEROGLYPH U004 ++ /xf0/x93/x8c/xb7 EGYPTIAN HIEROGLYPH U005 ++ /xf0/x93/x8c/xb8 EGYPTIAN HIEROGLYPH U006 ++ /xf0/x93/x8c/xb9 EGYPTIAN HIEROGLYPH U006A ++ /xf0/x93/x8c/xba EGYPTIAN HIEROGLYPH U006B ++ /xf0/x93/x8c/xbb EGYPTIAN HIEROGLYPH U007 ++ /xf0/x93/x8c/xbc EGYPTIAN HIEROGLYPH U008 ++ /xf0/x93/x8c/xbd EGYPTIAN HIEROGLYPH U009 ++ /xf0/x93/x8c/xbe EGYPTIAN HIEROGLYPH U010 ++ /xf0/x93/x8c/xbf EGYPTIAN HIEROGLYPH U011 ++ /xf0/x93/x8d/x80 EGYPTIAN HIEROGLYPH U012 ++ /xf0/x93/x8d/x81 EGYPTIAN HIEROGLYPH U013 ++ /xf0/x93/x8d/x82 EGYPTIAN HIEROGLYPH U014 ++ /xf0/x93/x8d/x83 EGYPTIAN HIEROGLYPH U015 ++ /xf0/x93/x8d/x84 EGYPTIAN HIEROGLYPH U016 ++ /xf0/x93/x8d/x85 EGYPTIAN HIEROGLYPH U017 ++ /xf0/x93/x8d/x86 EGYPTIAN HIEROGLYPH U018 ++ /xf0/x93/x8d/x87 EGYPTIAN HIEROGLYPH U019 ++ /xf0/x93/x8d/x88 EGYPTIAN HIEROGLYPH U020 ++ /xf0/x93/x8d/x89 EGYPTIAN HIEROGLYPH U021 ++ /xf0/x93/x8d/x8a EGYPTIAN HIEROGLYPH U022 ++ /xf0/x93/x8d/x8b EGYPTIAN HIEROGLYPH U023 ++ /xf0/x93/x8d/x8c EGYPTIAN HIEROGLYPH U023A ++ /xf0/x93/x8d/x8d EGYPTIAN HIEROGLYPH U024 ++ /xf0/x93/x8d/x8e EGYPTIAN HIEROGLYPH U025 ++ /xf0/x93/x8d/x8f EGYPTIAN HIEROGLYPH U026 ++ /xf0/x93/x8d/x90 EGYPTIAN HIEROGLYPH U027 ++ /xf0/x93/x8d/x91 EGYPTIAN HIEROGLYPH U028 ++ /xf0/x93/x8d/x92 EGYPTIAN HIEROGLYPH U029 ++ /xf0/x93/x8d/x93 EGYPTIAN HIEROGLYPH U029A ++ /xf0/x93/x8d/x94 EGYPTIAN HIEROGLYPH U030 ++ /xf0/x93/x8d/x95 EGYPTIAN HIEROGLYPH U031 ++ /xf0/x93/x8d/x96 EGYPTIAN HIEROGLYPH U032 ++ /xf0/x93/x8d/x97 EGYPTIAN HIEROGLYPH U032A ++ /xf0/x93/x8d/x98 EGYPTIAN HIEROGLYPH U033 ++ /xf0/x93/x8d/x99 EGYPTIAN HIEROGLYPH U034 ++ /xf0/x93/x8d/x9a EGYPTIAN HIEROGLYPH U035 ++ /xf0/x93/x8d/x9b EGYPTIAN HIEROGLYPH U036 ++ /xf0/x93/x8d/x9c EGYPTIAN HIEROGLYPH U037 ++ /xf0/x93/x8d/x9d EGYPTIAN HIEROGLYPH U038 ++ /xf0/x93/x8d/x9e EGYPTIAN HIEROGLYPH U039 ++ /xf0/x93/x8d/x9f EGYPTIAN HIEROGLYPH U040 ++ /xf0/x93/x8d/xa0 EGYPTIAN HIEROGLYPH U041 ++ /xf0/x93/x8d/xa1 EGYPTIAN HIEROGLYPH U042 ++ /xf0/x93/x8d/xa2 EGYPTIAN HIEROGLYPH V001 ++ /xf0/x93/x8d/xa3 EGYPTIAN HIEROGLYPH V001A ++ /xf0/x93/x8d/xa4 EGYPTIAN HIEROGLYPH V001B ++ /xf0/x93/x8d/xa5 EGYPTIAN HIEROGLYPH V001C ++ /xf0/x93/x8d/xa6 EGYPTIAN HIEROGLYPH V001D ++ /xf0/x93/x8d/xa7 EGYPTIAN HIEROGLYPH V001E ++ /xf0/x93/x8d/xa8 EGYPTIAN HIEROGLYPH V001F ++ /xf0/x93/x8d/xa9 EGYPTIAN HIEROGLYPH V001G ++ /xf0/x93/x8d/xaa EGYPTIAN HIEROGLYPH V001H ++ /xf0/x93/x8d/xab EGYPTIAN HIEROGLYPH V001I ++ /xf0/x93/x8d/xac EGYPTIAN HIEROGLYPH V002 ++ /xf0/x93/x8d/xad EGYPTIAN HIEROGLYPH V002A ++ /xf0/x93/x8d/xae EGYPTIAN HIEROGLYPH V003 ++ /xf0/x93/x8d/xaf EGYPTIAN HIEROGLYPH V004 ++ /xf0/x93/x8d/xb0 EGYPTIAN HIEROGLYPH V005 ++ /xf0/x93/x8d/xb1 EGYPTIAN HIEROGLYPH V006 ++ /xf0/x93/x8d/xb2 EGYPTIAN HIEROGLYPH V007 ++ /xf0/x93/x8d/xb3 EGYPTIAN HIEROGLYPH V007A ++ /xf0/x93/x8d/xb4 EGYPTIAN HIEROGLYPH V007B ++ /xf0/x93/x8d/xb5 EGYPTIAN HIEROGLYPH V008 ++ /xf0/x93/x8d/xb6 EGYPTIAN HIEROGLYPH V009 ++ /xf0/x93/x8d/xb7 EGYPTIAN HIEROGLYPH V010 ++ /xf0/x93/x8d/xb8 EGYPTIAN HIEROGLYPH V011 ++ /xf0/x93/x8d/xb9 EGYPTIAN HIEROGLYPH V011A ++ /xf0/x93/x8d/xba EGYPTIAN HIEROGLYPH V011B ++ /xf0/x93/x8d/xbb EGYPTIAN HIEROGLYPH V011C ++ /xf0/x93/x8d/xbc EGYPTIAN HIEROGLYPH V012 ++ /xf0/x93/x8d/xbd EGYPTIAN HIEROGLYPH V012A ++ /xf0/x93/x8d/xbe EGYPTIAN HIEROGLYPH V012B ++ /xf0/x93/x8d/xbf EGYPTIAN HIEROGLYPH V013 ++ /xf0/x93/x8e/x80 EGYPTIAN HIEROGLYPH V014 ++ /xf0/x93/x8e/x81 EGYPTIAN HIEROGLYPH V015 ++ /xf0/x93/x8e/x82 EGYPTIAN HIEROGLYPH V016 ++ /xf0/x93/x8e/x83 EGYPTIAN HIEROGLYPH V017 ++ /xf0/x93/x8e/x84 EGYPTIAN HIEROGLYPH V018 ++ /xf0/x93/x8e/x85 EGYPTIAN HIEROGLYPH V019 ++ /xf0/x93/x8e/x86 EGYPTIAN HIEROGLYPH V020 ++ /xf0/x93/x8e/x87 EGYPTIAN HIEROGLYPH V020A ++ /xf0/x93/x8e/x88 EGYPTIAN HIEROGLYPH V020B ++ /xf0/x93/x8e/x89 EGYPTIAN HIEROGLYPH V020C ++ /xf0/x93/x8e/x8a EGYPTIAN HIEROGLYPH V020D ++ /xf0/x93/x8e/x8b EGYPTIAN HIEROGLYPH V020E ++ /xf0/x93/x8e/x8c EGYPTIAN HIEROGLYPH V020F ++ /xf0/x93/x8e/x8d EGYPTIAN HIEROGLYPH V020G ++ /xf0/x93/x8e/x8e EGYPTIAN HIEROGLYPH V020H ++ /xf0/x93/x8e/x8f EGYPTIAN HIEROGLYPH V020I ++ /xf0/x93/x8e/x90 EGYPTIAN HIEROGLYPH V020J ++ /xf0/x93/x8e/x91 EGYPTIAN HIEROGLYPH V020K ++ /xf0/x93/x8e/x92 EGYPTIAN HIEROGLYPH V020L ++ /xf0/x93/x8e/x93 EGYPTIAN HIEROGLYPH V021 ++ /xf0/x93/x8e/x94 EGYPTIAN HIEROGLYPH V022 ++ /xf0/x93/x8e/x95 EGYPTIAN HIEROGLYPH V023 ++ /xf0/x93/x8e/x96 EGYPTIAN HIEROGLYPH V023A ++ /xf0/x93/x8e/x97 EGYPTIAN HIEROGLYPH V024 ++ /xf0/x93/x8e/x98 EGYPTIAN HIEROGLYPH V025 ++ /xf0/x93/x8e/x99 EGYPTIAN HIEROGLYPH V026 ++ /xf0/x93/x8e/x9a EGYPTIAN HIEROGLYPH V027 ++ /xf0/x93/x8e/x9b EGYPTIAN HIEROGLYPH V028 ++ /xf0/x93/x8e/x9c EGYPTIAN HIEROGLYPH V028A ++ /xf0/x93/x8e/x9d EGYPTIAN HIEROGLYPH V029 ++ /xf0/x93/x8e/x9e EGYPTIAN HIEROGLYPH V029A ++ /xf0/x93/x8e/x9f EGYPTIAN HIEROGLYPH V030 ++ /xf0/x93/x8e/xa0 EGYPTIAN HIEROGLYPH V030A ++ /xf0/x93/x8e/xa1 EGYPTIAN HIEROGLYPH V031 ++ /xf0/x93/x8e/xa2 EGYPTIAN HIEROGLYPH V031A ++ /xf0/x93/x8e/xa3 EGYPTIAN HIEROGLYPH V032 ++ /xf0/x93/x8e/xa4 EGYPTIAN HIEROGLYPH V033 ++ /xf0/x93/x8e/xa5 EGYPTIAN HIEROGLYPH V033A ++ /xf0/x93/x8e/xa6 EGYPTIAN HIEROGLYPH V034 ++ /xf0/x93/x8e/xa7 EGYPTIAN HIEROGLYPH V035 ++ /xf0/x93/x8e/xa8 EGYPTIAN HIEROGLYPH V036 ++ /xf0/x93/x8e/xa9 EGYPTIAN HIEROGLYPH V037 ++ /xf0/x93/x8e/xaa EGYPTIAN HIEROGLYPH V037A ++ /xf0/x93/x8e/xab EGYPTIAN HIEROGLYPH V038 ++ /xf0/x93/x8e/xac EGYPTIAN HIEROGLYPH V039 ++ /xf0/x93/x8e/xad EGYPTIAN HIEROGLYPH V040 ++ /xf0/x93/x8e/xae EGYPTIAN HIEROGLYPH V040A ++ /xf0/x93/x8e/xaf EGYPTIAN HIEROGLYPH W001 ++ /xf0/x93/x8e/xb0 EGYPTIAN HIEROGLYPH W002 ++ /xf0/x93/x8e/xb1 EGYPTIAN HIEROGLYPH W003 ++ /xf0/x93/x8e/xb2 EGYPTIAN HIEROGLYPH W003A ++ /xf0/x93/x8e/xb3 EGYPTIAN HIEROGLYPH W004 ++ /xf0/x93/x8e/xb4 EGYPTIAN HIEROGLYPH W005 ++ /xf0/x93/x8e/xb5 EGYPTIAN HIEROGLYPH W006 ++ /xf0/x93/x8e/xb6 EGYPTIAN HIEROGLYPH W007 ++ /xf0/x93/x8e/xb7 EGYPTIAN HIEROGLYPH W008 ++ /xf0/x93/x8e/xb8 EGYPTIAN HIEROGLYPH W009 ++ /xf0/x93/x8e/xb9 EGYPTIAN HIEROGLYPH W009A ++ /xf0/x93/x8e/xba EGYPTIAN HIEROGLYPH W010 ++ /xf0/x93/x8e/xbb EGYPTIAN HIEROGLYPH W010A ++ /xf0/x93/x8e/xbc EGYPTIAN HIEROGLYPH W011 ++ /xf0/x93/x8e/xbd EGYPTIAN HIEROGLYPH W012 ++ /xf0/x93/x8e/xbe EGYPTIAN HIEROGLYPH W013 ++ /xf0/x93/x8e/xbf EGYPTIAN HIEROGLYPH W014 ++ /xf0/x93/x8f/x80 EGYPTIAN HIEROGLYPH W014A ++ /xf0/x93/x8f/x81 EGYPTIAN HIEROGLYPH W015 ++ /xf0/x93/x8f/x82 EGYPTIAN HIEROGLYPH W016 ++ /xf0/x93/x8f/x83 EGYPTIAN HIEROGLYPH W017 ++ /xf0/x93/x8f/x84 EGYPTIAN HIEROGLYPH W017A ++ /xf0/x93/x8f/x85 EGYPTIAN HIEROGLYPH W018 ++ /xf0/x93/x8f/x86 EGYPTIAN HIEROGLYPH W018A ++ /xf0/x93/x8f/x87 EGYPTIAN HIEROGLYPH W019 ++ /xf0/x93/x8f/x88 EGYPTIAN HIEROGLYPH W020 ++ /xf0/x93/x8f/x89 EGYPTIAN HIEROGLYPH W021 ++ /xf0/x93/x8f/x8a EGYPTIAN HIEROGLYPH W022 ++ /xf0/x93/x8f/x8b EGYPTIAN HIEROGLYPH W023 ++ /xf0/x93/x8f/x8c EGYPTIAN HIEROGLYPH W024 ++ /xf0/x93/x8f/x8d EGYPTIAN HIEROGLYPH W024A ++ /xf0/x93/x8f/x8e EGYPTIAN HIEROGLYPH W025 ++ /xf0/x93/x8f/x8f EGYPTIAN HIEROGLYPH X001 ++ /xf0/x93/x8f/x90 EGYPTIAN HIEROGLYPH X002 ++ /xf0/x93/x8f/x91 EGYPTIAN HIEROGLYPH X003 ++ /xf0/x93/x8f/x92 EGYPTIAN HIEROGLYPH X004 ++ /xf0/x93/x8f/x93 EGYPTIAN HIEROGLYPH X004A ++ /xf0/x93/x8f/x94 EGYPTIAN HIEROGLYPH X004B ++ /xf0/x93/x8f/x95 EGYPTIAN HIEROGLYPH X005 ++ /xf0/x93/x8f/x96 EGYPTIAN HIEROGLYPH X006 ++ /xf0/x93/x8f/x97 EGYPTIAN HIEROGLYPH X006A ++ /xf0/x93/x8f/x98 EGYPTIAN HIEROGLYPH X007 ++ /xf0/x93/x8f/x99 EGYPTIAN HIEROGLYPH X008 ++ /xf0/x93/x8f/x9a EGYPTIAN HIEROGLYPH X008A ++ /xf0/x93/x8f/x9b EGYPTIAN HIEROGLYPH Y001 ++ /xf0/x93/x8f/x9c EGYPTIAN HIEROGLYPH Y001A ++ /xf0/x93/x8f/x9d EGYPTIAN HIEROGLYPH Y002 ++ /xf0/x93/x8f/x9e EGYPTIAN HIEROGLYPH Y003 ++ /xf0/x93/x8f/x9f EGYPTIAN HIEROGLYPH Y004 ++ /xf0/x93/x8f/xa0 EGYPTIAN HIEROGLYPH Y005 ++ /xf0/x93/x8f/xa1 EGYPTIAN HIEROGLYPH Y006 ++ /xf0/x93/x8f/xa2 EGYPTIAN HIEROGLYPH Y007 ++ /xf0/x93/x8f/xa3 EGYPTIAN HIEROGLYPH Y008 ++ /xf0/x93/x8f/xa4 EGYPTIAN HIEROGLYPH Z001 ++ /xf0/x93/x8f/xa5 EGYPTIAN HIEROGLYPH Z002 ++ /xf0/x93/x8f/xa6 EGYPTIAN HIEROGLYPH Z002A ++ /xf0/x93/x8f/xa7 EGYPTIAN HIEROGLYPH Z002B ++ /xf0/x93/x8f/xa8 EGYPTIAN HIEROGLYPH Z002C ++ /xf0/x93/x8f/xa9 EGYPTIAN HIEROGLYPH Z002D ++ /xf0/x93/x8f/xaa EGYPTIAN HIEROGLYPH Z003 ++ /xf0/x93/x8f/xab EGYPTIAN HIEROGLYPH Z003A ++ /xf0/x93/x8f/xac EGYPTIAN HIEROGLYPH Z003B ++ /xf0/x93/x8f/xad EGYPTIAN HIEROGLYPH Z004 ++ /xf0/x93/x8f/xae EGYPTIAN HIEROGLYPH Z004A ++ /xf0/x93/x8f/xaf EGYPTIAN HIEROGLYPH Z005 ++ /xf0/x93/x8f/xb0 EGYPTIAN HIEROGLYPH Z005A ++ /xf0/x93/x8f/xb1 EGYPTIAN HIEROGLYPH Z006 ++ /xf0/x93/x8f/xb2 EGYPTIAN HIEROGLYPH Z007 ++ /xf0/x93/x8f/xb3 EGYPTIAN HIEROGLYPH Z008 ++ /xf0/x93/x8f/xb4 EGYPTIAN HIEROGLYPH Z009 ++ /xf0/x93/x8f/xb5 EGYPTIAN HIEROGLYPH Z010 ++ /xf0/x93/x8f/xb6 EGYPTIAN HIEROGLYPH Z011 ++ /xf0/x93/x8f/xb7 EGYPTIAN HIEROGLYPH Z012 ++ /xf0/x93/x8f/xb8 EGYPTIAN HIEROGLYPH Z013 ++ /xf0/x93/x8f/xb9 EGYPTIAN HIEROGLYPH Z014 ++ /xf0/x93/x8f/xba EGYPTIAN HIEROGLYPH Z015 ++ /xf0/x93/x8f/xbb EGYPTIAN HIEROGLYPH Z015A ++ /xf0/x93/x8f/xbc EGYPTIAN HIEROGLYPH Z015B ++ /xf0/x93/x8f/xbd EGYPTIAN HIEROGLYPH Z015C ++ /xf0/x93/x8f/xbe EGYPTIAN HIEROGLYPH Z015D ++ /xf0/x93/x8f/xbf EGYPTIAN HIEROGLYPH Z015E ++ /xf0/x93/x90/x80 EGYPTIAN HIEROGLYPH Z015F ++ /xf0/x93/x90/x81 EGYPTIAN HIEROGLYPH Z015G ++ /xf0/x93/x90/x82 EGYPTIAN HIEROGLYPH Z015H ++ /xf0/x93/x90/x83 EGYPTIAN HIEROGLYPH Z015I ++ /xf0/x93/x90/x84 EGYPTIAN HIEROGLYPH Z016 ++ /xf0/x93/x90/x85 EGYPTIAN HIEROGLYPH Z016A ++ /xf0/x93/x90/x86 EGYPTIAN HIEROGLYPH Z016B ++ /xf0/x93/x90/x87 EGYPTIAN HIEROGLYPH Z016C ++ /xf0/x93/x90/x88 EGYPTIAN HIEROGLYPH Z016D ++ /xf0/x93/x90/x89 EGYPTIAN HIEROGLYPH Z016E ++ /xf0/x93/x90/x8a EGYPTIAN HIEROGLYPH Z016F ++ /xf0/x93/x90/x8b EGYPTIAN HIEROGLYPH Z016G ++ /xf0/x93/x90/x8c EGYPTIAN HIEROGLYPH Z016H ++ /xf0/x93/x90/x8d EGYPTIAN HIEROGLYPH AA001 ++ /xf0/x93/x90/x8e EGYPTIAN HIEROGLYPH AA002 ++ /xf0/x93/x90/x8f EGYPTIAN HIEROGLYPH AA003 ++ /xf0/x93/x90/x90 EGYPTIAN HIEROGLYPH AA004 ++ /xf0/x93/x90/x91 EGYPTIAN HIEROGLYPH AA005 ++ /xf0/x93/x90/x92 EGYPTIAN HIEROGLYPH AA006 ++ /xf0/x93/x90/x93 EGYPTIAN HIEROGLYPH AA007 ++ /xf0/x93/x90/x94 EGYPTIAN HIEROGLYPH AA007A ++ /xf0/x93/x90/x95 EGYPTIAN HIEROGLYPH AA007B ++ /xf0/x93/x90/x96 EGYPTIAN HIEROGLYPH AA008 ++ /xf0/x93/x90/x97 EGYPTIAN HIEROGLYPH AA009 ++ /xf0/x93/x90/x98 EGYPTIAN HIEROGLYPH AA010 ++ /xf0/x93/x90/x99 EGYPTIAN HIEROGLYPH AA011 ++ /xf0/x93/x90/x9a EGYPTIAN HIEROGLYPH AA012 ++ /xf0/x93/x90/x9b EGYPTIAN HIEROGLYPH AA013 ++ /xf0/x93/x90/x9c EGYPTIAN HIEROGLYPH AA014 ++ /xf0/x93/x90/x9d EGYPTIAN HIEROGLYPH AA015 ++ /xf0/x93/x90/x9e EGYPTIAN HIEROGLYPH AA016 ++ /xf0/x93/x90/x9f EGYPTIAN HIEROGLYPH AA017 ++ /xf0/x93/x90/xa0 EGYPTIAN HIEROGLYPH AA018 ++ /xf0/x93/x90/xa1 EGYPTIAN HIEROGLYPH AA019 ++ /xf0/x93/x90/xa2 EGYPTIAN HIEROGLYPH AA020 ++ /xf0/x93/x90/xa3 EGYPTIAN HIEROGLYPH AA021 ++ /xf0/x93/x90/xa4 EGYPTIAN HIEROGLYPH AA022 ++ /xf0/x93/x90/xa5 EGYPTIAN HIEROGLYPH AA023 ++ /xf0/x93/x90/xa6 EGYPTIAN HIEROGLYPH AA024 ++ /xf0/x93/x90/xa7 EGYPTIAN HIEROGLYPH AA025 ++ /xf0/x93/x90/xa8 EGYPTIAN HIEROGLYPH AA026 ++ /xf0/x93/x90/xa9 EGYPTIAN HIEROGLYPH AA027 ++ /xf0/x93/x90/xaa EGYPTIAN HIEROGLYPH AA028 ++ /xf0/x93/x90/xab EGYPTIAN HIEROGLYPH AA029 ++ /xf0/x93/x90/xac EGYPTIAN HIEROGLYPH AA030 ++ /xf0/x93/x90/xad EGYPTIAN HIEROGLYPH AA031 ++ /xf0/x93/x90/xae EGYPTIAN HIEROGLYPH AA032 ++ /xf0/x96/xa0/x80 BAMUM LETTER PHASE-A NGKUE MFON ++ /xf0/x96/xa0/x81 BAMUM LETTER PHASE-A GBIEE FON ++ /xf0/x96/xa0/x82 BAMUM LETTER PHASE-A PON MFON PIPAEMGBIEE ++ /xf0/x96/xa0/x83 BAMUM LETTER PHASE-A PON MFON PIPAEMBA ++ /xf0/x96/xa0/x84 BAMUM LETTER PHASE-A NAA MFON ++ /xf0/x96/xa0/x85 BAMUM LETTER PHASE-A SHUENSHUET ++ /xf0/x96/xa0/x86 BAMUM LETTER PHASE-A TITA MFON ++ /xf0/x96/xa0/x87 BAMUM LETTER PHASE-A NZA MFON ++ /xf0/x96/xa0/x88 BAMUM LETTER PHASE-A SHINDA PA NJI ++ /xf0/x96/xa0/x89 BAMUM LETTER PHASE-A PON PA NJI PIPAEMGBIEE ++ /xf0/x96/xa0/x8a BAMUM LETTER PHASE-A PON PA NJI PIPAEMBA ++ /xf0/x96/xa0/x8b BAMUM LETTER PHASE-A MAEMBGBIEE ++ /xf0/x96/xa0/x8c BAMUM LETTER PHASE-A TU MAEMBA ++ /xf0/x96/xa0/x8d BAMUM LETTER PHASE-A NGANGU ++ /xf0/x96/xa0/x8e BAMUM LETTER PHASE-A MAEMVEUX ++ /xf0/x96/xa0/x8f BAMUM LETTER PHASE-A MANSUAE ++ /xf0/x96/xa0/x90 BAMUM LETTER PHASE-A MVEUAENGAM ++ /xf0/x96/xa0/x91 BAMUM LETTER PHASE-A SEUNYAM ++ /xf0/x96/xa0/x92 BAMUM LETTER PHASE-A NTOQPEN ++ /xf0/x96/xa0/x93 BAMUM LETTER PHASE-A KEUKEUTNDA ++ /xf0/x96/xa0/x94 BAMUM LETTER PHASE-A NKINDI ++ /xf0/x96/xa0/x95 BAMUM LETTER PHASE-A SUU ++ /xf0/x96/xa0/x96 BAMUM LETTER PHASE-A NGKUENZEUM ++ /xf0/x96/xa0/x97 BAMUM LETTER PHASE-A LAPAQ ++ /xf0/x96/xa0/x98 BAMUM LETTER PHASE-A LET KUT ++ /xf0/x96/xa0/x99 BAMUM LETTER PHASE-A NTAP MFAA ++ /xf0/x96/xa0/x9a BAMUM LETTER PHASE-A MAEKEUP ++ /xf0/x96/xa0/x9b BAMUM LETTER PHASE-A PASHAE ++ /xf0/x96/xa0/x9c BAMUM LETTER PHASE-A GHEUAERAE ++ /xf0/x96/xa0/x9d BAMUM LETTER PHASE-A PAMSHAE ++ /xf0/x96/xa0/x9e BAMUM LETTER PHASE-A MON NGGEUAET ++ /xf0/x96/xa0/x9f BAMUM LETTER PHASE-A NZUN MEUT ++ /xf0/x96/xa0/xa0 BAMUM LETTER PHASE-A U YUQ NAE ++ /xf0/x96/xa0/xa1 BAMUM LETTER PHASE-A GHEUAEGHEUAE ++ /xf0/x96/xa0/xa2 BAMUM LETTER PHASE-A NTAP NTAA ++ /xf0/x96/xa0/xa3 BAMUM LETTER PHASE-A SISA ++ /xf0/x96/xa0/xa4 BAMUM LETTER PHASE-A MGBASA ++ /xf0/x96/xa0/xa5 BAMUM LETTER PHASE-A MEUNJOMNDEUQ ++ /xf0/x96/xa0/xa6 BAMUM LETTER PHASE-A MOOMPUQ ++ /xf0/x96/xa0/xa7 BAMUM LETTER PHASE-A KAFA ++ /xf0/x96/xa0/xa8 BAMUM LETTER PHASE-A PA LEERAEWA ++ /xf0/x96/xa0/xa9 BAMUM LETTER PHASE-A NDA LEERAEWA ++ /xf0/x96/xa0/xaa BAMUM LETTER PHASE-A PET ++ /xf0/x96/xa0/xab BAMUM LETTER PHASE-A MAEMKPEN ++ /xf0/x96/xa0/xac BAMUM LETTER PHASE-A NIKA ++ /xf0/x96/xa0/xad BAMUM LETTER PHASE-A PUP ++ /xf0/x96/xa0/xae BAMUM LETTER PHASE-A TUAEP ++ /xf0/x96/xa0/xaf BAMUM LETTER PHASE-A LUAEP ++ /xf0/x96/xa0/xb0 BAMUM LETTER PHASE-A SONJAM ++ /xf0/x96/xa0/xb1 BAMUM LETTER PHASE-A TEUTEUWEN ++ /xf0/x96/xa0/xb2 BAMUM LETTER PHASE-A MAENYI ++ /xf0/x96/xa0/xb3 BAMUM LETTER PHASE-A KET ++ /xf0/x96/xa0/xb4 BAMUM LETTER PHASE-A NDAANGGEUAET ++ /xf0/x96/xa0/xb5 BAMUM LETTER PHASE-A KUOQ ++ /xf0/x96/xa0/xb6 BAMUM LETTER PHASE-A MOOMEUT ++ /xf0/x96/xa0/xb7 BAMUM LETTER PHASE-A SHUM ++ /xf0/x96/xa0/xb8 BAMUM LETTER PHASE-A LOMMAE ++ /xf0/x96/xa0/xb9 BAMUM LETTER PHASE-A FIRI ++ /xf0/x96/xa0/xba BAMUM LETTER PHASE-A ROM ++ /xf0/x96/xa0/xbb BAMUM LETTER PHASE-A KPOQ ++ /xf0/x96/xa0/xbc BAMUM LETTER PHASE-A SOQ ++ /xf0/x96/xa0/xbd BAMUM LETTER PHASE-A MAP PIEET ++ /xf0/x96/xa0/xbe BAMUM LETTER PHASE-A SHIRAE ++ /xf0/x96/xa0/xbf BAMUM LETTER PHASE-A NTAP ++ /xf0/x96/xa1/x80 BAMUM LETTER PHASE-A SHOQ NSHUT YUM ++ /xf0/x96/xa1/x81 BAMUM LETTER PHASE-A NYIT MONGKEUAEQ ++ /xf0/x96/xa1/x82 BAMUM LETTER PHASE-A PAARAE ++ /xf0/x96/xa1/x83 BAMUM LETTER PHASE-A NKAARAE ++ /xf0/x96/xa1/x84 BAMUM LETTER PHASE-A UNKNOWN ++ /xf0/x96/xa1/x85 BAMUM LETTER PHASE-A NGGEN ++ /xf0/x96/xa1/x86 BAMUM LETTER PHASE-A MAESI ++ /xf0/x96/xa1/x87 BAMUM LETTER PHASE-A NJAM ++ /xf0/x96/xa1/x88 BAMUM LETTER PHASE-A MBANYI ++ /xf0/x96/xa1/x89 BAMUM LETTER PHASE-A NYET ++ /xf0/x96/xa1/x8a BAMUM LETTER PHASE-A TEUAEN ++ /xf0/x96/xa1/x8b BAMUM LETTER PHASE-A SOT ++ /xf0/x96/xa1/x8c BAMUM LETTER PHASE-A PAAM ++ /xf0/x96/xa1/x8d BAMUM LETTER PHASE-A NSHIEE ++ /xf0/x96/xa1/x8e BAMUM LETTER PHASE-A MAEM ++ /xf0/x96/xa1/x8f BAMUM LETTER PHASE-A NYI ++ /xf0/x96/xa1/x90 BAMUM LETTER PHASE-A KAQ ++ /xf0/x96/xa1/x91 BAMUM LETTER PHASE-A NSHA ++ /xf0/x96/xa1/x92 BAMUM LETTER PHASE-A VEE ++ /xf0/x96/xa1/x93 BAMUM LETTER PHASE-A LU ++ /xf0/x96/xa1/x94 BAMUM LETTER PHASE-A NEN ++ /xf0/x96/xa1/x95 BAMUM LETTER PHASE-A NAQ ++ /xf0/x96/xa1/x96 BAMUM LETTER PHASE-A MBAQ ++ /xf0/x96/xa1/x97 BAMUM LETTER PHASE-B NSHUET ++ /xf0/x96/xa1/x98 BAMUM LETTER PHASE-B TU MAEMGBIEE ++ /xf0/x96/xa1/x99 BAMUM LETTER PHASE-B SIEE ++ /xf0/x96/xa1/x9a BAMUM LETTER PHASE-B SET TU ++ /xf0/x96/xa1/x9b BAMUM LETTER PHASE-B LOM NTEUM ++ /xf0/x96/xa1/x9c BAMUM LETTER PHASE-B MBA MAELEE ++ /xf0/x96/xa1/x9d BAMUM LETTER PHASE-B KIEEM ++ /xf0/x96/xa1/x9e BAMUM LETTER PHASE-B YEURAE ++ /xf0/x96/xa1/x9f BAMUM LETTER PHASE-B MBAARAE ++ /xf0/x96/xa1/xa0 BAMUM LETTER PHASE-B KAM ++ /xf0/x96/xa1/xa1 BAMUM LETTER PHASE-B PEESHI ++ /xf0/x96/xa1/xa2 BAMUM LETTER PHASE-B YAFU LEERAEWA ++ /xf0/x96/xa1/xa3 BAMUM LETTER PHASE-B LAM NSHUT NYAM ++ /xf0/x96/xa1/xa4 BAMUM LETTER PHASE-B NTIEE SHEUOQ ++ /xf0/x96/xa1/xa5 BAMUM LETTER PHASE-B NDU NJAA ++ /xf0/x96/xa1/xa6 BAMUM LETTER PHASE-B GHEUGHEUAEM ++ /xf0/x96/xa1/xa7 BAMUM LETTER PHASE-B PIT ++ /xf0/x96/xa1/xa8 BAMUM LETTER PHASE-B TU NSIEE ++ /xf0/x96/xa1/xa9 BAMUM LETTER PHASE-B SHET NJAQ ++ /xf0/x96/xa1/xaa BAMUM LETTER PHASE-B SHEUAEQTU ++ /xf0/x96/xa1/xab BAMUM LETTER PHASE-B MFON TEUAEQ ++ /xf0/x96/xa1/xac BAMUM LETTER PHASE-B MBIT MBAAKET ++ /xf0/x96/xa1/xad BAMUM LETTER PHASE-B NYI NTEUM ++ /xf0/x96/xa1/xae BAMUM LETTER PHASE-B KEUPUQ ++ /xf0/x96/xa1/xaf BAMUM LETTER PHASE-B GHEUGHEN ++ /xf0/x96/xa1/xb0 BAMUM LETTER PHASE-B KEUYEUX ++ /xf0/x96/xa1/xb1 BAMUM LETTER PHASE-B LAANAE ++ /xf0/x96/xa1/xb2 BAMUM LETTER PHASE-B PARUM ++ /xf0/x96/xa1/xb3 BAMUM LETTER PHASE-B VEUM ++ /xf0/x96/xa1/xb4 BAMUM LETTER PHASE-B NGKINDI MVOP ++ /xf0/x96/xa1/xb5 BAMUM LETTER PHASE-B NGGEU MBU ++ /xf0/x96/xa1/xb6 BAMUM LETTER PHASE-B WUAET ++ /xf0/x96/xa1/xb7 BAMUM LETTER PHASE-B SAKEUAE ++ /xf0/x96/xa1/xb8 BAMUM LETTER PHASE-B TAAM ++ /xf0/x96/xa1/xb9 BAMUM LETTER PHASE-B MEUQ ++ /xf0/x96/xa1/xba BAMUM LETTER PHASE-B NGGUOQ ++ /xf0/x96/xa1/xbb BAMUM LETTER PHASE-B NGGUOQ LARGE ++ /xf0/x96/xa1/xbc BAMUM LETTER PHASE-B MFIYAQ ++ /xf0/x96/xa1/xbd BAMUM LETTER PHASE-B SUE ++ /xf0/x96/xa1/xbe BAMUM LETTER PHASE-B MBEURI ++ /xf0/x96/xa1/xbf BAMUM LETTER PHASE-B MONTIEEN ++ /xf0/x96/xa2/x80 BAMUM LETTER PHASE-B NYAEMAE ++ /xf0/x96/xa2/x81 BAMUM LETTER PHASE-B PUNGAAM ++ /xf0/x96/xa2/x82 BAMUM LETTER PHASE-B MEUT NGGEET ++ /xf0/x96/xa2/x83 BAMUM LETTER PHASE-B FEUX ++ /xf0/x96/xa2/x84 BAMUM LETTER PHASE-B MBUOQ ++ /xf0/x96/xa2/x85 BAMUM LETTER PHASE-B FEE ++ /xf0/x96/xa2/x86 BAMUM LETTER PHASE-B KEUAEM ++ /xf0/x96/xa2/x87 BAMUM LETTER PHASE-B MA NJEUAENA ++ /xf0/x96/xa2/x88 BAMUM LETTER PHASE-B MA NJUQA ++ /xf0/x96/xa2/x89 BAMUM LETTER PHASE-B LET ++ /xf0/x96/xa2/x8a BAMUM LETTER PHASE-B NGGAAM ++ /xf0/x96/xa2/x8b BAMUM LETTER PHASE-B NSEN ++ /xf0/x96/xa2/x8c BAMUM LETTER PHASE-B MA ++ /xf0/x96/xa2/x8d BAMUM LETTER PHASE-B KIQ ++ /xf0/x96/xa2/x8e BAMUM LETTER PHASE-B NGOM ++ /xf0/x96/xa2/x8f BAMUM LETTER PHASE-C NGKUE MAEMBA ++ /xf0/x96/xa2/x90 BAMUM LETTER PHASE-C NZA ++ /xf0/x96/xa2/x91 BAMUM LETTER PHASE-C YUM ++ /xf0/x96/xa2/x92 BAMUM LETTER PHASE-C WANGKUOQ ++ /xf0/x96/xa2/x93 BAMUM LETTER PHASE-C NGGEN ++ /xf0/x96/xa2/x94 BAMUM LETTER PHASE-C NDEUAEREE ++ /xf0/x96/xa2/x95 BAMUM LETTER PHASE-C NGKAQ ++ /xf0/x96/xa2/x96 BAMUM LETTER PHASE-C GHARAE ++ /xf0/x96/xa2/x97 BAMUM LETTER PHASE-C MBEEKEET ++ /xf0/x96/xa2/x98 BAMUM LETTER PHASE-C GBAYI ++ /xf0/x96/xa2/x99 BAMUM LETTER PHASE-C NYIR MKPARAQ MEUN ++ /xf0/x96/xa2/x9a BAMUM LETTER PHASE-C NTU MBIT ++ /xf0/x96/xa2/x9b BAMUM LETTER PHASE-C MBEUM ++ /xf0/x96/xa2/x9c BAMUM LETTER PHASE-C PIRIEEN ++ /xf0/x96/xa2/x9d BAMUM LETTER PHASE-C NDOMBU ++ /xf0/x96/xa2/x9e BAMUM LETTER PHASE-C MBAA CABBAGE-TREE ++ /xf0/x96/xa2/x9f BAMUM LETTER PHASE-C KEUSHEUAEP ++ /xf0/x96/xa2/xa0 BAMUM LETTER PHASE-C GHAP ++ /xf0/x96/xa2/xa1 BAMUM LETTER PHASE-C KEUKAQ ++ /xf0/x96/xa2/xa2 BAMUM LETTER PHASE-C YU MUOMAE ++ /xf0/x96/xa2/xa3 BAMUM LETTER PHASE-C NZEUM ++ /xf0/x96/xa2/xa4 BAMUM LETTER PHASE-C MBUE ++ /xf0/x96/xa2/xa5 BAMUM LETTER PHASE-C NSEUAEN ++ /xf0/x96/xa2/xa6 BAMUM LETTER PHASE-C MBIT ++ /xf0/x96/xa2/xa7 BAMUM LETTER PHASE-C YEUQ ++ /xf0/x96/xa2/xa8 BAMUM LETTER PHASE-C KPARAQ ++ /xf0/x96/xa2/xa9 BAMUM LETTER PHASE-C KAA ++ /xf0/x96/xa2/xaa BAMUM LETTER PHASE-C SEUX ++ /xf0/x96/xa2/xab BAMUM LETTER PHASE-C NDIDA ++ /xf0/x96/xa2/xac BAMUM LETTER PHASE-C TAASHAE ++ /xf0/x96/xa2/xad BAMUM LETTER PHASE-C NJUEQ ++ /xf0/x96/xa2/xae BAMUM LETTER PHASE-C TITA YUE ++ /xf0/x96/xa2/xaf BAMUM LETTER PHASE-C SUAET ++ /xf0/x96/xa2/xb0 BAMUM LETTER PHASE-C NGGUAEN NYAM ++ /xf0/x96/xa2/xb1 BAMUM LETTER PHASE-C VEUX ++ /xf0/x96/xa2/xb2 BAMUM LETTER PHASE-C NANSANAQ ++ /xf0/x96/xa2/xb3 BAMUM LETTER PHASE-C MA KEUAERI ++ /xf0/x96/xa2/xb4 BAMUM LETTER PHASE-C NTAA ++ /xf0/x96/xa2/xb5 BAMUM LETTER PHASE-C NGGUON ++ /xf0/x96/xa2/xb6 BAMUM LETTER PHASE-C LAP ++ /xf0/x96/xa2/xb7 BAMUM LETTER PHASE-C MBIRIEEN ++ /xf0/x96/xa2/xb8 BAMUM LETTER PHASE-C MGBASAQ ++ /xf0/x96/xa2/xb9 BAMUM LETTER PHASE-C NTEUNGBA ++ /xf0/x96/xa2/xba BAMUM LETTER PHASE-C TEUTEUX ++ /xf0/x96/xa2/xbb BAMUM LETTER PHASE-C NGGUM ++ /xf0/x96/xa2/xbc BAMUM LETTER PHASE-C FUE ++ /xf0/x96/xa2/xbd BAMUM LETTER PHASE-C NDEUT ++ /xf0/x96/xa2/xbe BAMUM LETTER PHASE-C NSA ++ /xf0/x96/xa2/xbf BAMUM LETTER PHASE-C NSHAQ ++ /xf0/x96/xa3/x80 BAMUM LETTER PHASE-C BUNG ++ /xf0/x96/xa3/x81 BAMUM LETTER PHASE-C VEUAEPEN ++ /xf0/x96/xa3/x82 BAMUM LETTER PHASE-C MBERAE ++ /xf0/x96/xa3/x83 BAMUM LETTER PHASE-C RU ++ /xf0/x96/xa3/x84 BAMUM LETTER PHASE-C NJAEM ++ /xf0/x96/xa3/x85 BAMUM LETTER PHASE-C LAM ++ /xf0/x96/xa3/x86 BAMUM LETTER PHASE-C TITUAEP ++ /xf0/x96/xa3/x87 BAMUM LETTER PHASE-C NSUOT NGOM ++ /xf0/x96/xa3/x88 BAMUM LETTER PHASE-C NJEEEE ++ /xf0/x96/xa3/x89 BAMUM LETTER PHASE-C KET ++ /xf0/x96/xa3/x8a BAMUM LETTER PHASE-C NGGU ++ /xf0/x96/xa3/x8b BAMUM LETTER PHASE-C MAESI ++ /xf0/x96/xa3/x8c BAMUM LETTER PHASE-C MBUAEM ++ /xf0/x96/xa3/x8d BAMUM LETTER PHASE-C LU ++ /xf0/x96/xa3/x8e BAMUM LETTER PHASE-C KUT ++ /xf0/x96/xa3/x8f BAMUM LETTER PHASE-C NJAM ++ /xf0/x96/xa3/x90 BAMUM LETTER PHASE-C NGOM ++ /xf0/x96/xa3/x91 BAMUM LETTER PHASE-C WUP ++ /xf0/x96/xa3/x92 BAMUM LETTER PHASE-C NGGUEET ++ /xf0/x96/xa3/x93 BAMUM LETTER PHASE-C NSOM ++ /xf0/x96/xa3/x94 BAMUM LETTER PHASE-C NTEN ++ /xf0/x96/xa3/x95 BAMUM LETTER PHASE-C KUOP NKAARAE ++ /xf0/x96/xa3/x96 BAMUM LETTER PHASE-C NSUN ++ /xf0/x96/xa3/x97 BAMUM LETTER PHASE-C NDAM ++ /xf0/x96/xa3/x98 BAMUM LETTER PHASE-C MA NSIEE ++ /xf0/x96/xa3/x99 BAMUM LETTER PHASE-C YAA ++ /xf0/x96/xa3/x9a BAMUM LETTER PHASE-C NDAP ++ /xf0/x96/xa3/x9b BAMUM LETTER PHASE-C SHUEQ ++ /xf0/x96/xa3/x9c BAMUM LETTER PHASE-C SETFON ++ /xf0/x96/xa3/x9d BAMUM LETTER PHASE-C MBI ++ /xf0/x96/xa3/x9e BAMUM LETTER PHASE-C MAEMBA ++ /xf0/x96/xa3/x9f BAMUM LETTER PHASE-C MBANYI ++ /xf0/x96/xa3/xa0 BAMUM LETTER PHASE-C KEUSEUX ++ /xf0/x96/xa3/xa1 BAMUM LETTER PHASE-C MBEUX ++ /xf0/x96/xa3/xa2 BAMUM LETTER PHASE-C KEUM ++ /xf0/x96/xa3/xa3 BAMUM LETTER PHASE-C MBAA PICKET ++ /xf0/x96/xa3/xa4 BAMUM LETTER PHASE-C YUWOQ ++ /xf0/x96/xa3/xa5 BAMUM LETTER PHASE-C NJEUX ++ /xf0/x96/xa3/xa6 BAMUM LETTER PHASE-C MIEE ++ /xf0/x96/xa3/xa7 BAMUM LETTER PHASE-C MUAE ++ /xf0/x96/xa3/xa8 BAMUM LETTER PHASE-C SHIQ ++ /xf0/x96/xa3/xa9 BAMUM LETTER PHASE-C KEN LAW ++ /xf0/x96/xa3/xaa BAMUM LETTER PHASE-C KEN FATIGUE ++ /xf0/x96/xa3/xab BAMUM LETTER PHASE-C NGAQ ++ /xf0/x96/xa3/xac BAMUM LETTER PHASE-C NAQ ++ /xf0/x96/xa3/xad BAMUM LETTER PHASE-C LIQ ++ /xf0/x96/xa3/xae BAMUM LETTER PHASE-C PIN ++ /xf0/x96/xa3/xaf BAMUM LETTER PHASE-C PEN ++ /xf0/x96/xa3/xb0 BAMUM LETTER PHASE-C TET ++ /xf0/x96/xa3/xb1 BAMUM LETTER PHASE-D MBUO ++ /xf0/x96/xa3/xb2 BAMUM LETTER PHASE-D WAP ++ /xf0/x96/xa3/xb3 BAMUM LETTER PHASE-D NJI ++ /xf0/x96/xa3/xb4 BAMUM LETTER PHASE-D MFON ++ /xf0/x96/xa3/xb5 BAMUM LETTER PHASE-D NJIEE ++ /xf0/x96/xa3/xb6 BAMUM LETTER PHASE-D LIEE ++ /xf0/x96/xa3/xb7 BAMUM LETTER PHASE-D NJEUT ++ /xf0/x96/xa3/xb8 BAMUM LETTER PHASE-D NSHEE ++ /xf0/x96/xa3/xb9 BAMUM LETTER PHASE-D NGGAAMAE ++ /xf0/x96/xa3/xba BAMUM LETTER PHASE-D NYAM ++ /xf0/x96/xa3/xbb BAMUM LETTER PHASE-D WUAEN ++ /xf0/x96/xa3/xbc BAMUM LETTER PHASE-D NGKUN ++ /xf0/x96/xa3/xbd BAMUM LETTER PHASE-D SHEE ++ /xf0/x96/xa3/xbe BAMUM LETTER PHASE-D NGKAP ++ /xf0/x96/xa3/xbf BAMUM LETTER PHASE-D KEUAETMEUN ++ /xf0/x96/xa4/x80 BAMUM LETTER PHASE-D TEUT ++ /xf0/x96/xa4/x81 BAMUM LETTER PHASE-D SHEUAE ++ /xf0/x96/xa4/x82 BAMUM LETTER PHASE-D NJAP ++ /xf0/x96/xa4/x83 BAMUM LETTER PHASE-D SUE ++ /xf0/x96/xa4/x84 BAMUM LETTER PHASE-D KET ++ /xf0/x96/xa4/x85 BAMUM LETTER PHASE-D YAEMMAE ++ /xf0/x96/xa4/x86 BAMUM LETTER PHASE-D KUOM ++ /xf0/x96/xa4/x87 BAMUM LETTER PHASE-D SAP ++ /xf0/x96/xa4/x88 BAMUM LETTER PHASE-D MFEUT ++ /xf0/x96/xa4/x89 BAMUM LETTER PHASE-D NDEUX ++ /xf0/x96/xa4/x8a BAMUM LETTER PHASE-D MALEERI ++ /xf0/x96/xa4/x8b BAMUM LETTER PHASE-D MEUT ++ /xf0/x96/xa4/x8c BAMUM LETTER PHASE-D SEUAEQ ++ /xf0/x96/xa4/x8d BAMUM LETTER PHASE-D YEN ++ /xf0/x96/xa4/x8e BAMUM LETTER PHASE-D NJEUAEM ++ /xf0/x96/xa4/x8f BAMUM LETTER PHASE-D KEUOT MBUAE ++ /xf0/x96/xa4/x90 BAMUM LETTER PHASE-D NGKEURI ++ /xf0/x96/xa4/x91 BAMUM LETTER PHASE-D TU ++ /xf0/x96/xa4/x92 BAMUM LETTER PHASE-D GHAA ++ /xf0/x96/xa4/x93 BAMUM LETTER PHASE-D NGKYEE ++ /xf0/x96/xa4/x94 BAMUM LETTER PHASE-D FEUFEUAET ++ /xf0/x96/xa4/x95 BAMUM LETTER PHASE-D NDEE ++ /xf0/x96/xa4/x96 BAMUM LETTER PHASE-D MGBOFUM ++ /xf0/x96/xa4/x97 BAMUM LETTER PHASE-D LEUAEP ++ /xf0/x96/xa4/x98 BAMUM LETTER PHASE-D NDON ++ /xf0/x96/xa4/x99 BAMUM LETTER PHASE-D MONI ++ /xf0/x96/xa4/x9a BAMUM LETTER PHASE-D MGBEUN ++ /xf0/x96/xa4/x9b BAMUM LETTER PHASE-D PUUT ++ /xf0/x96/xa4/x9c BAMUM LETTER PHASE-D MGBIEE ++ /xf0/x96/xa4/x9d BAMUM LETTER PHASE-D MFO ++ /xf0/x96/xa4/x9e BAMUM LETTER PHASE-D LUM ++ /xf0/x96/xa4/x9f BAMUM LETTER PHASE-D NSIEEP ++ /xf0/x96/xa4/xa0 BAMUM LETTER PHASE-D MBAA ++ /xf0/x96/xa4/xa1 BAMUM LETTER PHASE-D KWAET ++ /xf0/x96/xa4/xa2 BAMUM LETTER PHASE-D NYET ++ /xf0/x96/xa4/xa3 BAMUM LETTER PHASE-D TEUAEN ++ /xf0/x96/xa4/xa4 BAMUM LETTER PHASE-D SOT ++ /xf0/x96/xa4/xa5 BAMUM LETTER PHASE-D YUWOQ ++ /xf0/x96/xa4/xa6 BAMUM LETTER PHASE-D KEUM ++ /xf0/x96/xa4/xa7 BAMUM LETTER PHASE-D RAEM ++ /xf0/x96/xa4/xa8 BAMUM LETTER PHASE-D TEEEE ++ /xf0/x96/xa4/xa9 BAMUM LETTER PHASE-D NGKEUAEQ ++ /xf0/x96/xa4/xaa BAMUM LETTER PHASE-D MFEUAE ++ /xf0/x96/xa4/xab BAMUM LETTER PHASE-D NSIEET ++ /xf0/x96/xa4/xac BAMUM LETTER PHASE-D KEUP ++ /xf0/x96/xa4/xad BAMUM LETTER PHASE-D PIP ++ /xf0/x96/xa4/xae BAMUM LETTER PHASE-D PEUTAE ++ /xf0/x96/xa4/xaf BAMUM LETTER PHASE-D NYUE ++ /xf0/x96/xa4/xb0 BAMUM LETTER PHASE-D LET ++ /xf0/x96/xa4/xb1 BAMUM LETTER PHASE-D NGGAAM ++ /xf0/x96/xa4/xb2 BAMUM LETTER PHASE-D MFIEE ++ /xf0/x96/xa4/xb3 BAMUM LETTER PHASE-D NGGWAEN ++ /xf0/x96/xa4/xb4 BAMUM LETTER PHASE-D YUOM ++ /xf0/x96/xa4/xb5 BAMUM LETTER PHASE-D PAP ++ /xf0/x96/xa4/xb6 BAMUM LETTER PHASE-D YUOP ++ /xf0/x96/xa4/xb7 BAMUM LETTER PHASE-D NDAM ++ /xf0/x96/xa4/xb8 BAMUM LETTER PHASE-D NTEUM ++ /xf0/x96/xa4/xb9 BAMUM LETTER PHASE-D SUAE ++ /xf0/x96/xa4/xba BAMUM LETTER PHASE-D KUN ++ /xf0/x96/xa4/xbb BAMUM LETTER PHASE-D NGGEUX ++ /xf0/x96/xa4/xbc BAMUM LETTER PHASE-D NGKIEE ++ /xf0/x96/xa4/xbd BAMUM LETTER PHASE-D TUOT ++ /xf0/x96/xa4/xbe BAMUM LETTER PHASE-D MEUN ++ /xf0/x96/xa4/xbf BAMUM LETTER PHASE-D KUQ ++ /xf0/x96/xa5/x80 BAMUM LETTER PHASE-D NSUM ++ /xf0/x96/xa5/x81 BAMUM LETTER PHASE-D TEUN ++ /xf0/x96/xa5/x82 BAMUM LETTER PHASE-D MAENJET ++ /xf0/x96/xa5/x83 BAMUM LETTER PHASE-D NGGAP ++ /xf0/x96/xa5/x84 BAMUM LETTER PHASE-D LEUM ++ /xf0/x96/xa5/x85 BAMUM LETTER PHASE-D NGGUOM ++ /xf0/x96/xa5/x86 BAMUM LETTER PHASE-D NSHUT ++ /xf0/x96/xa5/x87 BAMUM LETTER PHASE-D NJUEQ ++ /xf0/x96/xa5/x88 BAMUM LETTER PHASE-D GHEUAE ++ /xf0/x96/xa5/x89 BAMUM LETTER PHASE-D KU ++ /xf0/x96/xa5/x8a BAMUM LETTER PHASE-D REN OLD ++ /xf0/x96/xa5/x8b BAMUM LETTER PHASE-D TAE ++ /xf0/x96/xa5/x8c BAMUM LETTER PHASE-D TOQ ++ /xf0/x96/xa5/x8d BAMUM LETTER PHASE-D NYI ++ /xf0/x96/xa5/x8e BAMUM LETTER PHASE-D RII ++ /xf0/x96/xa5/x8f BAMUM LETTER PHASE-D LEEEE ++ /xf0/x96/xa5/x90 BAMUM LETTER PHASE-D MEEEE ++ /xf0/x96/xa5/x91 BAMUM LETTER PHASE-D M ++ /xf0/x96/xa5/x92 BAMUM LETTER PHASE-D SUU ++ /xf0/x96/xa5/x93 BAMUM LETTER PHASE-D MU ++ /xf0/x96/xa5/x94 BAMUM LETTER PHASE-D SHII ++ /xf0/x96/xa5/x95 BAMUM LETTER PHASE-D SHEUX ++ /xf0/x96/xa5/x96 BAMUM LETTER PHASE-D KYEE ++ /xf0/x96/xa5/x97 BAMUM LETTER PHASE-D NU ++ /xf0/x96/xa5/x98 BAMUM LETTER PHASE-D SHU ++ /xf0/x96/xa5/x99 BAMUM LETTER PHASE-D NTEE ++ /xf0/x96/xa5/x9a BAMUM LETTER PHASE-D PEE ++ /xf0/x96/xa5/x9b BAMUM LETTER PHASE-D NI ++ /xf0/x96/xa5/x9c BAMUM LETTER PHASE-D SHOQ ++ /xf0/x96/xa5/x9d BAMUM LETTER PHASE-D PUQ ++ /xf0/x96/xa5/x9e BAMUM LETTER PHASE-D MVOP ++ /xf0/x96/xa5/x9f BAMUM LETTER PHASE-D LOQ ++ /xf0/x96/xa5/xa0 BAMUM LETTER PHASE-D REN MUCH ++ /xf0/x96/xa5/xa1 BAMUM LETTER PHASE-D TI ++ /xf0/x96/xa5/xa2 BAMUM LETTER PHASE-D NTUU ++ /xf0/x96/xa5/xa3 BAMUM LETTER PHASE-D MBAA SEVEN ++ /xf0/x96/xa5/xa4 BAMUM LETTER PHASE-D SAQ ++ /xf0/x96/xa5/xa5 BAMUM LETTER PHASE-D FAA ++ /xf0/x96/xa5/xa6 BAMUM LETTER PHASE-E NDAP ++ /xf0/x96/xa5/xa7 BAMUM LETTER PHASE-E TOON ++ /xf0/x96/xa5/xa8 BAMUM LETTER PHASE-E MBEUM ++ /xf0/x96/xa5/xa9 BAMUM LETTER PHASE-E LAP ++ /xf0/x96/xa5/xaa BAMUM LETTER PHASE-E VOM ++ /xf0/x96/xa5/xab BAMUM LETTER PHASE-E LOON ++ /xf0/x96/xa5/xac BAMUM LETTER PHASE-E PAA ++ /xf0/x96/xa5/xad BAMUM LETTER PHASE-E SOM ++ /xf0/x96/xa5/xae BAMUM LETTER PHASE-E RAQ ++ /xf0/x96/xa5/xaf BAMUM LETTER PHASE-E NSHUOP ++ /xf0/x96/xa5/xb0 BAMUM LETTER PHASE-E NDUN ++ /xf0/x96/xa5/xb1 BAMUM LETTER PHASE-E PUAE ++ /xf0/x96/xa5/xb2 BAMUM LETTER PHASE-E TAM ++ /xf0/x96/xa5/xb3 BAMUM LETTER PHASE-E NGKA ++ /xf0/x96/xa5/xb4 BAMUM LETTER PHASE-E KPEUX ++ /xf0/x96/xa5/xb5 BAMUM LETTER PHASE-E WUO ++ /xf0/x96/xa5/xb6 BAMUM LETTER PHASE-E SEE ++ /xf0/x96/xa5/xb7 BAMUM LETTER PHASE-E NGGEUAET ++ /xf0/x96/xa5/xb8 BAMUM LETTER PHASE-E PAAM ++ /xf0/x96/xa5/xb9 BAMUM LETTER PHASE-E TOO ++ /xf0/x96/xa5/xba BAMUM LETTER PHASE-E KUOP ++ /xf0/x96/xa5/xbb BAMUM LETTER PHASE-E LOM ++ /xf0/x96/xa5/xbc BAMUM LETTER PHASE-E NSHIEE ++ /xf0/x96/xa5/xbd BAMUM LETTER PHASE-E NGOP ++ /xf0/x96/xa5/xbe BAMUM LETTER PHASE-E MAEM ++ /xf0/x96/xa5/xbf BAMUM LETTER PHASE-E NGKEUX ++ /xf0/x96/xa6/x80 BAMUM LETTER PHASE-E NGOQ ++ /xf0/x96/xa6/x81 BAMUM LETTER PHASE-E NSHUE ++ /xf0/x96/xa6/x82 BAMUM LETTER PHASE-E RIMGBA ++ /xf0/x96/xa6/x83 BAMUM LETTER PHASE-E NJEUX ++ /xf0/x96/xa6/x84 BAMUM LETTER PHASE-E PEEM ++ /xf0/x96/xa6/x85 BAMUM LETTER PHASE-E SAA ++ /xf0/x96/xa6/x86 BAMUM LETTER PHASE-E NGGURAE ++ /xf0/x96/xa6/x87 BAMUM LETTER PHASE-E MGBA ++ /xf0/x96/xa6/x88 BAMUM LETTER PHASE-E GHEUX ++ /xf0/x96/xa6/x89 BAMUM LETTER PHASE-E NGKEUAEM ++ /xf0/x96/xa6/x8a BAMUM LETTER PHASE-E NJAEMLI ++ /xf0/x96/xa6/x8b BAMUM LETTER PHASE-E MAP ++ /xf0/x96/xa6/x8c BAMUM LETTER PHASE-E LOOT ++ /xf0/x96/xa6/x8d BAMUM LETTER PHASE-E NGGEEEE ++ /xf0/x96/xa6/x8e BAMUM LETTER PHASE-E NDIQ ++ /xf0/x96/xa6/x8f BAMUM LETTER PHASE-E TAEN NTEUM ++ /xf0/x96/xa6/x90 BAMUM LETTER PHASE-E SET ++ /xf0/x96/xa6/x91 BAMUM LETTER PHASE-E PUM ++ /xf0/x96/xa6/x92 BAMUM LETTER PHASE-E NDAA SOFTNESS ++ /xf0/x96/xa6/x93 BAMUM LETTER PHASE-E NGGUAESHAE NYAM ++ /xf0/x96/xa6/x94 BAMUM LETTER PHASE-E YIEE ++ /xf0/x96/xa6/x95 BAMUM LETTER PHASE-E GHEUN ++ /xf0/x96/xa6/x96 BAMUM LETTER PHASE-E TUAE ++ /xf0/x96/xa6/x97 BAMUM LETTER PHASE-E YEUAE ++ /xf0/x96/xa6/x98 BAMUM LETTER PHASE-E PO ++ /xf0/x96/xa6/x99 BAMUM LETTER PHASE-E TUMAE ++ /xf0/x96/xa6/x9a BAMUM LETTER PHASE-E KEUAE ++ /xf0/x96/xa6/x9b BAMUM LETTER PHASE-E SUAEN ++ /xf0/x96/xa6/x9c BAMUM LETTER PHASE-E TEUAEQ ++ /xf0/x96/xa6/x9d BAMUM LETTER PHASE-E VEUAE ++ /xf0/x96/xa6/x9e BAMUM LETTER PHASE-E WEUX ++ /xf0/x96/xa6/x9f BAMUM LETTER PHASE-E LAAM ++ /xf0/x96/xa6/xa0 BAMUM LETTER PHASE-E PU ++ /xf0/x96/xa6/xa1 BAMUM LETTER PHASE-E TAAQ ++ /xf0/x96/xa6/xa2 BAMUM LETTER PHASE-E GHAAMAE ++ /xf0/x96/xa6/xa3 BAMUM LETTER PHASE-E NGEUREUT ++ /xf0/x96/xa6/xa4 BAMUM LETTER PHASE-E SHEUAEQ ++ /xf0/x96/xa6/xa5 BAMUM LETTER PHASE-E MGBEN ++ /xf0/x96/xa6/xa6 BAMUM LETTER PHASE-E MBEE ++ /xf0/x96/xa6/xa7 BAMUM LETTER PHASE-E NZAQ ++ /xf0/x96/xa6/xa8 BAMUM LETTER PHASE-E NKOM ++ /xf0/x96/xa6/xa9 BAMUM LETTER PHASE-E GBET ++ /xf0/x96/xa6/xaa BAMUM LETTER PHASE-E TUM ++ /xf0/x96/xa6/xab BAMUM LETTER PHASE-E KUET ++ /xf0/x96/xa6/xac BAMUM LETTER PHASE-E YAP ++ /xf0/x96/xa6/xad BAMUM LETTER PHASE-E NYI CLEAVER ++ /xf0/x96/xa6/xae BAMUM LETTER PHASE-E YIT ++ /xf0/x96/xa6/xaf BAMUM LETTER PHASE-E MFEUQ ++ /xf0/x96/xa6/xb0 BAMUM LETTER PHASE-E NDIAQ ++ /xf0/x96/xa6/xb1 BAMUM LETTER PHASE-E PIEEQ ++ /xf0/x96/xa6/xb2 BAMUM LETTER PHASE-E YUEQ ++ /xf0/x96/xa6/xb3 BAMUM LETTER PHASE-E LEUAEM ++ /xf0/x96/xa6/xb4 BAMUM LETTER PHASE-E FUE ++ /xf0/x96/xa6/xb5 BAMUM LETTER PHASE-E GBEUX ++ /xf0/x96/xa6/xb6 BAMUM LETTER PHASE-E NGKUP ++ /xf0/x96/xa6/xb7 BAMUM LETTER PHASE-E KET ++ /xf0/x96/xa6/xb8 BAMUM LETTER PHASE-E MAE ++ /xf0/x96/xa6/xb9 BAMUM LETTER PHASE-E NGKAAMI ++ /xf0/x96/xa6/xba BAMUM LETTER PHASE-E GHET ++ /xf0/x96/xa6/xbb BAMUM LETTER PHASE-E FA ++ /xf0/x96/xa6/xbc BAMUM LETTER PHASE-E NTUM ++ /xf0/x96/xa6/xbd BAMUM LETTER PHASE-E PEUT ++ /xf0/x96/xa6/xbe BAMUM LETTER PHASE-E YEUM ++ /xf0/x96/xa6/xbf BAMUM LETTER PHASE-E NGGEUAE ++ /xf0/x96/xa7/x80 BAMUM LETTER PHASE-E NYI BETWEEN ++ /xf0/x96/xa7/x81 BAMUM LETTER PHASE-E NZUQ ++ /xf0/x96/xa7/x82 BAMUM LETTER PHASE-E POON ++ /xf0/x96/xa7/x83 BAMUM LETTER PHASE-E MIEE ++ /xf0/x96/xa7/x84 BAMUM LETTER PHASE-E FUET ++ /xf0/x96/xa7/x85 BAMUM LETTER PHASE-E NAE ++ /xf0/x96/xa7/x86 BAMUM LETTER PHASE-E MUAE ++ /xf0/x96/xa7/x87 BAMUM LETTER PHASE-E GHEUAE ++ /xf0/x96/xa7/x88 BAMUM LETTER PHASE-E FU I ++ /xf0/x96/xa7/x89 BAMUM LETTER PHASE-E MVI ++ /xf0/x96/xa7/x8a BAMUM LETTER PHASE-E PUAQ ++ /xf0/x96/xa7/x8b BAMUM LETTER PHASE-E NGKUM ++ /xf0/x96/xa7/x8c BAMUM LETTER PHASE-E KUT ++ /xf0/x96/xa7/x8d BAMUM LETTER PHASE-E PIET ++ /xf0/x96/xa7/x8e BAMUM LETTER PHASE-E NTAP ++ /xf0/x96/xa7/x8f BAMUM LETTER PHASE-E YEUAET ++ /xf0/x96/xa7/x90 BAMUM LETTER PHASE-E NGGUP ++ /xf0/x96/xa7/x91 BAMUM LETTER PHASE-E PA PEOPLE ++ /xf0/x96/xa7/x92 BAMUM LETTER PHASE-E FU CALL ++ /xf0/x96/xa7/x93 BAMUM LETTER PHASE-E FOM ++ /xf0/x96/xa7/x94 BAMUM LETTER PHASE-E NJEE ++ /xf0/x96/xa7/x95 BAMUM LETTER PHASE-E A ++ /xf0/x96/xa7/x96 BAMUM LETTER PHASE-E TOQ ++ /xf0/x96/xa7/x97 BAMUM LETTER PHASE-E O ++ /xf0/x96/xa7/x98 BAMUM LETTER PHASE-E I ++ /xf0/x96/xa7/x99 BAMUM LETTER PHASE-E LAQ ++ /xf0/x96/xa7/x9a BAMUM LETTER PHASE-E PA PLURAL ++ /xf0/x96/xa7/x9b BAMUM LETTER PHASE-E TAA ++ /xf0/x96/xa7/x9c BAMUM LETTER PHASE-E TAQ ++ /xf0/x96/xa7/x9d BAMUM LETTER PHASE-E NDAA MY HOUSE ++ /xf0/x96/xa7/x9e BAMUM LETTER PHASE-E SHIQ ++ /xf0/x96/xa7/x9f BAMUM LETTER PHASE-E YEUX ++ /xf0/x96/xa7/xa0 BAMUM LETTER PHASE-E NGUAE ++ /xf0/x96/xa7/xa1 BAMUM LETTER PHASE-E YUAEN ++ /xf0/x96/xa7/xa2 BAMUM LETTER PHASE-E YOQ SWIMMING ++ /xf0/x96/xa7/xa3 BAMUM LETTER PHASE-E YOQ COVER ++ /xf0/x96/xa7/xa4 BAMUM LETTER PHASE-E YUQ ++ /xf0/x96/xa7/xa5 BAMUM LETTER PHASE-E YUN ++ /xf0/x96/xa7/xa6 BAMUM LETTER PHASE-E KEUX ++ /xf0/x96/xa7/xa7 BAMUM LETTER PHASE-E PEUX ++ /xf0/x96/xa7/xa8 BAMUM LETTER PHASE-E NJEE EPOCH ++ /xf0/x96/xa7/xa9 BAMUM LETTER PHASE-E PUE ++ /xf0/x96/xa7/xaa BAMUM LETTER PHASE-E WUE ++ /xf0/x96/xa7/xab BAMUM LETTER PHASE-E FEE ++ /xf0/x96/xa7/xac BAMUM LETTER PHASE-E VEE ++ /xf0/x96/xa7/xad BAMUM LETTER PHASE-E LU ++ /xf0/x96/xa7/xae BAMUM LETTER PHASE-E MI ++ /xf0/x96/xa7/xaf BAMUM LETTER PHASE-E REUX ++ /xf0/x96/xa7/xb0 BAMUM LETTER PHASE-E RAE ++ /xf0/x96/xa7/xb1 BAMUM LETTER PHASE-E NGUAET ++ /xf0/x96/xa7/xb2 BAMUM LETTER PHASE-E NGA ++ /xf0/x96/xa7/xb3 BAMUM LETTER PHASE-E SHO ++ /xf0/x96/xa7/xb4 BAMUM LETTER PHASE-E SHOQ ++ /xf0/x96/xa7/xb5 BAMUM LETTER PHASE-E FU REMEDY ++ /xf0/x96/xa7/xb6 BAMUM LETTER PHASE-E NA ++ /xf0/x96/xa7/xb7 BAMUM LETTER PHASE-E PI ++ /xf0/x96/xa7/xb8 BAMUM LETTER PHASE-E LOQ ++ /xf0/x96/xa7/xb9 BAMUM LETTER PHASE-E KO ++ /xf0/x96/xa7/xba BAMUM LETTER PHASE-E MEN ++ /xf0/x96/xa7/xbb BAMUM LETTER PHASE-E MA ++ /xf0/x96/xa7/xbc BAMUM LETTER PHASE-E MAQ ++ /xf0/x96/xa7/xbd BAMUM LETTER PHASE-E TEU ++ /xf0/x96/xa7/xbe BAMUM LETTER PHASE-E KI ++ /xf0/x96/xa7/xbf BAMUM LETTER PHASE-E MON ++ /xf0/x96/xa8/x80 BAMUM LETTER PHASE-E TEN ++ /xf0/x96/xa8/x81 BAMUM LETTER PHASE-E FAQ ++ /xf0/x96/xa8/x82 BAMUM LETTER PHASE-E GHOM ++ /xf0/x96/xa8/x83 BAMUM LETTER PHASE-F KA ++ /xf0/x96/xa8/x84 BAMUM LETTER PHASE-F U ++ /xf0/x96/xa8/x85 BAMUM LETTER PHASE-F KU ++ /xf0/x96/xa8/x86 BAMUM LETTER PHASE-F EE ++ /xf0/x96/xa8/x87 BAMUM LETTER PHASE-F REE ++ /xf0/x96/xa8/x88 BAMUM LETTER PHASE-F TAE ++ /xf0/x96/xa8/x89 BAMUM LETTER PHASE-F NYI ++ /xf0/x96/xa8/x8a BAMUM LETTER PHASE-F LA ++ /xf0/x96/xa8/x8b BAMUM LETTER PHASE-F RII ++ /xf0/x96/xa8/x8c BAMUM LETTER PHASE-F RIEE ++ /xf0/x96/xa8/x8d BAMUM LETTER PHASE-F MEEEE ++ /xf0/x96/xa8/x8e BAMUM LETTER PHASE-F TAA ++ /xf0/x96/xa8/x8f BAMUM LETTER PHASE-F NDAA ++ /xf0/x96/xa8/x90 BAMUM LETTER PHASE-F NJAEM ++ /xf0/x96/xa8/x91 BAMUM LETTER PHASE-F M ++ /xf0/x96/xa8/x92 BAMUM LETTER PHASE-F SUU ++ /xf0/x96/xa8/x93 BAMUM LETTER PHASE-F SHII ++ /xf0/x96/xa8/x94 BAMUM LETTER PHASE-F SI ++ /xf0/x96/xa8/x95 BAMUM LETTER PHASE-F SEUX ++ /xf0/x96/xa8/x96 BAMUM LETTER PHASE-F KYEE ++ /xf0/x96/xa8/x97 BAMUM LETTER PHASE-F KET ++ /xf0/x96/xa8/x98 BAMUM LETTER PHASE-F NUAE ++ /xf0/x96/xa8/x99 BAMUM LETTER PHASE-F NU ++ /xf0/x96/xa8/x9a BAMUM LETTER PHASE-F NJUAE ++ /xf0/x96/xa8/x9b BAMUM LETTER PHASE-F YOQ ++ /xf0/x96/xa8/x9c BAMUM LETTER PHASE-F SHU ++ /xf0/x96/xa8/x9d BAMUM LETTER PHASE-F YA ++ /xf0/x96/xa8/x9e BAMUM LETTER PHASE-F NSHA ++ /xf0/x96/xa8/x9f BAMUM LETTER PHASE-F PEUX ++ /xf0/x96/xa8/xa0 BAMUM LETTER PHASE-F NTEE ++ /xf0/x96/xa8/xa1 BAMUM LETTER PHASE-F WUE ++ /xf0/x96/xa8/xa2 BAMUM LETTER PHASE-F PEE ++ /xf0/x96/xa8/xa3 BAMUM LETTER PHASE-F RU ++ /xf0/x96/xa8/xa4 BAMUM LETTER PHASE-F NI ++ /xf0/x96/xa8/xa5 BAMUM LETTER PHASE-F REUX ++ /xf0/x96/xa8/xa6 BAMUM LETTER PHASE-F KEN ++ /xf0/x96/xa8/xa7 BAMUM LETTER PHASE-F NGKWAEN ++ /xf0/x96/xa8/xa8 BAMUM LETTER PHASE-F NGGA ++ /xf0/x96/xa8/xa9 BAMUM LETTER PHASE-F SHO ++ /xf0/x96/xa8/xaa BAMUM LETTER PHASE-F PUAE ++ /xf0/x96/xa8/xab BAMUM LETTER PHASE-F FOM ++ /xf0/x96/xa8/xac BAMUM LETTER PHASE-F WA ++ /xf0/x96/xa8/xad BAMUM LETTER PHASE-F LI ++ /xf0/x96/xa8/xae BAMUM LETTER PHASE-F LOQ ++ /xf0/x96/xa8/xaf BAMUM LETTER PHASE-F KO ++ /xf0/x96/xa8/xb0 BAMUM LETTER PHASE-F MBEN ++ /xf0/x96/xa8/xb1 BAMUM LETTER PHASE-F REN ++ /xf0/x96/xa8/xb2 BAMUM LETTER PHASE-F MA ++ /xf0/x96/xa8/xb3 BAMUM LETTER PHASE-F MO ++ /xf0/x96/xa8/xb4 BAMUM LETTER PHASE-F MBAA ++ /xf0/x96/xa8/xb5 BAMUM LETTER PHASE-F TET ++ /xf0/x96/xa8/xb6 BAMUM LETTER PHASE-F KPA ++ /xf0/x96/xa8/xb7 BAMUM LETTER PHASE-F SAMBA ++ /xf0/x96/xa8/xb8 BAMUM LETTER PHASE-F VUEQ ++ /xf0/x9b/x80/x80 KATAKANA LETTER ARCHAIC E ++ /xf0/x9b/x80/x81 HIRAGANA LETTER ARCHAIC YE + /xf0/x9d/x80/x80 BYZANTINE MUSICAL SYMBOL PSILI + /xf0/x9d/x80/x81 BYZANTINE MUSICAL SYMBOL DASEIA + /xf0/x9d/x80/x82 BYZANTINE MUSICAL SYMBOL PERISPOMENI +@@ -30151,6 +33445,1091 @@ CHARMAP + /xf0/x9f/x82/x91 DOMINO TILE VERTICAL-06-04 + /xf0/x9f/x82/x92 DOMINO TILE VERTICAL-06-05 + /xf0/x9f/x82/x93 DOMINO TILE VERTICAL-06-06 ++ /xf0/x9f/x82/xa0 PLAYING CARD BACK ++ /xf0/x9f/x82/xa1 PLAYING CARD ACE OF SPADES ++ /xf0/x9f/x82/xa2 PLAYING CARD TWO OF SPADES ++ /xf0/x9f/x82/xa3 PLAYING CARD THREE OF SPADES ++ /xf0/x9f/x82/xa4 PLAYING CARD FOUR OF SPADES ++ /xf0/x9f/x82/xa5 PLAYING CARD FIVE OF SPADES ++ /xf0/x9f/x82/xa6 PLAYING CARD SIX OF SPADES ++ /xf0/x9f/x82/xa7 PLAYING CARD SEVEN OF SPADES ++ /xf0/x9f/x82/xa8 PLAYING CARD EIGHT OF SPADES ++ /xf0/x9f/x82/xa9 PLAYING CARD NINE OF SPADES ++ /xf0/x9f/x82/xaa PLAYING CARD TEN OF SPADES ++ /xf0/x9f/x82/xab PLAYING CARD JACK OF SPADES ++ /xf0/x9f/x82/xac PLAYING CARD KNIGHT OF SPADES ++ /xf0/x9f/x82/xad PLAYING CARD QUEEN OF SPADES ++ /xf0/x9f/x82/xae PLAYING CARD KING OF SPADES ++ /xf0/x9f/x82/xb1 PLAYING CARD ACE OF HEARTS ++ /xf0/x9f/x82/xb2 PLAYING CARD TWO OF HEARTS ++ /xf0/x9f/x82/xb3 PLAYING CARD THREE OF HEARTS ++ /xf0/x9f/x82/xb4 PLAYING CARD FOUR OF HEARTS ++ /xf0/x9f/x82/xb5 PLAYING CARD FIVE OF HEARTS ++ /xf0/x9f/x82/xb6 PLAYING CARD SIX OF HEARTS ++ /xf0/x9f/x82/xb7 PLAYING CARD SEVEN OF HEARTS ++ /xf0/x9f/x82/xb8 PLAYING CARD EIGHT OF HEARTS ++ /xf0/x9f/x82/xb9 PLAYING CARD NINE OF HEARTS ++ /xf0/x9f/x82/xba PLAYING CARD TEN OF HEARTS ++ /xf0/x9f/x82/xbb PLAYING CARD JACK OF HEARTS ++ /xf0/x9f/x82/xbc PLAYING CARD KNIGHT OF HEARTS ++ /xf0/x9f/x82/xbd PLAYING CARD QUEEN OF HEARTS ++ /xf0/x9f/x82/xbe PLAYING CARD KING OF HEARTS ++ /xf0/x9f/x83/x81 PLAYING CARD ACE OF DIAMONDS ++ /xf0/x9f/x83/x82 PLAYING CARD TWO OF DIAMONDS ++ /xf0/x9f/x83/x83 PLAYING CARD THREE OF DIAMONDS ++ /xf0/x9f/x83/x84 PLAYING CARD FOUR OF DIAMONDS ++ /xf0/x9f/x83/x85 PLAYING CARD FIVE OF DIAMONDS ++ /xf0/x9f/x83/x86 PLAYING CARD SIX OF DIAMONDS ++ /xf0/x9f/x83/x87 PLAYING CARD SEVEN OF DIAMONDS ++ /xf0/x9f/x83/x88 PLAYING CARD EIGHT OF DIAMONDS ++ /xf0/x9f/x83/x89 PLAYING CARD NINE OF DIAMONDS ++ /xf0/x9f/x83/x8a PLAYING CARD TEN OF DIAMONDS ++ /xf0/x9f/x83/x8b PLAYING CARD JACK OF DIAMONDS ++ /xf0/x9f/x83/x8c PLAYING CARD KNIGHT OF DIAMONDS ++ /xf0/x9f/x83/x8d PLAYING CARD QUEEN OF DIAMONDS ++ /xf0/x9f/x83/x8e PLAYING CARD KING OF DIAMONDS ++ /xf0/x9f/x83/x8f PLAYING CARD BLACK JOKER ++ /xf0/x9f/x83/x91 PLAYING CARD ACE OF CLUBS ++ /xf0/x9f/x83/x92 PLAYING CARD TWO OF CLUBS ++ /xf0/x9f/x83/x93 PLAYING CARD THREE OF CLUBS ++ /xf0/x9f/x83/x94 PLAYING CARD FOUR OF CLUBS ++ /xf0/x9f/x83/x95 PLAYING CARD FIVE OF CLUBS ++ /xf0/x9f/x83/x96 PLAYING CARD SIX OF CLUBS ++ /xf0/x9f/x83/x97 PLAYING CARD SEVEN OF CLUBS ++ /xf0/x9f/x83/x98 PLAYING CARD EIGHT OF CLUBS ++ /xf0/x9f/x83/x99 PLAYING CARD NINE OF CLUBS ++ /xf0/x9f/x83/x9a PLAYING CARD TEN OF CLUBS ++ /xf0/x9f/x83/x9b PLAYING CARD JACK OF CLUBS ++ /xf0/x9f/x83/x9c PLAYING CARD KNIGHT OF CLUBS ++ /xf0/x9f/x83/x9d PLAYING CARD QUEEN OF CLUBS ++ /xf0/x9f/x83/x9e PLAYING CARD KING OF CLUBS ++ /xf0/x9f/x83/x9f PLAYING CARD WHITE JOKER ++ /xf0/x9f/x84/x80 DIGIT ZERO FULL STOP ++ /xf0/x9f/x84/x81 DIGIT ZERO COMMA ++ /xf0/x9f/x84/x82 DIGIT ONE COMMA ++ /xf0/x9f/x84/x83 DIGIT TWO COMMA ++ /xf0/x9f/x84/x84 DIGIT THREE COMMA ++ /xf0/x9f/x84/x85 DIGIT FOUR COMMA ++ /xf0/x9f/x84/x86 DIGIT FIVE COMMA ++ /xf0/x9f/x84/x87 DIGIT SIX COMMA ++ /xf0/x9f/x84/x88 DIGIT SEVEN COMMA ++ /xf0/x9f/x84/x89 DIGIT EIGHT COMMA ++ /xf0/x9f/x84/x8a DIGIT NINE COMMA ++ /xf0/x9f/x84/x90 PARENTHESIZED LATIN CAPITAL LETTER A ++ /xf0/x9f/x84/x91 PARENTHESIZED LATIN CAPITAL LETTER B ++ /xf0/x9f/x84/x92 PARENTHESIZED LATIN CAPITAL LETTER C ++ /xf0/x9f/x84/x93 PARENTHESIZED LATIN CAPITAL LETTER D ++ /xf0/x9f/x84/x94 PARENTHESIZED LATIN CAPITAL LETTER E ++ /xf0/x9f/x84/x95 PARENTHESIZED LATIN CAPITAL LETTER F ++ /xf0/x9f/x84/x96 PARENTHESIZED LATIN CAPITAL LETTER G ++ /xf0/x9f/x84/x97 PARENTHESIZED LATIN CAPITAL LETTER H ++ /xf0/x9f/x84/x98 PARENTHESIZED LATIN CAPITAL LETTER I ++ /xf0/x9f/x84/x99 PARENTHESIZED LATIN CAPITAL LETTER J ++ /xf0/x9f/x84/x9a PARENTHESIZED LATIN CAPITAL LETTER K ++ /xf0/x9f/x84/x9b PARENTHESIZED LATIN CAPITAL LETTER L ++ /xf0/x9f/x84/x9c PARENTHESIZED LATIN CAPITAL LETTER M ++ /xf0/x9f/x84/x9d PARENTHESIZED LATIN CAPITAL LETTER N ++ /xf0/x9f/x84/x9e PARENTHESIZED LATIN CAPITAL LETTER O ++ /xf0/x9f/x84/x9f PARENTHESIZED LATIN CAPITAL LETTER P ++ /xf0/x9f/x84/xa0 PARENTHESIZED LATIN CAPITAL LETTER Q ++ /xf0/x9f/x84/xa1 PARENTHESIZED LATIN CAPITAL LETTER R ++ /xf0/x9f/x84/xa2 PARENTHESIZED LATIN CAPITAL LETTER S ++ /xf0/x9f/x84/xa3 PARENTHESIZED LATIN CAPITAL LETTER T ++ /xf0/x9f/x84/xa4 PARENTHESIZED LATIN CAPITAL LETTER U ++ /xf0/x9f/x84/xa5 PARENTHESIZED LATIN CAPITAL LETTER V ++ /xf0/x9f/x84/xa6 PARENTHESIZED LATIN CAPITAL LETTER W ++ /xf0/x9f/x84/xa7 PARENTHESIZED LATIN CAPITAL LETTER X ++ /xf0/x9f/x84/xa8 PARENTHESIZED LATIN CAPITAL LETTER Y ++ /xf0/x9f/x84/xa9 PARENTHESIZED LATIN CAPITAL LETTER Z ++ /xf0/x9f/x84/xaa TORTOISE SHELL BRACKETED LATIN CAPITAL LETTER S ++ /xf0/x9f/x84/xab CIRCLED ITALIC LATIN CAPITAL LETTER C ++ /xf0/x9f/x84/xac CIRCLED ITALIC LATIN CAPITAL LETTER R ++ /xf0/x9f/x84/xad CIRCLED CD ++ /xf0/x9f/x84/xae CIRCLED WZ ++ /xf0/x9f/x84/xb0 SQUARED LATIN CAPITAL LETTER A ++ /xf0/x9f/x84/xb1 SQUARED LATIN CAPITAL LETTER B ++ /xf0/x9f/x84/xb2 SQUARED LATIN CAPITAL LETTER C ++ /xf0/x9f/x84/xb3 SQUARED LATIN CAPITAL LETTER D ++ /xf0/x9f/x84/xb4 SQUARED LATIN CAPITAL LETTER E ++ /xf0/x9f/x84/xb5 SQUARED LATIN CAPITAL LETTER F ++ /xf0/x9f/x84/xb6 SQUARED LATIN CAPITAL LETTER G ++ /xf0/x9f/x84/xb7 SQUARED LATIN CAPITAL LETTER H ++ /xf0/x9f/x84/xb8 SQUARED LATIN CAPITAL LETTER I ++ /xf0/x9f/x84/xb9 SQUARED LATIN CAPITAL LETTER J ++ /xf0/x9f/x84/xba SQUARED LATIN CAPITAL LETTER K ++ /xf0/x9f/x84/xbb SQUARED LATIN CAPITAL LETTER L ++ /xf0/x9f/x84/xbc SQUARED LATIN CAPITAL LETTER M ++ /xf0/x9f/x84/xbd SQUARED LATIN CAPITAL LETTER N ++ /xf0/x9f/x84/xbe SQUARED LATIN CAPITAL LETTER O ++ /xf0/x9f/x84/xbf SQUARED LATIN CAPITAL LETTER P ++ /xf0/x9f/x85/x80 SQUARED LATIN CAPITAL LETTER Q ++ /xf0/x9f/x85/x81 SQUARED LATIN CAPITAL LETTER R ++ /xf0/x9f/x85/x82 SQUARED LATIN CAPITAL LETTER S ++ /xf0/x9f/x85/x83 SQUARED LATIN CAPITAL LETTER T ++ /xf0/x9f/x85/x84 SQUARED LATIN CAPITAL LETTER U ++ /xf0/x9f/x85/x85 SQUARED LATIN CAPITAL LETTER V ++ /xf0/x9f/x85/x86 SQUARED LATIN CAPITAL LETTER W ++ /xf0/x9f/x85/x87 SQUARED LATIN CAPITAL LETTER X ++ /xf0/x9f/x85/x88 SQUARED LATIN CAPITAL LETTER Y ++ /xf0/x9f/x85/x89 SQUARED LATIN CAPITAL LETTER Z ++ /xf0/x9f/x85/x8a SQUARED HV ++ /xf0/x9f/x85/x8b SQUARED MV ++ /xf0/x9f/x85/x8c SQUARED SD ++ /xf0/x9f/x85/x8d SQUARED SS ++ /xf0/x9f/x85/x8e SQUARED PPV ++ /xf0/x9f/x85/x8f SQUARED WC ++ /xf0/x9f/x85/x90 NEGATIVE CIRCLED LATIN CAPITAL LETTER A ++ /xf0/x9f/x85/x91 NEGATIVE CIRCLED LATIN CAPITAL LETTER B ++ /xf0/x9f/x85/x92 NEGATIVE CIRCLED LATIN CAPITAL LETTER C ++ /xf0/x9f/x85/x93 NEGATIVE CIRCLED LATIN CAPITAL LETTER D ++ /xf0/x9f/x85/x94 NEGATIVE CIRCLED LATIN CAPITAL LETTER E ++ /xf0/x9f/x85/x95 NEGATIVE CIRCLED LATIN CAPITAL LETTER F ++ /xf0/x9f/x85/x96 NEGATIVE CIRCLED LATIN CAPITAL LETTER G ++ /xf0/x9f/x85/x97 NEGATIVE CIRCLED LATIN CAPITAL LETTER H ++ /xf0/x9f/x85/x98 NEGATIVE CIRCLED LATIN CAPITAL LETTER I ++ /xf0/x9f/x85/x99 NEGATIVE CIRCLED LATIN CAPITAL LETTER J ++ /xf0/x9f/x85/x9a NEGATIVE CIRCLED LATIN CAPITAL LETTER K ++ /xf0/x9f/x85/x9b NEGATIVE CIRCLED LATIN CAPITAL LETTER L ++ /xf0/x9f/x85/x9c NEGATIVE CIRCLED LATIN CAPITAL LETTER M ++ /xf0/x9f/x85/x9d NEGATIVE CIRCLED LATIN CAPITAL LETTER N ++ /xf0/x9f/x85/x9e NEGATIVE CIRCLED LATIN CAPITAL LETTER O ++ /xf0/x9f/x85/x9f NEGATIVE CIRCLED LATIN CAPITAL LETTER P ++ /xf0/x9f/x85/xa0 NEGATIVE CIRCLED LATIN CAPITAL LETTER Q ++ /xf0/x9f/x85/xa1 NEGATIVE CIRCLED LATIN CAPITAL LETTER R ++ /xf0/x9f/x85/xa2 NEGATIVE CIRCLED LATIN CAPITAL LETTER S ++ /xf0/x9f/x85/xa3 NEGATIVE CIRCLED LATIN CAPITAL LETTER T ++ /xf0/x9f/x85/xa4 NEGATIVE CIRCLED LATIN CAPITAL LETTER U ++ /xf0/x9f/x85/xa5 NEGATIVE CIRCLED LATIN CAPITAL LETTER V ++ /xf0/x9f/x85/xa6 NEGATIVE CIRCLED LATIN CAPITAL LETTER W ++ /xf0/x9f/x85/xa7 NEGATIVE CIRCLED LATIN CAPITAL LETTER X ++ /xf0/x9f/x85/xa8 NEGATIVE CIRCLED LATIN CAPITAL LETTER Y ++ /xf0/x9f/x85/xa9 NEGATIVE CIRCLED LATIN CAPITAL LETTER Z ++ /xf0/x9f/x85/xb0 NEGATIVE SQUARED LATIN CAPITAL LETTER A ++ /xf0/x9f/x85/xb1 NEGATIVE SQUARED LATIN CAPITAL LETTER B ++ /xf0/x9f/x85/xb2 NEGATIVE SQUARED LATIN CAPITAL LETTER C ++ /xf0/x9f/x85/xb3 NEGATIVE SQUARED LATIN CAPITAL LETTER D ++ /xf0/x9f/x85/xb4 NEGATIVE SQUARED LATIN CAPITAL LETTER E ++ /xf0/x9f/x85/xb5 NEGATIVE SQUARED LATIN CAPITAL LETTER F ++ /xf0/x9f/x85/xb6 NEGATIVE SQUARED LATIN CAPITAL LETTER G ++ /xf0/x9f/x85/xb7 NEGATIVE SQUARED LATIN CAPITAL LETTER H ++ /xf0/x9f/x85/xb8 NEGATIVE SQUARED LATIN CAPITAL LETTER I ++ /xf0/x9f/x85/xb9 NEGATIVE SQUARED LATIN CAPITAL LETTER J ++ /xf0/x9f/x85/xba NEGATIVE SQUARED LATIN CAPITAL LETTER K ++ /xf0/x9f/x85/xbb NEGATIVE SQUARED LATIN CAPITAL LETTER L ++ /xf0/x9f/x85/xbc NEGATIVE SQUARED LATIN CAPITAL LETTER M ++ /xf0/x9f/x85/xbd NEGATIVE SQUARED LATIN CAPITAL LETTER N ++ /xf0/x9f/x85/xbe NEGATIVE SQUARED LATIN CAPITAL LETTER O ++ /xf0/x9f/x85/xbf NEGATIVE SQUARED LATIN CAPITAL LETTER P ++ /xf0/x9f/x86/x80 NEGATIVE SQUARED LATIN CAPITAL LETTER Q ++ /xf0/x9f/x86/x81 NEGATIVE SQUARED LATIN CAPITAL LETTER R ++ /xf0/x9f/x86/x82 NEGATIVE SQUARED LATIN CAPITAL LETTER S ++ /xf0/x9f/x86/x83 NEGATIVE SQUARED LATIN CAPITAL LETTER T ++ /xf0/x9f/x86/x84 NEGATIVE SQUARED LATIN CAPITAL LETTER U ++ /xf0/x9f/x86/x85 NEGATIVE SQUARED LATIN CAPITAL LETTER V ++ /xf0/x9f/x86/x86 NEGATIVE SQUARED LATIN CAPITAL LETTER W ++ /xf0/x9f/x86/x87 NEGATIVE SQUARED LATIN CAPITAL LETTER X ++ /xf0/x9f/x86/x88 NEGATIVE SQUARED LATIN CAPITAL LETTER Y ++ /xf0/x9f/x86/x89 NEGATIVE SQUARED LATIN CAPITAL LETTER Z ++ /xf0/x9f/x86/x8a CROSSED NEGATIVE SQUARED LATIN CAPITAL LETTER P ++ /xf0/x9f/x86/x8b NEGATIVE SQUARED IC ++ /xf0/x9f/x86/x8c NEGATIVE SQUARED PA ++ /xf0/x9f/x86/x8d NEGATIVE SQUARED SA ++ /xf0/x9f/x86/x8e NEGATIVE SQUARED AB ++ /xf0/x9f/x86/x8f NEGATIVE SQUARED WC ++ /xf0/x9f/x86/x90 SQUARE DJ ++ /xf0/x9f/x86/x91 SQUARED CL ++ /xf0/x9f/x86/x92 SQUARED COOL ++ /xf0/x9f/x86/x93 SQUARED FREE ++ /xf0/x9f/x86/x94 SQUARED ID ++ /xf0/x9f/x86/x95 SQUARED NEW ++ /xf0/x9f/x86/x96 SQUARED NG ++ /xf0/x9f/x86/x97 SQUARED OK ++ /xf0/x9f/x86/x98 SQUARED SOS ++ /xf0/x9f/x86/x99 SQUARED UP WITH EXCLAMATION MARK ++ /xf0/x9f/x86/x9a SQUARED VS ++ /xf0/x9f/x87/xa6 REGIONAL INDICATOR SYMBOL LETTER A ++ /xf0/x9f/x87/xa7 REGIONAL INDICATOR SYMBOL LETTER B ++ /xf0/x9f/x87/xa8 REGIONAL INDICATOR SYMBOL LETTER C ++ /xf0/x9f/x87/xa9 REGIONAL INDICATOR SYMBOL LETTER D ++ /xf0/x9f/x87/xaa REGIONAL INDICATOR SYMBOL LETTER E ++ /xf0/x9f/x87/xab REGIONAL INDICATOR SYMBOL LETTER F ++ /xf0/x9f/x87/xac REGIONAL INDICATOR SYMBOL LETTER G ++ /xf0/x9f/x87/xad REGIONAL INDICATOR SYMBOL LETTER H ++ /xf0/x9f/x87/xae REGIONAL INDICATOR SYMBOL LETTER I ++ /xf0/x9f/x87/xaf REGIONAL INDICATOR SYMBOL LETTER J ++ /xf0/x9f/x87/xb0 REGIONAL INDICATOR SYMBOL LETTER K ++ /xf0/x9f/x87/xb1 REGIONAL INDICATOR SYMBOL LETTER L ++ /xf0/x9f/x87/xb2 REGIONAL INDICATOR SYMBOL LETTER M ++ /xf0/x9f/x87/xb3 REGIONAL INDICATOR SYMBOL LETTER N ++ /xf0/x9f/x87/xb4 REGIONAL INDICATOR SYMBOL LETTER O ++ /xf0/x9f/x87/xb5 REGIONAL INDICATOR SYMBOL LETTER P ++ /xf0/x9f/x87/xb6 REGIONAL INDICATOR SYMBOL LETTER Q ++ /xf0/x9f/x87/xb7 REGIONAL INDICATOR SYMBOL LETTER R ++ /xf0/x9f/x87/xb8 REGIONAL INDICATOR SYMBOL LETTER S ++ /xf0/x9f/x87/xb9 REGIONAL INDICATOR SYMBOL LETTER T ++ /xf0/x9f/x87/xba REGIONAL INDICATOR SYMBOL LETTER U ++ /xf0/x9f/x87/xbb REGIONAL INDICATOR SYMBOL LETTER V ++ /xf0/x9f/x87/xbc REGIONAL INDICATOR SYMBOL LETTER W ++ /xf0/x9f/x87/xbd REGIONAL INDICATOR SYMBOL LETTER X ++ /xf0/x9f/x87/xbe REGIONAL INDICATOR SYMBOL LETTER Y ++ /xf0/x9f/x87/xbf REGIONAL INDICATOR SYMBOL LETTER Z ++ /xf0/x9f/x88/x80 SQUARE HIRAGANA HOKA ++ /xf0/x9f/x88/x81 SQUARED KATAKANA KOKO ++ /xf0/x9f/x88/x82 SQUARED KATAKANA SA ++ /xf0/x9f/x88/x90 SQUARED CJK UNIFIED IDEOGRAPH-624B ++ /xf0/x9f/x88/x91 SQUARED CJK UNIFIED IDEOGRAPH-5B57 ++ /xf0/x9f/x88/x92 SQUARED CJK UNIFIED IDEOGRAPH-53CC ++ /xf0/x9f/x88/x93 SQUARED KATAKANA DE ++ /xf0/x9f/x88/x94 SQUARED CJK UNIFIED IDEOGRAPH-4E8C ++ /xf0/x9f/x88/x95 SQUARED CJK UNIFIED IDEOGRAPH-591A ++ /xf0/x9f/x88/x96 SQUARED CJK UNIFIED IDEOGRAPH-89E3 ++ /xf0/x9f/x88/x97 SQUARED CJK UNIFIED IDEOGRAPH-5929 ++ /xf0/x9f/x88/x98 SQUARED CJK UNIFIED IDEOGRAPH-4EA4 ++ /xf0/x9f/x88/x99 SQUARED CJK UNIFIED IDEOGRAPH-6620 ++ /xf0/x9f/x88/x9a SQUARED CJK UNIFIED IDEOGRAPH-7121 ++ /xf0/x9f/x88/x9b SQUARED CJK UNIFIED IDEOGRAPH-6599 ++ /xf0/x9f/x88/x9c SQUARED CJK UNIFIED IDEOGRAPH-524D ++ /xf0/x9f/x88/x9d SQUARED CJK UNIFIED IDEOGRAPH-5F8C ++ /xf0/x9f/x88/x9e SQUARED CJK UNIFIED IDEOGRAPH-518D ++ /xf0/x9f/x88/x9f SQUARED CJK UNIFIED IDEOGRAPH-65B0 ++ /xf0/x9f/x88/xa0 SQUARED CJK UNIFIED IDEOGRAPH-521D ++ /xf0/x9f/x88/xa1 SQUARED CJK UNIFIED IDEOGRAPH-7D42 ++ /xf0/x9f/x88/xa2 SQUARED CJK UNIFIED IDEOGRAPH-751F ++ /xf0/x9f/x88/xa3 SQUARED CJK UNIFIED IDEOGRAPH-8CA9 ++ /xf0/x9f/x88/xa4 SQUARED CJK UNIFIED IDEOGRAPH-58F0 ++ /xf0/x9f/x88/xa5 SQUARED CJK UNIFIED IDEOGRAPH-5439 ++ /xf0/x9f/x88/xa6 SQUARED CJK UNIFIED IDEOGRAPH-6F14 ++ /xf0/x9f/x88/xa7 SQUARED CJK UNIFIED IDEOGRAPH-6295 ++ /xf0/x9f/x88/xa8 SQUARED CJK UNIFIED IDEOGRAPH-6355 ++ /xf0/x9f/x88/xa9 SQUARED CJK UNIFIED IDEOGRAPH-4E00 ++ /xf0/x9f/x88/xaa SQUARED CJK UNIFIED IDEOGRAPH-4E09 ++ /xf0/x9f/x88/xab SQUARED CJK UNIFIED IDEOGRAPH-904A ++ /xf0/x9f/x88/xac SQUARED CJK UNIFIED IDEOGRAPH-5DE6 ++ /xf0/x9f/x88/xad SQUARED CJK UNIFIED IDEOGRAPH-4E2D ++ /xf0/x9f/x88/xae SQUARED CJK UNIFIED IDEOGRAPH-53F3 ++ /xf0/x9f/x88/xaf SQUARED CJK UNIFIED IDEOGRAPH-6307 ++ /xf0/x9f/x88/xb0 SQUARED CJK UNIFIED IDEOGRAPH-8D70 ++ /xf0/x9f/x88/xb1 SQUARED CJK UNIFIED IDEOGRAPH-6253 ++ /xf0/x9f/x88/xb2 SQUARED CJK UNIFIED IDEOGRAPH-7981 ++ /xf0/x9f/x88/xb3 SQUARED CJK UNIFIED IDEOGRAPH-7A7A ++ /xf0/x9f/x88/xb4 SQUARED CJK UNIFIED IDEOGRAPH-5408 ++ /xf0/x9f/x88/xb5 SQUARED CJK UNIFIED IDEOGRAPH-6E80 ++ /xf0/x9f/x88/xb6 SQUARED CJK UNIFIED IDEOGRAPH-6709 ++ /xf0/x9f/x88/xb7 SQUARED CJK UNIFIED IDEOGRAPH-6708 ++ /xf0/x9f/x88/xb8 SQUARED CJK UNIFIED IDEOGRAPH-7533 ++ /xf0/x9f/x88/xb9 SQUARED CJK UNIFIED IDEOGRAPH-5272 ++ /xf0/x9f/x88/xba SQUARED CJK UNIFIED IDEOGRAPH-55B6 ++ /xf0/x9f/x89/x80 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C ++ /xf0/x9f/x89/x81 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09 ++ /xf0/x9f/x89/x82 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C ++ /xf0/x9f/x89/x83 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89 ++ /xf0/x9f/x89/x84 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9 ++ /xf0/x9f/x89/x85 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253 ++ /xf0/x9f/x89/x86 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7 ++ /xf0/x9f/x89/x87 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD ++ /xf0/x9f/x89/x88 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557 ++ /xf0/x9f/x89/x90 CIRCLED IDEOGRAPH ADVANTAGE ++ /xf0/x9f/x89/x91 CIRCLED IDEOGRAPH ACCEPT ++ /xf0/x9f/x8c/x80 CYCLONE ++ /xf0/x9f/x8c/x81 FOGGY ++ /xf0/x9f/x8c/x82 CLOSED UMBRELLA ++ /xf0/x9f/x8c/x83 NIGHT WITH STARS ++ /xf0/x9f/x8c/x84 SUNRISE OVER MOUNTAINS ++ /xf0/x9f/x8c/x85 SUNRISE ++ /xf0/x9f/x8c/x86 CITYSCAPE AT DUSK ++ /xf0/x9f/x8c/x87 SUNSET OVER BUILDINGS ++ /xf0/x9f/x8c/x88 RAINBOW ++ /xf0/x9f/x8c/x89 BRIDGE AT NIGHT ++ /xf0/x9f/x8c/x8a WATER WAVE ++ /xf0/x9f/x8c/x8b VOLCANO ++ /xf0/x9f/x8c/x8c MILKY WAY ++ /xf0/x9f/x8c/x8d EARTH GLOBE EUROPE-AFRICA ++ /xf0/x9f/x8c/x8e EARTH GLOBE AMERICAS ++ /xf0/x9f/x8c/x8f EARTH GLOBE ASIA-AUSTRALIA ++ /xf0/x9f/x8c/x90 GLOBE WITH MERIDIANS ++ /xf0/x9f/x8c/x91 NEW MOON SYMBOL ++ /xf0/x9f/x8c/x92 WAXING CRESCENT MOON SYMBOL ++ /xf0/x9f/x8c/x93 FIRST QUARTER MOON SYMBOL ++ /xf0/x9f/x8c/x94 WAXING GIBBOUS MOON SYMBOL ++ /xf0/x9f/x8c/x95 FULL MOON SYMBOL ++ /xf0/x9f/x8c/x96 WANING GIBBOUS MOON SYMBOL ++ /xf0/x9f/x8c/x97 LAST QUARTER MOON SYMBOL ++ /xf0/x9f/x8c/x98 WANING CRESCENT MOON SYMBOL ++ /xf0/x9f/x8c/x99 CRESCENT MOON ++ /xf0/x9f/x8c/x9a NEW MOON WITH FACE ++ /xf0/x9f/x8c/x9b FIRST QUARTER MOON WITH FACE ++ /xf0/x9f/x8c/x9c LAST QUARTER MOON WITH FACE ++ /xf0/x9f/x8c/x9d FULL MOON WITH FACE ++ /xf0/x9f/x8c/x9e SUN WITH FACE ++ /xf0/x9f/x8c/x9f GLOWING STAR ++ /xf0/x9f/x8c/xa0 SHOOTING STAR ++ /xf0/x9f/x8c/xb0 CHESTNUT ++ /xf0/x9f/x8c/xb1 SEEDLING ++ /xf0/x9f/x8c/xb2 EVERGREEN TREE ++ /xf0/x9f/x8c/xb3 DECIDUOUS TREE ++ /xf0/x9f/x8c/xb4 PALM TREE ++ /xf0/x9f/x8c/xb5 CACTUS ++ /xf0/x9f/x8c/xb7 TULIP ++ /xf0/x9f/x8c/xb8 CHERRY BLOSSOM ++ /xf0/x9f/x8c/xb9 ROSE ++ /xf0/x9f/x8c/xba HIBISCUS ++ /xf0/x9f/x8c/xbb SUNFLOWER ++ /xf0/x9f/x8c/xbc BLOSSOM ++ /xf0/x9f/x8c/xbd EAR OF MAIZE ++ /xf0/x9f/x8c/xbe EAR OF RICE ++ /xf0/x9f/x8c/xbf HERB ++ /xf0/x9f/x8d/x80 FOUR LEAF CLOVER ++ /xf0/x9f/x8d/x81 MAPLE LEAF ++ /xf0/x9f/x8d/x82 FALLEN LEAF ++ /xf0/x9f/x8d/x83 LEAF FLUTTERING IN WIND ++ /xf0/x9f/x8d/x84 MUSHROOM ++ /xf0/x9f/x8d/x85 TOMATO ++ /xf0/x9f/x8d/x86 AUBERGINE ++ /xf0/x9f/x8d/x87 GRAPES ++ /xf0/x9f/x8d/x88 MELON ++ /xf0/x9f/x8d/x89 WATERMELON ++ /xf0/x9f/x8d/x8a TANGERINE ++ /xf0/x9f/x8d/x8b LEMON ++ /xf0/x9f/x8d/x8c BANANA ++ /xf0/x9f/x8d/x8d PINEAPPLE ++ /xf0/x9f/x8d/x8e RED APPLE ++ /xf0/x9f/x8d/x8f GREEN APPLE ++ /xf0/x9f/x8d/x90 PEAR ++ /xf0/x9f/x8d/x91 PEACH ++ /xf0/x9f/x8d/x92 CHERRIES ++ /xf0/x9f/x8d/x93 STRAWBERRY ++ /xf0/x9f/x8d/x94 HAMBURGER ++ /xf0/x9f/x8d/x95 SLICE OF PIZZA ++ /xf0/x9f/x8d/x96 MEAT ON BONE ++ /xf0/x9f/x8d/x97 POULTRY LEG ++ /xf0/x9f/x8d/x98 RICE CRACKER ++ /xf0/x9f/x8d/x99 RICE BALL ++ /xf0/x9f/x8d/x9a COOKED RICE ++ /xf0/x9f/x8d/x9b CURRY AND RICE ++ /xf0/x9f/x8d/x9c STEAMING BOWL ++ /xf0/x9f/x8d/x9d SPAGHETTI ++ /xf0/x9f/x8d/x9e BREAD ++ /xf0/x9f/x8d/x9f FRENCH FRIES ++ /xf0/x9f/x8d/xa0 ROASTED SWEET POTATO ++ /xf0/x9f/x8d/xa1 DANGO ++ /xf0/x9f/x8d/xa2 ODEN ++ /xf0/x9f/x8d/xa3 SUSHI ++ /xf0/x9f/x8d/xa4 FRIED SHRIMP ++ /xf0/x9f/x8d/xa5 FISH CAKE WITH SWIRL DESIGN ++ /xf0/x9f/x8d/xa6 SOFT ICE CREAM ++ /xf0/x9f/x8d/xa7 SHAVED ICE ++ /xf0/x9f/x8d/xa8 ICE CREAM ++ /xf0/x9f/x8d/xa9 DOUGHNUT ++ /xf0/x9f/x8d/xaa COOKIE ++ /xf0/x9f/x8d/xab CHOCOLATE BAR ++ /xf0/x9f/x8d/xac CANDY ++ /xf0/x9f/x8d/xad LOLLIPOP ++ /xf0/x9f/x8d/xae CUSTARD ++ /xf0/x9f/x8d/xaf HONEY POT ++ /xf0/x9f/x8d/xb0 SHORTCAKE ++ /xf0/x9f/x8d/xb1 BENTO BOX ++ /xf0/x9f/x8d/xb2 POT OF FOOD ++ /xf0/x9f/x8d/xb3 COOKING ++ /xf0/x9f/x8d/xb4 FORK AND KNIFE ++ /xf0/x9f/x8d/xb5 TEACUP WITHOUT HANDLE ++ /xf0/x9f/x8d/xb6 SAKE BOTTLE AND CUP ++ /xf0/x9f/x8d/xb7 WINE GLASS ++ /xf0/x9f/x8d/xb8 COCKTAIL GLASS ++ /xf0/x9f/x8d/xb9 TROPICAL DRINK ++ /xf0/x9f/x8d/xba BEER MUG ++ /xf0/x9f/x8d/xbb CLINKING BEER MUGS ++ /xf0/x9f/x8d/xbc BABY BOTTLE ++ /xf0/x9f/x8e/x80 RIBBON ++ /xf0/x9f/x8e/x81 WRAPPED PRESENT ++ /xf0/x9f/x8e/x82 BIRTHDAY CAKE ++ /xf0/x9f/x8e/x83 JACK-O-LANTERN ++ /xf0/x9f/x8e/x84 CHRISTMAS TREE ++ /xf0/x9f/x8e/x85 FATHER CHRISTMAS ++ /xf0/x9f/x8e/x86 FIREWORKS ++ /xf0/x9f/x8e/x87 FIREWORK SPARKLER ++ /xf0/x9f/x8e/x88 BALLOON ++ /xf0/x9f/x8e/x89 PARTY POPPER ++ /xf0/x9f/x8e/x8a CONFETTI BALL ++ /xf0/x9f/x8e/x8b TANABATA TREE ++ /xf0/x9f/x8e/x8c CROSSED FLAGS ++ /xf0/x9f/x8e/x8d PINE DECORATION ++ /xf0/x9f/x8e/x8e JAPANESE DOLLS ++ /xf0/x9f/x8e/x8f CARP STREAMER ++ /xf0/x9f/x8e/x90 WIND CHIME ++ /xf0/x9f/x8e/x91 MOON VIEWING CEREMONY ++ /xf0/x9f/x8e/x92 SCHOOL SATCHEL ++ /xf0/x9f/x8e/x93 GRADUATION CAP ++ /xf0/x9f/x8e/xa0 CAROUSEL HORSE ++ /xf0/x9f/x8e/xa1 FERRIS WHEEL ++ /xf0/x9f/x8e/xa2 ROLLER COASTER ++ /xf0/x9f/x8e/xa3 FISHING POLE AND FISH ++ /xf0/x9f/x8e/xa4 MICROPHONE ++ /xf0/x9f/x8e/xa5 MOVIE CAMERA ++ /xf0/x9f/x8e/xa6 CINEMA ++ /xf0/x9f/x8e/xa7 HEADPHONE ++ /xf0/x9f/x8e/xa8 ARTIST PALETTE ++ /xf0/x9f/x8e/xa9 TOP HAT ++ /xf0/x9f/x8e/xaa CIRCUS TENT ++ /xf0/x9f/x8e/xab TICKET ++ /xf0/x9f/x8e/xac CLAPPER BOARD ++ /xf0/x9f/x8e/xad PERFORMING ARTS ++ /xf0/x9f/x8e/xae VIDEO GAME ++ /xf0/x9f/x8e/xaf DIRECT HIT ++ /xf0/x9f/x8e/xb0 SLOT MACHINE ++ /xf0/x9f/x8e/xb1 BILLIARDS ++ /xf0/x9f/x8e/xb2 GAME DIE ++ /xf0/x9f/x8e/xb3 BOWLING ++ /xf0/x9f/x8e/xb4 FLOWER PLAYING CARDS ++ /xf0/x9f/x8e/xb5 MUSICAL NOTE ++ /xf0/x9f/x8e/xb6 MULTIPLE MUSICAL NOTES ++ /xf0/x9f/x8e/xb7 SAXOPHONE ++ /xf0/x9f/x8e/xb8 GUITAR ++ /xf0/x9f/x8e/xb9 MUSICAL KEYBOARD ++ /xf0/x9f/x8e/xba TRUMPET ++ /xf0/x9f/x8e/xbb VIOLIN ++ /xf0/x9f/x8e/xbc MUSICAL SCORE ++ /xf0/x9f/x8e/xbd RUNNING SHIRT WITH SASH ++ /xf0/x9f/x8e/xbe TENNIS RACQUET AND BALL ++ /xf0/x9f/x8e/xbf SKI AND SKI BOOT ++ /xf0/x9f/x8f/x80 BASKETBALL AND HOOP ++ /xf0/x9f/x8f/x81 CHEQUERED FLAG ++ /xf0/x9f/x8f/x82 SNOWBOARDER ++ /xf0/x9f/x8f/x83 RUNNER ++ /xf0/x9f/x8f/x84 SURFER ++ /xf0/x9f/x8f/x86 TROPHY ++ /xf0/x9f/x8f/x87 HORSE RACING ++ /xf0/x9f/x8f/x88 AMERICAN FOOTBALL ++ /xf0/x9f/x8f/x89 RUGBY FOOTBALL ++ /xf0/x9f/x8f/x8a SWIMMER ++ /xf0/x9f/x8f/xa0 HOUSE BUILDING ++ /xf0/x9f/x8f/xa1 HOUSE WITH GARDEN ++ /xf0/x9f/x8f/xa2 OFFICE BUILDING ++ /xf0/x9f/x8f/xa3 JAPANESE POST OFFICE ++ /xf0/x9f/x8f/xa4 EUROPEAN POST OFFICE ++ /xf0/x9f/x8f/xa5 HOSPITAL ++ /xf0/x9f/x8f/xa6 BANK ++ /xf0/x9f/x8f/xa7 AUTOMATED TELLER MACHINE ++ /xf0/x9f/x8f/xa8 HOTEL ++ /xf0/x9f/x8f/xa9 LOVE HOTEL ++ /xf0/x9f/x8f/xaa CONVENIENCE STORE ++ /xf0/x9f/x8f/xab SCHOOL ++ /xf0/x9f/x8f/xac DEPARTMENT STORE ++ /xf0/x9f/x8f/xad FACTORY ++ /xf0/x9f/x8f/xae IZAKAYA LANTERN ++ /xf0/x9f/x8f/xaf JAPANESE CASTLE ++ /xf0/x9f/x8f/xb0 EUROPEAN CASTLE ++ /xf0/x9f/x90/x80 RAT ++ /xf0/x9f/x90/x81 MOUSE ++ /xf0/x9f/x90/x82 OX ++ /xf0/x9f/x90/x83 WATER BUFFALO ++ /xf0/x9f/x90/x84 COW ++ /xf0/x9f/x90/x85 TIGER ++ /xf0/x9f/x90/x86 LEOPARD ++ /xf0/x9f/x90/x87 RABBIT ++ /xf0/x9f/x90/x88 CAT ++ /xf0/x9f/x90/x89 DRAGON ++ /xf0/x9f/x90/x8a CROCODILE ++ /xf0/x9f/x90/x8b WHALE ++ /xf0/x9f/x90/x8c SNAIL ++ /xf0/x9f/x90/x8d SNAKE ++ /xf0/x9f/x90/x8e HORSE ++ /xf0/x9f/x90/x8f RAM ++ /xf0/x9f/x90/x90 GOAT ++ /xf0/x9f/x90/x91 SHEEP ++ /xf0/x9f/x90/x92 MONKEY ++ /xf0/x9f/x90/x93 ROOSTER ++ /xf0/x9f/x90/x94 CHICKEN ++ /xf0/x9f/x90/x95 DOG ++ /xf0/x9f/x90/x96 PIG ++ /xf0/x9f/x90/x97 BOAR ++ /xf0/x9f/x90/x98 ELEPHANT ++ /xf0/x9f/x90/x99 OCTOPUS ++ /xf0/x9f/x90/x9a SPIRAL SHELL ++ /xf0/x9f/x90/x9b BUG ++ /xf0/x9f/x90/x9c ANT ++ /xf0/x9f/x90/x9d HONEYBEE ++ /xf0/x9f/x90/x9e LADY BEETLE ++ /xf0/x9f/x90/x9f FISH ++ /xf0/x9f/x90/xa0 TROPICAL FISH ++ /xf0/x9f/x90/xa1 BLOWFISH ++ /xf0/x9f/x90/xa2 TURTLE ++ /xf0/x9f/x90/xa3 HATCHING CHICK ++ /xf0/x9f/x90/xa4 BABY CHICK ++ /xf0/x9f/x90/xa5 FRONT-FACING BABY CHICK ++ /xf0/x9f/x90/xa6 BIRD ++ /xf0/x9f/x90/xa7 PENGUIN ++ /xf0/x9f/x90/xa8 KOALA ++ /xf0/x9f/x90/xa9 POODLE ++ /xf0/x9f/x90/xaa DROMEDARY CAMEL ++ /xf0/x9f/x90/xab BACTRIAN CAMEL ++ /xf0/x9f/x90/xac DOLPHIN ++ /xf0/x9f/x90/xad MOUSE FACE ++ /xf0/x9f/x90/xae COW FACE ++ /xf0/x9f/x90/xaf TIGER FACE ++ /xf0/x9f/x90/xb0 RABBIT FACE ++ /xf0/x9f/x90/xb1 CAT FACE ++ /xf0/x9f/x90/xb2 DRAGON FACE ++ /xf0/x9f/x90/xb3 SPOUTING WHALE ++ /xf0/x9f/x90/xb4 HORSE FACE ++ /xf0/x9f/x90/xb5 MONKEY FACE ++ /xf0/x9f/x90/xb6 DOG FACE ++ /xf0/x9f/x90/xb7 PIG FACE ++ /xf0/x9f/x90/xb8 FROG FACE ++ /xf0/x9f/x90/xb9 HAMSTER FACE ++ /xf0/x9f/x90/xba WOLF FACE ++ /xf0/x9f/x90/xbb BEAR FACE ++ /xf0/x9f/x90/xbc PANDA FACE ++ /xf0/x9f/x90/xbd PIG NOSE ++ /xf0/x9f/x90/xbe PAW PRINTS ++ /xf0/x9f/x91/x80 EYES ++ /xf0/x9f/x91/x82 EAR ++ /xf0/x9f/x91/x83 NOSE ++ /xf0/x9f/x91/x84 MOUTH ++ /xf0/x9f/x91/x85 TONGUE ++ /xf0/x9f/x91/x86 WHITE UP POINTING BACKHAND INDEX ++ /xf0/x9f/x91/x87 WHITE DOWN POINTING BACKHAND INDEX ++ /xf0/x9f/x91/x88 WHITE LEFT POINTING BACKHAND INDEX ++ /xf0/x9f/x91/x89 WHITE RIGHT POINTING BACKHAND INDEX ++ /xf0/x9f/x91/x8a FISTED HAND SIGN ++ /xf0/x9f/x91/x8b WAVING HAND SIGN ++ /xf0/x9f/x91/x8c OK HAND SIGN ++ /xf0/x9f/x91/x8d THUMBS UP SIGN ++ /xf0/x9f/x91/x8e THUMBS DOWN SIGN ++ /xf0/x9f/x91/x8f CLAPPING HANDS SIGN ++ /xf0/x9f/x91/x90 OPEN HANDS SIGN ++ /xf0/x9f/x91/x91 CROWN ++ /xf0/x9f/x91/x92 WOMANS HAT ++ /xf0/x9f/x91/x93 EYEGLASSES ++ /xf0/x9f/x91/x94 NECKTIE ++ /xf0/x9f/x91/x95 T-SHIRT ++ /xf0/x9f/x91/x96 JEANS ++ /xf0/x9f/x91/x97 DRESS ++ /xf0/x9f/x91/x98 KIMONO ++ /xf0/x9f/x91/x99 BIKINI ++ /xf0/x9f/x91/x9a WOMANS CLOTHES ++ /xf0/x9f/x91/x9b PURSE ++ /xf0/x9f/x91/x9c HANDBAG ++ /xf0/x9f/x91/x9d POUCH ++ /xf0/x9f/x91/x9e MANS SHOE ++ /xf0/x9f/x91/x9f ATHLETIC SHOE ++ /xf0/x9f/x91/xa0 HIGH-HEELED SHOE ++ /xf0/x9f/x91/xa1 WOMANS SANDAL ++ /xf0/x9f/x91/xa2 WOMANS BOOTS ++ /xf0/x9f/x91/xa3 FOOTPRINTS ++ /xf0/x9f/x91/xa4 BUST IN SILHOUETTE ++ /xf0/x9f/x91/xa5 BUSTS IN SILHOUETTE ++ /xf0/x9f/x91/xa6 BOY ++ /xf0/x9f/x91/xa7 GIRL ++ /xf0/x9f/x91/xa8 MAN ++ /xf0/x9f/x91/xa9 WOMAN ++ /xf0/x9f/x91/xaa FAMILY ++ /xf0/x9f/x91/xab MAN AND WOMAN HOLDING HANDS ++ /xf0/x9f/x91/xac TWO MEN HOLDING HANDS ++ /xf0/x9f/x91/xad TWO WOMEN HOLDING HANDS ++ /xf0/x9f/x91/xae POLICE OFFICER ++ /xf0/x9f/x91/xaf WOMAN WITH BUNNY EARS ++ /xf0/x9f/x91/xb0 BRIDE WITH VEIL ++ /xf0/x9f/x91/xb1 PERSON WITH BLOND HAIR ++ /xf0/x9f/x91/xb2 MAN WITH GUA PI MAO ++ /xf0/x9f/x91/xb3 MAN WITH TURBAN ++ /xf0/x9f/x91/xb4 OLDER MAN ++ /xf0/x9f/x91/xb5 OLDER WOMAN ++ /xf0/x9f/x91/xb6 BABY ++ /xf0/x9f/x91/xb7 CONSTRUCTION WORKER ++ /xf0/x9f/x91/xb8 PRINCESS ++ /xf0/x9f/x91/xb9 JAPANESE OGRE ++ /xf0/x9f/x91/xba JAPANESE GOBLIN ++ /xf0/x9f/x91/xbb GHOST ++ /xf0/x9f/x91/xbc BABY ANGEL ++ /xf0/x9f/x91/xbd EXTRATERRESTRIAL ALIEN ++ /xf0/x9f/x91/xbe ALIEN MONSTER ++ /xf0/x9f/x91/xbf IMP ++ /xf0/x9f/x92/x80 SKULL ++ /xf0/x9f/x92/x81 INFORMATION DESK PERSON ++ /xf0/x9f/x92/x82 GUARDSMAN ++ /xf0/x9f/x92/x83 DANCER ++ /xf0/x9f/x92/x84 LIPSTICK ++ /xf0/x9f/x92/x85 NAIL POLISH ++ /xf0/x9f/x92/x86 FACE MASSAGE ++ /xf0/x9f/x92/x87 HAIRCUT ++ /xf0/x9f/x92/x88 BARBER POLE ++ /xf0/x9f/x92/x89 SYRINGE ++ /xf0/x9f/x92/x8a PILL ++ /xf0/x9f/x92/x8b KISS MARK ++ /xf0/x9f/x92/x8c LOVE LETTER ++ /xf0/x9f/x92/x8d RING ++ /xf0/x9f/x92/x8e GEM STONE ++ /xf0/x9f/x92/x8f KISS ++ /xf0/x9f/x92/x90 BOUQUET ++ /xf0/x9f/x92/x91 COUPLE WITH HEART ++ /xf0/x9f/x92/x92 WEDDING ++ /xf0/x9f/x92/x93 BEATING HEART ++ /xf0/x9f/x92/x94 BROKEN HEART ++ /xf0/x9f/x92/x95 TWO HEARTS ++ /xf0/x9f/x92/x96 SPARKLING HEART ++ /xf0/x9f/x92/x97 GROWING HEART ++ /xf0/x9f/x92/x98 HEART WITH ARROW ++ /xf0/x9f/x92/x99 BLUE HEART ++ /xf0/x9f/x92/x9a GREEN HEART ++ /xf0/x9f/x92/x9b YELLOW HEART ++ /xf0/x9f/x92/x9c PURPLE HEART ++ /xf0/x9f/x92/x9d HEART WITH RIBBON ++ /xf0/x9f/x92/x9e REVOLVING HEARTS ++ /xf0/x9f/x92/x9f HEART DECORATION ++ /xf0/x9f/x92/xa0 DIAMOND SHAPE WITH A DOT INSIDE ++ /xf0/x9f/x92/xa1 ELECTRIC LIGHT BULB ++ /xf0/x9f/x92/xa2 ANGER SYMBOL ++ /xf0/x9f/x92/xa3 BOMB ++ /xf0/x9f/x92/xa4 SLEEPING SYMBOL ++ /xf0/x9f/x92/xa5 COLLISION SYMBOL ++ /xf0/x9f/x92/xa6 SPLASHING SWEAT SYMBOL ++ /xf0/x9f/x92/xa7 DROPLET ++ /xf0/x9f/x92/xa8 DASH SYMBOL ++ /xf0/x9f/x92/xa9 PILE OF POO ++ /xf0/x9f/x92/xaa FLEXED BICEPS ++ /xf0/x9f/x92/xab DIZZY SYMBOL ++ /xf0/x9f/x92/xac SPEECH BALLOON ++ /xf0/x9f/x92/xad THOUGHT BALLOON ++ /xf0/x9f/x92/xae WHITE FLOWER ++ /xf0/x9f/x92/xaf HUNDRED POINTS SYMBOL ++ /xf0/x9f/x92/xb0 MONEY BAG ++ /xf0/x9f/x92/xb1 CURRENCY EXCHANGE ++ /xf0/x9f/x92/xb2 HEAVY DOLLAR SIGN ++ /xf0/x9f/x92/xb3 CREDIT CARD ++ /xf0/x9f/x92/xb4 BANKNOTE WITH YEN SIGN ++ /xf0/x9f/x92/xb5 BANKNOTE WITH DOLLAR SIGN ++ /xf0/x9f/x92/xb6 BANKNOTE WITH EURO SIGN ++ /xf0/x9f/x92/xb7 BANKNOTE WITH POUND SIGN ++ /xf0/x9f/x92/xb8 MONEY WITH WINGS ++ /xf0/x9f/x92/xb9 CHART WITH UPWARDS TREND AND YEN SIGN ++ /xf0/x9f/x92/xba SEAT ++ /xf0/x9f/x92/xbb PERSONAL COMPUTER ++ /xf0/x9f/x92/xbc BRIEFCASE ++ /xf0/x9f/x92/xbd MINIDISC ++ /xf0/x9f/x92/xbe FLOPPY DISK ++ /xf0/x9f/x92/xbf OPTICAL DISC ++ /xf0/x9f/x93/x80 DVD ++ /xf0/x9f/x93/x81 FILE FOLDER ++ /xf0/x9f/x93/x82 OPEN FILE FOLDER ++ /xf0/x9f/x93/x83 PAGE WITH CURL ++ /xf0/x9f/x93/x84 PAGE FACING UP ++ /xf0/x9f/x93/x85 CALENDAR ++ /xf0/x9f/x93/x86 TEAR-OFF CALENDAR ++ /xf0/x9f/x93/x87 CARD INDEX ++ /xf0/x9f/x93/x88 CHART WITH UPWARDS TREND ++ /xf0/x9f/x93/x89 CHART WITH DOWNWARDS TREND ++ /xf0/x9f/x93/x8a BAR CHART ++ /xf0/x9f/x93/x8b CLIPBOARD ++ /xf0/x9f/x93/x8c PUSHPIN ++ /xf0/x9f/x93/x8d ROUND PUSHPIN ++ /xf0/x9f/x93/x8e PAPERCLIP ++ /xf0/x9f/x93/x8f STRAIGHT RULER ++ /xf0/x9f/x93/x90 TRIANGULAR RULER ++ /xf0/x9f/x93/x91 BOOKMARK TABS ++ /xf0/x9f/x93/x92 LEDGER ++ /xf0/x9f/x93/x93 NOTEBOOK ++ /xf0/x9f/x93/x94 NOTEBOOK WITH DECORATIVE COVER ++ /xf0/x9f/x93/x95 CLOSED BOOK ++ /xf0/x9f/x93/x96 OPEN BOOK ++ /xf0/x9f/x93/x97 GREEN BOOK ++ /xf0/x9f/x93/x98 BLUE BOOK ++ /xf0/x9f/x93/x99 ORANGE BOOK ++ /xf0/x9f/x93/x9a BOOKS ++ /xf0/x9f/x93/x9b NAME BADGE ++ /xf0/x9f/x93/x9c SCROLL ++ /xf0/x9f/x93/x9d MEMO ++ /xf0/x9f/x93/x9e TELEPHONE RECEIVER ++ /xf0/x9f/x93/x9f PAGER ++ /xf0/x9f/x93/xa0 FAX MACHINE ++ /xf0/x9f/x93/xa1 SATELLITE ANTENNA ++ /xf0/x9f/x93/xa2 PUBLIC ADDRESS LOUDSPEAKER ++ /xf0/x9f/x93/xa3 CHEERING MEGAPHONE ++ /xf0/x9f/x93/xa4 OUTBOX TRAY ++ /xf0/x9f/x93/xa5 INBOX TRAY ++ /xf0/x9f/x93/xa6 PACKAGE ++ /xf0/x9f/x93/xa7 E-MAIL SYMBOL ++ /xf0/x9f/x93/xa8 INCOMING ENVELOPE ++ /xf0/x9f/x93/xa9 ENVELOPE WITH DOWNWARDS ARROW ABOVE ++ /xf0/x9f/x93/xaa CLOSED MAILBOX WITH LOWERED FLAG ++ /xf0/x9f/x93/xab CLOSED MAILBOX WITH RAISED FLAG ++ /xf0/x9f/x93/xac OPEN MAILBOX WITH RAISED FLAG ++ /xf0/x9f/x93/xad OPEN MAILBOX WITH LOWERED FLAG ++ /xf0/x9f/x93/xae POSTBOX ++ /xf0/x9f/x93/xaf POSTAL HORN ++ /xf0/x9f/x93/xb0 NEWSPAPER ++ /xf0/x9f/x93/xb1 MOBILE PHONE ++ /xf0/x9f/x93/xb2 MOBILE PHONE WITH RIGHTWARDS ARROW AT LEFT ++ /xf0/x9f/x93/xb3 VIBRATION MODE ++ /xf0/x9f/x93/xb4 MOBILE PHONE OFF ++ /xf0/x9f/x93/xb5 NO MOBILE PHONES ++ /xf0/x9f/x93/xb6 ANTENNA WITH BARS ++ /xf0/x9f/x93/xb7 CAMERA ++ /xf0/x9f/x93/xb9 VIDEO CAMERA ++ /xf0/x9f/x93/xba TELEVISION ++ /xf0/x9f/x93/xbb RADIO ++ /xf0/x9f/x93/xbc VIDEOCASSETTE ++ /xf0/x9f/x94/x80 TWISTED RIGHTWARDS ARROWS ++ /xf0/x9f/x94/x81 CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS ++ /xf0/x9f/x94/x82 CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS WITH CIRCLED ONE OVERLAY ++ /xf0/x9f/x94/x83 CLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS ++ /xf0/x9f/x94/x84 ANTICLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS ++ /xf0/x9f/x94/x85 LOW BRIGHTNESS SYMBOL ++ /xf0/x9f/x94/x86 HIGH BRIGHTNESS SYMBOL ++ /xf0/x9f/x94/x87 SPEAKER WITH CANCELLATION STROKE ++ /xf0/x9f/x94/x88 SPEAKER ++ /xf0/x9f/x94/x89 SPEAKER WITH ONE SOUND WAVE ++ /xf0/x9f/x94/x8a SPEAKER WITH THREE SOUND WAVES ++ /xf0/x9f/x94/x8b BATTERY ++ /xf0/x9f/x94/x8c ELECTRIC PLUG ++ /xf0/x9f/x94/x8d LEFT-POINTING MAGNIFYING GLASS ++ /xf0/x9f/x94/x8e RIGHT-POINTING MAGNIFYING GLASS ++ /xf0/x9f/x94/x8f LOCK WITH INK PEN ++ /xf0/x9f/x94/x90 CLOSED LOCK WITH KEY ++ /xf0/x9f/x94/x91 KEY ++ /xf0/x9f/x94/x92 LOCK ++ /xf0/x9f/x94/x93 OPEN LOCK ++ /xf0/x9f/x94/x94 BELL ++ /xf0/x9f/x94/x95 BELL WITH CANCELLATION STROKE ++ /xf0/x9f/x94/x96 BOOKMARK ++ /xf0/x9f/x94/x97 LINK SYMBOL ++ /xf0/x9f/x94/x98 RADIO BUTTON ++ /xf0/x9f/x94/x99 BACK WITH LEFTWARDS ARROW ABOVE ++ /xf0/x9f/x94/x9a END WITH LEFTWARDS ARROW ABOVE ++ /xf0/x9f/x94/x9b ON WITH EXCLAMATION MARK WITH LEFT RIGHT ARROW ABOVE ++ /xf0/x9f/x94/x9c SOON WITH RIGHTWARDS ARROW ABOVE ++ /xf0/x9f/x94/x9d TOP WITH UPWARDS ARROW ABOVE ++ /xf0/x9f/x94/x9e NO ONE UNDER EIGHTEEN SYMBOL ++ /xf0/x9f/x94/x9f KEYCAP TEN ++ /xf0/x9f/x94/xa0 INPUT SYMBOL FOR LATIN CAPITAL LETTERS ++ /xf0/x9f/x94/xa1 INPUT SYMBOL FOR LATIN SMALL LETTERS ++ /xf0/x9f/x94/xa2 INPUT SYMBOL FOR NUMBERS ++ /xf0/x9f/x94/xa3 INPUT SYMBOL FOR SYMBOLS ++ /xf0/x9f/x94/xa4 INPUT SYMBOL FOR LATIN LETTERS ++ /xf0/x9f/x94/xa5 FIRE ++ /xf0/x9f/x94/xa6 ELECTRIC TORCH ++ /xf0/x9f/x94/xa7 WRENCH ++ /xf0/x9f/x94/xa8 HAMMER ++ /xf0/x9f/x94/xa9 NUT AND BOLT ++ /xf0/x9f/x94/xaa HOCHO ++ /xf0/x9f/x94/xab PISTOL ++ /xf0/x9f/x94/xac MICROSCOPE ++ /xf0/x9f/x94/xad TELESCOPE ++ /xf0/x9f/x94/xae CRYSTAL BALL ++ /xf0/x9f/x94/xaf SIX POINTED STAR WITH MIDDLE DOT ++ /xf0/x9f/x94/xb0 JAPANESE SYMBOL FOR BEGINNER ++ /xf0/x9f/x94/xb1 TRIDENT EMBLEM ++ /xf0/x9f/x94/xb2 BLACK SQUARE BUTTON ++ /xf0/x9f/x94/xb3 WHITE SQUARE BUTTON ++ /xf0/x9f/x94/xb4 LARGE RED CIRCLE ++ /xf0/x9f/x94/xb5 LARGE BLUE CIRCLE ++ /xf0/x9f/x94/xb6 LARGE ORANGE DIAMOND ++ /xf0/x9f/x94/xb7 LARGE BLUE DIAMOND ++ /xf0/x9f/x94/xb8 SMALL ORANGE DIAMOND ++ /xf0/x9f/x94/xb9 SMALL BLUE DIAMOND ++ /xf0/x9f/x94/xba UP-POINTING RED TRIANGLE ++ /xf0/x9f/x94/xbb DOWN-POINTING RED TRIANGLE ++ /xf0/x9f/x94/xbc UP-POINTING SMALL RED TRIANGLE ++ /xf0/x9f/x94/xbd DOWN-POINTING SMALL RED TRIANGLE ++ /xf0/x9f/x95/x90 CLOCK FACE ONE OCLOCK ++ /xf0/x9f/x95/x91 CLOCK FACE TWO OCLOCK ++ /xf0/x9f/x95/x92 CLOCK FACE THREE OCLOCK ++ /xf0/x9f/x95/x93 CLOCK FACE FOUR OCLOCK ++ /xf0/x9f/x95/x94 CLOCK FACE FIVE OCLOCK ++ /xf0/x9f/x95/x95 CLOCK FACE SIX OCLOCK ++ /xf0/x9f/x95/x96 CLOCK FACE SEVEN OCLOCK ++ /xf0/x9f/x95/x97 CLOCK FACE EIGHT OCLOCK ++ /xf0/x9f/x95/x98 CLOCK FACE NINE OCLOCK ++ /xf0/x9f/x95/x99 CLOCK FACE TEN OCLOCK ++ /xf0/x9f/x95/x9a CLOCK FACE ELEVEN OCLOCK ++ /xf0/x9f/x95/x9b CLOCK FACE TWELVE OCLOCK ++ /xf0/x9f/x95/x9c CLOCK FACE ONE-THIRTY ++ /xf0/x9f/x95/x9d CLOCK FACE TWO-THIRTY ++ /xf0/x9f/x95/x9e CLOCK FACE THREE-THIRTY ++ /xf0/x9f/x95/x9f CLOCK FACE FOUR-THIRTY ++ /xf0/x9f/x95/xa0 CLOCK FACE FIVE-THIRTY ++ /xf0/x9f/x95/xa1 CLOCK FACE SIX-THIRTY ++ /xf0/x9f/x95/xa2 CLOCK FACE SEVEN-THIRTY ++ /xf0/x9f/x95/xa3 CLOCK FACE EIGHT-THIRTY ++ /xf0/x9f/x95/xa4 CLOCK FACE NINE-THIRTY ++ /xf0/x9f/x95/xa5 CLOCK FACE TEN-THIRTY ++ /xf0/x9f/x95/xa6 CLOCK FACE ELEVEN-THIRTY ++ /xf0/x9f/x95/xa7 CLOCK FACE TWELVE-THIRTY ++ /xf0/x9f/x97/xbb MOUNT FUJI ++ /xf0/x9f/x97/xbc TOKYO TOWER ++ /xf0/x9f/x97/xbd STATUE OF LIBERTY ++ /xf0/x9f/x97/xbe SILHOUETTE OF JAPAN ++ /xf0/x9f/x97/xbf MOYAI ++ /xf0/x9f/x98/x81 GRINNING FACE WITH SMILING EYES ++ /xf0/x9f/x98/x82 FACE WITH TEARS OF JOY ++ /xf0/x9f/x98/x83 SMILING FACE WITH OPEN MOUTH ++ /xf0/x9f/x98/x84 SMILING FACE WITH OPEN MOUTH AND SMILING EYES ++ /xf0/x9f/x98/x85 SMILING FACE WITH OPEN MOUTH AND COLD SWEAT ++ /xf0/x9f/x98/x86 SMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYES ++ /xf0/x9f/x98/x87 SMILING FACE WITH HALO ++ /xf0/x9f/x98/x88 SMILING FACE WITH HORNS ++ /xf0/x9f/x98/x89 WINKING FACE ++ /xf0/x9f/x98/x8a SMILING FACE WITH SMILING EYES ++ /xf0/x9f/x98/x8b FACE SAVOURING DELICIOUS FOOD ++ /xf0/x9f/x98/x8c RELIEVED FACE ++ /xf0/x9f/x98/x8d SMILING FACE WITH HEART-SHAPED EYES ++ /xf0/x9f/x98/x8e SMILING FACE WITH SUNGLASSES ++ /xf0/x9f/x98/x8f SMIRKING FACE ++ /xf0/x9f/x98/x90 NEUTRAL FACE ++ /xf0/x9f/x98/x92 UNAMUSED FACE ++ /xf0/x9f/x98/x93 FACE WITH COLD SWEAT ++ /xf0/x9f/x98/x94 PENSIVE FACE ++ /xf0/x9f/x98/x96 CONFOUNDED FACE ++ /xf0/x9f/x98/x98 FACE THROWING A KISS ++ /xf0/x9f/x98/x9a KISSING FACE WITH CLOSED EYES ++ /xf0/x9f/x98/x9c FACE WITH STUCK-OUT TONGUE AND WINKING EYE ++ /xf0/x9f/x98/x9d FACE WITH STUCK-OUT TONGUE AND TIGHTLY-CLOSED EYES ++ /xf0/x9f/x98/x9e DISAPPOINTED FACE ++ /xf0/x9f/x98/xa0 ANGRY FACE ++ /xf0/x9f/x98/xa1 POUTING FACE ++ /xf0/x9f/x98/xa2 CRYING FACE ++ /xf0/x9f/x98/xa3 PERSEVERING FACE ++ /xf0/x9f/x98/xa4 FACE WITH LOOK OF TRIUMPH ++ /xf0/x9f/x98/xa5 DISAPPOINTED BUT RELIEVED FACE ++ /xf0/x9f/x98/xa8 FEARFUL FACE ++ /xf0/x9f/x98/xa9 WEARY FACE ++ /xf0/x9f/x98/xaa SLEEPY FACE ++ /xf0/x9f/x98/xab TIRED FACE ++ /xf0/x9f/x98/xad LOUDLY CRYING FACE ++ /xf0/x9f/x98/xb0 FACE WITH OPEN MOUTH AND COLD SWEAT ++ /xf0/x9f/x98/xb1 FACE SCREAMING IN FEAR ++ /xf0/x9f/x98/xb2 ASTONISHED FACE ++ /xf0/x9f/x98/xb3 FLUSHED FACE ++ /xf0/x9f/x98/xb5 DIZZY FACE ++ /xf0/x9f/x98/xb6 FACE WITHOUT MOUTH ++ /xf0/x9f/x98/xb7 FACE WITH MEDICAL MASK ++ /xf0/x9f/x98/xb8 GRINNING CAT FACE WITH SMILING EYES ++ /xf0/x9f/x98/xb9 CAT FACE WITH TEARS OF JOY ++ /xf0/x9f/x98/xba SMILING CAT FACE WITH OPEN MOUTH ++ /xf0/x9f/x98/xbb SMILING CAT FACE WITH HEART-SHAPED EYES ++ /xf0/x9f/x98/xbc CAT FACE WITH WRY SMILE ++ /xf0/x9f/x98/xbd KISSING CAT FACE WITH CLOSED EYES ++ /xf0/x9f/x98/xbe POUTING CAT FACE ++ /xf0/x9f/x98/xbf CRYING CAT FACE ++ /xf0/x9f/x99/x80 WEARY CAT FACE ++ /xf0/x9f/x99/x85 FACE WITH NO GOOD GESTURE ++ /xf0/x9f/x99/x86 FACE WITH OK GESTURE ++ /xf0/x9f/x99/x87 PERSON BOWING DEEPLY ++ /xf0/x9f/x99/x88 SEE-NO-EVIL MONKEY ++ /xf0/x9f/x99/x89 HEAR-NO-EVIL MONKEY ++ /xf0/x9f/x99/x8a SPEAK-NO-EVIL MONKEY ++ /xf0/x9f/x99/x8b HAPPY PERSON RAISING ONE HAND ++ /xf0/x9f/x99/x8c PERSON RAISING BOTH HANDS IN CELEBRATION ++ /xf0/x9f/x99/x8d PERSON FROWNING ++ /xf0/x9f/x99/x8e PERSON WITH POUTING FACE ++ /xf0/x9f/x99/x8f PERSON WITH FOLDED HANDS ++ /xf0/x9f/x9a/x80 ROCKET ++ /xf0/x9f/x9a/x81 HELICOPTER ++ /xf0/x9f/x9a/x82 STEAM LOCOMOTIVE ++ /xf0/x9f/x9a/x83 RAILWAY CAR ++ /xf0/x9f/x9a/x84 HIGH-SPEED TRAIN ++ /xf0/x9f/x9a/x85 HIGH-SPEED TRAIN WITH BULLET NOSE ++ /xf0/x9f/x9a/x86 TRAIN ++ /xf0/x9f/x9a/x87 METRO ++ /xf0/x9f/x9a/x88 LIGHT RAIL ++ /xf0/x9f/x9a/x89 STATION ++ /xf0/x9f/x9a/x8a TRAM ++ /xf0/x9f/x9a/x8b TRAM CAR ++ /xf0/x9f/x9a/x8c BUS ++ /xf0/x9f/x9a/x8d ONCOMING BUS ++ /xf0/x9f/x9a/x8e TROLLEYBUS ++ /xf0/x9f/x9a/x8f BUS STOP ++ /xf0/x9f/x9a/x90 MINIBUS ++ /xf0/x9f/x9a/x91 AMBULANCE ++ /xf0/x9f/x9a/x92 FIRE ENGINE ++ /xf0/x9f/x9a/x93 POLICE CAR ++ /xf0/x9f/x9a/x94 ONCOMING POLICE CAR ++ /xf0/x9f/x9a/x95 TAXI ++ /xf0/x9f/x9a/x96 ONCOMING TAXI ++ /xf0/x9f/x9a/x97 AUTOMOBILE ++ /xf0/x9f/x9a/x98 ONCOMING AUTOMOBILE ++ /xf0/x9f/x9a/x99 RECREATIONAL VEHICLE ++ /xf0/x9f/x9a/x9a DELIVERY TRUCK ++ /xf0/x9f/x9a/x9b ARTICULATED LORRY ++ /xf0/x9f/x9a/x9c TRACTOR ++ /xf0/x9f/x9a/x9d MONORAIL ++ /xf0/x9f/x9a/x9e MOUNTAIN RAILWAY ++ /xf0/x9f/x9a/x9f SUSPENSION RAILWAY ++ /xf0/x9f/x9a/xa0 MOUNTAIN CABLEWAY ++ /xf0/x9f/x9a/xa1 AERIAL TRAMWAY ++ /xf0/x9f/x9a/xa2 SHIP ++ /xf0/x9f/x9a/xa3 ROWBOAT ++ /xf0/x9f/x9a/xa4 SPEEDBOAT ++ /xf0/x9f/x9a/xa5 HORIZONTAL TRAFFIC LIGHT ++ /xf0/x9f/x9a/xa6 VERTICAL TRAFFIC LIGHT ++ /xf0/x9f/x9a/xa7 CONSTRUCTION SIGN ++ /xf0/x9f/x9a/xa8 POLICE CARS REVOLVING LIGHT ++ /xf0/x9f/x9a/xa9 TRIANGULAR FLAG ON POST ++ /xf0/x9f/x9a/xaa DOOR ++ /xf0/x9f/x9a/xab NO ENTRY SIGN ++ /xf0/x9f/x9a/xac SMOKING SYMBOL ++ /xf0/x9f/x9a/xad NO SMOKING SYMBOL ++ /xf0/x9f/x9a/xae PUT LITTER IN ITS PLACE SYMBOL ++ /xf0/x9f/x9a/xaf DO NOT LITTER SYMBOL ++ /xf0/x9f/x9a/xb0 POTABLE WATER SYMBOL ++ /xf0/x9f/x9a/xb1 NON-POTABLE WATER SYMBOL ++ /xf0/x9f/x9a/xb2 BICYCLE ++ /xf0/x9f/x9a/xb3 NO BICYCLES ++ /xf0/x9f/x9a/xb4 BICYCLIST ++ /xf0/x9f/x9a/xb5 MOUNTAIN BICYCLIST ++ /xf0/x9f/x9a/xb6 PEDESTRIAN ++ /xf0/x9f/x9a/xb7 NO PEDESTRIANS ++ /xf0/x9f/x9a/xb8 CHILDREN CROSSING ++ /xf0/x9f/x9a/xb9 MENS SYMBOL ++ /xf0/x9f/x9a/xba WOMENS SYMBOL ++ /xf0/x9f/x9a/xbb RESTROOM ++ /xf0/x9f/x9a/xbc BABY SYMBOL ++ /xf0/x9f/x9a/xbd TOILET ++ /xf0/x9f/x9a/xbe WATER CLOSET ++ /xf0/x9f/x9a/xbf SHOWER ++ /xf0/x9f/x9b/x80 BATH ++ /xf0/x9f/x9b/x81 BATHTUB ++ /xf0/x9f/x9b/x82 PASSPORT CONTROL ++ /xf0/x9f/x9b/x83 CUSTOMS ++ /xf0/x9f/x9b/x84 BAGGAGE CLAIM ++ /xf0/x9f/x9b/x85 LEFT LUGGAGE ++ /xf0/x9f/x9c/x80 ALCHEMICAL SYMBOL FOR QUINTESSENCE ++ /xf0/x9f/x9c/x81 ALCHEMICAL SYMBOL FOR AIR ++ /xf0/x9f/x9c/x82 ALCHEMICAL SYMBOL FOR FIRE ++ /xf0/x9f/x9c/x83 ALCHEMICAL SYMBOL FOR EARTH ++ /xf0/x9f/x9c/x84 ALCHEMICAL SYMBOL FOR WATER ++ /xf0/x9f/x9c/x85 ALCHEMICAL SYMBOL FOR AQUAFORTIS ++ /xf0/x9f/x9c/x86 ALCHEMICAL SYMBOL FOR AQUA REGIA ++ /xf0/x9f/x9c/x87 ALCHEMICAL SYMBOL FOR AQUA REGIA-2 ++ /xf0/x9f/x9c/x88 ALCHEMICAL SYMBOL FOR AQUA VITAE ++ /xf0/x9f/x9c/x89 ALCHEMICAL SYMBOL FOR AQUA VITAE-2 ++ /xf0/x9f/x9c/x8a ALCHEMICAL SYMBOL FOR VINEGAR ++ /xf0/x9f/x9c/x8b ALCHEMICAL SYMBOL FOR VINEGAR-2 ++ /xf0/x9f/x9c/x8c ALCHEMICAL SYMBOL FOR VINEGAR-3 ++ /xf0/x9f/x9c/x8d ALCHEMICAL SYMBOL FOR SULFUR ++ /xf0/x9f/x9c/x8e ALCHEMICAL SYMBOL FOR PHILOSOPHERS SULFUR ++ /xf0/x9f/x9c/x8f ALCHEMICAL SYMBOL FOR BLACK SULFUR ++ /xf0/x9f/x9c/x90 ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE ++ /xf0/x9f/x9c/x91 ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE-2 ++ /xf0/x9f/x9c/x92 ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE-3 ++ /xf0/x9f/x9c/x93 ALCHEMICAL SYMBOL FOR CINNABAR ++ /xf0/x9f/x9c/x94 ALCHEMICAL SYMBOL FOR SALT ++ /xf0/x9f/x9c/x95 ALCHEMICAL SYMBOL FOR NITRE ++ /xf0/x9f/x9c/x96 ALCHEMICAL SYMBOL FOR VITRIOL ++ /xf0/x9f/x9c/x97 ALCHEMICAL SYMBOL FOR VITRIOL-2 ++ /xf0/x9f/x9c/x98 ALCHEMICAL SYMBOL FOR ROCK SALT ++ /xf0/x9f/x9c/x99 ALCHEMICAL SYMBOL FOR ROCK SALT-2 ++ /xf0/x9f/x9c/x9a ALCHEMICAL SYMBOL FOR GOLD ++ /xf0/x9f/x9c/x9b ALCHEMICAL SYMBOL FOR SILVER ++ /xf0/x9f/x9c/x9c ALCHEMICAL SYMBOL FOR IRON ORE ++ /xf0/x9f/x9c/x9d ALCHEMICAL SYMBOL FOR IRON ORE-2 ++ /xf0/x9f/x9c/x9e ALCHEMICAL SYMBOL FOR CROCUS OF IRON ++ /xf0/x9f/x9c/x9f ALCHEMICAL SYMBOL FOR REGULUS OF IRON ++ /xf0/x9f/x9c/xa0 ALCHEMICAL SYMBOL FOR COPPER ORE ++ /xf0/x9f/x9c/xa1 ALCHEMICAL SYMBOL FOR IRON-COPPER ORE ++ /xf0/x9f/x9c/xa2 ALCHEMICAL SYMBOL FOR SUBLIMATE OF COPPER ++ /xf0/x9f/x9c/xa3 ALCHEMICAL SYMBOL FOR CROCUS OF COPPER ++ /xf0/x9f/x9c/xa4 ALCHEMICAL SYMBOL FOR CROCUS OF COPPER-2 ++ /xf0/x9f/x9c/xa5 ALCHEMICAL SYMBOL FOR COPPER ANTIMONIATE ++ /xf0/x9f/x9c/xa6 ALCHEMICAL SYMBOL FOR SALT OF COPPER ANTIMONIATE ++ /xf0/x9f/x9c/xa7 ALCHEMICAL SYMBOL FOR SUBLIMATE OF SALT OF COPPER ++ /xf0/x9f/x9c/xa8 ALCHEMICAL SYMBOL FOR VERDIGRIS ++ /xf0/x9f/x9c/xa9 ALCHEMICAL SYMBOL FOR TIN ORE ++ /xf0/x9f/x9c/xaa ALCHEMICAL SYMBOL FOR LEAD ORE ++ /xf0/x9f/x9c/xab ALCHEMICAL SYMBOL FOR ANTIMONY ORE ++ /xf0/x9f/x9c/xac ALCHEMICAL SYMBOL FOR SUBLIMATE OF ANTIMONY ++ /xf0/x9f/x9c/xad ALCHEMICAL SYMBOL FOR SALT OF ANTIMONY ++ /xf0/x9f/x9c/xae ALCHEMICAL SYMBOL FOR SUBLIMATE OF SALT OF ANTIMONY ++ /xf0/x9f/x9c/xaf ALCHEMICAL SYMBOL FOR VINEGAR OF ANTIMONY ++ /xf0/x9f/x9c/xb0 ALCHEMICAL SYMBOL FOR REGULUS OF ANTIMONY ++ /xf0/x9f/x9c/xb1 ALCHEMICAL SYMBOL FOR REGULUS OF ANTIMONY-2 ++ /xf0/x9f/x9c/xb2 ALCHEMICAL SYMBOL FOR REGULUS ++ /xf0/x9f/x9c/xb3 ALCHEMICAL SYMBOL FOR REGULUS-2 ++ /xf0/x9f/x9c/xb4 ALCHEMICAL SYMBOL FOR REGULUS-3 ++ /xf0/x9f/x9c/xb5 ALCHEMICAL SYMBOL FOR REGULUS-4 ++ /xf0/x9f/x9c/xb6 ALCHEMICAL SYMBOL FOR ALKALI ++ /xf0/x9f/x9c/xb7 ALCHEMICAL SYMBOL FOR ALKALI-2 ++ /xf0/x9f/x9c/xb8 ALCHEMICAL SYMBOL FOR MARCASITE ++ /xf0/x9f/x9c/xb9 ALCHEMICAL SYMBOL FOR SAL-AMMONIAC ++ /xf0/x9f/x9c/xba ALCHEMICAL SYMBOL FOR ARSENIC ++ /xf0/x9f/x9c/xbb ALCHEMICAL SYMBOL FOR REALGAR ++ /xf0/x9f/x9c/xbc ALCHEMICAL SYMBOL FOR REALGAR-2 ++ /xf0/x9f/x9c/xbd ALCHEMICAL SYMBOL FOR AURIPIGMENT ++ /xf0/x9f/x9c/xbe ALCHEMICAL SYMBOL FOR BISMUTH ORE ++ /xf0/x9f/x9c/xbf ALCHEMICAL SYMBOL FOR TARTAR ++ /xf0/x9f/x9d/x80 ALCHEMICAL SYMBOL FOR TARTAR-2 ++ /xf0/x9f/x9d/x81 ALCHEMICAL SYMBOL FOR QUICK LIME ++ /xf0/x9f/x9d/x82 ALCHEMICAL SYMBOL FOR BORAX ++ /xf0/x9f/x9d/x83 ALCHEMICAL SYMBOL FOR BORAX-2 ++ /xf0/x9f/x9d/x84 ALCHEMICAL SYMBOL FOR BORAX-3 ++ /xf0/x9f/x9d/x85 ALCHEMICAL SYMBOL FOR ALUM ++ /xf0/x9f/x9d/x86 ALCHEMICAL SYMBOL FOR OIL ++ /xf0/x9f/x9d/x87 ALCHEMICAL SYMBOL FOR SPIRIT ++ /xf0/x9f/x9d/x88 ALCHEMICAL SYMBOL FOR TINCTURE ++ /xf0/x9f/x9d/x89 ALCHEMICAL SYMBOL FOR GUM ++ /xf0/x9f/x9d/x8a ALCHEMICAL SYMBOL FOR WAX ++ /xf0/x9f/x9d/x8b ALCHEMICAL SYMBOL FOR POWDER ++ /xf0/x9f/x9d/x8c ALCHEMICAL SYMBOL FOR CALX ++ /xf0/x9f/x9c/xb7 ALCHEMICAL SYMBOL FOR ALKALI-2 ++ /xf0/x9f/x9c/xb8 ALCHEMICAL SYMBOL FOR MARCASITE ++ /xf0/x9f/x9c/xb9 ALCHEMICAL SYMBOL FOR SAL-AMMONIAC ++ /xf0/x9f/x9c/xba ALCHEMICAL SYMBOL FOR ARSENIC ++ /xf0/x9f/x9c/xbb ALCHEMICAL SYMBOL FOR REALGAR ++ /xf0/x9f/x9c/xbc ALCHEMICAL SYMBOL FOR REALGAR-2 ++ /xf0/x9f/x9c/xbd ALCHEMICAL SYMBOL FOR AURIPIGMENT ++ /xf0/x9f/x9c/xbe ALCHEMICAL SYMBOL FOR BISMUTH ORE ++ /xf0/x9f/x9c/xbf ALCHEMICAL SYMBOL FOR TARTAR ++ /xf0/x9f/x9d/x80 ALCHEMICAL SYMBOL FOR TARTAR-2 ++ /xf0/x9f/x9d/x81 ALCHEMICAL SYMBOL FOR QUICK LIME ++ /xf0/x9f/x9d/x82 ALCHEMICAL SYMBOL FOR BORAX ++ /xf0/x9f/x9d/x83 ALCHEMICAL SYMBOL FOR BORAX-2 ++ /xf0/x9f/x9d/x84 ALCHEMICAL SYMBOL FOR BORAX-3 ++ /xf0/x9f/x9d/x85 ALCHEMICAL SYMBOL FOR ALUM ++ /xf0/x9f/x9d/x86 ALCHEMICAL SYMBOL FOR OIL ++ /xf0/x9f/x9d/x87 ALCHEMICAL SYMBOL FOR SPIRIT ++ /xf0/x9f/x9d/x88 ALCHEMICAL SYMBOL FOR TINCTURE ++ /xf0/x9f/x9d/x89 ALCHEMICAL SYMBOL FOR GUM ++ /xf0/x9f/x9d/x8a ALCHEMICAL SYMBOL FOR WAX ++ /xf0/x9f/x9d/x8b ALCHEMICAL SYMBOL FOR POWDER ++ /xf0/x9f/x9d/x8c ALCHEMICAL SYMBOL FOR CALX ++ /xf0/x9f/x9d/x8d ALCHEMICAL SYMBOL FOR TUTTY ++ /xf0/x9f/x9d/x8e ALCHEMICAL SYMBOL FOR CAPUT MORTUUM ++ /xf0/x9f/x9d/x8f ALCHEMICAL SYMBOL FOR SCEPTER OF JOVE ++ /xf0/x9f/x9d/x90 ALCHEMICAL SYMBOL FOR CADUCEUS ++ /xf0/x9f/x9d/x91 ALCHEMICAL SYMBOL FOR TRIDENT ++ /xf0/x9f/x9d/x92 ALCHEMICAL SYMBOL FOR STARRED TRIDENT ++ /xf0/x9f/x9d/x93 ALCHEMICAL SYMBOL FOR LODESTONE ++ /xf0/x9f/x9d/x94 ALCHEMICAL SYMBOL FOR SOAP ++ /xf0/x9f/x9d/x95 ALCHEMICAL SYMBOL FOR URINE ++ /xf0/x9f/x9d/x96 ALCHEMICAL SYMBOL FOR HORSE DUNG ++ /xf0/x9f/x9d/x97 ALCHEMICAL SYMBOL FOR ASHES ++ /xf0/x9f/x9d/x98 ALCHEMICAL SYMBOL FOR POT ASHES ++ /xf0/x9f/x9d/x99 ALCHEMICAL SYMBOL FOR BRICK ++ /xf0/x9f/x9d/x9a ALCHEMICAL SYMBOL FOR POWDERED BRICK ++ /xf0/x9f/x9d/x9b ALCHEMICAL SYMBOL FOR AMALGAM ++ /xf0/x9f/x9d/x9c ALCHEMICAL SYMBOL FOR STRATUM SUPER STRATUM ++ /xf0/x9f/x9d/x9d ALCHEMICAL SYMBOL FOR STRATUM SUPER STRATUM-2 ++ /xf0/x9f/x9d/x9e ALCHEMICAL SYMBOL FOR SUBLIMATION ++ /xf0/x9f/x9d/x9f ALCHEMICAL SYMBOL FOR PRECIPITATE ++ /xf0/x9f/x9d/xa0 ALCHEMICAL SYMBOL FOR DISTILL ++ /xf0/x9f/x9d/xa1 ALCHEMICAL SYMBOL FOR DISSOLVE ++ /xf0/x9f/x9d/xa2 ALCHEMICAL SYMBOL FOR DISSOLVE-2 ++ /xf0/x9f/x9d/xa3 ALCHEMICAL SYMBOL FOR PURIFY ++ /xf0/x9f/x9d/xa4 ALCHEMICAL SYMBOL FOR PUTREFACTION ++ /xf0/x9f/x9d/xa5 ALCHEMICAL SYMBOL FOR CRUCIBLE ++ /xf0/x9f/x9d/xa6 ALCHEMICAL SYMBOL FOR CRUCIBLE-2 ++ /xf0/x9f/x9d/xa7 ALCHEMICAL SYMBOL FOR CRUCIBLE-3 ++ /xf0/x9f/x9d/xa8 ALCHEMICAL SYMBOL FOR CRUCIBLE-4 ++ /xf0/x9f/x9d/xa9 ALCHEMICAL SYMBOL FOR CRUCIBLE-5 ++ /xf0/x9f/x9d/xaa ALCHEMICAL SYMBOL FOR ALEMBIC ++ /xf0/x9f/x9d/xab ALCHEMICAL SYMBOL FOR BATH OF MARY ++ /xf0/x9f/x9d/xac ALCHEMICAL SYMBOL FOR BATH OF VAPOURS ++ /xf0/x9f/x9d/xad ALCHEMICAL SYMBOL FOR RETORT ++ /xf0/x9f/x9d/xae ALCHEMICAL SYMBOL FOR HOUR ++ /xf0/x9f/x9d/xaf ALCHEMICAL SYMBOL FOR NIGHT ++ /xf0/x9f/x9d/xb0 ALCHEMICAL SYMBOL FOR DAY-NIGHT ++ /xf0/x9f/x9d/xb1 ALCHEMICAL SYMBOL FOR MONTH ++ /xf0/x9f/x9d/xb2 ALCHEMICAL SYMBOL FOR HALF DRAM ++ /xf0/x9f/x9d/xb3 ALCHEMICAL SYMBOL FOR HALF OUNCE + .. /xf0/xa0/x80/x80 + .. /xf0/xa0/x81/x80 + .. /xf0/xa0/x82/x80 +Index: glibc-2.12-2-gc4ccff1/localedata/locales/ar_IN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/ar_IN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/ar_IN +@@ -52,7 +52,7 @@ LC_MONETARY + % for IBM Class for Unicode. + % + int_curr_symbol "" +-currency_symbol "" ++currency_symbol "" + mon_decimal_point "" + mon_thousands_sep "" + mon_grouping 3;2 +Index: glibc-2.12-2-gc4ccff1/localedata/locales/as_IN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/as_IN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/as_IN +@@ -51,7 +51,7 @@ END LC_NUMERIC + %%%%%%%%%%%%% + LC_MONETARY + int_curr_symbol "" +-currency_symbol "" ++currency_symbol "" + mon_decimal_point "" + mon_thousands_sep "" + mon_grouping 3;2 +Index: glibc-2.12-2-gc4ccff1/localedata/locales/bn_IN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/bn_IN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/bn_IN +@@ -53,7 +53,7 @@ LC_MONETARY + % for IBM Class for Unicode. + % + int_curr_symbol "" +-currency_symbol "" ++currency_symbol "" + mon_decimal_point "" + mon_thousands_sep "" + mon_grouping 2;3 +Index: glibc-2.12-2-gc4ccff1/localedata/locales/en_IN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/en_IN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/en_IN +@@ -52,7 +52,7 @@ LC_MONETARY + % for IBM Class for Unicode. + % + int_curr_symbol "" +-currency_symbol "" ++currency_symbol "" + mon_decimal_point "" + mon_thousands_sep "" + mon_grouping 3;2 +Index: glibc-2.12-2-gc4ccff1/localedata/locales/gu_IN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/gu_IN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/gu_IN +@@ -71,7 +71,7 @@ LC_MONETARY + % for IBM Class for Unicode/Java + % + int_curr_symbol "" +-currency_symbol "" ++currency_symbol "" + mon_decimal_point "" + mon_thousands_sep "" + mon_grouping 3 +Index: glibc-2.12-2-gc4ccff1/localedata/locales/hi_IN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/hi_IN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/hi_IN +@@ -69,7 +69,7 @@ LC_MONETARY + % for IBM Class for Unicode/Java + % + int_curr_symbol "" +-currency_symbol "" ++currency_symbol "" + mon_decimal_point "" + mon_thousands_sep "" + mon_grouping 3 +Index: glibc-2.12-2-gc4ccff1/localedata/locales/kn_IN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/kn_IN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/kn_IN +@@ -71,8 +71,7 @@ LC_MONETARY + % for IBM Class for Unicode/Java + % + int_curr_symbol "" +-% *** Change this to reflect Kannada , in Dev it is RA with VS U attached +-currency_symbol "" ++currency_symbol "" + mon_decimal_point "" + mon_thousands_sep "" + mon_grouping 3 +Index: glibc-2.12-2-gc4ccff1/localedata/locales/kok_IN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/kok_IN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/kok_IN +@@ -49,7 +49,7 @@ LC_MONETARY + % for IBM Class for Unicode. + % + int_curr_symbol "" +-currency_symbol "" ++currency_symbol "" + mon_decimal_point "" + mon_thousands_sep "" + mon_grouping 3 +Index: glibc-2.12-2-gc4ccff1/localedata/locales/ks_IN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/ks_IN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/ks_IN +@@ -57,7 +57,7 @@ LC_MONETARY + % for IBM Class for Unicode. + % + int_curr_symbol "" +-currency_symbol "" ++currency_symbol "" + mon_decimal_point "" + mon_thousands_sep "" + mon_grouping 3 +Index: glibc-2.12-2-gc4ccff1/localedata/locales/ml_IN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/ml_IN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/ml_IN +@@ -69,7 +69,7 @@ LC_MONETARY + % for IBM Class for Unicode. + % + int_curr_symbol "" +-currency_symbol "" ++currency_symbol "" + mon_decimal_point "" + mon_thousands_sep "" + mon_grouping 3;2 +Index: glibc-2.12-2-gc4ccff1/localedata/locales/mr_IN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/mr_IN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/mr_IN +@@ -70,7 +70,7 @@ LC_MONETARY + % for IBM Class for Unicode. + % + int_curr_symbol "" +-currency_symbol "" ++currency_symbol "" + mon_decimal_point "" + mon_thousands_sep "" + mon_grouping 3 +Index: glibc-2.12-2-gc4ccff1/localedata/locales/or_IN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/or_IN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/or_IN +@@ -607,7 +607,7 @@ END LC_NUMERIC + %%%%%%%%%%%%% + LC_MONETARY + int_curr_symbol "" +-currency_symbol "" ++currency_symbol "" + mon_decimal_point "" + mon_thousands_sep "" + mon_grouping 3;2 +Index: glibc-2.12-2-gc4ccff1/localedata/locales/pa_IN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/pa_IN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/pa_IN +@@ -66,7 +66,7 @@ END LC_COLLATE + LC_MONETARY + % This is the POSIX Locale definition the LC_MONETARY category. + int_curr_symbol "" +-currency_symbol "" ++currency_symbol "" + mon_decimal_point "" + mon_thousands_sep "" + mon_grouping 3 +Index: glibc-2.12-2-gc4ccff1/localedata/locales/sa_IN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/sa_IN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/sa_IN +@@ -52,7 +52,7 @@ LC_MONETARY + % for IBM Class for Unicode/Java + % + int_curr_symbol "" +-currency_symbol "" ++currency_symbol "" + mon_decimal_point "" + mon_thousands_sep "" + mon_grouping 3 +Index: glibc-2.12-2-gc4ccff1/localedata/locales/sd_IN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/sd_IN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/sd_IN +@@ -57,7 +57,7 @@ LC_MONETARY + % for IBM Class for Unicode. + % + int_curr_symbol "" +-currency_symbol "" ++currency_symbol "" + mon_decimal_point "" + mon_thousands_sep "" + mon_grouping 3 +Index: glibc-2.12-2-gc4ccff1/localedata/locales/ta_IN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/ta_IN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/ta_IN +@@ -74,7 +74,7 @@ LC_MONETARY + % for IBM Class for Unicode. + % + int_curr_symbol "" +-currency_symbol "" ++currency_symbol "" + mon_decimal_point "" + mon_thousands_sep "" + mon_grouping 3;2 +Index: glibc-2.12-2-gc4ccff1/localedata/locales/te_IN +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/localedata/locales/te_IN ++++ glibc-2.12-2-gc4ccff1/localedata/locales/te_IN +@@ -73,7 +73,7 @@ LC_MONETARY + % for IBM Class for Unicode. + % + int_curr_symbol "" +-currency_symbol "" ++currency_symbol "" + mon_decimal_point "" + mon_thousands_sep "" + mon_grouping 3;2 diff --git a/src/patches/glibc/glibc-rh694386.patch b/src/patches/glibc/glibc-rh694386.patch new file mode 100644 index 000000000..3932eb88e --- /dev/null +++ b/src/patches/glibc/glibc-rh694386.patch @@ -0,0 +1,86 @@ +2011-03-28 Andreas Schwab + + * sysdeps/powerpc/powerpc32/power4/strncmp.S: Don't read past + differing bytes. + * sysdeps/powerpc/powerpc64/power4/strncmp.S: Likewise. + +diff --git a/sysdeps/powerpc/powerpc32/power4/strncmp.S b/sysdeps/powerpc/powerpc32/power4/strncmp.S +index fc0835e..f5d47af 100644 +--- a/sysdeps/powerpc/powerpc32/power4/strncmp.S ++++ b/sysdeps/powerpc/powerpc32/power4/strncmp.S +@@ -139,30 +139,31 @@ L(u1): + bdz L(u4) + cmpw rWORD1, rWORD2 + beq- cr1, L(u4) ++ bne- L(u4) + lbzu rWORD3, 1(rSTR1) + lbzu rWORD4, 1(rSTR2) +- bne- L(u4) + cmpwi cr1, rWORD3, 0 + bdz L(u3) + cmpw rWORD3, rWORD4 + beq- cr1, L(u3) ++ bne- L(u3) + lbzu rWORD1, 1(rSTR1) + lbzu rWORD2, 1(rSTR2) +- bne- L(u3) + cmpwi cr1, rWORD1, 0 + bdz L(u4) + cmpw rWORD1, rWORD2 + beq- cr1, L(u4) ++ bne- L(u4) + lbzu rWORD3, 1(rSTR1) + lbzu rWORD4, 1(rSTR2) +- bne- L(u4) + cmpwi cr1, rWORD3, 0 + bdz L(u3) + cmpw rWORD3, rWORD4 + beq- cr1, L(u3) ++ bne- L(u3) + lbzu rWORD1, 1(rSTR1) + lbzu rWORD2, 1(rSTR2) +- beq+ L(u1) ++ b L(u1) + + L(u3): sub rRTN, rWORD3, rWORD4 + blr +diff --git a/sysdeps/powerpc/powerpc64/power4/strncmp.S b/sysdeps/powerpc/powerpc64/power4/strncmp.S +index 7a1665d..94ae85b 100644 +--- a/sysdeps/powerpc/powerpc64/power4/strncmp.S ++++ b/sysdeps/powerpc/powerpc64/power4/strncmp.S +@@ -143,30 +143,31 @@ L(u1): + bdz L(u4) + cmpd rWORD1, rWORD2 + beq- cr1, L(u4) ++ bne- L(u4) + lbzu rWORD3, 1(rSTR1) + lbzu rWORD4, 1(rSTR2) +- bne- L(u4) + cmpdi cr1, rWORD3, 0 + bdz L(u3) + cmpd rWORD3, rWORD4 + beq- cr1, L(u3) ++ bne- L(u3) + lbzu rWORD1, 1(rSTR1) + lbzu rWORD2, 1(rSTR2) +- bne- L(u3) + cmpdi cr1, rWORD1, 0 + bdz L(u4) + cmpd rWORD1, rWORD2 + beq- cr1, L(u4) ++ bne- L(u4) + lbzu rWORD3, 1(rSTR1) + lbzu rWORD4, 1(rSTR2) +- bne- L(u4) + cmpdi cr1, rWORD3, 0 + bdz L(u3) + cmpd rWORD3, rWORD4 + beq- cr1, L(u3) ++ bne- L(u3) + lbzu rWORD1, 1(rSTR1) + lbzu rWORD2, 1(rSTR2) +- beq+ L(u1) ++ b L(u1) + + L(u3): sub rRTN, rWORD3, rWORD4 + blr diff --git a/src/patches/glibc/glibc-rh695595.patch b/src/patches/glibc/glibc-rh695595.patch new file mode 100644 index 000000000..0e6c72b16 --- /dev/null +++ b/src/patches/glibc/glibc-rh695595.patch @@ -0,0 +1,17 @@ +2010-11-11 H.J. Lu + + * sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): + Support Intel processor model 6 and model 0x2c. + +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/init-arch.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.c +@@ -81,6 +81,7 @@ __init_cpu_features (void) + case 0x1e: + case 0x1f: + case 0x25: ++ case 0x2c: + case 0x2e: + case 0x2f: + /* Rep string instructions are fast on Intel Core i3, i5 diff --git a/src/patches/glibc/glibc-rh695963.patch b/src/patches/glibc/glibc-rh695963.patch new file mode 100644 index 000000000..e8053dc3f --- /dev/null +++ b/src/patches/glibc/glibc-rh695963.patch @@ -0,0 +1,1284 @@ +2010-08-27 Ulrich Drepper + + * sysdeps/x86_64/multiarch/strlen-no-bsf.S: Move to .text.slow section. + + * sysdeps/x86_64/strlen.S: Minimal code improvement. + +2010-08-26 H.J. Lu + + * sysdeps/x86_64/strlen.S: Unroll the loop. + * sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Add + strlen-sse2 strlen-sse2-bsf. + * sysdeps/x86_64/multiarch/strlen.S ((strlen): Return + __strlen_no_bsf if bit_Slow_BSF is set. + (__strlen_sse42): Removed. + * sysdeps/x86_64/multiarch/strlen-no-bsf.S: New file. + * sysdeps/x86_64/multiarch/strlen-sse4.S: New file. + +2010-08-25 H.J. Lu + + * sysdeps/i386/i686/multiarch/Makefile (sysdep_routines): Add + strlen-sse2 strlen-sse2-bsf. + * sysdeps/i386/i686/multiarch/strlen.S (strlen): Return + __strlen_sse2_bsf if bit_Slow_BSF is unset. + (__strlen_sse2): Removed. + * sysdeps/i386/i686/multiarch/strlen-sse2-bsf.S: New file. + * sysdeps/i386/i686/multiarch/strlen-sse2.S: New file. + * sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): Set + bit_Slow_BSF for Atom. + * sysdeps/x86_64/multiarch/init-arch.h (bit_Slow_BSF): Define. + (index_Slow_BSF): Define. + (HAS_SLOW_BSF): Define. + +Index: glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/i386/i686/multiarch/Makefile ++++ glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/Makefile +@@ -9,7 +9,8 @@ sysdep_routines += bzero-sse2 memset-sse + memmove-ssse3-rep bcopy-ssse3 bcopy-ssse3-rep \ + memset-sse2-rep bzero-sse2-rep strcmp-ssse3 \ + strcmp-sse4 strncmp-c strncmp-ssse3 strncmp-sse4 \ +- memcmp-ssse3 memcmp-sse4 strcasestr-nonascii ++ memcmp-ssse3 memcmp-sse4 strcasestr-nonascii \ ++ strlen-sse2 strlen-sse2-bsf + ifeq (yes,$(config-cflags-sse4)) + sysdep_routines += strcspn-c strpbrk-c strspn-c strstr-c strcasestr-c + CFLAGS-strcspn-c.c += -msse4 +Index: glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strlen-sse2-bsf.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strlen-sse2-bsf.S +@@ -0,0 +1,127 @@ ++/* strlen with SSE2 and BSF ++ Copyright (C) 2010 Free Software Foundation, Inc. ++ Contributed by Intel Corporation. ++ 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. */ ++ ++#if defined SHARED && !defined NOT_IN_libc ++ ++#include ++#include "asm-syntax.h" ++ ++#define CFI_PUSH(REG) \ ++ cfi_adjust_cfa_offset (4); \ ++ cfi_rel_offset (REG, 0) ++ ++#define CFI_POP(REG) \ ++ cfi_adjust_cfa_offset (-4); \ ++ cfi_restore (REG) ++ ++#define PUSH(REG) pushl REG; CFI_PUSH (REG) ++#define POP(REG) popl REG; CFI_POP (REG) ++#define PARMS 4 + 8 /* Preserve ESI and EDI. */ ++#define STR PARMS ++#define ENTRANCE PUSH (%esi); PUSH (%edi); cfi_remember_state ++#define RETURN POP (%edi); POP (%esi); ret; \ ++ cfi_restore_state; cfi_remember_state ++ ++ .text ++ENTRY ( __strlen_sse2_bsf) ++ ENTRANCE ++ mov STR(%esp), %edi ++ xor %eax, %eax ++ mov %edi, %ecx ++ and $0x3f, %ecx ++ pxor %xmm0, %xmm0 ++ cmp $0x30, %ecx ++ ja L(next) ++ movdqu (%edi), %xmm1 ++ pcmpeqb %xmm1, %xmm0 ++ pmovmskb %xmm0, %edx ++ test %edx, %edx ++ jnz L(exit_less16) ++ mov %edi, %eax ++ and $-16, %eax ++ jmp L(align16_start) ++L(next): ++ ++ mov %edi, %eax ++ and $-16, %eax ++ pcmpeqb (%eax), %xmm0 ++ mov $-1, %esi ++ sub %eax, %ecx ++ shl %cl, %esi ++ pmovmskb %xmm0, %edx ++ and %esi, %edx ++ jnz L(exit) ++L(align16_start): ++ pxor %xmm0, %xmm0 ++ pxor %xmm1, %xmm1 ++ pxor %xmm2, %xmm2 ++ pxor %xmm3, %xmm3 ++ .p2align 4 ++L(align16_loop): ++ pcmpeqb 16(%eax), %xmm0 ++ pmovmskb %xmm0, %edx ++ test %edx, %edx ++ jnz L(exit16) ++ ++ pcmpeqb 32(%eax), %xmm1 ++ pmovmskb %xmm1, %edx ++ test %edx, %edx ++ jnz L(exit32) ++ ++ pcmpeqb 48(%eax), %xmm2 ++ pmovmskb %xmm2, %edx ++ test %edx, %edx ++ jnz L(exit48) ++ ++ pcmpeqb 64(%eax), %xmm3 ++ pmovmskb %xmm3, %edx ++ lea 64(%eax), %eax ++ test %edx, %edx ++ jz L(align16_loop) ++L(exit): ++ sub %edi, %eax ++L(exit_less16): ++ bsf %edx, %edx ++ add %edx, %eax ++ RETURN ++L(exit16): ++ sub %edi, %eax ++ bsf %edx, %edx ++ add %edx, %eax ++ add $16, %eax ++ RETURN ++L(exit32): ++ sub %edi, %eax ++ bsf %edx, %edx ++ add %edx, %eax ++ add $32, %eax ++ RETURN ++L(exit48): ++ sub %edi, %eax ++ bsf %edx, %edx ++ add %edx, %eax ++ add $48, %eax ++ POP (%edi) ++ POP (%esi) ++ ret ++ ++END ( __strlen_sse2_bsf) ++ ++#endif +Index: glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strlen-sse2.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strlen-sse2.S +@@ -0,0 +1,347 @@ ++/* strlen with SSE2 ++ Copyright (C) 2010 Free Software Foundation, Inc. ++ Contributed by Intel Corporation. ++ 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. */ ++ ++#if defined SHARED && !defined NOT_IN_libc ++ ++#include ++#include "asm-syntax.h" ++ ++#define CFI_PUSH(REG) \ ++ cfi_adjust_cfa_offset (4); \ ++ cfi_rel_offset (REG, 0) ++ ++#define CFI_POP(REG) \ ++ cfi_adjust_cfa_offset (-4); \ ++ cfi_restore (REG) ++ ++#define PUSH(REG) pushl REG; CFI_PUSH (REG) ++#define POP(REG) popl REG; CFI_POP (REG) ++#define PARMS 4 ++#define STR PARMS ++#define ENTRANCE ++#define RETURN ret ++ ++ .text ++ENTRY (__strlen_sse2) ++ ENTRANCE ++ mov STR(%esp), %edx ++ xor %eax, %eax ++ cmpb $0, (%edx) ++ jz L(exit_tail0) ++ cmpb $0, 1(%edx) ++ jz L(exit_tail1) ++ cmpb $0, 2(%edx) ++ jz L(exit_tail2) ++ cmpb $0, 3(%edx) ++ jz L(exit_tail3) ++ cmpb $0, 4(%edx) ++ jz L(exit_tail4) ++ cmpb $0, 5(%edx) ++ jz L(exit_tail5) ++ cmpb $0, 6(%edx) ++ jz L(exit_tail6) ++ cmpb $0, 7(%edx) ++ jz L(exit_tail7) ++ cmpb $0, 8(%edx) ++ jz L(exit_tail8) ++ cmpb $0, 9(%edx) ++ jz L(exit_tail9) ++ cmpb $0, 10(%edx) ++ jz L(exit_tail10) ++ cmpb $0, 11(%edx) ++ jz L(exit_tail11) ++ cmpb $0, 12(%edx) ++ jz L(exit_tail12) ++ cmpb $0, 13(%edx) ++ jz L(exit_tail13) ++ cmpb $0, 14(%edx) ++ jz L(exit_tail14) ++ cmpb $0, 15(%edx) ++ jz L(exit_tail15) ++ pxor %xmm0, %xmm0 ++ mov %edx, %eax ++ mov %edx, %ecx ++ and $-16, %eax ++ add $16, %ecx ++ add $16, %eax ++ ++ pcmpeqb (%eax), %xmm0 ++ pmovmskb %xmm0, %edx ++ pxor %xmm1, %xmm1 ++ test %edx, %edx ++ lea 16(%eax), %eax ++ jnz L(exit) ++ ++ pcmpeqb (%eax), %xmm1 ++ pmovmskb %xmm1, %edx ++ pxor %xmm2, %xmm2 ++ test %edx, %edx ++ lea 16(%eax), %eax ++ jnz L(exit) ++ ++ ++ pcmpeqb (%eax), %xmm2 ++ pmovmskb %xmm2, %edx ++ pxor %xmm3, %xmm3 ++ test %edx, %edx ++ lea 16(%eax), %eax ++ jnz L(exit) ++ ++ pcmpeqb (%eax), %xmm3 ++ pmovmskb %xmm3, %edx ++ test %edx, %edx ++ lea 16(%eax), %eax ++ jnz L(exit) ++ ++ pcmpeqb (%eax), %xmm0 ++ pmovmskb %xmm0, %edx ++ test %edx, %edx ++ lea 16(%eax), %eax ++ jnz L(exit) ++ ++ pcmpeqb (%eax), %xmm1 ++ pmovmskb %xmm1, %edx ++ test %edx, %edx ++ lea 16(%eax), %eax ++ jnz L(exit) ++ ++ pcmpeqb (%eax), %xmm2 ++ pmovmskb %xmm2, %edx ++ test %edx, %edx ++ lea 16(%eax), %eax ++ jnz L(exit) ++ ++ pcmpeqb (%eax), %xmm3 ++ pmovmskb %xmm3, %edx ++ test %edx, %edx ++ lea 16(%eax), %eax ++ jnz L(exit) ++ ++ pcmpeqb (%eax), %xmm0 ++ pmovmskb %xmm0, %edx ++ test %edx, %edx ++ lea 16(%eax), %eax ++ jnz L(exit) ++ ++ pcmpeqb (%eax), %xmm1 ++ pmovmskb %xmm1, %edx ++ test %edx, %edx ++ lea 16(%eax), %eax ++ jnz L(exit) ++ ++ pcmpeqb (%eax), %xmm2 ++ pmovmskb %xmm2, %edx ++ test %edx, %edx ++ lea 16(%eax), %eax ++ jnz L(exit) ++ ++ pcmpeqb (%eax), %xmm3 ++ pmovmskb %xmm3, %edx ++ test %edx, %edx ++ lea 16(%eax), %eax ++ jnz L(exit) ++ ++ pcmpeqb (%eax), %xmm0 ++ pmovmskb %xmm0, %edx ++ test %edx, %edx ++ lea 16(%eax), %eax ++ jnz L(exit) ++ ++ pcmpeqb (%eax), %xmm1 ++ pmovmskb %xmm1, %edx ++ test %edx, %edx ++ lea 16(%eax), %eax ++ jnz L(exit) ++ ++ pcmpeqb (%eax), %xmm2 ++ pmovmskb %xmm2, %edx ++ test %edx, %edx ++ lea 16(%eax), %eax ++ jnz L(exit) ++ ++ pcmpeqb (%eax), %xmm3 ++ pmovmskb %xmm3, %edx ++ test %edx, %edx ++ lea 16(%eax), %eax ++ jnz L(exit) ++ ++ and $-0x40, %eax ++ PUSH (%esi) ++ PUSH (%edi) ++ PUSH (%ebx) ++ PUSH (%ebp) ++ xor %ebp, %ebp ++L(aligned_64): ++ pcmpeqb (%eax), %xmm0 ++ pcmpeqb 16(%eax), %xmm1 ++ pcmpeqb 32(%eax), %xmm2 ++ pcmpeqb 48(%eax), %xmm3 ++ pmovmskb %xmm0, %edx ++ pmovmskb %xmm1, %esi ++ pmovmskb %xmm2, %edi ++ pmovmskb %xmm3, %ebx ++ or %edx, %ebp ++ or %esi, %ebp ++ or %edi, %ebp ++ or %ebx, %ebp ++ lea 64(%eax), %eax ++ jz L(aligned_64) ++L(48leave): ++ test %edx, %edx ++ jnz L(aligned_64_exit_16) ++ test %esi, %esi ++ jnz L(aligned_64_exit_32) ++ test %edi, %edi ++ jnz L(aligned_64_exit_48) ++ mov %ebx, %edx ++ lea (%eax), %eax ++ jmp L(aligned_64_exit) ++L(aligned_64_exit_48): ++ lea -16(%eax), %eax ++ mov %edi, %edx ++ jmp L(aligned_64_exit) ++L(aligned_64_exit_32): ++ lea -32(%eax), %eax ++ mov %esi, %edx ++ jmp L(aligned_64_exit) ++L(aligned_64_exit_16): ++ lea -48(%eax), %eax ++L(aligned_64_exit): ++ POP (%ebp) ++ POP (%ebx) ++ POP (%edi) ++ POP (%esi) ++L(exit): ++ sub %ecx, %eax ++ test %dl, %dl ++ jz L(exit_high) ++ test $0x01, %dl ++ jnz L(exit_tail0) ++ ++ test $0x02, %dl ++ jnz L(exit_tail1) ++ ++ test $0x04, %dl ++ jnz L(exit_tail2) ++ ++ test $0x08, %dl ++ jnz L(exit_tail3) ++ ++ test $0x10, %dl ++ jnz L(exit_tail4) ++ ++ test $0x20, %dl ++ jnz L(exit_tail5) ++ ++ test $0x40, %dl ++ jnz L(exit_tail6) ++ add $7, %eax ++L(exit_tail0): ++ RETURN ++ ++L(exit_high): ++ add $8, %eax ++ test $0x01, %dh ++ jnz L(exit_tail0) ++ ++ test $0x02, %dh ++ jnz L(exit_tail1) ++ ++ test $0x04, %dh ++ jnz L(exit_tail2) ++ ++ test $0x08, %dh ++ jnz L(exit_tail3) ++ ++ test $0x10, %dh ++ jnz L(exit_tail4) ++ ++ test $0x20, %dh ++ jnz L(exit_tail5) ++ ++ test $0x40, %dh ++ jnz L(exit_tail6) ++ add $7, %eax ++ RETURN ++ ++ .p2align 4 ++L(exit_tail1): ++ add $1, %eax ++ RETURN ++ ++L(exit_tail2): ++ add $2, %eax ++ RETURN ++ ++L(exit_tail3): ++ add $3, %eax ++ RETURN ++ ++L(exit_tail4): ++ add $4, %eax ++ RETURN ++ ++L(exit_tail5): ++ add $5, %eax ++ RETURN ++ ++L(exit_tail6): ++ add $6, %eax ++ RETURN ++ ++L(exit_tail7): ++ add $7, %eax ++ RETURN ++ ++L(exit_tail8): ++ add $8, %eax ++ RETURN ++ ++L(exit_tail9): ++ add $9, %eax ++ RETURN ++ ++L(exit_tail10): ++ add $10, %eax ++ RETURN ++ ++L(exit_tail11): ++ add $11, %eax ++ RETURN ++ ++L(exit_tail12): ++ add $12, %eax ++ RETURN ++ ++L(exit_tail13): ++ add $13, %eax ++ RETURN ++ ++L(exit_tail14): ++ add $14, %eax ++ RETURN ++ ++L(exit_tail15): ++ add $15, %eax ++ ret ++ ++END (__strlen_sse2) ++ ++#endif +Index: glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strlen.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/i386/i686/multiarch/strlen.S ++++ glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strlen.S +@@ -48,6 +48,9 @@ ENTRY(strlen) + 1: leal __strlen_ia32@GOTOFF(%ebx), %eax + testl $bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features@GOTOFF(%ebx) + jz 2f ++ leal __strlen_sse2_bsf@GOTOFF(%ebx), %eax ++ testl $bit_Slow_BSF, FEATURE_OFFSET+index_Slow_BSF+__cpu_features@GOTOFF(%ebx) ++ jz 2f + leal __strlen_sse2@GOTOFF(%ebx), %eax + 2: popl %ebx + cfi_adjust_cfa_offset (-4); +@@ -55,84 +58,6 @@ ENTRY(strlen) + ret + END(strlen) + +-#define CFI_POP(REG) \ +- cfi_adjust_cfa_offset (-4); \ +- cfi_restore (REG) +- +-#define RETURN popl %esi; CFI_POP (esi); ret +- +- .text +-ENTRY (__strlen_sse2) +-/* +- * This implementation uses SSE instructions to compare up to 16 bytes +- * at a time looking for the end of string (null char). +- */ +- pushl %esi +- cfi_adjust_cfa_offset (4) +- cfi_rel_offset (%esi, 0) +- mov 8(%esp), %eax +- mov %eax, %ecx +- pxor %xmm0, %xmm0 /* 16 null chars */ +- mov %eax, %esi +- and $15, %ecx +- jz 1f /* string is 16 byte aligned */ +- +- /* +- * Unaligned case. Round down to 16-byte boundary before comparing +- * 16 bytes for a null char. The code then compensates for any extra chars +- * preceding the start of the string. +- */ +- and $-16, %esi +- +- pcmpeqb (%esi), %xmm0 +- lea 16(%eax), %esi +- pmovmskb %xmm0, %edx +- +- shr %cl, %edx /* Compensate for bytes preceding the string */ +- test %edx, %edx +- jnz 2f +- sub %ecx, %esi /* no null, adjust to next 16-byte boundary */ +- pxor %xmm0, %xmm0 /* clear xmm0, may have been changed... */ +- +- .p2align 4 +-1: /* 16 byte aligned */ +- pcmpeqb (%esi), %xmm0 /* look for null bytes */ +- pmovmskb %xmm0, %edx /* move each byte mask of %xmm0 to edx */ +- +- add $16, %esi /* prepare to search next 16 bytes */ +- test %edx, %edx /* if no null byte, %edx must be 0 */ +- jnz 2f /* found a null */ +- +- pcmpeqb (%esi), %xmm0 +- pmovmskb %xmm0, %edx +- add $16, %esi +- test %edx, %edx +- jnz 2f +- +- pcmpeqb (%esi), %xmm0 +- pmovmskb %xmm0, %edx +- add $16, %esi +- test %edx, %edx +- jnz 2f +- +- pcmpeqb (%esi), %xmm0 +- pmovmskb %xmm0, %edx +- add $16, %esi +- test %edx, %edx +- jz 1b +- +-2: +- neg %eax +- lea -16(%eax, %esi), %eax /* calculate exact offset */ +- bsf %edx, %ecx /* Least significant 1 bit is index of null */ +- add %ecx, %eax +- popl %esi +- cfi_adjust_cfa_offset (-4) +- cfi_restore (%esi) +- ret +- +-END (__strlen_sse2) +- + # undef ENTRY + # define ENTRY(name) \ + .type __strlen_ia32, @function; \ +--- a/sysdeps/x86_64/multiarch/Makefile 2012-03-01 10:43:30.060487726 -0700 ++++ b/sysdeps/x86_64/multiarch/Makefile 2012-03-01 10:45:57.894692115 -0700 +@@ -7,7 +7,7 @@ ifeq ($(subdir),string) + sysdep_routines += stpncpy-c strncpy-c strcmp-ssse3 strncmp-ssse3 \ + strend-sse4 memcmp-sse4 \ + strcasestr-nonascii strcasecmp_l-ssse3 \ +- strncase_l-ssse3 \ ++ strncase_l-ssse3 strlen-sse4 strlen-no-bsf \ + memset-x86-64 + ifeq (yes,$(config-cflags-sse4)) + sysdep_routines += strcspn-c strpbrk-c strspn-c strstr-c strcasestr-c +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/init-arch.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.c +@@ -77,6 +77,12 @@ __init_cpu_features (void) + model += extended_model; + switch (model) + { ++ case 0x1c: ++ case 0x26: ++ /* BSF is slow on Atom. */ ++ __cpu_features.feature[index_Slow_BSF] |= bit_Slow_BSF; ++ break; ++ + case 0x1a: + case 0x1e: + case 0x1f: +--- a/sysdeps/x86_64/multiarch/init-arch.h 2012-03-01 10:43:30.061487720 -0700 ++++ b/sysdeps/x86_64/multiarch/init-arch.h 2012-03-01 10:48:13.371963005 -0700 +@@ -17,6 +17,7 @@ + 02111-1307 USA. */ + + #define bit_Fast_Rep_String (1 << 0) ++#define bit_Slow_BSF (1 << 2) + #define bit_Prefer_SSE_for_memop (1 << 3) + + #ifdef __ASSEMBLER__ +@@ -34,6 +35,7 @@ + # define index_SSE4_2 COMMON_CPUID_INDEX_1*CPUID_SIZE+CPUID_ECX_OFFSET + + #define index_Fast_Rep_String FEATURE_INDEX_1*FEATURE_SIZE ++# define index_Slow_BSF FEATURE_INDEX_1*FEATURE_SIZE + # define index_Prefer_SSE_for_memop FEATURE_INDEX_1*FEATURE_SIZE + + #else /* __ASSEMBLER__ */ +@@ -105,11 +107,15 @@ extern const struct cpu_features *__get_ + # define HAS_FMA HAS_CPU_FEATURE (COMMON_CPUID_INDEX_1, ecx, 12) + + # define index_Fast_Rep_String FEATURE_INDEX_1 ++# define index_Slow_BSF FEATURE_INDEX_1 + # define index_Prefer_SSE_for_memop FEATURE_INDEX_1 + + #define HAS_ARCH_FEATURE(idx, bit) \ + ((__get_cpu_features ()->feature[idx] & (bit)) != 0) + ++#define HAS_SLOW_BSF \ ++ HAS_ARCH_FEATURE (index_Slow_BSF, bit_Slow_BSF) ++ + #define HAS_PREFER_SSE_FOR_MEMOP \ + HAS_ARCH_FEATURE (index_Prefer_SSE_for_memop, bit_Prefer_SSE_for_memop) + +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strlen-no-bsf.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strlen-no-bsf.S +@@ -0,0 +1,309 @@ ++/* strlen without BSF ++ Copyright (C) 2010 Free Software Foundation, Inc. ++ Contributed by Intel Corporation. ++ 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. */ ++ ++#if defined SHARED && !defined NOT_IN_libc ++ ++#include ++ ++ .section .text.slow,"ax",@progbits ++ENTRY (__strlen_no_bsf) ++ xor %eax, %eax ++ cmpb $0, (%rdi) ++ jz L(exit_tail0) ++ cmpb $0, 1(%rdi) ++ jz L(exit_tail1) ++ cmpb $0, 2(%rdi) ++ jz L(exit_tail2) ++ cmpb $0, 3(%rdi) ++ jz L(exit_tail3) ++ cmpb $0, 4(%rdi) ++ jz L(exit_tail4) ++ cmpb $0, 5(%rdi) ++ jz L(exit_tail5) ++ cmpb $0, 6(%rdi) ++ jz L(exit_tail6) ++ cmpb $0, 7(%rdi) ++ jz L(exit_tail7) ++ cmpb $0, 8(%rdi) ++ jz L(exit_tail8) ++ cmpb $0, 9(%rdi) ++ jz L(exit_tail9) ++ cmpb $0, 10(%rdi) ++ jz L(exit_tail10) ++ cmpb $0, 11(%rdi) ++ jz L(exit_tail11) ++ cmpb $0, 12(%rdi) ++ jz L(exit_tail12) ++ cmpb $0, 13(%rdi) ++ jz L(exit_tail13) ++ cmpb $0, 14(%rdi) ++ jz L(exit_tail14) ++ cmpb $0, 15(%rdi) ++ jz L(exit_tail15) ++ pxor %xmm0, %xmm0 ++ mov %rdi, %rcx ++ mov %rdi, %rax ++ and $-16, %rax ++ add $16, %rax ++ add $16, %rcx ++ ++ pcmpeqb (%rax), %xmm0 ++ pmovmskb %xmm0, %edx ++ pxor %xmm1, %xmm1 ++ test %edx, %edx ++ lea 16(%rax), %rax ++ jnz L(exit) ++ ++ pcmpeqb (%rax), %xmm1 ++ pmovmskb %xmm1, %edx ++ pxor %xmm2, %xmm2 ++ test %edx, %edx ++ lea 16(%rax), %rax ++ jnz L(exit) ++ ++ ++ pcmpeqb (%rax), %xmm2 ++ pmovmskb %xmm2, %edx ++ pxor %xmm3, %xmm3 ++ test %edx, %edx ++ lea 16(%rax), %rax ++ jnz L(exit) ++ ++ pcmpeqb (%rax), %xmm3 ++ pmovmskb %xmm3, %edx ++ test %edx, %edx ++ lea 16(%rax), %rax ++ jnz L(exit) ++ ++ pcmpeqb (%rax), %xmm0 ++ pmovmskb %xmm0, %edx ++ test %edx, %edx ++ lea 16(%rax), %rax ++ jnz L(exit) ++ ++ pcmpeqb (%rax), %xmm1 ++ pmovmskb %xmm1, %edx ++ test %edx, %edx ++ lea 16(%rax), %rax ++ jnz L(exit) ++ ++ pcmpeqb (%rax), %xmm2 ++ pmovmskb %xmm2, %edx ++ test %edx, %edx ++ lea 16(%rax), %rax ++ jnz L(exit) ++ ++ pcmpeqb (%rax), %xmm3 ++ pmovmskb %xmm3, %edx ++ test %edx, %edx ++ lea 16(%rax), %rax ++ jnz L(exit) ++ ++ pcmpeqb (%rax), %xmm0 ++ pmovmskb %xmm0, %edx ++ test %edx, %edx ++ lea 16(%rax), %rax ++ jnz L(exit) ++ ++ pcmpeqb (%rax), %xmm1 ++ pmovmskb %xmm1, %edx ++ test %edx, %edx ++ lea 16(%rax), %rax ++ jnz L(exit) ++ ++ pcmpeqb (%rax), %xmm2 ++ pmovmskb %xmm2, %edx ++ test %edx, %edx ++ lea 16(%rax), %rax ++ jnz L(exit) ++ ++ pcmpeqb (%rax), %xmm3 ++ pmovmskb %xmm3, %edx ++ test %edx, %edx ++ lea 16(%rax), %rax ++ jnz L(exit) ++ ++ pcmpeqb (%rax), %xmm0 ++ pmovmskb %xmm0, %edx ++ test %edx, %edx ++ lea 16(%rax), %rax ++ jnz L(exit) ++ ++ pcmpeqb (%rax), %xmm1 ++ pmovmskb %xmm1, %edx ++ test %edx, %edx ++ lea 16(%rax), %rax ++ jnz L(exit) ++ ++ pcmpeqb (%rax), %xmm2 ++ pmovmskb %xmm2, %edx ++ test %edx, %edx ++ lea 16(%rax), %rax ++ jnz L(exit) ++ ++ pcmpeqb (%rax), %xmm3 ++ pmovmskb %xmm3, %edx ++ test %edx, %edx ++ lea 16(%rax), %rax ++ jnz L(exit) ++ ++ and $-0x40, %rax ++ xor %r8d, %r8d ++L(aligned_64): ++ pcmpeqb (%rax), %xmm0 ++ pcmpeqb 16(%rax), %xmm1 ++ pcmpeqb 32(%rax), %xmm2 ++ pcmpeqb 48(%rax), %xmm3 ++ pmovmskb %xmm0, %edx ++ pmovmskb %xmm1, %esi ++ pmovmskb %xmm2, %edi ++ pmovmskb %xmm3, %r9d ++ or %edx, %r8d ++ or %esi, %r8d ++ or %edi, %r8d ++ or %r9d, %r8d ++ lea 64(%rax), %rax ++ jz L(aligned_64) ++ ++ test %edx, %edx ++ jnz L(aligned_64_exit_16) ++ test %esi, %esi ++ jnz L(aligned_64_exit_32) ++ test %edi, %edi ++ jnz L(aligned_64_exit_48) ++L(aligned_64_exit_64): ++ mov %r9d, %edx ++ jmp L(aligned_64_exit) ++L(aligned_64_exit_48): ++ lea -16(%rax), %rax ++ mov %edi, %edx ++ jmp L(aligned_64_exit) ++L(aligned_64_exit_32): ++ lea -32(%rax), %rax ++ mov %esi, %edx ++ jmp L(aligned_64_exit) ++L(aligned_64_exit_16): ++ lea -48(%rax), %rax ++L(aligned_64_exit): ++L(exit): ++ sub %rcx, %rax ++ test %dl, %dl ++ jz L(exit_high) ++ test $0x01, %dl ++ jnz L(exit_tail0) ++ ++ test $0x02, %dl ++ jnz L(exit_tail1) ++ ++ test $0x04, %dl ++ jnz L(exit_tail2) ++ ++ test $0x08, %dl ++ jnz L(exit_tail3) ++ ++ test $0x10, %dl ++ jnz L(exit_tail4) ++ ++ test $0x20, %dl ++ jnz L(exit_tail5) ++ ++ test $0x40, %dl ++ jnz L(exit_tail6) ++ add $7, %eax ++L(exit_tail0): ++ ret ++ ++L(exit_high): ++ add $8, %eax ++ test $0x01, %dh ++ jnz L(exit_tail0) ++ ++ test $0x02, %dh ++ jnz L(exit_tail1) ++ ++ test $0x04, %dh ++ jnz L(exit_tail2) ++ ++ test $0x08, %dh ++ jnz L(exit_tail3) ++ ++ test $0x10, %dh ++ jnz L(exit_tail4) ++ ++ test $0x20, %dh ++ jnz L(exit_tail5) ++ ++ test $0x40, %dh ++ jnz L(exit_tail6) ++ add $7, %eax ++ ret ++ .p2align 4 ++L(exit_tail1): ++ add $1, %eax ++ ret ++ ++L(exit_tail2): ++ add $2, %eax ++ ret ++ ++L(exit_tail3): ++ add $3, %eax ++ ret ++ ++L(exit_tail4): ++ add $4, %eax ++ ret ++ ++L(exit_tail5): ++ add $5, %eax ++ ret ++L(exit_tail6): ++ add $6, %eax ++ ret ++L(exit_tail7): ++ add $7, %eax ++ ret ++L(exit_tail8): ++ add $8, %eax ++ ret ++L(exit_tail9): ++ add $9, %eax ++ ret ++L(exit_tail10): ++ add $10, %eax ++ ret ++L(exit_tail11): ++ add $11, %eax ++ ret ++L(exit_tail12): ++ add $12, %eax ++ ret ++L(exit_tail13): ++ add $13, %eax ++ ret ++L(exit_tail14): ++ add $14, %eax ++ ret ++L(exit_tail15): ++ add $15, %eax ++ ret ++END (__strlen_no_bsf) ++ ++#endif +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strlen-sse4.S +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strlen-sse4.S +@@ -0,0 +1,85 @@ ++/* strlen with SSE4 ++ Copyright (C) 2009, 2010 Free Software Foundation, Inc. ++ Contributed by Ulrich Drepper . ++ 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. */ ++ ++#if defined SHARED && !defined NOT_IN_libc ++ ++#include ++ ++ .section .text.sse4.2,"ax",@progbits ++ENTRY (__strlen_sse42) ++ pxor %xmm1, %xmm1 ++ movl %edi, %ecx ++ movq %rdi, %r8 ++ andq $~15, %rdi ++ xor %edi, %ecx ++ pcmpeqb (%rdi), %xmm1 ++ pmovmskb %xmm1, %edx ++ shrl %cl, %edx ++ shll %cl, %edx ++ andl %edx, %edx ++ jnz L(less16bytes) ++ pxor %xmm1, %xmm1 ++ ++ .p2align 4 ++L(more64bytes_loop): ++ pcmpistri $0x08, 16(%rdi), %xmm1 ++ jz L(more32bytes) ++ ++ pcmpistri $0x08, 32(%rdi), %xmm1 ++ jz L(more48bytes) ++ ++ pcmpistri $0x08, 48(%rdi), %xmm1 ++ jz L(more64bytes) ++ ++ add $64, %rdi ++ pcmpistri $0x08, (%rdi), %xmm1 ++ jnz L(more64bytes_loop) ++ leaq (%rdi,%rcx), %rax ++ subq %r8, %rax ++ ret ++ ++ .p2align 4 ++L(more32bytes): ++ leaq 16(%rdi,%rcx, 1), %rax ++ subq %r8, %rax ++ ret ++ ++ .p2align 4 ++L(more48bytes): ++ leaq 32(%rdi,%rcx, 1), %rax ++ subq %r8, %rax ++ ret ++ ++ .p2align 4 ++L(more64bytes): ++ leaq 48(%rdi,%rcx, 1), %rax ++ subq %r8, %rax ++ ret ++ ++ .p2align 4 ++L(less16bytes): ++ subq %r8, %rdi ++ bsfl %edx, %eax ++ addq %rdi, %rax ++ ret ++ ++END (__strlen_sse42) ++ ++#endif +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strlen.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/strlen.S ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strlen.S +@@ -36,74 +36,12 @@ ENTRY(strlen) + testl $bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip) + jz 2f + leaq __strlen_sse42(%rip), %rax +-2: ret +-END(strlen) +- +- +- .section .text.sse4.2,"ax",@progbits +- .align 16 +- .type __strlen_sse42, @function +-__strlen_sse42: +- cfi_startproc +- CALL_MCOUNT +- pxor %xmm1, %xmm1 +- movl %edi, %ecx +- movq %rdi, %r8 +- andq $~15, %rdi +- xor %edi, %ecx +- pcmpeqb (%rdi), %xmm1 +- pmovmskb %xmm1, %edx +- shrl %cl, %edx +- shll %cl, %edx +- andl %edx, %edx +- jnz L(less16bytes) +- pxor %xmm1, %xmm1 +- +- .p2align 4 +-L(more64bytes_loop): +- pcmpistri $0x08, 16(%rdi), %xmm1 +- jz L(more32bytes) +- +- pcmpistri $0x08, 32(%rdi), %xmm1 +- jz L(more48bytes) +- +- pcmpistri $0x08, 48(%rdi), %xmm1 +- jz L(more64bytes) +- +- add $64, %rdi +- pcmpistri $0x08, (%rdi), %xmm1 +- jnz L(more64bytes_loop) +- leaq (%rdi,%rcx), %rax +- subq %r8, %rax +- ret +- +- .p2align 4 +-L(more32bytes): +- leaq 16(%rdi,%rcx, 1), %rax +- subq %r8, %rax +- ret +- +- .p2align 4 +-L(more48bytes): +- leaq 32(%rdi,%rcx, 1), %rax +- subq %r8, %rax +- ret +- +- .p2align 4 +-L(more64bytes): +- leaq 48(%rdi,%rcx, 1), %rax +- subq %r8, %rax + ret +- +- .p2align 4 +-L(less16bytes): +- subq %r8, %rdi +- bsfl %edx, %eax +- addq %rdi, %rax +- ret +- cfi_endproc +- .size __strlen_sse42, .-__strlen_sse42 +- ++2: testl $bit_Slow_BSF, __cpu_features+FEATURE_OFFSET+index_Slow_BSF(%rip) ++ jz 3f ++ leaq __strlen_no_bsf(%rip), %rax ++3: ret ++END(strlen) + + # undef ENTRY + # define ENTRY(name) \ +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strlen.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/strlen.S ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strlen.S +@@ -23,29 +23,80 @@ + + .text + ENTRY(strlen) +- pxor %xmm2, %xmm2 +- movq %rdi, %rcx +- movq %rdi, %r8 +- andq $~15, %rdi +- movdqa %xmm2, %xmm1 +- pcmpeqb (%rdi), %xmm2 +- orl $0xffffffff, %esi +- subq %rdi, %rcx +- shll %cl, %esi +- pmovmskb %xmm2, %edx +- andl %esi, %edx +- jnz 1f +- +-2: movdqa 16(%rdi), %xmm0 +- leaq 16(%rdi), %rdi ++ xor %rax, %rax ++ mov %edi, %ecx ++ and $0x3f, %ecx ++ pxor %xmm0, %xmm0 ++ cmp $0x30, %ecx ++ ja L(next) ++ movdqu (%rdi), %xmm1 + pcmpeqb %xmm1, %xmm0 + pmovmskb %xmm0, %edx +- testl %edx, %edx +- jz 2b ++ test %edx, %edx ++ jnz L(exit_less16) ++ mov %rdi, %rax ++ and $-16, %rax ++ jmp L(align16_start) ++L(next): ++ mov %rdi, %rax ++ and $-16, %rax ++ pcmpeqb (%rax), %xmm0 ++ mov $-1, %esi ++ sub %rax, %rcx ++ shl %cl, %esi ++ pmovmskb %xmm0, %edx ++ and %esi, %edx ++ jnz L(exit) ++L(align16_start): ++ pxor %xmm0, %xmm0 ++ pxor %xmm1, %xmm1 ++ pxor %xmm2, %xmm2 ++ pxor %xmm3, %xmm3 ++ .p2align 4 ++L(align16_loop): ++ pcmpeqb 16(%rax), %xmm0 ++ pmovmskb %xmm0, %edx ++ test %edx, %edx ++ jnz L(exit16) + +-1: subq %r8, %rdi +- bsfl %edx, %eax +- addq %rdi, %rax ++ pcmpeqb 32(%rax), %xmm1 ++ pmovmskb %xmm1, %edx ++ test %edx, %edx ++ jnz L(exit32) ++ ++ pcmpeqb 48(%rax), %xmm2 ++ pmovmskb %xmm2, %edx ++ test %edx, %edx ++ jnz L(exit48) ++ ++ pcmpeqb 64(%rax), %xmm3 ++ pmovmskb %xmm3, %edx ++ lea 64(%rax), %rax ++ test %edx, %edx ++ jz L(align16_loop) ++L(exit): ++ sub %rdi, %rax ++L(exit_less16): ++ bsf %rdx, %rdx ++ add %rdx, %rax ++ ret ++ .p2align 4 ++L(exit16): ++ sub %rdi, %rax ++ bsf %rdx, %rdx ++ lea 16(%rdx,%rax), %rax ++ ret ++ .p2align 4 ++L(exit32): ++ sub %rdi, %rax ++ bsf %rdx, %rdx ++ lea 32(%rdx,%rax), %rax ++ ret ++ .p2align 4 ++L(exit48): ++ sub %rdi, %rax ++ bsf %rdx, %rdx ++ lea 48(%rdx,%rax), %rax + ret + END(strlen) + libc_hidden_builtin_def (strlen) diff --git a/src/patches/glibc/glibc-rh696472.patch b/src/patches/glibc/glibc-rh696472.patch new file mode 100644 index 000000000..9d30d38e9 --- /dev/null +++ b/src/patches/glibc/glibc-rh696472.patch @@ -0,0 +1,36 @@ +commit 3d29045b5e8329d97693eda8d98f1d1e60b99c8f +Author: H.J. Lu +Date: Fri Jun 3 07:01:25 2011 -0400 + + Assume Intel Core i3/i5/i7 processor if AVX is available + +2011-06-02 H.J. Lu + + * sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): + Assume Intel Core i3/i5/i7 processor if AVX is available. + +diff --git a/sysdeps/x86_64/multiarch/init-arch.c b/sysdeps/x86_64/multiarch/init-arch.c +index 34ec2df..809d105 100644 +--- a/sysdeps/x86_64/multiarch/init-arch.c ++++ b/sysdeps/x86_64/multiarch/init-arch.c +@@ -74,6 +74,7 @@ __init_cpu_features (void) + } + else if (family == 0x06) + { ++ ecx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx; + model += extended_model; + switch (model) + { +@@ -83,6 +84,12 @@ __init_cpu_features (void) + __cpu_features.feature[index_Slow_BSF] |= bit_Slow_BSF; + break; + ++ default: ++ /* Unknown family 0x06 processors. Assuming this is one ++ of Core i3/i5/i7 processors if AVX is available. */ ++ if ((ecx & bit_AVX) == 0) ++ break; ++ + case 0x1a: + case 0x1e: + case 0x1f: diff --git a/src/patches/glibc/glibc-rh697421.patch b/src/patches/glibc/glibc-rh697421.patch new file mode 100644 index 000000000..961c8053a --- /dev/null +++ b/src/patches/glibc/glibc-rh697421.patch @@ -0,0 +1,10 @@ +diff -rup a/iconvdata/gconv-modules b/iconvdata/gconv-modules +--- a/iconvdata/gconv-modules 2010-05-04 05:27:23.000000000 -0600 ++++ b/iconvdata/gconv-modules 2012-01-26 10:58:24.181895489 -0700 +@@ -1954,3 +1954,6 @@ alias HPGREEK8// HP-GREEK8// + alias OSF10010004// HP-GREEK8// + module HP-GREEK8// INTERNAL HP-GREEK8 1 + module INTERNAL HP-GREEK8// HP-GREEK8 1 ++ ++alias ISO-10646-UCS-2// UNICODE// ++alias ISO-10646-UCS-2// ISO-10646/UTF8/ diff --git a/src/patches/glibc/glibc-rh699724.patch b/src/patches/glibc/glibc-rh699724.patch new file mode 100644 index 000000000..d25ce8423 --- /dev/null +++ b/src/patches/glibc/glibc-rh699724.patch @@ -0,0 +1,188 @@ +2011-02-23 Andreas Schwab + + [BZ #12509] + * elf/dl-load.c (_dl_map_object_from_fd): Free realname before + returning unsuccessfully. + * elf/Makefile ($(objpfx)noload-mem): New rule. + (noload-ENV): Define. + (tests): Add $(objpfx)noload-mem. + * elf/noload.c: Include . + (main): Call mtrace. Close all opened handles. + +2010-09-27 Andreas Schwab + + * include/link.h (struct link_map): Add l_free_initfini. + * elf/dl-deps.c (_dl_map_object_deps): Set it when assigning + l_initfini. + * elf/rtld.c (dl_main): Clear it on all objects loaded on startup. + * elf/dl-libc.c (free_mem): Free l_initfini if l_free_initfini is + set. + +Index: glibc-2.12-2-gc4ccff1/elf/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/Makefile ++++ glibc-2.12-2-gc4ccff1/elf/Makefile +@@ -211,7 +211,7 @@ endif + ifeq (yesyes,$(have-fpie)$(build-shared)) + tests: $(objpfx)tst-pie1.out + endif +-tests: $(objpfx)tst-leaks1-mem ++tests: $(objpfx)tst-leaks1-mem $(objpfx)noload-mem + tlsmod17a-suffixes = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + tlsmod18a-suffixes = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \ +@@ -664,6 +664,10 @@ $(objpfx)noload: $(objpfx)testobj1.so $( + LDFLAGS-noload = -rdynamic + $(objpfx)noload.out: $(objpfx)testobj5.so + ++$(objpfx)noload-mem: $(objpfx)noload.out ++ $(common-objpfx)malloc/mtrace $(objpfx)noload.mtrace > $@ ++noload-ENV = MALLOC_TRACE=$(objpfx)noload.mtrace ++ + LDFLAGS-nodelete = -rdynamic + LDFLAGS-nodelmod1.so = -Wl,--enable-new-dtags,-z,nodelete + LDFLAGS-nodelmod4.so = -Wl,--enable-new-dtags,-z,nodelete +Index: glibc-2.12-2-gc4ccff1/elf/dl-deps.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/dl-deps.c ++++ glibc-2.12-2-gc4ccff1/elf/dl-deps.c +@@ -478,6 +478,7 @@ _dl_map_object_deps (struct link_map *ma + nneeded * sizeof needed[0]); + atomic_write_barrier (); + l->l_initfini = l_initfini; ++ l->l_free_initfini = 1; + } + + /* If we have no auxiliary objects just go on to the next map. */ +@@ -662,6 +663,7 @@ Filters not supported with LD_TRACE_PREL + l_initfini[nlist] = NULL; + atomic_write_barrier (); + map->l_initfini = l_initfini; ++ map->l_free_initfini = 1; + if (l_reldeps != NULL) + { + atomic_write_barrier (); +Index: glibc-2.12-2-gc4ccff1/elf/dl-libc.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/dl-libc.c ++++ glibc-2.12-2-gc4ccff1/elf/dl-libc.c +@@ -250,5 +250,9 @@ libc_freeres_fn (free_mem) + if (! old->dont_free) + free (old); + } ++ ++ /* Free the initfini dependency list. */ ++ if (l->l_free_initfini) ++ free (l->l_initfini); + } + } +Index: glibc-2.12-2-gc4ccff1/elf/dl-load.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/dl-load.c ++++ glibc-2.12-2-gc4ccff1/elf/dl-load.c +@@ -907,6 +907,7 @@ _dl_map_object_from_fd (const char *name + { + /* We are not supposed to load the object unless it is already + loaded. So return now. */ ++ free (realname); + __close (fd); + return NULL; + } +@@ -925,6 +926,7 @@ _dl_map_object_from_fd (const char *name + _dl_zerofd = _dl_sysdep_open_zero_fill (); + if (_dl_zerofd == -1) + { ++ free (realname); + __close (fd); + _dl_signal_error (errno, NULL, NULL, + N_("cannot open zero fill device")); +Index: glibc-2.12-2-gc4ccff1/elf/noload.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/noload.c ++++ glibc-2.12-2-gc4ccff1/elf/noload.c +@@ -1,20 +1,28 @@ + #include + #include ++#include + + int + main (void) + { + int result = 0; ++ void *p; ++ ++ mtrace (); + + /* First try to load an object which is a dependency. This should + succeed. */ +- if (dlopen ("testobj1.so", RTLD_LAZY | RTLD_NOLOAD) == NULL) ++ p = dlopen ("testobj1.so", RTLD_LAZY | RTLD_NOLOAD); ++ if (p == NULL) + { + printf ("cannot open \"testobj1.so\": %s\n", dlerror ()); + result = 1; + } + else +- puts ("loading \"testobj1.so\" succeeded, OK"); ++ { ++ puts ("loading \"testobj1.so\" succeeded, OK"); ++ dlclose (p); ++ } + + /* Now try loading an object which is not already loaded. */ + if (dlopen ("testobj5.so", RTLD_LAZY | RTLD_NOLOAD) != NULL) +@@ -25,8 +33,6 @@ main (void) + else + { + /* Load the object and run the same test again. */ +- void *p; +- + puts ("\"testobj5.so\" wasn't loaded and RTLD_NOLOAD prevented it, OK"); + + p = dlopen ("testobj5.so", RTLD_LAZY); +@@ -41,13 +47,17 @@ main (void) + { + puts ("loading \"testobj5.so\" succeeded, OK"); + +- if (dlopen ("testobj5.so", RTLD_LAZY | RTLD_NOLOAD) == NULL) ++ void *q = dlopen ("testobj5.so", RTLD_LAZY | RTLD_NOLOAD); ++ if (q == NULL) + { + printf ("cannot open \"testobj5.so\": %s\n", dlerror ()); + result = 1; + } + else +- puts ("loading \"testobj5.so\" with RTLD_NOLOAD succeeded, OK"); ++ { ++ puts ("loading \"testobj5.so\" with RTLD_NOLOAD succeeded, OK"); ++ dlclose (q); ++ } + + if (dlclose (p) != 0) + { +Index: glibc-2.12-2-gc4ccff1/elf/rtld.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/rtld.c ++++ glibc-2.12-2-gc4ccff1/elf/rtld.c +@@ -2249,6 +2249,7 @@ ERROR: ld.so: object '%s' cannot be load + lnp->dont_free = 1; + lnp = lnp->next; + } ++ l->l_free_initfini = 0; + + if (l != &GL(dl_rtld_map)) + _dl_relocate_object (l, l->l_scope, GLRO(dl_lazy) ? RTLD_LAZY : 0, +Index: glibc-2.12-2-gc4ccff1/include/link.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/include/link.h ++++ glibc-2.12-2-gc4ccff1/include/link.h +@@ -192,6 +192,9 @@ struct link_map + during LD_TRACE_PRELINKING=1 + contains any DT_SYMBOLIC + libraries. */ ++ unsigned int l_free_initfini:1; /* Nonzero if l_initfini can be ++ freed, ie. not allocated with ++ the dummy malloc in ld.so. */ + + /* Collected information about own RPATH directories. */ + struct r_search_path_struct l_rpath_dirs; diff --git a/src/patches/glibc/glibc-rh700507.patch b/src/patches/glibc/glibc-rh700507.patch new file mode 100644 index 000000000..0660431db --- /dev/null +++ b/src/patches/glibc/glibc-rh700507.patch @@ -0,0 +1,26 @@ +Index: glibc-2.12-2-gc4ccff1/nscd/nscd.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nscd/nscd.c ++++ glibc-2.12-2-gc4ccff1/nscd/nscd.c +@@ -260,10 +260,6 @@ main (int argc, char **argv) + /* In foreground mode we are not paranoid. */ + paranoia = 0; + +- /* Start the SELinux AVC. */ +- if (selinux_enabled) +- nscd_avc_init (); +- + signal (SIGINT, termination_handler); + signal (SIGQUIT, termination_handler); + signal (SIGTERM, termination_handler); +@@ -278,6 +274,10 @@ main (int argc, char **argv) + /* Init databases. */ + nscd_init (); + ++ /* Start the SELinux AVC. */ ++ if (selinux_enabled) ++ nscd_avc_init (); ++ + /* Handle incoming requests */ + start_threads (); + diff --git a/src/patches/glibc/glibc-rh703480.patch b/src/patches/glibc/glibc-rh703480.patch new file mode 100644 index 000000000..742a79a37 --- /dev/null +++ b/src/patches/glibc/glibc-rh703480.patch @@ -0,0 +1,68 @@ +2011-01-15 Ulrich Drepper + + [BZ #6812] + * nscd/hstcache.c (tryagain): Define. + (cache_addhst): Return tryagain not notfound for temporary errors. + (addhstbyX): Also set h_errno to TRY_AGAIN when memory allocation + failed. + +Index: glibc-2.12-2-gc4ccff1/nscd/hstcache.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nscd/hstcache.c ++++ glibc-2.12-2-gc4ccff1/nscd/hstcache.c +@@ -77,6 +77,20 @@ static const hst_response_header notfoun + }; + + ++/* This is the standard reply in case there are temporary problems. */ ++static const hst_response_header tryagain = ++{ ++ .version = NSCD_VERSION, ++ .found = 0, ++ .h_name_len = 0, ++ .h_aliases_cnt = 0, ++ .h_addrtype = -1, ++ .h_length = -1, ++ .h_addr_list_cnt = 0, ++ .error = TRY_AGAIN ++}; ++ ++ + static void + cache_addhst (struct database_dyn *db, int fd, request_header *req, + const void *key, struct hostent *hst, uid_t owner, +@@ -111,11 +125,15 @@ cache_addhst (struct database_dyn *db, i + else + { + /* We have no data. This means we send the standard reply for this +- case. */ ++ case. Possibly this is only temporary. */ + ssize_t total = sizeof (notfound); ++ assert (sizeof (notfound) == sizeof (tryagain)); ++ ++ const hst_response_header *resp = (errval == EAGAIN ++ ? &tryagain : ¬found); + + if (fd != -1 && +- TEMP_FAILURE_RETRY (send (fd, ¬found, total, ++ TEMP_FAILURE_RETRY (send (fd, resp, total, + MSG_NOSIGNAL)) != total) + all_written = false; + +@@ -135,7 +153,7 @@ cache_addhst (struct database_dyn *db, i + ? db->negtimeout : ttl); + + /* This is the reply. */ +- memcpy (&dataset->resp, ¬found, total); ++ memcpy (&dataset->resp, resp, total); + + /* Copy the key data. */ + memcpy (dataset->strdata, key, req->key_len); +@@ -490,6 +508,7 @@ addhstbyX (struct database_dyn *db, int + /* We set the error to indicate this is (possibly) a + temporary error and that it does not mean the entry + is not available at all. */ ++ h_errno = TRY_AGAIN; + errval = EAGAIN; + break; + } diff --git a/src/patches/glibc/glibc-rh703481.patch b/src/patches/glibc/glibc-rh703481.patch new file mode 100644 index 000000000..fdde4b5de --- /dev/null +++ b/src/patches/glibc/glibc-rh703481.patch @@ -0,0 +1,875 @@ +2011-02-05 Ulrich Drepper + + * nscd/nscd-client.h: Define MAX_TIMEOUT_VALUE. + (struct datahead): Reuse 32 bits of the alignment for a TTL field. + * nscd/aicache.c (addhstaiX): Return timeout of added value. + (readdhstai): Return value of addhstaiX call. + * nscd/grpcache.c (cache_addgr): Return timeout of added value. + (addgrbyX): Return value returned by cache_addgr. + (readdgrbyname): Return value returned by addgrbyX. + (readdgrbygid): Likewise. + * nscd/pwdcache.c (cache_addpw): Return timeout of added value. + (addpwbyX): Return value returned by cache_addpw. + (readdpwbyname): Return value returned by addhstbyX. + (readdpwbyuid): Likewise. + * nscd/servicescache.c (cache_addserv): Return timeout of added value. + (addservbyX): Return value returned by cache_addserv. + (readdservbyname): Return value returned by addservbyX: + (readdservbyport): Likewise. + * nscd/hstcache.c (cache_addhst): Return timeout of added value. + (addhstbyX): Return value returned by cache_addhst. + (readdhstbyname): Return value returned by addhstbyX. + (readdhstbyaddr): Likewise. + (readdhstbynamev6): Likewise. + (readdhstbyaddrv6): Likewise. + * nscd/initgrcache.c (addinitgroupsX): Return timeout of added value. + (readdinitgroups): Return value returned by addinitgroupsX. + * nscd/cache.c (readdfcts): Change return value of functions to time_t. + (prune_cache): Keep track of timeout value of re-added entries. + * nscd/connections.c (nscd_run_prune): Use MAX_TIMEOUT_VALUE. + * nscd/nscd.h: Adjust prototypes of readd* functions. + +Index: glibc-2.12-2-gc4ccff1/nscd/aicache.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nscd/aicache.c ++++ glibc-2.12-2-gc4ccff1/nscd/aicache.c +@@ -58,7 +58,7 @@ static const ai_response_header notfound + }; + + +-static void ++static time_t + addhstaiX (struct database_dyn *db, int fd, request_header *req, + void *key, uid_t uid, struct hashentry *const he, + struct datahead *dh) +@@ -119,6 +119,7 @@ addhstaiX (struct database_dyn *db, int + ssize_t total = 0; + char *key_copy = NULL; + bool alloca_used = false; ++ time_t timeout = MAX_TIMEOUT_VALUE; + + while (!no_more) + { +@@ -388,8 +389,8 @@ addhstaiX (struct database_dyn *db, int + dataset->head.usable = true; + + /* Compute the timeout time. */ +- dataset->head.timeout = time (NULL) + (ttl == INT32_MAX +- ? db->postimeout : ttl); ++ dataset->head.ttl = ttl == INT32_MAX ? db->postimeout : ttl; ++ timeout = dataset->head.timeout = time (NULL) + dataset->head.ttl; + + dataset->resp.version = NSCD_VERSION; + dataset->resp.found = 1; +@@ -421,6 +422,7 @@ addhstaiX (struct database_dyn *db, int + timeout value. Note that the new record has been + allocated on the stack and need not be freed. */ + dh->timeout = dataset->head.timeout; ++ dh->ttl = dataset->head.ttl; + ++dh->nreloads; + } + else +@@ -496,6 +498,9 @@ next_nip: + if (reload_count != UINT_MAX && dh->nreloads == reload_count) + /* Do not reset the value if we never not reload the record. */ + dh->nreloads = reload_count - 1; ++ ++ /* Reload with the same time-to-live value. */ ++ timeout = dh->timeout = time (NULL) + dh->ttl; + } + else + { +@@ -517,7 +522,8 @@ next_nip: + dataset->head.usable = true; + + /* Compute the timeout time. */ +- dataset->head.timeout = time (NULL) + db->negtimeout; ++ timeout = dataset->head.timeout = time (NULL) + db->negtimeout; ++ dataset->head.ttl = db->negtimeout; + + /* This is the reply. */ + memcpy (&dataset->resp, ¬found, total); +@@ -551,6 +557,8 @@ next_nip: + if (dh != NULL) + dh->usable = false; + } ++ ++ return timeout; + } + + +@@ -562,7 +570,7 @@ addhstai (struct database_dyn *db, int f + } + + +-void ++time_t + readdhstai (struct database_dyn *db, struct hashentry *he, struct datahead *dh) + { + request_header req = +@@ -571,5 +579,5 @@ readdhstai (struct database_dyn *db, str + .key_len = he->len + }; + +- addhstaiX (db, -1, &req, db->data + he->key, he->owner, he, dh); ++ return addhstaiX (db, -1, &req, db->data + he->key, he->owner, he, dh); + } +Index: glibc-2.12-2-gc4ccff1/nscd/cache.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nscd/cache.c ++++ glibc-2.12-2-gc4ccff1/nscd/cache.c +@@ -45,9 +45,9 @@ extern void *xcalloc (size_t n, size_t s + unsigned int reload_count = DEFAULT_RELOAD_LIMIT; + + +-static void (*const readdfcts[LASTREQ]) (struct database_dyn *, +- struct hashentry *, +- struct datahead *) = ++static time_t (*const readdfcts[LASTREQ]) (struct database_dyn *, ++ struct hashentry *, ++ struct datahead *) = + { + [GETPWBYNAME] = readdpwbyname, + [GETPWBYUID] = readdpwbyuid, +@@ -389,7 +389,8 @@ prune_cache (struct database_dyn *table, + assert (runp->type < LASTREQ + && readdfcts[runp->type] != NULL); + +- readdfcts[runp->type] (table, runp, dh); ++ time_t timeout = readdfcts[runp->type] (table, runp, dh); ++ next_timeout = MIN (next_timeout, timeout); + + /* If the entry has been replaced, we might need + cleanup. */ +Index: glibc-2.12-2-gc4ccff1/nscd/connections.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nscd/connections.c ++++ glibc-2.12-2-gc4ccff1/nscd/connections.c +@@ -1533,10 +1533,7 @@ nscd_run_prune (void *p) + pruning we want to know about it. Therefore set the + timeout to the maximum. It will be descreased when adding + new entries to the cache, if necessary. */ +- if (sizeof (time_t) == sizeof (long int)) +- dbs[my_number].wakeup_time = LONG_MAX; +- else +- dbs[my_number].wakeup_time = INT_MAX; ++ dbs[my_number].wakeup_time = MAX_TIMEOUT_VALUE; + + /* Unconditionally reset the flag. */ + time_t prune_now = dbs[my_number].clear_cache ? LONG_MAX : now; +Index: glibc-2.12-2-gc4ccff1/nscd/grpcache.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nscd/grpcache.c ++++ glibc-2.12-2-gc4ccff1/nscd/grpcache.c +@@ -71,7 +71,7 @@ static const gr_response_header notfound + }; + + +-static void ++static time_t + cache_addgr (struct database_dyn *db, int fd, request_header *req, + const void *key, struct group *grp, uid_t owner, + struct hashentry *const he, struct datahead *dh, int errval) +@@ -91,6 +91,7 @@ cache_addgr (struct database_dyn *db, in + + assert (offsetof (struct dataset, resp) == offsetof (struct datahead, data)); + ++ time_t timeout = MAX_TIMEOUT_VALUE; + if (grp == NULL) + { + if (he != NULL && errval == EAGAIN) +@@ -102,6 +103,9 @@ cache_addgr (struct database_dyn *db, in + /* Do not reset the value if we never not reload the record. */ + dh->nreloads = reload_count - 1; + ++ /* Reload with the same time-to-live value. */ ++ timeout = dh->timeout = t + db->postimeout; ++ + written = total = 0; + } + else +@@ -125,7 +129,7 @@ cache_addgr (struct database_dyn *db, in + dataset->head.usable = true; + + /* Compute the timeout time. */ +- dataset->head.timeout = t + db->negtimeout; ++ timeout = dataset->head.timeout = t + db->negtimeout; + + /* This is the reply. */ + memcpy (&dataset->resp, ¬found, total); +@@ -217,7 +221,7 @@ cache_addgr (struct database_dyn *db, in + dataset->head.usable = true; + + /* Compute the timeout time. */ +- dataset->head.timeout = t + db->postimeout; ++ timeout = dataset->head.timeout = t + db->postimeout; + + dataset->resp.version = NSCD_VERSION; + dataset->resp.found = 1; +@@ -379,6 +383,8 @@ cache_addgr (struct database_dyn *db, in + dbg_log (_("short write in %s: %s"), __FUNCTION__, + strerror_r (errno, buf, sizeof (buf))); + } ++ ++ return timeout; + } + + +@@ -400,7 +406,7 @@ lookup (int type, union keytype key, str + } + + +-static void ++static time_t + addgrbyX (struct database_dyn *db, int fd, request_header *req, + union keytype key, const char *keystr, uid_t uid, + struct hashentry *he, struct datahead *dh) +@@ -456,10 +462,12 @@ addgrbyX (struct database_dyn *db, int f + buffer = (char *) extend_alloca (buffer, buflen, 2 * buflen); + } + +- cache_addgr (db, fd, req, keystr, grp, uid, he, dh, errval); ++ time_t timeout = cache_addgr (db, fd, req, keystr, grp, uid, he, dh, errval); + + if (use_malloc) + free (buffer); ++ ++ return timeout; + } + + +@@ -473,7 +481,7 @@ addgrbyname (struct database_dyn *db, in + } + + +-void ++time_t + readdgrbyname (struct database_dyn *db, struct hashentry *he, + struct datahead *dh) + { +@@ -484,7 +492,7 @@ readdgrbyname (struct database_dyn *db, + }; + union keytype u = { .v = db->data + he->key }; + +- addgrbyX (db, -1, &req, u, db->data + he->key, he->owner, he, dh); ++ return addgrbyX (db, -1, &req, u, db->data + he->key, he->owner, he, dh); + } + + +@@ -510,7 +518,7 @@ addgrbygid (struct database_dyn *db, int + } + + +-void ++time_t + readdgrbygid (struct database_dyn *db, struct hashentry *he, + struct datahead *dh) + { +@@ -527,5 +535,5 @@ readdgrbygid (struct database_dyn *db, s + }; + union keytype u = { .g = gid }; + +- addgrbyX (db, -1, &req, u, db->data + he->key, he->owner, he, dh); ++ return addgrbyX (db, -1, &req, u, db->data + he->key, he->owner, he, dh); + } +Index: glibc-2.12-2-gc4ccff1/nscd/hstcache.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nscd/hstcache.c ++++ glibc-2.12-2-gc4ccff1/nscd/hstcache.c +@@ -91,7 +91,7 @@ static const hst_response_header tryagai + }; + + +-static void ++static time_t + cache_addhst (struct database_dyn *db, int fd, request_header *req, + const void *key, struct hostent *hst, uid_t owner, + struct hashentry *const he, struct datahead *dh, int errval, +@@ -111,6 +111,7 @@ cache_addhst (struct database_dyn *db, i + + assert (offsetof (struct dataset, resp) == offsetof (struct datahead, data)); + ++ time_t timeout = MAX_TIMEOUT_VALUE; + if (hst == NULL) + { + if (he != NULL && errval == EAGAIN) +@@ -121,6 +122,9 @@ cache_addhst (struct database_dyn *db, i + if (reload_count != UINT_MAX) + /* Do not reset the value if we never not reload the record. */ + dh->nreloads = reload_count - 1; ++ ++ /* Reload with the same time-to-live value. */ ++ timeout = dh->timeout = t + dh->ttl; + } + else + { +@@ -149,8 +153,8 @@ cache_addhst (struct database_dyn *db, i + dataset->head.usable = true; + + /* Compute the timeout time. */ +- dataset->head.timeout = t + (ttl == INT32_MAX +- ? db->negtimeout : ttl); ++ dataset->head.ttl = ttl == INT32_MAX ? db->negtimeout : ttl; ++ timeout = dataset->head.timeout = t + dataset->head.ttl; + + /* This is the reply. */ + memcpy (&dataset->resp, resp, total); +@@ -214,7 +218,7 @@ cache_addhst (struct database_dyn *db, i + + if (h_addr_list_cnt == 0) + /* Invalid entry. */ +- return; ++ return MAX_TIMEOUT_VALUE; + + total += (sizeof (struct dataset) + + h_name_len +@@ -255,7 +259,8 @@ cache_addhst (struct database_dyn *db, i + dataset->head.usable = true; + + /* Compute the timeout time. */ +- dataset->head.timeout = t + (ttl == INT32_MAX ? db->postimeout : ttl); ++ dataset->head.ttl = ttl == INT32_MAX ? db->postimeout : ttl; ++ timeout = dataset->head.timeout = t + dataset->head.ttl; + + dataset->resp.version = NSCD_VERSION; + dataset->resp.found = 1; +@@ -312,6 +317,7 @@ cache_addhst (struct database_dyn *db, i + timeout value. Note that the new record has been + allocated on the stack and need not be freed. */ + assert (h_addr_list_cnt == 1); ++ dh->ttl = dataset->head.ttl; + dh->timeout = dataset->head.timeout; + ++dh->nreloads; + } +@@ -433,6 +439,8 @@ cache_addhst (struct database_dyn *db, i + dbg_log (_("short write in %s: %s"), __FUNCTION__, + strerror_r (errno, buf, sizeof (buf))); + } ++ ++ return timeout; + } + + +@@ -454,7 +462,7 @@ lookup (int type, void *key, struct host + } + + +-static void ++static time_t + addhstbyX (struct database_dyn *db, int fd, request_header *req, + void *key, uid_t uid, struct hashentry *he, struct datahead *dh) + { +@@ -520,11 +528,13 @@ addhstbyX (struct database_dyn *db, int + buffer = (char *) extend_alloca (buffer, buflen, 2 * buflen); + } + +- cache_addhst (db, fd, req, key, hst, uid, he, dh, +- h_errno == TRY_AGAIN ? errval : 0, ttl); ++ time_t timeout = cache_addhst (db, fd, req, key, hst, uid, he, dh, ++ h_errno == TRY_AGAIN ? errval : 0, ttl); + + if (use_malloc) + free (buffer); ++ ++ return timeout; + } + + +@@ -536,7 +546,7 @@ addhstbyname (struct database_dyn *db, i + } + + +-void ++time_t + readdhstbyname (struct database_dyn *db, struct hashentry *he, + struct datahead *dh) + { +@@ -546,7 +556,7 @@ readdhstbyname (struct database_dyn *db, + .key_len = he->len + }; + +- addhstbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); ++ return addhstbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); + } + + +@@ -558,7 +568,7 @@ addhstbyaddr (struct database_dyn *db, i + } + + +-void ++time_t + readdhstbyaddr (struct database_dyn *db, struct hashentry *he, + struct datahead *dh) + { +@@ -568,7 +578,7 @@ readdhstbyaddr (struct database_dyn *db, + .key_len = he->len + }; + +- addhstbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); ++ return addhstbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); + } + + +@@ -580,7 +590,7 @@ addhstbynamev6 (struct database_dyn *db, + } + + +-void ++time_t + readdhstbynamev6 (struct database_dyn *db, struct hashentry *he, + struct datahead *dh) + { +@@ -590,7 +600,7 @@ readdhstbynamev6 (struct database_dyn *d + .key_len = he->len + }; + +- addhstbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); ++ return addhstbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); + } + + +@@ -602,7 +612,7 @@ addhstbyaddrv6 (struct database_dyn *db, + } + + +-void ++time_t + readdhstbyaddrv6 (struct database_dyn *db, struct hashentry *he, + struct datahead *dh) + { +@@ -612,5 +622,5 @@ readdhstbyaddrv6 (struct database_dyn *d + .key_len = he->len + }; + +- addhstbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); ++ return addhstbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); + } +Index: glibc-2.12-2-gc4ccff1/nscd/initgrcache.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nscd/initgrcache.c ++++ glibc-2.12-2-gc4ccff1/nscd/initgrcache.c +@@ -52,7 +52,7 @@ static const initgr_response_header notf + #include "../grp/compat-initgroups.c" + + +-static void ++static time_t + addinitgroupsX (struct database_dyn *db, int fd, request_header *req, + void *key, uid_t uid, struct hashentry *const he, + struct datahead *dh) +@@ -174,7 +174,9 @@ addinitgroupsX (struct database_dyn *db, + + ssize_t total; + ssize_t written; ++ time_t timeout; + out: ++ timeout = MAX_TIMEOUT_VALUE; + if (!any_success) + { + /* Nothing found. Create a negative result record. */ +@@ -188,6 +190,9 @@ addinitgroupsX (struct database_dyn *db, + if (reload_count != UINT_MAX && dh->nreloads == reload_count) + /* Do not reset the value if we never not reload the record. */ + dh->nreloads = reload_count - 1; ++ ++ /* Reload with the same time-to-live value. */ ++ timeout = dh->timeout = time (NULL) + db->postimeout; + } + else + { +@@ -209,7 +214,7 @@ addinitgroupsX (struct database_dyn *db, + dataset->head.usable = true; + + /* Compute the timeout time. */ +- dataset->head.timeout = time (NULL) + db->negtimeout; ++ timeout = dataset->head.timeout = time (NULL) + db->negtimeout; + + /* This is the reply. */ + memcpy (&dataset->resp, ¬found, total); +@@ -273,7 +278,7 @@ addinitgroupsX (struct database_dyn *db, + dataset->head.usable = true; + + /* Compute the timeout time. */ +- dataset->head.timeout = time (NULL) + db->postimeout; ++ timeout = dataset->head.timeout = time (NULL) + db->postimeout; + + dataset->resp.version = NSCD_VERSION; + dataset->resp.found = 1; +@@ -401,6 +406,8 @@ addinitgroupsX (struct database_dyn *db, + dbg_log (_("short write in %s: %s"), __FUNCTION__, + strerror_r (errno, buf, sizeof (buf))); + } ++ ++ return timeout; + } + + +@@ -412,7 +419,7 @@ addinitgroups (struct database_dyn *db, + } + + +-void ++time_t + readdinitgroups (struct database_dyn *db, struct hashentry *he, + struct datahead *dh) + { +@@ -422,5 +429,5 @@ readdinitgroups (struct database_dyn *db + .key_len = he->len + }; + +- addinitgroupsX (db, -1, &req, db->data + he->key, he->owner, he, dh); ++ return addinitgroupsX (db, -1, &req, db->data + he->key, he->owner, he, dh); + } +Index: glibc-2.12-2-gc4ccff1/nscd/nscd-client.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nscd/nscd-client.h ++++ glibc-2.12-2-gc4ccff1/nscd/nscd-client.h +@@ -179,6 +179,10 @@ typedef uint32_t ref_t; + /* Timestamp type. */ + typedef uint64_t nscd_time_t; + ++/* Maximum timestamp. */ ++#define MAX_TIMEOUT_VALUE \ ++ (sizeof (time_t) == sizeof (long int) ? LONG_MAX : INT_MAX) ++ + /* Alignment requirement of the beginning of the data region. */ + #define ALIGN 16 + +@@ -192,7 +196,8 @@ struct datahead + uint8_t notfound; /* Nonzero if data has not been found. */ + uint8_t nreloads; /* Reloads without use. */ + uint8_t usable; /* False if the entry must be ignored. */ +- uint64_t :40; /* Alignment. */ ++ uint8_t unused; /* Unused. */ ++ uint32_t ttl; /* TTL value used. */ + + /* We need to have the following element aligned for the response + header data types and their use in the 'struct dataset' types +Index: glibc-2.12-2-gc4ccff1/nscd/nscd.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nscd/nscd.h ++++ glibc-2.12-2-gc4ccff1/nscd/nscd.h +@@ -217,20 +217,20 @@ extern void addpwbyname (struct database + void *key, uid_t uid); + extern void addpwbyuid (struct database_dyn *db, int fd, request_header *req, + void *key, uid_t uid); +-extern void readdpwbyname (struct database_dyn *db, struct hashentry *he, +- struct datahead *dh); +-extern void readdpwbyuid (struct database_dyn *db, struct hashentry *he, +- struct datahead *dh); ++extern time_t readdpwbyname (struct database_dyn *db, struct hashentry *he, ++ struct datahead *dh); ++extern time_t readdpwbyuid (struct database_dyn *db, struct hashentry *he, ++ struct datahead *dh); + + /* grpcache.c */ + extern void addgrbyname (struct database_dyn *db, int fd, request_header *req, + void *key, uid_t uid); + extern void addgrbygid (struct database_dyn *db, int fd, request_header *req, + void *key, uid_t uid); +-extern void readdgrbyname (struct database_dyn *db, struct hashentry *he, +- struct datahead *dh); +-extern void readdgrbygid (struct database_dyn *db, struct hashentry *he, +- struct datahead *dh); ++extern time_t readdgrbyname (struct database_dyn *db, struct hashentry *he, ++ struct datahead *dh); ++extern time_t readdgrbygid (struct database_dyn *db, struct hashentry *he, ++ struct datahead *dh); + + /* hstcache.c */ + extern void addhstbyname (struct database_dyn *db, int fd, request_header *req, +@@ -241,37 +241,37 @@ extern void addhstbynamev6 (struct datab + request_header *req, void *key, uid_t uid); + extern void addhstbyaddrv6 (struct database_dyn *db, int fd, + request_header *req, void *key, uid_t uid); +-extern void readdhstbyname (struct database_dyn *db, struct hashentry *he, +- struct datahead *dh); +-extern void readdhstbyaddr (struct database_dyn *db, struct hashentry *he, +- struct datahead *dh); +-extern void readdhstbynamev6 (struct database_dyn *db, struct hashentry *he, ++extern time_t readdhstbyname (struct database_dyn *db, struct hashentry *he, + struct datahead *dh); +-extern void readdhstbyaddrv6 (struct database_dyn *db, struct hashentry *he, ++extern time_t readdhstbyaddr (struct database_dyn *db, struct hashentry *he, + struct datahead *dh); ++extern time_t readdhstbynamev6 (struct database_dyn *db, struct hashentry *he, ++ struct datahead *dh); ++extern time_t readdhstbyaddrv6 (struct database_dyn *db, struct hashentry *he, ++ struct datahead *dh); + + /* aicache.c */ + extern void addhstai (struct database_dyn *db, int fd, request_header *req, + void *key, uid_t uid); +-extern void readdhstai (struct database_dyn *db, struct hashentry *he, +- struct datahead *dh); ++extern time_t readdhstai (struct database_dyn *db, struct hashentry *he, ++ struct datahead *dh); + + + /* initgrcache.c */ + extern void addinitgroups (struct database_dyn *db, int fd, + request_header *req, void *key, uid_t uid); +-extern void readdinitgroups (struct database_dyn *db, struct hashentry *he, +- struct datahead *dh); ++extern time_t readdinitgroups (struct database_dyn *db, struct hashentry *he, ++ struct datahead *dh); + + /* servicecache.c */ + extern void addservbyname (struct database_dyn *db, int fd, + request_header *req, void *key, uid_t uid); +-extern void readdservbyname (struct database_dyn *db, struct hashentry *he, +- struct datahead *dh); ++extern time_t readdservbyname (struct database_dyn *db, struct hashentry *he, ++ struct datahead *dh); + extern void addservbyport (struct database_dyn *db, int fd, + request_header *req, void *key, uid_t uid); +-extern void readdservbyport (struct database_dyn *db, struct hashentry *he, +- struct datahead *dh); ++extern time_t readdservbyport (struct database_dyn *db, struct hashentry *he, ++ struct datahead *dh); + + /* mem.c */ + extern void *mempool_alloc (struct database_dyn *db, size_t len, +Index: glibc-2.12-2-gc4ccff1/nscd/pwdcache.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nscd/pwdcache.c ++++ glibc-2.12-2-gc4ccff1/nscd/pwdcache.c +@@ -77,7 +77,7 @@ static const pw_response_header notfound + }; + + +-static void ++static time_t + cache_addpw (struct database_dyn *db, int fd, request_header *req, + const void *key, struct passwd *pwd, uid_t owner, + struct hashentry *const he, struct datahead *dh, int errval) +@@ -97,6 +97,7 @@ cache_addpw (struct database_dyn *db, in + + assert (offsetof (struct dataset, resp) == offsetof (struct datahead, data)); + ++ time_t timeout = MAX_TIMEOUT_VALUE; + if (pwd == NULL) + { + if (he != NULL && errval == EAGAIN) +@@ -108,6 +109,9 @@ cache_addpw (struct database_dyn *db, in + /* Do not reset the value if we never not reload the record. */ + dh->nreloads = reload_count - 1; + ++ /* Reload with the same time-to-live value. */ ++ timeout = dh->timeout = t + db->postimeout; ++ + written = total = 0; + } + else +@@ -132,7 +136,7 @@ cache_addpw (struct database_dyn *db, in + dataset->head.usable = true; + + /* Compute the timeout time. */ +- dataset->head.timeout = t + db->negtimeout; ++ timeout = dataset->head.timeout = t + db->negtimeout; + + /* This is the reply. */ + memcpy (&dataset->resp, ¬found, total); +@@ -212,7 +216,7 @@ cache_addpw (struct database_dyn *db, in + dataset->head.usable = true; + + /* Compute the timeout time. */ +- dataset->head.timeout = t + db->postimeout; ++ timeout = dataset->head.timeout = t + db->postimeout; + + dataset->resp.version = NSCD_VERSION; + dataset->resp.found = 1; +@@ -293,8 +297,8 @@ cache_addpw (struct database_dyn *db, in + assert ((char *) dataset - (char *) db->head + + total + <= (sizeof (struct database_pers_head) +- + db->head->module * sizeof (ref_t) +- + db->head->data_size)); ++ + db->head->module * sizeof (ref_t) ++ + db->head->data_size)); + written = sendfileall (fd, db->wr_fd, + (char *) &dataset->resp + - (char *) db->head, dataset->head.recsize ); +@@ -374,6 +378,8 @@ cache_addpw (struct database_dyn *db, in + dbg_log (_("short write in %s: %s"), __FUNCTION__, + strerror_r (errno, buf, sizeof (buf))); + } ++ ++ return timeout; + } + + +@@ -395,7 +401,7 @@ lookup (int type, union keytype key, str + } + + +-static void ++static time_t + addpwbyX (struct database_dyn *db, int fd, request_header *req, + union keytype key, const char *keystr, uid_t c_uid, + struct hashentry *he, struct datahead *dh) +@@ -452,10 +458,13 @@ addpwbyX (struct database_dyn *db, int f + } + + /* Add the entry to the cache. */ +- cache_addpw (db, fd, req, keystr, pwd, c_uid, he, dh, errval); ++ time_t timeout = cache_addpw (db, fd, req, keystr, pwd, c_uid, he, dh, ++ errval); + + if (use_malloc) + free (buffer); ++ ++ return timeout; + } + + +@@ -469,7 +478,7 @@ addpwbyname (struct database_dyn *db, in + } + + +-void ++time_t + readdpwbyname (struct database_dyn *db, struct hashentry *he, + struct datahead *dh) + { +@@ -480,7 +489,7 @@ readdpwbyname (struct database_dyn *db, + }; + union keytype u = { .v = db->data + he->key }; + +- addpwbyX (db, -1, &req, u, db->data + he->key, he->owner, he, dh); ++ return addpwbyX (db, -1, &req, u, db->data + he->key, he->owner, he, dh); + } + + +@@ -506,7 +515,7 @@ addpwbyuid (struct database_dyn *db, int + } + + +-void ++time_t + readdpwbyuid (struct database_dyn *db, struct hashentry *he, + struct datahead *dh) + { +@@ -523,5 +532,5 @@ readdpwbyuid (struct database_dyn *db, s + }; + union keytype u = { .u = uid }; + +- addpwbyX (db, -1, &req, u, db->data + he->key, he->owner, he, dh); ++ return addpwbyX (db, -1, &req, u, db->data + he->key, he->owner, he, dh); + } +Index: glibc-2.12-2-gc4ccff1/nscd/servicescache.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nscd/servicescache.c ++++ glibc-2.12-2-gc4ccff1/nscd/servicescache.c +@@ -61,7 +61,7 @@ static const serv_response_header notfou + }; + + +-static void ++static time_t + cache_addserv (struct database_dyn *db, int fd, request_header *req, + const void *key, struct servent *serv, uid_t owner, + struct hashentry *const he, struct datahead *dh, int errval) +@@ -81,6 +81,7 @@ cache_addserv (struct database_dyn *db, + + assert (offsetof (struct dataset, resp) == offsetof (struct datahead, data)); + ++ time_t timeout = MAX_TIMEOUT_VALUE; + if (serv == NULL) + { + if (he != NULL && errval == EAGAIN) +@@ -92,6 +93,9 @@ cache_addserv (struct database_dyn *db, + /* Do not reset the value if we never not reload the record. */ + dh->nreloads = reload_count - 1; + ++ /* Reload with the same time-to-live value. */ ++ timeout = dh->timeout = t + db->postimeout; ++ + written = total = 0; + } + else +@@ -115,7 +119,7 @@ cache_addserv (struct database_dyn *db, + dataset->head.usable = true; + + /* Compute the timeout time. */ +- dataset->head.timeout = t + db->negtimeout; ++ timeout = dataset->head.timeout = t + db->negtimeout; + + /* This is the reply. */ + memcpy (&dataset->resp, ¬found, total); +@@ -203,7 +207,7 @@ cache_addserv (struct database_dyn *db, + dataset->head.usable = true; + + /* Compute the timeout time. */ +- dataset->head.timeout = t + db->postimeout; ++ timeout = dataset->head.timeout = t + db->postimeout; + + dataset->resp.version = NSCD_VERSION; + dataset->resp.found = 1; +@@ -328,6 +332,8 @@ cache_addserv (struct database_dyn *db, + dbg_log (_("short write in %s: %s"), __FUNCTION__, + strerror_r (errno, buf, sizeof (buf))); + } ++ ++ return timeout; + } + + +@@ -354,7 +360,7 @@ lookup (int type, char *key, struct serv + } + + +-static void ++static time_t + addservbyX (struct database_dyn *db, int fd, request_header *req, + char *key, uid_t uid, struct hashentry *he, struct datahead *dh) + { +@@ -409,10 +415,12 @@ addservbyX (struct database_dyn *db, int + buffer = (char *) extend_alloca (buffer, buflen, 2 * buflen); + } + +- cache_addserv (db, fd, req, key, serv, uid, he, dh, errval); ++ time_t timeout = cache_addserv (db, fd, req, key, serv, uid, he, dh, errval); + + if (use_malloc) + free (buffer); ++ ++ return timeout; + } + + +@@ -424,7 +432,7 @@ addservbyname (struct database_dyn *db, + } + + +-void ++time_t + readdservbyname (struct database_dyn *db, struct hashentry *he, + struct datahead *dh) + { +@@ -434,7 +442,7 @@ readdservbyname (struct database_dyn *db + .key_len = he->len + }; + +- addservbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); ++ return addservbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); + } + + +@@ -446,7 +454,7 @@ addservbyport (struct database_dyn *db, + } + + +-void ++time_t + readdservbyport (struct database_dyn *db, struct hashentry *he, + struct datahead *dh) + { +@@ -456,5 +464,5 @@ readdservbyport (struct database_dyn *db + .key_len = he->len + }; + +- addservbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); ++ return addservbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); + } diff --git a/src/patches/glibc/glibc-rh705465.patch b/src/patches/glibc/glibc-rh705465.patch new file mode 100644 index 000000000..63b971e7d --- /dev/null +++ b/src/patches/glibc/glibc-rh705465.patch @@ -0,0 +1,449 @@ +2011-11-07 Andreas Schwab + + * nss/nss_files/files-initgroups.c (_nss_files_initgroups_dyn): + Fix size of allocated buffer. + +2011-05-10 Ulrich Drepper + + [BZ #11257] + * grp/initgroups.c (internal_getgrouplist): When we found the service + list through the initgroups entry in nsswitch.conf do not always + continue on a successful lookup. Don't always use the + __nss_group_data-ase value if it is set. + * nss/nsswitch.conf (initgroups): Change action for successful db + lookup to continue for compatibility. + +2011-05-06 Ulrich Drepper + + * nss/nss_files/files-initgroups.c (_nss_files_initgroups_dyn): Return + NSS_STATUS_NOTFOUND if no record was found. + +2011-04-29 Ulrich Drepper + + * grp/initgroups.c (internal_getgrouplist): Prefer initgroups setting + to groups setting in database lookup. + * nss/nsswitch.conf: Add initgroups entry. + +2011-04-21 Ulrich Drepper + + * nss/nss_files/files-initgroups.c (_nss_files_initgroups_dyn): Fix + problem in reallocation in last patch. + +2011-04-19 Ulrich Drepper + + * nss/nss_files/files-initgroups.c: New file. + * nss/Makefile (libnss_files-routines): Add files-initgroups. + * nss/Versions (libnss_files) [GLIBC_PRIVATE]: Export + _nss_files_initgroups_dyn. + +2011-01-13 Ulrich Drepper + + [BZ #10484] + * nss/nss_files/files-hosts.c (HOST_DB_LOOKUP): Handle overflows of + temporary buffer used to handle multi lookups locally. + * include/alloca.h: Add libc_hidden_proto for __libc_alloca_cutoff. + +2011-01-13 Ulrich Drepper + + [BZ #10484] + * Versions [libc] (GLIBC_PRIVATE): Export __libc_alloca_cutoff. + * alloca_cutoff.c: Add libc_hidden_def. + +Index: glibc-2.12-2-gc4ccff1/grp/initgroups.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/grp/initgroups.c ++++ glibc-2.12-2-gc4ccff1/grp/initgroups.c +@@ -43,6 +43,8 @@ extern int __nss_group_lookup (service_u + extern void *__nss_lookup_function (service_user *ni, const char *fct_name); + + extern service_user *__nss_group_database attribute_hidden; ++static service_user *initgroups_database; ++static bool use_initgroups_entry; + + + #include "compat-initgroups.c" +@@ -67,32 +69,41 @@ internal_getgrouplist (const char *user, + } + #endif + +- service_user *nip = NULL; +- initgroups_dyn_function fct; + enum nss_status status = NSS_STATUS_UNAVAIL; +- int no_more; +- /* Start is one, because we have the first group as parameter. */ +- long int start = 1; ++ int no_more = 0; + + /* Never store more than the starting *SIZE number of elements. */ + assert (*size > 0); + (*groupsp)[0] = group; ++ /* Start is one, because we have the first group as parameter. */ ++ long int start = 1; + +- if (__nss_group_database != NULL) ++ if (initgroups_database == NULL) + { +- no_more = 0; +- nip = __nss_group_database; ++ no_more = __nss_database_lookup ("initgroups", NULL, "", ++ &initgroups_database); ++ if (no_more == 0 && initgroups_database == NULL) ++ { ++ if (__nss_group_database == NULL) ++ no_more = __nss_database_lookup ("group", NULL, "compat files", ++ &__nss_group_database); ++ ++ initgroups_database = __nss_group_database; ++ } ++ else if (initgroups_database != NULL) ++ { ++ assert (no_more == 0); ++ use_initgroups_entry = true; ++ } + } +- else +- no_more = __nss_database_lookup ("group", NULL, +- "compat [NOTFOUND=return] files", &nip); + ++ service_user *nip = initgroups_database; + while (! no_more) + { + long int prev_start = start; + +- fct = __nss_lookup_function (nip, "initgroups_dyn"); +- ++ initgroups_dyn_function fct = __nss_lookup_function (nip, ++ "initgroups_dyn"); + if (fct == NULL) + status = compat_call (nip, user, group, &start, size, groupsp, + limit, &errno); +@@ -119,7 +130,13 @@ internal_getgrouplist (const char *user, + if (NSS_STATUS_TRYAGAIN > status || status > NSS_STATUS_RETURN) + __libc_fatal ("illegal status in internal_getgrouplist"); + +- if (status != NSS_STATUS_SUCCESS ++ /* For compatibility reason we will continue to look for more ++ entries using the next service even though data has already ++ been found if the nsswitch.conf file contained only a 'groups' ++ line and no 'initgroups' line. If the latter is available ++ we always respect the status. This means that the default ++ for successful lookups is to return. */ ++ if ((use_initgroups_entry || status != NSS_STATUS_SUCCESS) + && nss_next_action (nip, status) == NSS_ACTION_RETURN) + break; + +Index: glibc-2.12-2-gc4ccff1/include/alloca.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/include/alloca.h ++++ glibc-2.12-2-gc4ccff1/include/alloca.h +@@ -14,6 +14,7 @@ extern void *__alloca (size_t __size); + + extern int __libc_use_alloca (size_t size) __attribute__ ((const)); + extern int __libc_alloca_cutoff (size_t size) __attribute__ ((const)); ++libc_hidden_proto (__libc_alloca_cutoff) + + #define __MAX_ALLOCA_CUTOFF 65536 + +Index: glibc-2.12-2-gc4ccff1/nptl/Versions +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/Versions ++++ glibc-2.12-2-gc4ccff1/nptl/Versions +@@ -27,6 +27,7 @@ libc { + pthread_cond_broadcast; pthread_cond_timedwait; + } + GLIBC_PRIVATE { ++ __libc_alloca_cutoff; + # Internal libc interface to libpthread + __libc_dl_error_tsd; + } +Index: glibc-2.12-2-gc4ccff1/nptl/alloca_cutoff.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/alloca_cutoff.c ++++ glibc-2.12-2-gc4ccff1/nptl/alloca_cutoff.c +@@ -34,3 +34,4 @@ __libc_alloca_cutoff (size_t size) + assume the maximum available stack space. */ + ?: __MAX_ALLOCA_CUTOFF * 4)); + } ++libc_hidden_def (__libc_alloca_cutoff) +Index: glibc-2.12-2-gc4ccff1/nss/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nss/Makefile ++++ glibc-2.12-2-gc4ccff1/nss/Makefile +@@ -63,7 +63,7 @@ vpath %.c $(subdir-dirs) + + + libnss_files-routines := $(addprefix files-,$(databases)) \ +- files-have_o_cloexec ++ files-initgroups files-have_o_cloexec + distribute += files-XXX.c files-parse.c + + +Index: glibc-2.12-2-gc4ccff1/nss/Versions +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nss/Versions ++++ glibc-2.12-2-gc4ccff1/nss/Versions +@@ -95,5 +95,7 @@ libnss_files { + _nss_netgroup_parseline; + _nss_files_getpublickey; + _nss_files_getsecretkey; ++ ++ _nss_files_initgroups_dyn; + } + } +Index: glibc-2.12-2-gc4ccff1/nss/nss_files/files-hosts.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nss/nss_files/files-hosts.c ++++ glibc-2.12-2-gc4ccff1/nss/nss_files/files-hosts.c +@@ -129,19 +129,22 @@ _nss_files_get##name##_r (proto, + && _res_hconf.flags & HCONF_FLAG_MULTI) \ + { \ + /* We have to get all host entries from the file. */ \ +- const size_t tmp_buflen = MIN (buflen, 4096); \ +- char tmp_buffer[tmp_buflen] \ ++ size_t tmp_buflen = MIN (buflen, 4096); \ ++ char tmp_buffer_stack[tmp_buflen] \ + __attribute__ ((__aligned__ (__alignof__ (struct hostent_data))));\ ++ char *tmp_buffer = tmp_buffer_stack; \ + struct hostent tmp_result_buf; \ + int naddrs = 1; \ + int naliases = 0; \ + char *bufferend; \ ++ bool tmp_buffer_malloced = false; \ + \ + while (result->h_aliases[naliases] != NULL) \ + ++naliases; \ + \ + bufferend = (char *) &result->h_aliases[naliases + 1]; \ + \ ++ again: \ + while ((status = internal_getent (&tmp_result_buf, tmp_buffer, \ + tmp_buflen, errnop H_ERRNO_ARG \ + EXTRA_ARGS_VALUE)) \ +@@ -182,7 +185,7 @@ _nss_files_get##name##_r (proto, + } \ + /* If the real name is different add it also to the \ + aliases. This means that there is a duplication \ +- in the alias list but this is really the users \ ++ in the alias list but this is really the user's \ + problem. */ \ + if (strcmp (old_result->h_name, \ + tmp_result_buf.h_name) != 0) \ +@@ -204,7 +207,7 @@ _nss_files_get##name##_r (proto, + *errnop = ERANGE; \ + *herrnop = NETDB_INTERNAL; \ + status = NSS_STATUS_TRYAGAIN; \ +- break; \ ++ goto out; \ + } \ + \ + new_h_addr_list = \ +@@ -268,8 +271,54 @@ _nss_files_get##name##_r (proto, + } \ + } \ + \ +- if (status != NSS_STATUS_TRYAGAIN) \ ++ if (status == NSS_STATUS_TRYAGAIN) \ ++ { \ ++ size_t newsize = 2 * tmp_buflen; \ ++ if (tmp_buffer_malloced) \ ++ { \ ++ char *newp = realloc (tmp_buffer, newsize); \ ++ if (newp != NULL) \ ++ { \ ++ assert ((((uintptr_t) newp) \ ++ & (__alignof__ (struct hostent_data) - 1)) \ ++ == 0); \ ++ tmp_buffer = newp; \ ++ tmp_buflen = newsize; \ ++ goto again; \ ++ } \ ++ } \ ++ else if (!__libc_use_alloca (buflen + newsize)) \ ++ { \ ++ tmp_buffer = malloc (newsize); \ ++ if (tmp_buffer != NULL) \ ++ { \ ++ assert ((((uintptr_t) tmp_buffer) \ ++ & (__alignof__ (struct hostent_data) - 1)) \ ++ == 0); \ ++ tmp_buffer_malloced = true; \ ++ tmp_buflen = newsize; \ ++ goto again; \ ++ } \ ++ } \ ++ else \ ++ { \ ++ tmp_buffer \ ++ = extend_alloca (tmp_buffer, tmp_buflen, \ ++ newsize \ ++ + __alignof__ (struct hostent_data)); \ ++ tmp_buffer = (char *) (((uintptr_t) tmp_buffer \ ++ + __alignof__ (struct hostent_data) \ ++ - 1) \ ++ & ~(__alignof__ (struct hostent_data)\ ++ - 1)); \ ++ goto again; \ ++ } \ ++ } \ ++ else \ + status = NSS_STATUS_SUCCESS; \ ++ out: \ ++ if (tmp_buffer_malloced) \ ++ free (tmp_buffer); \ + } \ + \ + \ +Index: glibc-2.12-2-gc4ccff1/nss/nss_files/files-initgroups.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/nss/nss_files/files-initgroups.c +@@ -0,0 +1,137 @@ ++/* Initgroups handling in nss_files module. ++ Copyright (C) 2011 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 ++ ++enum nss_status ++_nss_files_initgroups_dyn (const char *user, gid_t group, long int *start, ++ long int *size, gid_t **groupsp, long int limit, ++ int *errnop) ++{ ++ FILE *stream = fopen ("/etc/group", "re"); ++ if (stream == NULL) ++ { ++ *errnop = errno; ++ return *errnop == ENOMEM ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL; ++ } ++ ++ /* No other thread using this stream. */ ++ __fsetlocking (stream, FSETLOCKING_BYCALLER); ++ ++ char *line = NULL; ++ size_t linelen = 0; ++ enum nss_status status = NSS_STATUS_SUCCESS; ++ bool any = false; ++ ++ size_t buflen = 1024; ++ void *buffer = alloca (buflen); ++ bool buffer_use_malloc = false; ++ ++ gid_t *groups = *groupsp; ++ ++ /* We have to iterate over the entire file. */ ++ while (!feof_unlocked (stream)) ++ { ++ ssize_t n = getline (&line, &linelen, stream); ++ if (n < 0) ++ { ++ if (! feof_unlocked (stream)) ++ status = ((*errnop = errno) == ENOMEM ++ ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL); ++ break; ++ } ++ ++ struct group grp; ++ int res; ++ while ((res = _nss_files_parse_grent (line, &grp, buffer, buflen, ++ errnop)) == -1) ++ { ++ size_t newbuflen = 2 * buflen; ++ if (buffer_use_malloc || ! __libc_use_alloca (buflen + newbuflen)) ++ { ++ void *newbuf = realloc (buffer_use_malloc ? buffer : NULL, ++ newbuflen); ++ if (newbuf == NULL) ++ { ++ *errnop = ENOMEM; ++ status = NSS_STATUS_TRYAGAIN; ++ goto out; ++ } ++ buffer = newbuf; ++ buflen = newbuflen; ++ buffer_use_malloc = true; ++ } ++ else ++ buffer = extend_alloca (buffer, buflen, newbuflen); ++ } ++ ++ if (res > 0 && grp.gr_gid != group) ++ for (char **m = grp.gr_mem; *m != NULL; ++m) ++ if (strcmp (*m, user) == 0) ++ { ++ /* Matches user. Insert this group. */ ++ if (*start == *size) ++ { ++ /* Need a bigger buffer. */ ++ if (limit > 0 && *size == limit) ++ /* We reached the maximum. */ ++ goto out; ++ ++ long int newsize; ++ if (limit <= 0) ++ newsize = 2 * *size; ++ else ++ newsize = MIN (limit, 2 * *size); ++ ++ gid_t *newgroups = realloc (groups, ++ newsize * sizeof (*groups)); ++ if (newgroups == NULL) ++ { ++ *errnop = ENOMEM; ++ status = NSS_STATUS_TRYAGAIN; ++ goto out; ++ } ++ *groupsp = groups = newgroups; ++ *size = newsize; ++ } ++ ++ groups[*start] = grp.gr_gid; ++ *start += 1; ++ any = true; ++ ++ break; ++ } ++ } ++ ++ out: ++ /* Free memory. */ ++ if (buffer_use_malloc) ++ free (buffer); ++ free (line); ++ ++ fclose (stream); ++ ++ return status == NSS_STATUS_SUCCESS && !any ? NSS_STATUS_NOTFOUND : status; ++} +Index: glibc-2.12-2-gc4ccff1/nss/nsswitch.conf +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nss/nsswitch.conf ++++ glibc-2.12-2-gc4ccff1/nss/nsswitch.conf +@@ -5,6 +5,7 @@ + + passwd: db files + group: db files ++initgroups: db [SUCCESS=continue] files + shadow: db files + gshadow: files + diff --git a/src/patches/glibc/glibc-rh711927.patch b/src/patches/glibc/glibc-rh711927.patch new file mode 100644 index 000000000..26949fe07 --- /dev/null +++ b/src/patches/glibc/glibc-rh711927.patch @@ -0,0 +1,503 @@ +Index: glibc-2.12-2-gc4ccff1/config.h.in +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/config.h.in ++++ glibc-2.12-2-gc4ccff1/config.h.in +@@ -201,6 +201,9 @@ + /* Define if multi-arch DSOs should be generated. */ + #undef USE_MULTIARCH + ++/* Define if Systemtap probes should be defined. */ ++#undef USE_STAP_PROBE ++ + /* + */ + +Index: glibc-2.12-2-gc4ccff1/configure +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/configure ++++ glibc-2.12-2-gc4ccff1/configure +@@ -830,6 +830,7 @@ enable_all_warnings + enable_multi_arch + enable_experimental_malloc + enable_nss_crypt ++enable_systemtap + with_cpu + ' + ac_precious_vars='build_alias +@@ -1501,6 +1502,7 @@ Optional Features: + --enable-experimental-malloc + enable experimental malloc features + --enable-nss-crypt enable libcrypt to use nss ++ --enable-systemtap enable systemtap static probe points [default=no] + + Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] +@@ -3932,6 +3934,79 @@ else + fi + + ++# Check whether --enable-systemtap was given. ++if test "${enable_systemtap+set}" = set; then ++ enableval=$enable_systemtap; systemtap=$enableval ++else ++ systemtap=no ++fi ++ ++if test x$systemtap != xno; then ++ ++ { $as_echo "$as_me:$LINENO: checking for systemtap static probe support" >&5 ++$as_echo_n "checking for systemtap static probe support... " >&6; } ++if test "${libc_cv_sdt+set}" = set; then ++ $as_echo_n "(cached) " >&6 ++else ++ old_CFLAGS="$CFLAGS" ++ CFLAGS="-std=gnu99 $CFLAGS" ++ cat >conftest.$ac_ext <<_ACEOF ++#include ++void foo (int i, void *p) ++{ ++ asm ("" STAP_PROBE_ASM (foo, bar, STAP_PROBE_ASM_TEMPLATE (2)) "" ++ :: STAP_PROBE_ASM_OPERANDS (2, i, p)); ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" ++$as_echo "$ac_try_echo") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ libc_cv_sdt=yes ++else ++ $as_echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ libc_cv_sdt=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ CFLAGS="$old_CFLAGS" ++fi ++{ $as_echo "$as_me:$LINENO: result: $libc_cv_sdt" >&5 ++$as_echo "$libc_cv_sdt" >&6; } ++ if test $libc_cv_sdt = yes; then ++ cat >>confdefs.h <<\_ACEOF ++#define USE_STAP_PROBE 1 ++_ACEOF ++ ++ else ++ { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 ++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++{ { $as_echo "$as_me:$LINENO: error: systemtap support needs sys/sdt.h with asm support ++See \`config.log' for more details." >&5 ++$as_echo "$as_me: error: systemtap support needs sys/sdt.h with asm support ++See \`config.log' for more details." >&2;} ++ { (exit 1); exit 1; }; }; } ++ fi ++ ++fi ++ ++ + # 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 +Index: glibc-2.12-2-gc4ccff1/configure.in +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/configure.in ++++ glibc-2.12-2-gc4ccff1/configure.in +@@ -319,6 +319,29 @@ else + fi + AC_SUBST(libc_cv_nss_crypt) + ++AC_ARG_ENABLE([systemtap], ++ [AS_HELP_STRING([--enable-systemtap], ++ [enable systemtap static probe points @<:@default=no@:>@])], ++ [systemtap=$enableval], ++ [systemtap=no]) ++AS_IF([test x$systemtap != xno], [ ++ AC_CACHE_CHECK([for systemtap static probe support], libc_cv_sdt, [dnl ++ old_CFLAGS="$CFLAGS" ++ CFLAGS="-std=gnu99 $CFLAGS" ++ AC_COMPILE_IFELSE([#include ++void foo (int i, void *p) ++{ ++ asm ("" STAP_PROBE_ASM (foo, bar, STAP_PROBE_ASM_TEMPLATE (2)) "" ++ :: STAP_PROBE_ASM_OPERANDS (2, i, p)); ++}], [libc_cv_sdt=yes], [libc_cv_sdt=no]) ++ CFLAGS="$old_CFLAGS"]) ++ if test $libc_cv_sdt = yes; then ++ AC_DEFINE([USE_STAP_PROBE]) ++ else ++ AC_MSG_FAILURE([systemtap support needs sys/sdt.h with asm support]) ++ fi ++]) ++ + # 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 +Index: glibc-2.12-2-gc4ccff1/elf/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/Makefile ++++ glibc-2.12-2-gc4ccff1/elf/Makefile +@@ -458,7 +458,8 @@ CFLAGS-ldconfig.c = $(SYSCONF-FLAGS) -D' + CFLAGS-dl-cache.c = $(SYSCONF-FLAGS) + CFLAGS-cache.c = $(SYSCONF-FLAGS) + +-CPPFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),-DNOT_IN_libc=1 -DIS_IN_rtld=1) ++CPPFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),\ ++ -DNOT_IN_libc=1 -DIS_IN_rtld=1 -DIN_LIB=rtld) + + test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(strip $(modules-names)))) + generated += $(addsuffix .so,$(strip $(modules-names))) +Index: glibc-2.12-2-gc4ccff1/elf/dl-close.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/dl-close.c ++++ glibc-2.12-2-gc4ccff1/elf/dl-close.c +@@ -32,6 +32,7 @@ + #include + #include + #include ++#include + + + /* Type of the constructor functions. */ +@@ -469,6 +470,7 @@ _dl_close_worker (struct link_map *map) + struct r_debug *r = _dl_debug_initialize (0, nsid); + r->r_state = RT_DELETE; + _dl_debug_state (); ++ LIBC_PROBE (rtld_unmap_start, 2, nsid, r); + + if (unload_global) + { +@@ -722,6 +724,7 @@ _dl_close_worker (struct link_map *map) + /* Notify the debugger those objects are finalized and gone. */ + r->r_state = RT_CONSISTENT; + _dl_debug_state (); ++ LIBC_PROBE (rtld_unmap_complete, 2, nsid, r); + + /* Recheck if we need to retry, release the lock. */ + out: +Index: glibc-2.12-2-gc4ccff1/elf/dl-load.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/dl-load.c ++++ glibc-2.12-2-gc4ccff1/elf/dl-load.c +@@ -36,6 +36,7 @@ + #include + #include + #include ++#include + + #include + +@@ -806,7 +807,7 @@ _dl_init_paths (const char *llp) + static void + __attribute__ ((noreturn, noinline)) + lose (int code, int fd, const char *name, char *realname, struct link_map *l, +- const char *msg, struct r_debug *r) ++ const char *msg, struct r_debug *r, Lmid_t nsid) + { + /* The file might already be closed. */ + if (fd != -1) +@@ -818,6 +819,7 @@ lose (int code, int fd, const char *name + { + r->r_state = RT_CONSISTENT; + _dl_debug_state (); ++ LIBC_PROBE (rtld_map_complete, 2, nsid, r); + } + + _dl_signal_error (code, name, NULL, msg); +@@ -856,7 +858,7 @@ _dl_map_object_from_fd (const char *name + errval = errno; + call_lose: + lose (errval, fd, name, realname, l, errstring, +- make_consistent ? r : NULL); ++ make_consistent ? r : NULL, nsid); + } + + /* Look again to see if the real name matched another already loaded. */ +@@ -963,6 +965,7 @@ _dl_map_object_from_fd (const char *name + linking has not been used before. */ + r->r_state = RT_ADD; + _dl_debug_state (); ++ LIBC_PROBE (rtld_map_start, 2, nsid, r); + make_consistent = true; + } + else +@@ -1656,7 +1659,7 @@ open_verify (const char *name, struct fi + name = strdupa (realname); + free (realname); + } +- lose (errval, fd, name, NULL, NULL, errstring, NULL); ++ lose (errval, fd, name, NULL, NULL, errstring, NULL, 0); + } + + /* See whether the ELF header is what we expect. */ +Index: glibc-2.12-2-gc4ccff1/elf/dl-open.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/dl-open.c ++++ glibc-2.12-2-gc4ccff1/elf/dl-open.c +@@ -33,6 +33,7 @@ + #include + #include + #include ++#include + + #include + +@@ -297,6 +298,7 @@ dl_open_worker (void *a) + struct r_debug *r = _dl_debug_initialize (0, args->nsid); + r->r_state = RT_CONSISTENT; + _dl_debug_state (); ++ LIBC_PROBE (rtld_map_complete, 2, args->nsid, r); + + /* Only do lazy relocation if `LD_BIND_NOW' is not set. */ + int reloc_mode = mode & __RTLD_AUDIT; +@@ -309,10 +311,18 @@ dl_open_worker (void *a) + struct link_map *l = new; + while (l->l_next) + l = l->l_next; ++ int relocation_in_progress = 0; + while (1) + { + if (! l->l_real->l_relocated) + { ++ if (! relocation_in_progress) ++ { ++ /* Notify the debugger that relocations are about to happen. */ ++ LIBC_PROBE (rtld_reloc_start, 2, args->nsid, r); ++ relocation_in_progress = 1; ++ } ++ + #ifdef SHARED + if (__builtin_expect (GLRO(dl_profile) != NULL, 0)) + { +@@ -460,6 +470,10 @@ cannot load any more object with static + _dl_fatal_printf (N_("\ + TLS generation counter wrapped! Please report this.")); + ++ /* Notify the debugger all new objects have been relocated. */ ++ if (relocation_in_progress) ++ LIBC_PROBE (rtld_reloc_complete, 2, args->nsid, r); ++ + /* Run the initializer functions of new objects. */ + _dl_init (new, args->argc, args->argv, args->env); + +Index: glibc-2.12-2-gc4ccff1/elf/rtld-Rules +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/rtld-Rules ++++ glibc-2.12-2-gc4ccff1/elf/rtld-Rules +@@ -122,6 +122,6 @@ ifdef rtld-depfiles + endif + + # This here is the whole point of all the shenanigans. +-rtld-CPPFLAGS := -DNOT_IN_libc=1 -DIS_IN_rtld=1 ++rtld-CPPFLAGS := -DNOT_IN_libc=1 -DIS_IN_rtld=1 -DIN_LIB=rtld + + endif +Index: glibc-2.12-2-gc4ccff1/elf/rtld.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/rtld.c ++++ glibc-2.12-2-gc4ccff1/elf/rtld.c +@@ -40,6 +40,7 @@ + #include + #include + #include ++#include + + #include + +@@ -1656,6 +1657,7 @@ ERROR: ld.so: object '%s' cannot be load + /* We start adding objects. */ + r->r_state = RT_ADD; + _dl_debug_state (); ++ LIBC_PROBE (rtld_init_start, 2, LM_ID_BASE, r); + + /* Auditing checkpoint: we are ready to signal that the initial map + is being constructed. */ +@@ -2353,6 +2355,7 @@ ERROR: ld.so: object '%s' cannot be load + r = _dl_debug_initialize (0, LM_ID_BASE); + r->r_state = RT_CONSISTENT; + _dl_debug_state (); ++ LIBC_PROBE (rtld_init_complete, 2, LM_ID_BASE, r); + + #ifndef MAP_COPY + /* We must munmap() the cache file. */ +Index: glibc-2.12-2-gc4ccff1/extra-lib.mk +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/extra-lib.mk ++++ glibc-2.12-2-gc4ccff1/extra-lib.mk +@@ -101,4 +101,4 @@ ifneq (,$(cpp-srcs-left)) + include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left)) + endif + +-CPPFLAGS-$(lib) := -DNOT_IN_libc=1 -DIS_IN_$(lib)=1 ++CPPFLAGS-$(lib) := -DNOT_IN_libc=1 -DIS_IN_$(lib)=1 -DIN_LIB=$(lib) +Index: glibc-2.12-2-gc4ccff1/include/stap-probe.h +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/include/stap-probe.h +@@ -0,0 +1,140 @@ ++/* Macros for defining Systemtap static probe points. ++ Copyright (C) 2011 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 _STAP_PROBE_H ++#define _STAP_PROBE_H 1 ++ ++#ifdef USE_STAP_PROBE ++ ++# include ++ ++/* Our code uses one macro LIBC_PROBE (name, n, arg1, ..., argn). ++ ++ Without USE_STAP_PROBE, that does nothing but evaluates all ++ its arguments (to prevent bit rot, unlike e.g. assert). ++ ++ Systemtap's header defines the macros STAP_PROBE (provider, name) and ++ STAP_PROBEn (provider, name, arg1, ..., argn). For "provider" we paste ++ in the IN_LIB name (libc, libpthread, etc.) automagically. */ ++ ++# ifndef NOT_IN_libc ++# define IN_LIB libc ++# elif !defined IN_LIB ++/* This is intentionally defined with extra unquoted commas in it so ++ that macro substitution will bomb out when it is used. We don't ++ just use #error here, so that this header can be included by ++ other headers that use LIBC_PROBE inside their own macros. We ++ only want such headers to fail to compile if those macros are ++ actually used in a context where IN_LIB has not been defined. */ ++# define IN_LIB ,,,missing -DIN_LIB=... -- not extra-lib.mk?,,, ++# endif ++ ++# define LIBC_PROBE(name, n, ...) \ ++ LIBC_PROBE_1 (IN_LIB, name, n, ## __VA_ARGS__) ++ ++# define LIBC_PROBE_1(lib, name, n, ...) \ ++ STAP_PROBE##n (lib, name, ## __VA_ARGS__) ++ ++# define STAP_PROBE0 STAP_PROBE ++ ++# define LIBC_PROBE_ASM(name, template) \ ++ STAP_PROBE_ASM (IN_LIB, name, template) ++ ++# define LIBC_PROBE_ASM_OPERANDS STAP_PROBE_ASM_OPERANDS ++ ++#else /* Not USE_STAP_PROBE. */ ++ ++# ifndef __ASSEMBLER__ ++# define LIBC_PROBE(name, n, ...) DUMMY_PROBE##n (__VA_ARGS__) ++# else ++# define LIBC_PROBE(name, n, ...) /* Nothing. */ ++# endif ++ ++# define LIBC_PROBE_ASM(name, template) /* Nothing. */ ++# define LIBC_PROBE_ASM_OPERANDS(n, ...) /* Nothing. */ ++ ++/* This silliness lets us evaluate all the arguments for each arity ++ of probe. My kingdom for a real macro system. */ ++ ++# define DUMMY_PROBE0() do {} while (0) ++# define DUMMY_PROBE1(a1) do {} while ((void) (a1), 0) ++# define DUMMY_PROBE2(a1, a2) do {} while ((void) (a1), \ ++ (void) (a2), 0) ++# define DUMMY_PROBE3(a1, a2, a3) do {} while ((void) (a1), \ ++ (void) (a2), \ ++ (void) (a3), 0) ++# define DUMMY_PROBE4(a1, a2, a3, a4) do {} while ((void) (a1), \ ++ (void) (a2), \ ++ (void) (a3), \ ++ (void) (a4), 0) ++# define DUMMY_PROBE5(a1, a2, a3, a4, a5) \ ++ do {} while ((void) (a1), \ ++ (void) (a2), \ ++ (void) (a3), \ ++ (void) (a4), \ ++ (void) (a5), 0) ++# define DUMMY_PROBE6(a1, a2, a3, a4, a5, a6) \ ++ do {} while ((void) (a1), \ ++ (void) (a2), \ ++ (void) (a3), \ ++ (void) (a4), \ ++ (void) (a5), \ ++ (void) (a6), 0) ++# define DUMMY_PROBE7(a1, a2, a3, a4, a5, a6, a7) \ ++ do {} while ((void) (a1), \ ++ (void) (a2), \ ++ (void) (a3), \ ++ (void) (a4), \ ++ (void) (a5), \ ++ (void) (a6), \ ++ (void) (a7), 0) ++# define DUMMY_PROBE8(a1, a2, a3, a4, a5, a6, a7, a8) \ ++ do {} while ((void) (a1), \ ++ (void) (a2), \ ++ (void) (a3), \ ++ (void) (a4), \ ++ (void) (a5), \ ++ (void) (a6), \ ++ (void) (a7), \ ++ (void) (a8), 0) ++# define DUMMY_PROBE9(a1, a2, a3, a4, a5, a6, a7, a8, a9) \ ++ do {} while ((void) (a1), \ ++ (void) (a2), \ ++ (void) (a3), \ ++ (void) (a4), \ ++ (void) (a5), \ ++ (void) (a6), \ ++ (void) (a7), \ ++ (void) (a8), \ ++ (void) (a9), 0) ++# define DUMMY_PROBE10(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) \ ++ do {} while ((void) (a1), \ ++ (void) (a2), \ ++ (void) (a3), \ ++ (void) (a4), \ ++ (void) (a5), \ ++ (void) (a6), \ ++ (void) (a7), \ ++ (void) (a8), \ ++ (void) (a9), \ ++ (void) (a10), 0) ++ ++#endif /* USE_STAP_PROBE. */ ++ ++#endif /* stap-probe.h */ +Index: glibc-2.12-2-gc4ccff1/scripts/check-local-headers.sh +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/scripts/check-local-headers.sh ++++ glibc-2.12-2-gc4ccff1/scripts/check-local-headers.sh +@@ -31,6 +31,8 @@ fgrep -v "$includedir/asm" | + fgrep -v "$includedir/linux" | + fgrep -v "$includedir/selinux" | + fgrep -v "$includedir/sys/capability.h" | ++fgrep -v "$includedir/sys/sdt.h" | ++fgrep -v "$includedir/sys/sdt-config.h" | + fgrep -v "$includedir/gd" | + fgrep -v "$includedir/nss3"; then + # If we found a match something is wrong. diff --git a/src/patches/glibc/glibc-rh711987.patch b/src/patches/glibc/glibc-rh711987.patch new file mode 100644 index 000000000..bd286e1aa --- /dev/null +++ b/src/patches/glibc/glibc-rh711987.patch @@ -0,0 +1,136 @@ +2010-08-11 Ulrich Drepper + + * sysdeps/unix/sysv/linux/bits/statfs.h (struct statfs): Add f_flags + field. + (struct statfs64): Likewise. + (_STATFS_F_FLAGS): Define. + * sysdeps/unix/sysv/linux/s390/bits/statfs.h: Likewise. + * sysdeps/unix/sysv/linux/internal_statvfs.c (__statvfs_getflags): + Don't define if __ASSUME_STATFS_F_FLAGS is defined. + (ST_VALID): Define locally. + (INTERNAL_STATVFS): If f_flags has ST_VALID set don't call + __statvfs_getflags, use the provided value. + * sysdeps/unix/sysv/linux/kernel-features.h: Define + __ASSUME_STATFS_F_FLAGS. + +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/bits/statfs.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/bits/statfs.h ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/bits/statfs.h +@@ -42,7 +42,8 @@ struct statfs + __fsid_t f_fsid; + __SWORD_TYPE f_namelen; + __SWORD_TYPE f_frsize; +- __SWORD_TYPE f_spare[5]; ++ __SWORD_TYPE f_flags; ++ __SWORD_TYPE f_spare[4]; + }; + + #ifdef __USE_LARGEFILE64 +@@ -58,10 +59,12 @@ struct statfs64 + __fsid_t f_fsid; + __SWORD_TYPE f_namelen; + __SWORD_TYPE f_frsize; +- __SWORD_TYPE f_spare[5]; ++ __SWORD_TYPE f_flags; ++ __SWORD_TYPE f_spare[4]; + }; + #endif + + /* Tell code we have these members. */ + #define _STATFS_F_NAMELEN + #define _STATFS_F_FRSIZE ++#define _STATFS_F_FLAGS +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/internal_statvfs.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/internal_statvfs.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/internal_statvfs.c +@@ -29,6 +29,11 @@ + #include + #include + #include "linux_fsinfo.h" ++#include "kernel-features.h" ++ ++ ++/* Special internal-only bit value. */ ++#define ST_VALID 0x0020 + + + #ifndef STATFS +@@ -37,6 +42,7 @@ + # define INTERNAL_STATVFS __internal_statvfs + + ++# ifndef __ASSUME_STATFS_F_FLAGS + int + __statvfs_getflags (const char *name, int fstype, struct stat64 *st) + { +@@ -200,6 +206,7 @@ __statvfs_getflags (const char *name, in + + return result; + } ++# endif + #else + extern int __statvfs_getflags (const char *name, int fstype, + struct stat64 *st); +@@ -240,9 +247,14 @@ INTERNAL_STATVFS (const char *name, stru + /* XXX I have no idea how to compute f_favail. Any idea??? */ + buf->f_favail = buf->f_ffree; + +- /* Determining the flags is tricky. We have to read /proc/mounts or +- the /etc/mtab file and search for the entry which matches the given +- file. The way we can test for matching filesystem is using the +- device number. */ +- buf->f_flag = __statvfs_getflags (name, fsbuf->f_type, st); ++#ifndef __ASSUME_STATFS_F_FLAGS ++ if ((fsbuf->f_flags & ST_VALID) == 0) ++ /* Determining the flags is tricky. We have to read /proc/mounts or ++ the /etc/mtab file and search for the entry which matches the given ++ file. The way we can test for matching filesystem is using the ++ device number. */ ++ buf->f_flag = __statvfs_getflags (name, fsbuf->f_type, st); ++ else ++#endif ++ buf->f_flag = fsbuf->f_flags ^ ST_VALID; + } +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/kernel-features.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/kernel-features.h ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/kernel-features.h +@@ -552,3 +552,8 @@ + #if __LINUX_KERNEL_VERSION >= 0x020621 + # define __ASSUME_RECVMMSG 1 + #endif ++ ++/* statfs fills in f_flags since 2.6.36. */ ++#if __LINUX_KERNEL_VERSION >= 0x020624 ++# define __ASSUME_STATFS_F_FLAGS 1 ++#endif +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/s390/bits/statfs.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/s390/bits/statfs.h ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/s390/bits/statfs.h +@@ -42,7 +42,8 @@ struct statfs + __fsid_t f_fsid; + int f_namelen; + int f_frsize; +- int f_spare[5]; ++ int f_flags; ++ int f_spare[4]; + }; + + #ifdef __USE_LARGEFILE64 +@@ -58,10 +59,12 @@ struct statfs64 + __fsid_t f_fsid; + int f_namelen; + int f_frsize; +- int f_spare[5]; ++ int f_flags; ++ int f_spare[4]; + }; + #endif + + /* Tell code we have this member. */ + #define _STATFS_F_NAMELEN + #define _STATFS_F_FRSIZE ++#define _STATFS_F_FLAGS diff --git a/src/patches/glibc/glibc-rh712248.patch b/src/patches/glibc/glibc-rh712248.patch new file mode 100644 index 000000000..afadc6601 --- /dev/null +++ b/src/patches/glibc/glibc-rh712248.patch @@ -0,0 +1,69 @@ +2011-07-07 Ulrich Drepper + + [BZ #12868] + * sysdeps/unix/sysv/linux/linux_fsinfo.h: Define Lustre constants. + * sysdeps/unix/sysv/linux/internal_statvfs.c (__statvfs_getflags): + Handle Lustre. + * sysdeps/unix/sysv/linux/pathconf.c (__statfs_link_max): Likewise. + (__statfs_filesize_max): Likewise. + Patch mostly by Andreas Dilger . + +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/internal_statvfs.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/internal_statvfs.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/internal_statvfs.c +@@ -109,6 +109,9 @@ __statvfs_getflags (const char *name, in + case LOGFS_MAGIC_U32: + fsname = "logfs"; + break; ++ case LUSTRE_SUPER_MAGIC: ++ fsname = "lustre"; ++ break; + } + + FILE *mtab = __setmntent ("/proc/mounts", "r"); +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/linux_fsinfo.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/linux_fsinfo.h ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/linux_fsinfo.h +@@ -77,6 +77,9 @@ + /* Constant that identifies the `logfs´ filesystem. */ + #define LOGFS_MAGIC_U32 0xc97e8168u + ++/* Constant that identifies the `lustre' filesystem. */ ++#define LUSTRE_SUPER_MAGIC 0x0BD00BD0 ++ + /* Constants that identify the `minix2' filesystem. */ + #define MINIX2_SUPER_MAGIC 0x2468 + #define MINIX2_SUPER_MAGIC2 0x2478 +@@ -144,6 +147,8 @@ + /* Maximum link counts. */ + #define COH_LINK_MAX 10000 + #define EXT2_LINK_MAX 32000 ++#define EXT4_LINK_MAX 65000 ++#define LUSTRE_LINK_MAX EXT4_LINK_MAX + #define MINIX2_LINK_MAX 65530 + #define MINIX_LINK_MAX 250 + #define REISERFS_LINK_MAX 64535 +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/pathconf.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/pathconf.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/pathconf.c +@@ -104,6 +104,9 @@ __statfs_link_max (int result, const str + case XFS_SUPER_MAGIC: + return XFS_LINK_MAX; + ++ case LUSTRE_SUPER_MAGIC: ++ return LUSTRE_LINK_MAX; ++ + default: + return LINUX_LINK_MAX; + } +@@ -136,6 +139,7 @@ __statfs_filesize_max (int result, const + case UDF_SUPER_MAGIC: + case JFS_SUPER_MAGIC: + case VXFS_SUPER_MAGIC: ++ case LUSTRE_SUPER_MAGIC: + return 64; + + case MSDOS_SUPER_MAGIC: diff --git a/src/patches/glibc/glibc-rh713134.patch b/src/patches/glibc/glibc-rh713134.patch new file mode 100644 index 000000000..dc979be30 --- /dev/null +++ b/src/patches/glibc/glibc-rh713134.patch @@ -0,0 +1,36 @@ +2011-03-18 Andreas Schwab + + * elf/ldd.bash.in: Never run file directly. + +Index: glibc-2.12-2-gc4ccff1/elf/ldd.bash.in +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/ldd.bash.in ++++ glibc-2.12-2-gc4ccff1/elf/ldd.bash.in +@@ -167,18 +167,6 @@ warning: you do not have execution permi + fi + done + case $ret in +- 0) +- # If the program exits with exit code 5, it means the process has been +- # invoked with __libc_enable_secure. Fall back to running it through +- # the dynamic linker. +- try_trace "$file" +- rc=$? +- if [ $rc = 5 ]; then +- try_trace "$RTLD" "$file" +- rc=$? +- fi +- [ $rc = 0 ] || result=1 +- ;; + 1) + # This can be a non-ELF binary or no binary at all. + nonelf "$file" || { +@@ -186,7 +174,7 @@ warning: you do not have execution permi + result=1 + } + ;; +- 2) ++ 0|2) + try_trace "$RTLD" "$file" || result=1 + ;; + *) diff --git a/src/patches/glibc/glibc-rh714823.patch b/src/patches/glibc/glibc-rh714823.patch new file mode 100644 index 000000000..8bd121b99 --- /dev/null +++ b/src/patches/glibc/glibc-rh714823.patch @@ -0,0 +1,126 @@ +2011-06-28 Andreas Schwab + + * sysdeps/posix/getaddrinfo.c (gaih_inet): Don't use gethostbyaddr + to determine canonical name. + +2011-06-22 Andreas Schwab + + * sysdeps/posix/getaddrinfo.c (gaih_inet): Fix last change. + +2011-06-21 Ulrich Drepper + + [BZ #12885] + * sysdeps/posix/getaddrinfo.c (gaih_inet): When looking up only IPv6 + addresses using gethostbyname4_r ignore IPv4 addresses. + +Index: glibc-2.12-2-gc4ccff1/sysdeps/posix/getaddrinfo.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/posix/getaddrinfo.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/posix/getaddrinfo.c +@@ -512,10 +512,11 @@ gaih_inet (const char *name, const struc + + /* If we do not have to look for IPv4 and IPv6 together, use + the simple, old functions. */ +- if (req->ai_family == AF_INET +- || (req->ai_family == AF_INET6 +- && ((req->ai_flags & AI_V4MAPPED) == 0 +- || (req->ai_flags & AI_ALL) == 0))) ++ if ((req->ai_family == AF_INET ++ || (req->ai_family == AF_INET6 ++ && ((req->ai_flags & AI_V4MAPPED) == 0 ++ || (req->ai_flags & AI_ALL) == 0))) ++ && (req->ai_flags & AI_CANONNAME) == 0) + { + int family = req->ai_family; + size_t tmpbuflen = 512; +@@ -731,16 +732,44 @@ gaih_inet (const char *name, const struc + tmpbuflen, 2 * tmpbuflen); + } + +- no_inet6_data = no_data; +- + if (status == NSS_STATUS_SUCCESS) + { ++ assert (!no_data); ++ no_data = 1; ++ + if ((req->ai_flags & AI_CANONNAME) != 0 && canon == NULL) + canon = (*pat)->name; + + while (*pat != NULL) +- pat = &((*pat)->next); ++ { ++ if ((*pat)->family == AF_INET ++ && req->ai_family == AF_INET6 ++ && (req->ai_flags & AI_V4MAPPED) != 0) ++ { ++ uint32_t *pataddr = (*pat)->addr; ++ (*pat)->family = AF_INET6; ++ pataddr[3] = pataddr[0]; ++ pataddr[2] = htonl (0xffff); ++ pataddr[1] = 0; ++ pataddr[0] = 0; ++ pat = &((*pat)->next); ++ no_data = 0; ++ } ++ else if (req->ai_family == AF_UNSPEC ++ || (*pat)->family == req->ai_family) ++ { ++ pat = &((*pat)->next); ++ ++ no_data = 0; ++ if (req->ai_family == AF_INET6) ++ got_ipv6 = true; ++ } ++ else ++ *pat = ((*pat)->next); ++ } + } ++ ++ no_inet6_data = no_data; + } + else + { +@@ -905,39 +934,9 @@ gaih_inet (const char *name, const struc + { + if (canon == NULL) + { +- struct hostent *h = NULL; +- int herrno; +- struct hostent th; +- size_t tmpbuflen = 512; +- char *tmpbuf = NULL; +- +- do +- { +- tmpbuf = extend_alloca (tmpbuf, tmpbuflen, tmpbuflen * 2); +- rc = __gethostbyaddr_r (at2->addr, +- ((at2->family == AF_INET6) +- ? sizeof (struct in6_addr) +- : sizeof (struct in_addr)), +- at2->family, &th, tmpbuf, +- tmpbuflen, &h, &herrno); +- } +- while (rc == ERANGE && herrno == NETDB_INTERNAL); +- +- if (rc != 0 && herrno == NETDB_INTERNAL) +- { +- __set_h_errno (herrno); +- return -EAI_SYSTEM; +- } +- +- if (h != NULL) +- canon = h->h_name; +- else +- { +- assert (orig_name != NULL); +- /* If the canonical name cannot be determined, use +- the passed in string. */ +- canon = orig_name; +- } ++ /* If the canonical name cannot be determined, use ++ the passed in string. */ ++ canon = orig_name; + } + + #ifdef HAVE_LIBIDN diff --git a/src/patches/glibc/glibc-rh718057.patch b/src/patches/glibc/glibc-rh718057.patch new file mode 100644 index 000000000..d33199672 --- /dev/null +++ b/src/patches/glibc/glibc-rh718057.patch @@ -0,0 +1,109 @@ +2011-07-01 Andreas Schwab + + * nis/nss_compat/compat-pwd.c (getpwent_next_nss_netgr): Query NIS + domain only when needed. + +Index: glibc-2.12-2-gc4ccff1/nis/nss_compat/compat-pwd.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nis/nss_compat/compat-pwd.c ++++ glibc-2.12-2-gc4ccff1/nis/nss_compat/compat-pwd.c +@@ -360,7 +360,7 @@ getpwent_next_nss_netgr (const char *nam + char *group, char *buffer, size_t buflen, + int *errnop) + { +- char *curdomain, *host, *user, *domain, *p2; ++ char *curdomain = NULL, *host, *user, *domain, *p2; + int status; + size_t p2len; + +@@ -369,15 +369,7 @@ getpwent_next_nss_netgr (const char *nam + if (!nss_getpwnam_r) + return NSS_STATUS_UNAVAIL; + +- if (yp_get_default_domain (&curdomain) != YPERR_SUCCESS) +- { +- ent->netgroup = false; +- ent->first = false; +- give_pwd_free (&ent->pwd); +- return NSS_STATUS_UNAVAIL; +- } +- +- if (ent->first == true) ++ if (ent->first) + { + memset (&ent->netgrdata, 0, sizeof (struct __netgrent)); + __internal_setnetgrent (group, &ent->netgrdata); +@@ -403,8 +395,19 @@ getpwent_next_nss_netgr (const char *nam + if (user == NULL || user[0] == '-') + continue; + +- if (domain != NULL && strcmp (curdomain, domain) != 0) +- continue; ++ if (domain != NULL) ++ { ++ if (curdomain == NULL ++ && yp_get_default_domain (&curdomain) != YPERR_SUCCESS) ++ { ++ __internal_endnetgrent (&ent->netgrdata); ++ ent->netgroup = false; ++ give_pwd_free (&ent->pwd); ++ return NSS_STATUS_UNAVAIL; ++ } ++ if (strcmp (curdomain, domain) != 0) ++ continue; ++ } + + /* If name != NULL, we are called from getpwnam. */ + if (name != NULL) +Index: glibc-2.12-2-gc4ccff1/nis/nss_compat/compat-spwd.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nis/nss_compat/compat-spwd.c ++++ glibc-2.12-2-gc4ccff1/nis/nss_compat/compat-spwd.c +@@ -317,7 +317,7 @@ getspent_next_nss_netgr (const char *nam + char *group, char *buffer, size_t buflen, + int *errnop) + { +- char *curdomain, *host, *user, *domain, *p2; ++ char *curdomain = NULL, *host, *user, *domain, *p2; + size_t p2len; + + if (!nss_getspnam_r) +@@ -327,15 +327,7 @@ getspent_next_nss_netgr (const char *nam + if (ent->setent_status != NSS_STATUS_SUCCESS) + return ent->setent_status; + +- if (yp_get_default_domain (&curdomain) != YPERR_SUCCESS) +- { +- ent->netgroup = false; +- ent->first = false; +- give_spwd_free (&ent->pwd); +- return NSS_STATUS_UNAVAIL; +- } +- +- if (ent->first == true) ++ if (ent->first) + { + memset (&ent->netgrdata, 0, sizeof (struct __netgrent)); + __internal_setnetgrent (group, &ent->netgrdata); +@@ -362,8 +354,19 @@ getspent_next_nss_netgr (const char *nam + if (user == NULL || user[0] == '-') + continue; + +- if (domain != NULL && strcmp (curdomain, domain) != 0) +- continue; ++ if (domain != NULL) ++ { ++ if (curdomain == NULL ++ && yp_get_default_domain (&curdomain) != YPERR_SUCCESS) ++ { ++ __internal_endnetgrent (&ent->netgrdata); ++ ent->netgroup = false; ++ give_spwd_free (&ent->pwd); ++ return NSS_STATUS_UNAVAIL; ++ } ++ if (strcmp (curdomain, domain) != 0) ++ continue; ++ } + + /* If name != NULL, we are called from getpwnam */ + if (name != NULL) diff --git a/src/patches/glibc/glibc-rh726517.patch b/src/patches/glibc/glibc-rh726517.patch new file mode 100644 index 000000000..26addbfb7 --- /dev/null +++ b/src/patches/glibc/glibc-rh726517.patch @@ -0,0 +1,173 @@ +Index: glibc-2.12-2-gc4ccff1/malloc/arena.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/malloc/arena.c ++++ glibc-2.12-2-gc4ccff1/malloc/arena.c +@@ -870,7 +870,7 @@ heap_trim(heap, pad) heap_info *heap; si + heap = prev_heap; + if(!prev_inuse(p)) { /* consolidate backward */ + p = prev_chunk(p); +- unlink(p, bck, fwd); ++ unlink(ar_ptr, p, bck, fwd); + } + assert(((unsigned long)((char*)p + new_size) & (pagesz-1)) == 0); + assert( ((char*)p + new_size) == ((char*)heap + heap->size) ); +Index: glibc-2.12-2-gc4ccff1/malloc/hooks.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/malloc/hooks.c ++++ glibc-2.12-2-gc4ccff1/malloc/hooks.c +@@ -219,7 +219,9 @@ top_check() + (char*)t + chunksize(t) == mp_.sbrk_base + main_arena.system_mem))) + return 0; + ++ mutex_unlock(&main_arena); + malloc_printerr (check_action, "malloc: top chunk is corrupt", t); ++ mutex_lock(&main_arena); + + /* Try to set up a new top chunk. */ + brk = MORECORE(0); +Index: glibc-2.12-2-gc4ccff1/malloc/malloc.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/malloc/malloc.c ++++ glibc-2.12-2-gc4ccff1/malloc/malloc.c +@@ -2109,12 +2109,14 @@ typedef struct malloc_chunk* mbinptr; + #define last(b) ((b)->bk) + + /* Take a chunk off a bin list */ +-#define unlink(P, BK, FD) { \ ++#define unlink(AV, P, BK, FD) { \ + FD = P->fd; \ + BK = P->bk; \ +- if (__builtin_expect (FD->bk != P || BK->fd != P, 0)) \ ++ if (__builtin_expect (FD->bk != P || BK->fd != P, 0)) { \ ++ mutex_unlock(&(AV)->mutex); \ + malloc_printerr (check_action, "corrupted double-linked list", P); \ +- else { \ ++ mutex_lock(&(AV)->mutex); \ ++ } else { \ + FD->bk = BK; \ + BK->fd = FD; \ + if (!in_smallbin_range (P->size) \ +@@ -3257,7 +3259,9 @@ static Void_t* sYSMALLOc(nb, av) INTERNA + + else if (contiguous(av) && old_size && brk < old_end) { + /* Oops! Someone else killed our space.. Can't touch anything. */ ++ mutex_unlock(&av->mutex); + malloc_printerr (3, "break adjusted to free malloc space", brk); ++ mutex_lock(&av->mutex); + } + + /* +@@ -4305,7 +4309,9 @@ _int_malloc(mstate av, size_t bytes) + { + errstr = "malloc(): memory corruption (fast)"; + errout: ++ mutex_unlock(&av->mutex); + malloc_printerr (check_action, errstr, chunk2mem (victim)); ++ mutex_lock(&av->mutex); + return NULL; + } + #ifndef ATOMIC_FASTBINS +@@ -4393,8 +4399,12 @@ _int_malloc(mstate av, size_t bytes) + bck = victim->bk; + if (__builtin_expect (victim->size <= 2 * SIZE_SZ, 0) + || __builtin_expect (victim->size > av->system_mem, 0)) +- malloc_printerr (check_action, "malloc(): memory corruption", +- chunk2mem (victim)); ++ { ++ void *p = chunk2mem(victim); ++ mutex_unlock(&av->mutex); ++ malloc_printerr (check_action, "malloc(): memory corruption", p); ++ mutex_lock(&av->mutex); ++ } + size = chunksize(victim); + + /* +@@ -4535,7 +4545,7 @@ _int_malloc(mstate av, size_t bytes) + victim = victim->fd; + + remainder_size = size - nb; +- unlink(victim, bck, fwd); ++ unlink(av, victim, bck, fwd); + + /* Exhaust */ + if (remainder_size < MINSIZE) { +@@ -4633,7 +4643,7 @@ _int_malloc(mstate av, size_t bytes) + remainder_size = size - nb; + + /* unlink */ +- unlink(victim, bck, fwd); ++ unlink(av, victim, bck, fwd); + + /* Exhaust */ + if (remainder_size < MINSIZE) { +@@ -4789,10 +4799,14 @@ _int_free(mstate av, mchunkptr p) + errstr = "free(): invalid pointer"; + errout: + #ifdef ATOMIC_FASTBINS +- if (! have_lock && locked) ++ if (have_lock || locked) + (void)mutex_unlock(&av->mutex); + #endif + malloc_printerr (check_action, errstr, chunk2mem(p)); ++#ifdef ATOMIC_FASTBINS ++ if (have_lock) ++ mutex_lock(&av->mutex); ++#endif + return; + } + /* We know that each chunk is at least MINSIZE bytes in size. */ +@@ -4961,7 +4975,7 @@ _int_free(mstate av, mchunkptr p) + prevsize = p->prev_size; + size += prevsize; + p = chunk_at_offset(p, -((long) prevsize)); +- unlink(p, bck, fwd); ++ unlink(av, p, bck, fwd); + } + + if (nextchunk != av->top) { +@@ -4970,7 +4984,7 @@ _int_free(mstate av, mchunkptr p) + + /* consolidate forward */ + if (!nextinuse) { +- unlink(nextchunk, bck, fwd); ++ unlink(av, nextchunk, bck, fwd); + size += nextsize; + } else + clear_inuse_bit_at_offset(nextchunk, 0); +@@ -5158,7 +5172,7 @@ static void malloc_consolidate(av) mstat + prevsize = p->prev_size; + size += prevsize; + p = chunk_at_offset(p, -((long) prevsize)); +- unlink(p, bck, fwd); ++ unlink(av, p, bck, fwd); + } + + if (nextchunk != av->top) { +@@ -5166,7 +5180,7 @@ static void malloc_consolidate(av) mstat + + if (!nextinuse) { + size += nextsize; +- unlink(nextchunk, bck, fwd); ++ unlink(av, nextchunk, bck, fwd); + } else + clear_inuse_bit_at_offset(nextchunk, 0); + +@@ -5235,7 +5249,9 @@ _int_realloc(mstate av, mchunkptr oldp, + { + errstr = "realloc(): invalid old size"; + errout: ++ mutex_unlock(&av->mutex); + malloc_printerr (check_action, errstr, chunk2mem(oldp)); ++ mutex_lock(&av->mutex); + return NULL; + } + +@@ -5282,7 +5298,7 @@ _int_realloc(mstate av, mchunkptr oldp, + (unsigned long)(newsize = oldsize + nextsize) >= + (unsigned long)(nb)) { + newp = oldp; +- unlink(next, bck, fwd); ++ unlink(av, next, bck, fwd); + } + + /* allocate, copy, free */ diff --git a/src/patches/glibc/glibc-rh730379.patch b/src/patches/glibc/glibc-rh730379.patch new file mode 100644 index 000000000..45808afed --- /dev/null +++ b/src/patches/glibc/glibc-rh730379.patch @@ -0,0 +1,34 @@ +2011-08-17 Ulrich Drepper + + * Makeconfig (override CFLAGS): Add library-specific CFLAGS. + * resolv/Makefile: Define CFLAGS-libresolv. + +Index: glibc-2.12-2-gc4ccff1/Makeconfig +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/Makeconfig ++++ glibc-2.12-2-gc4ccff1/Makeconfig +@@ -700,7 +700,9 @@ CPPFLAGS = $($(subdir)-CPPFLAGS) $(+incl + override CFLAGS = -std=gnu99 $(gnu89-inline-CFLAGS) \ + $(filter-out %frame-pointer,$(+cflags)) $(+gccwarn-c) \ + $(sysdep-CFLAGS) $(CFLAGS-$(suffix $@)) $(CFLAGS-$( + + * sysdeps/unix/sysv/linux/x86_64/cancellation.S: Maintain aligned + stack. + * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise. + * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise. + +Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S ++++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S +@@ -71,7 +71,9 @@ ENTRY(__pthread_enable_asynccancel) + + 1: ret + +-3: movq $TCB_PTHREAD_CANCELED, %fs:RESULT ++3: subq $8, %rsp ++ cfi_adjust_cfa_offset(8) ++ movq $TCB_PTHREAD_CANCELED, %fs:RESULT + lock + orl $TCB_EXITING_BITMASK, %fs:CANCELHANDLING + movq %fs:CLEANUP_JMP_BUF, %rdi +Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S ++++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S +@@ -63,9 +63,9 @@ __pthread_cond_timedwait: + cfi_adjust_cfa_offset(8) + cfi_rel_offset(%r15, 0) + #ifdef __ASSUME_FUTEX_CLOCK_REALTIME +-# define FRAME_SIZE 32 ++# define FRAME_SIZE (32+8) + #else +-# define FRAME_SIZE 48 ++# define FRAME_SIZE (48+8) + #endif + subq $FRAME_SIZE, %rsp + cfi_adjust_cfa_offset(FRAME_SIZE) +Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S ++++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S +@@ -45,7 +45,7 @@ __pthread_cond_wait: + cfi_lsda(DW_EH_PE_udata4, .LexceptSTART) + #endif + +-#define FRAME_SIZE 32 ++#define FRAME_SIZE (32+8) + leaq -FRAME_SIZE(%rsp), %rsp + cfi_adjust_cfa_offset(FRAME_SIZE) + diff --git a/src/patches/glibc/glibc-rh736346.patch b/src/patches/glibc/glibc-rh736346.patch new file mode 100644 index 000000000..2dd3f8a8d --- /dev/null +++ b/src/patches/glibc/glibc-rh736346.patch @@ -0,0 +1,116 @@ +2011-01-14 Ulrich Drepper + + [BZ #10563] + * sysdeps/unix/sysv/linux/i386/setgroups.c: Use INLINE_SETXID_SYSCALL + to make the syscall. + * sysdeps/unix/sysv/linux/setgroups.c: New file. + +2011-01-14 Ulrich Drepper + + [BZ #10563] + * sysdeps/pthread/setxid.h (__SETXID_1): Add cast to assignment. + (__SETXID_2): Likewise. + (__SETXID_3): Likewise. + +Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/pthread/setxid.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/pthread/setxid.h ++++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/pthread/setxid.h +@@ -20,11 +20,11 @@ + #include + + #define __SETXID_1(cmd, arg1) \ +- cmd.id[0] = arg1 ++ cmd.id[0] = (long int) arg1 + #define __SETXID_2(cmd, arg1, arg2) \ +- __SETXID_1 (cmd, arg1); cmd.id[1] = arg2 ++ __SETXID_1 (cmd, arg1); cmd.id[1] = (long int) arg2 + #define __SETXID_3(cmd, arg1, arg2, arg3) \ +- __SETXID_2 (cmd, arg1, arg2); cmd.id[2] = arg3 ++ __SETXID_2 (cmd, arg1, arg2); cmd.id[2] = (long int) arg3 + + #ifdef SINGLE_THREAD + # define INLINE_SETXID_SYSCALL(name, nr, args...) \ +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/i386/setgroups.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/i386/setgroups.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/i386/setgroups.c +@@ -25,6 +25,7 @@ + #include + #include + ++#include + #include + #include + +@@ -44,7 +45,7 @@ int + setgroups (size_t n, const gid_t *groups) + { + #if __ASSUME_32BITUIDS > 0 +- return INLINE_SYSCALL (setgroups32, 2, n, CHECK_N (groups, n)); ++ return INLINE_SETXID_SYSCALL (setgroups32, 2, n, CHECK_N (groups, n)); + #else + if (n > (size_t) __sysconf (_SC_NGROUPS_MAX)) + { +@@ -62,7 +63,8 @@ setgroups (size_t n, const gid_t *groups + int result; + int saved_errno = errno; + +- result = INLINE_SYSCALL (setgroups32, 2, n, CHECK_N (groups, n)); ++ result = INLINE_SETXID_SYSCALL (setgroups32, 2, n, ++ CHECK_N (groups, n)); + if (result == 0 || errno != ENOSYS) + return result; + +@@ -80,7 +82,8 @@ setgroups (size_t n, const gid_t *groups + } + } + +- return INLINE_SYSCALL (setgroups, 2, n, CHECK_N (kernel_groups, n)); ++ return INLINE_SETXID_SYSCALL (setgroups, 2, n, ++ CHECK_N (kernel_groups, n)); + } + #endif + } +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/setgroups.c +=================================================================== +--- /dev/null ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/setgroups.c +@@ -0,0 +1,37 @@ ++/* Copyright (C) 1997,1998,2000,2002,2004,2006,2011 ++ 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 ++ ++ ++/* Set the group set for the current user to GROUPS (N of them). For ++ Linux we must convert the array of groups into the format that the ++ kernel expects. */ ++int ++setgroups (size_t n, const gid_t *groups) ++{ ++#ifdef __NR_setgroups32 ++# error "wrong setgroups.c file used" ++#endif ++ return INLINE_SETXID_SYSCALL (setgroups, 2, n, groups); ++} ++libc_hidden_def (setgroups) diff --git a/src/patches/glibc/glibc-rh737778.patch b/src/patches/glibc/glibc-rh737778.patch new file mode 100644 index 000000000..5d3c131ca --- /dev/null +++ b/src/patches/glibc/glibc-rh737778.patch @@ -0,0 +1,122 @@ +2011-08-14 Roland McGrath + + * locale/Makefile (locale-CPPFLAGS): Renamed CPPFLAGS-locale-programs. + (locale-CPPFLAGS): New variable; put LOCALEDIR, LOCALE_ALIAS_PATH and + -Iprograms here. + (cppflags-iterator.mk sequence): Use locale-programs in place of nonlib. + (localedef-modules): Add localedef. + (locale-modules): Add locale. + +2011-08-13 Ulrich Drepper + + * intl/l10nflist.c (_nl_normalize_codeset): Make it compile outside + of libc. Make tolower call locale-independent. Optimize a bit by + using isdigit instead of isalnum. + * locale/Makefile (locale-CPPFLAGS): Add -DNOT_IN_libc. + +2011-08-11 Ulrich Drepper + + * intl/l10nflist.c (_nl_make_l10nflist): Use locale-independent + classification. + +Index: glibc-2.12-2-gc4ccff1/intl/l10nflist.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/intl/l10nflist.c ++++ glibc-2.12-2-gc4ccff1/intl/l10nflist.c +@@ -332,13 +332,18 @@ _nl_normalize_codeset (codeset, name_len + char *retval; + char *wp; + size_t cnt; ++#ifdef NOT_IN_libc ++ locale_t locale = newlocale (0, "C", NULL); ++#else ++# define locale _nl_C_locobj_ptr ++#endif + + for (cnt = 0; cnt < name_len; ++cnt) +- if (isalnum ((unsigned char) codeset[cnt])) ++ if (__isalnum_l ((unsigned char) codeset[cnt], locale)) + { + ++len; + +- if (isalpha ((unsigned char) codeset[cnt])) ++ if (! __isdigit_l ((unsigned char) codeset[cnt], locale)) + only_digit = 0; + } + +@@ -346,15 +351,14 @@ _nl_normalize_codeset (codeset, name_len + + if (retval != NULL) + { ++ wp = retval; + if (only_digit) +- wp = stpcpy (retval, "iso"); +- else +- wp = retval; ++ wp = stpcpy (wp, "iso"); + + for (cnt = 0; cnt < name_len; ++cnt) +- if (isalpha ((unsigned char) codeset[cnt])) +- *wp++ = tolower ((unsigned char) codeset[cnt]); +- else if (isdigit ((unsigned char) codeset[cnt])) ++ if (__isalpha_l ((unsigned char) codeset[cnt], locale)) ++ *wp++ = __tolower_l ((unsigned char) codeset[cnt], locale); ++ else if (__isdigit_l ((unsigned char) codeset[cnt], locale)) + *wp++ = codeset[cnt]; + + *wp = '\0'; +Index: glibc-2.12-2-gc4ccff1/locale/Makefile +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/locale/Makefile ++++ glibc-2.12-2-gc4ccff1/locale/Makefile +@@ -59,10 +59,11 @@ vpath %.c programs ../crypt + vpath %.h programs + vpath %.gperf programs + +-localedef-modules := $(categories:%=ld-%) charmap linereader locfile \ ++localedef-modules := localedef $(categories:%=ld-%) \ ++ charmap linereader locfile \ + repertoire locarchive + localedef-aux := md5 +-locale-modules := locale-spec ++locale-modules := locale locale-spec + lib-modules := charmap-dir simple-hash xmalloc xstrdup + + +@@ -90,22 +91,27 @@ endif + + localepath = "$(localedir):$(i18ndir)" + +-locale-CPPFLAGS := -DLOCALE_PATH='$(localepath)' \ +- -DLOCALEDIR='"$(localedir)"' \ +- -DLOCALE_ALIAS_PATH='"$(msgcatdir)"' \ +- -DCHARMAP_PATH='"$(i18ndir)/charmaps"' \ +- -DREPERTOIREMAP_PATH='"$(i18ndir)/repertoiremaps"' \ +- -DLOCSRCDIR='"$(i18ndir)/locales"' -DHAVE_CONFIG_H \ +- -Iprograms ++# -Iprograms doesn't really belong here, but this gets it at the head ++# of the list instead of the tail, where CPPFLAGS-$(lib) gets added. ++# We need it before the standard -I's to see programs/config.h first. ++locale-CPPFLAGS = -DLOCALEDIR='"$(localedir)"' \ ++ -DLOCALE_ALIAS_PATH='"$(msgcatdir)"' \ ++ -Iprograms ++ ++CPPFLAGS-locale-programs = -DLOCALE_PATH='$(localepath)' \ ++ -DCHARMAP_PATH='"$(i18ndir)/charmaps"' \ ++ -DREPERTOIREMAP_PATH='"$(i18ndir)/repertoiremaps"' \ ++ -DLOCSRCDIR='"$(i18ndir)/locales"' \ ++ -DHAVE_CONFIG_H -DNOT_IN_libc + + CFLAGS-charmap.c = -Wno-write-strings -Wno-char-subscripts + CFLAGS-locfile.c = -Wno-write-strings -Wno-char-subscripts + CFLAGS-charmap-dir.c = -Wno-write-strings + +-# This makes sure -DNOT_IN_libc is passed for all these modules. ++# This makes sure -DNOT_IN_libc et al are passed for all these modules. + cpp-srcs-left := $(addsuffix .c,$(localedef-modules) $(localedef-aux) \ + $(locale-modules) $(lib-modules)) +-lib := nonlib ++lib := locale-programs + include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left)) + + # Depend on libc.so so a DT_NEEDED is generated in the shared objects. diff --git a/src/patches/glibc/glibc-rh738665.patch b/src/patches/glibc/glibc-rh738665.patch new file mode 100644 index 000000000..1eea554e8 --- /dev/null +++ b/src/patches/glibc/glibc-rh738665.patch @@ -0,0 +1,149 @@ +2011-09-15 Andreas Schwab + + * sysdeps/pthread/list.h: Define only list_t if __need_list_t is + defined. + (list_add): Add atomic_write_barrier. + * descr.h: Define __need_list_t before including . + * nptl-init.c: Include + * allocatestack.c: Likewise. + +2011-09-15 Andreas Schwab + + * thread_dbP.h: Include + +Index: glibc-2.12-2-gc4ccff1/nptl/allocatestack.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/allocatestack.c ++++ glibc-2.12-2-gc4ccff1/nptl/allocatestack.c +@@ -27,6 +27,7 @@ + #include + #include + #include ++#include + #include + #include + +Index: glibc-2.12-2-gc4ccff1/nptl/descr.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/descr.h ++++ glibc-2.12-2-gc4ccff1/nptl/descr.h +@@ -26,6 +26,7 @@ + #include + #include + #include ++#define __need_list_t + #include + #include + #include +Index: glibc-2.12-2-gc4ccff1/nptl/nptl-init.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/nptl-init.c ++++ glibc-2.12-2-gc4ccff1/nptl/nptl-init.c +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + #include + #include + #include +Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/pthread/list.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/pthread/list.h ++++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/pthread/list.h +@@ -18,27 +18,39 @@ + 02111-1307 USA. */ + + #ifndef _LIST_H +-#define _LIST_H 1 ++ ++#ifndef __need_list_t ++# define _LIST_H 1 ++#endif + + /* The definitions of this file are adopted from those which can be + found in the Linux kernel headers to enable people familiar with + the latter find their way in these sources as well. */ + + ++#if defined __need_list_t || defined _LIST_H ++# ifndef __list_t_defined ++# define __list_t_defined + /* Basic type for the double-link list. */ + typedef struct list_head + { + struct list_head *next; + struct list_head *prev; + } list_t; ++# endif ++# undef __need_list_t ++#endif ++ ++#ifdef _LIST_H + ++# include + + /* Define a variable with the head and tail of the list. */ +-#define LIST_HEAD(name) \ ++# define LIST_HEAD(name) \ + list_t name = { &(name), &(name) } + + /* Initialize a new list head. */ +-#define INIT_LIST_HEAD(ptr) \ ++# define INIT_LIST_HEAD(ptr) \ + (ptr)->next = (ptr)->prev = (ptr) + + +@@ -49,6 +61,7 @@ list_add (list_t *newp, list_t *head) + newp->next = head->next; + newp->prev = head; + head->next->prev = newp; ++ atomic_write_barrier (); + head->next = newp; + } + +@@ -78,26 +91,28 @@ list_splice (list_t *add, list_t *head) + + + /* Get typed element from list at a given position. */ +-#define list_entry(ptr, type, member) \ ++# define list_entry(ptr, type, member) \ + ((type *) ((char *) (ptr) - (unsigned long) (&((type *) 0)->member))) + + + + /* Iterate forward over the elements of the list. */ +-#define list_for_each(pos, head) \ ++# define list_for_each(pos, head) \ + for (pos = (head)->next; pos != (head); pos = pos->next) + + + /* Iterate forward over the elements of the list. */ +-#define list_for_each_prev(pos, head) \ ++# define list_for_each_prev(pos, head) \ + for (pos = (head)->prev; pos != (head); pos = pos->prev) + + + /* Iterate backwards over the elements list. The list elements can be + removed from the list while doing this. */ +-#define list_for_each_prev_safe(pos, p, head) \ ++# define list_for_each_prev_safe(pos, p, head) \ + for (pos = (head)->prev, p = pos->prev; \ + pos != (head); \ + pos = p, p = pos->prev) + ++#endif /* _LIST_H */ ++ + #endif /* list.h */ +Index: glibc-2.12-2-gc4ccff1/nptl_db/thread_dbP.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/nptl_db/thread_dbP.h ++++ glibc-2.12-2-gc4ccff1/nptl_db/thread_dbP.h +@@ -29,6 +29,7 @@ + #include "proc_service.h" + #include "thread_db.h" + #include "../nptl/pthreadP.h" /* This is for *_BITMASK only. */ ++#include + + /* Indeces for the symbol names. */ + enum diff --git a/src/patches/glibc/glibc-rh738763.patch b/src/patches/glibc/glibc-rh738763.patch new file mode 100644 index 000000000..728464d2a --- /dev/null +++ b/src/patches/glibc/glibc-rh738763.patch @@ -0,0 +1,17 @@ +2011-09-15 Ulrich Drepper + + * sysdeps/unix/sysv/linux/bits/in.h (IP_MULTICAST_ALL): Define. + Patch mostly by Neil Horman . + +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/bits/in.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/bits/in.h ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/bits/in.h +@@ -70,6 +70,7 @@ + #define IP_XFRM_POLICY 17 + #define IP_PASSSEC 18 + #define IP_TRANSPARENT 19 ++#define IP_MULTICAST_ALL 49 /* bool */ + + /* TProxy original addresses */ + #define IP_ORIGDSTADDR 20 diff --git a/src/patches/glibc/glibc-rh739184.patch b/src/patches/glibc/glibc-rh739184.patch new file mode 100644 index 000000000..cf122465a --- /dev/null +++ b/src/patches/glibc/glibc-rh739184.patch @@ -0,0 +1,18 @@ +2010-06-10 Andreas Schwab + + * sysdeps/unix/sysv/linux/getpagesize.c: Don't assume AT_PAGESIZE + is always available. + +Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/getpagesize.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/getpagesize.c ++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/getpagesize.c +@@ -28,7 +28,7 @@ + int + __getpagesize () + { +-#ifdef __ASSUME_AT_PAGESIZE ++#if 0 && defined __ASSUME_AT_PAGESIZE + assert (GLRO(dl_pagesize) != 0); + return GLRO(dl_pagesize); + #else diff --git a/src/patches/glibc/glibc-rh739971.patch b/src/patches/glibc/glibc-rh739971.patch new file mode 100644 index 000000000..960c192dc --- /dev/null +++ b/src/patches/glibc/glibc-rh739971.patch @@ -0,0 +1,44 @@ +commit 32c76b63be605d12314e0c6ac2bd702c883d1423 +Author: Andreas Schwab +Date: Mon Sep 26 17:49:14 2011 +0200 + + Correctly reparse group line after enlarging the buffer + +diff --git a/nss/nss_files/files-initgroups.c b/nss/nss_files/files-initgroups.c +index 113abf2..c343b35 100644 +--- a/nss/nss_files/files-initgroups.c ++++ b/nss/nss_files/files-initgroups.c +@@ -52,8 +52,10 @@ _nss_files_initgroups_dyn (const char *user, gid_t group, long int *start, + gid_t *groups = *groupsp; + + /* We have to iterate over the entire file. */ +- while (!feof_unlocked (stream)) ++ while (1) + { ++ fpos_t pos; ++ fgetpos (stream, &pos); + ssize_t n = getline (&line, &linelen, stream); + if (n < 0) + { +@@ -64,9 +66,8 @@ _nss_files_initgroups_dyn (const char *user, gid_t group, long int *start, + } + + struct group grp; +- int res; +- while ((res = _nss_files_parse_grent (line, &grp, buffer, buflen, +- errnop)) == -1) ++ int res = _nss_files_parse_grent (line, &grp, buffer, buflen, errnop); ++ if (res == -1) + { + size_t newbuflen = 2 * buflen; + if (buffer_use_malloc || ! __libc_use_alloca (buflen + newbuflen)) +@@ -85,6 +86,9 @@ _nss_files_initgroups_dyn (const char *user, gid_t group, long int *start, + } + else + buffer = extend_alloca (buffer, buflen, newbuflen); ++ /* Reread current line, the parser has clobbered it. */ ++ fsetpos (stream, &pos); ++ continue; + } + + if (res > 0 && grp.gr_gid != group) diff --git a/src/patches/glibc/glibc-rh740506-2.patch b/src/patches/glibc/glibc-rh740506-2.patch new file mode 100644 index 000000000..adefea04b --- /dev/null +++ b/src/patches/glibc/glibc-rh740506-2.patch @@ -0,0 +1,35 @@ + * malloc/arena.c (arena_get2): Avoid unnecessarily + retrieving #cpus from /proc. + * malloc/malloc.c (mALLOPt): Clamp arena_test based on + the value of arena_max. + +diff --git a/malloc/arena.c b/malloc/arena.c +index cb8548b..00f1da5 100644 +--- a/malloc/arena.c ++++ b/malloc/arena.c +@@ -828,7 +828,7 @@ arena_get2(mstate a_tsd, size_t size) + { + if (mp_.arena_max != 0) + narenas_limit = mp_.arena_max; +- else ++ else if (narenas > mp_.arena_test) + { + int n = __get_nprocs (); + +diff --git a/malloc/malloc.c b/malloc/malloc.c +index 8608083..f8d32da 100644 +--- a/malloc/malloc.c ++++ b/malloc/malloc.c +@@ -6134,6 +6134,12 @@ int mALLOPt(param_number, value) int par + break; + #endif + } ++#ifdef PER_THREAD ++ /* Clamp ARENA_TEST from ARENA_MAX to avoid creating too many ++ arenas. */ ++ if (mp_.arena_max > 0 && mp_.arena_max <= mp_.arena_test) ++ mp_.arena_test = mp_.arena_max - 1; ++#endif + (void)mutex_unlock(&av->mutex); + return res; + } diff --git a/src/patches/glibc/glibc-rh740506.patch b/src/patches/glibc/glibc-rh740506.patch new file mode 100644 index 000000000..6c74ccf10 --- /dev/null +++ b/src/patches/glibc/glibc-rh740506.patch @@ -0,0 +1,132 @@ +2011-11-14 Andreas Schwab + + * malloc/arena.c (arena_get2): Don't call reused_arena when + _int_new_arena failed. + +2011-11-10 Andreas Schwab + + * malloc/arena.c (_int_new_arena): Don't increment narenas. + (reused_arena): Don't check arena limit. + (arena_get2): Atomically check arena limit. + +diff --git a/malloc/arena.c b/malloc/arena.c +index 9114fd2..042cac8 100644 +--- a/malloc/arena.c ++++ b/malloc/arena.c +@@ -747,8 +747,6 @@ _int_new_arena(size_t size) + main_arena.next = a; + + #ifdef PER_THREAD +- ++narenas; +- + (void)mutex_unlock(&list_lock); + #endif + +@@ -786,30 +784,6 @@ get_free_list (void) + static mstate + reused_arena (void) + { +- if (narenas <= mp_.arena_test) +- return NULL; +- +- static int narenas_limit; +- if (narenas_limit == 0) +- { +- if (mp_.arena_max != 0) +- narenas_limit = mp_.arena_max; +- else +- { +- int n = __get_nprocs (); +- +- if (n >= 1) +- narenas_limit = NARENAS_FROM_NCORES (n); +- else +- /* We have no information about the system. Assume two +- cores. */ +- narenas_limit = NARENAS_FROM_NCORES (2); +- } +- } +- +- if (narenas < narenas_limit) +- return NULL; +- + mstate result; + static mstate next_to_use; + if (next_to_use == NULL) +@@ -844,10 +818,41 @@ arena_get2(mstate a_tsd, size_t size) + mstate a; + + #ifdef PER_THREAD +- if ((a = get_free_list ()) == NULL +- && (a = reused_arena ()) == NULL) +- /* Nothing immediately available, so generate a new arena. */ +- a = _int_new_arena(size); ++ static size_t narenas_limit; ++ ++ a = get_free_list (); ++ if (a == NULL) ++ { ++ /* Nothing immediately available, so generate a new arena. */ ++ if (narenas_limit == 0) ++ { ++ if (mp_.arena_max != 0) ++ narenas_limit = mp_.arena_max; ++ else ++ { ++ int n = __get_nprocs (); ++ ++ if (n >= 1) ++ narenas_limit = NARENAS_FROM_NCORES (n); ++ else ++ /* We have no information about the system. Assume two ++ cores. */ ++ narenas_limit = NARENAS_FROM_NCORES (2); ++ } ++ } ++ repeat:; ++ size_t n = narenas; ++ if (__builtin_expect (n <= mp_.arena_test || n < narenas_limit, 0)) ++ { ++ if (catomic_compare_and_exchange_bool_acq(&narenas, n + 1, n)) ++ goto repeat; ++ a = _int_new_arena (size); ++ if (__builtin_expect (a != NULL, 1)) ++ return a; ++ catomic_decrement(&narenas); ++ } ++ a = reused_arena (); ++ } + #else + if(!a_tsd) + a = a_tsd = &main_arena; + +commit a5fb313cb7b7e692fd4684916aaa98e03ec7e8b6 +Author: Andreas Schwab +Date: Mon Nov 14 11:41:52 2011 +0100 + + Don't call reused_arena when _int_new_arena failed + +diff --git a/malloc/arena.c b/malloc/arena.c +index 042cac8..cb8548b 100644 +--- a/malloc/arena.c ++++ b/malloc/arena.c +@@ -844,14 +844,14 @@ arena_get2(mstate a_tsd, size_t size) + size_t n = narenas; + if (__builtin_expect (n <= mp_.arena_test || n < narenas_limit, 0)) + { +- if (catomic_compare_and_exchange_bool_acq(&narenas, n + 1, n)) ++ if (catomic_compare_and_exchange_bool_acq (&narenas, n + 1, n)) + goto repeat; + a = _int_new_arena (size); +- if (__builtin_expect (a != NULL, 1)) +- return a; +- catomic_decrement(&narenas); ++ if (__builtin_expect (a == NULL, 0)) ++ catomic_decrement (&narenas); + } +- a = reused_arena (); ++ else ++ a = reused_arena (); + } + #else + if(!a_tsd) diff --git a/src/patches/glibc/glibc-rh749188.patch b/src/patches/glibc/glibc-rh749188.patch new file mode 100644 index 000000000..43157cd1a --- /dev/null +++ b/src/patches/glibc/glibc-rh749188.patch @@ -0,0 +1,32 @@ +commit 0e8131bb32cf026c87baeacb7abf2a9bdbbc4953 +Author: Andreas Schwab +Date: Sun May 8 21:48:03 2011 -0400 + + Remove .UTF-8 suffix from locale names when it is the only supported codeset + +diff --git a/localedata/SUPPORTED b/localedata/SUPPORTED +index d665961..e952c17 100644 +--- a/localedata/SUPPORTED ++++ b/localedata/SUPPORTED +@@ -46,8 +46,8 @@ ar_TN.UTF-8/UTF-8 \ + ar_TN/ISO-8859-6 \ + ar_YE.UTF-8/UTF-8 \ + ar_YE/ISO-8859-6 \ +-az_AZ.UTF-8/UTF-8 \ +-as_IN.UTF-8/UTF-8 \ ++az_AZ/UTF-8 \ ++as_IN/UTF-8 \ + ast_ES.UTF-8/UTF-8 \ + ast_ES/ISO-8859-15 \ + be_BY.UTF-8/UTF-8 \ +@@ -385,8 +385,8 @@ tr_CY/ISO-8859-9 \ + tr_TR.UTF-8/UTF-8 \ + tr_TR/ISO-8859-9 \ + ts_ZA/UTF-8 \ +-tt_RU.UTF-8/UTF-8 \ +-tt_RU.UTF-8@iqtelif/UTF-8 \ ++tt_RU/UTF-8 \ ++tt_RU@iqtelif/UTF-8 \ + ug_CN/UTF-8 \ + uk_UA.UTF-8/UTF-8 \ + uk_UA/KOI8-U \ diff --git a/src/patches/glibc/glibc-rh750531.patch b/src/patches/glibc/glibc-rh750531.patch new file mode 100644 index 000000000..a53e770ed --- /dev/null +++ b/src/patches/glibc/glibc-rh750531.patch @@ -0,0 +1,122 @@ +commit 69da074d7adfab7b57004a0dea9403a928e310a5 +Author: Ulrich Drepper +Date: Wed Nov 10 02:38:35 2010 -0500 + + Fix warnings in __bswap_16. + +diff --git a/sysdeps/i386/bits/byteswap.h b/sysdeps/i386/bits/byteswap.h +index 1f3fc5e..c246ae8 100644 +--- a/sysdeps/i386/bits/byteswap.h ++++ b/sysdeps/i386/bits/byteswap.h +@@ -1,5 +1,5 @@ + /* Macros to swap the order of bytes in integer values. +- Copyright (C) 1997, 1998, 2000, 2002, 2003, 2006, 2007, 2008 ++ Copyright (C) 1997, 1998, 2000, 2002, 2003, 2006, 2007, 2008, 2010 + Free Software Foundation, Inc. + This file is part of the GNU C Library. + +@@ -27,26 +27,27 @@ + + /* Swap bytes in 16 bit value. */ + #define __bswap_constant_16(x) \ +- ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)) ++ ((unsigned short int) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8))) + + #ifdef __GNUC__ + # if __GNUC__ >= 2 + # define __bswap_16(x) \ + (__extension__ \ +- ({ register unsigned short int __v, __x = (x); \ ++ ({ register unsigned short int __v, __x = (unsigned short int) (x); \ + if (__builtin_constant_p (__x)) \ + __v = __bswap_constant_16 (__x); \ + else \ + __asm__ ("rorw $8, %w0" \ + : "=r" (__v) \ +- : "0" (__x) \ +- : "cc"); \ ++ : "0" (__x) \ ++ : "cc"); \ + __v; })) + # else + /* This is better than nothing. */ + # define __bswap_16(x) \ + (__extension__ \ +- ({ register unsigned short int __x = (x); __bswap_constant_16 (__x); })) ++ ({ register unsigned short int __x = (unsigned short int) (x); \ ++ __bswap_constant_16 (__x); })) + # endif + #else + static __inline unsigned short int +@@ -122,7 +123,7 @@ __bswap_32 (unsigned int __bsx) + (__extension__ \ + ({ union { __extension__ unsigned long long int __ll; \ + unsigned long int __l[2]; } __w, __r; \ +- if (__builtin_constant_p (x)) \ ++ if (__builtin_constant_p (x)) \ + __r.__ll = __bswap_constant_64 (x); \ + else \ + { \ +diff --git a/sysdeps/x86_64/bits/byteswap.h b/sysdeps/x86_64/bits/byteswap.h +index 08b38e8..e350fb8 100644 +--- a/sysdeps/x86_64/bits/byteswap.h ++++ b/sysdeps/x86_64/bits/byteswap.h +@@ -1,5 +1,5 @@ + /* Macros to swap the order of bytes in integer values. +- Copyright (C) 1997, 1998, 2000, 2002, 2003, 2007, 2008 ++ Copyright (C) 1997, 1998, 2000, 2002, 2003, 2007, 2008, 2010 + Free Software Foundation, Inc. + This file is part of the GNU C Library. + +@@ -29,12 +29,12 @@ + + /* Swap bytes in 16 bit value. */ + #define __bswap_constant_16(x) \ +- ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)) ++ ((unsigned short int) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8))) + + #if defined __GNUC__ && __GNUC__ >= 2 + # define __bswap_16(x) \ + (__extension__ \ +- ({ register unsigned short int __v, __x = (x); \ ++ ({ register unsigned short int __v, __x = (unsigned short int) (x); \ + if (__builtin_constant_p (__x)) \ + __v = __bswap_constant_16 (__x); \ + else \ +@@ -47,7 +47,8 @@ + /* This is better than nothing. */ + # define __bswap_16(x) \ + (__extension__ \ +- ({ register unsigned short int __x = (x); __bswap_constant_16 (__x); })) ++ ({ register unsigned short int __x = (unsigned short int) (x); \ ++ __bswap_constant_16 (__x); })) + #endif + + +@@ -120,16 +121,16 @@ + # define __bswap_64(x) \ + (__extension__ \ + ({ union { __extension__ unsigned long long int __ll; \ +- unsigned int __l[2]; } __w, __r; \ +- if (__builtin_constant_p (x)) \ +- __r.__ll = __bswap_constant_64 (x); \ +- else \ +- { \ +- __w.__ll = (x); \ +- __r.__l[0] = __bswap_32 (__w.__l[1]); \ +- __r.__l[1] = __bswap_32 (__w.__l[0]); \ +- } \ +- __r.__ll; })) ++ unsigned int __l[2]; } __w, __r; \ ++ if (__builtin_constant_p (x)) \ ++ __r.__ll = __bswap_constant_64 (x); \ ++ else \ ++ { \ ++ __w.__ll = (x); \ ++ __r.__l[0] = __bswap_32 (__w.__l[1]); \ ++ __r.__l[1] = __bswap_32 (__w.__l[0]); \ ++ } \ ++ __r.__ll; })) + # endif + #endif + diff --git a/src/patches/glibc/glibc-rh751750.patch b/src/patches/glibc/glibc-rh751750.patch new file mode 100644 index 000000000..6f9dd120d --- /dev/null +++ b/src/patches/glibc/glibc-rh751750.patch @@ -0,0 +1,28 @@ +commit 7583a88d1c7170caad26966bcea8bfc2c92093ba +Author: Andreas Schwab +Date: Mon Nov 7 15:07:31 2011 +0100 + + Fix locking in _IO_flush_all_lockp + +diff --git a/libio/genops.c b/libio/genops.c +index 5d21c42..bb40c34 100644 +--- a/libio/genops.c ++++ b/libio/genops.c +@@ -826,7 +826,7 @@ _IO_flush_all_lockp (int do_lock) + int last_stamp; + + #ifdef _IO_MTSAFE_IO +- _IO_cleanup_region_start_noarg (flush_cleanup); ++ __libc_cleanup_region_start (do_lock, flush_cleanup, 0); + if (do_lock) + _IO_lock_lock (list_all_lock); + #endif +@@ -866,7 +866,7 @@ _IO_flush_all_lockp (int do_lock) + #ifdef _IO_MTSAFE_IO + if (do_lock) + _IO_lock_unlock (list_all_lock); +- _IO_cleanup_region_end (0); ++ __libc_cleanup_region_end (0); + #endif + + return result; diff --git a/src/patches/glibc/glibc-rh752122.patch b/src/patches/glibc/glibc-rh752122.patch new file mode 100644 index 000000000..0176dc9a7 --- /dev/null +++ b/src/patches/glibc/glibc-rh752122.patch @@ -0,0 +1,260 @@ +2011-07-24 H.J. Lu + + * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Simplify + AVX check. + +2011-08-20 Ulrich Drepper + + * sysdeps/x86_64/dl-trampoline.h: If MORE_CODE is defined, restore + the CFI state in the end. + * sysdeps/x86_64/dl-trampoline.S: Define MORE_CODE before first + inclusion of dl-trampoline.h. + Based on a patch by Jiri Olsa . + +2011-07-23 Ulrich Drepper + + * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Fix one more + typo. + (_dl_x86_64_save_sse): Likewise. + +2011-07-22 Ulrich Drepper + + * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Fix test for + OSXSAVE. + (_dl_x86_64_save_sse): Likewise. + +2011-07-21 Andreas Schwab + + * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Fix last + change. + (_dl_x86_64_save_sse): Use correct AVX check. + +2011-07-20 Ulrich Drepper + + [BZ #13007] + * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): More complete + check for AVX enablement so that we don't crash with old kernels and + new hardware. + * elf/tst-audit4.c: Add same checks here. + * elf/tst-audit6.c: Likewise. + +Index: glibc-2.12-2-gc4ccff1/elf/tst-audit4.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/tst-audit4.c ++++ glibc-2.12-2-gc4ccff1/elf/tst-audit4.c +@@ -6,16 +6,30 @@ + #include + #include + ++ ++static int ++avx_enabled (void) ++{ ++ unsigned int eax, ebx, ecx, edx; ++ ++ if (__get_cpuid (1, &eax, &ebx, &ecx, &edx) == 0 ++ || (ecx & (bit_AVX | bit_OSXSAVE)) != (bit_AVX | bit_OSXSAVE)) ++ return 0; ++ ++ /* Check the OS has AVX and SSE saving enabled. */ ++ asm ("xgetbv" : "=a" (eax), "=d" (edx) : "c" (0)); ++ ++ return (eax & 6) == 6; ++} ++ ++ + extern __m256i audit_test (__m256i, __m256i, __m256i, __m256i, + __m256i, __m256i, __m256i, __m256i); + int + main (void) + { +- unsigned int eax, ebx, ecx, edx; +- + /* Run AVX test only if AVX is supported. */ +- if (__get_cpuid (1, &eax, &ebx, &ecx, &edx) +- && (ecx & bit_AVX)) ++ if (avx_enabled ()) + { + __m256i ymm = _mm256_setzero_si256 (); + __m256i ret = audit_test (ymm, ymm, ymm, ymm, ymm, ymm, ymm, ymm); +Index: glibc-2.12-2-gc4ccff1/elf/tst-audit6.c +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/elf/tst-audit6.c ++++ glibc-2.12-2-gc4ccff1/elf/tst-audit6.c +@@ -8,14 +8,28 @@ + extern __m128i audit_test (__m128i, __m128i, __m128i, __m128i, + __m128i, __m128i, __m128i, __m128i); + +-int +-main (void) ++ ++static int ++avx_enabled (void) + { + unsigned int eax, ebx, ecx, edx; + ++ if (__get_cpuid (1, &eax, &ebx, &ecx, &edx) == 0 ++ || (ecx & (bit_AVX | bit_OSXSAVE)) != (bit_AVX | bit_OSXSAVE)) ++ return 0; ++ ++ /* Check the OS has AVX and SSE saving enabled. */ ++ asm ("xgetbv" : "=a" (eax), "=d" (edx) : "c" (0)); ++ ++ return (eax & 6) == 6; ++} ++ ++ ++int ++main (void) ++{ + /* Run AVX test only if AVX is supported. */ +- if (__get_cpuid (1, &eax, &ebx, &ecx, &edx) +- && (ecx & bit_AVX)) ++ if (avx_enabled ()) + { + __m128i xmm = _mm_setzero_si128 (); + __m128i ret = audit_test (xmm, xmm, xmm, xmm, xmm, xmm, xmm, xmm); +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/dl-trampoline.S +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/dl-trampoline.S ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/dl-trampoline.S +@@ -139,24 +139,31 @@ L(have_avx): + movl $1, %eax + cpuid + movq %r11,%rbx # Restore rbx +- movl $1, %eax +- testl $(1 << 28), %ecx ++ xorl %eax, %eax ++ // AVX and XSAVE supported? ++ andl $((1 << 28) | (1 << 27)), %ecx ++ cmpl $((1 << 28) | (1 << 27)), %ecx + jne 2f +- negl %eax +-2: movl %eax, L(have_avx)(%rip) ++ xorl %ecx, %ecx ++ // Get XFEATURE_ENABLED_MASK ++ xgetbv ++ andl $0x6, %eax ++2: subl $0x5, %eax ++ movl %eax, L(have_avx)(%rip) + cmpl $0, %eax + + 1: js L(no_avx) + + # define RESTORE_AVX ++# define MORE_CODE + # include "dl-trampoline.h" + + .align 16 + L(no_avx): + # endif + +-# undef RESTORE_AVX +-# include "dl-trampoline.h" ++# undef RESTORE_AVX ++# include "dl-trampoline.h" + + cfi_endproc + .size _dl_runtime_profile, .-_dl_runtime_profile +@@ -176,11 +183,20 @@ _dl_x86_64_save_sse: + movl $1, %eax + cpuid + movq %r11,%rbx # Restore rbx +- movl $1, %eax +- testl $(1 << 28), %ecx ++ xorl %eax, %eax ++ // AVX and XSAVE supported? ++ andl $((1 << 28) | (1 << 27)), %ecx ++ cmpl $((1 << 28) | (1 << 27)), %ecx + jne 2f +- negl %eax +-2: movl %eax, L(have_avx)(%rip) ++ xorl %ecx, %ecx ++ // Get XFEATURE_ENABLED_MASK ++ xgetbv ++ andl $0x6, %eax ++ cmpl $0x6, %eax ++ // Nonzero if SSE and AVX state saving is enabled. ++ sete %al ++2: leal -1(%eax,%eax), %eax ++ movl %eax, L(have_avx)(%rip) + cmpl $0, %eax + + 1: js L(no_avx5) +Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/dl-trampoline.h +=================================================================== +--- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/dl-trampoline.h ++++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/dl-trampoline.h +@@ -195,14 +195,14 @@ + _dl_call_pltexit. The La_x86_64_regs is being pointed by rsp now, + so we just need to allocate the sizeof(La_x86_64_retval) space on + the stack, since the alignment has already been taken care of. */ +-# ifdef RESTORE_AVX ++#ifdef RESTORE_AVX + /* sizeof(La_x86_64_retval). Need extra space for 2 SSE + registers to detect if xmm0/xmm1 registers are changed + by audit module. */ + subq $(LRV_SIZE + XMM_SIZE*2), %rsp +-# else ++#else + subq $LRV_SIZE, %rsp # sizeof(La_x86_64_retval) +-# endif ++#endif + movq %rsp, %rcx # La_x86_64_retval argument to %rcx. + + /* Fill in the La_x86_64_retval structure. */ +@@ -212,7 +212,7 @@ + movaps %xmm0, LRV_XMM0_OFFSET(%rcx) + movaps %xmm1, LRV_XMM1_OFFSET(%rcx) + +-# ifdef RESTORE_AVX ++#ifdef RESTORE_AVX + /* This is to support AVX audit modules. */ + vmovdqu %ymm0, LRV_VECTOR0_OFFSET(%rcx) + vmovdqu %ymm1, LRV_VECTOR1_OFFSET(%rcx) +@@ -221,14 +221,14 @@ + by audit module. */ + vmovdqa %xmm0, (LRV_SIZE)(%rcx) + vmovdqa %xmm1, (LRV_SIZE + XMM_SIZE)(%rcx) +-# endif ++#endif + + fstpt LRV_ST0_OFFSET(%rcx) + fstpt LRV_ST1_OFFSET(%rcx) + + movq 24(%rbx), %rdx # La_x86_64_regs argument to %rdx. + movq 40(%rbx), %rsi # Copy args pushed by PLT in register. +- movq 32(%rbx), %rdi # %rdi: link_map, %rsi: reloc_index ++ movq 32(%rbx), %rdi # %rdi: link_map, %rsi: reloc_index + call _dl_call_pltexit + + /* Restore return registers. */ +@@ -238,7 +238,7 @@ + movaps LRV_XMM0_OFFSET(%rsp), %xmm0 + movaps LRV_XMM1_OFFSET(%rsp), %xmm1 + +-# ifdef RESTORE_AVX ++#ifdef RESTORE_AVX + /* Check if xmm0/xmm1 registers are changed by audit module. */ + vpcmpeqq (LRV_SIZE)(%rsp), %xmm0, %xmm2 + vpmovmskb %xmm2, %esi +@@ -253,7 +253,7 @@ + vmovdqu LRV_VECTOR1_OFFSET(%rsp), %ymm1 + + 1: +-# endif ++#endif + + fldt LRV_ST1_OFFSET(%rsp) + fldt LRV_ST0_OFFSET(%rsp) +@@ -267,3 +267,10 @@ + # (eats the reloc index and link_map) + cfi_adjust_cfa_offset(-48) + retq ++ ++#ifdef MORE_CODE ++ cfi_adjust_cfa_offset(48) ++ cfi_rel_offset(%rbx, 0) ++ cfi_def_cfa_register(%rbx) ++# undef MORE_CODE ++#endif diff --git a/src/patches/glibc/glibc-rh757888.patch b/src/patches/glibc/glibc-rh757888.patch new file mode 100644 index 000000000..721d4a481 --- /dev/null +++ b/src/patches/glibc/glibc-rh757888.patch @@ -0,0 +1,225 @@ +commit f3a6cc0a560a17f32a3e90d2f20501a53cab6058 +Author: Andreas Schwab +Date: Tue Nov 29 10:52:22 2011 +0100 + + Fix access after end of search string in regex matcher + +diff --git a/locale/weight.h b/locale/weight.h +index dc70a00..967e176 100644 +--- a/locale/weight.h ++++ b/locale/weight.h +@@ -1,4 +1,4 @@ +-/* Copyright (C) 1996,1997,1998,1999,2000,2003,2004 Free Software Foundation, Inc. ++/* Copyright (C) 1996,1997,1998,1999,2000,2003,2004,2011 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Written by Ulrich Drepper, . + +@@ -20,7 +20,7 @@ + /* Find index of weight. */ + auto inline int32_t + __attribute ((always_inline)) +-findidx (const unsigned char **cpp) ++findidx (const unsigned char **cpp, size_t len) + { + int_fast32_t i = table[*(*cpp)++]; + const unsigned char *cp; +@@ -34,6 +34,7 @@ findidx (const unsigned char **cpp) + Search for the correct one. */ + cp = &extra[-i]; + usrc = *cpp; ++ --len; + while (1) + { + size_t nhere; +@@ -56,7 +57,7 @@ findidx (const unsigned char **cpp) + already. */ + size_t cnt; + +- for (cnt = 0; cnt < nhere; ++cnt) ++ for (cnt = 0; cnt < nhere && cnt < len; ++cnt) + if (cp[cnt] != usrc[cnt]) + break; + +@@ -79,13 +80,13 @@ findidx (const unsigned char **cpp) + size_t cnt; + size_t offset = 0; + +- for (cnt = 0; cnt < nhere; ++cnt) ++ for (cnt = 0; cnt < nhere && cnt < len; ++cnt) + if (cp[cnt] != usrc[cnt]) + break; + + if (cnt != nhere) + { +- if (cp[cnt] > usrc[cnt]) ++ if (cnt == len || cp[cnt] > usrc[cnt]) + { + /* Cannot be in this range. */ + cp += 2 * nhere; +diff --git a/locale/weightwc.h b/locale/weightwc.h +index 9ea1126..7862091 100644 +--- a/locale/weightwc.h ++++ b/locale/weightwc.h +@@ -1,4 +1,4 @@ +-/* Copyright (C) 1996-2001,2003,2004,2005,2007 Free Software Foundation, Inc. ++/* Copyright (C) 1996-2001,2003,2004,2005,2007,2011 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Written by Ulrich Drepper, . + +@@ -20,7 +20,7 @@ + /* Find index of weight. */ + auto inline int32_t + __attribute ((always_inline)) +-findidx (const wint_t **cpp) ++findidx (const wint_t **cpp, size_t len) + { + wint_t ch = *(*cpp)++; + int32_t i = __collidx_table_lookup ((const char *) table, ch); +@@ -32,6 +32,7 @@ findidx (const wint_t **cpp) + /* Oh well, more than one sequence starting with this byte. + Search for the correct one. */ + const int32_t *cp = (const int32_t *) &extra[-i]; ++ --len; + while (1) + { + size_t nhere; +@@ -54,7 +55,7 @@ findidx (const wint_t **cpp) + already. */ + size_t cnt; + +- for (cnt = 0; cnt < nhere; ++cnt) ++ for (cnt = 0; cnt < nhere && cnt < len; ++cnt) + if (cp[cnt] != usrc[cnt]) + break; + +@@ -75,7 +76,7 @@ findidx (const wint_t **cpp) + size_t cnt; + size_t offset; + +- for (cnt = 0; cnt < nhere - 1; ++cnt) ++ for (cnt = 0; cnt < nhere - 1 && cnt < len; ++cnt) + if (cp[cnt] != usrc[cnt]) + break; + +diff --git a/posix/fnmatch_loop.c b/posix/fnmatch_loop.c +index 18a6667..72bd3ee 100644 +--- a/posix/fnmatch_loop.c ++++ b/posix/fnmatch_loop.c +@@ -412,7 +412,7 @@ FCT (pattern, string, string_end, no_leading_period, flags, ends, alloca_used) + _NL_CURRENT (LC_COLLATE, _NL_COLLATE_INDIRECTMB); + # endif + +- idx = findidx (&cp); ++ idx = findidx (&cp, 1); + if (idx != 0) + { + /* We found a table entry. Now see whether the +@@ -422,7 +422,7 @@ FCT (pattern, string, string_end, no_leading_period, flags, ends, alloca_used) + int32_t idx2; + const UCHAR *np = (const UCHAR *) n; + +- idx2 = findidx (&np); ++ idx2 = findidx (&np, string_end - n); + if (idx2 != 0 + && (idx >> 24) == (idx2 >> 24) + && len == weights[idx2 & 0xffffff]) +diff --git a/posix/regcomp.c b/posix/regcomp.c +index b238c08..34ee845 100644 +--- a/posix/regcomp.c ++++ b/posix/regcomp.c +@@ -1,5 +1,5 @@ + /* Extended regular expression matching and search library. +- Copyright (C) 2002-2007,2009,2010 Free Software Foundation, Inc. ++ Copyright (C) 2002-2007,2009,2010,2011 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Isamu Hasegawa . + +@@ -3409,19 +3409,18 @@ build_equiv_class (bitset_t sbcset, const unsigned char *name) + _NL_COLLATE_EXTRAMB); + indirect = (const int32_t *) _NL_CURRENT (LC_COLLATE, + _NL_COLLATE_INDIRECTMB); +- idx1 = findidx (&cp); +- if (BE (idx1 == 0 || cp < name + strlen ((const char *) name), 0)) ++ idx1 = findidx (&cp, -1); ++ if (BE (idx1 == 0 || *cp != '\0', 0)) + /* This isn't a valid character. */ + return REG_ECOLLATE; + + /* Build single byte matcing table for this equivalence class. */ +- char_buf[1] = (unsigned char) '\0'; + len = weights[idx1 & 0xffffff]; + for (ch = 0; ch < SBC_MAX; ++ch) + { + char_buf[0] = ch; + cp = char_buf; +- idx2 = findidx (&cp); ++ idx2 = findidx (&cp, 1); + /* + idx2 = table[ch]; + */ + +--- a/posix/regex_internal.h 2011-11-30 12:47:02.706567482 -0700 ++++ a/posix/regex_internal.h 2011-11-30 12:47:32.969558337 -0700 +@@ -756,7 +756,7 @@ + indirect = (const int32_t *) _NL_CURRENT (LC_COLLATE, + _NL_COLLATE_INDIRECTMB); + p = pstr->mbs + idx; +- tmp = findidx (&p); ++ tmp = findidx (&p, pstr->len - idx); + return p - pstr->mbs - idx; + } + else +diff --git a/posix/regexec.c b/posix/regexec.c +index 9e0c565..3ea810b 100644 +--- a/posix/regexec.c ++++ b/posix/regexec.c +@@ -3924,7 +3924,7 @@ check_node_accept_bytes (const re_dfa_t *dfa, int node_idx, + _NL_CURRENT (LC_COLLATE, _NL_COLLATE_EXTRAMB); + indirect = (const int32_t *) + _NL_CURRENT (LC_COLLATE, _NL_COLLATE_INDIRECTMB); +- int32_t idx = findidx (&cp); ++ int32_t idx = findidx (&cp, elem_len); + if (idx > 0) + for (i = 0; i < cset->nequiv_classes; ++i) + { +diff --git a/string/strcoll_l.c b/string/strcoll_l.c +index d8d1139..fb77d08 100644 +--- a/string/strcoll_l.c ++++ b/string/strcoll_l.c +@@ -1,4 +1,4 @@ +-/* Copyright (C) 1995-1997,2002,2004,2007,2010 Free Software Foundation, Inc. ++/* Copyright (C) 1995-1997,2002,2004,2007,2010,2011 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Written by Ulrich Drepper , 1995. + +@@ -205,7 +205,7 @@ STRCOLL (s1, s2, l) + + while (*us1 != L('\0')) + { +- int32_t tmp = findidx (&us1); ++ int32_t tmp = findidx (&us1, -1); + rule1arr[idx1max] = tmp >> 24; + idx1arr[idx1max] = tmp & 0xffffff; + idx1cnt = idx1max++; +@@ -267,7 +267,7 @@ STRCOLL (s1, s2, l) + + while (*us2 != L('\0')) + { +- int32_t tmp = findidx (&us2); ++ int32_t tmp = findidx (&us2, -1); + rule2arr[idx2max] = tmp >> 24; + idx2arr[idx2max] = tmp & 0xffffff; + idx2cnt = idx2max++; +diff --git a/string/strxfrm_l.c b/string/strxfrm_l.c +index 220253c..b06556d 100644 +--- a/string/strxfrm_l.c ++++ b/string/strxfrm_l.c +@@ -176,7 +176,7 @@ STRXFRM (STRING_TYPE *dest, const STRING_TYPE *src, size_t n, __locale_t l) + idxmax = 0; + do + { +- int32_t tmp = findidx (&usrc); ++ int32_t tmp = findidx (&usrc, -1); + rulearr[idxmax] = tmp >> 24; + idxarr[idxmax] = tmp & 0xffffff; + diff --git a/src/patches/glibc/glibc-rh766513.patch b/src/patches/glibc/glibc-rh766513.patch new file mode 100644 index 000000000..3f629b4fc --- /dev/null +++ b/src/patches/glibc/glibc-rh766513.patch @@ -0,0 +1,14 @@ +diff -rup a/po/ja.po b/po/ja.po +--- a/po/ja.po 2010-05-04 05:27:23.000000000 -0600 ++++ b/po/ja.po 2012-02-07 12:21:03.023806370 -0700 +@@ -3549,8 +3549,8 @@ msgstr "%s: ÉÔÀµ¤Ê¥ª¥×¥·¥ç¥ó¤Ç¤¹ -- %c\n + + #: posix/getopt.c:945 posix/getopt.c:948 + #, c-format +-msgid "%s: invalid option -- %c\n" +-msgstr "%s: ¥ª¥×¥·¥ç¥ó¤¬°ã¤¤¤Þ¤¹ -- %c\n" ++msgid "%s: invalid option -- '%c'\n" ++msgstr "%s: ¥ª¥×¥·¥ç¥ó¤¬°ã¤¤¤Þ¤¹ -- '%c'\n" + + #: posix/getopt.c:1003 posix/getopt.c:1022 posix/getopt.c:1234 + #: posix/getopt.c:1255 diff --git a/src/patches/glibc/glibc-rh767146.patch b/src/patches/glibc/glibc-rh767146.patch new file mode 100644 index 000000000..82520620b --- /dev/null +++ b/src/patches/glibc/glibc-rh767146.patch @@ -0,0 +1,21 @@ +diff -rup a/elf/dl-load.c b/elf/dl-load.c +--- a/elf/dl-load.c 2012-02-03 10:59:58.917870716 -0700 ++++ b/elf/dl-load.c 2012-02-03 11:01:01.796580644 -0700 +@@ -1130,6 +1130,16 @@ _dl_map_object_from_fd (const char *name + = N_("ELF load command address/offset not properly aligned"); + goto call_lose; + } ++ if (__builtin_expect ((ph->p_offset + ph->p_filesz > st.st_size), 0)) ++ { ++ /* If the segment requires zeroing of part of its last ++ page, we'll crash when accessing the unmapped page. ++ There's still a possibility of a race, if the shared ++ object is truncated between the fxstat above and the ++ memset below. */ ++ errstring = N_("ELF load command past end of file"); ++ goto call_lose; ++ } + + c = &loadcmds[nloadcmds++]; + c->mapstart = ph->p_vaddr & ~(GLRO(dl_pagesize) - 1); +Only in b/elf: dl-load.c.orig diff --git a/src/patches/glibc/glibc-rh767693-2.patch b/src/patches/glibc/glibc-rh767693-2.patch new file mode 100644 index 000000000..4418ac642 --- /dev/null +++ b/src/patches/glibc/glibc-rh767693-2.patch @@ -0,0 +1,79 @@ +Index: glibc-2.5-20061008T1257/sunrpc/svc_tcp.c +=================================================================== +--- glibc-2.5-20061008T1257.orig/sunrpc/svc_tcp.c ++++ glibc-2.5-20061008T1257/sunrpc/svc_tcp.c +@@ -50,6 +50,7 @@ static char sccsid[] = "@(#)svc_tcp.c 1. + #include + #include + #include ++#include + + #ifdef USE_IN_LIBIO + # include +@@ -249,6 +250,11 @@ again: + { + if (errno == EINTR) + goto again; ++ if (errno == EMFILE) ++ { ++ struct timespec ts = { .tv_sec = 0, .tv_nsec = 50000000 }; ++ __nanosleep(&ts , NULL); ++ } + return FALSE; + } + /* +Index: glibc-2.5-20061008T1257/sunrpc/svc_udp.c +=================================================================== +--- glibc-2.5-20061008T1257.orig/sunrpc/svc_udp.c ++++ glibc-2.5-20061008T1257/sunrpc/svc_udp.c +@@ -46,6 +46,7 @@ static char sccsid[] = "@(#)svc_udp.c 1. + #include + #include + #include ++#include + + #ifdef IP_PKTINFO + #include +@@ -277,8 +278,16 @@ again: + (int) su->su_iosz, 0, + (struct sockaddr *) &(xprt->xp_raddr), &len); + xprt->xp_addrlen = len; +- if (rlen == -1 && errno == EINTR) +- goto again; ++ if (rlen == -1) ++ { ++ if (errno == EINTR) ++ goto again; ++ if (errno == EMFILE) ++ { ++ struct timespec ts = { .tv_sec = 0, .tv_nsec = 50000000 }; ++ __nanosleep(&ts , NULL); ++ } ++ } + if (rlen < 16) /* < 4 32-bit ints? */ + return FALSE; + xdrs->x_op = XDR_DECODE; +Index: glibc-2.5-20061008T1257/sunrpc/svc_unix.c +=================================================================== +--- glibc-2.5-20061008T1257.orig/sunrpc/svc_unix.c ++++ glibc-2.5-20061008T1257/sunrpc/svc_unix.c +@@ -48,6 +48,7 @@ + #include + #include + #include ++#include + + #ifdef USE_IN_LIBIO + # include +@@ -247,6 +248,11 @@ again: + { + if (errno == EINTR) + goto again; ++ if (errno == EMFILE) ++ { ++ struct timespec ts = { .tv_sec = 0, .tv_nsec = 50000000 }; ++ __nanosleep(&ts , NULL); ++ } + return FALSE; + } + /* diff --git a/src/patches/glibc/glibc-rh767693.patch b/src/patches/glibc/glibc-rh767693.patch new file mode 100644 index 000000000..8f76beb3d --- /dev/null +++ b/src/patches/glibc/glibc-rh767693.patch @@ -0,0 +1,89 @@ +commit 97ac2654b2d831acaa18a2b018b0736245903fd2 +Author: Ulrich Drepper +Date: Sat Dec 17 20:18:42 2011 -0500 + + Check values from TZ file header + + + [BZ #13506] + * time/tzfile.c (__tzfile_read): Check values from file header. + +diff -ru a/time/tzfile.c b/time/tzfile.c +--- a/time/tzfile.c 2010-05-04 11:27:23.000000000 +0000 ++++ b/time/tzfile.c 2011-12-19 06:39:49.875358578 +0000 +@@ -19,6 +19,7 @@ + + #include + #include ++#include + #include + #include + #include +@@ -234,23 +235,58 @@ + goto read_again; + } + ++ if (__builtin_expect (num_transitions ++ > ((SIZE_MAX - (__alignof__ (struct ttinfo) - 1)) ++ / (sizeof (time_t) + 1)), 0)) ++ goto lose; + total_size = num_transitions * (sizeof (time_t) + 1); + total_size = ((total_size + __alignof__ (struct ttinfo) - 1) + & ~(__alignof__ (struct ttinfo) - 1)); + types_idx = total_size; +- total_size += num_types * sizeof (struct ttinfo) + chars; ++ if (__builtin_expect (num_types ++ > (SIZE_MAX - total_size) / sizeof (struct ttinfo), 0)) ++ goto lose; ++ total_size += num_types * sizeof (struct ttinfo); ++ if (__builtin_expect (chars > SIZE_MAX - total_size, 0)) ++ goto lose; ++ total_size += chars; ++ if (__builtin_expect (__alignof__ (struct leap) - 1 ++ > SIZE_MAX - total_size, 0)) ++ goto lose; + total_size = ((total_size + __alignof__ (struct leap) - 1) + & ~(__alignof__ (struct leap) - 1)); + leaps_idx = total_size; ++ if (__builtin_expect (num_leaps ++ > (SIZE_MAX - total_size) / sizeof (struct leap), 0)) ++ goto lose; + total_size += num_leaps * sizeof (struct leap); +- tzspec_len = (sizeof (time_t) == 8 && trans_width == 8 +- ? st.st_size - (ftello (f) +- + num_transitions * (8 + 1) +- + num_types * 6 +- + chars +- + num_leaps * 12 +- + num_isstd +- + num_isgmt) - 1 : 0); ++ tzspec_len = 0; ++ if (sizeof (time_t) == 8 && trans_width == 8) ++ { ++ off_t rem = st.st_size - ftello (f); ++ if (__builtin_expect (rem < 0 ++ || (size_t) rem < (num_transitions * (8 + 1) ++ + num_types * 6 ++ + chars), 0)) ++ goto lose; ++ tzspec_len = (size_t) rem - (num_transitions * (8 + 1) ++ + num_types * 6 ++ + chars); ++ if (__builtin_expect (num_leaps > SIZE_MAX / 12 ++ || tzspec_len < num_leaps * 12, 0)) ++ goto lose; ++ tzspec_len -= num_leaps * 12; ++ if (__builtin_expect (tzspec_len < num_isstd, 0)) ++ goto lose; ++ tzspec_len -= num_isstd; ++ if (__builtin_expect (tzspec_len == 0 || tzspec_len - 1 < num_isgmt, 0)) ++ goto lose; ++ tzspec_len -= num_isgmt + 1; ++ if (__builtin_expect (SIZE_MAX - total_size < tzspec_len, 0)) ++ goto lose; ++ } ++ if (__builtin_expect (SIZE_MAX - total_size - tzspec_len < extra, 0)) ++ goto lose; + + /* Allocate enough memory including the extra block requested by the + caller. */ diff --git a/src/patches/glibc/glibc-rh767746.patch b/src/patches/glibc/glibc-rh767746.patch new file mode 100644 index 000000000..58d96d810 --- /dev/null +++ b/src/patches/glibc/glibc-rh767746.patch @@ -0,0 +1,14 @@ +--- a/nptl/pthread_create.c 2011-12-13 11:41:37.000000000 -0700 ++++ b/nptl/pthread_create.c 2011-12-14 10:03:13.000000000 -0700 +@@ -440,8 +440,9 @@ + int err = ALLOCATE_STACK (iattr, &pd); + if (__builtin_expect (err != 0, 0)) + /* Something went wrong. Maybe a parameter of the attributes is +- invalid or we could not allocate memory. */ +- return err; ++ invalid or we could not allocate memory. Note we have to ++ translate error codes. */ ++ return err == ENOMEM ? EAGAIN : err; + + + /* Initialize the TCB. All initializations with zero should be diff --git a/src/patches/glibc/glibc-rh771342.patch b/src/patches/glibc/glibc-rh771342.patch new file mode 100644 index 000000000..0a49b8c93 --- /dev/null +++ b/src/patches/glibc/glibc-rh771342.patch @@ -0,0 +1,155 @@ +2011-06-30 Ulrich Drepper + + * nptl-init.c (__nptl_set_robust): New function. + (pthread_functions): Add reference. + * npthreadP.h: Declare __nptl_set_robust. + * sysdeps/pthread/pthread-functions.h (pthread_functions): Add + ptr_set_robust member. + * sysdeps/unix/sysv/linux/fork.c: Call set_robust_list syscall in + child if threads are used. + +diff -Nrup a/nptl/nptl-init.c b/nptl/nptl-init.c +--- a/nptl/nptl-init.c 2011-12-20 00:29:54.645538691 -0700 ++++ b/nptl/nptl-init.c 2012-01-03 10:18:38.977513783 -0700 +@@ -69,6 +69,13 @@ extern void __libc_setup_tls (size_t tcb + #endif + + #ifdef SHARED ++static ++#else ++extern ++#endif ++void __nptl_set_robust (struct pthread *); ++ ++#ifdef SHARED + static void nptl_freeres (void); + + +@@ -131,13 +138,25 @@ static const struct pthread_functions pt + .ptr__nptl_deallocate_tsd = __nptl_deallocate_tsd, + .ptr__nptl_setxid = __nptl_setxid, + /* For now only the stack cache needs to be freed. */ +- .ptr_freeres = nptl_freeres ++ .ptr_freeres = nptl_freeres, ++ .ptr_set_robust = __nptl_set_robust + }; + # define ptr_pthread_functions &pthread_functions + #else + # define ptr_pthread_functions NULL + #endif + ++#ifdef SHARED ++static ++#endif ++void ++__nptl_set_robust (struct pthread *self) ++{ ++ INTERNAL_SYSCALL_DECL (err); ++ INTERNAL_SYSCALL (set_robust_list, err, 2, &self->robust_head, ++ sizeof (struct robust_list_head)); ++} ++ + + #ifdef SHARED + /* This function is called indirectly from the freeres code in libc. */ +diff -Nrup a/nptl/pthreadP.h b/nptl/pthreadP.h +--- a/nptl/pthreadP.h 2010-05-04 05:27:23.000000000 -0600 ++++ b/nptl/pthreadP.h 2012-01-03 10:12:35.599269269 -0700 +@@ -555,17 +555,20 @@ extern void __pthread_cleanup_pop_restor + + /* Old cleanup interfaces, still used in libc.so. */ + extern void _pthread_cleanup_push (struct _pthread_cleanup_buffer *buffer, +- void (*routine) (void *), void *arg); ++ void (*routine) (void *), void *arg); + extern void _pthread_cleanup_pop (struct _pthread_cleanup_buffer *buffer, +- int execute); ++ int execute); + extern void _pthread_cleanup_push_defer (struct _pthread_cleanup_buffer *buffer, +- void (*routine) (void *), void *arg); ++ void (*routine) (void *), void *arg); + extern void _pthread_cleanup_pop_restore (struct _pthread_cleanup_buffer *buffer, +- int execute); ++ int execute); + + extern void __nptl_deallocate_tsd (void) attribute_hidden; + + extern int __nptl_setxid (struct xid_command *cmdp) attribute_hidden; ++#ifndef SHARED ++extern void __nptl_set_robust (struct pthread *self); ++#endif + + extern void __free_stacks (size_t limit) attribute_hidden; + +diff -Nrup a/nptl/sysdeps/pthread/pthread-functions.h b/nptl/sysdeps/pthread/pthread-functions.h +--- a/nptl/sysdeps/pthread/pthread-functions.h 2010-05-04 05:27:23.000000000 -0600 ++++ b/nptl/sysdeps/pthread/pthread-functions.h 2012-01-03 10:12:35.639269301 -0700 +@@ -97,6 +97,7 @@ struct pthread_functions + void (*ptr__nptl_deallocate_tsd) (void); + int (*ptr__nptl_setxid) (struct xid_command *); + void (*ptr_freeres) (void); ++ void (*ptr_set_robust) (struct pthread *); + }; + + /* Variable in libc.so. */ +diff -Nrup a/nptl/sysdeps/unix/sysv/linux/fork.c b/nptl/sysdeps/unix/sysv/linux/fork.c +--- a/nptl/sysdeps/unix/sysv/linux/fork.c 2010-05-04 05:27:23.000000000 -0600 ++++ b/nptl/sysdeps/unix/sysv/linux/fork.c 2012-01-03 10:12:35.649269309 -0700 +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + + + unsigned long int *__fork_generation_pointer; +@@ -86,8 +87,8 @@ __libc_fork (void) + just go away. The unloading code works in the order of the + list. + +- While executing the registered handlers we are building a +- list of all the entries so that we can go backward later on. */ ++ While executing the registered handlers we are building a ++ list of all the entries so that we can go backward later on. */ + while (1) + { + /* Execute the handler if there is one. */ +@@ -154,6 +155,24 @@ __libc_fork (void) + GL(dl_cpuclock_offset) = now; + #endif + ++#ifdef __NR_set_robust_list ++ /* Initialize the robust mutex list which has been reset during ++ the fork. We do not check for errors since if it fails here ++ it failed at process start as well and noone could have used ++ robust mutexes. We also do not have to set ++ self->robust_head.futex_offset since we inherit the correct ++ value from the parent. */ ++# ifdef SHARED ++ if (__libc_pthread_functions.ptr_set_robust != NULL) ++ PTHFCT_CALL (ptr_set_robust, (self)); ++# else ++ extern __typeof (__nptl_set_robust) __nptl_set_robust ++ __attribute__((weak)); ++ if (__builtin_expect (__nptl_set_robust != NULL, 0)) ++ __nptl_set_robust (self); ++# endif ++#endif ++ + /* Reset the file list. These are recursive mutexes. */ + fresetlockfiles (); + +@@ -170,10 +189,10 @@ __libc_fork (void) + allp->handler->child_handler (); + + /* Note that we do not have to wake any possible waiter. +- This is the only thread in the new process. The count +- may have been bumped up by other threads doing a fork. +- We reset it to 1, to avoid waiting for non-existing +- thread(s) to release the count. */ ++ This is the only thread in the new process. The count ++ may have been bumped up by other threads doing a fork. ++ We reset it to 1, to avoid waiting for non-existing ++ thread(s) to release the count. */ + allp->handler->refcntr = 1; + + /* XXX We could at this point look through the object pool diff --git a/src/patches/glibc/glibc-rh782585.patch b/src/patches/glibc/glibc-rh782585.patch new file mode 100644 index 000000000..a554d4bd8 --- /dev/null +++ b/src/patches/glibc/glibc-rh782585.patch @@ -0,0 +1,329 @@ +diff -rup a/elf/dl-close.c b/elf/dl-close.c +--- a/elf/dl-close.c 2012-01-19 12:59:42.759484350 -0700 ++++ b/elf/dl-close.c 2012-01-19 14:10:20.439263806 -0700 +@@ -223,7 +223,7 @@ _dl_close_worker (struct link_map *map) + } + + /* Sort the entries. */ +- _dl_sort_fini (ns->_ns_loaded, maps, nloaded, used, nsid); ++ _dl_sort_fini (maps, nloaded, used, nsid); + + /* Call all termination functions at once. */ + #ifdef SHARED +diff -rup a/elf/dl-deps.c b/elf/dl-deps.c +--- a/elf/dl-deps.c 2012-01-19 12:59:42.716484301 -0700 ++++ b/elf/dl-deps.c 2012-01-19 13:52:35.223720556 -0700 +@@ -614,51 +614,67 @@ Filters not supported with LD_TRACE_PREL + map->l_searchlist.r_list[i]->l_reserved = 0; + } + +- /* Now determine the order in which the initialization has to happen. */ ++ /* Sort the initializer list to take dependencies into account. The binary ++ itself will always be initialize last. */ + memcpy (l_initfini, map->l_searchlist.r_list, + nlist * sizeof (struct link_map *)); +- /* We can skip looking for the binary itself which is at the front +- of the search list. Look through the list backward so that circular +- dependencies are not changing the order. */ +- for (i = 1; i < nlist; ++i) ++ if (__builtin_expect (nlist > 1, 1)) + { +- struct link_map *l = map->l_searchlist.r_list[i]; +- unsigned int j; +- unsigned int k; +- +- /* Find the place in the initfini list where the map is currently +- located. */ +- for (j = 1; l_initfini[j] != l; ++j) +- ; +- +- /* Find all object for which the current one is a dependency and +- move the found object (if necessary) in front. */ +- for (k = j + 1; k < nlist; ++k) ++ /* We can skip looking for the binary itself which is at the front ++ of the search list. */ ++ i = 1; ++ unsigned int seen[nlist]; ++ memset (seen, 0, nlist * sizeof (seen[0])); ++ while (1) + { +- struct link_map **runp; +- +- runp = l_initfini[k]->l_initfini; +- if (runp != NULL) ++ /* Keep track of which object we looked at this round. */ ++ ++seen[i]; ++ struct link_map *thisp = l_initfini[i]; ++ ++ /* Find the last object in the list for which the current one is ++ a dependency and move the current object behind the object ++ with the dependency. */ ++ unsigned int k = nlist - 1; ++ while (k > i) + { +- while (*runp != NULL) +- if (__builtin_expect (*runp++ == l, 0)) +- { +- struct link_map *here = l_initfini[k]; +- +- /* Move it now. */ +- memmove (&l_initfini[j] + 1, &l_initfini[j], +- (k - j) * sizeof (struct link_map *)); +- l_initfini[j] = here; +- +- /* Don't insert further matches before the last +- entry moved to the front. */ +- ++j; ++ struct link_map **runp = l_initfini[k]->l_initfini; ++ if (runp != NULL) ++ /* Look through the dependencies of the object. */ ++ while (*runp != NULL) ++ if (__builtin_expect (*runp++ == thisp, 0)) ++ { ++ /* Move the current object to the back past the last ++ object with it as the dependency. */ ++ memmove (&l_initfini[i], &l_initfini[i + 1], ++ (k - i) * sizeof (l_initfini[0])); ++ l_initfini[k] = thisp; ++ ++ if (seen[i + 1] > nlist - i - 2) ++ { ++ ++i; ++ goto next_clear; ++ } ++ ++ unsigned int this_seen = seen[i]; ++ memmove (&seen[i], &seen[i + 1], ++ (k - i) * sizeof (seen[0])); ++ seen[k] = this_seen; ++ ++ goto next; ++ } + +- break; +- } ++ --k; + } ++ ++ if (++i == nlist) ++ break; ++ next_clear: ++ memset (&seen[i], 0, (nlist - i) * sizeof (seen[0])); ++ ++ next:; + } + } ++ + /* Terminate the list of dependencies. */ + l_initfini[nlist] = NULL; + atomic_write_barrier (); +diff -rup a/elf/dl-fini.c b/elf/dl-fini.c +--- a/elf/dl-fini.c 2010-05-04 05:27:23.000000000 -0600 ++++ b/elf/dl-fini.c 2012-01-19 13:56:38.653842046 -0700 +@@ -1,5 +1,6 @@ + /* Call the termination functions of loaded shared objects. +- Copyright (C) 1995,96,1998-2002,2004-2005,2009 Free Software Foundation, Inc. ++ Copyright (C) 1995,96,1998-2002,2004-2005,2009,2011 ++ 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 +@@ -29,89 +30,100 @@ typedef void (*fini_t) (void); + + void + internal_function +-_dl_sort_fini (struct link_map *l, struct link_map **maps, size_t nmaps, +- char *used, Lmid_t ns) ++_dl_sort_fini (struct link_map **maps, size_t nmaps, char *used, Lmid_t ns) + { +- if (ns == LM_ID_BASE) +- /* The main executable always comes first. */ +- l = l->l_next; +- +- for (; l != NULL; l = l->l_next) +- /* Do not handle ld.so in secondary namespaces and object which +- are not removed. */ +- if (l == l->l_real && l->l_idx != -1) +- { +- /* Find the place in the 'maps' array. */ +- unsigned int j; +- for (j = ns == LM_ID_BASE ? 1 : 0; maps[j] != l; ++j) +- assert (j < nmaps); +- +- /* Find all object for which the current one is a dependency +- and move the found object (if necessary) in front. */ +- for (unsigned int k = j + 1; k < nmaps; ++k) +- { +- struct link_map **runp = maps[k]->l_initfini; +- if (runp != NULL) +- { +- while (*runp != NULL) +- if (*runp == l) +- { +- struct link_map *here = maps[k]; ++ /* A list of one element need not be sorted. */ ++ if (nmaps == 1) ++ return; ++ ++ /* We can skip looking for the binary itself which is at the front ++ of the search list for the main namespace. */ ++ unsigned int i = ns == LM_ID_BASE; ++ unsigned int seen[nmaps]; ++ memset (seen, 0, nmaps * sizeof (seen[0])); ++ while (1) ++ { ++ /* Keep track of which object we looked at this round. */ ++ ++seen[i]; ++ struct link_map *thisp = maps[i]; ++ ++ /* Do not handle ld.so in secondary namespaces and object which ++ are not removed. */ ++ if (thisp != thisp->l_real || thisp->l_idx == -1) ++ goto skip; ++ ++ /* Find the last object in the list for which the current one is ++ a dependency and move the current object behind the object ++ with the dependency. */ ++ unsigned int k = nmaps - 1; ++ while (k > i) ++ { ++ struct link_map **runp = maps[k]->l_initfini; ++ if (runp != NULL) ++ /* Look through the dependencies of the object. */ ++ while (*runp != NULL) ++ if (__builtin_expect (*runp++ == thisp, 0)) ++ { ++ move: ++ /* Move the current object to the back past the last ++ object with it as the dependency. */ ++ memmove (&maps[i], &maps[i + 1], ++ (k - i) * sizeof (maps[0])); ++ maps[k] = thisp; + +- /* Move it now. */ +- memmove (&maps[j] + 1, +- &maps[j], (k - j) * sizeof (struct link_map *)); +- maps[j] = here; ++ if (used != NULL) ++ { ++ char here_used = used[i]; ++ memmove (&used[i], &used[i + 1], ++ (k - i) * sizeof (used[0])); ++ used[k] = here_used; ++ } + +- if (used != NULL) +- { +- char here_used = used[k]; ++ if (seen[i + 1] > nmaps - i - 2) ++ { ++ ++i; ++ goto next_clear; ++ } + +- memmove (&used[j] + 1, +- &used[j], (k - j) * sizeof (char)); +- used[j] = here_used; +- } ++ unsigned int this_seen = seen[i]; ++ memmove (&seen[i], &seen[i + 1], (k - i) * sizeof (seen[0])); ++ seen[k] = this_seen; + +- ++j; ++ goto next; ++ } + +- break; +- } +- else +- ++runp; +- } +- +- if (__builtin_expect (maps[k]->l_reldeps != NULL, 0)) +- { +- unsigned int m = maps[k]->l_reldeps->act; +- struct link_map **relmaps = &maps[k]->l_reldeps->list[0]; ++ if (__builtin_expect (maps[k]->l_reldeps != NULL, 0)) ++ { ++ unsigned int m = maps[k]->l_reldeps->act; ++ struct link_map **relmaps = &maps[k]->l_reldeps->list[0]; + +- while (m-- > 0) ++ /* Look through the relocation dependencies of the object. */ ++ while (m-- > 0) ++ if (__builtin_expect (relmaps[m] == thisp, 0)) + { +- if (relmaps[m] == l) +- { +- struct link_map *here = maps[k]; +- +- /* Move it now. */ +- memmove (&maps[j] + 1, +- &maps[j], +- (k - j) * sizeof (struct link_map *)); +- maps[j] = here; +- +- if (used != NULL) +- { +- char here_used = used[k]; +- +- memmove (&used[j] + 1, +- &used[j], (k - j) * sizeof (char)); +- used[j] = here_used; +- } +- +- break; +- } ++ /* If a cycle exists with a link time dependency, ++ preserve the latter. */ ++ struct link_map **runp = thisp->l_initfini; ++ if (runp != NULL) ++ while (*runp != NULL) ++ if (__builtin_expect (*runp++ == maps[k], 0)) ++ goto ignore; ++ goto move; + } +- } +- } +- } ++ ignore:; ++ } ++ ++ --k; ++ } ++ ++ skip: ++ if (++i == nmaps) ++ break; ++ next_clear: ++ memset (&seen[i], 0, (nmaps - i) * sizeof (seen[0])); ++ ++ next:; ++ } + } + + +@@ -196,9 +208,8 @@ _dl_fini (void) + assert (ns == LM_ID_BASE || i == nloaded || i == nloaded - 1); + nmaps = i; + +- if (nmaps != 0) +- /* Now we have to do the sorting. */ +- _dl_sort_fini (GL(dl_ns)[ns]._ns_loaded, maps, nmaps, NULL, ns); ++ /* Now we have to do the sorting. */ ++ _dl_sort_fini (maps, nmaps, NULL, ns); + + /* We do not rely on the linked list of loaded object anymore from + this point on. We have our own list here (maps). The various +diff -rup a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h +--- a/sysdeps/generic/ldsodefs.h 2012-01-19 12:59:42.446483997 -0700 ++++ b/sysdeps/generic/ldsodefs.h 2012-01-19 14:16:36.242453532 -0700 +@@ -947,7 +947,7 @@ extern void _dl_init (struct link_map *m + extern void _dl_fini (void) internal_function; + + /* Sort array MAPS according to dependencies of the contained objects. */ +-extern void _dl_sort_fini (struct link_map *l, struct link_map **maps, ++extern void _dl_sort_fini (struct link_map **maps, + size_t nmaps, char *used, Lmid_t ns) + internal_function; + diff --git a/src/patches/glibc/glibc-rh784402.patch b/src/patches/glibc/glibc-rh784402.patch new file mode 100644 index 000000000..d75773e52 --- /dev/null +++ b/src/patches/glibc/glibc-rh784402.patch @@ -0,0 +1,166 @@ +commit 3e1aa84e7f9f38815f5db9cd7654b1a9497cf6e4 +Author: Ulrich Drepper +Date: Fri Jan 20 22:39:54 2012 -0500 + + Do not cache negative results in nscd if these are transient + +diff -rup a/nscd/aicache.c b/nscd/aicache.c +--- a/nscd/aicache.c 2012-01-24 20:32:58.906826425 -0700 ++++ b/nscd/aicache.c 2012-01-24 20:42:17.663968882 -0700 +@@ -511,9 +511,17 @@ next_nip: + if (fd != -1) + TEMP_FAILURE_RETRY (send (fd, ¬found, total, MSG_NOSIGNAL)); + +- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, 1); +- /* If we cannot permanently store the result, so be it. */ +- if (dataset != NULL) ++ /* If we have a transient error or cannot permanently store the ++ result, so be it. */ ++ if (rc4 == EAGAIN || __builtin_expect (db->negtimeout == 0, 0)) ++ { ++ /* Mark the old entry as obsolete. */ ++ if (dh != NULL) ++ dh->usable = false; ++ dataset = NULL; ++ } ++ else if ((dataset = mempool_alloc (db, (sizeof (struct dataset) ++ + req->key_len), 1)) != NULL) + { + dataset->head.allocsize = sizeof (struct dataset) + req->key_len; + dataset->head.recsize = total; +diff -rup a/nscd/grpcache.c b/nscd/grpcache.c +--- a/nscd/grpcache.c 2012-01-24 20:32:58.910826427 -0700 ++++ b/nscd/grpcache.c 2012-01-24 20:42:17.666968883 -0700 +@@ -114,13 +114,21 @@ cache_addgr (struct database_dyn *db, in + case. */ + total = sizeof (notfound); + +- written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, +- MSG_NOSIGNAL)); ++ if (fd != -1) ++ written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, ++ MSG_NOSIGNAL)); ++ else ++ written = total; + +- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, +- 1); +- /* If we cannot permanently store the result, so be it. */ +- if (dataset != NULL) ++ /* If we have a transient error or cannot permanently store ++ the result, so be it. */ ++ if (errno == EAGAIN || __builtin_expect (db->negtimeout == 0, 0)) ++ { ++ /* Mark the old entry as obsolete. */ ++ if (dh != NULL) ++ dh->usable = false; ++ } ++ else if ((dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, 1)) != NULL) + { + dataset->head.allocsize = sizeof (struct dataset) + req->key_len; + dataset->head.recsize = total; +diff -rup a/nscd/hstcache.c b/nscd/hstcache.c +--- a/nscd/hstcache.c 2012-01-24 20:32:58.911826427 -0700 ++++ b/nscd/hstcache.c 2012-01-24 20:42:17.668968883 -0700 +@@ -141,10 +141,16 @@ cache_addhst (struct database_dyn *db, i + MSG_NOSIGNAL)) != total) + all_written = false; + +- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, +- 1); +- /* If we cannot permanently store the result, so be it. */ +- if (dataset != NULL) ++ /* If we have a transient error or cannot permanently store ++ the result, so be it. */ ++ if (errval == EAGAIN || __builtin_expect (db->negtimeout == 0, 0)) ++ { ++ /* Mark the old entry as obsolete. */ ++ if (dh != NULL) ++ dh->usable = false; ++ } ++ else if ((dataset = mempool_alloc (db, (sizeof (struct dataset) ++ + req->key_len), 1)) != NULL) + { + dataset->head.allocsize = sizeof (struct dataset) + req->key_len; + dataset->head.recsize = total; +diff -rup a/nscd/initgrcache.c b/nscd/initgrcache.c +--- a/nscd/initgrcache.c 2012-01-24 20:32:58.912826427 -0700 ++++ b/nscd/initgrcache.c 2012-01-24 20:42:17.671968883 -0700 +@@ -202,10 +202,16 @@ addinitgroupsX (struct database_dyn *db, + written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, + MSG_NOSIGNAL)); + +- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, +- 1); +- /* If we cannot permanently store the result, so be it. */ +- if (dataset != NULL) ++ /* If we have a transient error or cannot permanently store ++ the result, so be it. */ ++ if (all_tryagain || __builtin_expect (db->negtimeout == 0, 0)) ++ { ++ /* Mark the old entry as obsolete. */ ++ if (dh != NULL) ++ dh->usable = false; ++ } ++ else if ((dataset = mempool_alloc (db, (sizeof (struct dataset) ++ + req->key_len), 1)) != NULL) + { + dataset->head.allocsize = sizeof (struct dataset) + req->key_len; + dataset->head.recsize = total; +diff -rup a/nscd/pwdcache.c b/nscd/pwdcache.c +--- a/nscd/pwdcache.c 2012-01-24 20:32:58.914826427 -0700 ++++ b/nscd/pwdcache.c 2012-01-24 20:42:17.671968883 -0700 +@@ -124,10 +124,16 @@ cache_addpw (struct database_dyn *db, in + written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, + MSG_NOSIGNAL)); + +- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, +- 1); +- /* If we cannot permanently store the result, so be it. */ +- if (dataset != NULL) ++ /* If we have a transient error or cannot permanently store ++ the result, so be it. */ ++ if (errno == EAGAIN || __builtin_expect (db->negtimeout == 0, 0)) ++ { ++ /* Mark the old entry as obsolete. */ ++ if (dh != NULL) ++ dh->usable = false; ++ } ++ else if ((dataset = mempool_alloc (db, (sizeof (struct dataset) ++ + req->key_len), 1)) != NULL) + { + dataset->head.allocsize = sizeof (struct dataset) + req->key_len; + dataset->head.recsize = total; +diff -rup a/nscd/servicescache.c b/nscd/servicescache.c +--- a/nscd/servicescache.c 2012-01-24 20:32:58.915826427 -0700 ++++ b/nscd/servicescache.c 2012-01-24 20:42:17.672968884 -0700 +@@ -102,15 +102,22 @@ cache_addserv (struct database_dyn *db, + { + /* We have no data. This means we send the standard reply for this + case. */ +- total = sizeof (notfound); ++ written = total = sizeof (notfound); + +- written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, +- MSG_NOSIGNAL)); ++ if (fd != -1) ++ written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, ++ MSG_NOSIGNAL)); + +- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, +- 1); +- /* If we cannot permanently store the result, so be it. */ +- if (dataset != NULL) ++ /* If we have a transient error or cannot permanently store ++ the result, so be it. */ ++ if (errval == EAGAIN || __builtin_expect (db->negtimeout == 0, 0)) ++ { ++ /* Mark the old entry as obsolete. */ ++ if (dh != NULL) ++ dh->usable = false; ++ } ++ else if ((dataset = mempool_alloc (db, (sizeof (struct dataset) ++ + req->key_len), 1)) != NULL) + { + dataset->head.allocsize = sizeof (struct dataset) + req->key_len; + dataset->head.recsize = total; diff --git a/src/patches/glibc/glibc-rh785984.patch b/src/patches/glibc/glibc-rh785984.patch new file mode 100644 index 000000000..80ba5e845 --- /dev/null +++ b/src/patches/glibc/glibc-rh785984.patch @@ -0,0 +1,20 @@ +diff -rup a/localedata/locales/zh_CN b/localedata/locales/zh_CN +--- a/localedata/locales/zh_CN 2006-07-30 16:19:43.000000000 -0600 ++++ b/localedata/locales/zh_CN 2012-01-30 21:24:46.905115483 -0700 +@@ -108,11 +108,11 @@ day "";/ + "";/ + "" + +-abmon "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ +- "";"";/ ++abmon "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ + "";"" + + mon "";"";"";/ diff --git a/src/patches/glibc/glibc-rh788959-2.patch b/src/patches/glibc/glibc-rh788959-2.patch new file mode 100644 index 000000000..1064640af --- /dev/null +++ b/src/patches/glibc/glibc-rh788959-2.patch @@ -0,0 +1,153 @@ +diff -rcp a/nscd/grpcache.c b/nscd/grpcache.c +*** a/nscd/grpcache.c Wed Apr 11 12:50:07 2012 +--- b/nscd/grpcache.c Wed Apr 11 21:45:58 2012 +*************** cache_addgr (struct database_dyn *db, in +*** 178,184 **** + char *cp; + const size_t key_len = strlen (key); + const size_t buf_len = 3 * sizeof (grp->gr_gid) + key_len + 1; +! char *buf = alloca (buf_len); + ssize_t n; + size_t cnt; + +--- 178,185 ---- + char *cp; + const size_t key_len = strlen (key); + const size_t buf_len = 3 * sizeof (grp->gr_gid) + key_len + 1; +! size_t alloca_used = 0; +! char *buf = alloca_account (buf_len, alloca_used); + ssize_t n; + size_t cnt; + +*************** cache_addgr (struct database_dyn *db, in +*** 190,196 **** + /* Determine the length of all members. */ + while (grp->gr_mem[gr_mem_cnt]) + ++gr_mem_cnt; +! gr_mem_len = (uint32_t *) alloca (gr_mem_cnt * sizeof (uint32_t)); + for (gr_mem_cnt = 0; grp->gr_mem[gr_mem_cnt]; ++gr_mem_cnt) + { + gr_mem_len[gr_mem_cnt] = strlen (grp->gr_mem[gr_mem_cnt]) + 1; +--- 191,198 ---- + /* Determine the length of all members. */ + while (grp->gr_mem[gr_mem_cnt]) + ++gr_mem_cnt; +! gr_mem_len = (uint32_t *) alloca_account (gr_mem_cnt * sizeof (uint32_t), +! alloca_used); + for (gr_mem_cnt = 0; grp->gr_mem[gr_mem_cnt]; ++gr_mem_cnt) + { + gr_mem_len[gr_mem_cnt] = strlen (grp->gr_mem[gr_mem_cnt]) + 1; +*************** cache_addgr (struct database_dyn *db, in +*** 205,214 **** + change. Allocate memory on the cache since it is likely + discarded anyway. If it turns out to be necessary to have a + new record we can still allocate real memory. */ +! bool alloca_used = false; + dataset = NULL; + +! if (he == NULL) + dataset = (struct dataset *) mempool_alloc (db, total + n, 1); + + if (dataset == NULL) +--- 207,216 ---- + change. Allocate memory on the cache since it is likely + discarded anyway. If it turns out to be necessary to have a + new record we can still allocate real memory. */ +! bool dataset_in_stack_or_freed = false; + dataset = NULL; + +! if (he == NULL || ! __libc_use_alloca (alloca_used + total + n)) + dataset = (struct dataset *) mempool_alloc (db, total + n, 1); + + if (dataset == NULL) +*************** cache_addgr (struct database_dyn *db, in +*** 216,225 **** + /* We cannot permanently add the result in the moment. But + we can provide the result as is. Store the data in some + temporary memory. */ +! dataset = (struct dataset *) alloca (total + n); + + /* We cannot add this record to the permanent database. */ +! alloca_used = true; + } + + dataset->head.allocsize = total + n; +--- 218,227 ---- + /* We cannot permanently add the result in the moment. But + we can provide the result as is. Store the data in some + temporary memory. */ +! dataset = (struct dataset *) alloca_account (total + n, alloca_used); + + /* We cannot add this record to the permanent database. */ +! dataset_in_stack_or_freed = true; + } + + dataset->head.allocsize = total + n; +*************** cache_addgr (struct database_dyn *db, in +*** 273,278 **** +--- 275,288 ---- + allocated on the stack and need not be freed. */ + dh->timeout = dataset->head.timeout; + ++dh->nreloads; ++ ++ /* If the new record was not allocated on the stack, then it must ++ be freed. Note that it can no longer be used. */ ++ if (! dataset_in_stack_or_freed) ++ { ++ free (dataset); ++ dataset_in_stack_or_freed = true; ++ } + } + else + { +*************** cache_addgr (struct database_dyn *db, in +*** 288,294 **** + key_copy = (char *) newp + (key_copy - (char *) dataset); + + dataset = memcpy (newp, dataset, total + n); +! alloca_used = false; + } + + /* Mark the old record as obsolete. */ +--- 298,304 ---- + key_copy = (char *) newp + (key_copy - (char *) dataset); + + dataset = memcpy (newp, dataset, total + n); +! dataset_in_stack_or_freed = false; + } + + /* Mark the old record as obsolete. */ +*************** cache_addgr (struct database_dyn *db, in +*** 303,309 **** + assert (fd != -1); + + #ifdef HAVE_SENDFILE +! if (__builtin_expect (db->mmap_used, 1) && !alloca_used) + { + assert (db->wr_fd != -1); + assert ((char *) &dataset->resp > (char *) db->data); +--- 313,319 ---- + assert (fd != -1); + + #ifdef HAVE_SENDFILE +! if (__builtin_expect (db->mmap_used, 1) && !dataset_in_stack_or_freed) + { + assert (db->wr_fd != -1); + assert ((char *) &dataset->resp > (char *) db->data); +*************** cache_addgr (struct database_dyn *db, in +*** 330,336 **** + + /* Add the record to the database. But only if it has not been + stored on the stack. */ +! if (! alloca_used) + { + /* If necessary, we also propagate the data to disk. */ + if (db->persistent) +--- 340,346 ---- + + /* Add the record to the database. But only if it has not been + stored on the stack. */ +! if (! dataset_in_stack_or_freed) + { + /* If necessary, we also propagate the data to disk. */ + if (db->persistent) diff --git a/src/patches/glibc/glibc-rh788959.patch b/src/patches/glibc/glibc-rh788959.patch new file mode 100644 index 000000000..adc6c9947 --- /dev/null +++ b/src/patches/glibc/glibc-rh788959.patch @@ -0,0 +1,130 @@ +diff -pruN glibc-2.12-2-gc4ccff1/nis/nss_compat/compat-initgroups.c glibc-2.12-2-gc4ccff1.patched/nis/nss_compat/compat-initgroups.c +--- glibc-2.12-2-gc4ccff1/nis/nss_compat/compat-initgroups.c 2010-05-04 16:57:23.000000000 +0530 ++++ glibc-2.12-2-gc4ccff1.patched/nis/nss_compat/compat-initgroups.c 2012-02-21 11:11:19.877008465 +0530 +@@ -297,6 +297,8 @@ getgrent_next_nss (ent_t *ent, char *buf + if (nss_initgroups_dyn (user, group, &mystart, &mysize, &mygroups, + limit, errnop) == NSS_STATUS_SUCCESS) + { ++ status = NSS_STATUS_NOTFOUND; ++ + /* If there is no blacklist we can trust the underlying + initgroups implementation. */ + if (ent->blacklist.current <= 1) +@@ -309,6 +311,7 @@ getgrent_next_nss (ent_t *ent, char *buf + overwrite the pointer with one to a bigger buffer. */ + char *tmpbuf = buffer; + size_t tmplen = buflen; ++ bool use_malloc = false; + + for (int i = 0; i < mystart; i++) + { +@@ -316,21 +319,36 @@ getgrent_next_nss (ent_t *ent, char *buf + 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 (__libc_use_alloca (tmplen * 2)) ++ { ++ if (tmpbuf == buffer) ++ { ++ tmplen *= 2; ++ tmpbuf = __alloca (tmplen); ++ } ++ else ++ tmpbuf = extend_alloca (tmpbuf, tmplen, tmplen * 2); ++ } ++ else ++ { ++ tmplen *= 2; ++ char *newbuf = realloc (use_malloc ? tmpbuf : NULL, tmplen); ++ ++ if (newbuf == NULL) ++ { ++ status = NSS_STATUS_TRYAGAIN; ++ goto done; ++ } ++ use_malloc = true; ++ tmpbuf = newbuf; ++ } ++ } + + if (__builtin_expect (status != NSS_STATUS_NOTFOUND, 1)) + { + if (__builtin_expect (status != NSS_STATUS_SUCCESS, 0)) +- { +- free (mygroups); +- return status; +- } ++ goto done; + + if (!in_blacklist (grpbuf.gr_name, + strlen (grpbuf.gr_name), ent) +@@ -348,11 +366,17 @@ getgrent_next_nss (ent_t *ent, char *buf + } + } + } ++ ++ status = NSS_STATUS_NOTFOUND; ++ ++ done: ++ if (use_malloc) ++ free (tmpbuf); + } + + free (mygroups); + +- return NSS_STATUS_NOTFOUND; ++ return status; + } + + free (mygroups); +@@ -506,6 +530,7 @@ _nss_compat_initgroups_dyn (const char * + char *tmpbuf; + enum nss_status status; + ent_t intern = { true, false, false, NULL, {NULL, 0, 0} }; ++ bool use_malloc = false; + + status = internal_setgrent (&intern); + if (status != NSS_STATUS_SUCCESS) +@@ -519,13 +544,32 @@ _nss_compat_initgroups_dyn (const char * + user, group, start, size, + groupsp, limit, errnop)) + == NSS_STATUS_TRYAGAIN && *errnop == ERANGE) +- tmpbuf = extend_alloca (tmpbuf, buflen, 2 * buflen); ++ if (__libc_use_alloca (buflen * 2)) ++ tmpbuf = extend_alloca (tmpbuf, buflen, 2 * buflen); ++ else ++ { ++ buflen *= 2; ++ char *newbuf = realloc (use_malloc ? tmpbuf : NULL, buflen); ++ if (newbuf == NULL) ++ { ++ status = NSS_STATUS_TRYAGAIN; ++ goto done; ++ } ++ use_malloc = true; ++ tmpbuf = newbuf; ++ } + } + while (status == NSS_STATUS_SUCCESS); + ++ status = NSS_STATUS_SUCCESS; ++ ++ done: ++ if (use_malloc) ++ free (tmpbuf); ++ + internal_endgrent (&intern); + +- return NSS_STATUS_SUCCESS; ++ return status; + } + + diff --git a/src/patches/glibc/glibc-rh789189.patch b/src/patches/glibc/glibc-rh789189.patch new file mode 100644 index 000000000..fc0e2e017 --- /dev/null +++ b/src/patches/glibc/glibc-rh789189.patch @@ -0,0 +1,12 @@ +diff -rup a/resolv/res_init.c b/resolv/res_init.c +--- a/resolv/res_init.c 2010-05-04 05:27:23.000000000 -0600 ++++ b/resolv/res_init.c 2012-02-10 10:20:24.923578396 -0700 +@@ -325,7 +325,7 @@ __res_vinit(res_state statp, int preinit + struct in6_addr a6; + char *el; + +- if ((el = strchr(cp, '\n')) != NULL) ++ if ((el = strpbrk(cp, " \t\n")) != NULL) + *el = '\0'; + if ((el = strchr(cp, SCOPE_DELIMITER)) != NULL) + *el = '\0'; diff --git a/src/patches/glibc/glibc-rh789209.patch b/src/patches/glibc/glibc-rh789209.patch new file mode 100644 index 000000000..3aea97ede --- /dev/null +++ b/src/patches/glibc/glibc-rh789209.patch @@ -0,0 +1,12 @@ +diff -rup a/localedata/locales/uk_UA b/localedata/locales/uk_UA +--- a/localedata/locales/uk_UA 2010-05-04 05:27:23.000000000 -0600 ++++ b/localedata/locales/uk_UA 2012-02-10 09:59:16.934189715 -0700 +@@ -700,7 +700,7 @@ LC_MONETARY + % 200 hrv. - 200 hryven (money) + + % the local currency symbol +-currency_symbol "" % hr (hryvnya) ++currency_symbol "" % hr (hryvnya) + + % This must be a 4-character string containing the international currency + % symbol as defined by the ISO 4217 standard (three characters) followed diff --git a/src/patches/glibc/glibc-rh789238-2.patch b/src/patches/glibc/glibc-rh789238-2.patch new file mode 100644 index 000000000..62b5492b1 --- /dev/null +++ b/src/patches/glibc/glibc-rh789238-2.patch @@ -0,0 +1,114 @@ +diff -rup a/malloc/arena.c b/malloc/arena.c +--- a/malloc/arena.c 2012-03-02 10:22:47.025002715 -0700 ++++ b/malloc/arena.c 2012-03-02 10:27:47.442361529 -0700 +@@ -123,14 +123,14 @@ int __malloc_initialized = -1; + if(ptr) \ + (void)mutex_lock(&ptr->mutex); \ + else \ +- ptr = arena_get2(ptr, (size)); \ ++ ptr = arena_get2(ptr, (size), false); \ + } while(0) + #else + #define arena_lock(ptr, size) do { \ + if(ptr && !mutex_trylock(&ptr->mutex)) { \ + THREAD_STAT(++(ptr->stat_lock_direct)); \ + } else \ +- ptr = arena_get2(ptr, (size)); \ ++ ptr = arena_get2(ptr, (size), false); \ + } while(0) + #endif + +@@ -982,7 +982,7 @@ get_free_list (void) + + + static mstate +-reused_arena (void) ++reused_arena (bool retrying) + { + mstate result; + static mstate next_to_use; +@@ -999,6 +999,15 @@ reused_arena (void) + } + while (result != next_to_use); + ++ /* If we are retrying due to a failure to allocate in the main ++ arena, don't wait for the main arena to become available, select ++ another. ++ ++ To really fix this right we would have to try the allocation ++ in every other arena, but that seems like severe overkill. */ ++ if (retrying && result == &main_arena) ++ result = result->next; ++ + /* No arena available. Wait for the next in line. */ + (void)mutex_lock(&result->mutex); + +@@ -1014,9 +1023,9 @@ reused_arena (void) + static mstate + internal_function + #if __STD_C +-arena_get2(mstate a_tsd, size_t size) ++arena_get2(mstate a_tsd, size_t size, bool retrying) + #else +-arena_get2(a_tsd, size) mstate a_tsd; size_t size; ++arena_get2(a_tsd, size, retrying) mstate a_tsd; size_t size; bool retrying + #endif + { + mstate a; +@@ -1055,7 +1064,7 @@ arena_get2(a_tsd, size) mstate a_tsd; si + catomic_decrement (&narenas); + } + else +- a = reused_arena (); ++ a = reused_arena (retrying); + } + #else + if(!a_tsd) +diff -rup a/malloc/malloc.c b/malloc/malloc.c +--- a/malloc/malloc.c 2012-03-02 10:22:47.061002519 -0700 ++++ b/malloc/malloc.c 2012-03-02 10:23:53.151643863 -0700 +@@ -3671,7 +3671,7 @@ public_mALLOc(size_t bytes) + /* ... or sbrk() has failed and there is still a chance to mmap() */ + mstate prev = ar_ptr->next ? ar_ptr : 0; + (void)mutex_unlock(&ar_ptr->mutex); +- ar_ptr = arena_get2(prev, bytes); ++ ar_ptr = arena_get2(prev, bytes, true); + if(ar_ptr) { + victim = _int_malloc(ar_ptr, bytes); + (void)mutex_unlock(&ar_ptr->mutex); +@@ -3892,7 +3892,7 @@ public_mEMALIGn(size_t alignment, size_t + /* ... or sbrk() has failed and there is still a chance to mmap() */ + mstate prev = ar_ptr->next ? ar_ptr : 0; + (void)mutex_unlock(&ar_ptr->mutex); +- ar_ptr = arena_get2(prev, bytes); ++ ar_ptr = arena_get2(prev, bytes, true); + if(ar_ptr) { + p = _int_memalign(ar_ptr, alignment, bytes); + (void)mutex_unlock(&ar_ptr->mutex); +@@ -3943,7 +3943,7 @@ public_vALLOc(size_t bytes) + /* ... or sbrk() has failed and there is still a chance to mmap() */ + mstate prev = ar_ptr->next ? ar_ptr : 0; + (void)mutex_unlock(&ar_ptr->mutex); +- ar_ptr = arena_get2(prev, bytes); ++ ar_ptr = arena_get2(prev, bytes, true); + if(ar_ptr) { + p = _int_memalign(ar_ptr, pagesz, bytes); + (void)mutex_unlock(&ar_ptr->mutex); +@@ -3992,7 +3992,7 @@ public_pVALLOc(size_t bytes) + /* ... or sbrk() has failed and there is still a chance to mmap() */ + mstate prev = ar_ptr->next ? ar_ptr : 0; + (void)mutex_unlock(&ar_ptr->mutex); +- ar_ptr = arena_get2(prev, bytes + 2*pagesz + MINSIZE); ++ ar_ptr = arena_get2(prev, bytes + 2*pagesz + MINSIZE, true); + if(ar_ptr) { + p = _int_memalign(ar_ptr, pagesz, rounded_bytes); + (void)mutex_unlock(&ar_ptr->mutex); +@@ -4086,7 +4086,7 @@ public_cALLOc(size_t n, size_t elem_size + /* ... or sbrk() has failed and there is still a chance to mmap() */ + mstate prev = av->next ? av : 0; + (void)mutex_unlock(&av->mutex); +- av = arena_get2(prev, sz); ++ av = arena_get2(prev, sz, true); + if(av) { + mem = _int_malloc(av, sz); + (void)mutex_unlock(&av->mutex); diff --git a/src/patches/glibc/glibc-rh789238.patch b/src/patches/glibc/glibc-rh789238.patch new file mode 100644 index 000000000..f2c90e25a --- /dev/null +++ b/src/patches/glibc/glibc-rh789238.patch @@ -0,0 +1,119 @@ +diff -rup a/malloc/malloc.c b/malloc/malloc.c +--- a/malloc/malloc.c 2012-02-13 21:46:11.678847531 -0700 ++++ b/malloc/malloc.c 2012-02-13 22:43:14.788431976 -0700 +@@ -3669,8 +3669,9 @@ public_mALLOc(size_t bytes) + } else { + #if USE_ARENAS + /* ... or sbrk() has failed and there is still a chance to mmap() */ +- ar_ptr = arena_get2(ar_ptr->next ? ar_ptr : 0, bytes); +- (void)mutex_unlock(&main_arena.mutex); ++ mstate prev = ar_ptr->next ? ar_ptr : 0; ++ (void)mutex_unlock(&ar_ptr->mutex); ++ ar_ptr = arena_get2(prev, bytes); + if(ar_ptr) { + victim = _int_malloc(ar_ptr, bytes); + (void)mutex_unlock(&ar_ptr->mutex); +@@ -3929,10 +3930,10 @@ public_vALLOc(size_t bytes) + if(!ar_ptr) + return 0; + p = _int_valloc(ar_ptr, bytes); +- (void)mutex_unlock(&ar_ptr->mutex); + if(!p) { + /* Maybe the failure is due to running out of mmapped areas. */ + if(ar_ptr != &main_arena) { ++ (void)mutex_unlock(&ar_ptr->mutex); + ar_ptr = &main_arena; + (void)mutex_lock(&ar_ptr->mutex); + p = _int_memalign(ar_ptr, pagesz, bytes); +@@ -3940,14 +3941,17 @@ public_vALLOc(size_t bytes) + } else { + #if USE_ARENAS + /* ... or sbrk() has failed and there is still a chance to mmap() */ +- ar_ptr = arena_get2(ar_ptr->next ? ar_ptr : 0, bytes); ++ mstate prev = ar_ptr->next ? ar_ptr : 0; ++ (void)mutex_unlock(&ar_ptr->mutex); ++ ar_ptr = arena_get2(prev, bytes); + if(ar_ptr) { + p = _int_memalign(ar_ptr, pagesz, bytes); + (void)mutex_unlock(&ar_ptr->mutex); + } + #endif + } +- } ++ } else ++ (void)mutex_unlock(&ar_ptr->mutex); + assert(!p || chunk_is_mmapped(mem2chunk(p)) || + ar_ptr == arena_for_chunk(mem2chunk(p))); + +@@ -3975,10 +3979,10 @@ public_pVALLOc(size_t bytes) + + arena_get(ar_ptr, bytes + 2*pagesz + MINSIZE); + p = _int_pvalloc(ar_ptr, bytes); +- (void)mutex_unlock(&ar_ptr->mutex); + if(!p) { + /* Maybe the failure is due to running out of mmapped areas. */ + if(ar_ptr != &main_arena) { ++ (void)mutex_unlock(&ar_ptr->mutex); + ar_ptr = &main_arena; + (void)mutex_lock(&ar_ptr->mutex); + p = _int_memalign(ar_ptr, pagesz, rounded_bytes); +@@ -3986,15 +3990,17 @@ public_pVALLOc(size_t bytes) + } else { + #if USE_ARENAS + /* ... or sbrk() has failed and there is still a chance to mmap() */ +- ar_ptr = arena_get2(ar_ptr->next ? ar_ptr : 0, +- bytes + 2*pagesz + MINSIZE); ++ mstate prev = ar_ptr->next ? ar_ptr : 0; ++ (void)mutex_unlock(&ar_ptr->mutex); ++ ar_ptr = arena_get2(prev, bytes + 2*pagesz + MINSIZE); + if(ar_ptr) { + p = _int_memalign(ar_ptr, pagesz, rounded_bytes); + (void)mutex_unlock(&ar_ptr->mutex); + } + #endif + } +- } ++ } else ++ (void)mutex_unlock(&ar_ptr->mutex); + assert(!p || chunk_is_mmapped(mem2chunk(p)) || + ar_ptr == arena_for_chunk(mem2chunk(p))); + +@@ -4064,8 +4070,6 @@ public_cALLOc(size_t n, size_t elem_size + #endif + mem = _int_malloc(av, sz); + +- /* Only clearing follows, so we can unlock early. */ +- (void)mutex_unlock(&av->mutex); + + assert(!mem || chunk_is_mmapped(mem2chunk(mem)) || + av == arena_for_chunk(mem2chunk(mem))); +@@ -4073,15 +4077,16 @@ public_cALLOc(size_t n, size_t elem_size + if (mem == 0) { + /* Maybe the failure is due to running out of mmapped areas. */ + if(av != &main_arena) { ++ (void)mutex_unlock(&av->mutex); + (void)mutex_lock(&main_arena.mutex); + mem = _int_malloc(&main_arena, sz); + (void)mutex_unlock(&main_arena.mutex); + } else { + #if USE_ARENAS + /* ... or sbrk() has failed and there is still a chance to mmap() */ +- (void)mutex_lock(&main_arena.mutex); +- av = arena_get2(av->next ? av : 0, sz); +- (void)mutex_unlock(&main_arena.mutex); ++ mstate prev = av->next ? av : 0; ++ (void)mutex_unlock(&av->mutex); ++ av = arena_get2(prev, sz); + if(av) { + mem = _int_malloc(av, sz); + (void)mutex_unlock(&av->mutex); +@@ -4089,7 +4094,8 @@ public_cALLOc(size_t n, size_t elem_size + #endif + } + if (mem == 0) return 0; +- } ++ } else ++ (void)mutex_unlock(&av->mutex); + p = mem2chunk(mem); + + /* Two optional cases in which clearing not necessary */ diff --git a/src/patches/glibc/glibc-rh794817-2.patch b/src/patches/glibc/glibc-rh794817-2.patch new file mode 100644 index 000000000..15774b43e --- /dev/null +++ b/src/patches/glibc/glibc-rh794817-2.patch @@ -0,0 +1,85 @@ +diff -rup a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c +--- a/stdio-common/vfprintf.c 2012-03-05 09:43:14.705536167 -0700 ++++ b/stdio-common/vfprintf.c 2012-03-05 09:48:11.602890982 -0700 +@@ -822,7 +822,7 @@ vfprintf (FILE *s, const CHAR_T *format, + \ + if (function_done < 0) \ + { \ +- /* Error in print handler. */ \ ++ /* Error in print handler; up to handler to set errno. */ \ + done = -1; \ + goto all_done; \ + } \ +@@ -876,7 +876,7 @@ vfprintf (FILE *s, const CHAR_T *format, + \ + if (function_done < 0) \ + { \ +- /* Error in print handler. */ \ ++ /* Error in print handler; up to handler to set errno. */ \ + done = -1; \ + goto all_done; \ + } \ +@@ -1117,7 +1117,7 @@ vfprintf (FILE *s, const CHAR_T *format, + &mbstate); \ + if (len == (size_t) -1) \ + { \ +- /* Something went wron gduring the conversion. Bail out. */ \ ++ /* Something went wrong during the conversion. Bail out. */ \ + done = -1; \ + goto all_done; \ + } \ +@@ -1188,6 +1188,7 @@ vfprintf (FILE *s, const CHAR_T *format, + if (__mbsnrtowcs (ignore, &str2, strend - str2, \ + ignore_size, &ps) == (size_t) -1) \ + { \ ++ /* Conversion function has set errno. */ \ + done = -1; \ + goto all_done; \ + } \ +@@ -1599,6 +1600,7 @@ vfprintf (FILE *s, const CHAR_T *format, + if (spec == L_('\0')) + { + /* The format string ended before the specifier is complete. */ ++ __set_errno (EINVAL); + done = -1; + goto all_done; + } +@@ -1696,17 +1698,20 @@ do_positional: + + /* Determine the number of arguments the format string consumes. */ + nargs = MAX (nargs, max_ref_arg); ++ /* Calculate total size needed to represent a single argument across ++ all three argument-related arrays. */ + bytes_per_arg = sizeof (*args_value) + sizeof (*args_size) + + sizeof (*args_type); + + /* Check for potential integer overflow. */ +- if (nargs > SIZE_MAX / bytes_per_arg) ++ if (__builtin_expect (nargs > SIZE_MAX / bytes_per_arg, 0)) + { ++ __set_errno (ERANGE); + done = -1; + goto all_done; + } + +- /* Allocate memory for the argument descriptions. */ ++ /* Allocate memory for all three argument arrays. */ + if (__libc_use_alloca (nargs * bytes_per_arg)) + args_value = alloca (nargs * bytes_per_arg); + else +@@ -1937,6 +1942,7 @@ do_positional: + about # of chars. */ + if (function_done < 0) + { ++ /* Function has set errno. */ + done = -1; + goto all_done; + } +@@ -1971,6 +1977,7 @@ do_positional: + of chars. */ + if (function_done < 0) + { ++ /* Function has set errno. */ + done = -1; + goto all_done; + } diff --git a/src/patches/glibc/glibc-rh794817.patch b/src/patches/glibc/glibc-rh794817.patch new file mode 100644 index 000000000..e21caaa63 --- /dev/null +++ b/src/patches/glibc/glibc-rh794817.patch @@ -0,0 +1,239 @@ +From libc-alpha-return-25252-listarch-libc-alpha=sources dot redhat dot com at sourceware dot org Thu Feb 16 16:21:17 2012 +Return-Path: +Delivered-To: listarch-libc-alpha at sources dot redhat dot com +Received: (qmail 5187 invoked by alias); 16 Feb 2012 16:21:14 -0000 +Delivered-To: moderator for libc-alpha at sourceware dot org +Received: (qmail 2174 invoked by uid 22791); 16 Feb 2012 16:17:18 -0000 +X-SWARE-Spam-Status: No, hits=-2.0 required=5.0 + tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,TW_TV,TW_VB,TW_VF,T_RP_MATCHES_RCVD +X-Spam-Check-By: sourceware.org +Date: Thu, 16 Feb 2012 08:16:13 -0800 +From: Kees Cook +To: "Ryan S dot Arnold" +Cc: libc-alpha at sourceware dot org, Paul Eggert , + Roland McGrath , + Andreas Schwab +Subject: Re: [PATCH] vfprintf: validate nargs and maybe allocate from heap +Message-ID: <20120216161613.GZ20420@outflux.net> +References: <20120206062537.GM4979@outflux.net> + <20120207000509 dot GP4989 at outflux dot net> + <20120210192457 dot GF20420 at outflux dot net> + + <20120214223048 dot GM20420 at outflux dot net> + + <20120214224543 dot GN20420 at outflux dot net> +MIME-Version: 1.0 +Content-Type: text/plain; charset=us-ascii +Content-Disposition: inline +In-Reply-To: <20120214224543 dot GN20420 at outflux dot net> +X-MIMEDefang-Filter: outflux$Revision: 1.316 $ +X-HELO: www.outflux.net +Mailing-List: contact libc-alpha-help at sourceware dot org; run by ezmlm +Precedence: bulk +List-Id: +List-Subscribe: +List-Archive: +List-Post: +List-Help: , +Sender: libc-alpha-owner at sourceware dot org +Delivered-To: mailing list libc-alpha at sourceware dot org + +The nargs value can overflow when doing allocations, allowing arbitrary +memory writes via format strings, bypassing _FORTIFY_SOURCE: +http://www.phrack.org/issues.html?issue=67&id=9 + +This checks for nargs overflow and possibly allocates from heap instead of +stack, and adds a regression test for the situation. + +I have FSF assignment via Google. (Sent from @outflux since that's how I'm +subscribed here, but CL shows @chromium.org as part of my Google work.) + +This version disables the useless test on non-32-bit platforms. + +2012-02-16 Kees Cook + + [BZ #13656] + * stdio-common/vfprintf.c (vfprintf): Check for nargs overflow and + possibly allocate from heap instead of stack. + * stdio-common/bug-vfprintf-nargs.c: New file. + * stdio-common/Makefile (tests): Add nargs overflow test. + + +diff -rup a/stdio-common/Makefile b/stdio-common/Makefile +--- a/stdio-common/Makefile 2010-05-04 05:27:23.000000000 -0600 ++++ b/stdio-common/Makefile 2012-02-20 21:57:52.983040992 -0700 +@@ -60,7 +60,7 @@ tests := tstscanf test_rdwr test-popen t + tst-popen tst-unlockedio tst-fmemopen2 tst-put-error tst-fgets \ + tst-fwrite bug16 bug17 tst-swscanf tst-sprintf2 bug18 bug18a \ + bug19 bug19a tst-popen2 scanf13 scanf14 scanf15 bug20 bug21 bug22 \ +- scanf16 scanf17 tst-setvbuf1 ++ scanf16 scanf17 tst-setvbuf1 bug-vfprintf-nargs + + test-srcs = tst-unbputc tst-printf + +diff --git a/stdio-common/bug-vfprintf-nargs.c b/stdio-common/bug-vfprintf-nargs.c +new file mode 100644 +index 0000000..13c66c0 +--- /dev/null ++++ b/stdio-common/bug-vfprintf-nargs.c +@@ -0,0 +1,78 @@ ++/* Test for vfprintf nargs allocation overflow (BZ #13656). ++ Copyright (C) 2012 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Kees Cook , 2012. ++ ++ 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 ++ ++static int ++format_failed (const char *fmt, const char *expected) ++{ ++ char output[80]; ++ ++ printf ("%s : ", fmt); ++ ++ memset (output, 0, sizeof output); ++ /* Having sprintf itself detect a failure is good. */ ++ if (sprintf (output, fmt, 1, 2, 3, "test") > 0 ++ && strcmp (output, expected) != 0) ++ { ++ printf ("FAIL (output '%s' != expected '%s')\n", output, expected); ++ return 1; ++ } ++ puts ("ok"); ++ return 0; ++} ++ ++static int ++do_test (void) ++{ ++ int rc = 0; ++ char buf[64]; ++ ++ /* Regular positionals work. */ ++ if (format_failed ("%1$d", "1") != 0) ++ rc = 1; ++ ++ /* Regular width positionals work. */ ++ if (format_failed ("%1$*2$d", " 1") != 0) ++ rc = 1; ++ ++ /* Positional arguments are constructed via read_int, so nargs can only ++ overflow on 32-bit systems. On 64-bit systems, it will attempt to ++ allocate a giant amount of memory and possibly crash, which is the ++ expected situation. Since the 64-bit behavior is arch-specific, only ++ test this on 32-bit systems. */ ++ if (sizeof (long int) == 4) ++ { ++ sprintf (buf, "%%1$d %%%" PRIdPTR "$d", UINT32_MAX / sizeof (int)); ++ if (format_failed (buf, "1 %$d") != 0) ++ rc = 1; ++ } ++ ++ return rc; ++} ++ ++#define TEST_FUNCTION do_test () ++#include "../test-skeleton.c" +diff --git a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c +index 863cd5d..022e72b 100644 +--- a/stdio-common/vfprintf.c ++++ b/stdio-common/vfprintf.c +@@ -235,6 +235,9 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap) + 0 if unknown. */ + int readonly_format = 0; + ++ /* For the argument descriptions, which may be allocated on the heap. */ ++ void *args_malloced = NULL; ++ + /* This table maps a character into a number representing a + class. In each step there is a destination label for each + class. */ +@@ -1647,9 +1650,10 @@ do_positional: + determine the size of the array needed to store the argument + attributes. */ + size_t nargs = 0; +- int *args_type; +- union printf_arg *args_value = NULL; ++ size_t bytes_per_arg; ++ union printf_arg *args_value; + int *args_size; ++ int *args_type; + + /* Positional parameters refer to arguments directly. This could + also determine the maximum number of arguments. Track the +@@ -1698,13 +1702,33 @@ do_positional: + + /* Determine the number of arguments the format string consumes. */ + nargs = MAX (nargs, max_ref_arg); ++ bytes_per_arg = sizeof (*args_value) + sizeof (*args_size) ++ + sizeof (*args_type); ++ ++ /* Check for potential integer overflow. */ ++ if (nargs > SIZE_MAX / bytes_per_arg) ++ { ++ done = -1; ++ goto all_done; ++ } + + /* Allocate memory for the argument descriptions. */ +- args_type = alloca (nargs * sizeof (int)); ++ if (__libc_use_alloca (nargs * bytes_per_arg)) ++ args_value = alloca (nargs * bytes_per_arg); ++ else ++ { ++ args_value = args_malloced = malloc (nargs * bytes_per_arg); ++ if (args_value == NULL) ++ { ++ done = -1; ++ goto all_done; ++ } ++ } ++ ++ args_size = &args_value[nargs].pa_int; ++ args_type = &args_size[nargs]; + memset (args_type, s->_flags2 & _IO_FLAGS2_FORTIFY ? '\xff' : '\0', +- nargs * sizeof (int)); +- args_value = alloca (nargs * sizeof (union printf_arg)); +- args_size = alloca (nargs * sizeof (int)); ++ nargs * sizeof (*args_type)); + + /* XXX Could do sanity check here: If any element in ARGS_TYPE is + still zero after this loop, format is invalid. For now we +@@ -1973,8 +1997,8 @@ do_positional: + } + + all_done: +- if (__builtin_expect (workstart != NULL, 0)) +- free (workstart); ++ free (args_malloced); ++ free (workstart); + /* Unlock the stream. */ + _IO_funlockfile (s); + _IO_cleanup_region_end (0); +-- +1.7.5.4 + +-- +Kees Cook @outflux.net + diff --git a/src/patches/glibc/glibc-rh795498.patch b/src/patches/glibc/glibc-rh795498.patch new file mode 100644 index 000000000..729c5a4d7 --- /dev/null +++ b/src/patches/glibc/glibc-rh795498.patch @@ -0,0 +1,13 @@ +diff --git a/resolv/nss_dns/dns-host.c b/resolv/nss_dns/dns-host.c +index 01369f6..44ad04d 100644 +--- a/resolv/nss_dns/dns-host.c ++++ b/resolv/nss_dns/dns-host.c +@@ -1219,7 +1219,7 @@ gaih_getanswer (const querybuf *answer1, int anslen1, const querybuf *answer2, + &first); + if ((status == NSS_STATUS_SUCCESS || status == NSS_STATUS_NOTFOUND + || (status == NSS_STATUS_TRYAGAIN +- && (errno != ERANGE || *h_errnop != NO_RECOVERY))) ++ && (*errnop != ERANGE || *h_errnop == NO_RECOVERY))) + && answer2 != NULL && anslen2 > 0) + { + enum nss_status status2 = gaih_getanswer_slice(answer2, anslen2, qname, diff --git a/src/patches/glibc/glibc-rh797094-1.patch b/src/patches/glibc/glibc-rh797094-1.patch new file mode 100644 index 000000000..e98b9c03e --- /dev/null +++ b/src/patches/glibc/glibc-rh797094-1.patch @@ -0,0 +1,657 @@ +diff -rup a/include/alloca.h b/include/alloca.h +--- a/include/alloca.h 2012-02-29 13:11:19.439693476 -0700 ++++ b/include/alloca.h 2012-02-29 13:11:49.832530623 -0700 +@@ -49,15 +49,24 @@ libc_hidden_proto (__libc_alloca_cutoff) + + #if defined stackinfo_get_sp && defined stackinfo_sub_sp + # define alloca_account(size, avar) \ +- ({ void *old__ = stackinfo_get_sp (); \ +- void *m__ = __alloca (size); \ +- avar += stackinfo_sub_sp (old__); \ ++ ({ void *old__ = stackinfo_get_sp (); \ ++ void *m__ = __alloca (size); \ ++ avar += stackinfo_sub_sp (old__); \ ++ m__; }) ++# define extend_alloca_account(buf, len, newlen, avar) \ ++ ({ void *old__ = stackinfo_get_sp (); \ ++ void *m__ = extend_alloca (buf, len, newlen); \ ++ avar += stackinfo_sub_sp (old__); \ + m__; }) + #else + # define alloca_account(size, avar) \ +- ({ size_t s__ = (size); \ +- avar += s__; \ ++ ({ size_t s__ = (size); \ ++ avar += s__; \ + __alloca (s__); }) ++# define extend_alloca_account(buf, len, newlen, avar) \ ++ ({ size_t s__ = (newlen); \ ++ avar += s__; \ ++ extend_alloca (buf, len, s__); }) + #endif + + #endif +diff -rup a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c +--- a/sysdeps/posix/getaddrinfo.c 2012-02-29 13:11:19.588692676 -0700 ++++ b/sysdeps/posix/getaddrinfo.c 2012-02-29 13:12:42.972245862 -0700 +@@ -278,6 +278,7 @@ gaih_inet (const char *name, const struc + bool got_ipv6 = false; + const char *canon = NULL; + const char *orig_name = name; ++ size_t alloca_used = 0; + + if (req->ai_protocol || req->ai_socktype) + { +@@ -310,7 +311,7 @@ gaih_inet (const char *name, const struc + if (tp->name[0]) + { + st = (struct gaih_servtuple *) +- __alloca (sizeof (struct gaih_servtuple)); ++ alloca_account (sizeof (struct gaih_servtuple), alloca_used); + + if ((rc = gaih_inet_serv (service->name, tp, req, st))) + return rc; +@@ -334,7 +335,8 @@ gaih_inet (const char *name, const struc + continue; + + newp = (struct gaih_servtuple *) +- __alloca (sizeof (struct gaih_servtuple)); ++ alloca_account (sizeof (struct gaih_servtuple), ++ alloca_used); + + if ((rc = gaih_inet_serv (service->name, tp, req, newp))) + { +@@ -362,7 +364,7 @@ gaih_inet (const char *name, const struc + + if (req->ai_socktype || req->ai_protocol) + { +- st = __alloca (sizeof (struct gaih_servtuple)); ++ st = alloca_account (sizeof (struct gaih_servtuple), alloca_used); + st->next = NULL; + st->socktype = tp->socktype; + st->protocol = ((tp->protoflag & GAI_PROTO_PROTOANY) +@@ -379,7 +381,8 @@ gaih_inet (const char *name, const struc + { + struct gaih_servtuple *newp; + +- newp = __alloca (sizeof (struct gaih_servtuple)); ++ newp = alloca_account (sizeof (struct gaih_servtuple), ++ alloca_used); + newp->next = NULL; + newp->socktype = tp->socktype; + newp->protocol = tp->protocol; +@@ -391,10 +394,17 @@ gaih_inet (const char *name, const struc + } + } + ++ bool malloc_name = false; ++ bool malloc_addrmem = false; ++ struct gaih_addrtuple *addrmem = NULL; ++ bool malloc_canonbuf = false; ++ char *canonbuf = NULL; ++ bool malloc_tmpbuf = false; ++ char *tmpbuf = NULL; ++ int result = 0; + if (name != NULL) + { +- at = __alloca (sizeof (struct gaih_addrtuple)); +- ++ at = alloca_account (sizeof (struct gaih_addrtuple), alloca_used); + at->family = AF_UNSPEC; + at->scopeid = 0; + at->next = NULL; +@@ -412,6 +422,7 @@ gaih_inet (const char *name, const struc + rc = __idna_to_ascii_lz (name, &p, idn_flags); + if (rc != IDNA_SUCCESS) + { ++ /* No need to jump to free_and_return here. */ + if (rc == IDNA_MALLOC_ERROR) + return -EAI_MEMORY; + if (rc == IDNA_DLOPEN_ERROR) +@@ -421,10 +432,7 @@ gaih_inet (const char *name, const struc + /* In case the output string is the same as the input string + no new string has been allocated. */ + if (p != name) +- { +- name = strdupa (p); +- free (p); +- } ++ malloc_name = true; + } + #endif + +@@ -441,23 +449,59 @@ gaih_inet (const char *name, const struc + at->family = AF_INET6; + } + else +- return -EAI_ADDRFAMILY; ++ { ++ result = -EAI_ADDRFAMILY; ++ goto free_and_return; ++ } + + if (req->ai_flags & AI_CANONNAME) + canon = name; + } + else if (at->family == AF_UNSPEC) + { +- char *namebuf = (char *) name; + char *scope_delim = strchr (name, SCOPE_DELIMITER); ++ int e; + +- if (__builtin_expect (scope_delim != NULL, 0)) +- { +- namebuf = alloca (scope_delim - name + 1); +- *((char *) __mempcpy (namebuf, name, scope_delim - name)) = '\0'; +- } ++ { ++ bool malloc_namebuf = false; ++ char *namebuf = (char *) name; ++ ++ if (__builtin_expect (scope_delim != NULL, 0)) ++ { ++ if (malloc_name) ++ *scope_delim = '\0'; ++ else ++ { ++ if (__libc_use_alloca (alloca_used ++ + scope_delim - name + 1)) ++ { ++ namebuf = alloca_account (scope_delim - name + 1, ++ alloca_used); ++ *((char *) __mempcpy (namebuf, name, ++ scope_delim - name)) = '\0'; ++ } ++ else ++ { ++ namebuf = strndup (name, scope_delim - name); ++ if (namebuf == NULL) ++ { ++ assert (!malloc_name); ++ return -EAI_MEMORY; ++ } ++ malloc_namebuf = true; ++ } ++ } ++ } + +- if (inet_pton (AF_INET6, namebuf, at->addr) > 0) ++ e = inet_pton (AF_INET6, namebuf, at->addr); ++ ++ if (malloc_namebuf) ++ free (namebuf); ++ else if (scope_delim != NULL && malloc_name) ++ /* Undo what we did above. */ ++ *scope_delim = SCOPE_DELIMITER; ++ } ++ if (e > 0) + { + if (req->ai_family == AF_UNSPEC || req->ai_family == AF_INET6) + at->family = AF_INET6; +@@ -468,7 +512,10 @@ gaih_inet (const char *name, const struc + at->family = AF_INET; + } + else +- return -EAI_ADDRFAMILY; ++ { ++ result = -EAI_ADDRFAMILY; ++ goto free_and_return; ++ } + + if (scope_delim != NULL) + { +@@ -490,7 +537,10 @@ gaih_inet (const char *name, const struc + at->scopeid = (uint32_t) strtoul (scope_delim + 1, &end, + 10); + if (*end != '\0') +- return GAIH_OKIFUNSPEC | -EAI_NONAME; ++ { ++ result = GAIH_OKIFUNSPEC | -EAI_NONAME; ++ goto free_and_return; ++ } + } + } + +@@ -520,59 +570,80 @@ gaih_inet (const char *name, const struc + { + int family = req->ai_family; + size_t tmpbuflen = 512; +- char *tmpbuf = alloca (tmpbuflen); ++ assert (tmpbuf == NULL); ++ tmpbuf = alloca_account (tmpbuflen, alloca_used); + int rc; + struct hostent th; + struct hostent *h; + int herrno; + +- simple_again: + while (1) + { +- rc = __gethostbyname2_r (name, family, &th, tmpbuf, ++ rc = __gethostbyname2_r (name, AF_INET, &th, tmpbuf, + tmpbuflen, &h, &herrno); + if (rc != ERANGE || herrno != NETDB_INTERNAL) + break; +- tmpbuf = extend_alloca (tmpbuf, tmpbuflen, 2 * tmpbuflen); ++ ++ if (!malloc_tmpbuf ++ && __libc_use_alloca (alloca_used + 2 * tmpbuflen)) ++ tmpbuf = extend_alloca_account (tmpbuf, tmpbuflen, ++ 2 * tmpbuflen, ++ alloca_used); ++ else ++ { ++ char *newp = realloc (malloc_tmpbuf ? tmpbuf : NULL, ++ 2 * tmpbuflen); ++ if (newp == NULL) ++ { ++ result = -EAI_MEMORY; ++ goto free_and_return; ++ } ++ tmpbuf = newp; ++ malloc_tmpbuf = true; ++ tmpbuflen = 2 * tmpbuflen; ++ } + } + + if (rc == 0) + { +- if (h == NULL) ++ if (h != NULL) + { +- if (req->ai_family == AF_INET6 +- && (req->ai_flags & AI_V4MAPPED) +- && family == AF_INET6) ++ int i; ++ /* We found data, count the number of addresses. */ ++ for (i = 0; h->h_addr_list[i]; ++i) ++ ; ++ if (i > 0 && *pat != NULL) ++ --i; ++ ++ if (__libc_use_alloca (alloca_used ++ + i * sizeof (struct gaih_addrtuple))) ++ addrmem = alloca_account (i * sizeof (struct gaih_addrtuple), ++ alloca_used); ++ else + { +- /* Try again, this time looking for IPv4 +- addresses. */ +- family = AF_INET; +- goto simple_again; ++ addrmem = malloc (i ++ * sizeof (struct gaih_addrtuple)); ++ if (addrmem == NULL) ++ { ++ result = -EAI_MEMORY; ++ goto free_and_return; + } ++ malloc_addrmem = true; + } +- else +- { +- /* We found data, now convert it into the list. */ +- for (int i = 0; h->h_addr_list[i]; ++i) ++ ++ /* Now convert it into the list. */ ++ struct gaih_addrtuple *addrfree = addrmem; ++ for (i = 0; h->h_addr_list[i]; ++i) + { + if (*pat == NULL) + { +- *pat = __alloca (sizeof (struct gaih_addrtuple)); ++ *pat = addrfree++; + (*pat)->scopeid = 0; + } + (*pat)->next = NULL; +- (*pat)->family = req->ai_family; +- if (family == req->ai_family) ++ (*pat)->family = AF_INET; + memcpy ((*pat)->addr, h->h_addr_list[i], + h->h_length); +- else +- { +- uint32_t *addr = (uint32_t *) (*pat)->addr; +- addr[3] = *(uint32_t *) h->h_addr_list[i]; +- addr[2] = htonl (0xffff); +- addr[1] = 0; +- addr[0] = 0; +- } + pat = &((*pat)->next); + } + } +@@ -582,15 +653,16 @@ gaih_inet (const char *name, const struc + if (herrno == NETDB_INTERNAL) + { + __set_h_errno (herrno); +- return -EAI_SYSTEM; +- } +- if (herrno == TRY_AGAIN) +- { +- return -EAI_AGAIN; ++ result = -EAI_SYSTEM; + } ++ else if (herrno == TRY_AGAIN) ++ result = -EAI_AGAIN; ++ else + /* We made requests but they turned out no data. + The name is known, though. */ +- return GAIH_OKIFUNSPEC | -EAI_NODATA; ++ result = GAIH_OKIFUNSPEC | -EAI_NODATA; ++ ++ goto free_and_return; + } + + goto process_list; +@@ -613,21 +685,56 @@ gaih_inet (const char *name, const struc + bool added_canon = (req->ai_flags & AI_CANONNAME) == 0; + char *addrs = air->addrs; + ++ if (__libc_use_alloca (alloca_used ++ + air->naddrs * sizeof (struct gaih_addrtuple))) ++ addrmem = alloca_account (air->naddrs ++ * sizeof (struct gaih_addrtuple), ++ alloca_used); ++ else ++ { ++ addrmem = malloc (air->naddrs ++ * sizeof (struct gaih_addrtuple)); ++ if (addrmem == NULL) ++ { ++ result = -EAI_MEMORY; ++ goto free_and_return; ++ } ++ malloc_addrmem = true; ++ } ++ ++ struct gaih_addrtuple *addrfree = addrmem; + for (int i = 0; i < air->naddrs; ++i) + { + socklen_t size = (air->family[i] == AF_INET + ? INADDRSZ : IN6ADDRSZ); + if (*pat == NULL) + { +- *pat = __alloca (sizeof (struct gaih_addrtuple)); ++ *pat = addrfree++; + (*pat)->scopeid = 0; + } + uint32_t *pataddr = (*pat)->addr; + (*pat)->next = NULL; + if (added_canon || air->canon == NULL) + (*pat)->name = NULL; +- else +- canon = (*pat)->name = strdupa (air->canon); ++ else if (canonbuf == NULL) ++ { ++ size_t canonlen = strlen (air->canon) + 1; ++ if ((req->ai_flags & AI_CANONIDN) != 0 ++ && __libc_use_alloca (alloca_used + canonlen)) ++ canonbuf = alloca_account (canonlen, alloca_used); ++ else ++ { ++ canonbuf = malloc (canonlen); ++ if (canonbuf == NULL) ++ { ++ result = -EAI_MEMORY; ++ goto free_and_return; ++ } ++ malloc_canonbuf = true; ++ } ++ canon = (*pat)->name = memcpy (canonbuf, air->canon, ++ canonlen); ++ } + + if (air->family[i] == AF_INET + && req->ai_family == AF_INET6 +@@ -657,20 +764,26 @@ gaih_inet (const char *name, const struc + free (air); + + if (at->family == AF_UNSPEC) +- return GAIH_OKIFUNSPEC | -EAI_NONAME; ++ { ++ result = GAIH_OKIFUNSPEC | -EAI_NONAME; ++ goto free_and_return; ++ } + + goto process_list; + } + else if (err == 0) + /* The database contains a negative entry. */ +- return 0; ++ goto free_and_return; + else if (__nss_not_use_nscd_hosts == 0) + { + if (herrno == NETDB_INTERNAL && errno == ENOMEM) +- return -EAI_MEMORY; +- if (herrno == TRY_AGAIN) +- return -EAI_AGAIN; +- return -EAI_SYSTEM; ++ result = -EAI_MEMORY; ++ else if (herrno == TRY_AGAIN) ++ result = -EAI_AGAIN; ++ else ++ result = -EAI_SYSTEM; ++ ++ goto free_and_return; + } + } + #endif +@@ -699,7 +812,19 @@ gaih_inet (const char *name, const struc + _res.options &= ~RES_USE_INET6; + + size_t tmpbuflen = 1024; +- char *tmpbuf = alloca (tmpbuflen); ++ malloc_tmpbuf = !__libc_use_alloca (alloca_used + tmpbuflen); ++ assert (tmpbuf == NULL); ++ if (!malloc_tmpbuf) ++ tmpbuf = alloca_account (tmpbuflen, alloca_used); ++ else ++ { ++ tmpbuf = malloc (tmpbuflen); ++ if (tmpbuf == NULL) ++ { ++ result = -EAI_MEMORY; ++ goto free_and_return; ++ } ++ } + + while (!no_more) + { +@@ -728,8 +853,25 @@ gaih_inet (const char *name, const struc + no_data = herrno == NO_DATA; + break; + } +- tmpbuf = extend_alloca (tmpbuf, +- tmpbuflen, 2 * tmpbuflen); ++ ++ if (!malloc_tmpbuf ++ && __libc_use_alloca (alloca_used + 2 * tmpbuflen)) ++ tmpbuf = extend_alloca_account (tmpbuf, tmpbuflen, ++ 2 * tmpbuflen, ++ alloca_used); ++ else ++ { ++ char *newp = realloc (malloc_tmpbuf ? tmpbuf : NULL, ++ 2 * tmpbuflen); ++ if (newp == NULL) ++ { ++ result = -EAI_MEMORY; ++ goto free_and_return; ++ } ++ tmpbuf = newp; ++ malloc_tmpbuf = true; ++ tmpbuflen = 2 * tmpbuflen; ++ } + } + + if (status == NSS_STATUS_SUCCESS) +@@ -832,18 +974,40 @@ gaih_inet (const char *name, const struc + if (cfct != NULL) + { + const size_t max_fqdn_len = 256; +- char *buf = alloca (max_fqdn_len); ++ if ((req->ai_flags & AI_CANONIDN) != 0 ++ && __libc_use_alloca (alloca_used ++ + max_fqdn_len)) ++ canonbuf = alloca_account (max_fqdn_len, ++ alloca_used); ++ else ++ { ++ canonbuf = malloc (max_fqdn_len); ++ if (canonbuf == NULL) ++ { ++ result = -EAI_MEMORY; ++ goto free_and_return; ++ } ++ malloc_canonbuf = true; ++ } + char *s; + + if (DL_CALL_FCT (cfct, (at->name ?: name, +- buf, max_fqdn_len, ++ canonbuf, ++ max_fqdn_len, + &s, &rc, &herrno)) + == NSS_STATUS_SUCCESS) + canon = s; + else +- /* Set to name now to avoid using +- gethostbyaddr. */ +- canon = name; ++ { ++ /* Set to name now to avoid using ++ gethostbyaddr. */ ++ if (malloc_canonbuf) ++ { ++ free (canonbuf); ++ malloc_canonbuf = false; ++ } ++ canon = name; ++ } + } + } + status = NSS_STATUS_SUCCESS; +@@ -878,22 +1042,27 @@ gaih_inet (const char *name, const struc + { + /* If both requests timed out report this. */ + if (no_data == EAI_AGAIN && no_inet6_data == EAI_AGAIN) +- return -EAI_AGAIN; ++ result = -EAI_AGAIN; ++ else ++ /* We made requests but they turned out no data. The name ++ is known, though. */ ++ result = GAIH_OKIFUNSPEC | -EAI_NODATA; + +- /* We made requests but they turned out no data. The name +- is known, though. */ +- return GAIH_OKIFUNSPEC | -EAI_NODATA; ++ goto free_and_return; + } + } + + process_list: + if (at->family == AF_UNSPEC) +- return GAIH_OKIFUNSPEC | -EAI_NONAME; ++ { ++ result = GAIH_OKIFUNSPEC | -EAI_NONAME; ++ goto free_and_return; ++ } + } + else + { + struct gaih_addrtuple *atr; +- atr = at = __alloca (sizeof (struct gaih_addrtuple)); ++ atr = at = alloca_account (sizeof (struct gaih_addrtuple), alloca_used); + memset (at, '\0', sizeof (struct gaih_addrtuple)); + + if (req->ai_family == AF_UNSPEC) +@@ -932,6 +1101,9 @@ gaih_inet (const char *name, const struc + /* Only the first entry gets the canonical name. */ + if (at2 == at && (req->ai_flags & AI_CANONNAME) != 0) + { ++ char *tmpbuf2 = NULL; ++ bool malloc_tmpbuf2 = false; ++ + if (canon == NULL) + { + /* If the canonical name cannot be determined, use +@@ -952,11 +1124,16 @@ gaih_inet (const char *name, const struc + int rc = __idna_to_unicode_lzlz (canon, &out, idn_flags); + if (rc != IDNA_SUCCESS) + { ++ if (malloc_tmpbuf2) ++ free (tmpbuf2); ++ + if (rc == IDNA_MALLOC_ERROR) +- return -EAI_MEMORY; +- if (rc == IDNA_DLOPEN_ERROR) +- return -EAI_SYSTEM; +- return -EAI_IDN_ENCODE; ++ result = -EAI_MEMORY; ++ else if (rc == IDNA_DLOPEN_ERROR) ++ result = -EAI_SYSTEM; ++ else ++ result = -EAI_IDN_ENCODE; ++ goto free_and_return; + } + /* In case the output string is the same as the input + string no new string has been allocated and we +@@ -970,10 +1147,25 @@ gaih_inet (const char *name, const struc + #ifdef HAVE_LIBIDN + make_copy: + #endif +- canon = strdup (canon); +- if (canon == NULL) +- return -EAI_MEMORY; ++ if (malloc_canonbuf) ++ /* We already allocated the string using malloc. */ ++ malloc_canonbuf = false; ++ else ++ { ++ canon = strdup (canon); ++ if (canon == NULL) ++ { ++ if (malloc_tmpbuf2) ++ free (tmpbuf2); ++ ++ result = -EAI_MEMORY; ++ goto free_and_return; ++ } ++ } + } ++ ++ if (malloc_tmpbuf2) ++ free (tmpbuf2); + } + + family = at2->family; +@@ -999,7 +1191,8 @@ gaih_inet (const char *name, const struc + if (ai == NULL) + { + free ((char *) canon); +- return -EAI_MEMORY; ++ result = -EAI_MEMORY; ++ goto free_and_return; + } + + ai->ai_flags = req->ai_flags; +@@ -1052,7 +1245,18 @@ gaih_inet (const char *name, const struc + at2 = at2->next; + } + } +- return 0; ++ ++ free_and_return: ++ if (malloc_name) ++ free ((char *) name); ++ if (malloc_addrmem) ++ free (addrmem); ++ if (malloc_canonbuf) ++ free (canonbuf); ++ if (malloc_tmpbuf) ++ free (tmpbuf); ++ ++ return result; + } + + diff --git a/src/patches/glibc/glibc-rh797094-2.patch b/src/patches/glibc/glibc-rh797094-2.patch new file mode 100644 index 000000000..5aa90840d --- /dev/null +++ b/src/patches/glibc/glibc-rh797094-2.patch @@ -0,0 +1,862 @@ +From: Ulrich Drepper +Date: Mon, 23 May 2011 03:04:16 +0000 (-0400) +Subject: Add a few more alloca size checks +X-Git-Tag: glibc-2.14~41 +X-Git-Url: http://sourceware.org/git/?p=glibc.git;a=commitdiff_plain;h=f2962a71959fd254a7a223437ca4b63b9e81130c + +Add a few more alloca size checks +--- + + 2011-05-22 Ulrich Drepper + + [BZ #12671] + * nis/nss_nis/nis-alias.c (_nss_nis_getaliasbyname_r): Use malloc in + some situations. + * nscd/nscd_getserv_r.c (nscd_getserv_r): Likewise. + * posix/glob.c (glob_in_dir): Take additional parameter alloca_used. + add in in __libc_use_alloca calls. Adjust callers. + (glob): Use malloc in some situations. +diff --git a/nis/nss_nis/nis-alias.c b/nis/nss_nis/nis-alias.c +index 9286e36..cfe4097 100644 +--- a/nis/nss_nis/nis-alias.c ++++ b/nis/nss_nis/nis-alias.c +@@ -1,4 +1,4 @@ +-/* Copyright (C) 1996-2002, 2003, 2006 Free Software Foundation, Inc. ++/* Copyright (C) 1996-2002, 2003, 2006, 2011 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Thorsten Kukuk , 1996. + +@@ -142,10 +142,10 @@ internal_nis_getaliasent_r (struct aliasent *alias, char *buffer, + int yperr; + + if (new_start) +- yperr = yp_first (domain, "mail.aliases", &outkey, &keylen, &result, ++ yperr = yp_first (domain, "mail.aliases", &outkey, &keylen, &result, + &len); + else +- yperr = yp_next (domain, "mail.aliases", oldkey, oldkeylen, &outkey, ++ yperr = yp_next (domain, "mail.aliases", oldkey, oldkeylen, &outkey, + &keylen, &result, &len); + + if (__builtin_expect (yperr != YPERR_SUCCESS, 0)) +@@ -153,20 +153,20 @@ internal_nis_getaliasent_r (struct aliasent *alias, char *buffer, + enum nss_status retval = yperr2nss (yperr); + + if (retval == NSS_STATUS_TRYAGAIN) +- *errnop = errno; +- return retval; +- } ++ *errnop = errno; ++ return retval; ++ } + + if (__builtin_expect ((size_t) (len + 1) > buflen, 0)) +- { ++ { + free (result); +- *errnop = ERANGE; +- return NSS_STATUS_TRYAGAIN; +- } ++ *errnop = ERANGE; ++ return NSS_STATUS_TRYAGAIN; ++ } + char *p = strncpy (buffer, result, len); + buffer[len] = '\0'; + while (isspace (*p)) +- ++p; ++ ++p; + free (result); + + parse_res = _nss_nis_parse_aliasent (outkey, p, alias, buffer, +@@ -213,13 +213,25 @@ _nss_nis_getaliasbyname_r (const char *name, struct aliasent *alias, + return NSS_STATUS_UNAVAIL; + } + +- size_t namlen = strlen (name); +- char name2[namlen + 1]; +- + char *domain; + if (__builtin_expect (yp_get_default_domain (&domain), 0)) + return NSS_STATUS_UNAVAIL; + ++ size_t namlen = strlen (name); ++ char *name2; ++ int use_alloca = __libc_use_alloca (namlen + 1); ++ if (use_alloca) ++ name2 = __alloca (namlen + 1); ++ else ++ { ++ name2 = malloc (namlen + 1); ++ if (name2 == NULL) ++ { ++ *errnop = ENOMEM; ++ return NSS_STATUS_TRYAGAIN; ++ } ++ } ++ + /* Convert name to lowercase. */ + size_t i; + for (i = 0; i < namlen; ++i) +@@ -230,6 +242,9 @@ _nss_nis_getaliasbyname_r (const char *name, struct aliasent *alias, + int len; + int yperr = yp_match (domain, "mail.aliases", name2, namlen, &result, &len); + ++ if (!use_alloca) ++ free (name2); ++ + if (__builtin_expect (yperr != YPERR_SUCCESS, 0)) + { + enum nss_status retval = yperr2nss (yperr); +diff --git a/nscd/nscd_getserv_r.c b/nscd/nscd_getserv_r.c +index dce4165..de96a57 100644 +--- a/nscd/nscd_getserv_r.c ++++ b/nscd/nscd_getserv_r.c +@@ -1,4 +1,4 @@ +-/* Copyright (C) 2007, 2009 Free Software Foundation, Inc. ++/* Copyright (C) 2007, 2009, 2011 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 2007. + +@@ -17,6 +17,7 @@ + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + ++#include + #include + #include + #include +@@ -80,6 +81,7 @@ nscd_getserv_r (const char *crit, size_t critlen, const char *proto, + { + int gc_cycle; + int nretries = 0; ++ size_t alloca_used = 0; + + /* If the mapping is available, try to search there instead of + communicating with the nscd. */ +@@ -88,13 +90,23 @@ nscd_getserv_r (const char *crit, size_t critlen, const char *proto, + &gc_cycle); + size_t protolen = proto == NULL ? 0 : strlen (proto); + size_t keylen = critlen + 1 + protolen + 1; +- char *key = alloca (keylen); ++ int alloca_key = __libc_use_alloca (keylen); ++ char *key; ++ if (alloca_key) ++ key = alloca_account (keylen, alloca_used); ++ else ++ { ++ key = malloc (keylen); ++ if (key == NULL) ++ return -1; ++ } + memcpy (__mempcpy (__mempcpy (key, crit, critlen), + "/", 1), proto ?: "", protolen + 1); + + retry:; + const char *s_name = NULL; + const char *s_proto = NULL; ++ int alloca_aliases_len = 0; + const uint32_t *aliases_len = NULL; + const char *aliases_list = NULL; + int retval = -1; +@@ -136,8 +148,22 @@ nscd_getserv_r (const char *crit, size_t critlen, const char *proto, + if (((uintptr_t) aliases_len & (__alignof__ (*aliases_len) - 1)) + != 0) + { +- uint32_t *tmp = alloca (serv_resp.s_aliases_cnt +- * sizeof (uint32_t)); ++ uint32_t *tmp; ++ alloca_aliases_len ++ = __libc_use_alloca (alloca_used ++ + (serv_resp.s_aliases_cnt ++ * sizeof (uint32_t))); ++ if (alloca_aliases_len) ++ tmp = __alloca (serv_resp.s_aliases_cnt * sizeof (uint32_t)); ++ else ++ { ++ tmp = malloc (serv_resp.s_aliases_cnt * sizeof (uint32_t)); ++ if (tmp == NULL) ++ { ++ retval = ENOMEM; ++ goto out; ++ } ++ } + aliases_len = memcpy (tmp, aliases_len, + serv_resp.s_aliases_cnt + * sizeof (uint32_t)); +@@ -217,8 +243,24 @@ nscd_getserv_r (const char *crit, size_t critlen, const char *proto, + + if (serv_resp.s_aliases_cnt > 0) + { +- aliases_len = alloca (serv_resp.s_aliases_cnt +- * sizeof (uint32_t)); ++ assert (alloca_aliases_len == 0); ++ alloca_aliases_len ++ = __libc_use_alloca (alloca_used ++ + (serv_resp.s_aliases_cnt ++ * sizeof (uint32_t))); ++ if (alloca_aliases_len) ++ aliases_len = alloca (serv_resp.s_aliases_cnt ++ * sizeof (uint32_t)); ++ else ++ { ++ aliases_len = malloc (serv_resp.s_aliases_cnt ++ * sizeof (uint32_t)); ++ if (aliases_len == NULL) ++ { ++ retval = ENOMEM; ++ goto out_close; ++ } ++ } + vec[n].iov_base = (void *) aliases_len; + vec[n].iov_len = serv_resp.s_aliases_cnt * sizeof (uint32_t); + +@@ -329,5 +371,10 @@ nscd_getserv_r (const char *crit, size_t critlen, const char *proto, + goto retry; + } + ++ if (!alloca_aliases_len) ++ free ((void *) aliases_len); ++ if (!alloca_key) ++ free (key); ++ + return retval; + } +diff --git a/posix/glob.c b/posix/glob.c +index 6df083a..79b6e50 100644 +--- a/posix/glob.c ++++ b/posix/glob.c +@@ -1,4 +1,4 @@ +-/* Copyright (C) 1991-2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010 ++/* Copyright (C) 1991-2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2011 + Free Software Foundation, Inc. + This file is part of the GNU C Library. + +@@ -199,7 +199,7 @@ static const char *next_brace_sub (const char *begin, int flags) __THROW; + + static int glob_in_dir (const char *pattern, const char *directory, + int flags, int (*errfunc) (const char *, int), +- glob_t *pglob); ++ glob_t *pglob, size_t alloca_used); + extern int __glob_pattern_type (const char *pattern, int quote) + attribute_hidden; + +@@ -253,13 +253,18 @@ glob (pattern, flags, errfunc, pglob) + glob_t *pglob; + { + const char *filename; +- const char *dirname; ++ char *dirname = NULL; + size_t dirlen; + int status; + size_t oldcount; + int meta; + int dirname_modified; ++ int malloc_dirname = 0; + glob_t dirs; ++ int retval = 0; ++#ifdef _LIBC ++ size_t alloca_used = 0; ++#endif + + if (pattern == NULL || pglob == NULL || (flags & ~__GLOB_FLAGS) != 0) + { +@@ -308,20 +313,26 @@ glob (pattern, flags, errfunc, pglob) + const char *next; + const char *rest; + size_t rest_len; +-#ifdef __GNUC__ +- char onealt[strlen (pattern) - 1]; +-#else +- char *onealt = (char *) malloc (strlen (pattern) - 1); +- if (onealt == NULL) ++ char *onealt; ++ size_t pattern_len = strlen (pattern) - 1; ++#ifdef _LIBC ++ int alloca_onealt = __libc_use_alloca (alloca_used + pattern_len); ++ if (alloca_onealt) ++ onealt = alloca_account (pattern_len, alloca_used); ++ else ++#endif + { +- if (!(flags & GLOB_APPEND)) ++ onealt = (char *) malloc (pattern_len); ++ if (onealt == NULL) + { +- pglob->gl_pathc = 0; +- pglob->gl_pathv = NULL; ++ if (!(flags & GLOB_APPEND)) ++ { ++ pglob->gl_pathc = 0; ++ pglob->gl_pathv = NULL; ++ } ++ return GLOB_NOSPACE; + } +- return GLOB_NOSPACE; + } +-#endif + + /* We know the prefix for all sub-patterns. */ + alt_start = mempcpy (onealt, pattern, begin - pattern); +@@ -332,9 +343,11 @@ glob (pattern, flags, errfunc, pglob) + if (next == NULL) + { + /* It is an illegal expression. */ +-#ifndef __GNUC__ +- free (onealt); ++ illegal_brace: ++#ifdef _LIBC ++ if (__builtin_expect (!alloca_onealt, 0)) + #endif ++ free (onealt); + return glob (pattern, flags & ~GLOB_BRACE, errfunc, pglob); + } + +@@ -344,13 +357,8 @@ glob (pattern, flags, errfunc, pglob) + { + rest = next_brace_sub (rest + 1, flags); + if (rest == NULL) +- { +- /* It is an illegal expression. */ +-#ifndef __GNUC__ +- free (onealt); +-#endif +- return glob (pattern, flags & ~GLOB_BRACE, errfunc, pglob); +- } ++ /* It is an illegal expression. */ ++ goto illegal_brace; + } + /* Please note that we now can be sure the brace expression + is well-formed. */ +@@ -386,9 +394,10 @@ glob (pattern, flags, errfunc, pglob) + /* If we got an error, return it. */ + if (result && result != GLOB_NOMATCH) + { +-#ifndef __GNUC__ +- free (onealt); ++#ifdef _LIBC ++ if (__builtin_expect (!alloca_onealt, 0)) + #endif ++ free (onealt); + if (!(flags & GLOB_APPEND)) + { + globfree (pglob); +@@ -406,9 +415,10 @@ glob (pattern, flags, errfunc, pglob) + assert (next != NULL); + } + +-#ifndef __GNUC__ +- free (onealt); ++#ifdef _LIBC ++ if (__builtin_expect (!alloca_onealt, 0)) + #endif ++ free (onealt); + + if (pglob->gl_pathc != firstc) + /* We found some entries. */ +@@ -455,7 +465,7 @@ glob (pattern, flags, errfunc, pglob) + case is nothing but a notation for a directory. */ + if ((flags & (GLOB_TILDE|GLOB_TILDE_CHECK)) && pattern[0] == '~') + { +- dirname = pattern; ++ dirname = (char *) pattern; + dirlen = strlen (pattern); + + /* Set FILENAME to NULL as a special flag. This is ugly but +@@ -473,9 +483,9 @@ glob (pattern, flags, errfunc, pglob) + + filename = pattern; + #ifdef _AMIGA +- dirname = ""; ++ dirname = (char *) ""; + #else +- dirname = "."; ++ dirname = (char *) "."; + #endif + dirlen = 0; + } +@@ -485,7 +495,7 @@ glob (pattern, flags, errfunc, pglob) + && (flags & GLOB_NOESCAPE) == 0)) + { + /* "/pattern" or "\\/pattern". */ +- dirname = "/"; ++ dirname = (char *) "/"; + dirlen = 1; + ++filename; + } +@@ -511,7 +521,17 @@ glob (pattern, flags, errfunc, pglob) + from "d:/", since "d:" and "d:/" are not the same.*/ + } + #endif +- newp = (char *) __alloca (dirlen + 1); ++#ifdef _LIBC ++ if (__libc_use_alloca (alloca_used + dirlen + 1)) ++ newp = alloca_account (dirlen + 1, alloca_used); ++ else ++#endif ++ { ++ newp = malloc (dirlen + 1); ++ if (newp == NULL) ++ return GLOB_NOSPACE; ++ malloc_dirname = 1; ++ } + *((char *) mempcpy (newp, pattern, dirlen)) = '\0'; + dirname = newp; + ++filename; +@@ -551,7 +571,8 @@ glob (pattern, flags, errfunc, pglob) + oldcount = pglob->gl_pathc + pglob->gl_offs; + goto no_matches; + } +- return val; ++ retval = val; ++ goto out; + } + } + +@@ -563,7 +584,8 @@ glob (pattern, flags, errfunc, pglob) + && (dirname[2] == '\0' || dirname[2] == '/'))) + { + /* Look up home directory. */ +- const char *home_dir = getenv ("HOME"); ++ char *home_dir = getenv ("HOME"); ++ int malloc_home_dir = 0; + # ifdef _AMIGA + if (home_dir == NULL || home_dir[0] == '\0') + home_dir = "SYS:"; +@@ -582,7 +604,7 @@ glob (pattern, flags, errfunc, pglob) + /* `sysconf' does not support _SC_LOGIN_NAME_MAX. Try + a moderate value. */ + buflen = 20; +- name = (char *) __alloca (buflen); ++ name = alloca_account (buflen, alloca_used); + + success = getlogin_r (name, buflen) == 0; + if (success) +@@ -592,6 +614,7 @@ glob (pattern, flags, errfunc, pglob) + long int pwbuflen = GETPW_R_SIZE_MAX (); + char *pwtmpbuf; + struct passwd pwbuf; ++ int malloc_pwtmpbuf = 0; + int save = errno; + + # ifndef _LIBC +@@ -600,7 +623,18 @@ glob (pattern, flags, errfunc, pglob) + Try a moderate value. */ + pwbuflen = 1024; + # endif +- pwtmpbuf = (char *) __alloca (pwbuflen); ++ if (__libc_use_alloca (alloca_used + pwbuflen)) ++ pwtmpbuf = alloca_account (pwbuflen, alloca_used); ++ else ++ { ++ pwtmpbuf = malloc (pwbuflen); ++ if (pwtmpbuf == NULL) ++ { ++ retval = GLOB_NOSPACE; ++ goto out; ++ } ++ malloc_pwtmpbuf = 1; ++ } + + while (getpwnam_r (name, &pwbuf, pwtmpbuf, pwbuflen, &p) + != 0) +@@ -610,46 +644,115 @@ glob (pattern, flags, errfunc, pglob) + p = NULL; + break; + } +-# ifdef _LIBC +- pwtmpbuf = extend_alloca (pwtmpbuf, pwbuflen, ++ ++ if (!malloc_pwtmpbuf ++ && __libc_use_alloca (alloca_used ++ + 2 * pwbuflen)) ++ pwtmpbuf = extend_alloca_account (pwtmpbuf, pwbuflen, ++ 2 * pwbuflen, ++ alloca_used); ++ else ++ { ++ char *newp = realloc (malloc_pwtmpbuf ++ ? pwtmpbuf : NULL, + 2 * pwbuflen); +-# else +- pwbuflen *= 2; +- pwtmpbuf = (char *) __alloca (pwbuflen); +-# endif ++ if (newp == NULL) ++ { ++ if (__builtin_expect (malloc_pwtmpbuf, 0)) ++ free (pwtmpbuf); ++ retval = GLOB_NOSPACE; ++ goto out; ++ } ++ pwtmpbuf = newp; ++ pwbuflen = 2 * pwbuflen; ++ malloc_pwtmpbuf = 1; ++ } + __set_errno (save); + } + # else + p = getpwnam (name); + # endif + if (p != NULL) +- home_dir = p->pw_dir; ++ { ++ if (!malloc_pwtmpbuf) ++ home_dir = p->pw_dir; ++ else ++ { ++ size_t home_dir_len = strlen (p->pw_dir) + 1; ++ if (__libc_use_alloca (alloca_used + home_dir_len)) ++ home_dir = alloca_account (home_dir_len, ++ alloca_used); ++ else ++ { ++ home_dir = malloc (home_dir_len); ++ if (home_dir == NULL) ++ { ++ free (pwtmpbuf); ++ retval = GLOB_NOSPACE; ++ goto out; ++ } ++ malloc_home_dir = 1; ++ } ++ memcpy (home_dir, p->pw_dir, home_dir_len); ++ ++ free (pwtmpbuf); ++ } ++ } + } + } + if (home_dir == NULL || home_dir[0] == '\0') + { + if (flags & GLOB_TILDE_CHECK) +- return GLOB_NOMATCH; ++ { ++ if (__builtin_expect (malloc_home_dir, 0)) ++ free (home_dir); ++ retval = GLOB_NOMATCH; ++ goto out; ++ } + else +- home_dir = "~"; /* No luck. */ ++ home_dir = (char *) "~"; /* No luck. */ + } + # endif /* WINDOWS32 */ + # endif + /* Now construct the full directory. */ + if (dirname[1] == '\0') + { ++ if (__builtin_expect (malloc_dirname, 0)) ++ free (dirname); ++ + dirname = home_dir; + dirlen = strlen (dirname); ++ malloc_dirname = malloc_home_dir; + } + else + { + char *newp; + size_t home_len = strlen (home_dir); +- newp = (char *) __alloca (home_len + dirlen); ++ int use_alloca = __libc_use_alloca (alloca_used ++ + home_len + dirlen); ++ if (use_alloca) ++ newp = alloca_account (home_len + dirlen, alloca_used); ++ else ++ { ++ newp = malloc (home_len + dirlen); ++ if (newp == NULL) ++ { ++ if (__builtin_expect (malloc_home_dir, 0)) ++ free (home_dir); ++ retval = GLOB_NOSPACE; ++ goto out; ++ } ++ } ++ + mempcpy (mempcpy (newp, home_dir, home_len), + &dirname[1], dirlen); ++ ++ if (__builtin_expect (malloc_dirname, 0)) ++ free (dirname); ++ + dirname = newp; + dirlen += home_len - 1; ++ malloc_dirname = !use_alloca; + } + dirname_modified = 1; + } +@@ -657,7 +760,8 @@ glob (pattern, flags, errfunc, pglob) + else + { + char *end_name = strchr (dirname, '/'); +- const char *user_name; ++ char *user_name; ++ int malloc_user_name = 0; + const char *home_dir; + char *unescape = NULL; + +@@ -677,7 +781,18 @@ glob (pattern, flags, errfunc, pglob) + else + { + char *newp; +- newp = (char *) __alloca (end_name - dirname); ++ if (__libc_use_alloca (alloca_used + (end_name - dirname))) ++ newp = alloca_account (end_name - dirname, alloca_used); ++ else ++ { ++ newp = malloc (end_name - dirname); ++ if (newp == NULL) ++ { ++ retval = GLOB_NOSPACE; ++ goto out; ++ } ++ malloc_user_name = 1; ++ } + if (unescape != NULL) + { + char *p = mempcpy (newp, dirname + 1, +@@ -714,6 +829,7 @@ glob (pattern, flags, errfunc, pglob) + # if defined HAVE_GETPWNAM_R || defined _LIBC + long int buflen = GETPW_R_SIZE_MAX (); + char *pwtmpbuf; ++ int malloc_pwtmpbuf = 0; + struct passwd pwbuf; + int save = errno; + +@@ -723,7 +839,21 @@ glob (pattern, flags, errfunc, pglob) + moderate value. */ + buflen = 1024; + # endif +- pwtmpbuf = (char *) __alloca (buflen); ++ if (__libc_use_alloca (alloca_used + buflen)) ++ pwtmpbuf = alloca_account (buflen, alloca_used); ++ else ++ { ++ pwtmpbuf = malloc (buflen); ++ if (pwtmpbuf == NULL) ++ { ++ nomem_getpw: ++ if (__builtin_expect (malloc_user_name, 0)) ++ free (user_name); ++ retval = GLOB_NOSPACE; ++ goto out; ++ } ++ malloc_pwtmpbuf = 1; ++ } + + while (getpwnam_r (user_name, &pwbuf, pwtmpbuf, buflen, &p) != 0) + { +@@ -732,40 +862,77 @@ glob (pattern, flags, errfunc, pglob) + p = NULL; + break; + } +-# ifdef _LIBC +- pwtmpbuf = extend_alloca (pwtmpbuf, buflen, 2 * buflen); +-# else +- buflen *= 2; +- pwtmpbuf = __alloca (buflen); +-# endif ++ if (!malloc_pwtmpbuf ++ && __libc_use_alloca (alloca_used + 2 * buflen)) ++ pwtmpbuf = extend_alloca_account (pwtmpbuf, buflen, ++ 2 * buflen, alloca_used); ++ else ++ { ++ char *newp = realloc (malloc_pwtmpbuf ? pwtmpbuf : NULL, ++ 2 * buflen); ++ if (newp == NULL) ++ { ++ if (__builtin_expect (malloc_pwtmpbuf, 0)) ++ free (pwtmpbuf); ++ goto nomem_getpw; ++ } ++ pwtmpbuf = newp; ++ malloc_pwtmpbuf = 1; ++ } + __set_errno (save); + } + # else + p = getpwnam (user_name); + # endif ++ ++ if (__builtin_expect (malloc_user_name, 0)) ++ free (user_name); ++ ++ /* If we found a home directory use this. */ + if (p != NULL) +- home_dir = p->pw_dir; ++ { ++ size_t home_len = strlen (p->pw_dir); ++ size_t rest_len = end_name == NULL ? 0 : strlen (end_name); ++ ++ if (__builtin_expect (malloc_dirname, 0)) ++ free (dirname); ++ malloc_dirname = 0; ++ ++ if (__libc_use_alloca (alloca_used + home_len + rest_len + 1)) ++ dirname = alloca_account (home_len + rest_len + 1, ++ alloca_used); ++ else ++ { ++ dirname = malloc (home_len + rest_len + 1); ++ if (dirname == NULL) ++ { ++ if (__builtin_expect (malloc_pwtmpbuf, 0)) ++ free (pwtmpbuf); ++ retval = GLOB_NOSPACE; ++ goto out; ++ } ++ malloc_dirname = 1; ++ } ++ *((char *) mempcpy (mempcpy (dirname, p->pw_dir, home_len), ++ end_name, rest_len)) = '\0'; ++ ++ dirlen = home_len + rest_len; ++ dirname_modified = 1; ++ ++ if (__builtin_expect (malloc_pwtmpbuf, 0)) ++ free (pwtmpbuf); ++ } + else +- home_dir = NULL; ++ { ++ if (__builtin_expect (malloc_pwtmpbuf, 0)) ++ free (pwtmpbuf); ++ ++ if (flags & GLOB_TILDE_CHECK) ++ /* We have to regard it as an error if we cannot find the ++ home directory. */ ++ return GLOB_NOMATCH; ++ } + } +- /* If we found a home directory use this. */ +- if (home_dir != NULL) +- { +- char *newp; +- size_t home_len = strlen (home_dir); +- size_t rest_len = end_name == NULL ? 0 : strlen (end_name); +- newp = (char *) __alloca (home_len + rest_len + 1); +- *((char *) mempcpy (mempcpy (newp, home_dir, home_len), +- end_name, rest_len)) = '\0'; +- dirname = newp; +- dirlen = home_len + rest_len; +- dirname_modified = 1; +- } +- else +- if (flags & GLOB_TILDE_CHECK) +- /* We have to regard it as an error if we cannot find the +- home directory. */ +- return GLOB_NOMATCH; + } + # endif /* Not Amiga && not WINDOWS32. */ + } +@@ -899,7 +1066,7 @@ glob (pattern, flags, errfunc, pglob) + status = glob_in_dir (filename, dirs.gl_pathv[i], + ((flags | GLOB_APPEND) + & ~(GLOB_NOCHECK | GLOB_NOMAGIC)), +- errfunc, pglob); ++ errfunc, pglob, alloca_used); + if (status == GLOB_NOMATCH) + /* No matches in this directory. Try the next. */ + continue; +@@ -1000,7 +1167,8 @@ glob (pattern, flags, errfunc, pglob) + } + if (dirname_modified) + flags &= ~(GLOB_NOCHECK | GLOB_NOMAGIC); +- status = glob_in_dir (filename, dirname, flags, errfunc, pglob); ++ status = glob_in_dir (filename, dirname, flags, errfunc, pglob, ++ alloca_used); + if (status != 0) + { + if (status == GLOB_NOMATCH && flags != orig_flags +@@ -1063,7 +1231,11 @@ glob (pattern, flags, errfunc, pglob) + sizeof (char *), collated_compare); + } + +- return 0; ++ out: ++ if (__builtin_expect (malloc_dirname, 0)) ++ free (dirname); ++ ++ return retval; + } + #if defined _LIBC && !defined glob + libc_hidden_def (glob) +@@ -1273,7 +1445,7 @@ link_exists2_p (const char *dir, size_t dirlen, const char *fname, + static int + glob_in_dir (const char *pattern, const char *directory, int flags, + int (*errfunc) (const char *, int), +- glob_t *pglob) ++ glob_t *pglob, size_t alloca_used) + { + size_t dirlen = strlen (directory); + void *stream = NULL; +@@ -1288,11 +1460,12 @@ glob_in_dir (const char *pattern, const char *directory, int flags, + struct globnames *names = &init_names; + struct globnames *names_alloca = &init_names; + size_t nfound = 0; +- size_t allocasize = sizeof (init_names); + size_t cur = 0; + int meta; + int save; + ++ alloca_used += sizeof (init_names); ++ + init_names.next = NULL; + init_names.count = INITIAL_COUNT; + +@@ -1308,20 +1481,36 @@ glob_in_dir (const char *pattern, const char *directory, int flags, + { + /* Since we use the normal file functions we can also use stat() + to verify the file is there. */ +- struct stat st; +- struct_stat64 st64; ++ union ++ { ++ struct stat st; ++ struct_stat64 st64; ++ } ust; + size_t patlen = strlen (pattern); +- char *fullname = (char *) __alloca (dirlen + 1 + patlen + 1); ++ int alloca_fullname = __libc_use_alloca (alloca_used ++ + dirlen + 1 + patlen + 1); ++ char *fullname; ++ if (alloca_fullname) ++ fullname = alloca_account (dirlen + 1 + patlen + 1, alloca_used); ++ else ++ { ++ fullname = malloc (dirlen + 1 + patlen + 1); ++ if (fullname == NULL) ++ return GLOB_NOSPACE; ++ } + + mempcpy (mempcpy (mempcpy (fullname, directory, dirlen), + "/", 1), + pattern, patlen + 1); + if ((__builtin_expect (flags & GLOB_ALTDIRFUNC, 0) +- ? (*pglob->gl_stat) (fullname, &st) +- : __stat64 (fullname, &st64)) == 0) ++ ? (*pglob->gl_stat) (fullname, &ust.st) ++ : __stat64 (fullname, &ust.st64)) == 0) + /* We found this file to be existing. Now tell the rest + of the function to copy this name into the result. */ + flags |= GLOB_NOCHECK; ++ ++ if (__builtin_expect (!alloca_fullname, 0)) ++ free (fullname); + } + else + { +@@ -1409,9 +1598,9 @@ glob_in_dir (const char *pattern, const char *directory, int flags, + size_t size = (sizeof (struct globnames) + + ((count - INITIAL_COUNT) + * sizeof (char *))); +- allocasize += size; +- if (__libc_use_alloca (allocasize)) +- newnames = names_alloca = __alloca (size); ++ if (__libc_use_alloca (alloca_used + size)) ++ newnames = names_alloca ++ = alloca_account (size, alloca_used); + else if ((newnames = malloc (size)) + == NULL) + goto memory_error; diff --git a/src/patches/glibc/glibc-rh804630.patch b/src/patches/glibc/glibc-rh804630.patch new file mode 100644 index 000000000..75dbe94bd --- /dev/null +++ b/src/patches/glibc/glibc-rh804630.patch @@ -0,0 +1,23 @@ +diff -rup c/resolv/res_send.c d/resolv/res_send.c +--- c/resolv/res_send.c 2012-01-01 05:16:32.000000000 -0700 ++++ d/resolv/res_send.c 2012-03-30 12:39:30.862467628 -0600 +@@ -409,6 +409,7 @@ __libc_res_nsend(res_state statp, const + */ + if (EXT(statp).nsinit == 0) { + unsigned char map[MAXNS]; ++ unsigned int ext_total_nscount; + + memset (map, MAXNS, sizeof (map)); + for (n = 0; n < MAXNS; n++) { +@@ -422,8 +423,9 @@ __libc_res_nsend(res_state statp, const + } + } + n = statp->nscount; +- if (statp->nscount > EXT(statp).nscount) +- for (n = EXT(statp).nscount, ns = 0; ++ ext_total_nscount = EXT(statp).nscount + EXT(statp).nscount6; ++ if (statp->nscount > ext_total_nscount) ++ for (n = ext_total_nscount, ns = 0; + n < statp->nscount; n++) { + while (ns < MAXNS + && EXT(statp).nsmap[ns] != MAXNS) diff --git a/src/patches/glibc/glibc-rh804689.patch b/src/patches/glibc/glibc-rh804689.patch new file mode 100644 index 000000000..a96a33f70 --- /dev/null +++ b/src/patches/glibc/glibc-rh804689.patch @@ -0,0 +1,23 @@ +diff -rup a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c +--- a/sysdeps/posix/getaddrinfo.c 2012-03-20 21:31:14.177358937 -0600 ++++ b/sysdeps/posix/getaddrinfo.c 2012-03-21 09:13:17.198290683 -0600 +@@ -560,15 +563,11 @@ gaih_inet (const char *name, const struc + int no_more; + int old_res_options; + +- /* If we do not have to look for IPv4 and IPv6 together, use +- the simple, old functions. */ +- if ((req->ai_family == AF_INET +- || (req->ai_family == AF_INET6 +- && ((req->ai_flags & AI_V4MAPPED) == 0 +- || (req->ai_flags & AI_ALL) == 0))) +- && (req->ai_flags & AI_CANONNAME) == 0) ++ /* If we do not have to look for IPv6 addresses, use ++ the simple, old functions, which do not support ++ IPv6 scope ids. */ ++ if (req->ai_family == AF_INET) + { +- int family = req->ai_family; + size_t tmpbuflen = 512; + assert (tmpbuf == NULL); + tmpbuf = alloca_account (tmpbuflen, alloca_used); diff --git a/src/patches/glibc/glibc-rh808337.patch b/src/patches/glibc/glibc-rh808337.patch new file mode 100644 index 000000000..bc20cbc26 --- /dev/null +++ b/src/patches/glibc/glibc-rh808337.patch @@ -0,0 +1,21 @@ +commit 6a5ee1029b3966c5ae9adaaa881e255b2880f511 +Author: Ulrich Drepper +Date: Sun Mar 6 00:01:50 2011 -0500 + + Fix loading first object along a path when tracing. + +diff --git a/elf/dl-load.c b/elf/dl-load.c +index 1ad16a0..f866066 100644 +--- a/elf/dl-load.c ++++ b/elf/dl-load.c +@@ -2111,7 +2111,9 @@ _dl_map_object (struct link_map *loader, const char *name, + { + #ifdef SHARED + // XXX Correct to unconditionally default to namespace 0? +- l = loader ?: GL(dl_ns)[LM_ID_BASE]._ns_loaded; ++ l = (loader ++ ?: GL(dl_ns)[LM_ID_BASE]._ns_loaded ++ ?: &GL(dl_rtld_map)); + #else + l = loader; + #endif diff --git a/src/patches/glibc/glibc-rh808545.patch b/src/patches/glibc/glibc-rh808545.patch new file mode 100644 index 000000000..9a2cae332 --- /dev/null +++ b/src/patches/glibc/glibc-rh808545.patch @@ -0,0 +1,44 @@ +diff -rup a/resolv/nss_dns/dns-host.c b/resolv/nss_dns/dns-host.c +--- a/resolv/nss_dns/dns-host.c 2012-04-18 11:17:31.527539744 -0600 ++++ b/resolv/nss_dns/dns-host.c 2012-04-18 11:21:45.441394159 -0600 +@@ -745,6 +745,10 @@ getanswer_r (const querybuf *answer, int + + if ((qtype == T_A || qtype == T_AAAA) && type == T_CNAME) + { ++ /* A CNAME could also have a TTL entry. */ ++ if (ttlp != NULL && ttl < *ttlp) ++ *ttlp = ttl; ++ + if (ap >= &host_data->aliases[MAX_NR_ALIASES - 1]) + continue; + n = dn_expand (answer->buf, end_of_message, cp, tbuf, sizeof tbuf); +@@ -906,7 +910,7 @@ getanswer_r (const querybuf *answer, int + { + register int nn; + +- if (ttlp != NULL) ++ if (ttlp != NULL && ttl < *ttlp) + *ttlp = ttl; + if (canonp != NULL) + *canonp = bp; +@@ -1082,6 +1086,11 @@ gaih_getanswer_slice (const querybuf *an + if (type == T_CNAME) + { + char tbuf[MAXDNAME]; ++ ++ /* A CNAME could also have a TTL entry. */ ++ if (ttlp != NULL && ttl < *ttlp) ++ *ttlp = ttl; ++ + n = dn_expand (answer->buf, end_of_message, cp, tbuf, sizeof tbuf); + if (__builtin_expect (n < 0 || res_hnok (tbuf) == 0, 0)) + { +@@ -1162,7 +1171,7 @@ gaih_getanswer_slice (const querybuf *an + + if (*firstp) + { +- if (ttlp != NULL) ++ if (ttlp != NULL && ttl < *ttlp) + *ttlp = ttl; + + (*pat)->name = canon ?: h_name; diff --git a/src/patches/glibc/glibc-rh809602.patch b/src/patches/glibc/glibc-rh809602.patch new file mode 100644 index 000000000..81aa63aba --- /dev/null +++ b/src/patches/glibc/glibc-rh809602.patch @@ -0,0 +1,47 @@ +diff -rup a/nscd/nscd_getserv_r.c b/nscd/nscd_getserv_r.c +--- a/nscd/nscd_getserv_r.c 2012-04-04 16:37:27.873951850 -0600 ++++ b/nscd/nscd_getserv_r.c 2012-04-04 16:37:49.904837348 -0600 +@@ -124,6 +123,7 @@ nscd_getserv_r (const char *crit, size_t + s_name = (char *) (&found->data[0].servdata + 1); + serv_resp = found->data[0].servdata; + s_proto = s_name + serv_resp.s_name_len; ++ alloca_aliases_len = 1; + aliases_len = (uint32_t *) (s_proto + serv_resp.s_proto_len); + aliases_list = ((char *) aliases_len + + serv_resp.s_aliases_cnt * sizeof (uint32_t)); +@@ -154,7 +154,9 @@ nscd_getserv_r (const char *crit, size_t + + (serv_resp.s_aliases_cnt + * sizeof (uint32_t))); + if (alloca_aliases_len) +- tmp = __alloca (serv_resp.s_aliases_cnt * sizeof (uint32_t)); ++ tmp = alloca_account (serv_resp.s_aliases_cnt ++ * sizeof (uint32_t), ++ alloca_used); + else + { + tmp = malloc (serv_resp.s_aliases_cnt * sizeof (uint32_t)); +@@ -249,8 +251,9 @@ nscd_getserv_r (const char *crit, size_t + + (serv_resp.s_aliases_cnt + * sizeof (uint32_t))); + if (alloca_aliases_len) +- aliases_len = alloca (serv_resp.s_aliases_cnt +- * sizeof (uint32_t)); ++ aliases_len = alloca_account (serv_resp.s_aliases_cnt ++ * sizeof (uint32_t), ++ alloca_used); + else + { + aliases_len = malloc (serv_resp.s_aliases_cnt +@@ -368,7 +371,11 @@ nscd_getserv_r (const char *crit, size_t + } + + if (retval != -1) +- goto retry; ++ { ++ if (!alloca_aliases_len) ++ free ((void *) aliases_len); ++ goto retry; ++ } + } + + if (!alloca_aliases_len) diff --git a/src/patches/glibc/glibc-rh833716.patch b/src/patches/glibc/glibc-rh833716.patch new file mode 100644 index 000000000..e44573cf0 --- /dev/null +++ b/src/patches/glibc/glibc-rh833716.patch @@ -0,0 +1,45265 @@ +diff -Nrup a/stdio-common/Makefile b/stdio-common/Makefile +--- a/stdio-common/Makefile 2012-05-23 14:54:54.670443298 -0600 ++++ b/stdio-common/Makefile 2012-05-22 13:47:51.000000000 -0600 +@@ -60,7 +60,7 @@ tests := tstscanf test_rdwr test-popen t + tst-popen tst-unlockedio tst-fmemopen2 tst-put-error tst-fgets \ + tst-fwrite bug16 bug17 tst-swscanf tst-sprintf2 bug18 bug18a \ + bug19 bug19a tst-popen2 scanf13 scanf14 scanf15 bug20 bug21 bug22 \ +- scanf16 scanf17 tst-setvbuf1 bug-vfprintf-nargs ++ scanf16 scanf17 tst-setvbuf1 bug-vfprintf-nargs bug23 bug23-2 bug23-3 + + test-srcs = tst-unbputc tst-printf + +diff -Nrup a/stdio-common/bug23-2.c b/stdio-common/bug23-2.c +--- a/stdio-common/bug23-2.c 1969-12-31 17:00:00.000000000 -0700 ++++ b/stdio-common/bug23-2.c 2012-05-24 07:12:55.331644716 -0600 +@@ -0,0 +1,70 @@ ++#include ++#include ++#include ++ ++static const char expected[] = "\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55%%%%%%%%%%%%%%%%%%%%%%%%%%\n"; ++ ++static int ++do_test (void) ++{ ++ char *buf = malloc (strlen (expected) + 1); ++ snprintf (buf, strlen (expected) + 1, ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", ++ "a", "b", "c", "d", 5); ++ return strcmp (buf, expected) != 0; ++} ++ ++#define TEST_FUNCTION do_test () ++#include "../test-skeleton.c" +diff -Nrup a/stdio-common/bug23-3.c b/stdio-common/bug23-3.c +--- a/stdio-common/bug23-3.c 1969-12-31 17:00:00.000000000 -0700 ++++ b/stdio-common/bug23-3.c 2012-05-24 07:13:26.948480695 -0600 +@@ -0,0 +1,45076 @@ ++#include ++#include ++#include ++ ++static const char expected[] = "\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55\ ++\n\ ++a\n\ ++abbcd55%%%%%%%%%%%%%%%%%%%%%%%%%%\n"; ++ ++ ++ ++int ++do_test (void) ++{ ++ char *buf = malloc (strlen (expected) + 1); ++ snprintf (buf, strlen (expected) + 1, ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", ++ "a", "b", "c", "d", 5); ++ return (strcmp (buf, expected) != 0); ++} ++#define TEST_FUNCTION do_test () ++#include "../test-skeleton.c" ++ +diff -Nrup a/stdio-common/bug23.c b/stdio-common/bug23.c +--- a/stdio-common/bug23.c 1969-12-31 17:00:00.000000000 -0700 ++++ b/stdio-common/bug23.c 2012-05-24 07:12:27.636788393 -0600 +@@ -0,0 +1,22 @@ ++#include ++#include ++#include ++ ++static const char expected[] = "\ ++\n\ ++a\n\ ++abbcd55%%%%%%%%%%%%%%%%%%%%%%%%%%\n"; ++ ++static int ++do_test (void) ++{ ++ char *buf = malloc (strlen (expected) + 1); ++ snprintf (buf, strlen (expected) + 1, ++ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" ++ "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", ++ "a", "b", "c", "d", 5); ++ return strcmp (buf, expected) != 0; ++} ++ ++#define TEST_FUNCTION do_test () ++#include "../test-skeleton.c" +diff -Nrup a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c +--- a/stdio-common/vfprintf.c 2012-05-23 14:54:54.689443199 -0600 ++++ b/stdio-common/vfprintf.c 2012-05-23 23:16:55.376155638 -0600 +@@ -238,6 +238,12 @@ vfprintf (FILE *s, const CHAR_T *format, + /* For the argument descriptions, which may be allocated on the heap. */ + void *args_malloced = NULL; + ++ /* For positional argument handling. */ ++ struct printf_spec *specs; ++ ++ /* Track if we malloced the SPECS array and thus must free it. */ ++ bool specs_malloced = false; ++ + /* This table maps a character into a number representing a + class. In each step there is a destination label for each + class. */ +@@ -1638,10 +1644,10 @@ do_positional: + /* Array with information about the needed arguments. This has to + be dynamically extensible. */ + size_t nspecs = 0; +- size_t nspecs_max = 32; /* A more or less arbitrary start value. */ +- struct printf_spec *specs +- = alloca (nspecs_max * sizeof (struct printf_spec)); ++ /* A more or less arbitrary start value. */ ++ size_t nspecs_size = 32 * sizeof (struct printf_spec); + ++ specs = alloca (nspecs_size); + /* The number of arguments the format string requests. This will + determine the size of the array needed to store the argument + attributes. */ +@@ -1678,14 +1684,30 @@ do_positional: + + for (f = lead_str_end; *f != L_('\0'); f = specs[nspecs++].next_fmt) + { +- if (nspecs >= nspecs_max) ++ if (nspecs * sizeof (*specs) >= nspecs_size) + { + /* Extend the array of format specifiers. */ + struct printf_spec *old = specs; +- specs = extend_alloca (specs, nspecs_max, 2 * nspecs_max); ++ if (__libc_use_alloca (2 * nspecs_size)) ++ specs = extend_alloca (specs, nspecs_size, 2 * nspecs_size); ++ else ++ { ++ nspecs_size *= 2; ++ specs = malloc (nspecs_size); ++ } ++ + + /* Copy the old array's elements to the new space. */ +- memmove (specs, old, nspecs * sizeof (struct printf_spec)); ++ memmove (specs, old, nspecs * sizeof (*specs)); ++ ++ /* If we had previously malloc'd space for SPECS, then ++ release it after the copy is complete. */ ++ if (specs_malloced) ++ free (old); ++ ++ /* Now set SPECS_MALLOCED if needed. */ ++ if (!__libc_use_alloca (nspecs_size)) ++ specs_malloced = true; + } + + /* Parse the format specifier. */ +@@ -1998,6 +2020,8 @@ do_positional: + } + + all_done: ++ if (specs_malloced) ++ free (specs); + free (args_malloced); + free (workstart); + /* Unlock the stream. */ diff --git a/src/patches/glibc/glibc-rh837026.patch b/src/patches/glibc/glibc-rh837026.patch new file mode 100644 index 000000000..558ad4f97 --- /dev/null +++ b/src/patches/glibc/glibc-rh837026.patch @@ -0,0 +1,30 @@ +diff -rup a/resolv/res_send.c b/resolv/res_send.c +--- a/resolv/res_send.c 2012-06-28 11:55:38.361886650 -0600 ++++ b/resolv/res_send.c 2012-06-28 11:51:38.253963687 -0600 +@@ -424,17 +424,15 @@ __libc_res_nsend(res_state statp, const + } + n = statp->nscount; + ext_total_nscount = EXT(statp).nscount + EXT(statp).nscount6; +- if (statp->nscount > ext_total_nscount) +- for (n = ext_total_nscount, ns = 0; +- n < statp->nscount; n++) { +- while (ns < MAXNS +- && EXT(statp).nsmap[ns] != MAXNS) +- ns++; +- if (ns == MAXNS) +- break; +- EXT(statp).nsmap[ns] = n; +- map[n] = ns++; +- } ++ for (n = 0, ns = 0; n < statp->nscount - ext_total_nscount; n++) { ++ while (ns < MAXNS ++ && EXT(statp).nsmap[ns] != MAXNS) ++ ns++; ++ if (ns == MAXNS) ++ break; ++ EXT(statp).nsmap[ns] = n; ++ map[n] = ns++; ++ } + EXT(statp).nscount = n; + for (ns = 0; ns < EXT(statp).nscount; ns++) { + n = map[ns]; diff --git a/src/patches/grep-2.5.1a-redhat_fixes-2.patch b/src/patches/grep-2.5.1a-redhat_fixes-2.patch deleted file mode 100644 index 9c3034229..000000000 --- a/src/patches/grep-2.5.1a-redhat_fixes-2.patch +++ /dev/null @@ -1,2109 +0,0 @@ -Submitted by: Alexander E. Patrakov -Date: 2005-08-13 -Initial Package Version: 2.5.1a -Upstream Status: Partially accepted, partially rejected, but required for LSB >= 2.0 certification -Origin: RedHat -Description: Various fixes from RedHat. Individual patches: - - grep-2.5.1-fgrep.patch - grep-2.5.1-bracket.patch - grep-2.5-i18n.patch - grep-2.5.1-oi.patch - grep-2.5.1-manpage.patch - grep-2.5.1-color.patch - grep-2.5.1-icolor.patch - grep-2.5.1-egf-speedup.patch - grep-2.5.1-dfa-optional.patch - grep-2.5.1-tests.patch - grep-2.5.1-w.patch - -Testcases: - - -fgrep: ???, but required for other patches - -bracket: echo "[" | LANG=en_US.UTF-8 grep "[[:space:]]" - -i18n: many fixes for multibyte locale support, required for LSB. - -oi: echo xxYYzz | LANG=C grep -i -o yy - -manpage: typo - -color: restore the background color correctly - -icolor: ??? echo 'spam foo SPAM FOO' | grep -i --color spam - (but that's also fixed by -oi. Is this patch just a cleanup?) - -egf-speedup: without this, grep is as slow as a snail in UTF-8 locales. - -dfa-optional: disables dfa in multibyte locales by default. - -w: (echo 'foo';echo 'fo') > /tmp/testfile && grep -F -w fo /tmp/testfile - -diff -urN grep-2.5.1a.orig/doc/grep.1 grep-2.5.1a/doc/grep.1 ---- grep-2.5.1a.orig/doc/grep.1 2004-11-12 16:26:37.000000000 +0500 -+++ grep-2.5.1a/doc/grep.1 2005-10-23 09:49:43.000000000 +0600 -@@ -191,6 +191,7 @@ - .I PATTERN - as a list of fixed strings, separated by newlines, - any of which is to be matched. -+.TP - .BR \-P ", " \-\^\-perl-regexp - Interpret - .I PATTERN -@@ -302,7 +303,7 @@ - This is especially useful for tools like zgrep, e.g. - .B "gzip -cd foo.gz |grep --label=foo something" - .TP --.BR \-\^\-line-buffering -+.BR \-\^\-line-buffered - Use line buffering, it can be a performance penality. - .TP - .BR \-q ", " \-\^\-quiet ", " \-\^\-silent -diff -urN grep-2.5.1a.orig/lib/posix/regex.h grep-2.5.1a/lib/posix/regex.h ---- grep-2.5.1a.orig/lib/posix/regex.h 2001-04-02 23:56:50.000000000 +0600 -+++ grep-2.5.1a/lib/posix/regex.h 2005-10-23 09:49:31.000000000 +0600 -@@ -109,6 +109,10 @@ - If not set, \{, \}, {, and } are literals. */ - #define RE_INTERVALS (RE_HAT_LISTS_NOT_NEWLINE << 1) - -+/* If this bit is set, then ignore case when matching. -+ If not set, then case is significant. */ -+#define RE_ICASE (RE_INVALID_INTERVAL_ORD << 1) -+ - /* If this bit is set, +, ? and | aren't recognized as operators. - If not set, they are. */ - #define RE_LIMITED_OPS (RE_INTERVALS << 1) -diff -urN grep-2.5.1a.orig/src/dfa.c grep-2.5.1a/src/dfa.c ---- grep-2.5.1a.orig/src/dfa.c 2001-09-26 22:57:55.000000000 +0600 -+++ grep-2.5.1a/src/dfa.c 2005-10-23 09:49:17.000000000 +0600 -@@ -414,7 +414,7 @@ - - /* This function fetch a wide character, and update cur_mb_len, - used only if the current locale is a multibyte environment. */ --static wchar_t -+static wint_t - fetch_wc (char const *eoferr) - { - wchar_t wc; -@@ -423,7 +423,7 @@ - if (eoferr != 0) - dfaerror (eoferr); - else -- return -1; -+ return WEOF; - } - - cur_mb_len = mbrtowc(&wc, lexptr, lexleft, &mbs); -@@ -459,7 +459,7 @@ - static void - parse_bracket_exp_mb () - { -- wchar_t wc, wc1, wc2; -+ wint_t wc, wc1, wc2; - - /* Work area to build a mb_char_classes. */ - struct mb_char_classes *work_mbc; -@@ -496,7 +496,7 @@ - work_mbc->invert = 0; - do - { -- wc1 = -1; /* mark wc1 is not initialized". */ -+ wc1 = WEOF; /* mark wc1 is not initialized". */ - - /* Note that if we're looking at some other [:...:] construct, - we just treat it as a bunch of ordinary characters. We can do -@@ -586,7 +586,7 @@ - work_mbc->coll_elems[work_mbc->ncoll_elems++] = elem; - } - } -- wc = -1; -+ wc1 = wc = WEOF; - } - else - /* We treat '[' as a normal character here. */ -@@ -600,7 +600,7 @@ - wc = fetch_wc(("Unbalanced [")); - } - -- if (wc1 == -1) -+ if (wc1 == WEOF) - wc1 = fetch_wc(_("Unbalanced [")); - - if (wc1 == L'-') -@@ -630,17 +630,17 @@ - } - REALLOC_IF_NECESSARY(work_mbc->range_sts, wchar_t, - range_sts_al, work_mbc->nranges + 1); -- work_mbc->range_sts[work_mbc->nranges] = wc; -+ work_mbc->range_sts[work_mbc->nranges] = (wchar_t)wc; - REALLOC_IF_NECESSARY(work_mbc->range_ends, wchar_t, - range_ends_al, work_mbc->nranges + 1); -- work_mbc->range_ends[work_mbc->nranges++] = wc2; -+ work_mbc->range_ends[work_mbc->nranges++] = (wchar_t)wc2; - } -- else if (wc != -1) -+ else if (wc != WEOF) - /* build normal characters. */ - { - REALLOC_IF_NECESSARY(work_mbc->chars, wchar_t, chars_al, - work_mbc->nchars + 1); -- work_mbc->chars[work_mbc->nchars++] = wc; -+ work_mbc->chars[work_mbc->nchars++] = (wchar_t)wc; - } - } - while ((wc = wc1) != L']'); -@@ -2552,6 +2552,8 @@ - } - - /* match with a character? */ -+ if (case_fold) -+ wc = towlower (wc); - for (i = 0; inchars; i++) - { - if (wc == work_mbc->chars[i]) -diff -urN grep-2.5.1a.orig/src/grep.c grep-2.5.1a/src/grep.c ---- grep-2.5.1a.orig/src/grep.c 2004-11-12 16:25:35.000000000 +0500 -+++ grep-2.5.1a/src/grep.c 2005-10-23 09:50:06.000000000 +0600 -@@ -30,6 +30,12 @@ - # include - # include - #endif -+#if defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H && defined HAVE_MBRTOWC -+/* We can handle multibyte string. */ -+# define MBS_SUPPORT -+# include -+# include -+#endif - #include - #include "system.h" - #include "getopt.h" -@@ -558,33 +564,6 @@ - { - size_t match_size; - size_t match_offset; -- if(match_icase) -- { -- /* Yuck, this is tricky */ -- char *buf = (char*) xmalloc (lim - beg); -- char *ibeg = buf; -- char *ilim = ibeg + (lim - beg); -- int i; -- for (i = 0; i < lim - beg; i++) -- ibeg[i] = tolower (beg[i]); -- while ((match_offset = (*execute) (ibeg, ilim-ibeg, &match_size, 1)) -- != (size_t) -1) -- { -- char const *b = beg + match_offset; -- if (b == lim) -- break; -- fwrite (beg, sizeof (char), match_offset, stdout); -- printf ("\33[%sm", grep_color); -- fwrite (b, sizeof (char), match_size, stdout); -- fputs ("\33[00m", stdout); -- beg = b + match_size; -- ibeg = ibeg + match_offset + match_size; -- } -- fwrite (beg, 1, lim - beg, stdout); -- free (buf); -- lastout = lim; -- return; -- } - while (lim-beg && (match_offset = (*execute) (beg, lim - beg, &match_size, 1)) - != (size_t) -1) - { -@@ -601,6 +580,7 @@ - fputs ("\33[00m", stdout); - beg = b + match_size; - } -+ fputs ("\33[K", stdout); - } - fwrite (beg, 1, lim - beg, stdout); - if (ferror (stdout)) -@@ -1697,6 +1677,37 @@ - if (!install_matcher (matcher) && !install_matcher ("default")) - abort (); - -+#ifdef MBS_SUPPORT -+ if (MB_CUR_MAX != 1 && match_icase) -+ { -+ wchar_t wc; -+ mbstate_t cur_state, prev_state; -+ int i, len = strlen(keys); -+ -+ memset(&cur_state, 0, sizeof(mbstate_t)); -+ for (i = 0; i <= len ;) -+ { -+ size_t mbclen; -+ mbclen = mbrtowc(&wc, keys + i, len - i, &cur_state); -+ if (mbclen == (size_t) -1 || mbclen == (size_t) -2 || mbclen == 0) -+ { -+ /* An invalid sequence, or a truncated multibyte character. -+ We treat it as a singlebyte character. */ -+ mbclen = 1; -+ } -+ else -+ { -+ if (iswupper((wint_t)wc)) -+ { -+ wc = towlower((wint_t)wc); -+ wcrtomb(keys + i, wc, &cur_state); -+ } -+ } -+ i += mbclen; -+ } -+ } -+#endif /* MBS_SUPPORT */ -+ - (*compile)(keys, keycc); - - if ((argc - optind > 1 && !no_filenames) || with_filenames) -diff -urN grep-2.5.1a.orig/src/search.c grep-2.5.1a/src/search.c ---- grep-2.5.1a.orig/src/search.c 2001-04-19 09:42:14.000000000 +0600 -+++ grep-2.5.1a/src/search.c 2005-10-23 09:51:25.000000000 +0600 -@@ -18,9 +18,13 @@ - - /* Written August 1992 by Mike Haertel. */ - -+#ifndef _GNU_SOURCE -+# define _GNU_SOURCE 1 -+#endif - #ifdef HAVE_CONFIG_H - # include - #endif -+#include - #include - #if defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H && defined HAVE_MBRTOWC - /* We can handle multibyte string. */ -@@ -31,7 +35,7 @@ - - #include "system.h" - #include "grep.h" --#include "regex.h" -+#include - #include "dfa.h" - #include "kwset.h" - #include "error.h" -@@ -39,6 +43,9 @@ - #ifdef HAVE_LIBPCRE - # include - #endif -+#ifdef HAVE_LANGINFO_CODESET -+# include -+#endif - - #define NCHAR (UCHAR_MAX + 1) - -@@ -70,9 +77,10 @@ - call the regexp matcher at all. */ - static int kwset_exact_matches; - --#if defined(MBS_SUPPORT) --static char* check_multibyte_string PARAMS ((char const *buf, size_t size)); --#endif -+/* UTF-8 encoding allows some optimizations that we can't otherwise -+ assume in a multibyte encoding. */ -+static int using_utf8; -+ - static void kwsinit PARAMS ((void)); - static void kwsmusts PARAMS ((void)); - static void Gcompile PARAMS ((char const *, size_t)); -@@ -84,6 +92,15 @@ - static size_t Pexecute PARAMS ((char const *, size_t, size_t *, int)); - - void -+check_utf8 (void) -+{ -+#ifdef HAVE_LANGINFO_CODESET -+ if (strcmp (nl_langinfo (CODESET), "UTF-8") == 0) -+ using_utf8 = 1; -+#endif -+} -+ -+void - dfaerror (char const *mesg) - { - error (2, 0, mesg); -@@ -141,38 +158,6 @@ - } - } - --#ifdef MBS_SUPPORT --/* This function allocate the array which correspond to "buf". -- Then this check multibyte string and mark on the positions which -- are not singlebyte character nor the first byte of a multibyte -- character. Caller must free the array. */ --static char* --check_multibyte_string(char const *buf, size_t size) --{ -- char *mb_properties = malloc(size); -- mbstate_t cur_state; -- int i; -- memset(&cur_state, 0, sizeof(mbstate_t)); -- memset(mb_properties, 0, sizeof(char)*size); -- for (i = 0; i < size ;) -- { -- size_t mbclen; -- mbclen = mbrlen(buf + i, size - i, &cur_state); -- -- if (mbclen == (size_t) -1 || mbclen == (size_t) -2 || mbclen == 0) -- { -- /* An invalid sequence, or a truncated multibyte character. -- We treat it as a singlebyte character. */ -- mbclen = 1; -- } -- mb_properties[i] = mbclen; -- i += mbclen; -- } -- -- return mb_properties; --} --#endif -- - static void - Gcompile (char const *pattern, size_t size) - { -@@ -181,7 +166,8 @@ - size_t total = size; - char const *motif = pattern; - -- re_set_syntax (RE_SYNTAX_GREP | RE_HAT_LISTS_NOT_NEWLINE); -+ check_utf8 (); -+ re_set_syntax (RE_SYNTAX_GREP | RE_HAT_LISTS_NOT_NEWLINE | (match_icase ? RE_ICASE : 0)); - dfasyntax (RE_SYNTAX_GREP | RE_HAT_LISTS_NOT_NEWLINE, match_icase, eolbyte); - - /* For GNU regex compiler we have to pass the patterns separately to detect -@@ -233,7 +219,7 @@ - static char const line_end[] = "\\)$"; - static char const word_beg[] = "\\(^\\|[^[:alnum:]_]\\)\\("; - static char const word_end[] = "\\)\\([^[:alnum:]_]\\|$\\)"; -- char *n = malloc (sizeof word_beg - 1 + size + sizeof word_end); -+ char *n = xmalloc (sizeof word_beg - 1 + size + sizeof word_end); - size_t i; - strcpy (n, match_lines ? line_beg : word_beg); - i = strlen (n); -@@ -257,14 +243,15 @@ - size_t total = size; - char const *motif = pattern; - -+ check_utf8 (); - if (strcmp (matcher, "awk") == 0) - { -- re_set_syntax (RE_SYNTAX_AWK); -+ re_set_syntax (RE_SYNTAX_AWK | (match_icase ? RE_ICASE : 0)); - dfasyntax (RE_SYNTAX_AWK, match_icase, eolbyte); - } - else - { -- re_set_syntax (RE_SYNTAX_POSIX_EGREP); -+ re_set_syntax (RE_SYNTAX_POSIX_EGREP | (match_icase ? RE_ICASE : 0)); - dfasyntax (RE_SYNTAX_POSIX_EGREP, match_icase, eolbyte); - } - -@@ -316,7 +303,7 @@ - static char const line_end[] = ")$"; - static char const word_beg[] = "(^|[^[:alnum:]_])("; - static char const word_end[] = ")([^[:alnum:]_]|$)"; -- char *n = malloc (sizeof word_beg - 1 + size + sizeof word_end); -+ char *n = xmalloc (sizeof word_beg - 1 + size + sizeof word_end); - size_t i; - strcpy (n, match_lines ? line_beg : word_beg); - i = strlen(n); -@@ -339,15 +326,35 @@ - char eol = eolbyte; - int backref, start, len; - struct kwsmatch kwsm; -- size_t i; -+ size_t i, ret_val; -+ static int use_dfa; -+ static int use_dfa_checked = 0; - #ifdef MBS_SUPPORT -- char *mb_properties = NULL; -+ const char *last_char = NULL; -+ int mb_cur_max = MB_CUR_MAX; -+ mbstate_t mbs; -+ memset (&mbs, '\0', sizeof (mbstate_t)); - #endif /* MBS_SUPPORT */ - -+ if (!use_dfa_checked) -+ { -+ char *grep_use_dfa = getenv ("GREP_USE_DFA"); -+ if (!grep_use_dfa) -+ { - #ifdef MBS_SUPPORT -- if (MB_CUR_MAX > 1 && kwset) -- mb_properties = check_multibyte_string(buf, size); -+ /* Turn off DFA when processing multibyte input. */ -+ use_dfa = (MB_CUR_MAX == 1); -+#else -+ use_dfa = 1; - #endif /* MBS_SUPPORT */ -+ } -+ else -+ { -+ use_dfa = atoi (grep_use_dfa); -+ } -+ -+ use_dfa_checked = 1; -+ } - - buflim = buf + size; - -@@ -358,47 +365,124 @@ - if (kwset) - { - /* Find a possible match using the KWset matcher. */ -- size_t offset = kwsexec (kwset, beg, buflim - beg, &kwsm); -+#ifdef MBS_SUPPORT -+ size_t bytes_left = 0; -+#endif /* MBS_SUPPORT */ -+ size_t offset; -+#ifdef MBS_SUPPORT -+ /* kwsexec doesn't work with match_icase and multibyte input. */ -+ if (match_icase && mb_cur_max > 1) -+ /* Avoid kwset */ -+ offset = 0; -+ else -+#endif /* MBS_SUPPORT */ -+ offset = kwsexec (kwset, beg, buflim - beg, &kwsm); - if (offset == (size_t) -1) -- { -+ goto failure; - #ifdef MBS_SUPPORT -- if (MB_CUR_MAX > 1) -- free(mb_properties); --#endif -- return (size_t)-1; -+ if (mb_cur_max > 1 && !using_utf8) -+ { -+ bytes_left = offset; -+ while (bytes_left) -+ { -+ size_t mlen = mbrlen (beg, bytes_left, &mbs); -+ -+ last_char = beg; -+ if (mlen == (size_t) -1 || mlen == 0) -+ { -+ /* Incomplete character: treat as single-byte. */ -+ memset (&mbs, '\0', sizeof (mbstate_t)); -+ beg++; -+ bytes_left--; -+ continue; -+ } -+ -+ if (mlen == (size_t) -2) -+ /* Offset points inside multibyte character: -+ * no good. */ -+ break; -+ -+ beg += mlen; -+ bytes_left -= mlen; -+ } - } -+ else -+#endif /* MBS_SUPPORT */ - beg += offset; - /* Narrow down to the line containing the candidate, and - run it through DFA. */ - end = memchr(beg, eol, buflim - beg); - end++; - #ifdef MBS_SUPPORT -- if (MB_CUR_MAX > 1 && mb_properties[beg - buf] == 0) -+ if (mb_cur_max > 1 && bytes_left) - continue; --#endif -+#endif /* MBS_SUPPORT */ - while (beg > buf && beg[-1] != eol) - --beg; -- if (kwsm.index < kwset_exact_matches) -- goto success; -- if (dfaexec (&dfa, beg, end - beg, &backref) == (size_t) -1) -+ if ( -+#ifdef MBS_SUPPORT -+ !(match_icase && mb_cur_max > 1) && -+#endif /* MBS_SUPPORT */ -+ (kwsm.index < kwset_exact_matches)) -+ goto success_in_beg_and_end; -+ if (use_dfa && -+ dfaexec (&dfa, beg, end - beg, &backref) == (size_t) -1) - continue; - } - else - { - /* No good fixed strings; start with DFA. */ -- size_t offset = dfaexec (&dfa, beg, buflim - beg, &backref); -+#ifdef MBS_SUPPORT -+ size_t bytes_left = 0; -+#endif /* MBS_SUPPORT */ -+ size_t offset = 0; -+ if (use_dfa) -+ offset = dfaexec (&dfa, beg, buflim - beg, &backref); - if (offset == (size_t) -1) - break; - /* Narrow down to the line we've found. */ -+#ifdef MBS_SUPPORT -+ if (mb_cur_max > 1 && !using_utf8) -+ { -+ bytes_left = offset; -+ while (bytes_left) -+ { -+ size_t mlen = mbrlen (beg, bytes_left, &mbs); -+ -+ last_char = beg; -+ if (mlen == (size_t) -1 || mlen == 0) -+ { -+ /* Incomplete character: treat as single-byte. */ -+ memset (&mbs, '\0', sizeof (mbstate_t)); -+ beg++; -+ bytes_left--; -+ continue; -+ } -+ -+ if (mlen == (size_t) -2) -+ /* Offset points inside multibyte character: -+ * no good. */ -+ break; -+ -+ beg += mlen; -+ bytes_left -= mlen; -+ } -+ } -+ else -+#endif /* MBS_SUPPORT */ - beg += offset; - end = memchr (beg, eol, buflim - beg); - end++; -+#ifdef MBS_SUPPORT -+ if (mb_cur_max > 1 && bytes_left) -+ continue; -+#endif /* MBS_SUPPORT */ - while (beg > buf && beg[-1] != eol) - --beg; - } - /* Successful, no backreferences encountered! */ -- if (!backref) -- goto success; -+ if (use_dfa && !backref) -+ goto success_in_beg_and_end; - } - else - end = beg + size; -@@ -413,14 +497,11 @@ - end - beg - 1, &(patterns[i].regs)))) - { - len = patterns[i].regs.end[0] - start; -- if (exact) -- { -- *match_size = len; -- return start; -- } -+ if (exact && !match_words) -+ goto success_in_start_and_len; - if ((!match_lines && !match_words) - || (match_lines && len == end - beg - 1)) -- goto success; -+ goto success_in_beg_and_end; - /* If -w, check if the match aligns with word boundaries. - We do this iteratively because: - (a) the line may contain more than one occurence of the -@@ -431,10 +512,84 @@ - if (match_words) - while (start >= 0) - { -- if ((start == 0 || !WCHAR ((unsigned char) beg[start - 1])) -- && (len == end - beg - 1 -- || !WCHAR ((unsigned char) beg[start + len]))) -- goto success; -+ int lword_match = 0; -+ if (start == 0) -+ lword_match = 1; -+ else -+ { -+ assert (start > 0); -+#ifdef MBS_SUPPORT -+ if (mb_cur_max > 1) -+ { -+ const char *s; -+ int mr; -+ wchar_t pwc; -+ -+ if (using_utf8) -+ { -+ s = beg + start - 1; -+ while (s > buf -+ && (unsigned char) *s >= 0x80 -+ && (unsigned char) *s <= 0xbf) -+ --s; -+ } -+ else -+ s = last_char; -+ mr = mbtowc (&pwc, s, beg + start - s); -+ if (mr <= 0) -+ { -+ memset (&mbs, '\0', sizeof (mbstate_t)); -+ lword_match = 1; -+ } -+ else if (!(iswalnum (pwc) || pwc == L'_') -+ && mr == (int) (beg + start - s)) -+ lword_match = 1; -+ } -+ else -+#endif /* MBS_SUPPORT */ -+ if (!WCHAR ((unsigned char) beg[start - 1])) -+ lword_match = 1; -+ } -+ -+ if (lword_match) -+ { -+ int rword_match = 0; -+ if (start + len == end - beg - 1) -+ rword_match = 1; -+ else -+ { -+#ifdef MBS_SUPPORT -+ if (mb_cur_max > 1) -+ { -+ wchar_t nwc; -+ int mr; -+ -+ mr = mbtowc (&nwc, beg + start + len, -+ end - beg - start - len - 1); -+ if (mr <= 0) -+ { -+ memset (&mbs, '\0', sizeof (mbstate_t)); -+ rword_match = 1; -+ } -+ else if (!iswalnum (nwc) && nwc != L'_') -+ rword_match = 1; -+ } -+ else -+#endif /* MBS_SUPPORT */ -+ if (!WCHAR ((unsigned char) beg[start + len])) -+ rword_match = 1; -+ } -+ -+ if (rword_match) -+ { -+ if (!exact) -+ /* Returns the whole line. */ -+ goto success_in_beg_and_end; -+ else -+ /* Returns just this word match. */ -+ goto success_in_start_and_len; -+ } -+ } - if (len > 0) - { - /* Try a shorter length anchored at the same place. */ -@@ -461,26 +616,154 @@ - } - } /* for Regex patterns. */ - } /* for (beg = end ..) */ --#ifdef MBS_SUPPORT -- if (MB_CUR_MAX > 1 && mb_properties) -- free (mb_properties); --#endif /* MBS_SUPPORT */ -+ -+ failure: - return (size_t) -1; - -- success: --#ifdef MBS_SUPPORT -- if (MB_CUR_MAX > 1 && mb_properties) -- free (mb_properties); --#endif /* MBS_SUPPORT */ -- *match_size = end - beg; -- return beg - buf; -+ success_in_beg_and_end: -+ len = end - beg; -+ start = beg - buf; -+ /* FALLTHROUGH */ -+ -+ success_in_start_and_len: -+ *match_size = len; -+ return start; - } - -+#ifdef MBS_SUPPORT -+static int f_i_multibyte; /* whether we're using the new -Fi MB method */ -+static struct -+{ -+ wchar_t **patterns; -+ size_t count, maxlen; -+ unsigned char *match; -+} Fimb; -+#endif -+ - static void - Fcompile (char const *pattern, size_t size) - { -+ int mb_cur_max = MB_CUR_MAX; - char const *beg, *lim, *err; - -+ check_utf8 (); -+#ifdef MBS_SUPPORT -+ /* Support -F -i for UTF-8 input. */ -+ if (match_icase && mb_cur_max > 1) -+ { -+ mbstate_t mbs; -+ wchar_t *wcpattern = xmalloc ((size + 1) * sizeof (wchar_t)); -+ const char *patternend = pattern; -+ size_t wcsize; -+ kwset_t fimb_kwset = NULL; -+ char *starts = NULL; -+ wchar_t *wcbeg, *wclim; -+ size_t allocated = 0; -+ -+ memset (&mbs, '\0', sizeof (mbs)); -+# ifdef __GNU_LIBRARY__ -+ wcsize = mbsnrtowcs (wcpattern, &patternend, size, size, &mbs); -+ if (patternend != pattern + size) -+ wcsize = (size_t) -1; -+# else -+ { -+ char *patterncopy = xmalloc (size + 1); -+ -+ memcpy (patterncopy, pattern, size); -+ patterncopy[size] = '\0'; -+ patternend = patterncopy; -+ wcsize = mbsrtowcs (wcpattern, &patternend, size, &mbs); -+ if (patternend != patterncopy + size) -+ wcsize = (size_t) -1; -+ free (patterncopy); -+ } -+# endif -+ if (wcsize + 2 <= 2) -+ { -+fimb_fail: -+ free (wcpattern); -+ free (starts); -+ if (fimb_kwset) -+ kwsfree (fimb_kwset); -+ free (Fimb.patterns); -+ Fimb.patterns = NULL; -+ } -+ else -+ { -+ if (!(fimb_kwset = kwsalloc (NULL))) -+ error (2, 0, _("memory exhausted")); -+ -+ starts = xmalloc (mb_cur_max * 3); -+ wcbeg = wcpattern; -+ do -+ { -+ int i; -+ size_t wclen; -+ -+ if (Fimb.count >= allocated) -+ { -+ if (allocated == 0) -+ allocated = 128; -+ else -+ allocated *= 2; -+ Fimb.patterns = xrealloc (Fimb.patterns, -+ sizeof (wchar_t *) * allocated); -+ } -+ Fimb.patterns[Fimb.count++] = wcbeg; -+ for (wclim = wcbeg; -+ wclim < wcpattern + wcsize && *wclim != L'\n'; ++wclim) -+ *wclim = towlower (*wclim); -+ *wclim = L'\0'; -+ wclen = wclim - wcbeg; -+ if (wclen > Fimb.maxlen) -+ Fimb.maxlen = wclen; -+ if (wclen > 3) -+ wclen = 3; -+ if (wclen == 0) -+ { -+ if ((err = kwsincr (fimb_kwset, "", 0)) != 0) -+ error (2, 0, err); -+ } -+ else -+ for (i = 0; i < (1 << wclen); i++) -+ { -+ char *p = starts; -+ int j, k; -+ -+ for (j = 0; j < wclen; ++j) -+ { -+ wchar_t wc = wcbeg[j]; -+ if (i & (1 << j)) -+ { -+ wc = towupper (wc); -+ if (wc == wcbeg[j]) -+ continue; -+ } -+ k = wctomb (p, wc); -+ if (k <= 0) -+ goto fimb_fail; -+ p += k; -+ } -+ if ((err = kwsincr (fimb_kwset, starts, p - starts)) != 0) -+ error (2, 0, err); -+ } -+ if (wclim < wcpattern + wcsize) -+ ++wclim; -+ wcbeg = wclim; -+ } -+ while (wcbeg < wcpattern + wcsize); -+ f_i_multibyte = 1; -+ kwset = fimb_kwset; -+ free (starts); -+ Fimb.match = xmalloc (Fimb.count); -+ if ((err = kwsprep (kwset)) != 0) -+ error (2, 0, err); -+ return; -+ } -+ } -+#endif /* MBS_SUPPORT */ -+ -+ - kwsinit (); - beg = pattern; - do -@@ -499,6 +782,76 @@ - error (2, 0, err); - } - -+#ifdef MBS_SUPPORT -+static int -+Fimbexec (const char *buf, size_t size, size_t *plen, int exact) -+{ -+ size_t len, letter, i; -+ int ret = -1; -+ mbstate_t mbs; -+ wchar_t wc; -+ int patterns_left; -+ -+ assert (match_icase && f_i_multibyte == 1); -+ assert (MB_CUR_MAX > 1); -+ -+ memset (&mbs, '\0', sizeof (mbs)); -+ memset (Fimb.match, '\1', Fimb.count); -+ letter = len = 0; -+ patterns_left = 1; -+ while (patterns_left && len <= size) -+ { -+ size_t c; -+ -+ patterns_left = 0; -+ if (len < size) -+ { -+ c = mbrtowc (&wc, buf + len, size - len, &mbs); -+ if (c + 2 <= 2) -+ return ret; -+ -+ wc = towlower (wc); -+ } -+ else -+ { -+ c = 1; -+ wc = L'\0'; -+ } -+ -+ for (i = 0; i < Fimb.count; i++) -+ { -+ if (Fimb.match[i]) -+ { -+ if (Fimb.patterns[i][letter] == L'\0') -+ { -+ /* Found a match. */ -+ *plen = len; -+ if (!exact && !match_words) -+ return 0; -+ else -+ { -+ /* For -w or exact look for longest match. */ -+ ret = 0; -+ Fimb.match[i] = '\0'; -+ continue; -+ } -+ } -+ -+ if (Fimb.patterns[i][letter] == wc) -+ patterns_left = 1; -+ else -+ Fimb.match[i] = '\0'; -+ } -+ } -+ -+ len += c; -+ letter++; -+ } -+ -+ return ret; -+} -+#endif /* MBS_SUPPORT */ -+ - static size_t - Fexecute (char const *buf, size_t size, size_t *match_size, int exact) - { -@@ -506,88 +859,268 @@ - register size_t len; - char eol = eolbyte; - struct kwsmatch kwsmatch; -+ size_t ret_val; - #ifdef MBS_SUPPORT -- char *mb_properties; -- if (MB_CUR_MAX > 1) -- mb_properties = check_multibyte_string (buf, size); -+ int mb_cur_max = MB_CUR_MAX; -+ mbstate_t mbs; -+ memset (&mbs, '\0', sizeof (mbstate_t)); -+ const char *last_char = NULL; - #endif /* MBS_SUPPORT */ - - for (beg = buf; beg <= buf + size; ++beg) - { -- size_t offset = kwsexec (kwset, beg, buf + size - beg, &kwsmatch); -+ size_t offset; -+ offset = kwsexec (kwset, beg, buf + size - beg, &kwsmatch); -+ - if (offset == (size_t) -1) -- { -+ goto failure; - #ifdef MBS_SUPPORT -- if (MB_CUR_MAX > 1) -- free(mb_properties); --#endif /* MBS_SUPPORT */ -- return offset; -+ if (mb_cur_max > 1 && !using_utf8) -+ { -+ size_t bytes_left = offset; -+ while (bytes_left) -+ { -+ size_t mlen = mbrlen (beg, bytes_left, &mbs); -+ -+ last_char = beg; -+ if (mlen == (size_t) -1 || mlen == 0) -+ { -+ /* Incomplete character: treat as single-byte. */ -+ memset (&mbs, '\0', sizeof (mbstate_t)); -+ beg++; -+ bytes_left--; -+ continue; -+ } -+ -+ if (mlen == (size_t) -2) -+ /* Offset points inside multibyte character: no good. */ -+ break; -+ -+ beg += mlen; -+ bytes_left -= mlen; -+ } -+ -+ if (bytes_left) -+ continue; - } --#ifdef MBS_SUPPORT -- if (MB_CUR_MAX > 1 && mb_properties[offset+beg-buf] == 0) -- continue; /* It is a part of multibyte character. */ -+ else - #endif /* MBS_SUPPORT */ - beg += offset; -- len = kwsmatch.size[0]; -- if (exact) -- { -- *match_size = len; - #ifdef MBS_SUPPORT -- if (MB_CUR_MAX > 1) -- free (mb_properties); -+ /* For f_i_multibyte, the string at beg now matches first 3 chars of -+ one of the search strings (less if there are shorter search strings). -+ See if this is a real match. */ -+ if (f_i_multibyte -+ && Fimbexec (beg, buf + size - beg, &kwsmatch.size[0], exact)) -+ goto next_char; - #endif /* MBS_SUPPORT */ -- return beg - buf; -- } -+ len = kwsmatch.size[0]; -+ if (exact && !match_words) -+ goto success_in_beg_and_len; - if (match_lines) - { - if (beg > buf && beg[-1] != eol) -- continue; -+ goto next_char; - if (beg + len < buf + size && beg[len] != eol) -- continue; -+ goto next_char; - goto success; - } - else if (match_words) -- for (try = beg; len; ) -- { -- if (try > buf && WCHAR((unsigned char) try[-1])) -- break; -- if (try + len < buf + size && WCHAR((unsigned char) try[len])) -- { -- offset = kwsexec (kwset, beg, --len, &kwsmatch); -- if (offset == (size_t) -1) -- { -+ { -+ while (len) -+ { -+ int word_match = 0; -+ if (beg > buf) -+ { - #ifdef MBS_SUPPORT -- if (MB_CUR_MAX > 1) -- free (mb_properties); -+ if (mb_cur_max > 1) -+ { -+ const char *s; -+ int mr; -+ wchar_t pwc; -+ -+ if (using_utf8) -+ { -+ s = beg - 1; -+ while (s > buf -+ && (unsigned char) *s >= 0x80 -+ && (unsigned char) *s <= 0xbf) -+ --s; -+ } -+ else -+ s = last_char; -+ mr = mbtowc (&pwc, s, beg - s); -+ if (mr <= 0) -+ memset (&mbs, '\0', sizeof (mbstate_t)); -+ else if ((iswalnum (pwc) || pwc == L'_') -+ && mr == (int) (beg - s)) -+ goto next_char; -+ } -+ else - #endif /* MBS_SUPPORT */ -- return offset; -- } -- try = beg + offset; -- len = kwsmatch.size[0]; -- } -- else -- goto success; -- } -+ if (WCHAR ((unsigned char) beg[-1])) -+ goto next_char; -+ } -+#ifdef MBS_SUPPORT -+ if (mb_cur_max > 1) -+ { -+ wchar_t nwc; -+ int mr; -+ -+ mr = mbtowc (&nwc, beg + len, buf + size - beg - len); -+ if (mr <= 0) -+ { -+ memset (&mbs, '\0', sizeof (mbstate_t)); -+ word_match = 1; -+ } -+ else if (!iswalnum (nwc) && nwc != L'_') -+ word_match = 1; -+ } -+ else -+#endif /* MBS_SUPPORT */ -+ if (beg + len >= buf + size || !WCHAR ((unsigned char) beg[len])) -+ word_match = 1; -+ if (word_match) -+ { -+ if (!exact) -+ /* Returns the whole line now we know there's a word match. */ -+ goto success; -+ else -+ /* Returns just this word match. */ -+ goto success_in_beg_and_len; -+ } -+ if (len > 0) -+ { -+ /* Try a shorter length anchored at the same place. */ -+ --len; -+ offset = kwsexec (kwset, beg, len, &kwsmatch); -+ -+ if (offset == -1) -+ goto next_char; /* Try a different anchor. */ -+#ifdef MBS_SUPPORT -+ if (mb_cur_max > 1 && !using_utf8) -+ { -+ size_t bytes_left = offset; -+ while (bytes_left) -+ { -+ size_t mlen = mbrlen (beg, bytes_left, &mbs); -+ -+ last_char = beg; -+ if (mlen == (size_t) -1 || mlen == 0) -+ { -+ /* Incomplete character: treat as single-byte. */ -+ memset (&mbs, '\0', sizeof (mbstate_t)); -+ beg++; -+ bytes_left--; -+ continue; -+ } -+ -+ if (mlen == (size_t) -2) -+ { -+ /* Offset points inside multibyte character: -+ * no good. */ -+ break; -+ } -+ -+ beg += mlen; -+ bytes_left -= mlen; -+ } -+ -+ if (bytes_left) -+ { -+ memset (&mbs, '\0', sizeof (mbstate_t)); -+ goto next_char; /* Try a different anchor. */ -+ } -+ } -+ else -+#endif /* MBS_SUPPORT */ -+ beg += offset; -+#ifdef MBS_SUPPORT -+ /* The string at beg now matches first 3 chars of one of -+ the search strings (less if there are shorter search -+ strings). See if this is a real match. */ -+ if (f_i_multibyte -+ && Fimbexec (beg, len - offset, &kwsmatch.size[0], -+ exact)) -+ goto next_char; -+#endif /* MBS_SUPPORT */ -+ len = kwsmatch.size[0]; -+ } -+ } -+ } - else - goto success; -- } -- -+next_char:; - #ifdef MBS_SUPPORT -- if (MB_CUR_MAX > 1) -- free (mb_properties); -+ /* Advance to next character. For MB_CUR_MAX == 1 case this is handled -+ by ++beg above. */ -+ if (mb_cur_max > 1) -+ { -+ if (using_utf8) -+ { -+ unsigned char c = *beg; -+ if (c >= 0xc2) -+ { -+ if (c < 0xe0) -+ ++beg; -+ else if (c < 0xf0) -+ beg += 2; -+ else if (c < 0xf8) -+ beg += 3; -+ else if (c < 0xfc) -+ beg += 4; -+ else if (c < 0xfe) -+ beg += 5; -+ } -+ } -+ else -+ { -+ size_t l = mbrlen (beg, buf + size - beg, &mbs); -+ -+ last_char = beg; -+ if (l + 2 >= 2) -+ beg += l - 1; -+ else -+ memset (&mbs, '\0', sizeof (mbstate_t)); -+ } -+ } - #endif /* MBS_SUPPORT */ -+ } -+ -+ failure: - return -1; - - success: -+#ifdef MBS_SUPPORT -+ if (mb_cur_max > 1 && !using_utf8) -+ { -+ end = beg + len; -+ while (end < buf + size) -+ { -+ size_t mlen = mbrlen (end, buf + size - end, &mbs); -+ if (mlen == (size_t) -1 || mlen == (size_t) -2 || mlen == 0) -+ { -+ memset (&mbs, '\0', sizeof (mbstate_t)); -+ mlen = 1; -+ } -+ if (mlen == 1 && *end == eol) -+ break; -+ -+ end += mlen; -+ } -+ } -+ else -+#endif /* MBS_SUPPORT */ - end = memchr (beg + len, eol, (buf + size) - (beg + len)); -+ - end++; - while (buf < beg && beg[-1] != eol) - --beg; -- *match_size = end - beg; --#ifdef MBS_SUPPORT -- if (MB_CUR_MAX > 1) -- free (mb_properties); --#endif /* MBS_SUPPORT */ -+ len = end - beg; -+ /* FALLTHROUGH */ -+ -+ success_in_beg_and_len: -+ *match_size = len; - return beg - buf; - } - -diff -urN grep-2.5.1a.orig/src/search.c.orig grep-2.5.1a/src/search.c.orig ---- grep-2.5.1a.orig/src/search.c.orig 1970-01-01 05:00:00.000000000 +0500 -+++ grep-2.5.1a/src/search.c.orig 2005-10-23 09:48:39.000000000 +0600 -@@ -0,0 +1,714 @@ -+/* search.c - searching subroutines using dfa, kwset and regex for grep. -+ Copyright 1992, 1998, 2000 Free Software Foundation, Inc. -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2, or (at your option) -+ any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -+ 02111-1307, USA. */ -+ -+/* Written August 1992 by Mike Haertel. */ -+ -+#ifdef HAVE_CONFIG_H -+# include -+#endif -+#include -+#if defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H && defined HAVE_MBRTOWC -+/* We can handle multibyte string. */ -+# define MBS_SUPPORT -+# include -+# include -+#endif -+ -+#include "system.h" -+#include "grep.h" -+#include "regex.h" -+#include "dfa.h" -+#include "kwset.h" -+#include "error.h" -+#include "xalloc.h" -+#ifdef HAVE_LIBPCRE -+# include -+#endif -+ -+#define NCHAR (UCHAR_MAX + 1) -+ -+/* For -w, we also consider _ to be word constituent. */ -+#define WCHAR(C) (ISALNUM(C) || (C) == '_') -+ -+/* DFA compiled regexp. */ -+static struct dfa dfa; -+ -+/* The Regex compiled patterns. */ -+static struct patterns -+{ -+ /* Regex compiled regexp. */ -+ struct re_pattern_buffer regexbuf; -+ struct re_registers regs; /* This is here on account of a BRAIN-DEAD -+ Q@#%!# library interface in regex.c. */ -+} patterns0; -+ -+struct patterns *patterns; -+size_t pcount; -+ -+/* KWset compiled pattern. For Ecompile and Gcompile, we compile -+ a list of strings, at least one of which is known to occur in -+ any string matching the regexp. */ -+static kwset_t kwset; -+ -+/* Number of compiled fixed strings known to exactly match the regexp. -+ If kwsexec returns < kwset_exact_matches, then we don't need to -+ call the regexp matcher at all. */ -+static int kwset_exact_matches; -+ -+#if defined(MBS_SUPPORT) -+static char* check_multibyte_string PARAMS ((char const *buf, size_t size)); -+#endif -+static void kwsinit PARAMS ((void)); -+static void kwsmusts PARAMS ((void)); -+static void Gcompile PARAMS ((char const *, size_t)); -+static void Ecompile PARAMS ((char const *, size_t)); -+static size_t EGexecute PARAMS ((char const *, size_t, size_t *, int )); -+static void Fcompile PARAMS ((char const *, size_t)); -+static size_t Fexecute PARAMS ((char const *, size_t, size_t *, int)); -+static void Pcompile PARAMS ((char const *, size_t )); -+static size_t Pexecute PARAMS ((char const *, size_t, size_t *, int)); -+ -+void -+dfaerror (char const *mesg) -+{ -+ error (2, 0, mesg); -+} -+ -+static void -+kwsinit (void) -+{ -+ static char trans[NCHAR]; -+ int i; -+ -+ if (match_icase) -+ for (i = 0; i < NCHAR; ++i) -+ trans[i] = TOLOWER (i); -+ -+ if (!(kwset = kwsalloc (match_icase ? trans : (char *) 0))) -+ error (2, 0, _("memory exhausted")); -+} -+ -+/* If the DFA turns out to have some set of fixed strings one of -+ which must occur in the match, then we build a kwset matcher -+ to find those strings, and thus quickly filter out impossible -+ matches. */ -+static void -+kwsmusts (void) -+{ -+ struct dfamust const *dm; -+ char const *err; -+ -+ if (dfa.musts) -+ { -+ kwsinit (); -+ /* First, we compile in the substrings known to be exact -+ matches. The kwset matcher will return the index -+ of the matching string that it chooses. */ -+ for (dm = dfa.musts; dm; dm = dm->next) -+ { -+ if (!dm->exact) -+ continue; -+ ++kwset_exact_matches; -+ if ((err = kwsincr (kwset, dm->must, strlen (dm->must))) != 0) -+ error (2, 0, err); -+ } -+ /* Now, we compile the substrings that will require -+ the use of the regexp matcher. */ -+ for (dm = dfa.musts; dm; dm = dm->next) -+ { -+ if (dm->exact) -+ continue; -+ if ((err = kwsincr (kwset, dm->must, strlen (dm->must))) != 0) -+ error (2, 0, err); -+ } -+ if ((err = kwsprep (kwset)) != 0) -+ error (2, 0, err); -+ } -+} -+ -+#ifdef MBS_SUPPORT -+/* This function allocate the array which correspond to "buf". -+ Then this check multibyte string and mark on the positions which -+ are not singlebyte character nor the first byte of a multibyte -+ character. Caller must free the array. */ -+static char* -+check_multibyte_string(char const *buf, size_t size) -+{ -+ char *mb_properties = malloc(size); -+ mbstate_t cur_state; -+ int i; -+ memset(&cur_state, 0, sizeof(mbstate_t)); -+ memset(mb_properties, 0, sizeof(char)*size); -+ for (i = 0; i < size ;) -+ { -+ size_t mbclen; -+ mbclen = mbrlen(buf + i, size - i, &cur_state); -+ -+ if (mbclen == (size_t) -1 || mbclen == (size_t) -2 || mbclen == 0) -+ { -+ /* An invalid sequence, or a truncated multibyte character. -+ We treat it as a singlebyte character. */ -+ mbclen = 1; -+ } -+ mb_properties[i] = mbclen; -+ i += mbclen; -+ } -+ -+ return mb_properties; -+} -+#endif -+ -+static void -+Gcompile (char const *pattern, size_t size) -+{ -+ const char *err; -+ char const *sep; -+ size_t total = size; -+ char const *motif = pattern; -+ -+ re_set_syntax (RE_SYNTAX_GREP | RE_HAT_LISTS_NOT_NEWLINE); -+ dfasyntax (RE_SYNTAX_GREP | RE_HAT_LISTS_NOT_NEWLINE, match_icase, eolbyte); -+ -+ /* For GNU regex compiler we have to pass the patterns separately to detect -+ errors like "[\nallo\n]\n". The patterns here are "[", "allo" and "]" -+ GNU regex should have raise a syntax error. The same for backref, where -+ the backref should have been local to each pattern. */ -+ do -+ { -+ size_t len; -+ sep = memchr (motif, '\n', total); -+ if (sep) -+ { -+ len = sep - motif; -+ sep++; -+ total -= (len + 1); -+ } -+ else -+ { -+ len = total; -+ total = 0; -+ } -+ -+ patterns = realloc (patterns, (pcount + 1) * sizeof (*patterns)); -+ if (patterns == NULL) -+ error (2, errno, _("memory exhausted")); -+ -+ patterns[pcount] = patterns0; -+ -+ if ((err = re_compile_pattern (motif, len, -+ &(patterns[pcount].regexbuf))) != 0) -+ error (2, 0, err); -+ pcount++; -+ -+ motif = sep; -+ } while (sep && total != 0); -+ -+ /* In the match_words and match_lines cases, we use a different pattern -+ for the DFA matcher that will quickly throw out cases that won't work. -+ Then if DFA succeeds we do some hairy stuff using the regex matcher -+ to decide whether the match should really count. */ -+ if (match_words || match_lines) -+ { -+ /* In the whole-word case, we use the pattern: -+ \(^\|[^[:alnum:]_]\)\(userpattern\)\([^[:alnum:]_]|$\). -+ In the whole-line case, we use the pattern: -+ ^\(userpattern\)$. */ -+ -+ static char const line_beg[] = "^\\("; -+ static char const line_end[] = "\\)$"; -+ static char const word_beg[] = "\\(^\\|[^[:alnum:]_]\\)\\("; -+ static char const word_end[] = "\\)\\([^[:alnum:]_]\\|$\\)"; -+ char *n = malloc (sizeof word_beg - 1 + size + sizeof word_end); -+ size_t i; -+ strcpy (n, match_lines ? line_beg : word_beg); -+ i = strlen (n); -+ memcpy (n + i, pattern, size); -+ i += size; -+ strcpy (n + i, match_lines ? line_end : word_end); -+ i += strlen (n + i); -+ pattern = n; -+ size = i; -+ } -+ -+ dfacomp (pattern, size, &dfa, 1); -+ kwsmusts (); -+} -+ -+static void -+Ecompile (char const *pattern, size_t size) -+{ -+ const char *err; -+ const char *sep; -+ size_t total = size; -+ char const *motif = pattern; -+ -+ if (strcmp (matcher, "awk") == 0) -+ { -+ re_set_syntax (RE_SYNTAX_AWK); -+ dfasyntax (RE_SYNTAX_AWK, match_icase, eolbyte); -+ } -+ else -+ { -+ re_set_syntax (RE_SYNTAX_POSIX_EGREP); -+ dfasyntax (RE_SYNTAX_POSIX_EGREP, match_icase, eolbyte); -+ } -+ -+ /* For GNU regex compiler we have to pass the patterns separately to detect -+ errors like "[\nallo\n]\n". The patterns here are "[", "allo" and "]" -+ GNU regex should have raise a syntax error. The same for backref, where -+ the backref should have been local to each pattern. */ -+ do -+ { -+ size_t len; -+ sep = memchr (motif, '\n', total); -+ if (sep) -+ { -+ len = sep - motif; -+ sep++; -+ total -= (len + 1); -+ } -+ else -+ { -+ len = total; -+ total = 0; -+ } -+ -+ patterns = realloc (patterns, (pcount + 1) * sizeof (*patterns)); -+ if (patterns == NULL) -+ error (2, errno, _("memory exhausted")); -+ patterns[pcount] = patterns0; -+ -+ if ((err = re_compile_pattern (motif, len, -+ &(patterns[pcount].regexbuf))) != 0) -+ error (2, 0, err); -+ pcount++; -+ -+ motif = sep; -+ } while (sep && total != 0); -+ -+ /* In the match_words and match_lines cases, we use a different pattern -+ for the DFA matcher that will quickly throw out cases that won't work. -+ Then if DFA succeeds we do some hairy stuff using the regex matcher -+ to decide whether the match should really count. */ -+ if (match_words || match_lines) -+ { -+ /* In the whole-word case, we use the pattern: -+ (^|[^[:alnum:]_])(userpattern)([^[:alnum:]_]|$). -+ In the whole-line case, we use the pattern: -+ ^(userpattern)$. */ -+ -+ static char const line_beg[] = "^("; -+ static char const line_end[] = ")$"; -+ static char const word_beg[] = "(^|[^[:alnum:]_])("; -+ static char const word_end[] = ")([^[:alnum:]_]|$)"; -+ char *n = malloc (sizeof word_beg - 1 + size + sizeof word_end); -+ size_t i; -+ strcpy (n, match_lines ? line_beg : word_beg); -+ i = strlen(n); -+ memcpy (n + i, pattern, size); -+ i += size; -+ strcpy (n + i, match_lines ? line_end : word_end); -+ i += strlen (n + i); -+ pattern = n; -+ size = i; -+ } -+ -+ dfacomp (pattern, size, &dfa, 1); -+ kwsmusts (); -+} -+ -+static size_t -+EGexecute (char const *buf, size_t size, size_t *match_size, int exact) -+{ -+ register char const *buflim, *beg, *end; -+ char eol = eolbyte; -+ int backref, start, len; -+ struct kwsmatch kwsm; -+ size_t i; -+#ifdef MBS_SUPPORT -+ char *mb_properties = NULL; -+#endif /* MBS_SUPPORT */ -+ -+#ifdef MBS_SUPPORT -+ if (MB_CUR_MAX > 1 && kwset) -+ mb_properties = check_multibyte_string(buf, size); -+#endif /* MBS_SUPPORT */ -+ -+ buflim = buf + size; -+ -+ for (beg = end = buf; end < buflim; beg = end) -+ { -+ if (!exact) -+ { -+ if (kwset) -+ { -+ /* Find a possible match using the KWset matcher. */ -+ size_t offset = kwsexec (kwset, beg, buflim - beg, &kwsm); -+ if (offset == (size_t) -1) -+ goto failure; -+ beg += offset; -+ /* Narrow down to the line containing the candidate, and -+ run it through DFA. */ -+ end = memchr(beg, eol, buflim - beg); -+ end++; -+#ifdef MBS_SUPPORT -+ if (MB_CUR_MAX > 1 && mb_properties[beg - buf] == 0) -+ continue; -+#endif -+ while (beg > buf && beg[-1] != eol) -+ --beg; -+ if (kwsm.index < kwset_exact_matches) -+ goto success_in_beg_and_end; -+ if (dfaexec (&dfa, beg, end - beg, &backref) == (size_t) -1) -+ continue; -+ } -+ else -+ { -+ /* No good fixed strings; start with DFA. */ -+ size_t offset = dfaexec (&dfa, beg, buflim - beg, &backref); -+ if (offset == (size_t) -1) -+ break; -+ /* Narrow down to the line we've found. */ -+ beg += offset; -+ end = memchr (beg, eol, buflim - beg); -+ end++; -+ while (beg > buf && beg[-1] != eol) -+ --beg; -+ } -+ /* Successful, no backreferences encountered! */ -+ if (!backref) -+ goto success_in_beg_and_end; -+ } -+ else -+ end = beg + size; -+ -+ /* If we've made it to this point, this means DFA has seen -+ a probable match, and we need to run it through Regex. */ -+ for (i = 0; i < pcount; i++) -+ { -+ patterns[i].regexbuf.not_eol = 0; -+ if (0 <= (start = re_search (&(patterns[i].regexbuf), beg, -+ end - beg - 1, 0, -+ end - beg - 1, &(patterns[i].regs)))) -+ { -+ len = patterns[i].regs.end[0] - start; -+ if (exact && !match_words) -+ goto success_in_start_and_len; -+ if ((!match_lines && !match_words) -+ || (match_lines && len == end - beg - 1)) -+ goto success_in_beg_and_end; -+ /* If -w, check if the match aligns with word boundaries. -+ We do this iteratively because: -+ (a) the line may contain more than one occurence of the -+ pattern, and -+ (b) Several alternatives in the pattern might be valid at a -+ given point, and we may need to consider a shorter one to -+ find a word boundary. */ -+ if (match_words) -+ while (start >= 0) -+ { -+ if ((start == 0 || !WCHAR ((unsigned char) beg[start - 1])) -+ && (len == end - beg - 1 -+ || !WCHAR ((unsigned char) beg[start + len]))) -+ goto success_in_beg_and_end; -+ if (len > 0) -+ { -+ /* Try a shorter length anchored at the same place. */ -+ --len; -+ patterns[i].regexbuf.not_eol = 1; -+ len = re_match (&(patterns[i].regexbuf), beg, -+ start + len, start, -+ &(patterns[i].regs)); -+ } -+ if (len <= 0) -+ { -+ /* Try looking further on. */ -+ if (start == end - beg - 1) -+ break; -+ ++start; -+ patterns[i].regexbuf.not_eol = 0; -+ start = re_search (&(patterns[i].regexbuf), beg, -+ end - beg - 1, -+ start, end - beg - 1 - start, -+ &(patterns[i].regs)); -+ len = patterns[i].regs.end[0] - start; -+ } -+ } -+ } -+ } /* for Regex patterns. */ -+ } /* for (beg = end ..) */ -+ -+ failure: -+#ifdef MBS_SUPPORT -+ if (MB_CUR_MAX > 1 && mb_properties) -+ free (mb_properties); -+#endif /* MBS_SUPPORT */ -+ return (size_t) -1; -+ -+ success_in_beg_and_end: -+ len = end - beg; -+ start = beg - buf; -+ /* FALLTHROUGH */ -+ -+ success_in_start_and_len: -+#ifdef MBS_SUPPORT -+ if (MB_CUR_MAX > 1 && mb_properties) -+ free (mb_properties); -+#endif /* MBS_SUPPORT */ -+ *match_size = len; -+ return start; -+} -+ -+static void -+Fcompile (char const *pattern, size_t size) -+{ -+ char const *beg, *lim, *err; -+ -+ kwsinit (); -+ beg = pattern; -+ do -+ { -+ for (lim = beg; lim < pattern + size && *lim != '\n'; ++lim) -+ ; -+ if ((err = kwsincr (kwset, beg, lim - beg)) != 0) -+ error (2, 0, err); -+ if (lim < pattern + size) -+ ++lim; -+ beg = lim; -+ } -+ while (beg < pattern + size); -+ -+ if ((err = kwsprep (kwset)) != 0) -+ error (2, 0, err); -+} -+ -+static size_t -+Fexecute (char const *buf, size_t size, size_t *match_size, int exact) -+{ -+ register char const *beg, *try, *end; -+ register size_t len; -+ char eol = eolbyte; -+ struct kwsmatch kwsmatch; -+#ifdef MBS_SUPPORT -+ char *mb_properties; -+ if (MB_CUR_MAX > 1) -+ mb_properties = check_multibyte_string (buf, size); -+#endif /* MBS_SUPPORT */ -+ -+ for (beg = buf; beg <= buf + size; ++beg) -+ { -+ size_t offset = kwsexec (kwset, beg, buf + size - beg, &kwsmatch); -+ if (offset == (size_t) -1) -+ goto failure; -+#ifdef MBS_SUPPORT -+ if (MB_CUR_MAX > 1 && mb_properties[offset+beg-buf] == 0) -+ continue; /* It is a part of multibyte character. */ -+#endif /* MBS_SUPPORT */ -+ beg += offset; -+ len = kwsmatch.size[0]; -+ if (exact && !match_words) -+ goto success_in_beg_and_len; -+ if (match_lines) -+ { -+ if (beg > buf && beg[-1] != eol) -+ continue; -+ if (beg + len < buf + size && beg[len] != eol) -+ continue; -+ goto success; -+ } -+ else if (match_words) -+ for (try = beg; len; ) -+ { -+ if (try > buf && WCHAR((unsigned char) try[-1])) -+ break; -+ if (try + len < buf + size && WCHAR((unsigned char) try[len])) -+ { -+ offset = kwsexec (kwset, beg, --len, &kwsmatch); -+ if (offset == (size_t) -1) -+ { -+#ifdef MBS_SUPPORT -+ if (MB_CUR_MAX > 1) -+ free (mb_properties); -+#endif /* MBS_SUPPORT */ -+ return offset; -+ } -+ try = beg + offset; -+ len = kwsmatch.size[0]; -+ } -+ else -+ goto success; -+ } -+ else -+ goto success; -+ } -+ -+ failure: -+#ifdef MBS_SUPPORT -+ if (MB_CUR_MAX > 1) -+ free (mb_properties); -+#endif /* MBS_SUPPORT */ -+ return -1; -+ -+ success: -+ end = memchr (beg + len, eol, (buf + size) - (beg + len)); -+ end++; -+ while (buf < beg && beg[-1] != eol) -+ --beg; -+ len = end - beg; -+ /* FALLTHROUGH */ -+ -+ success_in_beg_and_len: -+ *match_size = len; -+#ifdef MBS_SUPPORT -+ if (MB_CUR_MAX > 1) -+ free (mb_properties); -+#endif /* MBS_SUPPORT */ -+ return beg - buf; -+} -+ -+#if HAVE_LIBPCRE -+/* Compiled internal form of a Perl regular expression. */ -+static pcre *cre; -+ -+/* Additional information about the pattern. */ -+static pcre_extra *extra; -+#endif -+ -+static void -+Pcompile (char const *pattern, size_t size) -+{ -+#if !HAVE_LIBPCRE -+ error (2, 0, _("The -P option is not supported")); -+#else -+ int e; -+ char const *ep; -+ char *re = xmalloc (4 * size + 7); -+ int flags = PCRE_MULTILINE | (match_icase ? PCRE_CASELESS : 0); -+ char const *patlim = pattern + size; -+ char *n = re; -+ char const *p; -+ char const *pnul; -+ -+ /* FIXME: Remove this restriction. */ -+ if (eolbyte != '\n') -+ error (2, 0, _("The -P and -z options cannot be combined")); -+ -+ *n = '\0'; -+ if (match_lines) -+ strcpy (n, "^("); -+ if (match_words) -+ strcpy (n, "\\b("); -+ n += strlen (n); -+ -+ /* The PCRE interface doesn't allow NUL bytes in the pattern, so -+ replace each NUL byte in the pattern with the four characters -+ "\000", removing a preceding backslash if there are an odd -+ number of backslashes before the NUL. -+ -+ FIXME: This method does not work with some multibyte character -+ encodings, notably Shift-JIS, where a multibyte character can end -+ in a backslash byte. */ -+ for (p = pattern; (pnul = memchr (p, '\0', patlim - p)); p = pnul + 1) -+ { -+ memcpy (n, p, pnul - p); -+ n += pnul - p; -+ for (p = pnul; pattern < p && p[-1] == '\\'; p--) -+ continue; -+ n -= (pnul - p) & 1; -+ strcpy (n, "\\000"); -+ n += 4; -+ } -+ -+ memcpy (n, p, patlim - p); -+ n += patlim - p; -+ *n = '\0'; -+ if (match_words) -+ strcpy (n, ")\\b"); -+ if (match_lines) -+ strcpy (n, ")$"); -+ -+ cre = pcre_compile (re, flags, &ep, &e, pcre_maketables ()); -+ if (!cre) -+ error (2, 0, ep); -+ -+ extra = pcre_study (cre, 0, &ep); -+ if (ep) -+ error (2, 0, ep); -+ -+ free (re); -+#endif -+} -+ -+static size_t -+Pexecute (char const *buf, size_t size, size_t *match_size, int exact) -+{ -+#if !HAVE_LIBPCRE -+ abort (); -+ return -1; -+#else -+ /* This array must have at least two elements; everything after that -+ is just for performance improvement in pcre_exec. */ -+ int sub[300]; -+ -+ int e = pcre_exec (cre, extra, buf, size, 0, 0, -+ sub, sizeof sub / sizeof *sub); -+ -+ if (e <= 0) -+ { -+ switch (e) -+ { -+ case PCRE_ERROR_NOMATCH: -+ return -1; -+ -+ case PCRE_ERROR_NOMEMORY: -+ error (2, 0, _("Memory exhausted")); -+ -+ default: -+ abort (); -+ } -+ } -+ else -+ { -+ /* Narrow down to the line we've found. */ -+ char const *beg = buf + sub[0]; -+ char const *end = buf + sub[1]; -+ char const *buflim = buf + size; -+ char eol = eolbyte; -+ if (!exact) -+ { -+ end = memchr (end, eol, buflim - end); -+ end++; -+ while (buf < beg && beg[-1] != eol) -+ --beg; -+ } -+ -+ *match_size = end - beg; -+ return beg - buf; -+ } -+#endif -+} -+ -+struct matcher const matchers[] = { -+ { "default", Gcompile, EGexecute }, -+ { "grep", Gcompile, EGexecute }, -+ { "egrep", Ecompile, EGexecute }, -+ { "awk", Ecompile, EGexecute }, -+ { "fgrep", Fcompile, Fexecute }, -+ { "perl", Pcompile, Pexecute }, -+ { "", 0, 0 }, -+}; -diff -urN grep-2.5.1a.orig/tests/fmbtest.sh grep-2.5.1a/tests/fmbtest.sh ---- grep-2.5.1a.orig/tests/fmbtest.sh 1970-01-01 05:00:00.000000000 +0500 -+++ grep-2.5.1a/tests/fmbtest.sh 2005-10-23 09:51:12.000000000 +0600 -@@ -0,0 +1,111 @@ -+#!/bin/sh -+ -+: ${srcdir=.} -+ -+# If cs_CZ.UTF-8 locale doesn't work, skip this test silently -+LC_ALL=cs_CZ.UTF-8 locale -k LC_CTYPE 2>/dev/null | ${GREP} -q charmap.*UTF-8 \ -+ || exit 77 -+ -+failures=0 -+ -+cat > csinput < cspatfile < ", -+ append_line, NEW_HEAPSIZE + 1, -+ 0, 1)) -+ goto restart; -+ -+ /* have new args; append_line points to the -+ new args and start points to the old -+ args */ -+ -+ i = grub_strlen(start); -+ j = grub_strlen(append_line); -+ -+ if (i > (j + needs_padding)) -+ amount = i; -+ else -+ amount = j + needs_padding; -+ -+ /* align rest of commands properly */ -+ memmove (start + j + needs_padding, start + i, -+ ((int) append_line) - ((int) start) - (amount)); -+ -+ if (needs_padding) -+ *start = ' '; -+ -+ /* copy command to correct area */ -+ memmove (start + needs_padding, append_line, j); -+ -+ /* set up this entry to boot */ -+ config_entries = NULL; -+ cur_entry = entry_copy; -+ heap = new_heap; -+ -+ break; -+ } - #ifdef GRUB_UTIL - if (c == 'q') - { diff --git a/src/patches/grub-0.90-symlinkmenulst.patch b/src/patches/grub-0.90-symlinkmenulst.patch deleted file mode 100644 index 553d15a6c..000000000 --- a/src/patches/grub-0.90-symlinkmenulst.patch +++ /dev/null @@ -1,16 +0,0 @@ -Only in grub: ChangeLog~ -diff -ur grub-0.90/util/grub-install.in grub/util/grub-install.in ---- grub-0.90/util/grub-install.in Wed Sep 5 15:50:06 2001 -+++ grub/util/grub-install.in Wed Sep 5 15:50:24 2001 -@@ -320,6 +320,10 @@ - exit 1 - fi - -+if ! test -e ${grubdir}/grub.conf ; then -+ test -e ${grubdir}/menu.lst && ln -s ./menu.lst ${grubdir}/grub.conf -+fi -+ - # Create a safe temporary file. - test -x /bin/mktemp && log_file=`/bin/mktemp /tmp/grub-install.log.XXXXXX` - -Only in grub/util: grub-install.in.orig diff --git a/src/patches/grub-0.91-splashimagehelp.patch b/src/patches/grub-0.91-splashimagehelp.patch deleted file mode 100644 index cc7807350..000000000 --- a/src/patches/grub-0.91-splashimagehelp.patch +++ /dev/null @@ -1,28 +0,0 @@ -diff -ur grub-0.91/docs/grub.texi grub/docs/grub.texi ---- grub-0.91/docs/grub.texi Mon Jan 21 22:57:46 2002 -+++ grub/docs/grub.texi Mon Jan 21 22:57:51 2002 -@@ -1891,6 +1891,7 @@ - * rarp:: Initialize a network device via RARP - * serial:: Set up a serial device - * setkey:: Configure the key map -+* splashimage:: Use a splash image - * terminal:: Choose a terminal - * tftpserver:: Specify a TFTP server - * unhide:: Unhide a partition -@@ -2260,6 +2261,16 @@ - @end deffn - - -+@node splashimage -+@subsection splashimage -+ -+@deffn Command splashimage file -+Select an image to use as the background image. This should be -+specified using normal GRUB device naming syntax. The format of the -+file is a gzipped xpm which is 640x480 with a 14 color palette. -+@end deffn -+ -+ - @node terminal - @subsection terminal - diff --git a/src/patches/grub-0.93-configfile.patch b/src/patches/grub-0.93-configfile.patch deleted file mode 100644 index 9cb118247..000000000 --- a/src/patches/grub-0.93-configfile.patch +++ /dev/null @@ -1,75 +0,0 @@ ---- grub-0.93/stage2/asm.S.config 2002-12-02 18:18:56.000000000 -0500 -+++ grub-0.93/stage2/asm.S 2002-12-28 22:01:24.000000000 -0500 -@@ -97,7 +97,7 @@ - .string VERSION - VARIABLE(config_file) - #ifndef STAGE1_5 -- .string "/boot/grub/menu.lst" -+ .string "/boot/grub/grub.conf" - #else /* STAGE1_5 */ - .long 0xffffffff - .string "/boot/grub/stage2" ---- grub-0.93/stage2/builtins.c.config 2002-12-03 23:41:57.000000000 -0500 -+++ grub-0.93/stage2/builtins.c 2002-12-28 22:01:24.000000000 -0500 -@@ -3838,7 +3838,7 @@ - - /* The prefix was determined. */ - grub_sprintf (stage2, "%s%s", prefix, "/stage2"); -- grub_sprintf (config_filename, "%s%s", prefix, "/menu.lst"); -+ grub_sprintf (config_filename, "%s%s", prefix, "/grub.conf"); - *real_config_filename = 0; - - /* Check if stage2 exists. */ ---- grub-0.93/grub/asmstub.c.config 2002-12-02 18:20:45.000000000 -0500 -+++ grub-0.93/grub/asmstub.c 2002-12-28 22:01:24.000000000 -0500 -@@ -71,7 +71,7 @@ - unsigned long boot_drive = 0; - int saved_entryno = 0; - char version_string[] = VERSION; --char config_file[128] = "/boot/grub/menu.lst"; /* FIXME: arbitrary */ -+char config_file[128] = "/boot/grub/grub.conf"; /* FIXME: arbitrary */ - unsigned long linux_text_len = 0; - char *linux_data_tmp_addr = 0; - char *linux_data_real_addr = 0; ---- grub-0.93/docs/grub.8.config 2002-12-07 22:17:59.000000000 -0500 -+++ grub-0.93/docs/grub.8 2002-12-28 22:01:24.000000000 -0500 -@@ -15,7 +15,7 @@ - specify stage2 boot_drive [default=0x0] - .TP - \fB\-\-config\-file\fR=\fIFILE\fR --specify stage2 config_file [default=/boot/grub/menu.lst] -+specify stage2 config_file [default=/boot/grub/grub.conf] - .TP - \fB\-\-device\-map\fR=\fIFILE\fR - use the device map file FILE ---- grub-0.93/docs/grub.texi.config 2002-12-02 17:35:28.000000000 -0500 -+++ grub-0.93/docs/grub.texi 2002-12-28 22:01:24.000000000 -0500 -@@ -989,7 +989,7 @@ - keys) that will do everything to boot an OS. - - To enable the menu, you need a configuration file, --@file{menu.lst} under the boot directory. We'll analyze an example -+@file{grub.conf} under the boot directory. We'll analyze an example - file. - - The file first contains some general settings, the menu interface -@@ -1596,8 +1596,8 @@ - - An absolute file name resembles a Unix absolute file name, using - @samp{/} for the directory separator (not @samp{\} as in DOS). One --example is @samp{(hd0,0)/boot/grub/menu.lst}. This means the file --@file{/boot/grub/menu.lst} in the first partition of the first hard -+example is @samp{(hd0,0)/boot/grub/grub.conf}. This means the file -+@file{/boot/grub/grub.conf} in the first partition of the first hard - disk. If you omit the device name in an absolute file name, GRUB uses - GRUB's @dfn{root device} implicitly. So if you set the root device to, - say, @samp{(hd1,0)} by the command @command{root} (@pxref{root}), then -@@ -3249,7 +3249,7 @@ - - @item --config-file=@var{file} - Read the configuration file @var{file} instead of --@file{/boot/grub/menu.lst}. The format is the same as the normal GRUB -+@file{/boot/grub/grub.conf}. The format is the same as the normal GRUB - syntax. See @ref{Filesystem}, for more information. - - @item --boot-drive=@var{drive} diff --git a/src/patches/grub-0.93-endedit.patch b/src/patches/grub-0.93-endedit.patch deleted file mode 100644 index eb0463cb2..000000000 --- a/src/patches/grub-0.93-endedit.patch +++ /dev/null @@ -1,77 +0,0 @@ -Index: stage2/cmdline.c -=================================================================== -RCS file: /cvsroot/grub/grub/stage2/cmdline.c,v -retrieving revision 1.27 -diff -u -r1.27 cmdline.c ---- stage2/cmdline.c 3 Dec 2002 00:02:53 -0000 1.27 -+++ stage2/cmdline.c 6 Jan 2003 05:33:33 -0000 -@@ -48,12 +48,17 @@ - - /* Print a helpful message for the command-line interface. */ - void --print_cmdline_message (int forever) -+print_cmdline_message (int type) - { - printf (" [ Minimal BASH-like line editing is supported. For the first word, TAB\n" - " lists possible command completions. Anywhere else TAB lists the possible\n" -- " completions of a device/filename.%s ]\n", -- (forever ? "" : " ESC at any time exits.")); -+ " completions of a device/filename."); -+ if (type == CMDLINE_NORMAL_MODE) -+ printf(" ESC at any time exits."); -+ if (type == CMDLINE_EDIT_MODE) -+ printf(" ESC at any time cancels. ENTER \n" -+ " at any time accepts your changes."); -+ printf("]\n"); - } - - /* Find the builtin whose command name is COMMAND and return the -@@ -128,7 +133,7 @@ - print_network_configuration (); - grub_putchar ('\n'); - #endif -- print_cmdline_message (forever); -+ print_cmdline_message (forever ? CMDLINE_FOREVER_MODE : CMDLINE_NORMAL_MODE); - - while (1) - { -Index: stage2/shared.h -=================================================================== -RCS file: /cvsroot/grub/grub/stage2/shared.h,v -retrieving revision 1.90 -diff -u -r1.90 shared.h ---- stage2/shared.h 3 Dec 2002 00:02:53 -0000 1.90 -+++ stage2/shared.h 6 Jan 2003 05:33:33 -0000 -@@ -843,9 +843,15 @@ - void init_config (void); - char *skip_to (int after_equal, char *cmdline); - struct builtin *find_command (char *command); --void print_cmdline_message (int forever); - void enter_cmdline (char *heap, int forever); - int run_script (char *script, char *heap); -+ -+/* the flags for the cmdline message */ -+#define CMDLINE_FOREVER_MODE 0x0 -+#define CMDLINE_NORMAL_MODE 0x1 -+#define CMDLINE_EDIT_MODE 0x2 -+ -+void print_cmdline_message (int type); - #endif - - /* C library replacement functions with identical semantics. */ -Index: stage2/stage2.c -=================================================================== -RCS file: /cvsroot/grub/grub/stage2/stage2.c,v -retrieving revision 1.42 -diff -u -r1.42 stage2.c ---- stage2/stage2.c 4 Dec 2002 00:55:45 -0000 1.42 -+++ stage2/stage2.c 6 Jan 2003 05:33:33 -0000 -@@ -655,7 +655,7 @@ - else - { - cls (); -- print_cmdline_message (0); -+ print_cmdline_message (CMDLINE_EDIT_MODE); - - new_heap = heap + NEW_HEAPSIZE + 1; - diff --git a/src/patches/grub-0.93-graphics-bootterm.patch b/src/patches/grub-0.93-graphics-bootterm.patch deleted file mode 100644 index 1e2be9aac..000000000 --- a/src/patches/grub-0.93-graphics-bootterm.patch +++ /dev/null @@ -1,39 +0,0 @@ ---- grub-0.93/stage2/builtins.c.bootterm 2002-12-29 02:01:50.000000000 -0500 -+++ grub-0.93/stage2/builtins.c 2002-12-29 02:01:07.000000000 -0500 -@@ -233,12 +233,22 @@ - static int - boot_func (char *arg, int flags) - { -+ struct term_entry *prev_term = current_term; - /* Clear the int15 handler if we can boot the kernel successfully. - This assumes that the boot code never fails only if KERNEL_TYPE is - not KERNEL_TYPE_NONE. Is this assumption is bad? */ - if (kernel_type != KERNEL_TYPE_NONE) - unset_int15_handler (); - -+ /* if our terminal needed initialization, we should shut it down -+ * before booting the kernel, but we want to save what it was so -+ * we can come back if needed */ -+ if (current_term->shutdown) -+ { -+ (*current_term->shutdown)(); -+ current_term = term_table; /* assumption: console is first */ -+ } -+ - #ifdef SUPPORT_NETBOOT - /* Shut down the networking. */ - cleanup_net (); -@@ -302,6 +312,13 @@ - return 1; - } - -+ /* if we get back here, we should go back to what our term was before */ -+ current_term = prev_term; -+ if (current_term->startup) -+ /* if our terminal fails to initialize, fall back to console since -+ * it should always work */ -+ if ((*current_term->startup)() == 0) -+ current_term = term_table; /* we know that console is first */ - return 0; - } - diff --git a/src/patches/grub-0.93-special-device-names.patch b/src/patches/grub-0.93-special-device-names.patch deleted file mode 100644 index 894f3e887..000000000 --- a/src/patches/grub-0.93-special-device-names.patch +++ /dev/null @@ -1,18 +0,0 @@ ---- grub-0.93/lib/device.c.raid 2002-05-20 05:53:46.000000000 -0400 -+++ grub-0.93/lib/device.c 2002-12-28 23:24:10.000000000 -0500 -@@ -689,7 +689,14 @@ - if (strcmp (dev + strlen(dev) - 5, "/disc") == 0) - strcpy (dev + strlen(dev) - 5, "/part"); - } -- sprintf (dev + strlen(dev), "%d", ((partition >> 16) & 0xFF) + 1); -+ -+ sprintf (dev + strlen(dev), "%s%d", -+ /* Compaq smart and others */ -+ (strncmp(dev, "/dev/ida/", 9) == 0 || -+ strncmp(dev, "/dev/ataraid/", 13) == 0 || -+ strncmp(dev, "/dev/cciss/", 11) == 0 || -+ strncmp(dev, "/dev/rd/", 8) == 0) ? "p" : "", -+ ((partition >> 16) & 0xFF) + 1); - - /* Open the partition. */ - fd = open (dev, O_RDWR); diff --git a/src/patches/grub-0.94-i2o.patch b/src/patches/grub-0.94-i2o.patch deleted file mode 100644 index 2af846c90..000000000 --- a/src/patches/grub-0.94-i2o.patch +++ /dev/null @@ -1,45 +0,0 @@ -Only in grub-0.94/docs: grub.info -Only in grub-0.94/docs: multiboot.info -diff -ur grub-0.94/lib/device.c grub-0.94.new/lib/device.c ---- grub-0.94/lib/device.c 2004-05-07 04:50:36.375238696 +0200 -+++ grub-0.94.new/lib/device.c 2004-05-07 04:48:57.611253104 +0200 -@@ -419,6 +419,12 @@ - { - sprintf (name, "/dev/rd/c%dd%d", controller, drive); - } -+ -+static void -+get_i2o_disk_name (char *name, int unit) -+{ -+ sprintf (name, "/dev/i2o/hd%c", unit + 'a'); -+} - #endif - - /* Check if DEVICE can be read. If an error occurs, return zero, -@@ -789,6 +795,26 @@ - } - } - } -+ -+ /* I2O disks. */ -+ for (i = 0; i < 8; i++) -+ { -+ char name[16]; -+ -+ get_i2o_disk_name (name, i); -+ if (check_device (name)) -+ { -+ (*map)[num_hd + 0x80] = strdup (name); -+ assert ((*map)[num_hd + 0x80]); -+ -+ /* If the device map file is opened, write the map. */ -+ if (fp) -+ fprintf (fp, "(hd%d)\t%s\n", num_hd, name); -+ -+ num_hd++; -+ } -+ } -+ - #endif /* __linux__ */ - - /* OK, close the device map file if opened. */ diff --git a/src/patches/grub-0.94-installcopyonly.patch b/src/patches/grub-0.94-installcopyonly.patch deleted file mode 100644 index a2e38fbd5..000000000 --- a/src/patches/grub-0.94-installcopyonly.patch +++ /dev/null @@ -1,85 +0,0 @@ ---- grub-0.94/util/grub-install.in.copyonly 2004-02-02 16:33:29.172127985 -0500 -+++ grub-0.94/util/grub-install.in 2004-02-02 16:34:26.027454320 -0500 -@@ -40,6 +40,7 @@ - force_lba= - recheck=no - debug=no -+justcopy=no - - # look for secure tempfile creation wrappers on this platform - if test -x /bin/tempfile; then -@@ -221,6 +222,17 @@ - echo "$tmp_fname" - } - -+copy_images() { -+ # Copy the GRUB images to the GRUB directory. -+ for file in ${grubdir}/stage1 ${grubdir}/stage2 ${grubdir}/*stage1_5; do -+ rm -f $file || exit 1 -+ done -+ for file in \ -+ ${pkgdatadir}/stage1 ${pkgdatadir}/stage2 ${pkgdatadir}/*stage1_5; do -+ cp -f $file ${grubdir} || exit 1 -+ done -+} -+ - # Check the arguments. - for option in "$@"; do - case "$option" in -@@ -240,6 +252,8 @@ - force_lba="--force-lba" ;; - --recheck) - recheck=yes ;; -+ --just-copy) -+ justcopy=yes ;; - # This is an undocumented feature... - --debug) - debug=yes ;; -@@ -258,12 +272,6 @@ - esac - done - --if test "x$install_device" = x; then -- echo "install_device not specified." 1>&2 -- usage -- exit 1 --fi -- - # If the debugging feature is enabled, print commands. - if test $debug = yes; then - set -x -@@ -286,6 +294,18 @@ - grubdir=${bootdir}/grub - device_map=${grubdir}/device.map - -+# if they just want the images copied, copy the images and then exit -+if test $justcopy = yes; then -+ copy_images -+ exit 0 -+fi -+ -+if test "x$install_device" = x; then -+ echo "install_device not specified." 1>&2 -+ usage -+ exit 1 -+fi -+ - # Check if GRUB is installed. - # This is necessary, because the user can specify "grub --read-only". - set $grub_shell dummy -@@ -317,14 +337,7 @@ - test -d "$bootdir" || mkdir "$bootdir" || exit 1 - test -d "$grubdir" || mkdir "$grubdir" || exit 1 - --# Copy the GRUB images to the GRUB directory. --for file in ${grubdir}/stage1 ${grubdir}/stage2 ${grubdir}/*stage1_5; do -- rm -f $file || exit 1 --done --for file in \ -- ${pkgdatadir}/stage1 ${pkgdatadir}/stage2 ${pkgdatadir}/*stage1_5; do -- cp -f $file ${grubdir} || exit 1 --done -+copy_images - - # If --recheck is specified, remove the device map, if present. - if test $recheck = yes; then diff --git a/src/patches/grub-0.95-graphics.patch b/src/patches/grub-0.95-graphics.patch deleted file mode 100644 index 0c62b77f2..000000000 --- a/src/patches/grub-0.95-graphics.patch +++ /dev/null @@ -1,1283 +0,0 @@ ---- grub-0.95/stage2/asm.S.graphics 2004-06-18 17:35:51.932054040 -0400 -+++ grub-0.95/stage2/asm.S 2004-06-18 17:35:52.473971656 -0400 -@@ -2215,6 +2215,156 @@ - pop %ebx - pop %ebp - ret -+ -+/* graphics mode functions */ -+#ifdef SUPPORT_GRAPHICS -+VARIABLE(cursorX) -+.word 0 -+VARIABLE(cursorY) -+.word 0 -+VARIABLE(cursorCount) -+.word 0 -+VARIABLE(cursorBuf) -+.byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -+ -+ -+/* -+ * int set_videomode(mode) -+ * BIOS call "INT 10H Function 0h" to set video mode -+ * Call with %ah = 0x0 -+ * %al = video mode -+ * Returns old videomode. -+ */ -+ENTRY(set_videomode) -+ push %ebp -+ push %ebx -+ push %ecx -+ -+ movb 0x10(%esp), %cl -+ -+ call EXT_C(prot_to_real) -+ .code16 -+ -+ xorw %bx, %bx -+ movb $0xf, %ah -+ int $0x10 /* Get Current Video mode */ -+ movb %al, %ch -+ xorb %ah, %ah -+ movb %cl, %al -+ int $0x10 /* Set Video mode */ -+ -+ DATA32 call EXT_C(real_to_prot) -+ .code32 -+ -+ xorb %ah, %ah -+ movb %ch, %al -+ -+ pop %ecx -+ pop %ebx -+ pop %ebp -+ ret -+ -+ -+/* -+ * unsigned char * graphics_get_font() -+ * BIOS call "INT 10H Function 11h" to set font -+ * Call with %ah = 0x11 -+ */ -+ENTRY(graphics_get_font) -+ push %ebp -+ push %ebx -+ push %ecx -+ push %edx -+ -+ call EXT_C(prot_to_real) -+ .code16 -+ -+ movw $0x1130, %ax -+ movb $6, %bh /* font 8x16 */ -+ int $0x10 -+ movw %bp, %dx -+ movw %es, %cx -+ -+ DATA32 call EXT_C(real_to_prot) -+ .code32 -+ -+ xorl %eax, %eax -+ movw %cx, %ax -+ shll $4, %eax -+ movw %dx, %ax -+ -+ pop %edx -+ pop %ecx -+ pop %ebx -+ pop %ebp -+ ret -+ -+ -+ -+/* -+ * graphics_set_palette(index, red, green, blue) -+ * BIOS call "INT 10H Function 10h" to set individual dac register -+ * Call with %ah = 0x10 -+ * %bx = register number -+ * %ch = new value for green (0-63) -+ * %cl = new value for blue (0-63) -+ * %dh = new value for red (0-63) -+ */ -+ -+ENTRY(graphics_set_palette) -+ push %ebp -+ push %eax -+ push %ebx -+ push %ecx -+ push %edx -+ -+ movw $0x3c8, %bx /* address write mode register */ -+ -+ /* wait vertical retrace */ -+ -+ movw $0x3da, %dx -+l1b: inb %dx, %al /* wait vertical active display */ -+ test $8, %al -+ jnz l1b -+ -+l2b: inb %dx, %al /* wait vertical retrace */ -+ test $8, %al -+ jnz l2b -+ -+ mov %bx, %dx -+ movb 0x18(%esp), %al /* index */ -+ outb %al, %dx -+ inc %dx -+ -+ movb 0x1c(%esp), %al /* red */ -+ outb %al, %dx -+ -+ movb 0x20(%esp), %al /* green */ -+ outb %al, %dx -+ -+ movb 0x24(%esp), %al /* blue */ -+ outb %al, %dx -+ -+ movw 0x18(%esp), %bx -+ -+ call EXT_C(prot_to_real) -+ .code16 -+ -+ movb %bl, %bh -+ movw $0x1000, %ax -+ int $0x10 -+ -+ DATA32 call EXT_C(real_to_prot) -+ .code32 -+ -+ pop %edx -+ pop %ecx -+ pop %ebx -+ pop %eax -+ pop %ebp -+ ret -+ -+#endif /* SUPPORT_GRAPHICS */ - - /* - * getrtsecs() ---- grub-0.95/stage2/stage2.c.graphics 2004-06-18 17:35:52.314995824 -0400 -+++ grub-0.95/stage2/stage2.c 2004-06-18 17:35:52.494968464 -0400 -@@ -233,6 +233,7 @@ - { - int c, time1, time2 = -1, first_entry = 0; - char *cur_entry = 0; -+ struct term_entry *prev_term = NULL; - - /* - * Main loop for menu UI. -@@ -807,6 +808,15 @@ - - cls (); - setcursor (1); -+ /* if our terminal needed initialization, we should shut it down -+ * before booting the kernel, but we want to save what it was so -+ * we can come back if needed */ -+ prev_term = current_term; -+ if (current_term->shutdown) -+ { -+ (*current_term->shutdown)(); -+ current_term = term_table; /* assumption: console is first */ -+ } - - while (1) - { -@@ -838,6 +848,13 @@ - break; - } - -+ /* if we get back here, we should go back to what our term was before */ -+ current_term = prev_term; -+ if (current_term->startup) -+ /* if our terminal fails to initialize, fall back to console since -+ * it should always work */ -+ if ((*current_term->startup)() == 0) -+ current_term = term_table; /* we know that console is first */ - show_menu = 1; - goto restart; - } -@@ -1082,6 +1099,10 @@ - while (is_preset); - } - -+ /* go ahead and make sure the terminal is setup */ -+ if (current_term->startup) -+ (*current_term->startup)(); -+ - if (! num_entries) - { - /* If no acceptable config file, goto command-line, starting ---- grub-0.95/stage2/builtins.c.graphics 2004-06-18 17:35:52.370987312 -0400 -+++ grub-0.95/stage2/builtins.c 2004-06-18 17:35:52.482970288 -0400 -@@ -858,6 +858,138 @@ - }; - #endif /* SUPPORT_NETBOOT */ - -+static int terminal_func (char *arg, int flags); -+ -+#ifdef SUPPORT_GRAPHICS -+ -+static int splashimage_func(char *arg, int flags) { -+ char splashimage[64]; -+ int i; -+ -+ /* filename can only be 64 characters due to our buffer size */ -+ if (strlen(arg) > 63) -+ return 1; -+ if (flags == BUILTIN_CMDLINE) { -+ if (!grub_open(arg)) -+ return 1; -+ grub_close(); -+ } -+ -+ strcpy(splashimage, arg); -+ -+ /* get rid of TERM_NEED_INIT from the graphics terminal. */ -+ for (i = 0; term_table[i].name; i++) { -+ if (grub_strcmp (term_table[i].name, "graphics") == 0) { -+ term_table[i].flags &= ~TERM_NEED_INIT; -+ break; -+ } -+ } -+ -+ graphics_set_splash(splashimage); -+ -+ if (flags == BUILTIN_CMDLINE && graphics_inited) { -+ graphics_end(); -+ graphics_init(); -+ graphics_cls(); -+ } -+ -+ /* FIXME: should we be explicitly switching the terminal as a -+ * side effect here? */ -+ terminal_func("graphics", flags); -+ -+ return 0; -+} -+ -+static struct builtin builtin_splashimage = -+{ -+ "splashimage", -+ splashimage_func, -+ BUILTIN_CMDLINE | BUILTIN_MENU | BUILTIN_HELP_LIST, -+ "splashimage FILE", -+ "Load FILE as the background image when in graphics mode." -+}; -+ -+ -+/* foreground */ -+static int -+foreground_func(char *arg, int flags) -+{ -+ if (grub_strlen(arg) == 6) { -+ int r = ((hex(arg[0]) << 4) | hex(arg[1])) >> 2; -+ int g = ((hex(arg[2]) << 4) | hex(arg[3])) >> 2; -+ int b = ((hex(arg[4]) << 4) | hex(arg[5])) >> 2; -+ -+ foreground = (r << 16) | (g << 8) | b; -+ if (graphics_inited) -+ graphics_set_palette(15, r, g, b); -+ -+ return (0); -+ } -+ -+ return (1); -+} -+ -+static struct builtin builtin_foreground = -+{ -+ "foreground", -+ foreground_func, -+ BUILTIN_CMDLINE | BUILTIN_MENU | BUILTIN_HELP_LIST, -+ "foreground RRGGBB", -+ "Sets the foreground color when in graphics mode." -+ "RR is red, GG is green, and BB blue. Numbers must be in hexadecimal." -+}; -+ -+ -+/* background */ -+static int -+background_func(char *arg, int flags) -+{ -+ if (grub_strlen(arg) == 6) { -+ int r = ((hex(arg[0]) << 4) | hex(arg[1])) >> 2; -+ int g = ((hex(arg[2]) << 4) | hex(arg[3])) >> 2; -+ int b = ((hex(arg[4]) << 4) | hex(arg[5])) >> 2; -+ -+ background = (r << 16) | (g << 8) | b; -+ if (graphics_inited) -+ graphics_set_palette(0, r, g, b); -+ return (0); -+ } -+ -+ return (1); -+} -+ -+static struct builtin builtin_background = -+{ -+ "background", -+ background_func, -+ BUILTIN_CMDLINE | BUILTIN_MENU | BUILTIN_HELP_LIST, -+ "background RRGGBB", -+ "Sets the background color when in graphics mode." -+ "RR is red, GG is green, and BB blue. Numbers must be in hexadecimal." -+}; -+ -+#endif /* SUPPORT_GRAPHICS */ -+ -+ -+/* clear */ -+static int -+clear_func() -+{ -+ if (current_term->cls) -+ current_term->cls(); -+ -+ return 0; -+} -+ -+static struct builtin builtin_clear = -+{ -+ "clear", -+ clear_func, -+ BUILTIN_CMDLINE | BUILTIN_HELP_LIST, -+ "clear", -+ "Clear the screen" -+}; -+ - - /* displayapm */ - static int -@@ -4090,7 +4222,7 @@ - }; - - --#if defined(SUPPORT_SERIAL) || defined(SUPPORT_HERCULES) -+#if defined(SUPPORT_SERIAL) || defined(SUPPORT_HERCULES) || defined(SUPPORT_GRAPHICS) - /* terminal */ - static int - terminal_func (char *arg, int flags) -@@ -4249,17 +4381,21 @@ - end: - current_term = term_table + default_term; - current_term->flags = term_flags; -- -+ - if (lines) - max_lines = lines; - else -- /* 24 would be a good default value. */ -- max_lines = 24; -- -+ max_lines = current_term->max_lines; -+ - /* If the interface is currently the command-line, - restart it to repaint the screen. */ -- if (current_term != prev_term && (flags & BUILTIN_CMDLINE)) -+ if ((current_term != prev_term) && (flags & BUILTIN_CMDLINE)){ -+ if (prev_term->shutdown) -+ prev_term->shutdown(); -+ if (current_term->startup) -+ current_term->startup(); - grub_longjmp (restart_cmdline_env, 0); -+ } - - return 0; - } -@@ -4269,7 +4405,7 @@ - "terminal", - terminal_func, - BUILTIN_MENU | BUILTIN_CMDLINE | BUILTIN_HELP_LIST, -- "terminal [--dumb] [--no-echo] [--no-edit] [--timeout=SECS] [--lines=LINES] [--silent] [console] [serial] [hercules]", -+ "terminal [--dumb] [--no-echo] [--no-edit] [--timeout=SECS] [--lines=LINES] [--silent] [console] [serial] [hercules] [graphics]", - "Select a terminal. When multiple terminals are specified, wait until" - " you push any key to continue. If both console and serial are specified," - " the terminal to which you input a key first will be selected. If no" -@@ -4281,7 +4417,7 @@ - " seconds. The option --lines specifies the maximum number of lines." - " The option --silent is used to suppress messages." - }; --#endif /* SUPPORT_SERIAL || SUPPORT_HERCULES */ -+#endif /* SUPPORT_SERIAL || SUPPORT_HERCULES || SUPPORT_GRAPHICS */ - - - #ifdef SUPPORT_SERIAL -@@ -4809,6 +4945,9 @@ - /* The table of builtin commands. Sorted in dictionary order. */ - struct builtin *builtin_table[] = - { -+#ifdef SUPPORT_GRAPHICS -+ &builtin_background, -+#endif - &builtin_blocklist, - &builtin_boot, - #ifdef SUPPORT_NETBOOT -@@ -4816,6 +4955,7 @@ - #endif /* SUPPORT_NETBOOT */ - &builtin_cat, - &builtin_chainloader, -+ &builtin_clear, - &builtin_cmp, - &builtin_color, - &builtin_configfile, -@@ -4835,6 +4975,9 @@ - &builtin_embed, - &builtin_fallback, - &builtin_find, -+#ifdef SUPPORT_GRAPHICS -+ &builtin_foreground, -+#endif - &builtin_fstest, - &builtin_geometry, - &builtin_halt, -@@ -4878,9 +5021,12 @@ - #endif /* SUPPORT_SERIAL */ - &builtin_setkey, - &builtin_setup, --#if defined(SUPPORT_SERIAL) || defined(SUPPORT_HERCULES) -+#ifdef SUPPORT_GRAPHICS -+ &builtin_splashimage, -+#endif /* SUPPORT_GRAPHICS */ -+#if defined(SUPPORT_SERIAL) || defined(SUPPORT_HERCULES) || defined(SUPPORT_GRAPHICS) - &builtin_terminal, --#endif /* SUPPORT_SERIAL || SUPPORT_HERCULES */ -+#endif /* SUPPORT_SERIAL || SUPPORT_HERCULES || SUPPORT_GRAPHICS */ - #ifdef SUPPORT_SERIAL - &builtin_terminfo, - #endif /* SUPPORT_SERIAL */ ---- /dev/null 2004-02-23 16:02:56.000000000 -0500 -+++ grub-0.95/stage2/graphics.c 2004-06-18 17:35:52.488969376 -0400 -@@ -0,0 +1,552 @@ -+/* graphics.c - graphics mode support for GRUB */ -+/* Implemented as a terminal type by Jeremy Katz based -+ * on a patch by Paulo César Pereira de Andrade -+ */ -+/* -+ * GRUB -- GRand Unified Bootloader -+ * Copyright (C) 2001,2002 Red Hat, Inc. -+ * Portions copyright (C) 2000 Conectiva, Inc. -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -+ */ -+ -+ -+ -+#ifdef SUPPORT_GRAPHICS -+ -+#include -+#include -+#include -+ -+int saved_videomode; -+unsigned char *font8x16; -+ -+int graphics_inited = 0; -+static char splashimage[64]; -+ -+#define VSHADOW VSHADOW1 -+unsigned char VSHADOW1[38400]; -+unsigned char VSHADOW2[38400]; -+unsigned char VSHADOW4[38400]; -+unsigned char VSHADOW8[38400]; -+ -+/* constants to define the viewable area */ -+const int x0 = 0; -+const int x1 = 80; -+const int y0 = 0; -+const int y1 = 30; -+ -+/* text buffer has to be kept around so that we can write things as we -+ * scroll and the like */ -+unsigned short text[80 * 30]; -+ -+/* why do these have to be kept here? */ -+int foreground = (63 << 16) | (63 << 8) | (63), background = 0, border = 0; -+ -+/* current position */ -+static int fontx = 0; -+static int fonty = 0; -+ -+/* global state so that we don't try to recursively scroll or cursor */ -+static int no_scroll = 0; -+ -+/* color state */ -+static int graphics_standard_color = A_NORMAL; -+static int graphics_normal_color = A_NORMAL; -+static int graphics_highlight_color = A_REVERSE; -+static int graphics_current_color = A_NORMAL; -+static color_state graphics_color_state = COLOR_STATE_STANDARD; -+ -+ -+/* graphics local functions */ -+static void graphics_setxy(int col, int row); -+static void graphics_scroll(); -+ -+/* FIXME: where do these really belong? */ -+static inline void outb(unsigned short port, unsigned char val) -+{ -+ __asm __volatile ("outb %0,%1"::"a" (val), "d" (port)); -+} -+ -+static void MapMask(int value) { -+ outb(0x3c4, 2); -+ outb(0x3c5, value); -+} -+ -+/* bit mask register */ -+static void BitMask(int value) { -+ outb(0x3ce, 8); -+ outb(0x3cf, value); -+} -+ -+ -+ -+/* Set the splash image */ -+void graphics_set_splash(char *splashfile) { -+ grub_strcpy(splashimage, splashfile); -+} -+ -+/* Get the current splash image */ -+char *graphics_get_splash(void) { -+ return splashimage; -+} -+ -+/* Initialize a vga16 graphics display with the palette based off of -+ * the image in splashimage. If the image doesn't exist, leave graphics -+ * mode. */ -+int graphics_init() -+{ -+ if (!graphics_inited) { -+ saved_videomode = set_videomode(0x12); -+ } -+ -+ if (!read_image(splashimage)) { -+ set_videomode(saved_videomode); -+ grub_printf("failed to read image\n"); -+ return 0; -+ } -+ -+ font8x16 = (unsigned char*)graphics_get_font(); -+ -+ graphics_inited = 1; -+ -+ /* make sure that the highlight color is set correctly */ -+ graphics_highlight_color = ((graphics_normal_color >> 4) | -+ ((graphics_normal_color & 0xf) << 4)); -+ -+ return 1; -+} -+ -+/* Leave graphics mode */ -+void graphics_end(void) -+{ -+ if (graphics_inited) { -+ set_videomode(saved_videomode); -+ graphics_inited = 0; -+ } -+} -+ -+/* Print ch on the screen. Handle any needed scrolling or the like */ -+void graphics_putchar(int ch) { -+ ch &= 0xff; -+ -+ graphics_cursor(0); -+ -+ if (ch == '\n') { -+ if (fonty + 1 < y1) -+ graphics_setxy(fontx, fonty + 1); -+ else -+ graphics_scroll(); -+ graphics_cursor(1); -+ return; -+ } else if (ch == '\r') { -+ graphics_setxy(x0, fonty); -+ graphics_cursor(1); -+ return; -+ } -+ -+ graphics_cursor(0); -+ -+ text[fonty * 80 + fontx] = ch; -+ text[fonty * 80 + fontx] &= 0x00ff; -+ if (graphics_current_color & 0xf0) -+ text[fonty * 80 + fontx] |= 0x100; -+ -+ graphics_cursor(0); -+ -+ if ((fontx + 1) >= x1) { -+ graphics_setxy(x0, fonty); -+ if (fonty + 1 < y1) -+ graphics_setxy(x0, fonty + 1); -+ else -+ graphics_scroll(); -+ } else { -+ graphics_setxy(fontx + 1, fonty); -+ } -+ -+ graphics_cursor(1); -+} -+ -+/* get the current location of the cursor */ -+int graphics_getxy(void) { -+ return (fontx << 8) | fonty; -+} -+ -+void graphics_gotoxy(int x, int y) { -+ graphics_cursor(0); -+ -+ graphics_setxy(x, y); -+ -+ graphics_cursor(1); -+} -+ -+void graphics_cls(void) { -+ int i; -+ unsigned char *mem, *s1, *s2, *s4, *s8; -+ -+ graphics_cursor(0); -+ graphics_gotoxy(x0, y0); -+ -+ mem = (unsigned char*)VIDEOMEM; -+ s1 = (unsigned char*)VSHADOW1; -+ s2 = (unsigned char*)VSHADOW2; -+ s4 = (unsigned char*)VSHADOW4; -+ s8 = (unsigned char*)VSHADOW8; -+ -+ for (i = 0; i < 80 * 30; i++) -+ text[i] = ' '; -+ graphics_cursor(1); -+ -+ BitMask(0xff); -+ -+ /* plano 1 */ -+ MapMask(1); -+ grub_memcpy(mem, s1, 38400); -+ -+ /* plano 2 */ -+ MapMask(2); -+ grub_memcpy(mem, s2, 38400); -+ -+ /* plano 3 */ -+ MapMask(4); -+ grub_memcpy(mem, s4, 38400); -+ -+ /* plano 4 */ -+ MapMask(8); -+ grub_memcpy(mem, s8, 38400); -+ -+ MapMask(15); -+ -+} -+ -+void graphics_setcolorstate (color_state state) { -+ switch (state) { -+ case COLOR_STATE_STANDARD: -+ graphics_current_color = graphics_standard_color; -+ break; -+ case COLOR_STATE_NORMAL: -+ graphics_current_color = graphics_normal_color; -+ break; -+ case COLOR_STATE_HIGHLIGHT: -+ graphics_current_color = graphics_highlight_color; -+ break; -+ default: -+ graphics_current_color = graphics_standard_color; -+ break; -+ } -+ -+ graphics_color_state = state; -+} -+ -+void graphics_setcolor (int normal_color, int highlight_color) { -+ graphics_normal_color = normal_color; -+ graphics_highlight_color = highlight_color; -+ -+ graphics_setcolorstate (graphics_color_state); -+} -+ -+void graphics_setcursor (int on) { -+ /* FIXME: we don't have a cursor in graphics */ -+ return; -+} -+ -+/* Read in the splashscreen image and set the palette up appropriately. -+ * Format of splashscreen is an xpm (can be gzipped) with 16 colors and -+ * 640x480. */ -+int read_image(char *s) -+{ -+ char buf[32], pal[16]; -+ unsigned char c, base, mask, *s1, *s2, *s4, *s8; -+ unsigned i, len, idx, colors, x, y, width, height; -+ -+ if (!grub_open(s)) -+ return 0; -+ -+ /* read header */ -+ if (!grub_read((char*)&buf, 10) || grub_memcmp(buf, "/* XPM */\n", 10)) { -+ grub_close(); -+ return 0; -+ } -+ -+ /* parse info */ -+ while (grub_read(&c, 1)) { -+ if (c == '"') -+ break; -+ } -+ -+ while (grub_read(&c, 1) && (c == ' ' || c == '\t')) -+ ; -+ -+ i = 0; -+ width = c - '0'; -+ while (grub_read(&c, 1)) { -+ if (c >= '0' && c <= '9') -+ width = width * 10 + c - '0'; -+ else -+ break; -+ } -+ while (grub_read(&c, 1) && (c == ' ' || c == '\t')) -+ ; -+ -+ height = c - '0'; -+ while (grub_read(&c, 1)) { -+ if (c >= '0' && c <= '9') -+ height = height * 10 + c - '0'; -+ else -+ break; -+ } -+ while (grub_read(&c, 1) && (c == ' ' || c == '\t')) -+ ; -+ -+ colors = c - '0'; -+ while (grub_read(&c, 1)) { -+ if (c >= '0' && c <= '9') -+ colors = colors * 10 + c - '0'; -+ else -+ break; -+ } -+ -+ base = 0; -+ while (grub_read(&c, 1) && c != '"') -+ ; -+ -+ /* palette */ -+ for (i = 0, idx = 1; i < colors; i++) { -+ len = 0; -+ -+ while (grub_read(&c, 1) && c != '"') -+ ; -+ grub_read(&c, 1); /* char */ -+ base = c; -+ grub_read(buf, 4); /* \t c # */ -+ -+ while (grub_read(&c, 1) && c != '"') { -+ if (len < sizeof(buf)) -+ buf[len++] = c; -+ } -+ -+ if (len == 6 && idx < 15) { -+ int r = ((hex(buf[0]) << 4) | hex(buf[1])) >> 2; -+ int g = ((hex(buf[2]) << 4) | hex(buf[3])) >> 2; -+ int b = ((hex(buf[4]) << 4) | hex(buf[5])) >> 2; -+ -+ pal[idx] = base; -+ graphics_set_palette(idx, r, g, b); -+ ++idx; -+ } -+ } -+ -+ x = y = len = 0; -+ -+ s1 = (unsigned char*)VSHADOW1; -+ s2 = (unsigned char*)VSHADOW2; -+ s4 = (unsigned char*)VSHADOW4; -+ s8 = (unsigned char*)VSHADOW8; -+ -+ for (i = 0; i < 38400; i++) -+ s1[i] = s2[i] = s4[i] = s8[i] = 0; -+ -+ /* parse xpm data */ -+ while (y < height) { -+ while (1) { -+ if (!grub_read(&c, 1)) { -+ grub_close(); -+ return 0; -+ } -+ if (c == '"') -+ break; -+ } -+ -+ while (grub_read(&c, 1) && c != '"') { -+ for (i = 1; i < 15; i++) -+ if (pal[i] == c) { -+ c = i; -+ break; -+ } -+ -+ mask = 0x80 >> (x & 7); -+ if (c & 1) -+ s1[len + (x >> 3)] |= mask; -+ if (c & 2) -+ s2[len + (x >> 3)] |= mask; -+ if (c & 4) -+ s4[len + (x >> 3)] |= mask; -+ if (c & 8) -+ s8[len + (x >> 3)] |= mask; -+ -+ if (++x >= 640) { -+ x = 0; -+ -+ if (y < 480) -+ len += 80; -+ ++y; -+ } -+ } -+ } -+ -+ grub_close(); -+ -+ graphics_set_palette(0, (background >> 16), (background >> 8) & 63, -+ background & 63); -+ graphics_set_palette(15, (foreground >> 16), (foreground >> 8) & 63, -+ foreground & 63); -+ graphics_set_palette(0x11, (border >> 16), (border >> 8) & 63, -+ border & 63); -+ -+ return 1; -+} -+ -+ -+/* Convert a character which is a hex digit to the appropriate integer */ -+int hex(int v) -+{ -+ if (v >= 'A' && v <= 'F') -+ return (v - 'A' + 10); -+ if (v >= 'a' && v <= 'f') -+ return (v - 'a' + 10); -+ return (v - '0'); -+} -+ -+ -+/* move the graphics cursor location to col, row */ -+static void graphics_setxy(int col, int row) { -+ if (col >= x0 && col < x1) { -+ fontx = col; -+ cursorX = col << 3; -+ } -+ if (row >= y0 && row < y1) { -+ fonty = row; -+ cursorY = row << 4; -+ } -+} -+ -+/* scroll the screen */ -+static void graphics_scroll() { -+ int i, j; -+ -+ /* we don't want to scroll recursively... that would be bad */ -+ if (no_scroll) -+ return; -+ no_scroll = 1; -+ -+ /* move everything up a line */ -+ for (j = y0 + 1; j < y1; j++) { -+ graphics_gotoxy(x0, j - 1); -+ for (i = x0; i < x1; i++) { -+ graphics_putchar(text[j * 80 + i]); -+ } -+ } -+ -+ /* last line should be blank */ -+ graphics_gotoxy(x0, y1 - 1); -+ for (i = x0; i < x1; i++) -+ graphics_putchar(' '); -+ graphics_setxy(x0, y1 - 1); -+ -+ no_scroll = 0; -+} -+ -+ -+void graphics_cursor(int set) { -+ unsigned char *pat, *mem, *ptr, chr[16 << 2]; -+ int i, ch, invert, offset; -+ -+ if (set && no_scroll) -+ return; -+ -+ offset = cursorY * 80 + fontx; -+ ch = text[fonty * 80 + fontx] & 0xff; -+ invert = (text[fonty * 80 + fontx] & 0xff00) != 0; -+ pat = font8x16 + (ch << 4); -+ -+ mem = (unsigned char*)VIDEOMEM + offset; -+ -+ if (!set) { -+ for (i = 0; i < 16; i++) { -+ unsigned char mask = pat[i]; -+ -+ if (!invert) { -+ chr[i ] = ((unsigned char*)VSHADOW1)[offset]; -+ chr[16 + i] = ((unsigned char*)VSHADOW2)[offset]; -+ chr[32 + i] = ((unsigned char*)VSHADOW4)[offset]; -+ chr[48 + i] = ((unsigned char*)VSHADOW8)[offset]; -+ -+ /* FIXME: if (shade) */ -+ if (1) { -+ if (ch == DISP_VERT || ch == DISP_LL || -+ ch == DISP_UR || ch == DISP_LR) { -+ unsigned char pmask = ~(pat[i] >> 1); -+ -+ chr[i ] &= pmask; -+ chr[16 + i] &= pmask; -+ chr[32 + i] &= pmask; -+ chr[48 + i] &= pmask; -+ } -+ if (i > 0 && ch != DISP_VERT) { -+ unsigned char pmask = ~(pat[i - 1] >> 1); -+ -+ chr[i ] &= pmask; -+ chr[16 + i] &= pmask; -+ chr[32 + i] &= pmask; -+ chr[48 + i] &= pmask; -+ if (ch == DISP_HORIZ || ch == DISP_UR || ch == DISP_LR) { -+ pmask = ~pat[i - 1]; -+ -+ chr[i ] &= pmask; -+ chr[16 + i] &= pmask; -+ chr[32 + i] &= pmask; -+ chr[48 + i] &= pmask; -+ } -+ } -+ } -+ chr[i ] |= mask; -+ chr[16 + i] |= mask; -+ chr[32 + i] |= mask; -+ chr[48 + i] |= mask; -+ -+ offset += 80; -+ } -+ else { -+ chr[i ] = mask; -+ chr[16 + i] = mask; -+ chr[32 + i] = mask; -+ chr[48 + i] = mask; -+ } -+ } -+ } -+ else { -+ MapMask(15); -+ ptr = mem; -+ for (i = 0; i < 16; i++, ptr += 80) { -+ cursorBuf[i] = pat[i]; -+ *ptr = ~pat[i]; -+ } -+ return; -+ } -+ -+ offset = 0; -+ for (i = 1; i < 16; i <<= 1, offset += 16) { -+ int j; -+ -+ MapMask(i); -+ ptr = mem; -+ for (j = 0; j < 16; j++, ptr += 80) -+ *ptr = chr[j + offset]; -+ } -+ -+ MapMask(15); -+} -+ -+#endif /* SUPPORT_GRAPHICS */ ---- grub-0.95/stage2/Makefile.am.graphics 2004-06-13 13:57:27.000000000 -0400 -+++ grub-0.95/stage2/Makefile.am 2004-06-18 17:36:58.289966104 -0400 -@@ -7,7 +7,7 @@ - fat.h filesys.h freebsd.h fs.h hercules.h i386-elf.h \ - imgact_aout.h iso9660.h jfs.h mb_header.h mb_info.h md5.h \ - nbi.h pc_slice.h serial.h shared.h smp-imps.h term.h \ -- terminfo.h tparm.h nbi.h ufs2.h vstafs.h xfs.h -+ terminfo.h tparm.h nbi.h ufs2.h vstafs.h xfs.h graphics.h - EXTRA_DIST = setjmp.S apm.S $(noinst_SCRIPTS) - - # For . -@@ -19,7 +19,7 @@ - disk_io.c fsys_ext2fs.c fsys_fat.c fsys_ffs.c fsys_iso9660.c \ - fsys_jfs.c fsys_minix.c fsys_reiserfs.c fsys_ufs2.c \ - fsys_vstafs.c fsys_xfs.c gunzip.c md5.c serial.c stage2.c \ -- terminfo.c tparm.c -+ terminfo.c tparm.c graphics.c - libgrub_a_CFLAGS = $(GRUB_CFLAGS) -I$(top_srcdir)/lib \ - -DGRUB_UTIL=1 -DFSYS_EXT2FS=1 -DFSYS_FAT=1 -DFSYS_FFS=1 \ - -DFSYS_ISO9660=1 -DFSYS_JFS=1 -DFSYS_MINIX=1 -DFSYS_REISERFS=1 \ -@@ -80,8 +80,14 @@ - HERCULES_FLAGS = - endif - -+if GRAPHICS_SUPPORT -+GRAPHICS_FLAGS = -DSUPPORT_GRAPHICS=1 -+else -+GRAPHICS_FLAGS = -+endif -+ - STAGE2_COMPILE = $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ -- $(NETBOOT_FLAGS) $(SERIAL_FLAGS) $(HERCULES_FLAGS) -+ $(NETBOOT_FLAGS) $(SERIAL_FLAGS) $(HERCULES_FLAGS) $(GRAPHICS_FLAGS) - - STAGE1_5_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,2000 - STAGE1_5_COMPILE = $(STAGE2_COMPILE) -DNO_DECOMPRESSION=1 -DSTAGE1_5=1 -@@ -91,7 +97,8 @@ - cmdline.c common.c console.c disk_io.c fsys_ext2fs.c \ - fsys_fat.c fsys_ffs.c fsys_iso9660.c fsys_jfs.c fsys_minix.c \ - fsys_reiserfs.c fsys_ufs2.c fsys_vstafs.c fsys_xfs.c gunzip.c \ -- hercules.c md5.c serial.c smp-imps.c stage2.c terminfo.c tparm.c -+ hercules.c md5.c serial.c smp-imps.c stage2.c terminfo.c tparm.c \ -+ graphics.c - pre_stage2_exec_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) - pre_stage2_exec_CCASFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) - pre_stage2_exec_LDFLAGS = $(PRE_STAGE2_LINK) ---- grub-0.95/stage2/term.h.graphics 2003-07-09 07:45:53.000000000 -0400 -+++ grub-0.95/stage2/term.h 2004-06-18 17:35:52.496968160 -0400 -@@ -60,6 +60,8 @@ - const char *name; - /* The feature flags defined above. */ - unsigned long flags; -+ /* Default for maximum number of lines if not specified */ -+ unsigned short max_lines; - /* Put a character. */ - void (*putchar) (int c); - /* Check if any input character is available. */ -@@ -79,6 +81,11 @@ - void (*setcolor) (int normal_color, int highlight_color); - /* Turn on/off the cursor. */ - int (*setcursor) (int on); -+ -+ /* function to start a terminal */ -+ int (*startup) (void); -+ /* function to use to shutdown a terminal */ -+ void (*shutdown) (void); - }; - - /* This lists up available terminals. */ -@@ -124,4 +131,23 @@ - int hercules_setcursor (int on); - #endif - -+#ifdef SUPPORT_GRAPHICS -+extern int foreground, background, border, graphics_inited; -+ -+void graphics_set_splash(char *splashfile); -+int set_videomode (int mode); -+void graphics_putchar (int c); -+int graphics_getxy(void); -+void graphics_gotoxy(int x, int y); -+void graphics_cls(void); -+void graphics_setcolorstate (color_state state); -+void graphics_setcolor (int normal_color, int highlight_color); -+void graphics_setcursor (int on); -+int graphics_init(void); -+void graphics_end(void); -+ -+int hex(int v); -+void graphics_set_palette(int idx, int red, int green, int blue); -+#endif /* SUPPORT_GRAPHICS */ -+ - #endif /* ! GRUB_TERM_HEADER */ ---- /dev/null 2004-02-23 16:02:56.000000000 -0500 -+++ grub-0.95/stage2/graphics.h 2004-06-18 17:35:52.490969072 -0400 -@@ -0,0 +1,42 @@ -+/* graphics.h - graphics console interface */ -+/* -+ * GRUB -- GRand Unified Bootloader -+ * Copyright (C) 2002 Free Software Foundation, Inc. -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -+ */ -+ -+#ifndef GRAPHICS_H -+#define GRAPHICS_H -+ -+/* magic constant */ -+#define VIDEOMEM 0xA0000 -+ -+/* function prototypes */ -+char *graphics_get_splash(void); -+ -+int read_image(char *s); -+void graphics_cursor(int set); -+ -+/* function prototypes for asm functions */ -+void * graphics_get_font(); -+void graphics_set_palette(int idx, int red, int green, int blue); -+void set_int1c_handler(); -+void unset_int1c_handler(); -+ -+extern short cursorX, cursorY; -+extern char cursorBuf[16]; -+ -+#endif /* GRAPHICS_H */ ---- grub-0.95/stage2/shared.h.graphics 2004-06-18 17:35:52.372987008 -0400 -+++ grub-0.95/stage2/shared.h 2004-06-18 17:35:52.492968768 -0400 -@@ -873,6 +873,7 @@ - int grub_tolower (int c); - int grub_isspace (int c); - int grub_strncat (char *s1, const char *s2, int n); -+void grub_memcpy(void *dest, const void *src, int len); - void *grub_memmove (void *to, const void *from, int len); - void *grub_memset (void *start, int c, int len); - int grub_strncat (char *s1, const char *s2, int n); ---- grub-0.95/stage2/char_io.c.graphics 2004-05-23 12:45:43.000000000 -0400 -+++ grub-0.95/stage2/char_io.c 2004-06-18 17:35:52.485969832 -0400 -@@ -35,6 +35,7 @@ - { - "console", - 0, -+ 24, - console_putchar, - console_checkkey, - console_getkey, -@@ -43,13 +44,16 @@ - console_cls, - console_setcolorstate, - console_setcolor, -- console_setcursor -+ console_setcursor, -+ 0, -+ 0 - }, - #ifdef SUPPORT_SERIAL - { - "serial", - /* A serial device must be initialized. */ - TERM_NEED_INIT, -+ 24, - serial_putchar, - serial_checkkey, - serial_getkey, -@@ -58,6 +62,8 @@ - serial_cls, - serial_setcolorstate, - 0, -+ 0, -+ 0, - 0 - }, - #endif /* SUPPORT_SERIAL */ -@@ -65,6 +71,7 @@ - { - "hercules", - 0, -+ 24, - hercules_putchar, - console_checkkey, - console_getkey, -@@ -73,9 +80,28 @@ - hercules_cls, - hercules_setcolorstate, - hercules_setcolor, -- hercules_setcursor -+ hercules_setcursor, -+ 0, -+ 0 - }, - #endif /* SUPPORT_HERCULES */ -+#ifdef SUPPORT_GRAPHICS -+ { "graphics", -+ TERM_NEED_INIT, /* flags */ -+ 30, /* number of lines */ -+ graphics_putchar, /* putchar */ -+ console_checkkey, /* checkkey */ -+ console_getkey, /* getkey */ -+ graphics_getxy, /* getxy */ -+ graphics_gotoxy, /* gotoxy */ -+ graphics_cls, /* cls */ -+ graphics_setcolorstate, /* setcolorstate */ -+ graphics_setcolor, /* setcolor */ -+ graphics_setcursor, /* nocursor */ -+ graphics_init, /* initialize */ -+ graphics_end /* shutdown */ -+ }, -+#endif /* SUPPORT_GRAPHICS */ - /* This must be the last entry. */ - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } - }; -@@ -1046,13 +1072,15 @@ - the following grub_printf call will print newlines. */ - count_lines = -1; - -+ grub_printf("\n"); - if (current_term->setcolorstate) - current_term->setcolorstate (COLOR_STATE_HIGHLIGHT); - -- grub_printf ("\n[Hit return to continue]"); -+ grub_printf ("[Hit return to continue]"); - - if (current_term->setcolorstate) - current_term->setcolorstate (COLOR_STATE_NORMAL); -+ - - do - { -@@ -1090,7 +1118,7 @@ - cls (void) - { - /* If the terminal is dumb, there is no way to clean the terminal. */ -- if (current_term->flags & TERM_DUMB) -+ if (current_term->flags & TERM_DUMB) - grub_putchar ('\n'); - else - current_term->cls (); -@@ -1214,6 +1242,16 @@ - return ! errnum; - } - -+void -+grub_memcpy(void *dest, const void *src, int len) -+{ -+ int i; -+ register char *d = (char*)dest, *s = (char*)src; -+ -+ for (i = 0; i < len; i++) -+ d[i] = s[i]; -+} -+ - void * - grub_memmove (void *to, const void *from, int len) - { ---- grub-0.95/configure.ac.graphics 2004-06-18 17:35:52.211011632 -0400 -+++ grub-0.95/configure.ac 2004-06-18 17:35:52.498967856 -0400 -@@ -595,6 +595,11 @@ - [ --enable-diskless enable diskless support]) - AM_CONDITIONAL(DISKLESS_SUPPORT, test "x$enable_diskless" = xyes) - -+dnl Graphical splashscreen support -+AC_ARG_ENABLE(graphics, -+ [ --disable-graphics disable graphics terminal support]) -+AM_CONDITIONAL(GRAPHICS_SUPPORT, test "x$enable_graphics" != xno) -+ - dnl Hercules terminal - AC_ARG_ENABLE(hercules, - [ --disable-hercules disable hercules terminal support]) diff --git a/src/patches/grub-0.95-hiddenmenu-tweak.patch b/src/patches/grub-0.95-hiddenmenu-tweak.patch deleted file mode 100644 index 56fb083e7..000000000 --- a/src/patches/grub-0.95-hiddenmenu-tweak.patch +++ /dev/null @@ -1,39 +0,0 @@ ---- grub-0.95/stage2/stage2.c.hidden 2004-09-30 16:39:38.028893664 -0400 -+++ grub-0.95/stage2/stage2.c 2004-09-30 16:42:07.981097464 -0400 -@@ -235,6 +235,8 @@ - char *cur_entry = 0; - struct term_entry *prev_term = NULL; - -+ cls(); -+ - /* - * Main loop for menu UI. - */ -@@ -262,14 +264,16 @@ - /* Get current time. */ - while ((time1 = getrtsecs ()) == 0xFF) - ; -+ grub_printf("\rPress any key to enter the menu\n\n\n"); - - while (1) - { - /* Check if ESC is pressed. */ -- if (checkkey () != -1 && ASCII_CHAR (getkey ()) == '\e') -+ if (checkkey () != -1) - { - grub_timeout = -1; - show_menu = 1; -+ getkey (); - break; - } - -@@ -288,7 +292,8 @@ - grub_timeout--; - - /* Print a message. */ -- grub_printf ("\rPress `ESC' to enter the menu... %d ", -+ grub_printf ("\rBooting %s in %d seconds...", -+ get_entry(menu_entries, first_entry + entryno, 0), - grub_timeout); - } - } diff --git a/src/patches/grub-0.95-md-mbr.patch b/src/patches/grub-0.95-md-mbr.patch deleted file mode 100644 index 1aaa3e9ff..000000000 --- a/src/patches/grub-0.95-md-mbr.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- grub-0.95/util/grub-install.in.md-mbr 2005-02-20 17:56:48.000000000 -0500 -+++ grub-0.95/util/grub-install.in 2005-02-20 17:57:12.000000000 -0500 -@@ -444,7 +444,7 @@ - /dev/*) - install_device=`resolve_symlink "$install_device"` - for install_drive in `find_real_devs $install_device` ; do -- install_drive=`convert $install_drive` -+ install_drive=`convert $install_drive | sed 's/,[0-9]*)/)/'` - if [ "x$install_drive" = "x" ]; then - exit 1 - fi diff --git a/src/patches/grub-0.95-md-rework.patch b/src/patches/grub-0.95-md-rework.patch deleted file mode 100644 index cff1977d2..000000000 --- a/src/patches/grub-0.95-md-rework.patch +++ /dev/null @@ -1,183 +0,0 @@ ---- grub-0.95/util/grub-install.in.md2 2005-01-03 14:49:18.133866107 -0500 -+++ grub-0.95/util/grub-install.in 2005-01-03 16:35:44.923732271 -0500 -@@ -35,6 +35,7 @@ - rootdir= - grub_prefix=/boot/grub - -+install_drives= - install_device= - no_floppy= - force_lba= -@@ -272,6 +273,30 @@ - done - } - -+ -+dump_boot_block () { -+ sync -+ $grub_shell --batch $no_floppy --device-map=$device_map <$log_file -+dump ${root_drive}${tmp} ${img_file} -+quit -+EOF -+} -+ -+ -+install_boot_block () { -+ # Before all invocations of the grub shell, call sync to make sure -+ # the raw device is in sync with any bufferring in filesystems. -+ sync -+ -+ # Now perform the installation. -+ $grub_shell --batch $no_floppy --device-map=$device_map <>$log_file -+root $1 -+setup $force_lba --stage2=$grubdir/stage2 --prefix=$grub_prefix $2 -+quit -+EOF -+} -+ -+ - # Check the arguments. - for option in "$@"; do - case "$option" in -@@ -416,28 +441,32 @@ - # Check for INSTALL_DEVICE. - case "$install_device" in - /dev/*) -- # If we are running md on a Linux box, just use the first physical device -- # at this point. - install_device=`resolve_symlink "$install_device"` -- install_device=`find_real_devs $install_device | awk '{print $1}'` -- -- install_drive=`convert "$install_device"` -- # I don't know why, but some shells wouldn't die if exit is -- # called in a function. -- if test "x$install_drive" = x; then -+ for install_drive in `find_real_devs $install_device` ; do -+ install_drive=`convert $install_drive` -+ if [ "x$install_drive" = "x" ]; then -+ exit 1 -+ fi -+ install_drives="${install_drives} ${install_drive}" -+ done -+ unset install_drive -+ -+ if test "x$install_drives" = x ; then - exit 1 - fi ;; - \([hf]d[0-9]*\)) -- install_drive="$install_device" ;; -+ install_drives="$install_device" ;; - [hf]d[0-9]*) - # The GRUB format with no parenthesis. -- install_drive="($install_device)" ;; -+ install_drives="($install_device)" ;; - *) - echo "Format of install_device not recognized." 1>&2 - usage - exit 1 ;; - esac - -+unset install_device -+ - # Get the root drive. - root_device=`find_device ${rootdir}` - bootdir_device=`find_device ${bootdir}` -@@ -465,41 +494,39 @@ - test -n "$mkimg" && img_file=`$mkimg` - test -n "$mklog" && log_file=`$mklog` - --for real_device in `find_real_devs $root_device`; do -- # Convert the root deviceto a GRUB drive. -- root_drive=`convert "$real_device"` -- if [ "x$root_drive" = x ]; then -- exit 1 -- fi -+# There's not a real root device, so just pick the first -+if is_raid1_device $root_device ; then -+ root_device=`find_real_devs $root_device | awk '{print $1}'` -+fi - -- for file in ${grubdir}/stage1 ${grubdir}/stage2 ${grubdir}/*stage1_5; do -- count=5 -- tmp=`echo $file | sed "s|^${grubdir}|${grub_prefix}|"` -- while test $count -gt 0; do -- sync -- $grub_shell --batch $no_floppy --device-map=$device_map \ -- <$log_file --dump ${root_drive}${tmp} ${img_file} --quit --EOF -- if grep "Error [0-9]*: " $log_file >/dev/null; then -- : -- elif cmp $file $img_file >/dev/null; then -- break -- fi -- sleep 1 -- count=`expr $count - 1` -- done -- if test $count -eq 0; then -- echo "The file $file not read correctly." 1>&2 -- exit 1 -- fi -- done -+# Convert the root deviceto a GRUB drive. -+root_drive=`convert "$root_device"` -+if [ "x$root_drive" = x ]; then -+ exit 1 -+fi - -- rm -f $img_file -- rm -f $log_file -+for file in ${grubdir}/stage1 ${grubdir}/stage2 ${grubdir}/*stage1_5; do -+ count=5 -+ tmp=`echo $file | sed "s|^${grubdir}|${grub_prefix}|"` -+ while test $count -gt 0; do -+ dump_boot_block $root_drive $img_file -+ if grep "Error [0-9]*: " $log_file >/dev/null; then -+ : -+ elif cmp $file $img_file >/dev/null; then -+ break -+ fi -+ sleep 1 -+ count=`expr $count - 1` -+ done -+ if test $count -eq 0; then -+ echo "The file $file not read correctly." 1>&2 -+ exit 1 -+ fi - done - -+rm -f $img_file -+rm -f $log_file -+ - if ! test -e ${grubdir}/grub.conf ; then - test -e ${grubdir}/menu.lst && ln -s ./menu.lst ${grubdir}/grub.conf - fi -@@ -507,24 +534,13 @@ - # Create a safe temporary file. - test -n "$mklog" && log_file=`$mklog` - --for real_device in `find_real_devs $root_device`; do -+for install_drive in $install_drives; do - # Convert the root deviceto a GRUB drive. -- root_drive=`convert "$real_device"` -+ root_drive=`convert "$root_device"` - if [ "x$root_drive" = x ]; then - exit 1 - fi -- -- # Before all invocations of the grub shell, call sync to make sure -- # the raw device is in sync with any bufferring in filesystems. -- sync -- -- # Now perform the installation. -- $grub_shell --batch $no_floppy --device-map=$device_map <>$log_file --root $root_drive --setup $force_lba --stage2=$grubdir/stage2 --prefix=$grub_prefix $root_drive --quit --EOF -- -+ install_boot_block $root_drive $install_drive - done - - if grep "Error [0-9]*: " $log_file >/dev/null ; then diff --git a/src/patches/grub-0.95-md.patch b/src/patches/grub-0.95-md.patch deleted file mode 100644 index 9e4ff895c..000000000 --- a/src/patches/grub-0.95-md.patch +++ /dev/null @@ -1,183 +0,0 @@ ---- grub-0.95/util/grub-install.in.support_md 2004-12-17 17:50:45.000000000 -0500 -+++ grub-0.95/util/grub-install.in 2004-12-19 19:19:20.509409160 -0500 -@@ -207,6 +207,43 @@ - echo "$tmp_fname" - } - -+# Usage: is_raid1_device devicename -+# Returns 0 if devicename is a raid1 md device, 1 if it is not. -+is_raid1_device () { -+ case "$host_os" in -+ linux*) -+ level=`mdadm --query --detail $1 2>/dev/null | \ -+ awk '/Raid Level :/ {print $4}'` -+ if [ "$level" = "raid1" ]; then -+ return 0 -+ fi -+ ;; -+ esac -+ return 1 -+} -+ -+# Usage: find_real_devs device -+# Returns space separated list of devices for linux if device is -+# a raid1 device. In all other cases, the provided value is returned. -+find_real_devs () { -+ source_device=$1 -+ case "$host_os" in -+ linux*) -+ if is_raid1_device $source_device ; then -+ list="" -+ for device in `mdadm --query --detail "${source_device}" | \ -+ awk '/\/dev\/[^(md)]/ {print $7}'` ; do -+ list="$list $device" -+ done -+ echo $list -+ return 0 -+ fi -+ ;; -+ esac -+ echo $source_device -+ return 0 -+} -+ - # Usage: find_device file - # Find block device on which the file resides. - find_device () { -@@ -219,7 +256,7 @@ - exit 1 - fi - -- tmp_fname=`resolve_symlink $tmp_fname` -+ tmp_fname=`resolve_symlink $tmp_fname` - - echo "$tmp_fname" - } -@@ -379,7 +416,11 @@ - # Check for INSTALL_DEVICE. - case "$install_device" in - /dev/*) -+ # If we are running md on a Linux box, just use the first physical device -+ # at this point. - install_device=`resolve_symlink "$install_device"` -+ install_device=`find_real_devs $install_device | awk '{print $1}'` -+ - install_drive=`convert "$install_device"` - # I don't know why, but some shells wouldn't die if exit is - # called in a function. -@@ -408,14 +449,7 @@ - grub_prefix="/grub" - fi - --# Convert the root device to a GRUB drive. --root_drive=`convert "$root_device"` --if test "x$root_drive" = x; then -- exit 1 --fi -- --# Check if the root directory exists in the same device as the grub --# directory. -+# Check if the root directory exists in the same device as the grub directory. - grubdir_device=`find_device ${grubdir}` - - if test "x$grubdir_device" != "x$root_device"; then -@@ -431,30 +465,40 @@ - test -n "$mkimg" && img_file=`$mkimg` - test -n "$mklog" && log_file=`$mklog` - --for file in ${grubdir}/stage1 ${grubdir}/stage2 ${grubdir}/*stage1_5; do -- count=5 -- tmp=`echo $file | sed "s|^${grubdir}|${grub_prefix}|"` -- while test $count -gt 0; do -- $grub_shell --batch $no_floppy --device-map=$device_map <$log_file -+for real_device in `find_real_devs $root_device`; do -+ # Convert the root deviceto a GRUB drive. -+ root_drive=`convert "$real_device"` -+ if [ "x$root_drive" = x ]; then -+ exit 1 -+ fi -+ -+ for file in ${grubdir}/stage1 ${grubdir}/stage2 ${grubdir}/*stage1_5; do -+ count=5 -+ tmp=`echo $file | sed "s|^${grubdir}|${grub_prefix}|"` -+ while test $count -gt 0; do -+ sync -+ $grub_shell --batch $no_floppy --device-map=$device_map \ -+ <$log_file - dump ${root_drive}${tmp} ${img_file} - quit - EOF -- if grep "Error [0-9]*: " $log_file >/dev/null; then -- : -- elif cmp $file $img_file >/dev/null; then -- break -+ if grep "Error [0-9]*: " $log_file >/dev/null; then -+ : -+ elif cmp $file $img_file >/dev/null; then -+ break -+ fi -+ sleep 1 -+ count=`expr $count - 1` -+ done -+ if test $count -eq 0; then -+ echo "The file $file not read correctly." 1>&2 -+ exit 1 - fi -- sleep 1 -- count=`expr $count - 1` - done -- if test $count -eq 0; then -- echo "The file $file not read correctly." 1>&2 -- exit 1 -- fi --done - --rm -f $img_file --rm -f $log_file -+ rm -f $img_file -+ rm -f $log_file -+done - - if ! test -e ${grubdir}/grub.conf ; then - test -e ${grubdir}/menu.lst && ln -s ./menu.lst ${grubdir}/grub.conf -@@ -463,21 +507,33 @@ - # Create a safe temporary file. - test -n "$mklog" && log_file=`$mklog` - --# Before all invocations of the grub shell, call sync to make sure --# the raw device is in sync with any bufferring in filesystems. --sync -+for real_device in `find_real_devs $root_device`; do -+ # Convert the root deviceto a GRUB drive. -+ root_drive=`convert "$real_device"` -+ if [ "x$root_drive" = x ]; then -+ exit 1 -+ fi -+ -+ # Before all invocations of the grub shell, call sync to make sure -+ # the raw device is in sync with any bufferring in filesystems. -+ sync - --# Now perform the installation. --$grub_shell --batch $no_floppy --device-map=$device_map <$log_file -+ # Now perform the installation. -+ $grub_shell --batch $no_floppy --device-map=$device_map <>$log_file - root $root_drive --setup $force_lba --stage2=$grubdir/stage2 --prefix=$grub_prefix $install_drive -+setup $force_lba --stage2=$grubdir/stage2 --prefix=$grub_prefix $root_drive - quit - EOF - --if grep "Error [0-9]*: " $log_file >/dev/null || test $debug = yes; then -+done -+ -+if grep "Error [0-9]*: " $log_file >/dev/null ; then - cat $log_file 1>&2 - exit 1 - fi -+if test $debug = yes; then -+ cat $log_file 1>&2 -+fi - - rm -f $log_file - diff --git a/src/patches/grub-0.95-moreraid.patch b/src/patches/grub-0.95-moreraid.patch deleted file mode 100644 index 39db23474..000000000 --- a/src/patches/grub-0.95-moreraid.patch +++ /dev/null @@ -1,100 +0,0 @@ ---- grub-0.95/lib/device.c.moreraid 2004-11-30 17:09:36.736099360 -0500 -+++ grub-0.95/lib/device.c 2004-11-30 17:12:17.319686944 -0500 -@@ -544,6 +544,17 @@ - } - - static void -+get_cciss_disk_name (char * name, int controller, int drive) -+{ -+ sprintf (name, "/dev/cciss/c%dd%d", controller, drive); -+} -+ -+static void -+get_cpqarray_disk_name (char * name, int controller, int drive) -+{ -+ sprintf (name, "/dev/ida/c%dd%d", controller, drive); -+} -+static void - get_ataraid_disk_name (char *name, int unit) - { - sprintf (name, "/dev/ataraid/d%c", unit + '0'); -@@ -920,7 +931,7 @@ - - for (controller = 0; controller < 8; controller++) - { -- for (drive = 0; drive < 15; drive++) -+ for (drive = 0; drive < 32; drive++) - { - char name[24]; - -@@ -940,6 +951,70 @@ - } - } - #endif /* __linux__ */ -+ -+#ifdef __linux__ -+ /* This is for cciss - we have -+ /dev/cciss/cdp. -+ -+ cciss driver currently supports up to 8 controllers, 16 logical -+ drives, and 7 partitions. */ -+ { -+ int controller, drive; -+ -+ for (controller = 0; controller < 8; controller++) -+ { -+ for (drive = 0; drive < 16; drive++) -+ { -+ char name[24]; -+ -+ get_cciss_disk_name (name, controller, drive); -+ if (check_device (name)) -+ { -+ (*map)[num_hd + 0x80] = strdup (name); -+ assert ((*map)[num_hd + 0x80]); -+ -+ /* If the device map file is opened, write the map. */ -+ if (fp) -+ fprintf (fp, "(hd%d)\t%s\n", num_hd, name); -+ -+ num_hd++; -+ } -+ } -+ } -+ } -+#endif /* __linux__ */ -+ -+#ifdef __linux__ -+ /* This is for cpqarray - we have -+ /dev/ida/cdp. -+ -+ cpqarray driver currently supports up to 8 controllers, 16 logical -+ drives, and 15 partitions. */ -+ { -+ int controller, drive; -+ -+ for (controller = 0; controller < 8; controller++) -+ { -+ for (drive = 0; drive < 15; drive++) -+ { -+ char name[24]; -+ -+ get_cpqarray_disk_name (name, controller, drive); -+ if (check_device (name)) -+ { -+ (*map)[num_hd + 0x80] = strdup (name); -+ assert ((*map)[num_hd + 0x80]); -+ -+ /* If the device map file is opened, write the map. */ -+ if (fp) -+ fprintf (fp, "(hd%d)\t%s\n", num_hd, name); -+ -+ num_hd++; -+ } -+ } -+ } -+ } -+#endif /* __linux__ */ - - /* OK, close the device map file if opened. */ - if (fp) diff --git a/src/patches/grub-0.95-nonmbr.patch b/src/patches/grub-0.95-nonmbr.patch deleted file mode 100644 index 35bd5f3b3..000000000 --- a/src/patches/grub-0.95-nonmbr.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- grub-0.95/util/grub-install.in.nonmbr 2005-03-16 10:02:50.000000000 -0500 -+++ grub-0.95/util/grub-install.in 2005-03-16 10:02:13.000000000 -0500 -@@ -444,7 +444,10 @@ - /dev/*) - install_device=`resolve_symlink "$install_device"` - for install_drive in `find_real_devs $install_device` ; do -- install_drive=`convert $install_drive | sed 's/,[0-9]*)/)/'` -+ install_drive=`convert $install_drive` -+ if is_raid1_device $install_device; then -+ install_drive=`echo $install_drive | sed 's/,[0-9]*)/)/'` -+ fi - if [ "x$install_drive" = "x" ]; then - exit 1 - fi diff --git a/src/patches/grub-0.95-odirect.patch b/src/patches/grub-0.95-odirect.patch deleted file mode 100644 index 12dd9d979..000000000 --- a/src/patches/grub-0.95-odirect.patch +++ /dev/null @@ -1,115 +0,0 @@ ---- grub-0.95/grub/asmstub.c.odirect 2004-11-30 16:58:06.577019488 -0500 -+++ grub-0.95/grub/asmstub.c 2004-11-30 16:59:56.057375944 -0500 -@@ -53,6 +53,9 @@ - # ifndef BLKFLSBUF - # define BLKFLSBUF _IO (0x12,97) /* flush buffer cache */ - # endif /* ! BLKFLSBUF */ -+# ifndef O_DIRECT -+# define O_DIRECT 040000 -+# endif /* ! O_DIRECT */ - #endif /* __linux__ */ - - /* We want to prevent any circularararity in our stubs, as well as -@@ -764,7 +767,7 @@ - { - /* The unpartitioned device name: /dev/XdX */ - char *devname = device_map[drive]; -- char buf[512]; -+ char * buf, * buf_unaligned; - - if (! devname) - return -1; -@@ -775,13 +778,13 @@ - - /* Open read/write, or read-only if that failed. */ - if (! read_only) -- disks[drive].flags = open (devname, O_RDWR); -+ disks[drive].flags = open (devname, O_RDWR | O_DIRECT); - - if (disks[drive].flags == -1) - { - if (read_only || errno == EACCES || errno == EROFS || errno == EPERM) - { -- disks[drive].flags = open (devname, O_RDONLY); -+ disks[drive].flags = open (devname, O_RDONLY | O_DIRECT); - if (disks[drive].flags == -1) - { - assign_device_name (drive, 0); -@@ -795,6 +798,10 @@ - } - } - -+ buf_unaligned = malloc((512 * sizeof(char)) + 4095); -+ buf = (char *) (((unsigned long)buf_unaligned + 4096 - 1) & -+ (~(4096-1))); -+ - /* Attempt to read the first sector. */ - if (read (disks[drive].flags, buf, 512) != 512) - { -@@ -806,6 +813,7 @@ - - if (disks[drive].flags != -1) - get_drive_geometry (&disks[drive], device_map, drive); -+ free(buf_unaligned); - } - - if (disks[drive].flags == -1) -@@ -827,24 +835,34 @@ - nread (int fd, char *buf, size_t len) - { - int size = len; -+ char * buf_unaligned, * buff, * obuff; -+ int ret; -+ -+ buf_unaligned = malloc((len * sizeof(char)) + 4095); -+ obuff = buff = (char *) (((unsigned long)buf_unaligned + 4096 - 1) & -+ (~(4096-1))); -+ - - while (len) - { -- int ret = read (fd, buf, len); -+ ret = read (fd, buff, len); - - if (ret <= 0) - { - if (errno == EINTR) - continue; - else -- return ret; -+ break; - } - - len -= ret; -- buf += ret; -+ buff += ret; - } - -- return size; -+ if (!len) ret = size; -+ -+ buf = memcpy(buf, obuff, size); -+ return ret; - } - - /* Write LEN bytes from BUF to FD. Return less than or equal to zero if an -@@ -853,10 +871,18 @@ - nwrite (int fd, char *buf, size_t len) - { - int size = len; -+ char * buf_unaligned, * buff; -+ -+ buf_unaligned = malloc((len * sizeof(char)) + 4095); -+ buff = (char *) (((unsigned long)buf_unaligned + 4096 - 1) & -+ (~(4096-1))); - - while (len) - { -- int ret = write (fd, buf, len); -+ int ret; -+ -+ memcpy(buff, buf, len); -+ ret = write (fd, buff, len); - - if (ret <= 0) - { diff --git a/src/patches/grub-0.95-recheck-bad.patch b/src/patches/grub-0.95-recheck-bad.patch deleted file mode 100644 index b55c6aec1..000000000 --- a/src/patches/grub-0.95-recheck-bad.patch +++ /dev/null @@ -1,83 +0,0 @@ ---- grub-0.95/docs/grub.texi.recheck-bad 2005-07-25 17:55:57.000000000 -0400 -+++ grub-0.95/docs/grub.texi 2005-07-25 17:58:00.000000000 -0400 -@@ -3417,8 +3417,9 @@ - - @item --recheck - Recheck the device map, even if @file{/boot/grub/device.map} already --exists. You should use this option whenever you add/remove a disk --into/from your computer. -+exists. -+ -+This option is unreliable and its use is strongly discouraged. - @end table - - ---- grub-0.95/util/grub-install.in.recheck-bad 2005-07-25 17:58:19.000000000 -0400 -+++ grub-0.95/util/grub-install.in 2005-07-25 18:05:14.000000000 -0400 -@@ -68,6 +68,8 @@ - --force-lba force GRUB to use LBA mode even for a buggy - BIOS - --recheck probe a device map even if it already exists -+ This flag is unreliable and its use is -+ strongly discouraged. - - INSTALL_DEVICE can be a GRUB device name or a system device filename. - -@@ -328,7 +330,7 @@ - - # If --recheck is specified, remove the device map, if present. - if test $recheck = yes; then -- rm -f $device_map -+ mv $device_map ${device_map}.backup - fi - - # Create the device map file if it is not present. -@@ -357,7 +359,22 @@ - tmp=`sed -n '/^([fh]d[0-9]*)/s/\(^(.*)\).*/\1/p' $device_map \ - | sort | uniq -d | sed -n 1p` - if test -n "$tmp"; then -- echo "The drive $tmp is defined multiple times in the device map $device_map" 1>&2 -+ echo "The drive $tmp is defined multiple times in the new device map." 1>&2 -+ if test $recheck = yes; then -+ echo "Reverting to backed up copy." 1>&2 -+ mv ${device_map}.backup $device_map -+ fi -+ exit 1 -+fi -+ -+# Make sure device.map has at least one hd device -+grep -q "^(hd[0-9]\+)" $device_map -+if [ "x$?" != "x0" ]; then -+ echo "No suitable drive was found in the generated device map." 1>&2 -+ if test $recheck = yes; then -+ echo "Reverting to backed up copy." 1>&2 -+ mv ${device_map}.backup $device_map -+ fi - exit 1 - fi - ---- grub-0.95/docs/grub-install.8.recheck-bad 2004-06-13 13:44:59.000000000 -0400 -+++ grub-0.95/docs/grub-install.8 2005-07-25 18:15:02.000000000 -0400 -@@ -30,6 +30,8 @@ - .TP - \fB\-\-recheck\fR - probe a device map even if it already exists -+ -+This option is unreliable and its use is strongly discouraged. - .PP - INSTALL_DEVICE can be a GRUB device name or a system device filename. - .SH "REPORTING BUGS" ---- grub-0.95/docs/grub.info.recheck-bad 2004-05-11 08:22:54.000000000 -0400 -+++ grub-0.95/docs/grub.info 2005-07-25 18:16:09.000000000 -0400 -@@ -3373,9 +3373,9 @@ - - `--recheck' - Recheck the device map, even if `/boot/grub/device.map' already -- exists. You should use this option whenever you add/remove a disk -- into/from your computer. -+ exists. - -+ This option is unreliable and its use is strongly discouraged. -  - File: grub.info, Node: Invoking grub-md5-crypt, Next: Invoking grub-terminfo, Prev: Invoking grub-install, Up: Top - diff --git a/src/patches/grub-0.95-splash-error-term.patch b/src/patches/grub-0.95-splash-error-term.patch deleted file mode 100644 index 71b036aa7..000000000 --- a/src/patches/grub-0.95-splash-error-term.patch +++ /dev/null @@ -1,25 +0,0 @@ ---- grub-0.95/stage2/graphics.c.old 2005-01-11 09:34:17.125451981 -0500 -+++ grub-0.95/stage2/graphics.c 2005-01-11 09:34:03.743949015 -0500 -@@ -108,12 +108,8 @@ - * mode. */ - int graphics_init() - { -- if (!graphics_inited) { -- saved_videomode = set_videomode(0x12); -- } -- - if (!read_image(splashimage)) { -- set_videomode(saved_videomode); -+ current_term = term_table; - grub_printf("failed to read image\n"); - return 0; - } -@@ -303,6 +299,8 @@ - if (!xpm_open(s)) - return 0; - -+ saved_videomode = set_videomode(0x12); -+ - /* parse info */ - while (grub_read(&c, 1)) { - if (c == '"') diff --git a/src/patches/grub-0.95-staticcurses.patch b/src/patches/grub-0.95-staticcurses.patch deleted file mode 100644 index ff87dd3e4..000000000 --- a/src/patches/grub-0.95-staticcurses.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- grub-0.95/configure.ac.static 2004-06-13 13:38:17.000000000 -0400 -+++ grub-0.95/configure.ac 2004-06-18 17:35:23.513374336 -0400 -@@ -207,9 +207,9 @@ - - # Unless the user specify --without-curses, check for curses. - if test "x$with_curses" != "xno"; then -- AC_CHECK_LIB(ncurses, wgetch, [GRUB_LIBS="$GRUB_LIBS -lncurses" -+ AC_CHECK_LIB(ncurses, wgetch, [GRUB_LIBS="$GRUB_LIBS -Wl,-Bstatic -lncurses -Wl,-Bdynamic" - AC_DEFINE(HAVE_LIBCURSES, 1, [Define if you have a curses library])], -- [AC_CHECK_LIB(curses, wgetch, [GRUB_LIBS="$GRUB_LIBS -lcurses" -+ [AC_CHECK_LIB(curses, wgetch, [GRUB_LIBS="$GRUB_LIBS -Wl,-Bstatic -lcurses -Wl,-Bdynamic" - AC_DEFINE(HAVE_LIBCURSES, 1, [Define if you have a curses library])])]) - fi - diff --git a/src/patches/grub-0.95-xpmjunk.patch b/src/patches/grub-0.95-xpmjunk.patch deleted file mode 100644 index de02897f9..000000000 --- a/src/patches/grub-0.95-xpmjunk.patch +++ /dev/null @@ -1,55 +0,0 @@ ---- grub-0.95/stage2/graphics.c.xpmjunk 2005-01-04 17:01:35.492804523 -0500 -+++ grub-0.95/stage2/graphics.c 2005-01-04 17:02:52.722495885 -0500 -@@ -262,6 +262,35 @@ - return; - } - -+/* Open the file, and search for a valid XPM header. Return 1 if one is found, -+ * leaving the current position as the start of the next line. Else, -+ * return 0. -+ */ -+int xpm_open(const char *s) { -+ char buf, prev, target[]="/* XPM */\n"; -+ int pos=0; -+ -+ if (!grub_open(s)) -+ return 0; -+ -+ prev='\n'; -+ buf=0; -+ do { -+ if (grub_read(&buf, 1) != 1) { -+ grub_close(); -+ return 0; -+ } -+ if ((pos == 0 && prev == '\n') || pos > 0) { -+ if (buf == target[pos]) -+ pos++; -+ else -+ pos=0; -+ } -+ prev=buf; -+ } while (target[pos]); -+ return 1; -+} -+ - /* Read in the splashscreen image and set the palette up appropriately. - * Format of splashscreen is an xpm (can be gzipped) with 16 colors and - * 640x480. */ -@@ -271,15 +300,9 @@ - unsigned char c, base, mask, *s1, *s2, *s4, *s8; - unsigned i, len, idx, colors, x, y, width, height; - -- if (!grub_open(s)) -+ if (!xpm_open(s)) - return 0; - -- /* read header */ -- if (!grub_read((char*)&buf, 10) || grub_memcmp(buf, "/* XPM */\n", 10)) { -- grub_close(); -- return 0; -- } -- - /* parse info */ - while (grub_read(&c, 1)) { - if (c == '"') diff --git a/src/patches/grub-0.97-bz429187-cciss.patch b/src/patches/grub-0.97-bz429187-cciss.patch deleted file mode 100644 index 32f18bcc7..000000000 --- a/src/patches/grub-0.97-bz429187-cciss.patch +++ /dev/null @@ -1,75 +0,0 @@ -diff -up grub-0.97/util/grub-install.in.cciss grub-0.97/util/grub-install.in ---- grub-0.97/util/grub-install.in.cciss 2008-02-04 14:30:31.000000000 -0500 -+++ grub-0.97/util/grub-install.in 2008-02-07 18:34:14.000000000 -0500 -@@ -100,25 +100,56 @@ convert () { - # Break the device name into the disk part and the partition part. - case "$host_os" in - linux*) -+ # formats that need to be handled (disk name -> partition name): -+ # floppies: /dev/fd0 -+ # normal sd/hd devices: /dev/hda -> /dev/hda3 -+ # md: /dev/md0 -> /dev/md0p0 -+ # ide raid devs: /dev/ide/host0/bus0/target0/lun0/disc -+ # -> /dev/ide/host0/bus0/target0/lun0/part1 -+ # cciss: /dev/cciss/c0d0 -> /dev/cciss/c0d0p1 -+ # mpath devs: /dev/mapper/mpath0 -> /dev/mapper/mpath0p1 -+ # /dev/mapper/lalala -> /dev/mapper/lalalap1 -+ # dmraid devs: /dev/mapper/via_abcdef -> /dev/mapper/via_abcdefp1 -+ # /dev/mapper/isw_Volume0_abcdef -> /dev/mapper/isw_Volume0_abcdefp1 -+ # the known list (to me) is (X means we should handle it): -+ # X asr_[unfettered crap] -+ # hpt[0-9]+x_[0-9]+-[0-9]+ -+ # X hpt[0-9]+x_[0-9]+ -+ # hpt[0-9]+x_SPARE -+ # isw_[a-z]+_[a-z]+[0-9]+ -+ # X isw_[a-z]+ -+ # jm_[0-9]+-[0-9]+ -+ # X jm_[0-9]+ -+ # lsi_[0-9]+-[0-9]+ -+ # X lsi_[0-9]+ -+ # nvidia_[a-z]+-[0-9]+ -+ # X nvidia_[a-z]+ -+ # pdc_[a-z]+-[0-9]+ -+ # X pdc_[a-z]+ -+ # sil_[0-9]+-[0-9]+ -+ # X sil_[0-9]+ -+ # via_[a-z]+-[0-9]+ -+ # X via_[a-z]+ -+ # -+ # more? - tmp_disk=`echo "$1" | grep -v '/mapper/control$' | -- grep -v '/mapper/[[:alnum:]]\+-[[:alnum:]]\+$' | uniq | -+ grep -v '/mapper/[[:alnum:]_]\+-[[:digit:]]\+$' | uniq | - sed -e 's%\([sh]d[a-z]\)[0-9]*$%\1%' \ -- -e 's%\(d[0-9]*\)p[0-9]*$%\1%' \ -- -e 's%\(fd[0-9]*\)$%\1%' \ -- -e 's%/part[0-9]*$%/disc%' \ -- -e 's%\(c[0-7]d[0-9]*\).*$%\1%' \ -- -e 's%\(/mapper/[[:alpha:]]\+[[:digit:]]\+\)p[[:digit:]]\+$%\1%' \ -- -e 's%\(/mapper/[[:alpha:]]\+_[[:alpha:]]\+\)[[:digit:]]\+$%\1%'` -+ -e 's%\(/c[0-9]\+d[0-9]\+\).*$%\1%' \ -+ -e 's%\(fd[0-9]*\)$%\1%' \ -+ -e 's%/part[0-9]*$%/disc%' \ -+ -e 's%\(/mapper/[[:alnum:]_-]\+\)\+p[[:digit:]]\+$%\1%'\ -+ -e 's%\(/mapper/[[:alnum:]]\+\(_[[:alnum:]]\+\)\+\)\p[[:digit:]]\+$%\1%'` - tmp_part=`echo "$1" | grep -v '/mapper/control$' | -- grep -v '/mapper/[[:alnum:]]\+-[[:alnum:]]\+$' | uniq | -+ grep -v '/mapper/[[:alnum:]_]\+-[[:digit:]]\+$' | uniq | - sed -e 's%.*/[sh]d[a-z]\([0-9]*\)$%\1%' \ -- -e 's%.*d[0-9]*p%%' \ -- -e 's%.*/fd[0-9]*$%%' \ -- -e 's%.*/floppy/[0-9]*$%%' \ -- -e 's%.*/\(disc\|part\([0-9]*\)\)$%\2%' \ -- -e 's%.*c[0-7]d[0-9]*p%%' \ -- -e 's%.*/mapper/[[:alpha:]]\+[[:digit:]]\+p\([[:digit:]]\+\)$%\1%' \ -- -e 's%.*/mapper/[[:alpha:]]\+_[[:alpha:]]\+\([[:digit:]]\+\)$%\1%' | -+ -e 's%.*/c[0-9]\+d[0-9]\+p\([[:digit:]]\+\)%\1%' \ -+ -e 's%.*/c[0-9]\+d[0-9]\+$%%' \ -+ -e 's%.*/fd[0-9]\+$%%' \ -+ -e 's%.*/floppy/[0-9]*$%%' \ -+ -e 's%.*/\(disc\|part\([0-9]*\)\)$%\2%' \ -+ -e 's%.*/mapper/[[:alpha:]]\+[[:digit:]]\+p\([[:digit:]]\+\)$%\1%' \ -+ -e 's%.*/mapper/[[:alnum:]]\+\(_[[:alpha:]]\+[[:digit:]]*\)\+p\([[:digit:]]\+\)$%\2%' | - grep -v '.*/mapper/.*'` - ;; - gnu*) diff --git a/src/patches/grub-0.97-cmdline-size.patch b/src/patches/grub-0.97-cmdline-size.patch deleted file mode 100644 index e93aa9863..000000000 --- a/src/patches/grub-0.97-cmdline-size.patch +++ /dev/null @@ -1,45 +0,0 @@ -diff --git a/stage2/boot.c b/stage2/boot.c -index bf442e1..a6872e0 100644 ---- a/stage2/boot.c -+++ b/stage2/boot.c -@@ -241,6 +241,7 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, - } - - if (lh->version >= 0x0202) -+ /* version 0x0202 and higher can handle 4096 */ - lh->cmd_line_ptr = linux_data_real_addr + LINUX_CL_OFFSET; - else - { -@@ -403,8 +404,10 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, - { - char *src = skip_to (0, arg); - char *dest = linux_data_tmp_addr + LINUX_CL_OFFSET; -- -- while (dest < linux_data_tmp_addr + LINUX_CL_END_OFFSET && *src) -+ unsigned long cl_end_offset = lh->version < 0x0202 ? -+ LINUX_CL_END_OFFSET : LINUX_CL_END_OFFSET_202; -+ -+ while (dest < linux_data_tmp_addr + cl_end_offset && *src) - *(dest++) = *(src++); - - /* Old Linux kernels have problems determining the amount of -diff --git a/stage2/shared.h b/stage2/shared.h -index d05644b..c052480 100644 ---- a/stage2/shared.h -+++ b/stage2/shared.h -@@ -160,10 +160,13 @@ extern void *grub_scratch_mem; - #define LINUX_VID_MODE_ASK 0xFFFD - - #define LINUX_CL_OFFSET 0x9000 --#define LINUX_CL_END_OFFSET 0x90FF --#define LINUX_SETUP_MOVE_SIZE 0x9100 - #define LINUX_CL_MAGIC 0xA33F - -+#define LINUX_CL_END_OFFSET 0x90FF -+#define LINUX_CL_END_OFFSET_202 0x9FFF /* version 0x0202 or higher */ -+#define LINUX_SETUP_MOVE_SIZE 0xA000 /* where am I putting it? */ -+ -+ - /* - * General disk stuff - */ diff --git a/src/patches/grub-0.97-datadir.patch b/src/patches/grub-0.97-datadir.patch deleted file mode 100644 index eaa89f0d3..000000000 --- a/src/patches/grub-0.97-datadir.patch +++ /dev/null @@ -1,229 +0,0 @@ ---- grub-0.97/stage1/Makefile.am.datadir 2005-12-14 11:07:01.000000000 -0500 -+++ grub-0.97/stage1/Makefile.am 2005-12-14 11:07:21.000000000 -0500 -@@ -1,7 +1,7 @@ --pkglibdir = $(libdir)/$(PACKAGE)/$(host_cpu)-$(host_vendor) --nodist_pkglib_DATA = stage1 -+pkgdatadir = $(datadir)/$(PACKAGE)/$(host_cpu)-$(host_vendor) -+nodist_pkgdata_DATA = stage1 - --CLEANFILES = $(nodist_pkglib_DATA) -+CLEANFILES = $(nodist_pkgdata_DATA) - - # We can't use builtins or standard includes. - AM_CCASFLAGS = $(STAGE1_CFLAGS) -fno-builtin -nostdinc ---- grub-0.97/stage1/Makefile.in.datadir 2005-05-07 22:42:36.000000000 -0400 -+++ grub-0.97/stage1/Makefile.in 2005-12-14 11:08:13.000000000 -0500 -@@ -1,8 +1,8 @@ --# Makefile.in generated by automake 1.9.4 from Makefile.am. -+# Makefile.in generated by automake 1.9.6 from Makefile.am. - # @configure_input@ - - # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, --# 2003, 2004 Free Software Foundation, Inc. -+# 2003, 2004, 2005 Free Software Foundation, Inc. - # This Makefile.in is free software; the Free Software Foundation - # gives unlimited permission to copy and/or distribute it, - # with or without modifications, as long as this notice is preserved. -@@ -15,8 +15,6 @@ - @SET_MAKE@ - - --SOURCES = $(stage1_exec_SOURCES) -- - srcdir = @srcdir@ - top_srcdir = @top_srcdir@ - VPATH = @srcdir@ -@@ -67,13 +65,13 @@ - *) f=$$p;; \ - esac; - am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; --am__installdirs = "$(DESTDIR)$(pkglibdir)" --nodist_pkglibDATA_INSTALL = $(INSTALL_DATA) --DATA = $(nodist_pkglib_DATA) -+am__installdirs = "$(DESTDIR)$(pkgdatadir)" -+nodist_pkgdataDATA_INSTALL = $(INSTALL_DATA) -+DATA = $(nodist_pkgdata_DATA) - ETAGS = etags - CTAGS = ctags - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) --pkglibdir = $(libdir)/$(PACKAGE)/$(host_cpu)-$(host_vendor) -+pkgdatadir = $(datadir)/$(PACKAGE)/$(host_cpu)-$(host_vendor) - ACLOCAL = @ACLOCAL@ - AMDEP_FALSE = @AMDEP_FALSE@ - AMDEP_TRUE = @AMDEP_TRUE@ -@@ -102,6 +100,8 @@ - EGREP = @EGREP@ - EXEEXT = @EXEEXT@ - FSYS_CFLAGS = @FSYS_CFLAGS@ -+GRAPHICS_SUPPORT_FALSE = @GRAPHICS_SUPPORT_FALSE@ -+GRAPHICS_SUPPORT_TRUE = @GRAPHICS_SUPPORT_TRUE@ - GRUB_CFLAGS = @GRUB_CFLAGS@ - GRUB_LIBS = @GRUB_LIBS@ - HERCULES_SUPPORT_FALSE = @HERCULES_SUPPORT_FALSE@ -@@ -172,6 +172,7 @@ - infodir = @infodir@ - install_sh = @install_sh@ - libdir = @libdir@ -+datadir = @datadir@ - libexecdir = @libexecdir@ - localstatedir = @localstatedir@ - mandir = @mandir@ -@@ -183,8 +184,8 @@ - sharedstatedir = @sharedstatedir@ - sysconfdir = @sysconfdir@ - target_alias = @target_alias@ --nodist_pkglib_DATA = stage1 --CLEANFILES = $(nodist_pkglib_DATA) -+nodist_pkgdata_DATA = stage1 -+CLEANFILES = $(nodist_pkgdata_DATA) - - # We can't use builtins or standard includes. - AM_CCASFLAGS = $(STAGE1_CFLAGS) -fno-builtin -nostdinc -@@ -242,22 +243,22 @@ - .S.obj: - $(CCASCOMPILE) -c `$(CYGPATH_W) '$<'` - uninstall-info-am: --install-nodist_pkglibDATA: $(nodist_pkglib_DATA) -+install-nodist_pkgdataDATA: $(nodist_pkgdata_DATA) - @$(NORMAL_INSTALL) -- test -z "$(pkglibdir)" || $(mkdir_p) "$(DESTDIR)$(pkglibdir)" -- @list='$(nodist_pkglib_DATA)'; for p in $$list; do \ -+ test -z "$(pkgdatadir)" || $(mkdir_p) "$(DESTDIR)$(pkgdatadir)" -+ @list='$(nodist_pkgdata_DATA)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ -- echo " $(nodist_pkglibDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkglibdir)/$$f'"; \ -- $(nodist_pkglibDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkglibdir)/$$f"; \ -+ echo " $(nodist_pkgdataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgdatadir)/$$f'"; \ -+ $(nodist_pkgdataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgdatadir)/$$f"; \ - done - --uninstall-nodist_pkglibDATA: -+uninstall-nodist_pkgdataDATA: - @$(NORMAL_UNINSTALL) -- @list='$(nodist_pkglib_DATA)'; for p in $$list; do \ -+ @list='$(nodist_pkgdata_DATA)'; for p in $$list; do \ - f=$(am__strip_dir) \ -- echo " rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ -- rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ -+ echo " rm -f '$(DESTDIR)$(pkgdatadir)/$$f'"; \ -+ rm -f "$(DESTDIR)$(pkgdatadir)/$$f"; \ - done - - ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) -@@ -339,7 +340,7 @@ - check: check-am - all-am: Makefile $(PROGRAMS) $(DATA) - installdirs: -- for dir in "$(DESTDIR)$(pkglibdir)"; do \ -+ for dir in "$(DESTDIR)$(pkgdatadir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ - done - install: install-am -@@ -388,7 +389,7 @@ - - install-data-am: - --install-exec-am: install-nodist_pkglibDATA -+install-exec-am: install-nodist_pkgdataDATA - - install-info: install-info-am - -@@ -412,19 +413,19 @@ - - ps-am: - --uninstall-am: uninstall-info-am uninstall-nodist_pkglibDATA -+uninstall-am: uninstall-info-am uninstall-nodist_pkgdataDATA - - .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-noinstPROGRAMS ctags distclean distclean-compile \ - distclean-generic distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-exec install-exec-am install-info \ -- install-info-am install-man install-nodist_pkglibDATA \ -+ install-info-am install-man install-nodist_pkgdataDATA \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-info-am \ -- uninstall-nodist_pkglibDATA -+ uninstall-nodist_pkgdataDATA - - .exec: - $(OBJCOPY) -O binary $< $@ ---- grub-0.97/util/grub-install.in.datadir 2005-12-14 11:00:21.000000000 -0500 -+++ grub-0.97/util/grub-install.in 2005-12-14 11:00:21.000000000 -0500 -@@ -21,13 +21,13 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ - sbindir=@sbindir@ --libdir=@libdir@ -+datadir=@datadir@ - PACKAGE=@PACKAGE@ - VERSION=@VERSION@ - host_cpu=@host_cpu@ - host_os=@host_os@ - host_vendor=@host_vendor@ --pkglibdir=${libdir}/${PACKAGE}/${host_cpu}-${host_vendor} -+pkgdatadir=${datadir}/${PACKAGE}/${host_cpu}-${host_vendor} - - grub_shell=${sbindir}/grub - mdadm=${sbindir}/mdadm -@@ -388,17 +388,17 @@ - exit 1 - fi - --if test -f "$pkglibdir/stage1"; then -+if test -f "$pkgdatadir/stage1"; then - : - else -- echo "${pkglibdir}/stage1: Not found." 1>&2 -+ echo "${pkgdatadir}/stage1: Not found." 1>&2 - exit 1 - fi - --if test -f "$pkglibdir/stage2"; then -+if test -f "$pkgdatadir/stage2"; then - : - else -- echo "${pkglibdir}/stage2: Not found." 1>&2 -+ echo "${pkgdatadir}/stage2: Not found." 1>&2 - exit 1 - fi - ---- grub-0.97/stage2/Makefile.am.datadir 2005-12-14 11:03:54.000000000 -0500 -+++ grub-0.97/stage2/Makefile.am 2005-12-14 11:05:04.000000000 -0500 -@@ -27,12 +27,12 @@ - -DUSE_MD5_PASSWORDS=1 -DSUPPORT_SERIAL=1 -DSUPPORT_HERCULES=1 - - # Stage 2 and Stage 1.5's. --pkglibdir = $(libdir)/$(PACKAGE)/$(host_cpu)-$(host_vendor) -+pkgdatadir = $(datadir)/$(PACKAGE)/$(host_cpu)-$(host_vendor) - - EXTRA_PROGRAMS = nbloader.exec pxeloader.exec diskless.exec - - if DISKLESS_SUPPORT --pkglib_DATA = stage2 stage2_eltorito e2fs_stage1_5 fat_stage1_5 \ -+pkgdata_DATA = stage2 stage2_eltorito e2fs_stage1_5 fat_stage1_5 \ - ffs_stage1_5 iso9660_stage1_5 jfs_stage1_5 minix_stage1_5 \ - reiserfs_stage1_5 ufs2_stage1_5 vstafs_stage1_5 xfs_stage1_5 \ - nbgrub pxegrub -@@ -43,7 +43,7 @@ - reiserfs_stage1_5.exec ufs2_stage1_5.exec vstafs_stage1_5.exec \ - xfs_stage1_5.exec nbloader.exec pxeloader.exec diskless.exec - else --pkglib_DATA = stage2 stage2_eltorito e2fs_stage1_5 fat_stage1_5 \ -+pkgdata_DATA = stage2 stage2_eltorito e2fs_stage1_5 fat_stage1_5 \ - ffs_stage1_5 iso9660_stage1_5 jfs_stage1_5 minix_stage1_5 \ - reiserfs_stage1_5 ufs2_stage1_5 vstafs_stage1_5 xfs_stage1_5 - noinst_DATA = pre_stage2 start start_eltorito -@@ -112,7 +112,7 @@ - BUILT_SOURCES = stage2_size.h - endif - --CLEANFILES = $(pkglib_DATA) $(noinst_DATA) $(BUILT_SOURCES) -+CLEANFILES = $(pkgdata_DATA) $(noinst_DATA) $(BUILT_SOURCES) - - stage2_size.h: pre_stage2 - -rm -f stage2_size.h diff --git a/src/patches/grub-0.97-disk_geometry-1.patch b/src/patches/grub-0.97-disk_geometry-1.patch deleted file mode 100644 index e09686dd7..000000000 --- a/src/patches/grub-0.97-disk_geometry-1.patch +++ /dev/null @@ -1,892 +0,0 @@ -Submitted By: Jim Gifford -Date: 05-28-2006 -Initial Package Version: 0.97 -Upstream Status: Unknown -Origin: Fedora and Mandriva -Description: This patch fixes issues with disk geometry not being - detected properly. Part of this patch also fixes - gcc 4 compile errors, which are a part of the issue. - -diff -Naur grub-0.97.orig/configure grub-0.97/configure ---- grub-0.97.orig/configure 2005-05-07 19:48:12.000000000 -0700 -+++ grub-0.97/configure 2006-05-28 20:29:36.025466751 -0700 -@@ -3485,9 +3485,9 @@ - echo "$as_me:$LINENO: result: $size_flag" >&5 - echo "${ECHO_T}$size_flag" >&6 - if test "x$size_flag" = xyes; then -- STAGE2_CFLAGS="-Os" -+ STAGE2_CFLAGS="-Os -fno-strict-aliasing" - else -- STAGE2_CFLAGS="-O2 -fno-strength-reduce -fno-unroll-loops" -+ STAGE2_CFLAGS="-O2 -fno-strict-aliasing -fno-strength-reduce -fno-unroll-loops" - fi - # OpenBSD has a GCC extension for protecting applications from - # stack smashing attacks, but GRUB doesn't want this feature. -diff -Naur grub-0.97.orig/configure.ac grub-0.97/configure.ac ---- grub-0.97.orig/configure.ac 2005-05-07 19:36:03.000000000 -0700 -+++ grub-0.97/configure.ac 2006-05-28 20:28:41.538819726 -0700 -@@ -93,9 +93,9 @@ - CFLAGS=$saved_CFLAGS - ]) - if test "x$size_flag" = xyes; then -- STAGE2_CFLAGS="-Os" -+ STAGE2_CFLAGS="-Os -fno-strict-aliasing" - else -- STAGE2_CFLAGS="-O2 -fno-strength-reduce -fno-unroll-loops" -+ STAGE2_CFLAGS="-O2 -fno-strict-aliasing -fno-strength-reduce -fno-unroll-loops" - fi - # OpenBSD has a GCC extension for protecting applications from - # stack smashing attacks, but GRUB doesn't want this feature. -diff -Naur grub-0.97.orig/lib/device.c grub-0.97/lib/device.c ---- grub-0.97.orig/lib/device.c 2005-03-27 15:14:25.000000000 -0800 -+++ grub-0.97/lib/device.c 2006-05-28 20:34:03.546804777 -0700 -@@ -131,6 +131,152 @@ - #include - #include - -+#if defined(__linux__) -+/* The 2.6 kernel has removed all of the geometry handling for IDE drives -+ * that did fixups for LBA, etc. This means that the geometry we get -+ * with the ioctl has a good chance of being wrong. So, we get to -+ * also know about partition tables and try to read what the geometry -+ * is there. *grumble* Very closely based on code from cfdisk -+ */ -+static void get_kernel_geometry(int fd, long long *cyl, int *heads, int *sectors) { -+ struct hd_geometry hdg; -+ -+ if (ioctl (fd, HDIO_GETGEO, &hdg)) -+ return; -+ -+ *cyl = hdg.cylinders; -+ *heads = hdg.heads; -+ *sectors = hdg.sectors; -+} -+ -+struct partition { -+ unsigned char boot_ind; /* 0x80 - active */ -+ unsigned char head; /* starting head */ -+ unsigned char sector; /* starting sector */ -+ unsigned char cyl; /* starting cylinder */ -+ unsigned char sys_ind; /* What partition type */ -+ unsigned char end_head; /* end head */ -+ unsigned char end_sector; /* end sector */ -+ unsigned char end_cyl; /* end cylinder */ -+ unsigned char start4[4]; /* starting sector counting from 0 */ -+ unsigned char size4[4]; /* nr of sectors in partition */ -+}; -+ -+#define ALIGNMENT 2 -+typedef union { -+ struct { -+ unsigned char align[ALIGNMENT]; -+ unsigned char b[SECTOR_SIZE]; -+ } c; -+ struct { -+ unsigned char align[ALIGNMENT]; -+ unsigned char buffer[0x1BE]; -+ struct partition part[4]; -+ unsigned char magicflag[2]; -+ } p; -+} partition_table; -+ -+#define PART_TABLE_FLAG0 0x55 -+#define PART_TABLE_FLAG1 0xAA -+ -+static void -+get_partition_table_geometry(partition_table *bufp, long long *cyl, int *heads, -+ int *sectors) { -+ struct partition *p; -+ int i,h,s,hh,ss; -+ int first = 1; -+ int bad = 0; -+ -+ if (bufp->p.magicflag[0] != PART_TABLE_FLAG0 || -+ bufp->p.magicflag[1] != PART_TABLE_FLAG1) { -+ /* Matthew Wilcox: slightly friendlier version of -+ fatal(_("Bad signature on partition table"), 3); -+ */ -+ fprintf(stderr, "Unknown partition table signature\n"); -+ return; -+ } -+ -+ hh = ss = 0; -+ for (i=0; i<4; i++) { -+ p = &(bufp->p.part[i]); -+ if (p->sys_ind != 0) { -+ h = p->end_head + 1; -+ s = (p->end_sector & 077); -+ if (first) { -+ hh = h; -+ ss = s; -+ first = 0; -+ } else if (hh != h || ss != s) -+ bad = 1; -+ } -+ } -+ -+ if (!first && !bad) { -+ *heads = hh; -+ *sectors = ss; -+ } -+} -+ -+static long long my_lseek (unsigned int fd, long long offset, -+ unsigned int origin) -+{ -+#if defined(__linux__) && (!defined(__GLIBC__) || \ -+ ((__GLIBC__ < 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ < 1)))) -+ /* Maybe libc doesn't have large file support. */ -+ loff_t offset, result; -+ static int _llseek (uint filedes, ulong hi, ulong lo, -+ loff_t *res, uint wh); -+ _syscall5 (int, _llseek, uint, filedes, ulong, hi, ulong, lo, -+ loff_t *, res, uint, wh); -+ -+ if (_llseek (fd, offset >> 32, offset & 0xffffffff, &result, SEEK_SET) < 0) -+ return (long long) -1; -+ return result; -+#else -+ return lseek(fd, offset, SEEK_SET); -+#endif -+} -+ -+static void get_linux_geometry (int fd, struct geometry *geom) { -+ long long kern_cyl = 0; int kern_head = 0, kern_sectors = 0; -+ long long pt_cyl = 0; int pt_head = 0, pt_sectors = 0; -+ partition_table bufp; -+ char *buff, *buf_unaligned; -+ -+ buf_unaligned = malloc(sizeof(partition_table) + 4095); -+ buff = (char *) (((unsigned long)buf_unaligned + 4096 - 1) & -+ (~(4096-1))); -+ -+ get_kernel_geometry(fd, &kern_cyl, &kern_head, &kern_sectors); -+ -+ if (my_lseek (fd, 0*SECTOR_SIZE, SEEK_SET) < 0) { -+ fprintf(stderr, "Unable to seek"); -+ } -+ -+ if (read(fd, buff, SECTOR_SIZE) == SECTOR_SIZE) { -+ memcpy(bufp.c.b, buff, SECTOR_SIZE); -+ get_partition_table_geometry(&bufp, &pt_cyl, &pt_head, &pt_sectors); -+ } else { -+ fprintf(stderr, "Unable to read partition table: %s\n", strerror(errno)); -+ } -+ -+ if (pt_head && pt_sectors) { -+ int cyl_size; -+ -+ geom->heads = pt_head; -+ geom->sectors = pt_sectors; -+ cyl_size = pt_head * pt_sectors; -+ geom->cylinders = geom->total_sectors/cyl_size; -+ } else { -+ geom->heads = kern_head; -+ geom->sectors = kern_sectors; -+ geom->cylinders = kern_cyl; -+ } -+ -+ return; -+} -+#endif -+ - /* Get the geometry of a drive DRIVE. */ - void - get_drive_geometry (struct geometry *geom, char **map, int drive) -@@ -151,21 +297,16 @@ - #if defined(__linux__) - /* Linux */ - { -- struct hd_geometry hdg; - unsigned long nr; -- -- if (ioctl (fd, HDIO_GETGEO, &hdg)) -- goto fail; - - if (ioctl (fd, BLKGETSIZE, &nr)) - goto fail; - - /* Got the geometry, so save it. */ -- geom->cylinders = hdg.cylinders; -- geom->heads = hdg.heads; -- geom->sectors = hdg.sectors; - geom->total_sectors = nr; -- -+ get_linux_geometry(fd, geom); -+ if (!geom->heads && !geom->cylinders && !geom->sectors) -+ goto fail; - goto success; - } - -@@ -844,6 +985,7 @@ - { - char dev[PATH_MAX]; /* XXX */ - int fd; -+ off_t offset = (off_t) sector * (off_t) SECTOR_SIZE; - - if ((partition & 0x00FF00) != 0x00FF00) - { -@@ -870,35 +1012,13 @@ - errnum = ERR_NO_PART; - return 0; - } -- --#if defined(__linux__) && (!defined(__GLIBC__) || \ -- ((__GLIBC__ < 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ < 1)))) -- /* Maybe libc doesn't have large file support. */ -- { -- loff_t offset, result; -- static int _llseek (uint filedes, ulong hi, ulong lo, -- loff_t *res, uint wh); -- _syscall5 (int, _llseek, uint, filedes, ulong, hi, ulong, lo, -- loff_t *, res, uint, wh); - -- offset = (loff_t) sector * (loff_t) SECTOR_SIZE; -- if (_llseek (fd, offset >> 32, offset & 0xffffffff, &result, SEEK_SET)) -- { -- errnum = ERR_DEV_VALUES; -- return 0; -- } -- } --#else -- { -- off_t offset = (off_t) sector * (off_t) SECTOR_SIZE; - -- if (lseek (fd, offset, SEEK_SET) != offset) -- { -- errnum = ERR_DEV_VALUES; -- return 0; -- } -- } --#endif -+ if (my_lseek(fd, offset, SEEK_SET) != offset) -+ { -+ errnum = ERR_DEV_VALUES; -+ return 0; -+ } - - if (write (fd, buf, size * SECTOR_SIZE) != (size * SECTOR_SIZE)) - { -diff -Naur grub-0.97.orig/stage2/Makefile.am grub-0.97/stage2/Makefile.am ---- grub-0.97.orig/stage2/Makefile.am 2005-02-02 12:37:35.000000000 -0800 -+++ grub-0.97/stage2/Makefile.am 2006-05-28 20:28:41.590818435 -0700 -@@ -24,7 +24,8 @@ - -DGRUB_UTIL=1 -DFSYS_EXT2FS=1 -DFSYS_FAT=1 -DFSYS_FFS=1 \ - -DFSYS_ISO9660=1 -DFSYS_JFS=1 -DFSYS_MINIX=1 -DFSYS_REISERFS=1 \ - -DFSYS_UFS2=1 -DFSYS_VSTAFS=1 -DFSYS_XFS=1 \ -- -DUSE_MD5_PASSWORDS=1 -DSUPPORT_SERIAL=1 -DSUPPORT_HERCULES=1 -+ -DUSE_MD5_PASSWORDS=1 -DSUPPORT_SERIAL=1 -DSUPPORT_HERCULES=1 \ -+ -fno-strict-aliasing - - # Stage 2 and Stage 1.5's. - pkglibdir = $(libdir)/$(PACKAGE)/$(host_cpu)-$(host_vendor) -diff -Naur grub-0.97.orig/stage2/boot.c grub-0.97/stage2/boot.c ---- grub-0.97.orig/stage2/boot.c 2004-03-30 03:44:08.000000000 -0800 -+++ grub-0.97/stage2/boot.c 2006-05-28 20:33:30.123638792 -0700 -@@ -55,7 +55,7 @@ - pu; - /* presuming that MULTIBOOT_SEARCH is large enough to encompass an - executable header */ -- unsigned char buffer[MULTIBOOT_SEARCH]; -+ char buffer[MULTIBOOT_SEARCH]; - - /* sets the header pointer to point to the beginning of the - buffer by default */ -@@ -98,7 +98,7 @@ - /* ELF loading supported if multiboot, FreeBSD and NetBSD. */ - if ((type == KERNEL_TYPE_MULTIBOOT - || pu.elf->e_ident[EI_OSABI] == ELFOSABI_FREEBSD -- || grub_strcmp (pu.elf->e_ident + EI_BRAND, "FreeBSD") == 0 -+ || grub_strcmp ((char *) pu.elf->e_ident + EI_BRAND, "FreeBSD") == 0 - || suggested_type == KERNEL_TYPE_NETBSD) - && len > sizeof (Elf32_Ehdr) - && BOOTABLE_I386_ELF ((*((Elf32_Ehdr *) buffer)))) -@@ -824,8 +824,12 @@ - moveto = (mbi.mem_upper + 0x400) << 10; - - moveto = (moveto - len) & 0xfffff000; -+#if 0 - max_addr = (lh->header == LINUX_MAGIC_SIGNATURE && lh->version >= 0x0203 - ? lh->initrd_addr_max : LINUX_INITRD_MAX_ADDRESS); -+#else -+ max_addr = LINUX_INITRD_MAX_ADDRESS; -+#endif - if (moveto + len >= max_addr) - moveto = (max_addr - len) & 0xfffff000; - -diff -Naur grub-0.97.orig/stage2/disk_io.c grub-0.97/stage2/disk_io.c ---- grub-0.97.orig/stage2/disk_io.c 2004-05-23 09:35:24.000000000 -0700 -+++ grub-0.97/stage2/disk_io.c 2006-05-28 20:28:41.582818634 -0700 -@@ -127,12 +127,19 @@ - int filepos; - int filemax; - --static inline unsigned long --log2 (unsigned long word) -+#define log2(n) ffz(~(n)) -+ -+/* include/asm-i386/bitops.h */ -+/* -+ * ffz = Find First Zero in word. Undefined if no zero exists, -+ * so code should check against ~0UL first.. -+ */ -+static __inline__ unsigned long -+ffz (unsigned long word) - { -- asm volatile ("bsfl %1,%0" -- : "=r" (word) -- : "r" (word)); -+ __asm__ ("bsfl %1,%0" -+: "=r" (word) -+: "r" (~word)); - return word; - } - -diff -Naur grub-0.97.orig/stage2/freebsd.h grub-0.97/stage2/freebsd.h ---- grub-0.97.orig/stage2/freebsd.h 2003-07-09 04:45:52.000000000 -0700 -+++ grub-0.97/stage2/freebsd.h 2006-05-28 20:28:41.582818634 -0700 -@@ -78,7 +78,7 @@ - struct bootinfo - { - unsigned int bi_version; -- unsigned char *bi_kernelname; -+ char *bi_kernelname; - struct nfs_diskless *bi_nfs_diskless; - /* End of fields that are always present. */ - #define bi_endcommon bi_n_bios_used -diff -Naur grub-0.97.orig/stage2/fsys_fat.c grub-0.97/stage2/fsys_fat.c ---- grub-0.97.orig/stage2/fsys_fat.c 2005-03-15 08:52:00.000000000 -0800 -+++ grub-0.97/stage2/fsys_fat.c 2006-05-28 20:28:41.582818634 -0700 -@@ -54,12 +54,19 @@ - - #define FAT_CACHE_SIZE 2048 - -+#define log2(n) ffz(~(n)) -+ -+/* include/asm-i386/bitops.h */ -+/* -+ * ffz = Find First Zero in word. Undefined if no zero exists, -+ * so code should check against ~0UL first.. -+ */ - static __inline__ unsigned long --log2 (unsigned long word) -+ffz (unsigned long word) - { - __asm__ ("bsfl %1,%0" -- : "=r" (word) -- : "r" (word)); -+: "=r" (word) -+: "r" (~word)); - return word; - } - -diff -Naur grub-0.97.orig/stage2/fsys_iso9660.c grub-0.97/stage2/fsys_iso9660.c ---- grub-0.97.orig/stage2/fsys_iso9660.c 2004-05-11 05:11:19.000000000 -0700 -+++ grub-0.97/stage2/fsys_iso9660.c 2006-05-28 20:28:41.582818634 -0700 -@@ -55,13 +55,19 @@ - #define RRCONT_BUF ((unsigned char *)(FSYS_BUF + 6144)) - #define NAME_BUF ((unsigned char *)(FSYS_BUF + 8192)) - -+#define log2(n) ffz(~(n)) - --static inline unsigned long --log2 (unsigned long word) -+/* include/asm-i386/bitops.h */ -+/* -+ * ffz = Find First Zero in word. Undefined if no zero exists, -+ * so code should check against ~0UL first.. -+ */ -+static __inline__ unsigned long -+ffz (unsigned long word) - { -- asm volatile ("bsfl %1,%0" -- : "=r" (word) -- : "r" (word)); -+ __asm__ ("bsfl %1,%0" -+: "=r" (word) -+: "r" (~word)); - return word; - } - -@@ -120,7 +126,7 @@ - break; - /* check ISO_VD_PRIMARY and ISO_STANDARD_ID */ - if (PRIMDESC->type.l == ISO_VD_PRIMARY -- && !memcmp(PRIMDESC->id, ISO_STANDARD_ID, sizeof(PRIMDESC->id))) -+ && !memcmp((char *) PRIMDESC->id, ISO_STANDARD_ID, sizeof(PRIMDESC->id))) - { - ISO_SUPER->vol_sector = sector; - INODE->file_start = 0; -@@ -175,7 +181,7 @@ - for (; idr->length.l > 0; - idr = (struct iso_directory_record *)((char *)idr + idr->length.l) ) - { -- const char *name = idr->name; -+ const u_int8_t *name = idr->name; - unsigned int name_len = idr->name_len.l; - - file_type = (idr->flags.l & 2) ? ISO_DIRECTORY : ISO_REGULAR; -@@ -198,7 +204,7 @@ - rr_len = (idr->length.l - idr->name_len.l - - sizeof(struct iso_directory_record) - + sizeof(idr->name)); -- rr_ptr.ptr = ((unsigned char *)idr + idr->name_len.l -+ rr_ptr.ptr = ((char *)idr + idr->name_len.l - + sizeof(struct iso_directory_record) - - sizeof(idr->name)); - if (rr_ptr.i & 1) -@@ -331,9 +337,9 @@ - memcpy(NAME_BUF, name, name_len); - name = NAME_BUF; - } -- rr_ptr.ptr = RRCONT_BUF + ce_ptr->u.ce.offset.l; -+ rr_ptr.ptr = (char *) RRCONT_BUF + ce_ptr->u.ce.offset.l; - rr_len = ce_ptr->u.ce.size.l; -- if (!iso9660_devread(ce_ptr->u.ce.extent.l, 0, ISO_SECTOR_SIZE, RRCONT_BUF)) -+ if (!iso9660_devread(ce_ptr->u.ce.extent.l, 0, ISO_SECTOR_SIZE, (char *) RRCONT_BUF)) - { - errnum = 0; /* this is not fatal. */ - break; -@@ -344,7 +350,7 @@ - - filemax = MAXINT; - if (name_len >= pathlen -- && !memcmp(name, dirname, pathlen)) -+ && !memcmp((char *) name, dirname, pathlen)) - { - if (dirname[pathlen] == '/' || !print_possibilities) - { -@@ -381,7 +387,7 @@ - print_possibilities = -print_possibilities; - memcpy(NAME_BUF, name, name_len); - NAME_BUF[name_len] = '\0'; -- print_a_completion (NAME_BUF); -+ print_a_completion ((char *) NAME_BUF); - #endif - } - } -diff -Naur grub-0.97.orig/stage2/fsys_reiserfs.c grub-0.97/stage2/fsys_reiserfs.c ---- grub-0.97.orig/stage2/fsys_reiserfs.c 2004-02-18 14:09:10.000000000 -0800 -+++ grub-0.97/stage2/fsys_reiserfs.c 2006-05-28 20:28:41.586818535 -0700 -@@ -365,13 +365,19 @@ - #define JOURNAL_START ((__u32 *) (INFO + 1)) - #define JOURNAL_END ((__u32 *) (FSYS_BUF + FSYS_BUFLEN)) - -+#define log2(n) ffz(~(n)) - -+/* include/asm-i386/bitops.h */ -+/* -+ * ffz = Find First Zero in word. Undefined if no zero exists, -+ * so code should check against ~0UL first.. -+ */ - static __inline__ unsigned long --log2 (unsigned long word) -+ffz (unsigned long word) - { - __asm__ ("bsfl %1,%0" -- : "=r" (word) -- : "r" (word)); -+: "=r" (word) -+: "r" (~word)); - return word; - } - -diff -Naur grub-0.97.orig/stage2/fsys_vstafs.c grub-0.97/stage2/fsys_vstafs.c ---- grub-0.97.orig/stage2/fsys_vstafs.c 2003-07-09 04:45:53.000000000 -0700 -+++ grub-0.97/stage2/fsys_vstafs.c 2006-05-28 20:28:41.586818535 -0700 -@@ -186,35 +186,35 @@ - int - vstafs_read (char *addr, int len) - { -- struct alloc *a; -+ struct alloc *b; - int size, ret = 0, offset, curr_len = 0; -- int curr_ext; -+ int curr_exten; - char extent; - int ext_size; - char *curr_pos; - - get_file_info (f_sector); - size = FILE_INFO->len-VSTAFS_START_DATA; -- a = FILE_INFO->blocks; -+ b = FILE_INFO->blocks; - - if (filepos > 0) - { -- if (filepos < a[0].a_len * 512 - VSTAFS_START_DATA) -+ if (filepos < b[0].a_len * 512 - VSTAFS_START_DATA) - { - offset = filepos + VSTAFS_START_DATA; - extent = 0; -- curr_len = a[0].a_len * 512 - offset - filepos; -+ curr_len = b[0].a_len * 512 - offset - filepos; - } - else - { -- ext_size = a[0].a_len * 512 - VSTAFS_START_DATA; -+ ext_size = b[0].a_len * 512 - VSTAFS_START_DATA; - offset = filepos - ext_size; - extent = 1; - do - { - curr_len -= ext_size; - offset -= ext_size; -- ext_size = a[extent+1].a_len * 512; -+ ext_size = b[extent+1].a_len * 512; - } - while (extent < FILE_INFO->extents && offset>ext_size); - } -@@ -223,16 +223,16 @@ - { - offset = VSTAFS_START_DATA; - extent = 0; -- curr_len = a[0].a_len * 512 - offset; -+ curr_len = b[0].a_len * 512 - offset; - } - - curr_pos = addr; - if (curr_len > len) - curr_len = len; - -- for (curr_ext=extent; -- curr_ext < FILE_INFO->extents; -- curr_len = a[curr_ext].a_len * 512, curr_pos += curr_len, curr_ext++) -+ for (curr_exten = extent; -+ curr_exten < FILE_INFO->extents; -+ curr_len = b[curr_exten].a_len * 512, curr_pos += curr_len, curr_exten++) - { - ret += curr_len; - size -= curr_len; -@@ -242,7 +242,7 @@ - curr_len += size; - } - -- devread (a[curr_ext].a_start,offset, curr_len, curr_pos); -+ devread (b[curr_exten].a_start, offset, curr_len, curr_pos); - offset = 0; - } - -diff -Naur grub-0.97.orig/stage2/fsys_xfs.c grub-0.97/stage2/fsys_xfs.c ---- grub-0.97.orig/stage2/fsys_xfs.c 2005-05-07 19:15:55.000000000 -0700 -+++ grub-0.97/stage2/fsys_xfs.c 2006-05-28 20:28:41.586818535 -0700 -@@ -97,7 +97,7 @@ - return ino & XFS_INO_MASK(XFS_INO_OFFSET_BITS); - } - --static inline __const__ xfs_uint16_t -+static inline __attribute__((const)) xfs_uint16_t - le16 (xfs_uint16_t x) - { - __asm__("xchgb %b0,%h0" \ -@@ -106,7 +106,7 @@ - return x; - } - --static inline __const__ xfs_uint32_t -+static inline __attribute__((const)) xfs_uint32_t - le32 (xfs_uint32_t x) - { - #if 0 -@@ -122,7 +122,7 @@ - return x; - } - --static inline __const__ xfs_uint64_t -+static inline __attribute__((const)) xfs_uint64_t - le64 (xfs_uint64_t x) - { - xfs_uint32_t h = x >> 32; -@@ -368,7 +368,7 @@ - default: - namelen = sfe->namelen; - *ino = sf_ino ((char *)sfe, namelen); -- name = sfe->name; -+ name = (char *) sfe->name; - sfe = (xfs_dir2_sf_entry_t *) - ((char *)sfe + namelen + 11 - xfs.i8param); - } -diff -Naur grub-0.97.orig/stage2/gunzip.c grub-0.97/stage2/gunzip.c ---- grub-0.97.orig/stage2/gunzip.c 2003-07-09 04:45:53.000000000 -0700 -+++ grub-0.97/stage2/gunzip.c 2006-05-28 20:28:41.586818535 -0700 -@@ -277,7 +277,7 @@ - * is a compressed file, and simply mark it as such. - */ - if (no_decompression -- || grub_read (buf, 10) != 10 -+ || grub_read ((char *) buf, 10) != 10 - || ((*((unsigned short *) buf) != GZIP_HDR_LE) - && (*((unsigned short *) buf) != OLD_GZIP_HDR_LE))) - { -@@ -293,7 +293,7 @@ - if (buf[2] != DEFLATED - || (buf[3] & UNSUPP_FLAGS) - || ((buf[3] & EXTRA_FIELD) -- && (grub_read (buf, 2) != 2 -+ && (grub_read ((char *) buf, 2) != 2 - || bad_field (*((unsigned short *) buf)))) - || ((buf[3] & ORIG_NAME) && bad_field (-1)) - || ((buf[3] & COMMENT) && bad_field (-1))) -@@ -308,7 +308,7 @@ - - filepos = filemax - 8; - -- if (grub_read (buf, 8) != 8) -+ if (grub_read ((char *) buf, 8) != 8) - { - if (! errnum) - errnum = ERR_BAD_GZIP_HEADER; -@@ -485,8 +485,8 @@ - - #define INBUFSIZ 0x2000 - --static uch inbuf[INBUFSIZ]; --static int bufloc; -+static unsigned char inbuf[INBUFSIZ]; -+static int bufloc; - - static int - get_byte (void) -@@ -494,7 +494,7 @@ - if (filepos == gzip_data_offset || bufloc == INBUFSIZ) - { - bufloc = 0; -- grub_read (inbuf, INBUFSIZ); -+ grub_read ((char *) inbuf, INBUFSIZ); - } - - return inbuf[bufloc++]; -@@ -925,7 +925,7 @@ - unsigned m; /* mask for bit lengths table */ - unsigned n; /* number of lengths to get */ - unsigned nb; /* number of bit length codes */ -- unsigned nl; /* number of literal/length codes */ -+ unsigned nc; /* number of literal/length codes */ - unsigned nd; /* number of distance codes */ - unsigned ll[286 + 30]; /* literal/length and distance code lengths */ - register ulg b; /* bit buffer */ -@@ -937,7 +937,7 @@ - - /* read in table lengths */ - NEEDBITS (5); -- nl = 257 + ((unsigned) b & 0x1f); /* number of literal/length codes */ -+ nc = 257 + ((unsigned) b & 0x1f); /* number of literal/length codes */ - DUMPBITS (5); - NEEDBITS (5); - nd = 1 + ((unsigned) b & 0x1f); /* number of distance codes */ -@@ -945,7 +945,7 @@ - NEEDBITS (4); - nb = 4 + ((unsigned) b & 0xf); /* number of bit length codes */ - DUMPBITS (4); -- if (nl > 286 || nd > 30) -+ if (nc > 286 || nd > 30) - { - errnum = ERR_BAD_GZIP_DATA; - return; -@@ -970,7 +970,7 @@ - } - - /* read in literal and distance code lengths */ -- n = nl + nd; -+ n = nc + nd; - m = mask_bits[bl]; - i = l = 0; - while ((unsigned) i < n) -@@ -1034,7 +1034,7 @@ - - /* build the decoding tables for literal/length and distance codes */ - bl = lbits; -- if ((i = huft_build (ll, nl, 257, cplens, cplext, &tl, &bl)) != 0) -+ if ((i = huft_build (ll, nc, 257, cplens, cplext, &tl, &bl)) != 0) - { - #if 0 - if (i == 1) -@@ -1045,7 +1045,7 @@ - return; - } - bd = dbits; -- if ((i = huft_build (ll + nl, nd, 0, cpdist, cpdext, &td, &bd)) != 0) -+ if ((i = huft_build (ll + nc, nd, 0, cpdist, cpdext, &td, &bd)) != 0) - { - #if 0 - if (i == 1) -diff -Naur grub-0.97.orig/stage2/md5.c grub-0.97/stage2/md5.c ---- grub-0.97.orig/stage2/md5.c 2003-07-09 04:45:53.000000000 -0700 -+++ grub-0.97/stage2/md5.c 2006-05-28 20:28:41.590818435 -0700 -@@ -166,7 +166,7 @@ - inputlen -= 64 - buflen; - while (inputlen >= 64) - { -- md5_transform (input); -+ md5_transform ((unsigned char *) input); - input += 64; - inputlen -= 64; - } -@@ -211,7 +211,7 @@ - char *p; - int saltlen; - int i, n; -- unsigned char alt_result[16]; -+ char alt_result[16]; - unsigned char *digest; - - if (check) -diff -Naur grub-0.97.orig/stage2/start_eltorito.S grub-0.97/stage2/start_eltorito.S ---- grub-0.97.orig/stage2/start_eltorito.S 2004-03-27 08:14:20.000000000 -0800 -+++ grub-0.97/stage2/start_eltorito.S 2006-05-28 20:31:17.770936712 -0700 -@@ -40,9 +40,9 @@ - #define ABS(x) (x-_start+BOOTSEC_LOCATION) - - #ifdef STAGE1_5 --# define STAGE_ADDR 0x2000 -+# define STAGE_ADDR 0x2200 - #else --# define STAGE_ADDR 0x8000 -+# define STAGE_ADDR 0x8200 - #endif /* STAGE1_5 */ - - /* Print message string */ -@@ -71,12 +71,14 @@ - . = _start + 8 /* Pad to file offset 8 */ - - /* This table gets filled in by mkisofs using the -- -boot-info-table option */ --bi_pvd: .long 0xDEADBEEF /* LBA of primary volume descript */ --bi_file: .long 0xDEADBEEF /* LBA of boot file */ --bi_length: .long 0xDEADBEEF /* Length of boot file */ --bi_csum: .long 0xDEADBEEF /* Checksum of boot file */ --bi_reserved: .space (10*4) /* Reserved */ -+ -boot-info-table option If not, the values in this -+ table are default values that we can use to get us -+ what we need, at least under a certain set of assumptions. */ -+bi_pvd: .long 16 /* LBA of primary volume descript */ -+bi_file: .long 0 /* LBA of boot file */ -+bi_length: .long 0xDEADBEEF /* Length of boot file */ -+bi_csum: .long 0xDEADBEEF /* Checksum of boot file */ -+bi_reserved: .space (10*4) /* Reserved */ - - real_start: - xor %ax, %ax -@@ -92,10 +94,28 @@ - /* save drive reference first thing! */ - mov %dl, ABS(BootDrive) - -- /* print a notification message on the screen */ -- MSG(notification_string) -+ /* check if machine support IBM/MS int 13h extensions */ -+ mov $0x41, %ah -+ mov $0x55AA, %bx -+ int $0x13 -+ jnc load_image -+ -+ /* bios doesn't support int 13h extensions, print error messages */ -+ MSG(int13_error_string1) -+ MSG(notification_done) -+ MSG(int13_error_string2) -+ MSG(notification_done) -+ MSG(int13_error_string3) -+ MSG(notification_done) -+ /* even when bios says that it doesn't support int 13h -+ extensions, do not stop here and try to load image anyway, -+ because some bioses says that there isn't support for -+ extended functions but have the needed extended read function -+ (int 13h, function AH=42h) */ - - load_image: -+ /* print a notification message on the screen */ -+ MSG(notification_string) - /* Set up boot file sector, size, load address */ - mov ABS(bi_length), %eax - add $(ISO_SECTOR_SIZE-1), %eax -@@ -105,6 +125,8 @@ - mov %bx, %es - xor %bx, %bx - mov ABS(bi_file), %eax -+ inc %eax /* do not reload the first sector (this code) */ -+ dec %bp /* this way we have more room for code in stage1 */ - call getlinsec - mov %ds, %ax - mov %ax, %es -@@ -115,7 +137,7 @@ - mov $ABS(firstlist - BOOTSEC_LISTSIZE), %si - mov (%si), %ebp - mov ABS(BootDrive), %dl /* this makes sure %dl is our "boot" drive */ -- ljmp $0, $(STAGE_ADDR+SECTOR_SIZE) /* jump to main() in asm.S */ -+ ljmp $0, $(STAGE_ADDR) /* jump to main() in asm.S */ - - /* go here when you need to stop the machine hard after an error condition */ - stop: jmp stop -@@ -171,11 +193,11 @@ - */ - xint13: - movb $6, ABS(RetryCount) -- pushal - .try: -+ pushal - int $0x13 - jc 1f -- add $(8*4), %sp /* Clean up stack */ -+ popal /* Clean up stack */ - ret - 1: - mov %ah, %dl /* Save error code */ -@@ -276,6 +298,10 @@ - - read_error_string: .string "Read error 0x" - -+int13_error_string1: .string "Support for IBM/MS INT 13h extensions not found" -+int13_error_string2: .string "GRUB cannot be loaded if int 13h/function AH=42h isn't present" -+int13_error_string3: .string "Trying to load stage 2 anyway..." -+ - /* - * EBIOS disk address packet - */ -@@ -306,7 +332,8 @@ - .word 0 - .word 0 - -- . = _start + SECTOR_SIZE - BOOTSEC_LISTSIZE -+ /* size of the code we can place between main body and fixed top location */ -+ . = _start + 1536 - BOOTSEC_LISTSIZE - - /* fill the first data listing with the default */ - blocklist_default_start:/* this is the sector start parameter, in logical -@@ -321,6 +348,12 @@ - #endif - blocklist_default_seg: /* this is the segment of the starting address - to load the data into */ -- .word (STAGE_ADDR + SECTOR_SIZE) >> 4 -+ .word (STAGE_ADDR) >> 4 - - firstlist: /* this label has to be after the list data!!! */ -+ -+ /* this is a workaround to allow more code to be added in stage1, -+ it allows more code to be added for this stage, but for this -+ we can't reload the first sector. So we have to align the code -+ to ISO_SECTOR_SIZE. */ -+ . = _start + ISO_SECTOR_SIZE -diff -Naur grub-0.97.orig/util/grub-install.in grub-0.97/util/grub-install.in ---- grub-0.97.orig/util/grub-install.in 2004-07-24 11:57:31.000000000 -0700 -+++ grub-0.97/util/grub-install.in 2006-05-28 20:30:31.484088268 -0700 -@@ -336,6 +336,10 @@ - # Create a safe temporary file. - test -n "$mklog" && log_file=`$mklog` - -+ # Before all invocations of the grub shell, call sync to make sure -+ # the raw device is in sync with any bufferring in filesystems. -+ sync -+ - $grub_shell --batch $no_floppy --device-map=$device_map <$log_file - quit - EOF -@@ -450,6 +454,10 @@ - # Create a safe temporary file. - test -n "$mklog" && log_file=`$mklog` - -+# Before all invocations of the grub shell, call sync to make sure -+# the raw device is in sync with any bufferring in filesystems. -+sync -+ - # Now perform the installation. - $grub_shell --batch $no_floppy --device-map=$device_map <$log_file - root $root_drive diff --git a/src/patches/grub-0.97-dmraid-partition-names.patch b/src/patches/grub-0.97-dmraid-partition-names.patch deleted file mode 100644 index 9390b29ac..000000000 --- a/src/patches/grub-0.97-dmraid-partition-names.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- grub-0.97/lib/device.c.dmraid-partition-names 2006-02-13 18:53:59.000000000 -0500 -+++ grub-0.97/lib/device.c 2006-02-13 18:56:04.000000000 -0500 -@@ -1106,6 +1106,7 @@ - /* Compaq smart and others */ - (strncmp(dev, "/dev/ida/", 9) == 0 || - strncmp(dev, "/dev/ataraid/", 13) == 0 || -+ strncmp(dev, "/dev/mapper/", 12) == 0 || - strncmp(dev, "/dev/cciss/", 11) == 0 || - strncmp(dev, "/dev/rd/", 8) == 0) ? "p" : "", - ((partition >> 16) & 0xFF) + 1); diff --git a/src/patches/grub-0.97-dmraid-recheck-bad.patch b/src/patches/grub-0.97-dmraid-recheck-bad.patch deleted file mode 100644 index 49b33ae25..000000000 --- a/src/patches/grub-0.97-dmraid-recheck-bad.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- grub-0.97/util/grub-install.in.dmraid-recheck-bad 2006-01-13 17:04:26.000000000 -0500 -+++ grub-0.97/util/grub-install.in 2006-01-13 17:05:00.000000000 -0500 -@@ -415,6 +415,14 @@ - grubdir=${bootdir}/grub - device_map=${grubdir}/device.map - -+if [ "$recheck" == "yes" ]; then -+ if grep 'mapper' ${device_map} >/dev/null; then -+ echo 'grub-install does not support reprobing of device.map when' 1>&2 -+ echo 'using a device-mapper based boot device.' 1>&2 -+ exit 1 -+ fi -+fi -+ - # if they just want the images copied, copy the images and then exit - if test $justcopy = yes; then - copy_images diff --git a/src/patches/grub-0.97-dmraid.patch b/src/patches/grub-0.97-dmraid.patch deleted file mode 100644 index 5aad8c481..000000000 --- a/src/patches/grub-0.97-dmraid.patch +++ /dev/null @@ -1,92 +0,0 @@ ---- grub-0.97/util/grub-install.in.dmraid 2006-01-13 16:40:24.000000000 -0500 -+++ grub-0.97/util/grub-install.in 2006-01-13 16:40:37.000000000 -0500 -@@ -101,17 +101,24 @@ - # Break the device name into the disk part and the partition part. - case "$host_os" in - linux*) -- tmp_disk=`echo "$1" | sed -e 's%\([sh]d[a-z]\)[0-9]*$%\1%' \ -+ tmp_disk=`echo "$1" | grep -v '/mapper/control$' | -+ grep -v '/mapper/[[:alnum:]]\+-[[:alnum:]]\+$' | uniq | -+ sed -e 's%\([sh]d[a-z]\)[0-9]*$%\1%' \ - -e 's%\(d[0-9]*\)p[0-9]*$%\1%' \ - -e 's%\(fd[0-9]*\)$%\1%' \ - -e 's%/part[0-9]*$%/disc%' \ -- -e 's%\(c[0-7]d[0-9]*\).*$%\1%'` -- tmp_part=`echo "$1" | sed -e 's%.*/[sh]d[a-z]\([0-9]*\)$%\1%' \ -+ -e 's%\(c[0-7]d[0-9]*\).*$%\1%' \ -+ -e 's%\(/mapper/[[:alpha:]]\+_[[:alpha:]]\+\)[[:digit:]]\+$%\1%'` -+ tmp_part=`echo "$1" | grep -v '/mapper/control$' | -+ grep -v '/mapper/[[:alnum:]]\+-[[:alnum:]]\+$' | uniq | -+ sed -e 's%.*/[sh]d[a-z]\([0-9]*\)$%\1%' \ - -e 's%.*d[0-9]*p%%' \ - -e 's%.*/fd[0-9]*$%%' \ - -e 's%.*/floppy/[0-9]*$%%' \ - -e 's%.*/\(disc\|part\([0-9]*\)\)$%\2%' \ -- -e 's%.*c[0-7]d[0-9]*p%%'` -+ -e 's%.*c[0-7]d[0-9]*p%%' \ -+ -e 's%.*/mapper/[[:alpha:]]\+_[[:alpha:]]\+\([[:digit:]]\+\)$%\1%' | -+ grep -v '.*/mapper/.*'` - ;; - gnu*) - tmp_disk=`echo "$1" | sed 's%\([sh]d[0-9]*\).*%\1%'` -@@ -253,6 +260,43 @@ - return 0 - } - -+# Usage: stat_device file -+# Find major:minor of a device node. -+stat_device() { -+ majmin=`stat -c "%t:%T" "$1" 2>/dev/null` -+ if test -z "$majmin"; then -+ echo "Could not find device for $1" 2>&1 -+ exit 1 -+ fi -+ -+ echo "$majmin" -+} -+ -+# Usage: find_mapper_device file -+# Find a file in /dev/mapper with the same major:minor as the specified node. -+find_mapper_device() { -+ if [ -b "$1" ]; then -+ dev="$1" -+ else -+ mntpnt=`echo "$1" | sed 's,/,\\\\/,g'` -+ dev=`awk '($2 ~ /'$mntpnt'/) { print $1 }' /etc/mtab` -+ fi -+ if test -z "$dev"; then -+ echo "Could not find device for $1" 2>&1 -+ exit 1 -+ fi -+ -+ majmin=`stat_device $dev` -+ for x in /dev/mapper/* ; do -+ devmajmin=`stat_device "$x"` -+ if [ "$majmin" == "$devmajmin" ]; then -+ echo "$x" -+ return 0 -+ fi -+ done -+ return 1 -+} -+ - # Usage: find_device file - # Find block device on which the file resides. - find_device () { -@@ -265,9 +309,14 @@ - exit 1 - fi - -- tmp_fname=`resolve_symlink $tmp_fname` -+ ret_fname=`resolve_symlink $tmp_fname` -+ tmp_fname=`find_mapper_device $ret_fname` -+ if test -n "$tmp_fname"; then -+ ret_fname="$tmp_fname" -+ fi - -- echo "$tmp_fname" -+ echo "$ret_fname" -+ return 0 - } - - copy_images() { diff --git a/src/patches/grub-0.97-install.in.patch b/src/patches/grub-0.97-install.in.patch deleted file mode 100644 index a9f2aefdc..000000000 --- a/src/patches/grub-0.97-install.in.patch +++ /dev/null @@ -1,34 +0,0 @@ ---- grub-0.97/util/grub-install.in.install 2005-12-12 18:15:45.000000000 -0500 -+++ grub-0.97/util/grub-install.in 2005-12-12 18:18:11.000000000 -0500 -@@ -324,6 +324,15 @@ - test -d "$bootdir" || mkdir "$bootdir" || exit 1 - test -d "$grubdir" || mkdir "$grubdir" || exit 1 - -+# Copy the GRUB images to the GRUB directory. -+for file in ${grubdir}/stage1 ${grubdir}/stage2 ${grubdir}/*stage1_5; do -+ rm -f $file || exit 1 -+done -+for file in \ -+ ${pkgdatadir}/stage1 ${pkgdatadir}/stage2 ${pkgdatadir}/*stage1_5; do -+ cp -f $file ${grubdir} || exit 1 -+done -+ - # If --recheck is specified, remove the device map, if present. - if test $recheck = yes; then - rm -f $device_map -@@ -406,15 +415,6 @@ - exit 1 - fi - --# Copy the GRUB images to the GRUB directory. --for file in ${grubdir}/stage1 ${grubdir}/stage2 ${grubdir}/*stage1_5; do -- rm -f $file || exit 1 --done --for file in \ -- ${pkglibdir}/stage1 ${pkglibdir}/stage2 ${pkglibdir}/*stage1_5; do -- cp -f $file ${grubdir} || exit 1 --done -- - # Make a default file. - ${grub_set_default} --root-directory=${rootdir} default - diff --git a/src/patches/grub-0.97-mactel-kbd.patch b/src/patches/grub-0.97-mactel-kbd.patch deleted file mode 100644 index f1de19fe9..000000000 --- a/src/patches/grub-0.97-mactel-kbd.patch +++ /dev/null @@ -1,100 +0,0 @@ ---- grub-0.97/stage2/asm.S.mactel-kbd 2006-06-12 17:00:10.000000000 -0400 -+++ grub-0.97/stage2/asm.S 2006-06-12 17:03:38.000000000 -0400 -@@ -1651,7 +1651,30 @@ - jnz 3f - ret - --3: /* use keyboard controller */ -+3: /* -+ * try to switch gateA20 using PORT92, the "Fast A20 and Init" -+ * register -+ */ -+ mov $0x92, %dx -+ inb %dx, %al -+ /* skip the port92 code if it's unimplemented (read returns 0xff) */ -+ cmpb $0xff, %al -+ jz 6f -+ -+ /* set or clear bit1, the ALT_A20_GATE bit */ -+ movb 4(%esp), %ah -+ testb %ah, %ah -+ jz 4f -+ orb $2, %al -+ jmp 5f -+4: and $0xfd, %al -+ -+ /* clear the INIT_NOW bit; don't accidently reset the machine */ -+5: and $0xfe, %al -+ outb %al, %dx -+ -+ -+6: /* use keyboard controller */ - pushl %eax - - call gloop1 -@@ -1661,9 +1684,12 @@ - - gloopint1: - inb $K_STATUS -+ cmpb $0xff, %al -+ jz gloopint1_done - andb $K_IBUF_FUL, %al - jnz gloopint1 - -+gloopint1_done: - movb $KB_OUTPUT_MASK, %al - cmpb $0, 0x8(%esp) - jz gdoit -@@ -1684,6 +1710,8 @@ - - gloop1: - inb $K_STATUS -+ cmpb $0xff, %al -+ jz gloop2ret - andb $K_IBUF_FUL, %al - jnz gloop1 - -@@ -1994,8 +2022,25 @@ - call EXT_C(prot_to_real) - .code16 - -+.again: -+ mov $0x11, %ah /* poll kbd */ - int $0x16 - -+ jz .again -+#if 0 -+/* XXX handle serial here? -- pj */ -+ jnz .kbd -+#endif -+.kbd: -+ mov $0x10, %ah -+ int $0x16 -+ cmp $0xe0, %al -+ jnz .not_ext -+ xor %al, %al -+.not_ext: -+ and %al, %al -+ jz .func_key -+.func_key: - movw %ax, %dx /* real_to_prot uses %eax */ - call translate_keycode - call remap_ascii_char -@@ -2003,7 +2048,7 @@ - DATA32 call EXT_C(real_to_prot) - .code32 - -- movw %dx, %ax -+ mov %dx, %ax - - pop %ebp - ret -@@ -2029,7 +2074,7 @@ - call EXT_C(prot_to_real) /* enter real mode */ - .code16 - -- movb $0x1, %ah -+ movb $0x11, %ah - int $0x16 - - DATA32 jz notpending diff --git a/src/patches/grub-0.97-mdadm-path.patch b/src/patches/grub-0.97-mdadm-path.patch deleted file mode 100644 index fff301c27..000000000 --- a/src/patches/grub-0.97-mdadm-path.patch +++ /dev/null @@ -1,27 +0,0 @@ ---- grub-0.97/util/grub-install.in.mdadm-path 2005-12-12 18:42:23.000000000 -0500 -+++ grub-0.97/util/grub-install.in 2005-12-12 18:44:15.000000000 -0500 -@@ -30,5 +30,6 @@ - pkglibdir=${libdir}/${PACKAGE}/${host_cpu}-${host_vendor} - - grub_shell=${sbindir}/grub -+mdadm=${sbindir}/mdadm - log_file=/tmp/grub-install.log.$$ - img_file=/tmp/grub-install.img.$$ -@@ -217,7 +218,7 @@ - is_raid1_device () { - case "$host_os" in - linux*) -- level=`mdadm --query --detail $1 2>/dev/null | \ -+ level=`$mdadm --query --detail $1 2>/dev/null | \ - awk '/Raid Level :/ {print $4}'` - if [ "$level" = "raid1" ]; then - return 0 -@@ -236,7 +237,7 @@ - linux*) - if is_raid1_device $source_device ; then - list="" -- for device in `mdadm --query --detail "${source_device}" | \ -+ for device in `$mdadm --query --detail "${source_device}" | \ - awk '/\/dev\/[^(md)]/ {print $7}'` ; do - list="$list $device" - done diff --git a/src/patches/grub-0.97-mpath.patch b/src/patches/grub-0.97-mpath.patch deleted file mode 100644 index 4b7edf3ac..000000000 --- a/src/patches/grub-0.97-mpath.patch +++ /dev/null @@ -1,18 +0,0 @@ ---- grub-0.97/util/grub-install.in.mpath 2006-08-02 17:21:53.000000000 -0400 -+++ grub-0.97/util/grub-install.in 2006-08-02 17:23:23.000000000 -0400 -@@ -107,6 +107,7 @@ - -e 's%\(fd[0-9]*\)$%\1%' \ - -e 's%/part[0-9]*$%/disc%' \ - -e 's%\(c[0-7]d[0-9]*\).*$%\1%' \ -+ -e 's%\(/mapper/[[:alpha:]]\+[[:digit:]]\+\)p[[:digit:]]\+$%\1%' \ - -e 's%\(/mapper/[[:alpha:]]\+_[[:alpha:]]\+\)[[:digit:]]\+$%\1%'` - tmp_part=`echo "$1" | grep -v '/mapper/control$' | - grep -v '/mapper/[[:alnum:]]\+-[[:alnum:]]\+$' | uniq | -@@ -116,6 +117,7 @@ - -e 's%.*/floppy/[0-9]*$%%' \ - -e 's%.*/\(disc\|part\([0-9]*\)\)$%\2%' \ - -e 's%.*c[0-7]d[0-9]*p%%' \ -+ -e 's%.*/mapper/[[:alpha:]]\+[[:digit:]]\+p\([[:digit:]]\+\)$%\1%' \ - -e 's%.*/mapper/[[:alpha:]]\+_[[:alpha:]]\+\([[:digit:]]\+\)$%\1%' | - grep -v '.*/mapper/.*'` - ;; diff --git a/src/patches/grub-0.97-nx-multiinstall.patch b/src/patches/grub-0.97-nx-multiinstall.patch deleted file mode 100644 index f0e4ec0f7..000000000 --- a/src/patches/grub-0.97-nx-multiinstall.patch +++ /dev/null @@ -1,60 +0,0 @@ -2006-03-09 Alexandre Oliva - - * lib/builtins.c (install_blocklist_helper): Move static - last_lenght... - (install_func_context): ... here. - (install_func): Reset it. - -Index: grub-0.97/stage2/builtins.c -=================================================================== ---- grub-0.97.orig/stage2/builtins.c 2006-03-09 10:26:41.000000000 -0300 -+++ grub-0.97/stage2/builtins.c 2006-03-09 11:36:18.000000000 -0300 -@@ -1926,11 +1926,13 @@ static struct { - int saved_sector; - int installaddr; - int installlist; -+ int last_length; - char *stage2_first_buffer; - } install_func_context = { - .saved_sector = 0, - .installaddr = 0, - .installlist = 0, -+ .last_length = SECTOR_SIZE, - .stage2_first_buffer = NULL, - }; - -@@ -1960,19 +1962,19 @@ install_blocklist_helper (int sector, in - int *installlist = &install_func_context.installlist; - char **stage2_first_buffer = &install_func_context.stage2_first_buffer; - /* Was the last sector full? */ -- static int last_length = SECTOR_SIZE; -+ int *last_length = &install_func_context.last_length; - - if (debug) - printf("[%d]", sector); - -- if (offset != 0 || last_length != SECTOR_SIZE) -+ if (offset != 0 || *last_length != SECTOR_SIZE) - { - /* We found a non-sector-aligned data block. */ - errnum = ERR_UNALIGNED; - return; - } - -- last_length = length; -+ *last_length = length; - - if (*((unsigned long *) (*installlist - 4)) - + *((unsigned short *) *installlist) != sector -@@ -2027,7 +2029,11 @@ install_func (char *arg, int flags) - int is_open = 0; - /* If LBA is forced? */ - int is_force_lba = 0; -+ int *last_length = &install_func_context.last_length; - -+ /* Reset state. */ -+ *last_length = SECTOR_SIZE; -+ - *stage2_first_buffer = old_sect + SECTOR_SIZE; - #ifdef GRUB_UTIL - /* If the Stage 2 is in a partition mounted by an OS, this will store diff --git a/src/patches/grub-0.97-nxstack.patch b/src/patches/grub-0.97-nxstack.patch deleted file mode 100644 index 92742cd57..000000000 --- a/src/patches/grub-0.97-nxstack.patch +++ /dev/null @@ -1,615 +0,0 @@ ---- grub-0.97/stage2/shared.h.nxstack 2005-12-12 18:31:41.000000000 -0500 -+++ grub-0.97/stage2/shared.h 2005-12-12 18:31:42.000000000 -0500 -@@ -36,8 +36,8 @@ - - /* Maybe redirect memory requests through grub_scratch_mem. */ - #ifdef GRUB_UTIL --extern char *grub_scratch_mem; --# define RAW_ADDR(x) ((x) + (int) grub_scratch_mem) -+extern void *grub_scratch_mem; -+# define RAW_ADDR(x) ((x) + (unsigned long) grub_scratch_mem) - # define RAW_SEG(x) (RAW_ADDR ((x) << 4) >> 4) - #else - # define RAW_ADDR(x) (x) ---- grub-0.97/stage2/builtins.c.nxstack 2005-12-12 18:31:41.000000000 -0500 -+++ grub-0.97/stage2/builtins.c 2005-12-12 18:41:47.000000000 -0500 -@@ -131,62 +131,97 @@ - } - - -+/* blocklist_read_helper nee disk_read_blocklist_func was a nested -+ * function, to which pointers were taken and exposed globally. Even -+ * in the GNU-C nested functions extension, they have local linkage, -+ * and aren't guaranteed to be accessable *at all* outside of their -+ * containing scope. -+ * -+ * Above and beyond all of that, the variables within blocklist_func_context -+ * are originally local variables, with local (not even static) linkage, -+ * from within blocklist_func. These were each referenced by -+ * disk_read_blocklist_func, which is only called from other functions -+ * through a globally scoped pointer. -+ * -+ * The documentation in GCC actually uses the words "all hell will break -+ * loose" to describe this scenario. -+ * -+ * Also, "start_sector" was also used uninitialized, but gcc doesn't warn -+ * about it (possibly because of the scoping madness?) -+ */ -+ -+static struct { -+ int start_sector; -+ int num_sectors; -+ int num_entries; -+ int last_length; -+} blocklist_func_context = { -+ .start_sector = 0, -+ .num_sectors = 0, -+ .num_entries = 0, -+ .last_length = 0 -+}; -+ -+/* Collect contiguous blocks into one entry as many as possible, -+ and print the blocklist notation on the screen. */ -+static void -+blocklist_read_helper (int sector, int offset, int length) -+{ -+ int *start_sector = &blocklist_func_context.start_sector; -+ int *num_sectors = &blocklist_func_context.num_sectors; -+ int *num_entries = &blocklist_func_context.num_entries; -+ int *last_length = &blocklist_func_context.last_length; -+ -+ if (*num_sectors > 0) -+ { -+ if (*start_sector + *num_sectors == sector -+ && offset == 0 && *last_length == SECTOR_SIZE) -+ { -+ *num_sectors++; -+ *last_length = length; -+ return; -+ } -+ else -+ { -+ if (*last_length == SECTOR_SIZE) -+ grub_printf ("%s%d+%d", *num_entries ? "," : "", -+ *start_sector - part_start, *num_sectors); -+ else if (*num_sectors > 1) -+ grub_printf ("%s%d+%d,%d[0-%d]", *num_entries ? "," : "", -+ *start_sector - part_start, *num_sectors-1, -+ *start_sector + *num_sectors-1 - part_start, -+ *last_length); -+ else -+ grub_printf ("%s%d[0-%d]", *num_entries ? "," : "", -+ *start_sector - part_start, *last_length); -+ *num_entries++; -+ *num_sectors = 0; -+ } -+ } -+ -+ if (offset > 0) -+ { -+ grub_printf("%s%d[%d-%d]", *num_entries ? "," : "", -+ sector-part_start, offset, offset+length); -+ *num_entries++; -+ } -+ else -+ { -+ *start_sector = sector; -+ *num_sectors = 1; -+ *last_length = length; -+ } -+} -+ - /* blocklist */ - static int - blocklist_func (char *arg, int flags) - { - char *dummy = (char *) RAW_ADDR (0x100000); -- int start_sector; -- int num_sectors = 0; -- int num_entries = 0; -- int last_length = 0; - -- auto void disk_read_blocklist_func (int sector, int offset, int length); -- -- /* Collect contiguous blocks into one entry as many as possible, -- and print the blocklist notation on the screen. */ -- auto void disk_read_blocklist_func (int sector, int offset, int length) -- { -- if (num_sectors > 0) -- { -- if (start_sector + num_sectors == sector -- && offset == 0 && last_length == SECTOR_SIZE) -- { -- num_sectors++; -- last_length = length; -- return; -- } -- else -- { -- if (last_length == SECTOR_SIZE) -- grub_printf ("%s%d+%d", num_entries ? "," : "", -- start_sector - part_start, num_sectors); -- else if (num_sectors > 1) -- grub_printf ("%s%d+%d,%d[0-%d]", num_entries ? "," : "", -- start_sector - part_start, num_sectors-1, -- start_sector + num_sectors-1 - part_start, -- last_length); -- else -- grub_printf ("%s%d[0-%d]", num_entries ? "," : "", -- start_sector - part_start, last_length); -- num_entries++; -- num_sectors = 0; -- } -- } -- -- if (offset > 0) -- { -- grub_printf("%s%d[%d-%d]", num_entries ? "," : "", -- sector-part_start, offset, offset+length); -- num_entries++; -- } -- else -- { -- start_sector = sector; -- num_sectors = 1; -- last_length = length; -- } -- } -+ int *start_sector = &blocklist_func_context.start_sector; -+ int *num_sectors = &blocklist_func_context.num_sectors; -+ int *num_entries = &blocklist_func_context.num_entries; - - /* Open the file. */ - if (! grub_open (arg)) -@@ -206,15 +241,15 @@ - grub_printf (")"); - - /* Read in the whole file to DUMMY. */ -- disk_read_hook = disk_read_blocklist_func; -+ disk_read_hook = blocklist_read_helper; - if (! grub_read (dummy, -1)) - goto fail; - - /* The last entry may not be printed yet. Don't check if it is a - * full sector, since it doesn't matter if we read too much. */ -- if (num_sectors > 0) -- grub_printf ("%s%d+%d", num_entries ? "," : "", -- start_sector - part_start, num_sectors); -+ if (*num_sectors > 0) -+ grub_printf ("%s%d+%d", *num_entries ? "," : "", -+ *start_sector - part_start, *num_sectors); - - grub_printf ("\n"); - -@@ -1889,6 +1924,77 @@ - - - /* install */ -+static struct { -+ int saved_sector; -+ int installaddr; -+ int installlist; -+ char *stage2_first_buffer; -+} install_func_context = { -+ .saved_sector = 0, -+ .installaddr = 0, -+ .installlist = 0, -+ .stage2_first_buffer = NULL, -+}; -+ -+/* Save the first sector of Stage2 in STAGE2_SECT. */ -+/* Formerly disk_read_savesect_func with local scope inside install_func */ -+static void -+install_savesect_helper(int sector, int offset, int length) -+{ -+ if (debug) -+ printf ("[%d]", sector); -+ -+ /* ReiserFS has files which sometimes contain data not aligned -+ on sector boundaries. Returning an error is better than -+ silently failing. */ -+ if (offset != 0 || length != SECTOR_SIZE) -+ errnum = ERR_UNALIGNED; -+ -+ install_func_context.saved_sector = sector; -+} -+ -+/* Write SECTOR to INSTALLLIST, and update INSTALLADDR and INSTALLSECT. */ -+/* Formerly disk_read_blocklist_func with local scope inside install_func */ -+static void -+install_blocklist_helper (int sector, int offset, int length) -+{ -+ int *installaddr = &install_func_context.installaddr; -+ int *installlist = &install_func_context.installlist; -+ char **stage2_first_buffer = &install_func_context.stage2_first_buffer; -+ /* Was the last sector full? */ -+ static int last_length = SECTOR_SIZE; -+ -+ if (debug) -+ printf("[%d]", sector); -+ -+ if (offset != 0 || last_length != SECTOR_SIZE) -+ { -+ /* We found a non-sector-aligned data block. */ -+ errnum = ERR_UNALIGNED; -+ return; -+ } -+ -+ last_length = length; -+ -+ if (*((unsigned long *) (*installlist - 4)) -+ + *((unsigned short *) *installlist) != sector -+ || *installlist == (int) *stage2_first_buffer + SECTOR_SIZE + 4) -+ { -+ *installlist -= 8; -+ -+ if (*((unsigned long *) (*installlist - 8))) -+ errnum = ERR_WONT_FIT; -+ else -+ { -+ *((unsigned short *) (*installlist + 2)) = (*installaddr >> 4); -+ *((unsigned long *) (*installlist - 4)) = sector; -+ } -+ } -+ -+ *((unsigned short *) *installlist) += 1; -+ *installaddr += 512; -+} -+ - static int - install_func (char *arg, int flags) - { -@@ -1896,8 +2002,12 @@ - char *stage1_buffer = (char *) RAW_ADDR (0x100000); - char *stage2_buffer = stage1_buffer + SECTOR_SIZE; - char *old_sect = stage2_buffer + SECTOR_SIZE; -- char *stage2_first_buffer = old_sect + SECTOR_SIZE; -- char *stage2_second_buffer = stage2_first_buffer + SECTOR_SIZE; -+ /* stage2_first_buffer used to be defined as: -+ * char *stage2_first_buffer = old_sect + SECTOR_SIZE; */ -+ char **stage2_first_buffer = &install_func_context.stage2_first_buffer; -+ /* and stage2_second_buffer was: -+ * char *stage2_second_buffer = stage2_first_buffer + SECTOR_SIZE; */ -+ char *stage2_second_buffer = old_sect + SECTOR_SIZE + SECTOR_SIZE; - /* XXX: Probably SECTOR_SIZE is reasonable. */ - char *config_filename = stage2_second_buffer + SECTOR_SIZE; - char *dummy = config_filename + SECTOR_SIZE; -@@ -1906,10 +2016,11 @@ - int src_drive, src_partition, src_part_start; - int i; - struct geometry dest_geom, src_geom; -- int saved_sector; -+ int *saved_sector = &install_func_context.saved_sector; - int stage2_first_sector, stage2_second_sector; - char *ptr; -- int installaddr, installlist; -+ int *installaddr = &install_func_context.installaddr; -+ int *installlist = &install_func_context.installlist; - /* Point to the location of the name of a configuration file in Stage 2. */ - char *config_file_location; - /* If FILE is a Stage 1.5? */ -@@ -1918,68 +2029,14 @@ - int is_open = 0; - /* If LBA is forced? */ - int is_force_lba = 0; -- /* Was the last sector full? */ -- int last_length = SECTOR_SIZE; - -+ *stage2_first_buffer = old_sect + SECTOR_SIZE; - #ifdef GRUB_UTIL - /* If the Stage 2 is in a partition mounted by an OS, this will store - the filename under the OS. */ - char *stage2_os_file = 0; - #endif /* GRUB_UTIL */ - -- auto void disk_read_savesect_func (int sector, int offset, int length); -- auto void disk_read_blocklist_func (int sector, int offset, int length); -- -- /* Save the first sector of Stage2 in STAGE2_SECT. */ -- auto void disk_read_savesect_func (int sector, int offset, int length) -- { -- if (debug) -- printf ("[%d]", sector); -- -- /* ReiserFS has files which sometimes contain data not aligned -- on sector boundaries. Returning an error is better than -- silently failing. */ -- if (offset != 0 || length != SECTOR_SIZE) -- errnum = ERR_UNALIGNED; -- -- saved_sector = sector; -- } -- -- /* Write SECTOR to INSTALLLIST, and update INSTALLADDR and -- INSTALLSECT. */ -- auto void disk_read_blocklist_func (int sector, int offset, int length) -- { -- if (debug) -- printf("[%d]", sector); -- -- if (offset != 0 || last_length != SECTOR_SIZE) -- { -- /* We found a non-sector-aligned data block. */ -- errnum = ERR_UNALIGNED; -- return; -- } -- -- last_length = length; -- -- if (*((unsigned long *) (installlist - 4)) -- + *((unsigned short *) installlist) != sector -- || installlist == (int) stage2_first_buffer + SECTOR_SIZE + 4) -- { -- installlist -= 8; -- -- if (*((unsigned long *) (installlist - 8))) -- errnum = ERR_WONT_FIT; -- else -- { -- *((unsigned short *) (installlist + 2)) = (installaddr >> 4); -- *((unsigned long *) (installlist - 4)) = sector; -- } -- } -- -- *((unsigned short *) installlist) += 1; -- installaddr += 512; -- } -- - /* First, check the GNU-style long option. */ - while (1) - { -@@ -2011,10 +2068,10 @@ - addr = skip_to (0, file); - - /* Get the installation address. */ -- if (! safe_parse_maxint (&addr, &installaddr)) -+ if (! safe_parse_maxint (&addr, installaddr)) - { - /* ADDR is not specified. */ -- installaddr = 0; -+ *installaddr = 0; - ptr = addr; - errnum = 0; - } -@@ -2110,17 +2167,17 @@ - = 0x9090; - - /* Read the first sector of Stage 2. */ -- disk_read_hook = disk_read_savesect_func; -- if (grub_read (stage2_first_buffer, SECTOR_SIZE) != SECTOR_SIZE) -+ disk_read_hook = install_savesect_helper; -+ if (grub_read (*stage2_first_buffer, SECTOR_SIZE) != SECTOR_SIZE) - goto fail; - -- stage2_first_sector = saved_sector; -+ stage2_first_sector = *saved_sector; - - /* Read the second sector of Stage 2. */ - if (grub_read (stage2_second_buffer, SECTOR_SIZE) != SECTOR_SIZE) - goto fail; - -- stage2_second_sector = saved_sector; -+ stage2_second_sector = *saved_sector; - - /* Check for the version of Stage 2. */ - if (*((short *) (stage2_second_buffer + STAGE2_VER_MAJ_OFFS)) -@@ -2136,27 +2193,27 @@ - - /* If INSTALLADDR is not specified explicitly in the command-line, - determine it by the Stage 2 id. */ -- if (! installaddr) -+ if (! *installaddr) - { - if (! is_stage1_5) - /* Stage 2. */ -- installaddr = 0x8000; -+ *installaddr = 0x8000; - else - /* Stage 1.5. */ -- installaddr = 0x2000; -+ *installaddr = 0x2000; - } - - *((unsigned long *) (stage1_buffer + STAGE1_STAGE2_SECTOR)) - = stage2_first_sector; - *((unsigned short *) (stage1_buffer + STAGE1_STAGE2_ADDRESS)) -- = installaddr; -+ = *installaddr; - *((unsigned short *) (stage1_buffer + STAGE1_STAGE2_SEGMENT)) -- = installaddr >> 4; -+ = *installaddr >> 4; - -- i = (int) stage2_first_buffer + SECTOR_SIZE - 4; -+ i = (int) *stage2_first_buffer + SECTOR_SIZE - 4; - while (*((unsigned long *) i)) - { -- if (i < (int) stage2_first_buffer -+ if (i < (int) *stage2_first_buffer - || (*((int *) (i - 4)) & 0x80000000) - || *((unsigned short *) i) >= 0xA00 - || *((short *) (i + 2)) == 0) -@@ -2170,13 +2227,13 @@ - i -= 8; - } - -- installlist = (int) stage2_first_buffer + SECTOR_SIZE + 4; -- installaddr += SECTOR_SIZE; -+ *installlist = (int) *stage2_first_buffer + SECTOR_SIZE + 4; -+ *installaddr += SECTOR_SIZE; - - /* Read the whole of Stage2 except for the first sector. */ - grub_seek (SECTOR_SIZE); - -- disk_read_hook = disk_read_blocklist_func; -+ disk_read_hook = install_blocklist_helper; - if (! grub_read (dummy, -1)) - goto fail; - -@@ -2259,7 +2316,7 @@ - /* Skip the first sector. */ - grub_seek (SECTOR_SIZE); - -- disk_read_hook = disk_read_savesect_func; -+ disk_read_hook = install_savesect_helper; - if (grub_read (stage2_buffer, SECTOR_SIZE) != SECTOR_SIZE) - goto fail; - -@@ -2329,7 +2386,7 @@ - else - #endif /* GRUB_UTIL */ - { -- if (! devwrite (saved_sector - part_start, 1, stage2_buffer)) -+ if (! devwrite (*saved_sector - part_start, 1, stage2_buffer)) - goto fail; - } - } -@@ -2351,7 +2408,7 @@ - goto fail; - } - -- if (fwrite (stage2_first_buffer, 1, SECTOR_SIZE, fp) != SECTOR_SIZE) -+ if (fwrite (*stage2_first_buffer, 1, SECTOR_SIZE, fp) != SECTOR_SIZE) - { - fclose (fp); - errnum = ERR_WRITE; -@@ -2378,7 +2435,7 @@ - goto fail; - - if (! devwrite (stage2_first_sector - src_part_start, 1, -- stage2_first_buffer)) -+ *stage2_first_buffer)) - goto fail; - - if (! devwrite (stage2_second_sector - src_part_start, 1, ---- grub-0.97/grub/asmstub.c.nxstack 2005-12-12 18:31:41.000000000 -0500 -+++ grub-0.97/grub/asmstub.c 2005-12-12 18:31:42.000000000 -0500 -@@ -42,6 +42,7 @@ - #include - #include - #include -+#include - - #ifdef __linux__ - # include /* ioctl */ -@@ -82,7 +83,7 @@ - struct apm_info apm_bios_info; - - /* Emulation requirements. */ --char *grub_scratch_mem = 0; -+void *grub_scratch_mem = 0; - - struct geometry *disks = 0; - -@@ -106,14 +107,62 @@ - static unsigned int serial_speed; - #endif /* SIMULATE_SLOWNESS_OF_SERIAL */ - -+/* This allocates page-aligned storage of the specified size, which must be -+ * a multiple of the page size as determined by calling sysconf(_SC_PAGESIZE) -+ */ -+#ifdef __linux__ -+static void * -+grub_mmap_alloc(size_t len) -+{ -+ int mmap_flags = MAP_ANONYMOUS|MAP_PRIVATE|MAP_EXECUTABLE; -+ -+#ifdef MAP_32BIT -+ mmap_flags |= MAP_32BIT; -+#endif -+ /* Mark the simulated stack executable, as GCC uses stack trampolines -+ * to implement nested functions. */ -+ return mmap(NULL, len, PROT_READ|PROT_WRITE|PROT_EXEC, mmap_flags, -1, 0); -+} -+#else /* !defined(__linux__) */ -+static void * -+grub_mmap_alloc(size_t len) -+{ -+ int fd = 0, offset = 0, ret = 0; -+ void *pa = MAP_FAILED; -+ char template[] = "/tmp/grub_mmap_alloc_XXXXXX"; -+ errno_t e; -+ -+ fd = mkstemp(template); -+ if (fd < 0) -+ return pa; -+ -+ unlink(template); -+ -+ ret = ftruncate(fd, len); -+ if (ret < 0) -+ return pa; -+ -+ /* Mark the simulated stack executable, as GCC uses stack trampolines -+ * to implement nested functions. */ -+ pa = mmap(NULL, len, PROT_READ|PROT_WRITE|PROT_EXEC, -+ MAP_PRIVATE|MAP_EXECUTABLE, fd, offset); -+ -+ e = errno; -+ close(fd); -+ errno = e; -+ return pa; -+} -+#endif /* defined(__linux__) */ -+ - /* The main entry point into this mess. */ - int - grub_stage2 (void) - { - /* These need to be static, because they survive our stack transitions. */ - static int status = 0; -- static char *realstack; -- char *scratch, *simstack; -+ static void *realstack; -+ void *simstack_alloc_base, *simstack; -+ size_t simstack_size, page_size; - int i; - - auto void doit (void); -@@ -145,9 +194,35 @@ - } - - assert (grub_scratch_mem == 0); -- scratch = malloc (0x100000 + EXTENDED_MEMSIZE + 15); -- assert (scratch); -- grub_scratch_mem = (char *) ((((int) scratch) >> 4) << 4); -+ -+ /* Allocate enough pages for 0x100000 + EXTENDED_SIZE + 15, and -+ * make sure the memory is aligned to a multiple of the system's -+ * page size */ -+ page_size = sysconf (_SC_PAGESIZE); -+ simstack_size = ( 0x100000 + EXTENDED_MEMSIZE + 15); -+ if (simstack_size % page_size) -+ { -+ /* If we're not on a page_size boundary, round up to the next one */ -+ simstack_size &= ~(page_size-1); -+ simstack_size += page_size; -+ } -+ -+ /* Add one for a PROT_NONE boundary page at each end. */ -+ simstack_size += 2 * page_size; -+ -+ simstack_alloc_base = grub_mmap_alloc(simstack_size); -+ assert (simstack_alloc_base != MAP_FAILED); -+ -+ /* mark pages above and below our simstack area as innaccessable. -+ * If the implementation we're using doesn't support that, then the -+ * new protection modes are undefined. It's safe to just ignore -+ * them, though. It'd be nice if we knew that we'd get a SEGV for -+ * touching the area, but that's all. it'd be nice to have. */ -+ mprotect (simstack_alloc_base, page_size, PROT_NONE); -+ mprotect ((void *)((unsigned long)simstack_alloc_base + -+ simstack_size - page_size), page_size, PROT_NONE); -+ -+ grub_scratch_mem = (void *)((unsigned long)simstack_alloc_base + page_size); - - /* FIXME: simulate the memory holes using mprot, if available. */ - -@@ -220,7 +295,7 @@ - device_map = 0; - free (disks); - disks = 0; -- free (scratch); -+ munmap(simstack_alloc_base, simstack_size); - grub_scratch_mem = 0; - - if (serial_device) diff --git a/src/patches/grub-0.97-once.patch b/src/patches/grub-0.97-once.patch deleted file mode 100644 index 6fb9a8ddc..000000000 --- a/src/patches/grub-0.97-once.patch +++ /dev/null @@ -1,513 +0,0 @@ ---- grub-0.97/stage2/builtins.c.bootonce 2005-12-12 18:23:12.000000000 -0500 -+++ grub-0.97/stage2/builtins.c 2005-12-12 18:29:20.000000000 -0500 -@@ -3217,146 +3217,175 @@ - }; - - --/* savedefault */ -+ -+#if !defined(SUPPORT_DISKLESS) && !defined(GRUB_UTIL) -+/* Write specified default entry number into stage2 file. */ - static int --savedefault_func (char *arg, int flags) -+savedefault_helper(int new_default) - { --#if !defined(SUPPORT_DISKLESS) && !defined(GRUB_UTIL) -- unsigned long tmp_drive = saved_drive; -- unsigned long tmp_partition = saved_partition; -- char *default_file = (char *) DEFAULT_FILE_BUF; -- char buf[10]; -- char sect[SECTOR_SIZE]; -- int entryno; -- int sector_count = 0; -- int saved_sectors[2]; -- int saved_offsets[2]; -- int saved_lengths[2]; -- -- /* Save sector information about at most two sectors. */ -- auto void disk_read_savesect_func (int sector, int offset, int length); -- void disk_read_savesect_func (int sector, int offset, int length) -- { -- if (sector_count < 2) -- { -- saved_sectors[sector_count] = sector; -- saved_offsets[sector_count] = offset; -- saved_lengths[sector_count] = length; -- } -- sector_count++; -- } -- -- /* This command is only useful when you boot an entry from the menu -- interface. */ -- if (! (flags & BUILTIN_SCRIPT)) -+ char buffer[512]; -+ int *entryno_ptr; -+ -+ /* Get the geometry of the boot drive (i.e. the disk which contains -+ this stage2). */ -+ if (get_diskinfo (boot_drive, &buf_geom)) - { -- errnum = ERR_UNRECOGNIZED; -+ errnum = ERR_NO_DISK; - return 1; - } - -- /* Determine a saved entry number. */ -- if (*arg) -+ /* Load the second sector of this stage2. */ -+ if (! rawread (boot_drive, install_second_sector, 0, SECTOR_SIZE, buffer)) - { -- if (grub_memcmp (arg, "fallback", sizeof ("fallback") - 1) == 0) -- { -- int i; -- int index = 0; -- -- for (i = 0; i < MAX_FALLBACK_ENTRIES; i++) -- { -- if (fallback_entries[i] < 0) -- break; -- if (fallback_entries[i] == current_entryno) -- { -- index = i + 1; -- break; -- } -- } -- -- if (index >= MAX_FALLBACK_ENTRIES || fallback_entries[index] < 0) -- { -- /* This is the last. */ -- errnum = ERR_BAD_ARGUMENT; -- return 1; -- } -+ return 1; -+ } - -- entryno = fallback_entries[index]; -- } -- else if (! safe_parse_maxint (&arg, &entryno)) -- return 1; -+ /* Sanity check. */ -+ if (buffer[STAGE2_STAGE2_ID] != STAGE2_ID_STAGE2 -+ || *((short *) (buffer + STAGE2_VER_MAJ_OFFS)) != COMPAT_VERSION) -+ { -+ errnum = ERR_BAD_VERSION; -+ return 1; - } -- else -- entryno = current_entryno; -+ -+ entryno_ptr = (int *) (buffer + STAGE2_SAVED_ENTRYNO); - -- /* Open the default file. */ -- saved_drive = boot_drive; -- saved_partition = install_partition; -- if (grub_open (default_file)) -+ /* Check if the saved entry number differs from current entry number. */ -+ if (*entryno_ptr != new_default) - { -- int len; -+ /* Overwrite the saved entry number. */ -+ *entryno_ptr = new_default; - -- disk_read_hook = disk_read_savesect_func; -- len = grub_read (buf, sizeof (buf)); -- disk_read_hook = 0; -- grub_close (); -+ /* Save the image in the disk. */ -+ if (! rawwrite (boot_drive, install_second_sector, buffer)) -+ return 1; - -- if (len != sizeof (buf)) -- { -- /* This is too small. Do not modify the file manually, please! */ -- errnum = ERR_READ; -- goto fail; -- } -+ /* Clear the cache. */ -+ buf_track = -1; -+ } - -- if (sector_count > 2) -- { -- /* Is this possible?! Too fragmented! */ -- errnum = ERR_FSYS_CORRUPT; -- goto fail; -- } -- -- /* Set up a string to be written. */ -- grub_memset (buf, '\n', sizeof (buf)); -- grub_sprintf (buf, "%d", entryno); -- -- if (saved_lengths[0] < sizeof (buf)) -- { -- /* The file is anchored to another file and the first few bytes -- are spanned in two sectors. Uggh... */ -- if (! rawread (current_drive, saved_sectors[0], 0, SECTOR_SIZE, -- sect)) -- goto fail; -- grub_memmove (sect + saved_offsets[0], buf, saved_lengths[0]); -- if (! rawwrite (current_drive, saved_sectors[0], sect)) -- goto fail; -+ return 0; -+} -+#endif - -- if (! rawread (current_drive, saved_sectors[1], 0, SECTOR_SIZE, -- sect)) -- goto fail; -- grub_memmove (sect + saved_offsets[1], -- buf + saved_lengths[0], -- sizeof (buf) - saved_lengths[0]); -- if (! rawwrite (current_drive, saved_sectors[1], sect)) -- goto fail; -- } -+#if !defined(SUPPORT_DISKLESS) && defined(GRUB_UTIL) -+/* -+ * Full implementation of new `savedefault' for GRUB shell. -+ * XXX This needs fixing for stage2 files which aren't accessible -+ * through a mounted filesystem. -+ */ -+static int -+savedefault_shell(char *arg, int flags) -+{ -+ char *stage2_os_file = "/boot/grub/stage2"; /* Default filename */ -+ FILE *fp; -+ char buffer[512]; -+ int *entryno_ptr; -+ int new_default = 0; -+ int old_default = 0; -+ -+ while (1) -+ { -+ if (grub_memcmp ("--stage2=", arg, sizeof ("--stage2=") - 1) == 0) -+ { -+ stage2_os_file = arg + sizeof ("--stage2=") - 1; -+ arg = skip_to (0, arg); -+ nul_terminate (stage2_os_file); -+ } -+ else if (grub_memcmp ("--default=", arg, sizeof ("--default=") - 1) == 0) -+ { -+ char *p = arg + sizeof ("--default=") - 1; -+ if (! safe_parse_maxint (&p, &new_default)) -+ return 1; -+ arg = skip_to (0, arg); -+ } -+ else if (grub_memcmp ("--once", arg, sizeof ("--once") - 1) == 0) -+ { -+ new_default <<= 8; -+ new_default |= STAGE2_ONCEONLY_ENTRY; -+ arg = skip_to (0, arg); -+ } - else -- { -- /* This is a simple case. It fits into a single sector. */ -- if (! rawread (current_drive, saved_sectors[0], 0, SECTOR_SIZE, -- sect)) -- goto fail; -- grub_memmove (sect + saved_offsets[0], buf, sizeof (buf)); -- if (! rawwrite (current_drive, saved_sectors[0], sect)) -- goto fail; -- } -+ break; -+ } - -- /* Clear the cache. */ -- buf_track = -1; -+ if (! (fp = fopen(stage2_os_file, "r+"))) -+ { -+ errnum = ERR_FILE_NOT_FOUND; -+ return 1; -+ } -+ -+ if (fseek (fp, SECTOR_SIZE, SEEK_SET) != 0) -+ { -+ fclose (fp); -+ errnum = ERR_BAD_VERSION; -+ return 1; -+ } -+ -+ if (fread (buffer, 1, SECTOR_SIZE, fp) != SECTOR_SIZE) -+ { -+ fclose (fp); -+ errnum = ERR_READ; -+ return 1; - } - -- fail: -- saved_drive = tmp_drive; -- saved_partition = tmp_partition; -- return errnum; -+ /* Sanity check. */ -+ if (buffer[STAGE2_STAGE2_ID] != STAGE2_ID_STAGE2 -+ || *((short *) (buffer + STAGE2_VER_MAJ_OFFS)) != COMPAT_VERSION) -+ { -+ errnum = ERR_BAD_VERSION; -+ return 1; -+ } -+ -+ entryno_ptr = (int *) (buffer + STAGE2_SAVED_ENTRYNO); -+ if (new_default & STAGE2_ONCEONLY_ENTRY) -+ { -+ old_default=*entryno_ptr; -+ *entryno_ptr = new_default + (old_default & 0xFF); -+ } -+ else -+ { -+ *entryno_ptr = new_default; -+ } -+ -+ if (fseek (fp, SECTOR_SIZE, SEEK_SET) != 0) -+ { -+ fclose (fp); -+ errnum = ERR_BAD_VERSION; -+ return 1; -+ } -+ -+ if (fwrite (buffer, 1, SECTOR_SIZE, fp) != SECTOR_SIZE) -+ { -+ fclose (fp); -+ errnum = ERR_WRITE; -+ return 1; -+ } -+ -+ (void)fflush (fp); -+ fclose (fp); -+ return 0; -+} -+#endif -+ -+/* savedefault */ -+static int -+savedefault_func (char *arg, int flags) -+{ -+#if !defined(SUPPORT_DISKLESS) -+#if !defined(GRUB_UTIL) -+ /* This command is only useful when you boot an entry from the menu -+ interface. */ -+ if (! (flags & BUILTIN_SCRIPT)) -+ { -+ errnum = ERR_UNRECOGNIZED; -+ return 1; -+ } -+ -+ return savedefault_helper(current_entryno); -+#else /* defined(GRUB_UTIL) */ -+ return savedefault_shell(arg, flags); -+#endif - #else /* ! SUPPORT_DISKLESS && ! GRUB_UTIL */ - errnum = ERR_UNRECOGNIZED; - return 1; -@@ -3368,10 +3397,14 @@ - "savedefault", - savedefault_func, - BUILTIN_CMDLINE, -- "savedefault [NUM | `fallback']", -- "Save the current entry as the default boot entry if no argument is" -- " specified. If a number is specified, this number is saved. If" -- " `fallback' is used, next fallback entry is saved." -+#ifdef GRUB_UTIL -+ "savedefault [--stage2=STAGE2_FILE] [--default=DEFAULT] [--once]", -+ "Save DEFAULT as the default boot entry in STAGE2_FILE. If '--once'" -+ " is specified, the default is reset after the next reboot." -+#else -+ "savedefault", -+ "Save the current entry as the default boot entry." -+#endif - }; - - -@@ -4598,6 +4631,15 @@ - static int - timeout_func (char *arg, int flags) - { -+ /* One-shot default shenanigans -- don't piss around with the menu! */ -+ if (grub_timeout != -1) -+ return 0; -+ if ((saved_entryno & STAGE2_ONCEONLY_ENTRY) != 0) -+ { -+ grub_timeout = 0; -+ return 0; -+ } -+ - if (! safe_parse_maxint (&arg, &grub_timeout)) - return 1; - ---- grub-0.97/stage2/shared.h.bootonce 2005-12-12 18:23:13.000000000 -0500 -+++ grub-0.97/stage2/shared.h 2005-12-12 18:23:13.000000000 -0500 -@@ -200,6 +200,8 @@ - #define STAGE2_FORCE_LBA 0x11 - #define STAGE2_VER_STR_OFFS 0x12 - -+#define STAGE2_ONCEONLY_ENTRY 0x10000 -+ - /* Stage 2 identifiers */ - #define STAGE2_ID_STAGE2 0 - #define STAGE2_ID_FFS_STAGE1_5 1 ---- grub-0.97/stage2/builtins.c.bootonce 2006-03-13 16:55:11.000000000 -0500 -+++ grub-0.97/stage2/builtins.c 2006-03-13 16:56:01.000000000 -0500 -@@ -761,11 +761,25 @@ - }; - - -+#if !defined(SUPPORT_DISKLESS) && !defined(GRUB_UTIL) -+static int savedefault_helper(int); -+#endif - /* default */ - static int - default_func (char *arg, int flags) - { - #ifndef SUPPORT_DISKLESS -+#ifndef GRUB_UTIL -+ /* Has a forced once-only default been specified? */ -+ if ((saved_entryno & STAGE2_ONCEONLY_ENTRY) != 0) -+ { -+ int old_defaults=saved_entryno & ~STAGE2_ONCEONLY_ENTRY; -+ grub_timeout = 0; -+ default_entry = old_defaults >> 8; -+ savedefault_helper(old_defaults & 0xff); -+ return 0; -+ } -+#endif - if (grub_strcmp (arg, "saved") == 0) - { - default_entry = saved_entryno; ---- grub-0.97/stage2/stage2.c.bootonce 2006-03-13 17:27:40.000000000 -0500 -+++ grub-0.97/stage2/stage2.c 2006-03-13 17:29:11.000000000 -0500 -@@ -960,38 +960,8 @@ - if (use_config_file) - #endif /* GRUB_UTIL */ - { -- char *default_file = (char *) DEFAULT_FILE_BUF; - int i; -- -- /* Get a saved default entry if possible. */ -- saved_entryno = 0; -- *default_file = 0; -- grub_strncat (default_file, config_file, DEFAULT_FILE_BUFLEN); -- for (i = grub_strlen(default_file); i >= 0; i--) -- if (default_file[i] == '/') -- { -- i++; -- break; -- } -- default_file[i] = 0; -- grub_strncat (default_file + i, "default", DEFAULT_FILE_BUFLEN - i); -- if (grub_open (default_file)) -- { -- char buf[10]; /* This is good enough. */ -- char *p = buf; -- int len; -- -- len = grub_read (buf, sizeof (buf)); -- if (len > 0) -- { -- buf[sizeof (buf) - 1] = 0; -- safe_parse_maxint (&p, &saved_entryno); -- } - -- grub_close (); -- } -- errnum = ERR_NONE; -- - do - { - /* STATE 0: Before any title command. ---- grub-0.97/util/grub-install.in.bootonce 2006-03-13 17:39:35.000000000 -0500 -+++ grub-0.97/util/grub-install.in 2006-03-13 17:39:50.000000000 -0500 -@@ -30,7 +30,6 @@ - pkglibdir=${libdir}/${PACKAGE}/${host_cpu}-${host_vendor} - - grub_shell=${sbindir}/grub --grub_set_default=${sbindir}/grub-set-default - log_file=/tmp/grub-install.log.$$ - img_file=/tmp/grub-install.img.$$ - rootdir= -@@ -432,9 +431,6 @@ - exit 1 - fi - --# Make a default file. --${grub_set_default} --root-directory=${rootdir} default -- - # Make sure that GRUB reads the same images as the host OS. - test -n "$mkimg" && img_file=`$mkimg` - test -n "$mklog" && log_file=`$mklog` ---- grub-0.97/configure.bootonce 2006-03-13 17:49:05.000000000 -0500 -+++ grub-0.97/configure 2006-03-13 17:49:16.000000000 -0500 -@@ -6135,7 +6135,7 @@ - - - -- ac_config_files="$ac_config_files Makefile stage1/Makefile stage2/Makefile docs/Makefile lib/Makefile util/Makefile grub/Makefile netboot/Makefile util/grub-image util/grub-install util/grub-md5-crypt util/grub-terminfo util/grub-set-default" -+ ac_config_files="$ac_config_files Makefile stage1/Makefile stage2/Makefile docs/Makefile lib/Makefile util/Makefile grub/Makefile netboot/Makefile util/grub-image util/grub-install util/grub-md5-crypt util/grub-terminfo" - - cat >confcache <<\_ACEOF - # This file is a shell script that caches the results of configure -@@ -6754,7 +6754,6 @@ - "util/grub-install" ) CONFIG_FILES="$CONFIG_FILES util/grub-install" ;; - "util/grub-md5-crypt" ) CONFIG_FILES="$CONFIG_FILES util/grub-md5-crypt" ;; - "util/grub-terminfo" ) CONFIG_FILES="$CONFIG_FILES util/grub-terminfo" ;; -- "util/grub-set-default" ) CONFIG_FILES="$CONFIG_FILES util/grub-set-default" ;; - "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 ---- grub-0.97/configure.ac.bootonce 2006-03-13 17:47:24.000000000 -0500 -+++ grub-0.97/configure.ac 2006-03-13 17:47:37.000000000 -0500 -@@ -666,5 +666,5 @@ - docs/Makefile lib/Makefile util/Makefile \ - grub/Makefile netboot/Makefile util/grub-image \ - util/grub-install util/grub-md5-crypt \ -- util/grub-terminfo util/grub-set-default]) -+ util/grub-terminfo]) - AC_OUTPUT ---- grub-0.97/util/Makefile.am.bootonce 2006-03-13 17:48:39.000000000 -0500 -+++ grub-0.97/util/Makefile.am 2006-03-13 17:48:45.000000000 -0500 -@@ -1,6 +1,5 @@ - bin_PROGRAMS = mbchk --sbin_SCRIPTS = grub-install grub-md5-crypt grub-terminfo \ -- grub-set-default -+sbin_SCRIPTS = grub-install grub-md5-crypt grub-terminfo - noinst_SCRIPTS = grub-image mkbimage - - EXTRA_DIST = mkbimage ---- grub-0.97/util/Makefile.in.bootonce 2006-03-13 17:47:56.000000000 -0500 -+++ grub-0.97/util/Makefile.in 2006-03-13 17:48:34.000000000 -0500 -@@ -43,8 +43,7 @@ - subdir = util - DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(srcdir)/grub-image.in $(srcdir)/grub-install.in \ -- $(srcdir)/grub-md5-crypt.in $(srcdir)/grub-set-default.in \ -- $(srcdir)/grub-terminfo.in -+ $(srcdir)/grub-md5-crypt.in $(srcdir)/grub-terminfo.in - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.ac -@@ -52,8 +51,7 @@ - $(ACLOCAL_M4) - mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs - CONFIG_HEADER = $(top_builddir)/config.h --CONFIG_CLEAN_FILES = grub-image grub-install grub-md5-crypt \ -- grub-terminfo grub-set-default -+CONFIG_CLEAN_FILES = grub-image grub-install grub-md5-crypt grub-terminfo - am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(sbindir)" - binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) - PROGRAMS = $(bin_PROGRAMS) -@@ -183,8 +181,7 @@ - sharedstatedir = @sharedstatedir@ - sysconfdir = @sysconfdir@ - target_alias = @target_alias@ --sbin_SCRIPTS = grub-install grub-md5-crypt grub-terminfo \ -- grub-set-default -+sbin_SCRIPTS = grub-install grub-md5-crypt grub-terminfo - - noinst_SCRIPTS = grub-image mkbimage - EXTRA_DIST = mkbimage -@@ -234,8 +231,6 @@ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ - grub-terminfo: $(top_builddir)/config.status $(srcdir)/grub-terminfo.in - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ --grub-set-default: $(top_builddir)/config.status $(srcdir)/grub-set-default.in -- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ - install-binPROGRAMS: $(bin_PROGRAMS) - @$(NORMAL_INSTALL) - test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" diff --git a/src/patches/grub-0.97-prototypes.patch b/src/patches/grub-0.97-prototypes.patch deleted file mode 100644 index 21d65d588..000000000 --- a/src/patches/grub-0.97-prototypes.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- grub-0.97/acinclude.m4.prototypes 2005-12-12 19:07:24.000000000 -0500 -+++ grub-0.97/acinclude.m4 2005-12-12 19:07:56.000000000 -0500 -@@ -44,6 +44,8 @@ - [AC_MSG_CHECKING([whether ${OBJCOPY} works for absolute addresses]) - AC_CACHE_VAL(grub_cv_prog_objcopy_absolute, - [cat > conftest.c <<\EOF -+void cmain(void); -+ - void - cmain (void) - { diff --git a/src/patches/grub-0.97-stderr.patch b/src/patches/grub-0.97-stderr.patch deleted file mode 100644 index 71d20ada5..000000000 --- a/src/patches/grub-0.97-stderr.patch +++ /dev/null @@ -1,102 +0,0 @@ ---- grub-0.97/util/grub-install.in.stderr 2006-07-07 10:56:37.000000000 -0400 -+++ grub-0.97/util/grub-install.in 2006-07-07 11:01:35.000000000 -0400 -@@ -207,7 +207,7 @@ - while test -L $tmp_fname; do - tmp_new_fname=`ls -al $tmp_fname | sed -n 's%.*-> \(.*\)%\1%p'` - if test -z "$tmp_new_fname"; then -- echo "Unrecognized ls output" 2>&1 -+ echo "Unrecognized ls output" 1>&2 - exit 1 - fi - -@@ -264,7 +264,7 @@ - stat_device() { - majmin=`stat -c "%t:%T" "$1" 2>/dev/null` - if test -z "$majmin"; then -- echo "Could not find device for $1" 2>&1 -+ echo "Could not find device for $1" 1>&2 - exit 1 - fi - -@@ -281,7 +281,7 @@ - dev=`awk '($2 ~ /'$mntpnt'/) { print $1 }' /etc/mtab` - fi - if test -z "$dev"; then -- echo "Could not find device for $1" 2>&1 -+ echo "Could not find device for $1" 1>&2 - exit 1 - fi - -@@ -304,11 +304,11 @@ - tmp_fname=`df $1/ | sed -n 's%.*\(/dev/[^ ]*\).*%\1%p'` - - if test -z "$tmp_fname"; then -- echo "Could not find device for $1" 2>&1 -+ echo "Could not find device for $1" 1>&2 - exit 1 - fi - -- ret_fname=`resolve_symlink $tmp_fname` -+ ret_fname=`resolve_symlink $tmp_fname` || exit 1 - tmp_fname=`find_mapper_device $ret_fname` - if test -n "$tmp_fname"; then - ret_fname="$tmp_fname" -@@ -325,7 +325,7 @@ - done - for file in \ - ${pkgdatadir}/stage1 ${pkgdatadir}/stage2 ${pkgdatadir}/*stage1_5; do -- cp -f $file ${grubdir} || exit 1 -+ cp -f $file ${grubdir} 1>&2 || exit 1 - done - } - -@@ -520,9 +520,9 @@ - # Check for INSTALL_DEVICE. - case "$install_device" in - /dev/*) -- install_device=`resolve_symlink "$install_device"` -+ install_device=`resolve_symlink "$install_device"` || exit 1 - for install_drive in `find_real_devs $install_device` ; do -- install_drive=`convert $install_drive` -+ install_drive=`convert $install_drive` || exit 1 - if is_raid1_device $install_device; then - install_drive=`echo $install_drive | sed 's/,[0-9]*)/)/'` - fi -@@ -550,8 +550,8 @@ - unset install_device - - # Get the root drive. --root_device=`find_device ${rootdir}` --bootdir_device=`find_device ${bootdir}` -+root_device=`find_device ${rootdir}` || exit 1 -+bootdir_device=`find_device ${bootdir}` || exit 1 - - # Check if the boot directory is in the same device as the root directory. - if test "x$root_device" != "x$bootdir_device"; then -@@ -561,7 +561,7 @@ - fi - - # Check if the root directory exists in the same device as the grub directory. --grubdir_device=`find_device ${grubdir}` -+grubdir_device=`find_device ${grubdir}` || exit 1 - - if test "x$grubdir_device" != "x$root_device"; then - # For now, cannot deal with this situation. -@@ -582,7 +582,7 @@ - fi - - # Convert the root deviceto a GRUB drive. --root_drive=`convert "$root_device"` -+root_drive=`convert "$root_device"` || exit 1 - if [ "x$root_drive" = x ]; then - exit 1 - fi -@@ -618,7 +618,7 @@ - - for install_drive in $install_drives; do - # Convert the root deviceto a GRUB drive. -- root_drive=`convert "$root_device"` -+ root_drive=`convert "$root_device"` || exit 1 - if [ "x$root_drive" = x ]; then - exit 1 - fi diff --git a/src/patches/grub-0.97_grub-install_virtio.patch b/src/patches/grub-0.97_grub-install_virtio.patch deleted file mode 100644 index 86afba993..000000000 --- a/src/patches/grub-0.97_grub-install_virtio.patch +++ /dev/null @@ -1,52 +0,0 @@ ---- grub-0.97/util/grub-install.in 2010-06-24 08:47:23.000000000 +0200 -+++ grub-0.97/util/grub-install.in 2010-06-24 09:20:42.000000000 +0200 -@@ -102,7 +102,7 @@ - linux*) - # formats that need to be handled (disk name -> partition name): - # floppies: /dev/fd0 -- # normal sd/hd devices: /dev/hda -> /dev/hda3 -+ # normal sd/hd/vd devices: /dev/hda -> /dev/hda3 - # md: /dev/md0 -> /dev/md0p0 - # ide raid devs: /dev/ide/host0/bus0/target0/lun0/disc - # -> /dev/ide/host0/bus0/target0/lun0/part1 -@@ -134,7 +134,7 @@ - # more? - tmp_disk=`echo "$1" | grep -v '/mapper/control$' | - grep -v '/mapper/[[:alnum:]_]\+-[[:digit:]]\+$' | uniq | -- sed -e 's%\([sh]d[a-z]\)[0-9]*$%\1%' \ -+ sed -e 's%\([shv]d[a-z]\)[0-9]*$%\1%' \ - -e 's%\(/c[0-9]\+d[0-9]\+\).*$%\1%' \ - -e 's%\(fd[0-9]*\)$%\1%' \ - -e 's%/part[0-9]*$%/disc%' \ -@@ -142,7 +142,7 @@ - -e 's%\(/mapper/[[:alnum:]]\+\(_[[:alnum:]]\+\)\+\)\p[[:digit:]]\+$%\1%'` - tmp_part=`echo "$1" | grep -v '/mapper/control$' | - grep -v '/mapper/[[:alnum:]_]\+-[[:digit:]]\+$' | uniq | -- sed -e 's%.*/[sh]d[a-z]\([0-9]*\)$%\1%' \ -+ sed -e 's%.*/[shv]d[a-z]\([0-9]*\)$%\1%' \ - -e 's%.*/c[0-9]\+d[0-9]\+p\([[:digit:]]\+\)%\1%' \ - -e 's%.*/c[0-9]\+d[0-9]\+$%%' \ - -e 's%.*/fd[0-9]\+$%%' \ -@@ -509,6 +509,10 @@ - if test -f "$device_map"; then - : - else -+ -+ tmp_disk=`echo "$install_device" | grep "/dev/vd"` -+ if test "x$tmp_disk" = x; then -+ - # Create a safe temporary file. - test -n "$mklog" && log_file=`$mklog` - -@@ -525,6 +529,11 @@ - fi - - rm -f $log_file -+ -+ else -+ echo "Create fake device.map for virtio device $1" 1>&2 -+ echo "(hd0) $install_device" > $device_map -+ fi - fi - - # Make sure that there is no duplicated entry. diff --git a/src/patches/grub-fedora-18.patch b/src/patches/grub-fedora-18.patch new file mode 100644 index 000000000..e87c180da --- /dev/null +++ b/src/patches/grub-fedora-18.patch @@ -0,0 +1,48870 @@ +From: Peter Jones " +Date: Wed Apr 18 12:53:49 EDT 2012 +Subject: [PATCH] Changes from grub-0.97 to master + +This patch is a bundle of the changes between grub-0.97 and master. +It can be reginerated from the git repository at: + +git://github.com/vathpela/grub-fedora.git + +Using the command: + +git diff grub-0.97 master + + .gitignore | 10 + ChangeLog | 48 + Makefile.am | 7 + Makefile.in | 605 --- + acinclude.m4 | 4 + aclocal.m4 | 1061 ----- + config.h.in | 106 + configure | 7639 ----------------------------------------- + configure.in | 113 + docs/.gitignore | 3 + docs/Makefile.am | 9 + docs/Makefile.in | 770 ---- + docs/grub-crypt.8 | 39 + docs/grub-install.8 | 2 + docs/grub.8 | 2 + docs/grub.info | 370 + + docs/grub.texi | 79 + docs/stamp-vti | 4 + docs/version.texi | 4 + efi/.gitignore | 7 + efi/Makefile.am | 76 + efi/byteswap.h | 37 + efi/dhcp.h | 133 + efi/efichainloader.c | 265 + + efi/eficon.c | 306 + + efi/eficore.c | 241 + + efi/efidisk.c | 801 ++++ + efi/efidp.c | 999 +++++ + efi/efigraph.c | 1501 ++++++++ + efi/efimain.c | 129 + efi/efimisc.c | 665 +++ + efi/efimm.c | 539 ++ + efi/efiserial.c | 265 + + efi/efitftp.c | 228 + + efi/efiuga.c | 982 +++++ + efi/font_8x16.c | 4638 ++++++++++++++++++++++++ + efi/graphics.c | 666 +++ + efi/graphics.h | 81 + efi/grub/.gitignore | 1 + efi/grub/efi/api.h | 1716 +++++++++ + efi/grub/efi/console_control.h | 59 + efi/grub/efi/efi.h | 85 + efi/grub/efi/eficall.h | 162 + efi/grub/efi/misc.h | 60 + efi/grub/efi/time.h | 31 + efi/grub/i386/linux.h | 226 + + efi/grub/i386/types.h | 32 + efi/grub/misc.h | 71 + efi/grub/symbol.h | 34 + efi/grub/types.h | 158 + efi/grub/x86_64/linux.h | 234 + + efi/grub/x86_64/types.h | 32 + efi/ia32/callwrap.S | 1 + efi/ia32/callwrap.c | 131 + efi/ia32/loader/bin_to_h.c | 29 + efi/ia32/loader/linux.c | 648 +++ + efi/ia32/loader/switch.S | 118 + efi/ia32/loader/switch.h | 19 + efi/ia32/reloc.c | 79 + efi/ia32/setjmp.S | 86 + efi/pxe.c | 460 ++ + efi/pxe.h | 237 + + efi/ugadebug.h | 201 + + efi/x86_64/callwrap.S | 274 + + efi/x86_64/crt0-efi.S | 63 + efi/x86_64/elf_efi.lds | 58 + efi/x86_64/loader/Makefile | 20 + efi/x86_64/loader/bin_to_h.c | 29 + efi/x86_64/loader/linux.c | 760 ++++ + efi/x86_64/loader/switch.S | 92 + efi/x86_64/loader/switch.h | 25 + efi/x86_64/reloc.c | 79 + efi/x86_64/setjmp.S | 56 + efi/xpm.c | 231 + + efi/xpm.h | 36 + grub.spec | 438 ++ + grub/.gitignore | 2 + grub/Makefile.am | 2 + grub/Makefile.in | 445 -- + grub/asmstub.c | 194 - + grub/efitftp.c | 34 + grub/main.c | 2 + lib/.gitignore | 2 + lib/Makefile.in | 416 -- + lib/device.c | 360 + + makediff | 21 + netboot/.gitignore | 2 + netboot/Makefile.in | 1091 ----- + netboot/etherboot.h | 34 + netboot/main.c | 6 + netboot/misc.c | 58 + netboot/osdep.h | 24 + stage1/.gitignore | 2 + stage1/Makefile.am | 15 + stage1/Makefile.in | 433 -- + stage1/stage1.S | 4 + stage2/.gitignore | 5 + stage2/Makefile.am | 77 + stage2/Makefile.in | 3250 ----------------- + stage2/asm.S | 284 + + stage2/boot.c | 114 + stage2/builtins.c | 1368 +++++-- + stage2/char_io.c | 609 ++- + stage2/cmdline.c | 19 + stage2/common.c | 16 + stage2/disk_io.c | 213 - + stage2/efistubs.c | 7 + stage2/efistubs.h | 8 + stage2/fat.h | 2 + stage2/filesys.h | 28 + stage2/fsys_ext2fs.c | 394 +- + stage2/fsys_fat.c | 41 + stage2/fsys_iso9660.c | 8 + stage2/fsys_jfs.c | 12 + stage2/fsys_minix.c | 10 + stage2/fsys_reiserfs.c | 44 + stage2/fsys_uefi.c | 265 + + stage2/fsys_vstafs.c | 28 + stage2/fsys_xfs.c | 22 + stage2/gpt.h | 69 + stage2/graphics.c | 573 +++ + stage2/graphics.h | 42 + stage2/gunzip.c | 15 + stage2/iso9660.h | 4 + stage2/mb_info.h | 4 + stage2/pc_slice.h | 51 + stage2/serial.c | 4 + stage2/sha256crypt.c | 723 +++ + stage2/sha512crypt.c | 795 ++++ + stage2/shared.h | 126 + stage2/smp-imps.h | 1 + stage2/stage1_5.c | 3 + stage2/stage2.c | 203 - + stage2/start.S | 13 + stage2/term.h | 35 + stage2/tparm.c | 14 + test | 1 + util/.gitignore | 7 + util/Makefile.am | 11 + util/Makefile.in | 478 -- + util/grub-crypt.in | 80 + util/grub-install.in | 334 + + 142 files changed, 26410 insertions(+), 17652 deletions(-) + +diff --git a/.gitignore b/.gitignore +new file mode 100644 +index 0000000..3d7295a +--- /dev/null ++++ b/.gitignore +@@ -0,0 +1,10 @@ ++Makefile.in ++Makefile ++configure ++aclocal.m4 ++autom4te.cache ++config.h ++config.h.in ++config.log ++config.status ++stamp-h1 +diff --git a/ChangeLog b/ChangeLog +index 0f93033..9602fb9 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -772,6 +772,18 @@ + DATA_LEN is less than or equal to MULTIBOOT_SEARCH. + Reported by Neelkanth Natu . + ++2003-03-12 Leonid Lisovskiy ++ ++ * lib/device.c (get_drive_geometry): grub utility didn't work ++ due to uninitialized 'sector_size' struct geometry member. ++ * stage1/stage1.h (GRUB_NO_DRIVE): Constant moved from ++ stage2/shared.h and its value rolled back to 0xFF for backward ++ compatibility with original grub. ++ * stage1/stage1.S (boot_drive): Use GRUB_NO_DRIVE instead of ++ constant. ++ * stage2/bios.c (get_diskinfo): Workaround for BIOS'es that ++ has CD-ROM drive number = last harddisk + 1. ++ + 2003-03-10 Yoshinori K. Okuji + + From Andrew Walrond : +@@ -816,6 +828,42 @@ + thus corrupts the stack. This is why we specify the exactly + necessary size of 0x42 bytes. + ++2003-01-28 Leonid Lisovskiy ++ ++ ISO9660 support is added. ++ ++ * stage2/fsys_iso9660.c: New file - a lot of code stolen from ++ GRUB/98 0.5. ++ * stage2/iso9660.h: Likewise. ++ * stage2/start_torito.S: New file - El Torito boot sector. ++ * stage2/Makefile.am (noinst_HEADERS): iso9660.h added. ++ (libgrub_a_SOURCES): fsys_iso9660.c added. ++ (pkgdata_DATA): iso9660_stage1_5 added. ++ (noinst_PROGRAMS): iso9660_stage1_5.exec added. ++ * configure.in (--disable-iso9660): New option. ++ * stage2/builtins.c (setup_func): Add item for ISO9660 into ++ STAGE1_5_MAP. ++ * stage2/disk_io.c (rawread): Ability to read devices with ++ sector size other than 512 added. ++ (fsys_table): Added entry for ISO9660. ++ (check_and_print_mount): Don't print error when probing ++ partition. ++ (real_open_partition): Cleanup globals after probing. ++ * stage2/filesys.h [FSYS_ISO9660]: Add entries for ISO9660 ++ functions. ++ (NUM_FSYS): Added FSYS_ISO9660_NUM. ++ * stage2/shared.h (STAGE2_ID_ISO9660_STAGE1_5): New macro. ++ (GRUB_NO_DRIVE): New constant. ++ (struct geometry): New member 'sector_size'. ++ * stage2/bios.c (get_diskinfo): Request 1.xx version of ++ int13 extensions only since higher version request can ++ destroy El Torito emulation on some BIOS'es. ++ (get_cdinfo): New function - get El Torito emulation parameters. ++ * stage2/asm.S (biosdisk_int13_extensions): pass AX, instead ++ of AH for universality, save EBX,ECX,EDX registers content to ++ avoid data corruption in caller functions. ++ (get_diskinfo_int13_extensions): Removed. ++ + 2003-01-25 Yoshinori K. Okuji + + From Steven Dick : +diff --git a/Makefile.am b/Makefile.am +index 63a9a4f..9bde872 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -1,4 +1,9 @@ + # Do not change this order if you don't know what you are doing. + AUTOMAKE_OPTIONS = 1.7 gnu +-SUBDIRS = netboot stage2 stage1 lib grub util docs ++SUBDIRS = netboot stage2 stage1 lib util docs ++if PLATFORM_EFI ++SUBDIRS += efi ++else ++SUBDIRS += grub ++endif + EXTRA_DIST = BUGS MAINTENANCE +diff --git a/Makefile.in b/Makefile.in +deleted file mode 100644 +index 6652366..0000000 +--- a/Makefile.in ++++ /dev/null +@@ -1,605 +0,0 @@ +-# Makefile.in generated by automake 1.9.4 from Makefile.am. +-# @configure_input@ +- +-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +-# 2003, 2004 Free Software Foundation, Inc. +-# This Makefile.in is free software; the Free Software Foundation +-# gives unlimited permission to copy and/or distribute it, +-# with or without modifications, as long as this notice is preserved. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +-# PARTICULAR PURPOSE. +- +-@SET_MAKE@ +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ +-VPATH = @srcdir@ +-pkgdatadir = $(datadir)/@PACKAGE@ +-pkglibdir = $(libdir)/@PACKAGE@ +-pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = . +-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ +-install_sh_DATA = $(install_sh) -c -m 644 +-install_sh_PROGRAM = $(install_sh) -c +-install_sh_SCRIPT = $(install_sh) -c +-INSTALL_HEADER = $(INSTALL_DATA) +-transform = $(program_transform_name) +-NORMAL_INSTALL = : +-PRE_INSTALL = : +-POST_INSTALL = : +-NORMAL_UNINSTALL = : +-PRE_UNINSTALL = : +-POST_UNINSTALL = : +-build_triplet = @build@ +-host_triplet = @host@ +-DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ +- $(srcdir)/Makefile.in $(srcdir)/config.h.in \ +- $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \ +- THANKS TODO compile config.guess config.sub depcomp install-sh \ +- missing mkinstalldirs +-subdir = . +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ +- $(top_srcdir)/configure.ac +-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ +- $(ACLOCAL_M4) +-am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ +- configure.lineno configure.status.lineno +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = config.h +-CONFIG_CLEAN_FILES = +-SOURCES = +-DIST_SOURCES = +-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +- html-recursive info-recursive install-data-recursive \ +- install-exec-recursive install-info-recursive \ +- install-recursive installcheck-recursive installdirs-recursive \ +- pdf-recursive ps-recursive uninstall-info-recursive \ +- uninstall-recursive +-ETAGS = etags +-CTAGS = ctags +-DIST_SUBDIRS = $(SUBDIRS) +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +-distdir = $(PACKAGE)-$(VERSION) +-top_distdir = $(distdir) +-am__remove_distdir = \ +- { test ! -d $(distdir) \ +- || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ +- && rm -fr $(distdir); }; } +-DIST_ARCHIVES = $(distdir).tar.gz +-GZIP_ENV = --best +-distuninstallcheck_listfiles = find . -type f -print +-distcleancheck_listfiles = find . -type f -print +-ACLOCAL = @ACLOCAL@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ +-AMTAR = @AMTAR@ +-AUTOCONF = @AUTOCONF@ +-AUTOHEADER = @AUTOHEADER@ +-AUTOMAKE = @AUTOMAKE@ +-AWK = @AWK@ +-BUILD_EXAMPLE_KERNEL_FALSE = @BUILD_EXAMPLE_KERNEL_FALSE@ +-BUILD_EXAMPLE_KERNEL_TRUE = @BUILD_EXAMPLE_KERNEL_TRUE@ +-CC = @CC@ +-CCAS = @CCAS@ +-CCASFLAGS = @CCASFLAGS@ +-CCDEPMODE = @CCDEPMODE@ +-CFLAGS = @CFLAGS@ +-CPP = @CPP@ +-CPPFLAGS = @CPPFLAGS@ +-CYGPATH_W = @CYGPATH_W@ +-DEFS = @DEFS@ +-DEPDIR = @DEPDIR@ +-DISKLESS_SUPPORT_FALSE = @DISKLESS_SUPPORT_FALSE@ +-DISKLESS_SUPPORT_TRUE = @DISKLESS_SUPPORT_TRUE@ +-ECHO_C = @ECHO_C@ +-ECHO_N = @ECHO_N@ +-ECHO_T = @ECHO_T@ +-EGREP = @EGREP@ +-EXEEXT = @EXEEXT@ +-FSYS_CFLAGS = @FSYS_CFLAGS@ +-GRUB_CFLAGS = @GRUB_CFLAGS@ +-GRUB_LIBS = @GRUB_LIBS@ +-HERCULES_SUPPORT_FALSE = @HERCULES_SUPPORT_FALSE@ +-HERCULES_SUPPORT_TRUE = @HERCULES_SUPPORT_TRUE@ +-INSTALL_DATA = @INSTALL_DATA@ +-INSTALL_PROGRAM = @INSTALL_PROGRAM@ +-INSTALL_SCRIPT = @INSTALL_SCRIPT@ +-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +-LDFLAGS = @LDFLAGS@ +-LIBOBJS = @LIBOBJS@ +-LIBS = @LIBS@ +-LTLIBOBJS = @LTLIBOBJS@ +-MAINT = @MAINT@ +-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +-MAKEINFO = @MAKEINFO@ +-NETBOOT_DRIVERS = @NETBOOT_DRIVERS@ +-NETBOOT_SUPPORT_FALSE = @NETBOOT_SUPPORT_FALSE@ +-NETBOOT_SUPPORT_TRUE = @NETBOOT_SUPPORT_TRUE@ +-NET_CFLAGS = @NET_CFLAGS@ +-NET_EXTRAFLAGS = @NET_EXTRAFLAGS@ +-OBJCOPY = @OBJCOPY@ +-OBJEXT = @OBJEXT@ +-PACKAGE = @PACKAGE@ +-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +-PACKAGE_NAME = @PACKAGE_NAME@ +-PACKAGE_STRING = @PACKAGE_STRING@ +-PACKAGE_TARNAME = @PACKAGE_TARNAME@ +-PACKAGE_VERSION = @PACKAGE_VERSION@ +-PATH_SEPARATOR = @PATH_SEPARATOR@ +-PERL = @PERL@ +-RANLIB = @RANLIB@ +-SERIAL_SPEED_SIMULATION_FALSE = @SERIAL_SPEED_SIMULATION_FALSE@ +-SERIAL_SPEED_SIMULATION_TRUE = @SERIAL_SPEED_SIMULATION_TRUE@ +-SERIAL_SUPPORT_FALSE = @SERIAL_SUPPORT_FALSE@ +-SERIAL_SUPPORT_TRUE = @SERIAL_SUPPORT_TRUE@ +-SET_MAKE = @SET_MAKE@ +-SHELL = @SHELL@ +-STAGE1_CFLAGS = @STAGE1_CFLAGS@ +-STAGE2_CFLAGS = @STAGE2_CFLAGS@ +-STRIP = @STRIP@ +-VERSION = @VERSION@ +-ac_ct_CC = @ac_ct_CC@ +-ac_ct_OBJCOPY = @ac_ct_OBJCOPY@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__include = @am__include@ +-am__leading_dot = @am__leading_dot@ +-am__quote = @am__quote@ +-am__tar = @am__tar@ +-am__untar = @am__untar@ +-bindir = @bindir@ +-build = @build@ +-build_alias = @build_alias@ +-build_cpu = @build_cpu@ +-build_os = @build_os@ +-build_vendor = @build_vendor@ +-datadir = @datadir@ +-exec_prefix = @exec_prefix@ +-host = @host@ +-host_alias = @host_alias@ +-host_cpu = @host_cpu@ +-host_os = @host_os@ +-host_vendor = @host_vendor@ +-includedir = @includedir@ +-infodir = @infodir@ +-install_sh = @install_sh@ +-libdir = @libdir@ +-libexecdir = @libexecdir@ +-localstatedir = @localstatedir@ +-mandir = @mandir@ +-mkdir_p = @mkdir_p@ +-oldincludedir = @oldincludedir@ +-prefix = @prefix@ +-program_transform_name = @program_transform_name@ +-sbindir = @sbindir@ +-sharedstatedir = @sharedstatedir@ +-sysconfdir = @sysconfdir@ +-target_alias = @target_alias@ +- +-# Do not change this order if you don't know what you are doing. +-AUTOMAKE_OPTIONS = 1.7 gnu +-SUBDIRS = netboot stage2 stage1 lib grub util docs +-EXTRA_DIST = BUGS MAINTENANCE +-all: config.h +- $(MAKE) $(AM_MAKEFLAGS) all-recursive +- +-.SUFFIXES: +-am--refresh: +- @: +-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) +- @for dep in $?; do \ +- case '$(am__configure_deps)' in \ +- *$$dep*) \ +- echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ +- cd $(srcdir) && $(AUTOMAKE) --gnu \ +- && exit 0; \ +- exit 1;; \ +- esac; \ +- done; \ +- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ +- cd $(top_srcdir) && \ +- $(AUTOMAKE) --gnu Makefile +-.PRECIOUS: Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- @case '$?' in \ +- *config.status*) \ +- echo ' $(SHELL) ./config.status'; \ +- $(SHELL) ./config.status;; \ +- *) \ +- echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ +- cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ +- esac; +- +-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) +- $(SHELL) ./config.status --recheck +- +-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) +- cd $(srcdir) && $(AUTOCONF) +-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) +- cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +- +-config.h: stamp-h1 +- @if test ! -f $@; then \ +- rm -f stamp-h1; \ +- $(MAKE) stamp-h1; \ +- else :; fi +- +-stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status +- @rm -f stamp-h1 +- cd $(top_builddir) && $(SHELL) ./config.status config.h +-$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) +- cd $(top_srcdir) && $(AUTOHEADER) +- rm -f stamp-h1 +- touch $@ +- +-distclean-hdr: +- -rm -f config.h stamp-h1 +-uninstall-info-am: +- +-# This directory's subdirectories are mostly independent; you can cd +-# into them and run `make' without going through this Makefile. +-# To change the values of `make' variables: instead of editing Makefiles, +-# (1) if the variable is set in `config.status', edit `config.status' +-# (which will cause the Makefiles to be regenerated when you run `make'); +-# (2) otherwise, pass the desired values on the `make' command line. +-$(RECURSIVE_TARGETS): +- @set fnord $$MAKEFLAGS; amf=$$2; \ +- dot_seen=no; \ +- target=`echo $@ | sed s/-recursive//`; \ +- list='$(SUBDIRS)'; for subdir in $$list; do \ +- echo "Making $$target in $$subdir"; \ +- if test "$$subdir" = "."; then \ +- dot_seen=yes; \ +- local_target="$$target-am"; \ +- else \ +- local_target="$$target"; \ +- fi; \ +- (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ +- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ +- done; \ +- if test "$$dot_seen" = "no"; then \ +- $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ +- fi; test -z "$$fail" +- +-mostlyclean-recursive clean-recursive distclean-recursive \ +-maintainer-clean-recursive: +- @set fnord $$MAKEFLAGS; amf=$$2; \ +- dot_seen=no; \ +- case "$@" in \ +- distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ +- *) list='$(SUBDIRS)' ;; \ +- esac; \ +- rev=''; for subdir in $$list; do \ +- if test "$$subdir" = "."; then :; else \ +- rev="$$subdir $$rev"; \ +- fi; \ +- done; \ +- rev="$$rev ."; \ +- target=`echo $@ | sed s/-recursive//`; \ +- for subdir in $$rev; do \ +- echo "Making $$target in $$subdir"; \ +- if test "$$subdir" = "."; then \ +- local_target="$$target-am"; \ +- else \ +- local_target="$$target"; \ +- fi; \ +- (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ +- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ +- done && test -z "$$fail" +-tags-recursive: +- list='$(SUBDIRS)'; for subdir in $$list; do \ +- test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ +- done +-ctags-recursive: +- list='$(SUBDIRS)'; for subdir in $$list; do \ +- test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ +- done +- +-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- mkid -fID $$unique +-tags: TAGS +- +-TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) +- tags=; \ +- here=`pwd`; \ +- if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ +- include_option=--etags-include; \ +- empty_fix=.; \ +- else \ +- include_option=--include; \ +- empty_fix=; \ +- fi; \ +- list='$(SUBDIRS)'; for subdir in $$list; do \ +- if test "$$subdir" = .; then :; else \ +- test ! -f $$subdir/TAGS || \ +- tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ +- fi; \ +- done; \ +- list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ +- test -n "$$unique" || unique=$$empty_fix; \ +- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique; \ +- fi +-ctags: CTAGS +-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) +- tags=; \ +- here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- test -z "$(CTAGS_ARGS)$$tags$$unique" \ +- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ +- $$tags $$unique +- +-GTAGS: +- here=`$(am__cd) $(top_builddir) && pwd` \ +- && cd $(top_srcdir) \ +- && gtags -i $(GTAGS_ARGS) $$here +- +-distclean-tags: +- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +- +-distdir: $(DISTFILES) +- $(am__remove_distdir) +- mkdir $(distdir) +- $(mkdir_p) $(distdir)/util +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ +- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkdir_p) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ +- if test -d $$d/$$file; then \ +- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ +- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ +- fi; \ +- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ +- else \ +- test -f $(distdir)/$$file \ +- || cp -p $$d/$$file $(distdir)/$$file \ +- || exit 1; \ +- fi; \ +- done +- list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ +- if test "$$subdir" = .; then :; else \ +- test -d "$(distdir)/$$subdir" \ +- || $(mkdir_p) "$(distdir)/$$subdir" \ +- || exit 1; \ +- distdir=`$(am__cd) $(distdir) && pwd`; \ +- top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ +- (cd $$subdir && \ +- $(MAKE) $(AM_MAKEFLAGS) \ +- top_distdir="$$top_distdir" \ +- distdir="$$distdir/$$subdir" \ +- distdir) \ +- || exit 1; \ +- fi; \ +- done +- -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ +- ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ +- ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ +- ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ +- || chmod -R a+r $(distdir) +-dist-gzip: distdir +- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz +- $(am__remove_distdir) +- +-dist-bzip2: distdir +- tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 +- $(am__remove_distdir) +- +-dist-tarZ: distdir +- tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z +- $(am__remove_distdir) +- +-dist-shar: distdir +- shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz +- $(am__remove_distdir) +- +-dist-zip: distdir +- -rm -f $(distdir).zip +- zip -rq $(distdir).zip $(distdir) +- $(am__remove_distdir) +- +-dist dist-all: distdir +- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz +- $(am__remove_distdir) +- +-# This target untars the dist file and tries a VPATH configuration. Then +-# it guarantees that the distribution is self-contained by making another +-# tarfile. +-distcheck: dist +- case '$(DIST_ARCHIVES)' in \ +- *.tar.gz*) \ +- GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ +- *.tar.bz2*) \ +- bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ +- *.tar.Z*) \ +- uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ +- *.shar.gz*) \ +- GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ +- *.zip*) \ +- unzip $(distdir).zip ;;\ +- esac +- chmod -R a-w $(distdir); chmod a+w $(distdir) +- mkdir $(distdir)/_build +- mkdir $(distdir)/_inst +- chmod a-w $(distdir) +- dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ +- && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ +- && cd $(distdir)/_build \ +- && ../configure --srcdir=.. --prefix="$$dc_install_base" \ +- $(DISTCHECK_CONFIGURE_FLAGS) \ +- && $(MAKE) $(AM_MAKEFLAGS) \ +- && $(MAKE) $(AM_MAKEFLAGS) dvi \ +- && $(MAKE) $(AM_MAKEFLAGS) check \ +- && $(MAKE) $(AM_MAKEFLAGS) install \ +- && $(MAKE) $(AM_MAKEFLAGS) installcheck \ +- && $(MAKE) $(AM_MAKEFLAGS) uninstall \ +- && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ +- distuninstallcheck \ +- && chmod -R a-w "$$dc_install_base" \ +- && ({ \ +- (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ +- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ +- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ +- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ +- distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ +- } || { rm -rf "$$dc_destdir"; exit 1; }) \ +- && rm -rf "$$dc_destdir" \ +- && $(MAKE) $(AM_MAKEFLAGS) dist \ +- && rm -rf $(DIST_ARCHIVES) \ +- && $(MAKE) $(AM_MAKEFLAGS) distcleancheck +- $(am__remove_distdir) +- @(echo "$(distdir) archives ready for distribution: "; \ +- list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ +- sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' +-distuninstallcheck: +- @cd $(distuninstallcheck_dir) \ +- && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ +- || { echo "ERROR: files left after uninstall:" ; \ +- if test -n "$(DESTDIR)"; then \ +- echo " (check DESTDIR support)"; \ +- fi ; \ +- $(distuninstallcheck_listfiles) ; \ +- exit 1; } >&2 +-distcleancheck: distclean +- @if test '$(srcdir)' = . ; then \ +- echo "ERROR: distcleancheck can only run from a VPATH build" ; \ +- exit 1 ; \ +- fi +- @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ +- || { echo "ERROR: files left in build directory after distclean:" ; \ +- $(distcleancheck_listfiles) ; \ +- exit 1; } >&2 +-check-am: all-am +-check: check-recursive +-all-am: Makefile config.h +-installdirs: installdirs-recursive +-installdirs-am: +-install: install-recursive +-install-exec: install-exec-recursive +-install-data: install-data-recursive +-uninstall: uninstall-recursive +- +-install-am: all-am +- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +- +-installcheck: installcheck-recursive +-install-strip: +- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ +- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ +- `test -z '$(STRIP)' || \ +- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +-mostlyclean-generic: +- +-clean-generic: +- +-distclean-generic: +- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) +- +-maintainer-clean-generic: +- @echo "This command is intended for maintainers to use" +- @echo "it deletes files that may require special tools to rebuild." +-clean: clean-recursive +- +-clean-am: clean-generic mostlyclean-am +- +-distclean: distclean-recursive +- -rm -f $(am__CONFIG_DISTCLEAN_FILES) +- -rm -f Makefile +-distclean-am: clean-am distclean-generic distclean-hdr distclean-tags +- +-dvi: dvi-recursive +- +-dvi-am: +- +-html: html-recursive +- +-info: info-recursive +- +-info-am: +- +-install-data-am: +- +-install-exec-am: +- +-install-info: install-info-recursive +- +-install-man: +- +-installcheck-am: +- +-maintainer-clean: maintainer-clean-recursive +- -rm -f $(am__CONFIG_DISTCLEAN_FILES) +- -rm -rf $(top_srcdir)/autom4te.cache +- -rm -f Makefile +-maintainer-clean-am: distclean-am maintainer-clean-generic +- +-mostlyclean: mostlyclean-recursive +- +-mostlyclean-am: mostlyclean-generic +- +-pdf: pdf-recursive +- +-pdf-am: +- +-ps: ps-recursive +- +-ps-am: +- +-uninstall-am: uninstall-info-am +- +-uninstall-info: uninstall-info-recursive +- +-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \ +- check-am clean clean-generic clean-recursive ctags \ +- ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-shar \ +- dist-tarZ dist-zip distcheck distclean distclean-generic \ +- distclean-hdr distclean-recursive distclean-tags \ +- distcleancheck distdir distuninstallcheck dvi dvi-am html \ +- html-am info info-am install install-am install-data \ +- install-data-am install-exec install-exec-am install-info \ +- install-info-am install-man install-strip installcheck \ +- installcheck-am installdirs installdirs-am maintainer-clean \ +- maintainer-clean-generic maintainer-clean-recursive \ +- mostlyclean mostlyclean-generic mostlyclean-recursive pdf \ +- pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ +- uninstall-info-am +- +-# Tell versions [3.59,3.63) of GNU make to not export all variables. +-# Otherwise a system limit (for SysV at least) may be exceeded. +-.NOEXPORT: +diff --git a/acinclude.m4 b/acinclude.m4 +index 368839c..1cf1d67 100644 +--- a/acinclude.m4 ++++ b/acinclude.m4 +@@ -44,6 +44,8 @@ AC_DEFUN([grub_PROG_OBJCOPY_ABSOLUTE], + [AC_MSG_CHECKING([whether ${OBJCOPY} works for absolute addresses]) + AC_CACHE_VAL(grub_cv_prog_objcopy_absolute, + [cat > conftest.c <<\EOF ++void cmain(void); ++ + void + cmain (void) + { +@@ -57,7 +59,7 @@ else + fi + grub_cv_prog_objcopy_absolute=yes + for link_addr in 2000 8000 7C00; do +- if AC_TRY_COMMAND([${CC-cc} ${CFLAGS} -nostdlib -Wl,-N -Wl,-Ttext -Wl,$link_addr conftest.o -o conftest.exec]); then : ++ if AC_TRY_COMMAND([${CC-cc} ${CFLAGS} -nostdlib -Wl,-N -Wl,-Ttext -Wl,$link_addr -Wl,--build-id=none conftest.o -o conftest.exec]); then : + else + AC_MSG_ERROR([${CC-cc} cannot link at address $link_addr]) + fi +diff --git a/aclocal.m4 b/aclocal.m4 +deleted file mode 100644 +index aa691f6..0000000 +--- a/aclocal.m4 ++++ /dev/null +@@ -1,1061 +0,0 @@ +-# generated automatically by aclocal 1.9.4 -*- Autoconf -*- +- +-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 +-# Free Software Foundation, Inc. +-# This file is free software; the Free Software Foundation +-# gives unlimited permission to copy and/or distribute it, +-# with or without modifications, as long as this notice is preserved. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +-# PARTICULAR PURPOSE. +- +-# -*- Autoconf -*- +-# Copyright (C) 2002, 2003 Free Software Foundation, Inc. +-# Generated from amversion.in; do not edit by hand. +- +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2, or (at your option) +-# any later version. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +- +-# AM_AUTOMAKE_VERSION(VERSION) +-# ---------------------------- +-# Automake X.Y traces this macro to ensure aclocal.m4 has been +-# generated from the m4 files accompanying Automake X.Y. +-AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"]) +- +-# AM_SET_CURRENT_AUTOMAKE_VERSION +-# ------------------------------- +-# Call AM_AUTOMAKE_VERSION so it can be traced. +-# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +-AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +- [AM_AUTOMAKE_VERSION([1.9.4])]) +- +-# AM_AUX_DIR_EXPAND +- +-# Copyright (C) 2001, 2003 Free Software Foundation, Inc. +- +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2, or (at your option) +-# any later version. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +-# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +-# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +-# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +-# +-# Of course, Automake must honor this variable whenever it calls a +-# tool from the auxiliary directory. The problem is that $srcdir (and +-# therefore $ac_aux_dir as well) can be either absolute or relative, +-# depending on how configure is run. This is pretty annoying, since +-# it makes $ac_aux_dir quite unusable in subdirectories: in the top +-# source directory, any form will work fine, but in subdirectories a +-# relative path needs to be adjusted first. +-# +-# $ac_aux_dir/missing +-# fails when called from a subdirectory if $ac_aux_dir is relative +-# $top_srcdir/$ac_aux_dir/missing +-# fails if $ac_aux_dir is absolute, +-# fails when called from a subdirectory in a VPATH build with +-# a relative $ac_aux_dir +-# +-# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +-# are both prefixed by $srcdir. In an in-source build this is usually +-# harmless because $srcdir is `.', but things will broke when you +-# start a VPATH build or use an absolute $srcdir. +-# +-# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +-# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +-# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +-# and then we would define $MISSING as +-# MISSING="\${SHELL} $am_aux_dir/missing" +-# This will work as long as MISSING is not called from configure, because +-# unfortunately $(top_srcdir) has no meaning in configure. +-# However there are other variables, like CC, which are often used in +-# configure, and could therefore not use this "fixed" $ac_aux_dir. +-# +-# Another solution, used here, is to always expand $ac_aux_dir to an +-# absolute PATH. The drawback is that using absolute paths prevent a +-# configured tree to be moved without reconfiguration. +- +-AC_DEFUN([AM_AUX_DIR_EXPAND], +-[dnl Rely on autoconf to set up CDPATH properly. +-AC_PREREQ([2.50])dnl +-# expand $ac_aux_dir to an absolute path +-am_aux_dir=`cd $ac_aux_dir && pwd` +-]) +- +-# AM_CONDITIONAL -*- Autoconf -*- +- +-# Copyright (C) 1997, 2000, 2001, 2003, 2004 Free Software Foundation, Inc. +- +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2, or (at your option) +-# any later version. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +-# serial 6 +- +-# AM_CONDITIONAL(NAME, SHELL-CONDITION) +-# ------------------------------------- +-# Define a conditional. +-AC_DEFUN([AM_CONDITIONAL], +-[AC_PREREQ(2.52)dnl +- ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], +- [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +-AC_SUBST([$1_TRUE]) +-AC_SUBST([$1_FALSE]) +-if $2; then +- $1_TRUE= +- $1_FALSE='#' +-else +- $1_TRUE='#' +- $1_FALSE= +-fi +-AC_CONFIG_COMMANDS_PRE( +-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then +- AC_MSG_ERROR([[conditional "$1" was never defined. +-Usually this means the macro was only invoked conditionally.]]) +-fi])]) +- +-# serial 7 -*- Autoconf -*- +- +-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 +-# Free Software Foundation, Inc. +- +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2, or (at your option) +-# any later version. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +- +-# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +-# written in clear, in which case automake, when reading aclocal.m4, +-# will think it sees a *use*, and therefore will trigger all it's +-# C support machinery. Also note that it means that autoscan, seeing +-# CC etc. in the Makefile, will ask for an AC_PROG_CC use... +- +- +- +-# _AM_DEPENDENCIES(NAME) +-# ---------------------- +-# See how the compiler implements dependency checking. +-# NAME is "CC", "CXX", "GCJ", or "OBJC". +-# We try a few techniques and use that to set a single cache variable. +-# +-# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +-# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +-# dependency, and given that the user is not expected to run this macro, +-# just rely on AC_PROG_CC. +-AC_DEFUN([_AM_DEPENDENCIES], +-[AC_REQUIRE([AM_SET_DEPDIR])dnl +-AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +-AC_REQUIRE([AM_MAKE_INCLUDE])dnl +-AC_REQUIRE([AM_DEP_TRACK])dnl +- +-ifelse([$1], CC, [depcc="$CC" am_compiler_list=], +- [$1], CXX, [depcc="$CXX" am_compiler_list=], +- [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], +- [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], +- [depcc="$$1" am_compiler_list=]) +- +-AC_CACHE_CHECK([dependency style of $depcc], +- [am_cv_$1_dependencies_compiler_type], +-[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then +- # We make a subdir and do the tests there. Otherwise we can end up +- # making bogus files that we don't know about and never remove. For +- # instance it was reported that on HP-UX the gcc test will end up +- # making a dummy file named `D' -- because `-MD' means `put the output +- # in D'. +- mkdir conftest.dir +- # Copy depcomp to subdir because otherwise we won't find it if we're +- # using a relative directory. +- cp "$am_depcomp" conftest.dir +- cd conftest.dir +- # We will build objects and dependencies in a subdirectory because +- # it helps to detect inapplicable dependency modes. For instance +- # both Tru64's cc and ICC support -MD to output dependencies as a +- # side effect of compilation, but ICC will put the dependencies in +- # the current directory while Tru64 will put them in the object +- # directory. +- mkdir sub +- +- am_cv_$1_dependencies_compiler_type=none +- if test "$am_compiler_list" = ""; then +- am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` +- fi +- for depmode in $am_compiler_list; do +- # Setup a source with many dependencies, because some compilers +- # like to wrap large dependency lists on column 80 (with \), and +- # we should not choose a depcomp mode which is confused by this. +- # +- # We need to recreate these files for each test, as the compiler may +- # overwrite some of them when testing with obscure command lines. +- # This happens at least with the AIX C compiler. +- : > sub/conftest.c +- for i in 1 2 3 4 5 6; do +- echo '#include "conftst'$i'.h"' >> sub/conftest.c +- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with +- # Solaris 8's {/usr,}/bin/sh. +- touch sub/conftst$i.h +- done +- echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf +- +- case $depmode in +- nosideeffect) +- # after this tag, mechanisms are not by side-effect, so they'll +- # only be used when explicitly requested +- if test "x$enable_dependency_tracking" = xyes; then +- continue +- else +- break +- fi +- ;; +- none) break ;; +- esac +- # We check with `-c' and `-o' for the sake of the "dashmstdout" +- # mode. It turns out that the SunPro C++ compiler does not properly +- # handle `-M -o', and we need to detect this. +- if depmode=$depmode \ +- source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ +- depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ +- $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ +- >/dev/null 2>conftest.err && +- grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && +- grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && +- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then +- # icc doesn't choke on unknown options, it will just issue warnings +- # or remarks (even with -Werror). So we grep stderr for any message +- # that says an option was ignored or not supported. +- # When given -MP, icc 7.0 and 7.1 complain thusly: +- # icc: Command line warning: ignoring option '-M'; no argument required +- # The diagnosis changed in icc 8.0: +- # icc: Command line remark: option '-MP' not supported +- if (grep 'ignoring option' conftest.err || +- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else +- am_cv_$1_dependencies_compiler_type=$depmode +- break +- fi +- fi +- done +- +- cd .. +- rm -rf conftest.dir +-else +- am_cv_$1_dependencies_compiler_type=none +-fi +-]) +-AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +-AM_CONDITIONAL([am__fastdep$1], [ +- test "x$enable_dependency_tracking" != xno \ +- && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +-]) +- +- +-# AM_SET_DEPDIR +-# ------------- +-# Choose a directory name for dependency files. +-# This macro is AC_REQUIREd in _AM_DEPENDENCIES +-AC_DEFUN([AM_SET_DEPDIR], +-[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +-AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +-]) +- +- +-# AM_DEP_TRACK +-# ------------ +-AC_DEFUN([AM_DEP_TRACK], +-[AC_ARG_ENABLE(dependency-tracking, +-[ --disable-dependency-tracking speeds up one-time build +- --enable-dependency-tracking do not reject slow dependency extractors]) +-if test "x$enable_dependency_tracking" != xno; then +- am_depcomp="$ac_aux_dir/depcomp" +- AMDEPBACKSLASH='\' +-fi +-AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +-AC_SUBST([AMDEPBACKSLASH]) +-]) +- +-# Generate code to set up dependency tracking. -*- Autoconf -*- +- +-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 +-# Free Software Foundation, Inc. +- +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2, or (at your option) +-# any later version. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +-#serial 2 +- +-# _AM_OUTPUT_DEPENDENCY_COMMANDS +-# ------------------------------ +-AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +-[for mf in $CONFIG_FILES; do +- # Strip MF so we end up with the name of the file. +- mf=`echo "$mf" | sed -e 's/:.*$//'` +- # Check whether this is an Automake generated Makefile or not. +- # We used to match only the files named `Makefile.in', but +- # some people rename them; so instead we look at the file content. +- # Grep'ing the first line is not enough: some people post-process +- # each Makefile.in and add a new line on top of each file to say so. +- # So let's grep whole file. +- if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then +- dirpart=`AS_DIRNAME("$mf")` +- else +- continue +- fi +- # Extract the definition of DEPDIR, am__include, and am__quote +- # from the Makefile without running `make'. +- DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` +- test -z "$DEPDIR" && continue +- am__include=`sed -n 's/^am__include = //p' < "$mf"` +- test -z "am__include" && continue +- am__quote=`sed -n 's/^am__quote = //p' < "$mf"` +- # When using ansi2knr, U may be empty or an underscore; expand it +- U=`sed -n 's/^U = //p' < "$mf"` +- # Find all dependency output files, they are included files with +- # $(DEPDIR) in their names. We invoke sed twice because it is the +- # simplest approach to changing $(DEPDIR) to its actual value in the +- # expansion. +- for file in `sed -n " +- s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ +- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do +- # Make sure the directory exists. +- test -f "$dirpart/$file" && continue +- fdir=`AS_DIRNAME(["$file"])` +- AS_MKDIR_P([$dirpart/$fdir]) +- # echo "creating $dirpart/$file" +- echo '# dummy' > "$dirpart/$file" +- done +-done +-])# _AM_OUTPUT_DEPENDENCY_COMMANDS +- +- +-# AM_OUTPUT_DEPENDENCY_COMMANDS +-# ----------------------------- +-# This macro should only be invoked once -- use via AC_REQUIRE. +-# +-# This code is only required when automatic dependency tracking +-# is enabled. FIXME. This creates each `.P' file that we will +-# need in order to bootstrap the dependency handling code. +-AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +-[AC_CONFIG_COMMANDS([depfiles], +- [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], +- [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +-]) +- +-# Do all the work for Automake. -*- Autoconf -*- +- +-# This macro actually does too much some checks are only needed if +-# your package does certain things. But this isn't really a big deal. +- +-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 +-# Free Software Foundation, Inc. +- +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2, or (at your option) +-# any later version. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +-# serial 11 +- +-# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +-# AM_INIT_AUTOMAKE([OPTIONS]) +-# ----------------------------------------------- +-# The call with PACKAGE and VERSION arguments is the old style +-# call (pre autoconf-2.50), which is being phased out. PACKAGE +-# and VERSION should now be passed to AC_INIT and removed from +-# the call to AM_INIT_AUTOMAKE. +-# We support both call styles for the transition. After +-# the next Automake release, Autoconf can make the AC_INIT +-# arguments mandatory, and then we can depend on a new Autoconf +-# release and drop the old call support. +-AC_DEFUN([AM_INIT_AUTOMAKE], +-[AC_PREREQ([2.58])dnl +-dnl Autoconf wants to disallow AM_ names. We explicitly allow +-dnl the ones we care about. +-m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +-AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +-AC_REQUIRE([AC_PROG_INSTALL])dnl +-# test to see if srcdir already configured +-if test "`cd $srcdir && pwd`" != "`pwd`" && +- test -f $srcdir/config.status; then +- AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +-fi +- +-# test whether we have cygpath +-if test -z "$CYGPATH_W"; then +- if (cygpath --version) >/dev/null 2>/dev/null; then +- CYGPATH_W='cygpath -w' +- else +- CYGPATH_W=echo +- fi +-fi +-AC_SUBST([CYGPATH_W]) +- +-# Define the identity of the package. +-dnl Distinguish between old-style and new-style calls. +-m4_ifval([$2], +-[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl +- AC_SUBST([PACKAGE], [$1])dnl +- AC_SUBST([VERSION], [$2])], +-[_AM_SET_OPTIONS([$1])dnl +- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl +- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl +- +-_AM_IF_OPTION([no-define],, +-[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) +- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl +- +-# Some tools Automake needs. +-AC_REQUIRE([AM_SANITY_CHECK])dnl +-AC_REQUIRE([AC_ARG_PROGRAM])dnl +-AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +-AM_MISSING_PROG(AUTOCONF, autoconf) +-AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +-AM_MISSING_PROG(AUTOHEADER, autoheader) +-AM_MISSING_PROG(MAKEINFO, makeinfo) +-AM_PROG_INSTALL_SH +-AM_PROG_INSTALL_STRIP +-AC_REQUIRE([AM_PROG_MKDIR_P])dnl +-# We need awk for the "check" target. The system "awk" is bad on +-# some platforms. +-AC_REQUIRE([AC_PROG_AWK])dnl +-AC_REQUIRE([AC_PROG_MAKE_SET])dnl +-AC_REQUIRE([AM_SET_LEADING_DOT])dnl +-_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], +- [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], +- [_AM_PROG_TAR([v7])])]) +-_AM_IF_OPTION([no-dependencies],, +-[AC_PROVIDE_IFELSE([AC_PROG_CC], +- [_AM_DEPENDENCIES(CC)], +- [define([AC_PROG_CC], +- defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +-AC_PROVIDE_IFELSE([AC_PROG_CXX], +- [_AM_DEPENDENCIES(CXX)], +- [define([AC_PROG_CXX], +- defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +-]) +-]) +- +- +-# When config.status generates a header, we must update the stamp-h file. +-# This file resides in the same directory as the config header +-# that is generated. The stamp files are numbered to have different names. +- +-# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +-# loop where config.status creates the headers, so we can generate +-# our stamp files there. +-AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +-[# Compute $1's index in $config_headers. +-_am_stamp_count=1 +-for _am_header in $config_headers :; do +- case $_am_header in +- $1 | $1:* ) +- break ;; +- * ) +- _am_stamp_count=`expr $_am_stamp_count + 1` ;; +- esac +-done +-echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) +- +-# AM_PROG_INSTALL_SH +-# ------------------ +-# Define $install_sh. +- +-# Copyright (C) 2001, 2003 Free Software Foundation, Inc. +- +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2, or (at your option) +-# any later version. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +-AC_DEFUN([AM_PROG_INSTALL_SH], +-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +-install_sh=${install_sh-"$am_aux_dir/install-sh"} +-AC_SUBST(install_sh)]) +- +-# -*- Autoconf -*- +-# Copyright (C) 2003 Free Software Foundation, Inc. +- +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2, or (at your option) +-# any later version. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +-# serial 1 +- +-# Check whether the underlying file-system supports filenames +-# with a leading dot. For instance MS-DOS doesn't. +-AC_DEFUN([AM_SET_LEADING_DOT], +-[rm -rf .tst 2>/dev/null +-mkdir .tst 2>/dev/null +-if test -d .tst; then +- am__leading_dot=. +-else +- am__leading_dot=_ +-fi +-rmdir .tst 2>/dev/null +-AC_SUBST([am__leading_dot])]) +- +-# Add --enable-maintainer-mode option to configure. +-# From Jim Meyering +- +-# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004 +-# Free Software Foundation, Inc. +- +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2, or (at your option) +-# any later version. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +-# serial 3 +- +-AC_DEFUN([AM_MAINTAINER_MODE], +-[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) +- dnl maintainer-mode is disabled by default +- AC_ARG_ENABLE(maintainer-mode, +-[ --enable-maintainer-mode enable make rules and dependencies not useful +- (and sometimes confusing) to the casual installer], +- USE_MAINTAINER_MODE=$enableval, +- USE_MAINTAINER_MODE=no) +- AC_MSG_RESULT([$USE_MAINTAINER_MODE]) +- AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes]) +- MAINT=$MAINTAINER_MODE_TRUE +- AC_SUBST(MAINT)dnl +-] +-) +- +-AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) +- +-# Check to see how 'make' treats includes. -*- Autoconf -*- +- +-# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. +- +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2, or (at your option) +-# any later version. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +-# serial 2 +- +-# AM_MAKE_INCLUDE() +-# ----------------- +-# Check to see how make treats includes. +-AC_DEFUN([AM_MAKE_INCLUDE], +-[am_make=${MAKE-make} +-cat > confinc << 'END' +-am__doit: +- @echo done +-.PHONY: am__doit +-END +-# If we don't find an include directive, just comment out the code. +-AC_MSG_CHECKING([for style of include used by $am_make]) +-am__include="#" +-am__quote= +-_am_result=none +-# First try GNU make style include. +-echo "include confinc" > confmf +-# We grep out `Entering directory' and `Leaving directory' +-# messages which can occur if `w' ends up in MAKEFLAGS. +-# In particular we don't look at `^make:' because GNU make might +-# be invoked under some other name (usually "gmake"), in which +-# case it prints its new name instead of `make'. +-if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then +- am__include=include +- am__quote= +- _am_result=GNU +-fi +-# Now try BSD make style include. +-if test "$am__include" = "#"; then +- echo '.include "confinc"' > confmf +- if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then +- am__include=.include +- am__quote="\"" +- _am_result=BSD +- fi +-fi +-AC_SUBST([am__include]) +-AC_SUBST([am__quote]) +-AC_MSG_RESULT([$_am_result]) +-rm -f confinc confmf +-]) +- +-# -*- Autoconf -*- +- +- +-# Copyright (C) 1997, 1999, 2000, 2001, 2003 Free Software Foundation, Inc. +- +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2, or (at your option) +-# any later version. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +-# serial 3 +- +-# AM_MISSING_PROG(NAME, PROGRAM) +-# ------------------------------ +-AC_DEFUN([AM_MISSING_PROG], +-[AC_REQUIRE([AM_MISSING_HAS_RUN]) +-$1=${$1-"${am_missing_run}$2"} +-AC_SUBST($1)]) +- +- +-# AM_MISSING_HAS_RUN +-# ------------------ +-# Define MISSING if not defined so far and test if it supports --run. +-# If it does, set am_missing_run to use it, otherwise, to nothing. +-AC_DEFUN([AM_MISSING_HAS_RUN], +-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +-test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +-# Use eval to expand $SHELL +-if eval "$MISSING --run true"; then +- am_missing_run="$MISSING --run " +-else +- am_missing_run= +- AC_MSG_WARN([`missing' script is too old or missing]) +-fi +-]) +- +-# AM_PROG_MKDIR_P +-# --------------- +-# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. +- +-# Copyright (C) 2003, 2004 Free Software Foundation, Inc. +- +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2, or (at your option) +-# any later version. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +-# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories +-# created by `make install' are always world readable, even if the +-# installer happens to have an overly restrictive umask (e.g. 077). +-# This was a mistake. There are at least two reasons why we must not +-# use `-m 0755': +-# - it causes special bits like SGID to be ignored, +-# - it may be too restrictive (some setups expect 775 directories). +-# +-# Do not use -m 0755 and let people choose whatever they expect by +-# setting umask. +-# +-# We cannot accept any implementation of `mkdir' that recognizes `-p'. +-# Some implementations (such as Solaris 8's) are not thread-safe: if a +-# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' +-# concurrently, both version can detect that a/ is missing, but only +-# one can create it and the other will error out. Consequently we +-# restrict ourselves to GNU make (using the --version option ensures +-# this.) +-AC_DEFUN([AM_PROG_MKDIR_P], +-[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then +- # We used to keeping the `.' as first argument, in order to +- # allow $(mkdir_p) to be used without argument. As in +- # $(mkdir_p) $(somedir) +- # where $(somedir) is conditionally defined. However this is wrong +- # for two reasons: +- # 1. if the package is installed by a user who cannot write `.' +- # make install will fail, +- # 2. the above comment should most certainly read +- # $(mkdir_p) $(DESTDIR)$(somedir) +- # so it does not work when $(somedir) is undefined and +- # $(DESTDIR) is not. +- # To support the latter case, we have to write +- # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), +- # so the `.' trick is pointless. +- mkdir_p='mkdir -p --' +-else +- # On NextStep and OpenStep, the `mkdir' command does not +- # recognize any option. It will interpret all options as +- # directories to create, and then abort because `.' already +- # exists. +- for d in ./-p ./--version; +- do +- test -d $d && rmdir $d +- done +- # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. +- if test -f "$ac_aux_dir/mkinstalldirs"; then +- mkdir_p='$(mkinstalldirs)' +- else +- mkdir_p='$(install_sh) -d' +- fi +-fi +-AC_SUBST([mkdir_p])]) +- +-# Helper functions for option handling. -*- Autoconf -*- +- +-# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. +- +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2, or (at your option) +-# any later version. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +-# serial 2 +- +-# _AM_MANGLE_OPTION(NAME) +-# ----------------------- +-AC_DEFUN([_AM_MANGLE_OPTION], +-[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) +- +-# _AM_SET_OPTION(NAME) +-# ------------------------------ +-# Set option NAME. Presently that only means defining a flag for this option. +-AC_DEFUN([_AM_SET_OPTION], +-[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) +- +-# _AM_SET_OPTIONS(OPTIONS) +-# ---------------------------------- +-# OPTIONS is a space-separated list of Automake options. +-AC_DEFUN([_AM_SET_OPTIONS], +-[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) +- +-# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +-# ------------------------------------------- +-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +-AC_DEFUN([_AM_IF_OPTION], +-[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) +- +-# +-# Check to make sure that the build environment is sane. +-# +- +-# Copyright (C) 1996, 1997, 2000, 2001, 2003 Free Software Foundation, Inc. +- +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2, or (at your option) +-# any later version. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +-# serial 3 +- +-# AM_SANITY_CHECK +-# --------------- +-AC_DEFUN([AM_SANITY_CHECK], +-[AC_MSG_CHECKING([whether build environment is sane]) +-# Just in case +-sleep 1 +-echo timestamp > conftest.file +-# Do `set' in a subshell so we don't clobber the current shell's +-# arguments. Must try -L first in case configure is actually a +-# symlink; some systems play weird games with the mod time of symlinks +-# (eg FreeBSD returns the mod time of the symlink's containing +-# directory). +-if ( +- set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` +- if test "$[*]" = "X"; then +- # -L didn't work. +- set X `ls -t $srcdir/configure conftest.file` +- fi +- rm -f conftest.file +- if test "$[*]" != "X $srcdir/configure conftest.file" \ +- && test "$[*]" != "X conftest.file $srcdir/configure"; then +- +- # If neither matched, then we have a broken ls. This can happen +- # if, for instance, CONFIG_SHELL is bash and it inherits a +- # broken ls alias from the environment. This has actually +- # happened. Such a system could not be considered "sane". +- AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +-alias in your environment]) +- fi +- +- test "$[2]" = conftest.file +- ) +-then +- # Ok. +- : +-else +- AC_MSG_ERROR([newly created file is older than distributed files! +-Check your system clock]) +-fi +-AC_MSG_RESULT(yes)]) +- +-# AM_PROG_INSTALL_STRIP +- +-# Copyright (C) 2001, 2003 Free Software Foundation, Inc. +- +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2, or (at your option) +-# any later version. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +-# One issue with vendor `install' (even GNU) is that you can't +-# specify the program used to strip binaries. This is especially +-# annoying in cross-compiling environments, where the build's strip +-# is unlikely to handle the host's binaries. +-# Fortunately install-sh will honor a STRIPPROG variable, so we +-# always use install-sh in `make install-strip', and initialize +-# STRIPPROG with the value of the STRIP variable (set by the user). +-AC_DEFUN([AM_PROG_INSTALL_STRIP], +-[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +-# Installed binaries are usually stripped using `strip' when the user +-# run `make install-strip'. However `strip' might not be the right +-# tool to use in cross-compilation environments, therefore Automake +-# will honor the `STRIP' environment variable to overrule this program. +-dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +-if test "$cross_compiling" != no; then +- AC_CHECK_TOOL([STRIP], [strip], :) +-fi +-INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" +-AC_SUBST([INSTALL_STRIP_PROGRAM])]) +- +-# Check how to create a tarball. -*- Autoconf -*- +- +-# Copyright (C) 2004 Free Software Foundation, Inc. +- +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2, or (at your option) +-# any later version. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +-# serial 1 +- +- +-# _AM_PROG_TAR(FORMAT) +-# -------------------- +-# Check how to create a tarball in format FORMAT. +-# FORMAT should be one of `v7', `ustar', or `pax'. +-# +-# Substitute a variable $(am__tar) that is a command +-# writing to stdout a FORMAT-tarball containing the directory +-# $tardir. +-# tardir=directory && $(am__tar) > result.tar +-# +-# Substitute a variable $(am__untar) that extract such +-# a tarball read from stdin. +-# $(am__untar) < result.tar +-AC_DEFUN([_AM_PROG_TAR], +-[# Always define AMTAR for backward compatibility. +-AM_MISSING_PROG([AMTAR], [tar]) +-m4_if([$1], [v7], +- [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], +- [m4_case([$1], [ustar],, [pax],, +- [m4_fatal([Unknown tar format])]) +-AC_MSG_CHECKING([how to create a $1 tar archive]) +-# Loop over all known methods to create a tar archive until one works. +-_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' +-_am_tools=${am_cv_prog_tar_$1-$_am_tools} +-# Do not fold the above two line into one, because Tru64 sh and +-# Solaris sh will not grok spaces in the rhs of `-'. +-for _am_tool in $_am_tools +-do +- case $_am_tool in +- gnutar) +- for _am_tar in tar gnutar gtar; +- do +- AM_RUN_LOG([$_am_tar --version]) && break +- done +- am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' +- am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' +- am__untar="$_am_tar -xf -" +- ;; +- plaintar) +- # Must skip GNU tar: if it does not support --format= it doesn't create +- # ustar tarball either. +- (tar --version) >/dev/null 2>&1 && continue +- am__tar='tar chf - "$$tardir"' +- am__tar_='tar chf - "$tardir"' +- am__untar='tar xf -' +- ;; +- pax) +- am__tar='pax -L -x $1 -w "$$tardir"' +- am__tar_='pax -L -x $1 -w "$tardir"' +- am__untar='pax -r' +- ;; +- cpio) +- am__tar='find "$$tardir" -print | cpio -o -H $1 -L' +- am__tar_='find "$tardir" -print | cpio -o -H $1 -L' +- am__untar='cpio -i -H $1 -d' +- ;; +- none) +- am__tar=false +- am__tar_=false +- am__untar=false +- ;; +- esac +- +- # If the value was cached, stop now. We just wanted to have am__tar +- # and am__untar set. +- test -n "${am_cv_prog_tar_$1}" && break +- +- # tar/untar a dummy directory, and stop if the command works +- rm -rf conftest.dir +- mkdir conftest.dir +- echo GrepMe > conftest.dir/file +- AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) +- rm -rf conftest.dir +- if test -s conftest.tar; then +- AM_RUN_LOG([$am__untar /dev/null 2>&1 && break +- fi +-done +-rm -rf conftest.dir +- +-AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) +-AC_MSG_RESULT([$am_cv_prog_tar_$1])]) +-AC_SUBST([am__tar]) +-AC_SUBST([am__untar]) +-]) # _AM_PROG_TAR +- +-m4_include([acinclude.m4]) +diff --git a/config.h.in b/config.h.in +deleted file mode 100644 +index 68d7c8c..0000000 +--- a/config.h.in ++++ /dev/null +@@ -1,106 +0,0 @@ +-/* config.h.in. Generated from configure.ac by autoheader. */ +- +-/* Define if an absolute indirect call/jump must NOT be prefixed with `*' */ +-#undef ABSOLUTE_WITHOUT_ASTERISK +- +-/* Define it to \"addr32\" or \"addr32;\" to make GAS happy */ +-#undef ADDR32 +- +-/* Define if you don't want to pass the mem= option to Linux */ +-#undef AUTO_LINUX_MEM_OPT +- +-/* Define it to \"data32\" or \"data32;\" to make GAS happy */ +-#undef DATA32 +- +-/* Define if C symbols get an underscore after compilation */ +-#undef HAVE_ASM_USCORE +- +-/* Define to 1 if you have the header file. */ +-#undef HAVE_CURSES_H +- +-/* Define if edata is defined */ +-#undef HAVE_EDATA_SYMBOL +- +-/* Define if end is defined */ +-#undef HAVE_END_SYMBOL +- +-/* Define to 1 if you have the header file. */ +-#undef HAVE_INTTYPES_H +- +-/* Define if you have a curses library */ +-#undef HAVE_LIBCURSES +- +-/* Define to 1 if you have the header file. */ +-#undef HAVE_MEMORY_H +- +-/* Define to 1 if you have the header file. */ +-#undef HAVE_NCURSES_CURSES_H +- +-/* Define to 1 if you have the header file. */ +-#undef HAVE_NCURSES_H +- +-/* Define if opendisk() in -lutil can be used */ +-#undef HAVE_OPENDISK +- +-/* Define if start is defined */ +-#undef HAVE_START_SYMBOL +- +-/* Define to 1 if you have the header file. */ +-#undef HAVE_STDINT_H +- +-/* Define to 1 if you have the header file. */ +-#undef HAVE_STDLIB_H +- +-/* Define to 1 if you have the header file. */ +-#undef HAVE_STRINGS_H +- +-/* Define to 1 if you have the header file. */ +-#undef HAVE_STRING_H +- +-/* Define to 1 if you have the header file. */ +-#undef HAVE_SYS_STAT_H +- +-/* Define to 1 if you have the header file. */ +-#undef HAVE_SYS_TYPES_H +- +-/* Define to 1 if you have the header file. */ +-#undef HAVE_UNISTD_H +- +-/* Define if _edata is defined */ +-#undef HAVE_USCORE_EDATA_SYMBOL +- +-/* Define if end is defined */ +-#undef HAVE_USCORE_END_SYMBOL +- +-/* Define if _start is defined */ +-#undef HAVE_USCORE_START_SYMBOL +- +-/* Define if __bss_start is defined */ +-#undef HAVE_USCORE_USCORE_BSS_START_SYMBOL +- +-/* Name of package */ +-#undef PACKAGE +- +-/* Define to the address where bug reports for this package should be sent. */ +-#undef PACKAGE_BUGREPORT +- +-/* Define to the full name of this package. */ +-#undef PACKAGE_NAME +- +-/* Define to the full name and version of this package. */ +-#undef PACKAGE_STRING +- +-/* Define to the one symbol short name of this package. */ +-#undef PACKAGE_TARNAME +- +-/* Define to the version of this package. */ +-#undef PACKAGE_VERSION +- +-/* Define if there is user specified preset menu string */ +-#undef PRESET_MENU_STRING +- +-/* Define to 1 if you have the ANSI C header files. */ +-#undef STDC_HEADERS +- +-/* Version number of package */ +-#undef VERSION +diff --git a/configure b/configure +deleted file mode 100755 +index 537ab89..0000000 +--- a/configure ++++ /dev/null +@@ -1,7639 +0,0 @@ +-#! /bin/sh +-# Guess values for system-dependent variables and create Makefiles. +-# Generated by GNU Autoconf 2.59 for GRUB 0.97. +-# +-# Report bugs to . +-# +-# Copyright (C) 2003 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 +-DUALCASE=1; export DUALCASE # for MKS sh +- +-# Support unset when possible. +-if ( (MAIL=60; unset MAIL) || exit) >/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 -z "`(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 +- test -d ./-p && rmdir ./-p +- as_mkdir_p=false +-fi +- +-as_executable_p="test -f" +- +-# Sed expression to map a string onto a valid CPP name. +-as_tr_cpp="eval 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="eval 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='GRUB' +-PACKAGE_TARNAME='grub' +-PACKAGE_VERSION='0.97' +-PACKAGE_STRING='GRUB 0.97' +-PACKAGE_BUGREPORT='bug-grub@gnu.org' +- +-ac_unique_file="stage2/stage2.c" +-# 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 INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar build build_cpu build_vendor build_os host host_cpu host_vendor host_os MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT PERL CC ac_ct_CC CFLAGS LDFLAGS CPPFLAGS EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CCAS RANLIB ac_ct_RANLIB STAGE1_CFLAGS STAGE2_CFLAGS GRUB_CFLAGS OBJCOPY ac_ct_OBJCOPY GRUB_LIBS CPP EGREP NETBOOT_SUPPORT_TRUE NETBOOT_SUPPORT_FALSE DISKLESS_SUPPORT_TRUE DISKLESS_SUPPORT_FALSE HERCULES_SUPPORT_TRUE HERCULES_SUPPORT_FALSE SERIAL_SUPPORT_TRUE SERIAL_SUPPORT_FALSE SERIAL_SPEED_SIMULATION_TRUE SERIAL_SPEED_SIMULATION_FALSE BUILD_EXAMPLE_KERNEL_TRUE BUILD_EXAMPLE_KERNEL_FALSE FSYS_CFLAGS NET_CFLAGS NET_EXTRAFLAGS NETBOOT_DRIVERS CCASFLAGS LIBOBJS 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 +- +-# +-# 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 GRUB 0.97 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 +- +-Program names: +- --program-prefix=PREFIX prepend PREFIX to installed program names +- --program-suffix=SUFFIX append SUFFIX to installed program names +- --program-transform-name=PROGRAM run sed PROGRAM on installed program names +- +-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 GRUB 0.97:";; +- esac +- cat <<\_ACEOF +- +-Optional Features: +- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) +- --enable-FEATURE[=ARG] include FEATURE [ARG=yes] +- --enable-maintainer-mode enable make rules and dependencies not useful +- (and sometimes confusing) to the casual installer +- --disable-dependency-tracking speeds up one-time build +- --enable-dependency-tracking do not reject slow dependency extractors +- --disable-ext2fs disable ext2fs support in Stage 2 +- --disable-fat disable FAT support in Stage 2 +- --disable-ffs disable FFS support in Stage 2 +- --disable-ufs2 disable UFS2 support in Stage 2 +- --disable-minix disable Minix fs support in Stage 2 +- --disable-reiserfs disable ReiserFS support in Stage 2 +- --disable-vstafs disable VSTa FS support in Stage 2 +- --disable-jfs disable IBM JFS support in Stage 2 +- --disable-xfs disable SGI XFS support in Stage 2 +- --disable-iso9660 disable ISO9660 support in Stage 2 +- --disable-gunzip disable decompression in Stage 2 +- --disable-md5-password disable MD5 password support in Stage 2 +- --disable-packet-retransmission +- turn off packet retransmission +- --enable-pci-direct access PCI directly instead of using BIOS +- --enable-3c509 enable 3Com509 driver +- --enable-3c529 enable 3Com529 driver +- --enable-3c595 enable 3Com595 driver +- --enable-3c90x enable 3Com90x driver +- --enable-cs89x0 enable CS89x0 driver +- --enable-davicom enable Davicom driver +- --enable-depca enable DEPCA and EtherWORKS driver +- --enable-eepro enable Etherexpress Pro/10 driver +- --enable-eepro100 enable Etherexpress Pro/100 driver +- --enable-epic100 enable SMC 83c170 EPIC/100 driver +- --enable-3c507 enable 3Com507 driver +- --enable-exos205 enable EXOS205 driver +- --enable-ni5210 enable Racal-Interlan NI5210 driver +- --enable-lance enable Lance PCI PCNet/32 driver +- --enable-ne2100 enable Novell NE2100 driver +- --enable-ni6510 enable Racal-Interlan NI6510 driver +- --enable-natsemi enable NatSemi DP8381x driver +- --enable-ni5010 enable Racal-Interlan NI5010 driver +- --enable-3c503 enable 3Com503 driver +- --enable-ne enable NE1000/2000 ISA driver +- --enable-ns8390 enable NE2000 PCI driver +- --enable-wd enable WD8003/8013, SMC8216/8416 driver +- --enable-otulip enable old Tulip driver +- --enable-rtl8139 enable Realtek 8139 driver +- --enable-sis900 enable SIS 900 and SIS 7016 driver +- --enable-sk-g16 enable Schneider and Koch G16 driver +- --enable-smc9000 enable SMC9000 driver +- --enable-tiara enable Tiara driver +- --enable-tulip enable Tulip driver +- --enable-via-rhine enable Rhine-I/II driver +- --enable-w89c840 enable Winbond W89c840, Compex RL100-ATX driver +- --enable-3c503-shmem use 3c503 shared memory mode +- --enable-3c503-aui use AUI by default on 3c503 cards +- --enable-compex-rl2000-fix +- specify this if you have a Compex RL2000 PCI +- --enable-smc9000-scan=LIST +- probe for SMC9000 I/O addresses using LIST +- --enable-ne-scan=LIST probe for NE base address using LIST +- --enable-wd-default-mem=MEM +- set the default memory location for WD/SMC +- --enable-cs-scan=LIST probe for CS89x0 base address using LIST +- --enable-diskless enable diskless support +- --disable-hercules disable hercules terminal support +- --disable-serial disable serial terminal support +- --enable-serial-speed-simulation +- simulate the slowness of a serial device +- --enable-preset-menu=FILE +- preset a menu file FILE in Stage 2 +- --enable-example-kernel +- build the example Multiboot kernel +- --disable-auto-linux-mem-opt +- don't pass Linux mem= option automatically +- +-Optional Packages: +- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] +- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) +- --with-binutils=DIR search the directory DIR to find binutils +- --without-curses do not use curses +- +-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 +- +-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 +- +-# Do not use `cd foo && pwd` to compute absolute paths, because +-# the directories may not exist. +-case `pwd` in +-.) ac_abs_builddir="$ac_dir";; +-*) +- case "$ac_dir" in +- .) ac_abs_builddir=`pwd`;; +- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; +- *) ac_abs_builddir=`pwd`/"$ac_dir";; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_builddir=${ac_top_builddir}.;; +-*) +- case ${ac_top_builddir}. in +- .) ac_abs_top_builddir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; +- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_srcdir=$ac_srcdir;; +-*) +- case $ac_srcdir in +- .) ac_abs_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; +- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_srcdir=$ac_top_srcdir;; +-*) +- case $ac_top_srcdir in +- .) ac_abs_top_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; +- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; +- esac;; +-esac +- +- 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 +-GRUB configure 0.97 +-generated by GNU Autoconf 2.59 +- +-Copyright (C) 2003 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 GRUB $as_me 0.97, which was +-generated by GNU Autoconf 2.59. 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" +- +-am__api_version="1.9" +-ac_aux_dir= +-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; 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 $srcdir $srcdir/.. $srcdir/../.." >&5 +-echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&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. +- +-# 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" +-# OS/2's system install, which has a completely different semantic +-# ./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/* | \ +- ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ +- /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' +- +-echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +-echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 +-# Just in case +-sleep 1 +-echo timestamp > conftest.file +-# Do `set' in a subshell so we don't clobber the current shell's +-# arguments. Must try -L first in case configure is actually a +-# symlink; some systems play weird games with the mod time of symlinks +-# (eg FreeBSD returns the mod time of the symlink's containing +-# directory). +-if ( +- set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` +- if test "$*" = "X"; then +- # -L didn't work. +- set X `ls -t $srcdir/configure conftest.file` +- fi +- rm -f conftest.file +- if test "$*" != "X $srcdir/configure conftest.file" \ +- && test "$*" != "X conftest.file $srcdir/configure"; then +- +- # If neither matched, then we have a broken ls. This can happen +- # if, for instance, CONFIG_SHELL is bash and it inherits a +- # broken ls alias from the environment. This has actually +- # happened. Such a system could not be considered "sane". +- { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken +-alias in your environment" >&5 +-echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +-alias in your environment" >&2;} +- { (exit 1); exit 1; }; } +- fi +- +- test "$2" = conftest.file +- ) +-then +- # Ok. +- : +-else +- { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! +-Check your system clock" >&5 +-echo "$as_me: error: newly created file is older than distributed files! +-Check your system clock" >&2;} +- { (exit 1); exit 1; }; } +-fi +-echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 +-test "$program_prefix" != NONE && +- program_transform_name="s,^,$program_prefix,;$program_transform_name" +-# Use a double $ so make ignores it. +-test "$program_suffix" != NONE && +- program_transform_name="s,\$,$program_suffix,;$program_transform_name" +-# Double any \ or $. echo might interpret backslashes. +-# By default was `s,x,x', remove it if useless. +-cat <<\_ACEOF >conftest.sed +-s/[\\$]/&&/g;s/;s,x,x,$// +-_ACEOF +-program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +-rm conftest.sed +- +-# expand $ac_aux_dir to an absolute path +-am_aux_dir=`cd $ac_aux_dir && pwd` +- +-test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +-# Use eval to expand $SHELL +-if eval "$MISSING --run true"; then +- am_missing_run="$MISSING --run " +-else +- am_missing_run= +- { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 +-echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +-fi +- +-if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then +- # We used to keeping the `.' as first argument, in order to +- # allow $(mkdir_p) to be used without argument. As in +- # $(mkdir_p) $(somedir) +- # where $(somedir) is conditionally defined. However this is wrong +- # for two reasons: +- # 1. if the package is installed by a user who cannot write `.' +- # make install will fail, +- # 2. the above comment should most certainly read +- # $(mkdir_p) $(DESTDIR)$(somedir) +- # so it does not work when $(somedir) is undefined and +- # $(DESTDIR) is not. +- # To support the latter case, we have to write +- # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), +- # so the `.' trick is pointless. +- mkdir_p='mkdir -p --' +-else +- # On NextStep and OpenStep, the `mkdir' command does not +- # recognize any option. It will interpret all options as +- # directories to create, and then abort because `.' already +- # exists. +- for d in ./-p ./--version; +- do +- test -d $d && rmdir $d +- done +- # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. +- if test -f "$ac_aux_dir/mkinstalldirs"; then +- mkdir_p='$(mkinstalldirs)' +- else +- mkdir_p='$(install_sh) -d' +- fi +-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 +- +-echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +-echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` +-if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.make <<\_ACEOF +-all: +- @echo 'ac_maketemp="$(MAKE)"' +-_ACEOF +-# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +-eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +-if test -n "$ac_maketemp"; then +- eval ac_cv_prog_make_${ac_make}_set=yes +-else +- eval ac_cv_prog_make_${ac_make}_set=no +-fi +-rm -f conftest.make +-fi +-if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 +- SET_MAKE= +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +- SET_MAKE="MAKE=${MAKE-make}" +-fi +- +-rm -rf .tst 2>/dev/null +-mkdir .tst 2>/dev/null +-if test -d .tst; then +- am__leading_dot=. +-else +- am__leading_dot=_ +-fi +-rmdir .tst 2>/dev/null +- +-# test to see if srcdir already configured +-if test "`cd $srcdir && pwd`" != "`pwd`" && +- test -f $srcdir/config.status; then +- { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +-echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} +- { (exit 1); exit 1; }; } +-fi +- +-# test whether we have cygpath +-if test -z "$CYGPATH_W"; then +- if (cygpath --version) >/dev/null 2>/dev/null; then +- CYGPATH_W='cygpath -w' +- else +- CYGPATH_W=echo +- fi +-fi +- +- +-# Define the identity of the package. +- PACKAGE='grub' +- VERSION='0.97' +- +- +-cat >>confdefs.h <<_ACEOF +-#define PACKAGE "$PACKAGE" +-_ACEOF +- +- +-cat >>confdefs.h <<_ACEOF +-#define VERSION "$VERSION" +-_ACEOF +- +-# Some tools Automake needs. +- +-ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} +- +- +-AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} +- +- +-AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} +- +- +-AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} +- +- +-MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} +- +-install_sh=${install_sh-"$am_aux_dir/install-sh"} +- +-# Installed binaries are usually stripped using `strip' when the user +-# run `make install-strip'. However `strip' might not be the right +-# tool to use in cross-compilation environments, therefore Automake +-# will honor the `STRIP' environment variable to overrule this program. +-if test "$cross_compiling" != no; then +- if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +-set dummy ${ac_tool_prefix}strip; 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_STRIP+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$STRIP"; then +- ac_cv_prog_STRIP="$STRIP" # 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_STRIP="${ac_tool_prefix}strip" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-STRIP=$ac_cv_prog_STRIP +-if test -n "$STRIP"; then +- echo "$as_me:$LINENO: result: $STRIP" >&5 +-echo "${ECHO_T}$STRIP" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$ac_cv_prog_STRIP"; then +- ac_ct_STRIP=$STRIP +- # Extract the first word of "strip", so it can be a program name with args. +-set dummy strip; 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_STRIP+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_STRIP"; then +- ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # 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_STRIP="strip" +- 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_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +-fi +-fi +-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +-if test -n "$ac_ct_STRIP"; then +- echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +-echo "${ECHO_T}$ac_ct_STRIP" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +- STRIP=$ac_ct_STRIP +-else +- STRIP="$ac_cv_prog_STRIP" +-fi +- +-fi +-INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" +- +-# We need awk for the "check" target. The system "awk" is bad on +-# some platforms. +-# Always define AMTAR for backward compatibility. +- +-AMTAR=${AMTAR-"${am_missing_run}tar"} +- +-am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' +- +- +- +- +- +- +-# 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/'` +- +- +- +-case "$host_cpu" in +-i[3456]86) host_cpu=i386 ;; +-x86_64) host_cpu=x86_64 ;; +-*) { { echo "$as_me:$LINENO: error: unsupported CPU type" >&5 +-echo "$as_me: error: unsupported CPU type" >&2;} +- { (exit 1); exit 1; }; } ;; +-esac +- +- +- +- +-# +-# Options +-# +- +-echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 +-echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6 +- # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. +-if test "${enable_maintainer_mode+set}" = set; then +- enableval="$enable_maintainer_mode" +- USE_MAINTAINER_MODE=$enableval +-else +- USE_MAINTAINER_MODE=no +-fi; +- echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 +-echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6 +- +- +-if test $USE_MAINTAINER_MODE = yes; then +- MAINTAINER_MODE_TRUE= +- MAINTAINER_MODE_FALSE='#' +-else +- MAINTAINER_MODE_TRUE='#' +- MAINTAINER_MODE_FALSE= +-fi +- +- MAINT=$MAINTAINER_MODE_TRUE +- +- +-if test "x$enable_maintainer_mode" = xyes; then +- # 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 +- +- ;; +-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 -z "$PERL"; then +- { { echo "$as_me:$LINENO: error: perl not found" >&5 +-echo "$as_me: error: perl not found" >&2;} +- { (exit 1); exit 1; }; } +- fi +-fi +- +-# This should be checked before AC_PROG_CC +-if test "x$CFLAGS" = x; then +- default_CFLAGS=yes +-fi +- +-if test "x$host_cpu" = xx86_64; then +- CFLAGS="-m32 $CFLAGS" +-fi +- +-# +-# Programs +-# +- +-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 +- +-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); } +- +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-int +-main () +-{ +- +- ; +- return 0; +-} +-_ACEOF +-ac_clean_files_save=$ac_clean_files +-ac_clean_files="$ac_clean_files a.out a.exe b.out" +-# Try to create an executable without -o first, disregard a.out. +-# It will help us diagnose broken compilers, and finding out an intuition +-# of exeext. +-echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +-echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 +-ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +-if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 +- (eval $ac_link_default) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then +- # Find the output, starting from the most likely. This scheme is +-# not robust to junk in `.', hence go to wildcards (a.*) only as a last +-# resort. +- +-# Be careful to initialize this variable, since it used to be cached. +-# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +-ac_cv_exeext= +-# b.out is created by i960 compilers. +-for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out +-do +- test -f "$ac_file" || continue +- case $ac_file in +- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) +- ;; +- conftest.$ac_ext ) +- # This is the source file. +- ;; +- [ab].out ) +- # We found the default executable, but exeext='' is most +- # certainly right. +- break;; +- *.* ) +- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` +- # FIXME: I believe we export ac_cv_exeext for Libtool, +- # but it would be cool to find out if it's true. Does anybody +- # maintain Libtool? --akim. +- export ac_cv_exeext +- break;; +- * ) +- break;; +- esac +-done +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +-See \`config.log' for more details." >&5 +-echo "$as_me: error: C compiler cannot create executables +-See \`config.log' for more details." >&2;} +- { (exit 77); exit 77; }; } +-fi +- +-ac_exeext=$ac_cv_exeext +-echo "$as_me:$LINENO: result: $ac_file" >&5 +-echo "${ECHO_T}$ac_file" >&6 +- +-# Check the compiler produces executables we can run. If not, either +-# the compiler is broken, or we cross compile. +-echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +-# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +-# If not cross compiling, check that we can run a simple program. +-if test "$cross_compiling" != yes; then +- if { ac_try='./$ac_file' +- { (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 +- cross_compiling=no +- else +- if test "$cross_compiling" = maybe; then +- cross_compiling=yes +- else +- { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +-If you meant to cross compile, use \`--host'. +-See \`config.log' for more details." >&5 +-echo "$as_me: error: cannot run C compiled programs. +-If you meant to cross compile, use \`--host'. +-See \`config.log' for more details." >&2;} +- { (exit 1); exit 1; }; } +- fi +- fi +-fi +-echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 +- +-rm -f a.out a.exe conftest$ac_cv_exeext b.out +-ac_clean_files=$ac_clean_files_save +-# Check the compiler produces executables we can run. If not, either +-# the compiler is broken, or we cross compile. +-echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +-echo "$as_me:$LINENO: result: $cross_compiling" >&5 +-echo "${ECHO_T}$cross_compiling" >&6 +- +-echo "$as_me:$LINENO: checking for suffix of executables" >&5 +-echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +-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); }; then +- # If both `conftest.exe' and `conftest' are `present' (well, observable) +-# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +-# work properly (i.e., refer to `conftest.exe'), while it won't with +-# `rm'. +-for ac_file in conftest.exe conftest conftest.*; do +- test -f "$ac_file" || continue +- case $ac_file in +- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; +- *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` +- export ac_cv_exeext +- break;; +- * ) break;; +- esac +-done +-else +- { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +-See \`config.log' for more details." >&5 +-echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +-See \`config.log' for more details." >&2;} +- { (exit 1); exit 1; }; } +-fi +- +-rm -f conftest$ac_cv_exeext +-echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +-echo "${ECHO_T}$ac_cv_exeext" >&6 +- +-rm -f conftest.$ac_ext +-EXEEXT=$ac_cv_exeext +-ac_exeext=$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 +-/* 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 +-/* 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>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); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (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); }; } && +- { 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.err 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 +-/* 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>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); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (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); }; } && +- { 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.err 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 +-/* 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; +-} +- +-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has +- function prototypes and stuff, but not '\xHH' hex character constants. +- These don't provoke an error unfortunately, instead are silently treated +- as 'x'. The following induces an error, until -std1 is added to get +- proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an +- array size at least. It's necessary to write '\x00'==0 to get something +- that's true only with -std1. */ +-int osf4_cc_array ['\x00' == 0 ? 1 : -1]; +- +-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>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); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (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); }; } && +- { 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.err 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>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); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (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); }; } && +- { 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 +-/* 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>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); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (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); }; } && +- { 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.err conftest.$ac_objext conftest.$ac_ext +- cat >conftest.$ac_ext <<_ACEOF +-/* 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>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); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (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); }; } && +- { 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.err 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.err 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 +-DEPDIR="${am__leading_dot}deps" +- +- ac_config_commands="$ac_config_commands depfiles" +- +- +-am_make=${MAKE-make} +-cat > confinc << 'END' +-am__doit: +- @echo done +-.PHONY: am__doit +-END +-# If we don't find an include directive, just comment out the code. +-echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +-echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 +-am__include="#" +-am__quote= +-_am_result=none +-# First try GNU make style include. +-echo "include confinc" > confmf +-# We grep out `Entering directory' and `Leaving directory' +-# messages which can occur if `w' ends up in MAKEFLAGS. +-# In particular we don't look at `^make:' because GNU make might +-# be invoked under some other name (usually "gmake"), in which +-# case it prints its new name instead of `make'. +-if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then +- am__include=include +- am__quote= +- _am_result=GNU +-fi +-# Now try BSD make style include. +-if test "$am__include" = "#"; then +- echo '.include "confinc"' > confmf +- if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then +- am__include=.include +- am__quote="\"" +- _am_result=BSD +- fi +-fi +- +- +-echo "$as_me:$LINENO: result: $_am_result" >&5 +-echo "${ECHO_T}$_am_result" >&6 +-rm -f confinc confmf +- +-# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. +-if test "${enable_dependency_tracking+set}" = set; then +- enableval="$enable_dependency_tracking" +- +-fi; +-if test "x$enable_dependency_tracking" != xno; then +- am_depcomp="$ac_aux_dir/depcomp" +- AMDEPBACKSLASH='\' +-fi +- +- +-if test "x$enable_dependency_tracking" != xno; then +- AMDEP_TRUE= +- AMDEP_FALSE='#' +-else +- AMDEP_TRUE='#' +- AMDEP_FALSE= +-fi +- +- +- +- +-depcc="$CC" am_compiler_list= +- +-echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +-if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then +- # We make a subdir and do the tests there. Otherwise we can end up +- # making bogus files that we don't know about and never remove. For +- # instance it was reported that on HP-UX the gcc test will end up +- # making a dummy file named `D' -- because `-MD' means `put the output +- # in D'. +- mkdir conftest.dir +- # Copy depcomp to subdir because otherwise we won't find it if we're +- # using a relative directory. +- cp "$am_depcomp" conftest.dir +- cd conftest.dir +- # We will build objects and dependencies in a subdirectory because +- # it helps to detect inapplicable dependency modes. For instance +- # both Tru64's cc and ICC support -MD to output dependencies as a +- # side effect of compilation, but ICC will put the dependencies in +- # the current directory while Tru64 will put them in the object +- # directory. +- mkdir sub +- +- am_cv_CC_dependencies_compiler_type=none +- if test "$am_compiler_list" = ""; then +- am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` +- fi +- for depmode in $am_compiler_list; do +- # Setup a source with many dependencies, because some compilers +- # like to wrap large dependency lists on column 80 (with \), and +- # we should not choose a depcomp mode which is confused by this. +- # +- # We need to recreate these files for each test, as the compiler may +- # overwrite some of them when testing with obscure command lines. +- # This happens at least with the AIX C compiler. +- : > sub/conftest.c +- for i in 1 2 3 4 5 6; do +- echo '#include "conftst'$i'.h"' >> sub/conftest.c +- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with +- # Solaris 8's {/usr,}/bin/sh. +- touch sub/conftst$i.h +- done +- echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf +- +- case $depmode in +- nosideeffect) +- # after this tag, mechanisms are not by side-effect, so they'll +- # only be used when explicitly requested +- if test "x$enable_dependency_tracking" = xyes; then +- continue +- else +- break +- fi +- ;; +- none) break ;; +- esac +- # We check with `-c' and `-o' for the sake of the "dashmstdout" +- # mode. It turns out that the SunPro C++ compiler does not properly +- # handle `-M -o', and we need to detect this. +- if depmode=$depmode \ +- source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ +- depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ +- $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ +- >/dev/null 2>conftest.err && +- grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && +- grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && +- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then +- # icc doesn't choke on unknown options, it will just issue warnings +- # or remarks (even with -Werror). So we grep stderr for any message +- # that says an option was ignored or not supported. +- # When given -MP, icc 7.0 and 7.1 complain thusly: +- # icc: Command line warning: ignoring option '-M'; no argument required +- # The diagnosis changed in icc 8.0: +- # icc: Command line remark: option '-MP' not supported +- if (grep 'ignoring option' conftest.err || +- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else +- am_cv_CC_dependencies_compiler_type=$depmode +- break +- fi +- fi +- done +- +- cd .. +- rm -rf conftest.dir +-else +- am_cv_CC_dependencies_compiler_type=none +-fi +- +-fi +-echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +-echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 +-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type +- +- +- +-if +- test "x$enable_dependency_tracking" != xno \ +- && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then +- am__fastdepCC_TRUE= +- am__fastdepCC_FALSE='#' +-else +- am__fastdepCC_TRUE='#' +- am__fastdepCC_FALSE= +-fi +- +- +-# We need this for older versions of Autoconf. +- +-depcc="$CC" am_compiler_list= +- +-echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +-if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then +- # We make a subdir and do the tests there. Otherwise we can end up +- # making bogus files that we don't know about and never remove. For +- # instance it was reported that on HP-UX the gcc test will end up +- # making a dummy file named `D' -- because `-MD' means `put the output +- # in D'. +- mkdir conftest.dir +- # Copy depcomp to subdir because otherwise we won't find it if we're +- # using a relative directory. +- cp "$am_depcomp" conftest.dir +- cd conftest.dir +- # We will build objects and dependencies in a subdirectory because +- # it helps to detect inapplicable dependency modes. For instance +- # both Tru64's cc and ICC support -MD to output dependencies as a +- # side effect of compilation, but ICC will put the dependencies in +- # the current directory while Tru64 will put them in the object +- # directory. +- mkdir sub +- +- am_cv_CC_dependencies_compiler_type=none +- if test "$am_compiler_list" = ""; then +- am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` +- fi +- for depmode in $am_compiler_list; do +- # Setup a source with many dependencies, because some compilers +- # like to wrap large dependency lists on column 80 (with \), and +- # we should not choose a depcomp mode which is confused by this. +- # +- # We need to recreate these files for each test, as the compiler may +- # overwrite some of them when testing with obscure command lines. +- # This happens at least with the AIX C compiler. +- : > sub/conftest.c +- for i in 1 2 3 4 5 6; do +- echo '#include "conftst'$i'.h"' >> sub/conftest.c +- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with +- # Solaris 8's {/usr,}/bin/sh. +- touch sub/conftst$i.h +- done +- echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf +- +- case $depmode in +- nosideeffect) +- # after this tag, mechanisms are not by side-effect, so they'll +- # only be used when explicitly requested +- if test "x$enable_dependency_tracking" = xyes; then +- continue +- else +- break +- fi +- ;; +- none) break ;; +- esac +- # We check with `-c' and `-o' for the sake of the "dashmstdout" +- # mode. It turns out that the SunPro C++ compiler does not properly +- # handle `-M -o', and we need to detect this. +- if depmode=$depmode \ +- source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ +- depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ +- $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ +- >/dev/null 2>conftest.err && +- grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && +- grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && +- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then +- # icc doesn't choke on unknown options, it will just issue warnings +- # or remarks (even with -Werror). So we grep stderr for any message +- # that says an option was ignored or not supported. +- # When given -MP, icc 7.0 and 7.1 complain thusly: +- # icc: Command line warning: ignoring option '-M'; no argument required +- # The diagnosis changed in icc 8.0: +- # icc: Command line remark: option '-MP' not supported +- if (grep 'ignoring option' conftest.err || +- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else +- am_cv_CC_dependencies_compiler_type=$depmode +- break +- fi +- fi +- done +- +- cd .. +- rm -rf conftest.dir +-else +- am_cv_CC_dependencies_compiler_type=none +-fi +- +-fi +-echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +-echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 +-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type +- +- +- +-if +- test "x$enable_dependency_tracking" != xno \ +- && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then +- am__fastdepCC_TRUE= +- am__fastdepCC_FALSE='#' +-else +- am__fastdepCC_TRUE='#' +- am__fastdepCC_FALSE= +-fi +- +- +- +-CCAS="$CC" +- +- +- +-# Check whether --with-binutils or --without-binutils was given. +-if test "${with_binutils+set}" = set; then +- withval="$with_binutils" +- +-fi; +- +-if test "x$with_binutils" != x; then +- # 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_path_RANLIB+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- case $RANLIB in +- [\\/]* | ?:[\\/]*) +- ac_cv_path_RANLIB="$RANLIB" # Let the user override the test with a path. +- ;; +- *) +- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-as_dummy=""$with_binutils:$PATH"" +-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_RANLIB="$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_RANLIB" && ac_cv_path_RANLIB=":" +- ;; +-esac +-fi +-RANLIB=$ac_cv_path_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 +- +-else +- 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 +- +-fi +- +-# optimization flags +-if test "x$ac_cv_c_compiler_gnu" = xyes; then +- if test "x$default_CFLAGS" = xyes; then +- # Autoconf may set CFLAGS to -O2 and/or -g. So eliminate them. +- CFLAGS="`echo $CFLAGS | sed -e 's/-g//g' -e 's/-O[0-9]//g'` -g" +- # If the user specify the directory for binutils, add the option `-B'. +- if test "x$with_binutils" != x; then +- CFLAGS="-B$with_binutils/ $CFLAGS" +- fi +- STAGE1_CFLAGS="-O2" +- GRUB_CFLAGS="-O2" +- +-echo "$as_me:$LINENO: checking whether optimization for size works" >&5 +-echo $ECHO_N "checking whether optimization for size works... $ECHO_C" >&6 +-if test "${size_flag+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- +- saved_CFLAGS=$CFLAGS +- CFLAGS="-Os -g" +- cat >conftest.$ac_ext <<_ACEOF +-/* 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>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); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (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); }; } && +- { 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 +- size_flag=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-size_flag=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +- CFLAGS=$saved_CFLAGS +- +-fi +-echo "$as_me:$LINENO: result: $size_flag" >&5 +-echo "${ECHO_T}$size_flag" >&6 +- if test "x$size_flag" = xyes; then +- STAGE2_CFLAGS="-Os" +- else +- STAGE2_CFLAGS="-O2 -fno-strength-reduce -fno-unroll-loops" +- fi +- # OpenBSD has a GCC extension for protecting applications from +- # stack smashing attacks, but GRUB doesn't want this feature. +- echo "$as_me:$LINENO: checking whether gcc has -fno-stack-protector" >&5 +-echo $ECHO_N "checking whether gcc has -fno-stack-protector... $ECHO_C" >&6 +-if test "${no_stack_protector_flag+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- +- saved_CFLAGS=$CFLAGS +- CFLAGS="-fno-stack-protector" +- cat >conftest.$ac_ext <<_ACEOF +-/* 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>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); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (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); }; } && +- { 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 +- no_stack_protector_flag=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-no_stack_protector_flag=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +- CFLAGS=$saved_CFLAGS +- +-fi +-echo "$as_me:$LINENO: result: $no_stack_protector_flag" >&5 +-echo "${ECHO_T}$no_stack_protector_flag" >&6 +- if test "x$no_stack_protector_flag" = xyes; then +- STAGE2_CFLAGS="$STAGE2_CFLAGS -fno-stack-protector" +- fi +- fi +-fi +- +- +- +- +- +-# Enforce coding standards. +-CPPFLAGS="$CPPFLAGS -Wall -Wmissing-prototypes -Wunused -Wshadow" +-CPPFLAGS="$CPPFLAGS -Wpointer-arith" +- +-echo "$as_me:$LINENO: checking whether -Wundef works" >&5 +-echo $ECHO_N "checking whether -Wundef works... $ECHO_C" >&6 +-if test "${undef_flag+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- +- saved_CPPFLAGS="$CPPFLAGS" +- CPPFLAGS="-Wundef" +- cat >conftest.$ac_ext <<_ACEOF +-/* 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>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); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (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); }; } && +- { 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 +- undef_flag=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-undef_flag=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +- CPPFLAGS="$saved_CPPFLAGS" +- +-fi +-echo "$as_me:$LINENO: result: $undef_flag" >&5 +-echo "${ECHO_T}$undef_flag" >&6 +- +-# The options `-falign-*' are supported by gcc 3.0 or later. +-# Probably it is sufficient to only check for -falign-loops. +-echo "$as_me:$LINENO: checking whether -falign-loops works" >&5 +-echo $ECHO_N "checking whether -falign-loops works... $ECHO_C" >&6 +-if test "${falign_loop_flag+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- +- saved_CPPFLAGS="$CPPFLAGS" +- CPPFLAGS="-falign-loops=1" +- cat >conftest.$ac_ext <<_ACEOF +-/* 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>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); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (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); }; } && +- { 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 +- falign_loop_flag=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-falign_loop_flag=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +- CPPFLAGS="$saved_CPPFLAGS" +- +-fi +-echo "$as_me:$LINENO: result: $falign_loop_flag" >&5 +-echo "${ECHO_T}$falign_loop_flag" >&6 +- +-# Force no alignment to save space. +-if test "x$falign_loop_flag" = xyes; then +- CPPFLAGS="$CPPFLAGS -falign-jumps=1 -falign-loops=1 -falign-functions=1" +-else +- CPPFLAGS="$CPPFLAGS -malign-jumps=1 -malign-loops=1 -malign-functions=1" +-fi +- +-if test "x$undef_flag" = xyes; then +- CPPFLAGS="$CPPFLAGS -Wundef" +-fi +- +-if test "x$with_binutils" != x; then +- # Extract the first word of "objcopy", so it can be a program name with args. +-set dummy objcopy; 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_OBJCOPY+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- case $OBJCOPY in +- [\\/]* | ?:[\\/]*) +- ac_cv_path_OBJCOPY="$OBJCOPY" # Let the user override the test with a path. +- ;; +- *) +- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-as_dummy=""$with_binutils:$PATH"" +-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_OBJCOPY="$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 +- +- ;; +-esac +-fi +-OBJCOPY=$ac_cv_path_OBJCOPY +- +-if test -n "$OBJCOPY"; then +- echo "$as_me:$LINENO: result: $OBJCOPY" >&5 +-echo "${ECHO_T}$OBJCOPY" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-else +- if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}objcopy", so it can be a program name with args. +-set dummy ${ac_tool_prefix}objcopy; 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_OBJCOPY+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$OBJCOPY"; then +- ac_cv_prog_OBJCOPY="$OBJCOPY" # 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_OBJCOPY="${ac_tool_prefix}objcopy" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-OBJCOPY=$ac_cv_prog_OBJCOPY +-if test -n "$OBJCOPY"; then +- echo "$as_me:$LINENO: result: $OBJCOPY" >&5 +-echo "${ECHO_T}$OBJCOPY" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$ac_cv_prog_OBJCOPY"; then +- ac_ct_OBJCOPY=$OBJCOPY +- # Extract the first word of "objcopy", so it can be a program name with args. +-set dummy objcopy; 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_OBJCOPY+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_OBJCOPY"; then +- ac_cv_prog_ac_ct_OBJCOPY="$ac_ct_OBJCOPY" # 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_OBJCOPY="objcopy" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-ac_ct_OBJCOPY=$ac_cv_prog_ac_ct_OBJCOPY +-if test -n "$ac_ct_OBJCOPY"; then +- echo "$as_me:$LINENO: result: $ac_ct_OBJCOPY" >&5 +-echo "${ECHO_T}$ac_ct_OBJCOPY" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +- OBJCOPY=$ac_ct_OBJCOPY +-else +- OBJCOPY="$ac_cv_prog_OBJCOPY" +-fi +- +-fi +- +-# Defined in acinclude.m4. +- +-echo "$as_me:$LINENO: checking if C symbols get an underscore after compilation" >&5 +-echo $ECHO_N "checking if C symbols get an underscore after compilation... $ECHO_C" >&6 +-if test "${grub_cv_asm_uscore+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat > conftest.c <<\EOF +-int +-func (int *list) +-{ +- *list = 0; +- return *list; +-} +-EOF +- +-if { ac_try='${CC-cc} ${CFLAGS} -S conftest.c' +- { (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); }; } && test -s conftest.s; then +- true +-else +- { { echo "$as_me:$LINENO: error: ${CC-cc} failed to produce assembly code" >&5 +-echo "$as_me: error: ${CC-cc} failed to produce assembly code" >&2;} +- { (exit 1); exit 1; }; } +-fi +- +-if grep _func conftest.s >/dev/null 2>&1; then +- grub_cv_asm_uscore=yes +-else +- grub_cv_asm_uscore=no +-fi +- +-rm -f conftest* +-fi +- +- +-if test "x$grub_cv_asm_uscore" = xyes; then +- +-cat >>confdefs.h <<_ACEOF +-#define HAVE_ASM_USCORE $grub_cv_asm_uscore +-_ACEOF +- +-fi +- +-echo "$as_me:$LINENO: result: $grub_cv_asm_uscore" >&5 +-echo "${ECHO_T}$grub_cv_asm_uscore" >&6 +- +-echo "$as_me:$LINENO: checking whether ${OBJCOPY} works for absolute addresses" >&5 +-echo $ECHO_N "checking whether ${OBJCOPY} works for absolute addresses... $ECHO_C" >&6 +-if test "${grub_cv_prog_objcopy_absolute+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat > conftest.c <<\EOF +-void +-cmain (void) +-{ +- *((int *) 0x1000) = 2; +-} +-EOF +- +-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); } && test -s conftest.o; then : +-else +- { { echo "$as_me:$LINENO: error: ${CC-cc} cannot compile C source code" >&5 +-echo "$as_me: error: ${CC-cc} cannot compile C source code" >&2;} +- { (exit 1); exit 1; }; } +-fi +-grub_cv_prog_objcopy_absolute=yes +-for link_addr in 2000 8000 7C00; do +- if { ac_try='${CC-cc} ${CFLAGS} -nostdlib -Wl,-N -Wl,-Ttext -Wl,$link_addr conftest.o -o conftest.exec' +- { (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:$LINENO: error: ${CC-cc} cannot link at address $link_addr" >&5 +-echo "$as_me: error: ${CC-cc} cannot link at address $link_addr" >&2;} +- { (exit 1); exit 1; }; } +- fi +- if { ac_try='${OBJCOPY-objcopy} -O binary conftest.exec conftest' +- { (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:$LINENO: error: ${OBJCOPY-objcopy} cannot create binary files" >&5 +-echo "$as_me: error: ${OBJCOPY-objcopy} cannot create binary files" >&2;} +- { (exit 1); exit 1; }; } +- fi +- if test ! -f conftest.old || { ac_try='cmp -s conftest.old conftest' +- { (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 +- mv -f conftest conftest.old +- else +- grub_cv_prog_objcopy_absolute=no +- break +- fi +-done +-rm -f conftest* +-fi +- +-echo "$as_me:$LINENO: result: $grub_cv_prog_objcopy_absolute" >&5 +-echo "${ECHO_T}$grub_cv_prog_objcopy_absolute" >&6 +-if test "x$grub_cv_prog_objcopy_absolute" != xyes; then +- { { echo "$as_me:$LINENO: error: GRUB requires a working absolute objcopy; upgrade your binutils" >&5 +-echo "$as_me: error: GRUB requires a working absolute objcopy; upgrade your binutils" >&2;} +- { (exit 1); exit 1; }; } +-fi +- +- +-echo "$as_me:$LINENO: checking whether addr32 must be in the same line as the instruction" >&5 +-echo $ECHO_N "checking whether addr32 must be in the same line as the instruction... $ECHO_C" >&6 +-if test "${grub_cv_asm_prefix_requirement+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat > conftest.s <<\EOF +- .code16 +-l1: addr32 movb %al, l1 +-EOF +- +-if { ac_try='${CC-cc} ${CFLAGS} -c conftest.s' +- { (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); }; } && test -s conftest.o; then +- grub_cv_asm_prefix_requirement=yes +-else +- grub_cv_asm_prefix_requirement=no +-fi +- +-rm -f conftest* +-fi +- +- +-if test "x$grub_cv_asm_prefix_requirement" = xyes; then +- grub_tmp_addr32="addr32" +- grub_tmp_data32="data32" +-else +- grub_tmp_addr32="addr32;" +- grub_tmp_data32="data32;" +-fi +- +- +-cat >>confdefs.h <<_ACEOF +-#define ADDR32 $grub_tmp_addr32 +-_ACEOF +- +- +-cat >>confdefs.h <<_ACEOF +-#define DATA32 $grub_tmp_data32 +-_ACEOF +- +- +-echo "$as_me:$LINENO: result: $grub_cv_asm_prefix_requirement" >&5 +-echo "${ECHO_T}$grub_cv_asm_prefix_requirement" >&6 +- +- +- +-echo "$as_me:$LINENO: checking for .code16 addr32 assembler support" >&5 +-echo $ECHO_N "checking for .code16 addr32 assembler support... $ECHO_C" >&6 +-if test "${grub_cv_asm_addr32+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat > conftest.s.in <<\EOF +- .code16 +-l1: @ADDR32@ movb %al, l1 +-EOF +- +-if test "x$grub_cv_asm_prefix_requirement" = xyes; then +- sed -e s/@ADDR32@/addr32/ < conftest.s.in > conftest.s +-else +- sed -e s/@ADDR32@/addr32\;/ < conftest.s.in > conftest.s +-fi +- +-if { ac_try='${CC-cc} ${CFLAGS} -c conftest.s' +- { (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); }; } && test -s conftest.o; then +- grub_cv_asm_addr32=yes +-else +- grub_cv_asm_addr32=no +-fi +- +-rm -f conftest* +-fi +- +- +-echo "$as_me:$LINENO: result: $grub_cv_asm_addr32" >&5 +-echo "${ECHO_T}$grub_cv_asm_addr32" >&6 +-if test "x$grub_cv_asm_addr32" != xyes; then +- { { echo "$as_me:$LINENO: error: GRUB requires GAS .code16 addr32 support; upgrade your binutils" >&5 +-echo "$as_me: error: GRUB requires GAS .code16 addr32 support; upgrade your binutils" >&2;} +- { (exit 1); exit 1; }; } +-fi +- +- +-echo "$as_me:$LINENO: checking whether an absolute indirect call/jump must not be prefixed with an asterisk" >&5 +-echo $ECHO_N "checking whether an absolute indirect call/jump must not be prefixed with an asterisk... $ECHO_C" >&6 +-if test "${grub_cv_asm_absolute_without_asterisk+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat > conftest.s <<\EOF +- lcall *(offset) +-offset: +- .long 0 +- .word 0 +-EOF +- +-if { ac_try='${CC-cc} ${CFLAGS} -c conftest.s' +- { (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); }; } && test -s conftest.o; then +- grub_cv_asm_absolute_without_asterisk=no +-else +- grub_cv_asm_absolute_without_asterisk=yes +-fi +- +-rm -f conftest* +-fi +- +- +-if test "x$grub_cv_asm_absolute_without_asterisk" = xyes; then +- +-cat >>confdefs.h <<\_ACEOF +-#define ABSOLUTE_WITHOUT_ASTERISK 1 +-_ACEOF +- +-fi +- +-echo "$as_me:$LINENO: result: $grub_cv_asm_absolute_without_asterisk" >&5 +-echo "${ECHO_T}$grub_cv_asm_absolute_without_asterisk" >&6 +- +- +-echo "$as_me:$LINENO: checking if start is defined by the compiler" >&5 +-echo $ECHO_N "checking if start is defined by the compiler... $ECHO_C" >&6 +-if test "${grub_cv_check_start_symbol+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-int +-main () +-{ +-asm ("incl start") +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 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); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (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); }; } && +- { 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 +- grub_cv_check_start_symbol=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-grub_cv_check_start_symbol=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-fi +- +- +-if test "x$grub_cv_check_start_symbol" = xyes; then +- +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_START_SYMBOL 1 +-_ACEOF +- +-fi +- +-echo "$as_me:$LINENO: result: $grub_cv_check_start_symbol" >&5 +-echo "${ECHO_T}$grub_cv_check_start_symbol" >&6 +- +- +-echo "$as_me:$LINENO: checking if _start is defined by the compiler" >&5 +-echo $ECHO_N "checking if _start is defined by the compiler... $ECHO_C" >&6 +-if test "${grub_cv_check_uscore_start_symbol+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-int +-main () +-{ +-asm ("incl _start") +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 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); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (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); }; } && +- { 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 +- grub_cv_check_uscore_start_symbol=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-grub_cv_check_uscore_start_symbol=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-fi +- +- +-if test "x$grub_cv_check_uscore_start_symbol" = xyes; then +- +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_USCORE_START_SYMBOL 1 +-_ACEOF +- +-fi +- +-echo "$as_me:$LINENO: result: $grub_cv_check_uscore_start_symbol" >&5 +-echo "${ECHO_T}$grub_cv_check_uscore_start_symbol" >&6 +- +-if test "x$grub_cv_check_start_symbol" != "xyes" \ +- -a "x$grub_cv_check_uscore_start_symbol" != "xyes"; then +- { { echo "$as_me:$LINENO: error: Neither start nor _start is defined" >&5 +-echo "$as_me: error: Neither start nor _start is defined" >&2;} +- { (exit 1); exit 1; }; } +-fi +- +- +-echo "$as_me:$LINENO: checking if __bss_start is defined by the compiler" >&5 +-echo $ECHO_N "checking if __bss_start is defined by the compiler... $ECHO_C" >&6 +-if test "${grub_cv_check_uscore_uscore_bss_start_symbol+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-int +-main () +-{ +-asm ("incl __bss_start") +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 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); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (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); }; } && +- { 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 +- grub_cv_check_uscore_uscore_bss_start_symbol=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-grub_cv_check_uscore_uscore_bss_start_symbol=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-fi +- +- +-if test "x$grub_cv_check_uscore_uscore_bss_start_symbol" = xyes; then +- +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_USCORE_USCORE_BSS_START_SYMBOL 1 +-_ACEOF +- +-fi +- +-echo "$as_me:$LINENO: result: $grub_cv_check_uscore_uscore_bss_start_symbol" >&5 +-echo "${ECHO_T}$grub_cv_check_uscore_uscore_bss_start_symbol" >&6 +- +- +-echo "$as_me:$LINENO: checking if _edata is defined by the compiler" >&5 +-echo $ECHO_N "checking if _edata is defined by the compiler... $ECHO_C" >&6 +-if test "${grub_cv_check_uscore_edata_symbol+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-int +-main () +-{ +-asm ("incl _edata") +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 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); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (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); }; } && +- { 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 +- grub_cv_check_uscore_edata_symbol=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-grub_cv_check_uscore_edata_symbol=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-fi +- +- +-if test "x$grub_cv_check_uscore_edata_symbol" = xyes; then +- +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_USCORE_EDATA_SYMBOL 1 +-_ACEOF +- +-fi +- +-echo "$as_me:$LINENO: result: $grub_cv_check_uscore_edata_symbol" >&5 +-echo "${ECHO_T}$grub_cv_check_uscore_edata_symbol" >&6 +- +- +-echo "$as_me:$LINENO: checking if edata is defined by the compiler" >&5 +-echo $ECHO_N "checking if edata is defined by the compiler... $ECHO_C" >&6 +-if test "${grub_cv_check_edata_symbol+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-int +-main () +-{ +-asm ("incl edata") +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 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); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (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); }; } && +- { 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 +- grub_cv_check_edata_symbol=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-grub_cv_check_edata_symbol=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-fi +- +- +-if test "x$grub_cv_check_edata_symbol" = xyes; then +- +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_EDATA_SYMBOL 1 +-_ACEOF +- +-fi +- +-echo "$as_me:$LINENO: result: $grub_cv_check_edata_symbol" >&5 +-echo "${ECHO_T}$grub_cv_check_edata_symbol" >&6 +- +-if test "x$grub_cv_check_uscore_uscore_bss_start_symbol" != "xyes" \ +- -a "x$grub_cv_check_uscore_edata_symbol" != "xyes" \ +- -a "x$grub_cv_check_edata_symbol" != "xyes"; then +- { { echo "$as_me:$LINENO: error: None of __bss_start, _edata, edata defined" >&5 +-echo "$as_me: error: None of __bss_start, _edata, edata defined" >&2;} +- { (exit 1); exit 1; }; } +-fi +- +- +-echo "$as_me:$LINENO: checking if end is defined by the compiler" >&5 +-echo $ECHO_N "checking if end is defined by the compiler... $ECHO_C" >&6 +-if test "${grub_cv_check_end_symbol+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-int +-main () +-{ +-asm ("incl end") +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 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); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (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); }; } && +- { 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 +- grub_cv_check_end_symbol=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-grub_cv_check_end_symbol=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-fi +- +- +-if test "x$grub_cv_check_end_symbol" = xyes; then +- +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_END_SYMBOL 1 +-_ACEOF +- +-fi +- +-echo "$as_me:$LINENO: result: $grub_cv_check_end_symbol" >&5 +-echo "${ECHO_T}$grub_cv_check_end_symbol" >&6 +- +- +-echo "$as_me:$LINENO: checking if _end is defined by the compiler" >&5 +-echo $ECHO_N "checking if _end is defined by the compiler... $ECHO_C" >&6 +-if test "${grub_cv_check_uscore_end_symbol+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-int +-main () +-{ +-asm ("incl _end") +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 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); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (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); }; } && +- { 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 +- grub_cv_check_uscore_end_symbol=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-grub_cv_check_uscore_end_symbol=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-fi +- +- +-if test "x$grub_cv_check_uscore_end_symbol" = xyes; then +- +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_USCORE_END_SYMBOL 1 +-_ACEOF +- +-fi +- +-echo "$as_me:$LINENO: result: $grub_cv_check_uscore_end_symbol" >&5 +-echo "${ECHO_T}$grub_cv_check_uscore_end_symbol" >&6 +- +-if test "x$grub_cv_check_end_symbol" != "xyes" \ +- -a "x$grub_cv_check_uscore_end_symbol" != "xyes"; then +- { { echo "$as_me:$LINENO: error: Neither end nor _end is defined" >&5 +-echo "$as_me: error: Neither end nor _end is defined" >&2;} +- { (exit 1); exit 1; }; } +-fi +- +-# Check for curses libraries. +- +-# Check whether --with-curses or --without-curses was given. +-if test "${with_curses+set}" = set; then +- withval="$with_curses" +- +-fi; +- +-# Get the filename or the whole disk and open it. +-# Known to work on NetBSD. +-echo "$as_me:$LINENO: checking for opendisk in -lutil" >&5 +-echo $ECHO_N "checking for opendisk in -lutil... $ECHO_C" >&6 +-if test "${ac_cv_lib_util_opendisk+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lutil $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char opendisk (); +-int +-main () +-{ +-opendisk (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 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); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (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); }; } && +- { 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 +- ac_cv_lib_util_opendisk=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-ac_cv_lib_util_opendisk=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_util_opendisk" >&5 +-echo "${ECHO_T}$ac_cv_lib_util_opendisk" >&6 +-if test $ac_cv_lib_util_opendisk = yes; then +- GRUB_LIBS="$GRUB_LIBS -lutil" +- +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_OPENDISK 1 +-_ACEOF +- +-fi +- +- +-# Unless the user specify --without-curses, check for curses. +-if test "x$with_curses" != "xno"; then +- echo "$as_me:$LINENO: checking for wgetch in -lncurses" >&5 +-echo $ECHO_N "checking for wgetch in -lncurses... $ECHO_C" >&6 +-if test "${ac_cv_lib_ncurses_wgetch+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lncurses $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char wgetch (); +-int +-main () +-{ +-wgetch (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 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); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (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); }; } && +- { 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 +- ac_cv_lib_ncurses_wgetch=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-ac_cv_lib_ncurses_wgetch=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_ncurses_wgetch" >&5 +-echo "${ECHO_T}$ac_cv_lib_ncurses_wgetch" >&6 +-if test $ac_cv_lib_ncurses_wgetch = yes; then +- GRUB_LIBS="$GRUB_LIBS -lncurses" +- +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_LIBCURSES 1 +-_ACEOF +- +-else +- echo "$as_me:$LINENO: checking for wgetch in -lcurses" >&5 +-echo $ECHO_N "checking for wgetch in -lcurses... $ECHO_C" >&6 +-if test "${ac_cv_lib_curses_wgetch+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lcurses $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char wgetch (); +-int +-main () +-{ +-wgetch (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 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); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (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); }; } && +- { 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 +- ac_cv_lib_curses_wgetch=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-ac_cv_lib_curses_wgetch=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_curses_wgetch" >&5 +-echo "${ECHO_T}$ac_cv_lib_curses_wgetch" >&6 +-if test $ac_cv_lib_curses_wgetch = yes; then +- GRUB_LIBS="$GRUB_LIBS -lcurses" +- +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_LIBCURSES 1 +-_ACEOF +- +-fi +- +-fi +- +-fi +- +- +- +-# Check for headers. +-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 +-/* 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 +- ac_cpp_err=$ac_cpp_err$ac_c_werror_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 +-/* 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 +- ac_cpp_err=$ac_cpp_err$ac_c_werror_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 +-/* 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 +- ac_cpp_err=$ac_cpp_err$ac_c_werror_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 +-/* 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 +- ac_cpp_err=$ac_cpp_err$ac_c_werror_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 +- +- +-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 +-/* 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>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); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (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); }; } && +- { 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.err 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 +-/* 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 +-/* 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 +-/* 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 +-/* 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>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); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (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); }; } && +- { 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.err 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 +- +- +- +- +- +- +- +-for ac_header in string.h strings.h ncurses/curses.h ncurses.h curses.h +-do +-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- 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 +-fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +-else +- # Is the header compilable? +-echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +-cat >conftest.$ac_ext <<_ACEOF +-/* 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>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); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (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); }; } && +- { 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_header_compiler=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-ac_header_compiler=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 +- +-# Is the header present? +-echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include <$ac_header> +-_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 +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- ac_header_preproc=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_header_preproc=no +-fi +-rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 +- +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +- yes:no: ) +- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} +- ac_header_preproc=yes +- ;; +- no:yes:* ) +- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX +-## ------------------------------- ## +-## Report this to bug-grub@gnu.org ## +-## ------------------------------- ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 +- ;; +-esac +-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 +- eval "$as_ac_Header=\$ac_header_preproc" +-fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +- +-fi +-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 +- +- +-# Check for user options. +- +-# filesystems support. +-# Check whether --enable-ext2fs or --disable-ext2fs was given. +-if test "${enable_ext2fs+set}" = set; then +- enableval="$enable_ext2fs" +- +-fi; +- +-if test x"$enable_ext2fs" != xno; then +- FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_EXT2FS=1" +-fi +- +-# Check whether --enable-fat or --disable-fat was given. +-if test "${enable_fat+set}" = set; then +- enableval="$enable_fat" +- +-fi; +- +-if test x"$enable_fat" != xno; then +- FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_FAT=1" +-fi +- +-# Check whether --enable-ffs or --disable-ffs was given. +-if test "${enable_ffs+set}" = set; then +- enableval="$enable_ffs" +- +-fi; +- +-if test x"$enable_ffs" != xno; then +- FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_FFS=1" +-fi +- +-# Check whether --enable-ufs2 or --disable-ufs2 was given. +-if test "${enable_ufs2+set}" = set; then +- enableval="$enable_ufs2" +- +-fi; +- +-if test x"$enable_ufs2" != xno; then +- FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_UFS2=1" +-fi +- +-# Check whether --enable-minix or --disable-minix was given. +-if test "${enable_minix+set}" = set; then +- enableval="$enable_minix" +- +-fi; +- +-if test x"$enable_minix" != xno; then +- FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_MINIX=1" +-fi +- +-# Check whether --enable-reiserfs or --disable-reiserfs was given. +-if test "${enable_reiserfs+set}" = set; then +- enableval="$enable_reiserfs" +- +-fi; +- +-if test x"$enable_reiserfs" != xno; then +- FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_REISERFS=1" +-fi +- +-# Check whether --enable-vstafs or --disable-vstafs was given. +-if test "${enable_vstafs+set}" = set; then +- enableval="$enable_vstafs" +- +-fi; +- +-if test x"$enable_vstafs" != xno; then +- FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_VSTAFS=1" +-fi +- +-# Check whether --enable-jfs or --disable-jfs was given. +-if test "${enable_jfs+set}" = set; then +- enableval="$enable_jfs" +- +-fi; +- +-if test x"$enable_jfs" != xno; then +- FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_JFS=1" +-fi +- +-# Check whether --enable-xfs or --disable-xfs was given. +-if test "${enable_xfs+set}" = set; then +- enableval="$enable_xfs" +- +-fi; +- +-if test x"$enable_xfs" != xno; then +- FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_XFS=1" +-fi +- +-# Check whether --enable-iso9660 or --disable-iso9660 was given. +-if test "${enable_iso9660+set}" = set; then +- enableval="$enable_iso9660" +- +-fi; +- +-if test x"$enable_iso9660" != xno; then +- FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_ISO9660=1" +-fi +- +- +-# Check whether --enable-gunzip or --disable-gunzip was given. +-if test "${enable_gunzip+set}" = set; then +- enableval="$enable_gunzip" +- +-fi; +- +-if test x"$enable_gunzip" = xno; then +- FSYS_CFLAGS="$FSYS_CFLAGS -DNO_DECOMPRESSION=1" +-fi +- +-# Check whether --enable-md5-password or --disable-md5-password was given. +-if test "${enable_md5_password+set}" = set; then +- enableval="$enable_md5_password" +- +-fi; +-if test "x$enable_md5_password" != xno; then +- FSYS_CFLAGS="$FSYS_CFLAGS -DUSE_MD5_PASSWORDS=1" +-fi +- +-# Check whether --enable-packet-retransmission or --disable-packet-retransmission was given. +-if test "${enable_packet_retransmission+set}" = set; then +- enableval="$enable_packet_retransmission" +- +-fi; +-if test "x$enable_packet_retransmission" != xno; then +- NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DCONGESTED=1" +-fi +- +-# Check whether --enable-pci-direct or --disable-pci-direct was given. +-if test "${enable_pci_direct+set}" = set; then +- enableval="$enable_pci_direct" +- +-fi; +-if test "x$enable_pci_direct" = xyes; then +- NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DCONFIG_PCI_DIRECT=1" +-fi +- +-# Check whether --enable-3c509 or --disable-3c509 was given. +-if test "${enable_3c509+set}" = set; then +- enableval="$enable_3c509" +- +-fi; +-if test "x$enable_3c509" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_3C509" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS 3c509.o" +-fi +- +-# Check whether --enable-3c529 or --disable-3c529 was given. +-if test "${enable_3c529+set}" = set; then +- enableval="$enable_3c529" +- +-fi; +-if test "x$enable_3c529" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_3C529=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS 3c529.o" +-fi +- +-# Check whether --enable-3c595 or --disable-3c595 was given. +-if test "${enable_3c595+set}" = set; then +- enableval="$enable_3c595" +- +-fi; +-if test "x$enable_3c595" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_3C595=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS 3c595.o" +-fi +- +-# Check whether --enable-3c90x or --disable-3c90x was given. +-if test "${enable_3c90x+set}" = set; then +- enableval="$enable_3c90x" +- +-fi; +-if test "x$enable_3c90x" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_3C90X=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS 3c90x.o" +-fi +- +-# Check whether --enable-cs89x0 or --disable-cs89x0 was given. +-if test "${enable_cs89x0+set}" = set; then +- enableval="$enable_cs89x0" +- +-fi; +-if test "x$enable_cs89x0" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_CS89X0=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS cs89x0.o" +-fi +- +-# Check whether --enable-davicom or --disable-davicom was given. +-if test "${enable_davicom+set}" = set; then +- enableval="$enable_davicom" +- +-fi; +-if test "x$enable_davicom" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_DAVICOM=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS davicom.o" +-fi +- +-# Check whether --enable-depca or --disable-depca was given. +-if test "${enable_depca+set}" = set; then +- enableval="$enable_depca" +- +-fi; +-if test "x$enable_depca" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_DEPCA=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS depca.o" +-fi +- +-# Check whether --enable-eepro or --disable-eepro was given. +-if test "${enable_eepro+set}" = set; then +- enableval="$enable_eepro" +- +-fi; +-if test "x$enable_eepro" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_EEPRO=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS eepro.o" +-fi +- +-# Check whether --enable-eepro100 or --disable-eepro100 was given. +-if test "${enable_eepro100+set}" = set; then +- enableval="$enable_eepro100" +- +-fi; +-if test "x$enable_eepro100" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_EEPRO100=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS eepro100.o" +-fi +- +-# Check whether --enable-epic100 or --disable-epic100 was given. +-if test "${enable_epic100+set}" = set; then +- enableval="$enable_epic100" +- +-fi; +-if test "x$enable_epic100" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_EPIC100=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS epic100.o" +-fi +- +-# Check whether --enable-3c507 or --disable-3c507 was given. +-if test "${enable_3c507+set}" = set; then +- enableval="$enable_3c507" +- +-fi; +-if test "x$enable_3c507" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_3C507=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS 3c507.o" +-fi +- +-# Check whether --enable-exos205 or --disable-exos205 was given. +-if test "${enable_exos205+set}" = set; then +- enableval="$enable_exos205" +- +-fi; +-if test "x$enable_exos205" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_EXOS205=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS exos205.o" +-fi +- +-# Check whether --enable-ni5210 or --disable-ni5210 was given. +-if test "${enable_ni5210+set}" = set; then +- enableval="$enable_ni5210" +- +-fi; +-if test "x$enable_ni5210" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_NI5210=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS ni5210.o" +-fi +- +-# Check whether --enable-lance or --disable-lance was given. +-if test "${enable_lance+set}" = set; then +- enableval="$enable_lance" +- +-fi; +-if test "x$enable_lance" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_LANCE=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS lance.o" +-fi +- +-# Check whether --enable-ne2100 or --disable-ne2100 was given. +-if test "${enable_ne2100+set}" = set; then +- enableval="$enable_ne2100" +- +-fi; +-if test "x$enable_ne2100" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_NE2100=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS ne2100.o" +-fi +- +-# Check whether --enable-ni6510 or --disable-ni6510 was given. +-if test "${enable_ni6510+set}" = set; then +- enableval="$enable_ni6510" +- +-fi; +-if test "x$enable_ni6510" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_NI6510=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS ni6510.o" +-fi +- +-# Check whether --enable-natsemi or --disable-natsemi was given. +-if test "${enable_natsemi+set}" = set; then +- enableval="$enable_natsemi" +- +-fi; +-if test "x$enable_natsemi" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_NATSEMI=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS natsemi.o" +-fi +- +-# Check whether --enable-ni5010 or --disable-ni5010 was given. +-if test "${enable_ni5010+set}" = set; then +- enableval="$enable_ni5010" +- +-fi; +-if test "x$enable_ni5010" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_NI5010=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS ni5010.o" +-fi +- +-# Check whether --enable-3c503 or --disable-3c503 was given. +-if test "${enable_3c503+set}" = set; then +- enableval="$enable_3c503" +- +-fi; +-if test "x$enable_3c503" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_3C503=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS 3c503.o" +-fi +- +-# Check whether --enable-ne or --disable-ne was given. +-if test "${enable_ne+set}" = set; then +- enableval="$enable_ne" +- +-fi; +-if test "x$enable_ne" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_NE=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS ne.o" +-fi +- +-# Check whether --enable-ns8390 or --disable-ns8390 was given. +-if test "${enable_ns8390+set}" = set; then +- enableval="$enable_ns8390" +- +-fi; +-if test "x$enable_ns8390" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_NS8390=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS ns8390.o" +-fi +- +-# Check whether --enable-wd or --disable-wd was given. +-if test "${enable_wd+set}" = set; then +- enableval="$enable_wd" +- +-fi; +-if test "x$enable_wd" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_WD=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS wd.o" +-fi +- +-# Check whether --enable-otulip or --disable-otulip was given. +-if test "${enable_otulip+set}" = set; then +- enableval="$enable_otulip" +- +-fi; +-if test "x$enable_otulip" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_OTULIP=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS otulip.o" +-fi +- +-# Check whether --enable-rtl8139 or --disable-rtl8139 was given. +-if test "${enable_rtl8139+set}" = set; then +- enableval="$enable_rtl8139" +- +-fi; +-if test "x$enable_rtl8139" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_RTL8139=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS rtl8139.o" +-fi +- +-# Check whether --enable-sis900 or --disable-sis900 was given. +-if test "${enable_sis900+set}" = set; then +- enableval="$enable_sis900" +- +-fi; +-if test "x$enable_sis900" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_SIS900=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS sis900.o" +-fi +- +-# Check whether --enable-sk-g16 or --disable-sk-g16 was given. +-if test "${enable_sk_g16+set}" = set; then +- enableval="$enable_sk_g16" +- +-fi; +-if test "x$enable_sk_g16" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_SK_G16=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS sk_g16.o" +-fi +- +-# Check whether --enable-smc9000 or --disable-smc9000 was given. +-if test "${enable_smc9000+set}" = set; then +- enableval="$enable_smc9000" +- +-fi; +-if test "x$enable_smc9000" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_SMC9000=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS smc9000.o" +-fi +- +-# Check whether --enable-tiara or --disable-tiara was given. +-if test "${enable_tiara+set}" = set; then +- enableval="$enable_tiara" +- +-fi; +-if test "x$enable_tiara" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_TIARA=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS tiara.o" +-fi +- +-# Check whether --enable-tulip or --disable-tulip was given. +-if test "${enable_tulip+set}" = set; then +- enableval="$enable_tulip" +- +-fi; +-if test "x$enable_tulip" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_TULIP=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS tulip.o" +-fi +- +-# Check whether --enable-via-rhine or --disable-via-rhine was given. +-if test "${enable_via_rhine+set}" = set; then +- enableval="$enable_via_rhine" +- +-fi; +-if test "x$enable_via_rhine" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_VIA_RHINE=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS via_rhine.o" +-fi +- +-# Check whether --enable-w89c840 or --disable-w89c840 was given. +-if test "${enable_w89c840+set}" = set; then +- enableval="$enable_w89c840" +- +-fi; +-if test "x$enable_w89c840" = xyes; then +- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_W89C840=1" +- NETBOOT_DRIVERS="$NETBOOT_DRIVERS w89c840.o" +-fi +- +- +- +-if test "x$NET_CFLAGS" != x; then +- NETBOOT_SUPPORT_TRUE= +- NETBOOT_SUPPORT_FALSE='#' +-else +- NETBOOT_SUPPORT_TRUE='#' +- NETBOOT_SUPPORT_FALSE= +-fi +- +-if test "x$NET_CFLAGS" != x; then +- FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_TFTP=1" +-fi +- +-# Check whether --enable-3c503-shmem or --disable-3c503-shmem was given. +-if test "${enable_3c503_shmem+set}" = set; then +- enableval="$enable_3c503_shmem" +- +-fi; +-if test "x$enable_3c503_shmem" = xyes; then +- NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DT503_SHMEM=1" +-fi +- +-# Check whether --enable-3c503-aui or --disable-3c503-aui was given. +-if test "${enable_3c503_aui+set}" = set; then +- enableval="$enable_3c503_aui" +- +-fi; +-if test "x$enable_3c503_aui" = xyes; then +- NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DT503_AUI=1" +-fi +- +-# Check whether --enable-compex-rl2000-fix or --disable-compex-rl2000-fix was given. +-if test "${enable_compex_rl2000_fix+set}" = set; then +- enableval="$enable_compex_rl2000_fix" +- +-fi; +-if test "x$enable_compex_rl2000_fix" = xyes; then +- NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DCOMPEX_RL2000_FIX=1" +-fi +- +-# Check whether --enable-smc9000-scan or --disable-smc9000-scan was given. +-if test "${enable_smc9000_scan+set}" = set; then +- enableval="$enable_smc9000_scan" +- NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DSMC9000_SCAN=$enable_smc9000_scan" +-fi; +- +-# Check whether --enable-ne-scan or --disable-ne-scan was given. +-if test "${enable_ne_scan+set}" = set; then +- enableval="$enable_ne_scan" +- NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DNE_SCAN=$enable_ne_scan" +-else +- NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DNE_SCAN=0x280,0x300,0x320,0x340" +-fi; +- +-# Check whether --enable-wd-default-mem or --disable-wd-default-mem was given. +-if test "${enable_wd_default_mem+set}" = set; then +- enableval="$enable_wd_default_mem" +- NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DWD_DEFAULT_MEM=$enable_wd_default_mem" +-else +- NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DWD_DEFAULT_MEM=0xCC000" +-fi; +- +-# Check whether --enable-cs-scan or --disable-cs-scan was given. +-if test "${enable_cs_scan+set}" = set; then +- enableval="$enable_cs_scan" +- NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DCS_SCAN=$enable_cs_scan" +-fi; +- +-# Check whether --enable-diskless or --disable-diskless was given. +-if test "${enable_diskless+set}" = set; then +- enableval="$enable_diskless" +- +-fi; +- +- +-if test "x$enable_diskless" = xyes; then +- DISKLESS_SUPPORT_TRUE= +- DISKLESS_SUPPORT_FALSE='#' +-else +- DISKLESS_SUPPORT_TRUE='#' +- DISKLESS_SUPPORT_FALSE= +-fi +- +- +-# Check whether --enable-hercules or --disable-hercules was given. +-if test "${enable_hercules+set}" = set; then +- enableval="$enable_hercules" +- +-fi; +- +- +-if test "x$enable_hercules" != xno; then +- HERCULES_SUPPORT_TRUE= +- HERCULES_SUPPORT_FALSE='#' +-else +- HERCULES_SUPPORT_TRUE='#' +- HERCULES_SUPPORT_FALSE= +-fi +- +- +-# Check whether --enable-serial or --disable-serial was given. +-if test "${enable_serial+set}" = set; then +- enableval="$enable_serial" +- +-fi; +- +- +-if test "x$enable_serial" != xno; then +- SERIAL_SUPPORT_TRUE= +- SERIAL_SUPPORT_FALSE='#' +-else +- SERIAL_SUPPORT_TRUE='#' +- SERIAL_SUPPORT_FALSE= +-fi +- +- +-# Check whether --enable-serial-speed-simulation or --disable-serial-speed-simulation was given. +-if test "${enable_serial_speed_simulation+set}" = set; then +- enableval="$enable_serial_speed_simulation" +- +-fi; +- +- +-if test "x$enable_serial_speed_simulation" = xyes; then +- SERIAL_SPEED_SIMULATION_TRUE= +- SERIAL_SPEED_SIMULATION_FALSE='#' +-else +- SERIAL_SPEED_SIMULATION_TRUE='#' +- SERIAL_SPEED_SIMULATION_FALSE= +-fi +- +- +-# Sanity check. +-if test "x$enable_diskless" = xyes; then +- if test "x$NET_CFLAGS" = x; then +- { { echo "$as_me:$LINENO: error: You must enable at least one network driver" >&5 +-echo "$as_me: error: You must enable at least one network driver" >&2;} +- { (exit 1); exit 1; }; } +- fi +-fi +- +-# Check whether --enable-preset-menu or --disable-preset-menu was given. +-if test "${enable_preset_menu+set}" = set; then +- enableval="$enable_preset_menu" +- +-fi; +-if test "x$enable_preset_menu" = x; then +- : +-else +- if test -r $enable_preset_menu; then +- +-# Because early versions of GNU sed 3.x are too buggy, use a C program +-# instead of shell commands. *sigh* +-cat >conftest.c <<\EOF +-#include +- +-int +-main (void) +-{ +- int c; +- +- while ((c = getchar ()) != EOF) +- { +- switch (c) +- { +- case '\n': +- fputs ("\\n", stdout); +- break; +- case '\r': +- fputs ("\\r", stdout); +- break; +- case '\\': +- fputs ("\\\\", stdout); +- break; +- case '"': +- fputs ("\\\"", stdout); +- break; +- default: +- putchar (c); +- } +- } +- +- return 0; +-} +-EOF +- +-if { ac_try='${CC-cc} ${CFLAGS} conftest.c -o conftest' +- { (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); }; } && test -s conftest; then +- grub_tmp_value=`./conftest < "$enable_preset_menu"` +-else +- { { echo "$as_me:$LINENO: error: ${CC-cc} failed to produce an executable file" >&5 +-echo "$as_me: error: ${CC-cc} failed to produce an executable file" >&2;} +- { (exit 1); exit 1; }; } +-fi +- +- +-cat >>confdefs.h <<_ACEOF +-#define PRESET_MENU_STRING "$grub_tmp_value" +-_ACEOF +- +-rm -f conftest* +- +- else +- { { echo "$as_me:$LINENO: error: Cannot read the preset menu file $enable_preset_menu" >&5 +-echo "$as_me: error: Cannot read the preset menu file $enable_preset_menu" >&2;} +- { (exit 1); exit 1; }; } +- fi +-fi +- +-# Check whether --enable-example-kernel or --disable-example-kernel was given. +-if test "${enable_example_kernel+set}" = set; then +- enableval="$enable_example_kernel" +- +-fi; +- +- +-if test "x$enable_example_kernel" = xyes; then +- BUILD_EXAMPLE_KERNEL_TRUE= +- BUILD_EXAMPLE_KERNEL_FALSE='#' +-else +- BUILD_EXAMPLE_KERNEL_TRUE='#' +- BUILD_EXAMPLE_KERNEL_FALSE= +-fi +- +- +-# Check whether --enable-auto-linux-mem-opt or --disable-auto-linux-mem-opt was given. +-if test "${enable_auto_linux_mem_opt+set}" = set; then +- enableval="$enable_auto_linux_mem_opt" +- +-fi; +-if test "x$enable_auto_linux_mem_opt" = xno; then +- : +-else +- +-cat >>confdefs.h <<\_ACEOF +-#define AUTO_LINUX_MEM_OPT 1 +-_ACEOF +- +-fi +- +- +- +- +- +- +-CCASFLAGS='$(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)' +- +- +- +- ac_config_files="$ac_config_files Makefile stage1/Makefile stage2/Makefile docs/Makefile lib/Makefile util/Makefile grub/Makefile netboot/Makefile util/grub-image util/grub-install util/grub-md5-crypt util/grub-terminfo util/grub-set-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 : $LIBOBJS; 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 +-LIBOBJS=$ac_libobjs +- +-LTLIBOBJS=$ac_ltlibobjs +- +- +-if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional \"AMDEP\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${NETBOOT_SUPPORT_TRUE}" && test -z "${NETBOOT_SUPPORT_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional \"NETBOOT_SUPPORT\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional \"NETBOOT_SUPPORT\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${DISKLESS_SUPPORT_TRUE}" && test -z "${DISKLESS_SUPPORT_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional \"DISKLESS_SUPPORT\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional \"DISKLESS_SUPPORT\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${HERCULES_SUPPORT_TRUE}" && test -z "${HERCULES_SUPPORT_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional \"HERCULES_SUPPORT\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional \"HERCULES_SUPPORT\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${SERIAL_SUPPORT_TRUE}" && test -z "${SERIAL_SUPPORT_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional \"SERIAL_SUPPORT\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional \"SERIAL_SUPPORT\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${SERIAL_SPEED_SIMULATION_TRUE}" && test -z "${SERIAL_SPEED_SIMULATION_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional \"SERIAL_SPEED_SIMULATION\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional \"SERIAL_SPEED_SIMULATION\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${BUILD_EXAMPLE_KERNEL_TRUE}" && test -z "${BUILD_EXAMPLE_KERNEL_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional \"BUILD_EXAMPLE_KERNEL\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional \"BUILD_EXAMPLE_KERNEL\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +- +-: ${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 +-DUALCASE=1; export DUALCASE # for MKS sh +- +-# Support unset when possible. +-if ( (MAIL=60; unset MAIL) || exit) >/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 -z "`(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 +- test -d ./-p && rmdir ./-p +- as_mkdir_p=false +-fi +- +-as_executable_p="test -f" +- +-# Sed expression to map a string onto a valid CPP name. +-as_tr_cpp="eval 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="eval 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 GRUB $as_me 0.97, which was +-generated by GNU Autoconf 2.59. 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="\\ +-GRUB config.status 0.97 +-configured by $0, generated by GNU Autoconf 2.59, +- with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" +- +-Copyright (C) 2003 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. +-# +- +-AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" +- +-_ACEOF +- +- +- +-cat >>$CONFIG_STATUS <<\_ACEOF +-for ac_config_target in $ac_config_targets +-do +- case "$ac_config_target" in +- # Handling of arguments. +- "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; +- "stage1/Makefile" ) CONFIG_FILES="$CONFIG_FILES stage1/Makefile" ;; +- "stage2/Makefile" ) CONFIG_FILES="$CONFIG_FILES stage2/Makefile" ;; +- "docs/Makefile" ) CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;; +- "lib/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; +- "util/Makefile" ) CONFIG_FILES="$CONFIG_FILES util/Makefile" ;; +- "grub/Makefile" ) CONFIG_FILES="$CONFIG_FILES grub/Makefile" ;; +- "netboot/Makefile" ) CONFIG_FILES="$CONFIG_FILES netboot/Makefile" ;; +- "util/grub-image" ) CONFIG_FILES="$CONFIG_FILES util/grub-image" ;; +- "util/grub-install" ) CONFIG_FILES="$CONFIG_FILES util/grub-install" ;; +- "util/grub-md5-crypt" ) CONFIG_FILES="$CONFIG_FILES util/grub-md5-crypt" ;; +- "util/grub-terminfo" ) CONFIG_FILES="$CONFIG_FILES util/grub-terminfo" ;; +- "util/grub-set-default" ) CONFIG_FILES="$CONFIG_FILES util/grub-set-default" ;; +- "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; +- "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,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +-s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +-s,@INSTALL_DATA@,$INSTALL_DATA,;t t +-s,@CYGPATH_W@,$CYGPATH_W,;t t +-s,@PACKAGE@,$PACKAGE,;t t +-s,@VERSION@,$VERSION,;t t +-s,@ACLOCAL@,$ACLOCAL,;t t +-s,@AUTOCONF@,$AUTOCONF,;t t +-s,@AUTOMAKE@,$AUTOMAKE,;t t +-s,@AUTOHEADER@,$AUTOHEADER,;t t +-s,@MAKEINFO@,$MAKEINFO,;t t +-s,@install_sh@,$install_sh,;t t +-s,@STRIP@,$STRIP,;t t +-s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t +-s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t +-s,@mkdir_p@,$mkdir_p,;t t +-s,@AWK@,$AWK,;t t +-s,@SET_MAKE@,$SET_MAKE,;t t +-s,@am__leading_dot@,$am__leading_dot,;t t +-s,@AMTAR@,$AMTAR,;t t +-s,@am__tar@,$am__tar,;t t +-s,@am__untar@,$am__untar,;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,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t +-s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t +-s,@MAINT@,$MAINT,;t t +-s,@PERL@,$PERL,;t t +-s,@CC@,$CC,;t t +-s,@ac_ct_CC@,$ac_ct_CC,;t t +-s,@CFLAGS@,$CFLAGS,;t t +-s,@LDFLAGS@,$LDFLAGS,;t t +-s,@CPPFLAGS@,$CPPFLAGS,;t t +-s,@EXEEXT@,$EXEEXT,;t t +-s,@OBJEXT@,$OBJEXT,;t t +-s,@DEPDIR@,$DEPDIR,;t t +-s,@am__include@,$am__include,;t t +-s,@am__quote@,$am__quote,;t t +-s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t +-s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t +-s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t +-s,@CCDEPMODE@,$CCDEPMODE,;t t +-s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t +-s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t +-s,@CCAS@,$CCAS,;t t +-s,@RANLIB@,$RANLIB,;t t +-s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +-s,@STAGE1_CFLAGS@,$STAGE1_CFLAGS,;t t +-s,@STAGE2_CFLAGS@,$STAGE2_CFLAGS,;t t +-s,@GRUB_CFLAGS@,$GRUB_CFLAGS,;t t +-s,@OBJCOPY@,$OBJCOPY,;t t +-s,@ac_ct_OBJCOPY@,$ac_ct_OBJCOPY,;t t +-s,@GRUB_LIBS@,$GRUB_LIBS,;t t +-s,@CPP@,$CPP,;t t +-s,@EGREP@,$EGREP,;t t +-s,@NETBOOT_SUPPORT_TRUE@,$NETBOOT_SUPPORT_TRUE,;t t +-s,@NETBOOT_SUPPORT_FALSE@,$NETBOOT_SUPPORT_FALSE,;t t +-s,@DISKLESS_SUPPORT_TRUE@,$DISKLESS_SUPPORT_TRUE,;t t +-s,@DISKLESS_SUPPORT_FALSE@,$DISKLESS_SUPPORT_FALSE,;t t +-s,@HERCULES_SUPPORT_TRUE@,$HERCULES_SUPPORT_TRUE,;t t +-s,@HERCULES_SUPPORT_FALSE@,$HERCULES_SUPPORT_FALSE,;t t +-s,@SERIAL_SUPPORT_TRUE@,$SERIAL_SUPPORT_TRUE,;t t +-s,@SERIAL_SUPPORT_FALSE@,$SERIAL_SUPPORT_FALSE,;t t +-s,@SERIAL_SPEED_SIMULATION_TRUE@,$SERIAL_SPEED_SIMULATION_TRUE,;t t +-s,@SERIAL_SPEED_SIMULATION_FALSE@,$SERIAL_SPEED_SIMULATION_FALSE,;t t +-s,@BUILD_EXAMPLE_KERNEL_TRUE@,$BUILD_EXAMPLE_KERNEL_TRUE,;t t +-s,@BUILD_EXAMPLE_KERNEL_FALSE@,$BUILD_EXAMPLE_KERNEL_FALSE,;t t +-s,@FSYS_CFLAGS@,$FSYS_CFLAGS,;t t +-s,@NET_CFLAGS@,$NET_CFLAGS,;t t +-s,@NET_EXTRAFLAGS@,$NET_EXTRAFLAGS,;t t +-s,@NETBOOT_DRIVERS@,$NETBOOT_DRIVERS,;t t +-s,@CCASFLAGS@,$CCASFLAGS,;t t +-s,@LIBOBJS@,$LIBOBJS,;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 +- +-# Do not use `cd foo && pwd` to compute absolute paths, because +-# the directories may not exist. +-case `pwd` in +-.) ac_abs_builddir="$ac_dir";; +-*) +- case "$ac_dir" in +- .) ac_abs_builddir=`pwd`;; +- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; +- *) ac_abs_builddir=`pwd`/"$ac_dir";; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_builddir=${ac_top_builddir}.;; +-*) +- case ${ac_top_builddir}. in +- .) ac_abs_top_builddir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; +- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_srcdir=$ac_srcdir;; +-*) +- case $ac_srcdir in +- .) ac_abs_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; +- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_srcdir=$ac_top_srcdir;; +-*) +- case $ac_top_srcdir in +- .) ac_abs_top_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; +- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; +- esac;; +-esac +- +- +- 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; }; } +- # Do quote $f, to prevent DOS paths from being IFS'd. +- 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 +-# Compute $ac_file's index in $config_headers. +-_am_stamp_count=1 +-for _am_header in $config_headers :; do +- case $_am_header in +- $ac_file | $ac_file:* ) +- break ;; +- * ) +- _am_stamp_count=`expr $_am_stamp_count + 1` ;; +- esac +-done +-echo "timestamp for $ac_file" >`(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'`/stamp-h$_am_stamp_count +-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'` +- { 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 +- +-# Do not use `cd foo && pwd` to compute absolute paths, because +-# the directories may not exist. +-case `pwd` in +-.) ac_abs_builddir="$ac_dir";; +-*) +- case "$ac_dir" in +- .) ac_abs_builddir=`pwd`;; +- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; +- *) ac_abs_builddir=`pwd`/"$ac_dir";; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_builddir=${ac_top_builddir}.;; +-*) +- case ${ac_top_builddir}. in +- .) ac_abs_top_builddir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; +- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_srcdir=$ac_srcdir;; +-*) +- case $ac_srcdir in +- .) ac_abs_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; +- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_srcdir=$ac_top_srcdir;; +-*) +- case $ac_top_srcdir in +- .) ac_abs_top_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; +- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; +- esac;; +-esac +- +- +- { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +-echo "$as_me: executing $ac_dest commands" >&6;} +- case $ac_dest in +- depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do +- # Strip MF so we end up with the name of the file. +- mf=`echo "$mf" | sed -e 's/:.*$//'` +- # Check whether this is an Automake generated Makefile or not. +- # We used to match only the files named `Makefile.in', but +- # some people rename them; so instead we look at the file content. +- # Grep'ing the first line is not enough: some people post-process +- # each Makefile.in and add a new line on top of each file to say so. +- # So let's grep whole file. +- if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then +- dirpart=`(dirname "$mf") 2>/dev/null || +-$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$mf" : 'X\(//\)[^/]' \| \ +- X"$mf" : 'X\(//\)$' \| \ +- X"$mf" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$mf" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- else +- continue +- fi +- # Extract the definition of DEPDIR, am__include, and am__quote +- # from the Makefile without running `make'. +- DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` +- test -z "$DEPDIR" && continue +- am__include=`sed -n 's/^am__include = //p' < "$mf"` +- test -z "am__include" && continue +- am__quote=`sed -n 's/^am__quote = //p' < "$mf"` +- # When using ansi2knr, U may be empty or an underscore; expand it +- U=`sed -n 's/^U = //p' < "$mf"` +- # Find all dependency output files, they are included files with +- # $(DEPDIR) in their names. We invoke sed twice because it is the +- # simplest approach to changing $(DEPDIR) to its actual value in the +- # expansion. +- for file in `sed -n " +- s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ +- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do +- # Make sure the directory exists. +- test -f "$dirpart/$file" && continue +- fdir=`(dirname "$file") 2>/dev/null || +-$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$file" : 'X\(//\)[^/]' \| \ +- X"$file" : 'X\(//\)$' \| \ +- X"$file" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$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 $dirpart/$fdir +- else +- as_dir=$dirpart/$fdir +- 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 $dirpart/$fdir" >&5 +-echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} +- { (exit 1); exit 1; }; }; } +- +- # echo "creating $dirpart/$file" +- echo '# dummy' > "$dirpart/$file" +- done +-done +- ;; +- 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 +- +diff --git a/configure.ac b/configure.in +similarity index 86% +rename from configure.ac +rename to configure.in +index bb9e1d9..e5970af 100644 +--- a/configure.ac ++++ b/configure.in +@@ -29,6 +29,65 @@ esac + AC_SUBST(host_cpu) + AC_SUBST(host_vendor) + ++# Specify the platform (such as firmware). ++AC_ARG_WITH([platform], ++ AS_HELP_STRING([--with-platform=PLATFORM], ++ [select the host platform [[guessed]]])) ++ ++# Guess the platform if not specified. ++if test "x$with_platform" = x; then ++ case "$host_cpu"-"$host_vendor" in ++ i386-*) platform=pc ;; ++ x86_64-*) platform=pc ;; ++ *) AC_MSG_ERROR([unsupported machine type $host_cpu-$host_vendor]) ;; ++ esac ++else ++ platform="$with_platform" ++fi ++ ++# Sanity check. ++case "$host_cpu"-"$platform" in ++ i386-pc) ;; ++ i386-efi) ;; ++ x86_64-pc) ;; ++ x86_64-efi) ;; ++ *) AC_MSG_ERROR([unsupported machine type "$host_cpu"-"$platform"]) ;; ++esac ++ ++if test "x$platform" = xefi; then ++ case "$host_cpu" in ++ i386) EFI_ARCH=ia32 ;; ++ x86_64) EFI_ARCH=x86_64 ;; ++ *) AC_MSG_ERROR([unsupported machine type "$host_cpu"]) ;; ++ esac ++ AC_SUBST(EFI_ARCH) ++fi ++ ++gnuefi_path=${libdir}/gnuefi ++gnuefi_crt0=${gnuefi_path}/crt0-efi-${EFI_ARCH}.o ++if ! test -f $gnuefi_crt0 ; then ++ gnuefi_crt0=crt0-efi.o ++fi ++GNUEFI_CRT0=${gnuefi_crt0} ++AC_SUBST(GNUEFI_CRT0) ++gnuefi_lds=${gnuefi_path}/elf_${EFI_ARCH}_efi.lds ++if ! test -f $gnuefi_lds ; then ++ gnuefi_lds=${EFI_ARCH}/elf_efi.lds ++fi ++GNUEFI_LDS=${gnuefi_lds} ++AC_SUBST(GNUEFI_LDS) ++LIBGNUEFI=${libdir}/libgnuefi.a ++AC_SUBST(LIBGNUEFI) ++LIBEFI=${libdir}/libefi.a ++AC_SUBST(LIBEFI) ++ ++AC_SUBST(platform) ++AM_CONDITIONAL(PLATFORM_EFI, test "x$platform" = xefi) ++ ++if test "x$platform" = xefi; then ++ AC_DEFINE(PLATFORM_EFI, 1, [Define if you run on EFI platform.]) ++fi ++ + # + # Options + # +@@ -46,7 +105,7 @@ if test "x$CFLAGS" = x; then + default_CFLAGS=yes + fi + +-if test "x$host_cpu" = xx86_64; then ++if test "x$platform" = xpc -a "x$host_cpu" = xx86_64; then + CFLAGS="-m32 $CFLAGS" + fi + +@@ -63,6 +122,8 @@ dnl Because recent automake complains about AS, set it here. + CCAS="$CC" + AC_SUBST(CCAS) + ++_AM_DEPENDENCIES(CCAS) ++ + AC_ARG_WITH(binutils, + [ --with-binutils=DIR search the directory DIR to find binutils]) + +@@ -114,6 +175,20 @@ if test "x$ac_cv_prog_gcc" = xyes; then + fi + fi + fi ++STAGE2_CFLAGS="$STAGE2_CFLAGS -isystem `$CC -print-file-name=include`" ++ ++LIBGCC=$(gcc $CFLAGS -static-libgcc -print-libgcc-file-name) ++AC_SUBST(LIBGCC) ++ ++LOADER_LDFLAGS="-Wl,--build-id=none ${LIBGCC}" ++AC_SUBST(LOADER_LDFLAGS) ++ ++if test "x$platform" = xefi; then ++ STAGE2_CFLAGS="$STAGE2_CFLAGS -fpic -fshort-wchar -fno-strict-aliasing -fno-merge-constants -fno-reorder-functions" ++ if test "x$EFI_ARCH" = xx86_64; then ++ STAGE2_CFLAGS="$STAGE2_CFLAGS -DEFI_FUNCTION_WRAPPER" ++ fi ++fi + + AC_SUBST(STAGE1_CFLAGS) + AC_SUBST(STAGE2_CFLAGS) +@@ -159,9 +234,12 @@ fi + + # Defined in acinclude.m4. + grub_ASM_USCORE +-grub_PROG_OBJCOPY_ABSOLUTE +-if test "x$grub_cv_prog_objcopy_absolute" != xyes; then +- AC_MSG_ERROR([GRUB requires a working absolute objcopy; upgrade your binutils]) ++ ++if test "x$platform" != xefi; then ++ grub_PROG_OBJCOPY_ABSOLUTE ++ if test "x$grub_cv_prog_objcopy_absolute" != xyes; then ++ AC_MSG_ERROR([GRUB requires a working absolute objcopy; upgrade your binutils]) ++ fi + fi + + grub_ASM_PREFIX_REQUIREMENT +@@ -207,9 +285,9 @@ AC_CHECK_LIB(util, opendisk, [GRUB_LIBS="$GRUB_LIBS -lutil" + + # Unless the user specify --without-curses, check for curses. + if test "x$with_curses" != "xno"; then +- AC_CHECK_LIB(ncurses, wgetch, [GRUB_LIBS="$GRUB_LIBS -lncurses" ++ AC_CHECK_LIB(ncurses, wgetch, [GRUB_LIBS="$GRUB_LIBS -Wl,-Bstatic -lncurses -ltinfo -Wl,-Bdynamic" + AC_DEFINE(HAVE_LIBCURSES, 1, [Define if you have a curses library])], +- [AC_CHECK_LIB(curses, wgetch, [GRUB_LIBS="$GRUB_LIBS -lcurses" ++ [AC_CHECK_LIB(curses, wgetch, [GRUB_LIBS="$GRUB_LIBS -Wl,-Bstatic -lcurses -Wl,-Bdynamic" + AC_DEFINE(HAVE_LIBCURSES, 1, [Define if you have a curses library])])]) + fi + +@@ -595,9 +673,18 @@ AC_ARG_ENABLE(diskless, + [ --enable-diskless enable diskless support]) + AM_CONDITIONAL(DISKLESS_SUPPORT, test "x$enable_diskless" = xyes) + ++dnl Graphical splashscreen support ++AC_ARG_ENABLE(graphics, ++ [ --disable-graphics disable graphics terminal support]) ++AM_CONDITIONAL(GRAPHICS_SUPPORT, test "x$enable_graphics" != xno) ++ + dnl Hercules terminal +-AC_ARG_ENABLE(hercules, +- [ --disable-hercules disable hercules terminal support]) ++if test "x$platform" = xefi; then ++ enable_hercules=no ++else ++ AC_ARG_ENABLE(hercules, ++ [ --disable-hercules disable hercules terminal support]) ++fi + AM_CONDITIONAL(HERCULES_SUPPORT, test "x$enable_hercules" != xno) + + dnl Serial terminal +@@ -662,9 +749,13 @@ AC_SUBST(CCASFLAGS) + + + dnl Output. ++if test "x$platform" = xefi; then ++ AC_CONFIG_FILES([efi/Makefile]) ++ AC_CONFIG_LINKS([efi/grub/cpu:efi/grub/$host_cpu]) ++fi + AC_CONFIG_FILES([Makefile stage1/Makefile stage2/Makefile \ + docs/Makefile lib/Makefile util/Makefile \ +- grub/Makefile netboot/Makefile util/grub-image \ +- util/grub-install util/grub-md5-crypt \ +- util/grub-terminfo util/grub-set-default]) ++ grub/Makefile netboot/Makefile util/grub-crypt \ ++ util/grub-image util/grub-install util/grub-md5-crypt \ ++ util/grub-terminfo]) + AC_OUTPUT +diff --git a/docs/.gitignore b/docs/.gitignore +new file mode 100644 +index 0000000..e440faf +--- /dev/null ++++ b/docs/.gitignore +@@ -0,0 +1,3 @@ ++Makefile.in ++Makefile ++.deps +diff --git a/docs/Makefile.am b/docs/Makefile.am +index db99e2d..fe6b22b 100644 +--- a/docs/Makefile.am ++++ b/docs/Makefile.am +@@ -2,7 +2,8 @@ info_TEXINFOS = grub.texi multiboot.texi + grub_TEXINFOS = internals.texi + EXAMPLES = boot.S kernel.c multiboot.h + multiboot_TEXINFOS = boot.S.texi kernel.c.texi multiboot.h.texi +-man_MANS = grub.8 mbchk.1 grub-install.8 grub-md5-crypt.8 grub-terminfo.8 ++man_MANS = grub.8 mbchk.1 grub-crypt.8 grub-install.8 grub-md5-crypt.8 \ ++ grub-terminfo.8 + HELP2MAN = help2man + SRC2TEXI = src2texi + noinst_SCRIPTS = $(HELP2MAN) $(SRC2TEXI) +@@ -51,6 +52,12 @@ $(srcdir)/mbchk.1: ../util/mbchk $(srcdir)/$(HELP2MAN) + --name="check the format of a Multiboot kernel" \ + --section=1 --output=$@ $< + ++$(srcdir)/grub-crypt.8: ../util/grub-crypt $(srcdir)/$(HELP2MAN) ++ chmod 755 $< ++ $(PERL) $(srcdir)/$(HELP2MAN) \ ++ --name="Encrypt a password" \ ++ --section=8 --output=$@ $< ++ + $(srcdir)/grub-md5-crypt.8: ../util/grub-md5-crypt $(srcdir)/$(HELP2MAN) + chmod 755 $< + $(PERL) $(srcdir)/$(HELP2MAN) \ +diff --git a/docs/Makefile.in b/docs/Makefile.in +deleted file mode 100644 +index 3e2de4b..0000000 +--- a/docs/Makefile.in ++++ /dev/null +@@ -1,770 +0,0 @@ +-# Makefile.in generated by automake 1.9.4 from Makefile.am. +-# @configure_input@ +- +-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +-# 2003, 2004 Free Software Foundation, Inc. +-# This Makefile.in is free software; the Free Software Foundation +-# gives unlimited permission to copy and/or distribute it, +-# with or without modifications, as long as this notice is preserved. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +-# PARTICULAR PURPOSE. +- +-@SET_MAKE@ +- +- +-SOURCES = $(kernel_SOURCES) +- +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ +-VPATH = @srcdir@ +-pkgdatadir = $(datadir)/@PACKAGE@ +-pkglibdir = $(libdir)/@PACKAGE@ +-pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = .. +-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ +-install_sh_DATA = $(install_sh) -c -m 644 +-install_sh_PROGRAM = $(install_sh) -c +-install_sh_SCRIPT = $(install_sh) -c +-INSTALL_HEADER = $(INSTALL_DATA) +-transform = $(program_transform_name) +-NORMAL_INSTALL = : +-PRE_INSTALL = : +-POST_INSTALL = : +-NORMAL_UNINSTALL = : +-PRE_UNINSTALL = : +-POST_UNINSTALL = : +-build_triplet = @build@ +-host_triplet = @host@ +-EXTRA_PROGRAMS = kernel$(EXEEXT) +-@BUILD_EXAMPLE_KERNEL_TRUE@noinst_PROGRAMS = kernel$(EXEEXT) +-subdir = docs +-DIST_COMMON = $(grub_TEXINFOS) $(multiboot_TEXINFOS) \ +- $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ +- $(srcdir)/stamp-vti $(srcdir)/version.texi mdate-sh \ +- texinfo.tex +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ +- $(top_srcdir)/configure.ac +-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ +- $(ACLOCAL_M4) +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-PROGRAMS = $(noinst_PROGRAMS) +-am__kernel_SOURCES_DIST = boot.S kernel.c multiboot.h +-am__objects_1 = boot.$(OBJEXT) kernel-kernel.$(OBJEXT) +-@BUILD_EXAMPLE_KERNEL_TRUE@am_kernel_OBJECTS = $(am__objects_1) +-kernel_OBJECTS = $(am_kernel_OBJECTS) +-kernel_LDADD = $(LDADD) +-SCRIPTS = $(noinst_SCRIPTS) +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-CCASCOMPILE = $(CCAS) $(AM_CCASFLAGS) $(CCASFLAGS) +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-SOURCES = $(kernel_SOURCES) +-DIST_SOURCES = $(am__kernel_SOURCES_DIST) +-INFO_DEPS = $(srcdir)/grub.info $(srcdir)/multiboot.info +-am__TEXINFO_TEX_DIR = $(srcdir) +-DVIS = grub.dvi multiboot.dvi +-PDFS = grub.pdf multiboot.pdf +-PSS = grub.ps multiboot.ps +-HTMLS = grub.html multiboot.html +-TEXINFOS = grub.texi multiboot.texi +-TEXI2DVI = texi2dvi +-TEXI2PDF = $(TEXI2DVI) --pdf --batch +-MAKEINFOHTML = $(MAKEINFO) --html +-AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS) +-DVIPS = dvips +-am__installdirs = "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" \ +- "$(DESTDIR)$(man8dir)" +-man1dir = $(mandir)/man1 +-man8dir = $(mandir)/man8 +-NROFF = nroff +-MANS = $(man_MANS) +-ETAGS = etags +-CTAGS = ctags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +-ACLOCAL = @ACLOCAL@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ +-AMTAR = @AMTAR@ +-AUTOCONF = @AUTOCONF@ +-AUTOHEADER = @AUTOHEADER@ +-AUTOMAKE = @AUTOMAKE@ +-AWK = @AWK@ +-BUILD_EXAMPLE_KERNEL_FALSE = @BUILD_EXAMPLE_KERNEL_FALSE@ +-BUILD_EXAMPLE_KERNEL_TRUE = @BUILD_EXAMPLE_KERNEL_TRUE@ +-CC = @CC@ +-CCAS = @CCAS@ +-CCASFLAGS = @CCASFLAGS@ +-CCDEPMODE = @CCDEPMODE@ +-CFLAGS = @CFLAGS@ +-CPP = @CPP@ +-CPPFLAGS = @CPPFLAGS@ +-CYGPATH_W = @CYGPATH_W@ +-DEFS = @DEFS@ +-DEPDIR = @DEPDIR@ +-DISKLESS_SUPPORT_FALSE = @DISKLESS_SUPPORT_FALSE@ +-DISKLESS_SUPPORT_TRUE = @DISKLESS_SUPPORT_TRUE@ +-ECHO_C = @ECHO_C@ +-ECHO_N = @ECHO_N@ +-ECHO_T = @ECHO_T@ +-EGREP = @EGREP@ +-EXEEXT = @EXEEXT@ +-FSYS_CFLAGS = @FSYS_CFLAGS@ +-GRUB_CFLAGS = @GRUB_CFLAGS@ +-GRUB_LIBS = @GRUB_LIBS@ +-HERCULES_SUPPORT_FALSE = @HERCULES_SUPPORT_FALSE@ +-HERCULES_SUPPORT_TRUE = @HERCULES_SUPPORT_TRUE@ +-INSTALL_DATA = @INSTALL_DATA@ +-INSTALL_PROGRAM = @INSTALL_PROGRAM@ +-INSTALL_SCRIPT = @INSTALL_SCRIPT@ +-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +-LDFLAGS = @LDFLAGS@ +-LIBOBJS = @LIBOBJS@ +-LIBS = @LIBS@ +-LTLIBOBJS = @LTLIBOBJS@ +-MAINT = @MAINT@ +-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +-MAKEINFO = @MAKEINFO@ +-NETBOOT_DRIVERS = @NETBOOT_DRIVERS@ +-NETBOOT_SUPPORT_FALSE = @NETBOOT_SUPPORT_FALSE@ +-NETBOOT_SUPPORT_TRUE = @NETBOOT_SUPPORT_TRUE@ +-NET_CFLAGS = @NET_CFLAGS@ +-NET_EXTRAFLAGS = @NET_EXTRAFLAGS@ +-OBJCOPY = @OBJCOPY@ +-OBJEXT = @OBJEXT@ +-PACKAGE = @PACKAGE@ +-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +-PACKAGE_NAME = @PACKAGE_NAME@ +-PACKAGE_STRING = @PACKAGE_STRING@ +-PACKAGE_TARNAME = @PACKAGE_TARNAME@ +-PACKAGE_VERSION = @PACKAGE_VERSION@ +-PATH_SEPARATOR = @PATH_SEPARATOR@ +-PERL = @PERL@ +-RANLIB = @RANLIB@ +-SERIAL_SPEED_SIMULATION_FALSE = @SERIAL_SPEED_SIMULATION_FALSE@ +-SERIAL_SPEED_SIMULATION_TRUE = @SERIAL_SPEED_SIMULATION_TRUE@ +-SERIAL_SUPPORT_FALSE = @SERIAL_SUPPORT_FALSE@ +-SERIAL_SUPPORT_TRUE = @SERIAL_SUPPORT_TRUE@ +-SET_MAKE = @SET_MAKE@ +-SHELL = @SHELL@ +-STAGE1_CFLAGS = @STAGE1_CFLAGS@ +-STAGE2_CFLAGS = @STAGE2_CFLAGS@ +-STRIP = @STRIP@ +-VERSION = @VERSION@ +-ac_ct_CC = @ac_ct_CC@ +-ac_ct_OBJCOPY = @ac_ct_OBJCOPY@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__include = @am__include@ +-am__leading_dot = @am__leading_dot@ +-am__quote = @am__quote@ +-am__tar = @am__tar@ +-am__untar = @am__untar@ +-bindir = @bindir@ +-build = @build@ +-build_alias = @build_alias@ +-build_cpu = @build_cpu@ +-build_os = @build_os@ +-build_vendor = @build_vendor@ +-datadir = @datadir@ +-exec_prefix = @exec_prefix@ +-host = @host@ +-host_alias = @host_alias@ +-host_cpu = @host_cpu@ +-host_os = @host_os@ +-host_vendor = @host_vendor@ +-includedir = @includedir@ +-infodir = @infodir@ +-install_sh = @install_sh@ +-libdir = @libdir@ +-libexecdir = @libexecdir@ +-localstatedir = @localstatedir@ +-mandir = @mandir@ +-mkdir_p = @mkdir_p@ +-oldincludedir = @oldincludedir@ +-prefix = @prefix@ +-program_transform_name = @program_transform_name@ +-sbindir = @sbindir@ +-sharedstatedir = @sharedstatedir@ +-sysconfdir = @sysconfdir@ +-target_alias = @target_alias@ +-info_TEXINFOS = grub.texi multiboot.texi +-grub_TEXINFOS = internals.texi +-EXAMPLES = boot.S kernel.c multiboot.h +-multiboot_TEXINFOS = boot.S.texi kernel.c.texi multiboot.h.texi +-man_MANS = grub.8 mbchk.1 grub-install.8 grub-md5-crypt.8 grub-terminfo.8 +-HELP2MAN = help2man +-SRC2TEXI = src2texi +-noinst_SCRIPTS = $(HELP2MAN) $(SRC2TEXI) +-@BUILD_EXAMPLE_KERNEL_TRUE@kernel_SOURCES = $(EXAMPLES) +-@BUILD_EXAMPLE_KERNEL_TRUE@kernel_CFLAGS = -fno-builtin -nostdinc -O -g -Wall \ +-@BUILD_EXAMPLE_KERNEL_TRUE@ -imacros $(top_builddir)/config.h +- +-@BUILD_EXAMPLE_KERNEL_TRUE@kernel_LDFLAGS = -nostdlib -Wl,-N -Wl,-Ttext -Wl,100000 +-EXTRA_DIST = menu.lst $(man_MANS) $(noinst_SCRIPTS) \ +- $(EXAMPLES) $(multiboot_TEXINFOS) +- +-CLEANFILES = $(noinst_PROGRAMS) +-all: all-am +- +-.SUFFIXES: +-.SUFFIXES: .S .c .dvi .html .info .o .obj .pdf .ps .texi +-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) +- @for dep in $?; do \ +- case '$(am__configure_deps)' in \ +- *$$dep*) \ +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +- && exit 0; \ +- exit 1;; \ +- esac; \ +- done; \ +- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/Makefile'; \ +- cd $(top_srcdir) && \ +- $(AUTOMAKE) --gnu docs/Makefile +-.PRECIOUS: Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- @case '$?' in \ +- *config.status*) \ +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ +- *) \ +- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ +- esac; +- +-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +- +-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +- +-clean-noinstPROGRAMS: +- -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) +-kernel$(EXEEXT): $(kernel_OBJECTS) $(kernel_DEPENDENCIES) +- @rm -f kernel$(EXEEXT) +- $(LINK) $(kernel_LDFLAGS) $(kernel_OBJECTS) $(kernel_LDADD) $(LIBS) +- +-mostlyclean-compile: +- -rm -f *.$(OBJEXT) +- +-distclean-compile: +- -rm -f *.tab.c +- +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kernel-kernel.Po@am__quote@ +- +-.S.o: +- $(CCASCOMPILE) -c $< +- +-.S.obj: +- $(CCASCOMPILE) -c `$(CYGPATH_W) '$<'` +- +-.c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c $< +- +-.c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +- +-kernel-kernel.o: kernel.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(kernel_CFLAGS) $(CFLAGS) -MT kernel-kernel.o -MD -MP -MF "$(DEPDIR)/kernel-kernel.Tpo" -c -o kernel-kernel.o `test -f 'kernel.c' || echo '$(srcdir)/'`kernel.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/kernel-kernel.Tpo" "$(DEPDIR)/kernel-kernel.Po"; else rm -f "$(DEPDIR)/kernel-kernel.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='kernel.c' object='kernel-kernel.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(kernel_CFLAGS) $(CFLAGS) -c -o kernel-kernel.o `test -f 'kernel.c' || echo '$(srcdir)/'`kernel.c +- +-kernel-kernel.obj: kernel.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(kernel_CFLAGS) $(CFLAGS) -MT kernel-kernel.obj -MD -MP -MF "$(DEPDIR)/kernel-kernel.Tpo" -c -o kernel-kernel.obj `if test -f 'kernel.c'; then $(CYGPATH_W) 'kernel.c'; else $(CYGPATH_W) '$(srcdir)/kernel.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/kernel-kernel.Tpo" "$(DEPDIR)/kernel-kernel.Po"; else rm -f "$(DEPDIR)/kernel-kernel.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='kernel.c' object='kernel-kernel.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(kernel_CFLAGS) $(CFLAGS) -c -o kernel-kernel.obj `if test -f 'kernel.c'; then $(CYGPATH_W) 'kernel.c'; else $(CYGPATH_W) '$(srcdir)/kernel.c'; fi` +- +-.texi.info: +- restore=: && backupdir="$(am__leading_dot)am$$$$" && \ +- am__cwd=`pwd` && cd $(srcdir) && \ +- rm -rf $$backupdir && mkdir $$backupdir && \ +- for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \ +- if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \ +- done; \ +- cd "$$am__cwd"; \ +- if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ +- -o $@ $<; \ +- then \ +- rc=0; \ +- cd $(srcdir); \ +- else \ +- rc=$$?; \ +- cd $(srcdir) && \ +- $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \ +- fi; \ +- rm -rf $$backupdir; exit $$rc +- +-.texi.dvi: +- TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ +- MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ +- $(TEXI2DVI) $< +- +-.texi.pdf: +- TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ +- MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ +- $(TEXI2PDF) $< +- +-.texi.html: +- rm -rf $(@:.html=.htp) +- if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ +- -o $(@:.html=.htp) $<; \ +- then \ +- rm -rf $@; \ +- if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \ +- mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \ +- else \ +- if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \ +- rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \ +- exit 1; \ +- fi +-$(srcdir)/grub.info: grub.texi $(srcdir)/version.texi $(grub_TEXINFOS) +-grub.dvi: grub.texi $(srcdir)/version.texi $(grub_TEXINFOS) +-grub.pdf: grub.texi $(srcdir)/version.texi $(grub_TEXINFOS) +-grub.html: grub.texi $(srcdir)/version.texi $(grub_TEXINFOS) +-$(srcdir)/version.texi: @MAINTAINER_MODE_TRUE@ $(srcdir)/stamp-vti +-$(srcdir)/stamp-vti: grub.texi $(top_srcdir)/configure +- @(dir=.; test -f ./grub.texi || dir=$(srcdir); \ +- set `$(SHELL) $(srcdir)/mdate-sh $$dir/grub.texi`; \ +- echo "@set UPDATED $$1 $$2 $$3"; \ +- echo "@set UPDATED-MONTH $$2 $$3"; \ +- echo "@set EDITION $(VERSION)"; \ +- echo "@set VERSION $(VERSION)") > vti.tmp +- @cmp -s vti.tmp $(srcdir)/version.texi \ +- || (echo "Updating $(srcdir)/version.texi"; \ +- cp vti.tmp $(srcdir)/version.texi) +- -@rm -f vti.tmp +- @cp $(srcdir)/version.texi $@ +- +-mostlyclean-vti: +- -rm -f vti.tmp +- +-maintainer-clean-vti: +-@MAINTAINER_MODE_TRUE@ -rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi +-$(srcdir)/multiboot.info: multiboot.texi $(multiboot_TEXINFOS) +-multiboot.dvi: multiboot.texi $(multiboot_TEXINFOS) +-multiboot.pdf: multiboot.texi $(multiboot_TEXINFOS) +-multiboot.html: multiboot.texi $(multiboot_TEXINFOS) +-.dvi.ps: +- $(DVIPS) -o $@ $< +- +-uninstall-info-am: +- $(PRE_UNINSTALL) +- @if (install-info --version && \ +- install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \ +- list='$(INFO_DEPS)'; \ +- for file in $$list; do \ +- relfile=`echo "$$file" | sed 's|^.*/||'`; \ +- echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \ +- install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \ +- done; \ +- else :; fi +- @$(NORMAL_UNINSTALL) +- @list='$(INFO_DEPS)'; \ +- for file in $$list; do \ +- relfile=`echo "$$file" | sed 's|^.*/||'`; \ +- relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \ +- (if cd "$(DESTDIR)$(infodir)"; then \ +- echo " rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9])"; \ +- rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \ +- else :; fi); \ +- done +- +-dist-info: $(INFO_DEPS) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- list='$(INFO_DEPS)'; \ +- for base in $$list; do \ +- case $$base in \ +- $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \ +- esac; \ +- if test -f $$base; then d=.; else d=$(srcdir); fi; \ +- for file in $$d/$$base*; do \ +- relfile=`expr "$$file" : "$$d/\(.*\)"`; \ +- test -f $(distdir)/$$relfile || \ +- cp -p $$file $(distdir)/$$relfile; \ +- done; \ +- done +- +-mostlyclean-aminfo: +- -rm -rf grub.aux grub.cp grub.cps grub.fn grub.ky grub.log grub.pg grub.tmp \ +- grub.toc grub.tp grub.vr grub.dvi grub.pdf grub.ps grub.html \ +- multiboot.aux multiboot.cp multiboot.cps multiboot.fn \ +- multiboot.ky multiboot.log multiboot.pg multiboot.tmp \ +- multiboot.toc multiboot.tp multiboot.vr multiboot.dvi \ +- multiboot.pdf multiboot.ps multiboot.html +- +-maintainer-clean-aminfo: +- @list='$(INFO_DEPS)'; for i in $$list; do \ +- i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \ +- echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \ +- rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \ +- done +-install-man1: $(man1_MANS) $(man_MANS) +- @$(NORMAL_INSTALL) +- test -z "$(man1dir)" || $(mkdir_p) "$(DESTDIR)$(man1dir)" +- @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ +- l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ +- for i in $$l2; do \ +- case "$$i" in \ +- *.1*) list="$$list $$i" ;; \ +- esac; \ +- done; \ +- for i in $$list; do \ +- if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ +- else file=$$i; fi; \ +- ext=`echo $$i | sed -e 's/^.*\\.//'`; \ +- case "$$ext" in \ +- 1*) ;; \ +- *) ext='1' ;; \ +- esac; \ +- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ +- inst=`echo $$inst | sed -e 's/^.*\///'`; \ +- inst=`echo $$inst | sed '$(transform)'`.$$ext; \ +- echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ +- $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \ +- done +-uninstall-man1: +- @$(NORMAL_UNINSTALL) +- @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ +- l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ +- for i in $$l2; do \ +- case "$$i" in \ +- *.1*) list="$$list $$i" ;; \ +- esac; \ +- done; \ +- for i in $$list; do \ +- ext=`echo $$i | sed -e 's/^.*\\.//'`; \ +- case "$$ext" in \ +- 1*) ;; \ +- *) ext='1' ;; \ +- esac; \ +- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ +- inst=`echo $$inst | sed -e 's/^.*\///'`; \ +- inst=`echo $$inst | sed '$(transform)'`.$$ext; \ +- echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \ +- rm -f "$(DESTDIR)$(man1dir)/$$inst"; \ +- done +-install-man8: $(man8_MANS) $(man_MANS) +- @$(NORMAL_INSTALL) +- test -z "$(man8dir)" || $(mkdir_p) "$(DESTDIR)$(man8dir)" +- @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \ +- l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ +- for i in $$l2; do \ +- case "$$i" in \ +- *.8*) list="$$list $$i" ;; \ +- esac; \ +- done; \ +- for i in $$list; do \ +- if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ +- else file=$$i; fi; \ +- ext=`echo $$i | sed -e 's/^.*\\.//'`; \ +- case "$$ext" in \ +- 8*) ;; \ +- *) ext='8' ;; \ +- esac; \ +- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ +- inst=`echo $$inst | sed -e 's/^.*\///'`; \ +- inst=`echo $$inst | sed '$(transform)'`.$$ext; \ +- echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \ +- $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst"; \ +- done +-uninstall-man8: +- @$(NORMAL_UNINSTALL) +- @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \ +- l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ +- for i in $$l2; do \ +- case "$$i" in \ +- *.8*) list="$$list $$i" ;; \ +- esac; \ +- done; \ +- for i in $$list; do \ +- ext=`echo $$i | sed -e 's/^.*\\.//'`; \ +- case "$$ext" in \ +- 8*) ;; \ +- *) ext='8' ;; \ +- esac; \ +- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ +- inst=`echo $$inst | sed -e 's/^.*\///'`; \ +- inst=`echo $$inst | sed '$(transform)'`.$$ext; \ +- echo " rm -f '$(DESTDIR)$(man8dir)/$$inst'"; \ +- rm -f "$(DESTDIR)$(man8dir)/$$inst"; \ +- done +- +-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- mkid -fID $$unique +-tags: TAGS +- +-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) +- tags=; \ +- here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ +- test -n "$$unique" || unique=$$empty_fix; \ +- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique; \ +- fi +-ctags: CTAGS +-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) +- tags=; \ +- here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- test -z "$(CTAGS_ARGS)$$tags$$unique" \ +- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ +- $$tags $$unique +- +-GTAGS: +- here=`$(am__cd) $(top_builddir) && pwd` \ +- && cd $(top_srcdir) \ +- && gtags -i $(GTAGS_ARGS) $$here +- +-distclean-tags: +- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +- +-distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ +- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkdir_p) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ +- if test -d $$d/$$file; then \ +- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ +- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ +- fi; \ +- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ +- else \ +- test -f $(distdir)/$$file \ +- || cp -p $$d/$$file $(distdir)/$$file \ +- || exit 1; \ +- fi; \ +- done +- $(MAKE) $(AM_MAKEFLAGS) \ +- top_distdir="$(top_distdir)" distdir="$(distdir)" \ +- dist-info +-check-am: all-am +-check: check-am +-all-am: Makefile $(INFO_DEPS) $(PROGRAMS) $(SCRIPTS) $(MANS) +-installdirs: +- for dir in "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man8dir)"; do \ +- test -z "$$dir" || $(mkdir_p) "$$dir"; \ +- done +-install: install-am +-install-exec: install-exec-am +-install-data: install-data-am +-uninstall: uninstall-am +- +-install-am: all-am +- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +- +-installcheck: installcheck-am +-install-strip: +- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ +- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ +- `test -z '$(STRIP)' || \ +- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +-mostlyclean-generic: +- +-clean-generic: +- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) +- +-distclean-generic: +- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) +- +-maintainer-clean-generic: +- @echo "This command is intended for maintainers to use" +- @echo "it deletes files that may require special tools to rebuild." +-clean: clean-am +- +-clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am +- +-distclean: distclean-am +- -rm -rf ./$(DEPDIR) +- -rm -f Makefile +-distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-tags +- +-dvi: dvi-am +- +-dvi-am: $(DVIS) +- +-html: html-am +- +-html-am: $(HTMLS) +- +-info: info-am +- +-info-am: $(INFO_DEPS) +- +-install-data-am: install-info-am install-man +- +-install-exec-am: +- +-install-info: install-info-am +- +-install-info-am: $(INFO_DEPS) +- @$(NORMAL_INSTALL) +- test -z "$(infodir)" || $(mkdir_p) "$(DESTDIR)$(infodir)" +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- list='$(INFO_DEPS)'; \ +- for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- esac; \ +- if test -f $$file; then d=.; else d=$(srcdir); fi; \ +- file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \ +- for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \ +- $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \ +- if test -f $$ifile; then \ +- relfile=`echo "$$ifile" | sed 's|^.*/||'`; \ +- echo " $(INSTALL_DATA) '$$ifile' '$(DESTDIR)$(infodir)/$$relfile'"; \ +- $(INSTALL_DATA) "$$ifile" "$(DESTDIR)$(infodir)/$$relfile"; \ +- else : ; fi; \ +- done; \ +- done +- @$(POST_INSTALL) +- @if (install-info --version && \ +- install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \ +- list='$(INFO_DEPS)'; \ +- for file in $$list; do \ +- relfile=`echo "$$file" | sed 's|^.*/||'`; \ +- echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\ +- install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\ +- done; \ +- else : ; fi +-install-man: install-man1 install-man8 +- +-installcheck-am: +- +-maintainer-clean: maintainer-clean-am +- -rm -rf ./$(DEPDIR) +- -rm -f Makefile +-maintainer-clean-am: distclean-am maintainer-clean-aminfo \ +- maintainer-clean-generic maintainer-clean-vti +- +-mostlyclean: mostlyclean-am +- +-mostlyclean-am: mostlyclean-aminfo mostlyclean-compile \ +- mostlyclean-generic mostlyclean-vti +- +-pdf: pdf-am +- +-pdf-am: $(PDFS) +- +-ps: ps-am +- +-ps-am: $(PSS) +- +-uninstall-am: uninstall-info-am uninstall-man +- +-uninstall-man: uninstall-man1 uninstall-man8 +- +-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ +- clean-noinstPROGRAMS ctags dist-info distclean \ +- distclean-compile distclean-generic distclean-tags distdir dvi \ +- dvi-am html html-am info info-am install install-am \ +- install-data install-data-am install-exec install-exec-am \ +- install-info install-info-am install-man install-man1 \ +- install-man8 install-strip installcheck installcheck-am \ +- installdirs maintainer-clean maintainer-clean-aminfo \ +- maintainer-clean-generic maintainer-clean-vti mostlyclean \ +- mostlyclean-aminfo mostlyclean-compile mostlyclean-generic \ +- mostlyclean-vti pdf pdf-am ps ps-am tags uninstall \ +- uninstall-am uninstall-info-am uninstall-man uninstall-man1 \ +- uninstall-man8 +- +- +-@BUILD_EXAMPLE_KERNEL_TRUE@boot.o: multiboot.h +- +-# Cancel the rule %.texi -> %. This rule may confuse make to determine +-# the dependecies. +-.texi: +- +-%.c.texi: %.c $(srcdir)/$(SRC2TEXI) +- $(SHELL) $(srcdir)/$(SRC2TEXI) $(srcdir) $< $@ +- +-%.h.texi: %.h $(srcdir)/$(SRC2TEXI) +- $(SHELL) $(srcdir)/$(SRC2TEXI) $(srcdir) $< $@ +- +-%.S.texi: %.S $(srcdir)/$(SRC2TEXI) +- $(SHELL) $(srcdir)/$(SRC2TEXI) $(srcdir) $< $@ +- +-@MAINTAINER_MODE_TRUE@$(srcdir)/grub.8: ../grub/grub $(srcdir)/$(HELP2MAN) +-@MAINTAINER_MODE_TRUE@ $(PERL) $(srcdir)/$(HELP2MAN) --name="the grub shell" \ +-@MAINTAINER_MODE_TRUE@ --section=8 --output=$@ $< +- +-@MAINTAINER_MODE_TRUE@$(srcdir)/grub-install.8: ../util/grub-install $(srcdir)/$(HELP2MAN) +-@MAINTAINER_MODE_TRUE@ chmod 755 $< +-@MAINTAINER_MODE_TRUE@ $(PERL) $(srcdir)/$(HELP2MAN) --name="install GRUB on your drive" \ +-@MAINTAINER_MODE_TRUE@ --section=8 --output=$@ $< +- +-@MAINTAINER_MODE_TRUE@$(srcdir)/mbchk.1: ../util/mbchk $(srcdir)/$(HELP2MAN) +-@MAINTAINER_MODE_TRUE@ $(PERL) $(srcdir)/$(HELP2MAN) \ +-@MAINTAINER_MODE_TRUE@ --name="check the format of a Multiboot kernel" \ +-@MAINTAINER_MODE_TRUE@ --section=1 --output=$@ $< +- +-@MAINTAINER_MODE_TRUE@$(srcdir)/grub-md5-crypt.8: ../util/grub-md5-crypt $(srcdir)/$(HELP2MAN) +-@MAINTAINER_MODE_TRUE@ chmod 755 $< +-@MAINTAINER_MODE_TRUE@ $(PERL) $(srcdir)/$(HELP2MAN) \ +-@MAINTAINER_MODE_TRUE@ --name="Encrypt a password in MD5 format" \ +-@MAINTAINER_MODE_TRUE@ --section=8 --output=$@ $< +- +-@MAINTAINER_MODE_TRUE@$(srcdir)/grub-terminfo.8: ../util/grub-terminfo $(srcdir)/$(HELP2MAN) +-@MAINTAINER_MODE_TRUE@ chmod 755 $< +-@MAINTAINER_MODE_TRUE@ $(PERL) $(srcdir)/$(HELP2MAN) \ +-@MAINTAINER_MODE_TRUE@ --name="Generate a terminfo command from a terminfo name" \ +-@MAINTAINER_MODE_TRUE@ --section=8 --output=$@ $< +-# Tell versions [3.59,3.63) of GNU make to not export all variables. +-# Otherwise a system limit (for SysV at least) may be exceeded. +-.NOEXPORT: +diff --git a/docs/grub-crypt.8 b/docs/grub-crypt.8 +new file mode 100644 +index 0000000..eb132d7 +--- /dev/null ++++ b/docs/grub-crypt.8 +@@ -0,0 +1,39 @@ ++.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.23. ++.TH GRUB-CRYPT "1" "January 2010" "grub-crypt (GNU GRUB 0.97)" FSF ++.SH NAME ++grub-crypt \- manual page for grub-crypt (GNU GRUB 0.97) ++.SH SYNOPSIS ++.B grub-crypt ++[\fIOPTION\fR]... ++.SH DESCRIPTION ++Encrypt a password. ++.TP ++\fB\-h\fR, \fB\-\-help\fR ++Print this message and exit ++.TP ++\fB\-v\fR, \fB\-\-version\fR ++Print the version information and exit ++.TP ++\fB\-\-md5\fR ++Use MD5 to encrypt the password ++.TP ++\fB\-\-sha\-256\fR ++Use SHA-256 to encrypt the password ++.TP ++\fB\-\-sha\-512\fR ++Use SHA-512 to encrypt the password (default) ++.SH "REPORTING BUGS" ++Report bugs to . ++EOF ++.SH "SEE ALSO" ++The full documentation for ++.B grub-crypt ++is maintained as a Texinfo manual. If the ++.B info ++and ++.B grub-crypt ++programs are properly installed at your site, the command ++.IP ++.B info grub-crypt ++.PP ++should give you access to the complete manual. +diff --git a/docs/grub-install.8 b/docs/grub-install.8 +index ac588a3..accff22 100644 +--- a/docs/grub-install.8 ++++ b/docs/grub-install.8 +@@ -30,6 +30,8 @@ BIOS + .TP + \fB\-\-recheck\fR + probe a device map even if it already exists ++ ++This option is unreliable and its use is strongly discouraged. + .PP + INSTALL_DEVICE can be a GRUB device name or a system device filename. + .PP +diff --git a/docs/grub.8 b/docs/grub.8 +index 92149f7..7a087d6 100644 +--- a/docs/grub.8 ++++ b/docs/grub.8 +@@ -15,7 +15,7 @@ turn on batch mode for non-interactive use + specify stage2 boot_drive [default=0x0] + .TP + \fB\-\-config\-file\fR=\fIFILE\fR +-specify stage2 config_file [default=/boot/grub/menu.lst] ++specify stage2 config_file [default=/boot/grub/grub.conf] + .TP + \fB\-\-device\-map\fR=\fIFILE\fR + use the device map file FILE +diff --git a/docs/grub.info b/docs/grub.info +index f48783c..7692f31 100644 +--- a/docs/grub.info ++++ b/docs/grub.info +@@ -1,5 +1,4 @@ +-This is ../../docs/grub.info, produced by makeinfo version 4.8 from +-../../docs/grub.texi. ++This is grub.info, produced by makeinfo version 4.9 from grub.texi. + + INFO-DIR-SECTION Kernel + START-INFO-DIR-ENTRY +@@ -1147,7 +1146,7 @@ your OS. There's a solution to that - GRUB provides a menu interface + (*note Menu interface::) from which you can select an item (using arrow + keys) that will do everything to boot an OS. + +- To enable the menu, you need a configuration file, `menu.lst' under ++ To enable the menu, you need a configuration file, `grub.conf' under + the boot directory. We'll analyze an example file. + + The file first contains some general settings, the menu interface +@@ -1693,12 +1692,12 @@ There are two ways to specify files, by "absolute file name" and by + + An absolute file name resembles a Unix absolute file name, using `/' + for the directory separator (not `\' as in DOS). One example is +-`(hd0,0)/boot/grub/menu.lst'. This means the file `/boot/grub/menu.lst' +-in the first partition of the first hard disk. If you omit the device +-name in an absolute file name, GRUB uses GRUB's "root device" +-implicitly. So if you set the root device to, say, `(hd1,0)' by the +-command `root' (*note root::), then `/boot/kernel' is the same as +-`(hd1,0)/boot/kernel'. ++`(hd0,0)/boot/grub/grub.conf'. This means the file ++`/boot/grub/grub.conf' in the first partition of the first hard disk. ++If you omit the device name in an absolute file name, GRUB uses GRUB's ++"root device" implicitly. So if you set the root device to, say, ++`(hd1,0)' by the command `root' (*note root::), then `/boot/kernel' is ++the same as `(hd1,0)/boot/kernel'. + +  + File: grub.info, Node: Block list syntax, Prev: File name syntax, Up: Filesystem +@@ -2023,6 +2022,7 @@ Commands usable anywhere in the menu and in the command-line. + * rarp:: Initialize a network device via RARP + * serial:: Set up a serial device + * setkey:: Configure the key map ++* splashimage:: Use a splash image + * terminal:: Choose a terminal + * terminfo:: Define escape sequences for a terminal + * tftpserver:: Specify a TFTP server +@@ -2258,7 +2258,7 @@ File: grub.info, Node: serial, Next: setkey, Prev: rarp, Up: General command + support. See also *Note Serial terminal::. + +  +-File: grub.info, Node: setkey, Next: terminal, Prev: serial, Up: General commands ++File: grub.info, Node: setkey, Next: splashimage, Prev: serial, Up: General commands + + 13.2.13 setkey + -------------- +@@ -2384,9 +2384,20 @@ File: grub.info, Node: setkey, Next: terminal, Prev: serial, Up: General com + ` ' + +  +-File: grub.info, Node: terminal, Next: terminfo, Prev: setkey, Up: General commands ++File: grub.info, Node: splashimage, Next: terminal, Prev: setkey, Up: General commands + +-13.2.14 terminal ++13.2.14 splashimage ++------------------- ++ ++ -- Command: splashimage file ++ Select an image to use as the background image. This should be ++ specified using normal GRUB device naming syntax. The format of ++ the file is a gzipped xpm which is 640x480 with a 14 color palette. ++ ++ ++File: grub.info, Node: terminal, Next: terminfo, Prev: splashimage, Up: General commands ++ ++13.2.15 terminal + ---------------- + + -- Command: terminal [`--dumb'] [`--no-echo'] [`--no-edit'] +@@ -2421,7 +2432,7 @@ File: grub.info, Node: terminal, Next: terminfo, Prev: setkey, Up: General c +  + File: grub.info, Node: terminfo, Next: tftpserver, Prev: terminal, Up: General commands + +-13.2.15 terminfo ++13.2.16 terminfo + ---------------- + + -- Command: terminfo `--name=name' `--cursor-address=seq' +@@ -2439,7 +2450,7 @@ File: grub.info, Node: terminfo, Next: tftpserver, Prev: terminal, Up: Gener +  + File: grub.info, Node: tftpserver, Next: unhide, Prev: terminfo, Up: General commands + +-13.2.16 tftpserver ++13.2.17 tftpserver + ------------------ + + -- Command: tftpserver ipaddr +@@ -2454,7 +2465,7 @@ File: grub.info, Node: tftpserver, Next: unhide, Prev: terminfo, Up: General +  + File: grub.info, Node: unhide, Prev: tftpserver, Up: General commands + +-13.2.17 unhide ++13.2.18 unhide + -------------- + + -- Command: unhide partition +@@ -3405,9 +3416,9 @@ calls with UNIX system calls and libc functions. + grub shell just ignores this option. + + `--config-file=FILE' +- Read the configuration file FILE instead of `/boot/grub/menu.lst'. +- The format is the same as the normal GRUB syntax. See *Note +- Filesystem::, for more information. ++ Read the configuration file FILE instead of ++ `/boot/grub/grub.conf'. The format is the same as the normal GRUB ++ syntax. See *Note Filesystem::, for more information. + + `--boot-drive=DRIVE' + Set the stage2 BOOT_DRIVE to DRIVE. This argument should be an +@@ -3551,8 +3562,9 @@ name. + + `--recheck' + Recheck the device map, even if `/boot/grub/device.map' already +- exists. You should use this option whenever you add/remove a disk +- into/from your computer. ++ exists. ++ ++ This option is unreliable and its use is strongly discouraged. + +  + File: grub.info, Node: Invoking grub-md5-crypt, Next: Invoking grub-terminfo, Prev: Invoking grub-install, Up: Top +@@ -4279,6 +4291,7 @@ Index + * serial: serial. (line 9) + * setkey: setkey. (line 7) + * setup: setup. (line 8) ++* splashimage: splashimage. (line 7) + * terminal: terminal. (line 9) + * terminfo: terminfo. (line 9) + * testload: testload. (line 7) +@@ -4293,163 +4306,164 @@ Index + +  + Tag Table: +-Node: Top1487 +-Node: Introduction3266 +-Node: Overview3643 +-Node: Overview-Footnotes5865 +-Ref: Overview-Footnote-15926 +-Node: History6087 +-Node: Features7208 +-Node: Features-Footnotes12976 +-Ref: Features-Footnote-113037 +-Node: Role of a boot loader13182 +-Node: Role of a boot loader-Footnotes14520 +-Ref: Role of a boot loader-Footnote-114607 +-Node: Naming convention14686 +-Node: Installation17621 +-Node: Creating a GRUB boot floppy19363 +-Node: Installing GRUB natively20181 +-Node: Installing GRUB natively-Footnotes22461 +-Ref: Installing GRUB natively-Footnote-122554 +-Node: Installing GRUB using grub-install22739 +-Node: Making a GRUB bootable CD-ROM25685 +-Node: Making a GRUB bootable CD-ROM-Footnotes27730 +-Ref: Making a GRUB bootable CD-ROM-Footnote-127833 +-Node: Booting27908 +-Node: General boot methods28363 +-Node: Loading an operating system directly29104 +-Node: Chain-loading30408 +-Node: Chain-loading-Footnotes31718 +-Ref: Chain-loading-Footnote-131789 +-Node: OS-specific notes31861 +-Node: GNU/Hurd32237 +-Node: GNU/Linux32856 +-Node: FreeBSD34104 +-Node: NetBSD34617 +-Node: OpenBSD35275 +-Node: DOS/Windows35475 +-Node: SCO UnixWare37301 +-Node: QNX37719 +-Node: Making your system robust37969 +-Node: Booting once-only39294 +-Node: Booting fallback systems41219 +-Node: Configuration44066 +-Node: Network48495 +-Node: General usage of network support48989 +-Node: General usage of network support-Footnotes50850 +-Ref: General usage of network support-Footnote-150959 +-Node: Diskless51027 +-Node: Serial terminal53211 +-Node: Preset Menu55444 +-Node: Security57812 +-Node: Images60620 +-Node: Filesystem63131 +-Node: Device syntax63814 +-Node: File name syntax65308 +-Node: Block list syntax66051 +-Node: Interface66784 +-Node: Command-line interface67661 +-Node: Command-line interface-Footnotes69602 +-Ref: Command-line interface-Footnote-169691 +-Node: Menu interface69786 +-Node: Menu entry editor70796 +-Node: Hidden menu interface71875 +-Node: Commands72452 +-Node: Menu-specific commands73029 +-Node: default74200 +-Node: fallback74678 +-Node: hiddenmenu75229 +-Node: timeout75717 +-Node: title75995 +-Node: General commands76266 +-Node: bootp77579 +-Node: color78058 +-Node: device79532 +-Node: dhcp80104 +-Node: hide80689 +-Node: ifconfig81066 +-Node: pager81642 +-Node: partnew81976 +-Node: parttype82412 +-Node: password82779 +-Node: rarp83598 +-Node: serial83899 +-Node: setkey85172 +-Node: terminal87341 +-Node: terminfo88878 +-Node: tftpserver89565 +-Node: unhide90111 +-Node: Command-line and menu entry commands90486 +-Node: blocklist93017 +-Node: boot93259 +-Node: cat93580 +-Node: chainloader93884 +-Node: cmp94500 +-Node: configfile95051 +-Node: debug95265 +-Node: displayapm95649 +-Node: displaymem95860 +-Node: embed96562 +-Node: embed-Footnotes97096 +-Ref: embed-Footnote-197151 +-Node: find97208 +-Node: fstest97588 +-Node: geometry98273 +-Node: halt98885 +-Node: help99212 +-Node: impsprobe99833 +-Node: initrd100232 +-Node: install100571 +-Node: install-Footnotes103415 +-Ref: install-Footnote-1103474 +-Node: ioprobe103571 +-Node: kernel103896 +-Node: lock105016 +-Node: makeactive105591 +-Node: map105903 +-Node: md5crypt106470 +-Node: module106817 +-Node: modulenounzip107394 +-Node: pause107687 +-Node: quit108101 +-Node: reboot108377 +-Node: read108558 +-Node: root108800 +-Node: rootnoverify109677 +-Node: savedefault110232 +-Node: setup111208 +-Node: testload112274 +-Node: testvbe112884 +-Node: uppermem113255 +-Node: vbeprobe113837 +-Node: Troubleshooting114220 +-Node: Stage1 errors114758 +-Node: Stage1.5 errors116135 +-Node: Stage2 errors116573 +-Node: Invoking the grub shell124033 +-Node: Basic usage124786 +-Node: Installation under UNIX127073 +-Node: Device map128748 +-Node: Invoking grub-install129896 +-Node: Invoking grub-md5-crypt131484 +-Node: Invoking grub-terminfo132133 +-Node: Invoking grub-set-default132899 +-Node: Invoking mbchk134700 +-Node: Obtaining and Building GRUB135214 +-Node: Reporting bugs136631 +-Node: Future139435 +-Node: Internals139926 +-Node: Memory map141149 +-Node: Embedded data142627 +-Node: Filesystem interface144644 +-Node: Command interface148077 +-Node: Bootstrap tricks149392 +-Node: I/O ports detection151541 +-Node: Memory detection151813 +-Node: Low-level disk I/O152105 +-Node: MBR152374 +-Node: Partition table152571 +-Node: Submitting patches152844 +-Node: Index154332 ++Node: Top1465 ++Node: Introduction3244 ++Node: Overview3621 ++Node: Overview-Footnotes5843 ++Ref: Overview-Footnote-15904 ++Node: History6065 ++Node: Features7186 ++Node: Features-Footnotes12954 ++Ref: Features-Footnote-113015 ++Node: Role of a boot loader13160 ++Node: Role of a boot loader-Footnotes14498 ++Ref: Role of a boot loader-Footnote-114585 ++Node: Naming convention14664 ++Node: Installation17599 ++Node: Creating a GRUB boot floppy19341 ++Node: Installing GRUB natively20159 ++Node: Installing GRUB natively-Footnotes22439 ++Ref: Installing GRUB natively-Footnote-122532 ++Node: Installing GRUB using grub-install22717 ++Node: Making a GRUB bootable CD-ROM25663 ++Node: Making a GRUB bootable CD-ROM-Footnotes27708 ++Ref: Making a GRUB bootable CD-ROM-Footnote-127811 ++Node: Booting27886 ++Node: General boot methods28341 ++Node: Loading an operating system directly29082 ++Node: Chain-loading30386 ++Node: Chain-loading-Footnotes31696 ++Ref: Chain-loading-Footnote-131767 ++Node: OS-specific notes31839 ++Node: GNU/Hurd32215 ++Node: GNU/Linux32834 ++Node: FreeBSD34082 ++Node: NetBSD34595 ++Node: OpenBSD35253 ++Node: DOS/Windows35453 ++Node: SCO UnixWare37279 ++Node: QNX37697 ++Node: Making your system robust37947 ++Node: Booting once-only39272 ++Node: Booting fallback systems41197 ++Node: Configuration44044 ++Node: Network48474 ++Node: General usage of network support48968 ++Node: General usage of network support-Footnotes50829 ++Ref: General usage of network support-Footnote-150938 ++Node: Diskless51006 ++Node: Serial terminal53190 ++Node: Preset Menu55423 ++Node: Security57791 ++Node: Images60599 ++Node: Filesystem63110 ++Node: Device syntax63793 ++Node: File name syntax65287 ++Node: Block list syntax66032 ++Node: Interface66765 ++Node: Command-line interface67642 ++Node: Command-line interface-Footnotes69583 ++Ref: Command-line interface-Footnote-169672 ++Node: Menu interface69767 ++Node: Menu entry editor70777 ++Node: Hidden menu interface71856 ++Node: Commands72433 ++Node: Menu-specific commands73010 ++Node: default74181 ++Node: fallback74659 ++Node: hiddenmenu75210 ++Node: timeout75698 ++Node: title75976 ++Node: General commands76247 ++Node: bootp77611 ++Node: color78090 ++Node: device79564 ++Node: dhcp80136 ++Node: hide80721 ++Node: ifconfig81098 ++Node: pager81674 ++Node: partnew82008 ++Node: parttype82444 ++Node: password82811 ++Node: rarp83630 ++Node: serial83931 ++Node: setkey85204 ++Node: splashimage87376 ++Node: terminal87754 ++Node: terminfo89296 ++Node: tftpserver89983 ++Node: unhide90529 ++Node: Command-line and menu entry commands90904 ++Node: blocklist93435 ++Node: boot93677 ++Node: cat93998 ++Node: chainloader94302 ++Node: cmp94918 ++Node: configfile95469 ++Node: debug95683 ++Node: displayapm96067 ++Node: displaymem96278 ++Node: embed96980 ++Node: embed-Footnotes97514 ++Ref: embed-Footnote-197569 ++Node: find97626 ++Node: fstest98006 ++Node: geometry98691 ++Node: halt99303 ++Node: help99630 ++Node: impsprobe100251 ++Node: initrd100650 ++Node: install100989 ++Node: install-Footnotes103833 ++Ref: install-Footnote-1103892 ++Node: ioprobe103989 ++Node: kernel104314 ++Node: lock105434 ++Node: makeactive106009 ++Node: map106321 ++Node: md5crypt106888 ++Node: module107235 ++Node: modulenounzip107812 ++Node: pause108105 ++Node: quit108519 ++Node: reboot108795 ++Node: read108976 ++Node: root109218 ++Node: rootnoverify110095 ++Node: savedefault110650 ++Node: setup111626 ++Node: testload112692 ++Node: testvbe113302 ++Node: uppermem113673 ++Node: vbeprobe114255 ++Node: Troubleshooting114638 ++Node: Stage1 errors115176 ++Node: Stage1.5 errors116553 ++Node: Stage2 errors116991 ++Node: Invoking the grub shell124451 ++Node: Basic usage125204 ++Node: Installation under UNIX127492 ++Node: Device map129167 ++Node: Invoking grub-install130315 ++Node: Invoking grub-md5-crypt131884 ++Node: Invoking grub-terminfo132533 ++Node: Invoking grub-set-default133299 ++Node: Invoking mbchk135100 ++Node: Obtaining and Building GRUB135614 ++Node: Reporting bugs137031 ++Node: Future139835 ++Node: Internals140326 ++Node: Memory map141549 ++Node: Embedded data143027 ++Node: Filesystem interface145044 ++Node: Command interface148477 ++Node: Bootstrap tricks149792 ++Node: I/O ports detection151941 ++Node: Memory detection152213 ++Node: Low-level disk I/O152505 ++Node: MBR152774 ++Node: Partition table152971 ++Node: Submitting patches153244 ++Node: Index154732 +  + End Tag Table +diff --git a/docs/grub.texi b/docs/grub.texi +index 51d330a..5fd324d 100644 +--- a/docs/grub.texi ++++ b/docs/grub.texi +@@ -21,6 +21,7 @@ + @dircategory Kernel + @direntry + * GRUB: (grub). The GRand Unified Bootloader ++* grub-crypt: (grub)Invoking grub-crypt. Encrypt a password + * grub-install: (grub)Invoking grub-install. Install GRUB on your drive + * grub-md5-crypt: (grub)Invoking grub-md5-crypt. Encrypt a password + in MD5 format +@@ -115,8 +116,9 @@ This edition documents version @value{VERSION}. + * Commands:: The list of available builtin commands + * Troubleshooting:: Error messages produced by GRUB + * Invoking the grub shell:: How to use the grub shell ++* Invoking grub-crypt:: How to generate an encrypted password + * Invoking grub-install:: How to use the GRUB installer +-* Invoking grub-md5-crypt:: How to generate a cryptic password ++* Invoking grub-md5-crypt:: How to generate an MD5-encrypted password + * Invoking grub-terminfo:: How to generate a terminfo command + * Invoking grub-set-default:: How to set a default boot entry + * Invoking mbchk:: How to use the Multiboot checker +@@ -1265,7 +1267,7 @@ OS. There's a solution to that - GRUB provides a menu interface + keys) that will do everything to boot an OS. + + To enable the menu, you need a configuration file, +-@file{menu.lst} under the boot directory. We'll analyze an example ++@file{grub.conf} under the boot directory. We'll analyze an example + file. + + The file first contains some general settings, the menu interface +@@ -1685,27 +1687,17 @@ run the command @command{password} in your configuration file + (@pxref{password}), like this: + + @example +-password --md5 PASSWORD ++password --encrypted PASSWORD + @end example + + If this is specified, GRUB disallows any interactive control, until you + press the key @key{p} and enter a correct password. The option +-@option{--md5} tells GRUB that @samp{PASSWORD} is in MD5 format. If it ++@option{--encrypted} tells GRUB that @samp{PASSWORD} is encrypted format. If it + is omitted, GRUB assumes the @samp{PASSWORD} is in clear text. + +-You can encrypt your password with the command @command{md5crypt} +-(@pxref{md5crypt}). For example, run the grub shell (@pxref{Invoking the +-grub shell}), and enter your password: +- +-@example +-@group +-grub> md5crypt +-Password: ********** +-Encrypted: $1$U$JK7xFegdxWH6VuppCUSIb. +-@end group +-@end example +- +-Then, cut and paste the encrypted password to your configuration file. ++You can encrypt your password with the program @command{grub-crypt} ++(@pxref{Invoking grub-crypt}). Then, cut and paste the encrypted password to ++your configuration file. + + Also, you can specify an optional argument to @command{password}. See + this example: +@@ -1882,8 +1874,8 @@ There are two ways to specify files, by @dfn{absolute file name} and by + + An absolute file name resembles a Unix absolute file name, using + @samp{/} for the directory separator (not @samp{\} as in DOS). One +-example is @samp{(hd0,0)/boot/grub/menu.lst}. This means the file +-@file{/boot/grub/menu.lst} in the first partition of the first hard ++example is @samp{(hd0,0)/boot/grub/grub.conf}. This means the file ++@file{/boot/grub/grub.conf} in the first partition of the first hard + disk. If you omit the device name in an absolute file name, GRUB uses + GRUB's @dfn{root device} implicitly. So if you set the root device to, + say, @samp{(hd1,0)} by the command @command{root} (@pxref{root}), then +@@ -2199,6 +2191,7 @@ Commands usable anywhere in the menu and in the command-line. + * rarp:: Initialize a network device via RARP + * serial:: Set up a serial device + * setkey:: Configure the key map ++* splashimage:: Use a splash image + * terminal:: Choose a terminal + * terminfo:: Define escape sequences for a terminal + * tftpserver:: Specify a TFTP server +@@ -2398,7 +2391,7 @@ is the new partition type and must be a number in the range 0-0xff. + @node password + @subsection password + +-@deffn Command password [@option{--md5}] passwd [new-config-file] ++@deffn Command password [@option{--md5}] [@option{--encrypted}] passwd [new-config-file] + If used in the first section of a menu file, disable all interactive + editing control (menu entry editor and command-line) and entries + protected by the command @command{lock}. If the password @var{passwd} is +@@ -2408,7 +2401,9 @@ specified. Otherwise, GRUB will just unlock the privileged instructions. + You can also use this command in the script section, in which case it + will ask for the password, before continuing. The option + @option{--md5} tells GRUB that @var{passwd} is encrypted with +-@command{md5crypt} (@pxref{md5crypt}). ++@command{md5crypt} (@pxref{md5crypt}), the option @option{--encrypted} ++tells GRUB that @var{passwd} is using one of the crypt formats (GRUB currently ++supports MD5, SHA-256 and SHA-512 encryption). + @end deffn + + +@@ -2578,6 +2573,16 @@ character each of the symbols corresponds: + @end deffn + + ++@node splashimage ++@subsection splashimage ++ ++@deffn Command splashimage file ++Select an image to use as the background image. This should be ++specified using normal GRUB device naming syntax. The format of the ++file is a gzipped xpm which is 640x480 with a 14 color palette. ++@end deffn ++ ++ + @node terminal + @subsection terminal + +@@ -3542,7 +3547,7 @@ ignores this option. + + @item --config-file=@var{file} + Read the configuration file @var{file} instead of +-@file{/boot/grub/menu.lst}. The format is the same as the normal GRUB ++@file{/boot/grub/grub.conf}. The format is the same as the normal GRUB + syntax. See @ref{Filesystem}, for more information. + + @item --boot-drive=@var{drive} +@@ -3653,6 +3658,31 @@ comments in the file if needed, as the grub shell assumes that a line is + just a comment if the first character is @samp{#}. + + ++@node Invoking grub-crypt ++@chapter Invoking grub-crypt ++ ++The program @command{grub-crypt} encrypts a password in one of the specified ++formats. Passwords encrypted by this program can be used with the ++command @command{password} (@pxref{password}). ++ ++@command{grub-crypt} accepts the following options: ++ ++@table @option ++@item --help ++Print a summary of the command-line options and exit. ++ ++@item --version ++Print the version information and exit. ++ ++@item --md5 ++Use MD5 for password encryption. ++@item --sha-256 ++Use SHA-256 for password encryption. ++@item --sha-512 ++Use SHA-512 for password encryption. This is the default. ++@end table ++ ++ + @node Invoking grub-install + @chapter Invoking grub-install + +@@ -3702,8 +3732,9 @@ Use @var{file} as the grub shell. You can append arbitrary options to + + @item --recheck + Recheck the device map, even if @file{/boot/grub/device.map} already +-exists. You should use this option whenever you add/remove a disk +-into/from your computer. ++exists. ++ ++This option is unreliable and its use is strongly discouraged. + @end table + + +diff --git a/docs/stamp-vti b/docs/stamp-vti +index b97de24..eb5144d 100644 +--- a/docs/stamp-vti ++++ b/docs/stamp-vti +@@ -1,4 +1,4 @@ +-@set UPDATED 8 May 2005 +-@set UPDATED-MONTH May 2005 ++@set UPDATED 7 August 2007 ++@set UPDATED-MONTH August 2007 + @set EDITION 0.97 + @set VERSION 0.97 +diff --git a/docs/version.texi b/docs/version.texi +index b97de24..eb5144d 100644 +--- a/docs/version.texi ++++ b/docs/version.texi +@@ -1,4 +1,4 @@ +-@set UPDATED 8 May 2005 +-@set UPDATED-MONTH May 2005 ++@set UPDATED 7 August 2007 ++@set UPDATED-MONTH August 2007 + @set EDITION 0.97 + @set VERSION 0.97 +diff --git a/efi/.gitignore b/efi/.gitignore +new file mode 100644 +index 0000000..a0e4294 +--- /dev/null ++++ b/efi/.gitignore +@@ -0,0 +1,7 @@ ++.deps ++Makefile.in ++Makefile ++*.a ++*.o ++*.so ++*.efi +diff --git a/efi/Makefile.am b/efi/Makefile.am +new file mode 100644 +index 0000000..1d5bd15 +--- /dev/null ++++ b/efi/Makefile.am +@@ -0,0 +1,76 @@ ++ ++pkglibdir = $(libdir)/$(PACKAGE)/$(host_cpu)-$(host_vendor) ++pkgdatadir = $(datadir)/$(PACKAGE)/$(host_cpu)-$(host_vendor) ++ ++if PLATFORM_EFI ++ ++if NETBOOT_SUPPORT ++NETBOOT_FLAGS = -I$(top_srcdir)/netboot -DSUPPORT_NETBOOT=1 ++else ++NETBOOT_FLAGS = ++endif ++ ++if SERIAL_SUPPORT ++SERIAL_FLAGS = -DSUPPORT_SERIAL=1 ++else ++SERIAL_FLAGS = ++endif ++ ++if HERCULES_SUPPORT ++HERCULES_FLAGS = -DSUPPORT_HERCULES=1 ++else ++HERCULES_FLAGS = ++endif ++ ++if GRAPHICS_SUPPORT ++GRAPHICS_FLAGS = -DSUPPORT_GRAPHICS=1 ++else ++GRAPHICS_FLAGS = ++endif ++ ++GRUBEFI_FORMAT = efi-app-$(EFI_ARCH) ++GRUBSO_LD_SCRIPT = @GNUEFI_LDS@ ++GRUBSO_LD_FLAGS = -T $(GRUBSO_LD_SCRIPT) -nostdlib -shared -Bsymbolic ++ ++GRUBSO_OBJS = efimain.o ++GRUBSO_LIBS = @GNUEFI_CRT0@ $(top_srcdir)/stage2/libstage2.a \ ++ libgrubefi.a @LIBGCC@ ++ ++if NETBOOT_SUPPORT ++GRUBSO_LIBS += $(top_srcdir)/netboot/libdrivers.a ++endif ++ ++pkgdata_DATA = grub.efi ++ ++grub.efi: grub.so ++ $(OBJCOPY) -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel \ ++ -j .rela -j .reloc --target=$(GRUBEFI_FORMAT) $^ $@ ++ ++grub.so: $(GRUBSO_OBJS) $(GRUBSO_LIBS) @LIBGNUEFI@ ++ $(LD) -o $@ $(GRUBSO_LD_FLAGS) $^ ++ echo '-------------- unresolved symbols ---------------------' ++ ! nm $@ | grep -iw u ++ echo '-------------------------------------------------------' ++ ++crt0-efi.o: $(EFI_ARCH)/crt0-efi.S ++ $(CC) -o $@ -c $(libgrubefi_a_CFLAGS) $^ ++ ++efimain.o: efimain.c ++ $(CC) -o $@ -c $(libgrubefi_a_CFLAGS) $^ ++ ++clean-local: ++ -rm -rf grub.so grub.efi ++ ++RELOC_FLAGS = $(STAGE2_CFLAGS) -I$(top_srcdir)/stage1 \ ++ -I$(top_srcdir)/lib -I. -I$(top_srcdir) -I$(top_srcdir)/stage2 \ ++ -fno-builtin $(NETBOOT_FLAGS) $(SERIAL_FLAGS) \ ++ $(HERCULES_FLAGS) $(GRAPHICS_FLAGS) ++ ++noinst_LIBRARIES = libgrubefi.a ++libgrubefi_a_SOURCES = $(EFI_ARCH)/callwrap.S eficore.c efimm.c efimisc.c \ ++ eficon.c efidisk.c graphics.c efigraph.c efiuga.c efidp.c \ ++ font_8x16.c efiserial.c $(EFI_ARCH)/loader/linux.c efichainloader.c \ ++ xpm.c pxe.c efitftp.c ++libgrubefi_a_CFLAGS = $(RELOC_FLAGS) -nostdinc ++ ++endif +diff --git a/efi/byteswap.h b/efi/byteswap.h +new file mode 100644 +index 0000000..5a057c4 +--- /dev/null ++++ b/efi/byteswap.h +@@ -0,0 +1,37 @@ ++#ifndef BYTESWAP_H ++#define BYTESWAP_H 1 ++ ++#if defined(__i386__) ++#define LITTLE_ENDIAN 1 ++#elif defined(__x86_64__) ++#define LITTLE_ENDIAN 1 ++#else ++#error endian not defined ++#endif ++ ++#define bswap_16(x) \ ++ ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)) ++ ++#define bswap_32(x) \ ++ ((((x) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >> 8) | \ ++ (((x) & 0x0000ff00) << 8) | (((x) & 0x000000ff) << 24)) ++ ++static inline grub_efi_uint16_t htons(grub_efi_uint16_t hostshort) ++{ ++#ifdef LITTLE_ENDIAN ++ return bswap_16(hostshort); ++#else ++ return hostshort; ++#endif ++} ++ ++static inline grub_efi_uint32_t htonl(grub_efi_uint32_t hostshort) ++{ ++#ifdef LITTLE_ENDIAN ++ return bswap_32(hostshort); ++#else ++ return hostshort; ++#endif ++} ++ ++#endif /* BYTESWAP_H */ +diff --git a/efi/dhcp.h b/efi/dhcp.h +new file mode 100644 +index 0000000..a82a522 +--- /dev/null ++++ b/efi/dhcp.h +@@ -0,0 +1,133 @@ ++#ifndef DHCP_H ++#define DHCP_H 1 ++ ++#include "pxe.h" ++ ++#define EFI_DHCP4_PROTOCOL_GUID \ ++{ 0x8a219718, 0x4ef5, 0x4761, {0x91,0xc8,0xc0,0xf0,0x4b,0xda,0x9e,0x56} } ++static grub_efi_guid_t DHCP4Protocol = EFI_DHCP4_PROTOCOL_GUID; ++ ++#define EFI_DHCP4_SERVICE_BINDING_PROTOCOL_GUID \ ++{ 0x9d9a39d8, 0xbd42, 0x4a73, {0xa4,0xd5,0x8e,0xe9,0x4b,0xe1,0x13,0x80} } ++static grub_efi_guid_t DHCP4SbProtocol = EFI_DHCP4_SERVICE_BINDING_PROTOCOL_GUID; ++ ++#define EFI_PXE_DHCP4_PROTOCOL_GUID \ ++{ 0x03c4e624, 0xac28, 0x11d3, {0x9a,0x2d,0x00,0x90,0x29,0x3f,0xc1,0x4d} } ++static grub_efi_guid_t PxeDHCP4Protocol = EFI_PXE_DHCP4_PROTOCOL_GUID; ++ ++ ++typedef EFI_STATUS (*EFI_DHCP4_GET_MODE_DATA)(); ++typedef EFI_STATUS (*EFI_DHCP4_CONFIGURE)(); ++typedef EFI_STATUS (*EFI_DHCP4_START)(); ++typedef EFI_STATUS (*EFI_DHCP4_RENEW_REBIND)(); ++typedef EFI_STATUS (*EFI_DHCP4_RELEASE)(); ++typedef EFI_STATUS (*EFI_DHCP4_STOP)(); ++typedef EFI_STATUS (*EFI_DHCP4_BUILD)(); ++typedef EFI_STATUS (*EFI_DHCP4_TRANSMIT_RECIEVE)(); ++typedef EFI_STATUS (*EFI_DHCP4_PARSE)(); ++ ++typedef struct _EFI_DHCP4_PROTOCOL { ++ EFI_DHCP4_GET_MODE_DATA GetModeData; ++ EFI_DHCP4_CONFIGURE Configure; ++ EFI_DHCP4_START Start; ++ EFI_DHCP4_RENEW_REBIND RenewRebind; ++ EFI_DHCP4_RELEASE Release; ++ EFI_DHCP4_STOP Stop; ++ EFI_DHCP4_BUILD Build; ++ EFI_DHCP4_TRANSMIT_RECIEVE TransmitReceive; ++ EFI_DHCP4_PARSE Parse; ++} EFI_DHCP4_PROTOCOL; ++ ++typedef enum { ++ Dhcp4Stopped, ++ Dhcp4Init, ++ Dhcp4Selecting, ++ Dhcp4Requesting, ++ Dhcp4Bound, ++ Dhcp4Renewing, ++ Dhcp4Rebinding, ++ Dhcp4InitReboot, ++ Dhcp4Rebooting, ++} EFI_DHCP4_STATE; ++ ++typedef enum { ++ Dhcp4SendDiscover = 0x1, ++ Dhcp4RcvdOffer, ++ Dhcp4SelectOffer, ++ Dhcp4SendRequest, ++ Dhcp4RcvdAck, ++ Dhcp4RcvdNak, ++ Dhcp4SendDecline, ++ Dhcp4BoundCompleted, ++ Dhcp4EnterRenewing, ++ Dhcp4EnterRebinding, ++ Dhcp4AddressLost, ++ Dhcp4Fail, ++} EFI_DHCP4_EVENT; ++ ++typedef struct { ++ grub_efi_uint8_t OpCode; ++ grub_efi_uint8_t HwType; ++ grub_efi_uint8_t HwAddrLen; ++ grub_efi_uint8_t Hops; ++ grub_efi_uint32_t xid; ++ grub_efi_uint16_t Seconds; ++ grub_efi_uint16_t reserved; ++ EFI_IPv4_ADDRESS ClientAddr; ++ EFI_IPv4_ADDRESS YourAddr; ++ EFI_IPv4_ADDRESS ServerAddr; ++ EFI_IPv4_ADDRESS GatewayAddr; ++ grub_efi_uint8_t ClientHwAddr[16]; ++ char ServerName[64]; ++ char BootFileName[128]; ++} EFI_DHCP4_HEADER; ++ ++typedef struct { ++ grub_efi_uint32_t Size; ++ grub_efi_uint32_t Length; ++ struct { ++ EFI_DHCP4_HEADER Header; ++ grub_efi_uint32_t Magik; ++ grub_efi_uint8_t option[]; ++ } Dhcp4; ++} EFI_DHCP4_PACKET; ++ ++typedef struct { ++ grub_efi_uint8_t OpCode; ++ grub_efi_uint8_t Length; ++ grub_efi_uint8_t Data[1]; ++} EFI_DHCP4_PACKET_OPTION; ++ ++typedef EFI_STATUS (*EFI_DHCP4_CALLBACK) ( ++ EFI_DHCP4_PROTOCOL *This, ++ void *Context, ++ EFI_DHCP4_STATE CurrentState, ++ EFI_DHCP4_EVENT Dhcp4Event, ++ EFI_DHCP4_PACKET *Packet, ++ EFI_DHCP4_PACKET **NewPacket); ++ ++typedef struct { ++ grub_efi_uint32_t DiscoverTryCount; ++ grub_efi_uint32_t *DiscoverTimeout; ++ grub_efi_uint32_t RequestTryCount; ++ grub_efi_uint32_t *RequestTimeout; ++ EFI_IPv4_ADDRESS ClientAddress; ++ EFI_DHCP4_CALLBACK Dhcp4Callback; ++ void *CallbackContext; ++ grub_efi_uint32_t OptionCount; ++ EFI_DHCP4_PACKET_OPTION **OptionList; ++} EFI_DHCP4_CONFIG_DATA; ++ ++typedef struct { ++ EFI_DHCP4_STATE State; ++ EFI_DHCP4_CONFIG_DATA ConfigData; ++ EFI_IPv4_ADDRESS ClientAddress; ++ EFI_MAC_ADDRESS ClientMacAddress; ++ EFI_IPv4_ADDRESS ServerAddress; ++ EFI_IPv4_ADDRESS RouterAddress; ++ EFI_IPv4_ADDRESS SubnetMask; ++ grub_efi_uint32_t LeaseTime; ++ EFI_DHCP4_PACKET *ReplyPacket; ++} EFI_DHCP4_MODE_DATA; ++ ++#endif /* DHCP_H */ +diff --git a/efi/efichainloader.c b/efi/efichainloader.c +new file mode 100644 +index 0000000..016636c +--- /dev/null ++++ b/efi/efichainloader.c +@@ -0,0 +1,265 @@ ++/* efichainloader.c - boot another boot loader */ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2002,2004,2006 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include ++ ++#define grub_file_size() filemax ++ ++static grub_efi_physical_address_t address; ++static grub_efi_uintn_t pages; ++static grub_efi_device_path_t *file_path; ++static grub_efi_handle_t image_handle; ++ ++static int ++grub_chainloader_unload (void) ++{ ++ grub_efi_boot_services_t *b; ++ ++ b = grub_efi_system_table->boot_services; ++ Call_Service_1 (b->unload_image, image_handle); ++ Call_Service_2 (b->free_pages, address, pages); ++ grub_free (file_path); ++ ++ return 0; ++} ++ ++static int ++grub_chainloader_boot (void) ++{ ++ grub_efi_boot_services_t *b; ++ grub_efi_status_t status; ++ grub_efi_uintn_t exit_data_size = 0; ++ grub_efi_char16_t *exit_data = NULL; ++ ++ b = grub_efi_system_table->boot_services; ++ status = Call_Service_3 (b->start_image, image_handle, ++ &exit_data_size, &exit_data); ++ if (status != GRUB_EFI_SUCCESS) ++ { ++ if (exit_data) ++ { ++ char *buf; ++ ++ buf = grub_malloc (exit_data_size * 4 + 1); ++ if (buf) ++ { ++ *grub_utf16_to_utf8 ((grub_uint8_t *) buf, ++ exit_data, exit_data_size) = 0; ++ ++ grub_printf (buf); ++ grub_free (buf); ++ } ++ else ++ grub_printf ("unknown error\n"); ++ } ++ errnum = ERR_UNRECOGNIZED; ++ } ++ ++ if (exit_data) ++ Call_Service_1 (b->free_pool, exit_data); ++ ++ grub_chainloader_unload (); ++ ++ return 0; ++} ++ ++static void ++copy_file_path (grub_efi_file_path_device_path_t *fp, ++ const char *str, grub_efi_uint16_t len) ++{ ++ grub_efi_char16_t *p; ++ grub_efi_uint16_t size; ++ ++ fp->header.type = GRUB_EFI_MEDIA_DEVICE_PATH_TYPE; ++ fp->header.subtype = GRUB_EFI_FILE_PATH_DEVICE_PATH_SUBTYPE; ++ size = len * sizeof (grub_efi_char16_t) + sizeof (*fp); ++ fp->header.length[0] = (grub_efi_uint8_t) (size & 0xff); ++ fp->header.length[1] = (grub_efi_uint8_t) (size >> 8); ++ for (p = fp->path_name; len > 0; len--, p++, str++) ++ { ++ *p = (grub_efi_char16_t) (*str == '/' ? '\\' : *str); ++ } ++} ++ ++static grub_efi_device_path_t * ++make_file_path (const char *filename) ++{ ++ char *dir_start; ++ char *dir_end; ++ grub_size_t size; ++ grub_efi_device_path_t *d; ++ ++ dir_start = grub_strchr (filename, ')'); ++ if (! dir_start) ++ dir_start = (char *) filename; ++ else ++ dir_start++; ++ ++ dir_end = grub_strrchr (dir_start, '/'); ++ if (! dir_end) ++ { ++ errnum = ERR_BAD_FILENAME; ++ grub_printf ("invalid EFI file path"); ++ return 0; ++ } ++ ++ size = 0; ++ file_path = grub_malloc ((grub_strlen (dir_start) + 1) ++ * sizeof (grub_efi_char16_t) ++ + sizeof (grub_efi_file_path_device_path_t) * 2); ++ if (! file_path) ++ return 0; ++ ++ /* Fill the file path for the directory. */ ++ d = (grub_efi_device_path_t *) file_path; ++ ++ if (dir_end - dir_start) ++ { ++ copy_file_path ((grub_efi_file_path_device_path_t *) d, ++ dir_start, dir_end - dir_start); ++ d = GRUB_EFI_NEXT_DEVICE_PATH (d); ++ /* Fill the file path for the file. */ ++ copy_file_path ((grub_efi_file_path_device_path_t *) d, ++ dir_end + 1, grub_strlen (dir_end + 1)); ++ } ++ else ++ { ++ /* Fill the file path for the file. */ ++ copy_file_path ((grub_efi_file_path_device_path_t *) d, ++ dir_end, grub_strlen (dir_end)); ++ } ++ ++ /* Fill the end of device path nodes. */ ++ d = GRUB_EFI_NEXT_DEVICE_PATH (d); ++ d->type = GRUB_EFI_END_DEVICE_PATH_TYPE; ++ d->subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE; ++ d->length[0] = sizeof (*d); ++ d->length[1] = 0; ++ ++ return file_path; ++} ++ ++int ++grub_chainloader (char *filename) ++{ ++ grub_ssize_t size; ++ grub_efi_status_t status; ++ grub_efi_boot_services_t *b; ++ grub_efi_handle_t dev_handle = 0; ++ grub_efi_loaded_image_t *loaded_image; ++ ++ /* Initialize some global variables. */ ++ address = 0xffffffff; ++ image_handle = 0; ++ ++ b = grub_efi_system_table->boot_services; ++ ++ if (! grub_open (filename)) ++ goto fail1; ++ ++ dev_handle = grub_efidisk_get_current_bdev_handle (); ++ if (! dev_handle) ++ { ++ errnum = ERR_UNRECOGNIZED; ++ grub_printf ("not a valid root device\n"); ++ goto fail; ++ } ++ ++ file_path = make_file_path (filename); ++ if (! file_path) ++ goto fail; ++ ++ grub_printf ("file path: "); ++ grub_efi_print_device_path (file_path); ++ ++ size = grub_file_size (); ++ pages = (((grub_efi_uintn_t) size + ((1 << 12) - 1)) >> 12); ++ ++ status = Call_Service_4 (b->allocate_pages, GRUB_EFI_ALLOCATE_ANY_PAGES, ++ GRUB_EFI_LOADER_CODE, pages, &address); ++ if (status != GRUB_EFI_SUCCESS) ++ { ++ errnum = ERR_UNRECOGNIZED; ++ grub_printf ("cannot allocate %u pages", pages); ++ goto fail; ++ } ++ ++ if (grub_read ((void *) ((grub_addr_t) address), size) != size) ++ { ++ if (errnum == ERR_NONE) ++ { ++ errnum = ERR_UNRECOGNIZED; ++ grub_printf ("too small"); ++ } ++ goto fail; ++ } ++ ++ status = Call_Service_6 (b->load_image, 0, grub_efi_image_handle, file_path, ++ (void *) ((grub_addr_t) address), size, ++ &image_handle); ++ if (status != GRUB_EFI_SUCCESS) ++ { ++ errnum = ERR_UNRECOGNIZED; ++ if (status == GRUB_EFI_OUT_OF_RESOURCES) ++ grub_printf ("out of resources"); ++ else ++ grub_printf ("cannot load image"); ++ ++ goto fail; ++ } ++ ++ /* LoadImage does not set a device handler when the image is ++ loaded from memory, so it is necessary to set it explicitly here. ++ This is a mess. */ ++ loaded_image = grub_efi_get_loaded_image (image_handle); ++ if (! loaded_image) ++ { ++ errnum = ERR_UNRECOGNIZED; ++ grub_printf ("no loaded image available"); ++ goto fail; ++ } ++ loaded_image->device_handle = dev_handle; ++ ++ grub_close (); ++ return KERNEL_TYPE_CHAINLOADER; ++ ++ fail: ++ grub_close (); ++ fail1: ++ if (address) ++ b->free_pages (address, pages); ++ ++ return KERNEL_TYPE_NONE; ++} ++ ++/* calls for direct boot-loader chaining */ ++void ++chain_stage1 (unsigned long segment, unsigned long offset, ++ unsigned long part_table_addr) ++{ ++ grub_chainloader_boot (); ++ for (;;); ++} +diff --git a/efi/eficon.c b/efi/eficon.c +new file mode 100644 +index 0000000..037f050 +--- /dev/null ++++ b/efi/eficon.c +@@ -0,0 +1,306 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2006 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++ ++static int ++grub_console_standard_color = GRUB_EFI_TEXT_ATTR (GRUB_EFI_YELLOW, ++ GRUB_EFI_BACKGROUND_BLACK); ++static int ++grub_console_normal_color = GRUB_EFI_TEXT_ATTR (GRUB_EFI_LIGHTGRAY, ++ GRUB_EFI_BACKGROUND_BLACK); ++static int ++grub_console_highlight_color = GRUB_EFI_TEXT_ATTR (GRUB_EFI_BLACK, ++ GRUB_EFI_BACKGROUND_LIGHTGRAY); ++ ++static int read_key = -1; ++ ++void ++console_putchar (int c) ++{ ++ grub_efi_char16_t str[2]; ++ grub_efi_simple_text_output_interface_t *o; ++ ++ o = grub_efi_system_table->con_out; ++ ++ switch (c) ++ { ++ case DISP_LEFT: ++ c = '<'; ++ break; ++ ++ case DISP_UP: ++ c = '^'; ++ break; ++ ++ case DISP_RIGHT: ++ c = '>'; ++ break; ++ ++ case DISP_DOWN: ++ c = 'v'; ++ break; ++ ++ case DISP_HORIZ: ++ c = '-'; ++ break; ++ ++ case DISP_VERT: ++ c = '|'; ++ break; ++ ++ case DISP_UL: ++ case DISP_UR: ++ case DISP_LL: ++ case DISP_LR: ++ c = '+'; ++ break; ++ } ++ ++ /* For now, do not try to use a surrogate pair. */ ++ if (c > 0xffff) ++ c = '?'; ++ ++ str[0] = (grub_efi_char16_t) (c & 0xffff); ++ str[1] = 0; ++ ++ /* Should this test be cached? */ ++ if (c > 0x7f && Call_Service_2 (o->test_string, o, str) != GRUB_EFI_SUCCESS) ++ return; ++ ++ Call_Service_2 (o->output_string, o, str); ++} ++ ++int ++console_checkkey (void) ++{ ++ grub_efi_simple_input_interface_t *i; ++ grub_efi_input_key_t key; ++ grub_efi_status_t status; ++ ++ if (read_key >= 0) ++ return 1; ++ ++ i = grub_efi_system_table->con_in; ++ status = Call_Service_2 (i->read_key_stroke ,i, &key); ++#if 0 ++ switch (status) ++ { ++ case GRUB_EFI_SUCCESS: ++ { ++ int xy; ++ ++ xy = console_getxy (); ++ console_gotoxy (0, 0); ++ grub_printf ("scan_code=%x,unicode_char=%x ", ++ (unsigned) key.scan_code, ++ (unsigned) key.unicode_char); ++ console_gotoxy (xy >> 8, xy & 0xff); ++ } ++ break; ++ ++ case GRUB_EFI_NOT_READY: ++ grub_printf ("not ready "); ++ break; ++ ++ default: ++ grub_printf ("device error "); ++ break; ++ } ++#endif ++ ++ if (status == GRUB_EFI_SUCCESS) ++ { ++ switch (key.scan_code) ++ { ++ case 0x00: ++ read_key = key.unicode_char; ++ break; ++ case 0x01: ++ read_key = 16; ++ break; ++ case 0x02: ++ read_key = 14; ++ break; ++ case 0x03: ++ read_key = 6; ++ break; ++ case 0x04: ++ read_key = 2; ++ break; ++ case 0x05: ++ read_key = 1; ++ break; ++ case 0x06: ++ read_key = 5; ++ break; ++ case 0x07: ++ break; ++ case 0x08: ++ read_key = 4; ++ break; ++ case 0x09: ++ break; ++ case 0x0a: ++ break; ++ case 0x17: ++ read_key = '\e'; ++ break; ++ default: ++ break; ++ } ++ } ++ ++ return read_key; ++} ++ ++int ++console_getkey (void) ++{ ++ grub_efi_simple_input_interface_t *i; ++ grub_efi_boot_services_t *b; ++ grub_efi_uintn_t index; ++ grub_efi_status_t status; ++ int key; ++ ++ if (read_key >= 0) ++ { ++ key = read_key; ++ read_key = -1; ++ return key; ++ } ++ ++ i = grub_efi_system_table->con_in; ++ b = grub_efi_system_table->boot_services; ++ ++ do ++ { ++ status = Call_Service_3 (b->wait_for_event , 1, &(i->wait_for_key), &index); ++ if (status != GRUB_EFI_SUCCESS) ++ return -1; ++ ++ console_checkkey (); ++ } ++ while (read_key < 0); ++ ++ key = read_key; ++ read_key = -1; ++ return key; ++} ++ ++int ++console_keystatus (void) ++{ ++ /* Doesn't look like EFI can support this... */ ++ return 0; ++} ++ ++int ++console_getxy (void) ++{ ++ grub_efi_simple_text_output_interface_t *o; ++ ++ o = grub_efi_system_table->con_out; ++ return ((o->mode->cursor_column << 8) | o->mode->cursor_row); ++} ++ ++void ++console_gotoxy (int x, int y) ++{ ++ grub_efi_simple_text_output_interface_t *o; ++ ++ o = grub_efi_system_table->con_out; ++ Call_Service_3 (o->set_cursor_position , o, x, y); ++} ++ ++void ++console_cls (void) ++{ ++ grub_efi_simple_text_output_interface_t *o; ++ grub_efi_int32_t orig_attr; ++ ++ o = grub_efi_system_table->con_out; ++ orig_attr = o->mode->attribute; ++ Call_Service_2 (o->set_attributes, o, GRUB_EFI_BACKGROUND_BLACK); ++ Call_Service_1 (o->clear_screen , o); ++ Call_Service_2 (o->set_attributes , o, orig_attr); ++} ++ ++void ++console_setcolorstate (color_state state) ++{ ++ grub_efi_simple_text_output_interface_t *o; ++ ++ o = grub_efi_system_table->con_out; ++ ++ switch (state) { ++ case COLOR_STATE_STANDARD: ++ Call_Service_2 (o->set_attributes, o, grub_console_standard_color); ++ break; ++ case COLOR_STATE_NORMAL: ++ Call_Service_2 (o->set_attributes, o, grub_console_normal_color); ++ break; ++ case COLOR_STATE_HIGHLIGHT: ++ Call_Service_2 (o->set_attributes, o, grub_console_highlight_color); ++ break; ++ default: ++ break; ++ } ++} ++ ++void ++console_setcolor (int normal_color, int highlight_color) ++{ ++ grub_console_normal_color = normal_color; ++ grub_console_highlight_color = highlight_color; ++} ++ ++int ++console_setcursor (int on) ++{ ++ grub_efi_simple_text_output_interface_t *o; ++ ++ o = grub_efi_system_table->con_out; ++ Call_Service_2 (o->enable_cursor, o, on); ++ return on; ++} ++ ++void ++grub_console_init (void) ++{ ++ /* FIXME: it is necessary to consider the case where no console control ++ is present but the default is already in text mode. */ ++ if (! grub_efi_set_text_mode (1)) ++ { ++ grub_printf ("cannot set text mode"); ++ return; ++ } ++} ++ ++void ++grub_console_fini (void) ++{ ++} +diff --git a/efi/eficore.c b/efi/eficore.c +new file mode 100644 +index 0000000..8abea7d +--- /dev/null ++++ b/efi/eficore.c +@@ -0,0 +1,241 @@ ++/* eficore.c - generic EFI support */ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2006 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++ ++/* The handle of GRUB itself. Filled in by the startup code. */ ++grub_efi_handle_t grub_efi_image_handle; ++ ++/* The pointer to a system table. Filled in by the startup code. */ ++grub_efi_system_table_t *grub_efi_system_table; ++ ++static grub_efi_guid_t console_control_guid = GRUB_EFI_CONSOLE_CONTROL_GUID; ++static grub_efi_guid_t loaded_image_guid = GRUB_EFI_LOADED_IMAGE_GUID; ++static grub_efi_guid_t device_path_guid = GRUB_EFI_DEVICE_PATH_GUID; ++ ++/* temporary, until we're using gnu-efi's include files --pjones */ ++extern int setjmp(grub_jmp_buf env); ++int grub_setjmp(grub_jmp_buf env) ++{ ++ return setjmp(env); ++} ++ ++extern void longjmp(grub_jmp_buf env, int val); ++void grub_longjmp(grub_jmp_buf env, int val) ++{ ++ longjmp(env, val); ++} ++ ++grub_efi_status_t ++grub_efi_locate_device_path (grub_efi_guid_t *protocol, ++ grub_efi_device_path_t **dp, ++ grub_efi_handle_t *handle) ++{ ++ return Call_Service_3( ++ grub_efi_system_table->boot_services->locate_device_path, ++ protocol, dp, handle); ++} ++ ++grub_efi_status_t ++grub_efi_locate_handle_buffer (grub_efi_locate_search_type_t search_type, ++ grub_efi_guid_t *protocol, ++ void *search_key, ++ grub_efi_uintn_t *no_handles, ++ grub_efi_handle_t **buffer) ++{ ++ return Call_Service_5( ++ grub_efi_system_table->boot_services->locate_handle_buffer, ++ search_type, protocol, search_key, no_handles, buffer); ++} ++ ++void * ++grub_efi_locate_protocol (grub_efi_guid_t *protocol, void *registration) ++{ ++ void *interface; ++ grub_efi_status_t status; ++ ++ status = Call_Service_3 (grub_efi_system_table->boot_services->locate_protocol, ++ protocol, ++ registration, ++ &interface); ++ if (status != GRUB_EFI_SUCCESS) ++ return 0; ++ ++ return interface; ++} ++ ++/* Return the array of handles which meet the requirement. If successful, ++ the number of handles is stored in NUM_HANDLES. The array is allocated ++ from the heap. */ ++grub_efi_handle_t * ++grub_efi_locate_handle (grub_efi_locate_search_type_t search_type, ++ grub_efi_guid_t *protocol, ++ void *search_key, ++ grub_efi_uintn_t *num_handles) ++{ ++ grub_efi_boot_services_t *b; ++ grub_efi_status_t status; ++ grub_efi_handle_t *buffer; ++ grub_efi_uintn_t buffer_size = 8 * sizeof (grub_efi_handle_t); ++ ++ buffer = grub_malloc (buffer_size); ++ if (! buffer) ++ return 0; ++ ++ b = grub_efi_system_table->boot_services; ++ status = Call_Service_5 (b->locate_handle, search_type, protocol, ++ search_key, &buffer_size, buffer); ++ if (status == GRUB_EFI_BUFFER_TOO_SMALL) ++ { ++ grub_free (buffer); ++ buffer = grub_malloc (buffer_size); ++ if (! buffer) ++ return 0; ++ ++ status = Call_Service_5 (b->locate_handle, search_type, protocol, ++ search_key, &buffer_size, buffer); ++ } ++ ++ if (status != GRUB_EFI_SUCCESS) ++ { ++ grub_free (buffer); ++ return 0; ++ } ++ ++ *num_handles = buffer_size / sizeof (grub_efi_handle_t); ++ return buffer; ++} ++ ++void * ++grub_efi_open_protocol (grub_efi_handle_t handle, ++ grub_efi_guid_t *protocol, ++ grub_efi_uint32_t attributes) ++{ ++ grub_efi_boot_services_t *b; ++ grub_efi_status_t status; ++ void *interface; ++ ++ b = grub_efi_system_table->boot_services; ++ status = Call_Service_6 ( b->open_protocol, ++ handle, ++ protocol, ++ &interface, ++ grub_efi_image_handle, ++ 0, ++ attributes); ++ if (status != GRUB_EFI_SUCCESS) ++ return 0; ++ ++ return interface; ++} ++ ++int ++grub_efi_set_text_mode (int on) ++{ ++ grub_efi_console_control_protocol_t *c; ++ grub_efi_screen_mode_t mode, new_mode; ++ ++ c = grub_efi_locate_protocol (&console_control_guid, 0); ++ if (! c) ++ /* No console control protocol instance available, assume it is ++ already in text mode. */ ++ return 1; ++ ++ if (Call_Service_4 (c->get_mode , c, &mode, 0, 0) != GRUB_EFI_SUCCESS) ++ return 0; ++ ++ new_mode = on ? GRUB_EFI_SCREEN_TEXT : GRUB_EFI_SCREEN_GRAPHICS; ++ if (mode != new_mode) ++ if (Call_Service_2 (c->set_mode , c, new_mode) != GRUB_EFI_SUCCESS) ++ return 0; ++ ++ return 1; ++} ++ ++void ++grub_efi_stall (grub_efi_uintn_t microseconds) ++{ ++ Call_Service_1 (grub_efi_system_table->boot_services->stall , microseconds); ++} ++ ++grub_efi_loaded_image_t * ++grub_efi_get_loaded_image (grub_efi_handle_t image_handle) ++{ ++ return grub_efi_open_protocol (image_handle, ++ &loaded_image_guid, ++ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL); ++} ++ ++void ++grub_exit (void) ++{ ++ grub_efi_fini (); ++ Call_Service_4(grub_efi_system_table->boot_services->exit, ++ grub_efi_image_handle, ++ GRUB_EFI_SUCCESS, ++ 0, ++ 0 ); ++ for (;;); ++} ++ ++int ++grub_efi_exit_boot_services (grub_efi_uintn_t map_key) ++{ ++ grub_efi_boot_services_t *b; ++ grub_efi_status_t status; ++ ++ b = grub_efi_system_table->boot_services; ++ status = Call_Service_2 (b->exit_boot_services , ++ grub_efi_image_handle, ++ map_key); ++ return status == GRUB_EFI_SUCCESS; ++} ++ ++grub_uint32_t ++grub_get_rtc (void) ++{ ++ grub_efi_time_t time; ++ grub_efi_runtime_services_t *r; ++ ++ r = grub_efi_system_table->runtime_services; ++ if (Call_Service_2(r->get_time , &time, 0) != GRUB_EFI_SUCCESS) ++ /* What is possible in this case? */ ++ return 0; ++ ++ return (((time.minute * 60 + time.second) * 1000 ++ + time.nanosecond / 1000000) ++ * GRUB_TICKS_PER_SECOND / 1000); ++} ++ ++grub_efi_device_path_t * ++grub_efi_get_device_path (grub_efi_handle_t handle) ++{ ++ return grub_efi_open_protocol (handle, &device_path_guid, ++ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL); ++} ++ +diff --git a/efi/efidisk.c b/efi/efidisk.c +new file mode 100644 +index 0000000..6a505f3 +--- /dev/null ++++ b/efi/efidisk.c +@@ -0,0 +1,801 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2006 Free Software Foundation, Inc. ++ * ++ * GRUB is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with GRUB; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include ++ ++struct grub_efidisk_data ++{ ++ grub_efi_handle_t handle; ++ grub_efi_device_path_t *device_path; ++ grub_efi_device_path_t *last_device_path; ++ grub_efi_block_io_t *block_io; ++ grub_efi_disk_io_t *disk_io; ++ struct grub_efidisk_data *next; ++}; ++ ++/* GUIDs. */ ++static grub_efi_guid_t disk_io_guid = GRUB_EFI_DISK_IO_GUID; ++static grub_efi_guid_t block_io_guid = GRUB_EFI_BLOCK_IO_GUID; ++static grub_efi_guid_t device_path_from_text_guid = GRUB_EFI_DEVICE_PATH_FROM_TEXT_GUID; ++ ++static struct grub_efidisk_data *fd_devices; ++static struct grub_efidisk_data *hd_devices; ++static struct grub_efidisk_data *cd_devices; ++ ++static int get_device_sector_bits(struct grub_efidisk_data *device); ++static int get_device_sector_size(struct grub_efidisk_data *device); ++static struct grub_efidisk_data *get_device_from_drive (int drive); ++ ++static struct grub_efidisk_data * ++make_devices (void) ++{ ++ grub_efi_uintn_t num_handles; ++ grub_efi_handle_t *handles; ++ grub_efi_handle_t *handle; ++ struct grub_efidisk_data *devices = 0; ++ ++ /* Find handles which support the disk io interface. */ ++ handles = grub_efi_locate_handle (GRUB_EFI_BY_PROTOCOL, &disk_io_guid, ++ 0, &num_handles); ++ if (! handles) ++ return 0; ++ ++ /* Make a linked list of devices. */ ++ for (handle = handles; num_handles--; handle++) ++ { ++ grub_efi_device_path_t *dp; ++ grub_efi_device_path_t *ldp; ++ struct grub_efidisk_data *d; ++ grub_efi_block_io_t *bio; ++ grub_efi_disk_io_t *dio; ++ ++ dp = grub_efi_get_device_path (*handle); ++ if (! dp) ++ continue; ++ ++ ldp = find_last_device_path (dp); ++ if (! ldp) ++ /* This is empty. Why? */ ++ continue; ++ ++ bio = grub_efi_open_protocol (*handle, &block_io_guid, ++ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL); ++ dio = grub_efi_open_protocol (*handle, &disk_io_guid, ++ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL); ++ if (! bio || ! dio) ++ /* This should not happen... Why? */ ++ continue; ++ ++ d = grub_malloc (sizeof (*d)); ++ if (! d) ++ { ++ /* Uggh. */ ++ grub_free (handles); ++ return 0; ++ } ++ ++ d->handle = *handle; ++ d->device_path = dp; ++ d->last_device_path = ldp; ++ d->block_io = bio; ++ d->disk_io = dio; ++ d->next = devices; ++ devices = d; ++ } ++ ++ grub_free (handles); ++ ++ return devices; ++} ++ ++static int ++iterate_child_devices (struct grub_efidisk_data *devices, ++ struct grub_efidisk_data *d, ++ int (*hook) (struct grub_efidisk_data *child)) ++{ ++ struct grub_efidisk_data *p; ++ ++ for (p = devices; p; p = p->next) ++ { ++ grub_efi_device_path_t *dp, *ldp; ++ ++ dp = duplicate_device_path (p->device_path); ++ if (! dp) ++ return 0; ++ ++ ldp = find_last_device_path (dp); ++ ldp->type = GRUB_EFI_END_DEVICE_PATH_TYPE; ++ ldp->subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE; ++ ldp->length[0] = sizeof (*ldp); ++ ldp->length[1] = 0; ++ ++ if (compare_device_paths (dp, d->device_path) == 0) ++ if (hook (p)) ++ { ++ grub_free (dp); ++ return 1; ++ } ++ ++ grub_free (dp); ++ } ++ ++ return 0; ++} ++ ++/* Add a device into a list of devices in an ascending order. */ ++static void ++add_device (struct grub_efidisk_data **devices, struct grub_efidisk_data *d) ++{ ++ struct grub_efidisk_data **p; ++ struct grub_efidisk_data *n; ++ ++ for (p = devices; *p; p = &((*p)->next)) ++ { ++ int ret; ++ ++ ret = compare_device_paths (find_last_device_path ((*p)->device_path), ++ find_last_device_path (d->device_path)); ++ if (ret == 0) ++ ret = compare_device_paths ((*p)->device_path, ++ d->device_path); ++ if (ret == 0) ++ return; ++ else if (ret > 0) ++ break; ++ } ++ ++ n = grub_malloc (sizeof (*n)); ++ if (! n) ++ return; ++ ++ grub_memcpy (n, d, sizeof (*n)); ++ n->next = (*p); ++ (*p) = n; ++} ++ ++/* Name the devices. */ ++static void ++name_devices (struct grub_efidisk_data *devices) ++{ ++ struct grub_efidisk_data *d; ++ ++ /* Let's see what can be added more. */ ++ for (d = devices; d; d = d->next) ++ { ++ grub_efi_device_path_t *dp; ++ grub_efi_block_io_media_t *m; ++ ++ dp = d->last_device_path; ++ if (! dp) ++ continue; ++ ++ m = d->block_io->media; ++ if (GRUB_EFI_DEVICE_PATH_TYPE(dp) == GRUB_EFI_MESSAGING_DEVICE_PATH_TYPE) ++ { ++ /* XXX FIXME this won't work if we see write-protected disks with ++ * 4k sectors */ ++ if (m->read_only && m->block_size > 0x200) ++ { ++ add_device (&cd_devices, d); ++ } else ++ { ++ add_device (&hd_devices, d); ++ } ++ } ++ if (GRUB_EFI_DEVICE_PATH_TYPE(dp) == GRUB_EFI_ACPI_DEVICE_PATH_TYPE) ++ { ++ add_device (&fd_devices, d); ++ } ++ } ++} ++ ++static void ++free_devices (struct grub_efidisk_data *devices) ++{ ++ struct grub_efidisk_data *p, *q; ++ ++ for (p = devices; p; p = q) ++ { ++ q = p->next; ++ grub_free (p); ++ } ++} ++ ++/* Enumerate all disks to name devices. */ ++static void ++enumerate_disks (void) ++{ ++ struct grub_efidisk_data *devices; ++ ++ devices = make_devices (); ++ if (! devices) ++ return; ++ ++ name_devices (devices); ++ free_devices (devices); ++} ++ ++static struct grub_efidisk_data * ++get_device (struct grub_efidisk_data *devices, int num) ++{ ++ struct grub_efidisk_data *d; ++ ++ for (d = devices; d && num; d = d->next, num--) ++ ; ++ ++ if (num == 0) ++ return d; ++ ++ return 0; ++} ++ ++static int ++grub_efidisk_read (struct grub_efidisk_data *d, grub_disk_addr_t sector, ++ grub_size_t size, char *buf) ++{ ++ /* For now, use the disk io interface rather than the block io's. */ ++ grub_efi_disk_io_t *dio; ++ grub_efi_block_io_t *bio; ++ grub_efi_status_t status; ++ grub_efi_uint64_t sector_size = get_device_sector_size(d); ++ ++ dio = d->disk_io; ++ bio = d->block_io; ++ ++ status = Call_Service_5 (dio->read, ++ dio, bio->media->media_id, ++ sector * sector_size, ++ size * sector_size, ++ buf); ++ if (status != GRUB_EFI_SUCCESS) ++ return -1; ++ ++ return 0; ++} ++ ++static int ++grub_efidisk_write (struct grub_efidisk_data *d, grub_disk_addr_t sector, ++ grub_size_t size, const char *buf) ++{ ++ /* For now, use the disk io interface rather than the block io's. */ ++ grub_efi_disk_io_t *dio; ++ grub_efi_block_io_t *bio; ++ grub_efi_status_t status; ++ grub_efi_uint64_t sector_size = get_device_sector_size(d); ++ ++ dio = d->disk_io; ++ bio = d->block_io; ++ ++ grub_dprintf ("efidisk", ++ "writing 0x%x sectors at the sector 0x%x to ??\n", ++ (unsigned) size, (unsigned int) sector); ++ ++ status = Call_Service_5 (dio->write , ++ dio, bio->media->media_id, ++ sector * sector_size, ++ size * sector_size, ++ (void *) buf); ++ if (status != GRUB_EFI_SUCCESS) ++ return -1; ++ ++ return 0; ++} ++ ++void ++grub_efidisk_init (void) ++{ ++ enumerate_disks (); ++} ++ ++void ++grub_efidisk_fini (void) ++{ ++ free_devices (fd_devices); ++ free_devices (hd_devices); ++ free_devices (cd_devices); ++} ++ ++static int ++get_device_sector_size(struct grub_efidisk_data *device) ++{ ++ return device->block_io->media->block_size; ++} ++ ++int ++get_sector_size(int drive) ++{ ++ struct grub_efidisk_data *device = get_device_from_drive(drive); ++ return get_device_sector_size(device); ++} ++ ++/* ++ * ffz = Find First Zero in word. Undefined if no zero exists, ++ * so code should check against ~0UL first.. ++ */ ++static __inline__ unsigned int ++ffz (unsigned int word) ++{ ++ __asm__ ("bsfl %1,%0" ++: "=r" (word) ++: "r" (~word)); ++ return word; ++} ++#define log2(n) ffz(~(n)) ++ ++static int ++get_device_sector_bits(struct grub_efidisk_data *device) ++{ ++ int sector_size = get_device_sector_size(device); ++ return log2(sector_size); ++} ++ ++int ++get_sector_bits(int drive) ++{ ++ int sector_size = get_sector_size(drive); ++ return log2(sector_size); ++} ++ ++static struct grub_efidisk_data * ++get_device_from_drive (int drive) ++{ ++#ifdef SUPPORT_NETBOOT ++ /* Not supported */ ++ if (drive == NETWORK_DRIVE) ++ return NULL; ++#endif ++ if (drive == GRUB_INVALID_DRIVE) ++ return NULL; ++ if (drive == cdrom_drive) ++ return get_device (cd_devices, 0); ++ /* Hard disk */ ++ if (drive & 0x80) ++ return get_device (hd_devices, drive - 0x80); ++ /* Floppy disk */ ++ else ++ return get_device (fd_devices, drive); ++} ++ ++/* Low-level disk I/O. Our stubbed version just returns a file ++ descriptor, not the actual geometry. */ ++int ++get_diskinfo (int drive, struct geometry *geometry) ++{ ++ struct grub_efidisk_data *d; ++ ++ d = get_device_from_drive (drive); ++ if (!d) ++ return -1; ++ geometry->total_sectors = d->block_io->media->last_block+1; ++ geometry->sector_size = d->block_io->media->block_size; ++ geometry->flags = BIOSDISK_FLAG_LBA_EXTENSION; ++ geometry->sectors = 63; ++ if (geometry->total_sectors / 63 < 255) ++ geometry->heads = 1; ++ else ++ geometry->heads = 255; ++ geometry->cylinders = geometry->total_sectors / 63 / geometry->heads; ++ return 0; ++} ++ ++int ++biosdisk (int subfunc, int drive, struct geometry *geometry, ++ int sector, int nsec, int segment) ++{ ++ char *buf; ++ struct grub_efidisk_data *d; ++ int ret; ++ ++ d = get_device_from_drive (drive); ++ if (!d) ++ return -1; ++ buf = (char *) ((unsigned long) segment << 4); ++ switch (subfunc) ++ { ++ case BIOSDISK_READ: ++ ret = grub_efidisk_read (d, sector, nsec, buf); ++ break; ++ case BIOSDISK_WRITE: ++ ret = grub_efidisk_write (d, sector, nsec, buf); ++ break; ++ default: ++ return -1; ++ } ++ ++ return 0; ++} ++ ++/* Some utility functions to map GRUB devices with EFI devices. */ ++grub_efi_handle_t ++grub_efidisk_get_current_bdev_handle (void) ++{ ++ struct grub_efidisk_data *d; ++ ++ d = get_device_from_drive (current_drive); ++ if (d == NULL) ++ return NULL; ++ ++ if (current_drive == GRUB_INVALID_DRIVE) ++ return NULL; ++ ++ if (current_drive == cdrom_drive) ++ return d->handle; ++ ++ if (! (current_drive & 0x80)) ++ return d->handle; ++ /* If this is the whole disk, just return its own data. */ ++ else if (current_partition == 0xFFFFFF) ++ return d->handle; ++ /* Otherwise, we must query the corresponding device to the firmware. */ ++ else ++ { ++ struct grub_efidisk_data *devices; ++ grub_efi_handle_t handle = 0; ++ auto int find_partition (struct grub_efidisk_data *c); ++ ++ int find_partition (struct grub_efidisk_data *c) ++ { ++ grub_efi_hard_drive_device_path_t hd; ++ ++ grub_memcpy (&hd, c->last_device_path, sizeof (hd)); ++ ++ if ((GRUB_EFI_DEVICE_PATH_TYPE (c->last_device_path) ++ == GRUB_EFI_MEDIA_DEVICE_PATH_TYPE) ++ && (GRUB_EFI_DEVICE_PATH_SUBTYPE (c->last_device_path) ++ == GRUB_EFI_HARD_DRIVE_DEVICE_PATH_SUBTYPE) ++ && (part_start == hd.partition_start)) ++ { ++ handle = c->handle; ++ return 1; ++ } ++ ++ return 0; ++ } ++ ++ devices = make_devices (); ++ iterate_child_devices (devices, d, find_partition); ++ free_devices (devices); ++ ++ if (handle != 0) ++ return handle; ++ } ++ ++ return 0; ++} ++ ++int ++grub_get_drive_partition_from_bdev_handle (grub_efi_handle_t handle, ++ unsigned long *drive, ++ unsigned long *partition) ++{ ++ grub_efi_device_path_t *dp, *dp1; ++ struct grub_efidisk_data *d, *devices; ++ int drv; ++ unsigned long part; ++ grub_efi_hard_drive_device_path_t hd; ++ int found; ++ int part_type, part_entry; ++ unsigned long partition_start, partition_len, part_offset, part_extoffset; ++ unsigned long gpt_offset; ++ int gpt_count, gpt_size; ++ auto int find_bdev (struct grub_efidisk_data *c); ++ ++ int find_bdev (struct grub_efidisk_data *c) ++ { ++ if (! compare_device_paths (c->device_path, dp)) ++ { ++ grub_memcpy (&hd, c->last_device_path, sizeof (hd)); ++ found = 1; ++ return 1; ++ } ++ return 0; ++ } ++ ++ dp = grub_efi_get_device_path (handle); ++ if (! dp) ++ return 0; ++ ++ dp1 = dp; ++ while (1) ++ { ++ grub_efi_uint8_t type = GRUB_EFI_DEVICE_PATH_TYPE (dp1); ++ grub_efi_uint8_t subtype = GRUB_EFI_DEVICE_PATH_SUBTYPE(dp1); ++ grub_efi_uint16_t len = GRUB_EFI_DEVICE_PATH_LENGTH (dp); ++ ++ if (type == GRUB_EFI_MEDIA_DEVICE_PATH_TYPE && ++ subtype == GRUB_EFI_CDROM_DEVICE_PATH_SUBTYPE) ++ { ++ dp1->type = GRUB_EFI_END_DEVICE_PATH_TYPE; ++ dp1->subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE; ++ dp1->length[0] = 4; ++ dp1->length[1] = 0; ++ } ++ ++ if (type == GRUB_EFI_MEDIA_DEVICE_PATH_TYPE && ++ subtype == GRUB_EFI_HARD_DRIVE_DEVICE_PATH_SUBTYPE) ++ { ++ grub_efi_hard_drive_device_path_t temp_hd; ++ grub_memcpy (&temp_hd, dp1, len); ++ if (temp_hd.signature_type == 0 && temp_hd.mbr_type >= 0x10) { ++ /* ++ * Apple Parttion Map CDs appear as hard drives with non-spec ++ * partition type fields. Fix them up. ++ */ ++ dp1->type = GRUB_EFI_END_DEVICE_PATH_TYPE; ++ dp1->subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE; ++ dp1->length[0] = 4; ++ dp1->length[1] = 0; ++ } ++ } ++ ++ if (GRUB_EFI_END_ENTIRE_DEVICE_PATH (dp1)) ++ break; ++ ++ dp1 = GRUB_EFI_NEXT_DEVICE_PATH(dp1); ++ } ++ ++ drv = 0; ++ for (d = fd_devices; d; d = d->next, drv++) ++ { ++ if (! compare_device_paths (d->device_path, dp)) ++ { ++ *partition = 0xFFFFFF; ++ *drive = drv; ++ return 1; ++ } ++ } ++ ++ drv = cdrom_drive; ++ if (cd_devices && ! compare_device_paths (cd_devices->device_path, dp)) ++ { ++ *partition = 0xFFFFFF; ++ *drive = drv; ++ return 1; ++ } ++ ++ drv = 0x80; ++ for (d = hd_devices; d; d = d->next, drv++) ++ { ++ if (! compare_device_paths (d->device_path, dp)) ++ { ++ *partition = 0xFFFFFF; ++ *drive = drv; ++ return 1; ++ } ++ } ++ ++ devices = make_devices (); ++ ++ drv = 0x80; ++ found = 0; ++ for (d = hd_devices; d; d = d->next, drv++) ++ { ++ iterate_child_devices (devices, d, find_bdev); ++ if (found) ++ break; ++ } ++ ++ free_devices (devices); ++ ++ if (! found) ++ return 0; ++ ++ char buf[get_sector_size(drv)]; ++ part = 0xFFFFFF; ++ while (next_partition (drv, 0, &part, &part_type, ++ &partition_start, &partition_len, ++ &part_offset, &part_entry, ++ &part_extoffset, &gpt_offset, &gpt_count, ++ &gpt_size, buf)) ++ { ++ if (part_type ++ && partition_start == hd.partition_start) ++ { ++ *drive = drv; ++ *partition = part; ++ return 1; ++ } ++ } ++ ++ return 0; ++} ++ ++int ++check_device (const char *device) ++{ ++ grub_efi_device_path_t *dp; ++ ++ dp = device_path_from_utf8(device); ++ if (dp == NULL) ++ return 0; ++ ++ grub_free(dp); ++ return 1; ++} ++ ++static void ++swap_devices (struct grub_efidisk_data *d0, ++ struct grub_efidisk_data *d1) ++{ ++ struct grub_efidisk_data tmp; ++ ++ if (!d0 || !d1) ++ return; ++ ++ memcpy(&tmp, d1, sizeof(*d1)); ++ ++ memcpy(&d0->handle, &d1->handle, sizeof(d1->handle)); ++ d0->device_path = d1->device_path; ++ d0->last_device_path = d1->last_device_path; ++ d0->block_io = d1->block_io; ++ d0->disk_io = d1->disk_io; ++ ++ memcpy(d1->handle, tmp.handle, sizeof(tmp.handle)); ++ d1->device_path = tmp.device_path; ++ d1->last_device_path = tmp.last_device_path; ++ d1->block_io = tmp.block_io; ++ d1->disk_io = tmp.disk_io; ++} ++ ++static int ++compare_hd_device_paths(grub_efi_hard_drive_device_path_t *hd0, ++ grub_efi_hard_drive_device_path_t *hd1) ++{ ++ grub_efi_uint64_t x; ++ int sigsize; ++ ++ if ((x = hd1->partition_number - hd0->partition_number)) ++ return x; ++ ++ if ((x = hd1->partition_start - hd0->partition_start)) ++ return x; ++ ++ ++ if ((x = hd1->partition_size - hd0->partition_size)) ++ return x; ++ ++ if ((x = hd1->signature_type - hd0->signature_type)) ++ return x; ++ ++ switch (hd0->signature_type) ++ { ++ case 1: ++ sigsize = 4; ++ break; ++ case 2: ++ sigsize = 16; ++ break; ++ default: ++ sigsize = 0; ++ break; ++ } ++ x = grub_memcmp((char *)hd0->partition_signature, ++ (char *)hd1->partition_signature, sigsize); ++ return x; ++} ++ ++static grub_efi_device_path_t * ++get_parent_of_disk(grub_efi_device_path_t *hd) ++{ ++ grub_efi_uintn_t num_handles; ++ grub_efi_handle_t *handles; ++ grub_efi_handle_t *handle; ++ grub_efi_device_path_t *ret; ++ ++ handles = grub_efi_locate_handle (GRUB_EFI_BY_PROTOCOL, ++ &simple_file_system_guid, ++ 0, &num_handles); ++ for (handle = handles; num_handles--; handle++) ++ { ++ grub_efi_device_path_t *fsdp, *hddp; ++ ++ fsdp = grub_efi_get_device_path (*handle); ++ if (!fsdp) ++ continue; ++ hddp = find_last_device_path(fsdp); ++ ++ if (compare_hd_device_paths((grub_efi_hard_drive_device_path_t *)hddp, ++ (grub_efi_hard_drive_device_path_t *)hd) == 0) ++ { ++ grub_efi_device_path_t *p; ++ ret = duplicate_device_path((grub_efi_device_path_t *)fsdp); ++ if (!ret) ++ return NULL; ++ for (p = ret; ; p = GRUB_EFI_NEXT_DEVICE_PATH(p)) ++ { ++ if (GRUB_EFI_END_ENTIRE_DEVICE_PATH(p)) ++ break; ++ if ((GRUB_EFI_DEVICE_PATH_TYPE(p) == ++ GRUB_EFI_MEDIA_DEVICE_PATH_TYPE) ++ && (GRUB_EFI_DEVICE_PATH_SUBTYPE(p) == ++ GRUB_EFI_HARD_DRIVE_DEVICE_PATH_SUBTYPE)) ++ { ++ p->type = GRUB_EFI_END_DEVICE_PATH_TYPE; ++ p->subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE; ++ p->length[0] = 4; ++ p->length[1] = 0; ++ break; ++ } ++ } ++ return ret; ++ } ++ } ++ return NULL; ++} ++ ++void ++assign_device_name (int drive, const char *device) ++{ ++ grub_efi_device_path_t *dp0, *dp1; ++ struct grub_efidisk_data *devices; ++ struct grub_efidisk_data *d, *d0 = NULL, *d1 = NULL; ++ int n = -1; ++ ++ dp0 = device_path_from_utf8(device); ++ if (!dp0) ++ return; ++ ++ dp1 = get_parent_of_disk(dp0); ++ grub_free(dp0); ++ if (!dp1) ++ return; ++ ++ if (drive & 0x80) ++ { ++ drive -= 0x80; ++ devices = hd_devices; ++ } ++ else ++ { ++ devices = cd_devices; ++ drive -= 0x100; ++ } ++ ++ for (d = devices; d; d = d->next) ++ { ++ if (!d->device_path) ++ continue; ++ ++ if (++n == drive) ++ d0 = d; ++ ++ int x; ++ if (!(x = compare_device_paths(dp1, d->device_path))) ++ d1 = d; ++ ++ if (d0 && d1) ++ { ++ /* if they're the same node, that just means it's already at ++ * the right position. */ ++ if (d0 != d1) ++ { ++ swap_devices(d0, d1); ++ grub_free(dp1); ++ return; ++ } ++ } ++ } ++ grub_free(dp1); ++} +diff --git a/efi/efidp.c b/efi/efidp.c +new file mode 100644 +index 0000000..d8ca03d +--- /dev/null ++++ b/efi/efidp.c +@@ -0,0 +1,999 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2010 Free Software Foundation, Inc. ++ * ++ * GRUB is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with GRUB; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include ++ ++/* Duplicate a device path. */ ++grub_efi_device_path_t * ++duplicate_device_path (const grub_efi_device_path_t *dp) ++{ ++ grub_efi_device_path_t *p; ++ grub_size_t total_size = 0; ++ ++ for (p = (grub_efi_device_path_t *) dp; ++ ; ++ p = GRUB_EFI_NEXT_DEVICE_PATH (p)) ++ { ++ total_size += GRUB_EFI_DEVICE_PATH_LENGTH (p); ++ if (GRUB_EFI_END_ENTIRE_DEVICE_PATH (p)) ++ break; ++ } ++ ++ p = grub_malloc (total_size); ++ if (! p) ++ return 0; ++ ++ grub_memcpy (p, dp, total_size); ++ return p; ++} ++ ++/* Return the device path node right before the end node. */ ++grub_efi_device_path_t * ++find_last_device_path (const grub_efi_device_path_t *dp) ++{ ++ grub_efi_device_path_t *next, *p; ++ ++ if (GRUB_EFI_END_ENTIRE_DEVICE_PATH (dp)) ++ return 0; ++ ++ for (p = (grub_efi_device_path_t *) dp, next = GRUB_EFI_NEXT_DEVICE_PATH (p); ++ ! GRUB_EFI_END_ENTIRE_DEVICE_PATH (next); ++ p = next, next = GRUB_EFI_NEXT_DEVICE_PATH (next)) ++ ; ++ ++ return p; ++} ++ ++/* Return the parent device path node. Must be freed */ ++grub_efi_device_path_t * ++find_parent_device_path (const grub_efi_device_path_t *dp) ++{ ++ grub_efi_device_path_t *final, *dup; ++ ++ dup = duplicate_device_path(dp); ++ final = find_last_device_path(dup); ++ ++ final->type = GRUB_EFI_END_DEVICE_PATH_TYPE; ++ final->subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE; ++ ++ return dup; ++} ++ ++/* Compare device paths. */ ++int ++compare_device_paths (const grub_efi_device_path_t *dp1, ++ const grub_efi_device_path_t *dp2) ++{ ++ if (! dp1 || ! dp2) ++ /* Return non-zero. */ ++ return 1; ++ ++ while (1) ++ { ++ grub_efi_uint8_t type1, type2; ++ grub_efi_uint8_t subtype1, subtype2; ++ grub_efi_uint16_t len1, len2; ++ int ret; ++ ++ type1 = GRUB_EFI_DEVICE_PATH_TYPE (dp1); ++ type2 = GRUB_EFI_DEVICE_PATH_TYPE (dp2); ++ ++ if (type1 != type2) ++ return (int) type2 - (int) type1; ++ ++ subtype1 = GRUB_EFI_DEVICE_PATH_SUBTYPE (dp1); ++ subtype2 = GRUB_EFI_DEVICE_PATH_SUBTYPE (dp2); ++ ++ if (subtype1 != subtype2) ++ return (int) subtype1 - (int) subtype2; ++ ++ len1 = GRUB_EFI_DEVICE_PATH_LENGTH (dp1); ++ len2 = GRUB_EFI_DEVICE_PATH_LENGTH (dp2); ++ ++ if (len1 != len2) ++ return (int) len1 - (int) len2; ++ ++ ret = grub_memcmp ((char *)dp1, (char *)dp2, len1); ++ if (ret != 0) ++ return ret; ++ ++ if (GRUB_EFI_END_ENTIRE_DEVICE_PATH (dp1)) ++ break; ++ ++ dp1 = (grub_efi_device_path_t *) ((char *) dp1 + len1); ++ dp2 = (grub_efi_device_path_t *) ((char *) dp2 + len2); ++ } ++ ++ return 0; ++} ++ ++/* Print the chain of Device Path nodes. This is mainly for debugging. */ ++void ++grub_efi_print_device_path (grub_efi_device_path_t *dp) ++{ ++ while (1) ++ { ++ grub_efi_uint8_t type = GRUB_EFI_DEVICE_PATH_TYPE (dp); ++ grub_efi_uint8_t subtype = GRUB_EFI_DEVICE_PATH_SUBTYPE (dp); ++ grub_efi_uint16_t len = GRUB_EFI_DEVICE_PATH_LENGTH (dp); ++ ++ switch (type) ++ { ++ case GRUB_EFI_END_DEVICE_PATH_TYPE: ++ switch (subtype) ++ { ++ case GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE: ++ grub_printf ("/EndEntire\n"); ++ //grub_putchar ('\n'); ++ break; ++ case GRUB_EFI_END_THIS_DEVICE_PATH_SUBTYPE: ++ grub_printf ("/EndThis\n"); ++ //grub_putchar ('\n'); ++ break; ++ default: ++ grub_printf ("/EndUnknown(%x)\n", (unsigned) subtype); ++ break; ++ } ++ break; ++ ++ case GRUB_EFI_HARDWARE_DEVICE_PATH_TYPE: ++ switch (subtype) ++ { ++ case GRUB_EFI_PCI_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_pci_device_path_t pci; ++ grub_memcpy (&pci, dp, len); ++ grub_printf ("/PCI(%x,%x)", ++ (unsigned) pci.function, (unsigned) pci.device); ++ } ++ break; ++ case GRUB_EFI_PCCARD_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_pccard_device_path_t pccard; ++ grub_memcpy (&pccard, dp, len); ++ grub_printf ("/PCCARD(%x)", ++ (unsigned) pccard.function); ++ } ++ break; ++ case GRUB_EFI_MEMORY_MAPPED_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_memory_mapped_device_path_t mmapped; ++ grub_memcpy (&mmapped, dp, len); ++ grub_printf ("/MMap(%x,%llx,%llx)", ++ (unsigned) mmapped.memory_type, ++ mmapped.start_address, ++ mmapped.end_address); ++ } ++ break; ++ case GRUB_EFI_VENDOR_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_vendor_device_path_t vendor; ++ grub_memcpy (&vendor, dp, sizeof (vendor)); ++ grub_printf ("/Vendor(%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x)", ++ (unsigned) vendor.vendor_guid.data1, ++ (unsigned) vendor.vendor_guid.data2, ++ (unsigned) vendor.vendor_guid.data3, ++ (unsigned) vendor.vendor_guid.data4[0], ++ (unsigned) vendor.vendor_guid.data4[1], ++ (unsigned) vendor.vendor_guid.data4[2], ++ (unsigned) vendor.vendor_guid.data4[3], ++ (unsigned) vendor.vendor_guid.data4[4], ++ (unsigned) vendor.vendor_guid.data4[5], ++ (unsigned) vendor.vendor_guid.data4[6], ++ (unsigned) vendor.vendor_guid.data4[7]); ++ } ++ break; ++ case GRUB_EFI_CONTROLLER_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_controller_device_path_t controller; ++ grub_memcpy (&controller, dp, len); ++ grub_printf ("/Ctrl(%x)", ++ (unsigned) controller.controller_number); ++ } ++ break; ++ default: ++ grub_printf ("/UnknownHW(%x)", (unsigned) subtype); ++ break; ++ } ++ break; ++ ++ case GRUB_EFI_ACPI_DEVICE_PATH_TYPE: ++ switch (subtype) ++ { ++ case GRUB_EFI_ACPI_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_acpi_device_path_t acpi; ++ grub_memcpy (&acpi, dp, len); ++ grub_printf ("/ACPI(%x,%x)", ++ (unsigned) acpi.hid, ++ (unsigned) acpi.uid); ++ } ++ break; ++ case GRUB_EFI_EXPANDED_ACPI_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_expanded_acpi_device_path_t eacpi; ++ grub_memcpy (&eacpi, dp, sizeof (eacpi)); ++ grub_printf ("/ACPI("); ++ ++ if (GRUB_EFI_EXPANDED_ACPI_HIDSTR (dp)[0] == '\0') ++ grub_printf ("%x,", (unsigned) eacpi.hid); ++ else ++ grub_printf ("%s,", GRUB_EFI_EXPANDED_ACPI_HIDSTR (dp)); ++ ++ if (GRUB_EFI_EXPANDED_ACPI_UIDSTR (dp)[0] == '\0') ++ grub_printf ("%x,", (unsigned) eacpi.uid); ++ else ++ grub_printf ("%s,", GRUB_EFI_EXPANDED_ACPI_UIDSTR (dp)); ++ ++ if (GRUB_EFI_EXPANDED_ACPI_CIDSTR (dp)[0] == '\0') ++ grub_printf ("%x)", (unsigned) eacpi.cid); ++ else ++ grub_printf ("%s)", GRUB_EFI_EXPANDED_ACPI_CIDSTR (dp)); ++ } ++ break; ++ default: ++ grub_printf ("/UnknownACPI(%x)", (unsigned) subtype); ++ break; ++ } ++ break; ++ ++ case GRUB_EFI_MESSAGING_DEVICE_PATH_TYPE: ++ switch (subtype) ++ { ++ case GRUB_EFI_ATAPI_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_atapi_device_path_t atapi; ++ grub_memcpy (&atapi, dp, len); ++ grub_printf ("/ATAPI(%x,%x,%x)", ++ (unsigned) atapi.primary_secondary, ++ (unsigned) atapi.slave_master, ++ (unsigned) atapi.lun); ++ } ++ break; ++ case GRUB_EFI_SCSI_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_scsi_device_path_t scsi; ++ grub_memcpy (&scsi, dp, len); ++ grub_printf ("/SCSI(%x,%x)", ++ (unsigned) scsi.pun, ++ (unsigned) scsi.lun); ++ } ++ break; ++ case GRUB_EFI_FIBRE_CHANNEL_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_fibre_channel_device_path_t fc; ++ grub_memcpy (&fc, dp, len); ++ grub_printf ("/FibreChannel(%llx,%llx)", ++ fc.wwn, fc.lun); ++ } ++ break; ++ case GRUB_EFI_1394_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_1394_device_path_t firewire; ++ grub_memcpy (&firewire, dp, len); ++ grub_printf ("/1394(%llx)", firewire.guid); ++ } ++ break; ++ case GRUB_EFI_USB_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_usb_device_path_t usb; ++ grub_memcpy (&usb, dp, len); ++ grub_printf ("/USB(%x,%x)", ++ (unsigned) usb.parent_port_number, ++ (unsigned) usb.interface); ++ } ++ break; ++ case GRUB_EFI_USB_CLASS_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_usb_class_device_path_t usb_class; ++ grub_memcpy (&usb_class, dp, len); ++ grub_printf ("/USBClass(%x,%x,%x,%x,%x)", ++ (unsigned) usb_class.vendor_id, ++ (unsigned) usb_class.product_id, ++ (unsigned) usb_class.device_class, ++ (unsigned) usb_class.device_subclass, ++ (unsigned) usb_class.device_protocol); ++ } ++ break; ++ case GRUB_EFI_I2O_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_i2o_device_path_t i2o; ++ grub_memcpy (&i2o, dp, len); ++ grub_printf ("/I2O(%x)", (unsigned) i2o.tid); ++ } ++ break; ++ case GRUB_EFI_MAC_ADDRESS_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_mac_address_device_path_t mac; ++ grub_memcpy (&mac, dp, len); ++ grub_printf ("/MacAddr(%x:%x:%x:%x:%x:%x,%x)", ++ (unsigned) mac.mac_address[0], ++ (unsigned) mac.mac_address[1], ++ (unsigned) mac.mac_address[2], ++ (unsigned) mac.mac_address[3], ++ (unsigned) mac.mac_address[4], ++ (unsigned) mac.mac_address[5], ++ (unsigned) mac.if_type); ++ } ++ break; ++ case GRUB_EFI_IPV4_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_ipv4_device_path_t ipv4; ++ grub_memcpy (&ipv4, dp, len); ++ grub_printf ("/IPv4(%u.%u.%u.%u,%u.%u.%u.%u,%u,%u,%x,%x)", ++ (unsigned) ipv4.local_ip_address[0], ++ (unsigned) ipv4.local_ip_address[1], ++ (unsigned) ipv4.local_ip_address[2], ++ (unsigned) ipv4.local_ip_address[3], ++ (unsigned) ipv4.remote_ip_address[0], ++ (unsigned) ipv4.remote_ip_address[1], ++ (unsigned) ipv4.remote_ip_address[2], ++ (unsigned) ipv4.remote_ip_address[3], ++ (unsigned) ipv4.local_port, ++ (unsigned) ipv4.remote_port, ++ (unsigned) ipv4.protocol, ++ (unsigned) ipv4.static_ip_address); ++ } ++ break; ++ case GRUB_EFI_IPV6_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_ipv6_device_path_t ipv6; ++ grub_memcpy (&ipv6, dp, len); ++ grub_printf ("/IPv6(%x:%x:%x:%x:%x:%x:%x:%x,%x:%x:%x:%x:%x:%x:%x:%x,%u,%u,%x,%x)", ++ (unsigned) ipv6.local_ip_address[0], ++ (unsigned) ipv6.local_ip_address[1], ++ (unsigned) ipv6.local_ip_address[2], ++ (unsigned) ipv6.local_ip_address[3], ++ (unsigned) ipv6.local_ip_address[4], ++ (unsigned) ipv6.local_ip_address[5], ++ (unsigned) ipv6.local_ip_address[6], ++ (unsigned) ipv6.local_ip_address[7], ++ (unsigned) ipv6.remote_ip_address[0], ++ (unsigned) ipv6.remote_ip_address[1], ++ (unsigned) ipv6.remote_ip_address[2], ++ (unsigned) ipv6.remote_ip_address[3], ++ (unsigned) ipv6.remote_ip_address[4], ++ (unsigned) ipv6.remote_ip_address[5], ++ (unsigned) ipv6.remote_ip_address[6], ++ (unsigned) ipv6.remote_ip_address[7], ++ (unsigned) ipv6.local_port, ++ (unsigned) ipv6.remote_port, ++ (unsigned) ipv6.protocol, ++ (unsigned) ipv6.static_ip_address); ++ } ++ break; ++ case GRUB_EFI_INFINIBAND_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_infiniband_device_path_t ib; ++ grub_memcpy (&ib, dp, len); ++ grub_printf ("/InfiniBand(%x,%llx,%llx,%llx)", ++ (unsigned) ib.port_gid[0], /* XXX */ ++ ib.remote_id, ++ ib.target_port_id, ++ ib.device_id); ++ } ++ break; ++ case GRUB_EFI_UART_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_uart_device_path_t uart; ++ grub_memcpy (&uart, dp, len); ++ grub_printf ("/UART(%llu,%u,%x,%x)", ++ uart.baud_rate, ++ uart.data_bits, ++ uart.parity, ++ uart.stop_bits); ++ } ++ break; ++ case GRUB_EFI_VENDOR_MESSAGING_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_vendor_messaging_device_path_t vendor; ++ grub_memcpy (&vendor, dp, sizeof (vendor)); ++ grub_printf ("/Vendor(%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x)", ++ (unsigned) vendor.vendor_guid.data1, ++ (unsigned) vendor.vendor_guid.data2, ++ (unsigned) vendor.vendor_guid.data3, ++ (unsigned) vendor.vendor_guid.data4[0], ++ (unsigned) vendor.vendor_guid.data4[1], ++ (unsigned) vendor.vendor_guid.data4[2], ++ (unsigned) vendor.vendor_guid.data4[3], ++ (unsigned) vendor.vendor_guid.data4[4], ++ (unsigned) vendor.vendor_guid.data4[5], ++ (unsigned) vendor.vendor_guid.data4[6], ++ (unsigned) vendor.vendor_guid.data4[7]); ++ } ++ break; ++ default: ++ grub_printf ("/UnknownMessaging(%x)", (unsigned) subtype); ++ break; ++ } ++ break; ++ ++ case GRUB_EFI_MEDIA_DEVICE_PATH_TYPE: ++ switch (subtype) ++ { ++ case GRUB_EFI_HARD_DRIVE_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_hard_drive_device_path_t hd; ++ grub_memcpy (&hd, dp, len); ++ grub_printf ("/HD(%u,%llx,%llx,%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x)", ++ hd.partition_number, ++ hd.partition_start, ++ hd.partition_size, ++ (unsigned) hd.partition_signature[3], ++ (unsigned) hd.partition_signature[2], ++ (unsigned) hd.partition_signature[1], ++ (unsigned) hd.partition_signature[0], ++ (unsigned) hd.partition_signature[5], ++ (unsigned) hd.partition_signature[4], ++ (unsigned) hd.partition_signature[7], ++ (unsigned) hd.partition_signature[6], ++ (unsigned) hd.partition_signature[9], ++ (unsigned) hd.partition_signature[8], ++ (unsigned) hd.partition_signature[10], ++ (unsigned) hd.partition_signature[11], ++ (unsigned) hd.partition_signature[12], ++ (unsigned) hd.partition_signature[13], ++ (unsigned) hd.partition_signature[14], ++ (unsigned) hd.partition_signature[15]); ++ } ++ break; ++ case GRUB_EFI_CDROM_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_cdrom_device_path_t cd; ++ grub_memcpy (&cd, dp, len); ++ grub_printf ("/CD(%u,%llx,%llx)", ++ cd.boot_entry, ++ cd.partition_start, ++ cd.partition_size); ++ } ++ break; ++ case GRUB_EFI_VENDOR_MEDIA_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_vendor_media_device_path_t vendor; ++ grub_memcpy (&vendor, dp, sizeof (vendor)); ++ grub_printf ("/Vendor(%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x)", ++ (unsigned) vendor.vendor_guid.data1, ++ (unsigned) vendor.vendor_guid.data2, ++ (unsigned) vendor.vendor_guid.data3, ++ (unsigned) vendor.vendor_guid.data4[0], ++ (unsigned) vendor.vendor_guid.data4[1], ++ (unsigned) vendor.vendor_guid.data4[2], ++ (unsigned) vendor.vendor_guid.data4[3], ++ (unsigned) vendor.vendor_guid.data4[4], ++ (unsigned) vendor.vendor_guid.data4[5], ++ (unsigned) vendor.vendor_guid.data4[6], ++ (unsigned) vendor.vendor_guid.data4[7]); ++ } ++ break; ++ case GRUB_EFI_FILE_PATH_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_file_path_device_path_t *fp; ++ grub_uint8_t buf[(len - 4) * 2 + 1]; ++ fp = (grub_efi_file_path_device_path_t *) dp; ++ *grub_utf16_to_utf8 (buf, fp->path_name, ++ (len - 4) / sizeof (grub_efi_char16_t)) ++ = '\0'; ++ grub_printf ("/File(%s)", buf); ++ } ++ break; ++ case GRUB_EFI_PROTOCOL_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_protocol_device_path_t proto; ++ grub_memcpy (&proto, dp, sizeof (proto)); ++ grub_printf ("/Protocol(%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x)", ++ (unsigned) proto.guid.data1, ++ (unsigned) proto.guid.data2, ++ (unsigned) proto.guid.data3, ++ (unsigned) proto.guid.data4[0], ++ (unsigned) proto.guid.data4[1], ++ (unsigned) proto.guid.data4[2], ++ (unsigned) proto.guid.data4[3], ++ (unsigned) proto.guid.data4[4], ++ (unsigned) proto.guid.data4[5], ++ (unsigned) proto.guid.data4[6], ++ (unsigned) proto.guid.data4[7]); ++ } ++ break; ++ default: ++ grub_printf ("/UnknownMedia(%x)", (unsigned) subtype); ++ break; ++ } ++ break; ++ ++ case GRUB_EFI_BIOS_DEVICE_PATH_TYPE: ++ switch (subtype) ++ { ++ case GRUB_EFI_BIOS_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_bios_device_path_t bios; ++ grub_memcpy (&bios, dp, sizeof (bios)); ++ grub_printf ("/BIOS(%x,%x,%s)", ++ (unsigned) bios.device_type, ++ (unsigned) bios.status_flags, ++ (char *) (dp + 1)); ++ } ++ break; ++ default: ++ grub_printf ("/UnknownBIOS(%x)", (unsigned) subtype); ++ break; ++ } ++ break; ++ ++ default: ++ grub_printf ("/UnknownType(%x,%x)\n", ++ (unsigned) type, ++ (unsigned) subtype); ++ return; ++ break; ++ } ++ ++ if (GRUB_EFI_END_ENTIRE_DEVICE_PATH (dp)) ++ break; ++ ++ dp = (grub_efi_device_path_t *) ((char *) dp + len); ++ } ++} ++ ++static inline int ++dpname_matches(char *str, char *candidate) ++{ ++ grub_size_t clen = grub_strlen(candidate); ++ char scratch[clen + 2]; ++ int rc; ++ ++ grub_strncpy(scratch, candidate, clen); ++ scratch[clen+1] = '\0'; ++ if (scratch[clen-1] == '$') ++ { ++ scratch[--clen] = '\0'; ++ rc = !grub_strncasecmp(str, scratch, clen); ++ return rc; ++ } ++ ++ grub_strncpy(scratch+clen, "(", 2); ++ clen = grub_strlen(scratch); ++ rc = !grub_strncasecmp(str, scratch, clen); ++ return rc; ++} ++ ++static void ++finish_param_parse(char *pos, char **end, char *tmp) ++{ ++ if (!pos || !end || !tmp) ++ return; ++ ++ if (*end) ++ **end = *tmp; ++} ++ ++static char * ++get_next_param(char *pos, char **end, char *tmp) ++{ ++ char *comma = NULL; ++ char *openparen = NULL; ++ char *closeparen = NULL; ++ ++ if (!pos || !end || !tmp) ++ return NULL; ++ ++ if (*end) ++ **end = *tmp; ++ ++ openparen = grub_strchr(pos, '('); ++ if (openparen && *openparen) ++ { ++ pos = grub_strnchr(openparen + 1, ' '); ++ comma = grub_strchr(pos, ','); ++ closeparen = grub_strchr(pos, ')'); ++ ++ if (comma && *comma) ++ { ++ *tmp = *comma; ++ *comma = '\0'; ++ *end = comma; ++ } ++ else if (closeparen && *closeparen) ++ { ++ *tmp = *closeparen; ++ *closeparen = '\0'; ++ *end = closeparen; ++ } ++ return pos; ++ } ++ ++ comma = grub_strchr(pos, ','); ++ if (comma && *comma) ++ { ++ pos = grub_strnchr(comma + 1, ' '); ++ comma = grub_strchr(pos, ','); ++ closeparen = grub_strchr(pos, ')'); ++ ++ if (comma && *comma) ++ { ++ *tmp = *comma; ++ *comma = '\0'; ++ *end = comma; ++ } ++ else if (closeparen && *closeparen) ++ { ++ *tmp = *closeparen; ++ *closeparen = '\0'; ++ *end = closeparen; ++ } ++ return pos; ++ } ++ ++ closeparen = grub_strchr(pos, ')'); ++ if (closeparen && *closeparen) ++ pos = grub_strnchr(closeparen + 1, ' '); ++ ++ return pos; ++} ++ ++struct generic_device_path ++ { ++ grub_efi_uint8_t type; ++ grub_efi_uint8_t subtype; ++ grub_efi_uint16_t length; ++ } __attribute__((packed)); ++ ++struct hd_media_device_path ++ { ++ grub_efi_uint8_t type; ++ grub_efi_uint8_t subtype; ++ grub_efi_uint16_t length; ++ grub_efi_uint32_t partition; ++ grub_efi_uint64_t startlba; ++ grub_efi_uint64_t size; ++ grub_efi_uint8_t signature[16]; ++ grub_efi_uint8_t mbr_type; ++ grub_efi_uint8_t signature_type; ++ } __attribute__((packed)); ++ ++static inline int ++parse_device_path_component(const char *orig_str, void *data) ++{ ++ int orig_str_len = strlen(orig_str) + 1; ++ char str[orig_str_len]; ++ char tmp; ++ char *pos = str; ++ int ret = 0; ++ ++ grub_strcpy(str, orig_str); ++ if (dpname_matches(str, "pci")) ++ { ++ } ++ else if (dpname_matches(str, "pccard")) ++ { ++ } ++ else if (dpname_matches(str, "mmap")) ++ { ++ } ++ else if (dpname_matches(str, "ctrl")) ++ { ++ } ++ else if (dpname_matches(str, "acpi")) ++ { ++ } ++ /* XXX what about _ADR? */ ++ /* messaging device paths */ ++ else if (dpname_matches(str, "atapi")) ++ { ++ } ++ else if (dpname_matches(str, "scsi")) ++ { ++ } ++ else if (dpname_matches(str, "fibrechannel")) ++ { ++ } ++ else if (dpname_matches(str, "1394")) ++ { ++ } ++ else if (dpname_matches(str, "usb")) ++ { ++ } ++ else if (dpname_matches(str, "sata")) ++ { ++ } ++ /* XXX what about usb-wwid */ ++ /* XXX what about lun */ ++ else if (dpname_matches(str, "usbclass")) ++ { ++ } ++ else if (dpname_matches(str, "i2o")) ++ { ++ } ++ else if (dpname_matches(str, "macaddr")) ++ { ++ } ++ else if (dpname_matches(str, "ipv4")) ++ { ++ } ++ else if (dpname_matches(str, "ipv6")) ++ { ++ } ++ /* XXX what about vlan */ ++ else if (dpname_matches(str, "infiniband")) ++ { ++ } ++ else if (dpname_matches(str, "uart")) ++ { ++ } ++ else if (dpname_matches(str, "uartflowctrl")) ++ { ++ } ++ else if (dpname_matches(str, "sas")) ++ { ++ } ++ else if (dpname_matches(str, "iscsi")) ++ { ++ } ++ /* media device paths */ ++ else if (dpname_matches(str, "hd")) ++ { ++ /* these look roughly like: ++ * HD(Partition,Type,Signature,Start, Size) ++ * but: ++ * - type may be optional. 1 or "MBR" means MBR. 2 or "GPT" means GPT. ++ * - start and size are optional ++ * - there can be random spaces ++ */ ++ struct hd_media_device_path hddp; ++ unsigned long tmpul; ++ char *end = NULL, c; ++ char tmps[19] = "0x"; ++ char *tmpsp; ++ ++ ret = 42; ++ ++ hddp.type = GRUB_EFI_MEDIA_DEVICE_PATH_TYPE; ++ hddp.subtype = GRUB_EFI_HARD_DRIVE_DEVICE_PATH_SUBTYPE; ++ hddp.length = ret; ++ ++ //pos += grub_strcspn(pos, '('); ++ pos = get_next_param(pos, &end, &c); ++ if (!*pos) ++ { ++broken_hd: ++ finish_param_parse(pos, &end, &c); ++ return 0; ++ } ++ grub_strncpy(tmps+2, pos, 16); ++ tmps[18] = '\0'; ++ tmpsp = tmps; ++ safe_parse_maxulong(&tmpsp, &tmpul); ++ hddp.partition = tmpul; ++ ++ pos = get_next_param(pos, &end, &c); ++ if (!*pos) ++ goto broken_hd; ++ grub_strcpy(tmps+2, pos); ++ tmpsp = tmps; ++ safe_parse_maxulong(&tmpsp, &tmpul); ++ hddp.startlba = tmpul; ++ ++ pos = get_next_param(pos, &end, &c); ++ if (!*pos) ++ goto broken_hd; ++ grub_strcpy(tmps+2, pos); ++ tmpsp = tmps; ++ safe_parse_maxulong(&tmpsp, &tmpul); ++ hddp.size = tmpul; ++ ++ pos = get_next_param(pos, &end, &c); ++ if (!*pos) ++ goto broken_hd; ++ if (!grub_strcmp(pos, "None")) ++ { ++ hddp.signature_type = 0; ++ grub_memset(hddp.signature, '\0', sizeof(hddp.signature)); ++ } ++ else if (grub_strnlen(pos, 36) == 8) ++ { ++ grub_efi_uint32_t tmpu32; ++ grub_strncpy(tmps+2, pos, 8); ++ tmps[10] = '\0'; ++ tmpsp = tmps; ++ safe_parse_maxulong(&tmpsp, &tmpul); ++ tmpu32 = tmpul; ++ hddp.signature_type = 1; ++ grub_memcpy(hddp.signature, &tmpu32, sizeof(tmpu32)); ++ } ++ else if (grub_strnlen(pos, 36) == 36) ++ { ++ grub_efi_uint32_t tmpu32; ++ grub_efi_uint16_t tmpu16; ++ grub_efi_uint8_t tmpu8; ++ ++ grub_strncpy(tmps+2, pos, 8); ++ tmps[10] = '\0'; ++ tmpsp = tmps; ++ safe_parse_maxulong(&tmpsp, &tmpul); ++ tmpu32 = tmpul; ++ grub_memcpy(hddp.signature, &tmpu32, sizeof(tmpu32)); ++ ++ grub_strncpy(tmps+2, pos+9, 4); ++ tmps[6] = '\0'; ++ tmpsp = tmps; ++ safe_parse_maxulong(&tmpsp, &tmpul); ++ tmpu16 = tmpul; ++ grub_memcpy(hddp.signature + 4, &tmpu16, sizeof(tmpu16)); ++ ++ grub_strncpy(tmps+2, pos+14, 4); ++ tmps[6] = '\0'; ++ tmpsp = tmps; ++ safe_parse_maxulong(&tmpsp, &tmpul); ++ tmpu16 = tmpul; ++ grub_memcpy(hddp.signature + 6, &tmpu16, sizeof(tmpu16)); ++ ++ /* these are displayed like a u16, but they're a u8. thanks. */ ++ grub_strncpy(tmps+2, pos+19, 2); ++ tmps[4] = '\0'; ++ tmpsp = tmps; ++ safe_parse_maxulong(&tmpsp, &tmpul); ++ tmpu8 = tmpul; ++ grub_memcpy(hddp.signature + 8, &tmpu8, sizeof(tmpu8)); ++ grub_strncpy(tmps+2, pos+21, 2); ++ tmps[4] = '\0'; ++ tmpsp = tmps; ++ safe_parse_maxulong(&tmpsp, &tmpul); ++ tmpu8 = tmpul; ++ grub_memcpy(hddp.signature + 9, &tmpu8, sizeof(tmpu8)); ++ ++ grub_strncpy(tmps+2, pos+24, 2); ++ tmps[4] = '\0'; ++ tmpsp = tmps; ++ safe_parse_maxulong(&tmpsp, &tmpul); ++ tmpu8 = tmpul; ++ grub_memcpy(hddp.signature + 10, &tmpu8, sizeof(tmpu8)); ++ ++ grub_strncpy(tmps+2, pos+26, 2); ++ tmps[4] = '\0'; ++ tmpsp = tmps; ++ safe_parse_maxulong(&tmpsp, &tmpul); ++ tmpu8 = tmpul; ++ grub_memcpy(hddp.signature + 11, &tmpu8, sizeof(tmpu8)); ++ ++ grub_strncpy(tmps+2, pos+28, 2); ++ tmps[4] = '\0'; ++ tmpsp = tmps; ++ safe_parse_maxulong(&tmpsp, &tmpul); ++ tmpu8 = tmpul; ++ grub_memcpy(hddp.signature + 12, &tmpu8, sizeof(tmpu8)); ++ ++ grub_strncpy(tmps+2, pos+30, 2); ++ tmps[4] = '\0'; ++ tmpsp = tmps; ++ safe_parse_maxulong(&tmpsp, &tmpul); ++ tmpu8 = tmpul; ++ grub_memcpy(hddp.signature + 13, &tmpu8, sizeof(tmpu8)); ++ ++ grub_strncpy(tmps+2, pos+32, 2); ++ tmps[4] = '\0'; ++ tmpsp = tmps; ++ safe_parse_maxulong(&tmpsp, &tmpul); ++ tmpu8 = tmpul; ++ grub_memcpy(hddp.signature + 14, &tmpu8, sizeof(tmpu8)); ++ ++ grub_strncpy(tmps+2, pos+34, 2); ++ tmps[4] = '\0'; ++ tmpsp = tmps; ++ safe_parse_maxulong(&tmpsp, &tmpul); ++ tmpu8 = tmpul; ++ grub_memcpy(hddp.signature + 15, &tmpu8, sizeof(tmpu8)); ++ ++ hddp.signature_type = 2; ++ } ++ else ++ goto broken_hd; ++ ++ hddp.mbr_type = hddp.signature_type; ++ ++ if (data) ++ grub_memcpy(data, &hddp, sizeof(hddp)); ++ } ++ else if (dpname_matches(str, "cd")) ++ { ++ } ++ else if (dpname_matches(str, "file")) ++ { ++ } ++ else if (dpname_matches(str, "protocol")) ++ { ++ } ++ /* what about piwg firmware file? */ ++ /* what about piwg firmware volume? */ ++ /* what about relative offset media */ ++ else if (dpname_matches(str, "bios")) ++ { ++ } ++ /* This is the end beautiful friend */ ++ else if (dpname_matches(str, "EndEntire$")) ++ { ++ struct generic_device_path gdp = { ++ .type = GRUB_EFI_END_DEVICE_PATH_TYPE, ++ .subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE, ++ .length = 4 ++ }; ++ ret = 4; ++ if (data) ++ grub_memmove(data, &gdp, sizeof(gdp)); ++ } ++ else if (dpname_matches(str, "EndThis$")) ++ { ++ struct generic_device_path gdp = { ++ .type = GRUB_EFI_END_DEVICE_PATH_TYPE, ++ .subtype = GRUB_EFI_END_THIS_DEVICE_PATH_SUBTYPE, ++ .length = 4 ++ }; ++ ret = 4; ++ if (data) ++ grub_memmove(data, &gdp, sizeof(gdp)); ++ } ++ else if (dpname_matches(str, "EndUnknown$")) ++ { ++ struct generic_device_path gdp = { ++ .type = GRUB_EFI_END_DEVICE_PATH_TYPE, ++ .subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE, ++ .length = 4 ++ }; ++ ret = 4; ++ if (data) ++ grub_memmove(data, &gdp, sizeof(gdp)); ++ } ++ /* handle anything we didn't recognize */ ++ else if (dpname_matches(str, "vendor")) ++ { ++ /* needs to handle: ++ * 1) hw vendor ++ * 2) messaging vendor ++ * 3) media vendor ++ */ ++ } ++ else ++ { ++ } ++ ++ return ret; ++} ++ ++grub_efi_device_path_t * ++device_path_from_utf8 (const char *device) ++{ ++ grub_size_t device_len; ++ grub_efi_device_path_t *dp = NULL; ++ ++ device_len = parse_device_path_component(device, dp); ++ device_len += parse_device_path_component("EndEntire", dp); ++ dp = grub_malloc(device_len); ++ if (!dp) ++ return NULL; ++ device_len = parse_device_path_component(device, dp); ++ device_len += parse_device_path_component("EndEntire", ++ (void *)((unsigned long)dp + device_len)); ++ ++ ++ return dp; ++} +diff --git a/efi/efigraph.c b/efi/efigraph.c +new file mode 100644 +index 0000000..6905e07 +--- /dev/null ++++ b/efi/efigraph.c +@@ -0,0 +1,1501 @@ ++/* efigraph.c - EFI "graphics output" support for GRUB/EFI */ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright 2007 Red Hat, Inc. ++ * Copyright (C) 2007 Intel Corp. ++ * Copyright (C) 2001,2002 Red Hat, Inc. ++ * Portions copyright (C) 2000 Conectiva, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifdef SUPPORT_GRAPHICS ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++ ++#include "graphics.h" ++#include "xpm.h" ++ ++#define dbgdelay(_f, _l) ({\ ++ if (debug_graphics) { \ ++ do { \ ++ grub_efi_stall(1000); \ ++ } while (console_getkey() < 0); \ ++ } \ ++ }) ++ ++#define dprintf(format, args...) ({ \ ++ if (debug_graphics) { \ ++ struct term_entry *_tt = current_term; \ ++ current_term = term_table; \ ++ grub_printf(format, ##args); \ ++ current_term = _tt; \ ++ } \ ++ }) ++ ++struct grub_pixel_info ++{ ++ char depth_bits; ++ char depth_bytes; ++ unsigned char red_size; ++ unsigned char red_pos; ++ unsigned char green_size; ++ unsigned char green_pos; ++ unsigned char blue_size; ++ unsigned char blue_pos; ++ unsigned char reserved_size; ++ unsigned char reserved_pos; ++ int line_length; ++}; ++ ++typedef struct grub_pixel_info grub_pixel_info_t; ++ ++ ++static grub_efi_guid_t graphics_output_guid = GRUB_EFI_GRAPHICS_OUTPUT_GUID; ++static grub_efi_guid_t pci_io_guid = GRUB_EFI_PCI_IO_GUID; ++ ++#ifndef MIN ++#define MIN(x,y) ( ((x) < (y)) ? (x) : (y)) ++#endif ++#ifndef MAX ++#define MAX(x,y) ( ((x) < (y)) ? (y) : (x)) ++#endif ++ ++#define pixel_equal(x,y) ((x).bgrr.red == (y).bgrr.red && \ ++ (x).bgrr.green == (y).bgrr.green && \ ++ (x).bgrr.blue == (y).bgrr.blue && \ ++ (x).bgrr.reserved == (y).bgrr.reserved) ++ ++struct video_mode { ++ grub_efi_uint32_t number; ++ grub_efi_uintn_t size; ++ grub_efi_graphics_output_mode_information_t *info; ++}; ++ ++#define MAX_PALETTE 16 ++struct eg { ++ struct graphics_backend *backend; ++ grub_efi_graphics_output_t *output_intf; ++ struct video_mode **modes; ++ int max_mode; ++ grub_efi_uint32_t text_mode; ++ grub_efi_uint32_t graphics_mode; ++ grub_pixel_info_t pixel_info; ++ enum { TEXT, GRAPHICS } current_mode; ++ ++ position_t screen_size; ++ position_t screen_pos; ++ ++ struct bltbuf *background; ++ ++ grub_efi_graphics_output_pixel_t palette[MAX_PALETTE + 1]; ++}; ++ ++#define RGB(r,g,b) { .bgrr.red = r, .bgrr.green = g, .bgrr.blue = b } ++ ++static grub_efi_graphics_output_pixel_t cga_colors[] = { ++ RGB(0x00,0x00,0x00), // 0 Black ++ RGB(0x7f,0x00,0x00), // 1 Dark Red ++ RGB(0x00,0x7f,0x00), // 2 Dark Green ++ RGB(0x7f,0x7f,0x00), // 3 Dark Yellow ++ RGB(0x00,0x00,0x7f), // 4 Dark Blue ++ RGB(0x7f,0x00,0x7f), // 5 Dark Magenta ++ RGB(0x00,0x7f,0x7f), // 6 Dark Cyan ++ RGB(0xc0,0xc0,0xc0), // 7 Light Grey ++ RGB(0x7f,0x7f,0x7f), // 8 Dark Grey ++ RGB(0xff,0x00,0x00), // 9 Red ++ RGB(0x00,0xff,0x00), // 10 Green ++ RGB(0xff,0xff,0x00), // 11 Yellow ++ RGB(0x00,0x00,0xff), // 12 Blue ++ RGB(0xff,0x00,0xff), // 13 Magenta ++ RGB(0x00,0xff,0xff), // 14 Cyan ++ RGB(0xff,0xff,0xff), // 15 White ++ RGB(0xff,0xff,0xff), // 16 Also white ;) ++}; ++ ++static const int n_cga_colors = sizeof (cga_colors) / sizeof (cga_colors[0]); ++ ++static void ++find_bits (unsigned long mask, unsigned char *first, ++ unsigned char* len) ++{ ++ unsigned char bit_pos = 0, bit_len = 0; ++ *first =0; ++ *len = 0; ++ if (mask == 0) ++ return; ++ while (! (mask & 0x1)) { ++ mask = mask >> 1; ++ bit_pos++; ++ } ++ while (mask & 0x1) { ++ mask = mask >> 1; ++ bit_len++; ++ } ++ *first = bit_pos; ++ *len = bit_len; ++} ++ ++static grub_efi_graphics_output_mode_information_t * ++get_graphics_mode_info_for_mode(struct eg *eg, int mode) ++{ ++ int i; ++ ++ for (i = 0; i < eg->max_mode; i++) { ++ if (eg->modes[i] == NULL) ++ continue; ++ if (eg->modes[i]->number == mode) ++ return eg->modes[i]->info; ++ } ++ return NULL; ++} ++ ++static grub_efi_graphics_output_mode_information_t * ++get_graphics_mode_info(struct eg *eg) ++{ ++ return get_graphics_mode_info_for_mode(eg, eg->graphics_mode); ++} ++ ++static void ++print_mode_info(struct video_mode *mode) ++{ ++ grub_efi_graphics_output_mode_information_t *info = mode->info; ++ dprintf("mode %d (%dx%d, pitch %d, ", ++ mode->number, ++ info->horizontal_resolution, ++ info->vertical_resolution, ++ info->pixels_per_scan_line); ++ switch(info->pixel_format) { ++ case GRUB_EFI_PIXEL_RGBR_8BIT_PER_COLOR: ++ dprintf("rgbr 8bpc"); ++ break; ++ case GRUB_EFI_PIXEL_BGRR_8BIT_PER_COLOR: ++ dprintf("bgrr 8bpc"); ++ break; ++ case GRUB_EFI_PIXEL_BIT_MASK: ++ dprintf("bitmask color"); ++ break; ++ case GRUB_EFI_PIXEL_BLT_ONLY: ++ dprintf("blt only"); ++ break; ++ } ++ dprintf(")\n"); ++ if (info->pixel_format == GRUB_EFI_PIXEL_BIT_MASK) { ++ dprintf("red: %08x green: %08x blue: %08x res: %08x\n", ++ info->pixel_information.red_mask, ++ info->pixel_information.green_mask, ++ info->pixel_information.blue_mask, ++ info->pixel_information.reserved_mask); ++ } ++} ++ ++static void ++set_kernel_params(struct graphics_backend *backend, ++ struct linux_kernel_params *params) ++{ ++ struct eg *eg; ++ ++ if (!backend || !backend->priv) ++ return; ++ ++ eg = backend->priv; ++ grub_efi_graphics_output_t *gop_intf = NULL; ++ grub_efi_graphics_output_mode_t *gop_mode = NULL; ++ grub_efi_status_t efi_status = GRUB_EFI_SUCCESS; ++ grub_efi_graphics_output_mode_information_t *gop_info = NULL; ++ grub_efi_uintn_t size; ++ ++ gop_intf = grub_efi_locate_protocol (&graphics_output_guid, NULL); ++ if (gop_intf == NULL) ++ return; ++ ++ gop_mode = gop_intf->mode; ++ ++ efi_status = Call_Service_4 (gop_intf->query_mode, ++ gop_intf, gop_mode->mode, &size, &gop_info); ++ ++ ++ if (efi_status == GRUB_EFI_SUCCESS) { ++ /* No VBE on EFI. */ ++ params->lfb_width = gop_info->horizontal_resolution; ++ params->lfb_height = gop_info->vertical_resolution; ++ params->lfb_base = gop_mode->frame_buffer_base; ++ params->lfb_size = gop_mode->frame_buffer_size; ++ params->lfb_pages = 1; ++ params->vesapm_segment = 0; ++ params->vesapm_offset = 0; ++ params->vesa_attrib = 0; ++ if (gop_info->pixel_format == GRUB_EFI_PIXEL_RGBR_8BIT_PER_COLOR) { ++ params->lfb_depth = 32; ++ params->red_mask_size = 8; ++ params->red_field_pos = 0; ++ params->green_mask_size = 8; ++ params->green_field_pos = 8; ++ params->blue_mask_size = 8; ++ params->blue_field_pos = 16; ++ params->reserved_mask_size = 8; ++ params->reserved_field_pos = 24; ++ params->lfb_line_len = gop_info->pixels_per_scan_line * 4; ++ } else if (gop_info->pixel_format == ++ GRUB_EFI_PIXEL_BGRR_8BIT_PER_COLOR) { ++ params->lfb_depth = 32; ++ params->red_mask_size = 8; ++ params->red_field_pos = 16; ++ params->green_mask_size = 8; ++ params->green_field_pos = 8; ++ params->blue_mask_size = 8; ++ params->blue_field_pos = 0; ++ params->reserved_mask_size = 8; ++ params->reserved_field_pos = 24; ++ params->lfb_line_len = gop_info->pixels_per_scan_line * 4; ++ } else if (gop_info->pixel_format == GRUB_EFI_PIXEL_BIT_MASK) { ++ find_bits (gop_info->pixel_information.red_mask, ++ ¶ms->red_field_pos, ¶ms->red_mask_size); ++ find_bits (gop_info->pixel_information.green_mask, ++ ¶ms->green_field_pos, ¶ms->green_mask_size); ++ find_bits (gop_info->pixel_information.blue_mask, ++ ¶ms->blue_field_pos, ¶ms->blue_mask_size); ++ find_bits (gop_info->pixel_information.reserved_mask, ++ ¶ms->reserved_field_pos, ¶ms->reserved_mask_size); ++ params->lfb_depth = params->red_mask_size ++ + params->green_mask_size ++ + params->blue_mask_size ++ + params->reserved_mask_size; ++ params->lfb_line_len = ++ (gop_info->pixels_per_scan_line * params->lfb_depth) / 8; ++ } else { ++ params->lfb_depth = 4; ++ params->red_mask_size = 0; ++ params->red_field_pos = 0; ++ params->green_mask_size = 0; ++ params->green_field_pos = 0; ++ params->blue_mask_size = 0; ++ params->blue_field_pos = 0; ++ params->reserved_mask_size = 0; ++ params->reserved_field_pos = 0; ++ params->lfb_line_len = params->lfb_width / 2; ++ } ++#if 0 ++ params->video_cursor_x = 0; ++ params->video_cursor_y = 0; ++ params->video_page = 0; ++ params->video_mode = 0; ++ params->video_width = 0; ++ params->video_ega_bx = 0; ++ params->video_height = 0; ++ params->have_vga = 0x70; ++ params->font_size = 0; ++#else ++ params->video_cursor_x = grub_efi_system_table->con_out->mode->cursor_column; ++ params->video_cursor_y = grub_efi_system_table->con_out->mode->cursor_row; ++ params->video_page = 0; /* ??? */ ++ params->video_mode = grub_efi_system_table->con_out->mode->mode; ++ params->video_width = (grub_console_getwh () >> 8); ++ params->video_ega_bx = 0; ++ params->video_height = (grub_console_getwh () & 0xff); ++ params->have_vga = VIDEO_TYPE_EFI; ++ params->font_size = 16; /* XXX */ ++#endif ++ } ++} ++ ++static void ++pixel_to_rgb(grub_efi_graphics_output_pixel_t *pixel, ++ int *red, int *green, int *blue) ++{ ++ *red = pixel->bgrr.red; ++ *green = pixel->bgrr.green; ++ *blue = pixel->bgrr.blue; ++} ++ ++static void ++rgb_to_pixel(int red, int green, int blue, ++ grub_efi_graphics_output_pixel_t *pixel) ++{ ++ pixel->bgrr.red = red; ++ pixel->bgrr.green = green; ++ pixel->bgrr.blue = blue; ++} ++ ++static void ++position_to_phys(struct eg *eg, position_t *virt, position_t *phys) ++{ ++ phys->x = virt->x + eg->screen_pos.x; ++ phys->y = virt->y + eg->screen_pos.y; ++} ++ ++static int ++abs_paddr(struct eg *eg, position_t *virt) ++{ ++ position_t phys; ++ position_to_phys(eg, virt, &phys); ++ return phys.x + phys.y * eg->screen_size.x; ++} ++ ++struct bltbuf { ++ grub_efi_uintn_t width; ++ grub_efi_uintn_t height; ++ grub_efi_graphics_output_pixel_t pixbuf[]; ++}; ++ ++static struct bltbuf *alloc_bltbuf(grub_efi_uintn_t width, ++ grub_efi_uintn_t height) ++{ ++ struct bltbuf *buf = NULL; ++ grub_efi_uintn_t pixbuf_size = width * height * ++ sizeof (grub_efi_graphics_output_pixel_t); ++ ++ if (!(buf = grub_malloc(sizeof(buf->width) + sizeof(buf->height) + ++ pixbuf_size))) ++ return NULL; ++ ++ buf->width = width; ++ buf->height = height; ++ grub_memset(buf->pixbuf, '\0', pixbuf_size); ++ return buf; ++} ++ ++ ++static void ++hw_blt_pos_to_screen_pos(struct eg *eg, struct bltbuf *bltbuf, ++ position_t *bltpos, position_t *bltsz, position_t *pos) ++{ ++ position_t phys; ++ ++ position_to_phys(eg, pos, &phys); ++ ++ Call_Service_10(eg->output_intf->blt, eg->output_intf, (void *)bltbuf->pixbuf, ++ GRUB_EFI_BLT_BUFFER_TO_VIDEO, ++ bltpos->x, bltpos->y, ++ phys.x, phys.y, ++ bltsz->x, bltsz->y, ++ 0); ++} ++ ++static void ++blt_pos_to_screen_pos(struct eg *eg, struct bltbuf *bltbuf, ++ position_t *bltpos, position_t *bltsz, position_t *pos) ++{ ++ grub_efi_graphics_output_mode_information_t *info = get_graphics_mode_info(eg); ++ grub_efi_graphics_output_pixel_t *pixel; ++ position_t phys; ++ const int pxlstride = info->pixels_per_scan_line; ++ const int bytestride = pxlstride * sizeof (*pixel); ++ ++ position_to_phys(eg, pos, &phys); ++ ++ if (info->pixel_format == GRUB_EFI_PIXEL_BLT_ONLY || 1) { ++ hw_blt_pos_to_screen_pos(eg, bltbuf, bltpos, bltsz, pos); ++#if 0 ++ } else if (info->pixel_format == GRUB_EFI_PIXEL_BIT_MASK) { ++ int y; ++ grub_pixel_info_t *pinfo = &eg->pixel_info; ++ const int maxpixels = ++ MIN(info->horizontal_resolution - pos->x, bltsz->x); ++ ++ for (y = bltpos->y; y < bltpos->y + bltsz->y; y++, phys.y++) { ++ char raw_pixels[maxpixels * pinfo->depth_bytes]; ++ char *fb = (char *)(unsigned long)eg->output_intf->mode->frame_buffer_base; ++ int x; ++ ++ pixel = (void *)&bltbuf->pixbuf[y * bltbuf->width + bltpos->x]; ++ fb += phys.y * pinfo->line_length + phys.x * pinfo->depth_bytes; ++ ++ for (x = 0; x < maxpixels; x++) { ++ char depth_bytes = pinfo->depth_bytes; ++ char *raw_pixel = raw_pixels + x * depth_bytes; ++ ++ int red, green, blue, color; ++ char *colorp; ++ ++#if 0 ++ red = pixel[x].bgrr.red & 0x3f; ++ green = pixel[x].bgrr.green & 0x3f; ++ blue = pixel[x].bgrr.blue & 0x3f; ++ red = red * ((1 << pinfo->red_size) - 1) / 0x3f; ++ green = green * ((1 << pinfo->green_size) - 1) / 0x3f; ++ blue = blue * ((1 << pinfo->blue_size) - 1) / 0x3f; ++#else ++ red = pixel[x].bgrr.red; ++ green = pixel[x].bgrr.green; ++ blue = pixel[x].bgrr.blue; ++ ++ red >>= 8 - pinfo->red_size; ++ green >>= 8 - pinfo->green_size; ++ blue >>= 8 - pinfo->blue_size; ++#endif ++ ++ color = (red << pinfo->red_pos) | ++ (green << pinfo->green_pos) | ++ (blue << pinfo->blue_pos); ++ colorp = (void *)&color; ++ while (depth_bytes--) ++ *raw_pixel++ = *colorp++; ++ } ++ memmove(fb, raw_pixels, maxpixels * pinfo->depth_bytes); ++ } ++#endif ++ } else { ++ int y; ++ grub_pixel_info_t *pinfo = &eg->pixel_info; ++ const int maxpixels = ++ MIN(info->horizontal_resolution - pos->x, bltsz->x); ++ ++ //char *line = &fb[phys.y * bytestride + phys.x * sizeof(*pixel)]; ++ for (y = bltpos->y; y < bltpos->y + bltsz->y; y++, phys.y++) { ++ char raw_pixels[maxpixels * sizeof(*pixel)]; ++ char *fb = (char *)(unsigned long)eg->output_intf->mode->frame_buffer_base; ++ int x; ++ ++ pixel = (void *)&bltbuf->pixbuf[y * bltbuf->width + bltpos->x]; ++ fb += phys.y * pinfo->line_length + phys.x * pinfo->depth_bytes; ++ ++ if (info->pixel_format == GRUB_EFI_PIXEL_BGRR_8BIT_PER_COLOR) { ++ memmove(raw_pixels, pixel, maxpixels * sizeof (*pixel)); ++ continue; ++ } else if (info->pixel_format==GRUB_EFI_PIXEL_RGBR_8BIT_PER_COLOR) { ++ grub_efi_graphics_output_pixel_t shadow[maxpixels]; ++ for (x = 0; x < maxpixels; x++) { ++ shadow[x].rgbr.red = pixel[x].bgrr.red; ++ shadow[x].rgbr.green = pixel[x].bgrr.green; ++ shadow[x].rgbr.blue = pixel[x].bgrr.blue; ++ } ++ ++ memmove(raw_pixels, shadow, maxpixels * sizeof (*pixel)); ++ } else if (info->pixel_format == GRUB_EFI_PIXEL_BIT_MASK) { ++ for (x = 0; x < maxpixels; x++) { ++ char depth_bytes = pinfo->depth_bytes; ++ char *raw_pixel = raw_pixels + x * depth_bytes; ++ ++ int red, green, blue, color; ++ char *colorp; ++ ++#if 0 ++ red = pixel[x].bgrr.red & 0x3f; ++ green = pixel[x].bgrr.green & 0x3f; ++ blue = pixel[x].bgrr.blue & 0x3f; ++ red = red * ((1 << pinfo->red_size) - 1) / 0x3f; ++ green = green * ((1 << pinfo->green_size) - 1) / 0x3f; ++ blue = blue * ((1 << pinfo->blue_size) - 1) / 0x3f; ++#else ++ red = pixel[x].bgrr.red; ++ green = pixel[x].bgrr.green; ++ blue = pixel[x].bgrr.blue; ++ ++ red >>= 8 - pinfo->red_size; ++ green >>= 8 - pinfo->green_size; ++ blue >>= 8 - pinfo->blue_size; ++#endif ++ ++ color = (red << pinfo->red_pos) | ++ (green << pinfo->green_pos) | ++ (blue << pinfo->blue_pos); ++ colorp = (void *)&color; ++ while (depth_bytes--) ++ *raw_pixel++ = *colorp++; ++ } ++ } ++ memmove(fb, raw_pixels, maxpixels * pinfo->depth_bytes); ++ } ++ } ++} ++ ++static void ++blt_to_screen(struct eg *eg, struct bltbuf *bltbuf) ++{ ++#if 0 ++ position_t addr = {0, 0}; ++ ++ position_to_phys(eg, &addr, &addr); ++ ++ Call_Service_10(eg->output_intf->blt, eg->output_intf, bltbuf->pixbuf, ++ GRUB_EFI_BLT_BUFFER_TO_VIDEO, ++ 0, 0, ++ addr.x, addr.y, ++ bltbuf->width, bltbuf->height, ++ 0); ++#else ++ const int pxlstride = eg->output_intf->mode->info->pixels_per_scan_line; ++ position_t bltsz, bltpos = { 0, 0 }, pos = { 0, 0 }; ++ bltsz.x = MIN(bltbuf->width, pxlstride); ++ bltsz.y = MIN(bltbuf->height, eg->output_intf->mode->info->vertical_resolution); ++ ++ blt_pos_to_screen_pos(eg, bltbuf, &bltpos, &bltsz, &pos); ++#endif ++} ++ ++static void ++blt_to_screen_pos(struct eg *eg, struct bltbuf *bltbuf, position_t *pos) ++{ ++ position_t bltpos = {0, 0}; ++ position_t bltsz = { bltbuf->width, bltbuf->height }; ++ blt_pos_to_screen_pos(eg, bltbuf, &bltpos, &bltsz, pos); ++} ++ ++static int ++save_video_mode(struct eg *eg, struct video_mode *mode) ++{ ++ grub_efi_status_t status; ++ ++ ++ ++ status = Call_Service_4(eg->output_intf->query_mode, eg->output_intf, ++ mode->number, &mode->size, &mode->info); ++ return status == GRUB_EFI_SUCCESS; ++} ++ ++static void ++get_screen_size(struct graphics_backend *backend, position_t *size) ++{ ++ struct eg *eg = backend->priv; ++ grub_efi_graphics_output_mode_information_t *info; ++ ++ info = get_graphics_mode_info(eg); ++ ++ size->x = info->horizontal_resolution; ++ size->y = info->vertical_resolution; ++} ++ ++static void ++bltbuf_set_pixel(struct bltbuf *bltbuf, position_t *pos, ++ grub_efi_graphics_output_pixel_t *pixel) ++{ ++ if (pos->x < 0 || pos->x >= bltbuf->width) ++ return; ++ if (pos->x < 0 || pos->y >= bltbuf->height) ++ return; ++ grub_memmove(&bltbuf->pixbuf[pos->x + pos->y * bltbuf->width], pixel, ++ sizeof *pixel); ++} ++ ++static void ++bltbuf_get_pixel(struct bltbuf *bltbuf, position_t *pos, ++ grub_efi_graphics_output_pixel_t *pixel) ++{ ++ if (bltbuf && pos->x < bltbuf->width && pos->y < bltbuf->height) { ++ grub_memmove(pixel, &bltbuf->pixbuf[pos->x + pos->y * bltbuf->width], ++ sizeof *pixel); ++ } else { ++ pixel->bgrr.red = 0x00; ++ pixel->bgrr.green = 0x00; ++ pixel->bgrr.blue = 0x00; ++ } ++} ++ ++static void ++bltbuf_set_pixel_rgb(struct bltbuf *bltbuf, position_t *pos, ++ int red, int green, int blue) ++{ ++ grub_efi_graphics_output_pixel_t pixel; ++ rgb_to_pixel(red, green, blue, &pixel); ++ bltbuf_set_pixel(bltbuf, pos, &pixel); ++} ++ ++static void ++bltbuf_set_pixel_idx(struct eg *eg, struct bltbuf *bltbuf, ++ position_t *pos, int idx) ++{ ++ bltbuf_set_pixel(bltbuf, pos, &eg->palette[idx]); ++} ++ ++static void ++bltbuf_get_pixel_idx(struct bltbuf *bltbuf, position_t *pos, int *idx) ++{ ++ grub_efi_graphics_output_pixel_t pixel; ++ ++ rgb_to_pixel(0, 0, 0, &pixel); ++ bltbuf_get_pixel(bltbuf, pos, &pixel); ++ for (*idx = 0; *idx < 16; (*idx)++) { ++ if (pixel_equal(cga_colors[*idx], pixel)) ++ break; ++ } ++} ++ ++static struct bltbuf * ++xpm_to_bltbuf(struct xpm *xpm) ++{ ++ struct bltbuf *bltbuf = NULL; ++ position_t pos; ++ ++ if (!(bltbuf = alloc_bltbuf(xpm->width, xpm->height))) ++ return NULL; ++ ++ for (pos.y = 0; pos.y < xpm->height; pos.y++) { ++ for (pos.x = 0; pos.x < xpm->width; pos.x++) { ++ xpm_pixel_t xpl; ++ unsigned char idx; ++ ++ idx = xpm_get_pixel_idx(xpm, pos.x, pos.y); ++ xpm_get_idx(xpm, idx, &xpl); ++ ++ bltbuf_set_pixel_rgb(bltbuf, &pos, xpl.red, xpl.green, xpl.blue); ++ } ++ } ++ ++ return bltbuf; ++} ++ ++static void ++cursor(struct graphics_backend *backend, int set) ++{ ++ struct eg *eg; ++ int ch, invert; ++ unsigned short *text; ++ position_t fpos, screensz; ++ int offset; ++ ++ eg = backend->priv; ++ ++ if (set && !graphics_get_scroll()) ++ return; ++ ++ text = graphics_get_text_buf(); ++ graphics_get_font_position(&fpos); ++ graphics_get_screen_rowscols(&screensz); ++ ++ offset = fpos.y * screensz.x + fpos.x; ++ ++ if (set) ++ text[offset] |= 0x0200; ++ ++ graphics_clbl(fpos.x, fpos.y, 1, 1, 1); ++ ++ if (set) ++ text[offset] &= 0xfdff; ++} ++ ++static void blank(struct graphics_backend *backend); ++ ++static void ++reset_screen_geometry(struct graphics_backend *backend) ++{ ++ struct eg *eg = backend->priv; ++ struct xpm *xpm = graphics_get_splash_xpm(); ++ grub_efi_graphics_output_mode_information_t *info; ++ position_t screensz; ++ ++ info = get_graphics_mode_info(eg); ++ ++ if (xpm) { ++ eg->screen_pos.x = ++ (info->horizontal_resolution - xpm->width) / 2; ++ eg->screen_pos.y = ++ (info->vertical_resolution - xpm->height) / 2; ++ } else { ++ eg->screen_pos.x = 0; ++ eg->screen_pos.y = 0; ++ } ++ ++ blank(backend); ++ graphics_get_screen_rowscols(&screensz); ++ graphics_clbl(0, 0, screensz.x, screensz.y, 0); ++ graphics_clbl(0, 0, screensz.x, screensz.y, 1); ++} ++ ++static void ++setxy(struct graphics_backend *backend, position_t *pos) ++{ ++ position_t fpos; ++ ++ fpos.x = pos->x; ++ fpos.y = pos->y; ++ graphics_set_font_position(&fpos); ++} ++ ++static void ++eg_getxy(struct graphics_backend *backend, position_t *pos) ++{ ++ graphics_get_font_position(pos); ++} ++ ++static void ++draw_pixel(struct graphics_backend *backend, position_t *pos, pixel_t *pixel) ++{ ++ struct bltbuf *bltbuf = NULL; ++ grub_efi_graphics_output_pixel_t *eup = (grub_efi_graphics_output_pixel_t *)pixel; ++ ++ bltbuf = alloc_bltbuf(1,1); ++ if (!bltbuf) ++ return; ++ ++ grub_memmove(&bltbuf->pixbuf[0], eup, sizeof (*eup)); ++ ++ blt_to_screen_pos(backend->priv, bltbuf, pos); ++ ++ grub_free(bltbuf); ++} ++ ++static pixel_t * ++get_pixel_idx(struct graphics_backend *backend, int idx) ++{ ++ static grub_efi_graphics_output_pixel_t pixel; ++ struct eg *eg = backend->priv; ++ if (idx < 0 || idx > MAX_PALETTE) ++ return NULL; ++ pixel.bgrr.red = eg->palette[idx].bgrr.red; ++ pixel.bgrr.green = eg->palette[idx].bgrr.green; ++ pixel.bgrr.blue = eg->palette[idx].bgrr.blue; ++ return (pixel_t *)&pixel; ++} ++ ++static pixel_t * ++get_pixel_rgb(struct graphics_backend *backend, int red, int green, int blue) ++{ ++ static grub_efi_graphics_output_pixel_t pixel; ++ rgb_to_pixel(red, green, blue, &pixel); ++ return &pixel; ++} ++ ++static void ++set_palette(struct graphics_backend *backend, int idx, ++ int red, int green, int blue) ++{ ++ grub_efi_graphics_output_pixel_t pixel; ++ struct eg *eg = backend->priv; ++ ++ if (idx > MAX_PALETTE) ++ return; ++ rgb_to_pixel(red, green, blue, &pixel); ++ grub_memmove(&eg->palette[idx], &pixel, sizeof pixel); ++} ++ ++static void ++blank(struct graphics_backend *backend) ++{ ++ struct eg *eg = backend->priv; ++ struct bltbuf *bltbuf; ++ position_t pos = {0, 0}; ++ grub_efi_graphics_output_mode_information_t *info; ++ grub_efi_uintn_t x, y, i, j; ++ unsigned char r = 0 ,g = 0; ++ ++ info = get_graphics_mode_info(eg); ++ x = info->horizontal_resolution; ++ y = info->vertical_resolution; ++ ++ if (x == 0 || y == 0) ++ return; ++ ++ bltbuf = alloc_bltbuf(x, y); ++ for (j = 0; j < y; j++) { ++ if (debug_graphics && j % 16 == 0) { ++ g = g == 0 ? 7 : 0; ++ r = g == 0 ? 7 : 0; ++ } ++ for (i = 0; i < x; i++) { ++ if (debug_graphics && i % 16 == 0) { ++ g = g == 0 ? 7 : 0; ++ r = g == 0 ? 7 : 0; ++ } ++ pos.x = i; ++ pos.y = j; ++ bltbuf_set_pixel_rgb(bltbuf, &pos, r * 16, g * 16, 0x0); ++ } ++ } ++ ++ blt_to_screen(eg, bltbuf); ++ ++ grub_free(bltbuf); ++} ++ ++ ++static void ++draw_white_box(struct graphics_backend *backend) ++{ ++ struct eg *eg = backend->priv; ++ struct bltbuf *bltbuf; ++ position_t pos = {0, 0}, bltpos = {0, 0}, bltsz = {100,100}; ++ ++ bltbuf = alloc_bltbuf(bltsz.x, bltsz.y); ++ for (pos.y = 0; pos.y < bltsz.y; pos.y++) { ++ for (pos.x = 0; pos.x < bltsz.x; pos.x++) { ++ bltbuf_set_pixel_rgb(bltbuf, &pos, 0xff, 0xff, 0xff); ++ } ++ } ++ ++ blt_pos_to_screen_pos(eg, bltbuf, &bltpos, &bltsz, &pos); ++ ++#if 0 ++ Call_Service_10(eg->output_intf->blt, eg->output_intf, bltbuf->pixbuf, ++ GRUB_EFI_BLT_BUFFER_TO_VIDEO, 0, 0, 100, 100, x, y, 0); ++#endif ++ ++ grub_free(bltbuf); ++} ++ ++static void ++bltbuf_cp_bl(struct bltbuf *d, position_t dpos, ++ struct bltbuf *s, position_t spos) ++{ ++ grub_efi_graphics_output_pixel_t *dp, *sp; ++ ++ const int xavail = MAX(0, s ? s->width - spos.x : 0); ++ const int xtotal = MAX(0, d->width - dpos.x); ++ const int xcp = MAX(0, MIN(xtotal, xavail)); ++ const int xcl = MAX(0, xtotal - xcp); ++ ++ const int yavail = MAX(0, s ? s->height - spos.y : 0); ++ const int ytotal = MAX(0, d->height - dpos.y); ++ const int ycp = MAX(0, MIN(ytotal, yavail)); ++ const int ycl = MAX(0, ytotal - ycp); ++ ++ int y, x; ++ ++ for (y = 0; y < ytotal; y++) { ++ dp = &d->pixbuf[(dpos.y + y) * d->width + dpos.x]; ++ ++ if (y < yavail) { ++ sp = &s->pixbuf[(spos.y + y) * s->width + spos.x]; ++ memmove(dp, sp, xcp * sizeof (*dp)); ++ dp = &d->pixbuf[(dpos.y + y) * d->width + dpos.x + xcp]; ++ memset(dp, '\0', xcl * sizeof (*dp)); ++ } else { ++ memset(dp, '\0', xtotal * sizeof (*dp)); ++ } ++ } ++} ++ ++/* copy a region the size of bltbuf from the background into bltbuf, ++ * starting at offset bgpos ++ */ ++static void ++bltbuf_draw_bg(struct graphics_backend *backend, struct bltbuf *bltbuf, ++ position_t bgpos) ++{ ++ struct eg *eg = backend->priv; ++ position_t blpos = { 0, 0 }; ++ ++ bltbuf_cp_bl(bltbuf, blpos, eg->background, bgpos); ++} ++ ++static void ++dbg_dump_palette(struct graphics_backend *backend) ++{ ++ struct eg *eg; ++ int i; ++ if (!backend || !backend->priv) ++ return; ++ eg = backend->priv; ++ if (!eg->palette) ++ return; ++} ++ ++static int ++is_shadow_pixel(position_t screensz, position_t textpos, position_t bitpos, ++ position_t fontsz) ++{ ++ unsigned short *text = graphics_get_text_buf(); ++ const unsigned char *glyph; ++ position_t glyphpos = { textpos.x, textpos.y }; ++ position_t glyphbit = { bitpos.x, bitpos.y }; ++ unsigned short ch; ++ ++ if (glyphbit.x == 0) { ++ glyphbit.x = fontsz.x; ++ glyphpos.x--; ++ } ++ if (glyphbit.y == 0) { ++ glyphbit.y = fontsz.y; ++ glyphpos.y--; ++ } ++ glyphbit.x--; ++ glyphbit.y--; ++ ++ if (glyphpos.x < 0 || glyphpos.y < 0) ++ return 0; ++ ++ ch = text[glyphpos.y * screensz.x + glyphpos.x] & 0xff; ++ glyph = font8x16 + (ch << 4); ++ return glyph[glyphbit.y] & (1 << ((fontsz.x-1) - glyphbit.x)); ++} ++ ++static void ++bltbuf_draw_character(struct graphics_backend *backend, ++ struct bltbuf *bltbuf, /* the bltbuf to draw into */ ++ position_t target, /* the position in the bltbuf to draw to */ ++ position_t fontsz, /* the size of the font, in pixels */ ++ position_t charpos, /* the position of the character in the text ++ screen buffer */ ++ position_t screensz, /* the size of the screen in characters */ ++ unsigned short ch /* the character to draw, plus flags */ ++ ) ++{ ++ struct eg *eg = backend->priv; ++ position_t blpos; ++ position_t glyphpos; ++ ++ blpos.y = target.y; ++ for (glyphpos.y = 0; glyphpos.y < fontsz.y; glyphpos.y++, blpos.y++) { ++ blpos.x = target.x; ++ for (glyphpos.x = 0; glyphpos.x < fontsz.x; glyphpos.x++, blpos.x++) { ++ int invert = (ch & 0x0100) != 0; ++ int set = (ch & 0x0200) != 0; ++ const unsigned char *glyph = font8x16 + ((ch & 0xff) << 4); ++ int bit = glyph[glyphpos.y] & (1 << ((fontsz.x-1) - glyphpos.x)); ++ int idx = -1; ++ ++ if (!set) { ++ if (invert) ++ idx = bit ? 0 : 15; ++ else if (bit) ++ idx = 15; ++ ++ if (idx == -1) { ++ if (is_shadow_pixel(screensz, charpos, glyphpos, fontsz) || ++ !eg->background) ++ idx = invert ? 15 : 0; ++ } ++ } else { ++ idx = bit ? 0 : 15; ++ } ++ ++ if (idx != -1) ++ bltbuf_set_pixel_idx(eg, bltbuf, &blpos, idx); ++ } ++ } ++} ++ ++static void ++bltbuf_draw_text(struct graphics_backend *backend, ++ struct bltbuf *bltbuf, /* the buffer to draw into */ ++ position_t screensz, /* the size of the screen in characters */ ++ position_t fontsz, /* the size of the font in pixels */ ++ position_t txtpos, /* the position of the text on the screen ++ (in characters) */ ++ position_t txtsz /* the size of the block to fill in ++ (in characters) */ ++ ) ++{ ++ struct eg *eg = backend->priv; ++ unsigned short *text = graphics_get_text_buf(); ++ position_t charpos; ++ ++ for (charpos.y = txtpos.y; charpos.y < txtpos.y + txtsz.y; charpos.y++) { ++ for (charpos.x = txtpos.x; charpos.x < txtpos.x + txtsz.x; charpos.x++){ ++ int offset = charpos.y * screensz.x + charpos.x; ++ position_t blpos = { (charpos.x-txtpos.x)*fontsz.x, ++ (charpos.y-txtpos.y)*fontsz.y }; ++ ++ bltbuf_draw_character(backend, bltbuf, blpos, fontsz, charpos, ++ screensz, text[offset]); ++ } ++ } ++} ++ ++static void ++clbl(struct graphics_backend *backend, int col, int row, int width, int height, ++ int draw_text) ++{ ++ struct eg *eg = backend->priv; ++ struct xpm *xpm; ++ ++ struct bltbuf *bltbuf; ++ position_t fontsz, blpos, blsz, screensz; ++ unsigned short *text; ++ ++// blank(backend); ++// ++ xpm = graphics_get_splash_xpm(); ++ if (xpm && !eg->background) ++ eg->background = xpm_to_bltbuf(xpm); ++ ++ graphics_get_screen_rowscols(&screensz); ++ width = MIN(width, screensz.x - col); ++ height = MIN(height, screensz.y - row); ++ graphics_get_font_size(&fontsz); ++ ++ blsz.x = width * fontsz.x; ++ blsz.y = height * fontsz.y; ++ ++ bltbuf = alloc_bltbuf(blsz.x, blsz.y); ++ if (!bltbuf) ++ return; ++ ++ blsz.x = col * fontsz.x; ++ blsz.y = row * fontsz.y; ++ ++ text = graphics_get_text_buf(); ++ bltbuf_draw_bg(backend, bltbuf, blsz); ++ ++ if (draw_text) { ++ blsz.x = width; ++ blsz.y = height; ++ blpos.x = col; ++ blpos.y = row; ++ ++ bltbuf_draw_text(backend, bltbuf, screensz, fontsz, blpos, blsz); ++ } ++ ++ blpos.x = col * fontsz.x; ++ blpos.y = row * fontsz.y; ++ ++ blt_to_screen_pos(eg, bltbuf, &blpos); ++} ++ ++static void ++setup_cga_palette(struct eg *eg) ++{ ++ rgb_to_pixel(0x00,0x00,0x00, &eg->palette[0]); // 0 Black ++ rgb_to_pixel(0x7f,0x00,0x00, &eg->palette[1]); // 1 Dark Red ++ rgb_to_pixel(0x00,0x7f,0x00, &eg->palette[2]); // 2 Dark Green ++ rgb_to_pixel(0x7f,0x7f,0x00, &eg->palette[3]); // 3 Dark Yellow ++ rgb_to_pixel(0x00,0x00,0x7f, &eg->palette[4]); // 4 Dark Blue ++ rgb_to_pixel(0x7f,0x00,0x7f, &eg->palette[5]); // 5 Dark Magenta ++ rgb_to_pixel(0x00,0x7f,0x7f, &eg->palette[6]); // 6 Dark Cyan ++ rgb_to_pixel(0xc0,0xc0,0xc0, &eg->palette[7]); // 7 Light Grey ++ rgb_to_pixel(0x7f,0x7f,0x7f, &eg->palette[8]); // 8 Dark Grey ++ rgb_to_pixel(0xff,0x00,0x00, &eg->palette[9]); // 9 Red ++ rgb_to_pixel(0x00,0xff,0x00, &eg->palette[10]); // 10 Green ++ rgb_to_pixel(0xff,0xff,0x00, &eg->palette[11]); // 11 Yellow ++ rgb_to_pixel(0x00,0x00,0xff, &eg->palette[12]); // 12 Blue ++ rgb_to_pixel(0xff,0x00,0xff, &eg->palette[13]); // 13 Magenta ++ rgb_to_pixel(0x00,0xff,0xff, &eg->palette[14]); // 14 Cyan ++ rgb_to_pixel(0xff,0xff,0xff, &eg->palette[15]); // 15 White ++ rgb_to_pixel(0xff,0xff,0xff, &eg->palette[16]); // 16 Also white ;) ++} ++ ++static grub_efi_status_t ++set_video_mode(struct eg *eg, int mode) ++{ ++ grub_efi_status_t efi_status; ++ efi_status = Call_Service_2(eg->output_intf->set_mode, eg->output_intf, mode); ++ return efi_status; ++} ++ ++static void disable(struct graphics_backend *backend) ++{ ++ struct eg *eg; ++ ++ if (!backend) ++ return; ++ ++ eg = backend->priv; ++ if (!eg || eg->current_mode != GRAPHICS) ++ return; ++ ++#if 0 ++ blank(backend); ++ ++ set_video_mode(eg, eg->text_mode); ++ grub_efi_set_text_mode(1); ++#endif ++ eg->current_mode = TEXT; ++} ++ ++static int ++fill_pixel_info (grub_pixel_info_t *pixel_info, ++ grub_efi_graphics_output_mode_information_t *mode_info) ++{ ++ if (mode_info->pixel_format == GRUB_EFI_PIXEL_RGBR_8BIT_PER_COLOR) ++ { ++ pixel_info->depth_bits = 32; ++ pixel_info->depth_bytes = 4; ++ pixel_info->red_size = 8; ++ pixel_info->red_pos = 0; ++ pixel_info->green_size = 8; ++ pixel_info->green_pos = 8; ++ pixel_info->blue_size = 8; ++ pixel_info->blue_pos = 16; ++ pixel_info->reserved_size = 8; ++ pixel_info->reserved_pos = 24; ++ pixel_info->line_length = mode_info->pixels_per_scan_line * 4; ++ } ++ else if (mode_info->pixel_format == GRUB_EFI_PIXEL_BGRR_8BIT_PER_COLOR) ++ { ++ pixel_info->depth_bits = 32; ++ pixel_info->depth_bytes = 4; ++ pixel_info->red_size = 8; ++ pixel_info->red_pos = 16; ++ pixel_info->green_size = 8; ++ pixel_info->green_pos = 8; ++ pixel_info->blue_size = 8; ++ pixel_info->blue_pos = 0; ++ pixel_info->reserved_size = 8; ++ pixel_info->reserved_pos = 24; ++ pixel_info->line_length = mode_info->pixels_per_scan_line * 4; ++ } ++ else if (mode_info->pixel_format == GRUB_EFI_PIXEL_BIT_MASK) ++ { ++ find_bits (mode_info->pixel_information.red_mask, ++ &pixel_info->red_pos, &pixel_info->red_size); ++ find_bits (mode_info->pixel_information.green_mask, ++ &pixel_info->green_pos, &pixel_info->green_size); ++ find_bits (mode_info->pixel_information.blue_mask, ++ &pixel_info->blue_pos, &pixel_info->blue_size); ++ find_bits (mode_info->pixel_information.reserved_mask, ++ &pixel_info->reserved_pos, &pixel_info->reserved_size); ++ pixel_info->depth_bits = pixel_info->red_size + pixel_info->green_size + ++ pixel_info->blue_size + pixel_info->reserved_size; ++ pixel_info->depth_bytes = (pixel_info->depth_bits + 7) / 8; ++ pixel_info->line_length = mode_info->pixels_per_scan_line * ++ pixel_info->depth_bytes; ++ } ++ else ++ return 0; ++ return 1; ++} ++ ++/* 1 = prefer a ++ * 0 = prefer neither ++ * -1 = prefer b ++ */ ++static int ++modecmp_helper(struct eg *eg, struct video_mode *amode, struct video_mode *bmode) ++{ ++ grub_efi_graphics_output_mode_information_t *a = amode->info; ++ grub_efi_graphics_output_mode_information_t *b = bmode->info; ++ ++ if (a != NULL && b == NULL) ++ return 1; ++ if (a == NULL && b == NULL) ++ return 0; ++ if (a == NULL && b != NULL) ++ return -1; ++ ++#if 0 ++ if (amode->number == eg->graphics_mode && bmode->number != eg->graphics_mode) ++ return 1; ++ if (amode->number == eg->graphics_mode && bmode->number == eg->graphics_mode) ++ return 0; ++ if (amode->number != eg->graphics_mode && bmode->number == eg->graphics_mode) ++ return -1; ++#endif ++ ++ ++ /* kernel doesn't deal with blt only modes, so prefer against them. */ ++ if (a->pixel_format != GRUB_EFI_PIXEL_BLT_ONLY && ++ b->pixel_format == GRUB_EFI_PIXEL_BLT_ONLY) ++ return 1; ++ if (b->pixel_format != GRUB_EFI_PIXEL_BLT_ONLY && ++ a->pixel_format == GRUB_EFI_PIXEL_BLT_ONLY) ++ return -1; ++ ++ /* XXX PJFIX there's something wrong with what we're passing to the ++ * kernel for stride in the bgrr/rgbr modes, and I haven't figured out ++ * just what yet, so for now, prefer bitmask modes. ++ */ ++ if (a->pixel_format == GRUB_EFI_PIXEL_BIT_MASK && ++ b->pixel_format != GRUB_EFI_PIXEL_BIT_MASK) ++ return 1; ++ if (a->pixel_format != GRUB_EFI_PIXEL_BIT_MASK && ++ b->pixel_format == GRUB_EFI_PIXEL_BIT_MASK) ++ return -1; ++ ++ if (a->pixel_format == GRUB_EFI_PIXEL_BGRR_8BIT_PER_COLOR && ++ b->pixel_format != GRUB_EFI_PIXEL_BGRR_8BIT_PER_COLOR) ++ return 1; ++ if (a->pixel_format != GRUB_EFI_PIXEL_BGRR_8BIT_PER_COLOR && ++ b->pixel_format == GRUB_EFI_PIXEL_BGRR_8BIT_PER_COLOR) ++ return -1; ++ ++ if (a->pixel_format == GRUB_EFI_PIXEL_RGBR_8BIT_PER_COLOR && ++ b->pixel_format != GRUB_EFI_PIXEL_RGBR_8BIT_PER_COLOR) ++ return 1; ++ if (a->pixel_format != GRUB_EFI_PIXEL_RGBR_8BIT_PER_COLOR && ++ b->pixel_format == GRUB_EFI_PIXEL_RGBR_8BIT_PER_COLOR) ++ return -1; ++ ++ if (a->horizontal_resolution > b->horizontal_resolution && ++ a->vertical_resolution > b->vertical_resolution) ++ return 1; ++ if (a->horizontal_resolution < b->horizontal_resolution && ++ a->vertical_resolution < b->vertical_resolution) ++ return -1; ++ return 0; ++} ++ ++static int ++modecmp(struct eg *eg, struct video_mode *amode, struct video_mode *bmode) ++{ ++ int rc; ++#if 0 ++ grub_efi_graphics_output_mode_information_t *a = amode->info; ++ grub_efi_graphics_output_mode_information_t *b = bmode->info; ++#endif ++ rc = modecmp_helper(eg, amode, bmode); ++#if 0 ++ grub_printf("comparing nodes:\n"); ++ print_mode_info(amode); ++ print_mode_info(bmode); ++ if (rc > 0) ++ grub_printf("result: a > b\n"); ++ else if (rc < 0) ++ grub_printf("result: a < b\n"); ++ else ++ grub_printf("result: a == b\n"); ++ ++ //dbgdelay(__FILE__, __LINE__); ++#endif ++ return rc; ++} ++ ++static void ++modeswap(struct video_mode *amode, struct video_mode *bmode) ++{ ++ struct video_mode tmp; ++ ++ memcpy(&tmp, amode, sizeof (tmp)); ++ memcpy(amode, bmode, sizeof (tmp)); ++ memcpy(bmode, &tmp, sizeof(tmp)); ++} ++ ++static void ++sort_modes(struct eg *eg, int p, int r) ++{ ++ struct video_mode **modes = eg->modes; ++ ++ int i, j; ++ for (i = 0; i < eg->max_mode; i++) { ++ for (j = i + 1; j < eg->max_mode; j++) { ++ if (modecmp(eg, modes[j], modes[i]) < 0) ++ modeswap(modes[j], modes[i]); ++ } ++ } ++} ++ ++static int ++try_enable(struct graphics_backend *backend) ++{ ++ struct eg *eg = backend->priv; ++ grub_efi_status_t efi_status = GRUB_EFI_UNSUPPORTED; ++ int i; ++ ++ if (eg->text_mode == 0xffffffff) { ++ grub_efi_set_text_mode(1); ++ eg->text_mode = eg->output_intf->mode->mode; ++ } ++ ++ if (eg->graphics_mode == 0xffffffff) { ++ grub_efi_graphics_output_mode_information_t *info; ++ ++ if (!graphics_alloc_text_buf()) ++ return 0; ++ ++ grub_efi_set_text_mode(0); ++ eg->graphics_mode = eg->output_intf->mode->mode; ++ grub_efi_set_text_mode(1); ++#if 0 ++ dprintf("graphics mode is %d\n", eg->graphics_mode); ++ /* this is okay here because we haven't sorted yet.*/ ++ print_mode_info(eg->modes[eg->graphics_mode]); ++ dprintf("text mode is %d\n", eg->text_mode); ++ print_mode_info(eg->modes[eg->text_mode]); ++#endif ++ ++ sort_modes(eg, 0, eg->max_mode-1); ++ ++#if 0 ++ for (i = eg->max_mode - 1; i >= 0; i--) ++ print_mode_info(eg->modes[i]); ++ dbgdelay(__FILE__, __LINE__); ++#endif ++ ++ efi_status = GRUB_EFI_UNSUPPORTED; ++ ++ for (i = eg->max_mode - 1; i >= 0; i--) { ++ if (!eg->modes[i]) ++ continue; ++ ++ info = eg->modes[i]->info; ++ ++#if 0 ++ if (info->pixel_format != GRUB_EFI_PIXEL_RGBR_8BIT_PER_COLOR && ++ info->pixel_format != GRUB_EFI_PIXEL_BGRR_8BIT_PER_COLOR && ++ info->pixel_format != GRUB_EFI_PIXEL_BIT_MASK) { ++ continue; ++ } ++#endif ++ ++ grub_efi_set_text_mode(0); ++ efi_status = set_video_mode(eg, eg->modes[i]->number); ++ if (efi_status == GRUB_EFI_SUCCESS) { ++#if 0 ++ grub_efi_set_text_mode(1); ++ dprintf("switched to mode %d successfully\n", ++ eg->modes[i]->number); ++ dbgdelay(__FILE__,__LINE__); ++ grub_efi_set_text_mode(0); ++#endif ++ eg->graphics_mode = eg->modes[i]->number; ++ fill_pixel_info(&eg->pixel_info, info); ++ break; ++ } else { ++#if 0 ++ set_video_mode(eg, eg->text_mode); ++ grub_efi_set_text_mode(1); ++ dprintf("return code was %d\n", efi_status); ++#endif ++ } ++ } ++ if (efi_status != GRUB_EFI_SUCCESS) { ++#if 1 ++ grub_efi_set_text_mode(1); ++ set_video_mode(eg, eg->text_mode); ++#endif ++ return 0; ++ } ++ ++ } ++ ++ eg->current_mode = GRAPHICS; ++ return 1; ++} ++ ++static int ++enable(struct graphics_backend *backend) ++{ ++ struct eg *eg = backend->priv; ++ int i; ++ ++ if (eg) { ++ if (eg->current_mode == GRAPHICS) { ++ return 1; ++ } ++ } else { ++ grub_efi_status_t efi_status; ++ grub_efi_handle_t *handle, *handles; ++ grub_efi_uintn_t num_handles; ++ grub_efi_pci_io_t *pci_proto; ++ ++ if (!(eg = grub_malloc(sizeof (*eg)))) ++ return 0; ++ ++ grub_memset(eg, '\0', sizeof (*eg)); ++ ++ eg->backend = backend; ++ eg->current_mode = TEXT; ++ ++ handles = grub_efi_locate_handle (GRUB_EFI_BY_PROTOCOL, ++ &graphics_output_guid, ++ NULL, &num_handles); ++ ++ if (!num_handles || !handles) ++ goto fail; ++ ++ for (handle = handles; num_handles--; handle++) ++ { ++ pci_proto = grub_efi_open_protocol (*handle, &pci_io_guid, ++ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL); ++ ++ if (!pci_proto) ++ continue; ++ ++ eg->output_intf = grub_efi_open_protocol (*handle, ++ &graphics_output_guid, GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL); ++ ++ if (eg->output_intf) ++ { ++ grub_efi_setup_gfx_pci(*handle); ++ break; ++ } ++ } ++ ++ grub_free(handles); ++ ++ if (!eg->output_intf) ++ eg->output_intf = grub_efi_locate_protocol(&graphics_output_guid, NULL); ++ ++ if (!eg->output_intf) ++ goto fail; ++ ++ eg->text_mode = eg->graphics_mode = 0xffffffff; ++ ++ eg->max_mode = eg->output_intf->mode->max_mode; ++ eg->modes = grub_malloc(eg->max_mode * sizeof (void *)); ++ if (!eg->modes) ++ goto fail; ++ memset(eg->modes, '\0', eg->max_mode * sizeof (void *)); ++ ++ for (i = 0; i < eg->max_mode; i++) { ++ eg->modes[i] = grub_malloc(sizeof *(eg->modes[0])); ++ if (!eg->modes[i]) ++ goto fail; ++ memset(eg->modes[i], '\0', sizeof *(eg->modes[0])); ++ eg->modes[i]->number = i; ++ ++ efi_status = Call_Service_4(eg->output_intf->query_mode, ++ eg->output_intf, i, &eg->modes[i]->size, ++ &eg->modes[i]->info); ++ if (efi_status == GRUB_EFI_NOT_STARTED) { ++ /* The firmware didn't turn on GRAPHICS_OUTPUT_PROTOCOL, so ++ * try to do so ourselves. Thanks, Intel. */ ++ set_video_mode(eg, eg->output_intf->mode->mode); ++ efi_status = Call_Service_4(eg->output_intf->query_mode, ++ eg->output_intf, i, &eg->modes[i]->size, ++ &eg->modes[i]->info); ++ } ++ if (efi_status != GRUB_EFI_SUCCESS) { ++ grub_free(eg->modes[i]); ++ eg->modes[i] = NULL; ++ //eg->max_mode = i; ++ break; ++ } ++ } ++ ++ backend->priv = eg; ++ setup_cga_palette(eg); ++ for (i = 0; i < n_cga_colors; i++) { ++ eg->palette[i].bgrr.red = cga_colors[i].bgrr.red; ++ eg->palette[i].bgrr.green = cga_colors[i].bgrr.green; ++ eg->palette[i].bgrr.blue = cga_colors[i].bgrr.blue; ++ } ++ } ++ ++ if (try_enable(backend)) { ++ reset_screen_geometry(backend); ++ return 1; ++ } ++ ++fail: ++ backend->priv = NULL; ++ if (eg->modes) { ++ for (i = 0; i < eg->max_mode; i++) { ++ if (eg->modes[i]) ++ grub_free(eg->modes[i]); ++ } ++ grub_free(eg->modes); ++ } ++ grub_free(eg); ++ return 0; ++} ++ ++struct graphics_backend eg_backend = { ++ .name = "eg", ++ .enable = enable, ++ .disable = disable, ++ .set_kernel_params = set_kernel_params, ++ .clbl = clbl, ++ .set_palette = set_palette, ++ .get_pixel_idx = get_pixel_idx, ++ .get_pixel_rgb = get_pixel_rgb, ++ .draw_pixel = draw_pixel, ++ .reset_screen_geometry = reset_screen_geometry, ++ .get_screen_size = get_screen_size, ++ .getxy = eg_getxy, ++ .setxy = setxy, ++ .gotoxy = NULL, ++ .cursor = cursor, ++}; ++ ++#endif /* SUPPORT_GRAPHICS */ +diff --git a/efi/efimain.c b/efi/efimain.c +new file mode 100644 +index 0000000..e1a1e66 +--- /dev/null ++++ b/efi/efimain.c +@@ -0,0 +1,129 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2007 Intel Corp. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, ++ * MA 02110-1301, USA. ++ */ ++ ++#include ++#include ++#include ++#include ++ ++#include ++#include ++ ++#include "pxe.h" ++ ++#define GRUB_SCRATCH_MEM_PAGES (GRUB_SCRATCH_MEM_SIZE >> 12) ++ ++/* Emulation requirements. */ ++void *grub_scratch_mem = NULL; ++ ++#define LOW_STACK_SIZE 0x100000 ++#define LOW_STACK_PAGES (LOW_STACK_SIZE >> 12) ++static void *low_stack, *real_stack; ++ ++extern int grub_test_pxe(grub_efi_loaded_image_t *loaded_image); ++ ++static void ++real_main (void) ++{ ++ grub_efi_loaded_image_t *loaded_image; ++ char *path_name = NULL; ++ ++ loaded_image = grub_efi_get_loaded_image (grub_efi_image_handle); ++ ++ path_name = grub_efi_pxe_get_config_path(loaded_image); ++ ++ if (path_name) { ++ network_ready = 1; ++ ++ grub_set_config_file (path_name); ++ grub_free (path_name); ++ } else { ++ grub_get_drive_partition_from_bdev_handle (loaded_image->device_handle, ++ &boot_drive, ++ &install_partition); ++ path_name = grub_efi_file_path_to_path_name (loaded_image->file_path); ++ ++ if (path_name) ++ { ++ grub_set_config_file (path_name); ++ grub_free (path_name); ++ } ++ ++ grub_load_saved_default (loaded_image->device_handle); ++ } ++ ++ init_bios_info (); ++ while (console_getkey() < 0) ++ grub_efi_stall(1000); ++} ++ ++grub_efi_status_t ++efi_main (grub_efi_handle_t image_handle, grub_efi_system_table_t *sys_tab) ++{ ++ grub_efi_image_handle = image_handle; ++ grub_efi_system_table = sys_tab; ++ grub_efi_init (); ++ ++ grub_scratch_mem = grub_efi_allocate_pages (0, GRUB_SCRATCH_MEM_PAGES); ++ if (! grub_scratch_mem) ++ { ++ grub_printf ("Failed to allocate scratch mem!\n"); ++ return GRUB_EFI_OUT_OF_RESOURCES; ++ } ++ ++ /* If current stack reside in memory region > 2G, switch stack to a ++ memory region < 2G */ ++ if ((unsigned long)&image_handle >= 0x80000000UL) ++ { ++ low_stack = grub_efi_allocate_pages (0, LOW_STACK_PAGES); ++ if (! low_stack) ++ { ++ grub_printf("Failed to allocate low memory stack!\n"); ++ return GRUB_EFI_OUT_OF_RESOURCES; ++ } ++ ++#ifdef __x86_64__ ++ asm volatile ("movq %%rsp, %0\n\tmovq %1, %%rsp\n" ++ : "=&r" (real_stack) : "r" (low_stack+LOW_STACK_SIZE)); ++#else ++ asm volatile ("movl %%esp, %0\n\tmovl %1, %%esp\n" ++ : "=&r" (real_stack) : "r" (low_stack+LOW_STACK_SIZE)); ++#endif ++ } ++ ++ real_main (); ++ ++ if (real_stack) { ++#ifdef __x86_64__ ++ asm volatile ("movq %0, %%rsp\n" : : "r" (real_stack)); ++#else ++ asm volatile ("movl %0, %%esp\n" : : "r" (real_stack)); ++#endif ++ ++ grub_efi_free_pages ((grub_efi_physical_address_t)(unsigned long) low_stack, ++ LOW_STACK_PAGES); ++ } ++ ++ grub_efi_free_pages ((grub_efi_physical_address_t)(unsigned long)grub_scratch_mem, ++ GRUB_SCRATCH_MEM_PAGES); ++ grub_efi_fini (); ++ ++ return GRUB_EFI_SUCCESS; ++} +diff --git a/efi/efimisc.c b/efi/efimisc.c +new file mode 100644 +index 0000000..480ba25 +--- /dev/null ++++ b/efi/efimisc.c +@@ -0,0 +1,665 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2006 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, ++ * MA 02110-1301, USA. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include ++ ++unsigned long install_partition = 0x20000; ++unsigned long boot_drive = 0x80; ++int saved_entryno = 0; ++char version_string[] = VERSION; ++char config_file[128] = "/boot/grub/menu.lst"; ++unsigned short io_map[IO_MAP_SIZE]; ++struct apm_info apm_bios_info; ++/* The key map. */ ++unsigned short bios_key_map[KEY_MAP_SIZE + 1]; ++unsigned short ascii_key_map[KEY_MAP_SIZE + 1]; ++ ++void ++grub_efi_init (void) ++{ ++ /* First of all, initialize the console so that GRUB can display ++ messages. */ ++ grub_console_init (); ++ /* Initialize the memory management system. */ ++ grub_efi_mm_init (); ++ grub_efidisk_init (); ++} ++ ++void ++grub_efi_fini (void) ++{ ++ grub_efidisk_fini (); ++ grub_efi_mm_fini (); ++ grub_console_fini (); ++} ++ ++void * ++grub_malloc (grub_size_t size) ++{ ++ return grub_efi_allocate_pool (size); ++} ++ ++void ++grub_free (void *p) ++{ ++ grub_efi_free_pool (p); ++} ++ ++char * ++grub_stpcpy (char *dest, const char *src) ++{ ++ char *d = dest; ++ const char *s = src; ++ ++ do ++ *d++ = *s; ++ while (*s++ != '\0'); ++ ++ return d - 1; ++} ++ ++void ++grub_fatal (const char *fmt, ...) ++{ ++ va_list ap; ++ ++ va_start (ap, fmt); ++ grub_vsprintf (NULL, fmt, ap); ++ va_end (ap); ++ ++ grub_exit (); ++} ++ ++void ++grub_real_dprintf (const char *file, const int line, const char *condition, ++ const char *fmt, ...) ++{ ++ va_list args; ++ ++ if (! debug) ++ return; ++ ++ grub_printf ("%s:%d: ", file, line); ++ va_start (args, fmt); ++ grub_vsprintf (0, fmt, args); ++ va_end (args); ++} ++ ++grub_size_t ++grub_utf8_char_len(grub_uint8_t ch) ++{ ++ return ((0xe5000000 >> ((ch >> 3) & 0x1e)) & 3) + 1; ++} ++ ++#define UTF8_SHIFT_AND_MASK(unicode, byte) (unicode)<<=6; (unicode) |= (0x3f & (byte)) ++ ++/* convert utf8 to utf32 */ ++grub_uint32_t ++grub_utf8_to_utf32(const grub_uint8_t *src, grub_size_t length) ++{ ++ grub_uint32_t unicode; ++ ++ switch (length) ++ { ++ case 1: ++ return src[0]; ++ case 2: ++ unicode = src[0] & 0x1f; ++ UTF8_SHIFT_AND_MASK(unicode, src[1]); ++ return unicode; ++ case 3: ++ unicode = src[0] & 0x0f; ++ UTF8_SHIFT_AND_MASK(unicode, src[1]); ++ UTF8_SHIFT_AND_MASK(unicode, src[2]); ++ return unicode; ++ case 4: ++ unicode = src[0] & 0x07; ++ UTF8_SHIFT_AND_MASK(unicode, src[1]); ++ UTF8_SHIFT_AND_MASK(unicode, src[2]); ++ UTF8_SHIFT_AND_MASK(unicode, src[3]); ++ return unicode; ++ default: ++ return 0xffff; ++ } ++} ++ ++/* convert utf8 to utf16 */ ++void ++grub_utf8_to_utf16(const grub_uint8_t *src, grub_size_t srclen, ++ grub_uint16_t *dst, grub_size_t dstlen) ++{ ++ const grub_uint8_t *end = src + srclen; ++ grub_efi_char16_t *dstend = dst + dstlen; ++ ++ while (src < end && dst < dstend) ++ { ++ grub_size_t len = grub_utf8_char_len(*src); ++ /* get the utf32 codepoint */ ++ grub_uint32_t codepoint = grub_utf8_to_utf32(src, len); ++ ++ /* convert that codepoint to utf16 codepoints */ ++ if (codepoint <= 0xffff) ++ { ++ /* it's a single utf16 character */ ++ *dst++ = (grub_efi_char16_t) codepoint; ++ } ++ else ++ { ++ /* it's multiple utf16 characters, with surrogate pairs */ ++ codepoint = codepoint - 0x10000; ++ *dst++ = (grub_efi_char16_t) ((codepoint >> 10) + 0xd800); ++ *dst++ = (grub_efi_char16_t) ((codepoint & 0x3ff) + 0xdc00); ++ } ++ ++ src += len; ++ } ++ ++ if (dst < dstend) ++ *dst = 0; ++} ++ ++/* Convert UTF-16 to UTF-8. */ ++grub_uint8_t * ++grub_utf16_to_utf8 (grub_uint8_t *dest, grub_uint16_t *src, ++ grub_size_t size) ++{ ++ grub_uint32_t code_high = 0; ++ ++ while (size--) ++ { ++ grub_uint32_t code = *src++; ++ ++ if (code_high) ++ { ++ if (code >= 0xDC00 && code <= 0xDFFF) ++ { ++ /* Surrogate pair. */ ++ code = ((code_high - 0xD800) << 12) + (code - 0xDC00) + 0x10000; ++ ++ *dest++ = (code >> 18) | 0xF0; ++ *dest++ = ((code >> 12) & 0x3F) | 0x80; ++ *dest++ = ((code >> 6) & 0x3F) | 0x80; ++ *dest++ = (code & 0x3F) | 0x80; ++ } ++ else ++ { ++ /* Error... */ ++ *dest++ = '?'; ++ } ++ ++ code_high = 0; ++ } ++ else ++ { ++ if (code <= 0x007F) ++ *dest++ = code; ++ else if (code <= 0x07FF) ++ { ++ *dest++ = (code >> 6) | 0xC0; ++ *dest++ = (code & 0x3F) | 0x80; ++ } ++ else if (code >= 0xD800 && code <= 0xDBFF) ++ { ++ code_high = code; ++ continue; ++ } ++ else if (code >= 0xDC00 && code <= 0xDFFF) ++ { ++ /* Error... */ ++ *dest++ = '?'; ++ } ++ else ++ { ++ *dest++ = (code >> 16) | 0xE0; ++ *dest++ = ((code >> 12) & 0x3F) | 0x80; ++ *dest++ = (code & 0x3F) | 0x80; ++ } ++ } ++ } ++ ++ return dest; ++} ++ ++/* low-level timing info */ ++int ++getrtsecs (void) ++{ ++ return grub_get_rtc() / GRUB_TICKS_PER_SECOND; ++} ++ ++void ++grub_reboot (void) ++{ ++ grub_efi_runtime_services_t *r; ++ ++ r = grub_efi_system_table->runtime_services; ++ Call_Service_4 (r->reset_system, GRUB_EFI_RESET_COLD, ++ GRUB_EFI_SUCCESS, 0, NULL); ++ for (;;); ++} ++ ++void ++grub_halt (int no_apm) ++{ ++ grub_efi_runtime_services_t *r; ++ ++ r = grub_efi_system_table->runtime_services; ++ Call_Service_4 (r->reset_system, GRUB_EFI_RESET_SHUTDOWN, ++ GRUB_EFI_SUCCESS, 0, NULL); ++ for (;;); ++} ++ ++void ++stop (void) ++{ ++ grub_exit (); ++} ++ ++/* booting a multiboot executable */ ++void ++multi_boot (int start, int mb_info) ++{ ++ stop (); ++} ++ ++/* sets it to linear or wired A20 operation */ ++void ++gateA20 (int linear) ++{ ++} ++ ++/* Set up the int15 handler. */ ++void ++set_int15_handler (void) ++{ ++} ++ ++/* Restore the original int15 handler. */ ++void ++unset_int15_handler (void) ++{ ++} ++ ++/* Copy MAP to the drive map and set up the int13 handler. */ ++void ++set_int13_handler (unsigned short *map) ++{ ++} ++ ++/* Get the ROM configuration table. */ ++unsigned long ++get_rom_config_table (void) ++{ ++ return 0; ++} ++ ++/* Get APM BIOS information. */ ++void ++get_apm_info (void) ++{ ++ /* Nothing to do in the simulator. */ ++} ++ ++void ++stop_floppy (void) ++{ ++ /* NOTUSED */ ++} ++ ++char * ++grub_strndup (const char *s, int n) ++{ ++ int l = grub_strnlen(s, n); ++ char *new = grub_malloc(l + 1); ++ ++ if (new == NULL) ++ return NULL; ++ ++ new[l] = '\0'; ++ return grub_strncpy(new, s, l); ++} ++ ++int ++safe_parse_maxulong (char **str_ptr, unsigned long *myulong_ptr) ++{ ++ char *ptr = *str_ptr; ++ unsigned long myulong = 0; ++ unsigned int mult = 10, found = 0; ++ ++ /* ++ * Is this a hex number? ++ */ ++ if (*ptr == '0' && tolower (*(ptr + 1)) == 'x') ++ { ++ ptr += 2; ++ mult = 16; ++ } ++ ++ while (1) ++ { ++ /* A bit tricky. This below makes use of the equivalence: ++ (A >= B && A <= C) <=> ((A - B) <= (C - B)) ++ when C > B and A is unsigned. */ ++ unsigned int digit; ++ ++ digit = tolower (*ptr) - '0'; ++ if (digit > 9) ++ { ++ digit -= 'a' - '0'; ++ if (mult == 10 || digit > 5) ++ break; ++ digit += 10; ++ } ++ ++ found = 1; ++ if (myulong > ((~0UL - digit) / mult)) ++ { ++ errnum = ERR_NUMBER_OVERFLOW; ++ return 0; ++ } ++ myulong = (myulong * mult) + digit; ++ ptr++; ++ } ++ ++ if (!found) ++ { ++ errnum = ERR_NUMBER_PARSING; ++ return 0; ++ } ++ ++ *str_ptr = ptr; ++ *myulong_ptr = myulong; ++ ++ return 1; ++} ++ ++int ++currticks (void) ++{ ++ return grub_get_rtc (); ++} ++ ++static char * ++fix_path_name (char *path_name) ++{ ++ char *p1, *p2; ++ ++ p1 = path_name; ++ p2 = p1 + 1; ++ if (*p1 == '\\') ++ *p1 = '/'; ++ while (*p1) ++ { ++ switch (*p2) ++ { ++ case '\0': ++ *++p1 = *p2; ++ break; ++ case '.': ++ if (*p1 == '/' && *(p2+1) == '\\') ++ p2 += 2; ++ else ++ *++p1=*p2++; ++ break; ++ case '\\': ++ if (*p1 == '/') ++ p2++; ++ else ++ *++p1 = '/'; ++ break; ++ default: ++ *++p1=*p2++; ++ break; ++ } ++ } ++ return path_name; ++} ++ ++char * ++grub_efi_file_path_to_path_name (grub_efi_device_path_t *file_path) ++{ ++ char *str; ++ grub_efi_uint32_t str_len = 16; ++ grub_efi_uint32_t str_pos = 0; ++ ++ str = grub_malloc (str_len); ++ if (! str) ++ return NULL; ++ str[0] = '\0'; ++ ++ while (1) ++ { ++ grub_efi_uint8_t type = GRUB_EFI_DEVICE_PATH_TYPE (file_path); ++ grub_efi_uint8_t subtype = GRUB_EFI_DEVICE_PATH_SUBTYPE (file_path); ++ grub_efi_uint16_t len = GRUB_EFI_DEVICE_PATH_LENGTH (file_path); ++ ++ switch (type) ++ { ++ case GRUB_EFI_MEDIA_DEVICE_PATH_TYPE: ++ switch (subtype) ++ { ++ case GRUB_EFI_FILE_PATH_DEVICE_PATH_SUBTYPE: ++ { ++ grub_efi_file_path_device_path_t *fp; ++ grub_uint8_t buf[(len - 4) * 2 + 2]; ++ grub_uint32_t path_name_len; ++ char *tmp_str; ++ ++ fp = (grub_efi_file_path_device_path_t *) file_path; ++ *grub_utf16_to_utf8 (buf, fp->path_name, ++ (len - 4) / sizeof (grub_efi_char16_t)) ++ = '\0'; ++ path_name_len = strlen ((char *)buf) + 1; ++ if ((str_len - str_pos) <= path_name_len) ++ { ++ do ++ str_len *= 2; ++ while ((str_len - str_pos) <= path_name_len); ++ tmp_str = grub_malloc (str_len); ++ if (tmp_str == NULL) ++ goto fail; ++ grub_memmove (tmp_str, str, str_pos); ++ grub_free (str); ++ str = tmp_str; ++ } ++ str[str_pos] = '\\'; ++ strcpy (str + str_pos + 1, (char *)buf); ++ str_pos += path_name_len; ++ } ++ break; ++ default: ++ break; ++ } ++ break; ++ default: ++ break; ++ } ++ ++ if (GRUB_EFI_END_ENTIRE_DEVICE_PATH (file_path)) ++ break; ++ ++ file_path = (grub_efi_device_path_t *) ((char *) file_path + len); ++ } ++ return fix_path_name (str); ++ ++ fail: ++ grub_free (str); ++ return NULL; ++} ++ ++#define DEFAULT_SAVED_DEFAULT_FILE_NAME "grub.default" ++#define DEFAULT_CONFIG_FILE_NAME "grub.conf" ++ ++static char saved_default_file[128] = "/boot/grub/grub.default"; ++ ++void ++grub_set_config_file (char *path_name) ++{ ++ char *dir_end; ++ grub_uint32_t path_name_len; ++ ++ path_name_len = strlen (path_name); ++ if (path_name_len > 4 ++ && path_name[path_name_len - 4] == '.' ++ && grub_tolower (path_name[path_name_len - 3]) == 'e' ++ && grub_tolower (path_name[path_name_len - 2]) == 'f' ++ && grub_tolower (path_name[path_name_len - 1]) == 'i') ++ { ++ /* Bigger than buffer of config_file */ ++ if (path_name_len + 1 > 127) ++ return; ++ grub_memmove (config_file, path_name, path_name_len - 4); ++ grub_strcpy (config_file + path_name_len - 4, ".conf"); ++ /* Bigger than buffer of default file */ ++ if (path_name_len + 4 > 127) ++ return; ++ grub_memmove (saved_default_file, path_name, path_name_len - 4); ++ grub_strcpy (saved_default_file + path_name_len - 4, ".default"); ++ return; ++ } ++ dir_end = grub_strrchr (path_name, '/'); ++ if (! dir_end) ++ { ++ grub_strcpy (config_file, DEFAULT_CONFIG_FILE_NAME); ++ grub_strcpy (saved_default_file, DEFAULT_SAVED_DEFAULT_FILE_NAME); ++ return; ++ } ++ if (strlen(dir_end) == 1) { ++ path_name_len = dir_end + 1 - path_name; ++ if (path_name_len + sizeof (DEFAULT_CONFIG_FILE_NAME) > 128) ++ return; ++ grub_memmove (config_file, path_name, path_name_len); ++ grub_strcpy (config_file + path_name_len, DEFAULT_CONFIG_FILE_NAME); ++ } else { ++ grub_memmove (config_file, path_name, path_name_len+1); ++ } ++ if (path_name_len + sizeof (DEFAULT_SAVED_DEFAULT_FILE_NAME) > 128) ++ return; ++ path_name_len = dir_end + 1 - path_name; ++ grub_memmove (saved_default_file, path_name, path_name_len); ++ grub_strcpy (saved_default_file + path_name_len, ++ DEFAULT_SAVED_DEFAULT_FILE_NAME); ++} ++ ++grub_efi_guid_t simple_file_system_guid = GRUB_EFI_SIMPLE_FILE_SYSTEM_GUID; ++ ++static grub_efi_file_t * ++simple_open_file(grub_efi_handle_t dev_handle, ++ char *file_name, ++ int for_write) ++{ ++ grub_efi_simple_file_system_t *file_system; ++ grub_efi_file_t *root; ++ grub_efi_file_t *file = NULL; ++ grub_efi_status_t status; ++ grub_efi_char16_t *file_name_w = NULL; ++ grub_efi_char16_t *chp_w; ++ grub_efi_uint64_t open_mode; ++ ++ file_system = grub_efi_open_protocol (dev_handle, ++ &simple_file_system_guid, ++ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL); ++ if (! file_system) ++ return NULL; ++ status = Call_Service_2 (file_system->open_volume, file_system, &root); ++ if (status != GRUB_EFI_SUCCESS) ++ return NULL; ++ file_name_w = grub_malloc (2 * strlen(file_name) + 2); ++ if (! file_name_w) ++ goto done; ++ for (chp_w = file_name_w; *file_name; chp_w++, file_name++) ++ if (*file_name == '/') ++ *chp_w = '\\'; ++ else ++ *chp_w = *file_name; ++ *chp_w = '\0'; ++ open_mode = for_write ? GRUB_EFI_FILE_MODE_READ | GRUB_EFI_FILE_MODE_WRITE \ ++ | GRUB_EFI_FILE_MODE_CREATE : GRUB_EFI_FILE_MODE_READ; ++ status = Call_Service_5 (root->open, root, &file, file_name_w, ++ open_mode, 0); ++ done: ++ if (file_name_w) ++ grub_free (file_name_w); ++ Call_Service_1 (root->close, root); ++ return file; ++} ++ ++void ++grub_load_saved_default (grub_efi_handle_t dev_handle) ++{ ++ grub_efi_file_t *file; ++ char buf[16]; ++ char *ptr = buf; ++ grub_efi_status_t status; ++ int val; ++ grub_efi_uintn_t buf_size = sizeof(buf); ++ ++ file = simple_open_file (dev_handle, saved_default_file, 0); ++ if (! file) ++ return; ++ status = Call_Service_3 (file->read, file, &buf_size, buf); ++ if (status != GRUB_EFI_SUCCESS) ++ goto done; ++ if (buf_size >= sizeof(buf)) ++ buf_size = sizeof(buf) - 1; ++ buf[buf_size] = '\0'; ++ if (safe_parse_maxint (&ptr, &val)) ++ saved_entryno = val; ++ done: ++ Call_Service_1 (file->close, file); ++} ++ ++int ++grub_save_saved_default (int new_default) ++{ ++ grub_efi_loaded_image_t *loaded_image; ++ grub_efi_file_t *file; ++ char buf[16]; ++ grub_efi_status_t status; ++ grub_efi_uintn_t buf_size; ++ int ret = 0; ++ ++ loaded_image = grub_efi_get_loaded_image (grub_efi_image_handle); ++ file = simple_open_file (loaded_image->device_handle, ++ saved_default_file, 1); ++ if (! file) ++ { ++ errnum = ERR_FILE_NOT_FOUND; ++ return 1; ++ } ++ sprintf (buf, "%d", new_default); ++ buf_size = strlen (buf); ++ status = Call_Service_3 (file->write, file, &buf_size, buf); ++ if (status != GRUB_EFI_SUCCESS) ++ { ++ errnum = ERR_WRITE; ++ ret = 1; ++ goto done; ++ } ++ done: ++ Call_Service_1 (file->close, file); ++ return ret; ++} +diff --git a/efi/efimm.c b/efi/efimm.c +new file mode 100644 +index 0000000..836188d +--- /dev/null ++++ b/efi/efimm.c +@@ -0,0 +1,539 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2006 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, ++ * MA 02110-1301, USA. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include ++ ++#define NEXT_MEMORY_DESCRIPTOR(desc, size) \ ++ ((grub_efi_memory_descriptor_t *) ((char *) (desc) + (size))) ++ ++#define BYTES_TO_PAGES(bytes) ((bytes) >> 12) ++#define PAGES_TO_BYTES(pages) ((pages) << 12) ++ ++/* Global variables used to store memory map, its size, and the number of ++ * pages allocated for the buffer. */ ++void *mmap_buf; ++grub_efi_uintn_t mmap_size; ++grub_efi_uintn_t mmap_pages; ++ ++/* Maintain the list of allocated pages. */ ++struct allocated_page ++{ ++ grub_efi_physical_address_t addr; ++ grub_efi_uint64_t num_pages; ++}; ++ ++#define ALLOCATED_PAGES_SIZE 0x1000 ++#define MAX_ALLOCATED_PAGES \ ++ (ALLOCATED_PAGES_SIZE / sizeof (struct allocated_page)) ++ ++static struct allocated_page *allocated_pages = 0; ++ ++/* The minimum and maximum heap size for GRUB itself. */ ++#define MIN_HEAP_SIZE 0x100000 ++#define MAX_HEAP_SIZE (16 * 0x100000) ++ ++ ++void * ++grub_efi_allocate_pool (grub_efi_uintn_t size) ++{ ++ grub_efi_status_t status; ++ void *p; ++ grub_efi_boot_services_t *b; ++ ++ b = grub_efi_system_table->boot_services; ++ status = Call_Service_3(b->allocate_pool, GRUB_EFI_LOADER_DATA, size, &p); ++ if (status != GRUB_EFI_SUCCESS) ++ return NULL; ++ ++ return p; ++} ++ ++void ++grub_efi_free_pool (void *buffer) ++{ ++ grub_efi_boot_services_t *b; ++ ++ b = grub_efi_system_table->boot_services; ++ Call_Service_1(b->free_pool, buffer); ++} ++ ++void * ++grub_efi_allocate_anypages(grub_efi_uintn_t pages) ++{ ++ grub_efi_boot_services_t *b; ++ grub_efi_status_t status; ++ grub_efi_physical_address_t address; ++ ++ b = grub_efi_system_table->boot_services; ++ status = Call_Service_4 (b->allocate_pages, ++ GRUB_EFI_ALLOCATE_ANY_PAGES, ++ GRUB_EFI_LOADER_DATA, ++ pages, ++ &address); ++ if (status != GRUB_EFI_SUCCESS) ++ return 0; ++ ++ if (allocated_pages) ++ { ++ unsigned i; ++ ++ for (i = 0; i < MAX_ALLOCATED_PAGES; i++) ++ if (allocated_pages[i].addr == 0) ++ { ++ allocated_pages[i].addr = address; ++ allocated_pages[i].num_pages = pages; ++ break; ++ } ++ ++ if (i == MAX_ALLOCATED_PAGES) ++ { ++ grub_printf ("too many page allocations"); ++ return NULL; ++ } ++ } ++ ++ return (void *) ((grub_addr_t) address); ++ ++} ++ ++/* Allocate pages. Return the pointer to the first of allocated pages. */ ++static void * ++grub_efi_allocate_pages_real (grub_efi_physical_address_t address, ++ grub_efi_uintn_t pages, ++ grub_efi_memory_type_t memtype) ++{ ++ grub_efi_allocate_type_t type; ++ grub_efi_status_t status; ++ grub_efi_boot_services_t *b; ++ ++ /* Limit the memory access to less than 2GB to avoid 64bit ++ * compatible problem of grub */ ++ if (address > 0x7fffffff) ++ return 0; ++ ++ if (address == 0) ++ { ++ type = GRUB_EFI_ALLOCATE_MAX_ADDRESS; ++ address = 0x7fffffff; ++ } ++ else ++ type = GRUB_EFI_ALLOCATE_ADDRESS; ++ ++ b = grub_efi_system_table->boot_services; ++ status = Call_Service_4 (b->allocate_pages, type, ++ memtype, pages, &address); ++ ++ if (status != GRUB_EFI_SUCCESS) ++ { ++ /* EFI_NOT_FOUND means the region was unavailable, which means we can ++ probably just use it. This is only for hacks to start with */ ++ if (memtype == GRUB_EFI_RUNTIME_SERVICES_DATA && ++ status == GRUB_EFI_NOT_FOUND) ++ return (void *) ((grub_addr_t) address); ++ else ++ return 0; ++ } ++ ++ if (address == 0) ++ { ++ /* Uggh, the address 0 was allocated... This is too annoying, ++ so reallocate another one. */ ++ address = 0x7fffffff; ++ status = Call_Service_4 (b->allocate_pages, ++ type, GRUB_EFI_LOADER_DATA, pages, &address); ++ grub_efi_free_pages (0, pages); ++ if (status != GRUB_EFI_SUCCESS) ++ return 0; ++ } ++ ++ /* We don't want to free anything we've allocated for runtime */ ++ if (allocated_pages && memtype != GRUB_EFI_RUNTIME_SERVICES_DATA) ++ { ++ unsigned i; ++ ++ for (i = 0; i < MAX_ALLOCATED_PAGES; i++) ++ if (allocated_pages[i].addr == 0) ++ { ++ allocated_pages[i].addr = address; ++ allocated_pages[i].num_pages = pages; ++ break; ++ } ++ ++ if (i == MAX_ALLOCATED_PAGES) ++ { ++ grub_printf ("too many page allocations"); ++ return NULL; ++ } ++ } ++ ++ return (void *) ((grub_addr_t) address); ++} ++ ++void * ++grub_efi_allocate_pages (grub_efi_physical_address_t address, ++ grub_efi_uintn_t pages) ++ ++{ ++ return grub_efi_allocate_pages_real(address, pages, GRUB_EFI_LOADER_DATA); ++} ++ ++void * ++grub_efi_allocate_runtime_pages (grub_efi_physical_address_t address, ++ grub_efi_uintn_t pages) ++ ++{ ++ return grub_efi_allocate_pages_real(address, pages, ++ GRUB_EFI_RUNTIME_SERVICES_DATA); ++} ++/* Free pages starting from ADDRESS. */ ++void ++grub_efi_free_pages (grub_efi_physical_address_t address, ++ grub_efi_uintn_t pages) ++{ ++ grub_efi_boot_services_t *b; ++ ++ if (allocated_pages ++ && ((grub_efi_physical_address_t) ((grub_addr_t) allocated_pages) ++ != address)) ++ { ++ unsigned i; ++ ++ for (i = 0; i < MAX_ALLOCATED_PAGES; i++) ++ if (allocated_pages[i].addr == address) ++ { ++ allocated_pages[i].addr = 0; ++ break; ++ } ++ } ++ ++ b = grub_efi_system_table->boot_services; ++ Call_Service_2 (b->free_pages ,address, pages); ++} ++ ++/* Get the memory map as defined in the EFI spec. Return 1 if successful, ++ return 0 if partial, or return -1 if an error occurs. ++ ++ This function will allocate memory for (global) mmap_buf if there isn't ++ already a buffer allocated, and will free & reallocate if it needs to ++ be larger. */ ++ ++int ++grub_efi_get_memory_map (grub_efi_uintn_t *map_key, ++ grub_efi_uintn_t *descriptor_size, ++ grub_efi_uint32_t *descriptor_version) ++{ ++ grub_efi_status_t status; ++ grub_efi_boot_services_t *b; ++ grub_efi_uintn_t key; ++ grub_efi_uint32_t version; ++ grub_efi_uintn_t tmp_mmap_size; ++ ++ /* Allow some parameters to be missing. */ ++ if (! map_key) ++ map_key = &key; ++ if (! descriptor_version) ++ descriptor_version = &version; ++ ++ while (1) ++ { ++ b = grub_efi_system_table->boot_services; ++ tmp_mmap_size = PAGES_TO_BYTES(mmap_pages); ++ status = Call_Service_5 (b->get_memory_map, ++ &tmp_mmap_size, mmap_buf, map_key, ++ descriptor_size, descriptor_version); ++ if (status == GRUB_EFI_SUCCESS) ++ { ++ mmap_size = tmp_mmap_size; ++ return 1; ++ } ++ else if (status != GRUB_EFI_BUFFER_TOO_SMALL) ++ return -1; ++ ++ /* we need a larger buffer */ ++ if (mmap_buf) ++ grub_efi_free_pages ((grub_addr_t) mmap_buf, mmap_pages); ++ ++ /* get 1 more page than we need, just in case */ ++ mmap_pages = BYTES_TO_PAGES(tmp_mmap_size + 4095) + 1; ++ mmap_buf = grub_efi_allocate_pages (0, mmap_pages); ++ if (! mmap_buf) ++ { ++ mmap_pages = 0; ++ grub_printf ("cannot allocate memory for memory map"); ++ return -1; ++ } ++ } ++} ++ ++#define MMAR_DESC_LENGTH 20 ++ ++/* ++ * Add a memory region to the kernel e820 map. ++ * ++ * Convert EFI memory map to E820 map for the operating system ++ * This code is based on a Linux kernel patch submitted by Edgar Hucek ++ */ ++static void ++add_memory_region (struct e820_entry *e820_map, ++ int *e820_nr_map, ++ unsigned long long start, ++ unsigned long long size, ++ unsigned int type) ++{ ++ int x = *e820_nr_map; ++ static unsigned long long estart = 0ULL; ++ static unsigned long esize = 0L; ++ static unsigned int etype = -1; ++ static int merge = 0; ++ ++ /* merge adjacent regions of same type */ ++ if ((x > 0) && e820_map[x-1].addr + e820_map[x-1].size == start ++ && e820_map[x-1].type == type) ++ { ++ e820_map[x-1].size += size; ++ estart = e820_map[x-1].addr; ++ esize = e820_map[x-1].size; ++ etype = e820_map[x-1].type; ++ merge++; ++ return; ++ } ++ ++ /* fill up to E820_MAX */ ++ if ( x < E820_MAX ) ++ { ++ e820_map[x].addr = start; ++ e820_map[x].size = size; ++ e820_map[x].type = type; ++ (*e820_nr_map)++; ++ merge=0; ++ return; ++ } ++ ++ /* different type means another region didn't fit */ ++ /* or same type, but there's a hole */ ++ if (etype != type || (estart + esize) != start) ++ { ++ merge = 0; ++ estart = start; ++ esize = size; ++ etype = type; ++ return; ++ } ++ ++ /* same type and no hole, merge it */ ++ estart += esize; ++ esize += size; ++ merge++; ++} ++ ++/* ++ * Make a e820 memory map ++ */ ++void ++e820_map_from_efi_map (struct e820_entry *e820_map, ++ int *e820_nr_map, ++ grub_efi_memory_descriptor_t *memory_map, ++ grub_efi_uintn_t desc_size, ++ grub_efi_uintn_t memory_map_size) ++{ ++ grub_efi_memory_descriptor_t *desc; ++ unsigned long long start = 0; ++ unsigned long long end = 0; ++ unsigned long long size = 0; ++ grub_efi_memory_descriptor_t *memory_map_end; ++ ++ memory_map_end = NEXT_MEMORY_DESCRIPTOR (memory_map, memory_map_size); ++ *e820_nr_map = 0; ++ for (desc = memory_map; ++ desc < memory_map_end; ++ desc = NEXT_MEMORY_DESCRIPTOR (desc, desc_size)) ++ { ++ switch (desc->type) ++ { ++ case GRUB_EFI_ACPI_RECLAIM_MEMORY: ++ add_memory_region (e820_map, e820_nr_map, ++ desc->physical_start, desc->num_pages << 12, ++ E820_ACPI); ++ break; ++ case GRUB_EFI_RUNTIME_SERVICES_CODE: ++ case GRUB_EFI_RUNTIME_SERVICES_DATA: ++ case GRUB_EFI_RESERVED_MEMORY_TYPE: ++ case GRUB_EFI_MEMORY_MAPPED_IO: ++ case GRUB_EFI_MEMORY_MAPPED_IO_PORT_SPACE: ++ case GRUB_EFI_UNUSABLE_MEMORY: ++ case GRUB_EFI_PAL_CODE: ++ add_memory_region (e820_map, e820_nr_map, ++ desc->physical_start, desc->num_pages << 12, ++ E820_RESERVED); ++ break; ++ case GRUB_EFI_LOADER_CODE: ++ case GRUB_EFI_LOADER_DATA: ++ case GRUB_EFI_BOOT_SERVICES_CODE: ++ case GRUB_EFI_BOOT_SERVICES_DATA: ++ case GRUB_EFI_CONVENTIONAL_MEMORY: ++ start = desc->physical_start; ++ size = desc->num_pages << 12; ++ end = start + size; ++ if (start < 0x100000ULL && end > 0xA0000ULL) ++ { ++ if (start < 0xA0000ULL) ++ add_memory_region (e820_map, e820_nr_map, ++ start, 0xA0000ULL-start, ++ E820_RAM); ++ if (end <= 0x100000ULL) ++ continue; ++ start = 0x100000ULL; ++ size = end - start; ++ } ++ add_memory_region (e820_map, e820_nr_map, ++ start, size, E820_RAM); ++ break; ++ case GRUB_EFI_ACPI_MEMORY_NVS: ++ add_memory_region (e820_map, e820_nr_map, ++ desc->physical_start, desc->num_pages << 12, ++ E820_NVS); ++ break; ++ } ++ } ++} ++ ++static void ++update_e820_map (struct e820_entry *e820_map, ++ int *e820_nr_map) ++{ ++ grub_efi_uintn_t desc_size; ++ ++ if (grub_efi_get_memory_map (0, &desc_size, 0) < 0) ++ { ++ grub_printf ("cannot get memory map"); ++ return; ++ } ++ ++ e820_map_from_efi_map (e820_map, e820_nr_map, ++ mmap_buf, desc_size, mmap_size); ++} ++ ++/* Simulated memory sizes. */ ++#define EXTENDED_MEMSIZE (3 * 1024 * 1024) /* 3MB */ ++#define CONVENTIONAL_MEMSIZE (640 * 1024) /* 640kB */ ++ ++int ++get_code_end (void) ++{ ++ /* Just return a little area for simulation. */ ++ return BOOTSEC_LOCATION + (60 * 1024); ++} ++ ++/* memory probe routines */ ++int ++get_memsize (int type) ++{ ++ if (! type) ++ return CONVENTIONAL_MEMSIZE >> 10; ++ else ++ return EXTENDED_MEMSIZE >> 10; ++} ++ ++/* get_eisamemsize() : return packed EISA memory map, lower 16 bits is ++ * memory between 1M and 16M in 1K parts, upper 16 bits is ++ * memory above 16M in 64K parts. If error, return -1. ++ */ ++int ++get_eisamemsize (void) ++{ ++ return (EXTENDED_MEMSIZE >> 10); ++} ++ ++static int grub_e820_nr_map; ++static struct e820_entry grub_e820_map[E820_MAX]; ++ ++/* Fetch the next entry in the memory map and return the continuation ++ value. DESC is a pointer to the descriptor buffer, and CONT is the ++ previous continuation value (0 to get the first entry in the ++ map). */ ++int ++get_mmap_entry (struct mmar_desc *desc, int cont) ++{ ++ if (cont < 0 || cont >= grub_e820_nr_map) ++ { ++ /* Should not happen. */ ++ desc->desc_len = 0; ++ } ++ else ++ { ++ struct e820_entry *entry; ++ /* Copy the entry. */ ++ desc->desc_len = MMAR_DESC_LENGTH; ++ entry = &grub_e820_map[cont++]; ++ desc->addr = entry->addr; ++ desc->length = entry->size; ++ desc->type = entry->type; ++ ++ /* If the next entry exists, return the index. */ ++ if (cont < grub_e820_nr_map) ++ return cont; ++ } ++ ++ return 0; ++} ++ ++void ++grub_efi_mm_init (void) ++{ ++ /* First of all, allocate pages to maintain allocations. */ ++ allocated_pages ++ = grub_efi_allocate_pages (0, BYTES_TO_PAGES (ALLOCATED_PAGES_SIZE)); ++ if (! allocated_pages) ++ { ++ grub_printf ("cannot allocate memory"); ++ return; ++ } ++ ++ grub_memset (allocated_pages, 0, ALLOCATED_PAGES_SIZE); ++ ++ update_e820_map (grub_e820_map, &grub_e820_nr_map); ++} ++ ++void ++grub_efi_mm_fini (void) ++{ ++ if (allocated_pages) ++ { ++ unsigned i; ++ ++ for (i = 0; i < MAX_ALLOCATED_PAGES; i++) ++ { ++ struct allocated_page *p; ++ ++ p = allocated_pages + i; ++ if (p->addr != 0) ++ grub_efi_free_pages ((grub_addr_t) p->addr, p->num_pages); ++ } ++ ++ grub_efi_free_pages ((grub_addr_t) allocated_pages, ++ BYTES_TO_PAGES (ALLOCATED_PAGES_SIZE)); ++ } ++} +diff --git a/efi/efinic.c b/efi/efinic.c +new file mode 100644 +index 0000000..e69de29 +diff --git a/efi/efiserial.c b/efi/efiserial.c +new file mode 100644 +index 0000000..32898a9 +--- /dev/null ++++ b/efi/efiserial.c +@@ -0,0 +1,265 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2007 Intel Corp. ++ * ++ * GRUB is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with GRUB; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifdef SUPPORT_SERIAL ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++ ++struct grub_efiserial_data ++{ ++ grub_efi_handle_t handle; ++ grub_efi_serial_io_t *serial_io; ++ struct grub_efiserial_data *next; ++}; ++ ++/* GUIDs. */ ++static grub_efi_guid_t serial_io_guid = GRUB_EFI_SERIAL_IO_GUID; ++ ++static grub_efi_serial_io_t *serial_device = NULL; ++ ++static struct grub_efiserial_data * ++make_devices (void) ++{ ++ grub_efi_uintn_t num_handles; ++ grub_efi_handle_t *handles; ++ grub_efi_handle_t *handle; ++ struct grub_efiserial_data *devices = 0; ++ ++ /* Find handles which support the serial io interface. */ ++ handles = grub_efi_locate_handle (GRUB_EFI_BY_PROTOCOL, &serial_io_guid, ++ 0, &num_handles); ++ if (! handles) ++ return 0; ++ ++ /* Make a linked list of devices. */ ++ for (handle = handles; num_handles--; handle++) ++ { ++ struct grub_efiserial_data *s; ++ grub_efi_serial_io_t *sio; ++ ++ sio = grub_efi_open_protocol (*handle, &serial_io_guid, ++ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL); ++ if (! sio) ++ /* This should not happen... Why? */ ++ continue; ++ ++ s = grub_malloc (sizeof (*s)); ++ if (! s) ++ { ++ /* Uggh. */ ++ grub_free (handles); ++ return 0; ++ } ++ ++ s->handle = *handle; ++ s->serial_io = sio; ++ s->next = devices; ++ devices = s; ++ } ++ ++ grub_free (handles); ++ ++ return devices; ++} ++ ++static void ++free_devices (struct grub_efiserial_data *devices) ++{ ++ struct grub_efiserial_data *p, *q; ++ ++ for (p = devices; p; p = q) ++ { ++ q = p->next; ++ grub_free (p); ++ } ++} ++ ++static struct grub_efiserial_data * ++get_device (struct grub_efiserial_data *devices, int num) ++{ ++ struct grub_efiserial_data *s; ++ ++ for (s = devices; s && num; s = s->next, num--) ++ ; ++ ++ if (num == 0) ++ return s; ++ ++ return 0; ++} ++ ++/* Fetch a key from a serial device. */ ++int ++serial_hw_fetch (void) ++{ ++ grub_efi_status_t status; ++ char buf[1]; ++ grub_efi_uintn_t buf_siz = sizeof (buf); ++ grub_efi_uint32_t control; ++ ++ if (! serial_device) ++ return -1; ++ ++ status = Call_Service_2 (serial_device->get_control_bits, serial_device, &control); ++ if (status != GRUB_EFI_SUCCESS) ++ return -1; ++ if (control & GRUB_EFI_SERIAL_INPUT_BUFFER_EMPTY) ++ return -1; ++ status = Call_Service_3 (serial_device->read, serial_device, &buf_siz, buf); ++ if (status != GRUB_EFI_SUCCESS) ++ return -1; ++ ++ return buf[0]; ++} ++ ++/* Put a character to a serial device. */ ++void ++serial_hw_put (int c) ++{ ++ grub_efi_status_t status; ++ char ch = c; ++ grub_efi_uintn_t buf_size = sizeof (ch); ++ ++ if (! serial_device) ++ return; ++ ++ status = Call_Service_3 (serial_device->write, serial_device, &buf_size, &ch); ++} ++ ++void ++serial_hw_delay (void) ++{ ++} ++ ++/* Get the port number of the unit UNIT, the port number is same as ++ serial port unit number in EFI. */ ++unsigned short ++serial_hw_get_port (int unit) ++{ ++ return unit; ++} ++ ++static inline grub_efi_uint8_t ++efi_data_bits_from_8250_LCR (int word_len) ++{ ++ switch (word_len & 0x3) ++ { ++ case 0: ++ return 5; ++ case 1: ++ return 6; ++ case 2: ++ return 7; ++ case 3: ++ return 8; ++ default: ++ return 0; ++ } ++} ++ ++static inline grub_efi_stop_bits_t ++efi_stop_bits_from_8250_LCR (int stop_bit_len) ++{ ++ switch (stop_bit_len & 0x4) ++ { ++ case 0x0: ++ return GRUB_EFI_ONE_STOP_BIT; ++ case 0x4: ++ return GRUB_EFI_TWO_STOP_BITS; ++ default: ++ return GRUB_EFI_DEFAULT_STOP_BITS; ++ } ++} ++ ++static inline grub_efi_parity_t ++efi_parity_from_8250_LCR (int parity_8250) ++{ ++ if (! (parity_8250 & 0x8)) ++ return GRUB_EFI_NO_PARITY; ++ ++ switch (parity_8250 & 0x30) ++ { ++ case 0x00: ++ return GRUB_EFI_ODD_PARITY; ++ case 0x10: ++ return GRUB_EFI_EVEN_PARITY; ++ case 0x20: ++ return GRUB_EFI_MARK_PARITY; ++ case 0x30: ++ return GRUB_EFI_SPACE_PARITY; ++ default: ++ return GRUB_EFI_DEFAULT_PARITY; ++ } ++} ++ ++/* Initialize a serial device. In EFI, PORT is used to assign ++ serial port unit number. */ ++int ++serial_hw_init (unsigned short port, unsigned int speed, ++ int word_len, int parity, int stop_bit_len) ++{ ++ grub_efi_serial_io_t *sio; ++ struct grub_efiserial_data *devices, *s; ++ grub_efi_parity_t efi_parity; ++ grub_efi_stop_bits_t efi_stop_bits; ++ grub_efi_uint8_t efi_data_bits; ++ grub_efi_status_t status; ++ int i; ++ ++ devices = make_devices (); ++ s = get_device (devices, port); ++ if (!s) ++ return 0; ++ sio = s->serial_io; ++ free_devices (devices); ++ ++ efi_data_bits = efi_data_bits_from_8250_LCR (word_len); ++ efi_parity = efi_parity_from_8250_LCR (parity); ++ efi_stop_bits = efi_stop_bits_from_8250_LCR (stop_bit_len); ++ ++ status = Call_Service_1 (sio->reset, sio); ++ if (status != GRUB_EFI_SUCCESS) ++ return 0; ++ ++ status = Call_Service_7 (sio->set_attributes, sio, speed, 0, 0, ++ efi_parity, efi_data_bits, efi_stop_bits); ++ if (status != GRUB_EFI_SUCCESS) ++ return 0; ++ ++ serial_device = sio; ++ /* Get rid of TERM_NEED_INIT from the serial terminal. */ ++ for (i = 0; term_table[i].name; i++) ++ if (grub_strcmp (term_table[i].name, "serial") == 0) ++ { ++ term_table[i].flags &= ~TERM_NEED_INIT; ++ break; ++ } ++ ++ return 1; ++} ++ ++#endif /* SUPPORT_SERIAL */ +diff --git a/efi/efitftp.c b/efi/efitftp.c +new file mode 100644 +index 0000000..ba6918f +--- /dev/null ++++ b/efi/efitftp.c +@@ -0,0 +1,228 @@ ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include "pxe.h" ++ ++struct tftp_info tftp_info = { ++ .LoadedImage = NULL, ++ .Pxe = NULL, ++ .ServerIp = NULL, ++ .BasePath = NULL ++}; ++ ++/* ++ * CLIENT MAC ADDR: 00 15 17 4C E6 74 ++ * CLIENT IP: 10.16.52.158 MASK: 255.255.255.0 DHCP IP: 10.16.52.16 ++ * GATEWAY IP: 10.16.52.254 ++ * ++ * TSize.Running LoadFile() ++ * ++ * TFTP.status: 5 ++ * got to grub_efi_pxe_get_config_path ++ * SiAddr: 10.16.52.16 ++ * BootpHwAddr: 00:15:17:4c:e6:74:00:00:00:00:00:00:00:00:00:00 ++ * BootpSrvName: ++ * BootpBootFile: X86PC/UNDI/pxelinux/bootx64.efi ++ */ ++ ++static grub_efi_status_t tftp_get_file_size_defective_buffer_fallback( ++ char *Filename, ++ grub_efi_uintn_t *Size) ++{ ++ EFI_PXE_BASE_CODE_TFTP_OPCODE OpCode = EFI_PXE_BASE_CODE_TFTP_READ_FILE; ++ char *Buffer = NULL; ++ grub_efi_boolean_t Overwrite = 0; ++ grub_efi_boolean_t DontUseBuffer = 0; ++ grub_efi_uint64_t BufferSize = 4096; ++ grub_efi_uintn_t BlockSize = 512; ++ grub_efi_status_t rc = GRUB_EFI_BUFFER_TOO_SMALL; ++ char *FullPath = NULL; ++ ++ while (rc == GRUB_EFI_BUFFER_TOO_SMALL) { ++ char *NewBuffer; ++ ++ if (Buffer) { ++ grub_free(Buffer); ++ Buffer = NULL; ++ } ++ BufferSize *= 2; ++ NewBuffer = grub_malloc(BufferSize); ++ if (!NewBuffer) ++ return GRUB_EFI_OUT_OF_RESOURCES; ++ Buffer = NewBuffer; ++ ++ if (tftp_info.BasePath) { ++ int PathSize = 0; ++ PathSize = strlen(tftp_info.BasePath) + 2 + ++ strlen(Filename); ++ FullPath = grub_malloc(PathSize); ++ grub_sprintf(FullPath, "%s/%s", tftp_info.BasePath, ++ Filename); ++ } else { ++ FullPath = grub_malloc(strlen(Filename)); ++ strcpy(FullPath, Filename); ++ } ++ ++ rc = Call_Service_10(tftp_info.Pxe->Mtftp, tftp_info.Pxe, ++ OpCode, Buffer, Overwrite, &BufferSize, &BlockSize, ++ tftp_info.ServerIp, FullPath, NULL, DontUseBuffer); ++ if (rc == GRUB_EFI_SUCCESS || rc == GRUB_EFI_BUFFER_TOO_SMALL) ++ *Size = BufferSize; ++ } ++ grub_free(FullPath); ++ grub_free(Buffer); ++ return rc; ++} ++ ++grub_efi_status_t tftp_get_file_size( ++ char *Filename, ++ grub_efi_uintn_t *Size) ++{ ++ EFI_PXE_BASE_CODE_TFTP_OPCODE OpCode = EFI_PXE_BASE_CODE_TFTP_GET_FILE_SIZE; ++ char Buffer[8192]; ++ grub_efi_boolean_t Overwrite = 0; ++ grub_efi_boolean_t DontUseBuffer = 0; ++ grub_efi_uint64_t BufferSize = 8192; ++ grub_efi_uintn_t BlockSize = 512; ++ grub_efi_status_t rc; ++ char *FullPath = NULL; ++ ++ if (tftp_info.BasePath) { ++ int PathSize = 0; ++ PathSize = strlen(tftp_info.BasePath) + 2 + strlen(Filename); ++ FullPath = grub_malloc(PathSize); ++ grub_sprintf(FullPath, "%s/%s", tftp_info.BasePath, Filename); ++ } else { ++ FullPath = grub_malloc(strlen(Filename)); ++ strcpy(FullPath, Filename); ++ } ++ ++ rc = Call_Service_10(tftp_info.Pxe->Mtftp, tftp_info.Pxe, OpCode, ++ Buffer, Overwrite, &BufferSize, &BlockSize, tftp_info.ServerIp, ++ FullPath, NULL, DontUseBuffer); ++ if (rc == GRUB_EFI_BUFFER_TOO_SMALL) ++ rc = tftp_get_file_size_defective_buffer_fallback(Filename, Size); ++ if (rc == GRUB_EFI_SUCCESS) ++ *Size = BufferSize; ++ grub_free(FullPath); ++ return rc; ++} ++ ++static grub_efi_status_t tftp_read_file( ++ char *Filename, ++ char *Buffer, ++ grub_efi_uint64_t BufferSize) ++{ ++ EFI_PXE_BASE_CODE_TFTP_OPCODE OpCode = EFI_PXE_BASE_CODE_TFTP_READ_FILE; ++ grub_efi_boolean_t Overwrite = 0; ++ grub_efi_boolean_t DontUseBuffer = 0; ++ grub_efi_uintn_t BlockSize = 512; ++ grub_efi_status_t rc; ++ char *FullPath = NULL; ++ ++ if (tftp_info.BasePath) { ++ int PathSize = 0; ++ PathSize = strlen(tftp_info.BasePath) + 2 + strlen(Filename); ++ FullPath = grub_malloc(PathSize); ++ grub_sprintf(FullPath, "%s/%s", tftp_info.BasePath, Filename); ++ } else { ++ FullPath = grub_malloc(strlen(Filename)); ++ strcpy(FullPath, Filename); ++ } ++ ++ rc = Call_Service_10(tftp_info.Pxe->Mtftp, tftp_info.Pxe, OpCode, ++ Buffer, Overwrite, &BufferSize, &BlockSize, tftp_info.ServerIp, ++ FullPath, NULL, DontUseBuffer); ++ grub_free(FullPath); ++ return rc; ++} ++ ++int ++efi_tftp_mount (void) ++{ ++ if (current_drive != NETWORK_DRIVE) { ++ return 0; ++ } ++ return 1; ++} ++ ++int ++efi_tftp_read (char *addr, int size) ++{ ++ int rc; ++ ++ if (tftp_info.LastPath == NULL) { ++ grub_printf(" = 0 (no path known)\n"); ++ return 0; ++ } ++ if (tftp_info.Buffer == NULL) { ++ grub_printf(" = 0 (no file open)\n"); ++ return 0; ++ } ++ if (filemax == -1) { ++ grub_printf(" = 0 (file not found)\n"); ++ return 0; ++ } ++ if (filepos == 0) { ++ rc = tftp_read_file(tftp_info.LastPath, tftp_info.Buffer, ++ filemax); ++ } ++ ++ grub_memmove(addr, tftp_info.Buffer+filepos, size); ++ filepos += size; ++ ++ return size; ++} ++ ++int ++efi_tftp_dir (char *dirname) ++{ ++ int rc; ++ int ch; ++ grub_efi_uintn_t size; ++ int len; ++ char *name; ++ ++ ch = nul_terminate(dirname); ++ len = strlen(dirname); ++ ++ name = grub_malloc(len + 1); ++ grub_memmove(name, dirname, len); ++ name[len] = '\0'; ++ dirname[len] = ch; ++ ++#if 0 ++ if (print_possibilities) ++ return 1; ++#endif ++ ++ filemax = -1; ++ ++ rc = tftp_get_file_size(name, &size); ++ if (rc == GRUB_EFI_SUCCESS) { ++ tftp_info.LastPath = grub_malloc(strlen(name) + 1); ++ sprintf(tftp_info.LastPath, "%s", name); ++ filemax = size; ++ filepos = 0; ++ ++ tftp_info.Buffer = grub_malloc(filemax); ++ ++ return 1; ++ } ++ return 0; ++} ++ ++void ++efi_tftp_close (void) ++{ ++ filepos = 0; ++ filemax = -1; ++ grub_free(tftp_info.LastPath); ++ tftp_info.LastPath = NULL; ++ grub_free(tftp_info.Buffer); ++ tftp_info.Buffer = NULL; ++} +diff --git a/efi/efiuga.c b/efi/efiuga.c +new file mode 100644 +index 0000000..b27500b +--- /dev/null ++++ b/efi/efiuga.c +@@ -0,0 +1,982 @@ ++/* efiuga.c - "univeral graphics adapter" support for GRUB/EFI */ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright 2007 Red Hat, Inc. ++ * Copyright (C) 2007 Intel Corp. ++ * Copyright (C) 2001,2002 Red Hat, Inc. ++ * Portions copyright (C) 2000 Conectiva, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifdef SUPPORT_GRAPHICS ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++ ++#include "graphics.h" ++#include "xpm.h" ++ ++static grub_efi_guid_t draw_guid = GRUB_EFI_UGA_DRAW_GUID; ++static grub_efi_guid_t pci_io_guid = GRUB_EFI_PCI_IO_GUID; ++ ++#if 0 ++#define UGA ++#include "ugadebug.h" ++#endif ++ ++#ifndef MIN ++#define MIN(x,y) ( ((x) < (y)) ? (x) : (y)) ++#endif ++#ifndef MAX ++#define MAX(x,y) ( ((x) < (y)) ? (y) : (x)) ++#endif ++ ++#define pixel_equal(x,y) ((x).red == (y).red && \ ++ (x).green == (y).green && \ ++ (x).blue == (y).blue) ++ ++struct video_mode { ++ grub_efi_uint32_t horizontal_resolution; ++ grub_efi_uint32_t vertical_resolution; ++ grub_efi_uint32_t color_depth; ++ grub_efi_uint32_t refresh_rate; ++}; ++ ++static void ++xpnd_6_to_8(grub_efi_uga_pixel_t *pixel) ++{ ++ if (!((pixel->red | pixel->green | pixel->blue) & 0xc0)) { ++ pixel->red <<= 2; ++ pixel->red |= ((pixel->red & 0xc0) >> 6); ++ pixel->red &= 0xff; ++ pixel->green <<= 2; ++ pixel->green |= ((pixel->green & 0xc0) >> 6); ++ pixel->green &= 0xff; ++ pixel->blue <<= 2; ++ pixel->blue |= ((pixel->blue & 0xc0) >> 6); ++ pixel->blue &= 0xff; ++ } ++} ++ ++ ++ ++#define MAX_PALETTE 16 ++struct uga { ++ grub_efi_uga_draw_t *draw_intf; ++ struct video_mode graphics_mode; ++ struct video_mode text_mode; ++ enum { TEXT, GRAPHICS } current_mode; ++ ++ position_t screen_size; ++ position_t screen_pos; ++ ++ struct bltbuf *background; ++ ++ grub_efi_uga_pixel_t palette[MAX_PALETTE + 1]; ++}; ++ ++#define RGB(r,g,b) { .red = r, .green = g, .blue = b } ++ ++static grub_efi_uga_pixel_t cga_colors[] = { ++ RGB(0x00,0x00,0x00), // 0 Black ++ RGB(0x7f,0x00,0x00), // 1 Dark Red ++ RGB(0x00,0x7f,0x00), // 2 Dark Green ++ RGB(0x7f,0x7f,0x00), // 3 Dark Yellow ++ RGB(0x00,0x00,0x7f), // 4 Dark Blue ++ RGB(0x7f,0x00,0x7f), // 5 Dark Magenta ++ RGB(0x00,0x7f,0x7f), // 6 Dark Cyan ++ RGB(0xc0,0xc0,0xc0), // 7 Light Grey ++ RGB(0x7f,0x7f,0x7f), // 8 Dark Grey ++ RGB(0xff,0x00,0x00), // 9 Red ++ RGB(0x00,0xff,0x00), // 10 Green ++ RGB(0xff,0xff,0x00), // 11 Yellow ++ RGB(0x00,0x00,0xff), // 12 Blue ++ RGB(0xff,0x00,0xff), // 13 Magenta ++ RGB(0x00,0xff,0xff), // 14 Cyan ++ RGB(0xff,0xff,0xff), // 15 White ++ RGB(0xff,0xff,0xff), // 16 Also white ;) ++}; ++ ++static const int n_cga_colors = sizeof (cga_colors) / sizeof (cga_colors[0]); ++ ++static void ++set_kernel_params(struct graphics_backend *backend, ++ struct linux_kernel_params *params) ++{ ++ struct uga *uga; ++ ++ if (!backend || !backend->priv) ++ return; ++ ++ uga = backend->priv; ++ ++ params->lfb_width = uga->graphics_mode.horizontal_resolution; ++ params->lfb_height = uga->graphics_mode.vertical_resolution; ++ params->lfb_depth = 32; ++ params->red_mask_size = 8; ++ params->red_field_pos = 16; ++ params->green_mask_size = 8; ++ params->green_field_pos = 8; ++ params->blue_mask_size = 8; ++ params->blue_field_pos = 0; ++ params->reserved_mask_size = 8; ++ params->reserved_field_pos = 24; ++ params->have_vga = VIDEO_TYPE_EFI; ++} ++ ++static void ++pixel_to_rgb(grub_efi_uga_pixel_t *pixel, int *red, int *green, int *blue) ++{ ++ *red = pixel->red; ++ *green = pixel->green; ++ *blue = pixel->blue; ++} ++ ++static void ++rgb_to_pixel(int red, int green, int blue, grub_efi_uga_pixel_t *pixel) ++{ ++ pixel->red = red; ++ pixel->green = green; ++ pixel->blue = blue; ++} ++ ++static void ++position_to_phys(struct uga *uga, position_t *virt, position_t *phys) ++{ ++ phys->x = virt->x + uga->screen_pos.x; ++ phys->y = virt->y + uga->screen_pos.y; ++} ++ ++static int ++abs_paddr(struct uga *uga, position_t *virt) ++{ ++ position_t phys; ++ position_to_phys(uga, virt, &phys); ++ return phys.x + phys.y * uga->screen_size.x; ++} ++ ++struct bltbuf { ++ grub_efi_uintn_t width; ++ grub_efi_uintn_t height; ++ grub_efi_uga_pixel_t pixbuf[]; ++}; ++ ++static struct bltbuf *alloc_bltbuf(grub_efi_uintn_t width, ++ grub_efi_uintn_t height) ++{ ++ struct bltbuf *buf = NULL; ++ grub_efi_uintn_t pixbuf_size = width * height * ++ sizeof (grub_efi_uga_pixel_t); ++ ++ if (!(buf = grub_malloc(sizeof(buf->width) + sizeof(buf->height) + ++ pixbuf_size))) ++ return NULL; ++ ++ buf->width = width; ++ buf->height = height; ++ grub_memset(buf->pixbuf, '\0', pixbuf_size); ++ return buf; ++} ++ ++static void ++blt_to_screen(struct uga *uga, struct bltbuf *bltbuf) ++{ ++ position_t addr = {0, 0}; ++ ++ position_to_phys(uga, &addr, &addr); ++ ++ Call_Service_10(uga->draw_intf->blt, uga->draw_intf, bltbuf->pixbuf, ++ EfiUgaBltBufferToVideo, ++ 0, 0, ++ addr.x, addr.y, ++ bltbuf->width, bltbuf->height, ++ 0); ++} ++ ++static void ++blt_pos_to_screen_pos(struct uga *uga, struct bltbuf *bltbuf, ++ position_t *bltpos, position_t *bltsz, position_t *pos) ++{ ++ position_t phys; ++ ++ position_to_phys(uga, pos, &phys); ++ ++ Call_Service_10(uga->draw_intf->blt, uga->draw_intf, bltbuf->pixbuf, ++ EfiUgaBltBufferToVideo, ++ bltpos->x, bltpos->y, ++ phys.x, phys.y, ++ bltsz->x, bltsz->y, ++ 0); ++} ++ ++static void ++blt_to_screen_pos(struct uga *uga, struct bltbuf *bltbuf, position_t *pos) ++{ ++ position_t bltpos = {0, 0}; ++ position_t bltsz = { bltbuf->width, bltbuf->height }; ++ blt_pos_to_screen_pos(uga, bltbuf, &bltpos, &bltsz, pos); ++} ++ ++static int ++blt_from_screen_pos(struct uga *uga, struct bltbuf **retbuf, ++ position_t *pos, position_t *size) ++{ ++ struct bltbuf *bltbuf = NULL; ++ position_t phys; ++ ++ if (!retbuf) ++ return 0; ++ ++ if (*retbuf) ++ grub_free(*retbuf); ++ ++ bltbuf = alloc_bltbuf(size->x, size->y); ++ if (!bltbuf) ++ return 0; ++ ++ position_to_phys(uga, pos, &phys); ++ ++ Call_Service_10(uga->draw_intf->blt, uga->draw_intf, bltbuf->pixbuf, ++ EfiUgaVideoToBltBuffer, ++ phys.x, phys.y, ++ 0, 0, ++ size->x, size->y, 0); ++ *retbuf = bltbuf; ++ return 1; ++} ++ ++static int ++save_video_mode(struct uga *uga, struct video_mode *mode) ++{ ++ grub_efi_status_t status; ++ ++ status = Call_Service_5(uga->draw_intf->get_mode, uga->draw_intf, ++ &mode->horizontal_resolution, &mode->vertical_resolution, ++ &mode->color_depth, &mode->refresh_rate); ++ return status == GRUB_EFI_SUCCESS; ++} ++ ++static grub_efi_status_t ++set_video_mode(struct uga *uga, struct video_mode *mode) ++{ ++ grub_efi_status_t status; ++ ++ status = Call_Service_5(uga->draw_intf->set_mode, uga->draw_intf, ++ mode->horizontal_resolution, ++ mode->vertical_resolution, ++ mode->color_depth, ++ mode->refresh_rate); ++ return status; ++} ++ ++static int ++cmp_video_modes(struct video_mode *vm0, struct video_mode *vm1) ++{ ++ if (vm0->horizontal_resolution == vm1->horizontal_resolution && ++ vm0->vertical_resolution == vm1->vertical_resolution) ++ return 0; ++ if (vm0->horizontal_resolution >= vm1->horizontal_resolution && ++ vm0->vertical_resolution >= vm1->vertical_resolution) ++ return 1; ++ return -1; ++} ++ ++static int ++blt_from_screen(struct uga *uga, struct bltbuf **retbuf) ++{ ++ struct bltbuf *bltbuf = NULL; ++ position_t pos = {0 ,0}; ++ position_t size = { ++ .x = uga->graphics_mode.horizontal_resolution, ++ .y = uga->graphics_mode.vertical_resolution ++ }; ++ ++ return blt_from_screen_pos(uga, retbuf, &pos, &size); ++} ++ ++static void ++bltbuf_set_pixel(struct bltbuf *bltbuf, position_t *pos, ++ grub_efi_uga_pixel_t *pixel) ++{ ++ if (pos->x < 0 || pos->x >= bltbuf->width) ++ return; ++ if (pos->x < 0 || pos->y >= bltbuf->height) ++ return; ++ grub_memmove(&bltbuf->pixbuf[pos->x + pos->y * bltbuf->width], pixel, ++ sizeof *pixel); ++} ++ ++static void ++bltbuf_get_pixel(struct bltbuf *bltbuf, position_t *pos, ++ grub_efi_uga_pixel_t *pixel) ++{ ++ if (bltbuf && pos->x < bltbuf->width && pos->y < bltbuf->height) { ++ grub_memmove(pixel, &bltbuf->pixbuf[pos->x + pos->y * bltbuf->width], ++ sizeof *pixel); ++ } else { ++ pixel->red = 0x00; ++ pixel->green = 0x00; ++ pixel->blue = 0x00; ++ } ++} ++ ++static void ++bltbuf_set_pixel_rgb(struct bltbuf *bltbuf, position_t *pos, ++ int red, int green, int blue) ++{ ++ grub_efi_uga_pixel_t pixel; ++ rgb_to_pixel(red, green, blue, &pixel); ++ bltbuf_set_pixel(bltbuf, pos, &pixel); ++} ++ ++static void ++bltbuf_set_pixel_idx(struct uga *uga, struct bltbuf *bltbuf, ++ position_t *pos, int idx) ++{ ++ bltbuf_set_pixel(bltbuf, pos, &uga->palette[idx]); ++} ++ ++static void ++bltbuf_get_pixel_idx(struct bltbuf *bltbuf, position_t *pos, int *idx) ++{ ++ grub_efi_uga_pixel_t pixel; ++ ++ rgb_to_pixel(0, 0, 0, &pixel); ++ bltbuf_get_pixel(bltbuf, pos, &pixel); ++ for (*idx = 0; *idx < 16; (*idx)++) { ++ if (pixel_equal(cga_colors[*idx], pixel)) ++ break; ++ } ++} ++ ++static struct bltbuf * ++xpm_to_bltbuf(struct xpm *xpm) ++{ ++ struct bltbuf *bltbuf = NULL; ++ position_t pos; ++ ++ if (!(bltbuf = alloc_bltbuf(xpm->width, xpm->height))) ++ return NULL; ++ ++ for (pos.y = 0; pos.y < xpm->height; pos.y++) { ++ for (pos.x = 0; pos.x < xpm->width; pos.x++) { ++ xpm_pixel_t xpl; ++ unsigned char idx; ++ ++ idx = xpm_get_pixel_idx(xpm, pos.x, pos.y); ++ xpm_get_idx(xpm, idx, &xpl); ++ ++ bltbuf_set_pixel_rgb(bltbuf, &pos, xpl.red, xpl.green, xpl.blue); ++ } ++ } ++ ++ return bltbuf; ++} ++ ++static void ++cursor(struct graphics_backend *backend, int set) ++{ ++ struct uga *uga; ++ int ch, invert; ++ unsigned short *text; ++ position_t fpos, screensz; ++ int offset; ++ ++ uga = backend->priv; ++ ++ if (set && !graphics_get_scroll()) ++ return; ++ ++ text = graphics_get_text_buf(); ++ graphics_get_font_position(&fpos); ++ graphics_get_screen_rowscols(&screensz); ++ ++ offset = fpos.y * screensz.x + fpos.x; ++ ++ if (set) ++ text[offset] |= 0x200; ++ ++ graphics_clbl(fpos.x, fpos.y, 1, 1, 1); ++ ++ if (set) ++ text[offset] &= 0xfdff; ++} ++ ++static void blank(struct graphics_backend *backend); ++ ++static void ++reset_screen_geometry(struct graphics_backend *backend) ++{ ++ struct uga *uga = backend->priv; ++ struct xpm *xpm = graphics_get_splash_xpm(); ++ position_t screensz = { .x = 640, .y = 480 }; ++ ++ if (xpm) { ++ screensz.x = xpm->width; ++ screensz.y = xpm->height; ++ } ++ ++ uga->screen_pos.x = ++ (uga->graphics_mode.horizontal_resolution - screensz.x) / 2; ++ uga->screen_pos.y = ++ (uga->graphics_mode.vertical_resolution - screensz.y) / 2; ++ ++ blank(backend); ++ graphics_get_screen_rowscols(&screensz); ++ graphics_clbl(0, 0, screensz.x, screensz.y, 0); ++ graphics_clbl(0, 0, screensz.x, screensz.y, 1); ++} ++ ++static void ++get_screen_size(struct graphics_backend *backend, position_t *size) ++{ ++ struct uga *uga = backend->priv; ++ size->x = uga->graphics_mode.horizontal_resolution; ++ size->y = uga->graphics_mode.vertical_resolution; ++} ++ ++static void ++setxy(struct graphics_backend *backend, position_t *pos) ++{ ++ position_t fpos; ++ ++ fpos.x = pos->x; ++ fpos.y = pos->y; ++ graphics_set_font_position(&fpos); ++} ++ ++static void ++uga_getxy(struct graphics_backend *backend, position_t *pos) ++{ ++ graphics_get_font_position(pos); ++} ++ ++static void ++draw_pixel(struct graphics_backend *backend, position_t *pos, pixel_t *pixel) ++{ ++ struct bltbuf *bltbuf = NULL; ++ grub_efi_uga_pixel_t *eup = (grub_efi_uga_pixel_t *)pixel; ++ ++ bltbuf = alloc_bltbuf(1,1); ++ if (!bltbuf) ++ return; ++ ++ grub_memmove(&bltbuf->pixbuf[0], eup, sizeof (*eup)); ++ ++ blt_to_screen_pos(backend->priv, bltbuf, pos); ++ ++ grub_free(bltbuf); ++} ++ ++static pixel_t * ++get_pixel_idx(struct graphics_backend *backend, int idx) ++{ ++ static grub_efi_uga_pixel_t pixel; ++ struct uga *uga = backend->priv; ++ if (idx < 0 || idx > MAX_PALETTE) ++ return NULL; ++ pixel.red = uga->palette[idx].red; ++ pixel.green = uga->palette[idx].green; ++ pixel.blue = uga->palette[idx].blue; ++ return (pixel_t *)&pixel; ++} ++ ++static pixel_t * ++get_pixel_rgb(struct graphics_backend *backend, int red, int green, int blue) ++{ ++ static grub_efi_uga_pixel_t pixel; ++ rgb_to_pixel(red, green, blue, &pixel); ++ return &pixel; ++} ++ ++static void ++set_palette(struct graphics_backend *backend, int idx, ++ int red, int green, int blue) ++{ ++ grub_efi_uga_pixel_t pixel; ++ struct uga *uga = backend->priv; ++ ++ if (idx > MAX_PALETTE) ++ return; ++ rgb_to_pixel(red, green, blue, &pixel); ++ grub_memmove(&uga->palette[idx], &pixel, sizeof pixel); ++} ++ ++static void ++blank(struct graphics_backend *backend) ++{ ++ struct uga *uga = backend->priv; ++ struct bltbuf *bltbuf; ++ position_t pos = {0, 0}; ++ grub_efi_uintn_t x, y, i, j; ++ unsigned char r = 0 ,g = 0; ++ ++ x = uga->graphics_mode.horizontal_resolution; ++ y = uga->graphics_mode.vertical_resolution; ++ ++ if (x == 0 || y == 0) ++ return; ++ ++ bltbuf = alloc_bltbuf(x, y); ++ for (j = 0; j < y; j++) { ++ if (debug_graphics && j % 16 == 0) { ++ g = g == 0 ? 7 : 0; ++ r = g == 0 ? 7 : 0; ++ } ++ for (i = 0; i < x; i++) { ++ if (debug_graphics && i % 16 == 0) { ++ g = g == 0 ? 7 : 0; ++ r = g == 0 ? 7 : 0; ++ } ++ pos.x = i; ++ pos.y = j; ++ bltbuf_set_pixel_rgb(bltbuf, &pos, r * 16, g * 16, 0x0); ++ } ++ } ++ ++ Call_Service_10(uga->draw_intf->blt, uga->draw_intf, bltbuf->pixbuf, ++ EfiUgaBltBufferToVideo, 0, 0, 0, 0, x, y, 0); ++ ++ grub_free(bltbuf); ++} ++ ++static void ++bltbuf_cp_bl(struct bltbuf *d, position_t dpos, ++ struct bltbuf *s, position_t spos) ++{ ++ grub_efi_uga_pixel_t *dp, *sp; ++ ++ const int xavail = MAX(0, s ? s->width - spos.x : 0); ++ const int xtotal = MAX(0, d->width - dpos.x); ++ const int xcp = MAX(0, MIN(xtotal, xavail)); ++ const int xcl = MAX(0, xtotal - xcp); ++ ++ const int yavail = MAX(0, s ? s->height - spos.y : 0); ++ const int ytotal = MAX(0, d->height - dpos.y); ++ const int ycp = MAX(0, MIN(ytotal, yavail)); ++ const int ycl = MAX(0, ytotal - ycp); ++ ++ int y, x; ++ ++ for (y = 0; y < ytotal; y++) { ++ dp = &d->pixbuf[(dpos.y + y) * d->width + dpos.x]; ++ ++ if (y < yavail) { ++ sp = &s->pixbuf[(spos.y + y) * s->width + spos.x]; ++ memmove(dp, sp, xcp * sizeof (*dp)); ++ dp = &d->pixbuf[(dpos.y + y) * d->width + dpos.x + xcp]; ++ memset(dp, '\0', xcl * sizeof (*dp)); ++ } else { ++ memset(dp, '\0', xtotal * sizeof (*dp)); ++ } ++ } ++} ++ ++/* copy a region the size of bltbuf from the background into bltbuf, ++ * starting at offset bgpos ++ */ ++static void ++bltbuf_draw_bg(struct graphics_backend *backend, struct bltbuf *bltbuf, ++ position_t bgpos) ++{ ++ struct uga *uga = backend->priv; ++ position_t blpos = { 0, 0 }; ++ ++ bltbuf_cp_bl(bltbuf, blpos, uga->background, bgpos); ++} ++ ++static void ++dbg_dump_palette(struct graphics_backend *backend) ++{ ++ struct uga *uga; ++ int i; ++ if (!backend || !backend->priv) ++ return; ++ uga = backend->priv; ++ if (!uga->palette) ++ return; ++} ++ ++static int ++is_shadow_pixel(position_t screensz, position_t textpos, position_t bitpos, ++ position_t fontsz) ++{ ++ unsigned short *text = graphics_get_text_buf(); ++ const unsigned char *glyph; ++ position_t glyphpos = { textpos.x, textpos.y }; ++ position_t glyphbit = { bitpos.x, bitpos.y }; ++ unsigned short ch; ++ ++ if (glyphbit.x == 0) { ++ glyphbit.x = fontsz.x; ++ glyphpos.x--; ++ } ++ if (glyphbit.y == 0) { ++ glyphbit.y = fontsz.y; ++ glyphpos.y--; ++ } ++ glyphbit.x--; ++ glyphbit.y--; ++ ++ if (glyphpos.x < 0 || glyphpos.y < 0) ++ return 0; ++ ++ ch = text[glyphpos.y * screensz.x + glyphpos.x] & 0xff; ++ glyph = font8x16 + (ch << 4); ++ return glyph[glyphbit.y] & (1 << ((fontsz.x-1) - glyphbit.x)); ++} ++ ++static void ++bltbuf_draw_character(struct graphics_backend *backend, ++ struct bltbuf *bltbuf, /* the bltbuf to draw into */ ++ position_t target, /* the position in the bltbuf to draw to */ ++ position_t fontsz, /* the size of the font, in pixels */ ++ position_t charpos, /* the position of the character in the text ++ screen buffer */ ++ position_t screensz, /* the size of the screen in characters */ ++ unsigned short ch /* the character to draw, plus flags */ ++ ) ++{ ++ struct uga *uga = backend->priv; ++ position_t blpos; ++ position_t glyphpos; ++ ++ blpos.y = target.y; ++ for (glyphpos.y = 0; glyphpos.y < fontsz.y; glyphpos.y++, blpos.y++) { ++ blpos.x = target.x; ++ for (glyphpos.x = 0; glyphpos.x < fontsz.x; glyphpos.x++, blpos.x++) { ++ int invert = (ch & 0x0100) != 0; ++ int set = (ch & 0x0200) != 0; ++ const unsigned char *glyph = font8x16 + ((ch & 0xff) << 4); ++ int bit = glyph[glyphpos.y] & (1 << ((fontsz.x-1) - glyphpos.x)); ++ int idx = -1; ++ ++ if (!set) { ++ if (invert) ++ idx = bit ? 0 : 15; ++ else if (bit) ++ idx = 15; ++ ++ if (idx == -1) { ++ if (is_shadow_pixel(screensz, charpos, glyphpos, fontsz) || ++ !uga->background) ++ idx = invert ? 15 : 0; ++ } ++ } else { ++ idx = bit ? 0 : 15; ++ } ++ ++ if (idx != -1) ++ bltbuf_set_pixel_idx(uga, bltbuf, &blpos, idx); ++ } ++ } ++} ++ ++static void ++bltbuf_draw_text(struct graphics_backend *backend, ++ struct bltbuf *bltbuf, /* the buffer to draw into */ ++ position_t screensz, /* the size of the screen in characters */ ++ position_t fontsz, /* the size of the font in pixels */ ++ position_t txtpos, /* the position of the text on the screen ++ (in characters) */ ++ position_t txtsz /* the size of the block to fill in ++ (in characters) */ ++ ) ++{ ++ struct uga *uga = backend->priv; ++ unsigned short *text = graphics_get_text_buf(); ++ position_t charpos; ++ ++ for (charpos.y = txtpos.y; charpos.y < txtpos.y + txtsz.y; charpos.y++) { ++ for (charpos.x = txtpos.x; charpos.x < txtpos.x + txtsz.x; charpos.x++){ ++ int offset = charpos.y * screensz.x + charpos.x; ++ position_t blpos = { (charpos.x-txtpos.x)*fontsz.x, ++ (charpos.y-txtpos.y)*fontsz.y }; ++ ++ bltbuf_draw_character(backend, bltbuf, blpos, fontsz, charpos, ++ screensz, text[offset]); ++ } ++ } ++} ++ ++static void ++clbl(struct graphics_backend *backend, int col, int row, int width, int height, ++ int draw_text) ++{ ++ struct uga *uga = backend->priv; ++ struct xpm *xpm; ++ ++ struct bltbuf *bltbuf; ++ position_t fontsz, blpos, blsz, screensz; ++ unsigned short *text; ++ ++// blank(backend); ++// ++ xpm = graphics_get_splash_xpm(); ++ if (xpm && !uga->background) ++ uga->background = xpm_to_bltbuf(xpm); ++ ++ graphics_get_screen_rowscols(&screensz); ++ width = MIN(width, screensz.x - col); ++ height = MIN(height, screensz.y - row); ++ graphics_get_font_size(&fontsz); ++ ++ blsz.x = width * fontsz.x; ++ blsz.y = height * fontsz.y; ++ ++ bltbuf = alloc_bltbuf(blsz.x, blsz.y); ++ if (!bltbuf) ++ return; ++ ++ blsz.x = col * fontsz.x; ++ blsz.y = row * fontsz.y; ++ ++ text = graphics_get_text_buf(); ++ bltbuf_draw_bg(backend, bltbuf, blsz); ++ ++ if (draw_text) { ++ blsz.x = width; ++ blsz.y = height; ++ blpos.x = col; ++ blpos.y = row; ++ ++ bltbuf_draw_text(backend, bltbuf, screensz, fontsz, blpos, blsz); ++ } ++ ++ blpos.x = col * fontsz.x; ++ blpos.y = row * fontsz.y; ++ ++ blt_to_screen_pos(uga, bltbuf, &blpos); ++} ++ ++static void ++setup_cga_palette(void) ++{ ++/* ++ * Nov 27 15:53:19 ping? ++ * Nov 27 15:54:13 pong? ++ * Nov 27 15:54:16 say I've got a color channel in 6 bits, and it's ++ * stored in an 8-bit value. let's call it white. ++ * now let's say I've got hardware with 8 bits per ++ * channel that I'm blitting to. What's the right ++ * way to expand 0x3f to 0xff? ++ * Nov 27 15:55:17 (my naive idea, which I haven't tried yet, is ++ * "x <<= 2; if (x) x |= 3;") ++ * Nov 27 15:55:35 no. ++ * Nov 27 15:55:43 yeah, figured I'd ask instead of doing that. ++ * Nov 27 15:56:15 x <<= 2; x |= ((x & 0xc0) >> 6); ++ */ ++ int i; ++ for (i = 0; i < n_cga_colors; i++) { ++ grub_efi_uga_pixel_t *pixel = &cga_colors[i]; ++ ++ if ((pixel->red | pixel->green | pixel->blue) & 0xc0) ++ continue; ++ pixel->red <<= 2; ++ pixel->red |= ((pixel->red & 0xc0) >> 6); ++ pixel->red &= 0xff; ++ pixel->green <<= 2; ++ pixel->green |= ((pixel->green & 0xc0) >> 6); ++ pixel->green &= 0xff; ++ pixel->blue <<= 2; ++ pixel->blue |= ((pixel->blue & 0xc0) >> 6); ++ pixel->blue &= 0xff; ++ } ++} ++ ++static int ++try_enable(struct graphics_backend *backend) ++{ ++ struct uga *uga = backend->priv; ++ struct video_mode modes[] = { ++ { 1440, 900, 32, 60 }, ++ { 640, 480, 32, 60 }, ++ { 800, 600, 32, 60 }, ++ { 640, 480, 16, 60 }, ++ { 800, 600, 16, 60 }, ++ { 640, 480, 8, 60 }, ++ { 800, 600, 8, 60 } ++ }; ++ struct video_mode mode; ++ position_t font_size; ++ int i; ++ ++ if (uga->text_mode.horizontal_resolution == 0) { ++ grub_efi_set_text_mode(1); ++ save_video_mode(uga, &uga->text_mode); ++ } ++ ++ if (uga->graphics_mode.horizontal_resolution == 0) { ++ grub_efi_set_text_mode(0); ++ save_video_mode(uga, &uga->graphics_mode); ++ ++ if (cmp_video_modes(&uga->graphics_mode, &modes[0]) >= 0) { ++ uga->current_mode = GRAPHICS; ++ graphics_alloc_text_buf(); ++ return 1; ++ } ++ for (i = 0; i < sizeof (modes) / sizeof (modes[0]); i++) { ++ set_video_mode(uga, &modes[i]); ++ save_video_mode(uga, &mode); ++ if (!cmp_video_modes(&modes[i], &mode)) { ++ grub_memmove(&uga->graphics_mode, &mode, sizeof (mode)); ++ uga->current_mode = GRAPHICS; ++ graphics_alloc_text_buf(); ++ return 1; ++ } ++ } ++ set_video_mode(uga, &uga->graphics_mode); ++ save_video_mode(uga, &mode); ++ if (!cmp_video_modes(&uga->graphics_mode, &mode)) { ++ uga->current_mode = GRAPHICS; ++ graphics_alloc_text_buf(); ++ return 1; ++ } ++ grub_efi_set_text_mode(1); ++ return 0; ++ } ++ set_video_mode(uga, &uga->graphics_mode); ++ ++ uga->current_mode = GRAPHICS; ++ return 1; ++} ++ ++static int ++enable(struct graphics_backend *backend) ++{ ++ struct uga *uga = backend->priv; ++ grub_efi_handle_t *handle, *handles; ++ grub_efi_uintn_t num_handles; ++ grub_efi_pci_io_t *pci_proto; ++ int i; ++ ++ if (uga) { ++ if (uga->current_mode == GRAPHICS) { ++ return 1; ++ } ++ } else { ++ if (!(uga = grub_malloc(sizeof (*uga)))) { ++ return 0; ++ } ++ grub_memset(uga, '\0', sizeof (*uga)); ++ ++ uga->current_mode = TEXT; ++ ++ handles = grub_efi_locate_handle (GRUB_EFI_BY_PROTOCOL, ++ &draw_guid, NULL, &num_handles); ++ ++ if (!num_handles || !handles) ++ { ++ grub_free(uga); ++ return 0; ++ } ++ ++ for (handle = handles; num_handles--; handle++) ++ { ++ pci_proto = grub_efi_open_protocol (*handle, &pci_io_guid, ++ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL); ++ ++ if (!pci_proto) ++ continue; ++ ++ uga->draw_intf = grub_efi_open_protocol (*handle, &draw_guid, ++ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL); ++ ++ if (uga->draw_intf) ++ { ++ grub_efi_setup_gfx_pci(*handle); ++ break; ++ } ++ } ++ ++ grub_free(handles); ++ ++ if (!uga->draw_intf) ++ uga->draw_intf = grub_efi_locate_protocol(&draw_guid, NULL); ++ ++ if (!uga->draw_intf) { ++ grub_free(uga); ++ return 0; ++ } ++ grub_memset(&uga->graphics_mode, '\0', sizeof (uga->graphics_mode)); ++ grub_memset(&uga->text_mode, '\0', sizeof (uga->text_mode)); ++ backend->priv = uga; ++ ++ setup_cga_palette(); ++ for (i = 0; i < n_cga_colors; i++) { ++ uga->palette[i].red = cga_colors[i].red; ++ uga->palette[i].green = cga_colors[i].green; ++ uga->palette[i].blue = cga_colors[i].blue; ++ } ++ } ++ ++ if (try_enable(backend)) { ++ reset_screen_geometry(backend); ++ return 1; ++ } ++ ++ backend->priv = NULL; ++ grub_free(uga); ++ return 0; ++} ++ ++static void disable(struct graphics_backend *backend) ++{ ++ struct uga *uga; ++ ++ if (!backend) ++ return; ++ ++ uga = backend->priv; ++ if (!uga || uga->current_mode != GRAPHICS) ++ return; ++ ++#if 0 ++ blank(backend); ++ ++ set_video_mode(uga, &uga->text_mode); ++ grub_efi_set_text_mode(1); ++#endif ++ uga->current_mode = TEXT; ++} ++ ++struct graphics_backend uga_backend = { ++ .name = "uga", ++ .enable = enable, ++ .disable = disable, ++ .set_kernel_params = set_kernel_params, ++ .clbl = clbl, ++ .set_palette = set_palette, ++ .get_pixel_idx = get_pixel_idx, ++ .get_pixel_rgb = get_pixel_rgb, ++ .draw_pixel = draw_pixel, ++ .reset_screen_geometry = reset_screen_geometry, ++ .get_screen_size = get_screen_size, ++ .getxy = uga_getxy, ++ .setxy = setxy, ++ .gotoxy = NULL, ++ .cursor = cursor, ++}; ++ ++#endif /* SUPPORT_GRAPHICS */ +diff --git a/efi/font_8x16.c b/efi/font_8x16.c +new file mode 100644 +index 0000000..94829ec +--- /dev/null ++++ b/efi/font_8x16.c +@@ -0,0 +1,4638 @@ ++/* font_8x16.c - 8x16 font for GRUB/EFI */ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copied from Linux kernel drivers/video/console/font_8x16.c, ++ * which is generated by cpi2fnt. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifdef SUPPORT_GRAPHICS ++ ++#define FONTDATAMAX 4096 ++ ++const unsigned char font8x16[FONTDATAMAX] = { ++ ++ /* 0 0x00 '^@' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 1 0x01 '^A' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7e, /* 01111110 */ ++ 0x81, /* 10000001 */ ++ 0xa5, /* 10100101 */ ++ 0x81, /* 10000001 */ ++ 0x81, /* 10000001 */ ++ 0xbd, /* 10111101 */ ++ 0x99, /* 10011001 */ ++ 0x81, /* 10000001 */ ++ 0x81, /* 10000001 */ ++ 0x7e, /* 01111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 2 0x02 '^B' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7e, /* 01111110 */ ++ 0xff, /* 11111111 */ ++ 0xdb, /* 11011011 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xc3, /* 11000011 */ ++ 0xe7, /* 11100111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0x7e, /* 01111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 3 0x03 '^C' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x6c, /* 01101100 */ ++ 0xfe, /* 11111110 */ ++ 0xfe, /* 11111110 */ ++ 0xfe, /* 11111110 */ ++ 0xfe, /* 11111110 */ ++ 0x7c, /* 01111100 */ ++ 0x38, /* 00111000 */ ++ 0x10, /* 00010000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 4 0x04 '^D' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x10, /* 00010000 */ ++ 0x38, /* 00111000 */ ++ 0x7c, /* 01111100 */ ++ 0xfe, /* 11111110 */ ++ 0x7c, /* 01111100 */ ++ 0x38, /* 00111000 */ ++ 0x10, /* 00010000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 5 0x05 '^E' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x3c, /* 00111100 */ ++ 0xe7, /* 11100111 */ ++ 0xe7, /* 11100111 */ ++ 0xe7, /* 11100111 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 6 0x06 '^F' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x7e, /* 01111110 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0x7e, /* 01111110 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 7 0x07 '^G' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x3c, /* 00111100 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 8 0x08 '^H' */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xe7, /* 11100111 */ ++ 0xc3, /* 11000011 */ ++ 0xc3, /* 11000011 */ ++ 0xe7, /* 11100111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ ++ /* 9 0x09 '^I' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x3c, /* 00111100 */ ++ 0x66, /* 01100110 */ ++ 0x42, /* 01000010 */ ++ 0x42, /* 01000010 */ ++ 0x66, /* 01100110 */ ++ 0x3c, /* 00111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 10 0x0a '^J' */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xc3, /* 11000011 */ ++ 0x99, /* 10011001 */ ++ 0xbd, /* 10111101 */ ++ 0xbd, /* 10111101 */ ++ 0x99, /* 10011001 */ ++ 0xc3, /* 11000011 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ ++ /* 11 0x0b '^K' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x1e, /* 00011110 */ ++ 0x0e, /* 00001110 */ ++ 0x1a, /* 00011010 */ ++ 0x32, /* 00110010 */ ++ 0x78, /* 01111000 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0x78, /* 01111000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 12 0x0c '^L' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x3c, /* 00111100 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x3c, /* 00111100 */ ++ 0x18, /* 00011000 */ ++ 0x7e, /* 01111110 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 13 0x0d '^M' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x3f, /* 00111111 */ ++ 0x33, /* 00110011 */ ++ 0x3f, /* 00111111 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x70, /* 01110000 */ ++ 0xf0, /* 11110000 */ ++ 0xe0, /* 11100000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 14 0x0e '^N' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7f, /* 01111111 */ ++ 0x63, /* 01100011 */ ++ 0x7f, /* 01111111 */ ++ 0x63, /* 01100011 */ ++ 0x63, /* 01100011 */ ++ 0x63, /* 01100011 */ ++ 0x63, /* 01100011 */ ++ 0x67, /* 01100111 */ ++ 0xe7, /* 11100111 */ ++ 0xe6, /* 11100110 */ ++ 0xc0, /* 11000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 15 0x0f '^O' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0xdb, /* 11011011 */ ++ 0x3c, /* 00111100 */ ++ 0xe7, /* 11100111 */ ++ 0x3c, /* 00111100 */ ++ 0xdb, /* 11011011 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 16 0x10 '^P' */ ++ 0x00, /* 00000000 */ ++ 0x80, /* 10000000 */ ++ 0xc0, /* 11000000 */ ++ 0xe0, /* 11100000 */ ++ 0xf0, /* 11110000 */ ++ 0xf8, /* 11111000 */ ++ 0xfe, /* 11111110 */ ++ 0xf8, /* 11111000 */ ++ 0xf0, /* 11110000 */ ++ 0xe0, /* 11100000 */ ++ 0xc0, /* 11000000 */ ++ 0x80, /* 10000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 17 0x11 '^Q' */ ++ 0x00, /* 00000000 */ ++ 0x02, /* 00000010 */ ++ 0x06, /* 00000110 */ ++ 0x0e, /* 00001110 */ ++ 0x1e, /* 00011110 */ ++ 0x3e, /* 00111110 */ ++ 0xfe, /* 11111110 */ ++ 0x3e, /* 00111110 */ ++ 0x1e, /* 00011110 */ ++ 0x0e, /* 00001110 */ ++ 0x06, /* 00000110 */ ++ 0x02, /* 00000010 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 18 0x12 '^R' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x7e, /* 01111110 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x7e, /* 01111110 */ ++ 0x3c, /* 00111100 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 19 0x13 '^S' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x00, /* 00000000 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 20 0x14 '^T' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7f, /* 01111111 */ ++ 0xdb, /* 11011011 */ ++ 0xdb, /* 11011011 */ ++ 0xdb, /* 11011011 */ ++ 0x7b, /* 01111011 */ ++ 0x1b, /* 00011011 */ ++ 0x1b, /* 00011011 */ ++ 0x1b, /* 00011011 */ ++ 0x1b, /* 00011011 */ ++ 0x1b, /* 00011011 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 21 0x15 '^U' */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0x60, /* 01100000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x6c, /* 01101100 */ ++ 0x38, /* 00111000 */ ++ 0x0c, /* 00001100 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 22 0x16 '^V' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0xfe, /* 11111110 */ ++ 0xfe, /* 11111110 */ ++ 0xfe, /* 11111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 23 0x17 '^W' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x7e, /* 01111110 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x7e, /* 01111110 */ ++ 0x3c, /* 00111100 */ ++ 0x18, /* 00011000 */ ++ 0x7e, /* 01111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 24 0x18 '^X' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x7e, /* 01111110 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 25 0x19 '^Y' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x7e, /* 01111110 */ ++ 0x3c, /* 00111100 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 26 0x1a '^Z' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x0c, /* 00001100 */ ++ 0xfe, /* 11111110 */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 27 0x1b '^[' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x30, /* 00110000 */ ++ 0x60, /* 01100000 */ ++ 0xfe, /* 11111110 */ ++ 0x60, /* 01100000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 28 0x1c '^\' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xfe, /* 11111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 29 0x1d '^]' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x28, /* 00101000 */ ++ 0x6c, /* 01101100 */ ++ 0xfe, /* 11111110 */ ++ 0x6c, /* 01101100 */ ++ 0x28, /* 00101000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 30 0x1e '^^' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x10, /* 00010000 */ ++ 0x38, /* 00111000 */ ++ 0x38, /* 00111000 */ ++ 0x7c, /* 01111100 */ ++ 0x7c, /* 01111100 */ ++ 0xfe, /* 11111110 */ ++ 0xfe, /* 11111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 31 0x1f '^_' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0xfe, /* 11111110 */ ++ 0x7c, /* 01111100 */ ++ 0x7c, /* 01111100 */ ++ 0x38, /* 00111000 */ ++ 0x38, /* 00111000 */ ++ 0x10, /* 00010000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 32 0x20 ' ' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 33 0x21 '!' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x3c, /* 00111100 */ ++ 0x3c, /* 00111100 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 34 0x22 '"' */ ++ 0x00, /* 00000000 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x24, /* 00100100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 35 0x23 '#' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x6c, /* 01101100 */ ++ 0x6c, /* 01101100 */ ++ 0xfe, /* 11111110 */ ++ 0x6c, /* 01101100 */ ++ 0x6c, /* 01101100 */ ++ 0x6c, /* 01101100 */ ++ 0xfe, /* 11111110 */ ++ 0x6c, /* 01101100 */ ++ 0x6c, /* 01101100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 36 0x24 '$' */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc2, /* 11000010 */ ++ 0xc0, /* 11000000 */ ++ 0x7c, /* 01111100 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0x86, /* 10000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 37 0x25 '%' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xc2, /* 11000010 */ ++ 0xc6, /* 11000110 */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x60, /* 01100000 */ ++ 0xc6, /* 11000110 */ ++ 0x86, /* 10000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 38 0x26 '&' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0x6c, /* 01101100 */ ++ 0x38, /* 00111000 */ ++ 0x76, /* 01110110 */ ++ 0xdc, /* 11011100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0x76, /* 01110110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 39 0x27 ''' */ ++ 0x00, /* 00000000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x60, /* 01100000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 40 0x28 '(' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x18, /* 00011000 */ ++ 0x0c, /* 00001100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 41 0x29 ')' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x30, /* 00110000 */ ++ 0x18, /* 00011000 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 42 0x2a '*' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x66, /* 01100110 */ ++ 0x3c, /* 00111100 */ ++ 0xff, /* 11111111 */ ++ 0x3c, /* 00111100 */ ++ 0x66, /* 01100110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 43 0x2b '+' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x7e, /* 01111110 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 44 0x2c ',' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 45 0x2d '-' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 46 0x2e '.' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 47 0x2f '/' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x02, /* 00000010 */ ++ 0x06, /* 00000110 */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x60, /* 01100000 */ ++ 0xc0, /* 11000000 */ ++ 0x80, /* 10000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 48 0x30 '0' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xd6, /* 11010110 */ ++ 0xd6, /* 11010110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x6c, /* 01101100 */ ++ 0x38, /* 00111000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 49 0x31 '1' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x38, /* 00111000 */ ++ 0x78, /* 01111000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x7e, /* 01111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 50 0x32 '2' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0x06, /* 00000110 */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x60, /* 01100000 */ ++ 0xc0, /* 11000000 */ ++ 0xc6, /* 11000110 */ ++ 0xfe, /* 11111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 51 0x33 '3' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0x3c, /* 00111100 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 52 0x34 '4' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x0c, /* 00001100 */ ++ 0x1c, /* 00011100 */ ++ 0x3c, /* 00111100 */ ++ 0x6c, /* 01101100 */ ++ 0xcc, /* 11001100 */ ++ 0xfe, /* 11111110 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x1e, /* 00011110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 53 0x35 '5' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xfc, /* 11111100 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 54 0x36 '6' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x60, /* 01100000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xfc, /* 11111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 55 0x37 '7' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0xc6, /* 11000110 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 56 0x38 '8' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 57 0x39 '9' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7e, /* 01111110 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0x0c, /* 00001100 */ ++ 0x78, /* 01111000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 58 0x3a ':' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 59 0x3b ';' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 60 0x3c '<' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x06, /* 00000110 */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x60, /* 01100000 */ ++ 0x30, /* 00110000 */ ++ 0x18, /* 00011000 */ ++ 0x0c, /* 00001100 */ ++ 0x06, /* 00000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 61 0x3d '=' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7e, /* 01111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7e, /* 01111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 62 0x3e '>' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x60, /* 01100000 */ ++ 0x30, /* 00110000 */ ++ 0x18, /* 00011000 */ ++ 0x0c, /* 00001100 */ ++ 0x06, /* 00000110 */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x60, /* 01100000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 63 0x3f '?' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 64 0x40 '@' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xde, /* 11011110 */ ++ 0xde, /* 11011110 */ ++ 0xde, /* 11011110 */ ++ 0xdc, /* 11011100 */ ++ 0xc0, /* 11000000 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 65 0x41 'A' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x10, /* 00010000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xfe, /* 11111110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 66 0x42 'B' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfc, /* 11111100 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x7c, /* 01111100 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0xfc, /* 11111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 67 0x43 'C' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x3c, /* 00111100 */ ++ 0x66, /* 01100110 */ ++ 0xc2, /* 11000010 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc2, /* 11000010 */ ++ 0x66, /* 01100110 */ ++ 0x3c, /* 00111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 68 0x44 'D' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xf8, /* 11111000 */ ++ 0x6c, /* 01101100 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x6c, /* 01101100 */ ++ 0xf8, /* 11111000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 69 0x45 'E' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0x66, /* 01100110 */ ++ 0x62, /* 01100010 */ ++ 0x68, /* 01101000 */ ++ 0x78, /* 01111000 */ ++ 0x68, /* 01101000 */ ++ 0x60, /* 01100000 */ ++ 0x62, /* 01100010 */ ++ 0x66, /* 01100110 */ ++ 0xfe, /* 11111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 70 0x46 'F' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0x66, /* 01100110 */ ++ 0x62, /* 01100010 */ ++ 0x68, /* 01101000 */ ++ 0x78, /* 01111000 */ ++ 0x68, /* 01101000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0xf0, /* 11110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 71 0x47 'G' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x3c, /* 00111100 */ ++ 0x66, /* 01100110 */ ++ 0xc2, /* 11000010 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xde, /* 11011110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x66, /* 01100110 */ ++ 0x3a, /* 00111010 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 72 0x48 'H' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xfe, /* 11111110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 73 0x49 'I' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x3c, /* 00111100 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 74 0x4a 'J' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x1e, /* 00011110 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0x78, /* 01111000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 75 0x4b 'K' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xe6, /* 11100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x6c, /* 01101100 */ ++ 0x78, /* 01111000 */ ++ 0x78, /* 01111000 */ ++ 0x6c, /* 01101100 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0xe6, /* 11100110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 76 0x4c 'L' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xf0, /* 11110000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0x62, /* 01100010 */ ++ 0x66, /* 01100110 */ ++ 0xfe, /* 11111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 77 0x4d 'M' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0xee, /* 11101110 */ ++ 0xfe, /* 11111110 */ ++ 0xfe, /* 11111110 */ ++ 0xd6, /* 11010110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 78 0x4e 'N' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0xe6, /* 11100110 */ ++ 0xf6, /* 11110110 */ ++ 0xfe, /* 11111110 */ ++ 0xde, /* 11011110 */ ++ 0xce, /* 11001110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 79 0x4f 'O' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 80 0x50 'P' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfc, /* 11111100 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x7c, /* 01111100 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0xf0, /* 11110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 81 0x51 'Q' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xd6, /* 11010110 */ ++ 0xde, /* 11011110 */ ++ 0x7c, /* 01111100 */ ++ 0x0c, /* 00001100 */ ++ 0x0e, /* 00001110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 82 0x52 'R' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfc, /* 11111100 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x7c, /* 01111100 */ ++ 0x6c, /* 01101100 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0xe6, /* 11100110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 83 0x53 'S' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x60, /* 01100000 */ ++ 0x38, /* 00111000 */ ++ 0x0c, /* 00001100 */ ++ 0x06, /* 00000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 84 0x54 'T' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7e, /* 01111110 */ ++ 0x7e, /* 01111110 */ ++ 0x5a, /* 01011010 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 85 0x55 'U' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 86 0x56 'V' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x6c, /* 01101100 */ ++ 0x38, /* 00111000 */ ++ 0x10, /* 00010000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 87 0x57 'W' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xd6, /* 11010110 */ ++ 0xd6, /* 11010110 */ ++ 0xd6, /* 11010110 */ ++ 0xfe, /* 11111110 */ ++ 0xee, /* 11101110 */ ++ 0x6c, /* 01101100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 88 0x58 'X' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x6c, /* 01101100 */ ++ 0x7c, /* 01111100 */ ++ 0x38, /* 00111000 */ ++ 0x38, /* 00111000 */ ++ 0x7c, /* 01111100 */ ++ 0x6c, /* 01101100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 89 0x59 'Y' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x3c, /* 00111100 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 90 0x5a 'Z' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0xc6, /* 11000110 */ ++ 0x86, /* 10000110 */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x60, /* 01100000 */ ++ 0xc2, /* 11000010 */ ++ 0xc6, /* 11000110 */ ++ 0xfe, /* 11111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 91 0x5b '[' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x3c, /* 00111100 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x3c, /* 00111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 92 0x5c '\' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x80, /* 10000000 */ ++ 0xc0, /* 11000000 */ ++ 0xe0, /* 11100000 */ ++ 0x70, /* 01110000 */ ++ 0x38, /* 00111000 */ ++ 0x1c, /* 00011100 */ ++ 0x0e, /* 00001110 */ ++ 0x06, /* 00000110 */ ++ 0x02, /* 00000010 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 93 0x5d ']' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x3c, /* 00111100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x3c, /* 00111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 94 0x5e '^' */ ++ 0x10, /* 00010000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 95 0x5f '_' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xff, /* 11111111 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 96 0x60 '`' */ ++ 0x00, /* 00000000 */ ++ 0x30, /* 00110000 */ ++ 0x18, /* 00011000 */ ++ 0x0c, /* 00001100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 97 0x61 'a' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x78, /* 01111000 */ ++ 0x0c, /* 00001100 */ ++ 0x7c, /* 01111100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0x76, /* 01110110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 98 0x62 'b' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xe0, /* 11100000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0x78, /* 01111000 */ ++ 0x6c, /* 01101100 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 99 0x63 'c' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 100 0x64 'd' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x1c, /* 00011100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x3c, /* 00111100 */ ++ 0x6c, /* 01101100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0x76, /* 01110110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 101 0x65 'e' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xfe, /* 11111110 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 102 0x66 'f' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x1c, /* 00011100 */ ++ 0x36, /* 00110110 */ ++ 0x32, /* 00110010 */ ++ 0x30, /* 00110000 */ ++ 0x78, /* 01111000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x78, /* 01111000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 103 0x67 'g' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x76, /* 01110110 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0x7c, /* 01111100 */ ++ 0x0c, /* 00001100 */ ++ 0xcc, /* 11001100 */ ++ 0x78, /* 01111000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 104 0x68 'h' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xe0, /* 11100000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0x6c, /* 01101100 */ ++ 0x76, /* 01110110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0xe6, /* 11100110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 105 0x69 'i' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 106 0x6a 'j' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0x00, /* 00000000 */ ++ 0x0e, /* 00001110 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x3c, /* 00111100 */ ++ 0x00, /* 00000000 */ ++ ++ /* 107 0x6b 'k' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xe0, /* 11100000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0x66, /* 01100110 */ ++ 0x6c, /* 01101100 */ ++ 0x78, /* 01111000 */ ++ 0x78, /* 01111000 */ ++ 0x6c, /* 01101100 */ ++ 0x66, /* 01100110 */ ++ 0xe6, /* 11100110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 108 0x6c 'l' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 109 0x6d 'm' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xec, /* 11101100 */ ++ 0xfe, /* 11111110 */ ++ 0xd6, /* 11010110 */ ++ 0xd6, /* 11010110 */ ++ 0xd6, /* 11010110 */ ++ 0xd6, /* 11010110 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 110 0x6e 'n' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xdc, /* 11011100 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 111 0x6f 'o' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 112 0x70 'p' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xdc, /* 11011100 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x7c, /* 01111100 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0xf0, /* 11110000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 113 0x71 'q' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x76, /* 01110110 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0x7c, /* 01111100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x1e, /* 00011110 */ ++ 0x00, /* 00000000 */ ++ ++ /* 114 0x72 'r' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xdc, /* 11011100 */ ++ 0x76, /* 01110110 */ ++ 0x66, /* 01100110 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0xf0, /* 11110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 115 0x73 's' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0x60, /* 01100000 */ ++ 0x38, /* 00111000 */ ++ 0x0c, /* 00001100 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 116 0x74 't' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x10, /* 00010000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0xfc, /* 11111100 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x36, /* 00110110 */ ++ 0x1c, /* 00011100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 117 0x75 'u' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0x76, /* 01110110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 118 0x76 'v' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x6c, /* 01101100 */ ++ 0x38, /* 00111000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 119 0x77 'w' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xd6, /* 11010110 */ ++ 0xd6, /* 11010110 */ ++ 0xd6, /* 11010110 */ ++ 0xfe, /* 11111110 */ ++ 0x6c, /* 01101100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 120 0x78 'x' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0x6c, /* 01101100 */ ++ 0x38, /* 00111000 */ ++ 0x38, /* 00111000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 121 0x79 'y' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7e, /* 01111110 */ ++ 0x06, /* 00000110 */ ++ 0x0c, /* 00001100 */ ++ 0xf8, /* 11111000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 122 0x7a 'z' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0xcc, /* 11001100 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x60, /* 01100000 */ ++ 0xc6, /* 11000110 */ ++ 0xfe, /* 11111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 123 0x7b '{' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x0e, /* 00001110 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x70, /* 01110000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x0e, /* 00001110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 124 0x7c '|' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 125 0x7d '}' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x70, /* 01110000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x0e, /* 00001110 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x70, /* 01110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 126 0x7e '~' */ ++ 0x00, /* 00000000 */ ++ 0x76, /* 01110110 */ ++ 0xdc, /* 11011100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 127 0x7f '' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x10, /* 00010000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xfe, /* 11111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 128 0x80 '€' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x3c, /* 00111100 */ ++ 0x66, /* 01100110 */ ++ 0xc2, /* 11000010 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc2, /* 11000010 */ ++ 0x66, /* 01100110 */ ++ 0x3c, /* 00111100 */ ++ 0x18, /* 00011000 */ ++ 0x70, /* 01110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 129 0x81 '' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xcc, /* 11001100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0x76, /* 01110110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 130 0x82 '‚' */ ++ 0x00, /* 00000000 */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xfe, /* 11111110 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 131 0x83 'ƒ' */ ++ 0x00, /* 00000000 */ ++ 0x10, /* 00010000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0x00, /* 00000000 */ ++ 0x78, /* 01111000 */ ++ 0x0c, /* 00001100 */ ++ 0x7c, /* 01111100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0x76, /* 01110110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 132 0x84 '„' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xcc, /* 11001100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x78, /* 01111000 */ ++ 0x0c, /* 00001100 */ ++ 0x7c, /* 01111100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0x76, /* 01110110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 133 0x85 '…' */ ++ 0x00, /* 00000000 */ ++ 0x60, /* 01100000 */ ++ 0x30, /* 00110000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x78, /* 01111000 */ ++ 0x0c, /* 00001100 */ ++ 0x7c, /* 01111100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0x76, /* 01110110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 134 0x86 '†' */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0x38, /* 00111000 */ ++ 0x00, /* 00000000 */ ++ 0x78, /* 01111000 */ ++ 0x0c, /* 00001100 */ ++ 0x7c, /* 01111100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0x76, /* 01110110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 135 0x87 '‡' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x18, /* 00011000 */ ++ 0x70, /* 01110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 136 0x88 'ˆ' */ ++ 0x00, /* 00000000 */ ++ 0x10, /* 00010000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xfe, /* 11111110 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 137 0x89 '‰' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xfe, /* 11111110 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 138 0x8a 'Š' */ ++ 0x00, /* 00000000 */ ++ 0x60, /* 01100000 */ ++ 0x30, /* 00110000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xfe, /* 11111110 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 139 0x8b '‹' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x66, /* 01100110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 140 0x8c 'Œ' */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x66, /* 01100110 */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 141 0x8d '' */ ++ 0x00, /* 00000000 */ ++ 0x60, /* 01100000 */ ++ 0x30, /* 00110000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 142 0x8e 'Ž' */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x10, /* 00010000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xfe, /* 11111110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 143 0x8f '' */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0x38, /* 00111000 */ ++ 0x10, /* 00010000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0xc6, /* 11000110 */ ++ 0xfe, /* 11111110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 144 0x90 '' */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0x66, /* 01100110 */ ++ 0x62, /* 01100010 */ ++ 0x68, /* 01101000 */ ++ 0x78, /* 01111000 */ ++ 0x68, /* 01101000 */ ++ 0x62, /* 01100010 */ ++ 0x66, /* 01100110 */ ++ 0xfe, /* 11111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 145 0x91 '‘' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xec, /* 11101100 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x7e, /* 01111110 */ ++ 0xd8, /* 11011000 */ ++ 0xd8, /* 11011000 */ ++ 0x6e, /* 01101110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 146 0x92 '’' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x3e, /* 00111110 */ ++ 0x6c, /* 01101100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xfe, /* 11111110 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xce, /* 11001110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 147 0x93 '“' */ ++ 0x00, /* 00000000 */ ++ 0x10, /* 00010000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 148 0x94 '”' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 149 0x95 '•' */ ++ 0x00, /* 00000000 */ ++ 0x60, /* 01100000 */ ++ 0x30, /* 00110000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 150 0x96 '–' */ ++ 0x00, /* 00000000 */ ++ 0x30, /* 00110000 */ ++ 0x78, /* 01111000 */ ++ 0xcc, /* 11001100 */ ++ 0x00, /* 00000000 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0x76, /* 01110110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 151 0x97 '—' */ ++ 0x00, /* 00000000 */ ++ 0x60, /* 01100000 */ ++ 0x30, /* 00110000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0x76, /* 01110110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 152 0x98 '˜' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7e, /* 01111110 */ ++ 0x06, /* 00000110 */ ++ 0x0c, /* 00001100 */ ++ 0x78, /* 01111000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 153 0x99 '™' */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 154 0x9a 'š' */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 155 0x9b '›' */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 156 0x9c 'œ' */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0x64, /* 01100100 */ ++ 0x60, /* 01100000 */ ++ 0xf0, /* 11110000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0xe6, /* 11100110 */ ++ 0xfc, /* 11111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 157 0x9d '' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x3c, /* 00111100 */ ++ 0x18, /* 00011000 */ ++ 0x7e, /* 01111110 */ ++ 0x18, /* 00011000 */ ++ 0x7e, /* 01111110 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 158 0x9e 'ž' */ ++ 0x00, /* 00000000 */ ++ 0xf8, /* 11111000 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xf8, /* 11111000 */ ++ 0xc4, /* 11000100 */ ++ 0xcc, /* 11001100 */ ++ 0xde, /* 11011110 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 159 0x9f 'Ÿ' */ ++ 0x00, /* 00000000 */ ++ 0x0e, /* 00001110 */ ++ 0x1b, /* 00011011 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x7e, /* 01111110 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0xd8, /* 11011000 */ ++ 0x70, /* 01110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 160 0xa0 ' ' */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x60, /* 01100000 */ ++ 0x00, /* 00000000 */ ++ 0x78, /* 01111000 */ ++ 0x0c, /* 00001100 */ ++ 0x7c, /* 01111100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0x76, /* 01110110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 161 0xa1 '¡' */ ++ 0x00, /* 00000000 */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 162 0xa2 '¢' */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x60, /* 01100000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 163 0xa3 '£' */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x60, /* 01100000 */ ++ 0x00, /* 00000000 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0x76, /* 01110110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 164 0xa4 '¤' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x76, /* 01110110 */ ++ 0xdc, /* 11011100 */ ++ 0x00, /* 00000000 */ ++ 0xdc, /* 11011100 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 165 0xa5 '¥' */ ++ 0x76, /* 01110110 */ ++ 0xdc, /* 11011100 */ ++ 0x00, /* 00000000 */ ++ 0xc6, /* 11000110 */ ++ 0xe6, /* 11100110 */ ++ 0xf6, /* 11110110 */ ++ 0xfe, /* 11111110 */ ++ 0xde, /* 11011110 */ ++ 0xce, /* 11001110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 166 0xa6 '¦' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x3c, /* 00111100 */ ++ 0x6c, /* 01101100 */ ++ 0x6c, /* 01101100 */ ++ 0x3e, /* 00111110 */ ++ 0x00, /* 00000000 */ ++ 0x7e, /* 01111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 167 0xa7 '§' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0x6c, /* 01101100 */ ++ 0x38, /* 00111000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 168 0xa8 '¨' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x60, /* 01100000 */ ++ 0xc0, /* 11000000 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x7c, /* 01111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 169 0xa9 '©' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 170 0xaa 'ª' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 171 0xab '«' */ ++ 0x00, /* 00000000 */ ++ 0x60, /* 01100000 */ ++ 0xe0, /* 11100000 */ ++ 0x62, /* 01100010 */ ++ 0x66, /* 01100110 */ ++ 0x6c, /* 01101100 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x60, /* 01100000 */ ++ 0xdc, /* 11011100 */ ++ 0x86, /* 10000110 */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x3e, /* 00111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 172 0xac '¬' */ ++ 0x00, /* 00000000 */ ++ 0x60, /* 01100000 */ ++ 0xe0, /* 11100000 */ ++ 0x62, /* 01100010 */ ++ 0x66, /* 01100110 */ ++ 0x6c, /* 01101100 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x66, /* 01100110 */ ++ 0xce, /* 11001110 */ ++ 0x9a, /* 10011010 */ ++ 0x3f, /* 00111111 */ ++ 0x06, /* 00000110 */ ++ 0x06, /* 00000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 173 0xad '­' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x3c, /* 00111100 */ ++ 0x3c, /* 00111100 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 174 0xae '®' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x36, /* 00110110 */ ++ 0x6c, /* 01101100 */ ++ 0xd8, /* 11011000 */ ++ 0x6c, /* 01101100 */ ++ 0x36, /* 00110110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 175 0xaf '¯' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xd8, /* 11011000 */ ++ 0x6c, /* 01101100 */ ++ 0x36, /* 00110110 */ ++ 0x6c, /* 01101100 */ ++ 0xd8, /* 11011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 176 0xb0 '°' */ ++ 0x11, /* 00010001 */ ++ 0x44, /* 01000100 */ ++ 0x11, /* 00010001 */ ++ 0x44, /* 01000100 */ ++ 0x11, /* 00010001 */ ++ 0x44, /* 01000100 */ ++ 0x11, /* 00010001 */ ++ 0x44, /* 01000100 */ ++ 0x11, /* 00010001 */ ++ 0x44, /* 01000100 */ ++ 0x11, /* 00010001 */ ++ 0x44, /* 01000100 */ ++ 0x11, /* 00010001 */ ++ 0x44, /* 01000100 */ ++ 0x11, /* 00010001 */ ++ 0x44, /* 01000100 */ ++ ++ /* 177 0xb1 '±' */ ++ 0x55, /* 01010101 */ ++ 0xaa, /* 10101010 */ ++ 0x55, /* 01010101 */ ++ 0xaa, /* 10101010 */ ++ 0x55, /* 01010101 */ ++ 0xaa, /* 10101010 */ ++ 0x55, /* 01010101 */ ++ 0xaa, /* 10101010 */ ++ 0x55, /* 01010101 */ ++ 0xaa, /* 10101010 */ ++ 0x55, /* 01010101 */ ++ 0xaa, /* 10101010 */ ++ 0x55, /* 01010101 */ ++ 0xaa, /* 10101010 */ ++ 0x55, /* 01010101 */ ++ 0xaa, /* 10101010 */ ++ ++ /* 178 0xb2 '²' */ ++ 0xdd, /* 11011101 */ ++ 0x77, /* 01110111 */ ++ 0xdd, /* 11011101 */ ++ 0x77, /* 01110111 */ ++ 0xdd, /* 11011101 */ ++ 0x77, /* 01110111 */ ++ 0xdd, /* 11011101 */ ++ 0x77, /* 01110111 */ ++ 0xdd, /* 11011101 */ ++ 0x77, /* 01110111 */ ++ 0xdd, /* 11011101 */ ++ 0x77, /* 01110111 */ ++ 0xdd, /* 11011101 */ ++ 0x77, /* 01110111 */ ++ 0xdd, /* 11011101 */ ++ 0x77, /* 01110111 */ ++ ++ /* 179 0xb3 '³' */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ ++ /* 180 0xb4 '´' */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0xf8, /* 11111000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ ++ /* 181 0xb5 'µ' */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0xf8, /* 11111000 */ ++ 0x18, /* 00011000 */ ++ 0xf8, /* 11111000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ ++ /* 182 0xb6 '¶' */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0xf6, /* 11110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ ++ /* 183 0xb7 '·' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ ++ /* 184 0xb8 '¸' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xf8, /* 11111000 */ ++ 0x18, /* 00011000 */ ++ 0xf8, /* 11111000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ ++ /* 185 0xb9 '¹' */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0xf6, /* 11110110 */ ++ 0x06, /* 00000110 */ ++ 0xf6, /* 11110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ ++ /* 186 0xba 'º' */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ ++ /* 187 0xbb '»' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0x06, /* 00000110 */ ++ 0xf6, /* 11110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ ++ /* 188 0xbc '¼' */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0xf6, /* 11110110 */ ++ 0x06, /* 00000110 */ ++ 0xfe, /* 11111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 189 0xbd '½' */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0xfe, /* 11111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 190 0xbe '¾' */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0xf8, /* 11111000 */ ++ 0x18, /* 00011000 */ ++ 0xf8, /* 11111000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 191 0xbf '¿' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xf8, /* 11111000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ ++ /* 192 0xc0 'À' */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x1f, /* 00011111 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 193 0xc1 'Á' */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0xff, /* 11111111 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 194 0xc2 'Â' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xff, /* 11111111 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ ++ /* 195 0xc3 'Ã' */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x1f, /* 00011111 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ ++ /* 196 0xc4 'Ä' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xff, /* 11111111 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 197 0xc5 'Å' */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0xff, /* 11111111 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ ++ /* 198 0xc6 'Æ' */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x1f, /* 00011111 */ ++ 0x18, /* 00011000 */ ++ 0x1f, /* 00011111 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ ++ /* 199 0xc7 'Ç' */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x37, /* 00110111 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ ++ /* 200 0xc8 'È' */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x37, /* 00110111 */ ++ 0x30, /* 00110000 */ ++ 0x3f, /* 00111111 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 201 0xc9 'É' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x3f, /* 00111111 */ ++ 0x30, /* 00110000 */ ++ 0x37, /* 00110111 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ ++ /* 202 0xca 'Ê' */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0xf7, /* 11110111 */ ++ 0x00, /* 00000000 */ ++ 0xff, /* 11111111 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 203 0xcb 'Ë' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xff, /* 11111111 */ ++ 0x00, /* 00000000 */ ++ 0xf7, /* 11110111 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ ++ /* 204 0xcc 'Ì' */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x37, /* 00110111 */ ++ 0x30, /* 00110000 */ ++ 0x37, /* 00110111 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ ++ /* 205 0xcd 'Í' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xff, /* 11111111 */ ++ 0x00, /* 00000000 */ ++ 0xff, /* 11111111 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 206 0xce 'Î' */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0xf7, /* 11110111 */ ++ 0x00, /* 00000000 */ ++ 0xf7, /* 11110111 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ ++ /* 207 0xcf 'Ï' */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0xff, /* 11111111 */ ++ 0x00, /* 00000000 */ ++ 0xff, /* 11111111 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 208 0xd0 'Ð' */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0xff, /* 11111111 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 209 0xd1 'Ñ' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xff, /* 11111111 */ ++ 0x00, /* 00000000 */ ++ 0xff, /* 11111111 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ ++ /* 210 0xd2 'Ò' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xff, /* 11111111 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ ++ /* 211 0xd3 'Ó' */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x3f, /* 00111111 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 212 0xd4 'Ô' */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x1f, /* 00011111 */ ++ 0x18, /* 00011000 */ ++ 0x1f, /* 00011111 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 213 0xd5 'Õ' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x1f, /* 00011111 */ ++ 0x18, /* 00011000 */ ++ 0x1f, /* 00011111 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ ++ /* 214 0xd6 'Ö' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x3f, /* 00111111 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ ++ /* 215 0xd7 '×' */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0xff, /* 11111111 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ ++ /* 216 0xd8 'Ø' */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0xff, /* 11111111 */ ++ 0x18, /* 00011000 */ ++ 0xff, /* 11111111 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ ++ /* 217 0xd9 'Ù' */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0xf8, /* 11111000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 218 0xda 'Ú' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x1f, /* 00011111 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ ++ /* 219 0xdb 'Û' */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ ++ /* 220 0xdc 'Ü' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ ++ /* 221 0xdd 'Ý' */ ++ 0xf0, /* 11110000 */ ++ 0xf0, /* 11110000 */ ++ 0xf0, /* 11110000 */ ++ 0xf0, /* 11110000 */ ++ 0xf0, /* 11110000 */ ++ 0xf0, /* 11110000 */ ++ 0xf0, /* 11110000 */ ++ 0xf0, /* 11110000 */ ++ 0xf0, /* 11110000 */ ++ 0xf0, /* 11110000 */ ++ 0xf0, /* 11110000 */ ++ 0xf0, /* 11110000 */ ++ 0xf0, /* 11110000 */ ++ 0xf0, /* 11110000 */ ++ 0xf0, /* 11110000 */ ++ 0xf0, /* 11110000 */ ++ ++ /* 222 0xde 'Þ' */ ++ 0x0f, /* 00001111 */ ++ 0x0f, /* 00001111 */ ++ 0x0f, /* 00001111 */ ++ 0x0f, /* 00001111 */ ++ 0x0f, /* 00001111 */ ++ 0x0f, /* 00001111 */ ++ 0x0f, /* 00001111 */ ++ 0x0f, /* 00001111 */ ++ 0x0f, /* 00001111 */ ++ 0x0f, /* 00001111 */ ++ 0x0f, /* 00001111 */ ++ 0x0f, /* 00001111 */ ++ 0x0f, /* 00001111 */ ++ 0x0f, /* 00001111 */ ++ 0x0f, /* 00001111 */ ++ 0x0f, /* 00001111 */ ++ ++ /* 223 0xdf 'ß' */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0xff, /* 11111111 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 224 0xe0 'à' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x76, /* 01110110 */ ++ 0xdc, /* 11011100 */ ++ 0xd8, /* 11011000 */ ++ 0xd8, /* 11011000 */ ++ 0xd8, /* 11011000 */ ++ 0xdc, /* 11011100 */ ++ 0x76, /* 01110110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 225 0xe1 'á' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x78, /* 01111000 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xcc, /* 11001100 */ ++ 0xd8, /* 11011000 */ ++ 0xcc, /* 11001100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xcc, /* 11001100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 226 0xe2 'â' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 227 0xe3 'ã' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0x6c, /* 01101100 */ ++ 0x6c, /* 01101100 */ ++ 0x6c, /* 01101100 */ ++ 0x6c, /* 01101100 */ ++ 0x6c, /* 01101100 */ ++ 0x6c, /* 01101100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 228 0xe4 'ä' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0xc6, /* 11000110 */ ++ 0x60, /* 01100000 */ ++ 0x30, /* 00110000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x60, /* 01100000 */ ++ 0xc6, /* 11000110 */ ++ 0xfe, /* 11111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 229 0xe5 'å' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7e, /* 01111110 */ ++ 0xd8, /* 11011000 */ ++ 0xd8, /* 11011000 */ ++ 0xd8, /* 11011000 */ ++ 0xd8, /* 11011000 */ ++ 0xd8, /* 11011000 */ ++ 0x70, /* 01110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 230 0xe6 'æ' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x7c, /* 01111100 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0xc0, /* 11000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 231 0xe7 'ç' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x76, /* 01110110 */ ++ 0xdc, /* 11011100 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 232 0xe8 'è' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7e, /* 01111110 */ ++ 0x18, /* 00011000 */ ++ 0x3c, /* 00111100 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x3c, /* 00111100 */ ++ 0x18, /* 00011000 */ ++ 0x7e, /* 01111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 233 0xe9 'é' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xfe, /* 11111110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x6c, /* 01101100 */ ++ 0x38, /* 00111000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 234 0xea 'ê' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x6c, /* 01101100 */ ++ 0x6c, /* 01101100 */ ++ 0x6c, /* 01101100 */ ++ 0x6c, /* 01101100 */ ++ 0xee, /* 11101110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 235 0xeb 'ë' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x1e, /* 00011110 */ ++ 0x30, /* 00110000 */ ++ 0x18, /* 00011000 */ ++ 0x0c, /* 00001100 */ ++ 0x3e, /* 00111110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x66, /* 01100110 */ ++ 0x3c, /* 00111100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 236 0xec 'ì' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7e, /* 01111110 */ ++ 0xdb, /* 11011011 */ ++ 0xdb, /* 11011011 */ ++ 0xdb, /* 11011011 */ ++ 0x7e, /* 01111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 237 0xed 'í' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x03, /* 00000011 */ ++ 0x06, /* 00000110 */ ++ 0x7e, /* 01111110 */ ++ 0xdb, /* 11011011 */ ++ 0xdb, /* 11011011 */ ++ 0xf3, /* 11110011 */ ++ 0x7e, /* 01111110 */ ++ 0x60, /* 01100000 */ ++ 0xc0, /* 11000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 238 0xee 'î' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x1c, /* 00011100 */ ++ 0x30, /* 00110000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0x7c, /* 01111100 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0x60, /* 01100000 */ ++ 0x30, /* 00110000 */ ++ 0x1c, /* 00011100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 239 0xef 'ï' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7c, /* 01111100 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0xc6, /* 11000110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 240 0xf0 'ð' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xfe, /* 11111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 241 0xf1 'ñ' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x7e, /* 01111110 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7e, /* 01111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 242 0xf2 'ò' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x30, /* 00110000 */ ++ 0x18, /* 00011000 */ ++ 0x0c, /* 00001100 */ ++ 0x06, /* 00000110 */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ 0x7e, /* 01111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 243 0xf3 'ó' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x30, /* 00110000 */ ++ 0x60, /* 01100000 */ ++ 0x30, /* 00110000 */ ++ 0x18, /* 00011000 */ ++ 0x0c, /* 00001100 */ ++ 0x00, /* 00000000 */ ++ 0x7e, /* 01111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 244 0xf4 'ô' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x0e, /* 00001110 */ ++ 0x1b, /* 00011011 */ ++ 0x1b, /* 00011011 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ ++ /* 245 0xf5 'õ' */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0xd8, /* 11011000 */ ++ 0xd8, /* 11011000 */ ++ 0xd8, /* 11011000 */ ++ 0x70, /* 01110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 246 0xf6 'ö' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x7e, /* 01111110 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 247 0xf7 '÷' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x76, /* 01110110 */ ++ 0xdc, /* 11011100 */ ++ 0x00, /* 00000000 */ ++ 0x76, /* 01110110 */ ++ 0xdc, /* 11011100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 248 0xf8 'ø' */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x6c, /* 01101100 */ ++ 0x6c, /* 01101100 */ ++ 0x38, /* 00111000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 249 0xf9 'ù' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 250 0xfa 'ú' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 251 0xfb 'û' */ ++ 0x00, /* 00000000 */ ++ 0x0f, /* 00001111 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0x0c, /* 00001100 */ ++ 0xec, /* 11101100 */ ++ 0x6c, /* 01101100 */ ++ 0x6c, /* 01101100 */ ++ 0x3c, /* 00111100 */ ++ 0x1c, /* 00011100 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 252 0xfc 'ü' */ ++ 0x00, /* 00000000 */ ++ 0x6c, /* 01101100 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x36, /* 00110110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 253 0xfd 'ý' */ ++ 0x00, /* 00000000 */ ++ 0x3c, /* 00111100 */ ++ 0x66, /* 01100110 */ ++ 0x0c, /* 00001100 */ ++ 0x18, /* 00011000 */ ++ 0x32, /* 00110010 */ ++ 0x7e, /* 01111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 254 0xfe 'þ' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x7e, /* 01111110 */ ++ 0x7e, /* 01111110 */ ++ 0x7e, /* 01111110 */ ++ 0x7e, /* 01111110 */ ++ 0x7e, /* 01111110 */ ++ 0x7e, /* 01111110 */ ++ 0x7e, /* 01111110 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 255 0xff 'ÿ' */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++}; ++ ++#endif +diff --git a/efi/graphics.c b/efi/graphics.c +new file mode 100644 +index 0000000..eb98d8a +--- /dev/null ++++ b/efi/graphics.c +@@ -0,0 +1,666 @@ ++#ifdef SUPPORT_GRAPHICS ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++ ++#include "graphics.h" ++ ++#if 0 ++#include "ugadebug.h" ++#endif ++ ++int foreground = 0x00ffffff, background = 0; ++int graphics_inited = 0; ++ ++/* Convert a character which is a hex digit to the appropriate integer */ ++int ++hex (int v) ++{ ++ if (v >= 'A' && v <= 'F') ++ return (v - 'A' + 10); ++ if (v >= 'a' && v <= 'f') ++ return (v - 'a' + 10); ++ return (v - '0'); ++} ++ ++grub_uint16_t ++grub_console_getwh (void) ++{ ++ grub_efi_simple_text_output_interface_t *o; ++ grub_efi_uintn_t columns, rows; ++ ++ o = grub_efi_system_table->con_out; ++ if (Call_Service_4 (o->query_mode , o, o->mode->mode, &columns, &rows) ++ != GRUB_EFI_SUCCESS) ++ { ++ /* Why does this fail? */ ++ columns = 80; ++ rows = 25; ++ } ++ ++ return ((columns << 8) | rows); ++} ++ ++extern struct graphics_backend uga_backend; ++extern struct graphics_backend eg_backend; ++ ++static struct graphics_backend *backends[] = { ++ &eg_backend, ++ &uga_backend, ++ NULL ++}; ++static struct graphics_backend *backend; ++ ++struct graphics { ++ int scroll; ++ int fontx; ++ int fonty; ++ ++ int standard_color; ++ int normal_color; ++ int highlight_color; ++ int current_color; ++ color_state color_state; ++ ++ char splashpath[64]; ++ struct xpm *splashimage; ++ ++ unsigned short *text; ++}; ++ ++static grub_efi_guid_t device_path_guid = GRUB_EFI_DEVICE_PATH_GUID; ++static grub_efi_guid_t pci_io_guid = GRUB_EFI_PCI_IO_GUID; ++static grub_efi_guid_t pci_root_io_guid = GRUB_EFI_PCI_ROOT_IO_GUID; ++ ++static void ++grub_efi_configure_pci(grub_efi_handle_t handle) ++{ ++ grub_efi_device_path_t *path, *parent; ++ grub_efi_handle_t parent_handle; ++ grub_efi_pci_io_t *pci_proto; ++ grub_efi_pci_root_io_t *pci_root_proto; ++ grub_efi_status_t status; ++ ++ path = grub_efi_get_device_path(handle); ++ parent = find_parent_device_path(path); ++ ++ if (!parent) ++ return; ++ ++ status = grub_efi_locate_device_path (&device_path_guid, &parent, ++ &parent_handle); ++ if (status != GRUB_EFI_SUCCESS) ++ return; ++ ++ pci_proto = grub_efi_open_protocol (parent_handle, &pci_io_guid, ++ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL); ++ ++ pci_root_proto = grub_efi_open_protocol (parent_handle, &pci_root_io_guid, ++ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL); ++ ++ ++ if (pci_proto || pci_root_proto) ++ { ++ if (pci_proto) ++ { ++ Call_Service_4 (pci_proto->attributes, pci_proto, ++ grub_efi_pci_io_attribute_operation_enable, ++ GRUB_EFI_PCI_IO_ATTRIBUTE_VGA_MEMORY | ++ GRUB_EFI_PCI_IO_ATTRIBUTE_VGA_IO | ++ GRUB_EFI_PCI_IO_ATTRIBUTE_VGA_PALETTE_IO, NULL); ++ ++ grub_efi_configure_pci (parent_handle); ++ } ++ else ++ { ++ grub_uint8_t value = 0x33; ++ grub_uint16_t vendor; ++ ++ Call_Service_5 (pci_root_proto->pci.read, pci_root_proto, ++ grub_efi_pci_io_width_uint16, 0x00, 1, &vendor); ++ ++ if (vendor == 0x8086) { ++ Call_Service_5 (pci_root_proto->pci.write, pci_root_proto, ++ grub_efi_pci_io_width_uint8, 0x91, 1, &value); ++ Call_Service_5 (pci_root_proto->pci.write, pci_root_proto, ++ grub_efi_pci_io_width_uint8, 0x92, 1, &value); ++ } ++ } ++ } ++ grub_free(parent); ++} ++ ++void ++grub_efi_setup_gfx_pci(grub_efi_handle_t handle) ++{ ++ grub_efi_uint64_t romsize; ++ grub_efi_uint16_t *header; ++ void *vrom; ++ grub_efi_pci_io_t *pci_proto; ++ ++ pci_proto = grub_efi_open_protocol (handle, &pci_io_guid, ++ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL); ++ ++ if (!pci_proto) ++ return; ++ ++ romsize = pci_proto->rom_size; ++ ++ if (!romsize || romsize > 65536 || !pci_proto->rom_image) ++ return; ++ ++ /* Copy the ROM */ ++ vrom = grub_efi_allocate_runtime_pages(0xc0000, 16); ++ ++ if (!vrom) ++ return; ++ ++ header = vrom; ++ ++ if (*header == 0xaa55) ++ return; ++ ++ grub_efi_configure_pci(handle); ++ ++ grub_memcpy(vrom, pci_proto->rom_image, romsize); ++} ++ ++void ++graphics_set_kernel_params(struct linux_kernel_params *params) ++{ ++ params->video_cursor_x = grub_efi_system_table->con_out->mode->cursor_column; ++ params->video_cursor_y = grub_efi_system_table->con_out->mode->cursor_row; ++ params->video_page = 0; /* ??? */ ++ params->video_mode = grub_efi_system_table->con_out->mode->mode; ++ params->video_width = (grub_console_getwh () >> 8); ++ params->video_ega_bx = 0; ++ params->video_height = (grub_console_getwh () & 0xff); ++ params->have_vga = 0; ++ params->font_size = 16; /* XXX */ ++ ++ /* No VBE. */ ++ params->lfb_width = 0; ++ params->lfb_height = 0; ++ params->lfb_depth = 0; ++ params->lfb_base = 0; ++ params->lfb_size = 0; ++ params->lfb_line_len = 0; ++ params->red_mask_size = 0; ++ params->red_field_pos = 0; ++ params->green_mask_size = 0; ++ params->green_field_pos = 0; ++ params->blue_mask_size = 0; ++ params->blue_field_pos = 0; ++ params->reserved_mask_size = 0; ++ params->reserved_field_pos = 0; ++ params->vesapm_segment = 0; ++ params->vesapm_offset = 0; ++ params->lfb_pages = 0; ++ params->vesa_attrib = 0; ++ ++ if (backend && backend->set_kernel_params) ++ backend->set_kernel_params(backend, params); ++} ++ ++int ++graphics_alloc_text_buf(void) ++{ ++ if (backend) { ++ struct graphics *graphics = backend->graphics; ++ position_t screen_size; ++ ++ if (graphics->text) { ++ grub_free(graphics->text); ++ graphics->text = NULL; ++ } ++ graphics_get_screen_rowscols(&screen_size); ++ graphics->text = grub_malloc(screen_size.x ++ * screen_size.y ++ * sizeof (graphics->text[0])); ++ if (graphics->text) { ++ int x, y; ++ for (y = 0; y < screen_size.y; y++) ++ for (x = 0; x < screen_size.x; x++) ++ graphics->text[y * screen_size.x + x] = ' '; ++ return 1; ++ } ++ } ++ return 0; ++} ++ ++unsigned short * ++graphics_get_text_buf(void) ++{ ++ return backend ? backend->graphics->text : NULL; ++ return NULL; ++} ++ ++int ++graphics_get_screen_rowscols(position_t *size) ++{ ++#if 0 ++ if (backend && backend->get_screen_size) { ++ backend->get_screen_size(backend, size); ++ size->x >>= 3; ++ size->y >>= 4; ++ return 1; ++ } ++ size->x = -1; ++ size->y = -1; ++ return 0; ++#else ++ size->x = 80; ++ size->y = 30; ++ return 1; ++#endif ++} ++ ++int ++graphics_get_scroll(void) ++{ ++ return backend ? backend->graphics->scroll : 1; ++} ++ ++void ++graphics_set_palette(int idx, int red, int green, int blue) ++{ ++ if (backend && backend->set_palette) { ++ backend->set_palette(backend, idx, red, green, blue); ++ backend->set_palette(backend, 0, 0x00, 0x00, 0x00); ++ backend->set_palette(backend, 15, 0xff, 0xff, 0xff); ++ backend->set_palette(backend, 16, 0x00, 0x00, 0x00); ++ } ++} ++ ++static char splashpath[64] = ""; ++ ++static void ++graphics_set_splash_helper(void) ++{ ++ if (backend) { ++ struct xpm *xpm = NULL; ++ ++ if (backend->graphics->splashimage) ++ xpm_free(backend->graphics->splashimage); ++ ++ if (splashpath[0]) ++ xpm = xpm_open(splashpath); ++ ++ if (xpm) { ++ backend->graphics->splashimage = xpm; ++ grub_strcpy(backend->graphics->splashpath, splashpath); ++ } else { ++ backend->graphics->splashimage = NULL; ++ backend->graphics->splashpath[0] = '\0'; ++ } ++ backend->reset_screen_geometry(backend); ++ } ++} ++ ++void ++graphics_set_splash(char *s) ++{ ++ if (s && s[0] != '\0') ++ grub_strcpy(splashpath, s); ++ else ++ splashpath[0] = '\0'; ++ graphics_set_splash_helper(); ++} ++ ++char * ++graphics_get_splash(void) ++{ ++ if (backend) ++ return backend->graphics->splashpath; ++ if (splashpath[0] != '\0') ++ return splashpath; ++ return NULL; ++} ++ ++struct xpm * ++graphics_get_splash_xpm(void) ++{ ++ if (backend) ++ return backend->graphics->splashimage; ++ return NULL; ++} ++ ++void ++graphics_putchar(int ch) ++{ ++ struct graphics *graphics; ++ position_t screensz; ++ int offset; ++ ++ void *old_term = current_term; ++ ++ if (!backend) ++ return; ++ ++ graphics = backend->graphics; ++ graphics_get_screen_rowscols(&screensz); ++ ++ ch &= 0xff; ++ ++ graphics_cursor(0); ++ ++ if (ch == '\n') { ++ if (graphics->fonty + 1 < screensz.y) { ++ graphics_setxy(graphics->fontx, graphics->fonty + 1); ++ } else ++ graphics_scroll(); ++ graphics_cursor(1); ++ return; ++ } else if (ch == '\r') { ++ graphics_setxy(0, graphics->fonty); ++ graphics_cursor(1); ++ return; ++ } ++ ++ graphics_cursor(0); ++ ++ offset = graphics->fontx + graphics->fonty * screensz.x; ++ graphics->text[offset] = ch; ++ graphics->text[offset] &= 0x00ff; ++ if (graphics->current_color & 0xf0) ++ graphics->text[offset] |= 0x100; ++ ++ graphics_cursor(0); ++ ++ if ((graphics->fontx + 1) >= screensz.x) { ++ graphics_setxy(0, graphics->fonty); ++ if (graphics->fonty + 1 < screensz.y) ++ graphics_setxy(0, graphics->fonty + 1); ++ else ++ graphics_scroll(); ++ } else { ++ graphics_setxy(graphics->fontx + 1, graphics->fonty); ++ } ++ ++ graphics_cursor(1); ++} ++ ++void ++graphics_set_font_position(position_t *pos) ++{ ++ if (backend) { ++ backend->graphics->fontx = pos->x; ++ backend->graphics->fonty = pos->y; ++ } ++} ++ ++void ++graphics_get_font_position(position_t *pos) ++{ ++ if (backend) { ++ pos->x = backend->graphics->fontx; ++ pos->y = backend->graphics->fonty; ++ return; ++ } ++ pos->x = -1; ++ pos->y = -1; ++} ++ ++void ++graphics_get_font_size(position_t *size) ++{ ++ size->x = 8; ++ size->y = 16; ++} ++ ++void ++graphics_setxy(int x, int y) ++{ ++ if (!backend) ++ return; ++ ++ if (backend->setxy) { ++ position_t pos = {x, y}; ++ backend->setxy(backend, &pos); ++ return; ++ } ++} ++ ++int ++graphics_getxy(void) ++{ ++ int ret = 0; ++ if (backend) { ++ if (backend->getxy) { ++ position_t pos; ++ backend->getxy(backend, &pos); ++ ret = ((pos.x & 0xff) << 8) | (pos.y & 0xff); ++ } else { ++ ret = ((backend->graphics->fontx & 0xff) << 8) | (backend->graphics->fonty & 0xff); ++ } ++ } ++ return ret; ++} ++ ++void ++graphics_scroll (void) ++{ ++ struct graphics *graphics; ++ position_t screensz; ++ int i; ++ unsigned short *text; ++ int linesz; ++ ++ if (!backend) ++ return; ++ ++ graphics = backend->graphics; ++ ++ /* we don't want to scroll recursively... that would be bad */ ++ if (!graphics->scroll) ++ return; ++ graphics->scroll = 0; ++ graphics_get_screen_rowscols(&screensz); ++ ++ text = graphics_get_text_buf(); ++ linesz = screensz.x * sizeof (text[0]); ++ for (i = 1; i < screensz.y; i++) { ++ unsigned short *prev = &text[(i-1) * screensz.x]; ++ unsigned short *this = prev + screensz.x; ++ ++ memmove(prev, this, linesz); ++ prev = this; ++ this += screensz.x; ++ } ++ graphics_setxy(0, screensz.y - 1); ++ for (i = 0; i < screensz.x; i++) { ++ graphics_putchar(' '); ++ //text[(screensz.y-1) + i] = ' '; ++ } ++ ++ graphics_clbl(0, 0, screensz.x, screensz.y, 1); ++ graphics_setxy(0, screensz.y - 1); ++ graphics->scroll = 1; ++} ++ ++void ++graphics_cursor(int set) ++{ ++ if (backend && backend->cursor) ++ backend->cursor(backend, set); ++} ++ ++void ++graphics_gotoxy(int x, int y) ++{ ++ position_t pos = {x,y}; ++ if (backend) { ++ if (backend->gotoxy) { ++ backend->gotoxy(backend, &pos); ++ } else { ++ graphics_cursor(0); ++ graphics_setxy(x, y); ++ graphics_cursor(1); ++ } ++ } ++} ++ ++void ++graphics_cls(void) ++{ ++ int x = 0, y = 0, xy; ++ unsigned short *text; ++ position_t screensz; ++ ++ graphics_get_screen_rowscols(&screensz); ++ text = graphics_get_text_buf(); ++ for (y = 0; y < screensz.y; y++) ++ for (x = 0; x < screensz.x; x++) ++ text[x + y * screensz.x] = ' '; ++ ++ if (backend) { ++ //int xy = graphics_getxy(); ++ ++ graphics_clbl(0, 0, screensz.x, screensz.y, 0); ++ //graphics_gotoxy(xy & 0xf0 >> 8, xy & 0xf); ++ graphics_gotoxy(0, 0); ++ } ++} ++ ++void ++graphics_clbl(int col, int row, int width, int height, int draw_text) ++{ ++ if (backend) { ++ int x = 0, y = 0, xy; ++ unsigned short *text; ++ position_t screensz; ++ ++ graphics_get_screen_rowscols(&screensz); ++ ++#if 0 ++ xy = graphics_getxy(); ++#endif ++ if (backend->clbl) { ++ backend->clbl(backend, col, row, width, height, draw_text); ++ } else { ++ for (y = 0; y < screensz.y; y++) { ++ for (x = 0; x < screensz.x; x++) { ++ graphics_setxy(x, y); ++ graphics_cursor(0); ++ } ++ } ++ } ++#if 0 ++ graphics_gotoxy(xy >> 8, xy & 0xf); ++#endif ++ } ++} ++ ++void ++graphics_setcolorstate (color_state state) ++{ ++ struct graphics *graphics; ++ if (!backend) ++ return; ++ ++ graphics = backend->graphics; ++ ++ switch (state) { ++ case COLOR_STATE_STANDARD: ++ graphics->current_color = graphics->standard_color; ++ break; ++ case COLOR_STATE_NORMAL: ++ graphics->current_color = graphics->normal_color; ++ break; ++ case COLOR_STATE_HIGHLIGHT: ++ graphics->current_color = graphics->highlight_color; ++ break; ++ default: ++ graphics->current_color = graphics->standard_color; ++ break; ++ } ++ ++ graphics->color_state = state; ++} ++ ++void ++graphics_setcolor (int normal_color, int highlight_color) ++{ ++ backend->graphics->normal_color = normal_color; ++ backend->graphics->highlight_color = highlight_color; ++ ++ graphics_setcolorstate (backend->graphics->color_state); ++} ++ ++int ++graphics_setcursor(int on) ++{ ++ /* FIXME: we don't have a cursor in graphics */ ++ return 0; ++} ++ ++int ++graphics_init(void) ++{ ++ struct graphics *graphics; ++ int i; ++ ++ if (graphics_inited) ++ return 1; ++ ++ if (backend) { ++ if (backend->enable(backend)) { ++ graphics_inited = 1; ++ graphics_set_splash_helper(); ++ return 1; ++ } ++ return 0; ++ } ++ ++ graphics = grub_malloc(sizeof (*graphics)); ++ if (!graphics) ++ return 0; ++ ++ grub_memset(graphics, '\0', sizeof (*graphics)); ++ ++ graphics->scroll = 1; ++ graphics->fontx = 0; ++ graphics->fonty = 0; ++ ++ graphics->standard_color = A_NORMAL; ++ graphics->normal_color = A_NORMAL; ++ graphics->highlight_color = A_REVERSE; ++ graphics->current_color = A_NORMAL; ++ graphics->color_state = COLOR_STATE_STANDARD; ++ ++ grub_memset(graphics->splashpath, '\0', sizeof (graphics->splashpath)); ++ ++ for(i = 0; backends[i] != NULL; i++) { ++ backend = backends[i]; ++ backend->graphics = graphics; ++ if (backend->enable(backend)) { ++ graphics_inited = 1; ++ graphics_set_splash_helper(); ++ return 1; ++ } ++ backend->graphics = NULL; ++ } ++ current_term = term_table; ++ grub_free(graphics->text); ++ grub_free(graphics); ++ return 0; ++} ++ ++void ++graphics_end(void) ++{ ++ if (backend && graphics_inited) { ++ graphics_inited = 0; ++ backend->disable(backend); ++ } ++} ++ ++#endif /* SUPPORT_GRAPHICS */ +diff --git a/efi/graphics.h b/efi/graphics.h +new file mode 100644 +index 0000000..ecf9e0e +--- /dev/null ++++ b/efi/graphics.h +@@ -0,0 +1,81 @@ ++#ifndef GRUB_EFI_GRAPHICS_H ++#define GRUB_EFI_GRAPHICS_H ++ ++#ifdef SUPPORT_GRAPHICS ++ ++#include ++#include "xpm.h" ++ ++#define VIDEO_TYPE_EFI 0x70 ++ ++typedef void pixel_t; ++struct graphics; ++ ++struct position { ++ int x; ++ int y; ++}; ++typedef struct position position_t; ++ ++extern void grub_efi_setup_gfx_pci (grub_efi_handle_t handle); ++ ++extern grub_uint16_t grub_console_getwh (void); ++extern void graphics_set_kernel_params(struct linux_kernel_params *params); ++extern void graphics_set_font_position(position_t *pos); ++extern void graphics_get_font_position(position_t *pos); ++extern void graphics_get_font_size(position_t *size); ++extern int graphics_get_screen_rowscols(position_t *size); ++extern int graphics_alloc_text_buf(void); ++extern unsigned short *graphics_get_text_buf(void); ++ ++extern int graphics_get_scroll(void); ++ ++extern char *graphics_get_splash(void); ++extern void graphics_setxy(int x, int y); ++extern void graphics_cls(void); ++extern void graphics_clbl(int x, int y, int width, int height, int draw_text); ++extern void graphics_setcolorstate (color_state state); ++extern void graphics_setcolor (int normal_color, int highlight_color); ++extern int graphics_setcursor(int on); ++extern int graphics_init(void); ++extern void graphics_end(void); ++extern struct xpm *graphics_get_splash_xpm(void); ++extern void graphics_cursor(int set); ++extern void graphics_scroll(void); ++ ++struct graphics_backend { ++ char *name; ++ struct graphics *graphics; ++ void *priv; ++ ++ int (*enable)(struct graphics_backend *backend); ++ void (*disable)(struct graphics_backend *backend); ++ ++ void (*set_kernel_params)(struct graphics_backend *backend, ++ struct linux_kernel_params *params); ++ ++ void (*clbl)(struct graphics_backend *backend, int col, int row, ++ int width, int height, ++ int draw_text); ++ ++ void (*set_palette)(struct graphics_backend *backend, ++ int idx, int red, int green, int blue); ++ pixel_t *(*get_pixel_idx)(struct graphics_backend *backend, int idx); ++ pixel_t *(*get_pixel_rgb)(struct graphics_backend *backend, ++ int red, int green, int blue); ++ void (*draw_pixel)(struct graphics_backend *backend, ++ position_t *pos, pixel_t *pixel); ++ ++ void (*reset_screen_geometry)(struct graphics_backend *backend); ++ void (*get_screen_size)(struct graphics_backend *backend, position_t *size); ++ void (*getxy)(struct graphics_backend *backend, position_t *pos); ++ void (*setxy)(struct graphics_backend *backend, position_t *pos); ++ void (*gotoxy)(struct graphics_backend *backend, position_t *pos); ++ void (*cursor)(struct graphics_backend *backend, int set); ++// void (*putchar)(struct graphics_backend *backend, int ch); ++}; ++ ++extern const unsigned char font8x16[]; ++ ++#endif /* SUPPORT_GRAPHCIS */ ++#endif /* GRUB_EFI_GRAPHICS_H */ +diff --git a/efi/grub/.gitignore b/efi/grub/.gitignore +new file mode 100644 +index 0000000..40a991e +--- /dev/null ++++ b/efi/grub/.gitignore +@@ -0,0 +1 @@ ++cpu +diff --git a/efi/grub/efi/api.h b/efi/grub/efi/api.h +new file mode 100644 +index 0000000..81a0b3f +--- /dev/null ++++ b/efi/grub/efi/api.h +@@ -0,0 +1,1716 @@ ++/* efi.h - declare EFI types and functions */ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2006 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifndef GRUB_EFI_API_HEADER ++#define GRUB_EFI_API_HEADER 1 ++ ++#include ++#include ++ ++/* For consistency and safety, we name the EFI-defined types differently. ++ All names are transformed into lower case, _t appended, and ++ grub_efi_ prepended. */ ++ ++/* Constants. */ ++#define GRUB_EFI_EVT_TIMER 0x80000000 ++#define GRUB_EFI_EVT_RUNTIME 0x40000000 ++#define GRUB_EFI_EVT_RUNTIME_CONTEXT 0x20000000 ++#define GRUB_EFI_EVT_NOTIFY_WAIT 0x00000100 ++#define GRUB_EFI_EVT_NOTIFY_SIGNAL 0x00000200 ++#define GRUB_EFI_EVT_SIGNAL_EXIT_BOOT_SERVICES 0x00000201 ++#define GRUB_EFI_EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE 0x60000202 ++ ++#define GRUB_EFI_TPL_APPLICATION 4 ++#define GRUB_EFI_TPL_CALLBACK 8 ++#define GRUB_EFI_TPL_NOTIFY 16 ++#define GRUB_EFI_TPL_HIGH_LEVEL 31 ++ ++#define GRUB_EFI_MEMORY_UC 0x0000000000000001 ++#define GRUB_EFI_MEMORY_WC 0x0000000000000002 ++#define GRUB_EFI_MEMORY_WT 0x0000000000000004 ++#define GRUB_EFI_MEMORY_WB 0x0000000000000008 ++#define GRUB_EFI_MEMORY_UCE 0x0000000000000010 ++#define GRUB_EFI_MEMORY_WP 0x0000000000001000 ++#define GRUB_EFI_MEMORY_RP 0x0000000000002000 ++#define GRUB_EFI_MEMORY_XP 0x0000000000004000 ++#define GRUB_EFI_MEMORY_RUNTIME 0x8000000000000000 ++ ++#define GRUB_EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL 0x00000001 ++#define GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL 0x00000002 ++#define GRUB_EFI_OPEN_PROTOCOL_TEST_PROTOCOL 0x00000004 ++#define GRUB_EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER 0x00000008 ++#define GRUB_EFI_OPEN_PROTOCOL_BY_DRIVER 0x00000010 ++#define GRUB_EFI_OPEN_PROTOCOL_BY_EXCLUSIVE 0x00000020 ++ ++#define GRUB_EFI_VARIABLE_NON_VOLATILE 0x0000000000000001 ++#define GRUB_EFI_VARIABLE_BOOTSERVICE_ACCESS 0x0000000000000002 ++#define GRUB_EFI_VARIABLE_RUNTIME_ACCESS 0x0000000000000004 ++ ++#define GRUB_EFI_TIME_ADJUST_DAYLIGHT 0x01 ++#define GRUB_EFI_TIME_IN_DAYLIGHT 0x02 ++ ++#define GRUB_EFI_UNSPECIFIED_TIMEZONE 0x07FF ++ ++#define GRUB_EFI_OPTIONAL_PTR 0x00000001 ++ ++#define GRUB_EFI_PCI_IO_GUID \ ++ { 0x4cf5b200, 0x68b8, 0x4ca5, \ ++ { 0x9e, 0xec, 0xb2, 0x3e, 0x3f, 0x50, 0x02, 0x9a } \ ++ } ++ ++#define GRUB_EFI_PCI_ROOT_IO_GUID \ ++ { 0x2F707EBB, 0x4A1A, 0x11d4, \ ++ { 0x9A, 0x38, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D } \ ++ } ++ ++#define GRUB_EFI_LOADED_IMAGE_GUID \ ++ { 0x5b1b31a1, 0x9562, 0x11d2, \ ++ { 0x8e, 0x3f, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \ ++ } ++ ++#define GRUB_EFI_DISK_IO_GUID \ ++ { 0xce345171, 0xba0b, 0x11d2, \ ++ { 0x8e, 0x4f, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \ ++ } ++ ++#define GRUB_EFI_BLOCK_IO_GUID \ ++ { 0x964e5b21, 0x6459, 0x11d2, \ ++ { 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \ ++ } ++ ++#define GRUB_EFI_DEVICE_PATH_GUID \ ++ { 0x09576e91, 0x6d3f, 0x11d2, \ ++ { 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \ ++ } ++ ++#define GRUB_EFI_DEVICE_PATH_FROM_TEXT_GUID \ ++ { 0x05c99a21, 0xc70f, 0x4ad2, \ ++ { 0x8a, 0x5f, 0x35, 0xdf, 0x33, 0x43, 0xf5, 0x1e } \ ++ } ++ ++#define GRUB_EFI_GRAPHICS_OUTPUT_GUID \ ++ { 0x9042a9de, 0x23dc, 0x4a38, \ ++ { 0x96, 0xfb, 0x7a, 0xde, 0xd0, 0x80, 0x51, 0x6a } \ ++ } ++ ++#define GRUB_EFI_UGA_DRAW_GUID \ ++ { 0x982c298b, 0xf4fa, 0x41cb, \ ++ { 0xb8, 0x38, 0x77, 0xaa, 0x68, 0x8f, 0xb8, 0x39 } \ ++ } ++ ++#define GRUB_EFI_UGA_IO_GUID \ ++ { 0x61a4d49e, 0x6f68, 0x4f1b, \ ++ { 0xb9, 0x22, 0xa8, 0x6e, 0xed, 0xb, 0x7, 0xa2 } \ ++ } ++ ++#define GRUB_EFI_SIMPLE_FILE_SYSTEM_GUID \ ++ { 0x964e5b22, 0x6459, 0x11d2, \ ++ { 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \ ++ } ++ ++#define GRUB_EFI_SERIAL_IO_GUID \ ++ { 0xbb25cf6f, 0xf1d4, 0x11d2, \ ++ { 0x9a, 0x0c, 0x00, 0x90, 0x27, 0x3F, 0xc1, 0xfd } \ ++ } ++ ++/* Enumerations. */ ++enum grub_efi_timer_delay ++{ ++ GRUB_EFI_TIMER_CANCEL, ++ GRUB_EFI_TIMER_PERIODIC, ++ GRUB_EFI_TIMER_RELATIVE ++}; ++typedef enum grub_efi_timer_delay grub_efi_timer_delay_t; ++ ++enum grub_efi_allocate_type ++{ ++ GRUB_EFI_ALLOCATE_ANY_PAGES, ++ GRUB_EFI_ALLOCATE_MAX_ADDRESS, ++ GRUB_EFI_ALLOCATE_ADDRESS, ++ GRUB_EFI_MAX_ALLOCATION_TYPE ++}; ++typedef enum grub_efi_allocate_type grub_efi_allocate_type_t; ++ ++enum grub_efi_memory_type ++{ ++ GRUB_EFI_RESERVED_MEMORY_TYPE, ++ GRUB_EFI_LOADER_CODE, ++ GRUB_EFI_LOADER_DATA, ++ GRUB_EFI_BOOT_SERVICES_CODE, ++ GRUB_EFI_BOOT_SERVICES_DATA, ++ GRUB_EFI_RUNTIME_SERVICES_CODE, ++ GRUB_EFI_RUNTIME_SERVICES_DATA, ++ GRUB_EFI_CONVENTIONAL_MEMORY, ++ GRUB_EFI_UNUSABLE_MEMORY, ++ GRUB_EFI_ACPI_RECLAIM_MEMORY, ++ GRUB_EFI_ACPI_MEMORY_NVS, ++ GRUB_EFI_MEMORY_MAPPED_IO, ++ GRUB_EFI_MEMORY_MAPPED_IO_PORT_SPACE, ++ GRUB_EFI_PAL_CODE, ++ GRUB_EFI_MAX_MEMORY_TYPE ++}; ++typedef enum grub_efi_memory_type grub_efi_memory_type_t; ++ ++enum grub_efi_interface_type ++{ ++ GRUB_EFI_NATIVE_INTERFACE ++}; ++typedef enum grub_efi_interface_type grub_efi_interface_type_t; ++ ++enum grub_efi_locate_search_type ++{ ++ GRUB_EFI_ALL_HANDLES, ++ GRUB_EFI_BY_REGISTER_NOTIFY, ++ GRUB_EFI_BY_PROTOCOL ++}; ++typedef enum grub_efi_locate_search_type grub_efi_locate_search_type_t; ++ ++enum grub_efi_reset_type ++{ ++ GRUB_EFI_RESET_COLD, ++ GRUB_EFI_RESET_WARM, ++ GRUB_EFI_RESET_SHUTDOWN ++}; ++typedef enum grub_efi_reset_type grub_efi_reset_type_t; ++ ++/* Types. */ ++typedef char grub_efi_boolean_t; ++typedef long grub_efi_intn_t; ++typedef unsigned long grub_efi_uintn_t; ++typedef grub_int8_t grub_efi_int8_t; ++typedef grub_uint8_t grub_efi_uint8_t; ++typedef grub_int16_t grub_efi_int16_t; ++typedef grub_uint16_t grub_efi_uint16_t; ++typedef grub_int32_t grub_efi_int32_t; ++typedef grub_uint32_t grub_efi_uint32_t; ++typedef grub_int64_t grub_efi_int64_t; ++typedef grub_uint64_t grub_efi_uint64_t; ++typedef grub_uint8_t grub_efi_char8_t; ++typedef grub_uint16_t grub_efi_char16_t; ++ ++typedef grub_efi_intn_t grub_efi_status_t; ++ ++#define GRUB_EFI_ERROR_CODE(value) \ ++ ((1L << (sizeof (grub_efi_status_t) * 8 - 1)) | (value)) ++ ++#define GRUB_EFI_WARNING_CODE(value) (value) ++ ++#define GRUB_EFI_SUCCESS 0 ++ ++#define GRUB_EFI_LOAD_ERROR GRUB_EFI_ERROR_CODE (1) ++#define GRUB_EFI_INVALID_PARAMETER GRUB_EFI_ERROR_CODE (2) ++#define GRUB_EFI_UNSUPPORTED GRUB_EFI_ERROR_CODE (3) ++#define GRUB_EFI_BAD_BUFFER_SIZE GRUB_EFI_ERROR_CODE (4) ++#define GRUB_EFI_BUFFER_TOO_SMALL GRUB_EFI_ERROR_CODE (5) ++#define GRUB_EFI_NOT_READY GRUB_EFI_ERROR_CODE (6) ++#define GRUB_EFI_DEVICE_ERROR GRUB_EFI_ERROR_CODE (7) ++#define GRUB_EFI_WRITE_PROTECTED GRUB_EFI_ERROR_CODE (8) ++#define GRUB_EFI_OUT_OF_RESOURCES GRUB_EFI_ERROR_CODE (9) ++#define GRUB_EFI_VOLUME_CORRUPTED GRUB_EFI_ERROR_CODE (10) ++#define GRUB_EFI_VOLUME_FULL GRUB_EFI_ERROR_CODE (11) ++#define GRUB_EFI_NO_MEDIA GRUB_EFI_ERROR_CODE (12) ++#define GRUB_EFI_MEDIA_CHANGED GRUB_EFI_ERROR_CODE (13) ++#define GRUB_EFI_NOT_FOUND GRUB_EFI_ERROR_CODE (14) ++#define GRUB_EFI_ACCESS_DENIED GRUB_EFI_ERROR_CODE (15) ++#define GRUB_EFI_NO_RESPONSE GRUB_EFI_ERROR_CODE (16) ++#define GRUB_EFI_NO_MAPPING GRUB_EFI_ERROR_CODE (17) ++#define GRUB_EFI_TIMEOUT GRUB_EFI_ERROR_CODE (18) ++#define GRUB_EFI_NOT_STARTED GRUB_EFI_ERROR_CODE (19) ++#define GRUB_EFI_ALREADY_STARTED GRUB_EFI_ERROR_CODE (20) ++#define GRUB_EFI_ABORTED GRUB_EFI_ERROR_CODE (21) ++#define GRUB_EFI_ICMP_ERROR GRUB_EFI_ERROR_CODE (22) ++#define GRUB_EFI_TFTP_ERROR GRUB_EFI_ERROR_CODE (23) ++#define GRUB_EFI_PROTOCOL_ERROR GRUB_EFI_ERROR_CODE (24) ++#define GRUB_EFI_INCOMPATIBLE_VERSION GRUB_EFI_ERROR_CODE (25) ++#define GRUB_EFI_SECURITY_VIOLATION GRUB_EFI_ERROR_CODE (26) ++#define GRUB_EFI_CRC_ERROR GRUB_EFI_ERROR_CODE (27) ++ ++#define GRUB_EFI_WARN_UNKNOWN_GLYPH GRUB_EFI_WARNING_CODE (1) ++#define GRUB_EFI_WARN_DELETE_FAILURE GRUB_EFI_WARNING_CODE (2) ++#define GRUB_EFI_WARN_WRITE_FAILURE GRUB_EFI_WARNING_CODE (3) ++#define GRUB_EFI_WARN_BUFFER_TOO_SMALL GRUB_EFI_WARNING_CODE (4) ++ ++typedef void *grub_efi_handle_t; ++typedef void *grub_efi_event_t; ++typedef grub_efi_uint64_t grub_efi_lba_t; ++typedef grub_efi_uintn_t grub_efi_tpl_t; ++typedef grub_uint8_t grub_efi_mac_address_t[32]; ++typedef grub_uint8_t grub_efi_ipv4_address_t[4]; ++typedef grub_uint16_t grub_efi_ipv6_address_t[8]; ++typedef grub_uint8_t grub_efi_ip_address_t[8] __attribute__ ((aligned (4))); ++typedef grub_efi_uint64_t grub_efi_physical_address_t; ++typedef grub_efi_uint64_t grub_efi_virtual_address_t; ++ ++struct grub_efi_guid ++{ ++ grub_uint32_t data1; ++ grub_uint16_t data2; ++ grub_uint16_t data3; ++ grub_uint8_t data4[8]; ++} __attribute__ ((aligned (8))); ++typedef struct grub_efi_guid grub_efi_guid_t; ++ ++/* XXX although the spec does not specify the padding, this actually ++ must have the padding! */ ++struct grub_efi_memory_descriptor ++{ ++ grub_efi_uint32_t type; ++ grub_efi_uint32_t padding; ++ grub_efi_physical_address_t physical_start; ++ grub_efi_virtual_address_t virtual_start; ++ grub_efi_uint64_t num_pages; ++ grub_efi_uint64_t attribute; ++}; ++typedef struct grub_efi_memory_descriptor grub_efi_memory_descriptor_t; ++ ++/* Device Path definitions. */ ++struct grub_efi_device_path ++{ ++ grub_efi_uint8_t type; ++ grub_efi_uint8_t subtype; ++ grub_efi_uint8_t length[2]; ++}; ++typedef struct grub_efi_device_path grub_efi_device_path_t; ++/* XXX EFI does not define EFI_DEVICE_PATH_PROTOCOL but uses it. ++ It seems to be identical to EFI_DEVICE_PATH. */ ++typedef struct grub_efi_device_path grub_efi_device_path_protocol_t; ++ ++#define GRUB_EFI_DEVICE_PATH_TYPE(dp) ((dp)->type & 0x7f) ++#define GRUB_EFI_DEVICE_PATH_SUBTYPE(dp) ((dp)->subtype) ++#define GRUB_EFI_DEVICE_PATH_LENGTH(dp) \ ++ ((dp)->length[0] | ((grub_efi_uint16_t) ((dp)->length[1]) << 8)) ++ ++/* The End of Device Path nodes. */ ++#define GRUB_EFI_END_DEVICE_PATH_TYPE (0xff & 0x7f) ++ ++#define GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE 0xff ++#define GRUB_EFI_END_THIS_DEVICE_PATH_SUBTYPE 0x01 ++ ++#define GRUB_EFI_END_ENTIRE_DEVICE_PATH(dp) \ ++ (GRUB_EFI_DEVICE_PATH_TYPE (dp) == GRUB_EFI_END_DEVICE_PATH_TYPE \ ++ && (GRUB_EFI_DEVICE_PATH_SUBTYPE (dp) \ ++ == GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE)) ++ ++#define GRUB_EFI_NEXT_DEVICE_PATH(dp) \ ++ ((grub_efi_device_path_t *) ((char *) (dp) \ ++ + GRUB_EFI_DEVICE_PATH_LENGTH (dp))) ++ ++/* Hardware Device Path. */ ++#define GRUB_EFI_HARDWARE_DEVICE_PATH_TYPE 1 ++ ++#define GRUB_EFI_PCI_DEVICE_PATH_SUBTYPE 1 ++ ++struct grub_efi_pci_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_uint8_t function; ++ grub_efi_uint8_t device; ++}; ++typedef struct grub_efi_pci_device_path grub_efi_pci_device_path_t; ++ ++#define GRUB_EFI_PCCARD_DEVICE_PATH_SUBTYPE 2 ++ ++struct grub_efi_pccard_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_uint8_t function; ++}; ++typedef struct grub_efi_pccard_device_path grub_efi_pccard_device_path_t; ++ ++#define GRUB_EFI_MEMORY_MAPPED_DEVICE_PATH_SUBTYPE 3 ++ ++struct grub_efi_memory_mapped_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_memory_type_t memory_type; ++ grub_efi_physical_address_t start_address; ++ grub_efi_physical_address_t end_address; ++}; ++typedef struct grub_efi_memory_mapped_device_path ++ grub_efi_memory_mapped_device_path_t; ++ ++#define GRUB_EFI_VENDOR_DEVICE_PATH_SUBTYPE 4 ++ ++struct grub_efi_vendor_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_guid_t vendor_guid; ++ grub_efi_uint8_t vendor_defined_data[0]; ++}; ++typedef struct grub_efi_vendor_device_path grub_efi_vendor_device_path_t; ++ ++#define GRUB_EFI_CONTROLLER_DEVICE_PATH_SUBTYPE 5 ++ ++struct grub_efi_controller_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_uint32_t controller_number; ++}; ++typedef struct grub_efi_controller_device_path ++ grub_efi_controller_device_path_t; ++ ++/* ACPI Device Path. */ ++#define GRUB_EFI_ACPI_DEVICE_PATH_TYPE 2 ++ ++#define GRUB_EFI_ACPI_DEVICE_PATH_SUBTYPE 1 ++ ++struct grub_efi_acpi_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_uint32_t hid; ++ grub_efi_uint32_t uid; ++}; ++typedef struct grub_efi_acpi_device_path grub_efi_acpi_device_path_t; ++ ++#define GRUB_EFI_EXPANDED_ACPI_DEVICE_PATH_SUBTYPE 2 ++ ++struct grub_efi_expanded_acpi_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_uint32_t hid; ++ grub_efi_uint32_t uid; ++ grub_efi_uint32_t cid; ++ char hidstr[1]; ++}; ++typedef struct grub_efi_expanded_acpi_device_path ++ grub_efi_expanded_acpi_device_path_t; ++ ++#define GRUB_EFI_EXPANDED_ACPI_HIDSTR(dp) \ ++ (((grub_efi_expanded_acpi_device_path_t *) dp)->hidstr) ++#define GRUB_EFI_EXPANDED_ACPI_UIDSTR(dp) \ ++ (GRUB_EFI_EXPANDED_ACPI_HIDSTR(dp) \ ++ + grub_strlen (GRUB_EFI_EXPANDED_ACPI_HIDSTR(dp)) + 1) ++#define GRUB_EFI_EXPANDED_ACPI_CIDSTR(dp) \ ++ (GRUB_EFI_EXPANDED_ACPI_UIDSTR(dp) \ ++ + grub_strlen (GRUB_EFI_EXPANDED_ACPI_UIDSTR(dp)) + 1) ++ ++/* Messaging Device Path. */ ++#define GRUB_EFI_MESSAGING_DEVICE_PATH_TYPE 3 ++ ++#define GRUB_EFI_ATAPI_DEVICE_PATH_SUBTYPE 1 ++ ++struct grub_efi_atapi_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_uint8_t primary_secondary; ++ grub_efi_uint8_t slave_master; ++ grub_efi_uint16_t lun; ++}; ++typedef struct grub_efi_atapi_device_path grub_efi_atapi_device_path_t; ++ ++#define GRUB_EFI_SCSI_DEVICE_PATH_SUBTYPE 2 ++ ++struct grub_efi_scsi_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_uint16_t pun; ++ grub_efi_uint16_t lun; ++}; ++typedef struct grub_efi_scsi_device_path grub_efi_scsi_device_path_t; ++ ++#define GRUB_EFI_FIBRE_CHANNEL_DEVICE_PATH_SUBTYPE 3 ++ ++struct grub_efi_fibre_channel_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_uint32_t reserved; ++ grub_efi_uint64_t wwn; ++ grub_efi_uint64_t lun; ++}; ++typedef struct grub_efi_fibre_channel_device_path ++ grub_efi_fibre_channel_device_path_t; ++ ++#define GRUB_EFI_1394_DEVICE_PATH_SUBTYPE 4 ++ ++struct grub_efi_1394_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_uint32_t reserved; ++ grub_efi_uint64_t guid; ++}; ++typedef struct grub_efi_1394_device_path grub_efi_1394_device_path_t; ++ ++#define GRUB_EFI_USB_DEVICE_PATH_SUBTYPE 5 ++ ++struct grub_efi_usb_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_uint8_t parent_port_number; ++ grub_efi_uint8_t interface; ++}; ++typedef struct grub_efi_usb_device_path grub_efi_usb_device_path_t; ++ ++#define GRUB_EFI_USB_CLASS_DEVICE_PATH_SUBTYPE 15 ++ ++struct grub_efi_usb_class_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_uint16_t vendor_id; ++ grub_efi_uint16_t product_id; ++ grub_efi_uint8_t device_class; ++ grub_efi_uint8_t device_subclass; ++ grub_efi_uint8_t device_protocol; ++}; ++typedef struct grub_efi_usb_class_device_path ++ grub_efi_usb_class_device_path_t; ++ ++#define GRUB_EFI_I2O_DEVICE_PATH_SUBTYPE 6 ++ ++struct grub_efi_i2o_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_uint32_t tid; ++}; ++typedef struct grub_efi_i2o_device_path grub_efi_i2o_device_path_t; ++ ++#define GRUB_EFI_MAC_ADDRESS_DEVICE_PATH_SUBTYPE 11 ++ ++struct grub_efi_mac_address_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_mac_address_t mac_address; ++ grub_efi_uint8_t if_type; ++}; ++typedef struct grub_efi_mac_address_device_path ++ grub_efi_mac_address_device_path_t; ++ ++#define GRUB_EFI_IPV4_DEVICE_PATH_SUBTYPE 12 ++ ++struct grub_efi_ipv4_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_ipv4_address_t local_ip_address; ++ grub_efi_ipv4_address_t remote_ip_address; ++ grub_efi_uint16_t local_port; ++ grub_efi_uint16_t remote_port; ++ grub_efi_uint16_t protocol; ++ grub_efi_uint8_t static_ip_address; ++}; ++typedef struct grub_efi_ipv4_device_path grub_efi_ipv4_device_path_t; ++ ++#define GRUB_EFI_IPV6_DEVICE_PATH_SUBTYPE 13 ++ ++struct grub_efi_ipv6_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_ipv6_address_t local_ip_address; ++ grub_efi_ipv6_address_t remote_ip_address; ++ grub_efi_uint16_t local_port; ++ grub_efi_uint16_t remote_port; ++ grub_efi_uint16_t protocol; ++ grub_efi_uint8_t static_ip_address; ++}; ++typedef struct grub_efi_ipv6_device_path grub_efi_ipv6_device_path_t; ++ ++#define GRUB_EFI_INFINIBAND_DEVICE_PATH_SUBTYPE 9 ++ ++struct grub_efi_infiniband_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_uint32_t resource_flags; ++ grub_efi_uint8_t port_gid[16]; ++ grub_efi_uint64_t remote_id; ++ grub_efi_uint64_t target_port_id; ++ grub_efi_uint64_t device_id; ++}; ++typedef struct grub_efi_infiniband_device_path ++ grub_efi_infiniband_device_path_t; ++ ++#define GRUB_EFI_UART_DEVICE_PATH_SUBTYPE 14 ++ ++struct grub_efi_uart_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_uint32_t reserved; ++ grub_efi_uint64_t baud_rate; ++ grub_efi_uint8_t data_bits; ++ grub_efi_uint8_t parity; ++ grub_efi_uint8_t stop_bits; ++}; ++typedef struct grub_efi_uart_device_path grub_efi_uart_device_path_t; ++ ++#define GRUB_EFI_VENDOR_MESSAGING_DEVICE_PATH_SUBTYPE 10 ++ ++struct grub_efi_vendor_messaging_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_guid_t vendor_guid; ++ grub_efi_uint8_t vendor_defined_data[0]; ++}; ++typedef struct grub_efi_vendor_messaging_device_path ++ grub_efi_vendor_messaging_device_path_t; ++ ++/* Media Device Path. */ ++#define GRUB_EFI_MEDIA_DEVICE_PATH_TYPE 4 ++ ++#define GRUB_EFI_HARD_DRIVE_DEVICE_PATH_SUBTYPE 1 ++ ++struct grub_efi_hard_drive_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_uint32_t partition_number; ++ grub_efi_lba_t partition_start; ++ grub_efi_lba_t partition_size; ++ grub_efi_uint8_t partition_signature[16]; ++ grub_efi_uint8_t mbr_type; ++ grub_efi_uint8_t signature_type; ++}; ++typedef struct grub_efi_hard_drive_device_path ++ grub_efi_hard_drive_device_path_t; ++ ++#define GRUB_EFI_CDROM_DEVICE_PATH_SUBTYPE 2 ++ ++struct grub_efi_cdrom_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_uint32_t boot_entry; ++ grub_efi_lba_t partition_start; ++ grub_efi_lba_t partition_size; ++}; ++typedef struct grub_efi_cdrom_device_path grub_efi_cdrom_device_path_t; ++ ++#define GRUB_EFI_VENDOR_MEDIA_DEVICE_PATH_SUBTYPE 3 ++ ++struct grub_efi_vendor_media_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_guid_t vendor_guid; ++ grub_efi_uint8_t vendor_defined_data[0]; ++}; ++typedef struct grub_efi_vendor_media_device_path ++ grub_efi_vendor_media_device_path_t; ++ ++#define GRUB_EFI_FILE_PATH_DEVICE_PATH_SUBTYPE 4 ++ ++struct grub_efi_file_path_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_char16_t path_name[0]; ++}; ++typedef struct grub_efi_file_path_device_path ++ grub_efi_file_path_device_path_t; ++ ++#define GRUB_EFI_PROTOCOL_DEVICE_PATH_SUBTYPE 5 ++ ++struct grub_efi_protocol_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_guid_t guid; ++}; ++typedef struct grub_efi_protocol_device_path grub_efi_protocol_device_path_t; ++ ++/* BIOS Boot Specification Device Path. */ ++#define GRUB_EFI_BIOS_DEVICE_PATH_TYPE 5 ++ ++#define GRUB_EFI_BIOS_DEVICE_PATH_SUBTYPE 1 ++ ++struct grub_efi_bios_device_path ++{ ++ grub_efi_device_path_t header; ++ grub_efi_uint16_t device_type; ++ grub_efi_uint16_t status_flags; ++ char description[0]; ++}; ++typedef struct grub_efi_bios_device_path grub_efi_bios_device_path_t; ++ ++struct grub_efi_device_path_from_text ++{ ++ grub_efi_device_path_t * (*convert_text_to_device_node) (const grub_efi_char16_t *text_device_node); ++ grub_efi_device_path_t * (*convert_text_to_device_path) (const grub_efi_char16_t *text_device_path); ++}; ++typedef struct grub_efi_device_path_from_text grub_efi_device_path_from_text_t; ++ ++struct grub_efi_open_protocol_information_entry ++{ ++ grub_efi_handle_t agent_handle; ++ grub_efi_handle_t controller_handle; ++ grub_efi_uint32_t attributes; ++ grub_efi_uint32_t open_count; ++}; ++typedef struct grub_efi_open_protocol_information_entry ++ grub_efi_open_protocol_information_entry_t; ++ ++struct grub_efi_time ++{ ++ grub_efi_uint16_t year; ++ grub_efi_uint8_t month; ++ grub_efi_uint8_t day; ++ grub_efi_uint8_t hour; ++ grub_efi_uint8_t minute; ++ grub_efi_uint8_t second; ++ grub_efi_uint8_t pad1; ++ grub_efi_uint32_t nanosecond; ++ grub_efi_int16_t time_zone; ++ grub_efi_uint8_t daylight; ++ grub_efi_uint8_t pad2; ++}; ++typedef struct grub_efi_time grub_efi_time_t; ++ ++struct grub_efi_time_capabilities ++{ ++ grub_efi_uint32_t resolution; ++ grub_efi_uint32_t accuracy; ++ grub_efi_boolean_t sets_to_zero; ++}; ++typedef struct grub_efi_time_capabilities grub_efi_time_capabilities_t; ++ ++struct grub_efi_input_key ++{ ++ grub_efi_uint16_t scan_code; ++ grub_efi_char16_t unicode_char; ++}; ++typedef struct grub_efi_input_key grub_efi_input_key_t; ++ ++struct grub_efi_simple_text_output_mode ++{ ++ grub_efi_int32_t max_mode; ++ grub_efi_int32_t mode; ++ grub_efi_int32_t attribute; ++ grub_efi_int32_t cursor_column; ++ grub_efi_int32_t cursor_row; ++ grub_efi_boolean_t cursor_visible; ++}; ++typedef struct grub_efi_simple_text_output_mode ++ grub_efi_simple_text_output_mode_t; ++ ++/* Tables. */ ++struct grub_efi_table_header ++{ ++ grub_efi_uint64_t signature; ++ grub_efi_uint32_t revision; ++ grub_efi_uint32_t header_size; ++ grub_efi_uint32_t crc32; ++ grub_efi_uint32_t reserved; ++}; ++typedef struct grub_efi_table_header grub_efi_table_header_t; ++ ++struct grub_efi_boot_services ++{ ++ grub_efi_table_header_t hdr; ++ ++ grub_efi_tpl_t (*raise_tpl) (grub_efi_tpl_t new_tpl); ++ ++ void (*restore_tpl) (grub_efi_tpl_t old_tpl); ++ ++ grub_efi_status_t ++ (*allocate_pages) (grub_efi_allocate_type_t type, ++ grub_efi_memory_type_t memory_type, ++ grub_efi_uintn_t pages, ++ grub_efi_physical_address_t * memory); ++ ++ grub_efi_status_t ++ (*free_pages) (grub_efi_physical_address_t memory, ++ grub_efi_uintn_t pages); ++ ++ grub_efi_status_t ++ (*get_memory_map) (grub_efi_uintn_t * memory_map_size, ++ grub_efi_memory_descriptor_t * memory_map, ++ grub_efi_uintn_t * map_key, ++ grub_efi_uintn_t * descriptor_size, ++ grub_efi_uint32_t * descriptor_version); ++ ++ grub_efi_status_t ++ (*allocate_pool) (grub_efi_memory_type_t pool_type, ++ grub_efi_uintn_t size, void **buffer); ++ ++ grub_efi_status_t (*free_pool) (void *buffer); ++ ++ grub_efi_status_t ++ (*create_event) (grub_efi_uint32_t type, ++ grub_efi_tpl_t notify_tpl, ++ void (*notify_function) (grub_efi_event_t event, ++ void *context), ++ void *notify_context, grub_efi_event_t * event); ++ ++ grub_efi_status_t ++ (*set_timer) (grub_efi_event_t event, ++ grub_efi_timer_delay_t type, ++ grub_efi_uint64_t trigger_time); ++ ++ grub_efi_status_t ++ (*wait_for_event) (grub_efi_uintn_t num_events, ++ grub_efi_event_t * event, grub_efi_uintn_t * index); ++ ++ grub_efi_status_t (*signal_event) (grub_efi_event_t event); ++ ++ grub_efi_status_t (*close_event) (grub_efi_event_t event); ++ ++ grub_efi_status_t (*check_event) (grub_efi_event_t event); ++ ++ grub_efi_status_t ++ (*install_protocol_interface) (grub_efi_handle_t * handle, ++ grub_efi_guid_t * protocol, ++ grub_efi_interface_type_t interface_type, ++ void *interface); ++ ++ grub_efi_status_t ++ (*reinstall_protocol_interface) (grub_efi_handle_t handle, ++ grub_efi_guid_t * protocol, ++ void *old_interface, void *new_inteface); ++ ++ grub_efi_status_t ++ (*uninstall_protocol_interface) (grub_efi_handle_t handle, ++ grub_efi_guid_t * protocol, ++ void *interface); ++ ++ grub_efi_status_t ++ (*handle_protocol) (grub_efi_handle_t handle, ++ grub_efi_guid_t * protocol, void **interface); ++ ++ void *reserved; ++ ++ grub_efi_status_t ++ (*register_protocol_notify) (grub_efi_guid_t * protocol, ++ grub_efi_event_t event, void **registration); ++ ++ grub_efi_status_t ++ (*locate_handle) (grub_efi_locate_search_type_t search_type, ++ grub_efi_guid_t * protocol, ++ void *search_key, ++ grub_efi_uintn_t * buffer_size, ++ grub_efi_handle_t * buffer); ++ ++ grub_efi_status_t ++ (*locate_device_path) (grub_efi_guid_t * protocol, ++ grub_efi_device_path_t ** device_path, ++ grub_efi_handle_t * device); ++ ++ grub_efi_status_t ++ (*install_configuration_table) (grub_efi_guid_t * guid, void *table); ++ ++ grub_efi_status_t ++ (*load_image) (grub_efi_boolean_t boot_policy, ++ grub_efi_handle_t parent_image_handle, ++ grub_efi_device_path_t * file_path, ++ void *source_buffer, ++ grub_efi_uintn_t source_size, ++ grub_efi_handle_t * image_handle); ++ ++ grub_efi_status_t ++ (*start_image) (grub_efi_handle_t image_handle, ++ grub_efi_uintn_t * exit_data_size, ++ grub_efi_char16_t ** exit_data); ++ ++ grub_efi_status_t ++ (*exit) (grub_efi_handle_t image_handle, ++ grub_efi_status_t exit_status, ++ grub_efi_uintn_t exit_data_size, ++ grub_efi_char16_t * exit_data) __attribute__ ((noreturn)); ++ ++ grub_efi_status_t (*unload_image) (grub_efi_handle_t image_handle); ++ ++ grub_efi_status_t ++ (*exit_boot_services) (grub_efi_handle_t image_handle, ++ grub_efi_uintn_t map_key); ++ ++ grub_efi_status_t (*get_next_monotonic_count) (grub_efi_uint64_t * count); ++ ++ grub_efi_status_t (*stall) (grub_efi_uintn_t microseconds); ++ ++ grub_efi_status_t ++ (*set_watchdog_timer) (grub_efi_uintn_t timeout, ++ grub_efi_uint64_t watchdog_code, ++ grub_efi_uintn_t data_size, ++ grub_efi_char16_t * watchdog_data); ++ ++ grub_efi_status_t ++ (*connect_controller) (grub_efi_handle_t controller_handle, ++ grub_efi_handle_t * driver_image_handle, ++ grub_efi_device_path_protocol_t * ++ remaining_device_path, ++ grub_efi_boolean_t recursive); ++ ++ grub_efi_status_t ++ (*disconnect_controller) (grub_efi_handle_t controller_handle, ++ grub_efi_handle_t driver_image_handle, ++ grub_efi_handle_t child_handle); ++ ++ grub_efi_status_t ++ (*open_protocol) (grub_efi_handle_t handle, ++ grub_efi_guid_t * protocol, ++ void **interface, ++ grub_efi_handle_t agent_handle, ++ grub_efi_handle_t controller_handle, ++ grub_efi_uint32_t attributes); ++ ++ grub_efi_status_t ++ (*close_protocol) (grub_efi_handle_t handle, ++ grub_efi_guid_t * protocol, ++ grub_efi_handle_t agent_handle, ++ grub_efi_handle_t controller_handle); ++ ++ grub_efi_status_t ++ (*open_protocol_information) (grub_efi_handle_t handle, ++ grub_efi_guid_t * protocol, ++ grub_efi_open_protocol_information_entry_t ++ ** entry_buffer, ++ grub_efi_uintn_t * entry_count); ++ ++ grub_efi_status_t ++ (*protocols_per_handle) (grub_efi_handle_t handle, ++ grub_efi_guid_t *** protocol_buffer, ++ grub_efi_uintn_t * protocol_buffer_count); ++ ++ grub_efi_status_t ++ (*locate_handle_buffer) (grub_efi_locate_search_type_t search_type, ++ grub_efi_guid_t * protocol, ++ void *search_key, ++ grub_efi_uintn_t * no_handles, ++ grub_efi_handle_t ** buffer); ++ ++ grub_efi_status_t ++ (*locate_protocol) (grub_efi_guid_t * protocol, ++ void *registration, void **interface); ++ ++ grub_efi_status_t ++ (*install_multiple_protocol_interfaces) (grub_efi_handle_t * handle, ...); ++ ++ grub_efi_status_t ++ (*uninstall_multiple_protocol_interfaces) (grub_efi_handle_t handle, ...); ++ ++ grub_efi_status_t ++ (*calculate_crc32) (void *data, ++ grub_efi_uintn_t data_size, ++ grub_efi_uint32_t * crc32); ++ ++ void (*copy_mem) (void *destination, void *source, grub_efi_uintn_t length); ++ ++ void ++ (*set_mem) (void *buffer, grub_efi_uintn_t size, grub_efi_uint8_t value); ++}; ++typedef struct grub_efi_boot_services grub_efi_boot_services_t; ++ ++struct grub_efi_runtime_services ++{ ++ grub_efi_table_header_t hdr; ++ ++ grub_efi_status_t ++ (*get_time) (grub_efi_time_t * time, ++ grub_efi_time_capabilities_t * capabilities); ++ ++ grub_efi_status_t (*set_time) (grub_efi_time_t * time); ++ ++ grub_efi_status_t ++ (*get_wakeup_time) (grub_efi_boolean_t * enabled, ++ grub_efi_boolean_t * pending, grub_efi_time_t * time); ++ ++ grub_efi_status_t ++ (*set_wakeup_time) (grub_efi_boolean_t enabled, grub_efi_time_t * time); ++ ++ grub_efi_status_t ++ (*set_virtual_address_map) (grub_efi_uintn_t memory_map_size, ++ grub_efi_uintn_t descriptor_size, ++ grub_efi_uint32_t descriptor_version, ++ grub_efi_memory_descriptor_t * virtual_map); ++ ++ grub_efi_status_t ++ (*convert_pointer) (grub_efi_uintn_t debug_disposition, void **address); ++ ++ grub_efi_status_t ++ (*get_variable) (grub_efi_char16_t * variable_name, ++ grub_efi_guid_t * vendor_guid, ++ grub_efi_uint32_t * attributes, ++ grub_efi_uintn_t * data_size, void *data); ++ ++ grub_efi_status_t ++ (*get_next_variable_name) (grub_efi_uintn_t * variable_name_size, ++ grub_efi_char16_t * variable_name, ++ grub_efi_guid_t * vendor_guid); ++ ++ grub_efi_status_t ++ (*set_variable) (grub_efi_char16_t * variable_name, ++ grub_efi_guid_t * vendor_guid, ++ grub_efi_uint32_t attributes, ++ grub_efi_uintn_t data_size, void *data); ++ ++ grub_efi_status_t ++ (*get_next_high_monotonic_count) (grub_efi_uint32_t * high_count); ++ ++ void ++ (*reset_system) (grub_efi_reset_type_t reset_type, ++ grub_efi_status_t reset_status, ++ grub_efi_uintn_t data_size, ++ grub_efi_char16_t * reset_data); ++}; ++typedef struct grub_efi_runtime_services grub_efi_runtime_services_t; ++ ++struct grub_efi_configuration_table ++{ ++ grub_efi_guid_t vendor_guid; ++ void *vendor_table; ++}; ++typedef struct grub_efi_configuration_table grub_efi_configuration_table_t; ++ ++struct grub_efi_simple_input_interface ++{ ++ grub_efi_status_t ++ (*reset) (struct grub_efi_simple_input_interface * this, ++ grub_efi_boolean_t extended_verification); ++ ++ grub_efi_status_t ++ (*read_key_stroke) (struct grub_efi_simple_input_interface * this, ++ grub_efi_input_key_t * key); ++ ++ grub_efi_event_t wait_for_key; ++}; ++typedef struct grub_efi_simple_input_interface ++ grub_efi_simple_input_interface_t; ++ ++struct grub_efi_simple_text_output_interface ++{ ++ grub_efi_status_t ++ (*reset) (struct grub_efi_simple_text_output_interface * this, ++ grub_efi_boolean_t extended_verification); ++ ++ grub_efi_status_t ++ (*output_string) (struct grub_efi_simple_text_output_interface * this, ++ grub_efi_char16_t * string); ++ ++ grub_efi_status_t ++ (*test_string) (struct grub_efi_simple_text_output_interface * this, ++ grub_efi_char16_t * string); ++ ++ grub_efi_status_t ++ (*query_mode) (struct grub_efi_simple_text_output_interface * this, ++ grub_efi_uintn_t mode_number, ++ grub_efi_uintn_t * columns, grub_efi_uintn_t * rows); ++ ++ grub_efi_status_t ++ (*set_mode) (struct grub_efi_simple_text_output_interface * this, ++ grub_efi_uintn_t mode_number); ++ ++ grub_efi_status_t ++ (*set_attributes) (struct grub_efi_simple_text_output_interface * this, ++ grub_efi_uintn_t attribute); ++ ++ grub_efi_status_t ++ (*clear_screen) (struct grub_efi_simple_text_output_interface * this); ++ ++ grub_efi_status_t ++ (*set_cursor_position) (struct grub_efi_simple_text_output_interface * ++ this, grub_efi_uintn_t column, ++ grub_efi_uintn_t row); ++ ++ grub_efi_status_t ++ (*enable_cursor) (struct grub_efi_simple_text_output_interface * this, ++ grub_efi_boolean_t visible); ++ ++ grub_efi_simple_text_output_mode_t *mode; ++}; ++typedef struct grub_efi_simple_text_output_interface ++ grub_efi_simple_text_output_interface_t; ++ ++#define GRUB_EFI_BLACK 0x00 ++#define GRUB_EFI_BLUE 0x01 ++#define GRUB_EFI_GREEN 0x02 ++#define GRUB_EFI_CYAN 0x03 ++#define GRUB_EFI_RED 0x04 ++#define GRUB_EFI_MAGENTA 0x05 ++#define GRUB_EFI_BROWN 0x06 ++#define GRUB_EFI_LIGHTGRAY 0x07 ++#define GRUB_EFI_BRIGHT 0x08 ++#define GRUB_EFI_DARKGRAY 0x08 ++#define GRUB_EFI_LIGHTBLUE 0x09 ++#define GRUB_EFI_LIGHTGREEN 0x0A ++#define GRUB_EFI_LIGHTCYAN 0x0B ++#define GRUB_EFI_LIGHTRED 0x0C ++#define GRUB_EFI_LIGHTMAGENTA 0x0D ++#define GRUB_EFI_YELLOW 0x0E ++#define GRUB_EFI_WHITE 0x0F ++ ++#define GRUB_EFI_BACKGROUND_BLACK 0x00 ++#define GRUB_EFI_BACKGROUND_BLUE 0x10 ++#define GRUB_EFI_BACKGROUND_GREEN 0x20 ++#define GRUB_EFI_BACKGROUND_CYAN 0x30 ++#define GRUB_EFI_BACKGROUND_RED 0x40 ++#define GRUB_EFI_BACKGROUND_MAGENTA 0x50 ++#define GRUB_EFI_BACKGROUND_BROWN 0x60 ++#define GRUB_EFI_BACKGROUND_LIGHTGRAY 0x70 ++ ++#define GRUB_EFI_TEXT_ATTR(fg, bg) ((fg) | ((bg))) ++ ++struct grub_efi_system_table ++{ ++ grub_efi_table_header_t hdr; ++ grub_efi_char16_t *firmware_vendor; ++ grub_efi_uint32_t firmware_revision; ++ grub_efi_handle_t console_in_handler; ++ grub_efi_simple_input_interface_t *con_in; ++ grub_efi_handle_t console_out_handler; ++ grub_efi_simple_text_output_interface_t *con_out; ++ grub_efi_handle_t standard_error_handle; ++ grub_efi_simple_text_output_interface_t *std_err; ++ grub_efi_runtime_services_t *runtime_services; ++ grub_efi_boot_services_t *boot_services; ++ grub_efi_uintn_t num_table_entries; ++ grub_efi_configuration_table_t *configuration_table; ++}; ++typedef struct grub_efi_system_table grub_efi_system_table_t; ++ ++struct grub_efi_loaded_image ++{ ++ grub_efi_uint32_t revision; ++ grub_efi_handle_t parent_handle; ++ grub_efi_system_table_t *system_table; ++ ++ grub_efi_handle_t device_handle; ++ grub_efi_device_path_t *file_path; ++ void *reserved; ++ ++ grub_efi_uint32_t load_options_size; ++ void *load_options; ++ ++ void *image_base; ++ grub_efi_uint64_t image_size; ++ grub_efi_memory_type_t image_code_type; ++ grub_efi_memory_type_t image_data_type; ++ ++ grub_efi_status_t (*unload) (grub_efi_handle_t image_handle); ++}; ++typedef struct grub_efi_loaded_image grub_efi_loaded_image_t; ++ ++struct grub_efi_disk_io ++{ ++ grub_efi_uint64_t revision; ++ grub_efi_status_t (*read) (struct grub_efi_disk_io * this, ++ grub_efi_uint32_t media_id, ++ grub_efi_uint64_t offset, ++ grub_efi_uintn_t buffer_size, void *buffer); ++ grub_efi_status_t (*write) (struct grub_efi_disk_io * this, ++ grub_efi_uint32_t media_id, ++ grub_efi_uint64_t offset, ++ grub_efi_uintn_t buffer_size, void *buffer); ++}; ++typedef struct grub_efi_disk_io grub_efi_disk_io_t; ++ ++struct grub_efi_block_io_media ++{ ++ grub_efi_uint32_t media_id; ++ grub_efi_boolean_t removable_media; ++ grub_efi_boolean_t media_present; ++ grub_efi_boolean_t logical_partition; ++ grub_efi_boolean_t read_only; ++ grub_efi_boolean_t write_caching; ++ grub_efi_uint8_t pad[3]; ++ grub_efi_uint32_t block_size; ++ grub_efi_uint32_t io_align; ++ grub_efi_uint8_t pad2[4]; ++ grub_efi_lba_t last_block; ++}; ++typedef struct grub_efi_block_io_media grub_efi_block_io_media_t; ++ ++struct grub_efi_block_io ++{ ++ grub_efi_uint64_t revision; ++ grub_efi_block_io_media_t *media; ++ grub_efi_status_t (*reset) (struct grub_efi_block_io * this, ++ grub_efi_boolean_t extended_verification); ++ grub_efi_status_t (*read_blocks) (struct grub_efi_block_io * this, ++ grub_efi_uint32_t media_id, ++ grub_efi_lba_t lba, ++ grub_efi_uintn_t buffer_size, ++ void *buffer); ++ grub_efi_status_t (*write_blocks) (struct grub_efi_block_io * this, ++ grub_efi_uint32_t media_id, ++ grub_efi_lba_t lba, ++ grub_efi_uintn_t buffer_size, ++ void *buffer); ++ grub_efi_status_t (*flush_blocks) (struct grub_efi_block_io * this); ++}; ++typedef struct grub_efi_block_io grub_efi_block_io_t; ++ ++struct grub_efi_pixel_bitmask ++{ ++ grub_efi_uint32_t red_mask; ++ grub_efi_uint32_t green_mask; ++ grub_efi_uint32_t blue_mask; ++ grub_efi_uint32_t reserved_mask; ++}; ++typedef struct grub_efi_pixel_bitmask grub_efi_pixel_bitmask_t; ++ ++enum grub_efi_graphics_pixel_format ++{ ++ GRUB_EFI_PIXEL_RGBR_8BIT_PER_COLOR, ++ GRUB_EFI_PIXEL_BGRR_8BIT_PER_COLOR, ++ GRUB_EFI_PIXEL_BIT_MASK, ++ GRUB_EFI_PIXEL_BLT_ONLY, ++}; ++typedef enum grub_efi_graphics_pixel_format grub_efi_graphics_pixel_format_t; ++ ++struct grub_efi_graphics_output_mode_information ++{ ++ grub_efi_uint32_t version; ++ grub_efi_uint32_t horizontal_resolution; ++ grub_efi_uint32_t vertical_resolution; ++ grub_efi_graphics_pixel_format_t pixel_format; ++ grub_efi_pixel_bitmask_t pixel_information; ++ grub_efi_uint32_t pixels_per_scan_line; ++}; ++typedef struct grub_efi_graphics_output_mode_information ++ grub_efi_graphics_output_mode_information_t; ++ ++struct grub_efi_graphics_output_bgrr_pixel ++{ ++ grub_efi_uint8_t blue; ++ grub_efi_uint8_t green; ++ grub_efi_uint8_t red; ++ grub_efi_uint8_t reserved; ++}; ++typedef struct grub_efi_graphics_output_bgrr_pixel ++ grub_efi_graphics_output_bgrr_pixel_t; ++typedef struct grub_efi_graphics_output_bgrr_pixel ++ grub_efi_graphics_output_blt_pixel_t; ++typedef struct grub_efi_graphics_output_bgrr_pixel ++ grub_efi_uga_pixel_t; ++ ++struct grub_efi_graphics_output_rgbr_pixel ++{ ++ grub_efi_uint8_t red; ++ grub_efi_uint8_t green; ++ grub_efi_uint8_t blue; ++ grub_efi_uint8_t reserved; ++}; ++typedef struct grub_efi_graphics_output_rgbr_pixel ++ grub_efi_graphics_output_rgbr_pixel_t; ++ ++union grub_efi_graphics_output_pixel ++{ ++ grub_efi_graphics_output_rgbr_pixel_t rgbr; ++ grub_efi_graphics_output_bgrr_pixel_t bgrr; ++ grub_efi_uint32_t raw; ++}; ++typedef union grub_efi_graphics_output_pixel ++ grub_efi_graphics_output_pixel_t; ++ ++enum grub_efi_graphics_output_blt_operation ++{ ++ GRUB_EFI_BLT_VIDEO_FILL, ++ GRUB_EFI_BLT_VIDEO_TO_BLT_BUFFER, ++ GRUB_EFI_BLT_BUFFER_TO_VIDEO, ++ GRUB_EFI_BLT_VIDEO_TO_VIDEO, ++}; ++typedef enum grub_efi_graphics_output_blt_operation ++ grub_efi_graphics_output_blt_operation_t; ++ ++struct grub_efi_graphics_output_mode ++{ ++ grub_efi_uint32_t max_mode; ++ grub_efi_uint32_t mode; ++ grub_efi_graphics_output_mode_information_t *info; ++ grub_efi_uintn_t size_of_info; ++ grub_efi_physical_address_t frame_buffer_base; ++ grub_efi_uintn_t frame_buffer_size; ++}; ++typedef struct grub_efi_graphics_output_mode grub_efi_graphics_output_mode_t; ++ ++struct grub_efi_graphics_output ++{ ++ grub_efi_status_t (*query_mode) (struct grub_efi_graphics_output * this, ++ grub_efi_uint32_t mode_number, ++ grub_efi_uintn_t * size_of_info, ++ grub_efi_graphics_output_mode_information_t ++ ** info); ++ grub_efi_status_t (*set_mode) (struct grub_efi_graphics_output * this, ++ grub_efi_uint32_t mode_number); ++ ++ grub_efi_status_t (*blt) (struct grub_efi_graphics_output * this, ++ grub_efi_graphics_output_blt_pixel_t * blt_buffer, ++ grub_efi_graphics_output_blt_operation_t ++ blt_operation, grub_efi_uintn_t src_x, ++ grub_efi_uintn_t src_y, grub_efi_uintn_t dest_x, ++ grub_efi_uintn_t dest_y, grub_efi_uintn_t width, ++ grub_efi_uintn_t height, grub_efi_uintn_t delta); ++ grub_efi_graphics_output_mode_t *mode; ++}; ++typedef struct grub_efi_graphics_output grub_efi_graphics_output_t; ++ ++typedef enum { ++ EfiUgaVideoFill, ++ EfiUgaVideoToBltBuffer, ++ EfiUgaBltBufferToVideo, ++ EfiUgaVideoToVideo, ++ EfiUgaBltMax ++} grub_efi_uga_blt_operation_t; ++ ++typedef enum { ++ grub_efi_pci_io_width_uint8, ++ grub_efi_pci_io_width_uint16, ++ grub_efi_pci_io_width_uint32, ++ grub_efi_pci_io_width_uint64, ++ grub_efi_pci_io_width_fifo_uint8, ++ grub_efi_pci_io_width_fifo_uint16, ++ grub_efi_pci_io_width_fifo_uint32, ++ grub_efi_pci_io_width_fifo_uint64, ++ grub_efi_pci_io_width_fill_uint8, ++ grub_efi_pci_io_width_fill_uint16, ++ grub_efi_pci_io_width_fill_uint32, ++ grub_efi_pci_io_width_fill_uint64, ++ grub_efi_pci_io_width_maximum ++} grub_efi_pci_io_width; ++ ++struct grub_efi_pci_io; ++ ++typedef struct ++{ ++ grub_efi_status_t(*read) (struct grub_efi_pci_io *this, ++ grub_efi_pci_io_width width, ++ grub_efi_uint8_t bar_index, ++ grub_efi_uint64_t offset, ++ grub_efi_uintn_t count, ++ void *buffer); ++ grub_efi_status_t(*write) (struct grub_efi_pci_io *this, ++ grub_efi_pci_io_width width, ++ grub_efi_uint8_t bar_index, ++ grub_efi_uint64_t offset, ++ grub_efi_uintn_t count, ++ void *buffer); ++} grub_efi_pci_io_access_t; ++ ++typedef struct ++{ ++ grub_efi_status_t( *read) (struct grub_efi_pci_io *this, ++ grub_efi_pci_io_width width, ++ grub_efi_uint32_t offset, ++ grub_efi_uintn_t count, ++ void *buffer); ++ grub_efi_status_t( *write) (struct grub_efi_pci_io *this, ++ grub_efi_pci_io_width width, ++ grub_efi_uint32_t offset, ++ grub_efi_uintn_t count, ++ void *buffer); ++} grub_efi_pci_io_config_access_t; ++ ++typedef enum { ++ grub_efi_pci_io_operation_bus_masterread, ++ grub_efi_pci_io_operation_bus_masterwrite, ++ grub_efi_pci_io_operation_bus_master_common_buffer, ++ grub_efi_pci_io_operation_maximum ++} grub_efi_pci_io_operation_t; ++ ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_ISA_IO 0x0002 ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_VGA_PALETTE_IO 0x0004 ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_VGA_MEMORY 0x0008 ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_VGA_IO 0x0010 ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_IDE_PRIMARY_IO 0x0020 ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_IDE_SECONDARY_IO 0x0040 ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_MEMORY_WRITE_COMBINE 0x0080 ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_IO 0x0100 ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_MEMORY 0x0200 ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_BUS_MASTER 0x0400 ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_MEMORY_CACHED 0x0800 ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_MEMORY_DISABLE 0x1000 ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_EMBEDDED_DEVICE 0x2000 ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_EMBEDDED_ROM 0x4000 ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_DUAL_ADDRESS_CYCLE 0x8000 ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_ISA_IO_16 0x10000 ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_VGA_PALETTE_IO_16 0x20000 ++#define GRUB_EFI_PCI_IO_ATTRIBUTE_VGA_IO_16 0x40000 ++ ++typedef enum { ++ grub_efi_pci_io_attribute_operation_get, ++ grub_efi_pci_io_attribute_operation_set, ++ grub_efi_pci_io_attribute_operation_enable, ++ grub_efi_pci_io_attribute_operation_disable, ++ grub_efi_pci_io_attribute_operation_supported, ++ grub_efi_pci_io_attribute_operation_maximum ++} grub_efi_pci_io_attribute_operation_t; ++ ++struct grub_efi_pci_io { ++ grub_efi_status_t (*poll_mem) (struct grub_efi_pci_io *this, ++ grub_efi_pci_io_width width, ++ grub_efi_uint8_t bar_ndex, ++ grub_efi_uint64_t offset, ++ grub_efi_uint64_t mask, ++ grub_efi_uint64_t value, ++ grub_efi_uint64_t delay, ++ grub_efi_uint64_t *result); ++ grub_efi_status_t (*poll_io) (struct grub_efi_pci_io *this, ++ grub_efi_pci_io_width Width, ++ grub_efi_uint8_t bar_index, ++ grub_efi_uint64_t offset, ++ grub_efi_uint64_t mask, ++ grub_efi_uint64_t value, ++ grub_efi_uint64_t delay, ++ grub_efi_uint64_t *result); ++ grub_efi_pci_io_access_t mem; ++ grub_efi_pci_io_access_t io; ++ grub_efi_pci_io_config_access_t pci; ++ grub_efi_status_t (*copy_mem) (struct grub_efi_pci_io *this, ++ grub_efi_pci_io_width width, ++ grub_efi_uint8_t dest_bar_index, ++ grub_efi_uint64_t dest_offset, ++ grub_efi_uint8_t src_bar_index, ++ grub_efi_uint64_t src_offset, ++ grub_efi_uintn_t count); ++ grub_efi_status_t (*map) ( struct grub_efi_pci_io *this, ++ grub_efi_pci_io_operation_t operation, ++ void *host_address, ++ grub_efi_uintn_t *number_of_bytes, ++ grub_efi_uint64_t *device_address, ++ void **mapping); ++ grub_efi_status_t (*unmap) (struct grub_efi_pci_io *this, ++ void *mapping); ++ grub_efi_status_t (*allocate_buffer) (struct grub_efi_pci_io *this, ++ grub_efi_allocate_type_t type, ++ grub_efi_memory_type_t memory_type, ++ grub_efi_uintn_t pages, ++ void **host_address, ++ grub_efi_uint64_t attributes); ++ grub_efi_status_t (*free_buffer) (struct grub_efi_pci_io *this, ++ grub_efi_allocate_type_t type, ++ grub_efi_memory_type_t memory_type, ++ grub_efi_uintn_t pages, ++ void **host_address, ++ grub_efi_uint64_t attributes); ++ grub_efi_status_t (*flush) (struct grub_efi_pci_io *this); ++ grub_efi_status_t (*get_location) (struct grub_efi_pci_io *this, ++ grub_efi_uintn_t *segment_number, ++ grub_efi_uintn_t *bus_number, ++ grub_efi_uintn_t *device_number, ++ grub_efi_uintn_t *function_number); ++ grub_efi_status_t (*attributes) (struct grub_efi_pci_io *this, ++ grub_efi_pci_io_attribute_operation_t operation, ++ grub_efi_uint64_t attributes, ++ grub_efi_uint64_t *result); ++ grub_efi_status_t (*get_bar_attributes) (struct grub_efi_pci_io *this, ++ grub_efi_uint8_t bar_index, ++ grub_efi_uint64_t *supports, ++ void **resources); ++ grub_efi_status_t (*set_bar_attributes) (struct grub_efi_pci_io *this, ++ grub_efi_uint64_t attributes, ++ grub_efi_uint8_t bar_index, ++ grub_efi_uint64_t *offset, ++ grub_efi_uint64_t *length); ++ grub_efi_uint64_t rom_size; ++ void *rom_image; ++}; ++typedef struct grub_efi_pci_io grub_efi_pci_io_t; ++ ++struct grub_efi_pci_root_io; ++ ++typedef struct ++{ ++ grub_efi_status_t(*read) (struct grub_efi_pci_root_io *this, ++ grub_efi_pci_io_width width, ++ grub_efi_uint64_t address, ++ grub_efi_uintn_t count, ++ void *buffer); ++ grub_efi_status_t(*write) (struct grub_efi_pci_root_io *this, ++ grub_efi_pci_io_width width, ++ grub_efi_uint64_t address, ++ grub_efi_uintn_t count, ++ void *buffer); ++} grub_efi_pci_root_io_access_t; ++ ++typedef enum { ++ grub_efi_pci_root_io_operation_bus_master_read, ++ grub_efi_pci_root_io_operation_bus_master_write, ++ grub_efi_pci_root_io_operation_bus_master_common_buffer, ++ grub_efi_pci_root_io_operation_bus_master_read_64, ++ grub_efi_pci_root_io_operation_bus_master_write_64, ++ grub_efi_pci_root_io_operation_bus_master_common_buffer_64, ++ grub_efi_pci_root_io_operation_maximum ++} grub_efi_pci_root_io_operation_t; ++ ++struct grub_efi_pci_root_io { ++ grub_efi_handle_t parent; ++ grub_efi_status_t (*poll_mem) (struct grub_efi_pci_root_io *this, ++ grub_efi_pci_io_width width, ++ grub_efi_uint64_t address, ++ grub_efi_uint64_t mask, ++ grub_efi_uint64_t value, ++ grub_efi_uint64_t delay, ++ grub_efi_uint64_t *result); ++ grub_efi_status_t (*poll_io) (struct grub_efi_pci_root_io *this, ++ grub_efi_pci_io_width Width, ++ grub_efi_uint64_t address, ++ grub_efi_uint64_t mask, ++ grub_efi_uint64_t value, ++ grub_efi_uint64_t delay, ++ grub_efi_uint64_t *result); ++ grub_efi_pci_root_io_access_t mem; ++ grub_efi_pci_root_io_access_t io; ++ grub_efi_pci_root_io_access_t pci; ++ grub_efi_status_t (*copy_mem) (struct grub_efi_pci_root_io *this, ++ grub_efi_pci_io_width width, ++ grub_efi_uint64_t dest_offset, ++ grub_efi_uint64_t src_offset, ++ grub_efi_uintn_t count); ++ grub_efi_status_t (*map) ( struct grub_efi_pci_root_io *this, ++ grub_efi_pci_root_io_operation_t operation, ++ void *host_address, ++ grub_efi_uintn_t *number_of_bytes, ++ grub_efi_uint64_t *device_address, ++ void **mapping); ++ grub_efi_status_t (*unmap) (struct grub_efi_pci_root_io *this, ++ void *mapping); ++ grub_efi_status_t (*allocate_buffer) (struct grub_efi_pci_root_io *this, ++ grub_efi_allocate_type_t type, ++ grub_efi_memory_type_t memory_type, ++ grub_efi_uintn_t pages, ++ void **host_address, ++ grub_efi_uint64_t attributes); ++ grub_efi_status_t (*free_buffer) (struct grub_efi_pci_root_io *this, ++ grub_efi_uintn_t pages, ++ void **host_address); ++ grub_efi_status_t (*flush) (struct grub_efi_pci_root_io *this); ++ grub_efi_status_t (*get_attributes) (struct grub_efi_pci_root_io *this, ++ grub_efi_uint64_t *supports, ++ void **resources); ++ grub_efi_status_t (*set_attributes) (struct grub_efi_pci_root_io *this, ++ grub_efi_uint64_t attributes, ++ grub_efi_uint64_t *offset, ++ grub_efi_uint64_t *length); ++ grub_efi_status_t (*configuration) (struct grub_efi_pci_root_io *this, ++ void **resources); ++}; ++ ++typedef struct grub_efi_pci_root_io grub_efi_pci_root_io_t; ++ ++struct grub_efi_uga_draw ++{ ++ grub_efi_status_t (*get_mode) (struct grub_efi_uga_draw * this, ++ grub_efi_uint32_t *horizontal_resolution, ++ grub_efi_uint32_t *vertical_resolution, ++ grub_efi_uint32_t *color_depth, ++ grub_efi_uint32_t *refresh_rate); ++ grub_efi_status_t (*set_mode) (struct grub_efi_uga_draw * this, ++ grub_efi_uint32_t horizontal_resolution, ++ grub_efi_uint32_t vertical_resolution, ++ grub_efi_uint32_t color_depth, ++ grub_efi_uint32_t refresh_rate); ++ grub_efi_status_t (*blt) (struct grub_efi_uga_draw * this, ++ grub_efi_uga_pixel_t *blt_buffer, ++ grub_efi_uga_blt_operation_t blt_operation, ++ grub_efi_uintn_t source_x, ++ grub_efi_uintn_t source_y, ++ grub_efi_uintn_t destination_x, ++ grub_efi_uintn_t destination_y, ++ grub_efi_uintn_t width, ++ grub_efi_uintn_t height, ++ grub_efi_uintn_t delta); ++}; ++typedef struct grub_efi_uga_draw grub_efi_uga_draw_t; ++ ++typedef grub_uint32_t grub_uga_status_t; ++ ++typedef enum { ++ UgaDtParentBus = 1, ++ UgaDtGraphicsController, ++ UgaDtOutputController, ++ UgaDtOutputPort, ++ UgaDtOther ++} grub_uga_device_type_t; ++ ++typedef grub_efi_uint32_t grub_uga_device_id_t; ++ ++struct grub_uga_device_data { ++ grub_uga_device_type_t device_type; ++ grub_uga_device_id_t device_id; ++ grub_efi_uint32_t device_context_size; ++ grub_efi_uint32_t shared_context_size; ++}; ++typedef struct grub_uga_device_data grub_uga_device_data_t; ++ ++struct grub_uga_device { ++ void *device_context; ++ void *shared_context; ++ void *runtime_context; ++ struct grub_uga_device *parent_device; ++ void *bus_io_services; ++ void *stdio_services; ++ grub_uga_device_data_t device_data; ++}; ++typedef struct grub_uga_device grub_uga_device_t; ++ ++typedef enum { ++ UgaIoGetVersion = 1, ++ UgaIoGetChildDevice, ++ UgaIoStartDevice, ++ UgaIoStopDevice, ++ UgaIoFlushDevice, ++ UgaIoResetDevice, ++ UgaIoGetDeviceState, ++ UgaIoSetDeviceState, ++ UgaIoSetPowerState, ++ UgaIoGetMemoryConfiguration, ++ UgaIoSetVideoMode, ++ UgaIoCopyRectangle, ++ UgaIoGetEdidSegment, ++ UgaIoDeviceChannelOpen, ++ UgaIoDeviceChannelClose, ++ UgaIoDeviceChannelRead, ++ UgaIoDeviceChannelWrite, ++ UgaIoGetPersistentDataSize, ++ UgaIoGetPersistentData, ++ UgaIoSetPersistentData, ++ UgaIoGetDevicePropertySize, ++ UgaIoGetDeviceProperty, ++ UgaIoBtPrivateInterface ++} grub_uga_io_request_code_t; ++ ++struct grub_uga_io_request { ++ grub_uga_io_request_code_t io_request_code; ++ void *in_buffer; ++ grub_efi_uint64_t in_buffer_size; ++ grub_efi_uint64_t bytes_returned; ++}; ++typedef struct grub_uga_io_request grub_uga_io_request_t; ++ ++struct grub_efi_uga_io ++{ ++ grub_efi_status_t (*create_device) (struct grub_efi_uga_io * this, ++ grub_uga_device_t *parent_device, ++ grub_uga_device_data_t *device_data, ++ void *runtime_context, ++ grub_uga_device_t **device); ++ grub_efi_status_t (*delete_device) (struct grub_efi_uga_io * this, ++ grub_uga_device_t *device); ++ grub_uga_status_t (*dispatch_service) (grub_uga_device_t *device, ++ grub_uga_io_request_t *io_request); ++}; ++typedef struct grub_efi_uga_io grub_efi_uga_io_t; ++ ++/* XXX PJFIX add uga driver handoff stuff */ ++ ++// File Open Modes ++#define GRUB_EFI_FILE_MODE_READ 0x0000000000000001ULL ++#define GRUB_EFI_FILE_MODE_WRITE 0x0000000000000002ULL ++#define GRUB_EFI_FILE_MODE_CREATE 0x8000000000000000ULL ++ ++// File Attributes ++#define GRUB_EFI_FILE_READ_ONLY 0x0000000000000001ULL ++#define GRUB_EFI_FILE_HIDDEN 0x0000000000000002ULL ++#define GRUB_EFI_FILE_SYSTEM 0x0000000000000004ULL ++#define GRUB_EFI_FILE_RESERVED 0x0000000000000008ULL ++#define GRUB_EFI_FILE_DIRECTORY 0x0000000000000010ULL ++#define GRUB_EFI_FILE_ARCHIVE 0x0000000000000020ULL ++#define GRUB_EFI_FILE_VALID_ATTR 0x0000000000000037ULL ++ ++struct grub_efi_file ++{ ++ grub_efi_uint64_t revision; ++ grub_efi_status_t (*open) (struct grub_efi_file * this, ++ struct grub_efi_file ** new_handle, ++ grub_efi_char16_t * file_name, ++ grub_efi_uint64_t open_mode, ++ grub_efi_uint64_t attributes); ++ grub_efi_status_t (*close) (struct grub_efi_file * this); ++ grub_efi_status_t (*delete) (struct grub_efi_file * this); ++ grub_efi_status_t (*read) (struct grub_efi_file * this, ++ grub_efi_uintn_t * buffer_size, ++ void * buffer); ++ grub_efi_status_t (*write) (struct grub_efi_file * this, ++ grub_efi_uintn_t * buffer_size, ++ void * buffer); ++ grub_efi_status_t (*get_position) (struct grub_efi_file * this, ++ grub_efi_uint64_t * position); ++ grub_efi_status_t (*set_position) (struct grub_efi_file * this, ++ grub_efi_uint64_t position); ++ grub_efi_status_t (*get_info) (struct grub_efi_file * this, ++ grub_efi_guid_t * information_type, ++ grub_efi_uintn_t * buffer_size, ++ void * buffer); ++ grub_efi_status_t (*set_info) (struct grub_efi_file * this, ++ grub_efi_guid_t * information_type, ++ grub_efi_uintn_t buffer_size, ++ void * buffer); ++ grub_efi_status_t (*flush) (struct grub_efi_file * this); ++}; ++typedef struct grub_efi_file grub_efi_file_t; ++ ++struct grub_efi_simple_file_system ++{ ++ grub_efi_uint64_t revision; ++ grub_efi_status_t (*open_volume) (struct grub_efi_simple_file_system * this, ++ grub_efi_file_t ** root); ++}; ++typedef struct grub_efi_simple_file_system grub_efi_simple_file_system_t; ++ ++struct grub_efi_serial_io_mode ++{ ++ grub_efi_uint32_t control_mask; ++ grub_efi_uint32_t timeout; ++ grub_efi_uint64_t baud_rate; ++ grub_efi_uint32_t receive_fifo_depth; ++ grub_efi_uint32_t data_bits; ++ grub_efi_uint32_t parity; ++ grub_efi_uint32_t stop_bits; ++}; ++typedef struct grub_efi_serial_io_mode grub_efi_serial_io_mode_t; ++ ++enum grub_efi_parity ++{ ++ GRUB_EFI_DEFAULT_PARITY, ++ GRUB_EFI_NO_PARITY, ++ GRUB_EFI_EVEN_PARITY, ++ GRUB_EFI_ODD_PARITY, ++ GRUB_EFI_MARK_PARITY, ++ GRUB_EFI_SPACE_PARITY ++}; ++typedef enum grub_efi_parity grub_efi_parity_t; ++ ++enum grub_efi_stop_bits ++{ ++ GRUB_EFI_DEFAULT_STOP_BITS, ++ GRUB_EFI_ONE_STOP_BIT, ++ GRUB_EFI_ONE_FIVE_STOP_BITS, ++ GRUB_EFI_TWO_STOP_BITS ++}; ++typedef enum grub_efi_stop_bits grub_efi_stop_bits_t; ++ ++#define GRUB_EFI_SERIAL_CLEAR_TO_SEND 0x0010 ++#define GRUB_EFI_SERIAL_DATA_SET_READY 0x0020 ++#define GRUB_EFI_SERIAL_RING_INDICATE 0x0040 ++#define GRUB_EFI_SERIAL_CARRIER_DETECT 0x0080 ++#define GRUB_EFI_SERIAL_REQUEST_TO_SEND 0x0002 ++#define GRUB_EFI_SERIAL_DATA_TERMINAL_READY 0x0001 ++#define GRUB_EFI_SERIAL_INPUT_BUFFER_EMPTY 0x0100 ++#define GRUB_EFI_SERIAL_OUTPUT_BUFFER_EMPTY 0x0200 ++#define GRUB_EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE 0x1000 ++#define GRUB_EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE 0x2000 ++#define GRUB_EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE 0x4000 ++ ++struct grub_efi_serial_io ++{ ++ grub_efi_uint32_t revision; ++ grub_efi_status_t (*reset) (struct grub_efi_serial_io * this); ++ grub_efi_status_t (*set_attributes) (struct grub_efi_serial_io * this, ++ grub_efi_uint64_t baud_rate, ++ grub_efi_uint32_t receive_fifo_depth, ++ grub_efi_uint32_t timeout, ++ grub_efi_parity_t parity, ++ grub_efi_uint8_t data_bits, ++ grub_efi_stop_bits_t stop_bits); ++ grub_efi_status_t (*set_control_bits) (struct grub_efi_serial_io * this, ++ grub_efi_uint32_t control); ++ grub_efi_status_t (*get_control_bits) (struct grub_efi_serial_io * this, ++ grub_efi_uint32_t * control); ++ grub_efi_status_t (*write) (struct grub_efi_serial_io * this, ++ grub_efi_uintn_t * buffer_size, ++ void * buffer); ++ grub_efi_status_t (*read) (struct grub_efi_serial_io * this, ++ grub_efi_uintn_t * buffer_size, ++ void * buffer); ++ grub_efi_serial_io_mode_t *mode; ++}; ++typedef struct grub_efi_serial_io grub_efi_serial_io_t; ++ ++#endif /* ! GRUB_EFI_API_HEADER */ +diff --git a/efi/grub/efi/console_control.h b/efi/grub/efi/console_control.h +new file mode 100644 +index 0000000..ffc4305 +--- /dev/null ++++ b/efi/grub/efi/console_control.h +@@ -0,0 +1,59 @@ ++/* console_control.h - definitions of the console control protocol */ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2006 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++/* The console control protocol is not a part of the EFI spec, ++ but defined in Intel's Sample Implementation. */ ++ ++#ifndef GRUB_EFI_CONSOLE_CONTROL_HEADER ++#define GRUB_EFI_CONSOLE_CONTROL_HEADER 1 ++ ++#define GRUB_EFI_CONSOLE_CONTROL_GUID \ ++ { 0xf42f7782, 0x12e, 0x4c12, \ ++ { 0x99, 0x56, 0x49, 0xf9, 0x43, 0x4, 0xf7, 0x21 } \ ++ } ++ ++enum grub_efi_screen_mode ++{ ++ GRUB_EFI_SCREEN_TEXT, ++ GRUB_EFI_SCREEN_GRAPHICS, ++ GRUB_EFI_SCREEN_TEXT_MAX_VALUE ++}; ++typedef enum grub_efi_screen_mode grub_efi_screen_mode_t; ++ ++struct grub_efi_console_control_protocol ++{ ++ grub_efi_status_t ++ (*get_mode) (struct grub_efi_console_control_protocol * this, ++ grub_efi_screen_mode_t * mode, ++ grub_efi_boolean_t * uga_exists, ++ grub_efi_boolean_t * std_in_locked); ++ ++ grub_efi_status_t ++ (*set_mode) (struct grub_efi_console_control_protocol * this, ++ grub_efi_screen_mode_t mode); ++ ++ grub_efi_status_t ++ (*lock_std_in) (struct grub_efi_console_control_protocol * this, ++ grub_efi_char16_t * password); ++}; ++typedef struct grub_efi_console_control_protocol ++ grub_efi_console_control_protocol_t; ++ ++#endif /* ! GRUB_EFI_CONSOLE_CONTROL_HEADER */ +diff --git a/efi/grub/efi/efi.h b/efi/grub/efi/efi.h +new file mode 100644 +index 0000000..301f9d9 +--- /dev/null ++++ b/efi/grub/efi/efi.h +@@ -0,0 +1,85 @@ ++/* efi.h - declare variables and functions for EFI support */ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2006 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifndef GRUB_EFI_EFI_HEADER ++#define GRUB_EFI_EFI_HEADER 1 ++ ++#include ++#include ++ ++/* Functions. */ ++grub_efi_status_t ++grub_efi_locate_device_path (grub_efi_guid_t *protocol, ++ grub_efi_device_path_t **dp, ++ grub_efi_handle_t *handle); ++grub_efi_status_t ++grub_efi_locate_handle_buffer (grub_efi_locate_search_type_t search_type, ++ grub_efi_guid_t *protocol, ++ void *search_key, ++ grub_efi_uintn_t *no_handles, ++ grub_efi_handle_t **buffer); ++void *grub_efi_locate_protocol (grub_efi_guid_t * protocol, ++ void *registration); ++grub_efi_handle_t *grub_efi_locate_handle (grub_efi_locate_search_type_t ++ search_type, ++ grub_efi_guid_t * protocol, ++ void *search_key, ++ grub_efi_uintn_t * num_handles); ++void *grub_efi_open_protocol (grub_efi_handle_t handle, ++ grub_efi_guid_t * protocol, ++ grub_efi_uint32_t attributes); ++int grub_efi_set_text_mode (int on); ++void grub_efi_stall (grub_efi_uintn_t microseconds); ++void *grub_efi_allocate_pool (grub_efi_uintn_t size); ++void grub_efi_free_pool (void *buffer); ++void *grub_efi_allocate_anypages (grub_efi_uintn_t pages); ++void *grub_efi_allocate_pages (grub_efi_physical_address_t address, ++ grub_efi_uintn_t pages); ++void *grub_efi_allocate_runtime_pages (grub_efi_physical_address_t address, ++ grub_efi_uintn_t pages); ++void ++grub_efi_free_pages (grub_efi_physical_address_t address, ++ grub_efi_uintn_t pages); ++int ++grub_efi_get_memory_map (grub_efi_uintn_t * map_key, ++ grub_efi_uintn_t * descriptor_size, ++ grub_efi_uint32_t * descriptor_version); ++grub_efi_loaded_image_t *grub_efi_get_loaded_image (grub_efi_handle_t ++ image_handle); ++void grub_efi_print_device_path (grub_efi_device_path_t * dp); ++char *grub_efi_get_filename (grub_efi_device_path_t * dp); ++grub_efi_device_path_t *grub_efi_get_device_path (grub_efi_handle_t handle); ++int grub_efi_exit_boot_services (grub_efi_uintn_t map_key); ++ ++void grub_efi_mm_init (void); ++void grub_efi_mm_fini (void); ++void grub_efi_init (void); ++void grub_efi_fini (void); ++void grub_efi_set_prefix (void); ++ ++/* Variables. */ ++extern void *mmap_buf; ++extern grub_efi_uintn_t mmap_size; ++extern grub_efi_uintn_t mmap_pages; ++ ++extern grub_efi_system_table_t *grub_efi_system_table; ++extern grub_efi_handle_t grub_efi_image_handle; ++ ++#endif /* ! GRUB_EFI_EFI_HEADER */ +diff --git a/efi/grub/efi/eficall.h b/efi/grub/efi/eficall.h +new file mode 100644 +index 0000000..2e79e04 +--- /dev/null ++++ b/efi/grub/efi/eficall.h +@@ -0,0 +1,162 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2006 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifndef _EFI_CALL_INCLUDE_ ++#define _EFI_CALL_INCLUDE_ 1 ++ ++#include ++ ++#ifndef __x86_64__ ++#ifdef EFI_FUNCTION_WRAPPER ++#undef EFI_FUNCTION_WRAPPER ++#endif ++#endif ++ ++#ifdef EFI_FUNCTION_WRAPPER ++typedef long EFI_STATUS; ++ ++EFI_STATUS x64_call0 (unsigned long func); ++EFI_STATUS x64_call1 (unsigned long func, unsigned long a); ++EFI_STATUS x64_call2 (unsigned long func, unsigned long a, unsigned long b); ++EFI_STATUS x64_call3 (unsigned long func, unsigned long a, ++ unsigned long b, unsigned long c); ++EFI_STATUS x64_call4 (unsigned long func, unsigned long a, ++ unsigned long b, unsigned long c, unsigned long d); ++EFI_STATUS x64_call5 (unsigned long func, unsigned long a, ++ unsigned long b, unsigned long c, ++ unsigned long d, unsigned long e); ++EFI_STATUS x64_call6 (unsigned long func, unsigned long a, ++ unsigned long b, unsigned long c, ++ unsigned long d, unsigned long e, unsigned long f); ++EFI_STATUS x64_call7 (unsigned long func, unsigned long a, ++ unsigned long b, unsigned long c, ++ unsigned long d, unsigned long e, ++ unsigned long f, unsigned long g); ++EFI_STATUS x64_call8 (unsigned long func, unsigned long a, ++ unsigned long b, unsigned long c, ++ unsigned long d, unsigned long e, ++ unsigned long f, unsigned long g, ++ unsigned long h); ++EFI_STATUS x64_call9 (unsigned long func, unsigned long a, ++ unsigned long b, unsigned long c, ++ unsigned long d, unsigned long e, ++ unsigned long f, unsigned long g, ++ unsigned long h, unsigned long i); ++EFI_STATUS x64_call10(unsigned long func, unsigned long a, ++ unsigned long b, unsigned long c, ++ unsigned long d, unsigned long e, ++ unsigned long f, unsigned long g, ++ unsigned long h, unsigned long i, ++ unsigned long j); ++ ++#define Call_Service(func) x64_call0((unsigned long)func) ++ ++#define Call_Service_1(func,a) x64_call1((unsigned long)func, \ ++ (unsigned long)a) ++ ++#define Call_Service_2(func,a,b) x64_call2((unsigned long)func, \ ++ (unsigned long)a, \ ++ (unsigned long)b) ++ ++#define Call_Service_3(func,a,b,c) x64_call3((unsigned long)func, \ ++ (unsigned long)a, \ ++ (unsigned long)b, \ ++ (unsigned long)c) ++ ++#define Call_Service_4(func,a,b,c,d) x64_call4((unsigned long)func, \ ++ (unsigned long)a, \ ++ (unsigned long)b, \ ++ (unsigned long)c, \ ++ (unsigned long)d) ++ ++#define Call_Service_5(func,a,b,c,d,e) x64_call5((unsigned long)func, \ ++ (unsigned long)a, \ ++ (unsigned long)b, \ ++ (unsigned long)c, \ ++ (unsigned long)d, \ ++ (unsigned long)e) ++ ++#define Call_Service_6(func,a,b,c,d,e,f) x64_call6((unsigned long)func, \ ++ (unsigned long)a, \ ++ (unsigned long)b, \ ++ (unsigned long)c, \ ++ (unsigned long)d, \ ++ (unsigned long)e, \ ++ (unsigned long)f) ++ ++#define Call_Service_7(func,a,b,c,d,e,f,g) x64_call7((unsigned long)func, \ ++ (unsigned long)a, \ ++ (unsigned long)b, \ ++ (unsigned long)c, \ ++ (unsigned long)d, \ ++ (unsigned long)e, \ ++ (unsigned long)f, \ ++ (unsigned long)g) ++ ++#define Call_Service_8(func,a,b,c,d,e,f,g,h) x64_call8((unsigned long)func, \ ++ (unsigned long)a, \ ++ (unsigned long)b, \ ++ (unsigned long)c, \ ++ (unsigned long)d, \ ++ (unsigned long)e, \ ++ (unsigned long)f, \ ++ (unsigned long)g, \ ++ (unsigned long)h) ++ ++#define Call_Service_9(func,a,b,c,d,e,f,g,h,i) x64_call9((unsigned long)func, \ ++ (unsigned long)a, \ ++ (unsigned long)b, \ ++ (unsigned long)c, \ ++ (unsigned long)d, \ ++ (unsigned long)e, \ ++ (unsigned long)f, \ ++ (unsigned long)g, \ ++ (unsigned long)h, \ ++ (unsigned long)i) ++ ++#define Call_Service_10(func,a,b,c,d,e,f,g,h,i,j) \ ++ x64_call10((unsigned long)func, \ ++ (unsigned long)a, \ ++ (unsigned long)b, \ ++ (unsigned long)c, \ ++ (unsigned long)d, \ ++ (unsigned long)e, \ ++ (unsigned long)f, \ ++ (unsigned long)g, \ ++ (unsigned long)h, \ ++ (unsigned long)i, \ ++ (unsigned long)j) ++ ++#else ++ ++typedef long EFI_STATUS; ++#define Call_Service(func) func() ++#define Call_Service_1(func,a) func(a) ++#define Call_Service_2(func,a,b) func(a,b) ++#define Call_Service_3(func,a,b,c) func(a,b,c) ++#define Call_Service_4(func,a,b,c,d) func(a,b,c,d) ++#define Call_Service_5(func,a,b,c,d,e) func(a,b,c,d,e) ++#define Call_Service_6(func,a,b,c,d,e,f) func(a,b,c,d,e,f) ++#define Call_Service_7(func,a,b,c,d,e,f,g) func(a,b,c,d,e,f,g) ++#define Call_Service_8(func,a,b,c,d,e,f,g,h) func(a,b,c,d,e,f,g,h) ++#define Call_Service_9(func,a,b,c,d,e,f,g,h,i) func(a,b,c,d,e,f,g,h,i) ++#define Call_Service_10(func,a,b,c,d,e,f,g,h,i,j) func(a,b,c,d,e,f,g,h,i,j) ++#endif ++ ++#endif +diff --git a/efi/grub/efi/misc.h b/efi/grub/efi/misc.h +new file mode 100644 +index 0000000..e06a2fb +--- /dev/null ++++ b/efi/grub/efi/misc.h +@@ -0,0 +1,60 @@ ++/* misc.h - prototypes for misc EFI functions */ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2002,2003,2005,2006 Free Software Foundation, Inc. ++ * ++ * GRUB is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with GRUB; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifndef GRUB_EFI_MISC_HEADER ++#define GRUB_EFI_MISC_HEADER 1 ++ ++struct e820_entry; ++void e820_map_from_efi_map (struct e820_entry *e820_map, ++ int *e820_nr_map, ++ grub_efi_memory_descriptor_t *memory_map, ++ grub_efi_uintn_t desc_size, ++ grub_efi_uintn_t memory_map_size); ++ ++/* Initialize the console system. */ ++void grub_console_init (void); ++/* Finish the console system. */ ++void grub_console_fini (void); ++ ++void grub_efidisk_init (void); ++void grub_efidisk_fini (void); ++grub_efi_handle_t grub_efidisk_get_current_bdev_handle (void); ++int grub_get_drive_partition_from_bdev_handle (grub_efi_handle_t handle, ++ unsigned long *drive, ++ unsigned long *partition); ++ ++char *grub_efi_file_path_to_path_name (grub_efi_device_path_t *file_path); ++void grub_load_saved_default (grub_efi_handle_t dev_handle); ++ ++grub_efi_device_path_t * ++find_last_device_path (const grub_efi_device_path_t *dp); ++grub_efi_device_path_t * ++find_parent_device_path (const grub_efi_device_path_t *dp); ++grub_efi_device_path_t * ++duplicate_device_path (const grub_efi_device_path_t *dp); ++int ++compare_device_paths (const grub_efi_device_path_t *dp1, ++ const grub_efi_device_path_t *dp2); ++grub_efi_device_path_t * ++device_path_from_utf8 (const char *device); ++ ++extern grub_efi_guid_t simple_file_system_guid; ++ ++#endif /* ! GRUB_EFI_MISC_HEADER */ +diff --git a/efi/grub/efi/net.h b/efi/grub/efi/net.h +new file mode 100644 +index 0000000..e69de29 +diff --git a/efi/grub/efi/time.h b/efi/grub/efi/time.h +new file mode 100644 +index 0000000..55bfe68 +--- /dev/null ++++ b/efi/grub/efi/time.h +@@ -0,0 +1,31 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2006 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, ++ * MA 02110-1301, USA. ++ */ ++ ++#ifndef GRUB_EFI_TIME_HEADER ++#define GRUB_EFI_TIME_HEADER 1 ++ ++#include ++ ++#define GRUB_TICKS_PER_SECOND 18 ++ ++/* Return the real time in ticks. */ ++grub_uint32_t grub_get_rtc (void); ++ ++#endif /* ! GRUB_EFI_TIME_HEADER */ +diff --git a/efi/grub/i386/linux.h b/efi/grub/i386/linux.h +new file mode 100644 +index 0000000..1545a7a +--- /dev/null ++++ b/efi/grub/i386/linux.h +@@ -0,0 +1,226 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 1999,2000,2001,2002,2003,2004 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifndef GRUB_LINUX_MACHINE_HEADER ++#define GRUB_LINUX_MACHINE_HEADER 1 ++ ++#define GRUB_LINUX_MAGIC_SIGNATURE 0x53726448 /* "HdrS" */ ++#define GRUB_LINUX_DEFAULT_SETUP_SECTS 4 ++#define GRUB_LINUX_FLAG_CAN_USE_HEAP 0x80 ++#define GRUB_LINUX_INITRD_MAX_ADDRESS 0x37FFFFFF ++#define GRUB_LINUX_MAX_SETUP_SECTS 64 ++#define GRUB_LINUX_BOOT_LOADER_TYPE 0x72 ++#define GRUB_LINUX_HEAP_END_OFFSET (0x9000 - 0x200) ++ ++#define GRUB_LINUX_BZIMAGE_ADDR 0x100000 ++#define GRUB_LINUX_ZIMAGE_ADDR 0x10000 ++#define GRUB_LINUX_OLD_REAL_MODE_ADDR 0x90000 ++#define GRUB_LINUX_SETUP_STACK 0x9000 ++ ++#define GRUB_LINUX_FLAG_BIG_KERNEL 0x1 ++ ++/* Linux's video mode selection support. Actually I hate it! */ ++#define GRUB_LINUX_VID_MODE_NORMAL 0xFFFF ++#define GRUB_LINUX_VID_MODE_EXTENDED 0xFFFE ++#define GRUB_LINUX_VID_MODE_ASK 0xFFFD ++ ++#define GRUB_LINUX_CL_OFFSET 0x9000 ++#define GRUB_LINUX_CL_END_OFFSET 0x90FF ++#define GRUB_LINUX_SETUP_MOVE_SIZE 0x9100 ++#define GRUB_LINUX_CL_MAGIC 0xA33F ++ ++#if 0 ++#define GRUB_LINUX_EFI_SIGNATURE_X64 \ ++ ('4' << 24 | '6' << 16 | 'L' << 8 | 'E') ++#else ++#define GRUB_LINUX_EFI_SIGNATURE_X64 \ ++ ('L' << 24 | 'I' << 16 | 'F' << 8 | 'E') ++#endif ++ ++#ifndef ASM_FILE ++ ++/* For the Linux/i386 boot protocol version 2.07. */ ++struct grub_linux_kernel_header ++{ ++ grub_uint8_t setup_sects; /* The size of the setup in sectors */ ++ grub_uint16_t root_flags; /* If the root is mounted readonly */ ++ grub_uint32_t syssize; /* obsolete */ ++ grub_uint16_t ram_size; /* obsolete */ ++ grub_uint16_t vid_mode; /* Video mode control */ ++ grub_uint16_t root_dev; /* Default root device number */ ++ grub_uint16_t boot_flag; /* 0xAA55 magic number */ ++ grub_uint8_t jump_ins; /* Jump instruction */ ++ grub_uint8_t jump_off; /* Jump offset */ ++ grub_uint32_t header; /* Magic signature "HdrS" */ ++ grub_uint16_t version; /* Boot protocol version supported */ ++ grub_uint32_t realmode_swtch; /* Boot loader hook */ ++ grub_uint16_t start_sys; /* The load-low segment (obsolete) */ ++ grub_uint16_t kernel_version; /* Points to kernel version string */ ++ grub_uint8_t type_of_loader; /* Boot loader identifier */ ++ grub_uint8_t loadflags; /* Boot protocol option flags */ ++ grub_uint16_t setup_move_size;/* Move to high memory size */ ++ grub_uint32_t code32_start; /* Boot loader hook */ ++ grub_uint32_t ramdisk_image; /* initrd load address */ ++ grub_uint32_t ramdisk_size; /* initrd size */ ++ grub_uint32_t bootsect_kludge;/* obsolete */ ++ grub_uint16_t heap_end_ptr; /* Free memory after setup end */ ++ grub_uint16_t pad1; /* Unused */ ++ grub_uint32_t cmd_line_ptr; /* Points to the kernel command line */ ++ grub_uint32_t initrd_addr_max;/* Highest address for initrd */ ++ grub_uint32_t kernel_alignment; ++ grub_uint8_t relocatable_kernel; ++ grub_uint8_t pad2[3]; ++ grub_uint32_t hardware_subarch; ++ grub_uint64_t hardware_subarch_data; ++} __attribute__ ((packed)); ++ ++/* Boot parameters for Linux based on 2.6.12. This is used by the setup ++ sectors of Linux, and must be simulated by GRUB on EFI, because ++ the setup sectors depend on BIOS. */ ++struct linux_kernel_params ++{ ++ grub_uint8_t video_cursor_x; /* 0 */ ++ grub_uint8_t video_cursor_y; ++ ++ grub_uint16_t ext_mem; /* 2 */ ++ ++ grub_uint16_t video_page; /* 4 */ ++ grub_uint8_t video_mode; /* 6 */ ++ grub_uint8_t video_width; /* 7 */ ++ ++ grub_uint8_t padding1[0xa - 0x8]; ++ ++ grub_uint16_t video_ega_bx; /* a */ ++ ++ grub_uint8_t padding2[0xe - 0xc]; ++ ++ grub_uint8_t video_height; /* e */ ++ grub_uint8_t have_vga; /* f */ ++ grub_uint16_t font_size; /* 10 */ ++ ++ grub_uint16_t lfb_width; /* 12 */ ++ grub_uint16_t lfb_height; /* 14 */ ++ grub_uint16_t lfb_depth; /* 16 */ ++ grub_uint32_t lfb_base; /* 18 */ ++ grub_uint32_t lfb_size; /* 1c */ ++ ++ grub_uint16_t cl_magic; /* 20 */ ++ grub_uint16_t cl_offset; ++ ++ grub_uint16_t lfb_line_len; /* 24 */ ++ grub_uint8_t red_mask_size; /* 26 */ ++ grub_uint8_t red_field_pos; ++ grub_uint8_t green_mask_size; ++ grub_uint8_t green_field_pos; ++ grub_uint8_t blue_mask_size; ++ grub_uint8_t blue_field_pos; ++ grub_uint8_t reserved_mask_size; ++ grub_uint8_t reserved_field_pos; ++ grub_uint16_t vesapm_segment; /* 2e */ ++ grub_uint16_t vesapm_offset; /* 30 */ ++ grub_uint16_t lfb_pages; /* 32 */ ++ grub_uint16_t vesa_attrib; /* 34 */ ++ ++ grub_uint8_t padding3[0x40 - 0x36]; ++ ++ grub_uint16_t apm_version; /* 40 */ ++ grub_uint16_t apm_code_segment; /* 42 */ ++ grub_uint32_t apm_entry; /* 44 */ ++ grub_uint16_t apm_16bit_code_segment; /* 48 */ ++ grub_uint16_t apm_data_segment; /* 4a */ ++ grub_uint16_t apm_flags; /* 4c */ ++ grub_uint32_t apm_code_len; /* 4e */ ++ grub_uint16_t apm_data_len; /* 52 */ ++ ++ grub_uint8_t padding4[0x60 - 0x54]; ++ ++ grub_uint32_t ist_signature; /* 60 */ ++ grub_uint32_t ist_command; /* 64 */ ++ grub_uint32_t ist_event; /* 68 */ ++ grub_uint32_t ist_perf_level; /* 6c */ ++ ++ grub_uint8_t padding5[0x80 - 0x70]; ++ ++ grub_uint8_t hd0_drive_info[0x10]; /* 80 */ ++ grub_uint8_t hd1_drive_info[0x10]; /* 90 */ ++ grub_uint16_t rom_config_len; /* a0 */ ++ ++ grub_uint8_t padding6[0x1b8 - 0xa2]; ++ ++ union { ++ struct { ++ grub_uint32_t padding7_1; /* 0x1b8 */ ++ grub_uint32_t padding7_2; /* 0x1bc */ ++ ++ grub_uint32_t efi_signature; /* 1c0 */ ++ grub_uint32_t efi_system_table; /* 1c4 */ ++ grub_uint32_t efi_mem_desc_size; /* 1c8 */ ++ grub_uint32_t efi_mem_desc_version; /* 1cc */ ++ grub_uint32_t efi_mmap; /* 1d0 */ ++ grub_uint32_t efi_mmap_size; /* 1d4 */ ++ grub_uint32_t efi_system_table_hi; /* 1d8 */ ++ grub_uint32_t efi_mmap_hi; /* 1dc */ ++ } dunno; ++ struct { ++ grub_uint32_t efi_system_table; /* 1b8 */ ++ ++ grub_uint32_t padding7_1; /* 0x1bc */ ++ ++ grub_uint32_t efi_signature; /* 1c0 */ ++ grub_uint32_t efi_mem_desc_size; /* 1c4 */ ++ grub_uint32_t efi_mem_desc_version; /* 1c8 */ ++ grub_uint32_t efi_mmap_size; /* 1cc */ ++ grub_uint32_t efi_mmap; /* 1d0 */ ++ ++ grub_uint8_t padding7_2[0x1e0 - 0x1d4]; /* 1d4 */ ++ } version_0204; ++ struct { ++ grub_uint32_t padding7_1; /* 0x1b8 */ ++ grub_uint32_t padding7_2; /* 0x1bc */ ++ grub_uint32_t padding7_3; /* 0x1c0 */ ++ grub_uint32_t efi_system_table; /* 0x1c4 */ ++ grub_uint32_t efi_mem_desc_size; /* 0x1c8 */ ++ grub_uint32_t efi_mem_desc_version; /* 0x1cc */ ++ grub_uint32_t efi_mmap; /* 0x1d0 */ ++ grub_uint32_t efi_mmap_size; /* 0x1d4 */ ++ grub_uint8_t padding7_4[0x1e0 - 0x1d8]; /* 0x1d8 */ ++ } version_0206; ++ }; ++ ++ grub_uint32_t alt_mem; /* 1e0 */ ++ ++ grub_uint8_t padding8[0x1e8 - 0x1e4]; /* 1e4 */ ++ ++ grub_uint8_t e820_nr_map; /* 1e8 */ ++ grub_uint8_t eddbuf_entries; /* 1e9 */ ++ grub_uint8_t edd_mbr_sig_buf_entries; /* 1ea */ ++ ++ grub_uint8_t padding9[0x1f1 - 0x1eb]; ++ ++ struct grub_linux_kernel_header hdr; /* 0x1f1 */ ++ ++ grub_uint8_t padding10[0x2d0-0x1f1-sizeof(struct grub_linux_kernel_header)]; ++ ++ grub_uint8_t e820_map[2560]; /* 0x2d0 */ ++ ++ grub_uint8_t padding11[0x1000 - 0xcd0]; ++} __attribute__ ((packed)); ++#endif /* ! ASM_FILE */ ++ ++#endif /* ! GRUB_LINUX_MACHINE_HEADER */ +diff --git a/efi/grub/i386/types.h b/efi/grub/i386/types.h +new file mode 100644 +index 0000000..ec4174e +--- /dev/null ++++ b/efi/grub/i386/types.h +@@ -0,0 +1,32 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2002,2006 Free Software Foundation, Inc. ++ * ++ * GRUB is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with GRUB; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifndef GRUB_TYPES_CPU_HEADER ++#define GRUB_TYPES_CPU_HEADER 1 ++ ++/* The size of void *. */ ++#define GRUB_TARGET_SIZEOF_VOID_P 4 ++ ++/* The size of long. */ ++#define GRUB_TARGET_SIZEOF_LONG 4 ++ ++/* x64_64 is little-endian. */ ++#undef GRUB_TARGET_WORDS_BIGENDIAN ++ ++#endif /* ! GRUB_TYPES_CPU_HEADER */ +diff --git a/efi/grub/misc.h b/efi/grub/misc.h +new file mode 100644 +index 0000000..5ef2226 +--- /dev/null ++++ b/efi/grub/misc.h +@@ -0,0 +1,71 @@ ++/* misc.h - prototypes for misc functions */ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2002,2003,2005,2006 Free Software Foundation, Inc. ++ * ++ * GRUB is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with GRUB; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifndef GRUB_MISC_HEADER ++#define GRUB_MISC_HEADER 1 ++ ++#include ++#include ++ ++#define grub_dprintf(condition, fmt, args...) \ ++ grub_real_dprintf(__FILE__, __LINE__, condition, fmt, ## args) ++ ++char *grub_stpcpy (char *dest, const char *src); ++void grub_real_dprintf (const char *file, ++ const int line, ++ const char *condition, ++ const char *fmt, ...) ++ __attribute__ ((format (printf, 4, 5))); ++void grub_exit (void) __attribute__ ((noreturn)); ++void grub_abort (void) __attribute__ ((noreturn)); ++void grub_fatal (const char *fmt, ...) __attribute__ ((noreturn)); ++grub_size_t grub_utf8_char_len(grub_uint8_t ch); ++grub_uint32_t grub_utf8_to_utf32(const grub_uint8_t *src, grub_size_t length); ++void grub_utf8_to_utf16(const grub_uint8_t *src, grub_size_t srclen, ++ grub_uint16_t *dst, grub_size_t dstlen); ++grub_uint8_t *grub_utf16_to_utf8 (grub_uint8_t * dest, ++ grub_uint16_t * src, grub_size_t size); ++ ++void *grub_malloc (grub_size_t size); ++void grub_free (void *ptr); ++ ++char *grub_strndup (const char *s, int n); ++#define strndup grub_strndup ++ ++int safe_parse_maxulong (char **str_ptr, unsigned long *myulong_ptr); ++ ++#define E820_RAM 1 ++#define E820_RESERVED 2 ++#define E820_ACPI 3 ++#define E820_NVS 4 ++#define E820_EXEC_CODE 5 ++#define E820_MAX 128 ++ ++struct e820_entry ++{ ++ grub_uint64_t addr; /* start of memory segment */ ++ grub_uint64_t size; /* size of memory segment */ ++ grub_uint32_t type; /* type of memory segment */ ++} __attribute__ ((packed)); ++ ++int grub_load_linux (char *kernel, char *arg); ++int grub_load_initrd (char *initrd); ++ ++#endif /* ! GRUB_MISC_HEADER */ +diff --git a/efi/grub/symbol.h b/efi/grub/symbol.h +new file mode 100644 +index 0000000..5204c54 +--- /dev/null ++++ b/efi/grub/symbol.h +@@ -0,0 +1,34 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 1999,2000,2001,2002,2006 Free Software Foundation, Inc. ++ * ++ * GRUB is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with GRUB; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifndef GRUB_SYMBOL_HEADER ++#define GRUB_SYMBOL_HEADER 1 ++ ++#include ++ ++/* Add an underscore to a C symbol in assembler code if needed. */ ++#ifdef HAVE_ASM_USCORE ++# define EXT_C(sym) _ ## sym ++#else ++# define EXT_C(sym) sym ++#endif ++ ++#define FUNCTION(x) .globl EXT_C(x) ; .type EXT_C(x), "function" ; EXT_C(x): ++ ++#endif /* ! GRUB_SYMBOL_HEADER */ +diff --git a/efi/grub/types.h b/efi/grub/types.h +new file mode 100644 +index 0000000..173adb4 +--- /dev/null ++++ b/efi/grub/types.h +@@ -0,0 +1,158 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2002,2005,2006 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifndef GRUB_TYPES_HEADER ++#define GRUB_TYPES_HEADER 1 ++ ++#include ++#include ++ ++#define UNUSED __attribute__ ((unused)) ++ ++#ifdef GRUB_UTIL ++# define GRUB_CPU_SIZEOF_VOID_P SIZEOF_VOID_P ++# define GRUB_CPU_SIZEOF_LONG SIZEOF_LONG ++# ifdef WORDS_BIGENDIAN ++# define GRUB_CPU_WORDS_BIGENDIAN 1 ++# else ++# undef GRUB_CPU_WORDS_BIGENDIAN ++# endif ++#else /* ! GRUB_UTIL */ ++# define GRUB_CPU_SIZEOF_VOID_P GRUB_TARGET_SIZEOF_VOID_P ++# define GRUB_CPU_SIZEOF_LONG GRUB_TARGET_SIZEOF_LONG ++# ifdef GRUB_TARGET_WORDS_BIGENDIAN ++# define GRUB_CPU_WORDS_BIGENDIAN 1 ++# else ++# undef GRUB_CPU_WORDS_BIGENDIAN ++# endif ++#endif /* ! GRUB_UTIL */ ++ ++#if GRUB_CPU_SIZEOF_VOID_P != GRUB_CPU_SIZEOF_LONG ++# error "This architecture is not supported because sizeof(void *) != sizeof(long)" ++#endif ++ ++#if GRUB_CPU_SIZEOF_VOID_P != 4 && GRUB_CPU_SIZEOF_VOID_P != 8 ++# error "This architecture is not supported because sizeof(void *) != 4 and sizeof(void *) != 8" ++#endif ++ ++/* Define various wide integers. */ ++typedef signed char grub_int8_t; ++typedef short grub_int16_t; ++typedef int grub_int32_t; ++#if GRUB_CPU_SIZEOF_VOID_P == 8 ++typedef long grub_int64_t; ++#else ++typedef long long grub_int64_t; ++#endif ++ ++typedef unsigned char grub_uint8_t; ++typedef unsigned short grub_uint16_t; ++typedef unsigned grub_uint32_t; ++#if GRUB_CPU_SIZEOF_VOID_P == 8 ++typedef unsigned long grub_uint64_t; ++#else ++typedef unsigned long long grub_uint64_t; ++#endif ++ ++/* Misc types. */ ++#if GRUB_TARGET_SIZEOF_VOID_P == 8 ++typedef grub_uint64_t grub_target_addr_t; ++typedef grub_uint64_t grub_target_off_t; ++typedef grub_uint64_t grub_target_size_t; ++typedef grub_int64_t grub_target_ssize_t; ++#else ++typedef grub_uint32_t grub_target_addr_t; ++typedef grub_uint32_t grub_target_off_t; ++typedef grub_uint32_t grub_target_size_t; ++typedef grub_int32_t grub_target_ssize_t; ++#endif ++ ++typedef unsigned long grub_addr_t; ++#if GRUB_CPU_SIZEOF_VOID_P == 8 ++typedef grub_uint64_t grub_size_t; ++typedef grub_int64_t grub_ssize_t; ++#else ++typedef grub_uint32_t grub_size_t; ++typedef grub_int32_t grub_ssize_t; ++#endif ++ ++/* The type for representing a file offset. */ ++typedef grub_uint64_t grub_off_t; ++ ++/* The type for representing a disk block address. */ ++typedef grub_uint64_t grub_disk_addr_t; ++ ++/* Byte-orders. */ ++#define grub_swap_bytes16(x) \ ++({ \ ++ grub_uint16_t _x = (x); \ ++ (grub_uint16_t) ((_x << 8) | (_x >> 8)); \ ++}) ++ ++#define grub_swap_bytes32(x) \ ++({ \ ++ grub_uint32_t _x = (x); \ ++ (grub_uint32_t) ((_x << 24) \ ++ | ((_x & (grub_uint32_t) 0xFF00UL) << 8) \ ++ | ((_x & (grub_uint32_t) 0xFF0000UL) >> 8) \ ++ | (_x >> 24)); \ ++}) ++ ++#define grub_swap_bytes64(x) \ ++({ \ ++ grub_uint64_t _x = (x); \ ++ (grub_uint64_t) ((_x << 56) \ ++ | ((_x & (grub_uint64_t) 0xFF00ULL) << 40) \ ++ | ((_x & (grub_uint64_t) 0xFF0000ULL) << 24) \ ++ | ((_x & (grub_uint64_t) 0xFF000000ULL) << 8) \ ++ | ((_x & (grub_uint64_t) 0xFF00000000ULL) >> 8) \ ++ | ((_x & (grub_uint64_t) 0xFF0000000000ULL) >> 24) \ ++ | ((_x & (grub_uint64_t) 0xFF000000000000ULL) >> 40) \ ++ | (_x >> 56)); \ ++}) ++ ++#ifdef GRUB_CPU_WORDS_BIGENDIAN ++# define grub_cpu_to_le16(x) grub_swap_bytes16(x) ++# define grub_cpu_to_le32(x) grub_swap_bytes32(x) ++# define grub_cpu_to_le64(x) grub_swap_bytes64(x) ++# define grub_le_to_cpu16(x) grub_swap_bytes16(x) ++# define grub_le_to_cpu32(x) grub_swap_bytes32(x) ++# define grub_le_to_cpu64(x) grub_swap_bytes64(x) ++# define grub_cpu_to_be16(x) ((grub_uint16_t) (x)) ++# define grub_cpu_to_be32(x) ((grub_uint32_t) (x)) ++# define grub_cpu_to_be64(x) ((grub_uint64_t) (x)) ++# define grub_be_to_cpu16(x) ((grub_uint16_t) (x)) ++# define grub_be_to_cpu32(x) ((grub_uint32_t) (x)) ++# define grub_be_to_cpu64(x) ((grub_uint64_t) (x)) ++#else /* ! WORDS_BIGENDIAN */ ++# define grub_cpu_to_le16(x) ((grub_uint16_t) (x)) ++# define grub_cpu_to_le32(x) ((grub_uint32_t) (x)) ++# define grub_cpu_to_le64(x) ((grub_uint64_t) (x)) ++# define grub_le_to_cpu16(x) ((grub_uint16_t) (x)) ++# define grub_le_to_cpu32(x) ((grub_uint32_t) (x)) ++# define grub_le_to_cpu64(x) ((grub_uint64_t) (x)) ++# define grub_cpu_to_be16(x) grub_swap_bytes16(x) ++# define grub_cpu_to_be32(x) grub_swap_bytes32(x) ++# define grub_cpu_to_be64(x) grub_swap_bytes64(x) ++# define grub_be_to_cpu16(x) grub_swap_bytes16(x) ++# define grub_be_to_cpu32(x) grub_swap_bytes32(x) ++# define grub_be_to_cpu64(x) grub_swap_bytes64(x) ++#endif /* ! WORDS_BIGENDIAN */ ++ ++#endif /* ! GRUB_TYPES_HEADER */ +diff --git a/efi/grub/x86_64/linux.h b/efi/grub/x86_64/linux.h +new file mode 100644 +index 0000000..4e81ca6 +--- /dev/null ++++ b/efi/grub/x86_64/linux.h +@@ -0,0 +1,234 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 1999,2000,2001,2002,2003,2004 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifndef GRUB_LINUX_MACHINE_HEADER ++#define GRUB_LINUX_MACHINE_HEADER 1 ++ ++#define GRUB_LINUX_MAGIC_SIGNATURE 0x53726448 /* "HdrS" */ ++#define GRUB_LINUX_DEFAULT_SETUP_SECTS 4 ++#define GRUB_LINUX_FLAG_CAN_USE_HEAP 0x80 ++#define GRUB_LINUX_INITRD_MAX_ADDRESS 0x37FFFFFF ++#define GRUB_LINUX_MAX_SETUP_SECTS 64 ++#define GRUB_LINUX_BOOT_LOADER_TYPE 0x72 ++#define GRUB_LINUX_HEAP_END_OFFSET (0x9000 - 0x200) ++ ++#define GRUB_LINUX_BZIMAGE_ADDR 0x100000 ++#define GRUB_LINUX_ZIMAGE_ADDR 0x10000 ++#define GRUB_LINUX_OLD_REAL_MODE_ADDR 0x90000 ++#define GRUB_LINUX_SETUP_STACK 0x9000 ++ ++#define GRUB_LINUX_FLAG_BIG_KERNEL 0x1 ++ ++/* Linux's video mode selection support. Actually I hate it! */ ++#define GRUB_LINUX_VID_MODE_NORMAL 0xFFFF ++#define GRUB_LINUX_VID_MODE_EXTENDED 0xFFFE ++#define GRUB_LINUX_VID_MODE_ASK 0xFFFD ++ ++#define GRUB_LINUX_CL_OFFSET 0x9000 ++#define GRUB_LINUX_CL_END_OFFSET 0x90FF ++#define GRUB_LINUX_SETUP_MOVE_SIZE 0x9100 ++#define GRUB_LINUX_CL_MAGIC 0xA33F ++ ++#if 0 ++#define GRUB_LINUX_EFI_SIGNATURE_X64 \ ++ ('4' << 24 | '6' << 16 | 'L' << 8 | 'E') ++#else ++#define GRUB_LINUX_EFI_SIGNATURE_X64 \ ++ ('L' << 24 | 'I' << 16 | 'F' << 8 | 'E') ++#endif ++ ++#ifndef ASM_FILE ++ ++/* For the Linux/i386 boot protocol version 2.07. */ ++struct grub_linux_kernel_header ++{ ++ grub_uint8_t setup_sects; /* The size of the setup in sectors */ ++ grub_uint16_t root_flags; /* If the root is mounted readonly */ ++ grub_uint32_t syssize; /* obsolete */ ++ grub_uint16_t ram_size; /* obsolete */ ++ grub_uint16_t vid_mode; /* Video mode control */ ++ grub_uint16_t root_dev; /* Default root device number */ ++ grub_uint16_t boot_flag; /* 0xAA55 magic number */ ++ grub_uint8_t jump_ins; /* Jump instruction */ ++ grub_uint8_t jump_off; /* Jump offset */ ++ grub_uint32_t header; /* Magic signature "HdrS" */ ++ grub_uint16_t version; /* Boot protocol version supported */ ++ grub_uint32_t realmode_swtch; /* Boot loader hook */ ++ grub_uint16_t start_sys; /* The load-low segment (obsolete) */ ++ grub_uint16_t kernel_version; /* Points to kernel version string */ ++ grub_uint8_t type_of_loader; /* Boot loader identifier */ ++ grub_uint8_t loadflags; /* Boot protocol option flags */ ++ grub_uint16_t setup_move_size;/* Move to high memory size */ ++ grub_uint32_t code32_start; /* Boot loader hook */ ++ grub_uint32_t ramdisk_image; /* initrd load address */ ++ grub_uint32_t ramdisk_size; /* initrd size */ ++ grub_uint32_t bootsect_kludge;/* obsolete */ ++ grub_uint16_t heap_end_ptr; /* Free memory after setup end */ ++ grub_uint16_t pad1; /* Unused */ ++ grub_uint32_t cmd_line_ptr; /* Points to the kernel command line */ ++ grub_uint32_t initrd_addr_max;/* Highest address for initrd */ ++ grub_uint32_t kernel_alignment; ++ grub_uint8_t relocatable_kernel; ++ grub_uint8_t min_alignment; ++ grub_uint8_t pad2[2]; ++ grub_uint32_t cmdline_size; ++ grub_uint32_t hardware_subarch; ++ grub_uint64_t hardware_subarch_data; ++ grub_uint32_t payload_offset; ++ grub_uint32_t payload_length; ++ grub_uint64_t setup_data; ++ grub_uint64_t pref_address; ++ grub_uint32_t init_size; ++} __attribute__ ((packed)); ++ ++/* Boot parameters for Linux based on 2.6.12. This is used by the setup ++ sectors of Linux, and must be simulated by GRUB on EFI, because ++ the setup sectors depend on BIOS. */ ++struct linux_kernel_params ++{ ++ grub_uint8_t video_cursor_x; /* 0 */ ++ grub_uint8_t video_cursor_y; ++ ++ grub_uint16_t ext_mem; /* 2 */ ++ ++ grub_uint16_t video_page; /* 4 */ ++ grub_uint8_t video_mode; /* 6 */ ++ grub_uint8_t video_width; /* 7 */ ++ ++ grub_uint8_t padding1[0xa - 0x8]; ++ ++ grub_uint16_t video_ega_bx; /* a */ ++ ++ grub_uint8_t padding2[0xe - 0xc]; ++ ++ grub_uint8_t video_height; /* e */ ++ grub_uint8_t have_vga; /* f */ ++ grub_uint16_t font_size; /* 10 */ ++ ++ grub_uint16_t lfb_width; /* 12 */ ++ grub_uint16_t lfb_height; /* 14 */ ++ grub_uint16_t lfb_depth; /* 16 */ ++ grub_uint32_t lfb_base; /* 18 */ ++ grub_uint32_t lfb_size; /* 1c */ ++ ++ grub_uint16_t cl_magic; /* 20 */ ++ grub_uint16_t cl_offset; ++ ++ grub_uint16_t lfb_line_len; /* 24 */ ++ grub_uint8_t red_mask_size; /* 26 */ ++ grub_uint8_t red_field_pos; ++ grub_uint8_t green_mask_size; ++ grub_uint8_t green_field_pos; ++ grub_uint8_t blue_mask_size; ++ grub_uint8_t blue_field_pos; ++ grub_uint8_t reserved_mask_size; ++ grub_uint8_t reserved_field_pos; ++ grub_uint16_t vesapm_segment; /* 2e */ ++ grub_uint16_t vesapm_offset; /* 30 */ ++ grub_uint16_t lfb_pages; /* 32 */ ++ grub_uint16_t vesa_attrib; /* 34 */ ++ grub_uint32_t capabilities; /* 36 */ ++ ++ grub_uint8_t padding3[0x40 - 0x3a]; ++ ++ grub_uint16_t apm_version; /* 40 */ ++ grub_uint16_t apm_code_segment; /* 42 */ ++ grub_uint32_t apm_entry; /* 44 */ ++ grub_uint16_t apm_16bit_code_segment; /* 48 */ ++ grub_uint16_t apm_data_segment; /* 4a */ ++ grub_uint16_t apm_flags; /* 4c */ ++ grub_uint32_t apm_code_len; /* 4e */ ++ grub_uint16_t apm_data_len; /* 52 */ ++ ++ grub_uint8_t padding4[0x60 - 0x54]; ++ ++ grub_uint32_t ist_signature; /* 60 */ ++ grub_uint32_t ist_command; /* 64 */ ++ grub_uint32_t ist_event; /* 68 */ ++ grub_uint32_t ist_perf_level; /* 6c */ ++ ++ grub_uint8_t padding5[0x80 - 0x70]; ++ ++ grub_uint8_t hd0_drive_info[0x10]; /* 80 */ ++ grub_uint8_t hd1_drive_info[0x10]; /* 90 */ ++ grub_uint16_t rom_config_len; /* a0 */ ++ ++ grub_uint8_t padding6[0x1b8 - 0xa2]; ++ ++ union { ++ struct { ++ grub_uint32_t padding7_1; /* 0x1b8 */ ++ grub_uint32_t padding7_2; /* 0x1bc */ ++ ++ grub_uint32_t efi_signature; /* 1c0 */ ++ grub_uint32_t efi_system_table; /* 1c4 */ ++ grub_uint32_t efi_mem_desc_size; /* 1c8 */ ++ grub_uint32_t efi_mem_desc_version; /* 1cc */ ++ grub_uint32_t efi_mmap; /* 1d0 */ ++ grub_uint32_t efi_mmap_size; /* 1d4 */ ++ grub_uint32_t efi_system_table_hi; /* 1d8 */ ++ grub_uint32_t efi_mmap_hi; /* 1dc */ ++ } dunno; ++ struct { ++ grub_uint32_t efi_system_table; /* 1b8 */ ++ ++ grub_uint32_t padding7_1; /* 0x1bc */ ++ ++ grub_uint32_t efi_signature; /* 1c0 */ ++ grub_uint32_t efi_mem_desc_size; /* 1c4 */ ++ grub_uint32_t efi_mem_desc_version; /* 1c8 */ ++ grub_uint32_t efi_mmap_size; /* 1cc */ ++ grub_uint32_t efi_mmap; /* 1d0 */ ++ ++ grub_uint8_t padding7_2[0x1e0 - 0x1d4]; /* 1d4 */ ++ } version_0204; ++ struct { ++ grub_uint32_t padding7_1; /* 0x1b8 */ ++ grub_uint32_t padding7_2; /* 0x1bc */ ++ grub_uint32_t padding7_3; /* 0x1c0 */ ++ grub_uint32_t efi_system_table; /* 0x1c4 */ ++ grub_uint32_t efi_mem_desc_size; /* 0x1c8 */ ++ grub_uint32_t efi_mem_desc_version; /* 0x1cc */ ++ grub_uint32_t efi_mmap; /* 0x1d0 */ ++ grub_uint32_t efi_mmap_size; /* 0x1d4 */ ++ grub_uint8_t padding7_4[0x1e0 - 0x1d8]; /* 0x1d8 */ ++ } version_0206; ++ }; ++ ++ grub_uint32_t alt_mem; /* 1e0 */ ++ ++ grub_uint8_t padding8[0x1e8 - 0x1e4]; /* 1e4 */ ++ ++ grub_uint8_t e820_nr_map; /* 1e8 */ ++ grub_uint8_t eddbuf_entries; /* 1e9 */ ++ grub_uint8_t edd_mbr_sig_buf_entries; /* 1ea */ ++ ++ grub_uint8_t padding9[0x1f1 - 0x1eb]; ++ ++ struct grub_linux_kernel_header hdr; /* 0x1f1 */ ++ ++ grub_uint8_t padding10[0x2d0-0x1f1-sizeof(struct grub_linux_kernel_header)]; ++ ++ grub_uint8_t e820_map[2560]; /* 0x2d0 */ ++ ++ grub_uint8_t padding11[0x1000 - 0xcd0]; ++} __attribute__ ((packed)); ++#endif /* ! ASM_FILE */ ++ ++#endif /* ! GRUB_LINUX_MACHINE_HEADER */ +diff --git a/efi/grub/x86_64/types.h b/efi/grub/x86_64/types.h +new file mode 100644 +index 0000000..0c077f6 +--- /dev/null ++++ b/efi/grub/x86_64/types.h +@@ -0,0 +1,32 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2002,2006 Free Software Foundation, Inc. ++ * ++ * GRUB is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with GRUB; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifndef GRUB_TYPES_CPU_HEADER ++#define GRUB_TYPES_CPU_HEADER 1 ++ ++/* The size of void *. */ ++#define GRUB_TARGET_SIZEOF_VOID_P 8 ++ ++/* The size of long. */ ++#define GRUB_TARGET_SIZEOF_LONG 8 ++ ++/* x64_64 is little-endian. */ ++#undef GRUB_TARGET_WORDS_BIGENDIAN ++ ++#endif /* ! GRUB_TYPES_CPU_HEADER */ +diff --git a/efi/ia32/callwrap.S b/efi/ia32/callwrap.S +new file mode 100644 +index 0000000..50d737f +--- /dev/null ++++ b/efi/ia32/callwrap.S +@@ -0,0 +1 @@ ++/* This file is a stub for ia32 building */ +diff --git a/efi/ia32/callwrap.c b/efi/ia32/callwrap.c +new file mode 100644 +index 0000000..56df899 +--- /dev/null ++++ b/efi/ia32/callwrap.c +@@ -0,0 +1,131 @@ ++ ++#define ENTRY(name) \ ++ ".globl " #name ";" \ ++ ".align 16;" \ ++ #name ":" ++ ++asm( ++ENTRY(i386_call0) ++ "pushl %ebp \n" ++ "movl %esp,%ebp \n" ++ "subl $8, %esp \n" ++ "call *8(%ebp) \n" ++ "leave \n" ++ "ret \n" ++ ); ++ ++asm( ++ENTRY(i386_call1) ++ "pushl %ebp \n" ++ "movl %esp,%ebp \n" ++ "subl $20, %esp \n" ++ "pushl 12(%ebp) \n" ++ "call *8(%ebp) \n" ++ "leave \n" ++ "ret \n" ++ ); ++ ++asm( ++ENTRY(i386_call2) ++ "pushl %ebp \n" ++ "movl %esp,%ebp \n" ++ "subl $16, %esp \n" ++ "pushl 16(%ebp) \n" ++ "pushl 12(%ebp) \n" ++ "call *8(%ebp) \n" ++ "leave \n" ++ "ret \n" ++ ); ++ ++asm( ++ENTRY(i386_call3) ++ "pushl %ebp \n" ++ "movl %esp,%ebp \n" ++ "subl $12, %esp \n" ++ "pushl 20(%ebp) \n" ++ "pushl 16(%ebp) \n" ++ "pushl 12(%ebp) \n" ++ "call *8(%ebp) \n" ++ "leave \n" ++ "ret \n" ++ ); ++ ++asm( ++ENTRY(i386_call4) ++ "pushl %ebp \n" ++ "movl %esp,%ebp \n" ++ "subl $8, %esp \n" ++ "pushl 24(%ebp) \n" ++ "pushl 20(%ebp) \n" ++ "pushl 16(%ebp) \n" ++ "pushl 12(%ebp) \n" ++ "call *8(%ebp) \n" ++ "leave \n" ++ "ret \n" ++ ); ++ ++asm( ++ENTRY(i386_call5) ++ "pushl %ebp \n" ++ "movl %esp,%ebp \n" ++ "subl $20, %esp \n" ++ "pushl 28(%ebp) \n" ++ "pushl 24(%ebp) \n" ++ "pushl 20(%ebp) \n" ++ "pushl 16(%ebp) \n" ++ "pushl 12(%ebp) \n" ++ "call *8(%ebp) \n" ++ "leave \n" ++ "ret \n" ++ ); ++ ++asm( ++ENTRY(i386_64_call5) ++ "pushl %ebp \n" ++ "movl %esp,%ebp \n" ++ "subl $12, %esp \n" ++ "pushl 36(%ebp) \n" ++ "pushl 32(%ebp) \n" ++ "pushl 28(%ebp) \n" ++ "pushl 24(%ebp) \n" ++ "pushl 20(%ebp) \n" ++ "pushl 16(%ebp) \n" ++ "pushl 12(%ebp) \n" ++ "call *8(%ebp) \n" ++ "leave \n" ++ "ret \n" ++ ); ++ ++ ++asm( ++ENTRY(i386_call6) ++ "pushl %ebp \n" ++ "movl %esp,%ebp \n" ++ "subl $16, %esp \n" ++ "pushl 32(%ebp) \n" ++ "pushl 28(%ebp) \n" ++ "pushl 24(%ebp) \n" ++ "pushl 20(%ebp) \n" ++ "pushl 16(%ebp) \n" ++ "pushl 12(%ebp) \n" ++ "call *8(%ebp) \n" ++ "leave \n" ++ "ret \n" ++ ); ++ ++asm( ++ENTRY(i386_call7) ++ "pushl %ebp \n" ++ "movl %esp,%ebp \n" ++ "subl $12, %esp \n" ++ "pushl 36(%ebp) \n" ++ "pushl 32(%ebp) \n" ++ "pushl 28(%ebp) \n" ++ "pushl 24(%ebp) \n" ++ "pushl 20(%ebp) \n" ++ "pushl 16(%ebp) \n" ++ "pushl 12(%ebp) \n" ++ "call *8(%ebp) \n" ++ "leave \n" ++ "ret \n" ++ ); +diff --git a/efi/ia32/loader/bin_to_h.c b/efi/ia32/loader/bin_to_h.c +new file mode 100644 +index 0000000..4cff104 +--- /dev/null ++++ b/efi/ia32/loader/bin_to_h.c +@@ -0,0 +1,29 @@ ++#include ++#include ++ ++int ++main (void) ++{ ++ unsigned n = 0; ++ int c; ++ ++ printf ("unsigned char switch_image[] = {\n"); ++ ++ while ((c = getchar ()) != EOF) ++ { ++ printf("0x%02x,%s", ++ c & 0xFF, ++ (++n & 0x07) ? " " : "\n"); ++ } ++ ++ if (n & 0x07) ++ { ++ printf("\n"); ++ } ++ ++ printf("};\n" ++ "int switch_size = sizeof switch_image;\n"); ++ ++ return 0; ++} ++ +diff --git a/efi/ia32/loader/linux.c b/efi/ia32/loader/linux.c +new file mode 100644 +index 0000000..d795d28 +--- /dev/null ++++ b/efi/ia32/loader/linux.c +@@ -0,0 +1,648 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2006 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "switch.h" ++ ++#include ++ ++#include "graphics.h" ++ ++#define grub_file_size() filemax ++ ++#define NEXT_MEMORY_DESCRIPTOR(desc, size) \ ++ ((grub_efi_memory_descriptor_t *) ((char *) (desc) + (size))) ++ ++#define PTR_HI(x) ((grub_uint32_t) ((unsigned long long)((unsigned long)(x)) >> 32)) ++ ++#ifndef SECTOR_SIZE ++#define SECTOR_SIZE 0x200 ++#endif /* defined(SECTOR_SIZE) */ ++#ifndef SECTOR_BITS ++#define SECTOR_BITS 9 ++#endif /* defined(SECTOR_BITS) */ ++ ++static unsigned long linux_mem_size; ++static int loaded; ++static void *real_mode_mem; ++static void *prot_mode_mem; ++static void *initrd_mem; ++static grub_efi_uintn_t real_mode_pages; ++static grub_efi_uintn_t prot_mode_pages; ++static grub_efi_uintn_t initrd_pages; ++static grub_efi_guid_t graphics_output_guid = GRUB_EFI_GRAPHICS_OUTPUT_GUID; ++ ++static inline grub_size_t ++page_align (grub_size_t size) ++{ ++ return (size + (1 << 12) - 1) & (~((1 << 12) - 1)); ++} ++ ++static void ++free_pages (void) ++{ ++ if (real_mode_mem) ++ { ++ grub_efi_free_pages ((grub_addr_t) real_mode_mem, real_mode_pages); ++ real_mode_mem = 0; ++ } ++ ++ if (prot_mode_mem) ++ { ++ grub_efi_free_pages ((grub_addr_t) prot_mode_mem, prot_mode_pages); ++ prot_mode_mem = 0; ++ } ++ ++ if (initrd_mem) ++ { ++ grub_efi_free_pages ((grub_addr_t) initrd_mem, initrd_pages); ++ initrd_mem = 0; ++ } ++ ++ if (mmap_buf) ++ { ++ grub_efi_free_pages ((grub_addr_t) mmap_buf, mmap_pages); ++ mmap_buf = 0; ++ } ++} ++ ++/* Allocate pages for the real mode code and the protected mode code ++ for linux as well as a memory map buffer. */ ++static int ++allocate_pages (grub_size_t real_size, grub_size_t prot_size) ++{ ++ grub_efi_uintn_t desc_size; ++ grub_efi_memory_descriptor_t *mmap_end; ++ grub_efi_memory_descriptor_t *desc; ++ grub_efi_physical_address_t addr; ++ ++ /* Make sure that each size is aligned to a page boundary. */ ++ real_size = page_align (real_size + SECTOR_SIZE); ++ prot_size = page_align (prot_size); ++ ++ grub_dprintf ("linux", "real_size = %x, prot_size = %x, mmap_size = %x\n", ++ (unsigned int) real_size, (unsigned int) prot_size, ++ (unsigned int) mmap_size); ++ ++ /* Calculate the number of pages; Combine the real mode code with ++ the memory map buffer for simplicity. */ ++ real_mode_pages = (real_size >> 12); ++ prot_mode_pages = (prot_size >> 12); ++ ++ /* Initialize the memory pointers with NULL for convenience. */ ++ real_mode_mem = 0; ++ prot_mode_mem = 0; ++ ++ if (grub_efi_get_memory_map (0, &desc_size, 0) <= 0) ++ grub_fatal ("cannot get memory map"); ++ ++ addr = 0; ++ mmap_end = NEXT_MEMORY_DESCRIPTOR (mmap_buf, mmap_size); ++ /* First, find free pages for the real mode code ++ and the memory map buffer. */ ++ for (desc = mmap_buf; ++ desc < mmap_end; ++ desc = NEXT_MEMORY_DESCRIPTOR (desc, desc_size)) ++ { ++ if (desc->type == GRUB_EFI_CONVENTIONAL_MEMORY ++ && desc->num_pages >= real_mode_pages) ++ { ++ grub_efi_physical_address_t physical_end; ++ ++ physical_end = desc->physical_start + (desc->num_pages << 12); ++ ++ grub_dprintf ("linux", "physical_start = %x, physical_end = %x\n", ++ (unsigned) desc->physical_start, ++ (unsigned) physical_end); ++ addr = physical_end - real_size; ++ if (addr < 0x10000) ++ continue; ++ ++ grub_dprintf ("linux", "trying to allocate %u pages at %x\n", ++ (unsigned) real_mode_pages, (unsigned) addr); ++ real_mode_mem = grub_efi_allocate_pages (addr, real_mode_pages); ++ if (! real_mode_mem) ++ grub_fatal ("cannot allocate pages"); ++ ++ desc->num_pages -= real_mode_pages; ++ break; ++ } ++ } ++ ++ if (! real_mode_mem) ++ { ++ grub_printf ("cannot allocate real mode pages"); ++ errnum = ERR_WONT_FIT; ++ goto fail; ++ } ++ ++ /* Next, find free pages for the protected mode code. */ ++ /* XXX what happens if anything is using this address? */ ++ prot_mode_mem = grub_efi_allocate_pages (0x100000, prot_mode_pages); ++ if (! prot_mode_mem) ++ grub_fatal("Cannot allocate pages for VMLINUZ"); ++ ++ return 1; ++ ++ fail: ++ free_pages (); ++ return 0; ++} ++ ++/* do some funky stuff, then boot linux */ ++void ++linux_boot (void) ++{ ++ grub_printf ("zImage is not supported under EFI.\n"); ++ for (;;); ++} ++ ++#ifndef __x86_64__ ++struct { ++ unsigned short limit; ++ unsigned int base; ++} __attribute__ ((packed)) ++ gdt_addr = { 0x800, 0x94000 }, ++ idt_addr = { 0, 0 }; ++ ++unsigned short init_gdt[] = { ++ /* gdt[0]: dummy */ ++ 0, 0, 0, 0, ++ ++ /* gdt[1]: unused */ ++ 0, 0, 0, 0, ++ ++ /* gdt[2]: code */ ++ 0xFFFF, /* 4Gb - (0x100000*0x1000 = 4Gb) */ ++ 0x0000, /* base address=0 */ ++ 0x9A00, /* code read/exec */ ++ 0x00CF, /* granularity=4096, 386 (+5th nibble of limit) */ ++ ++ /* gdt[3]: data */ ++ 0xFFFF, /* 4Gb - (0x100000*0x1000 = 4Gb) */ ++ 0x0000, /* base address=0 */ ++ 0x9200, /* data read/write */ ++ 0x00CF, /* granularity=4096, 386 (+5th nibble of limit) */ ++}; ++#endif ++ ++void ++big_linux_boot (void) ++{ ++ struct linux_kernel_params *params; ++ struct grub_linux_kernel_header *lh; ++ grub_efi_uintn_t map_key; ++ grub_efi_uintn_t desc_size; ++ grub_efi_uint32_t desc_version; ++ int e820_nr_map; ++ int i; ++ ++ params = real_mode_mem; ++ ++ graphics_set_kernel_params (params); ++ ++ if (grub_efi_get_memory_map (&map_key, &desc_size, &desc_version) <= 0) ++ grub_fatal ("cannot get memory map"); ++ ++ /* Pass e820 memmap. */ ++ e820_map_from_efi_map ((struct e820_entry *) params->e820_map, &e820_nr_map, ++ mmap_buf, desc_size, mmap_size); ++ params->e820_nr_map = e820_nr_map; ++ ++ grub_dprintf(__func__,"got to ExitBootServices...\n"); ++ if (! grub_efi_exit_boot_services (map_key)) ++ grub_fatal ("cannot exit boot services"); ++ /* Note that no boot services are available from here. */ ++ ++ lh = ¶ms->hdr; ++ /* Pass EFI parameters. */ ++ if (grub_le_to_cpu16 (lh->version) >= 0x0206) { ++ params->version_0206.efi_mem_desc_size = desc_size; ++ params->version_0206.efi_mem_desc_version = desc_version; ++ params->version_0206.efi_mmap = (grub_uint32_t) (unsigned long) mmap_buf; ++ params->version_0206.efi_mmap_size = mmap_size; ++ } else if (grub_le_to_cpu16 (lh->version) >= 0x0204) { ++ params->version_0204.efi_mem_desc_size = desc_size; ++ params->version_0204.efi_mem_desc_version = desc_version; ++ params->version_0204.efi_mmap = (grub_uint32_t) (unsigned long) mmap_buf; ++ params->version_0204.efi_mmap_size = mmap_size; ++ } else /* dunno */ { ++ params->dunno.efi_mem_desc_size = desc_size; ++ params->dunno.efi_mem_desc_version = desc_version; ++ params->dunno.efi_mmap = (grub_uint32_t) (unsigned long) mmap_buf; ++ params->dunno.efi_mmap_size = mmap_size; ++ params->dunno.efi_mmap_hi = PTR_HI(mmap_buf); ++ } ++ ++#ifdef __x86_64__ ++ /* copy our real mode transition code to 0x700 */ ++ memcpy ((void *) 0x700, switch_image, switch_size); ++ asm volatile ( "mov $0x700, %%rdi" : :); ++ ++ /* Pass parameters. */ ++ asm volatile ("mov %0, %%rsi" : : "m" (real_mode_mem)); ++ asm volatile ("movl %0, %%ebx" : : "m" (params->hdr.code32_start)); ++ ++ /* Enter Linux, switch from 64-bit long mode ++ * to 32-bit protect mode, this code end address ++ * must not exceed 0x1000, because linux kernel bootstrap ++ * code will flush this area ++ */ ++ asm volatile ( "jmp *%%rdi" : :); ++#else ++ ++ asm volatile ( "cli" : : ); ++ ++ grub_memset((void *)gdt_addr.base, gdt_addr.limit, 0); ++ grub_memcpy((void *)gdt_addr.base, init_gdt, sizeof (init_gdt)); ++ ++ if (0) { ++ /* copy our real mode transition code to 0x7C00 */ ++ memcpy ((void *) 0x7C00, switch_image, switch_size); ++ asm volatile ( "mov $0x7C00, %%ebx" : : ); ++ asm volatile ( "jmp *%%ebx" : : ); ++ } else { ++ ++ /* load descriptor table pointers */ ++ // asm volatile ( "lidt %0" : : "m" (idt_addr) ); ++ asm volatile ( "lgdt %0" : : "m" (gdt_addr) ); ++ ++ /* ++ * ebx := 0 (%%TBD - do not know why, yet) ++ * ecx := kernel entry point ++ * esi := address of boot sector and setup data ++ */ ++ ++ asm volatile ( "movl %0, %%esi" : : "m" (real_mode_mem) ); ++ asm volatile ( "movl %0, %%ecx" : : "m" (params->hdr.code32_start) ); ++ asm volatile ( "xorl %%ebx, %%ebx" : : ); ++ ++ /* ++ * Jump to kernel entry point. ++ */ ++ ++ asm volatile ( "jmp *%%ecx" : : ); ++ } ++#endif ++ ++ /* Never reach here. */ ++ for (;;); ++} ++ ++int ++grub_load_linux (char *kernel, char *arg) ++{ ++ struct grub_linux_kernel_header *lh; ++ struct linux_kernel_params *params; ++ static struct linux_kernel_params params_buf; ++ grub_uint8_t setup_sects; ++ grub_size_t real_size, prot_size; ++ grub_ssize_t len; ++ char *dest; ++ ++ if (kernel == NULL) ++ { ++ errnum = ERR_BAD_FILENAME; ++ grub_printf ("no kernel specified"); ++ goto fail1; ++ } ++ ++ if (! grub_open (kernel)) ++ goto fail1; ++ ++ if (grub_read ((char *) ¶ms_buf, sizeof (params_buf)) ++ != sizeof (params_buf)) ++ { ++ errnum = ERR_EXEC_FORMAT; ++ grub_close(); ++ grub_printf ("cannot read the linux header"); ++ goto fail; ++ } ++ ++ lh = ¶ms_buf.hdr; ++ ++ if (lh->boot_flag != grub_cpu_to_le16 (0xaa55)) ++ { ++ errnum = ERR_EXEC_FORMAT; ++ grub_close(); ++ grub_printf ("invalid magic number: %x", lh->boot_flag); ++ goto fail; ++ } ++ ++ /* EFI support is quite new, so reject old versions. */ ++ if (lh->header != grub_cpu_to_le32 (GRUB_LINUX_MAGIC_SIGNATURE) ++ || grub_le_to_cpu16 (lh->version) < 0x0203) ++ { ++ grub_close(); ++ errnum = ERR_EXEC_FORMAT; ++ grub_printf ("too old version"); ++ goto fail; ++ } ++ ++ /* I'm not sure how to support zImage on EFI. */ ++ if (! (lh->loadflags & GRUB_LINUX_FLAG_BIG_KERNEL)) ++ { ++ errnum = ERR_EXEC_FORMAT; ++ grub_printf ("zImage is not supported"); ++ goto fail; ++ } ++ ++ setup_sects = lh->setup_sects; ++ ++ real_size = 0x1000 + grub_strlen(arg); ++ prot_size = grub_file_size () - (setup_sects << SECTOR_BITS) - SECTOR_SIZE; ++ ++ if (! allocate_pages (real_size, prot_size)) ++ goto fail; ++ ++ /* XXX Linux assumes that only elilo can boot Linux on EFI!!! */ ++ lh->type_of_loader = 0x50; ++ ++ lh->cmd_line_ptr = (grub_uint32_t) (unsigned long) real_mode_mem + 0x1000; ++ ++ lh->heap_end_ptr = LINUX_HEAP_END_OFFSET; ++ lh->loadflags |= LINUX_FLAG_CAN_USE_HEAP; ++ ++ lh->ramdisk_image = 0; ++ lh->ramdisk_size = 0; ++ ++ grub_memset(real_mode_mem, 0, real_size); ++ ++ params = (struct linux_kernel_params *) real_mode_mem; ++ ++ grub_memmove(¶ms->hdr, lh, 0x202 + lh->jump_off - 0x1f1); ++ ++ params->cl_magic = GRUB_LINUX_CL_MAGIC; ++ params->cl_offset = 0x1000; ++ ++ /* These are not needed to be precise, because Linux uses these values ++ only to raise an error when the decompression code cannot find good ++ space. */ ++ params->ext_mem = ((32 * 0x100000) >> 10); ++ params->alt_mem = ((32 * 0x100000) >> 10); ++ ++ /* No APM on EFI. */ ++ params->apm_version = 0; ++ params->apm_code_segment = 0; ++ params->apm_entry = 0; ++ params->apm_16bit_code_segment = 0; ++ params->apm_data_segment = 0; ++ params->apm_flags = 0; ++ params->apm_code_len = 0; ++ params->apm_data_len = 0; ++ ++ /* XXX is there any way to use SpeedStep on EFI? */ ++ params->ist_signature = 0; ++ params->ist_command = 0; ++ params->ist_event = 0; ++ params->ist_perf_level = 0; ++ ++ /* Let the kernel probe the information. */ ++ grub_memset (params->hd0_drive_info, 0, sizeof (params->hd0_drive_info)); ++ grub_memset (params->hd1_drive_info, 0, sizeof (params->hd1_drive_info)); ++ ++ /* No MCA on EFI. */ ++ params->rom_config_len = 0; ++ ++ if (grub_le_to_cpu16 (lh->version) >= 0x0206) { ++ grub_memcpy(¶ms->version_0204.efi_signature, "EL32", 4); ++ params->version_0206.efi_system_table = \ ++ (grub_uint32_t) (unsigned long) grub_efi_system_table; ++ } else if (grub_le_to_cpu16 (lh->version) >= 0x0204) { ++ grub_memcpy(¶ms->version_0204.efi_signature, "EFIL", 4); ++ params->version_0204.efi_system_table = \ ++ (grub_uint32_t) (unsigned long) grub_efi_system_table; ++ } else /* dunno */ { ++ params->dunno.efi_signature = GRUB_LINUX_EFI_SIGNATURE_X64; ++ params->dunno.efi_system_table = \ ++ (grub_uint32_t) (unsigned long) grub_efi_system_table; ++ params->dunno.efi_system_table_hi = PTR_HI(grub_efi_system_table); ++ } ++ /* The other EFI parameters are filled when booting. */ ++ ++ /* No EDD */ ++ params->eddbuf_entries = 0; ++ params->edd_mbr_sig_buf_entries = 0; ++ ++ /* XXX there is no way to know if the kernel really supports EFI. */ ++ grub_printf ("[Linux-EFI, setup=0x%x, size=0x%x]\n", (unsigned int)real_size, ++ (unsigned int)prot_size); ++ ++ /* Check the mem= option to limit memory used for initrd. */ ++ { ++ char *mem; ++ ++ mem = grub_strstr (arg, "mem="); ++ if (mem) ++ { ++ char *value = mem + 4; ++ ++ safe_parse_maxulong (&value, &linux_mem_size); ++ switch (errnum) ++ { ++ case ERR_NUMBER_OVERFLOW: ++ /* If an overflow occurs, use the maximum address for ++ initrd instead. This is good, because MAXINT is ++ greater than LINUX_INITRD_MAX_ADDRESS. */ ++ linux_mem_size = LINUX_INITRD_MAX_ADDRESS; ++ errnum = ERR_NONE; ++ break; ++ ++ case ERR_NONE: ++ { ++ int shift = 0; ++ ++ switch (grub_tolower (*value)) ++ { ++ case 'g': ++ shift += 10; ++ case 'm': ++ shift += 10; ++ case 'k': ++ shift += 10; ++ default: ++ break; ++ } ++ ++ /* Check an overflow. */ ++ if (linux_mem_size > (~0UL >> shift)) ++ linux_mem_size = 0; ++ else ++ linux_mem_size <<= shift; ++ } ++ break; ++ ++ default: ++ linux_mem_size = 0; ++ errnum = ERR_NONE; ++ break; ++ } ++ } ++ else ++ linux_mem_size = 0; ++ } ++ ++ dest = grub_stpcpy ((char *) real_mode_mem + 0x1000, skip_to(0, arg)); ++ ++ grub_seek ((setup_sects << SECTOR_BITS) + SECTOR_SIZE); ++ len = prot_size; ++ if (grub_read ((char *) GRUB_LINUX_BZIMAGE_ADDR, len) != len) ++ grub_printf ("Couldn't read file"); ++ ++ if (errnum == ERR_NONE) ++ { ++ loaded = 1; ++ } ++ ++ fail: ++ ++ grub_close (); ++ ++ fail1: ++ ++ if (errnum != ERR_NONE) ++ { ++ loaded = 0; ++ } ++ return errnum ? KERNEL_TYPE_NONE : KERNEL_TYPE_BIG_LINUX; ++} ++ ++int ++grub_load_initrd (char *initrd) ++{ ++ grub_ssize_t size; ++ grub_addr_t addr_min, addr_max; ++ grub_addr_t addr; ++ grub_efi_uintn_t map_key; ++ grub_efi_memory_descriptor_t *mmap_end; ++ grub_efi_memory_descriptor_t *desc; ++ grub_efi_memory_descriptor_t tdesc; ++ grub_efi_uintn_t desc_size; ++ grub_efi_uint32_t desc_version; ++ struct linux_kernel_params *params; ++ ++ if (initrd == NULL) ++ { ++ errnum = ERR_BAD_FILENAME; ++ grub_printf ("No module specified"); ++ goto fail1; ++ } ++ ++ if (! loaded) ++ { ++ errnum = ERR_UNRECOGNIZED; ++ grub_printf ("You need to load the kernel first."); ++ goto fail1; ++ } ++ ++ if (! grub_open (initrd)) ++ goto fail1; ++ ++ size = grub_file_size (); ++ initrd_pages = (page_align (size) >> 12); ++ ++ params = (struct linux_kernel_params *) real_mode_mem; ++ grub_dprintf(__func__, "initrd_pages: %lu\n", initrd_pages); ++ ++ addr_max = grub_cpu_to_le32 (params->hdr.initrd_addr_max); ++ if (linux_mem_size != 0 && linux_mem_size < addr_max) ++ addr_max = linux_mem_size; ++ addr_max &= ~((1 << 12)-1); ++ ++ /* Linux 2.3.xx has a bug in the memory range check, so avoid ++ the last page. ++ Linux 2.2.xx has a bug in the memory range check, which is ++ worse than that of Linux 2.3.xx, so avoid the last 64kb. */ ++ //addr_max -= 0x10000; ++ ++ /* Usually, the compression ratio is about 50%. */ ++ addr_min = (grub_addr_t) prot_mode_mem + ((prot_mode_pages * 3) << 12); ++ grub_dprintf(__func__, "prot_mode_mem=%p prot_mode_pages=%lu\n", prot_mode_mem, prot_mode_pages); ++ ++ /* Find the highest address to put the initrd. */ ++ if (grub_efi_get_memory_map (&map_key, &desc_size, &desc_version) <= 0) ++ grub_fatal ("cannot get memory map"); ++ ++ mmap_end = NEXT_MEMORY_DESCRIPTOR (mmap_buf, mmap_size); ++ addr = 0; ++ for (desc = mmap_buf; ++ desc < mmap_end; ++ desc = NEXT_MEMORY_DESCRIPTOR (desc, desc_size)) ++ { ++ if (desc->type != GRUB_EFI_CONVENTIONAL_MEMORY) ++ continue; ++ memcpy(&tdesc, desc, sizeof (tdesc)); ++ if (tdesc.physical_start < addr_min ++ && tdesc.num_pages > ((addr_min - tdesc.physical_start) >> 12)) ++ { ++ tdesc.num_pages -= ((addr_min - tdesc.physical_start) >> 12); ++ tdesc.physical_start = addr_min; ++ } ++ ++ grub_dprintf(__func__, "desc = {type=%d,ps=0x%llx,vs=0x%llx,sz=%llu,attr=%llu}\n", desc->type, (unsigned long long)desc->physical_start, (unsigned long long)desc->virtual_start, (unsigned long long)desc->num_pages, (unsigned long long)desc->attribute); ++ if (tdesc.physical_start >= addr_min ++ && tdesc.physical_start + page_align (size) <= addr_max ++ && tdesc.num_pages >= initrd_pages) ++ { ++ grub_efi_physical_address_t physical_end; ++ ++ physical_end = tdesc.physical_start + (tdesc.num_pages << 12); ++ if (physical_end > addr_max) ++ physical_end = addr_max; ++ ++ if (physical_end <= 0x7fffffffUL && physical_end > addr) ++ addr = physical_end - page_align (size); ++ } ++ } ++ ++ if (addr == 0) ++ { ++ errnum = ERR_UNRECOGNIZED; ++ grub_printf ("no free pages available"); ++ goto fail; ++ } ++ ++ initrd_mem = grub_efi_allocate_pages (addr, initrd_pages); ++ if (! initrd_mem) ++ grub_fatal ("cannot allocate pages: %x@%x", (unsigned)initrd_pages, ++ (unsigned)addr); ++ ++ if (grub_read (initrd_mem, size) != size) ++ { ++ grub_printf ("Couldn't read file"); ++ goto fail; ++ } ++ ++ grub_printf (" [Initrd, addr=0x%x, size=0x%x]\n", (unsigned int) addr, ++ (unsigned int) size); ++ ++ params->hdr.ramdisk_image = addr; ++ params->hdr.ramdisk_size = size; ++ ++ fail: ++ grub_close (); ++ fail1: ++ return !errnum; ++} +diff --git a/efi/ia32/loader/switch.S b/efi/ia32/loader/switch.S +new file mode 100644 +index 0000000..14142e9 +--- /dev/null ++++ b/efi/ia32/loader/switch.S +@@ -0,0 +1,118 @@ ++# ++# Switch from protected mode to real mode and jump to setup.S ++# image located at %cx:0. ++# ++# This module must be placed into physical memory at 0:7C00h. ++# EFI has some real mode thunking code at 2000:0h. ++# ++# Processor and non-maskable interrupts should be disabled ++# before control is passed to this module. ++# ++ ++.global _start ++ ++.code32 ++.text ++_start: ++ # ++ # Load identity mapped GDT & real mode IDT. ++ # Add 7C00h to the addresses since this is linked to start ++ # at 0h and it is being placed at 7C00h. ++ # ++ ++ lgdt %cs:gdt_48 + 0x7C00 ++ lidt %cs:idt_48 + 0x7C00 ++ ++ # ++ # Turn off PG bit in CR0 and set CR3 to zero. ++ # ++ ++ movl %cr0, %eax ++ andl $0x7FFFFFFF, %eax ++ movl %eax, %cr0 ++ ++ xorl %eax, %eax ++ movl %eax, %cr3 ++ ++ # ++ # Reload CS. ++ # Now we add 7B00h because we need to force the segment ++ # address and selector to be the same. ++ # ++ ++ .byte 0xEA ++ .long pm_reload + 0x7B00 ++ .word 0x10 ++ ++pm_reload: ++ ++.code16 ++ ++ # ++ # Reload DS, ES, FS, GS & SS. ++ # ++ ++ movw $0x18, %ax ++ movw %ax, %ds ++ movw %ax, %es ++ movw %ax, %fs ++ movw %ax, %gs ++ movw %ax, %ss ++ ++ # ++ # Switch to real mode. Clear PE bit in CR0. ++ # ++ ++ movl %cr0, %eax ++ andl $0xFFFFFFFE, %eax ++ movl %eax, %cr0 ++ ++ # ++ # Reload CS. ++ # ++ ++ .byte 0xEA ++ .word rm_reload + 0x7C00 ++ .word 0 ++ ++rm_reload: ++ ++ # ++ # Reload SS & SP. ++ # ++ ++ xorw %ax, %ax ++ movw %ax, %ss ++ movw $0x7BFE, %sp ++ ++ # ++ # Start running setup.S ++ # ++ ++ .byte 0xEA ++ .word 0 ++ .word 0x9020 ++ ++ # ++ # GDT & IDT stuff for switching into real mode. ++ # ++ ++gdt: .word 0, 0, 0, 0 # unused (00h) ++ .word 0, 0, 0, 0 # dummy (08h) ++ .word 0xFFFF, 0x100 # code (10h) ++ .word 0x9A00, 0 ++ .word 0xFFFF, 0x180 # data (18h) ++ .word 0x9200, 0 ++ ++gdt_48: .word 0x08 * 0x400 ++ .long gdt + 0x7C00 ++ ++idt_48: .word 0x400 ++ .long 0 ++ ++ # ++ # Be careful not to exceed 1F0h or the the bootsect.S ++ # parameters will be lost! ++ # ++ ++.end +diff --git a/efi/ia32/loader/switch.h b/efi/ia32/loader/switch.h +new file mode 100644 +index 0000000..4e18dde +--- /dev/null ++++ b/efi/ia32/loader/switch.h +@@ -0,0 +1,19 @@ ++unsigned char switch_image[] = { ++0x2e, 0x0f, 0x01, 0x15, 0x6f, 0x7c, 0x00, 0x00, ++0x2e, 0x0f, 0x01, 0x1d, 0x75, 0x7c, 0x00, 0x00, ++0x0f, 0x20, 0xc0, 0x25, 0xff, 0xff, 0xff, 0x7f, ++0x0f, 0x22, 0xc0, 0x31, 0xc0, 0x0f, 0x22, 0xd8, ++0xea, 0x27, 0x7b, 0x00, 0x00, 0x10, 0x00, 0xb8, ++0x18, 0x00, 0x8e, 0xd8, 0x8e, 0xc0, 0x8e, 0xe0, ++0x8e, 0xe8, 0x8e, 0xd0, 0x0f, 0x20, 0xc0, 0x66, ++0x83, 0xe0, 0xfe, 0x0f, 0x22, 0xc0, 0xea, 0x43, ++0x7c, 0x00, 0x00, 0x31, 0xc0, 0x8e, 0xd0, 0xbc, ++0xfe, 0x7b, 0xea, 0x00, 0x00, 0x20, 0x90, 0x00, ++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, ++0xff, 0x00, 0x01, 0x00, 0x9a, 0x00, 0x00, 0xff, ++0xff, 0x80, 0x01, 0x00, 0x92, 0x00, 0x00, 0x00, ++0x20, 0x4f, 0x7c, 0x00, 0x00, 0x00, 0x04, 0x00, ++0x00, 0x00, 0x00, ++}; ++int switch_size = sizeof switch_image; +diff --git a/efi/ia32/reloc.c b/efi/ia32/reloc.c +new file mode 100644 +index 0000000..72db0f6 +--- /dev/null ++++ b/efi/ia32/reloc.c +@@ -0,0 +1,79 @@ ++/* reloc_x86_64.c - position independent x86_64 ELF shared object relocator ++ Copyright (C) 1999 Hewlett-Packard Co. ++ Contributed by David Mosberger . ++ Copyright (C) 2005 Intel Co. ++ Contributed by Fenghua Yu . ++ ++ This file is part of GNU-EFI, the GNU EFI development environment. ++ ++ GNU EFI is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 2, or (at your option) ++ any later version. ++ ++ GNU EFI is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GNU EFI; see the file COPYING. If not, write to the Free ++ Software Foundation, 59 Temple Place - Suite 330, Boston, MA ++ 02111-1307, USA. */ ++ ++#include ++#include ++#include ++ ++grub_efi_status_t _relocate (long ldbase, ElfW(Dyn) *dyn, ++ grub_efi_handle_t image_handle, ++ grub_efi_system_table_t *sys_tab) ++{ ++ //extern EFI_STATUS efi_main (EFI_HANDLE, EFI_SYSTEM_TABLE *); ++ long relsz = 0, relent = 0; ++ ElfW(Rel) *rel = 0; ++ unsigned long *addr; ++ int i; ++ ++ for (i = 0; dyn[i].d_tag != DT_NULL; ++i) { ++ switch (dyn[i].d_tag) { ++ case DT_REL: ++ rel = (ElfW(Rel)*) ((long) dyn[i].d_un.d_ptr + ldbase); ++ break; ++ ++ case DT_RELSZ: ++ relsz = dyn[i].d_un.d_val; ++ break; ++ ++ case DT_RELENT: ++ relent = dyn[i].d_un.d_val; ++ break; ++ ++ default: ++ continue; ++ } ++ } ++ ++ if (!rel || relent == 0){ ++ return GRUB_EFI_LOAD_ERROR; ++ } ++ while (relsz > 0) { ++ /* apply the relocs */ ++ switch (ELF64_R_TYPE (rel->r_info)) { ++ case R_386_NONE: ++ break; ++ ++ case R_386_RELATIVE: ++ addr = (unsigned long *) (ldbase + rel->r_offset); ++ *addr += ldbase; ++ break; ++ ++ default: ++ break; ++ } ++ rel = (ElfW(Rel)*) ((char *) rel + relent); ++ relsz -= relent; ++ } ++ return GRUB_EFI_SUCCESS; ++} ++ +diff --git a/efi/ia32/setjmp.S b/efi/ia32/setjmp.S +new file mode 100644 +index 0000000..38c33af +--- /dev/null ++++ b/efi/ia32/setjmp.S +@@ -0,0 +1,86 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2000 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++/* This is stolen from libc/x86/setjmp.S in the OSKit */ ++/* ++ * Mach Operating System ++ * Copyright (c) 1991,1990,1989 Carnegie Mellon University ++ * All Rights Reserved. ++ * ++ * Permission to use, copy, modify and distribute this software and its ++ * documentation is hereby granted, provided that both the copyright ++ * notice and this permission notice appear in all copies of the ++ * software, derivative works or modified versions, and any portions ++ * thereof, and that both notices appear in supporting documentation. ++ * ++ * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" ++ * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR ++ * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. ++ * ++ * Carnegie Mellon requests users of this software to return to ++ * ++ * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU ++ * School of Computer Science ++ * Carnegie Mellon University ++ * Pittsburgh PA 15213-3890 ++ * ++ * any improvements or extensions that they make and grant Carnegie Mellon ++ * the rights to redistribute these changes. ++ */ ++/* ++ * C library -- _setjmp, _longjmp ++ * ++ * _longjmp(a,v) ++ * will generate a "return(v)" from ++ * the last call to ++ * _setjmp(a) ++ * by restoring registers from the stack, ++ * The previous signal state is NOT restored. ++ * ++ */ ++#include ++ ++ .file "setjmp.S" ++ ++ .text ++ ++FUNCTION(grub_setjmp) ++ movl 4(%esp), %ecx /* fetch buffer */ ++ movl %ebx, 0(%ecx) ++ movl %esi, 4(%ecx) ++ movl %edi, 8(%ecx) ++ movl %ebp, 12(%ecx) /* save frame pointer of caller */ ++ popl %edx ++ movl %esp, 16(%ecx) /* save stack pointer of caller */ ++ movl %edx, 20(%ecx) /* save pc of caller */ ++ xorl %eax, %eax ++ jmp *%edx ++ ++FUNCTION(grub_longjmp) ++ movl 8(%esp), %eax /* return(v) */ ++ movl 4(%esp), %ecx /* fetch buffer */ ++ movl 0(%ecx), %ebx ++ movl 4(%ecx), %esi ++ movl 8(%ecx), %edi ++ movl 12(%ecx), %ebp ++ movl 16(%ecx), %esp ++ orl %eax, %eax ++ jnz 0f ++ incl %eax ++0: jmp *20(%ecx) /* done, return.... */ +diff --git a/efi/pxe.c b/efi/pxe.c +new file mode 100644 +index 0000000..59f0d0d +--- /dev/null ++++ b/efi/pxe.c +@@ -0,0 +1,460 @@ ++ ++#include ++#include ++#include ++#include ++ ++#include ++#include ++ ++#include "pxe.h" ++#include "dhcp.h" ++ ++/* Search path is: ++ * ++ * X86PC/UNDI/pxelinux/pxelinux.cfg/1902dcf5-7190-d811-bbd6-6ef21c690030 ++ * X86PC/UNDI/pxelinux/pxelinux.cfg/01-00-30-6e-f2-1c-69 ++ * X86PC/UNDI/pxelinux/pxelinux.cfg/0A103437 ++ * X86PC/UNDI/pxelinux/pxelinux.cfg/0A10343 ++ * X86PC/UNDI/pxelinux/pxelinux.cfg/0A1034 ++ * X86PC/UNDI/pxelinux/pxelinux.cfg/0A103 ++ * X86PC/UNDI/pxelinux/pxelinux.cfg/0A10 ++ * X86PC/UNDI/pxelinux/pxelinux.cfg/0A1 ++ * X86PC/UNDI/pxelinux/pxelinux.cfg/0A ++ * X86PC/UNDI/pxelinux/pxelinux.cfg/0 ++ * X86PC/UNDI/pxelinux/pxelinux.cfg/default ++ * ++ * The paths we get from uefi are like: ++ * .BootBootFile: X86PC/UNDI/pxelinux/bootx64.efi ++ * .BootCiAddr: 0.0.0.0 ++ * .BootYiAddr: 10.16.52.158 ++ * .BootSiAddr: 10.16.52.16 ++ */ ++ ++typedef struct { ++ char *options; ++ EFI_DHCP4_PACKET_OPTION *current_option; ++} dhcp_option_parser; ++ ++static void dhcp_option_parser_reset(dhcp_option_parser *parser, ++ EFI_PXE_BASE_CODE_PACKET *packet) ++{ ++ char *addr; ++ ++ addr = (char *)packet; ++ addr += offsetof(EFI_PXE_BASE_CODE_DHCPV4_PACKET, DhcpOptions); ++ parser->current_option = (void *)addr; ++ parser->options = (void *)addr; ++} ++ ++static int dhcp_option_parser_next(dhcp_option_parser *parser, ++ EFI_DHCP4_PACKET_OPTION **option) ++{ ++ char *current_option; ++ if (parser->current_option->OpCode == 255) { ++ *option = NULL; ++ return 0; ++ } ++ current_option = (char *)parser->current_option; ++ current_option += 2 + parser->current_option->Length; ++ parser->current_option = (EFI_DHCP4_PACKET_OPTION *)current_option; ++ ++ *option = parser->current_option; ++ return 1; ++} ++ ++#define DHCPMAGIK "\x63\x82\x53\x63" ++ ++static int get_dhcp_client_id(EFI_PXE_BASE_CODE_PACKET *packet, uuid_t *uuid) ++{ ++ dhcp_option_parser parser; ++ EFI_DHCP4_PACKET_OPTION *option; ++ ++ dhcp_option_parser_reset(&parser, packet); ++ ++ if (memcmp((char *)&packet->Dhcpv4.DhcpMagik, DHCPMAGIK, 4)) ++ return 0; ++ ++ while (dhcp_option_parser_next(&parser, &option)) { ++ int i; ++ char data[option->Length]; ++ ++ if (option->OpCode != 97) ++ continue; ++ ++ if (option->Length != 17) ++ continue; ++ ++ memcpy(data, option->Data, option->Length); ++ if (data[0] != 0) ++ continue; ++ ++ /* 97[17]: 009cfe245ed0c8bd45a79f54ea5fbd3d97 ++ * ^^^^^^^^^^^^ uint8_t[] ++ * ^^ uint8_t ++ * ^^ uint8_t ++ * ^^^^ BE uint16_t ++ * ^^^^ BE uint16_t ++ * ^^^^^^^^ BE uint32_t ++ * ^^ "type". 0 means UUID. ++ */ ++ memcpy(uuid, data+1, 16); ++ uuid->time_low = htonl(uuid->time_low); ++ uuid->time_mid = htons(uuid->time_mid); ++ uuid->time_hi_ver = htons(uuid->time_hi_ver); ++ ++ return 1; ++ } ++ return 0; ++} ++ ++#if 0 ++static void grub_dump_dhcp_options(EFI_PXE_BASE_CODE_PACKET *packet) ++{ ++ dhcp_option_parser parser; ++ EFI_DHCP4_PACKET_OPTION *option; ++ char hex[] = "0123456789abcdef"; ++ int i; ++ int j = 0; ++ ++ dhcp_option_parser_reset(&parser, packet); ++ ++ if (memcmp((char *)&packet->Dhcpv4.DhcpMagik, DHCPMAGIK, 4)) ++ return; ++ ++ /* 54[4]: a0014301 ++ * 51[4]: 00004506 ++ * 1[4]: ffffff00 ++ * 3[4]: a00143ef ++ * 6[8]: a001ff20a001ff30 ++ * 15[48]: 96e6374716c6c6e226f637e2275646861647e236f6d60226f637e2275646861647e236f6d602275646861647e236f6d6 ++ * 28[4]: a00143ff ++ * 40[10]: 275646861647e236f6d6 ++ * 41[8]: a001ff20a001ff30 ++ * 58[4]: 0000a203 ++ * 59[4]: 0000944d ++ * this is the one we want: ++ * 97[17]: 009cfe245ed0c8bd45a79f54ea5fbd3d97 ++ * ^^^^^^^^^^^^ in order ++ * ^^ ++ * ^^ ++ * ^^^^ out of order ++ * ^^^^ out of order ++ * ^^^^^^^^ out of order ++ * ^^ "type". 0 means UUID. ++ * 255[0]: ++ */ ++ while (dhcp_option_parser_next(&parser, &option)) { ++ char data[option->Length + 1]; ++ ++ memcpy(data, option->Data, option->Length); ++ data[option->Length] = '\0'; ++ ++ grub_printf("%d[%d]: ", option->OpCode, option->Length); ++ for (i = 0; i < option->Length; i++) { ++ grub_printf("%c%c", hex[data[i] & 0xf], ++ hex[(data[i] & 0xf0) >> 4]); ++ } ++ printf("\n"); ++ } ++ ++} ++ ++void grub_print_dhcp_info(grub_efi_loaded_image_t *loaded_image) ++{ ++ EFI_PXE_BASE_CODE *pxe = NULL; ++ EFI_PXE_BASE_CODE_PACKET *packet; ++ ++ grub_printf("got to %s\n", __func__); ++ ++ pxe = grub_efi_locate_protocol(&PxeBaseCodeProtocol, NULL); ++ if (pxe == NULL) ++ return; ++ ++ printf("DhcpDiscover options:\n"); ++ packet = (EFI_PXE_BASE_CODE_PACKET *)&pxe->Mode->DhcpDiscover.Dhcpv4; ++ grub_dump_dhcp_options(packet); ++ ++ printf("DhcpAck options:\n"); ++ packet = (EFI_PXE_BASE_CODE_PACKET *)&pxe->Mode->DhcpAck.Dhcpv4; ++ grub_dump_dhcp_options(packet); ++ ++ printf("PxeDiscover options:\n"); ++ packet = (EFI_PXE_BASE_CODE_PACKET *)&pxe->Mode->PxeDiscover.Dhcpv4; ++ grub_dump_dhcp_options(packet); ++ ++ printf("PxeReply options:\n"); ++ packet = (EFI_PXE_BASE_CODE_PACKET *)&pxe->Mode->PxeReply.Dhcpv4; ++ grub_dump_dhcp_options(packet); ++ ++#if 0 ++ printf("pxe->Mode->DhcpAck.Dhcpv4: \n"); ++ printf("\t.BootSrvName: %s\n", pxe->Mode->DhcpAck.Dhcpv4.BootpSrvName); ++ printf("\t.BootBootFile: %s\n", pxe->Mode->DhcpAck.Dhcpv4.BootpBootFile); ++ printf("\t.BootCiAddr: %d.%d.%d.%d\n", ++ pxe->Mode->DhcpAck.Dhcpv4.BootpCiAddr[0], ++ pxe->Mode->DhcpAck.Dhcpv4.BootpCiAddr[1], ++ pxe->Mode->DhcpAck.Dhcpv4.BootpCiAddr[2], ++ pxe->Mode->DhcpAck.Dhcpv4.BootpCiAddr[3]); ++ printf("\t.BootYiAddr: %d.%d.%d.%d\n", ++ pxe->Mode->DhcpAck.Dhcpv4.BootpYiAddr[0], ++ pxe->Mode->DhcpAck.Dhcpv4.BootpYiAddr[1], ++ pxe->Mode->DhcpAck.Dhcpv4.BootpYiAddr[2], ++ pxe->Mode->DhcpAck.Dhcpv4.BootpYiAddr[3]); ++ printf("\t.BootSiAddr: %d.%d.%d.%d\n", ++ pxe->Mode->DhcpAck.Dhcpv4.BootpSiAddr[0], ++ pxe->Mode->DhcpAck.Dhcpv4.BootpSiAddr[1], ++ pxe->Mode->DhcpAck.Dhcpv4.BootpSiAddr[2], ++ pxe->Mode->DhcpAck.Dhcpv4.BootpSiAddr[3]); ++ printf("\t.BootGiAddr: %d.%d.%d.%d\n", ++ pxe->Mode->DhcpAck.Dhcpv4.BootpGiAddr[0], ++ pxe->Mode->DhcpAck.Dhcpv4.BootpGiAddr[1], ++ pxe->Mode->DhcpAck.Dhcpv4.BootpGiAddr[2], ++ pxe->Mode->DhcpAck.Dhcpv4.BootpGiAddr[3]); ++ } ++ printf("\n"); ++#endif ++ ++ ++} ++#endif ++ ++static void icmp_print_error(EFI_PXE_BASE_CODE *pxe) ++{ ++ EFI_PXE_BASE_CODE_ICMP_ERROR *err = &pxe->Mode->IcmpError; ++ int i; ++ //char hex[] = "0123456789abcdef"; ++ ++ printf("icmp error\n"); ++ printf("type: %d code: %d\n", err->Type, err->Code); ++ printf("data: \n"); ++ for(i = 0; i < 464; i+=16) { ++ int x; ++ for (x = i; x < i+4; x++) ++ printf("%02x ", err->Data[x]); ++ printf(" "); ++ for (x = i+4; x < i+8; x++) ++ printf("%02x ", err->Data[x]); ++ printf(" "); ++ printf(" "); ++ for (x = i+8; x < i+12; x++) ++ printf("%02x ", err->Data[x]); ++ printf(" "); ++ for (x = i+12; x < i+16; x++) ++ printf("%02x ", err->Data[x]); ++ printf("\n"); ++ } ++} ++ ++static int grub_efi_pxe_check_for_file( ++ EFI_PXE_BASE_CODE *pxe, ++ EFI_IP_ADDRESS *ServerIp, ++ char *BootpBootFile, ++ char *configname, ++ char **returnpath) ++{ ++ size_t bplen = strlen(BootpBootFile); ++ char *Filename = grub_malloc(24 + bplen + 40); ++ char *lastslash = Filename + bplen; ++ grub_efi_uintn_t size; ++ int i; ++ EFI_STATUS rc; ++ char Buffer[8192]; ++ ++ memcpy(Filename, BootpBootFile, bplen); ++ ++ for (i = 0; i < bplen; i++) { ++ if (Filename[i] == '/') ++ lastslash = Filename + i; ++ } ++ if (*lastslash) { ++ *lastslash++ = '/'; ++ *lastslash = '\0'; ++ } ++ ++ sprintf(lastslash, configname); ++ ++ printf("tftp://%d.%d.%d.%d/%s\n", ++ ServerIp->v4.Addr[0], ServerIp->v4.Addr[1], ++ ServerIp->v4.Addr[2], ServerIp->v4.Addr[3], ++ Filename); ++ ++ rc = tftp_get_file_size(Filename, &size); ++ if (rc == GRUB_EFI_ICMP_ERROR) ++ icmp_print_error(pxe); ++ ++ if (rc == GRUB_EFI_SUCCESS) { ++ *returnpath = Filename; ++ return size; ++ } ++ grub_free(Filename); ++ return 0; ++} ++ ++static void get_pxe_server(EFI_PXE_BASE_CODE *pxe, EFI_IP_ADDRESS **Address) ++{ ++ EFI_IP_ADDRESS *tmp = grub_malloc(sizeof *tmp); ++ if (tmp) { ++ memset(tmp, '\0', sizeof (*tmp)); ++ memcpy(&tmp->Addr[0], pxe->Mode->DhcpAck.Dhcpv4.BootpSiAddr, 4); ++ *Address = tmp; ++ } ++} ++ ++static char *get_pxe_file_dir(EFI_PXE_BASE_CODE *pxe) ++{ ++ char *FileDir = NULL; ++ char *DirEnd = NULL; ++ char *BootpBootFile; ++ size_t bplen; ++ ++ BootpBootFile = pxe->Mode->DhcpAck.Dhcpv4.BootpBootFile; ++ bplen = strlen(BootpBootFile); ++ FileDir = grub_malloc(bplen + 1); ++ memcpy(FileDir, BootpBootFile, bplen); ++ FileDir[bplen] = '\0'; ++ ++ DirEnd = grub_strrchr(FileDir, '/'); ++ if (!DirEnd) ++ DirEnd = FileDir; ++ ++ *DirEnd = '\0'; ++ ++ return FileDir; ++} ++ ++static void set_pxe_info(grub_efi_loaded_image_t *LoadedImage, ++ EFI_PXE_BASE_CODE *pxe) ++{ ++ tftp_info.LoadedImage = LoadedImage; ++ tftp_info.Pxe = pxe; ++ get_pxe_server(pxe, &tftp_info.ServerIp); ++ tftp_info.BasePath = get_pxe_file_dir(pxe); ++} ++ ++char *grub_efi_pxe_get_config_path(grub_efi_loaded_image_t *LoadedImage) ++{ ++ EFI_PXE_BASE_CODE *pxe = NULL; ++ EFI_IP_ADDRESS ServerIp; ++ char *FileName = NULL; ++ EFI_PXE_BASE_CODE_DHCPV4_PACKET *packet; ++ uuid_t uuid; ++ grub_efi_uintn_t FileSize = 0; ++ grub_efi_status_t rc = GRUB_EFI_SUCCESS; ++ char *ConfigPath = NULL; ++ char hex[] = "0123456789ABCDEF"; ++ char hexip[9]; ++ int hexiplen; ++ ++ grub_efi_handle_t *handle, *handles; ++ grub_efi_uintn_t num_handles; ++ ++ handles = grub_efi_locate_handle(GRUB_EFI_BY_PROTOCOL, ++ &PxeBaseCodeProtocol, ++ NULL, &num_handles); ++ ++ if (!handles) ++ return NULL; ++ ++ for (handle = handles; num_handles--; handle++) { ++ pxe = grub_efi_open_protocol(*handle, &PxeBaseCodeProtocol, ++ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL); ++ if (!pxe || !pxe->Mode) ++ continue; ++ if (pxe->Mode->Started && pxe->Mode->DhcpAckReceived) ++ break; ++ } ++ grub_free(handles); ++ ++ if (!pxe) ++ return NULL; ++ ++ set_pxe_info(LoadedImage, pxe); ++ ++ FileName = grub_malloc(strlen("1902dcf5-7190-d811-bbd6-6ef21c690030")); ++ ++ packet = &pxe->Mode->DhcpDiscover.Dhcpv4; ++ ++ if (get_dhcp_client_id((EFI_PXE_BASE_CODE_PACKET *)packet, &uuid)) { ++ ++ uuid.time_mid = 0x0011; ++ sprintf(FileName, ++ "%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X", ++ uuid.time_low, uuid.time_mid, uuid.time_hi_ver, ++ uuid.clock_seq_hi, uuid.clock_seq_low, ++ uuid.node[0], uuid.node[1], uuid.node[2], ++ uuid.node[3], uuid.node[4], uuid.node[5]); ++ ++ rc = tftp_get_file_size(FileName, &FileSize); ++ if (rc == GRUB_EFI_SUCCESS) { ++ char *ReturnFile = grub_malloc(strlen("(nd)/") + ++ strlen(FileName) + 1); ++ sprintf(ReturnFile, "(nd)/%s", FileName); ++ grub_free(FileName); ++ //sprintf(tftp_info.LastPath, FileName); ++ return ReturnFile; ++ } ++ } ++ ++ packet = &pxe->Mode->DhcpAck.Dhcpv4; ++ ++ if (!memcmp(packet->BootpHwAddr + 6, "\x00\x00\x00\x00\x00" ++ "\x00\x00\x00\x00\x00", 10) && ++ memcmp(packet->BootpHwAddr, "\x00\x00\x00\x00\x00\x00", ++ 6)) { ++ char mac[21]; ++ sprintf(mac, "01-%c%c-%c%c-%c%c-%c%c-%c%c-%c%c", ++ hex[(packet->BootpHwAddr[0] & 0xf0) >> 4], ++ hex[packet->BootpHwAddr[0] & 0xf], ++ hex[(packet->BootpHwAddr[1] & 0xf0) >> 4], ++ hex[packet->BootpHwAddr[1] & 0xf], ++ hex[(packet->BootpHwAddr[2] & 0xf0) >> 4], ++ hex[packet->BootpHwAddr[2] & 0xf], ++ hex[(packet->BootpHwAddr[3] & 0xf0) >> 4], ++ hex[packet->BootpHwAddr[3] & 0xf], ++ hex[(packet->BootpHwAddr[4] & 0xf0) >> 4], ++ hex[packet->BootpHwAddr[4] & 0xf], ++ hex[(packet->BootpHwAddr[5] & 0xf0) >> 4], ++ hex[packet->BootpHwAddr[5] & 0xf]); ++ ++ rc = tftp_get_file_size(mac, &FileSize); ++ if (rc == GRUB_EFI_SUCCESS) { ++ char *ReturnFile = grub_malloc(strlen("(nd)/") + ++ strlen(mac) + 1); ++ sprintf(ReturnFile, "(nd)/%s", mac); ++ return ReturnFile; ++ } ++ ++ } ++ ++ sprintf(hexip, "%c%c%c%c%c%c%c%c", ++ hex[(packet->BootpYiAddr[0] & 0xf0) >> 4], ++ hex[packet->BootpYiAddr[0] & 0xf], ++ hex[(packet->BootpYiAddr[1] & 0xf0) >> 4], ++ hex[packet->BootpYiAddr[1] & 0xf], ++ hex[(packet->BootpYiAddr[2] & 0xf0) >> 4], ++ hex[packet->BootpYiAddr[2] & 0xf], ++ hex[(packet->BootpYiAddr[3] & 0xf0) >> 4], ++ hex[packet->BootpYiAddr[3] & 0xf]); ++ ++ for (hexiplen = strlen(hexip); hexiplen > 0; hexiplen--) ++ { ++ hexip[hexiplen] = '\0'; ++ rc = tftp_get_file_size(hexip, &FileSize); ++ if (rc == GRUB_EFI_SUCCESS) { ++ char *ReturnFile = grub_malloc(strlen("(nd)/") + ++ strlen(hexip) + 1); ++ sprintf(ReturnFile, "(nd)/%s", hexip); ++ return ReturnFile; ++ } ++ } ++ ++ rc = tftp_get_file_size("efidefault", &FileSize); ++ if (rc == GRUB_EFI_SUCCESS) { ++ char *ReturnFile = grub_malloc(strlen("(nd)/efidefault")+1); ++ sprintf(ReturnFile, "(nd)/efidefault"); ++ return ReturnFile; ++ } ++ ++ return NULL; ++} +diff --git a/efi/pxe.h b/efi/pxe.h +new file mode 100644 +index 0000000..0a68007 +--- /dev/null ++++ b/efi/pxe.h +@@ -0,0 +1,237 @@ ++#ifndef PXE_H ++#define PXE_H 1 ++ ++#include "byteswap.h" ++ ++extern char *grub_efi_pxe_get_config_path(grub_efi_loaded_image_t *LoadedImage); ++extern void grub_print_dhcp_info(grub_efi_loaded_image_t *loaded_image); ++extern char *grub_efi_pxe_path_to_path_name(void); ++ ++ ++#define EFI_PXE_BASE_CODE_PROTOCOL \ ++ { 0x03c4e603, 0xac28, 0x11d3, {0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} } ++static grub_efi_guid_t PxeBaseCodeProtocol = EFI_PXE_BASE_CODE_PROTOCOL; ++ ++struct _EFI_PXE_BASE_CODE; ++ ++typedef enum { ++ EFI_PXE_BASE_CODE_TFTP_FIRST, ++ EFI_PXE_BASE_CODE_TFTP_GET_FILE_SIZE, ++ EFI_PXE_BASE_CODE_TFTP_READ_FILE, ++ EFI_PXE_BASE_CODE_TFTP_WRITE_FILE, ++ EFI_PXE_BASE_CODE_TFTP_READ_DIRECTORY, ++ EFI_PXE_BASE_CODE_MTFTP_GET_FILE_SIZE, ++ EFI_PXE_BASE_CODE_MTFTP_READ_FILE, ++ EFI_PXE_BASE_CODE_MTFTP_READ_DIRECTORY, ++ EFI_PXE_BASE_CODE_MTFTP_LAST ++} EFI_PXE_BASE_CODE_TFTP_OPCODE; ++ ++typedef struct { ++ grub_efi_uint8_t Addr[4]; ++} EFI_IPv4_ADDRESS; ++ ++typedef struct { ++ grub_efi_uint8_t Addr[16]; ++} EFI_IPv6_ADDRESS; ++ ++typedef struct { ++ grub_efi_uint8_t Addr[32]; ++} EFI_MAC_ADDRESS; ++ ++typedef union { ++ grub_efi_uint32_t Addr[4]; ++ EFI_IPv4_ADDRESS v4; ++ EFI_IPv6_ADDRESS v6; ++} EFI_IP_ADDRESS; ++ ++typedef grub_efi_uint16_t EFI_PXE_BASE_CODE_UDP_PORT; ++ ++typedef struct { ++ EFI_IP_ADDRESS MCastIp; ++ EFI_PXE_BASE_CODE_UDP_PORT CPort; ++ EFI_PXE_BASE_CODE_UDP_PORT SPort; ++ grub_efi_uint16_t ListenTimeout; ++ grub_efi_uint16_t TransmitTimeout; ++} EFI_PXE_BASE_CODE_MTFTP_INFO; ++ ++typedef EFI_STATUS (*EFI_PXE_BASE_CODE_MTFTP)( ++ struct _EFI_PXE_BASE_CODE *This, ++ EFI_PXE_BASE_CODE_TFTP_OPCODE Operation, ++ void *BufferPtr, ++ grub_efi_boolean_t Overwrite, ++ grub_efi_uint64_t *BufferSize, ++ grub_efi_uintn_t *BlockSize, ++ EFI_IP_ADDRESS *ServerIp, ++ grub_efi_uint8_t *Filename, ++ EFI_PXE_BASE_CODE_MTFTP_INFO *Info, ++ grub_efi_boolean_t DontUseBuffer); ++ ++typedef struct { ++ grub_efi_uint8_t BootpOpcode; ++ grub_efi_uint8_t BootpHwType; ++ grub_efi_uint8_t BootpHwAddrLen; ++ grub_efi_uint8_t BootpGateHops; ++ grub_efi_uint32_t BootpIdent; ++ grub_efi_uint16_t BootpSeconds; ++ grub_efi_uint16_t BootpFlags; ++ grub_efi_uint8_t BootpCiAddr[4]; ++ grub_efi_uint8_t BootpYiAddr[4]; ++ grub_efi_uint8_t BootpSiAddr[4]; ++ grub_efi_uint8_t BootpGiAddr[4]; ++ grub_efi_uint8_t BootpHwAddr[16]; ++ grub_efi_uint8_t BootpSrvName[64]; ++ grub_efi_uint8_t BootpBootFile[128]; ++ grub_efi_uint32_t DhcpMagik; ++ grub_efi_uint8_t DhcpOptions[56]; ++} EFI_PXE_BASE_CODE_DHCPV4_PACKET; ++ ++// TBD in EFI v1.1 ++//typedef struct { ++// grub_efi_uint8_t reserved; ++//} EFI_PXE_BASE_CODE_DHCPV6_PACKET; ++ ++typedef union { ++ grub_efi_uint8_t Raw[1472]; ++ EFI_PXE_BASE_CODE_DHCPV4_PACKET Dhcpv4; ++// EFI_PXE_BASE_CODE_DHCPV6_PACKET Dhcpv6; ++} EFI_PXE_BASE_CODE_PACKET; ++ ++typedef struct { ++ grub_efi_uint8_t Type; ++ grub_efi_uint8_t Code; ++ grub_efi_uint16_t Checksum; ++ union { ++ grub_efi_uint32_t reserved; ++ grub_efi_uint32_t Mtu; ++ grub_efi_uint32_t Pointer; ++ struct { ++ grub_efi_uint16_t Identifier; ++ grub_efi_uint16_t Sequence; ++ } Echo; ++ } u; ++ grub_efi_uint8_t Data[494]; ++} EFI_PXE_BASE_CODE_ICMP_ERROR; ++ ++typedef struct { ++ grub_efi_uint8_t ErrorCode; ++ grub_efi_char8_t ErrorString[127]; ++} EFI_PXE_BASE_CODE_TFTP_ERROR; ++ ++ ++#define EFI_PXE_BASE_CODE_MAX_IPCNT 8 ++typedef struct { ++ grub_efi_uint8_t Filters; ++ grub_efi_uint8_t IpCnt; ++ grub_efi_uint16_t reserved; ++ EFI_IP_ADDRESS IpList[EFI_PXE_BASE_CODE_MAX_IPCNT]; ++} EFI_PXE_BASE_CODE_IP_FILTER; ++ ++#define EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP 0x0001 ++#define EFI_PXE_BASE_CODE_IP_FILTER_BROADCAST 0x0002 ++#define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS 0x0004 ++#define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS_MULTICAST 0x0008 ++ ++typedef struct { ++ EFI_IP_ADDRESS IpAddr; ++ EFI_MAC_ADDRESS MacAddr; ++} EFI_PXE_BASE_CODE_ARP_ENTRY; ++ ++typedef struct { ++ EFI_IP_ADDRESS IpAddr; ++ EFI_IP_ADDRESS SubnetMask; ++ EFI_IP_ADDRESS GwAddr; ++} EFI_PXE_BASE_CODE_ROUTE_ENTRY; ++ ++#define EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES 8 ++#define EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES 8 ++ ++typedef struct { ++ grub_efi_boolean_t Started; ++ grub_efi_boolean_t Ipv6Available; ++ grub_efi_boolean_t Ipv6Supported; ++ grub_efi_boolean_t UsingIpv6; ++ grub_efi_boolean_t BisSupported; ++ grub_efi_boolean_t BisDetected; ++ grub_efi_boolean_t AutoArp; ++ grub_efi_boolean_t SendGUID; ++ grub_efi_boolean_t DhcpDiscoverValid; ++ grub_efi_boolean_t DhcpAckReceived; ++ grub_efi_boolean_t ProxyOfferReceived; ++ grub_efi_boolean_t PxeDiscoverValid; ++ grub_efi_boolean_t PxeReplyReceived; ++ grub_efi_boolean_t PxeBisReplyReceived; ++ grub_efi_boolean_t IcmpErrorReceived; ++ grub_efi_boolean_t TftpErrorReceived; ++ grub_efi_boolean_t MakeCallbacks; ++ grub_efi_uint8_t TTL; ++ grub_efi_uint8_t ToS; ++ EFI_IP_ADDRESS StationIp; ++ EFI_IP_ADDRESS SubnetMask; ++ EFI_PXE_BASE_CODE_PACKET DhcpDiscover; ++ EFI_PXE_BASE_CODE_PACKET DhcpAck; ++ EFI_PXE_BASE_CODE_PACKET ProxyOffer; ++ EFI_PXE_BASE_CODE_PACKET PxeDiscover; ++ EFI_PXE_BASE_CODE_PACKET PxeReply; ++ EFI_PXE_BASE_CODE_PACKET PxeBisReply; ++ EFI_PXE_BASE_CODE_IP_FILTER IpFilter; ++ grub_efi_uint32_t ArpCacheEntries; ++ EFI_PXE_BASE_CODE_ARP_ENTRY ArpCache[EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES]; ++ grub_efi_uint32_t RouteTableEntries; ++ EFI_PXE_BASE_CODE_ROUTE_ENTRY RouteTable[EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES]; ++ EFI_PXE_BASE_CODE_ICMP_ERROR IcmpError; ++ EFI_PXE_BASE_CODE_TFTP_ERROR TftpError; ++} EFI_PXE_BASE_CODE_MODE; ++ ++typedef EFI_STATUS (*EFI_PXE_BASE_CODE_START)(); ++typedef EFI_STATUS (*EFI_PXE_BASE_CODE_STOP)(); ++typedef EFI_STATUS (*EFI_PXE_BASE_CODE_DHCP)(); ++typedef EFI_STATUS (*EFI_PXE_BASE_CODE_DISCOVER)(); ++typedef EFI_STATUS (*EFI_PXE_BASE_CODE_UDP_WRITE)(); ++typedef EFI_STATUS (*EFI_PXE_BASE_CODE_UDP_READ)(); ++typedef EFI_STATUS (*EFI_PXE_BASE_CODE_SET_IP_FILTER)(); ++typedef EFI_STATUS (*EFI_PXE_BASE_CODE_ARP)(); ++typedef EFI_STATUS (*EFI_PXE_BASE_CODE_SET_PARAMETERS)(); ++typedef EFI_STATUS (*EFI_PXE_BASE_CODE_SET_STATION_IP)(); ++typedef EFI_STATUS (*EFI_PXE_BASE_CODE_SET_PACKETS)(); ++ ++typedef struct _EFI_PXE_BASE_CODE{ ++ grub_efi_uint64_t Revision; ++ EFI_PXE_BASE_CODE_START Start; ++ EFI_PXE_BASE_CODE_STOP Stop; ++ EFI_PXE_BASE_CODE_DHCP Dhcp; ++ EFI_PXE_BASE_CODE_DISCOVER Discover; ++ EFI_PXE_BASE_CODE_MTFTP Mtftp; ++ EFI_PXE_BASE_CODE_UDP_WRITE UdpWrite; ++ EFI_PXE_BASE_CODE_UDP_READ UdpRead; ++ EFI_PXE_BASE_CODE_SET_IP_FILTER SetIpFilter; ++ EFI_PXE_BASE_CODE_ARP Arp; ++ EFI_PXE_BASE_CODE_SET_PARAMETERS SetParameters; ++ EFI_PXE_BASE_CODE_SET_STATION_IP SetStationIp; ++ EFI_PXE_BASE_CODE_SET_PACKETS SetPackets; ++ EFI_PXE_BASE_CODE_MODE *Mode; ++} EFI_PXE_BASE_CODE; ++ ++typedef struct { ++ grub_efi_uint32_t time_low; ++ grub_efi_uint16_t time_mid; ++ grub_efi_uint16_t time_hi_ver; ++ grub_efi_uint8_t clock_seq_hi; ++ grub_efi_uint8_t clock_seq_low; ++ grub_efi_uint8_t node[6]; ++} uuid_t; ++ ++struct tftp_info { ++ grub_efi_loaded_image_t *LoadedImage; ++ EFI_PXE_BASE_CODE *Pxe; ++ EFI_IP_ADDRESS *ServerIp; ++ char *BasePath; ++ char *LastPath; ++ char *Buffer; ++}; ++ ++extern struct tftp_info tftp_info; ++extern grub_efi_status_t tftp_get_file_size( ++ char *Filename, ++ grub_efi_uintn_t *Size); ++ ++#endif /* PXE_H */ +diff --git a/efi/ugadebug.h b/efi/ugadebug.h +new file mode 100644 +index 0000000..f461c8b +--- /dev/null ++++ b/efi/ugadebug.h +@@ -0,0 +1,201 @@ ++#ifndef UGA_DEBUG_H ++#define UGA_DEBUG_H ++ ++extern void dc(char *file, int line); ++extern void gm(char *file, int line, char *fmt, ...); ++ ++#ifdef UGA ++ ++extern const unsigned char font8x16[]; ++ ++extern grub_efi_guid_t draw_guid; ++ ++static void *tmp_term; ++ ++#define SCREEN_WIDTH 80 ++ ++#define LINE_SIZE_X ( 8 * 100 ) ++#define LINE_START_X(x) (1280 + (x)) ++#define LINE_END_X(x) (LINE_START_X(0) + LINE_SIZE_X - 1) ++ ++#define POS_X(x) (LINE_START_X(x) + (8 * (x))) ++ ++#define LINE_SIZE_Y 16 ++#define LINE_START_Y(y) ((y) * LINE_SIZE_Y) ++#define LINE_END_Y(y) ( (((y)+1) * LINE_SIZE_Y ) - 1) ++ ++#define POS_Y(y) LINE_START_Y(y) ++ ++#define FIRST_LINE 0 ++#define LAST_LINE 75 ++ ++#define format_ascii(buf, val, is_hex, is_cap) ({ \ ++ int _n = sizeof ((buf)) - 2; \ ++ typeof(val) _nval = (val); \ ++ int _negative = 0; \ ++ int _mult = is_hex ? 16 : 10; \ ++ char _a = is_cap ? 'A' : 'a'; \ ++ grub_memset((buf), '\0', sizeof ((buf))); \ ++ if (!(_nval > 0LL)) \ ++ _negative = 1; \ ++ if (_nval == 0LL) \ ++ _negative = 0; \ ++ if (_negative) \ ++ _nval = (_nval ^ -1); \ ++ do { \ ++ int _dig = _nval % _mult; \ ++ (buf)[_n--] = ((_dig > 9) ? _dig + _a - 10 : '0'+_dig); \ ++ } while (_nval /= _mult); \ ++ if (_negative) \ ++ (buf)[_n--] = '-'; \ ++ _mult = 0; \ ++ _n++; \ ++ while (_n < sizeof ((buf))) \ ++ (buf)[_mult++] = (buf)[_n++]; \ ++ if (_negative && _mult > 1) \ ++ ((buf)[_mult-2])++; \ ++ }) ++ ++static grub_efi_uga_draw_t *debug_draw_intf; ++static void debug_putchar(int i, int j, int ch) ++{ ++ grub_efi_uga_pixel_t pixbuf[8 * 16]; ++ grub_efi_uga_pixel_t black = { .red = 0x00, .green = 0x00, .blue = 0x00 }, ++ white = { .red = 0xff, .green = 0xff, .blue = 0xff }; ++ const unsigned char *pat; ++ int x, y; ++ ++ if (!debug_draw_intf) ++ debug_draw_intf = grub_efi_locate_protocol(&draw_guid, NULL); ++ if (!debug_draw_intf) ++ return; ++ ++ pat = font8x16 + (ch << 4); ++ ++ for (y = 0; y < 16; y++) { ++ for (x = 0; x < 8; x++) { ++ int bit = pat[y] & (1 << (7 - x)); ++ ++ grub_memmove(&pixbuf[x + y * 8], bit ? &white : &black, ++ sizeof (pixbuf[0])); ++ } ++ } ++ ++ Call_Service_10(debug_draw_intf->blt, debug_draw_intf, pixbuf, ++ EfiUgaBltBufferToVideo, ++ 0, 0, ++ POS_X(i), POS_Y(j), ++ 8, 16, ++ 0); ++ ++} ++ ++static void dputs(const char *s) ++{ ++ static int row = -1; ++ int col = 89; ++ return; ++ ++ if (s && *s) { ++ do { ++ if (col > 190) { ++ row++; ++ col = 89; ++ } ++ if (row > 50) { ++ row = 0; ++ col = 89; ++ } ++ col++; ++ ++ if (*s == '\n') { ++ col = 1; ++ row++; ++ } else { ++ debug_putchar(col, row, *s); ++ } ++ } while (*(++s)); ++ } ++ row++; ++} ++ ++static int dbg_row = 0; ++static int dbg_col = 0; ++ ++static void dbg_scroll(int new_dbg_col) ++{ ++ grub_efi_uga_pixel_t black[1] ={{.red = 0x00, .green = 0x00, .blue = 0x00}}; ++ ++ if (dbg_row == LAST_LINE) { ++ dbg_col = new_dbg_col; ++ Call_Service_10(debug_draw_intf->blt, debug_draw_intf, NULL, ++ EfiUgaVideoToVideo, ++ 640, LINE_START_Y(1), ++ 640, LINE_START_Y(0), ++ LINE_SIZE_X, LINE_END_Y(LAST_LINE)+1, ++ 0); ++ Call_Service_10(debug_draw_intf->blt, debug_draw_intf, black, ++ EfiUgaVideoFill, ++ 0, 0, ++ 640, LINE_START_Y(LAST_LINE), ++ LINE_END_X(SCREEN_WIDTH)+1, LINE_END_Y(LAST_LINE)+1, ++ 0); ++ } else { ++ dbg_row++; ++ dbg_col = new_dbg_col; ++ } ++// grub_efi_stall(1000000); ++} ++ ++static void dc_backend(char *file, int line) ++{ ++ char linebuf[9] = " "; ++ int pos; ++ ++ linebuf[8] = '\0'; ++ ++ format_ascii(linebuf, line, 0, 0); ++ for (dbg_col=0, pos=0; linebuf[pos]; dbg_col++, pos++) ++ debug_putchar(dbg_col, dbg_row, linebuf[pos]); ++ ++ for (dbg_col=5, pos=0; file[pos]; dbg_col++, pos++) { ++ if (dbg_col > 15) ++ dbg_scroll(0); ++ ++ debug_putchar(dbg_col, dbg_row, file[pos]); ++ } ++} ++ ++void dc(char *file, int line) ++{ ++ dc_backend(file, line); ++ dbg_scroll(0); ++} ++ ++void ++gm(char *file, int line, char *fmt, ...) ++{ ++ va_list ap; ++ char buf[1024]=""; ++ int pos; ++ ++ va_start(ap, fmt); ++ grub_vsprintf(buf, fmt, ap); ++ va_end(ap); ++ ++ dc_backend(file, line); ++ for (dbg_col=16, pos=0; buf[pos]; dbg_col++, pos++) { ++ if (buf[pos] == '\n') ++ continue; ++ if (dbg_col > SCREEN_WIDTH-1) ++ dbg_scroll(16); ++ debug_putchar(dbg_col, dbg_row, buf[pos]); ++ } ++ dbg_scroll(0); ++} ++ ++#define dm() ({ tmp_term = current_term; current_term = term_table; grub_dprintf(__func__, "got here\n"); current_term = tmp_term; }) ++ ++#endif ++ ++#endif /* UGA_DEBUG_H */ +diff --git a/efi/x86_64/callwrap.S b/efi/x86_64/callwrap.S +new file mode 100644 +index 0000000..f574ad0 +--- /dev/null ++++ b/efi/x86_64/callwrap.S +@@ -0,0 +1,274 @@ ++/* ++ * Function calling ABI conversion from Linux to EFI for x86_64 ++ * ++ * Copyright (C) 2007 Intel Corp ++ * Bibo Mao ++ * Huang Ying ++ */ ++ ++/* ++ * EFI calling conventions are documented at: ++ * http://msdn.microsoft.com/en-us/library/ms235286%28v=vs.80%29.aspx ++ * ELF calling conventions are documented at: ++ * http://www.x86-64.org/documentation/abi.pdf ++ * ++ * Basically here are the conversion rules: ++ * a) our function pointer is in %rdi ++ * b) ELF gives us 8-byte aligned %rsp, so we need to pad out to 16-byte ++ * alignment. ++ * c) inside each call thunker, we can only adjust the stack by ++ * multiples of 16 bytes. "offset" below refers to however much ++ * we allocate inside a thunker. ++ * d) rsi through r8 (elf) aka rcx through r9 (ms) require stack space ++ * on the MS side even though it's not getting used at all. ++ * e) arguments are as follows: (elf -> ms) ++ * 1) rdi -> rcx (32 saved) ++ * 2) rsi -> rdx (32 saved) ++ * 3) rdx -> r8 ( 32 saved) ++ * 4) rcx -> r9 (32 saved) ++ * 5) r8 -> 32(%rsp) (48 saved) ++ * 6) r9 -> 40(%rsp) (48 saved) ++ * 7) pad+offset+0(%rsp) -> 48(%rsp) (64 saved) ++ * 8) pad+offset+8(%rsp) -> 56(%rsp) (64 saved) ++ * 9) pad+offset+16(%rsp) -> 64(%rsp) (80 saved) ++ * 10) pad+offset+24(%rsp) -> 72(%rsp) (80 saved) ++ * 11) pad+offset+32(%rsp) -> 80(%rsp) (96 saved) ++ * 12) pad+offset+40(%rsp) -> 88(%rsp) (96 saved) ++ * f) because the first argument we recieve in a thunker is actually the ++ * function to be called, arguments are offset as such: ++ * 0) rdi -> caller ++ * 1) rsi -> rcx (32 saved) ++ * 2) rdx -> rdx (32 saved) ++ * 3) rcx -> r8 (32 saved) ++ * 4) r8 -> r9 (32 saved) ++ * 5) r9 -> 32(%rsp) (48 saved) ++ * 6) pad+offset+0(%rsp) -> 40(%rsp) (48 saved) ++ * 7) pad+offset+8(%rsp) -> 48(%rsp) (64 saved) ++ * 8) pad+offset+16(%rsp) -> 56(%rsp) (64 saved) ++ * 9) pad+offset+24(%rsp) -> 64(%rsp) (80 saved) ++ * 10) pad+offset+32(%rsp) -> 72(%rsp) (80 saved) ++ * 11) pad+offset+40(%rsp) -> 80(%rsp) (96 saved) ++ * 12) pad+offset+48(%rsp) -> 88(%rsp) (96 saved) ++ * e) arguments need to be moved in opposite order to avoid clobbering ++ * f) pad_stack leaves the amount of padding it added in %r11 for functions ++ * to use ++ * g) efi -> elf calls don't need to pad the stack, because the 16-byte ++ * alignment is also always 8-byte aligned. ++ */ ++ ++#define ENTRY(name) \ ++ .globl name; \ ++ name: ++ ++#define out(val) \ ++ push %rax ; \ ++ mov val, %rax ; \ ++ out %al, $128 ; \ ++ pop %rax ++ ++#define pad_stack \ ++ subq $8, %rsp ; /* must be a multiple of 16 - sizeof(%rip) */ \ ++ /* stash some handy integers */ \ ++ mov $0x8, %rax ; \ ++ mov $0x10, %r10 ; \ ++ /* see if we need padding */ \ ++ and %rsp, %rax ; \ ++ /* store the pad amount in %r11 */ \ ++ cmovnz %rax, %r11 ; \ ++ cmovz %r10, %r11 ; \ ++ /* insert the padding */ \ ++ subq %r11, %rsp ; \ ++ /* add the $8 we saved above in %r11 */ \ ++ addq $8, %r11 ; \ ++ /* store the pad amount */ \ ++ mov %r11, (%rsp) ; \ ++ /* compensate for %rip being stored on the stack by call */ \ ++ addq $8, %r11 ++ ++#define unpad_stack \ ++ /* fetch the pad amount we saved (%r11 has been clobbered) */ \ ++ mov (%rsp), %r11 ; \ ++ /* remove the padding */ \ ++ addq %r11, %rsp ++ ++ENTRY(x64_call0) ++ pad_stack ++ subq $32, %rsp ++ call *%rdi ++ addq $32, %rsp ++ unpad_stack ++ ret ++ ++ENTRY(x64_call1) ++ pad_stack ++ subq $32, %rsp ++ mov %rsi, %rcx ++ call *%rdi ++ addq $32, %rsp ++ unpad_stack ++ ret ++ ++ENTRY(x64_call2) ++ pad_stack ++ subq $32, %rsp ++ /* mov %rdx, %rdx */ ++ mov %rsi, %rcx ++ call *%rdi ++ addq $32, %rsp ++ unpad_stack ++ ret ++ ++ENTRY(x64_call3) ++ pad_stack ++ subq $32, %rsp ++ mov %rcx, %r8 ++ /* mov %rdx, %rdx */ ++ mov %rsi, %rcx ++ call *%rdi ++ addq $32, %rsp ++ unpad_stack ++ ret ++ ++ENTRY(x64_call4) ++ pad_stack ++ subq $32, %rsp ++ mov %r8, %r9 ++ mov %rcx, %r8 ++ /* mov %rdx, %rdx */ ++ mov %rsi, %rcx ++ call *%rdi ++ addq $32, %rsp ++ unpad_stack ++ ret ++ ++ENTRY(x64_call5) ++ pad_stack ++ subq $48, %rsp ++ mov %r9, 32(%rsp) ++ mov %r8, %r9 ++ mov %rcx, %r8 ++ /* mov %rdx, %rdx */ ++ mov %rsi, %rcx ++ call *%rdi ++ addq $48, %rsp ++ unpad_stack ++ ret ++ ++ENTRY(x64_call6) ++ pad_stack ++ subq $48, %rsp ++ addq $48, %r11 ++ addq %rsp, %r11 ++ mov (%r11), %rax ++ mov %rax, 40(%rsp) ++ mov %r9, 32(%rsp) ++ mov %r8, %r9 ++ mov %rcx, %r8 ++ /* mov %rdx, %rdx */ ++ mov %rsi, %rcx ++ call *%rdi ++ addq $48, %rsp ++ unpad_stack ++ ret ++ ++ENTRY(x64_call7) ++ pad_stack ++ subq $64, %rsp ++ addq $64, %r11 ++ addq $8, %r11 ++ addq %rsp, %r11 ++ mov (%r11), %rax ++ mov %rax, 48(%rsp) ++ subq $8, %r11 ++ mov (%r11), %rax ++ mov %rax, 40(%rsp) ++ mov %r9, 32(%rsp) ++ mov %r8, %r9 ++ mov %rcx, %r8 ++ /* mov %rdx, %rdx */ ++ mov %rsi, %rcx ++ call *%rdi ++ addq $64, %rsp ++ unpad_stack ++ ret ++ ++ENTRY(x64_call8) ++ pad_stack ++ subq $64, %rsp ++ addq $64, %r11 ++ addq $16, %r11 ++ addq %rsp, %r11 ++ mov (%r11), %rax ++ mov %rax, 56(%rsp) ++ subq $8, %r11 ++ mov (%r11), %rax ++ mov %rax, 48(%rsp) ++ subq $8, %r11 ++ mov (%r11), %rax ++ mov %rax, 40(%rsp) ++ mov %r9, 32(%rsp) ++ mov %r8, %r9 ++ mov %rcx, %r8 ++ /* mov %rdx, %rdx */ ++ mov %rsi, %rcx ++ call *%rdi ++ addq $64, %rsp ++ unpad_stack ++ ret ++ ++ENTRY(x64_call9) ++ pad_stack ++ subq $80, %rsp ++ addq $80, %r11 ++ addq $24, %r11 ++ addq %rsp, %r11 ++ mov (%r11), %rax ++ mov %rax, 64(%rsp) ++ subq $8, %r11 ++ mov (%r11), %rax ++ mov %rax, 56(%rsp) ++ subq $8, %r11 ++ mov (%r11), %rax ++ mov %rax, 48(%rsp) ++ subq $8, %r11 ++ mov (%r11), %rax ++ mov %rax, 40(%rsp) ++ mov %r9, 32(%rsp) ++ mov %r8, %r9 ++ mov %rcx, %r8 ++ /* mov %rdx, %rdx */ ++ mov %rsi, %rcx ++ call *%rdi ++ addq $80, %rsp ++ unpad_stack ++ ret ++ ++ENTRY(x64_call10) ++ pad_stack ++ subq $80, %rsp ++ addq $80, %r11 ++ addq $32, %r11 ++ addq %rsp, %r11 ++ mov (%r11), %rax ++ mov %rax, 72(%rsp) ++ subq $8, %r11 ++ mov (%r11), %rax ++ mov %rax, 64(%rsp) ++ subq $8, %r11 ++ mov (%r11), %rax ++ mov %rax, 56(%rsp) ++ subq $8, %r11 ++ mov (%r11), %rax ++ mov %rax, 48(%rsp) ++ subq $8, %r11 ++ mov (%r11), %rax ++ mov %rax, 40(%rsp) ++ mov %r9, 32(%rsp) ++ mov %r8, %r9 ++ mov %rcx, %r8 ++ /* mov %rdx, %rdx */ ++ mov %rsi, %rcx ++ call *%rdi ++ addq $80, %rsp ++ unpad_stack ++ ret +diff --git a/efi/x86_64/crt0-efi.S b/efi/x86_64/crt0-efi.S +new file mode 100644 +index 0000000..8667694 +--- /dev/null ++++ b/efi/x86_64/crt0-efi.S +@@ -0,0 +1,63 @@ ++/* crt0-efi-x86_64.S - x86_64 EFI startup code. ++ Copyright (C) 1999 Hewlett-Packard Co. ++ Contributed by David Mosberger . ++ Copyright (C) 2005 Intel Co. ++ Contributed by Fenghua Yu . ++ ++ This file is part of GNU-EFI, the GNU EFI development environment. ++ ++ GNU EFI is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 2, or (at your option) ++ any later version. ++ ++ GNU EFI is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GNU EFI; see the file COPYING. If not, write to the Free ++ Software Foundation, 59 Temple Place - Suite 330, Boston, MA ++ 02111-1307, USA. */ ++ ++ .text ++ .align 4 ++ ++ .globl _start ++_start: ++ subq $8, %rsp ++ pushq %rcx ++ pushq %rdx ++ ++0: ++ lea ImageBase(%rip), %rdi ++ lea _DYNAMIC(%rip), %rsi ++ ++ popq %rcx ++ popq %rdx ++ pushq %rcx ++ pushq %rdx ++ call _relocate ++ ++ popq %rdi ++ popq %rsi ++ ++ call efi_main ++ addq $8, %rsp ++ ++.exit: ++ ret ++ ++ // hand-craft a dummy .reloc section so EFI knows it's a relocatable executable: ++ ++ .data ++dummy: .long 0 ++ ++#define IMAGE_REL_ABSOLUTE 0 ++ .section .reloc, "a" ++label1: ++ .long dummy-label1 // Page RVA ++ .long 10 // Block Size (2*4+2) ++ .word (IMAGE_REL_ABSOLUTE<<12) + 0 // reloc for dummy ++ +diff --git a/efi/x86_64/elf_efi.lds b/efi/x86_64/elf_efi.lds +new file mode 100644 +index 0000000..18a9ab9 +--- /dev/null ++++ b/efi/x86_64/elf_efi.lds +@@ -0,0 +1,58 @@ ++OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") ++OUTPUT_ARCH(i386:x86-64) ++ENTRY(_start) ++SECTIONS ++{ ++ . = 0; ++ ImageBase = .; ++ .hash : { *(.hash) } /* this MUST come first! */ ++ . = ALIGN(4096); ++ .eh_frame : ++ { ++ *(.eh_frame) ++ } ++ . = ALIGN(4096); ++ .text : ++ { ++ *(.text) ++ } ++ .reloc : ++ { ++ *(.reloc) ++ } ++ . = ALIGN(4096); ++ .data : ++ { ++ *(.rodata*) ++ *(.got.plt) ++ *(.got) ++ *(.data*) ++ *(.sdata) ++ /* the EFI loader doesn't seem to like a .bss section, so we stick ++ it all into .data: */ ++ *(.sbss) ++ *(.scommon) ++ *(.dynbss) ++ *(.bss) ++ *(COMMON) ++ *(.rel.local) ++ } ++ . = ALIGN(4096); ++ .dynamic : { *(.dynamic) } ++ . = ALIGN(4096); ++ .rela : ++ { ++ *(.rela.data*) ++ *(.rela.got) ++ *(.rela.stab) ++ } ++ . = ALIGN(4096); ++ .dynsym : { *(.dynsym) } ++ . = ALIGN(4096); ++ .dynstr : { *(.dynstr) } ++ . = ALIGN(4096); ++ .ignored.reloc : ++ { ++ *(.rela.reloc) ++ } ++} +diff --git a/efi/x86_64/loader/Makefile b/efi/x86_64/loader/Makefile +new file mode 100644 +index 0000000..0d8b888 +--- /dev/null ++++ b/efi/x86_64/loader/Makefile +@@ -0,0 +1,20 @@ ++ ++all : switch.h ++ ++bin_to_h: bin_to_h.c ++ $(CC) $(CFLAGS) -o $@ $< ++ ++switch.h : switch.bin bin_to_h ++ ./bin_to_h < $< > $@ ++ ++switch.bin : switch ++ objcopy -O binary $< $@ ++ ++switch : switch.o ++ ld.bfd -Ttext-segment=0x688 --init _start -o $@ $< ++ ++switch.o : switch.S ++ as -march=generic64 -defsym _start=0 -o $@ $< ++ ++clean : ++ @rm -vf switch.o switch switch.bin switch.h bin_to_h +diff --git a/efi/x86_64/loader/bin_to_h.c b/efi/x86_64/loader/bin_to_h.c +new file mode 100644 +index 0000000..4cff104 +--- /dev/null ++++ b/efi/x86_64/loader/bin_to_h.c +@@ -0,0 +1,29 @@ ++#include ++#include ++ ++int ++main (void) ++{ ++ unsigned n = 0; ++ int c; ++ ++ printf ("unsigned char switch_image[] = {\n"); ++ ++ while ((c = getchar ()) != EOF) ++ { ++ printf("0x%02x,%s", ++ c & 0xFF, ++ (++n & 0x07) ? " " : "\n"); ++ } ++ ++ if (n & 0x07) ++ { ++ printf("\n"); ++ } ++ ++ printf("};\n" ++ "int switch_size = sizeof switch_image;\n"); ++ ++ return 0; ++} ++ +diff --git a/efi/x86_64/loader/linux.c b/efi/x86_64/loader/linux.c +new file mode 100644 +index 0000000..49a668e +--- /dev/null ++++ b/efi/x86_64/loader/linux.c +@@ -0,0 +1,760 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2006 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "switch.h" ++ ++#include ++ ++#include "graphics.h" ++ ++#define grub_file_size() filemax ++ ++#define NEXT_MEMORY_DESCRIPTOR(desc, size) \ ++ ((grub_efi_memory_descriptor_t *) ((char *) (desc) + (size))) ++ ++#define PTR_HI(x) ((grub_uint32_t) ((unsigned long long)((unsigned long)(x)) >> 32)) ++ ++#ifndef SECTOR_SIZE ++#define SECTOR_SIZE 0x200 ++#endif /* defined(SECTOR_SIZE) */ ++#ifndef SECTOR_BITS ++#define SECTOR_BITS 9 ++#endif /* defined(SECTOR_BITS) */ ++ ++static unsigned long linux_mem_size; ++static int loaded; ++static void *real_mode_mem; ++static void *prot_mode_mem; ++static grub_size_t prot_kernel_size; ++static void *initrd_mem; ++static grub_efi_uintn_t real_mode_pages; ++static grub_efi_uintn_t prot_mode_pages; ++static grub_efi_uintn_t initrd_pages; ++static grub_efi_guid_t graphics_output_guid = GRUB_EFI_GRAPHICS_OUTPUT_GUID; ++ ++static inline grub_size_t ++page_align (grub_size_t size) ++{ ++ return (size + (1 << 12) - 1) & (~((1 << 12) - 1)); ++} ++ ++static void ++free_pages (void) ++{ ++ if (real_mode_mem) ++ { ++ grub_efi_free_pages ((grub_addr_t) real_mode_mem, real_mode_pages); ++ real_mode_mem = 0; ++ } ++ ++ if (initrd_mem) ++ { ++ grub_efi_free_pages ((grub_addr_t) initrd_mem, initrd_pages); ++ initrd_mem = 0; ++ } ++ ++ if (mmap_buf) ++ { ++ grub_efi_free_pages ((grub_addr_t) mmap_buf, mmap_pages); ++ mmap_buf = 0; ++ } ++} ++ ++/* Allocate pages for the real mode code and the protected mode code ++ for linux as well as a memory map buffer. */ ++static int ++allocate_pages (grub_size_t real_size, grub_size_t prot_size) ++{ ++ grub_efi_uintn_t desc_size; ++ grub_efi_memory_descriptor_t *mmap_end; ++ grub_efi_memory_descriptor_t *desc; ++ grub_efi_physical_address_t addr; ++ ++ /* Make sure that each size is aligned to a page boundary. */ ++ real_size = page_align (real_size + SECTOR_SIZE); ++ prot_size = page_align (prot_size); ++ ++ grub_dprintf ("linux", "real_size = %x, prot_size = %x, mmap_size = %x\n", ++ (unsigned int) real_size, (unsigned int) prot_size, ++ (unsigned int) mmap_size); ++ ++ /* Calculate the number of pages; Combine the real mode code with ++ the memory map buffer for simplicity. */ ++ real_mode_pages = (real_size >> 12); ++ prot_mode_pages = (prot_size >> 12); ++ ++ /* Initialize the memory pointers with NULL for convenience. */ ++ real_mode_mem = 0; ++ prot_mode_mem = 0; ++ ++ if (grub_efi_get_memory_map (0, &desc_size, 0) <= 0) ++ grub_fatal ("cannot get memory map"); ++ ++ addr = 0; ++ mmap_end = NEXT_MEMORY_DESCRIPTOR (mmap_buf, mmap_size); ++ /* First, find free pages for the real mode code ++ and the memory map buffer. */ ++ for (desc = mmap_buf; ++ desc < mmap_end; ++ desc = NEXT_MEMORY_DESCRIPTOR (desc, desc_size)) ++ { ++ if (desc->type == GRUB_EFI_CONVENTIONAL_MEMORY ++ && desc->num_pages >= real_mode_pages) ++ { ++ grub_efi_physical_address_t physical_end; ++ ++ physical_end = desc->physical_start + (desc->num_pages << 12); ++ ++ grub_dprintf ("linux", "physical_start = %x, physical_end = %x\n", ++ (unsigned) desc->physical_start, ++ (unsigned) physical_end); ++ addr = physical_end - real_size; ++ if (addr < 0x100000) ++ continue; ++ ++ /* the kernel wants this address to be under 1 gig.*/ ++ if (desc->physical_start > 0x40000000 - real_size) ++ continue; ++ ++ if (addr > 0x40000000 - real_size) ++ addr = 0x40000000 - real_size; ++ ++ grub_dprintf ("linux", "trying to allocate %u pages at %x\n", ++ (unsigned) real_mode_pages, (unsigned) addr); ++ real_mode_mem = grub_efi_allocate_pages (addr, real_mode_pages); ++ if (! real_mode_mem) ++ grub_fatal ("cannot allocate pages"); ++ ++ desc->num_pages -= real_mode_pages; ++ break; ++ } ++ } ++ ++ if (! real_mode_mem) ++ { ++ grub_printf ("cannot allocate real mode pages"); ++ errnum = ERR_WONT_FIT; ++ goto fail; ++ } ++ ++ grub_printf("Trying to allocate %u pages for VMLINUZ\n", ++ (unsigned) prot_mode_pages); ++ prot_mode_mem = grub_efi_allocate_anypages(prot_mode_pages); ++ ++ if (!prot_mode_mem) ++ grub_fatal("Cannot allocate pages for VMLINUZ"); ++ grub_printf("Got pages at %p\n", prot_mode_mem); ++ ++ return 1; ++ ++ fail: ++ free_pages (); ++ return 0; ++} ++ ++/* do some funky stuff, then boot linux */ ++void ++linux_boot (void) ++{ ++ grub_printf ("zImage is not supported under EFI.\n"); ++ for (;;); ++} ++ ++static void ++grub_efi_disable_network (void) ++{ ++ grub_efi_guid_t pci_io_guid = GRUB_EFI_PCI_IO_GUID; ++ grub_efi_pci_io_t *pci_proto; ++ grub_efi_uintn_t num_handles; ++ grub_efi_handle_t *handle, *handles; ++ ++ handles = grub_efi_locate_handle (GRUB_EFI_BY_PROTOCOL, ++ &pci_io_guid, ++ NULL, &num_handles); ++ if (!handles || !num_handles) ++ return; ++ ++ for (handle = handles; num_handles--; handle++) ++ { ++ grub_efi_uint8_t class, pos, id, pm = 0; ++ grub_efi_uint16_t pm_state, vendor; ++ int ttl = 48; ++ ++ pci_proto = grub_efi_open_protocol (*handle, &pci_io_guid, ++ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL); ++ ++ if (!pci_proto) ++ continue; ++ ++ Call_Service_5 (pci_proto->pci.read, pci_proto, ++ grub_efi_pci_io_width_uint8, 0x0b, 1, &class); ++ ++ /* Not a network device */ ++ if (class != 0x02) ++ continue; ++ ++ Call_Service_5 (pci_proto->pci.read, pci_proto, ++ grub_efi_pci_io_width_uint16, 0x00, 1, &vendor); ++ ++ /* Not a Broadcom */ ++ if (vendor != 0x14e4) ++ continue; ++ ++ Call_Service_5 (pci_proto->pci.read, pci_proto, ++ grub_efi_pci_io_width_uint16, 0x2c, 1, &vendor); ++ ++ /* Not an Apple */ ++ if (vendor != 0x106b) ++ continue; ++ ++ pos = 0x34; ++ ++ /* Find the power management registers */ ++ while (ttl--) ++ { ++ Call_Service_5 (pci_proto->pci.read, pci_proto, ++ grub_efi_pci_io_width_uint8, pos, 1, &pos); ++ ++ if (pos < 0x40) ++ break; ++ ++ pos &= ~3; ++ ++ Call_Service_5 (pci_proto->pci.read, pci_proto, ++ grub_efi_pci_io_width_uint8, pos, 1, &id); ++ ++ if (id == 0xff) ++ break; ++ ++ if (id == 0x01) ++ { ++ pm = pos; ++ break; ++ } ++ ++ pos += 1; ++ } ++ ++ if (pm) ++ { ++ Call_Service_5 (pci_proto->pci.read, pci_proto, ++ grub_efi_pci_io_width_uint16, pm + 4, 1, &pm_state); ++ ++ pm_state &= ~0x03; ++ pm_state |= 0x03; ++ ++ /* Set to D3 */ ++ ++ Call_Service_5 (pci_proto->pci.write, pci_proto, ++ grub_efi_pci_io_width_uint16, pm + 4, 1, &pm_state); ++ ++ Call_Service_5 (pci_proto->pci.read, pci_proto, ++ grub_efi_pci_io_width_uint16, pm + 4, 1, ++ &pm_state); ++ } ++ } ++} ++ ++void ++big_linux_boot (void) ++{ ++ struct linux_kernel_params *params; ++ struct grub_linux_kernel_header *lh; ++ grub_efi_uintn_t map_key; ++ grub_efi_uintn_t desc_size; ++ grub_efi_uint32_t desc_version; ++ int e820_nr_map; ++ ++ params = real_mode_mem; ++ ++ graphics_set_kernel_params (params); ++ ++ if (grub_efi_get_memory_map (&map_key, &desc_size, &desc_version) <= 0) ++ grub_fatal ("cannot get memory map"); ++ ++ /* Pass e820 memmap. */ ++ e820_map_from_efi_map ((struct e820_entry *) params->e820_map, &e820_nr_map, ++ mmap_buf, desc_size, mmap_size); ++ params->e820_nr_map = e820_nr_map; ++ ++ grub_efi_disable_network(); ++ ++ if (! grub_efi_exit_boot_services (map_key)) ++ grub_fatal ("cannot exit boot services"); ++ ++ /* Note that no boot services are available from here. */ ++ ++ /* copy vmlinuz image to hdr.code32_start */ ++ memcpy ((char *)(unsigned long)(params->hdr.code32_start), (char *)prot_mode_mem, ++ prot_kernel_size); ++ /* copy switch image */ ++ memcpy ((void *) 0x700, switch_image, switch_size); ++ ++ lh = ¶ms->hdr; ++ /* Pass EFI parameters. */ ++ if (grub_le_to_cpu16 (lh->version) >= 0x0206) { ++ params->version_0206.efi_mem_desc_size = desc_size; ++ params->version_0206.efi_mem_desc_version = desc_version; ++ params->version_0206.efi_mmap = (grub_uint32_t) (unsigned long) mmap_buf; ++ params->version_0206.efi_mmap_size = mmap_size; ++ } else if (grub_le_to_cpu16 (lh->version) >= 0x0204) { ++ params->version_0204.efi_mem_desc_size = desc_size; ++ params->version_0204.efi_mem_desc_version = desc_version; ++ params->version_0204.efi_mmap = (grub_uint32_t) (unsigned long) mmap_buf; ++ params->version_0204.efi_mmap_size = mmap_size; ++ } else /* dunno */ { ++ params->dunno.efi_mem_desc_size = desc_size; ++ params->dunno.efi_mem_desc_version = desc_version; ++ params->dunno.efi_mmap = (grub_uint32_t) (unsigned long) mmap_buf; ++ params->dunno.efi_mmap_size = mmap_size; ++ params->dunno.efi_mmap_hi = PTR_HI(mmap_buf); ++ } ++ ++#ifdef __x86_64__ ++ /* Pass parameters. */ ++ asm volatile ("mov %0, %%rsi" : : "m" (real_mode_mem)); ++ asm volatile ("movl %0, %%ebx" : : "m" (params->hdr.code32_start)); ++ ++ /* Enter Linux, switch from 64-bit long mode ++ * to 32-bit protect mode, this code end address ++ * must not exceed 0x1000, because linux kernel bootstrap ++ * code will flush this area ++ */ ++ asm volatile ( "mov $0x700, %%rdi" : :); ++ asm volatile ( "jmp *%%rdi" : :); ++#else ++ /* Pass parameters. */ ++ asm volatile ("mov %0, %%esi" : : "m" (real_mode_mem)); ++ asm volatile ("movl %0, %%ebx" : : "m" (params->hdr.code32_start)); ++ ++ /* Enter Linux, switch from 64-bit long mode ++ * to 32-bit protect mode, this code end address ++ * must not exceed 0x1000, because linux kernel bootstrap ++ * code will flush this area ++ */ ++ asm volatile ( "mov $0x700, %%edi" : :); ++ asm volatile ( "jmp *%%edi" : :); ++#endif ++ ++ /* Never reach here. */ ++ for (;;); ++} ++ ++int ++grub_load_linux (char *kernel, char *arg) ++{ ++ struct grub_linux_kernel_header *lh; ++ struct linux_kernel_params *params; ++ static struct linux_kernel_params params_buf; ++ grub_uint8_t setup_sects; ++ grub_size_t real_size, prot_size; ++ grub_uint64_t kernel_base, kernel_length, kernel_pages; ++ grub_ssize_t len; ++ char *dest; ++ int align, min_alignment; ++ int relocatable = 0; ++ ++ if (kernel == NULL) ++ { ++ errnum = ERR_BAD_FILENAME; ++ grub_printf ("no kernel specified"); ++ goto fail1; ++ } ++ ++ if (! grub_open (kernel)) ++ goto fail1; ++ ++ if (grub_read ((char *) ¶ms_buf, sizeof (params_buf)) ++ != sizeof (params_buf)) ++ { ++ errnum = ERR_EXEC_FORMAT; ++ grub_printf ("cannot read the linux header"); ++ goto fail; ++ } ++ ++ lh = ¶ms_buf.hdr; ++ ++ if (lh->boot_flag != grub_cpu_to_le16 (0xaa55)) ++ { ++ errnum = ERR_EXEC_FORMAT; ++ grub_printf ("invalid magic number: %x", lh->boot_flag); ++ goto fail; ++ } ++ ++ /* EFI support is quite new, so reject old versions. */ ++ if (lh->header != grub_cpu_to_le32 (GRUB_LINUX_MAGIC_SIGNATURE) ++ || grub_le_to_cpu16 (lh->version) < 0x0203) ++ { ++ errnum = ERR_EXEC_FORMAT; ++ grub_printf ("too old version"); ++ goto fail; ++ } ++ ++ /* I'm not sure how to support zImage on EFI. */ ++ if (! (lh->loadflags & GRUB_LINUX_FLAG_BIG_KERNEL)) ++ { ++ errnum = ERR_EXEC_FORMAT; ++ grub_printf ("zImage is not supported"); ++ goto fail; ++ } ++ ++ setup_sects = lh->setup_sects; ++ ++ real_size = 0x1000 + grub_strlen(arg); ++ prot_size = grub_file_size () - (setup_sects << SECTOR_BITS) - SECTOR_SIZE; ++ prot_kernel_size = prot_size; ++ ++ if (! allocate_pages (real_size, prot_size)) ++ goto fail; ++ ++ /* XXX Linux assumes that only elilo can boot Linux on EFI!!! */ ++ lh->type_of_loader = 0x50; ++ ++ lh->cmd_line_ptr = (grub_uint32_t) (unsigned long) real_mode_mem + 0x1000; ++ lh->ramdisk_image = 0; ++ lh->ramdisk_size = 0; ++ ++ grub_memset(real_mode_mem, 0, real_size); ++ ++ params = (struct linux_kernel_params *) real_mode_mem; ++ ++ grub_memmove(¶ms->hdr, lh, 0x202 + lh->jump_off - 0x1f1); ++ ++ params->cl_magic = GRUB_LINUX_CL_MAGIC; ++ params->cl_offset = 0x1000; ++ ++ /* These are not needed to be precise, because Linux uses these values ++ only to raise an error when the decompression code cannot find good ++ space. */ ++ params->ext_mem = ((32 * 0x100000) >> 10); ++ params->alt_mem = ((32 * 0x100000) >> 10); ++ ++ /* No APM on EFI. */ ++ params->apm_version = 0; ++ params->apm_code_segment = 0; ++ params->apm_entry = 0; ++ params->apm_16bit_code_segment = 0; ++ params->apm_data_segment = 0; ++ params->apm_flags = 0; ++ params->apm_code_len = 0; ++ params->apm_data_len = 0; ++ ++ /* XXX is there any way to use SpeedStep on EFI? */ ++ params->ist_signature = 0; ++ params->ist_command = 0; ++ params->ist_event = 0; ++ params->ist_perf_level = 0; ++ ++ /* Let the kernel probe the information. */ ++ grub_memset (params->hd0_drive_info, 0, sizeof (params->hd0_drive_info)); ++ grub_memset (params->hd1_drive_info, 0, sizeof (params->hd1_drive_info)); ++ ++ /* No MCA on EFI. */ ++ params->rom_config_len = 0; ++ ++ if (grub_le_to_cpu16 (lh->version) >= 0x0206) { ++ grub_memcpy(¶ms->version_0204.efi_signature, "EL64", 4); ++ params->version_0206.efi_system_table = \ ++ (grub_uint32_t) (unsigned long) grub_efi_system_table; ++ } else if (grub_le_to_cpu16 (lh->version) >= 0x0204) { ++ grub_memcpy(¶ms->version_0204.efi_signature, "EFIL", 4); ++ params->version_0204.efi_system_table = \ ++ (grub_uint32_t) (unsigned long) grub_efi_system_table; ++ } else /* dunno */ { ++ params->dunno.efi_signature = GRUB_LINUX_EFI_SIGNATURE_X64; ++ params->dunno.efi_system_table = \ ++ (grub_uint32_t) (unsigned long) grub_efi_system_table; ++ params->dunno.efi_system_table_hi = PTR_HI(grub_efi_system_table); ++ } ++ /* The other EFI parameters are filled when booting. */ ++ ++ /* No EDD */ ++ params->eddbuf_entries = 0; ++ params->edd_mbr_sig_buf_entries = 0; ++ ++ /* XXX there is no way to know if the kernel really supports EFI. */ ++ grub_printf ("[Linux-EFI, setup=0x%x, size=0x%x]\n", (unsigned int)real_size, ++ (unsigned int)prot_size); ++ ++ /* Check the mem= option to limit memory used for initrd. */ ++ { ++ char *mem; ++ ++ mem = grub_strstr (arg, "mem="); ++ if (mem) ++ { ++ char *value = mem + 4; ++ ++ safe_parse_maxulong (&value, &linux_mem_size); ++ switch (errnum) ++ { ++ case ERR_NUMBER_OVERFLOW: ++ /* If an overflow occurs, use the maximum address for ++ initrd instead. This is good, because MAXINT is ++ greater than LINUX_INITRD_MAX_ADDRESS. */ ++ linux_mem_size = LINUX_INITRD_MAX_ADDRESS; ++ errnum = ERR_NONE; ++ break; ++ ++ case ERR_NONE: ++ { ++ int shift = 0; ++ ++ switch (grub_tolower (*value)) ++ { ++ case 'g': ++ shift += 10; ++ case 'm': ++ shift += 10; ++ case 'k': ++ shift += 10; ++ default: ++ break; ++ } ++ ++ /* Check an overflow. */ ++ if (linux_mem_size > (~0UL >> shift)) ++ linux_mem_size = 0; ++ else ++ linux_mem_size <<= shift; ++ } ++ break; ++ ++ default: ++ linux_mem_size = 0; ++ errnum = ERR_NONE; ++ break; ++ } ++ } ++ else ++ linux_mem_size = 0; ++ } ++ ++ dest = grub_stpcpy ((char *) real_mode_mem + 0x1000, skip_to(0, arg)); ++ ++ grub_seek ((setup_sects << SECTOR_BITS) + SECTOR_SIZE); ++ len = prot_size; ++ if (grub_read ((char *)prot_mode_mem, len) != len) ++ grub_printf ("Couldn't read file"); ++ ++ if (lh->version >= 0x205) { ++ for (align = lh->min_alignment; align < 32; align++) { ++ if (lh->kernel_alignment & (1 << align)) { ++ break; ++ } ++ } ++ relocatable = lh->relocatable_kernel; ++ } ++ ++ if (lh->version >= 0x20a) { ++ kernel_base = lh->pref_address; ++ kernel_length = lh->init_size; ++ min_alignment = lh->min_alignment; ++ } else { ++ kernel_base = lh->code32_start; ++ kernel_length = prot_kernel_size; ++ min_alignment = 0; ++ } ++ ++ kernel_pages = (kernel_length + 4095) >> 12; ++ ++ /* Attempt to allocate address space for the kernel */ ++ kernel_base = (grub_uint64_t)grub_efi_allocate_pages(kernel_base, kernel_pages); ++ ++ if (!kernel_base && relocatable) { ++ grub_efi_memory_descriptor_t *desc; ++ grub_efi_memory_descriptor_t tdesc; ++ grub_efi_uintn_t desc_size; ++ ++ if (grub_efi_get_memory_map (0, &desc_size, 0) <= 0) ++ grub_fatal ("cannot get memory map"); ++ ++ while (align >= min_alignment) { ++ for (desc = mmap_buf; ++ desc < NEXT_MEMORY_DESCRIPTOR (mmap_buf, mmap_size); ++ desc = NEXT_MEMORY_DESCRIPTOR (desc, desc_size)) ++ { ++ grub_uint64_t addr; ++ grub_uint64_t alignval = (1 << align) - 1; ++ ++ if (desc->type != GRUB_EFI_CONVENTIONAL_MEMORY) ++ continue; ++ ++ memcpy(&tdesc, desc, sizeof(tdesc)); ++ ++ addr = (tdesc.physical_start + alignval) & ~(alignval); ++ ++ if ((addr + kernel_length) > ++ (tdesc.physical_start + (tdesc.num_pages << 12))) ++ continue; ++ ++ kernel_base = (grub_uint64_t)grub_efi_allocate_pages(addr, kernel_pages); ++ ++ if (kernel_base) { ++ lh->kernel_alignment = 1 << align; ++ break; ++ } ++ } ++ align--; ++ if (kernel_base) ++ break; ++ } ++ } ++ ++ if (!kernel_base) { ++ grub_printf("Failed to allocate kernel memory"); ++ errnum = ERR_UNRECOGNIZED; ++ goto fail; ++ } ++ ++ lh->code32_start = kernel_base; ++ ++ if (errnum == ERR_NONE) ++ { ++ loaded = 1; ++ } ++ ++ fail: ++ ++ grub_close (); ++ ++ fail1: ++ ++ if (errnum != ERR_NONE) ++ { ++ loaded = 0; ++ } ++ return errnum ? KERNEL_TYPE_NONE : KERNEL_TYPE_BIG_LINUX; ++} ++ ++int ++grub_load_initrd (char *initrd) ++{ ++ grub_ssize_t size; ++ grub_addr_t addr_min, addr_max; ++ grub_addr_t addr; ++ grub_efi_memory_descriptor_t *desc; ++ grub_efi_memory_descriptor_t tdesc; ++ grub_efi_uintn_t desc_size; ++ struct linux_kernel_params *params; ++ ++ if (initrd == NULL) ++ { ++ errnum = ERR_BAD_FILENAME; ++ grub_printf ("No module specified"); ++ goto fail1; ++ } ++ ++ if (! loaded) ++ { ++ errnum = ERR_UNRECOGNIZED; ++ grub_printf ("You need to load the kernel first."); ++ goto fail1; ++ } ++ ++ if (! grub_open (initrd)) ++ goto fail1; ++ ++ size = grub_file_size (); ++ initrd_pages = (page_align (size) >> 12); ++ ++ params = (struct linux_kernel_params *) real_mode_mem; ++ grub_dprintf(__func__, "initrd_pages: %lu\n", initrd_pages); ++ ++ addr_max = grub_cpu_to_le32 (params->hdr.initrd_addr_max); ++ if (linux_mem_size != 0 && linux_mem_size < addr_max) ++ addr_max = linux_mem_size; ++ addr_max &= ~((1 << 12)-1); ++ ++ /* Usually, the compression ratio is about 50%. */ ++ addr_min = 0; ++ ++ /* Find the highest address to put the initrd. */ ++ grub_dprintf(__func__, "addr_min: 0x%lx addr_max: 0x%lx mmap_size: %lu\n", addr_min, addr_max, mmap_size); ++ if (grub_efi_get_memory_map (0, &desc_size, 0) <= 0) ++ grub_fatal ("cannot get memory map"); ++ ++ addr = 0; ++ for (desc = mmap_buf; ++ desc < NEXT_MEMORY_DESCRIPTOR (mmap_buf, mmap_size); ++ desc = NEXT_MEMORY_DESCRIPTOR (desc, desc_size)) ++ { ++ if (desc->type != GRUB_EFI_CONVENTIONAL_MEMORY) ++ continue; ++ memcpy(&tdesc, desc, sizeof (tdesc)); ++ if (tdesc.physical_start < addr_min ++ && tdesc.num_pages > ((addr_min - tdesc.physical_start) >> 12)) ++ { ++ tdesc.num_pages -= ((addr_min - tdesc.physical_start) >> 12); ++ tdesc.physical_start = addr_min; ++ } ++ ++ grub_dprintf(__func__, "desc = {type=%d,ps=0x%llx,vs=0x%llx,sz=%llu,attr=%llu}\n", desc->type, (unsigned long long)desc->physical_start, (unsigned long long)desc->virtual_start, (unsigned long long)desc->num_pages, (unsigned long long)desc->attribute); ++ if (tdesc.physical_start >= addr_min ++ && tdesc.physical_start + page_align (size) <= addr_max ++ && tdesc.num_pages >= initrd_pages) ++ { ++ grub_efi_physical_address_t physical_end; ++ ++ physical_end = tdesc.physical_start + (tdesc.num_pages << 12); ++ if (physical_end > addr_max) ++ physical_end = addr_max; ++ ++ if (physical_end <= 0x7fffffffUL && physical_end > addr) ++ addr = physical_end - page_align (size); ++ } ++ } ++ ++ if (addr == 0) ++ { ++ errnum = ERR_UNRECOGNIZED; ++ grub_printf ("no free pages available"); ++ goto fail; ++ } ++ ++ initrd_mem = grub_efi_allocate_pages (addr, initrd_pages); ++ if (! initrd_mem) ++ grub_fatal ("cannot allocate pages: %x@%x", (unsigned)initrd_pages, ++ (unsigned)addr); ++ ++ if (grub_read (initrd_mem, size) != size) ++ { ++ grub_printf ("Couldn't read file"); ++ goto fail; ++ } ++ ++ grub_printf (" [Initrd, addr=0x%x, size=0x%x]\n", (unsigned int) addr, ++ (unsigned int) size); ++ ++ params->hdr.ramdisk_image = addr; ++ params->hdr.ramdisk_size = size; ++ params->hdr.root_dev = 0x0100; /* XXX */ ++ ++ fail: ++ grub_close (); ++ fail1: ++ return !errnum; ++} +diff --git a/efi/x86_64/loader/switch.S b/efi/x86_64/loader/switch.S +new file mode 100644 +index 0000000..d0d8dca +--- /dev/null ++++ b/efi/x86_64/loader/switch.S +@@ -0,0 +1,92 @@ ++# ++# Switch from protected mode to real mode and jump to setup.S ++# image located at %cx:0. ++# ++# This module must be placed into physical memory at 0:7C00h. ++# EFI has some real mode thunking code at 2000:0h. ++# ++# Processor and non-maskable interrupts should be disabled ++# before control is passed to this module. ++# ++ ++#define __KERNEL_CS 0x38 ++#define MSR_EFER 0xc0000080 ++#define _EFER_LME 8 /* Long mode enable */ ++ ++.global _start ++ ++.text ++_start: ++ # ++ # Load identity mapped GDT & real mode IDT. ++ # Add 7C00h to the addresses since this is linked to start ++ # at 0h and it is being placed at 7C00h. ++ # ++ ++ # fixme here EFI bios cs segment is 0x38 ++ # switch to IA32e compatible mode ++ # esi point to kernel parameter ++ # ebx point to kernel entry point ++.code64 ++ cli ++ cld ++ lgdt gdt_64 ++ lidt idt_64 ++ ljmp *exit_ia32e ++ ++ /* switch to IA32e compatible mode */ ++.code32 ++mode32: ++ # ++ # Turn off PG bit in CR0 and set CR3 to zero. ++ # ++ movl %cr0, %eax ++ andl $0x7FFFFFFF, %eax ++ movl %eax, %cr0 ++ ++ /* Setup EFER (Extended Feature Enable Register) */ ++ nop ++ nop ++ movl $0xc0000080, %ecx ++ rdmsr ++ /* Enable Long Mode */ ++ andl $0xFFFFFEFF, %eax ++ /* Make changes effective */ ++ wrmsr ++ ++ /* Disable PAE */ ++ xorl %eax, %eax ++ movl %eax, %cr4 ++ ++ jmp 2f ++2: ++ jmp *%ebx ++//jmp to kernel entry ++ ++.align 8 ++exit_ia32e: ++ .long mode32 ++ .long 0x10 ++ ++gdt_64: .word 0x08 * 9 -1 ++ .quad gdt ++ ++ .word 0, 0, 0 ++idt_64: .word 0 ++ .quad 0 ++ # ++ # GDT & IDT stuff for switching into 32 bit protected mode. ++ # ++ .word 0,0,0 ++gdt: ++ .quad 0x0000000000000000 /* NULL descriptor 0*/ ++ .quad 0x0 /* unused 0x08 */ ++ .quad 0x00cf9a000000ffff /* __KERNEL_CS 0x10 */ ++ .quad 0x00cf92000000ffff /* __KERNEL_DS 0x18 */ ++ .quad 0x00cf92000000ffff ++ .quad 0x00cf92000000ffff ++ .quad 0x00cf92000000ffff ++ .quad 0x00cf9a000000ffff /* __KERNEL32_CS 0x38*/ ++ .quad 0 /* unused */ ++.end ++ +diff --git a/efi/x86_64/loader/switch.h b/efi/x86_64/loader/switch.h +new file mode 100644 +index 0000000..b5dc39a +--- /dev/null ++++ b/efi/x86_64/loader/switch.h +@@ -0,0 +1,25 @@ ++unsigned char switch_image[] = { ++0xfa, 0xfc, 0x0f, 0x01, 0x14, 0x25, 0x48, 0x07, ++0x00, 0x00, 0x0f, 0x01, 0x1c, 0x25, 0x58, 0x07, ++0x00, 0x00, 0xff, 0x2c, 0x25, 0x40, 0x07, 0x00, ++0x00, 0x0f, 0x20, 0xc0, 0x25, 0xff, 0xff, 0xff, ++0x7f, 0x0f, 0x22, 0xc0, 0x90, 0x90, 0xb9, 0x80, ++0x00, 0x00, 0xc0, 0x0f, 0x32, 0x25, 0xff, 0xfe, ++0xff, 0xff, 0x0f, 0x30, 0x31, 0xc0, 0x0f, 0x22, ++0xe0, 0xeb, 0x00, 0xff, 0xe3, 0x8d, 0x76, 0x00, ++0x19, 0x07, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, ++0x47, 0x00, 0x68, 0x07, 0x00, 0x00, 0x00, 0x00, ++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++0xff, 0xff, 0x00, 0x00, 0x00, 0x9a, 0xcf, 0x00, ++0xff, 0xff, 0x00, 0x00, 0x00, 0x92, 0xcf, 0x00, ++0xff, 0xff, 0x00, 0x00, 0x00, 0x92, 0xcf, 0x00, ++0xff, 0xff, 0x00, 0x00, 0x00, 0x92, 0xcf, 0x00, ++0xff, 0xff, 0x00, 0x00, 0x00, 0x92, 0xcf, 0x00, ++0xff, 0xff, 0x00, 0x00, 0x00, 0x9a, 0xcf, 0x00, ++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++}; ++int switch_size = sizeof switch_image; +diff --git a/efi/x86_64/reloc.c b/efi/x86_64/reloc.c +new file mode 100644 +index 0000000..b53eb63 +--- /dev/null ++++ b/efi/x86_64/reloc.c +@@ -0,0 +1,79 @@ ++/* reloc_x86_64.c - position independent x86_64 ELF shared object relocator ++ Copyright (C) 1999 Hewlett-Packard Co. ++ Contributed by David Mosberger . ++ Copyright (C) 2005 Intel Co. ++ Contributed by Fenghua Yu . ++ ++ This file is part of GNU-EFI, the GNU EFI development environment. ++ ++ GNU EFI is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 2, or (at your option) ++ any later version. ++ ++ GNU EFI is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GNU EFI; see the file COPYING. If not, write to the Free ++ Software Foundation, 59 Temple Place - Suite 330, Boston, MA ++ 02111-1307, USA. */ ++ ++#include ++#include ++#include ++ ++grub_efi_status_t _relocate (long ldbase, ElfW(Dyn) *dyn, ++ grub_efi_handle_t image_handle, ++ grub_efi_system_table_t *sys_tab) ++{ ++ //extern EFI_STATUS efi_main (EFI_HANDLE, EFI_SYSTEM_TABLE *); ++ long relsz = 0, relent = 0; ++ ElfW(Rel) *rel = 0; ++ unsigned long *addr; ++ int i; ++ ++ for (i = 0; dyn[i].d_tag != DT_NULL; ++i) { ++ switch (dyn[i].d_tag) { ++ case DT_RELA: ++ rel = (ElfW(Rel)*) ((long) dyn[i].d_un.d_ptr + ldbase); ++ break; ++ ++ case DT_RELASZ: ++ relsz = dyn[i].d_un.d_val; ++ break; ++ ++ case DT_RELAENT: ++ relent = dyn[i].d_un.d_val; ++ break; ++ ++ default: ++ break; ++ } ++ } ++ ++ if (!rel || relent == 0){ ++ return GRUB_EFI_LOAD_ERROR; ++ } ++ while (relsz > 0) { ++ /* apply the relocs */ ++ switch (ELF64_R_TYPE (rel->r_info)) { ++ case R_X86_64_NONE: ++ break; ++ ++ case R_X86_64_RELATIVE: ++ addr = (unsigned long *) (ldbase + rel->r_offset); ++ *addr += ldbase; ++ break; ++ ++ default: ++ break; ++ } ++ rel = (ElfW(Rel)*) ((char *) rel + relent); ++ relsz -= relent; ++ } ++ return GRUB_EFI_SUCCESS; ++} ++ +diff --git a/efi/x86_64/setjmp.S b/efi/x86_64/setjmp.S +new file mode 100644 +index 0000000..e042a14 +--- /dev/null ++++ b/efi/x86_64/setjmp.S +@@ -0,0 +1,56 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2003 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#include ++ ++ .file "setjmp.S" ++ ++ .text ++ ++/* ++ * int grub_setjmp (grub_jmp_buf env) ++ */ ++FUNCTION(grub_setjmp) ++ pop %rsi /* Return address, and adjust the stack */ ++ xor %rax, %rax ++ movq %rbx, 0(%rdi) /* RBX */ ++ movq %rsp, 8(%rdi) /* RSP */ ++ push %rsi ++ movq %rbp, 16(%rdi) /* RBP */ ++ movq %r12, 24(%rdi) /* R12 */ ++ movq %r13, 32(%rdi) /* R13 */ ++ movq %r14, 40(%rdi) /* R14 */ ++ movq %r15, 48(%rdi) /* R15 */ ++ movq %rsi, 56(%rdi) /* RSI */ ++ ret ++ ++/* ++ * int grub_longjmp (grub_jmp_buf env, int val) ++ */ ++FUNCTION(grub_longjmp) ++ movl %esi, %eax ++ movq (%rdi), %rbx ++ movq 8(%rdi), %rsp ++ movq 16(%rdi), %rbp ++ movq 24(%rdi), %r12 ++ movq 32(%rdi), %r13 ++ movq 40(%rdi), %r14 ++ movq 48(%rdi), %r15 ++ jmp *56(%rdi) ++ +diff --git a/efi/xpm.c b/efi/xpm.c +new file mode 100644 +index 0000000..085a10c +--- /dev/null ++++ b/efi/xpm.c +@@ -0,0 +1,231 @@ ++ ++#if defined(SUPPORT_GRAPHICS) || defined(PLATFORM_EFI) || 1 ++ ++#include ++#include ++#include ++ ++#include "xpm.h" ++ ++unsigned char ++xpm_get_pixel_idx(struct xpm *xpm, int x, int y) ++{ ++ if (x < 0 || x >= xpm->width) ++ return -1; ++ if (y < 0 || y >= xpm->width) ++ return -1; ++ return xpm->image[x + (y * xpm->width)]; ++} ++ ++void ++xpm_set_pixel_idx(struct xpm *xpm, int x, int y, unsigned char idx) ++{ ++ xpm->image[y * xpm->width + x] = idx; ++} ++ ++void ++xpm_get_idx(struct xpm *xpm, unsigned char idx, xpm_pixel_t *pixel) ++{ ++ xpm_pixel_t *xpl; ++ if (!pixel) ++ return; ++ if (idx >= xpm->colors) { ++ pixel->red = pixel->green = pixel->blue = 0; ++ return; ++ } ++ xpl = &xpm->palette[idx]; ++ memcpy(pixel, xpl, sizeof (*pixel)); ++// pixel->red = xpl->red; ++// pixel->green = xpl->green; ++// pixel->blue = xpl->blue; ++} ++ ++int ++xpm_get_pixel(struct xpm *xpm, int x, int y, xpm_pixel_t *pixel) ++{ ++ unsigned char idx; ++ idx = xpm_get_pixel_idx(xpm, x, y); ++ xpm_get_idx(xpm, idx, pixel); ++ return 1; ++} ++ ++static int ++hex_to_int(int v) ++{ ++ if (v >= 'A' && v <= 'F') ++ return (v - 'A' + 10); ++ if (v >= 'a' && v <= 'f') ++ return (v - 'a' + 10); ++ return (v - '0'); ++} ++ ++struct xpm * ++xpm_open(char *path) ++{ ++ char c, prev, target[]="/* XPM */\n", base; ++ char buf[32]; ++ int pos = 0; ++ unsigned int i, idx, len, x, y; ++ unsigned char pal[XPM_MAX_COLORS]; ++ struct xpm *xpm; ++ ++ xpm = grub_malloc(sizeof (*xpm)); ++ if (!xpm) ++ return NULL; ++ ++ if (!grub_open(path)) { ++ grub_free(xpm); ++ grub_printf("grub_open(\"%s\") failed\n", path); ++ return NULL; ++ } ++ ++ grub_memset(xpm, '\0', sizeof (*xpm)); ++ ++ prev = '\n'; ++ c = 0; ++ do { ++ if (grub_read(&c, 1) != 1) { ++ grub_printf("grub_read() failed\n"); ++ grub_free(xpm); ++ grub_close(); ++ return NULL; ++ } ++ if ((pos == 0 && prev == '\n') || pos > 0) { ++ if (c == target[pos]) ++ pos++; ++ else ++ pos = 0; ++ } ++ prev = c; ++ } while (target[pos]); ++ ++ /* parse info */ ++ while (grub_read(&c, 1)) { ++ if (c == '"') ++ break; ++ } ++ while (grub_read(&c, 1) && (c == ' ' || c == '\t')) ++ ; ++ ++ i = 0; ++ xpm->width = c - '0'; ++ while (grub_read(&c, 1)) { ++ if (c >= '0' && c <= '9') ++ xpm->width = xpm->width * 10 + c - '0'; ++ else ++ break; ++ } ++ if (xpm->width > XPM_MAX_WIDTH) { ++ grub_printf("xpm->width (%d) was greater than XPM_MAX_WIDTH (%d)\n", ++ xpm->width, XPM_MAX_WIDTH); ++ grub_free(xpm); ++ grub_close(); ++ return NULL; ++ } ++ while (grub_read(&c, 1) && (c == ' ' || c == '\t')) ++ ; ++ ++ xpm->height = c - '0'; ++ while (grub_read(&c, 1)) { ++ if (c >= '0' && c <= '9') ++ xpm->height = xpm->height * 10 + c - '0'; ++ else ++ break; ++ } ++ if (xpm->height > XPM_MAX_HEIGHT) { ++ grub_printf("xpm->height (%d) was greater than XPM_MAX_HEIGHT (%d)\n", ++ xpm->height, XPM_MAX_HEIGHT); ++ grub_free(xpm); ++ grub_close(); ++ return NULL; ++ } ++ ++ while (grub_read(&c, 1) && (c == ' ' || c == '\t')) ++ ; ++ ++ xpm->colors = c - '0'; ++ while (grub_read(&c, 1)) { ++ if (c >= '0' && c <= '9') ++ xpm->colors = xpm->colors * 10 + c - '0'; ++ else ++ break; ++ } ++ ++ base = 0; ++ while (grub_read(&c, 1) && c != '"') ++ ; ++ ++ /* palette */ ++ for (i = 0, idx = 1; i < xpm->colors; i++) { ++ len = 0; ++ ++ while (grub_read(&c, 1) && c != '"') ++ ; ++ grub_read(&c, 1); /* char */ ++ base = c; ++ grub_read(buf, 4); /* \t c # */ ++ ++ while (grub_read(&c, 1) && c != '"') { ++ if (len < sizeof(buf)) ++ buf[len++] = c; ++ } ++ ++ if (len == 6 && idx < xpm->colors) { ++ unsigned char r, g, b; ++ ++ r = (hex_to_int(buf[0]) << 4) | hex_to_int(buf[1]); ++ g = (hex_to_int(buf[2]) << 4) | hex_to_int(buf[3]); ++ b = (hex_to_int(buf[4]) << 4) | hex_to_int(buf[5]); ++ ++ pal[idx] = base; ++ xpm->palette[idx].red = r; ++ xpm->palette[idx].green = g; ++ xpm->palette[idx].blue = b; ++ ++idx; ++ } ++ } ++ ++ /* parse xpm data */ ++ x = y = 0; ++ while (y < xpm->height) { ++ xpm_pixel_t *pixel = NULL; ++ while (1) { ++ if (!grub_read(&c, 1)) { ++ grub_printf("%s %s:%d grub_read() failed\n", __FILE__, __func__, __LINE__); ++ grub_free(xpm); ++ grub_close(); ++ return NULL; ++ } ++ if (c == '"') ++ break; ++ } ++ ++ while (grub_read(&c, 1) && c != '"') { ++ unsigned char *iaddr = NULL; ++ for (i = 1; i < xpm->colors; i++) ++ if (pal[i] == c) { ++ idx = i; ++ break; ++ } ++ ++ xpm_set_pixel_idx(xpm, x, y, idx); ++ ++ if (++x >= xpm->width) { ++ x = 0; ++ ++ ++y; ++ } ++ } ++ } ++ grub_close(); ++ return xpm; ++} ++ ++void ++xpm_free(struct xpm *xpm) ++{ ++ grub_free(xpm); ++} ++ ++ ++#endif /* SUPPORT_GRAPHICS || PLATFORM_EFI */ +diff --git a/efi/xpm.h b/efi/xpm.h +new file mode 100644 +index 0000000..258abc1 +--- /dev/null ++++ b/efi/xpm.h +@@ -0,0 +1,36 @@ ++#ifndef GRUB_XPM_H ++#define GRUB_XPM_H ++ ++#include ++ ++#define XPM_MAX_COLORS 31 ++#define XPM_MAX_WIDTH 640 ++#define XPM_MAX_HEIGHT 480 ++ ++struct xpm_pixel { ++ unsigned char reserved; ++ unsigned char red; ++ unsigned char green; ++ unsigned char blue; ++}; ++typedef struct xpm_pixel xpm_pixel_t; ++ ++struct xpm { ++ int colors; ++ xpm_pixel_t palette[32]; ++ ++ int width; ++ int height; ++ unsigned char image[XPM_MAX_WIDTH * XPM_MAX_HEIGHT]; ++}; ++ ++extern struct xpm *xpm_open(char *path); ++extern void xpm_free(struct xpm *xpm); ++ ++extern unsigned char xpm_get_pixel_idx(struct xpm *xpm, int x, int y); ++extern void xpm_set_pixel_idx(struct xpm *xpm, int x, int y, unsigned char idx); ++extern int xpm_get_pixel(struct xpm *xpm, int x, int y, xpm_pixel_t *pixel); ++ ++extern void xpm_get_idx(struct xpm *xpm, unsigned char idx, xpm_pixel_t *pixel); ++ ++#endif /* GRUB_XPM_H */ +diff --git a/grub.spec b/grub.spec +new file mode 100644 +index 0000000..7e5982d +--- /dev/null ++++ b/grub.spec +@@ -0,0 +1,438 @@ ++Name: grub ++Version: 0.97 ++Release: 20%{?dist} ++Summary: GRUB - the Grand Unified Boot Loader. ++Group: System Environment/Base ++License: GPLv2+ ++ ++ExclusiveArch: i386 x86_64 ++BuildRequires: binutils >= 2.9.1.0.23, ncurses-devel, ncurses-static, texinfo ++BuildRequires: autoconf /usr/lib/crt1.o automake ++PreReq: /sbin/install-info ++Requires: mktemp ++Requires: /usr/bin/cmp ++Requires: system-logos ++BuildRoot: %{_tmppath}/%{name}-%{version}-root ++ ++URL: http://www.gnu.org/software/%{name}/ ++Source0: ftp://alpha.gnu.org/gnu/%{name}/%{name}-%{version}.tar.gz ++Patch0: grub-fedora-9.patch ++ ++%description ++GRUB (Grand Unified Boot Loader) is an experimental boot loader ++capable of booting into most free operating systems - Linux, FreeBSD, ++NetBSD, GNU Mach, and others as well as most commercial operating ++systems. ++ ++%prep ++%setup -q ++%patch0 -p1 -b .fedora-9 ++ ++%build ++autoreconf ++autoconf ++GCCVERS=$(gcc --version | head -1 | cut -d\ -f3 | cut -d. -f1) ++CFLAGS="-Os -g -fno-strict-aliasing -Wall -Werror -Wno-shadow -Wno-unused" ++if [ "$GCCVERS" == "4" ]; then ++ CFLAGS="$CFLAGS -Wno-pointer-sign" ++fi ++export CFLAGS ++%ifarch x86_64 ++%configure --sbindir=/sbin --disable-auto-linux-mem-opt --datarootdir=%{_datadir} --with-platform=efi ++make ++rm -fr $RPM_BUILD_ROOT ++%makeinstall sbindir=${RPM_BUILD_ROOT}/sbin ++mv ${RPM_BUILD_ROOT}/sbin/grub ${RPM_BUILD_ROOT}/sbin/grub-efi ++make clean ++autoreconf ++autoconf ++CFLAGS="$CFLAGS -static" ++export CFLAGS ++%endif ++%configure --sbindir=/sbin --disable-auto-linux-mem-opt --datarootdir=%{_datadir} ++make ++ ++%install ++%makeinstall sbindir=${RPM_BUILD_ROOT}/sbin ++mkdir -p ${RPM_BUILD_ROOT}/boot/grub ++ ++rm -f ${RPM_BUILD_ROOT}/%{_infodir}/dir ++ ++%clean ++rm -fr $RPM_BUILD_ROOT ++ ++%post ++if [ "$1" = 1 ]; then ++ /sbin/install-info --info-dir=%{_infodir} %{_infodir}/grub.info.gz || : ++ /sbin/install-info --info-dir=%{_infodir} %{_infodir}/multiboot.info.gz || : ++fi ++ ++%preun ++if [ "$1" = 0 ] ;then ++ /sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/grub.info.gz || : ++ /sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/multiboot.info.gz || : ++fi ++ ++%files ++%defattr(-,root,root) ++%doc AUTHORS ChangeLog NEWS README COPYING TODO docs/menu.lst ++/boot/grub ++/sbin/grub ++/sbin/grub-install ++/sbin/grub-terminfo ++/sbin/grub-md5-crypt ++%{_bindir}/mbchk ++%{_infodir}/grub* ++%{_infodir}/multiboot* ++%{_mandir}/man*/* ++%{_datadir}/grub ++%ifarch x86_64 ++/sbin/grub-efi ++%endif ++ ++%changelog ++* Mon Nov 05 2007 Peter Jones - 0.97-20 ++- Add EFI support from Intel on x86_64 ++ ++* Thu Sep 20 2007 Peter Jones - 0.97-19 ++- Fix dmraid detection on Intel (isw) controllers in grub-install . ++ ++* Wed Aug 22 2007 Peter Jones - 0.97-18 ++- Fix license tag. ++ ++* Mon Aug 20 2007 Peter Jones - 0.97-17 ++- Use --build-id=none instead of stripping out the build-id notes in the ++ first and second stage loaders. ++ ++* Tue Aug 7 2007 Peter Jones - 0.97-16 ++- Add ext[23] large inode support (patch from Eric Sandeen) ++- Fix auto* breakage that happened when we switched from autoreconf to autoconf ++- Move to original tarball + patch generated from git ++ ++* Mon Jul 16 2007 Peter Jones - 0.97-15 ++- Support booting from GPT ++ ++* Fri Feb 23 2007 Bill Nottingham - 0.97-14 ++- fix scriplet errors when installed with --nodocs ++- coax grub into building (-ltinfo, autoconf instead of autoreconf) ++ ++* Sun Oct 01 2006 Jesse Keating - 0.97-13 ++- rebuilt for unwind info generation, broken in gcc-4.1.1-21 ++ ++* Thu Sep 21 2006 Peter Jones - 0.97-12 ++- Reenable patch 505, which fixes #116311 ++ ++* Tue Aug 15 2006 Peter Jones - 0.97-11 ++- Disable patch 505 (#164497) ++ ++* Wed Aug 2 2006 Peter Jones - 0.97-10 ++- Fix grub-install for multipath ++ ++* Wed Jul 12 2006 Jesse Keating - 0.97-9.1 ++- rebuild ++ ++* Fri Jul 7 2006 Peter Jones - 0.97-9 ++- fix broken error reporting from helper functions ++ ++* Mon Jun 12 2006 Peter Jones - 0.97-8 ++- Fix BIOS keyboard handler to use extended keyboard interrupts, so the ++ Mac Mini works. ++ ++* Mon Jun 5 2006 Jesse Keating - 0.97-7 ++- Added BuildRequires on a 32bit library ++ ++* Sat May 27 2006 Peter Jones - 0.97-6 ++- Fix mactel keyboard problems, patch from Juergen Keil, forwarded by Linus. ++ ++* Mon Mar 13 2006 Peter Jones - 0.97-5 ++- Fix merge error for "bootonce" patch (broken in 0.95->0.97 update) ++- Get rid of the 0.97 "default" stuff, since it conflicts with our working ++ method. ++ ++* Mon Mar 9 2006 Peter Jones - 0.97-4 ++- Fix running "install" multiple times on the same fs in the same invocation ++ of grub. (bz #158426 , patch from lxo@redhat.com) ++ ++* Mon Feb 13 2006 Peter Jones - 0.97-3 ++- fix partition names on dmraid ++ ++* Tue Feb 07 2006 Jesse Keating - 0.97-2.1 ++- rebuilt for new gcc4.1 snapshot and glibc changes ++ ++* Fri Jan 13 2006 Peter Jones - 0.97-2 ++- add dmraid support ++ ++* Wed Dec 14 2005 Peter Jones - 0.97-1 ++- update to grub 0.97 ++ ++* Mon Dec 5 2005 Peter Jones - 0.95-17 ++- fix configure conftest.c bugs ++- add -Wno-unused to defeat gcc41 "unused" checking when there are aliases. ++ ++* Mon Aug 1 2005 Peter Jones - 0.95-16 ++- minor fix to the --recheck fix. ++ ++* Mon Jul 25 2005 Peter Jones 0.95-15 ++- Make "grub-install --recheck" warn the user about how bad it is, ++ and keep a backup file, which it reverts to upon detecting some errors. ++ ++* Wed Jul 6 2005 Peter Jones 0.95-14 ++- Fix changelog to be UTF-8 ++ ++* Thu May 19 2005 Peter Jones 0.95-13 ++- Make the spec work with gcc3 and gcc4, so people can test on existing ++ installations. ++- don't treat i2o like a cciss device, since its partition names aren't done ++ that way. (#158158) ++ ++* Wed Mar 16 2005 Peter Jones 0.95-12 ++- Make installing on a partition work again when not using raid ++ ++* Thu Mar 3 2005 Peter Jones 0.95-11 ++- Make it build with gcc4 ++ ++* Sun Feb 20 2005 Peter Jones 0.95-10 ++- Always install in MBR for raid1 /boot/ ++ ++* Sun Feb 20 2005 Peter Jones 0.95-9 ++- Always use full path for mdadm in grub-install ++ ++* Tue Feb 8 2005 Peter Jones 0.95-8 ++- Mark the simulation stack executable ++- Eliminate the use of inline functions in stage2/builtins.c ++ ++* Wed Jan 11 2005 Peter Jones 0.95-7 ++- Make grub ignore everything before the XPM header in the splash image, ++ fixing #143879 ++- If the boot splash image is missing, use console mode instead ++ of graphics mode. ++- Don't print out errors using the graphics terminal code if we're not ++ actually in graphics mode. ++ ++* Mon Jan 3 2005 Peter Jones 0.95-6 ++- reworked much of how the RAID1 support in grub-install works. This version ++ does not require all the devices in the raid to be listed in device.map, ++ as long as you specify a physical device or partition rather than an md ++ device. It should also work with a windows dual-boot on the first partition. ++ ++* Fri Dec 17 2004 Peter Jones 0.95-5 ++- added support for RAID1 devices to grub-install, partly based on a ++ patch from David Knierim. (#114690) ++ ++* Tue Nov 30 2004 Jeremy Katz 0.95-4 ++- add patch from upstream CVS to handle sparse files on ext[23] ++- make geometry detection a little bit more robust/correct ++- use O_DIRECT when reading/writing from devices. use aligned buffers as ++ needed for read/write (#125808) ++- actually apply the i2o patch ++- detect cciss/cpqarray devices better (#123249) ++ ++* Thu Sep 30 2004 Jeremy Katz - 0.95-3 ++- don't act on the keypress for the menu (#134029) ++ ++* Mon Jun 28 2004 Jeremy Katz - 0.95-2 ++- add patch from Nicholas Miell to make hiddenmenu work more ++ nicely with splashimage mode (#126764) ++ ++* Fri Jun 18 2004 Jeremy Katz - 0.95-1 ++- update to 0.95 ++- drop emd patch, E-MD isn't making forward progress upstream ++- fix static build for x86_64 (#121095) ++ ++* Tue Jun 15 2004 Elliot Lee ++- rebuilt ++ ++* Wed Jun 9 2004 Jeremy Katz ++- require system-logos (#120837) ++ ++* Fri Jun 4 2004 Jeremy Katz ++- buildrequire automake (#125326) ++ ++* Thu May 06 2004 Warren Togami - 0.94-5 ++- i2o patch from Markus Lidel ++ ++* Wed Apr 14 2004 Jeremy Katz - 0.94-4 ++- read geometry off of the disk since HDIO_GETGEO doesn't actually ++ return correct data with a 2.6 kernel ++ ++* Fri Mar 12 2004 Jeremy Katz ++- add texinfo buildrequires (#118146) ++ ++* Wed Feb 25 2004 Jeremy Katz 0.94-3 ++- don't use initrd_max_address ++ ++* Fri Feb 13 2004 Elliot Lee 0.94-2 ++- rebuilt ++ ++* Thu Feb 12 2004 Jeremy Katz 0.94-1 ++- update to 0.94, patch merging and updating as necessary ++ ++* Sat Jan 3 2004 Jeremy Katz 0.93-8 ++- new bootonce patch from Padraig Brady so that you don't lose ++ the old default (#112775) ++ ++* Mon Nov 24 2003 Jeremy Katz ++- add ncurses-devel as a buildrequires (#110732) ++ ++* Tue Oct 14 2003 Jeremy Katz 0.93-7 ++- rebuild ++ ++* Wed Jul 2 2003 Jeremy Katz ++- Requires: /usr/bin/cmp (#98325) ++ ++* Thu May 22 2003 Jeremy Katz 0.93-6 ++- add patch from upstream to fix build with gcc 3.3 ++ ++* Wed Apr 2 2003 Jeremy Katz 0.93-5 ++- add patch to fix support for serial terminfo (#85595) ++ ++* Wed Jan 22 2003 Tim Powers ++- rebuilt ++ ++* Fri Jan 17 2003 Jeremy Katz 0.93-3 ++- add patch from HJ Lu to support large disks (#80980, #63848) ++- add patch to make message when ending edit clearer (#53846) ++ ++* Sun Dec 29 2002 Jeremy Katz 0.93-2 ++- add a patch to reset the terminal type to console before doing 'boot' from ++ the command line (#61069) ++ ++* Sat Dec 28 2002 Jeremy Katz 0.93-1 ++- update to 0.93 ++- update configfile patch ++- graphics patch rework to fit in as a terminal type as present in 0.93 ++- use CFLAGS="-Os -g" ++- patch configure.in to allow building if host_cpu=x86_64, include -m32 in ++ CFLAGS if building on x86_64 ++- link glibc static on x86_64 to not require glibc32 ++- include multiboot info pages ++- drop obsolete patches, reorder remaining patches into some semblance of order ++ ++* Thu Sep 5 2002 Jeremy Katz 0.92-7 ++- splashscreen is in redhat-logos now ++ ++* Tue Sep 3 2002 Jeremy Katz 0.92-6 ++- update splashscreen again ++ ++* Mon Sep 2 2002 Jeremy Katz 0.92-5 ++- update splashscreen ++ ++* Fri Jun 21 2002 Tim Powers 0.92-4 ++- automated rebuild ++ ++* Thu May 23 2002 Tim Powers 0.92-3 ++- automated rebuild ++ ++* Fri May 3 2002 Jeremy Katz 0.92-2 ++- add patch from Grant Edwards to make vga16 + serial happier (#63491) ++ ++* Wed May 1 2002 Jeremy Katz 0.92-1 ++- update to 0.92 ++- back to autoreconf ++- make it work with automake 1.6/autoconf 2.53 ++- use "-falign-jumps=1 -falign-loops=1 -falign-functions=1" instead of ++ "-malign-jumps=1 -malign-loops=1 -malign-functions=1" to not use ++ deprecated gcc options ++ ++* Tue Apr 9 2002 Jeremy Katz 0.91-4 ++- new splash screen ++ ++* Fri Mar 8 2002 Jeremy Katz 0.91-3 ++- include patch from Denis Kitzmen to fix typo causing several options to ++ never be defined (in upstream CVS) ++- include patch from upstream CVS to make displaymem always use hex for ++ consistency ++- add patch from GRUB mailing list from Keir Fraser to add a --once flag to ++ savedefault function so that you can have the equivalent of lilo -R ++ functionality (use 'savedefault --default=N --once' from the grub shell) ++- back to autoconf ++ ++* Sun Jan 27 2002 Jeremy Katz ++- change to use $grubdir instead of /boot/grub in the symlink patch (#58771) ++ ++* Fri Jan 25 2002 Jeremy Katz 0.91-2 ++- don't ifdef out the auto memory passing, use the configure flag instead ++- add a patch so that grub respects mem= from the kernel command line when ++ deciding where to place the initrd (#52558) ++ ++* Mon Jan 21 2002 Jeremy Katz 0.91-1 ++- update to 0.91 final ++- add documentation on splashimage param (#51609) ++ ++* Wed Jan 2 2002 Jeremy Katz 0.91-0.20020102cvs ++- update to current CVS snapshot to fix some of the hangs on boot related ++ to LBA probing (#57503, #55868, and others) ++ ++* Fri Dec 21 2001 Erik Troan 0.90-14 ++- fixed append patch to not require arguments to begin with ++- changed to autoreconf from autoconf ++ ++* Wed Oct 31 2001 Jeremy Katz 0.90-13 ++- include additional patch from Erich to add sync calls in grub-install to ++ work around updated images not being synced to disk ++- fix segfault in grub shell if 'password --md5' is used without specifying ++ a password (#55008) ++ ++* Fri Oct 26 2001 Jeremy Katz 0.90-12 ++- Include Erich Boleyn 's patch to disconnect from the ++ BIOS after APM operations. Should fix #54375 ++ ++* Wed Sep 12 2001 Erik Troan ++- added patch for 'a' option in grub boot menu ++ ++* Wed Sep 5 2001 Jeremy Katz 0.90-11 ++- grub-install: if /boot/grub/grub.conf doesn't exist but /boot/grub/menu.lst ++ does, create a symlink ++ ++* Fri Aug 24 2001 Jeremy Katz ++- pull in patch from upstream CVS to fix md5crypt in grub shell (#52220) ++- use mktemp in grub-install to avoid tmp races ++ ++* Fri Aug 3 2001 Jeremy Katz ++- link curses statically (#49519) ++ ++* Thu Aug 2 2001 Jeremy Katz ++- fix segfault with using the serial device before initialization (#50219) ++ ++* Thu Jul 19 2001 Jeremy Katz ++- add --copy-only flag to grub-install ++ ++* Thu Jul 19 2001 Jeremy Katz ++- copy files in grub-install prior to device probe ++ ++* Thu Jul 19 2001 Jeremy Katz ++- original images don't go in /boot and then grub-install does the right ++ thing ++ ++* Thu Jul 19 2001 Jeremy Katz ++- fix the previous patch ++- put the password prompt in the proper location ++ ++* Thu Jul 19 2001 Jeremy Katz ++- reset the screen when the countdown is cancelled so text will disappear ++ in vga16 mode ++ ++* Mon Jul 16 2001 Jeremy Katz ++- change configfile defaults to grub.conf ++ ++* Sun Jul 15 2001 Jeremy Katz ++- updated to grub 0.90 final ++ ++* Fri Jul 6 2001 Matt Wilson ++- modifed splash screen to a nice shade of blue ++ ++* Tue Jul 3 2001 Matt Wilson ++- added a first cut at a splash screen ++ ++* Sun Jul 1 2001 Nalin Dahyabhai ++- fix datadir mismatch between build and install phases ++ ++* Mon Jun 25 2001 Jeremy Katz ++- update to current CVS ++- forward port VGA16 patch from Paulo César Pereira de ++ Andrade ++- add patch for cciss, ida, and rd raid controllers ++- don't pass mem= to the kernel ++ ++* Wed May 23 2001 Erik Troan ++- initial build for Red Hat +diff --git a/grub/.gitignore b/grub/.gitignore +new file mode 100644 +index 0000000..5d89f6d +--- /dev/null ++++ b/grub/.gitignore +@@ -0,0 +1,2 @@ ++Makefile.in ++.deps +diff --git a/grub/Makefile.am b/grub/Makefile.am +index 7eb2eaa..d4353f7 100644 +--- a/grub/Makefile.am ++++ b/grub/Makefile.am +@@ -15,5 +15,5 @@ AM_CPPFLAGS = -DGRUB_UTIL=1 -DFSYS_EXT2FS=1 -DFSYS_FAT=1 -DFSYS_FFS=1 \ + + AM_CFLAGS = $(GRUB_CFLAGS) + +-grub_SOURCES = main.c asmstub.c ++grub_SOURCES = main.c asmstub.c efitftp.c + grub_LDADD = ../stage2/libgrub.a ../lib/libcommon.a $(GRUB_LIBS) +diff --git a/grub/Makefile.in b/grub/Makefile.in +deleted file mode 100644 +index 136c38f..0000000 +--- a/grub/Makefile.in ++++ /dev/null +@@ -1,445 +0,0 @@ +-# Makefile.in generated by automake 1.9.4 from Makefile.am. +-# @configure_input@ +- +-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +-# 2003, 2004 Free Software Foundation, Inc. +-# This Makefile.in is free software; the Free Software Foundation +-# gives unlimited permission to copy and/or distribute it, +-# with or without modifications, as long as this notice is preserved. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +-# PARTICULAR PURPOSE. +- +-@SET_MAKE@ +- +-SOURCES = $(grub_SOURCES) +- +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ +-VPATH = @srcdir@ +-pkgdatadir = $(datadir)/@PACKAGE@ +-pkglibdir = $(libdir)/@PACKAGE@ +-pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = .. +-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ +-install_sh_DATA = $(install_sh) -c -m 644 +-install_sh_PROGRAM = $(install_sh) -c +-install_sh_SCRIPT = $(install_sh) -c +-INSTALL_HEADER = $(INSTALL_DATA) +-transform = $(program_transform_name) +-NORMAL_INSTALL = : +-PRE_INSTALL = : +-POST_INSTALL = : +-NORMAL_UNINSTALL = : +-PRE_UNINSTALL = : +-POST_UNINSTALL = : +-build_triplet = @build@ +-host_triplet = @host@ +-sbin_PROGRAMS = grub$(EXEEXT) +-subdir = grub +-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ +- $(top_srcdir)/configure.ac +-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ +- $(ACLOCAL_M4) +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-am__installdirs = "$(DESTDIR)$(sbindir)" +-sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +-PROGRAMS = $(sbin_PROGRAMS) +-am_grub_OBJECTS = main.$(OBJEXT) asmstub.$(OBJEXT) +-grub_OBJECTS = $(am_grub_OBJECTS) +-am__DEPENDENCIES_1 = +-grub_DEPENDENCIES = ../stage2/libgrub.a ../lib/libcommon.a \ +- $(am__DEPENDENCIES_1) +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-SOURCES = $(grub_SOURCES) +-DIST_SOURCES = $(grub_SOURCES) +-ETAGS = etags +-CTAGS = ctags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +-ACLOCAL = @ACLOCAL@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ +-AMTAR = @AMTAR@ +-AUTOCONF = @AUTOCONF@ +-AUTOHEADER = @AUTOHEADER@ +-AUTOMAKE = @AUTOMAKE@ +-AWK = @AWK@ +-BUILD_EXAMPLE_KERNEL_FALSE = @BUILD_EXAMPLE_KERNEL_FALSE@ +-BUILD_EXAMPLE_KERNEL_TRUE = @BUILD_EXAMPLE_KERNEL_TRUE@ +-CC = @CC@ +-CCAS = @CCAS@ +-CCASFLAGS = @CCASFLAGS@ +-CCDEPMODE = @CCDEPMODE@ +-CFLAGS = @CFLAGS@ +-CPP = @CPP@ +-CPPFLAGS = @CPPFLAGS@ +-CYGPATH_W = @CYGPATH_W@ +-DEFS = @DEFS@ +-DEPDIR = @DEPDIR@ +-DISKLESS_SUPPORT_FALSE = @DISKLESS_SUPPORT_FALSE@ +-DISKLESS_SUPPORT_TRUE = @DISKLESS_SUPPORT_TRUE@ +-ECHO_C = @ECHO_C@ +-ECHO_N = @ECHO_N@ +-ECHO_T = @ECHO_T@ +-EGREP = @EGREP@ +-EXEEXT = @EXEEXT@ +-FSYS_CFLAGS = @FSYS_CFLAGS@ +-GRUB_CFLAGS = @GRUB_CFLAGS@ +-GRUB_LIBS = @GRUB_LIBS@ +-HERCULES_SUPPORT_FALSE = @HERCULES_SUPPORT_FALSE@ +-HERCULES_SUPPORT_TRUE = @HERCULES_SUPPORT_TRUE@ +-INSTALL_DATA = @INSTALL_DATA@ +-INSTALL_PROGRAM = @INSTALL_PROGRAM@ +-INSTALL_SCRIPT = @INSTALL_SCRIPT@ +-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +-LDFLAGS = @LDFLAGS@ +-LIBOBJS = @LIBOBJS@ +-LIBS = @LIBS@ +-LTLIBOBJS = @LTLIBOBJS@ +-MAINT = @MAINT@ +-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +-MAKEINFO = @MAKEINFO@ +-NETBOOT_DRIVERS = @NETBOOT_DRIVERS@ +-NETBOOT_SUPPORT_FALSE = @NETBOOT_SUPPORT_FALSE@ +-NETBOOT_SUPPORT_TRUE = @NETBOOT_SUPPORT_TRUE@ +-NET_CFLAGS = @NET_CFLAGS@ +-NET_EXTRAFLAGS = @NET_EXTRAFLAGS@ +-OBJCOPY = @OBJCOPY@ +-OBJEXT = @OBJEXT@ +-PACKAGE = @PACKAGE@ +-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +-PACKAGE_NAME = @PACKAGE_NAME@ +-PACKAGE_STRING = @PACKAGE_STRING@ +-PACKAGE_TARNAME = @PACKAGE_TARNAME@ +-PACKAGE_VERSION = @PACKAGE_VERSION@ +-PATH_SEPARATOR = @PATH_SEPARATOR@ +-PERL = @PERL@ +-RANLIB = @RANLIB@ +-SERIAL_SPEED_SIMULATION_FALSE = @SERIAL_SPEED_SIMULATION_FALSE@ +-SERIAL_SPEED_SIMULATION_TRUE = @SERIAL_SPEED_SIMULATION_TRUE@ +-SERIAL_SUPPORT_FALSE = @SERIAL_SUPPORT_FALSE@ +-SERIAL_SUPPORT_TRUE = @SERIAL_SUPPORT_TRUE@ +-SET_MAKE = @SET_MAKE@ +-SHELL = @SHELL@ +-STAGE1_CFLAGS = @STAGE1_CFLAGS@ +-STAGE2_CFLAGS = @STAGE2_CFLAGS@ +-STRIP = @STRIP@ +-VERSION = @VERSION@ +-ac_ct_CC = @ac_ct_CC@ +-ac_ct_OBJCOPY = @ac_ct_OBJCOPY@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__include = @am__include@ +-am__leading_dot = @am__leading_dot@ +-am__quote = @am__quote@ +-am__tar = @am__tar@ +-am__untar = @am__untar@ +-bindir = @bindir@ +-build = @build@ +-build_alias = @build_alias@ +-build_cpu = @build_cpu@ +-build_os = @build_os@ +-build_vendor = @build_vendor@ +-datadir = @datadir@ +-exec_prefix = @exec_prefix@ +-host = @host@ +-host_alias = @host_alias@ +-host_cpu = @host_cpu@ +-host_os = @host_os@ +-host_vendor = @host_vendor@ +-includedir = @includedir@ +-infodir = @infodir@ +-install_sh = @install_sh@ +-libdir = @libdir@ +-libexecdir = @libexecdir@ +-localstatedir = @localstatedir@ +-mandir = @mandir@ +-mkdir_p = @mkdir_p@ +-oldincludedir = @oldincludedir@ +-prefix = @prefix@ +-program_transform_name = @program_transform_name@ +-sbindir = @sbindir@ +-sharedstatedir = @sharedstatedir@ +-sysconfdir = @sysconfdir@ +-target_alias = @target_alias@ +-@SERIAL_SPEED_SIMULATION_FALSE@SERIAL_FLAGS = -DSUPPORT_SERIAL=1 +-@SERIAL_SPEED_SIMULATION_TRUE@SERIAL_FLAGS = -DSUPPORT_SERIAL=1 -DSIMULATE_SLOWNESS_OF_SERIAL=1 +-AM_CPPFLAGS = -DGRUB_UTIL=1 -DFSYS_EXT2FS=1 -DFSYS_FAT=1 -DFSYS_FFS=1 \ +- -DFSYS_ISO9660=1 -DFSYS_JFS=1 -DFSYS_MINIX=1 -DFSYS_REISERFS=1 \ +- -DFSYS_UFS2=1 -DFSYS_VSTAFS=1 -DFSYS_XFS=1 \ +- -DUSE_MD5_PASSWORDS=1 -DSUPPORT_HERCULES=1 \ +- $(SERIAL_FLAGS) -I$(top_srcdir)/stage2 \ +- -I$(top_srcdir)/stage1 -I$(top_srcdir)/lib +- +-AM_CFLAGS = $(GRUB_CFLAGS) +-grub_SOURCES = main.c asmstub.c +-grub_LDADD = ../stage2/libgrub.a ../lib/libcommon.a $(GRUB_LIBS) +-all: all-am +- +-.SUFFIXES: +-.SUFFIXES: .c .o .obj +-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) +- @for dep in $?; do \ +- case '$(am__configure_deps)' in \ +- *$$dep*) \ +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +- && exit 0; \ +- exit 1;; \ +- esac; \ +- done; \ +- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu grub/Makefile'; \ +- cd $(top_srcdir) && \ +- $(AUTOMAKE) --gnu grub/Makefile +-.PRECIOUS: Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- @case '$?' in \ +- *config.status*) \ +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ +- *) \ +- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ +- esac; +- +-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +- +-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +-install-sbinPROGRAMS: $(sbin_PROGRAMS) +- @$(NORMAL_INSTALL) +- test -z "$(sbindir)" || $(mkdir_p) "$(DESTDIR)$(sbindir)" +- @list='$(sbin_PROGRAMS)'; for p in $$list; do \ +- p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ +- if test -f $$p \ +- ; then \ +- f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ +- echo " $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(sbindir)/$$f'"; \ +- $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(sbindir)/$$f" || exit 1; \ +- else :; fi; \ +- done +- +-uninstall-sbinPROGRAMS: +- @$(NORMAL_UNINSTALL) +- @list='$(sbin_PROGRAMS)'; for p in $$list; do \ +- f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ +- echo " rm -f '$(DESTDIR)$(sbindir)/$$f'"; \ +- rm -f "$(DESTDIR)$(sbindir)/$$f"; \ +- done +- +-clean-sbinPROGRAMS: +- -test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS) +-grub$(EXEEXT): $(grub_OBJECTS) $(grub_DEPENDENCIES) +- @rm -f grub$(EXEEXT) +- $(LINK) $(grub_LDFLAGS) $(grub_OBJECTS) $(grub_LDADD) $(LIBS) +- +-mostlyclean-compile: +- -rm -f *.$(OBJEXT) +- +-distclean-compile: +- -rm -f *.tab.c +- +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asmstub.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ +- +-.c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c $< +- +-.c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +-uninstall-info-am: +- +-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- mkid -fID $$unique +-tags: TAGS +- +-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) +- tags=; \ +- here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ +- test -n "$$unique" || unique=$$empty_fix; \ +- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique; \ +- fi +-ctags: CTAGS +-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) +- tags=; \ +- here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- test -z "$(CTAGS_ARGS)$$tags$$unique" \ +- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ +- $$tags $$unique +- +-GTAGS: +- here=`$(am__cd) $(top_builddir) && pwd` \ +- && cd $(top_srcdir) \ +- && gtags -i $(GTAGS_ARGS) $$here +- +-distclean-tags: +- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +- +-distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ +- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkdir_p) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ +- if test -d $$d/$$file; then \ +- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ +- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ +- fi; \ +- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ +- else \ +- test -f $(distdir)/$$file \ +- || cp -p $$d/$$file $(distdir)/$$file \ +- || exit 1; \ +- fi; \ +- done +-check-am: all-am +-check: check-am +-all-am: Makefile $(PROGRAMS) +-installdirs: +- for dir in "$(DESTDIR)$(sbindir)"; do \ +- test -z "$$dir" || $(mkdir_p) "$$dir"; \ +- done +-install: install-am +-install-exec: install-exec-am +-install-data: install-data-am +-uninstall: uninstall-am +- +-install-am: all-am +- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +- +-installcheck: installcheck-am +-install-strip: +- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ +- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ +- `test -z '$(STRIP)' || \ +- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +-mostlyclean-generic: +- +-clean-generic: +- +-distclean-generic: +- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) +- +-maintainer-clean-generic: +- @echo "This command is intended for maintainers to use" +- @echo "it deletes files that may require special tools to rebuild." +-clean: clean-am +- +-clean-am: clean-generic clean-sbinPROGRAMS mostlyclean-am +- +-distclean: distclean-am +- -rm -rf ./$(DEPDIR) +- -rm -f Makefile +-distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-tags +- +-dvi: dvi-am +- +-dvi-am: +- +-html: html-am +- +-info: info-am +- +-info-am: +- +-install-data-am: +- +-install-exec-am: install-sbinPROGRAMS +- +-install-info: install-info-am +- +-install-man: +- +-installcheck-am: +- +-maintainer-clean: maintainer-clean-am +- -rm -rf ./$(DEPDIR) +- -rm -f Makefile +-maintainer-clean-am: distclean-am maintainer-clean-generic +- +-mostlyclean: mostlyclean-am +- +-mostlyclean-am: mostlyclean-compile mostlyclean-generic +- +-pdf: pdf-am +- +-pdf-am: +- +-ps: ps-am +- +-ps-am: +- +-uninstall-am: uninstall-info-am uninstall-sbinPROGRAMS +- +-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ +- clean-sbinPROGRAMS ctags distclean distclean-compile \ +- distclean-generic distclean-tags distdir dvi dvi-am html \ +- html-am info info-am install install-am install-data \ +- install-data-am install-exec install-exec-am install-info \ +- install-info-am install-man install-sbinPROGRAMS install-strip \ +- installcheck installcheck-am installdirs maintainer-clean \ +- maintainer-clean-generic mostlyclean mostlyclean-compile \ +- mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ +- uninstall-am uninstall-info-am uninstall-sbinPROGRAMS +- +-# Tell versions [3.59,3.63) of GNU make to not export all variables. +-# Otherwise a system limit (for SysV at least) may be exceeded. +-.NOEXPORT: +diff --git a/grub/asmstub.c b/grub/asmstub.c +index ab95b4b..818be75 100644 +--- a/grub/asmstub.c ++++ b/grub/asmstub.c +@@ -42,6 +42,7 @@ int grub_stage2 (void); + #include + #include + #include ++#include + + #ifdef __linux__ + # include /* ioctl */ +@@ -53,6 +54,9 @@ int grub_stage2 (void); + # ifndef BLKFLSBUF + # define BLKFLSBUF _IO (0x12,97) /* flush buffer cache */ + # endif /* ! BLKFLSBUF */ ++# ifndef O_DIRECT ++# define O_DIRECT 040000 ++# endif /* ! O_DIRECT */ + #endif /* __linux__ */ + + /* We want to prevent any circularararity in our stubs, as well as +@@ -71,7 +75,7 @@ unsigned long install_partition = 0x20000; + unsigned long boot_drive = 0; + int saved_entryno = 0; + char version_string[] = VERSION; +-char config_file[128] = "/boot/grub/menu.lst"; /* FIXME: arbitrary */ ++char config_file[128] = "/boot/grub/grub.conf"; /* FIXME: arbitrary */ + unsigned long linux_text_len = 0; + char *linux_data_tmp_addr = 0; + char *linux_data_real_addr = 0; +@@ -79,7 +83,7 @@ unsigned short io_map[IO_MAP_SIZE]; + struct apm_info apm_bios_info; + + /* Emulation requirements. */ +-char *grub_scratch_mem = 0; ++void *grub_scratch_mem = 0; + + struct geometry *disks = 0; + +@@ -103,14 +107,73 @@ static char *serial_device = 0; + static unsigned int serial_speed; + #endif /* SIMULATE_SLOWNESS_OF_SERIAL */ + ++#ifdef GRUB_UTIL ++int get_sector_size (int drive) ++{ ++ return 0x200; ++} ++int get_sector_bits (int drive) ++{ ++ return 9; ++} ++#endif /* GRUB_UTIL */ ++ ++/* This allocates page-aligned storage of the specified size, which must be ++ * a multiple of the page size as determined by calling sysconf(_SC_PAGESIZE) ++ */ ++#ifdef __linux__ ++static void * ++grub_mmap_alloc(size_t len) ++{ ++ int mmap_flags = MAP_ANONYMOUS|MAP_PRIVATE|MAP_EXECUTABLE; ++ ++#ifdef MAP_32BIT ++ mmap_flags |= MAP_32BIT; ++#endif ++ /* Mark the simulated stack executable, as GCC uses stack trampolines ++ * to implement nested functions. */ ++ return mmap(NULL, len, PROT_READ|PROT_WRITE|PROT_EXEC, mmap_flags, -1, 0); ++} ++#else /* !defined(__linux__) */ ++static void * ++grub_mmap_alloc(size_t len) ++{ ++ int fd = 0, offset = 0, ret = 0; ++ void *pa = MAP_FAILED; ++ char template[] = "/tmp/grub_mmap_alloc_XXXXXX"; ++ errno_t e; ++ ++ fd = mkstemp(template); ++ if (fd < 0) ++ return pa; ++ ++ unlink(template); ++ ++ ret = ftruncate(fd, len); ++ if (ret < 0) ++ return pa; ++ ++ /* Mark the simulated stack executable, as GCC uses stack trampolines ++ * to implement nested functions. */ ++ pa = mmap(NULL, len, PROT_READ|PROT_WRITE|PROT_EXEC, ++ MAP_PRIVATE|MAP_EXECUTABLE, fd, offset); ++ ++ e = errno; ++ close(fd); ++ errno = e; ++ return pa; ++} ++#endif /* defined(__linux__) */ ++ + /* The main entry point into this mess. */ + int + grub_stage2 (void) + { + /* These need to be static, because they survive our stack transitions. */ + static int status = 0; +- static char *realstack; +- char *scratch, *simstack; ++ static void *realstack; ++ void *simstack_alloc_base, *simstack; ++ size_t simstack_size, page_size; + int i; + + auto void doit (void); +@@ -120,8 +183,13 @@ grub_stage2 (void) + void doit (void) + { + /* Make sure our stack lives in the simulated memory area. */ ++#ifdef __x86_64 ++ asm volatile ("movq %%rsp, %0\n\tmovq %1, %%rsp\n" ++ : "=&r" (realstack) : "r" (simstack)); ++#else + asm volatile ("movl %%esp, %0\n\tmovl %1, %%esp\n" + : "=&r" (realstack) : "r" (simstack)); ++#endif + + /* Do a setjmp here for the stop command. */ + if (! setjmp (env_for_exit)) +@@ -138,13 +206,43 @@ grub_stage2 (void) + } + + /* Replace our stack before we use any local variables. */ ++#ifdef __x86_64 ++ asm volatile ("movq %0, %%rsp\n" : : "r" (realstack)); ++#else + asm volatile ("movl %0, %%esp\n" : : "r" (realstack)); ++#endif + } + + assert (grub_scratch_mem == 0); +- scratch = malloc (0x100000 + EXTENDED_MEMSIZE + 15); +- assert (scratch); +- grub_scratch_mem = (char *) ((((int) scratch) >> 4) << 4); ++ ++ /* Allocate enough pages for 0x100000 + EXTENDED_SIZE + 15, and ++ * make sure the memory is aligned to a multiple of the system's ++ * page size */ ++ page_size = sysconf (_SC_PAGESIZE); ++ simstack_size = ( 0x100000 + EXTENDED_MEMSIZE + 15); ++ if (simstack_size % page_size) ++ { ++ /* If we're not on a page_size boundary, round up to the next one */ ++ simstack_size &= ~(page_size-1); ++ simstack_size += page_size; ++ } ++ ++ /* Add one for a PROT_NONE boundary page at each end. */ ++ simstack_size += 2 * page_size; ++ ++ simstack_alloc_base = grub_mmap_alloc(simstack_size); ++ assert (simstack_alloc_base != MAP_FAILED); ++ ++ /* mark pages above and below our simstack area as innaccessable. ++ * If the implementation we're using doesn't support that, then the ++ * new protection modes are undefined. It's safe to just ignore ++ * them, though. It'd be nice if we knew that we'd get a SEGV for ++ * touching the area, but that's all. it'd be nice to have. */ ++ mprotect (simstack_alloc_base, page_size, PROT_NONE); ++ mprotect ((void *)((unsigned long)simstack_alloc_base + ++ simstack_size - page_size), page_size, PROT_NONE); ++ ++ grub_scratch_mem = (void *)((unsigned long)simstack_alloc_base + page_size); + + /* FIXME: simulate the memory holes using mprot, if available. */ + +@@ -217,7 +315,7 @@ grub_stage2 (void) + device_map = 0; + free (disks); + disks = 0; +- free (scratch); ++ munmap(simstack_alloc_base, simstack_size); + grub_scratch_mem = 0; + + if (serial_device) +@@ -699,6 +797,13 @@ console_getkey (void) + return console_translate_key (c); + } + ++/* returns modifier status */ ++int ++console_keystatus (void) ++{ ++ return 0; ++} ++ + /* returns packed values, LSB+1 is x, LSB is y */ + int + console_getxy (void) +@@ -766,7 +871,7 @@ get_diskinfo (int drive, struct geometry *geometry) + { + /* The unpartitioned device name: /dev/XdX */ + char *devname = device_map[drive]; +- char buf[512]; ++ char * buf, * buf_unaligned; + + if (! devname) + return -1; +@@ -777,13 +882,13 @@ get_diskinfo (int drive, struct geometry *geometry) + + /* Open read/write, or read-only if that failed. */ + if (! read_only) +- disks[drive].flags = open (devname, O_RDWR); ++ disks[drive].flags = open (devname, O_RDWR | O_DIRECT); + + if (disks[drive].flags == -1) + { + if (read_only || errno == EACCES || errno == EROFS || errno == EPERM) + { +- disks[drive].flags = open (devname, O_RDONLY); ++ disks[drive].flags = open (devname, O_RDONLY | O_DIRECT); + if (disks[drive].flags == -1) + { + assign_device_name (drive, 0); +@@ -797,6 +902,10 @@ get_diskinfo (int drive, struct geometry *geometry) + } + } + ++ buf_unaligned = malloc((512 * sizeof(char)) + 4095); ++ buf = (char *) (((unsigned long)buf_unaligned + 4096 - 1) & ++ (~(4096-1))); ++ + /* Attempt to read the first sector. */ + if (read (disks[drive].flags, buf, 512) != 512) + { +@@ -808,6 +917,7 @@ get_diskinfo (int drive, struct geometry *geometry) + + if (disks[drive].flags != -1) + get_drive_geometry (&disks[drive], device_map, drive); ++ free(buf_unaligned); + } + + if (disks[drive].flags == -1) +@@ -829,24 +939,34 @@ static int + nread (int fd, char *buf, size_t len) + { + int size = len; ++ char * buf_unaligned, * buff, * obuff; ++ int ret; ++ ++ buf_unaligned = malloc((len * sizeof(char)) + 4095); ++ obuff = buff = (char *) (((unsigned long)buf_unaligned + 4096 - 1) & ++ (~(4096-1))); ++ + + while (len) + { +- int ret = read (fd, buf, len); ++ ret = read (fd, buff, len); + + if (ret <= 0) + { + if (errno == EINTR) + continue; + else +- return ret; ++ break; + } + + len -= ret; +- buf += ret; ++ buff += ret; + } + +- return size; ++ if (!len) ret = size; ++ ++ buf = memcpy(buf, obuff, size); ++ return ret; + } + + /* Write LEN bytes from BUF to FD. Return less than or equal to zero if an +@@ -855,10 +975,18 @@ static int + nwrite (int fd, char *buf, size_t len) + { + int size = len; ++ char * buf_unaligned, * buff; ++ ++ buf_unaligned = malloc((len * sizeof(char)) + 4095); ++ buff = (char *) (((unsigned long)buf_unaligned + 4096 - 1) & ++ (~(4096-1))); + + while (len) + { +- int ret = write (fd, buf, len); ++ int ret; ++ ++ memcpy(buff, buf, len); ++ ret = write (fd, buff, len); + + if (ret <= 0) + { +@@ -946,20 +1074,20 @@ biosdisk (int subfunc, int drive, struct geometry *geometry, + _syscall5 (int, _llseek, uint, filedes, ulong, hi, ulong, lo, + loff_t *, res, uint, wh); + +- offset = (loff_t) sector * (loff_t) SECTOR_SIZE; ++ offset = (loff_t) sector * (loff_t) get_sector_size(drive); + if (_llseek (fd, offset >> 32, offset & 0xffffffff, &result, SEEK_SET)) + return -1; + } + #else + { +- off_t offset = (off_t) sector * (off_t) SECTOR_SIZE; ++ off_t offset = (off_t) sector * (off_t) get_sector_size(drive); + + if (lseek (fd, offset, SEEK_SET) != offset) + return -1; + } + #endif + +- buf = (char *) (segment << 4); ++ buf = (char *) (unsigned long) (segment << 4); + + switch (subfunc) + { +@@ -971,13 +1099,13 @@ biosdisk (int subfunc, int drive, struct geometry *geometry, + sectors that are read together with the MBR in one read. It + should only remap the MBR, so we split the read in two + parts. -jochen */ +- if (nread (fd, buf, SECTOR_SIZE) != SECTOR_SIZE) ++ if (nread (fd, buf, get_sector_size(drive)) != get_sector_size(drive)) + return -1; +- buf += SECTOR_SIZE; ++ buf += get_sector_size(drive); + nsec--; + } + #endif +- if (nread (fd, buf, nsec * SECTOR_SIZE) != nsec * SECTOR_SIZE) ++ if (nread (fd, buf, nsec * get_sector_size(drive)) != nsec * get_sector_size(drive)) + return -1; + break; + +@@ -987,10 +1115,10 @@ biosdisk (int subfunc, int drive, struct geometry *geometry, + grub_printf ("Write %d sectors starting from %d sector" + " to drive 0x%x (%s)\n", + nsec, sector, drive, device_map[drive]); +- hex_dump (buf, nsec * SECTOR_SIZE); ++ hex_dump (buf, nsec * get_sector_size(drive)); + } + if (! read_only) +- if (nwrite (fd, buf, nsec * SECTOR_SIZE) != nsec * SECTOR_SIZE) ++ if (nwrite (fd, buf, nsec * get_sector_size(drive)) != nsec * get_sector_size(drive)) + return -1; + break; + +@@ -1273,3 +1401,21 @@ hercules_setcursor (int on) + { + return 1; + } ++ ++int ++grub_load_linux (char *kernel, char *arg) ++{ ++ return 0; ++} ++ ++int ++grub_load_initrd (char *initrd) ++{ ++ return 0; ++} ++ ++int ++grub_chainloader (char *filename) ++{ ++ return 0; ++} +diff --git a/grub/efitftp.c b/grub/efitftp.c +new file mode 100644 +index 0000000..5355dec +--- /dev/null ++++ b/grub/efitftp.c +@@ -0,0 +1,34 @@ ++#include ++#include ++ ++int efi_tftp_mount (void); ++int efi_tftp_read (char *buf, int len); ++int efi_tftp_dir (char *dirname); ++void efi_tftp_close (void); ++ ++int ++efi_tftp_mount (void) ++{ ++ grub_printf("non-efi efi_tftp_mount()\n"); ++ return 0; ++} ++ ++int ++efi_tftp_read (char *addr, int size) ++{ ++ grub_printf ("non-efi efi_tftp_read (0x%x, %d)\n", (long) addr, size); ++ return 0; ++} ++ ++int ++efi_tftp_dir (char *dirname) ++{ ++ grub_printf ("non-efi efi_ftp_dir (%s)\n", dirname); ++ return 0; ++} ++ ++void ++efi_tftp_close (void) ++{ ++ grub_printf ("non-efi efi_tftp_close ()\n"); ++} +diff --git a/grub/main.c b/grub/main.c +index dfe847e..6083641 100644 +--- a/grub/main.c ++++ b/grub/main.c +@@ -140,7 +140,7 @@ main (int argc, char **argv) + program_name = argv[0]; + default_boot_drive = boot_drive; + default_install_partition = install_partition; +- if (config_file) ++ if (config_file[0]) + default_config_file = config_file; + else + default_config_file = "NONE"; +diff --git a/lib/.gitignore b/lib/.gitignore +new file mode 100644 +index 0000000..5d89f6d +--- /dev/null ++++ b/lib/.gitignore +@@ -0,0 +1,2 @@ ++Makefile.in ++.deps +diff --git a/lib/Makefile.in b/lib/Makefile.in +deleted file mode 100644 +index 3dae206..0000000 +--- a/lib/Makefile.in ++++ /dev/null +@@ -1,416 +0,0 @@ +-# Makefile.in generated by automake 1.9.4 from Makefile.am. +-# @configure_input@ +- +-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +-# 2003, 2004 Free Software Foundation, Inc. +-# This Makefile.in is free software; the Free Software Foundation +-# gives unlimited permission to copy and/or distribute it, +-# with or without modifications, as long as this notice is preserved. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +-# PARTICULAR PURPOSE. +- +-@SET_MAKE@ +- +-SOURCES = $(libcommon_a_SOURCES) +- +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ +-VPATH = @srcdir@ +-pkgdatadir = $(datadir)/@PACKAGE@ +-pkglibdir = $(libdir)/@PACKAGE@ +-pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = .. +-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ +-install_sh_DATA = $(install_sh) -c -m 644 +-install_sh_PROGRAM = $(install_sh) -c +-install_sh_SCRIPT = $(install_sh) -c +-INSTALL_HEADER = $(INSTALL_DATA) +-transform = $(program_transform_name) +-NORMAL_INSTALL = : +-PRE_INSTALL = : +-POST_INSTALL = : +-NORMAL_UNINSTALL = : +-PRE_UNINSTALL = : +-POST_UNINSTALL = : +-build_triplet = @build@ +-host_triplet = @host@ +-subdir = lib +-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ +- $(top_srcdir)/configure.ac +-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ +- $(ACLOCAL_M4) +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-LIBRARIES = $(noinst_LIBRARIES) +-AR = ar +-ARFLAGS = cru +-libcommon_a_AR = $(AR) $(ARFLAGS) +-libcommon_a_LIBADD = +-am_libcommon_a_OBJECTS = getopt.$(OBJEXT) getopt1.$(OBJEXT) \ +- device.$(OBJEXT) +-libcommon_a_OBJECTS = $(am_libcommon_a_OBJECTS) +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-SOURCES = $(libcommon_a_SOURCES) +-DIST_SOURCES = $(libcommon_a_SOURCES) +-ETAGS = etags +-CTAGS = ctags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +-ACLOCAL = @ACLOCAL@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ +-AMTAR = @AMTAR@ +-AUTOCONF = @AUTOCONF@ +-AUTOHEADER = @AUTOHEADER@ +-AUTOMAKE = @AUTOMAKE@ +-AWK = @AWK@ +-BUILD_EXAMPLE_KERNEL_FALSE = @BUILD_EXAMPLE_KERNEL_FALSE@ +-BUILD_EXAMPLE_KERNEL_TRUE = @BUILD_EXAMPLE_KERNEL_TRUE@ +-CC = @CC@ +-CCAS = @CCAS@ +-CCASFLAGS = @CCASFLAGS@ +-CCDEPMODE = @CCDEPMODE@ +-CFLAGS = @CFLAGS@ +-CPP = @CPP@ +-CPPFLAGS = @CPPFLAGS@ +-CYGPATH_W = @CYGPATH_W@ +-DEFS = @DEFS@ +-DEPDIR = @DEPDIR@ +-DISKLESS_SUPPORT_FALSE = @DISKLESS_SUPPORT_FALSE@ +-DISKLESS_SUPPORT_TRUE = @DISKLESS_SUPPORT_TRUE@ +-ECHO_C = @ECHO_C@ +-ECHO_N = @ECHO_N@ +-ECHO_T = @ECHO_T@ +-EGREP = @EGREP@ +-EXEEXT = @EXEEXT@ +-FSYS_CFLAGS = @FSYS_CFLAGS@ +-GRUB_CFLAGS = @GRUB_CFLAGS@ +-GRUB_LIBS = @GRUB_LIBS@ +-HERCULES_SUPPORT_FALSE = @HERCULES_SUPPORT_FALSE@ +-HERCULES_SUPPORT_TRUE = @HERCULES_SUPPORT_TRUE@ +-INSTALL_DATA = @INSTALL_DATA@ +-INSTALL_PROGRAM = @INSTALL_PROGRAM@ +-INSTALL_SCRIPT = @INSTALL_SCRIPT@ +-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +-LDFLAGS = @LDFLAGS@ +-LIBOBJS = @LIBOBJS@ +-LIBS = @LIBS@ +-LTLIBOBJS = @LTLIBOBJS@ +-MAINT = @MAINT@ +-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +-MAKEINFO = @MAKEINFO@ +-NETBOOT_DRIVERS = @NETBOOT_DRIVERS@ +-NETBOOT_SUPPORT_FALSE = @NETBOOT_SUPPORT_FALSE@ +-NETBOOT_SUPPORT_TRUE = @NETBOOT_SUPPORT_TRUE@ +-NET_CFLAGS = @NET_CFLAGS@ +-NET_EXTRAFLAGS = @NET_EXTRAFLAGS@ +-OBJCOPY = @OBJCOPY@ +-OBJEXT = @OBJEXT@ +-PACKAGE = @PACKAGE@ +-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +-PACKAGE_NAME = @PACKAGE_NAME@ +-PACKAGE_STRING = @PACKAGE_STRING@ +-PACKAGE_TARNAME = @PACKAGE_TARNAME@ +-PACKAGE_VERSION = @PACKAGE_VERSION@ +-PATH_SEPARATOR = @PATH_SEPARATOR@ +-PERL = @PERL@ +-RANLIB = @RANLIB@ +-SERIAL_SPEED_SIMULATION_FALSE = @SERIAL_SPEED_SIMULATION_FALSE@ +-SERIAL_SPEED_SIMULATION_TRUE = @SERIAL_SPEED_SIMULATION_TRUE@ +-SERIAL_SUPPORT_FALSE = @SERIAL_SUPPORT_FALSE@ +-SERIAL_SUPPORT_TRUE = @SERIAL_SUPPORT_TRUE@ +-SET_MAKE = @SET_MAKE@ +-SHELL = @SHELL@ +-STAGE1_CFLAGS = @STAGE1_CFLAGS@ +-STAGE2_CFLAGS = @STAGE2_CFLAGS@ +-STRIP = @STRIP@ +-VERSION = @VERSION@ +-ac_ct_CC = @ac_ct_CC@ +-ac_ct_OBJCOPY = @ac_ct_OBJCOPY@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__include = @am__include@ +-am__leading_dot = @am__leading_dot@ +-am__quote = @am__quote@ +-am__tar = @am__tar@ +-am__untar = @am__untar@ +-bindir = @bindir@ +-build = @build@ +-build_alias = @build_alias@ +-build_cpu = @build_cpu@ +-build_os = @build_os@ +-build_vendor = @build_vendor@ +-datadir = @datadir@ +-exec_prefix = @exec_prefix@ +-host = @host@ +-host_alias = @host_alias@ +-host_cpu = @host_cpu@ +-host_os = @host_os@ +-host_vendor = @host_vendor@ +-includedir = @includedir@ +-infodir = @infodir@ +-install_sh = @install_sh@ +-libdir = @libdir@ +-libexecdir = @libexecdir@ +-localstatedir = @localstatedir@ +-mandir = @mandir@ +-mkdir_p = @mkdir_p@ +-oldincludedir = @oldincludedir@ +-prefix = @prefix@ +-program_transform_name = @program_transform_name@ +-sbindir = @sbindir@ +-sharedstatedir = @sharedstatedir@ +-sysconfdir = @sysconfdir@ +-target_alias = @target_alias@ +-noinst_LIBRARIES = libcommon.a +-AM_CFLAGS = $(GRUB_CFLAGS) -I$(top_srcdir)/stage2 \ +- -I$(top_srcdir)/stage1 +- +-libcommon_a_SOURCES = getopt.c getopt1.c getopt.h device.c device.h +-all: all-am +- +-.SUFFIXES: +-.SUFFIXES: .c .o .obj +-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) +- @for dep in $?; do \ +- case '$(am__configure_deps)' in \ +- *$$dep*) \ +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +- && exit 0; \ +- exit 1;; \ +- esac; \ +- done; \ +- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/Makefile'; \ +- cd $(top_srcdir) && \ +- $(AUTOMAKE) --gnu lib/Makefile +-.PRECIOUS: Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- @case '$?' in \ +- *config.status*) \ +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ +- *) \ +- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ +- esac; +- +-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +- +-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +- +-clean-noinstLIBRARIES: +- -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +-libcommon.a: $(libcommon_a_OBJECTS) $(libcommon_a_DEPENDENCIES) +- -rm -f libcommon.a +- $(libcommon_a_AR) libcommon.a $(libcommon_a_OBJECTS) $(libcommon_a_LIBADD) +- $(RANLIB) libcommon.a +- +-mostlyclean-compile: +- -rm -f *.$(OBJEXT) +- +-distclean-compile: +- -rm -f *.tab.c +- +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/device.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt1.Po@am__quote@ +- +-.c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c $< +- +-.c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +-uninstall-info-am: +- +-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- mkid -fID $$unique +-tags: TAGS +- +-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) +- tags=; \ +- here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ +- test -n "$$unique" || unique=$$empty_fix; \ +- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique; \ +- fi +-ctags: CTAGS +-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) +- tags=; \ +- here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- test -z "$(CTAGS_ARGS)$$tags$$unique" \ +- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ +- $$tags $$unique +- +-GTAGS: +- here=`$(am__cd) $(top_builddir) && pwd` \ +- && cd $(top_srcdir) \ +- && gtags -i $(GTAGS_ARGS) $$here +- +-distclean-tags: +- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +- +-distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ +- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkdir_p) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ +- if test -d $$d/$$file; then \ +- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ +- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ +- fi; \ +- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ +- else \ +- test -f $(distdir)/$$file \ +- || cp -p $$d/$$file $(distdir)/$$file \ +- || exit 1; \ +- fi; \ +- done +-check-am: all-am +-check: check-am +-all-am: Makefile $(LIBRARIES) +-installdirs: +-install: install-am +-install-exec: install-exec-am +-install-data: install-data-am +-uninstall: uninstall-am +- +-install-am: all-am +- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +- +-installcheck: installcheck-am +-install-strip: +- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ +- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ +- `test -z '$(STRIP)' || \ +- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +-mostlyclean-generic: +- +-clean-generic: +- +-distclean-generic: +- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) +- +-maintainer-clean-generic: +- @echo "This command is intended for maintainers to use" +- @echo "it deletes files that may require special tools to rebuild." +-clean: clean-am +- +-clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am +- +-distclean: distclean-am +- -rm -rf ./$(DEPDIR) +- -rm -f Makefile +-distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-tags +- +-dvi: dvi-am +- +-dvi-am: +- +-html: html-am +- +-info: info-am +- +-info-am: +- +-install-data-am: +- +-install-exec-am: +- +-install-info: install-info-am +- +-install-man: +- +-installcheck-am: +- +-maintainer-clean: maintainer-clean-am +- -rm -rf ./$(DEPDIR) +- -rm -f Makefile +-maintainer-clean-am: distclean-am maintainer-clean-generic +- +-mostlyclean: mostlyclean-am +- +-mostlyclean-am: mostlyclean-compile mostlyclean-generic +- +-pdf: pdf-am +- +-pdf-am: +- +-ps: ps-am +- +-ps-am: +- +-uninstall-am: uninstall-info-am +- +-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ +- clean-noinstLIBRARIES ctags distclean distclean-compile \ +- distclean-generic distclean-tags distdir dvi dvi-am html \ +- html-am info info-am install install-am install-data \ +- install-data-am install-exec install-exec-am install-info \ +- install-info-am install-man install-strip installcheck \ +- installcheck-am installdirs maintainer-clean \ +- maintainer-clean-generic mostlyclean mostlyclean-compile \ +- mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ +- uninstall-am uninstall-info-am +- +-# Tell versions [3.59,3.63) of GNU make to not export all variables. +-# Otherwise a system limit (for SysV at least) may be exceeded. +-.NOEXPORT: +diff --git a/lib/device.c b/lib/device.c +index d0663b3..50540bc 100644 +--- a/lib/device.c ++++ b/lib/device.c +@@ -36,6 +36,9 @@ + #include + #include + ++#define SECTOR_SIZE 0x200 ++#define SECTOR_BITS 9 ++ + #ifdef __linux__ + # if !defined(__GLIBC__) || \ + ((__GLIBC__ < 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ < 1))) +@@ -131,6 +134,152 @@ get_kfreebsd_version () + #include + #include + ++#if defined(__linux__) ++/* The 2.6 kernel has removed all of the geometry handling for IDE drives ++ * that did fixups for LBA, etc. This means that the geometry we get ++ * with the ioctl has a good chance of being wrong. So, we get to ++ * also know about partition tables and try to read what the geometry ++ * is there. *grumble* Very closely based on code from cfdisk ++ */ ++static void get_kernel_geometry(int fd, long long *cyl, int *heads, int *sectors) { ++ struct hd_geometry hdg; ++ ++ if (ioctl (fd, HDIO_GETGEO, &hdg)) ++ return; ++ ++ *cyl = hdg.cylinders; ++ *heads = hdg.heads; ++ *sectors = hdg.sectors; ++} ++ ++struct partition { ++ unsigned char boot_ind; /* 0x80 - active */ ++ unsigned char head; /* starting head */ ++ unsigned char sector; /* starting sector */ ++ unsigned char cyl; /* starting cylinder */ ++ unsigned char sys_ind; /* What partition type */ ++ unsigned char end_head; /* end head */ ++ unsigned char end_sector; /* end sector */ ++ unsigned char end_cyl; /* end cylinder */ ++ unsigned char start4[4]; /* starting sector counting from 0 */ ++ unsigned char size4[4]; /* nr of sectors in partition */ ++}; ++ ++#define ALIGNMENT 2 ++typedef union { ++ struct { ++ unsigned char align[ALIGNMENT]; ++ unsigned char b[SECTOR_SIZE]; ++ } c; ++ struct { ++ unsigned char align[ALIGNMENT]; ++ unsigned char buffer[0x1BE]; ++ struct partition part[4]; ++ unsigned char magicflag[2]; ++ } p; ++} partition_table; ++ ++#define PART_TABLE_FLAG0 0x55 ++#define PART_TABLE_FLAG1 0xAA ++ ++static void ++get_partition_table_geometry(partition_table *bufp, long long *cyl, int *heads, ++ int *sectors) { ++ struct partition *p; ++ int i,h,s,hh,ss; ++ int first = 1; ++ int bad = 0; ++ ++ if (bufp->p.magicflag[0] != PART_TABLE_FLAG0 || ++ bufp->p.magicflag[1] != PART_TABLE_FLAG1) { ++ /* Matthew Wilcox: slightly friendlier version of ++ fatal(_("Bad signature on partition table"), 3); ++ */ ++ fprintf(stderr, "Unknown partition table signature\n"); ++ return; ++ } ++ ++ hh = ss = 0; ++ for (i=0; i<4; i++) { ++ p = &(bufp->p.part[i]); ++ if (p->sys_ind != 0) { ++ h = p->end_head + 1; ++ s = (p->end_sector & 077); ++ if (first) { ++ hh = h; ++ ss = s; ++ first = 0; ++ } else if (hh != h || ss != s) ++ bad = 1; ++ } ++ } ++ ++ if (!first && !bad) { ++ *heads = hh; ++ *sectors = ss; ++ } ++} ++ ++static long long my_lseek (unsigned int fd, long long offset, ++ unsigned int origin) ++{ ++#if defined(__linux__) && (!defined(__GLIBC__) || \ ++ ((__GLIBC__ < 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ < 1)))) ++ /* Maybe libc doesn't have large file support. */ ++ loff_t offset, result; ++ static int _llseek (uint filedes, ulong hi, ulong lo, ++ loff_t *res, uint wh); ++ _syscall5 (int, _llseek, uint, filedes, ulong, hi, ulong, lo, ++ loff_t *, res, uint, wh); ++ ++ if (_llseek (fd, offset >> 32, offset & 0xffffffff, &result, SEEK_SET) < 0) ++ return (long long) -1; ++ return result; ++#else ++ return lseek(fd, offset, SEEK_SET); ++#endif ++} ++ ++static void get_linux_geometry (int fd, struct geometry *geom) { ++ long long kern_cyl = 0; int kern_head = 0, kern_sectors = 0; ++ long long pt_cyl = 0; int pt_head = 0, pt_sectors = 0; ++ partition_table bufp; ++ char *buff, *buf_unaligned; ++ ++ buf_unaligned = malloc(sizeof(partition_table) + 4095); ++ buff = (char *) (((unsigned long)buf_unaligned + 4096 - 1) & ++ (~(4096-1))); ++ ++ get_kernel_geometry(fd, &kern_cyl, &kern_head, &kern_sectors); ++ ++ if (my_lseek (fd, 0*SECTOR_SIZE, SEEK_SET) < 0) { ++ fprintf(stderr, "Unable to seek"); ++ } ++ ++ if (read(fd, buff, SECTOR_SIZE) == SECTOR_SIZE) { ++ memcpy(bufp.c.b, buff, SECTOR_SIZE); ++ get_partition_table_geometry(&bufp, &pt_cyl, &pt_head, &pt_sectors); ++ } else { ++ fprintf(stderr, "Unable to read partition table: %s\n", strerror(errno)); ++ } ++ ++ if (pt_head && pt_sectors) { ++ int cyl_size; ++ ++ geom->heads = pt_head; ++ geom->sectors = pt_sectors; ++ cyl_size = pt_head * pt_sectors; ++ geom->cylinders = geom->total_sectors/cyl_size; ++ } else { ++ geom->heads = kern_head; ++ geom->sectors = kern_sectors; ++ geom->cylinders = kern_cyl; ++ } ++ ++ return; ++} ++#endif ++ + /* Get the geometry of a drive DRIVE. */ + void + get_drive_geometry (struct geometry *geom, char **map, int drive) +@@ -151,21 +300,16 @@ get_drive_geometry (struct geometry *geom, char **map, int drive) + #if defined(__linux__) + /* Linux */ + { +- struct hd_geometry hdg; + unsigned long nr; +- +- if (ioctl (fd, HDIO_GETGEO, &hdg)) +- goto fail; + + if (ioctl (fd, BLKGETSIZE, &nr)) + goto fail; + + /* Got the geometry, so save it. */ +- geom->cylinders = hdg.cylinders; +- geom->heads = hdg.heads; +- geom->sectors = hdg.sectors; + geom->total_sectors = nr; +- ++ get_linux_geometry(fd, geom); ++ if (!geom->heads && !geom->cylinders && !geom->sectors) ++ goto fail; + goto success; + } + +@@ -403,10 +547,27 @@ get_dac960_disk_name (char *name, int controller, int drive) + } + + static void ++get_cciss_disk_name (char * name, int controller, int drive) ++{ ++ sprintf (name, "/dev/cciss/c%dd%d", controller, drive); ++} ++ ++static void ++get_cpqarray_disk_name (char * name, int controller, int drive) ++{ ++ sprintf (name, "/dev/ida/c%dd%d", controller, drive); ++} ++static void + get_ataraid_disk_name (char *name, int unit) + { + sprintf (name, "/dev/ataraid/d%c", unit + '0'); + } ++ ++static void ++get_i2o_disk_name (char *name, int unit) ++{ ++ sprintf (name, "/dev/i2o/hd%c", unit + 'a'); ++} + #endif + + /* Check if DEVICE can be read. If an error occurs, return zero, +@@ -490,27 +651,24 @@ check_device (const char *device) + } + + /* Read mapping information from FP, and write it to MAP. */ ++static void rdm_show_error (const char *map_file, int no, const char *msg) ++{ ++ fprintf (stderr, "%s:%d: error: %s\n", map_file, no, msg); ++} ++ ++static void rdm_show_warning (const char *map_file,int no, const char *msg, ...) ++{ ++ va_list ap; ++ ++ va_start (ap, msg); ++ fprintf (stderr, "%s:%d: warning: ", map_file, no); ++ vfprintf (stderr, msg, ap); ++ va_end (ap); ++} ++ + static int + read_device_map (FILE *fp, char **map, const char *map_file) + { +- auto void show_error (int no, const char *msg); +- auto void show_warning (int no, const char *msg, ...); +- +- auto void show_error (int no, const char *msg) +- { +- fprintf (stderr, "%s:%d: error: %s\n", map_file, no, msg); +- } +- +- auto void show_warning (int no, const char *msg, ...) +- { +- va_list ap; +- +- va_start (ap, msg); +- fprintf (stderr, "%s:%d: warning: ", map_file, no); +- vfprintf (stderr, msg, ap); +- va_end (ap); +- } +- + /* If there is the device map file, use the data in it instead of + probing devices. */ + char buf[1024]; /* XXX */ +@@ -540,14 +698,14 @@ read_device_map (FILE *fp, char **map, const char *map_file) + + if (*ptr != '(') + { +- show_error (line_number, "No open parenthesis found"); ++ rdm_show_error (map_file, line_number, "No open parenthesis found"); + return 0; + } + + ptr++; + if ((*ptr != 'f' && *ptr != 'h') || *(ptr + 1) != 'd') + { +- show_error (line_number, "Bad drive name"); ++ rdm_show_error (map_file, line_number, "Bad drive name"); + return 0; + } + +@@ -558,12 +716,12 @@ read_device_map (FILE *fp, char **map, const char *map_file) + drive = strtoul (ptr, &ptr, 10); + if (drive < 0) + { +- show_error (line_number, "Bad device number"); ++ rdm_show_error (map_file, line_number, "Bad device number"); + return 0; + } + else if (drive > 127) + { +- show_warning (line_number, ++ rdm_show_warning (map_file, line_number, + "Ignoring %cd%d due to a BIOS limitation", + is_floppy ? 'f' : 'h', drive); + continue; +@@ -574,7 +732,7 @@ read_device_map (FILE *fp, char **map, const char *map_file) + + if (*ptr != ')') + { +- show_error (line_number, "No close parenthesis found"); ++ rdm_show_error (map_file, line_number, "No close parenthesis found"); + return 0; + } + +@@ -585,7 +743,7 @@ read_device_map (FILE *fp, char **map, const char *map_file) + + if (! *ptr) + { +- show_error (line_number, "No filename found"); ++ rdm_show_error (map_file, line_number, "No filename found"); + return 0; + } + +@@ -598,7 +756,7 @@ read_device_map (FILE *fp, char **map, const char *map_file) + /* Multiple entries for a given drive is not allowed. */ + if (map[drive]) + { +- show_error (line_number, "Duplicated entry found"); ++ rdm_show_error (map_file, line_number, "Duplicated entry found"); + return 0; + } + +@@ -782,7 +940,7 @@ init_device_map (char ***map, const char *map_file, int floppy_disks) + + for (controller = 0; controller < 8; controller++) + { +- for (drive = 0; drive < 15; drive++) ++ for (drive = 0; drive < 32; drive++) + { + char name[24]; + +@@ -801,6 +959,90 @@ init_device_map (char ***map, const char *map_file, int floppy_disks) + } + } + } ++ ++ /* I2O disks. */ ++ for (i = 0; i < 8; i++) ++ { ++ char name[16]; ++ ++ get_i2o_disk_name (name, i); ++ if (check_device (name)) ++ { ++ (*map)[num_hd + 0x80] = strdup (name); ++ assert ((*map)[num_hd + 0x80]); ++ ++ /* If the device map file is opened, write the map. */ ++ if (fp) ++ fprintf (fp, "(hd%d)\t%s\n", num_hd, name); ++ ++ num_hd++; ++ } ++ } ++ ++#endif /* __linux__ */ ++ ++#ifdef __linux__ ++ /* This is for cciss - we have ++ /dev/cciss/cdp. ++ ++ cciss driver currently supports up to 8 controllers, 16 logical ++ drives, and 7 partitions. */ ++ { ++ int controller, drive; ++ ++ for (controller = 0; controller < 8; controller++) ++ { ++ for (drive = 0; drive < 16; drive++) ++ { ++ char name[24]; ++ ++ get_cciss_disk_name (name, controller, drive); ++ if (check_device (name)) ++ { ++ (*map)[num_hd + 0x80] = strdup (name); ++ assert ((*map)[num_hd + 0x80]); ++ ++ /* If the device map file is opened, write the map. */ ++ if (fp) ++ fprintf (fp, "(hd%d)\t%s\n", num_hd, name); ++ ++ num_hd++; ++ } ++ } ++ } ++ } ++#endif /* __linux__ */ ++ ++#ifdef __linux__ ++ /* This is for cpqarray - we have ++ /dev/ida/cdp. ++ ++ cpqarray driver currently supports up to 8 controllers, 16 logical ++ drives, and 15 partitions. */ ++ { ++ int controller, drive; ++ ++ for (controller = 0; controller < 8; controller++) ++ { ++ for (drive = 0; drive < 15; drive++) ++ { ++ char name[24]; ++ ++ get_cpqarray_disk_name (name, controller, drive); ++ if (check_device (name)) ++ { ++ (*map)[num_hd + 0x80] = strdup (name); ++ assert ((*map)[num_hd + 0x80]); ++ ++ /* If the device map file is opened, write the map. */ ++ if (fp) ++ fprintf (fp, "(hd%d)\t%s\n", num_hd, name); ++ ++ num_hd++; ++ } ++ } ++ } ++ } + #endif /* __linux__ */ + + /* OK, close the device map file if opened. */ +@@ -844,6 +1086,7 @@ write_to_partition (char **map, int drive, int partition, + { + char dev[PATH_MAX]; /* XXX */ + int fd; ++ off_t offset = (off_t) sector * (off_t) SECTOR_SIZE; + + if ((partition & 0x00FF00) != 0x00FF00) + { +@@ -861,44 +1104,35 @@ write_to_partition (char **map, int drive, int partition, + if (strcmp (dev + strlen(dev) - 5, "/disc") == 0) + strcpy (dev + strlen(dev) - 5, "/part"); + } +- sprintf (dev + strlen(dev), "%d", ((partition >> 16) & 0xFF) + 1); ++ ++ sprintf (dev + strlen(dev), "%s%d", ++ /* Compaq smart and others */ ++ (strncmp(dev, "/dev/ida/", 9) == 0 || ++ strncmp(dev, "/dev/ataraid/", 13) == 0 || ++ strncmp(dev, "/dev/mapper/", 12) == 0 || ++ strncmp(dev, "/dev/md", 7) == 0 || ++ strncmp(dev, "/dev/cciss/", 11) == 0 || ++ strncmp(dev, "/dev/rd/", 8) == 0) ? "p" : "", ++ ((partition >> 16) & 0xFF) + 1); + + /* Open the partition. */ + fd = open (dev, O_RDWR); + if (fd < 0) + { ++ /* No partition file, pass thru and not worry about ++ * cache inconsistency. */ ++ if (errno == ENOENT) ++ return -1; + errnum = ERR_NO_PART; + return 0; + } +- +-#if defined(__linux__) && (!defined(__GLIBC__) || \ +- ((__GLIBC__ < 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ < 1)))) +- /* Maybe libc doesn't have large file support. */ +- { +- loff_t offset, result; +- static int _llseek (uint filedes, ulong hi, ulong lo, +- loff_t *res, uint wh); +- _syscall5 (int, _llseek, uint, filedes, ulong, hi, ulong, lo, +- loff_t *, res, uint, wh); +- +- offset = (loff_t) sector * (loff_t) SECTOR_SIZE; +- if (_llseek (fd, offset >> 32, offset & 0xffffffff, &result, SEEK_SET)) +- { +- errnum = ERR_DEV_VALUES; +- return 0; +- } +- } +-#else +- { +- off_t offset = (off_t) sector * (off_t) SECTOR_SIZE; + +- if (lseek (fd, offset, SEEK_SET) != offset) +- { +- errnum = ERR_DEV_VALUES; +- return 0; +- } +- } +-#endif ++ ++ if (my_lseek(fd, offset, SEEK_SET) != offset) ++ { ++ errnum = ERR_DEV_VALUES; ++ return 0; ++ } + + if (write (fd, buf, size * SECTOR_SIZE) != (size * SECTOR_SIZE)) + { +diff --git a/makediff b/makediff +new file mode 100755 +index 0000000..a82b448 +--- /dev/null ++++ b/makediff +@@ -0,0 +1,21 @@ ++#!/bin/bash ++( ++cat << EOF ++From: Peter Jones " ++Date: $(date) ++Subject: [PATCH] Changes from grub-0.97 to master ++ ++This patch is a bundle of the changes between grub-0.97 and master. ++It can be reginerated from the git repository at: ++ ++git://github.com/vathpela/grub-fedora.git ++ ++Using the command: ++ ++git diff grub-0.97 master ++ ++EOF ++git diff grub-0.97 master | diffstat -p1 ++echo ++git diff grub-0.97 master ++) | cat +diff --git a/netboot/.gitignore b/netboot/.gitignore +new file mode 100644 +index 0000000..5d89f6d +--- /dev/null ++++ b/netboot/.gitignore +@@ -0,0 +1,2 @@ ++Makefile.in ++.deps +diff --git a/netboot/Makefile.in b/netboot/Makefile.in +deleted file mode 100644 +index 75ac299..0000000 +--- a/netboot/Makefile.in ++++ /dev/null +@@ -1,1091 +0,0 @@ +-# Makefile.in generated by automake 1.9.4 from Makefile.am. +-# @configure_input@ +- +-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +-# 2003, 2004 Free Software Foundation, Inc. +-# This Makefile.in is free software; the Free Software Foundation +-# gives unlimited permission to copy and/or distribute it, +-# with or without modifications, as long as this notice is preserved. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +-# PARTICULAR PURPOSE. +- +-@SET_MAKE@ +- +-SOURCES = $(libdrivers_a_SOURCES) $(EXTRA_libdrivers_a_SOURCES) +- +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ +-VPATH = @srcdir@ +-pkgdatadir = $(datadir)/@PACKAGE@ +-pkglibdir = $(libdir)/@PACKAGE@ +-pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = .. +-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ +-install_sh_DATA = $(install_sh) -c -m 644 +-install_sh_PROGRAM = $(install_sh) -c +-install_sh_SCRIPT = $(install_sh) -c +-INSTALL_HEADER = $(INSTALL_DATA) +-transform = $(program_transform_name) +-NORMAL_INSTALL = : +-PRE_INSTALL = : +-POST_INSTALL = : +-NORMAL_UNINSTALL = : +-PRE_UNINSTALL = : +-POST_UNINSTALL = : +-build_triplet = @build@ +-host_triplet = @host@ +-subdir = netboot +-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ +- $(top_srcdir)/configure.ac +-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ +- $(ACLOCAL_M4) +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-LIBRARIES = $(noinst_LIBRARIES) +-AR = ar +-ARFLAGS = cru +-libdrivers_a_AR = $(AR) $(ARFLAGS) +-am_libdrivers_a_OBJECTS = libdrivers_a-config.$(OBJEXT) \ +- libdrivers_a-fsys_tftp.$(OBJEXT) libdrivers_a-main.$(OBJEXT) \ +- libdrivers_a-misc.$(OBJEXT) libdrivers_a-pci.$(OBJEXT) \ +- libdrivers_a-timer.$(OBJEXT) +-libdrivers_a_OBJECTS = $(am_libdrivers_a_OBJECTS) +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-SOURCES = $(libdrivers_a_SOURCES) $(EXTRA_libdrivers_a_SOURCES) +-DIST_SOURCES = $(libdrivers_a_SOURCES) $(EXTRA_libdrivers_a_SOURCES) +-ETAGS = etags +-CTAGS = ctags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +-ACLOCAL = @ACLOCAL@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ +-AMTAR = @AMTAR@ +-AUTOCONF = @AUTOCONF@ +-AUTOHEADER = @AUTOHEADER@ +-AUTOMAKE = @AUTOMAKE@ +-AWK = @AWK@ +-BUILD_EXAMPLE_KERNEL_FALSE = @BUILD_EXAMPLE_KERNEL_FALSE@ +-BUILD_EXAMPLE_KERNEL_TRUE = @BUILD_EXAMPLE_KERNEL_TRUE@ +-CC = @CC@ +-CCAS = @CCAS@ +-CCASFLAGS = @CCASFLAGS@ +-CCDEPMODE = @CCDEPMODE@ +-CFLAGS = @CFLAGS@ +-CPP = @CPP@ +-CPPFLAGS = @CPPFLAGS@ +-CYGPATH_W = @CYGPATH_W@ +-DEFS = @DEFS@ +-DEPDIR = @DEPDIR@ +-DISKLESS_SUPPORT_FALSE = @DISKLESS_SUPPORT_FALSE@ +-DISKLESS_SUPPORT_TRUE = @DISKLESS_SUPPORT_TRUE@ +-ECHO_C = @ECHO_C@ +-ECHO_N = @ECHO_N@ +-ECHO_T = @ECHO_T@ +-EGREP = @EGREP@ +-EXEEXT = @EXEEXT@ +-FSYS_CFLAGS = @FSYS_CFLAGS@ +-GRUB_CFLAGS = @GRUB_CFLAGS@ +-GRUB_LIBS = @GRUB_LIBS@ +-HERCULES_SUPPORT_FALSE = @HERCULES_SUPPORT_FALSE@ +-HERCULES_SUPPORT_TRUE = @HERCULES_SUPPORT_TRUE@ +-INSTALL_DATA = @INSTALL_DATA@ +-INSTALL_PROGRAM = @INSTALL_PROGRAM@ +-INSTALL_SCRIPT = @INSTALL_SCRIPT@ +-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +-LDFLAGS = @LDFLAGS@ +-LIBOBJS = @LIBOBJS@ +-LIBS = @LIBS@ +-LTLIBOBJS = @LTLIBOBJS@ +-MAINT = @MAINT@ +-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +-MAKEINFO = @MAKEINFO@ +-NETBOOT_DRIVERS = @NETBOOT_DRIVERS@ +-NETBOOT_SUPPORT_FALSE = @NETBOOT_SUPPORT_FALSE@ +-NETBOOT_SUPPORT_TRUE = @NETBOOT_SUPPORT_TRUE@ +-NET_CFLAGS = @NET_CFLAGS@ +-NET_EXTRAFLAGS = @NET_EXTRAFLAGS@ +-OBJCOPY = @OBJCOPY@ +-OBJEXT = @OBJEXT@ +-PACKAGE = @PACKAGE@ +-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +-PACKAGE_NAME = @PACKAGE_NAME@ +-PACKAGE_STRING = @PACKAGE_STRING@ +-PACKAGE_TARNAME = @PACKAGE_TARNAME@ +-PACKAGE_VERSION = @PACKAGE_VERSION@ +-PATH_SEPARATOR = @PATH_SEPARATOR@ +-PERL = @PERL@ +-RANLIB = @RANLIB@ +-SERIAL_SPEED_SIMULATION_FALSE = @SERIAL_SPEED_SIMULATION_FALSE@ +-SERIAL_SPEED_SIMULATION_TRUE = @SERIAL_SPEED_SIMULATION_TRUE@ +-SERIAL_SUPPORT_FALSE = @SERIAL_SUPPORT_FALSE@ +-SERIAL_SUPPORT_TRUE = @SERIAL_SUPPORT_TRUE@ +-SET_MAKE = @SET_MAKE@ +-SHELL = @SHELL@ +-STAGE1_CFLAGS = @STAGE1_CFLAGS@ +-STAGE2_CFLAGS = @STAGE2_CFLAGS@ +-STRIP = @STRIP@ +-VERSION = @VERSION@ +-ac_ct_CC = @ac_ct_CC@ +-ac_ct_OBJCOPY = @ac_ct_OBJCOPY@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__include = @am__include@ +-am__leading_dot = @am__leading_dot@ +-am__quote = @am__quote@ +-am__tar = @am__tar@ +-am__untar = @am__untar@ +-bindir = @bindir@ +-build = @build@ +-build_alias = @build_alias@ +-build_cpu = @build_cpu@ +-build_os = @build_os@ +-build_vendor = @build_vendor@ +-datadir = @datadir@ +-exec_prefix = @exec_prefix@ +-host = @host@ +-host_alias = @host_alias@ +-host_cpu = @host_cpu@ +-host_os = @host_os@ +-host_vendor = @host_vendor@ +-includedir = @includedir@ +-infodir = @infodir@ +-install_sh = @install_sh@ +-libdir = @libdir@ +-libexecdir = @libexecdir@ +-localstatedir = @localstatedir@ +-mandir = @mandir@ +-mkdir_p = @mkdir_p@ +-oldincludedir = @oldincludedir@ +-prefix = @prefix@ +-program_transform_name = @program_transform_name@ +-sbindir = @sbindir@ +-sharedstatedir = @sharedstatedir@ +-sysconfdir = @sysconfdir@ +-target_alias = @target_alias@ +- +-# For and . +-INCLUDES = -I$(top_srcdir)/stage2 -I$(top_srcdir)/stage1 +-@NETBOOT_SUPPORT_FALSE@LIBDRIVERS = +- +-# Don't build the netboot support by default. +-@NETBOOT_SUPPORT_TRUE@LIBDRIVERS = libdrivers.a +-noinst_LIBRARIES = $(LIBDRIVERS) +-libdrivers_a_SOURCES = cards.h config.c etherboot.h \ +- fsys_tftp.c linux-asm-io.h linux-asm-string.h \ +- main.c misc.c nic.h osdep.h pci.c pci.h timer.c timer.h +- +-EXTRA_libdrivers_a_SOURCES = 3c509.c 3c509.h 3c595.c 3c595.h 3c90x.c \ +- cs89x0.c cs89x0.h davicom.c depca.c eepro.c eepro100.c \ +- epic100.c epic100.h fa311.c i82586.c lance.c natsemi.c \ +- ni5010.c ns8390.c ns8390.h otulip.c otulip.h rtl8139.c \ +- sis900.c sis900.h sk_g16.c sk_g16.h smc9000.c smc9000.h \ +- tiara.c tlan.c tulip.c via-rhine.c w89c840.c +- +-libdrivers_a_CFLAGS = $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- -DFSYS_TFTP=1 $(NET_CFLAGS) $(NET_EXTRAFLAGS) +- +-# Filled by configure. +-libdrivers_a_LIBADD = @NETBOOT_DRIVERS@ +-libdrivers_a_DEPENDENCIES = $(libdrivers_a_LIBADD) +-EXTRA_DIST = README.netboot 3c90x.txt cs89x0.txt sis900.txt tulip.txt +- +-# These below are several special rules for the device drivers. +-# We cannot use a simple rule for them... +- +-# What objects are derived from a driver? +-3c509_drivers = 3c509.o 3c529.o +-3c595_drivers = 3c595.o +-3c90x_drivers = 3c90x.o +-cs89x0_drivers = cs89x0.o +-davicom_drivers = davicom.o +-depca_drivers = depca.o +-eepro_drivers = eepro.o +-eepro100_drivers = eepro100.o +-epic100_drivers = epic100.o +-#fa311_drivers = fa311.o +-i82586_drivers = 3c507.o exos205.o ni5210.o +-lance_drivers = lance.o ne2100.o ni6510.o +-natsemi_drivers = natsemi.o +-ni5010_drivers = ni5010.o +-ns8390_drivers = 3c503.o ne.o ns8390.o wd.o +-otulip_drivers = otulip.o +-rtl8139_drivers = rtl8139.o +-sis900_drivers = sis900.o +-sk_g16_drivers = sk_g16.o +-smc9000_drivers = smc9000.o +-tiara_drivers = tiara.o +-#tlan_drivers = tlan.o +-tulip_drivers = tulip.o +-via_rhine_drivers = via_rhine.o +-w89c840_drivers = w89c840.o +- +-# Per-object flags. +-3c509_o_CFLAGS = -DINCLUDE_3C509=1 +-3c529_o_CFLAGS = -DINCLUDE_3C529=1 +-3c595_o_CFLAGS = -DINCLUDE_3C595=1 +-3c90x_o_CFLAGS = -DINCLUDE_3C90X=1 +-cs89x0_o_CFLAGS = -DINCLUDE_CS89X0=1 +-davicom_o_CFLAGS = -DINCLUDE_DAVICOM=1 +-depca_o_CFLAGS = -DINCLUDE_DEPCA=1 +-eepro_o_CFLAGS = -DINCLUDE_EEPRO=1 +-eepro100_o_CFLAGS = -DINCLUDE_EEPRO100=1 +-epic100_o_CFLAGS = -DINCLUDE_EPIC100=1 +-#fa311_o_CFLAGS = -DINCLUDE_FA311=1 +-3c507_o_CFLAGS = -DINCLUDE_3C507=1 +-exos205_o_CFLAGS = -DINCLUDE_EXOS205=1 +-ni5210_o_CFLAGS = -DINCLUDE_NI5210=1 +-lance_o_CFLAGS = -DINCLUDE_LANCE=1 +-ne2100_o_CFLAGS = -DINCLUDE_NE2100=1 +-ni6510_o_CFLAGS = -DINCLUDE_NI6510=1 +-natsemi_o_CFLAGS = -DINCLUDE_NATSEMI=1 +-ni5010_o_CFLAGS = -DINCLUDE_NI5010=1 +-3c503_o_CFLAGS = -DINCLUDE_3C503=1 +-ne_o_CFLAGS = -DINCLUDE_NE=1 +-ns8390_o_CFLAGS = -DINCLUDE_NS8390=1 +-wd_o_CFLAGS = -DINCLUDE_WD=1 +-otulip_o_CFLAGS = -DINCLUDE_OTULIP=1 +-rtl8139_o_CFLAGS = -DINCLUDE_RTL8139=1 +-sis900_o_CFLAGS = -DINCLUDE_SIS900=1 +-sk_g16_o_CFLAGS = -DINCLUDE_SK_G16=1 +-smc9000_o_CFLAGS = -DINCLUDE_SMC9000=1 +-tiara_o_CFLAGS = -DINCLUDE_TIARA=1 +-#tlan_o_CFLAGS = -DINCLUDE_TLAN=1 +-tulip_o_CFLAGS = -DINCLUDE_TULIP=1 +-via_rhine_o_CFLAGS = -DINCLUDE_VIA_RHINE=1 +-w89c840_o_CFLAGS = -DINCLUDE_W89C840=1 +-all: all-am +- +-.SUFFIXES: +-.SUFFIXES: .c .o .obj +-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) +- @for dep in $?; do \ +- case '$(am__configure_deps)' in \ +- *$$dep*) \ +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +- && exit 0; \ +- exit 1;; \ +- esac; \ +- done; \ +- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu netboot/Makefile'; \ +- cd $(top_srcdir) && \ +- $(AUTOMAKE) --gnu netboot/Makefile +-.PRECIOUS: Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- @case '$?' in \ +- *config.status*) \ +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ +- *) \ +- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ +- esac; +- +-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +- +-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +- +-clean-noinstLIBRARIES: +- -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +-libdrivers.a: $(libdrivers_a_OBJECTS) $(libdrivers_a_DEPENDENCIES) +- -rm -f libdrivers.a +- $(libdrivers_a_AR) libdrivers.a $(libdrivers_a_OBJECTS) $(libdrivers_a_LIBADD) +- $(RANLIB) libdrivers.a +- +-mostlyclean-compile: +- -rm -f *.$(OBJEXT) +- +-distclean-compile: +- -rm -f *.tab.c +- +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-3c509.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-3c595.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-3c90x.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-config.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-cs89x0.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-davicom.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-depca.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-eepro.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-eepro100.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-epic100.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-fa311.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-fsys_tftp.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-i82586.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-lance.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-main.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-misc.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-natsemi.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-ni5010.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-ns8390.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-otulip.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-pci.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-rtl8139.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-sis900.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-sk_g16.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-smc9000.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-tiara.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-timer.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-tlan.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-tulip.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-via-rhine.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-w89c840.Po@am__quote@ +- +-.c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c $< +- +-.c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +- +-libdrivers_a-config.o: config.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-config.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-config.Tpo" -c -o libdrivers_a-config.o `test -f 'config.c' || echo '$(srcdir)/'`config.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-config.Tpo" "$(DEPDIR)/libdrivers_a-config.Po"; else rm -f "$(DEPDIR)/libdrivers_a-config.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config.c' object='libdrivers_a-config.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-config.o `test -f 'config.c' || echo '$(srcdir)/'`config.c +- +-libdrivers_a-config.obj: config.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-config.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-config.Tpo" -c -o libdrivers_a-config.obj `if test -f 'config.c'; then $(CYGPATH_W) 'config.c'; else $(CYGPATH_W) '$(srcdir)/config.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-config.Tpo" "$(DEPDIR)/libdrivers_a-config.Po"; else rm -f "$(DEPDIR)/libdrivers_a-config.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config.c' object='libdrivers_a-config.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-config.obj `if test -f 'config.c'; then $(CYGPATH_W) 'config.c'; else $(CYGPATH_W) '$(srcdir)/config.c'; fi` +- +-libdrivers_a-fsys_tftp.o: fsys_tftp.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-fsys_tftp.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-fsys_tftp.Tpo" -c -o libdrivers_a-fsys_tftp.o `test -f 'fsys_tftp.c' || echo '$(srcdir)/'`fsys_tftp.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-fsys_tftp.Tpo" "$(DEPDIR)/libdrivers_a-fsys_tftp.Po"; else rm -f "$(DEPDIR)/libdrivers_a-fsys_tftp.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_tftp.c' object='libdrivers_a-fsys_tftp.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-fsys_tftp.o `test -f 'fsys_tftp.c' || echo '$(srcdir)/'`fsys_tftp.c +- +-libdrivers_a-fsys_tftp.obj: fsys_tftp.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-fsys_tftp.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-fsys_tftp.Tpo" -c -o libdrivers_a-fsys_tftp.obj `if test -f 'fsys_tftp.c'; then $(CYGPATH_W) 'fsys_tftp.c'; else $(CYGPATH_W) '$(srcdir)/fsys_tftp.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-fsys_tftp.Tpo" "$(DEPDIR)/libdrivers_a-fsys_tftp.Po"; else rm -f "$(DEPDIR)/libdrivers_a-fsys_tftp.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_tftp.c' object='libdrivers_a-fsys_tftp.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-fsys_tftp.obj `if test -f 'fsys_tftp.c'; then $(CYGPATH_W) 'fsys_tftp.c'; else $(CYGPATH_W) '$(srcdir)/fsys_tftp.c'; fi` +- +-libdrivers_a-main.o: main.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-main.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-main.Tpo" -c -o libdrivers_a-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-main.Tpo" "$(DEPDIR)/libdrivers_a-main.Po"; else rm -f "$(DEPDIR)/libdrivers_a-main.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='main.c' object='libdrivers_a-main.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c +- +-libdrivers_a-main.obj: main.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-main.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-main.Tpo" -c -o libdrivers_a-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-main.Tpo" "$(DEPDIR)/libdrivers_a-main.Po"; else rm -f "$(DEPDIR)/libdrivers_a-main.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='main.c' object='libdrivers_a-main.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi` +- +-libdrivers_a-misc.o: misc.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-misc.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-misc.Tpo" -c -o libdrivers_a-misc.o `test -f 'misc.c' || echo '$(srcdir)/'`misc.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-misc.Tpo" "$(DEPDIR)/libdrivers_a-misc.Po"; else rm -f "$(DEPDIR)/libdrivers_a-misc.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='misc.c' object='libdrivers_a-misc.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-misc.o `test -f 'misc.c' || echo '$(srcdir)/'`misc.c +- +-libdrivers_a-misc.obj: misc.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-misc.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-misc.Tpo" -c -o libdrivers_a-misc.obj `if test -f 'misc.c'; then $(CYGPATH_W) 'misc.c'; else $(CYGPATH_W) '$(srcdir)/misc.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-misc.Tpo" "$(DEPDIR)/libdrivers_a-misc.Po"; else rm -f "$(DEPDIR)/libdrivers_a-misc.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='misc.c' object='libdrivers_a-misc.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-misc.obj `if test -f 'misc.c'; then $(CYGPATH_W) 'misc.c'; else $(CYGPATH_W) '$(srcdir)/misc.c'; fi` +- +-libdrivers_a-pci.o: pci.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-pci.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-pci.Tpo" -c -o libdrivers_a-pci.o `test -f 'pci.c' || echo '$(srcdir)/'`pci.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-pci.Tpo" "$(DEPDIR)/libdrivers_a-pci.Po"; else rm -f "$(DEPDIR)/libdrivers_a-pci.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pci.c' object='libdrivers_a-pci.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-pci.o `test -f 'pci.c' || echo '$(srcdir)/'`pci.c +- +-libdrivers_a-pci.obj: pci.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-pci.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-pci.Tpo" -c -o libdrivers_a-pci.obj `if test -f 'pci.c'; then $(CYGPATH_W) 'pci.c'; else $(CYGPATH_W) '$(srcdir)/pci.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-pci.Tpo" "$(DEPDIR)/libdrivers_a-pci.Po"; else rm -f "$(DEPDIR)/libdrivers_a-pci.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pci.c' object='libdrivers_a-pci.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-pci.obj `if test -f 'pci.c'; then $(CYGPATH_W) 'pci.c'; else $(CYGPATH_W) '$(srcdir)/pci.c'; fi` +- +-libdrivers_a-timer.o: timer.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-timer.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-timer.Tpo" -c -o libdrivers_a-timer.o `test -f 'timer.c' || echo '$(srcdir)/'`timer.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-timer.Tpo" "$(DEPDIR)/libdrivers_a-timer.Po"; else rm -f "$(DEPDIR)/libdrivers_a-timer.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='timer.c' object='libdrivers_a-timer.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-timer.o `test -f 'timer.c' || echo '$(srcdir)/'`timer.c +- +-libdrivers_a-timer.obj: timer.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-timer.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-timer.Tpo" -c -o libdrivers_a-timer.obj `if test -f 'timer.c'; then $(CYGPATH_W) 'timer.c'; else $(CYGPATH_W) '$(srcdir)/timer.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-timer.Tpo" "$(DEPDIR)/libdrivers_a-timer.Po"; else rm -f "$(DEPDIR)/libdrivers_a-timer.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='timer.c' object='libdrivers_a-timer.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-timer.obj `if test -f 'timer.c'; then $(CYGPATH_W) 'timer.c'; else $(CYGPATH_W) '$(srcdir)/timer.c'; fi` +- +-libdrivers_a-3c509.o: 3c509.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-3c509.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-3c509.Tpo" -c -o libdrivers_a-3c509.o `test -f '3c509.c' || echo '$(srcdir)/'`3c509.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-3c509.Tpo" "$(DEPDIR)/libdrivers_a-3c509.Po"; else rm -f "$(DEPDIR)/libdrivers_a-3c509.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='3c509.c' object='libdrivers_a-3c509.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-3c509.o `test -f '3c509.c' || echo '$(srcdir)/'`3c509.c +- +-libdrivers_a-3c509.obj: 3c509.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-3c509.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-3c509.Tpo" -c -o libdrivers_a-3c509.obj `if test -f '3c509.c'; then $(CYGPATH_W) '3c509.c'; else $(CYGPATH_W) '$(srcdir)/3c509.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-3c509.Tpo" "$(DEPDIR)/libdrivers_a-3c509.Po"; else rm -f "$(DEPDIR)/libdrivers_a-3c509.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='3c509.c' object='libdrivers_a-3c509.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-3c509.obj `if test -f '3c509.c'; then $(CYGPATH_W) '3c509.c'; else $(CYGPATH_W) '$(srcdir)/3c509.c'; fi` +- +-libdrivers_a-3c595.o: 3c595.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-3c595.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-3c595.Tpo" -c -o libdrivers_a-3c595.o `test -f '3c595.c' || echo '$(srcdir)/'`3c595.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-3c595.Tpo" "$(DEPDIR)/libdrivers_a-3c595.Po"; else rm -f "$(DEPDIR)/libdrivers_a-3c595.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='3c595.c' object='libdrivers_a-3c595.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-3c595.o `test -f '3c595.c' || echo '$(srcdir)/'`3c595.c +- +-libdrivers_a-3c595.obj: 3c595.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-3c595.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-3c595.Tpo" -c -o libdrivers_a-3c595.obj `if test -f '3c595.c'; then $(CYGPATH_W) '3c595.c'; else $(CYGPATH_W) '$(srcdir)/3c595.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-3c595.Tpo" "$(DEPDIR)/libdrivers_a-3c595.Po"; else rm -f "$(DEPDIR)/libdrivers_a-3c595.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='3c595.c' object='libdrivers_a-3c595.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-3c595.obj `if test -f '3c595.c'; then $(CYGPATH_W) '3c595.c'; else $(CYGPATH_W) '$(srcdir)/3c595.c'; fi` +- +-libdrivers_a-3c90x.o: 3c90x.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-3c90x.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-3c90x.Tpo" -c -o libdrivers_a-3c90x.o `test -f '3c90x.c' || echo '$(srcdir)/'`3c90x.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-3c90x.Tpo" "$(DEPDIR)/libdrivers_a-3c90x.Po"; else rm -f "$(DEPDIR)/libdrivers_a-3c90x.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='3c90x.c' object='libdrivers_a-3c90x.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-3c90x.o `test -f '3c90x.c' || echo '$(srcdir)/'`3c90x.c +- +-libdrivers_a-3c90x.obj: 3c90x.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-3c90x.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-3c90x.Tpo" -c -o libdrivers_a-3c90x.obj `if test -f '3c90x.c'; then $(CYGPATH_W) '3c90x.c'; else $(CYGPATH_W) '$(srcdir)/3c90x.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-3c90x.Tpo" "$(DEPDIR)/libdrivers_a-3c90x.Po"; else rm -f "$(DEPDIR)/libdrivers_a-3c90x.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='3c90x.c' object='libdrivers_a-3c90x.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-3c90x.obj `if test -f '3c90x.c'; then $(CYGPATH_W) '3c90x.c'; else $(CYGPATH_W) '$(srcdir)/3c90x.c'; fi` +- +-libdrivers_a-cs89x0.o: cs89x0.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-cs89x0.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-cs89x0.Tpo" -c -o libdrivers_a-cs89x0.o `test -f 'cs89x0.c' || echo '$(srcdir)/'`cs89x0.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-cs89x0.Tpo" "$(DEPDIR)/libdrivers_a-cs89x0.Po"; else rm -f "$(DEPDIR)/libdrivers_a-cs89x0.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cs89x0.c' object='libdrivers_a-cs89x0.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-cs89x0.o `test -f 'cs89x0.c' || echo '$(srcdir)/'`cs89x0.c +- +-libdrivers_a-cs89x0.obj: cs89x0.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-cs89x0.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-cs89x0.Tpo" -c -o libdrivers_a-cs89x0.obj `if test -f 'cs89x0.c'; then $(CYGPATH_W) 'cs89x0.c'; else $(CYGPATH_W) '$(srcdir)/cs89x0.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-cs89x0.Tpo" "$(DEPDIR)/libdrivers_a-cs89x0.Po"; else rm -f "$(DEPDIR)/libdrivers_a-cs89x0.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cs89x0.c' object='libdrivers_a-cs89x0.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-cs89x0.obj `if test -f 'cs89x0.c'; then $(CYGPATH_W) 'cs89x0.c'; else $(CYGPATH_W) '$(srcdir)/cs89x0.c'; fi` +- +-libdrivers_a-davicom.o: davicom.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-davicom.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-davicom.Tpo" -c -o libdrivers_a-davicom.o `test -f 'davicom.c' || echo '$(srcdir)/'`davicom.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-davicom.Tpo" "$(DEPDIR)/libdrivers_a-davicom.Po"; else rm -f "$(DEPDIR)/libdrivers_a-davicom.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='davicom.c' object='libdrivers_a-davicom.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-davicom.o `test -f 'davicom.c' || echo '$(srcdir)/'`davicom.c +- +-libdrivers_a-davicom.obj: davicom.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-davicom.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-davicom.Tpo" -c -o libdrivers_a-davicom.obj `if test -f 'davicom.c'; then $(CYGPATH_W) 'davicom.c'; else $(CYGPATH_W) '$(srcdir)/davicom.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-davicom.Tpo" "$(DEPDIR)/libdrivers_a-davicom.Po"; else rm -f "$(DEPDIR)/libdrivers_a-davicom.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='davicom.c' object='libdrivers_a-davicom.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-davicom.obj `if test -f 'davicom.c'; then $(CYGPATH_W) 'davicom.c'; else $(CYGPATH_W) '$(srcdir)/davicom.c'; fi` +- +-libdrivers_a-depca.o: depca.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-depca.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-depca.Tpo" -c -o libdrivers_a-depca.o `test -f 'depca.c' || echo '$(srcdir)/'`depca.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-depca.Tpo" "$(DEPDIR)/libdrivers_a-depca.Po"; else rm -f "$(DEPDIR)/libdrivers_a-depca.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='depca.c' object='libdrivers_a-depca.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-depca.o `test -f 'depca.c' || echo '$(srcdir)/'`depca.c +- +-libdrivers_a-depca.obj: depca.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-depca.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-depca.Tpo" -c -o libdrivers_a-depca.obj `if test -f 'depca.c'; then $(CYGPATH_W) 'depca.c'; else $(CYGPATH_W) '$(srcdir)/depca.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-depca.Tpo" "$(DEPDIR)/libdrivers_a-depca.Po"; else rm -f "$(DEPDIR)/libdrivers_a-depca.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='depca.c' object='libdrivers_a-depca.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-depca.obj `if test -f 'depca.c'; then $(CYGPATH_W) 'depca.c'; else $(CYGPATH_W) '$(srcdir)/depca.c'; fi` +- +-libdrivers_a-eepro.o: eepro.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-eepro.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-eepro.Tpo" -c -o libdrivers_a-eepro.o `test -f 'eepro.c' || echo '$(srcdir)/'`eepro.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-eepro.Tpo" "$(DEPDIR)/libdrivers_a-eepro.Po"; else rm -f "$(DEPDIR)/libdrivers_a-eepro.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='eepro.c' object='libdrivers_a-eepro.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-eepro.o `test -f 'eepro.c' || echo '$(srcdir)/'`eepro.c +- +-libdrivers_a-eepro.obj: eepro.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-eepro.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-eepro.Tpo" -c -o libdrivers_a-eepro.obj `if test -f 'eepro.c'; then $(CYGPATH_W) 'eepro.c'; else $(CYGPATH_W) '$(srcdir)/eepro.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-eepro.Tpo" "$(DEPDIR)/libdrivers_a-eepro.Po"; else rm -f "$(DEPDIR)/libdrivers_a-eepro.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='eepro.c' object='libdrivers_a-eepro.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-eepro.obj `if test -f 'eepro.c'; then $(CYGPATH_W) 'eepro.c'; else $(CYGPATH_W) '$(srcdir)/eepro.c'; fi` +- +-libdrivers_a-eepro100.o: eepro100.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-eepro100.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-eepro100.Tpo" -c -o libdrivers_a-eepro100.o `test -f 'eepro100.c' || echo '$(srcdir)/'`eepro100.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-eepro100.Tpo" "$(DEPDIR)/libdrivers_a-eepro100.Po"; else rm -f "$(DEPDIR)/libdrivers_a-eepro100.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='eepro100.c' object='libdrivers_a-eepro100.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-eepro100.o `test -f 'eepro100.c' || echo '$(srcdir)/'`eepro100.c +- +-libdrivers_a-eepro100.obj: eepro100.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-eepro100.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-eepro100.Tpo" -c -o libdrivers_a-eepro100.obj `if test -f 'eepro100.c'; then $(CYGPATH_W) 'eepro100.c'; else $(CYGPATH_W) '$(srcdir)/eepro100.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-eepro100.Tpo" "$(DEPDIR)/libdrivers_a-eepro100.Po"; else rm -f "$(DEPDIR)/libdrivers_a-eepro100.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='eepro100.c' object='libdrivers_a-eepro100.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-eepro100.obj `if test -f 'eepro100.c'; then $(CYGPATH_W) 'eepro100.c'; else $(CYGPATH_W) '$(srcdir)/eepro100.c'; fi` +- +-libdrivers_a-epic100.o: epic100.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-epic100.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-epic100.Tpo" -c -o libdrivers_a-epic100.o `test -f 'epic100.c' || echo '$(srcdir)/'`epic100.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-epic100.Tpo" "$(DEPDIR)/libdrivers_a-epic100.Po"; else rm -f "$(DEPDIR)/libdrivers_a-epic100.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epic100.c' object='libdrivers_a-epic100.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-epic100.o `test -f 'epic100.c' || echo '$(srcdir)/'`epic100.c +- +-libdrivers_a-epic100.obj: epic100.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-epic100.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-epic100.Tpo" -c -o libdrivers_a-epic100.obj `if test -f 'epic100.c'; then $(CYGPATH_W) 'epic100.c'; else $(CYGPATH_W) '$(srcdir)/epic100.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-epic100.Tpo" "$(DEPDIR)/libdrivers_a-epic100.Po"; else rm -f "$(DEPDIR)/libdrivers_a-epic100.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epic100.c' object='libdrivers_a-epic100.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-epic100.obj `if test -f 'epic100.c'; then $(CYGPATH_W) 'epic100.c'; else $(CYGPATH_W) '$(srcdir)/epic100.c'; fi` +- +-libdrivers_a-fa311.o: fa311.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-fa311.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-fa311.Tpo" -c -o libdrivers_a-fa311.o `test -f 'fa311.c' || echo '$(srcdir)/'`fa311.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-fa311.Tpo" "$(DEPDIR)/libdrivers_a-fa311.Po"; else rm -f "$(DEPDIR)/libdrivers_a-fa311.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fa311.c' object='libdrivers_a-fa311.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-fa311.o `test -f 'fa311.c' || echo '$(srcdir)/'`fa311.c +- +-libdrivers_a-fa311.obj: fa311.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-fa311.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-fa311.Tpo" -c -o libdrivers_a-fa311.obj `if test -f 'fa311.c'; then $(CYGPATH_W) 'fa311.c'; else $(CYGPATH_W) '$(srcdir)/fa311.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-fa311.Tpo" "$(DEPDIR)/libdrivers_a-fa311.Po"; else rm -f "$(DEPDIR)/libdrivers_a-fa311.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fa311.c' object='libdrivers_a-fa311.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-fa311.obj `if test -f 'fa311.c'; then $(CYGPATH_W) 'fa311.c'; else $(CYGPATH_W) '$(srcdir)/fa311.c'; fi` +- +-libdrivers_a-i82586.o: i82586.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-i82586.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-i82586.Tpo" -c -o libdrivers_a-i82586.o `test -f 'i82586.c' || echo '$(srcdir)/'`i82586.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-i82586.Tpo" "$(DEPDIR)/libdrivers_a-i82586.Po"; else rm -f "$(DEPDIR)/libdrivers_a-i82586.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='i82586.c' object='libdrivers_a-i82586.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-i82586.o `test -f 'i82586.c' || echo '$(srcdir)/'`i82586.c +- +-libdrivers_a-i82586.obj: i82586.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-i82586.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-i82586.Tpo" -c -o libdrivers_a-i82586.obj `if test -f 'i82586.c'; then $(CYGPATH_W) 'i82586.c'; else $(CYGPATH_W) '$(srcdir)/i82586.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-i82586.Tpo" "$(DEPDIR)/libdrivers_a-i82586.Po"; else rm -f "$(DEPDIR)/libdrivers_a-i82586.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='i82586.c' object='libdrivers_a-i82586.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-i82586.obj `if test -f 'i82586.c'; then $(CYGPATH_W) 'i82586.c'; else $(CYGPATH_W) '$(srcdir)/i82586.c'; fi` +- +-libdrivers_a-lance.o: lance.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-lance.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-lance.Tpo" -c -o libdrivers_a-lance.o `test -f 'lance.c' || echo '$(srcdir)/'`lance.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-lance.Tpo" "$(DEPDIR)/libdrivers_a-lance.Po"; else rm -f "$(DEPDIR)/libdrivers_a-lance.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='lance.c' object='libdrivers_a-lance.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-lance.o `test -f 'lance.c' || echo '$(srcdir)/'`lance.c +- +-libdrivers_a-lance.obj: lance.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-lance.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-lance.Tpo" -c -o libdrivers_a-lance.obj `if test -f 'lance.c'; then $(CYGPATH_W) 'lance.c'; else $(CYGPATH_W) '$(srcdir)/lance.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-lance.Tpo" "$(DEPDIR)/libdrivers_a-lance.Po"; else rm -f "$(DEPDIR)/libdrivers_a-lance.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='lance.c' object='libdrivers_a-lance.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-lance.obj `if test -f 'lance.c'; then $(CYGPATH_W) 'lance.c'; else $(CYGPATH_W) '$(srcdir)/lance.c'; fi` +- +-libdrivers_a-natsemi.o: natsemi.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-natsemi.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-natsemi.Tpo" -c -o libdrivers_a-natsemi.o `test -f 'natsemi.c' || echo '$(srcdir)/'`natsemi.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-natsemi.Tpo" "$(DEPDIR)/libdrivers_a-natsemi.Po"; else rm -f "$(DEPDIR)/libdrivers_a-natsemi.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='natsemi.c' object='libdrivers_a-natsemi.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-natsemi.o `test -f 'natsemi.c' || echo '$(srcdir)/'`natsemi.c +- +-libdrivers_a-natsemi.obj: natsemi.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-natsemi.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-natsemi.Tpo" -c -o libdrivers_a-natsemi.obj `if test -f 'natsemi.c'; then $(CYGPATH_W) 'natsemi.c'; else $(CYGPATH_W) '$(srcdir)/natsemi.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-natsemi.Tpo" "$(DEPDIR)/libdrivers_a-natsemi.Po"; else rm -f "$(DEPDIR)/libdrivers_a-natsemi.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='natsemi.c' object='libdrivers_a-natsemi.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-natsemi.obj `if test -f 'natsemi.c'; then $(CYGPATH_W) 'natsemi.c'; else $(CYGPATH_W) '$(srcdir)/natsemi.c'; fi` +- +-libdrivers_a-ni5010.o: ni5010.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-ni5010.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-ni5010.Tpo" -c -o libdrivers_a-ni5010.o `test -f 'ni5010.c' || echo '$(srcdir)/'`ni5010.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-ni5010.Tpo" "$(DEPDIR)/libdrivers_a-ni5010.Po"; else rm -f "$(DEPDIR)/libdrivers_a-ni5010.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ni5010.c' object='libdrivers_a-ni5010.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-ni5010.o `test -f 'ni5010.c' || echo '$(srcdir)/'`ni5010.c +- +-libdrivers_a-ni5010.obj: ni5010.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-ni5010.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-ni5010.Tpo" -c -o libdrivers_a-ni5010.obj `if test -f 'ni5010.c'; then $(CYGPATH_W) 'ni5010.c'; else $(CYGPATH_W) '$(srcdir)/ni5010.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-ni5010.Tpo" "$(DEPDIR)/libdrivers_a-ni5010.Po"; else rm -f "$(DEPDIR)/libdrivers_a-ni5010.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ni5010.c' object='libdrivers_a-ni5010.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-ni5010.obj `if test -f 'ni5010.c'; then $(CYGPATH_W) 'ni5010.c'; else $(CYGPATH_W) '$(srcdir)/ni5010.c'; fi` +- +-libdrivers_a-ns8390.o: ns8390.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-ns8390.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-ns8390.Tpo" -c -o libdrivers_a-ns8390.o `test -f 'ns8390.c' || echo '$(srcdir)/'`ns8390.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-ns8390.Tpo" "$(DEPDIR)/libdrivers_a-ns8390.Po"; else rm -f "$(DEPDIR)/libdrivers_a-ns8390.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ns8390.c' object='libdrivers_a-ns8390.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-ns8390.o `test -f 'ns8390.c' || echo '$(srcdir)/'`ns8390.c +- +-libdrivers_a-ns8390.obj: ns8390.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-ns8390.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-ns8390.Tpo" -c -o libdrivers_a-ns8390.obj `if test -f 'ns8390.c'; then $(CYGPATH_W) 'ns8390.c'; else $(CYGPATH_W) '$(srcdir)/ns8390.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-ns8390.Tpo" "$(DEPDIR)/libdrivers_a-ns8390.Po"; else rm -f "$(DEPDIR)/libdrivers_a-ns8390.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ns8390.c' object='libdrivers_a-ns8390.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-ns8390.obj `if test -f 'ns8390.c'; then $(CYGPATH_W) 'ns8390.c'; else $(CYGPATH_W) '$(srcdir)/ns8390.c'; fi` +- +-libdrivers_a-otulip.o: otulip.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-otulip.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-otulip.Tpo" -c -o libdrivers_a-otulip.o `test -f 'otulip.c' || echo '$(srcdir)/'`otulip.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-otulip.Tpo" "$(DEPDIR)/libdrivers_a-otulip.Po"; else rm -f "$(DEPDIR)/libdrivers_a-otulip.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='otulip.c' object='libdrivers_a-otulip.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-otulip.o `test -f 'otulip.c' || echo '$(srcdir)/'`otulip.c +- +-libdrivers_a-otulip.obj: otulip.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-otulip.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-otulip.Tpo" -c -o libdrivers_a-otulip.obj `if test -f 'otulip.c'; then $(CYGPATH_W) 'otulip.c'; else $(CYGPATH_W) '$(srcdir)/otulip.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-otulip.Tpo" "$(DEPDIR)/libdrivers_a-otulip.Po"; else rm -f "$(DEPDIR)/libdrivers_a-otulip.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='otulip.c' object='libdrivers_a-otulip.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-otulip.obj `if test -f 'otulip.c'; then $(CYGPATH_W) 'otulip.c'; else $(CYGPATH_W) '$(srcdir)/otulip.c'; fi` +- +-libdrivers_a-rtl8139.o: rtl8139.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-rtl8139.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-rtl8139.Tpo" -c -o libdrivers_a-rtl8139.o `test -f 'rtl8139.c' || echo '$(srcdir)/'`rtl8139.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-rtl8139.Tpo" "$(DEPDIR)/libdrivers_a-rtl8139.Po"; else rm -f "$(DEPDIR)/libdrivers_a-rtl8139.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='rtl8139.c' object='libdrivers_a-rtl8139.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-rtl8139.o `test -f 'rtl8139.c' || echo '$(srcdir)/'`rtl8139.c +- +-libdrivers_a-rtl8139.obj: rtl8139.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-rtl8139.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-rtl8139.Tpo" -c -o libdrivers_a-rtl8139.obj `if test -f 'rtl8139.c'; then $(CYGPATH_W) 'rtl8139.c'; else $(CYGPATH_W) '$(srcdir)/rtl8139.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-rtl8139.Tpo" "$(DEPDIR)/libdrivers_a-rtl8139.Po"; else rm -f "$(DEPDIR)/libdrivers_a-rtl8139.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='rtl8139.c' object='libdrivers_a-rtl8139.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-rtl8139.obj `if test -f 'rtl8139.c'; then $(CYGPATH_W) 'rtl8139.c'; else $(CYGPATH_W) '$(srcdir)/rtl8139.c'; fi` +- +-libdrivers_a-sis900.o: sis900.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-sis900.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-sis900.Tpo" -c -o libdrivers_a-sis900.o `test -f 'sis900.c' || echo '$(srcdir)/'`sis900.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-sis900.Tpo" "$(DEPDIR)/libdrivers_a-sis900.Po"; else rm -f "$(DEPDIR)/libdrivers_a-sis900.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sis900.c' object='libdrivers_a-sis900.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-sis900.o `test -f 'sis900.c' || echo '$(srcdir)/'`sis900.c +- +-libdrivers_a-sis900.obj: sis900.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-sis900.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-sis900.Tpo" -c -o libdrivers_a-sis900.obj `if test -f 'sis900.c'; then $(CYGPATH_W) 'sis900.c'; else $(CYGPATH_W) '$(srcdir)/sis900.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-sis900.Tpo" "$(DEPDIR)/libdrivers_a-sis900.Po"; else rm -f "$(DEPDIR)/libdrivers_a-sis900.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sis900.c' object='libdrivers_a-sis900.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-sis900.obj `if test -f 'sis900.c'; then $(CYGPATH_W) 'sis900.c'; else $(CYGPATH_W) '$(srcdir)/sis900.c'; fi` +- +-libdrivers_a-sk_g16.o: sk_g16.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-sk_g16.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-sk_g16.Tpo" -c -o libdrivers_a-sk_g16.o `test -f 'sk_g16.c' || echo '$(srcdir)/'`sk_g16.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-sk_g16.Tpo" "$(DEPDIR)/libdrivers_a-sk_g16.Po"; else rm -f "$(DEPDIR)/libdrivers_a-sk_g16.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sk_g16.c' object='libdrivers_a-sk_g16.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-sk_g16.o `test -f 'sk_g16.c' || echo '$(srcdir)/'`sk_g16.c +- +-libdrivers_a-sk_g16.obj: sk_g16.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-sk_g16.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-sk_g16.Tpo" -c -o libdrivers_a-sk_g16.obj `if test -f 'sk_g16.c'; then $(CYGPATH_W) 'sk_g16.c'; else $(CYGPATH_W) '$(srcdir)/sk_g16.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-sk_g16.Tpo" "$(DEPDIR)/libdrivers_a-sk_g16.Po"; else rm -f "$(DEPDIR)/libdrivers_a-sk_g16.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sk_g16.c' object='libdrivers_a-sk_g16.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-sk_g16.obj `if test -f 'sk_g16.c'; then $(CYGPATH_W) 'sk_g16.c'; else $(CYGPATH_W) '$(srcdir)/sk_g16.c'; fi` +- +-libdrivers_a-smc9000.o: smc9000.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-smc9000.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-smc9000.Tpo" -c -o libdrivers_a-smc9000.o `test -f 'smc9000.c' || echo '$(srcdir)/'`smc9000.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-smc9000.Tpo" "$(DEPDIR)/libdrivers_a-smc9000.Po"; else rm -f "$(DEPDIR)/libdrivers_a-smc9000.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='smc9000.c' object='libdrivers_a-smc9000.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-smc9000.o `test -f 'smc9000.c' || echo '$(srcdir)/'`smc9000.c +- +-libdrivers_a-smc9000.obj: smc9000.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-smc9000.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-smc9000.Tpo" -c -o libdrivers_a-smc9000.obj `if test -f 'smc9000.c'; then $(CYGPATH_W) 'smc9000.c'; else $(CYGPATH_W) '$(srcdir)/smc9000.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-smc9000.Tpo" "$(DEPDIR)/libdrivers_a-smc9000.Po"; else rm -f "$(DEPDIR)/libdrivers_a-smc9000.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='smc9000.c' object='libdrivers_a-smc9000.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-smc9000.obj `if test -f 'smc9000.c'; then $(CYGPATH_W) 'smc9000.c'; else $(CYGPATH_W) '$(srcdir)/smc9000.c'; fi` +- +-libdrivers_a-tiara.o: tiara.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-tiara.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-tiara.Tpo" -c -o libdrivers_a-tiara.o `test -f 'tiara.c' || echo '$(srcdir)/'`tiara.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-tiara.Tpo" "$(DEPDIR)/libdrivers_a-tiara.Po"; else rm -f "$(DEPDIR)/libdrivers_a-tiara.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tiara.c' object='libdrivers_a-tiara.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-tiara.o `test -f 'tiara.c' || echo '$(srcdir)/'`tiara.c +- +-libdrivers_a-tiara.obj: tiara.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-tiara.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-tiara.Tpo" -c -o libdrivers_a-tiara.obj `if test -f 'tiara.c'; then $(CYGPATH_W) 'tiara.c'; else $(CYGPATH_W) '$(srcdir)/tiara.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-tiara.Tpo" "$(DEPDIR)/libdrivers_a-tiara.Po"; else rm -f "$(DEPDIR)/libdrivers_a-tiara.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tiara.c' object='libdrivers_a-tiara.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-tiara.obj `if test -f 'tiara.c'; then $(CYGPATH_W) 'tiara.c'; else $(CYGPATH_W) '$(srcdir)/tiara.c'; fi` +- +-libdrivers_a-tlan.o: tlan.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-tlan.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-tlan.Tpo" -c -o libdrivers_a-tlan.o `test -f 'tlan.c' || echo '$(srcdir)/'`tlan.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-tlan.Tpo" "$(DEPDIR)/libdrivers_a-tlan.Po"; else rm -f "$(DEPDIR)/libdrivers_a-tlan.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tlan.c' object='libdrivers_a-tlan.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-tlan.o `test -f 'tlan.c' || echo '$(srcdir)/'`tlan.c +- +-libdrivers_a-tlan.obj: tlan.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-tlan.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-tlan.Tpo" -c -o libdrivers_a-tlan.obj `if test -f 'tlan.c'; then $(CYGPATH_W) 'tlan.c'; else $(CYGPATH_W) '$(srcdir)/tlan.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-tlan.Tpo" "$(DEPDIR)/libdrivers_a-tlan.Po"; else rm -f "$(DEPDIR)/libdrivers_a-tlan.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tlan.c' object='libdrivers_a-tlan.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-tlan.obj `if test -f 'tlan.c'; then $(CYGPATH_W) 'tlan.c'; else $(CYGPATH_W) '$(srcdir)/tlan.c'; fi` +- +-libdrivers_a-tulip.o: tulip.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-tulip.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-tulip.Tpo" -c -o libdrivers_a-tulip.o `test -f 'tulip.c' || echo '$(srcdir)/'`tulip.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-tulip.Tpo" "$(DEPDIR)/libdrivers_a-tulip.Po"; else rm -f "$(DEPDIR)/libdrivers_a-tulip.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tulip.c' object='libdrivers_a-tulip.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-tulip.o `test -f 'tulip.c' || echo '$(srcdir)/'`tulip.c +- +-libdrivers_a-tulip.obj: tulip.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-tulip.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-tulip.Tpo" -c -o libdrivers_a-tulip.obj `if test -f 'tulip.c'; then $(CYGPATH_W) 'tulip.c'; else $(CYGPATH_W) '$(srcdir)/tulip.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-tulip.Tpo" "$(DEPDIR)/libdrivers_a-tulip.Po"; else rm -f "$(DEPDIR)/libdrivers_a-tulip.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tulip.c' object='libdrivers_a-tulip.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-tulip.obj `if test -f 'tulip.c'; then $(CYGPATH_W) 'tulip.c'; else $(CYGPATH_W) '$(srcdir)/tulip.c'; fi` +- +-libdrivers_a-via-rhine.o: via-rhine.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-via-rhine.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-via-rhine.Tpo" -c -o libdrivers_a-via-rhine.o `test -f 'via-rhine.c' || echo '$(srcdir)/'`via-rhine.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-via-rhine.Tpo" "$(DEPDIR)/libdrivers_a-via-rhine.Po"; else rm -f "$(DEPDIR)/libdrivers_a-via-rhine.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='via-rhine.c' object='libdrivers_a-via-rhine.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-via-rhine.o `test -f 'via-rhine.c' || echo '$(srcdir)/'`via-rhine.c +- +-libdrivers_a-via-rhine.obj: via-rhine.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-via-rhine.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-via-rhine.Tpo" -c -o libdrivers_a-via-rhine.obj `if test -f 'via-rhine.c'; then $(CYGPATH_W) 'via-rhine.c'; else $(CYGPATH_W) '$(srcdir)/via-rhine.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-via-rhine.Tpo" "$(DEPDIR)/libdrivers_a-via-rhine.Po"; else rm -f "$(DEPDIR)/libdrivers_a-via-rhine.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='via-rhine.c' object='libdrivers_a-via-rhine.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-via-rhine.obj `if test -f 'via-rhine.c'; then $(CYGPATH_W) 'via-rhine.c'; else $(CYGPATH_W) '$(srcdir)/via-rhine.c'; fi` +- +-libdrivers_a-w89c840.o: w89c840.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-w89c840.o -MD -MP -MF "$(DEPDIR)/libdrivers_a-w89c840.Tpo" -c -o libdrivers_a-w89c840.o `test -f 'w89c840.c' || echo '$(srcdir)/'`w89c840.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-w89c840.Tpo" "$(DEPDIR)/libdrivers_a-w89c840.Po"; else rm -f "$(DEPDIR)/libdrivers_a-w89c840.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='w89c840.c' object='libdrivers_a-w89c840.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-w89c840.o `test -f 'w89c840.c' || echo '$(srcdir)/'`w89c840.c +- +-libdrivers_a-w89c840.obj: w89c840.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -MT libdrivers_a-w89c840.obj -MD -MP -MF "$(DEPDIR)/libdrivers_a-w89c840.Tpo" -c -o libdrivers_a-w89c840.obj `if test -f 'w89c840.c'; then $(CYGPATH_W) 'w89c840.c'; else $(CYGPATH_W) '$(srcdir)/w89c840.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libdrivers_a-w89c840.Tpo" "$(DEPDIR)/libdrivers_a-w89c840.Po"; else rm -f "$(DEPDIR)/libdrivers_a-w89c840.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='w89c840.c' object='libdrivers_a-w89c840.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdrivers_a_CFLAGS) $(CFLAGS) -c -o libdrivers_a-w89c840.obj `if test -f 'w89c840.c'; then $(CYGPATH_W) 'w89c840.c'; else $(CYGPATH_W) '$(srcdir)/w89c840.c'; fi` +-uninstall-info-am: +- +-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- mkid -fID $$unique +-tags: TAGS +- +-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) +- tags=; \ +- here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ +- test -n "$$unique" || unique=$$empty_fix; \ +- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique; \ +- fi +-ctags: CTAGS +-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) +- tags=; \ +- here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- test -z "$(CTAGS_ARGS)$$tags$$unique" \ +- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ +- $$tags $$unique +- +-GTAGS: +- here=`$(am__cd) $(top_builddir) && pwd` \ +- && cd $(top_srcdir) \ +- && gtags -i $(GTAGS_ARGS) $$here +- +-distclean-tags: +- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +- +-distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ +- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkdir_p) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ +- if test -d $$d/$$file; then \ +- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ +- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ +- fi; \ +- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ +- else \ +- test -f $(distdir)/$$file \ +- || cp -p $$d/$$file $(distdir)/$$file \ +- || exit 1; \ +- fi; \ +- done +-check-am: all-am +-check: check-am +-all-am: Makefile $(LIBRARIES) +-installdirs: +-install: install-am +-install-exec: install-exec-am +-install-data: install-data-am +-uninstall: uninstall-am +- +-install-am: all-am +- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +- +-installcheck: installcheck-am +-install-strip: +- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ +- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ +- `test -z '$(STRIP)' || \ +- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +-mostlyclean-generic: +- +-clean-generic: +- +-distclean-generic: +- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) +- +-maintainer-clean-generic: +- @echo "This command is intended for maintainers to use" +- @echo "it deletes files that may require special tools to rebuild." +-clean: clean-am +- +-clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am +- +-distclean: distclean-am +- -rm -rf ./$(DEPDIR) +- -rm -f Makefile +-distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-tags +- +-dvi: dvi-am +- +-dvi-am: +- +-html: html-am +- +-info: info-am +- +-info-am: +- +-install-data-am: +- +-install-exec-am: +- +-install-info: install-info-am +- +-install-man: +- +-installcheck-am: +- +-maintainer-clean: maintainer-clean-am +- -rm -rf ./$(DEPDIR) +- -rm -f Makefile +-maintainer-clean-am: distclean-am maintainer-clean-generic +- +-mostlyclean: mostlyclean-am +- +-mostlyclean-am: mostlyclean-compile mostlyclean-generic +- +-pdf: pdf-am +- +-pdf-am: +- +-ps: ps-am +- +-ps-am: +- +-uninstall-am: uninstall-info-am +- +-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ +- clean-noinstLIBRARIES ctags distclean distclean-compile \ +- distclean-generic distclean-tags distdir dvi dvi-am html \ +- html-am info info-am install install-am install-data \ +- install-data-am install-exec install-exec-am install-info \ +- install-info-am install-man install-strip installcheck \ +- installcheck-am installdirs maintainer-clean \ +- maintainer-clean-generic mostlyclean mostlyclean-compile \ +- mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ +- uninstall-am uninstall-info-am +- +- +-# Is it really necessary to specify dependecies explicitly? +-$(3c509_drivers): 3c509.c 3c509.h +-$(3c509_drivers): %.o: 3c509.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(3c595_drivers): 3c595.c 3c595.h +-$(3c595_drivers): %.o: 3c595.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(3c90x_drivers): 3c90x.c +-$(3c90x_drivers): %.o: 3c90x.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(cs89x0_drivers): cs89x0.c cs89x0.h +-$(cs89x0_drivers): %.o: cs89x0.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(davicom_drivers): davicom.c +-$(davicom_drivers): %.o: davicom.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(depca_drivers): depca.c +-$(depca_drivers): %.o: depca.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(eepro_drivers): eepro.c +-$(eepro_drivers): %.o: eepro.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(eepro100_drivers): eepro100.c +-$(eepro100_drivers): %.o: eepro100.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(epic100_drivers): epic100.c epic100.h +-$(epic100_drivers): %.o: epic100.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-#$(fa311_drivers): fa311.c +-#$(fa311_drivers): %.o: fa311.c +-# $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +-# $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(i82586_drivers): i82586.c +-$(i82586_drivers): %.o: i82586.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(lance_drivers): lance.c +-$(lance_drivers): %.o: lance.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(natsemi_drivers): natsemi.c +-$(natsemi_drivers): %.o: natsemi.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(ni5010_drivers): ni5010.c +-$(ni5010_drivers): %.o: ni5010.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(ns8390_drivers): ns8390.c ns8390.h +-$(ns8390_drivers): %.o: ns8390.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(otulip_drivers): otulip.c otulip.h +-$(otulip_drivers): %.o: otulip.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(rtl8139_drivers): rtl8139.c +-$(rtl8139_drivers): %.o: rtl8139.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(sis900_drivers): sis900.c +-$(sis900_drivers): %.o: sis900.c sis900.h +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(sk_g16_drivers): sk_g16.c sk_g16.h +-$(sk_g16_drivers): %.o: sk_g16.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(smc9000_drivers): smc9000.c smc9000.h +-$(smc9000_drivers): %.o: smc9000.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(tiara_drivers): tiara.c +-$(tiara_drivers): %.o: tiara.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-#$(tlan_drivers): tlan.c +-#$(tlan_drivers): %.o: tlan.c +-# $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +-# $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(tulip_drivers): tulip.c +-$(tulip_drivers): %.o: tulip.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(via_rhine_drivers): via-rhine.c +-$(via_rhine_drivers): %.o: via-rhine.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +- +-$(w89c840_drivers): w89c840.c +-$(w89c840_drivers): %.o: w89c840.c +- $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< +-# Tell versions [3.59,3.63) of GNU make to not export all variables. +-# Otherwise a system limit (for SysV at least) may be exceeded. +-.NOEXPORT: +diff --git a/netboot/etherboot.h b/netboot/etherboot.h +index 74ca16f..9c02b25 100644 +--- a/netboot/etherboot.h ++++ b/netboot/etherboot.h +@@ -246,7 +246,7 @@ Author: Martin Renters + + typedef struct + { +- unsigned long s_addr; ++ unsigned int s_addr; + } + in_addr; + +@@ -302,7 +302,7 @@ struct bootp_t + char bp_htype; + char bp_hlen; + char bp_hops; +- unsigned long bp_xid; ++ unsigned int bp_xid; + unsigned short bp_secs; + unsigned short unused; + in_addr bp_ciaddr; +@@ -411,25 +411,25 @@ struct rpc_t + + struct + { +- long id; +- long type; +- long rpcvers; +- long prog; +- long vers; +- long proc; +- long data[1]; ++ int id; ++ int type; ++ int rpcvers; ++ int prog; ++ int vers; ++ int proc; ++ int data[1]; + } + call; + + struct + { +- long id; +- long type; +- long rstatus; +- long verifier; +- long v2; +- long astatus; +- long data[1]; ++ int id; ++ int type; ++ int rstatus; ++ int verifier; ++ int v2; ++ int astatus; ++ int data[1]; + } + reply; + } +@@ -531,9 +531,7 @@ extern int ip_abort; + extern int network_ready; + extern struct rom_info rom; + extern struct arptable_t arptable[MAX_ARP]; +-extern struct bootpd_t bootp_data; + #define BOOTP_DATA_ADDR (&bootp_data) +-extern unsigned char *end_of_rfc1533; + + /* config.c */ + extern struct nic nic; +diff --git a/netboot/main.c b/netboot/main.c +index 82759b6..b8ba920 100644 +--- a/netboot/main.c ++++ b/netboot/main.c +@@ -53,9 +53,9 @@ int network_ready = 0; + struct rom_info rom; + + static int vendorext_isvalid; +-static unsigned long netmask; ++static unsigned int netmask; + static struct bootpd_t bootp_data; +-static unsigned long xid; ++static unsigned int xid; + static unsigned char *end_of_rfc1533 = NULL; + + #ifndef NO_DHCP_SUPPORT +@@ -773,7 +773,7 @@ await_reply (int type, int ival, void *ptr, int timeout) + if (nic.packetlen >= ETH_HLEN + sizeof (struct arprequest) + && ptype == ARP) + { +- unsigned long tmp; ++ unsigned int tmp; + + arpreply = (struct arprequest *) &nic.packet[ETH_HLEN]; + +diff --git a/netboot/misc.c b/netboot/misc.c +index 28614fd..6ea9a8e 100644 +--- a/netboot/misc.c ++++ b/netboot/misc.c +@@ -21,6 +21,7 @@ + + #define GRUB 1 + #include ++#include + + void + sleep (int secs) +@@ -71,9 +72,10 @@ PRINTF and friends + Note: width specification not supported + **************************************************************************/ + static int +-etherboot_vsprintf (char *buf, const char *fmt, const int *dp) ++etherboot_vsprintf (char *buf, const char *fmt, va_list args) + { + char *p, *s; ++ int n; + + s = buf; + for ( ; *fmt != '\0'; ++fmt) +@@ -86,7 +88,7 @@ etherboot_vsprintf (char *buf, const char *fmt, const int *dp) + + if (*++fmt == 's') + { +- for (p = (char *) *dp++; *p != '\0'; p++) ++ for (p = va_arg (args, char *); *p != '\0'; p++) + buf ? *s++ = *p : grub_putchar (*p); + } + else +@@ -120,46 +122,44 @@ etherboot_vsprintf (char *buf, const char *fmt, const int *dp) + */ + if ((*fmt | 0x20) == 'x') + { +- /* With x86 gcc, sizeof(long) == sizeof(int) */ +- const long *lp = (const long *) dp; +- long h = *lp++; + int ncase = (*fmt & 0x20); ++ ++ n = va_arg (args, int); + +- dp = (const int *) lp; + if (alt) + { + *q++ = '0'; + *q++ = 'X' | ncase; + } + for (; shift >= 0; shift -= 4) +- *q++ = "0123456789ABCDEF"[(h >> shift) & 0xF] | ncase; ++ *q++ = "0123456789ABCDEF"[(n >> shift) & 0xF] | ncase; + } + else if (*fmt == 'd') + { +- int i = *dp++; + char *r; +- +- if (i < 0) ++ ++ n = va_arg (args, int); ++ if (n < 0) + { + *q++ = '-'; +- i = -i; ++ n = -n; + } + + p = q; /* save beginning of digits */ + do + { +- *q++ = '0' + (i % 10); +- i /= 10; ++ *q++ = '0' + (n % 10); ++ n /= 10; + } +- while (i); ++ while (n); + + /* reverse digits, stop in middle */ + r = q; /* don't alter q */ + while (--r > p) + { +- i = *r; ++ n = *r; + *r = *p; +- *p++ = i; ++ *p++ = n; + } + } + else if (*fmt == '@') +@@ -167,14 +167,12 @@ etherboot_vsprintf (char *buf, const char *fmt, const int *dp) + unsigned char *r; + union + { +- long l; ++ int l; + unsigned char c[4]; + } + u; +- const long *lp = (const long *) dp; + +- u.l = *lp++; +- dp = (const int *) lp; ++ u.l = va_arg (args, int); + + for (r = &u.c[0]; r < &u.c[4]; ++r) + q += etherboot_sprintf (q, "%d.", *r); +@@ -184,15 +182,15 @@ etherboot_vsprintf (char *buf, const char *fmt, const int *dp) + else if (*fmt == '!') + { + char *r; +- p = (char *) *dp++; +- ++ ++ p = va_arg (args, char *); + for (r = p + ETH_ALEN; p < r; ++p) + q += etherboot_sprintf (q, "%hhX:", *p); + + --q; + } + else if (*fmt == 'c') +- *q++ = *dp++; ++ *q++ = va_arg (args, int); + else + *q++ = *fmt; + +@@ -211,13 +209,23 @@ etherboot_vsprintf (char *buf, const char *fmt, const int *dp) + int + etherboot_sprintf (char *buf, const char *fmt, ...) + { +- return etherboot_vsprintf (buf, fmt, ((const int *) &fmt) + 1); ++ va_list ap; ++ int ret; ++ ++ va_start (ap, fmt); ++ ret = etherboot_vsprintf (buf, fmt, ap); ++ va_end (ap); ++ return ret; + } + + void + etherboot_printf (const char *fmt, ...) + { +- (void) etherboot_vsprintf (0, fmt, ((const int *) &fmt) + 1); ++ va_list ap; ++ ++ va_start (ap, fmt); ++ (void) etherboot_vsprintf (0, fmt, ap); ++ va_end (ap); + } + + int +diff --git a/netboot/osdep.h b/netboot/osdep.h +index 57218bf..881141b 100644 +--- a/netboot/osdep.h ++++ b/netboot/osdep.h +@@ -21,10 +21,10 @@ + #elif defined(__LITTLE_ENDIAN) + # if !defined(__constant_htonl) + # define __constant_htonl(x) \ +- ((unsigned long int)((((unsigned long int)(x) & 0x000000ffU) << 24) | \ +- (((unsigned long int)(x) & 0x0000ff00U) << 8) | \ +- (((unsigned long int)(x) & 0x00ff0000U) >> 8) | \ +- (((unsigned long int)(x) & 0xff000000U) >> 24))) ++ ((unsigned int)((((unsigned int)(x) & 0x000000ffU) << 24) | \ ++ (((unsigned int)(x) & 0x0000ff00U) << 8) | \ ++ (((unsigned int)(x) & 0x00ff0000U) >> 8) | \ ++ (((unsigned int)(x) & 0xff000000U) >> 24))) + # endif + # if !defined(__constant_htons) + # define __constant_htons(x) \ +@@ -36,11 +36,11 @@ + #endif + + #define ntohl(x) \ +-(__builtin_constant_p(x) ? \ ++(__builtin_constant_p((unsigned int)x) ? \ + __constant_htonl((x)) : \ + __swap32(x)) + #define htonl(x) \ +-(__builtin_constant_p(x) ? \ ++(__builtin_constant_p((unsigned int)x) ? \ + __constant_htonl((x)) : \ + __swap32(x)) + #define ntohs(x) \ +@@ -52,21 +52,29 @@ + __constant_htons((x)) : \ + __swap16(x)) + +-static inline unsigned long int __swap32(unsigned long int x) ++static inline unsigned int __swap32(unsigned int x) + { ++#ifdef PLATFORM_EFI ++ __asm__("bswapl %0" : "=r" (x) : "0" (x)); ++#else + __asm__("xchgb %b0,%h0\n\t" + "rorl $16,%0\n\t" + "xchgb %b0,%h0" + : "=q" (x) + : "0" (x)); ++#endif + return x; + } + + static inline unsigned short int __swap16(unsigned short int x) + { ++#ifdef PLATFORM_EFI ++ return __constant_htons(x); ++#else + __asm__("xchgb %b0,%h0" + : "=q" (x) + : "0" (x)); ++#endif + return x; + } + +@@ -76,7 +84,7 @@ static inline unsigned short int __swap16(unsigned short int x) + + #include "linux-asm-io.h" + +-typedef unsigned long Address; ++typedef unsigned int Address; + + /* ANSI prototyping macro */ + #ifdef __STDC__ +diff --git a/stage1/.gitignore b/stage1/.gitignore +new file mode 100644 +index 0000000..5d89f6d +--- /dev/null ++++ b/stage1/.gitignore +@@ -0,0 +1,2 @@ ++Makefile.in ++.deps +diff --git a/stage1/Makefile.am b/stage1/Makefile.am +index 0afc285..cbae397 100644 +--- a/stage1/Makefile.am ++++ b/stage1/Makefile.am +@@ -1,11 +1,14 @@ +-pkglibdir = $(libdir)/$(PACKAGE)/$(host_cpu)-$(host_vendor) +-nodist_pkglib_DATA = stage1 +- +-CLEANFILES = $(nodist_pkglib_DATA) ++pkgdatadir = $(datadir)/$(PACKAGE)/$(host_cpu)-$(host_vendor) + + # We can't use builtins or standard includes. + AM_CCASFLAGS = $(STAGE1_CFLAGS) -fno-builtin -nostdinc +-LDFLAGS = -nostdlib -Wl,-N,-Ttext,7C00 ++LDFLAGS = $(LOADER_LDFLAGS) -nostdlib -Wl,-N,-Ttext,7C00 ++ ++if !PLATFORM_EFI ++ ++nodist_pkgdata_DATA = stage1 ++ ++CLEANFILES = $(nodist_pkgdata_DATA) + + noinst_PROGRAMS = stage1.exec + stage1_exec_SOURCES = stage1.S stage1.h +@@ -13,3 +16,5 @@ stage1_exec_SOURCES = stage1.S stage1.h + SUFFIXES = .exec + .exec: + $(OBJCOPY) -O binary $< $@ ++ ++endif +diff --git a/stage1/Makefile.in b/stage1/Makefile.in +deleted file mode 100644 +index 7134bdf..0000000 +--- a/stage1/Makefile.in ++++ /dev/null +@@ -1,433 +0,0 @@ +-# Makefile.in generated by automake 1.9.4 from Makefile.am. +-# @configure_input@ +- +-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +-# 2003, 2004 Free Software Foundation, Inc. +-# This Makefile.in is free software; the Free Software Foundation +-# gives unlimited permission to copy and/or distribute it, +-# with or without modifications, as long as this notice is preserved. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +-# PARTICULAR PURPOSE. +- +-@SET_MAKE@ +- +- +-SOURCES = $(stage1_exec_SOURCES) +- +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ +-VPATH = @srcdir@ +-pkgdatadir = $(datadir)/@PACKAGE@ +-pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = .. +-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ +-install_sh_DATA = $(install_sh) -c -m 644 +-install_sh_PROGRAM = $(install_sh) -c +-install_sh_SCRIPT = $(install_sh) -c +-INSTALL_HEADER = $(INSTALL_DATA) +-transform = $(program_transform_name) +-NORMAL_INSTALL = : +-PRE_INSTALL = : +-POST_INSTALL = : +-NORMAL_UNINSTALL = : +-PRE_UNINSTALL = : +-POST_UNINSTALL = : +-build_triplet = @build@ +-host_triplet = @host@ +-noinst_PROGRAMS = stage1.exec$(EXEEXT) +-subdir = stage1 +-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ +- $(top_srcdir)/configure.ac +-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ +- $(ACLOCAL_M4) +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-PROGRAMS = $(noinst_PROGRAMS) +-am_stage1_exec_OBJECTS = stage1.$(OBJEXT) +-stage1_exec_OBJECTS = $(am_stage1_exec_OBJECTS) +-stage1_exec_LDADD = $(LDADD) +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-CCASCOMPILE = $(CCAS) $(AM_CCASFLAGS) $(CCASFLAGS) +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-SOURCES = $(stage1_exec_SOURCES) +-DIST_SOURCES = $(stage1_exec_SOURCES) +-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +-am__vpath_adj = case $$p in \ +- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ +- *) f=$$p;; \ +- esac; +-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +-am__installdirs = "$(DESTDIR)$(pkglibdir)" +-nodist_pkglibDATA_INSTALL = $(INSTALL_DATA) +-DATA = $(nodist_pkglib_DATA) +-ETAGS = etags +-CTAGS = ctags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +-pkglibdir = $(libdir)/$(PACKAGE)/$(host_cpu)-$(host_vendor) +-ACLOCAL = @ACLOCAL@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ +-AMTAR = @AMTAR@ +-AUTOCONF = @AUTOCONF@ +-AUTOHEADER = @AUTOHEADER@ +-AUTOMAKE = @AUTOMAKE@ +-AWK = @AWK@ +-BUILD_EXAMPLE_KERNEL_FALSE = @BUILD_EXAMPLE_KERNEL_FALSE@ +-BUILD_EXAMPLE_KERNEL_TRUE = @BUILD_EXAMPLE_KERNEL_TRUE@ +-CC = @CC@ +-CCAS = @CCAS@ +-CCASFLAGS = @CCASFLAGS@ +-CCDEPMODE = @CCDEPMODE@ +-CFLAGS = @CFLAGS@ +-CPP = @CPP@ +-CPPFLAGS = @CPPFLAGS@ +-CYGPATH_W = @CYGPATH_W@ +-DEFS = @DEFS@ +-DEPDIR = @DEPDIR@ +-DISKLESS_SUPPORT_FALSE = @DISKLESS_SUPPORT_FALSE@ +-DISKLESS_SUPPORT_TRUE = @DISKLESS_SUPPORT_TRUE@ +-ECHO_C = @ECHO_C@ +-ECHO_N = @ECHO_N@ +-ECHO_T = @ECHO_T@ +-EGREP = @EGREP@ +-EXEEXT = @EXEEXT@ +-FSYS_CFLAGS = @FSYS_CFLAGS@ +-GRUB_CFLAGS = @GRUB_CFLAGS@ +-GRUB_LIBS = @GRUB_LIBS@ +-HERCULES_SUPPORT_FALSE = @HERCULES_SUPPORT_FALSE@ +-HERCULES_SUPPORT_TRUE = @HERCULES_SUPPORT_TRUE@ +-INSTALL_DATA = @INSTALL_DATA@ +-INSTALL_PROGRAM = @INSTALL_PROGRAM@ +-INSTALL_SCRIPT = @INSTALL_SCRIPT@ +-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +-LDFLAGS = -nostdlib -Wl,-N,-Ttext,7C00 +-LIBOBJS = @LIBOBJS@ +-LIBS = @LIBS@ +-LTLIBOBJS = @LTLIBOBJS@ +-MAINT = @MAINT@ +-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +-MAKEINFO = @MAKEINFO@ +-NETBOOT_DRIVERS = @NETBOOT_DRIVERS@ +-NETBOOT_SUPPORT_FALSE = @NETBOOT_SUPPORT_FALSE@ +-NETBOOT_SUPPORT_TRUE = @NETBOOT_SUPPORT_TRUE@ +-NET_CFLAGS = @NET_CFLAGS@ +-NET_EXTRAFLAGS = @NET_EXTRAFLAGS@ +-OBJCOPY = @OBJCOPY@ +-OBJEXT = @OBJEXT@ +-PACKAGE = @PACKAGE@ +-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +-PACKAGE_NAME = @PACKAGE_NAME@ +-PACKAGE_STRING = @PACKAGE_STRING@ +-PACKAGE_TARNAME = @PACKAGE_TARNAME@ +-PACKAGE_VERSION = @PACKAGE_VERSION@ +-PATH_SEPARATOR = @PATH_SEPARATOR@ +-PERL = @PERL@ +-RANLIB = @RANLIB@ +-SERIAL_SPEED_SIMULATION_FALSE = @SERIAL_SPEED_SIMULATION_FALSE@ +-SERIAL_SPEED_SIMULATION_TRUE = @SERIAL_SPEED_SIMULATION_TRUE@ +-SERIAL_SUPPORT_FALSE = @SERIAL_SUPPORT_FALSE@ +-SERIAL_SUPPORT_TRUE = @SERIAL_SUPPORT_TRUE@ +-SET_MAKE = @SET_MAKE@ +-SHELL = @SHELL@ +-STAGE1_CFLAGS = @STAGE1_CFLAGS@ +-STAGE2_CFLAGS = @STAGE2_CFLAGS@ +-STRIP = @STRIP@ +-VERSION = @VERSION@ +-ac_ct_CC = @ac_ct_CC@ +-ac_ct_OBJCOPY = @ac_ct_OBJCOPY@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__include = @am__include@ +-am__leading_dot = @am__leading_dot@ +-am__quote = @am__quote@ +-am__tar = @am__tar@ +-am__untar = @am__untar@ +-bindir = @bindir@ +-build = @build@ +-build_alias = @build_alias@ +-build_cpu = @build_cpu@ +-build_os = @build_os@ +-build_vendor = @build_vendor@ +-datadir = @datadir@ +-exec_prefix = @exec_prefix@ +-host = @host@ +-host_alias = @host_alias@ +-host_cpu = @host_cpu@ +-host_os = @host_os@ +-host_vendor = @host_vendor@ +-includedir = @includedir@ +-infodir = @infodir@ +-install_sh = @install_sh@ +-libdir = @libdir@ +-libexecdir = @libexecdir@ +-localstatedir = @localstatedir@ +-mandir = @mandir@ +-mkdir_p = @mkdir_p@ +-oldincludedir = @oldincludedir@ +-prefix = @prefix@ +-program_transform_name = @program_transform_name@ +-sbindir = @sbindir@ +-sharedstatedir = @sharedstatedir@ +-sysconfdir = @sysconfdir@ +-target_alias = @target_alias@ +-nodist_pkglib_DATA = stage1 +-CLEANFILES = $(nodist_pkglib_DATA) +- +-# We can't use builtins or standard includes. +-AM_CCASFLAGS = $(STAGE1_CFLAGS) -fno-builtin -nostdinc +-stage1_exec_SOURCES = stage1.S stage1.h +-SUFFIXES = .exec +-all: all-am +- +-.SUFFIXES: +-.SUFFIXES: .exec .S .o .obj +-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) +- @for dep in $?; do \ +- case '$(am__configure_deps)' in \ +- *$$dep*) \ +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +- && exit 0; \ +- exit 1;; \ +- esac; \ +- done; \ +- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu stage1/Makefile'; \ +- cd $(top_srcdir) && \ +- $(AUTOMAKE) --gnu stage1/Makefile +-.PRECIOUS: Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- @case '$?' in \ +- *config.status*) \ +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ +- *) \ +- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ +- esac; +- +-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +- +-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +- +-clean-noinstPROGRAMS: +- -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) +-stage1.exec$(EXEEXT): $(stage1_exec_OBJECTS) $(stage1_exec_DEPENDENCIES) +- @rm -f stage1.exec$(EXEEXT) +- $(LINK) $(stage1_exec_LDFLAGS) $(stage1_exec_OBJECTS) $(stage1_exec_LDADD) $(LIBS) +- +-mostlyclean-compile: +- -rm -f *.$(OBJEXT) +- +-distclean-compile: +- -rm -f *.tab.c +- +-.S.o: +- $(CCASCOMPILE) -c $< +- +-.S.obj: +- $(CCASCOMPILE) -c `$(CYGPATH_W) '$<'` +-uninstall-info-am: +-install-nodist_pkglibDATA: $(nodist_pkglib_DATA) +- @$(NORMAL_INSTALL) +- test -z "$(pkglibdir)" || $(mkdir_p) "$(DESTDIR)$(pkglibdir)" +- @list='$(nodist_pkglib_DATA)'; for p in $$list; do \ +- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ +- f=$(am__strip_dir) \ +- echo " $(nodist_pkglibDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkglibdir)/$$f'"; \ +- $(nodist_pkglibDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkglibdir)/$$f"; \ +- done +- +-uninstall-nodist_pkglibDATA: +- @$(NORMAL_UNINSTALL) +- @list='$(nodist_pkglib_DATA)'; for p in $$list; do \ +- f=$(am__strip_dir) \ +- echo " rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ +- rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ +- done +- +-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- mkid -fID $$unique +-tags: TAGS +- +-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) +- tags=; \ +- here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ +- test -n "$$unique" || unique=$$empty_fix; \ +- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique; \ +- fi +-ctags: CTAGS +-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) +- tags=; \ +- here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- test -z "$(CTAGS_ARGS)$$tags$$unique" \ +- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ +- $$tags $$unique +- +-GTAGS: +- here=`$(am__cd) $(top_builddir) && pwd` \ +- && cd $(top_srcdir) \ +- && gtags -i $(GTAGS_ARGS) $$here +- +-distclean-tags: +- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +- +-distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ +- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkdir_p) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ +- if test -d $$d/$$file; then \ +- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ +- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ +- fi; \ +- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ +- else \ +- test -f $(distdir)/$$file \ +- || cp -p $$d/$$file $(distdir)/$$file \ +- || exit 1; \ +- fi; \ +- done +-check-am: all-am +-check: check-am +-all-am: Makefile $(PROGRAMS) $(DATA) +-installdirs: +- for dir in "$(DESTDIR)$(pkglibdir)"; do \ +- test -z "$$dir" || $(mkdir_p) "$$dir"; \ +- done +-install: install-am +-install-exec: install-exec-am +-install-data: install-data-am +-uninstall: uninstall-am +- +-install-am: all-am +- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +- +-installcheck: installcheck-am +-install-strip: +- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ +- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ +- `test -z '$(STRIP)' || \ +- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +-mostlyclean-generic: +- +-clean-generic: +- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) +- +-distclean-generic: +- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) +- +-maintainer-clean-generic: +- @echo "This command is intended for maintainers to use" +- @echo "it deletes files that may require special tools to rebuild." +-clean: clean-am +- +-clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am +- +-distclean: distclean-am +- -rm -f Makefile +-distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-tags +- +-dvi: dvi-am +- +-dvi-am: +- +-html: html-am +- +-info: info-am +- +-info-am: +- +-install-data-am: +- +-install-exec-am: install-nodist_pkglibDATA +- +-install-info: install-info-am +- +-install-man: +- +-installcheck-am: +- +-maintainer-clean: maintainer-clean-am +- -rm -f Makefile +-maintainer-clean-am: distclean-am maintainer-clean-generic +- +-mostlyclean: mostlyclean-am +- +-mostlyclean-am: mostlyclean-compile mostlyclean-generic +- +-pdf: pdf-am +- +-pdf-am: +- +-ps: ps-am +- +-ps-am: +- +-uninstall-am: uninstall-info-am uninstall-nodist_pkglibDATA +- +-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ +- clean-noinstPROGRAMS ctags distclean distclean-compile \ +- distclean-generic distclean-tags distdir dvi dvi-am html \ +- html-am info info-am install install-am install-data \ +- install-data-am install-exec install-exec-am install-info \ +- install-info-am install-man install-nodist_pkglibDATA \ +- install-strip installcheck installcheck-am installdirs \ +- maintainer-clean maintainer-clean-generic mostlyclean \ +- mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ +- tags uninstall uninstall-am uninstall-info-am \ +- uninstall-nodist_pkglibDATA +- +-.exec: +- $(OBJCOPY) -O binary $< $@ +-# Tell versions [3.59,3.63) of GNU make to not export all variables. +-# Otherwise a system limit (for SysV at least) may be exceeded. +-.NOEXPORT: +diff --git a/stage1/stage1.S b/stage1/stage1.S +index 985963d..3a896be 100644 +--- a/stage1/stage1.S ++++ b/stage1/stage1.S +@@ -31,6 +31,8 @@ + + /* Print message string */ + #define MSG(x) movw $ABS(x), %si; call message ++ /* Print verbose message string */ ++#define VMSG(x) + + /* XXX: binutils-2.9.1.0.x doesn't produce a short opcode for this. */ + #define MOV_MEM_TO_AL(x) .byte 0xa0; .word x +@@ -151,7 +153,7 @@ real_start: + pushw %dx + + /* print a notification message on the screen */ +- MSG(notification_string) ++ VMSG(notification_string) + + /* do not probe LBA if the drive is a floppy */ + testb $STAGE1_BIOS_HD_FLAG, %dl +diff --git a/stage2/.gitignore b/stage2/.gitignore +new file mode 100644 +index 0000000..e0480a0 +--- /dev/null ++++ b/stage2/.gitignore +@@ -0,0 +1,5 @@ ++Makefile.in ++Makefile ++.deps ++*.a ++*.o +diff --git a/stage2/Makefile.am b/stage2/Makefile.am +index f8e6d42..04ff165 100644 +--- a/stage2/Makefile.am ++++ b/stage2/Makefile.am +@@ -7,19 +7,23 @@ noinst_HEADERS = apic.h defs.h dir.h disk_inode.h disk_inode_ffs.h \ + fat.h filesys.h freebsd.h fs.h hercules.h i386-elf.h \ + imgact_aout.h iso9660.h jfs.h mb_header.h mb_info.h md5.h \ + nbi.h pc_slice.h serial.h shared.h smp-imps.h term.h \ +- terminfo.h tparm.h nbi.h ufs2.h vstafs.h xfs.h ++ terminfo.h tparm.h nbi.h ufs2.h vstafs.h xfs.h graphics.h gpt.h + EXTRA_DIST = setjmp.S apm.S $(noinst_SCRIPTS) + + # For . +-INCLUDES = -I$(top_srcdir)/stage1 ++INCLUDES = -I$(top_srcdir)/stage1 -I$(top_srcdir)/efi + + # The library for /sbin/grub. ++if PLATFORM_EFI ++noinst_LIBRARIES = libgrub.a libstage2.a ++else + noinst_LIBRARIES = libgrub.a ++endif + libgrub_a_SOURCES = boot.c builtins.c char_io.c cmdline.c common.c \ + disk_io.c fsys_ext2fs.c fsys_fat.c fsys_ffs.c fsys_iso9660.c \ +- fsys_jfs.c fsys_minix.c fsys_reiserfs.c fsys_ufs2.c \ +- fsys_vstafs.c fsys_xfs.c gunzip.c md5.c serial.c stage2.c \ +- terminfo.c tparm.c ++ fsys_jfs.c fsys_minix.c fsys_reiserfs.c fsys_uefi.c fsys_ufs2.c \ ++ fsys_vstafs.c fsys_xfs.c gunzip.c md5.c serial.c sha256crypt.c \ ++ sha512crypt.c stage2.c terminfo.c tparm.c graphics.c efistubs.c + libgrub_a_CFLAGS = $(GRUB_CFLAGS) -I$(top_srcdir)/lib \ + -DGRUB_UTIL=1 -DFSYS_EXT2FS=1 -DFSYS_FAT=1 -DFSYS_FFS=1 \ + -DFSYS_ISO9660=1 -DFSYS_JFS=1 -DFSYS_MINIX=1 -DFSYS_REISERFS=1 \ +@@ -27,12 +31,14 @@ libgrub_a_CFLAGS = $(GRUB_CFLAGS) -I$(top_srcdir)/lib \ + -DUSE_MD5_PASSWORDS=1 -DSUPPORT_SERIAL=1 -DSUPPORT_HERCULES=1 + + # Stage 2 and Stage 1.5's. +-pkglibdir = $(libdir)/$(PACKAGE)/$(host_cpu)-$(host_vendor) ++pkgdatadir = $(datadir)/$(PACKAGE)/$(host_cpu)-$(host_vendor) ++ ++if !PLATFORM_EFI + + EXTRA_PROGRAMS = nbloader.exec pxeloader.exec diskless.exec + + if DISKLESS_SUPPORT +-pkglib_DATA = stage2 stage2_eltorito e2fs_stage1_5 fat_stage1_5 \ ++pkgdata_DATA = stage2 stage2_eltorito e2fs_stage1_5 fat_stage1_5 \ + ffs_stage1_5 iso9660_stage1_5 jfs_stage1_5 minix_stage1_5 \ + reiserfs_stage1_5 ufs2_stage1_5 vstafs_stage1_5 xfs_stage1_5 \ + nbgrub pxegrub +@@ -43,7 +49,7 @@ noinst_PROGRAMS = pre_stage2.exec start.exec start_eltorito.exec \ + reiserfs_stage1_5.exec ufs2_stage1_5.exec vstafs_stage1_5.exec \ + xfs_stage1_5.exec nbloader.exec pxeloader.exec diskless.exec + else +-pkglib_DATA = stage2 stage2_eltorito e2fs_stage1_5 fat_stage1_5 \ ++pkgdata_DATA = stage2 stage2_eltorito e2fs_stage1_5 fat_stage1_5 \ + ffs_stage1_5 iso9660_stage1_5 jfs_stage1_5 minix_stage1_5 \ + reiserfs_stage1_5 ufs2_stage1_5 vstafs_stage1_5 xfs_stage1_5 + noinst_DATA = pre_stage2 start start_eltorito +@@ -55,11 +61,13 @@ noinst_PROGRAMS = pre_stage2.exec start.exec start_eltorito.exec \ + endif + MOSTLYCLEANFILES = $(noinst_PROGRAMS) + +-PRE_STAGE2_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8200 +-START_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8000 +-NBLOADER_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,0 +-PXELOADER_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,7C00 +-START_ELTORITO_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,7C00 ++endif ++ ++PRE_STAGE2_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8200 $(LOADER_LDFLAGS) ++START_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8000 $(LOADER_LDFLAGS) ++NBLOADER_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,0 $(LOADER_LDFLAGS) ++PXELOADER_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,7C00 $(LOADER_LDFLAGS) ++START_ELTORITO_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,7C00 $(LOADER_LDFLAGS) + + if NETBOOT_SUPPORT + NETBOOT_FLAGS = -I$(top_srcdir)/netboot -DSUPPORT_NETBOOT=1 +@@ -79,10 +87,25 @@ else + HERCULES_FLAGS = + endif + ++if GRAPHICS_SUPPORT ++GRAPHICS_FLAGS = -DSUPPORT_GRAPHICS=1 ++else ++GRAPHICS_FLAGS = ++endif ++ + STAGE2_COMPILE = $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NETBOOT_FLAGS) $(SERIAL_FLAGS) $(HERCULES_FLAGS) ++ $(NETBOOT_FLAGS) $(SERIAL_FLAGS) $(HERCULES_FLAGS) $(GRAPHICS_FLAGS) ++ ++libstage2_a_SOURCES = boot.c builtins.c char_io.c cmdline.c common.c \ ++ disk_io.c fsys_ext2fs.c fsys_fat.c fsys_ffs.c fsys_iso9660.c \ ++ fsys_jfs.c fsys_minix.c fsys_reiserfs.c fsys_uefi.c fsys_ufs2.c \ ++ fsys_vstafs.c fsys_xfs.c gunzip.c md5.c serial.c sha256crypt.c \ ++ sha512crypt.c stage2.c terminfo.c tparm.c efistubs.c ++libstage2_a_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) + +-STAGE1_5_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,2000 ++if !PLATFORM_EFI ++ ++STAGE1_5_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,2000 $(LOADER_LDFLAGS) + STAGE1_5_COMPILE = $(STAGE2_COMPILE) -DNO_DECOMPRESSION=1 -DSTAGE1_5=1 + + # For stage2 target. +@@ -90,13 +113,15 @@ pre_stage2_exec_SOURCES = asm.S bios.c boot.c builtins.c char_io.c \ + cmdline.c common.c console.c disk_io.c fsys_ext2fs.c \ + fsys_fat.c fsys_ffs.c fsys_iso9660.c fsys_jfs.c fsys_minix.c \ + fsys_reiserfs.c fsys_ufs2.c fsys_vstafs.c fsys_xfs.c gunzip.c \ +- hercules.c md5.c serial.c smp-imps.c stage2.c terminfo.c tparm.c ++ hercules.c md5.c serial.c smp-imps.c sha256crypt.c sha512crypt.c \ ++ stage2.c terminfo.c tparm.c graphics.c + pre_stage2_exec_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) + pre_stage2_exec_CCASFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) + pre_stage2_exec_LDFLAGS = $(PRE_STAGE2_LINK) + ++pre_stage2_exec_LDADD = @LIBGCC@ + if NETBOOT_SUPPORT +-pre_stage2_exec_LDADD = ../netboot/libdrivers.a ++pre_stage2_exec_LDADD += ../netboot/libdrivers.a + endif + + if DISKLESS_SUPPORT +@@ -105,7 +130,7 @@ else + BUILT_SOURCES = stage2_size.h + endif + +-CLEANFILES = $(pkglib_DATA) $(noinst_DATA) $(BUILT_SOURCES) ++CLEANFILES = $(pkgdata_DATA) $(noinst_DATA) $(BUILT_SOURCES) + + stage2_size.h: pre_stage2 + -rm -f stage2_size.h +@@ -115,6 +140,7 @@ stage2_size.h: pre_stage2 + start_exec_SOURCES = start.S + start_exec_CCASFLAGS = $(STAGE2_COMPILE) + start_exec_LDFLAGS = $(START_LINK) ++start_exec_LDADD = @LIBGCC@ + + # XXX: automake doesn't provide a way to specify dependencies for object + # files explicitly, so we must write this by a general Makefile scheme. +@@ -129,6 +155,7 @@ stage2: pre_stage2 start + start_eltorito_exec_SOURCES = start_eltorito.S + start_eltorito_exec_CCASFLAGS = $(STAGE2_COMPILE) + start_eltorito_exec_LDFLAGS = $(START_ELTORITO_LINK) ++start_eltorito_exec_LDADD = @LIBGCC@ + + start_eltorito_exec-start.$(OBJEXT): stage2_size.h + +@@ -144,6 +171,7 @@ e2fs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_EXT2FS=1 \ + e2fs_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_EXT2FS=1 \ + -DNO_BLOCK_FILES=1 + e2fs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) ++e2fs_stage1_5_exec_LDADD = @LIBGCC@ + + # For fat_stage1_5 target. + fat_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c disk_io.c \ +@@ -153,6 +181,7 @@ fat_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_FAT=1 \ + fat_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_FAT=1 \ + -DNO_BLOCK_FILES=1 + fat_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) ++fat_stage1_5_exec_LDADD = @LIBGCC@ + + # For ffs_stage1_5 target. + ffs_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c disk_io.c \ +@@ -162,6 +191,7 @@ ffs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_FFS=1 \ + ffs_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_FFS=1 \ + -DNO_BLOCK_FILES=1 + ffs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) ++ffs_stage1_5_exec_LDADD = @LIBGCC@ + + # For ufs2_stage1_5 target. + ufs2_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c disk_io.c \ +@@ -171,6 +201,7 @@ ufs2_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_UFS2=1 \ + ufs2_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_UFS2=1 \ + -DNO_BLOCK_FILES=1 + ufs2_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) ++ufs2_stage1_5_exec_LDADD = @LIBGCC@ + + # For minix_stage1_5 target. + minix_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c disk_io.c \ +@@ -180,6 +211,7 @@ minix_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_MINIX=1 \ + minix_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_MINIX=1 \ + -DNO_BLOCK_FILES=1 + minix_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) ++minix_stage1_5_exec_LDADD = @LIBGCC@ + + # For reiserfs_stage1_5 target. + reiserfs_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c \ +@@ -189,6 +221,7 @@ reiserfs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_REISERFS=1 \ + reiserfs_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_REISERFS=1 \ + -DNO_BLOCK_FILES=1 + reiserfs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) ++reiserfs_stage1_5_exec_LDADD = @LIBGCC@ + + # For vstafs_stage1_5 target. + vstafs_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c \ +@@ -198,6 +231,7 @@ vstafs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_VSTAFS=1 \ + vstafs_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_VSTAFS=1 \ + -DNO_BLOCK_FILES=1 + vstafs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) ++vstafs_stage1_5_exec_LDADD = @LIBGCC@ + + # For jfs_stage1_5 target. + jfs_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c \ +@@ -207,6 +241,7 @@ jfs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_JFS=1 \ + jfs_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_JFS=1 \ + -DNO_BLOCK_FILES=1 + jfs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) ++jfs_stage1_5_exec_LDADD = @LIBGCC@ + + # For xfs_stage1_5 target. + xfs_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c \ +@@ -216,6 +251,7 @@ xfs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_XFS=1 \ + xfs_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_XFS=1 \ + -DNO_BLOCK_FILES=1 + xfs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) ++xfs_stage1_5_exec_LDADD = @LIBGCC@ + + # For iso9660_stage1_5 target. + iso9660_stage1_5_exec_SOURCES = start_eltorito.S asm.S common.c char_io.c \ +@@ -225,6 +261,7 @@ iso9660_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_ISO9660=1 \ + iso9660_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_ISO9660=1 \ + -DNO_BLOCK_FILES=1 + iso9660_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) ++iso9660_stage1_5_exec_LDADD = @LIBGCC@ + + # For diskless target. + diskless_exec_SOURCES = $(pre_stage2_exec_SOURCES) +@@ -233,7 +270,7 @@ diskless_exec_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) \ + diskless_exec_CCASFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) \ + -DSUPPORT_DISKLESS=1 + diskless_exec_LDFLAGS = $(PRE_STAGE2_LINK) +-diskless_exec_LDADD = ../netboot/libdrivers.a ++diskless_exec_LDADD = ../netboot/libdrivers.a @LIBGCC@ + + diskless_size.h: diskless + -rm -f $@ +@@ -270,3 +307,5 @@ pxegrub: pxeloader diskless + SUFFIXES = .exec + .exec: + $(OBJCOPY) -O binary $< $@ ++ ++endif +diff --git a/stage2/Makefile.in b/stage2/Makefile.in +deleted file mode 100644 +index d0062bd..0000000 +--- a/stage2/Makefile.in ++++ /dev/null +@@ -1,3250 +0,0 @@ +-# Makefile.in generated by automake 1.9.4 from Makefile.am. +-# @configure_input@ +- +-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +-# 2003, 2004 Free Software Foundation, Inc. +-# This Makefile.in is free software; the Free Software Foundation +-# gives unlimited permission to copy and/or distribute it, +-# with or without modifications, as long as this notice is preserved. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +-# PARTICULAR PURPOSE. +- +-@SET_MAKE@ +- +- +- +- +- +-SOURCES = $(libgrub_a_SOURCES) $(diskless_exec_SOURCES) $(e2fs_stage1_5_exec_SOURCES) $(fat_stage1_5_exec_SOURCES) $(ffs_stage1_5_exec_SOURCES) $(iso9660_stage1_5_exec_SOURCES) $(jfs_stage1_5_exec_SOURCES) $(minix_stage1_5_exec_SOURCES) $(nbloader_exec_SOURCES) $(pre_stage2_exec_SOURCES) $(pxeloader_exec_SOURCES) $(reiserfs_stage1_5_exec_SOURCES) $(start_exec_SOURCES) $(start_eltorito_exec_SOURCES) $(ufs2_stage1_5_exec_SOURCES) $(vstafs_stage1_5_exec_SOURCES) $(xfs_stage1_5_exec_SOURCES) +- +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ +-VPATH = @srcdir@ +-pkgdatadir = $(datadir)/@PACKAGE@ +-pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = .. +-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ +-install_sh_DATA = $(install_sh) -c -m 644 +-install_sh_PROGRAM = $(install_sh) -c +-install_sh_SCRIPT = $(install_sh) -c +-INSTALL_HEADER = $(INSTALL_DATA) +-transform = $(program_transform_name) +-NORMAL_INSTALL = : +-PRE_INSTALL = : +-POST_INSTALL = : +-NORMAL_UNINSTALL = : +-PRE_UNINSTALL = : +-POST_UNINSTALL = : +-build_triplet = @build@ +-host_triplet = @host@ +-EXTRA_PROGRAMS = nbloader.exec$(EXEEXT) pxeloader.exec$(EXEEXT) \ +- diskless.exec$(EXEEXT) +-@DISKLESS_SUPPORT_FALSE@noinst_PROGRAMS = pre_stage2.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_FALSE@ start.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_FALSE@ start_eltorito.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_FALSE@ e2fs_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_FALSE@ fat_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_FALSE@ ffs_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_FALSE@ iso9660_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_FALSE@ jfs_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_FALSE@ minix_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_FALSE@ reiserfs_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_FALSE@ ufs2_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_FALSE@ vstafs_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_FALSE@ xfs_stage1_5.exec$(EXEEXT) +-@DISKLESS_SUPPORT_TRUE@noinst_PROGRAMS = pre_stage2.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_TRUE@ start.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_TRUE@ start_eltorito.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_TRUE@ e2fs_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_TRUE@ fat_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_TRUE@ ffs_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_TRUE@ iso9660_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_TRUE@ jfs_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_TRUE@ minix_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_TRUE@ reiserfs_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_TRUE@ ufs2_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_TRUE@ vstafs_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_TRUE@ xfs_stage1_5.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_TRUE@ nbloader.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_TRUE@ pxeloader.exec$(EXEEXT) \ +-@DISKLESS_SUPPORT_TRUE@ diskless.exec$(EXEEXT) +-subdir = stage2 +-DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ +- $(srcdir)/Makefile.in +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ +- $(top_srcdir)/configure.ac +-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ +- $(ACLOCAL_M4) +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-LIBRARIES = $(noinst_LIBRARIES) +-AR = ar +-ARFLAGS = cru +-libgrub_a_AR = $(AR) $(ARFLAGS) +-libgrub_a_LIBADD = +-am_libgrub_a_OBJECTS = libgrub_a-boot.$(OBJEXT) \ +- libgrub_a-builtins.$(OBJEXT) libgrub_a-char_io.$(OBJEXT) \ +- libgrub_a-cmdline.$(OBJEXT) libgrub_a-common.$(OBJEXT) \ +- libgrub_a-disk_io.$(OBJEXT) libgrub_a-fsys_ext2fs.$(OBJEXT) \ +- libgrub_a-fsys_fat.$(OBJEXT) libgrub_a-fsys_ffs.$(OBJEXT) \ +- libgrub_a-fsys_iso9660.$(OBJEXT) libgrub_a-fsys_jfs.$(OBJEXT) \ +- libgrub_a-fsys_minix.$(OBJEXT) \ +- libgrub_a-fsys_reiserfs.$(OBJEXT) \ +- libgrub_a-fsys_ufs2.$(OBJEXT) libgrub_a-fsys_vstafs.$(OBJEXT) \ +- libgrub_a-fsys_xfs.$(OBJEXT) libgrub_a-gunzip.$(OBJEXT) \ +- libgrub_a-md5.$(OBJEXT) libgrub_a-serial.$(OBJEXT) \ +- libgrub_a-stage2.$(OBJEXT) libgrub_a-terminfo.$(OBJEXT) \ +- libgrub_a-tparm.$(OBJEXT) +-libgrub_a_OBJECTS = $(am_libgrub_a_OBJECTS) +-PROGRAMS = $(noinst_PROGRAMS) +-am__objects_1 = diskless_exec-asm.$(OBJEXT) \ +- diskless_exec-bios.$(OBJEXT) diskless_exec-boot.$(OBJEXT) \ +- diskless_exec-builtins.$(OBJEXT) \ +- diskless_exec-char_io.$(OBJEXT) \ +- diskless_exec-cmdline.$(OBJEXT) diskless_exec-common.$(OBJEXT) \ +- diskless_exec-console.$(OBJEXT) \ +- diskless_exec-disk_io.$(OBJEXT) \ +- diskless_exec-fsys_ext2fs.$(OBJEXT) \ +- diskless_exec-fsys_fat.$(OBJEXT) \ +- diskless_exec-fsys_ffs.$(OBJEXT) \ +- diskless_exec-fsys_iso9660.$(OBJEXT) \ +- diskless_exec-fsys_jfs.$(OBJEXT) \ +- diskless_exec-fsys_minix.$(OBJEXT) \ +- diskless_exec-fsys_reiserfs.$(OBJEXT) \ +- diskless_exec-fsys_ufs2.$(OBJEXT) \ +- diskless_exec-fsys_vstafs.$(OBJEXT) \ +- diskless_exec-fsys_xfs.$(OBJEXT) \ +- diskless_exec-gunzip.$(OBJEXT) \ +- diskless_exec-hercules.$(OBJEXT) diskless_exec-md5.$(OBJEXT) \ +- diskless_exec-serial.$(OBJEXT) \ +- diskless_exec-smp-imps.$(OBJEXT) \ +- diskless_exec-stage2.$(OBJEXT) \ +- diskless_exec-terminfo.$(OBJEXT) diskless_exec-tparm.$(OBJEXT) +-am_diskless_exec_OBJECTS = $(am__objects_1) +-diskless_exec_OBJECTS = $(am_diskless_exec_OBJECTS) +-diskless_exec_DEPENDENCIES = ../netboot/libdrivers.a +-am_e2fs_stage1_5_exec_OBJECTS = e2fs_stage1_5_exec-start.$(OBJEXT) \ +- e2fs_stage1_5_exec-asm.$(OBJEXT) \ +- e2fs_stage1_5_exec-common.$(OBJEXT) \ +- e2fs_stage1_5_exec-char_io.$(OBJEXT) \ +- e2fs_stage1_5_exec-disk_io.$(OBJEXT) \ +- e2fs_stage1_5_exec-stage1_5.$(OBJEXT) \ +- e2fs_stage1_5_exec-fsys_ext2fs.$(OBJEXT) \ +- e2fs_stage1_5_exec-bios.$(OBJEXT) +-e2fs_stage1_5_exec_OBJECTS = $(am_e2fs_stage1_5_exec_OBJECTS) +-e2fs_stage1_5_exec_LDADD = $(LDADD) +-am_fat_stage1_5_exec_OBJECTS = fat_stage1_5_exec-start.$(OBJEXT) \ +- fat_stage1_5_exec-asm.$(OBJEXT) \ +- fat_stage1_5_exec-common.$(OBJEXT) \ +- fat_stage1_5_exec-char_io.$(OBJEXT) \ +- fat_stage1_5_exec-disk_io.$(OBJEXT) \ +- fat_stage1_5_exec-stage1_5.$(OBJEXT) \ +- fat_stage1_5_exec-fsys_fat.$(OBJEXT) \ +- fat_stage1_5_exec-bios.$(OBJEXT) +-fat_stage1_5_exec_OBJECTS = $(am_fat_stage1_5_exec_OBJECTS) +-fat_stage1_5_exec_LDADD = $(LDADD) +-am_ffs_stage1_5_exec_OBJECTS = ffs_stage1_5_exec-start.$(OBJEXT) \ +- ffs_stage1_5_exec-asm.$(OBJEXT) \ +- ffs_stage1_5_exec-common.$(OBJEXT) \ +- ffs_stage1_5_exec-char_io.$(OBJEXT) \ +- ffs_stage1_5_exec-disk_io.$(OBJEXT) \ +- ffs_stage1_5_exec-stage1_5.$(OBJEXT) \ +- ffs_stage1_5_exec-fsys_ffs.$(OBJEXT) \ +- ffs_stage1_5_exec-bios.$(OBJEXT) +-ffs_stage1_5_exec_OBJECTS = $(am_ffs_stage1_5_exec_OBJECTS) +-ffs_stage1_5_exec_LDADD = $(LDADD) +-am_iso9660_stage1_5_exec_OBJECTS = \ +- iso9660_stage1_5_exec-start_eltorito.$(OBJEXT) \ +- iso9660_stage1_5_exec-asm.$(OBJEXT) \ +- iso9660_stage1_5_exec-common.$(OBJEXT) \ +- iso9660_stage1_5_exec-char_io.$(OBJEXT) \ +- iso9660_stage1_5_exec-disk_io.$(OBJEXT) \ +- iso9660_stage1_5_exec-stage1_5.$(OBJEXT) \ +- iso9660_stage1_5_exec-fsys_iso9660.$(OBJEXT) \ +- iso9660_stage1_5_exec-bios.$(OBJEXT) +-iso9660_stage1_5_exec_OBJECTS = $(am_iso9660_stage1_5_exec_OBJECTS) +-iso9660_stage1_5_exec_LDADD = $(LDADD) +-am_jfs_stage1_5_exec_OBJECTS = jfs_stage1_5_exec-start.$(OBJEXT) \ +- jfs_stage1_5_exec-asm.$(OBJEXT) \ +- jfs_stage1_5_exec-common.$(OBJEXT) \ +- jfs_stage1_5_exec-char_io.$(OBJEXT) \ +- jfs_stage1_5_exec-disk_io.$(OBJEXT) \ +- jfs_stage1_5_exec-stage1_5.$(OBJEXT) \ +- jfs_stage1_5_exec-fsys_jfs.$(OBJEXT) \ +- jfs_stage1_5_exec-bios.$(OBJEXT) +-jfs_stage1_5_exec_OBJECTS = $(am_jfs_stage1_5_exec_OBJECTS) +-jfs_stage1_5_exec_LDADD = $(LDADD) +-am_minix_stage1_5_exec_OBJECTS = minix_stage1_5_exec-start.$(OBJEXT) \ +- minix_stage1_5_exec-asm.$(OBJEXT) \ +- minix_stage1_5_exec-common.$(OBJEXT) \ +- minix_stage1_5_exec-char_io.$(OBJEXT) \ +- minix_stage1_5_exec-disk_io.$(OBJEXT) \ +- minix_stage1_5_exec-stage1_5.$(OBJEXT) \ +- minix_stage1_5_exec-fsys_minix.$(OBJEXT) \ +- minix_stage1_5_exec-bios.$(OBJEXT) +-minix_stage1_5_exec_OBJECTS = $(am_minix_stage1_5_exec_OBJECTS) +-minix_stage1_5_exec_LDADD = $(LDADD) +-am_nbloader_exec_OBJECTS = nbloader_exec-nbloader.$(OBJEXT) +-nbloader_exec_OBJECTS = $(am_nbloader_exec_OBJECTS) +-nbloader_exec_LDADD = $(LDADD) +-am_pre_stage2_exec_OBJECTS = pre_stage2_exec-asm.$(OBJEXT) \ +- pre_stage2_exec-bios.$(OBJEXT) pre_stage2_exec-boot.$(OBJEXT) \ +- pre_stage2_exec-builtins.$(OBJEXT) \ +- pre_stage2_exec-char_io.$(OBJEXT) \ +- pre_stage2_exec-cmdline.$(OBJEXT) \ +- pre_stage2_exec-common.$(OBJEXT) \ +- pre_stage2_exec-console.$(OBJEXT) \ +- pre_stage2_exec-disk_io.$(OBJEXT) \ +- pre_stage2_exec-fsys_ext2fs.$(OBJEXT) \ +- pre_stage2_exec-fsys_fat.$(OBJEXT) \ +- pre_stage2_exec-fsys_ffs.$(OBJEXT) \ +- pre_stage2_exec-fsys_iso9660.$(OBJEXT) \ +- pre_stage2_exec-fsys_jfs.$(OBJEXT) \ +- pre_stage2_exec-fsys_minix.$(OBJEXT) \ +- pre_stage2_exec-fsys_reiserfs.$(OBJEXT) \ +- pre_stage2_exec-fsys_ufs2.$(OBJEXT) \ +- pre_stage2_exec-fsys_vstafs.$(OBJEXT) \ +- pre_stage2_exec-fsys_xfs.$(OBJEXT) \ +- pre_stage2_exec-gunzip.$(OBJEXT) \ +- pre_stage2_exec-hercules.$(OBJEXT) \ +- pre_stage2_exec-md5.$(OBJEXT) pre_stage2_exec-serial.$(OBJEXT) \ +- pre_stage2_exec-smp-imps.$(OBJEXT) \ +- pre_stage2_exec-stage2.$(OBJEXT) \ +- pre_stage2_exec-terminfo.$(OBJEXT) \ +- pre_stage2_exec-tparm.$(OBJEXT) +-pre_stage2_exec_OBJECTS = $(am_pre_stage2_exec_OBJECTS) +-@NETBOOT_SUPPORT_TRUE@pre_stage2_exec_DEPENDENCIES = \ +-@NETBOOT_SUPPORT_TRUE@ ../netboot/libdrivers.a +-am_pxeloader_exec_OBJECTS = pxeloader_exec-pxeloader.$(OBJEXT) +-pxeloader_exec_OBJECTS = $(am_pxeloader_exec_OBJECTS) +-pxeloader_exec_LDADD = $(LDADD) +-am_reiserfs_stage1_5_exec_OBJECTS = \ +- reiserfs_stage1_5_exec-start.$(OBJEXT) \ +- reiserfs_stage1_5_exec-asm.$(OBJEXT) \ +- reiserfs_stage1_5_exec-common.$(OBJEXT) \ +- reiserfs_stage1_5_exec-char_io.$(OBJEXT) \ +- reiserfs_stage1_5_exec-disk_io.$(OBJEXT) \ +- reiserfs_stage1_5_exec-stage1_5.$(OBJEXT) \ +- reiserfs_stage1_5_exec-fsys_reiserfs.$(OBJEXT) \ +- reiserfs_stage1_5_exec-bios.$(OBJEXT) +-reiserfs_stage1_5_exec_OBJECTS = $(am_reiserfs_stage1_5_exec_OBJECTS) +-reiserfs_stage1_5_exec_LDADD = $(LDADD) +-am_start_exec_OBJECTS = start_exec-start.$(OBJEXT) +-start_exec_OBJECTS = $(am_start_exec_OBJECTS) +-start_exec_LDADD = $(LDADD) +-am_start_eltorito_exec_OBJECTS = \ +- start_eltorito_exec-start_eltorito.$(OBJEXT) +-start_eltorito_exec_OBJECTS = $(am_start_eltorito_exec_OBJECTS) +-start_eltorito_exec_LDADD = $(LDADD) +-am_ufs2_stage1_5_exec_OBJECTS = ufs2_stage1_5_exec-start.$(OBJEXT) \ +- ufs2_stage1_5_exec-asm.$(OBJEXT) \ +- ufs2_stage1_5_exec-common.$(OBJEXT) \ +- ufs2_stage1_5_exec-char_io.$(OBJEXT) \ +- ufs2_stage1_5_exec-disk_io.$(OBJEXT) \ +- ufs2_stage1_5_exec-stage1_5.$(OBJEXT) \ +- ufs2_stage1_5_exec-fsys_ufs2.$(OBJEXT) \ +- ufs2_stage1_5_exec-bios.$(OBJEXT) +-ufs2_stage1_5_exec_OBJECTS = $(am_ufs2_stage1_5_exec_OBJECTS) +-ufs2_stage1_5_exec_LDADD = $(LDADD) +-am_vstafs_stage1_5_exec_OBJECTS = \ +- vstafs_stage1_5_exec-start.$(OBJEXT) \ +- vstafs_stage1_5_exec-asm.$(OBJEXT) \ +- vstafs_stage1_5_exec-common.$(OBJEXT) \ +- vstafs_stage1_5_exec-char_io.$(OBJEXT) \ +- vstafs_stage1_5_exec-disk_io.$(OBJEXT) \ +- vstafs_stage1_5_exec-stage1_5.$(OBJEXT) \ +- vstafs_stage1_5_exec-fsys_vstafs.$(OBJEXT) \ +- vstafs_stage1_5_exec-bios.$(OBJEXT) +-vstafs_stage1_5_exec_OBJECTS = $(am_vstafs_stage1_5_exec_OBJECTS) +-vstafs_stage1_5_exec_LDADD = $(LDADD) +-am_xfs_stage1_5_exec_OBJECTS = xfs_stage1_5_exec-start.$(OBJEXT) \ +- xfs_stage1_5_exec-asm.$(OBJEXT) \ +- xfs_stage1_5_exec-common.$(OBJEXT) \ +- xfs_stage1_5_exec-char_io.$(OBJEXT) \ +- xfs_stage1_5_exec-disk_io.$(OBJEXT) \ +- xfs_stage1_5_exec-stage1_5.$(OBJEXT) \ +- xfs_stage1_5_exec-fsys_xfs.$(OBJEXT) \ +- xfs_stage1_5_exec-bios.$(OBJEXT) +-xfs_stage1_5_exec_OBJECTS = $(am_xfs_stage1_5_exec_OBJECTS) +-xfs_stage1_5_exec_LDADD = $(LDADD) +-SCRIPTS = $(noinst_SCRIPTS) +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-CCASCOMPILE = $(CCAS) $(AM_CCASFLAGS) $(CCASFLAGS) +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-SOURCES = $(libgrub_a_SOURCES) $(diskless_exec_SOURCES) \ +- $(e2fs_stage1_5_exec_SOURCES) $(fat_stage1_5_exec_SOURCES) \ +- $(ffs_stage1_5_exec_SOURCES) $(iso9660_stage1_5_exec_SOURCES) \ +- $(jfs_stage1_5_exec_SOURCES) $(minix_stage1_5_exec_SOURCES) \ +- $(nbloader_exec_SOURCES) $(pre_stage2_exec_SOURCES) \ +- $(pxeloader_exec_SOURCES) $(reiserfs_stage1_5_exec_SOURCES) \ +- $(start_exec_SOURCES) $(start_eltorito_exec_SOURCES) \ +- $(ufs2_stage1_5_exec_SOURCES) $(vstafs_stage1_5_exec_SOURCES) \ +- $(xfs_stage1_5_exec_SOURCES) +-DIST_SOURCES = $(libgrub_a_SOURCES) $(diskless_exec_SOURCES) \ +- $(e2fs_stage1_5_exec_SOURCES) $(fat_stage1_5_exec_SOURCES) \ +- $(ffs_stage1_5_exec_SOURCES) $(iso9660_stage1_5_exec_SOURCES) \ +- $(jfs_stage1_5_exec_SOURCES) $(minix_stage1_5_exec_SOURCES) \ +- $(nbloader_exec_SOURCES) $(pre_stage2_exec_SOURCES) \ +- $(pxeloader_exec_SOURCES) $(reiserfs_stage1_5_exec_SOURCES) \ +- $(start_exec_SOURCES) $(start_eltorito_exec_SOURCES) \ +- $(ufs2_stage1_5_exec_SOURCES) $(vstafs_stage1_5_exec_SOURCES) \ +- $(xfs_stage1_5_exec_SOURCES) +-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +-am__vpath_adj = case $$p in \ +- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ +- *) f=$$p;; \ +- esac; +-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +-am__installdirs = "$(DESTDIR)$(pkglibdir)" +-pkglibDATA_INSTALL = $(INSTALL_DATA) +-DATA = $(noinst_DATA) $(pkglib_DATA) +-HEADERS = $(noinst_HEADERS) +-ETAGS = etags +-CTAGS = ctags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-# Stage 2 and Stage 1.5's. +-pkglibdir = $(libdir)/$(PACKAGE)/$(host_cpu)-$(host_vendor) +-ACLOCAL = @ACLOCAL@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ +-AMTAR = @AMTAR@ +-AUTOCONF = @AUTOCONF@ +-AUTOHEADER = @AUTOHEADER@ +-AUTOMAKE = @AUTOMAKE@ +-AWK = @AWK@ +-BUILD_EXAMPLE_KERNEL_FALSE = @BUILD_EXAMPLE_KERNEL_FALSE@ +-BUILD_EXAMPLE_KERNEL_TRUE = @BUILD_EXAMPLE_KERNEL_TRUE@ +-CC = @CC@ +-CCAS = @CCAS@ +-CCASFLAGS = @CCASFLAGS@ +-CCDEPMODE = @CCDEPMODE@ +-CFLAGS = @CFLAGS@ +-CPP = @CPP@ +-CPPFLAGS = @CPPFLAGS@ +-CYGPATH_W = @CYGPATH_W@ +-DEFS = @DEFS@ +-DEPDIR = @DEPDIR@ +-DISKLESS_SUPPORT_FALSE = @DISKLESS_SUPPORT_FALSE@ +-DISKLESS_SUPPORT_TRUE = @DISKLESS_SUPPORT_TRUE@ +-ECHO_C = @ECHO_C@ +-ECHO_N = @ECHO_N@ +-ECHO_T = @ECHO_T@ +-EGREP = @EGREP@ +-EXEEXT = @EXEEXT@ +-FSYS_CFLAGS = @FSYS_CFLAGS@ +-GRUB_CFLAGS = @GRUB_CFLAGS@ +-GRUB_LIBS = @GRUB_LIBS@ +-HERCULES_SUPPORT_FALSE = @HERCULES_SUPPORT_FALSE@ +-HERCULES_SUPPORT_TRUE = @HERCULES_SUPPORT_TRUE@ +-INSTALL_DATA = @INSTALL_DATA@ +-INSTALL_PROGRAM = @INSTALL_PROGRAM@ +-INSTALL_SCRIPT = @INSTALL_SCRIPT@ +-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +-LDFLAGS = @LDFLAGS@ +-LIBOBJS = @LIBOBJS@ +-LIBS = @LIBS@ +-LTLIBOBJS = @LTLIBOBJS@ +-MAINT = @MAINT@ +-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +-MAKEINFO = @MAKEINFO@ +-NETBOOT_DRIVERS = @NETBOOT_DRIVERS@ +-NETBOOT_SUPPORT_FALSE = @NETBOOT_SUPPORT_FALSE@ +-NETBOOT_SUPPORT_TRUE = @NETBOOT_SUPPORT_TRUE@ +-NET_CFLAGS = @NET_CFLAGS@ +-NET_EXTRAFLAGS = @NET_EXTRAFLAGS@ +-OBJCOPY = @OBJCOPY@ +-OBJEXT = @OBJEXT@ +-PACKAGE = @PACKAGE@ +-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +-PACKAGE_NAME = @PACKAGE_NAME@ +-PACKAGE_STRING = @PACKAGE_STRING@ +-PACKAGE_TARNAME = @PACKAGE_TARNAME@ +-PACKAGE_VERSION = @PACKAGE_VERSION@ +-PATH_SEPARATOR = @PATH_SEPARATOR@ +-PERL = @PERL@ +-RANLIB = @RANLIB@ +-SERIAL_SPEED_SIMULATION_FALSE = @SERIAL_SPEED_SIMULATION_FALSE@ +-SERIAL_SPEED_SIMULATION_TRUE = @SERIAL_SPEED_SIMULATION_TRUE@ +-SERIAL_SUPPORT_FALSE = @SERIAL_SUPPORT_FALSE@ +-SERIAL_SUPPORT_TRUE = @SERIAL_SUPPORT_TRUE@ +-SET_MAKE = @SET_MAKE@ +-SHELL = @SHELL@ +-STAGE1_CFLAGS = @STAGE1_CFLAGS@ +-STAGE2_CFLAGS = @STAGE2_CFLAGS@ +-STRIP = @STRIP@ +-VERSION = @VERSION@ +-ac_ct_CC = @ac_ct_CC@ +-ac_ct_OBJCOPY = @ac_ct_OBJCOPY@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__include = @am__include@ +-am__leading_dot = @am__leading_dot@ +-am__quote = @am__quote@ +-am__tar = @am__tar@ +-am__untar = @am__untar@ +-bindir = @bindir@ +-build = @build@ +-build_alias = @build_alias@ +-build_cpu = @build_cpu@ +-build_os = @build_os@ +-build_vendor = @build_vendor@ +-datadir = @datadir@ +-exec_prefix = @exec_prefix@ +-host = @host@ +-host_alias = @host_alias@ +-host_cpu = @host_cpu@ +-host_os = @host_os@ +-host_vendor = @host_vendor@ +-includedir = @includedir@ +-infodir = @infodir@ +-install_sh = @install_sh@ +-libdir = @libdir@ +-libexecdir = @libexecdir@ +-localstatedir = @localstatedir@ +-mandir = @mandir@ +-mkdir_p = @mkdir_p@ +-oldincludedir = @oldincludedir@ +-prefix = @prefix@ +-program_transform_name = @program_transform_name@ +-sbindir = @sbindir@ +-sharedstatedir = @sharedstatedir@ +-sysconfdir = @sysconfdir@ +-target_alias = @target_alias@ +- +-# For test target. +-TESTS = size_test +-noinst_SCRIPTS = $(TESTS) +- +-# For dist target. +-noinst_HEADERS = apic.h defs.h dir.h disk_inode.h disk_inode_ffs.h \ +- fat.h filesys.h freebsd.h fs.h hercules.h i386-elf.h \ +- imgact_aout.h iso9660.h jfs.h mb_header.h mb_info.h md5.h \ +- nbi.h pc_slice.h serial.h shared.h smp-imps.h term.h \ +- terminfo.h tparm.h nbi.h ufs2.h vstafs.h xfs.h +- +-EXTRA_DIST = setjmp.S apm.S $(noinst_SCRIPTS) +- +-# For . +-INCLUDES = -I$(top_srcdir)/stage1 +- +-# The library for /sbin/grub. +-noinst_LIBRARIES = libgrub.a +-libgrub_a_SOURCES = boot.c builtins.c char_io.c cmdline.c common.c \ +- disk_io.c fsys_ext2fs.c fsys_fat.c fsys_ffs.c fsys_iso9660.c \ +- fsys_jfs.c fsys_minix.c fsys_reiserfs.c fsys_ufs2.c \ +- fsys_vstafs.c fsys_xfs.c gunzip.c md5.c serial.c stage2.c \ +- terminfo.c tparm.c +- +-libgrub_a_CFLAGS = $(GRUB_CFLAGS) -I$(top_srcdir)/lib \ +- -DGRUB_UTIL=1 -DFSYS_EXT2FS=1 -DFSYS_FAT=1 -DFSYS_FFS=1 \ +- -DFSYS_ISO9660=1 -DFSYS_JFS=1 -DFSYS_MINIX=1 -DFSYS_REISERFS=1 \ +- -DFSYS_UFS2=1 -DFSYS_VSTAFS=1 -DFSYS_XFS=1 \ +- -DUSE_MD5_PASSWORDS=1 -DSUPPORT_SERIAL=1 -DSUPPORT_HERCULES=1 +- +-@DISKLESS_SUPPORT_FALSE@pkglib_DATA = stage2 stage2_eltorito e2fs_stage1_5 fat_stage1_5 \ +-@DISKLESS_SUPPORT_FALSE@ ffs_stage1_5 iso9660_stage1_5 jfs_stage1_5 minix_stage1_5 \ +-@DISKLESS_SUPPORT_FALSE@ reiserfs_stage1_5 ufs2_stage1_5 vstafs_stage1_5 xfs_stage1_5 +- +-@DISKLESS_SUPPORT_TRUE@pkglib_DATA = stage2 stage2_eltorito e2fs_stage1_5 fat_stage1_5 \ +-@DISKLESS_SUPPORT_TRUE@ ffs_stage1_5 iso9660_stage1_5 jfs_stage1_5 minix_stage1_5 \ +-@DISKLESS_SUPPORT_TRUE@ reiserfs_stage1_5 ufs2_stage1_5 vstafs_stage1_5 xfs_stage1_5 \ +-@DISKLESS_SUPPORT_TRUE@ nbgrub pxegrub +- +-@DISKLESS_SUPPORT_FALSE@noinst_DATA = pre_stage2 start start_eltorito +-@DISKLESS_SUPPORT_TRUE@noinst_DATA = pre_stage2 start start_eltorito nbloader pxeloader diskless +-MOSTLYCLEANFILES = $(noinst_PROGRAMS) +-PRE_STAGE2_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8200 +-START_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8000 +-NBLOADER_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,0 +-PXELOADER_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,7C00 +-START_ELTORITO_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,7C00 +-@NETBOOT_SUPPORT_FALSE@NETBOOT_FLAGS = +-@NETBOOT_SUPPORT_TRUE@NETBOOT_FLAGS = -I$(top_srcdir)/netboot -DSUPPORT_NETBOOT=1 +-@SERIAL_SUPPORT_FALSE@SERIAL_FLAGS = +-@SERIAL_SUPPORT_TRUE@SERIAL_FLAGS = -DSUPPORT_SERIAL=1 +-@HERCULES_SUPPORT_FALSE@HERCULES_FLAGS = +-@HERCULES_SUPPORT_TRUE@HERCULES_FLAGS = -DSUPPORT_HERCULES=1 +-STAGE2_COMPILE = $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ +- $(NETBOOT_FLAGS) $(SERIAL_FLAGS) $(HERCULES_FLAGS) +- +-STAGE1_5_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,2000 +-STAGE1_5_COMPILE = $(STAGE2_COMPILE) -DNO_DECOMPRESSION=1 -DSTAGE1_5=1 +- +-# For stage2 target. +-pre_stage2_exec_SOURCES = asm.S bios.c boot.c builtins.c char_io.c \ +- cmdline.c common.c console.c disk_io.c fsys_ext2fs.c \ +- fsys_fat.c fsys_ffs.c fsys_iso9660.c fsys_jfs.c fsys_minix.c \ +- fsys_reiserfs.c fsys_ufs2.c fsys_vstafs.c fsys_xfs.c gunzip.c \ +- hercules.c md5.c serial.c smp-imps.c stage2.c terminfo.c tparm.c +- +-pre_stage2_exec_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) +-pre_stage2_exec_CCASFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) +-pre_stage2_exec_LDFLAGS = $(PRE_STAGE2_LINK) +-@NETBOOT_SUPPORT_TRUE@pre_stage2_exec_LDADD = ../netboot/libdrivers.a +-@DISKLESS_SUPPORT_FALSE@BUILT_SOURCES = stage2_size.h +-@DISKLESS_SUPPORT_TRUE@BUILT_SOURCES = stage2_size.h diskless_size.h +-CLEANFILES = $(pkglib_DATA) $(noinst_DATA) $(BUILT_SOURCES) +-start_exec_SOURCES = start.S +-start_exec_CCASFLAGS = $(STAGE2_COMPILE) +-start_exec_LDFLAGS = $(START_LINK) +-start_eltorito_exec_SOURCES = start_eltorito.S +-start_eltorito_exec_CCASFLAGS = $(STAGE2_COMPILE) +-start_eltorito_exec_LDFLAGS = $(START_ELTORITO_LINK) +- +-# For e2fs_stage1_5 target. +-e2fs_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c disk_io.c \ +- stage1_5.c fsys_ext2fs.c bios.c +- +-e2fs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_EXT2FS=1 \ +- -DNO_BLOCK_FILES=1 +- +-e2fs_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_EXT2FS=1 \ +- -DNO_BLOCK_FILES=1 +- +-e2fs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) +- +-# For fat_stage1_5 target. +-fat_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c disk_io.c \ +- stage1_5.c fsys_fat.c bios.c +- +-fat_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_FAT=1 \ +- -DNO_BLOCK_FILES=1 +- +-fat_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_FAT=1 \ +- -DNO_BLOCK_FILES=1 +- +-fat_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) +- +-# For ffs_stage1_5 target. +-ffs_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c disk_io.c \ +- stage1_5.c fsys_ffs.c bios.c +- +-ffs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_FFS=1 \ +- -DNO_BLOCK_FILES=1 +- +-ffs_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_FFS=1 \ +- -DNO_BLOCK_FILES=1 +- +-ffs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) +- +-# For ufs2_stage1_5 target. +-ufs2_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c disk_io.c \ +- stage1_5.c fsys_ufs2.c bios.c +- +-ufs2_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_UFS2=1 \ +- -DNO_BLOCK_FILES=1 +- +-ufs2_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_UFS2=1 \ +- -DNO_BLOCK_FILES=1 +- +-ufs2_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) +- +-# For minix_stage1_5 target. +-minix_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c disk_io.c \ +- stage1_5.c fsys_minix.c bios.c +- +-minix_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_MINIX=1 \ +- -DNO_BLOCK_FILES=1 +- +-minix_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_MINIX=1 \ +- -DNO_BLOCK_FILES=1 +- +-minix_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) +- +-# For reiserfs_stage1_5 target. +-reiserfs_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c \ +- disk_io.c stage1_5.c fsys_reiserfs.c bios.c +- +-reiserfs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_REISERFS=1 \ +- -DNO_BLOCK_FILES=1 +- +-reiserfs_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_REISERFS=1 \ +- -DNO_BLOCK_FILES=1 +- +-reiserfs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) +- +-# For vstafs_stage1_5 target. +-vstafs_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c \ +- disk_io.c stage1_5.c fsys_vstafs.c bios.c +- +-vstafs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_VSTAFS=1 \ +- -DNO_BLOCK_FILES=1 +- +-vstafs_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_VSTAFS=1 \ +- -DNO_BLOCK_FILES=1 +- +-vstafs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) +- +-# For jfs_stage1_5 target. +-jfs_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c \ +- disk_io.c stage1_5.c fsys_jfs.c bios.c +- +-jfs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_JFS=1 \ +- -DNO_BLOCK_FILES=1 +- +-jfs_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_JFS=1 \ +- -DNO_BLOCK_FILES=1 +- +-jfs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) +- +-# For xfs_stage1_5 target. +-xfs_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c \ +- disk_io.c stage1_5.c fsys_xfs.c bios.c +- +-xfs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_XFS=1 \ +- -DNO_BLOCK_FILES=1 +- +-xfs_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_XFS=1 \ +- -DNO_BLOCK_FILES=1 +- +-xfs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) +- +-# For iso9660_stage1_5 target. +-iso9660_stage1_5_exec_SOURCES = start_eltorito.S asm.S common.c char_io.c \ +- disk_io.c stage1_5.c fsys_iso9660.c bios.c +- +-iso9660_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_ISO9660=1 \ +- -DNO_BLOCK_FILES=1 +- +-iso9660_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_ISO9660=1 \ +- -DNO_BLOCK_FILES=1 +- +-iso9660_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) +- +-# For diskless target. +-diskless_exec_SOURCES = $(pre_stage2_exec_SOURCES) +-diskless_exec_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) \ +- -DSUPPORT_DISKLESS=1 +- +-diskless_exec_CCASFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) \ +- -DSUPPORT_DISKLESS=1 +- +-diskless_exec_LDFLAGS = $(PRE_STAGE2_LINK) +-diskless_exec_LDADD = ../netboot/libdrivers.a +- +-# For nbloader target. +-nbloader_exec_SOURCES = nbloader.S +-nbloader_exec_CCASFLAGS = $(STAGE2_COMPILE) +-nbloader_exec_LDFLAGS = $(NBLOADER_LINK) +- +-# For pxeloader target. +-pxeloader_exec_SOURCES = pxeloader.S +-pxeloader_exec_CCASFLAGS = $(STAGE2_COMPILE) +-pxeloader_exec_LDFLAGS = $(PXELOADER_LINK) +- +-# General rule for making a raw binary. +-SUFFIXES = .exec +-all: $(BUILT_SOURCES) +- $(MAKE) $(AM_MAKEFLAGS) all-am +- +-.SUFFIXES: +-.SUFFIXES: .exec .S .c .o .obj +-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) +- @for dep in $?; do \ +- case '$(am__configure_deps)' in \ +- *$$dep*) \ +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +- && exit 0; \ +- exit 1;; \ +- esac; \ +- done; \ +- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu stage2/Makefile'; \ +- cd $(top_srcdir) && \ +- $(AUTOMAKE) --gnu stage2/Makefile +-.PRECIOUS: Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- @case '$?' in \ +- *config.status*) \ +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ +- *) \ +- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ +- esac; +- +-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +- +-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +- +-clean-noinstLIBRARIES: +- -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +-libgrub.a: $(libgrub_a_OBJECTS) $(libgrub_a_DEPENDENCIES) +- -rm -f libgrub.a +- $(libgrub_a_AR) libgrub.a $(libgrub_a_OBJECTS) $(libgrub_a_LIBADD) +- $(RANLIB) libgrub.a +- +-clean-noinstPROGRAMS: +- -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) +-diskless.exec$(EXEEXT): $(diskless_exec_OBJECTS) $(diskless_exec_DEPENDENCIES) +- @rm -f diskless.exec$(EXEEXT) +- $(LINK) $(diskless_exec_LDFLAGS) $(diskless_exec_OBJECTS) $(diskless_exec_LDADD) $(LIBS) +-e2fs_stage1_5.exec$(EXEEXT): $(e2fs_stage1_5_exec_OBJECTS) $(e2fs_stage1_5_exec_DEPENDENCIES) +- @rm -f e2fs_stage1_5.exec$(EXEEXT) +- $(LINK) $(e2fs_stage1_5_exec_LDFLAGS) $(e2fs_stage1_5_exec_OBJECTS) $(e2fs_stage1_5_exec_LDADD) $(LIBS) +-fat_stage1_5.exec$(EXEEXT): $(fat_stage1_5_exec_OBJECTS) $(fat_stage1_5_exec_DEPENDENCIES) +- @rm -f fat_stage1_5.exec$(EXEEXT) +- $(LINK) $(fat_stage1_5_exec_LDFLAGS) $(fat_stage1_5_exec_OBJECTS) $(fat_stage1_5_exec_LDADD) $(LIBS) +-ffs_stage1_5.exec$(EXEEXT): $(ffs_stage1_5_exec_OBJECTS) $(ffs_stage1_5_exec_DEPENDENCIES) +- @rm -f ffs_stage1_5.exec$(EXEEXT) +- $(LINK) $(ffs_stage1_5_exec_LDFLAGS) $(ffs_stage1_5_exec_OBJECTS) $(ffs_stage1_5_exec_LDADD) $(LIBS) +-iso9660_stage1_5.exec$(EXEEXT): $(iso9660_stage1_5_exec_OBJECTS) $(iso9660_stage1_5_exec_DEPENDENCIES) +- @rm -f iso9660_stage1_5.exec$(EXEEXT) +- $(LINK) $(iso9660_stage1_5_exec_LDFLAGS) $(iso9660_stage1_5_exec_OBJECTS) $(iso9660_stage1_5_exec_LDADD) $(LIBS) +-jfs_stage1_5.exec$(EXEEXT): $(jfs_stage1_5_exec_OBJECTS) $(jfs_stage1_5_exec_DEPENDENCIES) +- @rm -f jfs_stage1_5.exec$(EXEEXT) +- $(LINK) $(jfs_stage1_5_exec_LDFLAGS) $(jfs_stage1_5_exec_OBJECTS) $(jfs_stage1_5_exec_LDADD) $(LIBS) +-minix_stage1_5.exec$(EXEEXT): $(minix_stage1_5_exec_OBJECTS) $(minix_stage1_5_exec_DEPENDENCIES) +- @rm -f minix_stage1_5.exec$(EXEEXT) +- $(LINK) $(minix_stage1_5_exec_LDFLAGS) $(minix_stage1_5_exec_OBJECTS) $(minix_stage1_5_exec_LDADD) $(LIBS) +-nbloader.exec$(EXEEXT): $(nbloader_exec_OBJECTS) $(nbloader_exec_DEPENDENCIES) +- @rm -f nbloader.exec$(EXEEXT) +- $(LINK) $(nbloader_exec_LDFLAGS) $(nbloader_exec_OBJECTS) $(nbloader_exec_LDADD) $(LIBS) +-pre_stage2.exec$(EXEEXT): $(pre_stage2_exec_OBJECTS) $(pre_stage2_exec_DEPENDENCIES) +- @rm -f pre_stage2.exec$(EXEEXT) +- $(LINK) $(pre_stage2_exec_LDFLAGS) $(pre_stage2_exec_OBJECTS) $(pre_stage2_exec_LDADD) $(LIBS) +-pxeloader.exec$(EXEEXT): $(pxeloader_exec_OBJECTS) $(pxeloader_exec_DEPENDENCIES) +- @rm -f pxeloader.exec$(EXEEXT) +- $(LINK) $(pxeloader_exec_LDFLAGS) $(pxeloader_exec_OBJECTS) $(pxeloader_exec_LDADD) $(LIBS) +-reiserfs_stage1_5.exec$(EXEEXT): $(reiserfs_stage1_5_exec_OBJECTS) $(reiserfs_stage1_5_exec_DEPENDENCIES) +- @rm -f reiserfs_stage1_5.exec$(EXEEXT) +- $(LINK) $(reiserfs_stage1_5_exec_LDFLAGS) $(reiserfs_stage1_5_exec_OBJECTS) $(reiserfs_stage1_5_exec_LDADD) $(LIBS) +-start.exec$(EXEEXT): $(start_exec_OBJECTS) $(start_exec_DEPENDENCIES) +- @rm -f start.exec$(EXEEXT) +- $(LINK) $(start_exec_LDFLAGS) $(start_exec_OBJECTS) $(start_exec_LDADD) $(LIBS) +-start_eltorito.exec$(EXEEXT): $(start_eltorito_exec_OBJECTS) $(start_eltorito_exec_DEPENDENCIES) +- @rm -f start_eltorito.exec$(EXEEXT) +- $(LINK) $(start_eltorito_exec_LDFLAGS) $(start_eltorito_exec_OBJECTS) $(start_eltorito_exec_LDADD) $(LIBS) +-ufs2_stage1_5.exec$(EXEEXT): $(ufs2_stage1_5_exec_OBJECTS) $(ufs2_stage1_5_exec_DEPENDENCIES) +- @rm -f ufs2_stage1_5.exec$(EXEEXT) +- $(LINK) $(ufs2_stage1_5_exec_LDFLAGS) $(ufs2_stage1_5_exec_OBJECTS) $(ufs2_stage1_5_exec_LDADD) $(LIBS) +-vstafs_stage1_5.exec$(EXEEXT): $(vstafs_stage1_5_exec_OBJECTS) $(vstafs_stage1_5_exec_DEPENDENCIES) +- @rm -f vstafs_stage1_5.exec$(EXEEXT) +- $(LINK) $(vstafs_stage1_5_exec_LDFLAGS) $(vstafs_stage1_5_exec_OBJECTS) $(vstafs_stage1_5_exec_LDADD) $(LIBS) +-xfs_stage1_5.exec$(EXEEXT): $(xfs_stage1_5_exec_OBJECTS) $(xfs_stage1_5_exec_DEPENDENCIES) +- @rm -f xfs_stage1_5.exec$(EXEEXT) +- $(LINK) $(xfs_stage1_5_exec_LDFLAGS) $(xfs_stage1_5_exec_OBJECTS) $(xfs_stage1_5_exec_LDADD) $(LIBS) +- +-mostlyclean-compile: +- -rm -f *.$(OBJEXT) +- +-distclean-compile: +- -rm -f *.tab.c +- +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-bios.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-boot.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-builtins.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-char_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-cmdline.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-common.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-console.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-disk_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-fsys_ext2fs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-fsys_fat.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-fsys_ffs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-fsys_iso9660.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-fsys_jfs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-fsys_minix.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-fsys_reiserfs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-fsys_ufs2.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-fsys_vstafs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-fsys_xfs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-gunzip.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-hercules.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-md5.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-serial.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-smp-imps.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-stage2.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-terminfo.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-tparm.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/e2fs_stage1_5_exec-bios.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/e2fs_stage1_5_exec-char_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/e2fs_stage1_5_exec-common.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/e2fs_stage1_5_exec-disk_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/e2fs_stage1_5_exec-fsys_ext2fs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/e2fs_stage1_5_exec-stage1_5.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fat_stage1_5_exec-bios.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fat_stage1_5_exec-char_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fat_stage1_5_exec-common.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fat_stage1_5_exec-disk_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fat_stage1_5_exec-fsys_fat.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fat_stage1_5_exec-stage1_5.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ffs_stage1_5_exec-bios.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ffs_stage1_5_exec-char_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ffs_stage1_5_exec-common.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ffs_stage1_5_exec-disk_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ffs_stage1_5_exec-fsys_ffs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ffs_stage1_5_exec-stage1_5.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso9660_stage1_5_exec-bios.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso9660_stage1_5_exec-char_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso9660_stage1_5_exec-common.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso9660_stage1_5_exec-disk_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso9660_stage1_5_exec-fsys_iso9660.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso9660_stage1_5_exec-stage1_5.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jfs_stage1_5_exec-bios.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jfs_stage1_5_exec-char_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jfs_stage1_5_exec-common.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jfs_stage1_5_exec-disk_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jfs_stage1_5_exec-fsys_jfs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jfs_stage1_5_exec-stage1_5.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-boot.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-builtins.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-char_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-cmdline.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-common.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-disk_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-fsys_ext2fs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-fsys_fat.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-fsys_ffs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-fsys_iso9660.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-fsys_jfs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-fsys_minix.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-fsys_reiserfs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-fsys_ufs2.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-fsys_vstafs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-fsys_xfs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-gunzip.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-md5.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-serial.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-stage2.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-terminfo.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-tparm.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/minix_stage1_5_exec-bios.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/minix_stage1_5_exec-char_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/minix_stage1_5_exec-common.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/minix_stage1_5_exec-disk_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/minix_stage1_5_exec-fsys_minix.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/minix_stage1_5_exec-stage1_5.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-bios.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-boot.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-builtins.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-char_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-cmdline.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-common.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-console.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-disk_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-fsys_ext2fs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-fsys_fat.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-fsys_ffs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-fsys_iso9660.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-fsys_jfs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-fsys_minix.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-fsys_reiserfs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-fsys_ufs2.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-fsys_vstafs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-fsys_xfs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-gunzip.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-hercules.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-md5.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-serial.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-smp-imps.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-stage2.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-terminfo.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-tparm.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reiserfs_stage1_5_exec-bios.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reiserfs_stage1_5_exec-char_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reiserfs_stage1_5_exec-common.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reiserfs_stage1_5_exec-disk_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reiserfs_stage1_5_exec-fsys_reiserfs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reiserfs_stage1_5_exec-stage1_5.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ufs2_stage1_5_exec-bios.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ufs2_stage1_5_exec-char_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ufs2_stage1_5_exec-common.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ufs2_stage1_5_exec-disk_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ufs2_stage1_5_exec-fsys_ufs2.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ufs2_stage1_5_exec-stage1_5.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vstafs_stage1_5_exec-bios.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vstafs_stage1_5_exec-char_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vstafs_stage1_5_exec-common.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vstafs_stage1_5_exec-disk_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vstafs_stage1_5_exec-fsys_vstafs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vstafs_stage1_5_exec-stage1_5.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xfs_stage1_5_exec-bios.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xfs_stage1_5_exec-char_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xfs_stage1_5_exec-common.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xfs_stage1_5_exec-disk_io.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xfs_stage1_5_exec-fsys_xfs.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xfs_stage1_5_exec-stage1_5.Po@am__quote@ +- +-.S.o: +- $(CCASCOMPILE) -c $< +- +-.S.obj: +- $(CCASCOMPILE) -c `$(CYGPATH_W) '$<'` +- +-diskless_exec-asm.o: asm.S +- $(CCAS) $(diskless_exec_CCASFLAGS) $(CCASFLAGS) -c -o diskless_exec-asm.o `test -f 'asm.S' || echo '$(srcdir)/'`asm.S +- +-diskless_exec-asm.obj: asm.S +- $(CCAS) $(diskless_exec_CCASFLAGS) $(CCASFLAGS) -c -o diskless_exec-asm.obj `if test -f 'asm.S'; then $(CYGPATH_W) 'asm.S'; else $(CYGPATH_W) '$(srcdir)/asm.S'; fi` +- +-e2fs_stage1_5_exec-start.o: start.S +- $(CCAS) $(e2fs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o e2fs_stage1_5_exec-start.o `test -f 'start.S' || echo '$(srcdir)/'`start.S +- +-e2fs_stage1_5_exec-start.obj: start.S +- $(CCAS) $(e2fs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o e2fs_stage1_5_exec-start.obj `if test -f 'start.S'; then $(CYGPATH_W) 'start.S'; else $(CYGPATH_W) '$(srcdir)/start.S'; fi` +- +-e2fs_stage1_5_exec-asm.o: asm.S +- $(CCAS) $(e2fs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o e2fs_stage1_5_exec-asm.o `test -f 'asm.S' || echo '$(srcdir)/'`asm.S +- +-e2fs_stage1_5_exec-asm.obj: asm.S +- $(CCAS) $(e2fs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o e2fs_stage1_5_exec-asm.obj `if test -f 'asm.S'; then $(CYGPATH_W) 'asm.S'; else $(CYGPATH_W) '$(srcdir)/asm.S'; fi` +- +-fat_stage1_5_exec-start.o: start.S +- $(CCAS) $(fat_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o fat_stage1_5_exec-start.o `test -f 'start.S' || echo '$(srcdir)/'`start.S +- +-fat_stage1_5_exec-start.obj: start.S +- $(CCAS) $(fat_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o fat_stage1_5_exec-start.obj `if test -f 'start.S'; then $(CYGPATH_W) 'start.S'; else $(CYGPATH_W) '$(srcdir)/start.S'; fi` +- +-fat_stage1_5_exec-asm.o: asm.S +- $(CCAS) $(fat_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o fat_stage1_5_exec-asm.o `test -f 'asm.S' || echo '$(srcdir)/'`asm.S +- +-fat_stage1_5_exec-asm.obj: asm.S +- $(CCAS) $(fat_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o fat_stage1_5_exec-asm.obj `if test -f 'asm.S'; then $(CYGPATH_W) 'asm.S'; else $(CYGPATH_W) '$(srcdir)/asm.S'; fi` +- +-ffs_stage1_5_exec-start.o: start.S +- $(CCAS) $(ffs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o ffs_stage1_5_exec-start.o `test -f 'start.S' || echo '$(srcdir)/'`start.S +- +-ffs_stage1_5_exec-start.obj: start.S +- $(CCAS) $(ffs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o ffs_stage1_5_exec-start.obj `if test -f 'start.S'; then $(CYGPATH_W) 'start.S'; else $(CYGPATH_W) '$(srcdir)/start.S'; fi` +- +-ffs_stage1_5_exec-asm.o: asm.S +- $(CCAS) $(ffs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o ffs_stage1_5_exec-asm.o `test -f 'asm.S' || echo '$(srcdir)/'`asm.S +- +-ffs_stage1_5_exec-asm.obj: asm.S +- $(CCAS) $(ffs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o ffs_stage1_5_exec-asm.obj `if test -f 'asm.S'; then $(CYGPATH_W) 'asm.S'; else $(CYGPATH_W) '$(srcdir)/asm.S'; fi` +- +-iso9660_stage1_5_exec-start_eltorito.o: start_eltorito.S +- $(CCAS) $(iso9660_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o iso9660_stage1_5_exec-start_eltorito.o `test -f 'start_eltorito.S' || echo '$(srcdir)/'`start_eltorito.S +- +-iso9660_stage1_5_exec-start_eltorito.obj: start_eltorito.S +- $(CCAS) $(iso9660_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o iso9660_stage1_5_exec-start_eltorito.obj `if test -f 'start_eltorito.S'; then $(CYGPATH_W) 'start_eltorito.S'; else $(CYGPATH_W) '$(srcdir)/start_eltorito.S'; fi` +- +-iso9660_stage1_5_exec-asm.o: asm.S +- $(CCAS) $(iso9660_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o iso9660_stage1_5_exec-asm.o `test -f 'asm.S' || echo '$(srcdir)/'`asm.S +- +-iso9660_stage1_5_exec-asm.obj: asm.S +- $(CCAS) $(iso9660_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o iso9660_stage1_5_exec-asm.obj `if test -f 'asm.S'; then $(CYGPATH_W) 'asm.S'; else $(CYGPATH_W) '$(srcdir)/asm.S'; fi` +- +-jfs_stage1_5_exec-start.o: start.S +- $(CCAS) $(jfs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o jfs_stage1_5_exec-start.o `test -f 'start.S' || echo '$(srcdir)/'`start.S +- +-jfs_stage1_5_exec-start.obj: start.S +- $(CCAS) $(jfs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o jfs_stage1_5_exec-start.obj `if test -f 'start.S'; then $(CYGPATH_W) 'start.S'; else $(CYGPATH_W) '$(srcdir)/start.S'; fi` +- +-jfs_stage1_5_exec-asm.o: asm.S +- $(CCAS) $(jfs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o jfs_stage1_5_exec-asm.o `test -f 'asm.S' || echo '$(srcdir)/'`asm.S +- +-jfs_stage1_5_exec-asm.obj: asm.S +- $(CCAS) $(jfs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o jfs_stage1_5_exec-asm.obj `if test -f 'asm.S'; then $(CYGPATH_W) 'asm.S'; else $(CYGPATH_W) '$(srcdir)/asm.S'; fi` +- +-minix_stage1_5_exec-start.o: start.S +- $(CCAS) $(minix_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o minix_stage1_5_exec-start.o `test -f 'start.S' || echo '$(srcdir)/'`start.S +- +-minix_stage1_5_exec-start.obj: start.S +- $(CCAS) $(minix_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o minix_stage1_5_exec-start.obj `if test -f 'start.S'; then $(CYGPATH_W) 'start.S'; else $(CYGPATH_W) '$(srcdir)/start.S'; fi` +- +-minix_stage1_5_exec-asm.o: asm.S +- $(CCAS) $(minix_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o minix_stage1_5_exec-asm.o `test -f 'asm.S' || echo '$(srcdir)/'`asm.S +- +-minix_stage1_5_exec-asm.obj: asm.S +- $(CCAS) $(minix_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o minix_stage1_5_exec-asm.obj `if test -f 'asm.S'; then $(CYGPATH_W) 'asm.S'; else $(CYGPATH_W) '$(srcdir)/asm.S'; fi` +- +-nbloader_exec-nbloader.o: nbloader.S +- $(CCAS) $(nbloader_exec_CCASFLAGS) $(CCASFLAGS) -c -o nbloader_exec-nbloader.o `test -f 'nbloader.S' || echo '$(srcdir)/'`nbloader.S +- +-nbloader_exec-nbloader.obj: nbloader.S +- $(CCAS) $(nbloader_exec_CCASFLAGS) $(CCASFLAGS) -c -o nbloader_exec-nbloader.obj `if test -f 'nbloader.S'; then $(CYGPATH_W) 'nbloader.S'; else $(CYGPATH_W) '$(srcdir)/nbloader.S'; fi` +- +-pre_stage2_exec-asm.o: asm.S +- $(CCAS) $(pre_stage2_exec_CCASFLAGS) $(CCASFLAGS) -c -o pre_stage2_exec-asm.o `test -f 'asm.S' || echo '$(srcdir)/'`asm.S +- +-pre_stage2_exec-asm.obj: asm.S +- $(CCAS) $(pre_stage2_exec_CCASFLAGS) $(CCASFLAGS) -c -o pre_stage2_exec-asm.obj `if test -f 'asm.S'; then $(CYGPATH_W) 'asm.S'; else $(CYGPATH_W) '$(srcdir)/asm.S'; fi` +- +-pxeloader_exec-pxeloader.o: pxeloader.S +- $(CCAS) $(pxeloader_exec_CCASFLAGS) $(CCASFLAGS) -c -o pxeloader_exec-pxeloader.o `test -f 'pxeloader.S' || echo '$(srcdir)/'`pxeloader.S +- +-pxeloader_exec-pxeloader.obj: pxeloader.S +- $(CCAS) $(pxeloader_exec_CCASFLAGS) $(CCASFLAGS) -c -o pxeloader_exec-pxeloader.obj `if test -f 'pxeloader.S'; then $(CYGPATH_W) 'pxeloader.S'; else $(CYGPATH_W) '$(srcdir)/pxeloader.S'; fi` +- +-reiserfs_stage1_5_exec-start.o: start.S +- $(CCAS) $(reiserfs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o reiserfs_stage1_5_exec-start.o `test -f 'start.S' || echo '$(srcdir)/'`start.S +- +-reiserfs_stage1_5_exec-start.obj: start.S +- $(CCAS) $(reiserfs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o reiserfs_stage1_5_exec-start.obj `if test -f 'start.S'; then $(CYGPATH_W) 'start.S'; else $(CYGPATH_W) '$(srcdir)/start.S'; fi` +- +-reiserfs_stage1_5_exec-asm.o: asm.S +- $(CCAS) $(reiserfs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o reiserfs_stage1_5_exec-asm.o `test -f 'asm.S' || echo '$(srcdir)/'`asm.S +- +-reiserfs_stage1_5_exec-asm.obj: asm.S +- $(CCAS) $(reiserfs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o reiserfs_stage1_5_exec-asm.obj `if test -f 'asm.S'; then $(CYGPATH_W) 'asm.S'; else $(CYGPATH_W) '$(srcdir)/asm.S'; fi` +- +-start_exec-start.o: start.S +- $(CCAS) $(start_exec_CCASFLAGS) $(CCASFLAGS) -c -o start_exec-start.o `test -f 'start.S' || echo '$(srcdir)/'`start.S +- +-start_exec-start.obj: start.S +- $(CCAS) $(start_exec_CCASFLAGS) $(CCASFLAGS) -c -o start_exec-start.obj `if test -f 'start.S'; then $(CYGPATH_W) 'start.S'; else $(CYGPATH_W) '$(srcdir)/start.S'; fi` +- +-start_eltorito_exec-start_eltorito.o: start_eltorito.S +- $(CCAS) $(start_eltorito_exec_CCASFLAGS) $(CCASFLAGS) -c -o start_eltorito_exec-start_eltorito.o `test -f 'start_eltorito.S' || echo '$(srcdir)/'`start_eltorito.S +- +-start_eltorito_exec-start_eltorito.obj: start_eltorito.S +- $(CCAS) $(start_eltorito_exec_CCASFLAGS) $(CCASFLAGS) -c -o start_eltorito_exec-start_eltorito.obj `if test -f 'start_eltorito.S'; then $(CYGPATH_W) 'start_eltorito.S'; else $(CYGPATH_W) '$(srcdir)/start_eltorito.S'; fi` +- +-ufs2_stage1_5_exec-start.o: start.S +- $(CCAS) $(ufs2_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o ufs2_stage1_5_exec-start.o `test -f 'start.S' || echo '$(srcdir)/'`start.S +- +-ufs2_stage1_5_exec-start.obj: start.S +- $(CCAS) $(ufs2_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o ufs2_stage1_5_exec-start.obj `if test -f 'start.S'; then $(CYGPATH_W) 'start.S'; else $(CYGPATH_W) '$(srcdir)/start.S'; fi` +- +-ufs2_stage1_5_exec-asm.o: asm.S +- $(CCAS) $(ufs2_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o ufs2_stage1_5_exec-asm.o `test -f 'asm.S' || echo '$(srcdir)/'`asm.S +- +-ufs2_stage1_5_exec-asm.obj: asm.S +- $(CCAS) $(ufs2_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o ufs2_stage1_5_exec-asm.obj `if test -f 'asm.S'; then $(CYGPATH_W) 'asm.S'; else $(CYGPATH_W) '$(srcdir)/asm.S'; fi` +- +-vstafs_stage1_5_exec-start.o: start.S +- $(CCAS) $(vstafs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o vstafs_stage1_5_exec-start.o `test -f 'start.S' || echo '$(srcdir)/'`start.S +- +-vstafs_stage1_5_exec-start.obj: start.S +- $(CCAS) $(vstafs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o vstafs_stage1_5_exec-start.obj `if test -f 'start.S'; then $(CYGPATH_W) 'start.S'; else $(CYGPATH_W) '$(srcdir)/start.S'; fi` +- +-vstafs_stage1_5_exec-asm.o: asm.S +- $(CCAS) $(vstafs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o vstafs_stage1_5_exec-asm.o `test -f 'asm.S' || echo '$(srcdir)/'`asm.S +- +-vstafs_stage1_5_exec-asm.obj: asm.S +- $(CCAS) $(vstafs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o vstafs_stage1_5_exec-asm.obj `if test -f 'asm.S'; then $(CYGPATH_W) 'asm.S'; else $(CYGPATH_W) '$(srcdir)/asm.S'; fi` +- +-xfs_stage1_5_exec-start.o: start.S +- $(CCAS) $(xfs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o xfs_stage1_5_exec-start.o `test -f 'start.S' || echo '$(srcdir)/'`start.S +- +-xfs_stage1_5_exec-start.obj: start.S +- $(CCAS) $(xfs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o xfs_stage1_5_exec-start.obj `if test -f 'start.S'; then $(CYGPATH_W) 'start.S'; else $(CYGPATH_W) '$(srcdir)/start.S'; fi` +- +-xfs_stage1_5_exec-asm.o: asm.S +- $(CCAS) $(xfs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o xfs_stage1_5_exec-asm.o `test -f 'asm.S' || echo '$(srcdir)/'`asm.S +- +-xfs_stage1_5_exec-asm.obj: asm.S +- $(CCAS) $(xfs_stage1_5_exec_CCASFLAGS) $(CCASFLAGS) -c -o xfs_stage1_5_exec-asm.obj `if test -f 'asm.S'; then $(CYGPATH_W) 'asm.S'; else $(CYGPATH_W) '$(srcdir)/asm.S'; fi` +- +-.c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c $< +- +-.c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +- +-libgrub_a-boot.o: boot.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-boot.o -MD -MP -MF "$(DEPDIR)/libgrub_a-boot.Tpo" -c -o libgrub_a-boot.o `test -f 'boot.c' || echo '$(srcdir)/'`boot.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-boot.Tpo" "$(DEPDIR)/libgrub_a-boot.Po"; else rm -f "$(DEPDIR)/libgrub_a-boot.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='boot.c' object='libgrub_a-boot.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-boot.o `test -f 'boot.c' || echo '$(srcdir)/'`boot.c +- +-libgrub_a-boot.obj: boot.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-boot.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-boot.Tpo" -c -o libgrub_a-boot.obj `if test -f 'boot.c'; then $(CYGPATH_W) 'boot.c'; else $(CYGPATH_W) '$(srcdir)/boot.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-boot.Tpo" "$(DEPDIR)/libgrub_a-boot.Po"; else rm -f "$(DEPDIR)/libgrub_a-boot.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='boot.c' object='libgrub_a-boot.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-boot.obj `if test -f 'boot.c'; then $(CYGPATH_W) 'boot.c'; else $(CYGPATH_W) '$(srcdir)/boot.c'; fi` +- +-libgrub_a-builtins.o: builtins.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-builtins.o -MD -MP -MF "$(DEPDIR)/libgrub_a-builtins.Tpo" -c -o libgrub_a-builtins.o `test -f 'builtins.c' || echo '$(srcdir)/'`builtins.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-builtins.Tpo" "$(DEPDIR)/libgrub_a-builtins.Po"; else rm -f "$(DEPDIR)/libgrub_a-builtins.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='builtins.c' object='libgrub_a-builtins.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-builtins.o `test -f 'builtins.c' || echo '$(srcdir)/'`builtins.c +- +-libgrub_a-builtins.obj: builtins.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-builtins.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-builtins.Tpo" -c -o libgrub_a-builtins.obj `if test -f 'builtins.c'; then $(CYGPATH_W) 'builtins.c'; else $(CYGPATH_W) '$(srcdir)/builtins.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-builtins.Tpo" "$(DEPDIR)/libgrub_a-builtins.Po"; else rm -f "$(DEPDIR)/libgrub_a-builtins.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='builtins.c' object='libgrub_a-builtins.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-builtins.obj `if test -f 'builtins.c'; then $(CYGPATH_W) 'builtins.c'; else $(CYGPATH_W) '$(srcdir)/builtins.c'; fi` +- +-libgrub_a-char_io.o: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-char_io.o -MD -MP -MF "$(DEPDIR)/libgrub_a-char_io.Tpo" -c -o libgrub_a-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-char_io.Tpo" "$(DEPDIR)/libgrub_a-char_io.Po"; else rm -f "$(DEPDIR)/libgrub_a-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='libgrub_a-char_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c +- +-libgrub_a-char_io.obj: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-char_io.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-char_io.Tpo" -c -o libgrub_a-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-char_io.Tpo" "$(DEPDIR)/libgrub_a-char_io.Po"; else rm -f "$(DEPDIR)/libgrub_a-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='libgrub_a-char_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi` +- +-libgrub_a-cmdline.o: cmdline.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-cmdline.o -MD -MP -MF "$(DEPDIR)/libgrub_a-cmdline.Tpo" -c -o libgrub_a-cmdline.o `test -f 'cmdline.c' || echo '$(srcdir)/'`cmdline.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-cmdline.Tpo" "$(DEPDIR)/libgrub_a-cmdline.Po"; else rm -f "$(DEPDIR)/libgrub_a-cmdline.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cmdline.c' object='libgrub_a-cmdline.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-cmdline.o `test -f 'cmdline.c' || echo '$(srcdir)/'`cmdline.c +- +-libgrub_a-cmdline.obj: cmdline.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-cmdline.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-cmdline.Tpo" -c -o libgrub_a-cmdline.obj `if test -f 'cmdline.c'; then $(CYGPATH_W) 'cmdline.c'; else $(CYGPATH_W) '$(srcdir)/cmdline.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-cmdline.Tpo" "$(DEPDIR)/libgrub_a-cmdline.Po"; else rm -f "$(DEPDIR)/libgrub_a-cmdline.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cmdline.c' object='libgrub_a-cmdline.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-cmdline.obj `if test -f 'cmdline.c'; then $(CYGPATH_W) 'cmdline.c'; else $(CYGPATH_W) '$(srcdir)/cmdline.c'; fi` +- +-libgrub_a-common.o: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-common.o -MD -MP -MF "$(DEPDIR)/libgrub_a-common.Tpo" -c -o libgrub_a-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-common.Tpo" "$(DEPDIR)/libgrub_a-common.Po"; else rm -f "$(DEPDIR)/libgrub_a-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='libgrub_a-common.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c +- +-libgrub_a-common.obj: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-common.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-common.Tpo" -c -o libgrub_a-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-common.Tpo" "$(DEPDIR)/libgrub_a-common.Po"; else rm -f "$(DEPDIR)/libgrub_a-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='libgrub_a-common.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi` +- +-libgrub_a-disk_io.o: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-disk_io.o -MD -MP -MF "$(DEPDIR)/libgrub_a-disk_io.Tpo" -c -o libgrub_a-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-disk_io.Tpo" "$(DEPDIR)/libgrub_a-disk_io.Po"; else rm -f "$(DEPDIR)/libgrub_a-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='libgrub_a-disk_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c +- +-libgrub_a-disk_io.obj: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-disk_io.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-disk_io.Tpo" -c -o libgrub_a-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-disk_io.Tpo" "$(DEPDIR)/libgrub_a-disk_io.Po"; else rm -f "$(DEPDIR)/libgrub_a-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='libgrub_a-disk_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi` +- +-libgrub_a-fsys_ext2fs.o: fsys_ext2fs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_ext2fs.o -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_ext2fs.Tpo" -c -o libgrub_a-fsys_ext2fs.o `test -f 'fsys_ext2fs.c' || echo '$(srcdir)/'`fsys_ext2fs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_ext2fs.Tpo" "$(DEPDIR)/libgrub_a-fsys_ext2fs.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_ext2fs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ext2fs.c' object='libgrub_a-fsys_ext2fs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_ext2fs.o `test -f 'fsys_ext2fs.c' || echo '$(srcdir)/'`fsys_ext2fs.c +- +-libgrub_a-fsys_ext2fs.obj: fsys_ext2fs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_ext2fs.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_ext2fs.Tpo" -c -o libgrub_a-fsys_ext2fs.obj `if test -f 'fsys_ext2fs.c'; then $(CYGPATH_W) 'fsys_ext2fs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ext2fs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_ext2fs.Tpo" "$(DEPDIR)/libgrub_a-fsys_ext2fs.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_ext2fs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ext2fs.c' object='libgrub_a-fsys_ext2fs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_ext2fs.obj `if test -f 'fsys_ext2fs.c'; then $(CYGPATH_W) 'fsys_ext2fs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ext2fs.c'; fi` +- +-libgrub_a-fsys_fat.o: fsys_fat.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_fat.o -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_fat.Tpo" -c -o libgrub_a-fsys_fat.o `test -f 'fsys_fat.c' || echo '$(srcdir)/'`fsys_fat.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_fat.Tpo" "$(DEPDIR)/libgrub_a-fsys_fat.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_fat.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_fat.c' object='libgrub_a-fsys_fat.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_fat.o `test -f 'fsys_fat.c' || echo '$(srcdir)/'`fsys_fat.c +- +-libgrub_a-fsys_fat.obj: fsys_fat.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_fat.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_fat.Tpo" -c -o libgrub_a-fsys_fat.obj `if test -f 'fsys_fat.c'; then $(CYGPATH_W) 'fsys_fat.c'; else $(CYGPATH_W) '$(srcdir)/fsys_fat.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_fat.Tpo" "$(DEPDIR)/libgrub_a-fsys_fat.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_fat.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_fat.c' object='libgrub_a-fsys_fat.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_fat.obj `if test -f 'fsys_fat.c'; then $(CYGPATH_W) 'fsys_fat.c'; else $(CYGPATH_W) '$(srcdir)/fsys_fat.c'; fi` +- +-libgrub_a-fsys_ffs.o: fsys_ffs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_ffs.o -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_ffs.Tpo" -c -o libgrub_a-fsys_ffs.o `test -f 'fsys_ffs.c' || echo '$(srcdir)/'`fsys_ffs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_ffs.Tpo" "$(DEPDIR)/libgrub_a-fsys_ffs.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_ffs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ffs.c' object='libgrub_a-fsys_ffs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_ffs.o `test -f 'fsys_ffs.c' || echo '$(srcdir)/'`fsys_ffs.c +- +-libgrub_a-fsys_ffs.obj: fsys_ffs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_ffs.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_ffs.Tpo" -c -o libgrub_a-fsys_ffs.obj `if test -f 'fsys_ffs.c'; then $(CYGPATH_W) 'fsys_ffs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ffs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_ffs.Tpo" "$(DEPDIR)/libgrub_a-fsys_ffs.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_ffs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ffs.c' object='libgrub_a-fsys_ffs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_ffs.obj `if test -f 'fsys_ffs.c'; then $(CYGPATH_W) 'fsys_ffs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ffs.c'; fi` +- +-libgrub_a-fsys_iso9660.o: fsys_iso9660.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_iso9660.o -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_iso9660.Tpo" -c -o libgrub_a-fsys_iso9660.o `test -f 'fsys_iso9660.c' || echo '$(srcdir)/'`fsys_iso9660.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_iso9660.Tpo" "$(DEPDIR)/libgrub_a-fsys_iso9660.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_iso9660.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_iso9660.c' object='libgrub_a-fsys_iso9660.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_iso9660.o `test -f 'fsys_iso9660.c' || echo '$(srcdir)/'`fsys_iso9660.c +- +-libgrub_a-fsys_iso9660.obj: fsys_iso9660.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_iso9660.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_iso9660.Tpo" -c -o libgrub_a-fsys_iso9660.obj `if test -f 'fsys_iso9660.c'; then $(CYGPATH_W) 'fsys_iso9660.c'; else $(CYGPATH_W) '$(srcdir)/fsys_iso9660.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_iso9660.Tpo" "$(DEPDIR)/libgrub_a-fsys_iso9660.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_iso9660.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_iso9660.c' object='libgrub_a-fsys_iso9660.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_iso9660.obj `if test -f 'fsys_iso9660.c'; then $(CYGPATH_W) 'fsys_iso9660.c'; else $(CYGPATH_W) '$(srcdir)/fsys_iso9660.c'; fi` +- +-libgrub_a-fsys_jfs.o: fsys_jfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_jfs.o -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_jfs.Tpo" -c -o libgrub_a-fsys_jfs.o `test -f 'fsys_jfs.c' || echo '$(srcdir)/'`fsys_jfs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_jfs.Tpo" "$(DEPDIR)/libgrub_a-fsys_jfs.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_jfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_jfs.c' object='libgrub_a-fsys_jfs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_jfs.o `test -f 'fsys_jfs.c' || echo '$(srcdir)/'`fsys_jfs.c +- +-libgrub_a-fsys_jfs.obj: fsys_jfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_jfs.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_jfs.Tpo" -c -o libgrub_a-fsys_jfs.obj `if test -f 'fsys_jfs.c'; then $(CYGPATH_W) 'fsys_jfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_jfs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_jfs.Tpo" "$(DEPDIR)/libgrub_a-fsys_jfs.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_jfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_jfs.c' object='libgrub_a-fsys_jfs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_jfs.obj `if test -f 'fsys_jfs.c'; then $(CYGPATH_W) 'fsys_jfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_jfs.c'; fi` +- +-libgrub_a-fsys_minix.o: fsys_minix.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_minix.o -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_minix.Tpo" -c -o libgrub_a-fsys_minix.o `test -f 'fsys_minix.c' || echo '$(srcdir)/'`fsys_minix.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_minix.Tpo" "$(DEPDIR)/libgrub_a-fsys_minix.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_minix.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_minix.c' object='libgrub_a-fsys_minix.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_minix.o `test -f 'fsys_minix.c' || echo '$(srcdir)/'`fsys_minix.c +- +-libgrub_a-fsys_minix.obj: fsys_minix.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_minix.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_minix.Tpo" -c -o libgrub_a-fsys_minix.obj `if test -f 'fsys_minix.c'; then $(CYGPATH_W) 'fsys_minix.c'; else $(CYGPATH_W) '$(srcdir)/fsys_minix.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_minix.Tpo" "$(DEPDIR)/libgrub_a-fsys_minix.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_minix.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_minix.c' object='libgrub_a-fsys_minix.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_minix.obj `if test -f 'fsys_minix.c'; then $(CYGPATH_W) 'fsys_minix.c'; else $(CYGPATH_W) '$(srcdir)/fsys_minix.c'; fi` +- +-libgrub_a-fsys_reiserfs.o: fsys_reiserfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_reiserfs.o -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_reiserfs.Tpo" -c -o libgrub_a-fsys_reiserfs.o `test -f 'fsys_reiserfs.c' || echo '$(srcdir)/'`fsys_reiserfs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_reiserfs.Tpo" "$(DEPDIR)/libgrub_a-fsys_reiserfs.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_reiserfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_reiserfs.c' object='libgrub_a-fsys_reiserfs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_reiserfs.o `test -f 'fsys_reiserfs.c' || echo '$(srcdir)/'`fsys_reiserfs.c +- +-libgrub_a-fsys_reiserfs.obj: fsys_reiserfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_reiserfs.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_reiserfs.Tpo" -c -o libgrub_a-fsys_reiserfs.obj `if test -f 'fsys_reiserfs.c'; then $(CYGPATH_W) 'fsys_reiserfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_reiserfs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_reiserfs.Tpo" "$(DEPDIR)/libgrub_a-fsys_reiserfs.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_reiserfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_reiserfs.c' object='libgrub_a-fsys_reiserfs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_reiserfs.obj `if test -f 'fsys_reiserfs.c'; then $(CYGPATH_W) 'fsys_reiserfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_reiserfs.c'; fi` +- +-libgrub_a-fsys_ufs2.o: fsys_ufs2.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_ufs2.o -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_ufs2.Tpo" -c -o libgrub_a-fsys_ufs2.o `test -f 'fsys_ufs2.c' || echo '$(srcdir)/'`fsys_ufs2.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_ufs2.Tpo" "$(DEPDIR)/libgrub_a-fsys_ufs2.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_ufs2.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ufs2.c' object='libgrub_a-fsys_ufs2.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_ufs2.o `test -f 'fsys_ufs2.c' || echo '$(srcdir)/'`fsys_ufs2.c +- +-libgrub_a-fsys_ufs2.obj: fsys_ufs2.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_ufs2.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_ufs2.Tpo" -c -o libgrub_a-fsys_ufs2.obj `if test -f 'fsys_ufs2.c'; then $(CYGPATH_W) 'fsys_ufs2.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ufs2.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_ufs2.Tpo" "$(DEPDIR)/libgrub_a-fsys_ufs2.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_ufs2.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ufs2.c' object='libgrub_a-fsys_ufs2.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_ufs2.obj `if test -f 'fsys_ufs2.c'; then $(CYGPATH_W) 'fsys_ufs2.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ufs2.c'; fi` +- +-libgrub_a-fsys_vstafs.o: fsys_vstafs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_vstafs.o -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_vstafs.Tpo" -c -o libgrub_a-fsys_vstafs.o `test -f 'fsys_vstafs.c' || echo '$(srcdir)/'`fsys_vstafs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_vstafs.Tpo" "$(DEPDIR)/libgrub_a-fsys_vstafs.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_vstafs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_vstafs.c' object='libgrub_a-fsys_vstafs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_vstafs.o `test -f 'fsys_vstafs.c' || echo '$(srcdir)/'`fsys_vstafs.c +- +-libgrub_a-fsys_vstafs.obj: fsys_vstafs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_vstafs.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_vstafs.Tpo" -c -o libgrub_a-fsys_vstafs.obj `if test -f 'fsys_vstafs.c'; then $(CYGPATH_W) 'fsys_vstafs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_vstafs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_vstafs.Tpo" "$(DEPDIR)/libgrub_a-fsys_vstafs.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_vstafs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_vstafs.c' object='libgrub_a-fsys_vstafs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_vstafs.obj `if test -f 'fsys_vstafs.c'; then $(CYGPATH_W) 'fsys_vstafs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_vstafs.c'; fi` +- +-libgrub_a-fsys_xfs.o: fsys_xfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_xfs.o -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_xfs.Tpo" -c -o libgrub_a-fsys_xfs.o `test -f 'fsys_xfs.c' || echo '$(srcdir)/'`fsys_xfs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_xfs.Tpo" "$(DEPDIR)/libgrub_a-fsys_xfs.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_xfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_xfs.c' object='libgrub_a-fsys_xfs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_xfs.o `test -f 'fsys_xfs.c' || echo '$(srcdir)/'`fsys_xfs.c +- +-libgrub_a-fsys_xfs.obj: fsys_xfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-fsys_xfs.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-fsys_xfs.Tpo" -c -o libgrub_a-fsys_xfs.obj `if test -f 'fsys_xfs.c'; then $(CYGPATH_W) 'fsys_xfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_xfs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-fsys_xfs.Tpo" "$(DEPDIR)/libgrub_a-fsys_xfs.Po"; else rm -f "$(DEPDIR)/libgrub_a-fsys_xfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_xfs.c' object='libgrub_a-fsys_xfs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_xfs.obj `if test -f 'fsys_xfs.c'; then $(CYGPATH_W) 'fsys_xfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_xfs.c'; fi` +- +-libgrub_a-gunzip.o: gunzip.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-gunzip.o -MD -MP -MF "$(DEPDIR)/libgrub_a-gunzip.Tpo" -c -o libgrub_a-gunzip.o `test -f 'gunzip.c' || echo '$(srcdir)/'`gunzip.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-gunzip.Tpo" "$(DEPDIR)/libgrub_a-gunzip.Po"; else rm -f "$(DEPDIR)/libgrub_a-gunzip.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gunzip.c' object='libgrub_a-gunzip.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-gunzip.o `test -f 'gunzip.c' || echo '$(srcdir)/'`gunzip.c +- +-libgrub_a-gunzip.obj: gunzip.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-gunzip.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-gunzip.Tpo" -c -o libgrub_a-gunzip.obj `if test -f 'gunzip.c'; then $(CYGPATH_W) 'gunzip.c'; else $(CYGPATH_W) '$(srcdir)/gunzip.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-gunzip.Tpo" "$(DEPDIR)/libgrub_a-gunzip.Po"; else rm -f "$(DEPDIR)/libgrub_a-gunzip.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gunzip.c' object='libgrub_a-gunzip.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-gunzip.obj `if test -f 'gunzip.c'; then $(CYGPATH_W) 'gunzip.c'; else $(CYGPATH_W) '$(srcdir)/gunzip.c'; fi` +- +-libgrub_a-md5.o: md5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-md5.o -MD -MP -MF "$(DEPDIR)/libgrub_a-md5.Tpo" -c -o libgrub_a-md5.o `test -f 'md5.c' || echo '$(srcdir)/'`md5.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-md5.Tpo" "$(DEPDIR)/libgrub_a-md5.Po"; else rm -f "$(DEPDIR)/libgrub_a-md5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='md5.c' object='libgrub_a-md5.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-md5.o `test -f 'md5.c' || echo '$(srcdir)/'`md5.c +- +-libgrub_a-md5.obj: md5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-md5.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-md5.Tpo" -c -o libgrub_a-md5.obj `if test -f 'md5.c'; then $(CYGPATH_W) 'md5.c'; else $(CYGPATH_W) '$(srcdir)/md5.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-md5.Tpo" "$(DEPDIR)/libgrub_a-md5.Po"; else rm -f "$(DEPDIR)/libgrub_a-md5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='md5.c' object='libgrub_a-md5.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-md5.obj `if test -f 'md5.c'; then $(CYGPATH_W) 'md5.c'; else $(CYGPATH_W) '$(srcdir)/md5.c'; fi` +- +-libgrub_a-serial.o: serial.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-serial.o -MD -MP -MF "$(DEPDIR)/libgrub_a-serial.Tpo" -c -o libgrub_a-serial.o `test -f 'serial.c' || echo '$(srcdir)/'`serial.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-serial.Tpo" "$(DEPDIR)/libgrub_a-serial.Po"; else rm -f "$(DEPDIR)/libgrub_a-serial.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='serial.c' object='libgrub_a-serial.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-serial.o `test -f 'serial.c' || echo '$(srcdir)/'`serial.c +- +-libgrub_a-serial.obj: serial.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-serial.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-serial.Tpo" -c -o libgrub_a-serial.obj `if test -f 'serial.c'; then $(CYGPATH_W) 'serial.c'; else $(CYGPATH_W) '$(srcdir)/serial.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-serial.Tpo" "$(DEPDIR)/libgrub_a-serial.Po"; else rm -f "$(DEPDIR)/libgrub_a-serial.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='serial.c' object='libgrub_a-serial.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-serial.obj `if test -f 'serial.c'; then $(CYGPATH_W) 'serial.c'; else $(CYGPATH_W) '$(srcdir)/serial.c'; fi` +- +-libgrub_a-stage2.o: stage2.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-stage2.o -MD -MP -MF "$(DEPDIR)/libgrub_a-stage2.Tpo" -c -o libgrub_a-stage2.o `test -f 'stage2.c' || echo '$(srcdir)/'`stage2.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-stage2.Tpo" "$(DEPDIR)/libgrub_a-stage2.Po"; else rm -f "$(DEPDIR)/libgrub_a-stage2.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage2.c' object='libgrub_a-stage2.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-stage2.o `test -f 'stage2.c' || echo '$(srcdir)/'`stage2.c +- +-libgrub_a-stage2.obj: stage2.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-stage2.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-stage2.Tpo" -c -o libgrub_a-stage2.obj `if test -f 'stage2.c'; then $(CYGPATH_W) 'stage2.c'; else $(CYGPATH_W) '$(srcdir)/stage2.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-stage2.Tpo" "$(DEPDIR)/libgrub_a-stage2.Po"; else rm -f "$(DEPDIR)/libgrub_a-stage2.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage2.c' object='libgrub_a-stage2.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-stage2.obj `if test -f 'stage2.c'; then $(CYGPATH_W) 'stage2.c'; else $(CYGPATH_W) '$(srcdir)/stage2.c'; fi` +- +-libgrub_a-terminfo.o: terminfo.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-terminfo.o -MD -MP -MF "$(DEPDIR)/libgrub_a-terminfo.Tpo" -c -o libgrub_a-terminfo.o `test -f 'terminfo.c' || echo '$(srcdir)/'`terminfo.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-terminfo.Tpo" "$(DEPDIR)/libgrub_a-terminfo.Po"; else rm -f "$(DEPDIR)/libgrub_a-terminfo.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='terminfo.c' object='libgrub_a-terminfo.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-terminfo.o `test -f 'terminfo.c' || echo '$(srcdir)/'`terminfo.c +- +-libgrub_a-terminfo.obj: terminfo.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-terminfo.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-terminfo.Tpo" -c -o libgrub_a-terminfo.obj `if test -f 'terminfo.c'; then $(CYGPATH_W) 'terminfo.c'; else $(CYGPATH_W) '$(srcdir)/terminfo.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-terminfo.Tpo" "$(DEPDIR)/libgrub_a-terminfo.Po"; else rm -f "$(DEPDIR)/libgrub_a-terminfo.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='terminfo.c' object='libgrub_a-terminfo.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-terminfo.obj `if test -f 'terminfo.c'; then $(CYGPATH_W) 'terminfo.c'; else $(CYGPATH_W) '$(srcdir)/terminfo.c'; fi` +- +-libgrub_a-tparm.o: tparm.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-tparm.o -MD -MP -MF "$(DEPDIR)/libgrub_a-tparm.Tpo" -c -o libgrub_a-tparm.o `test -f 'tparm.c' || echo '$(srcdir)/'`tparm.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-tparm.Tpo" "$(DEPDIR)/libgrub_a-tparm.Po"; else rm -f "$(DEPDIR)/libgrub_a-tparm.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tparm.c' object='libgrub_a-tparm.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-tparm.o `test -f 'tparm.c' || echo '$(srcdir)/'`tparm.c +- +-libgrub_a-tparm.obj: tparm.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-tparm.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-tparm.Tpo" -c -o libgrub_a-tparm.obj `if test -f 'tparm.c'; then $(CYGPATH_W) 'tparm.c'; else $(CYGPATH_W) '$(srcdir)/tparm.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-tparm.Tpo" "$(DEPDIR)/libgrub_a-tparm.Po"; else rm -f "$(DEPDIR)/libgrub_a-tparm.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tparm.c' object='libgrub_a-tparm.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-tparm.obj `if test -f 'tparm.c'; then $(CYGPATH_W) 'tparm.c'; else $(CYGPATH_W) '$(srcdir)/tparm.c'; fi` +- +-diskless_exec-bios.o: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-bios.o -MD -MP -MF "$(DEPDIR)/diskless_exec-bios.Tpo" -c -o diskless_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-bios.Tpo" "$(DEPDIR)/diskless_exec-bios.Po"; else rm -f "$(DEPDIR)/diskless_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='diskless_exec-bios.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c +- +-diskless_exec-bios.obj: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-bios.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-bios.Tpo" -c -o diskless_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-bios.Tpo" "$(DEPDIR)/diskless_exec-bios.Po"; else rm -f "$(DEPDIR)/diskless_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='diskless_exec-bios.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi` +- +-diskless_exec-boot.o: boot.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-boot.o -MD -MP -MF "$(DEPDIR)/diskless_exec-boot.Tpo" -c -o diskless_exec-boot.o `test -f 'boot.c' || echo '$(srcdir)/'`boot.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-boot.Tpo" "$(DEPDIR)/diskless_exec-boot.Po"; else rm -f "$(DEPDIR)/diskless_exec-boot.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='boot.c' object='diskless_exec-boot.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-boot.o `test -f 'boot.c' || echo '$(srcdir)/'`boot.c +- +-diskless_exec-boot.obj: boot.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-boot.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-boot.Tpo" -c -o diskless_exec-boot.obj `if test -f 'boot.c'; then $(CYGPATH_W) 'boot.c'; else $(CYGPATH_W) '$(srcdir)/boot.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-boot.Tpo" "$(DEPDIR)/diskless_exec-boot.Po"; else rm -f "$(DEPDIR)/diskless_exec-boot.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='boot.c' object='diskless_exec-boot.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-boot.obj `if test -f 'boot.c'; then $(CYGPATH_W) 'boot.c'; else $(CYGPATH_W) '$(srcdir)/boot.c'; fi` +- +-diskless_exec-builtins.o: builtins.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-builtins.o -MD -MP -MF "$(DEPDIR)/diskless_exec-builtins.Tpo" -c -o diskless_exec-builtins.o `test -f 'builtins.c' || echo '$(srcdir)/'`builtins.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-builtins.Tpo" "$(DEPDIR)/diskless_exec-builtins.Po"; else rm -f "$(DEPDIR)/diskless_exec-builtins.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='builtins.c' object='diskless_exec-builtins.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-builtins.o `test -f 'builtins.c' || echo '$(srcdir)/'`builtins.c +- +-diskless_exec-builtins.obj: builtins.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-builtins.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-builtins.Tpo" -c -o diskless_exec-builtins.obj `if test -f 'builtins.c'; then $(CYGPATH_W) 'builtins.c'; else $(CYGPATH_W) '$(srcdir)/builtins.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-builtins.Tpo" "$(DEPDIR)/diskless_exec-builtins.Po"; else rm -f "$(DEPDIR)/diskless_exec-builtins.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='builtins.c' object='diskless_exec-builtins.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-builtins.obj `if test -f 'builtins.c'; then $(CYGPATH_W) 'builtins.c'; else $(CYGPATH_W) '$(srcdir)/builtins.c'; fi` +- +-diskless_exec-char_io.o: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-char_io.o -MD -MP -MF "$(DEPDIR)/diskless_exec-char_io.Tpo" -c -o diskless_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-char_io.Tpo" "$(DEPDIR)/diskless_exec-char_io.Po"; else rm -f "$(DEPDIR)/diskless_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='diskless_exec-char_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c +- +-diskless_exec-char_io.obj: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-char_io.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-char_io.Tpo" -c -o diskless_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-char_io.Tpo" "$(DEPDIR)/diskless_exec-char_io.Po"; else rm -f "$(DEPDIR)/diskless_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='diskless_exec-char_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi` +- +-diskless_exec-cmdline.o: cmdline.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-cmdline.o -MD -MP -MF "$(DEPDIR)/diskless_exec-cmdline.Tpo" -c -o diskless_exec-cmdline.o `test -f 'cmdline.c' || echo '$(srcdir)/'`cmdline.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-cmdline.Tpo" "$(DEPDIR)/diskless_exec-cmdline.Po"; else rm -f "$(DEPDIR)/diskless_exec-cmdline.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cmdline.c' object='diskless_exec-cmdline.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-cmdline.o `test -f 'cmdline.c' || echo '$(srcdir)/'`cmdline.c +- +-diskless_exec-cmdline.obj: cmdline.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-cmdline.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-cmdline.Tpo" -c -o diskless_exec-cmdline.obj `if test -f 'cmdline.c'; then $(CYGPATH_W) 'cmdline.c'; else $(CYGPATH_W) '$(srcdir)/cmdline.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-cmdline.Tpo" "$(DEPDIR)/diskless_exec-cmdline.Po"; else rm -f "$(DEPDIR)/diskless_exec-cmdline.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cmdline.c' object='diskless_exec-cmdline.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-cmdline.obj `if test -f 'cmdline.c'; then $(CYGPATH_W) 'cmdline.c'; else $(CYGPATH_W) '$(srcdir)/cmdline.c'; fi` +- +-diskless_exec-common.o: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-common.o -MD -MP -MF "$(DEPDIR)/diskless_exec-common.Tpo" -c -o diskless_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-common.Tpo" "$(DEPDIR)/diskless_exec-common.Po"; else rm -f "$(DEPDIR)/diskless_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='diskless_exec-common.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c +- +-diskless_exec-common.obj: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-common.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-common.Tpo" -c -o diskless_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-common.Tpo" "$(DEPDIR)/diskless_exec-common.Po"; else rm -f "$(DEPDIR)/diskless_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='diskless_exec-common.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi` +- +-diskless_exec-console.o: console.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-console.o -MD -MP -MF "$(DEPDIR)/diskless_exec-console.Tpo" -c -o diskless_exec-console.o `test -f 'console.c' || echo '$(srcdir)/'`console.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-console.Tpo" "$(DEPDIR)/diskless_exec-console.Po"; else rm -f "$(DEPDIR)/diskless_exec-console.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='console.c' object='diskless_exec-console.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-console.o `test -f 'console.c' || echo '$(srcdir)/'`console.c +- +-diskless_exec-console.obj: console.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-console.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-console.Tpo" -c -o diskless_exec-console.obj `if test -f 'console.c'; then $(CYGPATH_W) 'console.c'; else $(CYGPATH_W) '$(srcdir)/console.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-console.Tpo" "$(DEPDIR)/diskless_exec-console.Po"; else rm -f "$(DEPDIR)/diskless_exec-console.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='console.c' object='diskless_exec-console.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-console.obj `if test -f 'console.c'; then $(CYGPATH_W) 'console.c'; else $(CYGPATH_W) '$(srcdir)/console.c'; fi` +- +-diskless_exec-disk_io.o: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-disk_io.o -MD -MP -MF "$(DEPDIR)/diskless_exec-disk_io.Tpo" -c -o diskless_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-disk_io.Tpo" "$(DEPDIR)/diskless_exec-disk_io.Po"; else rm -f "$(DEPDIR)/diskless_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='diskless_exec-disk_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c +- +-diskless_exec-disk_io.obj: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-disk_io.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-disk_io.Tpo" -c -o diskless_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-disk_io.Tpo" "$(DEPDIR)/diskless_exec-disk_io.Po"; else rm -f "$(DEPDIR)/diskless_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='diskless_exec-disk_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi` +- +-diskless_exec-fsys_ext2fs.o: fsys_ext2fs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_ext2fs.o -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_ext2fs.Tpo" -c -o diskless_exec-fsys_ext2fs.o `test -f 'fsys_ext2fs.c' || echo '$(srcdir)/'`fsys_ext2fs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_ext2fs.Tpo" "$(DEPDIR)/diskless_exec-fsys_ext2fs.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_ext2fs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ext2fs.c' object='diskless_exec-fsys_ext2fs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_ext2fs.o `test -f 'fsys_ext2fs.c' || echo '$(srcdir)/'`fsys_ext2fs.c +- +-diskless_exec-fsys_ext2fs.obj: fsys_ext2fs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_ext2fs.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_ext2fs.Tpo" -c -o diskless_exec-fsys_ext2fs.obj `if test -f 'fsys_ext2fs.c'; then $(CYGPATH_W) 'fsys_ext2fs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ext2fs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_ext2fs.Tpo" "$(DEPDIR)/diskless_exec-fsys_ext2fs.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_ext2fs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ext2fs.c' object='diskless_exec-fsys_ext2fs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_ext2fs.obj `if test -f 'fsys_ext2fs.c'; then $(CYGPATH_W) 'fsys_ext2fs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ext2fs.c'; fi` +- +-diskless_exec-fsys_fat.o: fsys_fat.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_fat.o -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_fat.Tpo" -c -o diskless_exec-fsys_fat.o `test -f 'fsys_fat.c' || echo '$(srcdir)/'`fsys_fat.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_fat.Tpo" "$(DEPDIR)/diskless_exec-fsys_fat.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_fat.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_fat.c' object='diskless_exec-fsys_fat.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_fat.o `test -f 'fsys_fat.c' || echo '$(srcdir)/'`fsys_fat.c +- +-diskless_exec-fsys_fat.obj: fsys_fat.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_fat.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_fat.Tpo" -c -o diskless_exec-fsys_fat.obj `if test -f 'fsys_fat.c'; then $(CYGPATH_W) 'fsys_fat.c'; else $(CYGPATH_W) '$(srcdir)/fsys_fat.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_fat.Tpo" "$(DEPDIR)/diskless_exec-fsys_fat.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_fat.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_fat.c' object='diskless_exec-fsys_fat.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_fat.obj `if test -f 'fsys_fat.c'; then $(CYGPATH_W) 'fsys_fat.c'; else $(CYGPATH_W) '$(srcdir)/fsys_fat.c'; fi` +- +-diskless_exec-fsys_ffs.o: fsys_ffs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_ffs.o -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_ffs.Tpo" -c -o diskless_exec-fsys_ffs.o `test -f 'fsys_ffs.c' || echo '$(srcdir)/'`fsys_ffs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_ffs.Tpo" "$(DEPDIR)/diskless_exec-fsys_ffs.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_ffs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ffs.c' object='diskless_exec-fsys_ffs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_ffs.o `test -f 'fsys_ffs.c' || echo '$(srcdir)/'`fsys_ffs.c +- +-diskless_exec-fsys_ffs.obj: fsys_ffs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_ffs.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_ffs.Tpo" -c -o diskless_exec-fsys_ffs.obj `if test -f 'fsys_ffs.c'; then $(CYGPATH_W) 'fsys_ffs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ffs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_ffs.Tpo" "$(DEPDIR)/diskless_exec-fsys_ffs.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_ffs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ffs.c' object='diskless_exec-fsys_ffs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_ffs.obj `if test -f 'fsys_ffs.c'; then $(CYGPATH_W) 'fsys_ffs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ffs.c'; fi` +- +-diskless_exec-fsys_iso9660.o: fsys_iso9660.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_iso9660.o -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_iso9660.Tpo" -c -o diskless_exec-fsys_iso9660.o `test -f 'fsys_iso9660.c' || echo '$(srcdir)/'`fsys_iso9660.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_iso9660.Tpo" "$(DEPDIR)/diskless_exec-fsys_iso9660.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_iso9660.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_iso9660.c' object='diskless_exec-fsys_iso9660.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_iso9660.o `test -f 'fsys_iso9660.c' || echo '$(srcdir)/'`fsys_iso9660.c +- +-diskless_exec-fsys_iso9660.obj: fsys_iso9660.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_iso9660.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_iso9660.Tpo" -c -o diskless_exec-fsys_iso9660.obj `if test -f 'fsys_iso9660.c'; then $(CYGPATH_W) 'fsys_iso9660.c'; else $(CYGPATH_W) '$(srcdir)/fsys_iso9660.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_iso9660.Tpo" "$(DEPDIR)/diskless_exec-fsys_iso9660.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_iso9660.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_iso9660.c' object='diskless_exec-fsys_iso9660.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_iso9660.obj `if test -f 'fsys_iso9660.c'; then $(CYGPATH_W) 'fsys_iso9660.c'; else $(CYGPATH_W) '$(srcdir)/fsys_iso9660.c'; fi` +- +-diskless_exec-fsys_jfs.o: fsys_jfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_jfs.o -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_jfs.Tpo" -c -o diskless_exec-fsys_jfs.o `test -f 'fsys_jfs.c' || echo '$(srcdir)/'`fsys_jfs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_jfs.Tpo" "$(DEPDIR)/diskless_exec-fsys_jfs.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_jfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_jfs.c' object='diskless_exec-fsys_jfs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_jfs.o `test -f 'fsys_jfs.c' || echo '$(srcdir)/'`fsys_jfs.c +- +-diskless_exec-fsys_jfs.obj: fsys_jfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_jfs.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_jfs.Tpo" -c -o diskless_exec-fsys_jfs.obj `if test -f 'fsys_jfs.c'; then $(CYGPATH_W) 'fsys_jfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_jfs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_jfs.Tpo" "$(DEPDIR)/diskless_exec-fsys_jfs.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_jfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_jfs.c' object='diskless_exec-fsys_jfs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_jfs.obj `if test -f 'fsys_jfs.c'; then $(CYGPATH_W) 'fsys_jfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_jfs.c'; fi` +- +-diskless_exec-fsys_minix.o: fsys_minix.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_minix.o -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_minix.Tpo" -c -o diskless_exec-fsys_minix.o `test -f 'fsys_minix.c' || echo '$(srcdir)/'`fsys_minix.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_minix.Tpo" "$(DEPDIR)/diskless_exec-fsys_minix.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_minix.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_minix.c' object='diskless_exec-fsys_minix.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_minix.o `test -f 'fsys_minix.c' || echo '$(srcdir)/'`fsys_minix.c +- +-diskless_exec-fsys_minix.obj: fsys_minix.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_minix.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_minix.Tpo" -c -o diskless_exec-fsys_minix.obj `if test -f 'fsys_minix.c'; then $(CYGPATH_W) 'fsys_minix.c'; else $(CYGPATH_W) '$(srcdir)/fsys_minix.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_minix.Tpo" "$(DEPDIR)/diskless_exec-fsys_minix.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_minix.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_minix.c' object='diskless_exec-fsys_minix.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_minix.obj `if test -f 'fsys_minix.c'; then $(CYGPATH_W) 'fsys_minix.c'; else $(CYGPATH_W) '$(srcdir)/fsys_minix.c'; fi` +- +-diskless_exec-fsys_reiserfs.o: fsys_reiserfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_reiserfs.o -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_reiserfs.Tpo" -c -o diskless_exec-fsys_reiserfs.o `test -f 'fsys_reiserfs.c' || echo '$(srcdir)/'`fsys_reiserfs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_reiserfs.Tpo" "$(DEPDIR)/diskless_exec-fsys_reiserfs.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_reiserfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_reiserfs.c' object='diskless_exec-fsys_reiserfs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_reiserfs.o `test -f 'fsys_reiserfs.c' || echo '$(srcdir)/'`fsys_reiserfs.c +- +-diskless_exec-fsys_reiserfs.obj: fsys_reiserfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_reiserfs.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_reiserfs.Tpo" -c -o diskless_exec-fsys_reiserfs.obj `if test -f 'fsys_reiserfs.c'; then $(CYGPATH_W) 'fsys_reiserfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_reiserfs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_reiserfs.Tpo" "$(DEPDIR)/diskless_exec-fsys_reiserfs.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_reiserfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_reiserfs.c' object='diskless_exec-fsys_reiserfs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_reiserfs.obj `if test -f 'fsys_reiserfs.c'; then $(CYGPATH_W) 'fsys_reiserfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_reiserfs.c'; fi` +- +-diskless_exec-fsys_ufs2.o: fsys_ufs2.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_ufs2.o -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_ufs2.Tpo" -c -o diskless_exec-fsys_ufs2.o `test -f 'fsys_ufs2.c' || echo '$(srcdir)/'`fsys_ufs2.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_ufs2.Tpo" "$(DEPDIR)/diskless_exec-fsys_ufs2.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_ufs2.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ufs2.c' object='diskless_exec-fsys_ufs2.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_ufs2.o `test -f 'fsys_ufs2.c' || echo '$(srcdir)/'`fsys_ufs2.c +- +-diskless_exec-fsys_ufs2.obj: fsys_ufs2.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_ufs2.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_ufs2.Tpo" -c -o diskless_exec-fsys_ufs2.obj `if test -f 'fsys_ufs2.c'; then $(CYGPATH_W) 'fsys_ufs2.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ufs2.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_ufs2.Tpo" "$(DEPDIR)/diskless_exec-fsys_ufs2.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_ufs2.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ufs2.c' object='diskless_exec-fsys_ufs2.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_ufs2.obj `if test -f 'fsys_ufs2.c'; then $(CYGPATH_W) 'fsys_ufs2.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ufs2.c'; fi` +- +-diskless_exec-fsys_vstafs.o: fsys_vstafs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_vstafs.o -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_vstafs.Tpo" -c -o diskless_exec-fsys_vstafs.o `test -f 'fsys_vstafs.c' || echo '$(srcdir)/'`fsys_vstafs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_vstafs.Tpo" "$(DEPDIR)/diskless_exec-fsys_vstafs.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_vstafs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_vstafs.c' object='diskless_exec-fsys_vstafs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_vstafs.o `test -f 'fsys_vstafs.c' || echo '$(srcdir)/'`fsys_vstafs.c +- +-diskless_exec-fsys_vstafs.obj: fsys_vstafs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_vstafs.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_vstafs.Tpo" -c -o diskless_exec-fsys_vstafs.obj `if test -f 'fsys_vstafs.c'; then $(CYGPATH_W) 'fsys_vstafs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_vstafs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_vstafs.Tpo" "$(DEPDIR)/diskless_exec-fsys_vstafs.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_vstafs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_vstafs.c' object='diskless_exec-fsys_vstafs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_vstafs.obj `if test -f 'fsys_vstafs.c'; then $(CYGPATH_W) 'fsys_vstafs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_vstafs.c'; fi` +- +-diskless_exec-fsys_xfs.o: fsys_xfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_xfs.o -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_xfs.Tpo" -c -o diskless_exec-fsys_xfs.o `test -f 'fsys_xfs.c' || echo '$(srcdir)/'`fsys_xfs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_xfs.Tpo" "$(DEPDIR)/diskless_exec-fsys_xfs.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_xfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_xfs.c' object='diskless_exec-fsys_xfs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_xfs.o `test -f 'fsys_xfs.c' || echo '$(srcdir)/'`fsys_xfs.c +- +-diskless_exec-fsys_xfs.obj: fsys_xfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-fsys_xfs.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-fsys_xfs.Tpo" -c -o diskless_exec-fsys_xfs.obj `if test -f 'fsys_xfs.c'; then $(CYGPATH_W) 'fsys_xfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_xfs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-fsys_xfs.Tpo" "$(DEPDIR)/diskless_exec-fsys_xfs.Po"; else rm -f "$(DEPDIR)/diskless_exec-fsys_xfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_xfs.c' object='diskless_exec-fsys_xfs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-fsys_xfs.obj `if test -f 'fsys_xfs.c'; then $(CYGPATH_W) 'fsys_xfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_xfs.c'; fi` +- +-diskless_exec-gunzip.o: gunzip.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-gunzip.o -MD -MP -MF "$(DEPDIR)/diskless_exec-gunzip.Tpo" -c -o diskless_exec-gunzip.o `test -f 'gunzip.c' || echo '$(srcdir)/'`gunzip.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-gunzip.Tpo" "$(DEPDIR)/diskless_exec-gunzip.Po"; else rm -f "$(DEPDIR)/diskless_exec-gunzip.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gunzip.c' object='diskless_exec-gunzip.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-gunzip.o `test -f 'gunzip.c' || echo '$(srcdir)/'`gunzip.c +- +-diskless_exec-gunzip.obj: gunzip.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-gunzip.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-gunzip.Tpo" -c -o diskless_exec-gunzip.obj `if test -f 'gunzip.c'; then $(CYGPATH_W) 'gunzip.c'; else $(CYGPATH_W) '$(srcdir)/gunzip.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-gunzip.Tpo" "$(DEPDIR)/diskless_exec-gunzip.Po"; else rm -f "$(DEPDIR)/diskless_exec-gunzip.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gunzip.c' object='diskless_exec-gunzip.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-gunzip.obj `if test -f 'gunzip.c'; then $(CYGPATH_W) 'gunzip.c'; else $(CYGPATH_W) '$(srcdir)/gunzip.c'; fi` +- +-diskless_exec-hercules.o: hercules.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-hercules.o -MD -MP -MF "$(DEPDIR)/diskless_exec-hercules.Tpo" -c -o diskless_exec-hercules.o `test -f 'hercules.c' || echo '$(srcdir)/'`hercules.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-hercules.Tpo" "$(DEPDIR)/diskless_exec-hercules.Po"; else rm -f "$(DEPDIR)/diskless_exec-hercules.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='hercules.c' object='diskless_exec-hercules.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-hercules.o `test -f 'hercules.c' || echo '$(srcdir)/'`hercules.c +- +-diskless_exec-hercules.obj: hercules.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-hercules.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-hercules.Tpo" -c -o diskless_exec-hercules.obj `if test -f 'hercules.c'; then $(CYGPATH_W) 'hercules.c'; else $(CYGPATH_W) '$(srcdir)/hercules.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-hercules.Tpo" "$(DEPDIR)/diskless_exec-hercules.Po"; else rm -f "$(DEPDIR)/diskless_exec-hercules.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='hercules.c' object='diskless_exec-hercules.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-hercules.obj `if test -f 'hercules.c'; then $(CYGPATH_W) 'hercules.c'; else $(CYGPATH_W) '$(srcdir)/hercules.c'; fi` +- +-diskless_exec-md5.o: md5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-md5.o -MD -MP -MF "$(DEPDIR)/diskless_exec-md5.Tpo" -c -o diskless_exec-md5.o `test -f 'md5.c' || echo '$(srcdir)/'`md5.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-md5.Tpo" "$(DEPDIR)/diskless_exec-md5.Po"; else rm -f "$(DEPDIR)/diskless_exec-md5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='md5.c' object='diskless_exec-md5.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-md5.o `test -f 'md5.c' || echo '$(srcdir)/'`md5.c +- +-diskless_exec-md5.obj: md5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-md5.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-md5.Tpo" -c -o diskless_exec-md5.obj `if test -f 'md5.c'; then $(CYGPATH_W) 'md5.c'; else $(CYGPATH_W) '$(srcdir)/md5.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-md5.Tpo" "$(DEPDIR)/diskless_exec-md5.Po"; else rm -f "$(DEPDIR)/diskless_exec-md5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='md5.c' object='diskless_exec-md5.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-md5.obj `if test -f 'md5.c'; then $(CYGPATH_W) 'md5.c'; else $(CYGPATH_W) '$(srcdir)/md5.c'; fi` +- +-diskless_exec-serial.o: serial.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-serial.o -MD -MP -MF "$(DEPDIR)/diskless_exec-serial.Tpo" -c -o diskless_exec-serial.o `test -f 'serial.c' || echo '$(srcdir)/'`serial.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-serial.Tpo" "$(DEPDIR)/diskless_exec-serial.Po"; else rm -f "$(DEPDIR)/diskless_exec-serial.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='serial.c' object='diskless_exec-serial.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-serial.o `test -f 'serial.c' || echo '$(srcdir)/'`serial.c +- +-diskless_exec-serial.obj: serial.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-serial.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-serial.Tpo" -c -o diskless_exec-serial.obj `if test -f 'serial.c'; then $(CYGPATH_W) 'serial.c'; else $(CYGPATH_W) '$(srcdir)/serial.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-serial.Tpo" "$(DEPDIR)/diskless_exec-serial.Po"; else rm -f "$(DEPDIR)/diskless_exec-serial.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='serial.c' object='diskless_exec-serial.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-serial.obj `if test -f 'serial.c'; then $(CYGPATH_W) 'serial.c'; else $(CYGPATH_W) '$(srcdir)/serial.c'; fi` +- +-diskless_exec-smp-imps.o: smp-imps.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-smp-imps.o -MD -MP -MF "$(DEPDIR)/diskless_exec-smp-imps.Tpo" -c -o diskless_exec-smp-imps.o `test -f 'smp-imps.c' || echo '$(srcdir)/'`smp-imps.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-smp-imps.Tpo" "$(DEPDIR)/diskless_exec-smp-imps.Po"; else rm -f "$(DEPDIR)/diskless_exec-smp-imps.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='smp-imps.c' object='diskless_exec-smp-imps.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-smp-imps.o `test -f 'smp-imps.c' || echo '$(srcdir)/'`smp-imps.c +- +-diskless_exec-smp-imps.obj: smp-imps.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-smp-imps.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-smp-imps.Tpo" -c -o diskless_exec-smp-imps.obj `if test -f 'smp-imps.c'; then $(CYGPATH_W) 'smp-imps.c'; else $(CYGPATH_W) '$(srcdir)/smp-imps.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-smp-imps.Tpo" "$(DEPDIR)/diskless_exec-smp-imps.Po"; else rm -f "$(DEPDIR)/diskless_exec-smp-imps.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='smp-imps.c' object='diskless_exec-smp-imps.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-smp-imps.obj `if test -f 'smp-imps.c'; then $(CYGPATH_W) 'smp-imps.c'; else $(CYGPATH_W) '$(srcdir)/smp-imps.c'; fi` +- +-diskless_exec-stage2.o: stage2.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-stage2.o -MD -MP -MF "$(DEPDIR)/diskless_exec-stage2.Tpo" -c -o diskless_exec-stage2.o `test -f 'stage2.c' || echo '$(srcdir)/'`stage2.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-stage2.Tpo" "$(DEPDIR)/diskless_exec-stage2.Po"; else rm -f "$(DEPDIR)/diskless_exec-stage2.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage2.c' object='diskless_exec-stage2.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-stage2.o `test -f 'stage2.c' || echo '$(srcdir)/'`stage2.c +- +-diskless_exec-stage2.obj: stage2.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-stage2.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-stage2.Tpo" -c -o diskless_exec-stage2.obj `if test -f 'stage2.c'; then $(CYGPATH_W) 'stage2.c'; else $(CYGPATH_W) '$(srcdir)/stage2.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-stage2.Tpo" "$(DEPDIR)/diskless_exec-stage2.Po"; else rm -f "$(DEPDIR)/diskless_exec-stage2.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage2.c' object='diskless_exec-stage2.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-stage2.obj `if test -f 'stage2.c'; then $(CYGPATH_W) 'stage2.c'; else $(CYGPATH_W) '$(srcdir)/stage2.c'; fi` +- +-diskless_exec-terminfo.o: terminfo.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-terminfo.o -MD -MP -MF "$(DEPDIR)/diskless_exec-terminfo.Tpo" -c -o diskless_exec-terminfo.o `test -f 'terminfo.c' || echo '$(srcdir)/'`terminfo.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-terminfo.Tpo" "$(DEPDIR)/diskless_exec-terminfo.Po"; else rm -f "$(DEPDIR)/diskless_exec-terminfo.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='terminfo.c' object='diskless_exec-terminfo.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-terminfo.o `test -f 'terminfo.c' || echo '$(srcdir)/'`terminfo.c +- +-diskless_exec-terminfo.obj: terminfo.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-terminfo.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-terminfo.Tpo" -c -o diskless_exec-terminfo.obj `if test -f 'terminfo.c'; then $(CYGPATH_W) 'terminfo.c'; else $(CYGPATH_W) '$(srcdir)/terminfo.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-terminfo.Tpo" "$(DEPDIR)/diskless_exec-terminfo.Po"; else rm -f "$(DEPDIR)/diskless_exec-terminfo.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='terminfo.c' object='diskless_exec-terminfo.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-terminfo.obj `if test -f 'terminfo.c'; then $(CYGPATH_W) 'terminfo.c'; else $(CYGPATH_W) '$(srcdir)/terminfo.c'; fi` +- +-diskless_exec-tparm.o: tparm.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-tparm.o -MD -MP -MF "$(DEPDIR)/diskless_exec-tparm.Tpo" -c -o diskless_exec-tparm.o `test -f 'tparm.c' || echo '$(srcdir)/'`tparm.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-tparm.Tpo" "$(DEPDIR)/diskless_exec-tparm.Po"; else rm -f "$(DEPDIR)/diskless_exec-tparm.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tparm.c' object='diskless_exec-tparm.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-tparm.o `test -f 'tparm.c' || echo '$(srcdir)/'`tparm.c +- +-diskless_exec-tparm.obj: tparm.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-tparm.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-tparm.Tpo" -c -o diskless_exec-tparm.obj `if test -f 'tparm.c'; then $(CYGPATH_W) 'tparm.c'; else $(CYGPATH_W) '$(srcdir)/tparm.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-tparm.Tpo" "$(DEPDIR)/diskless_exec-tparm.Po"; else rm -f "$(DEPDIR)/diskless_exec-tparm.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tparm.c' object='diskless_exec-tparm.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-tparm.obj `if test -f 'tparm.c'; then $(CYGPATH_W) 'tparm.c'; else $(CYGPATH_W) '$(srcdir)/tparm.c'; fi` +- +-e2fs_stage1_5_exec-common.o: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT e2fs_stage1_5_exec-common.o -MD -MP -MF "$(DEPDIR)/e2fs_stage1_5_exec-common.Tpo" -c -o e2fs_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/e2fs_stage1_5_exec-common.Tpo" "$(DEPDIR)/e2fs_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/e2fs_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='e2fs_stage1_5_exec-common.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o e2fs_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c +- +-e2fs_stage1_5_exec-common.obj: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT e2fs_stage1_5_exec-common.obj -MD -MP -MF "$(DEPDIR)/e2fs_stage1_5_exec-common.Tpo" -c -o e2fs_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/e2fs_stage1_5_exec-common.Tpo" "$(DEPDIR)/e2fs_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/e2fs_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='e2fs_stage1_5_exec-common.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o e2fs_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi` +- +-e2fs_stage1_5_exec-char_io.o: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT e2fs_stage1_5_exec-char_io.o -MD -MP -MF "$(DEPDIR)/e2fs_stage1_5_exec-char_io.Tpo" -c -o e2fs_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/e2fs_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/e2fs_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/e2fs_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='e2fs_stage1_5_exec-char_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o e2fs_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c +- +-e2fs_stage1_5_exec-char_io.obj: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT e2fs_stage1_5_exec-char_io.obj -MD -MP -MF "$(DEPDIR)/e2fs_stage1_5_exec-char_io.Tpo" -c -o e2fs_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/e2fs_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/e2fs_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/e2fs_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='e2fs_stage1_5_exec-char_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o e2fs_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi` +- +-e2fs_stage1_5_exec-disk_io.o: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT e2fs_stage1_5_exec-disk_io.o -MD -MP -MF "$(DEPDIR)/e2fs_stage1_5_exec-disk_io.Tpo" -c -o e2fs_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/e2fs_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/e2fs_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/e2fs_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='e2fs_stage1_5_exec-disk_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o e2fs_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c +- +-e2fs_stage1_5_exec-disk_io.obj: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT e2fs_stage1_5_exec-disk_io.obj -MD -MP -MF "$(DEPDIR)/e2fs_stage1_5_exec-disk_io.Tpo" -c -o e2fs_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/e2fs_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/e2fs_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/e2fs_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='e2fs_stage1_5_exec-disk_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o e2fs_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi` +- +-e2fs_stage1_5_exec-stage1_5.o: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT e2fs_stage1_5_exec-stage1_5.o -MD -MP -MF "$(DEPDIR)/e2fs_stage1_5_exec-stage1_5.Tpo" -c -o e2fs_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/e2fs_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/e2fs_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/e2fs_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='e2fs_stage1_5_exec-stage1_5.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o e2fs_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c +- +-e2fs_stage1_5_exec-stage1_5.obj: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT e2fs_stage1_5_exec-stage1_5.obj -MD -MP -MF "$(DEPDIR)/e2fs_stage1_5_exec-stage1_5.Tpo" -c -o e2fs_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/e2fs_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/e2fs_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/e2fs_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='e2fs_stage1_5_exec-stage1_5.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o e2fs_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi` +- +-e2fs_stage1_5_exec-fsys_ext2fs.o: fsys_ext2fs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT e2fs_stage1_5_exec-fsys_ext2fs.o -MD -MP -MF "$(DEPDIR)/e2fs_stage1_5_exec-fsys_ext2fs.Tpo" -c -o e2fs_stage1_5_exec-fsys_ext2fs.o `test -f 'fsys_ext2fs.c' || echo '$(srcdir)/'`fsys_ext2fs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/e2fs_stage1_5_exec-fsys_ext2fs.Tpo" "$(DEPDIR)/e2fs_stage1_5_exec-fsys_ext2fs.Po"; else rm -f "$(DEPDIR)/e2fs_stage1_5_exec-fsys_ext2fs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ext2fs.c' object='e2fs_stage1_5_exec-fsys_ext2fs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o e2fs_stage1_5_exec-fsys_ext2fs.o `test -f 'fsys_ext2fs.c' || echo '$(srcdir)/'`fsys_ext2fs.c +- +-e2fs_stage1_5_exec-fsys_ext2fs.obj: fsys_ext2fs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT e2fs_stage1_5_exec-fsys_ext2fs.obj -MD -MP -MF "$(DEPDIR)/e2fs_stage1_5_exec-fsys_ext2fs.Tpo" -c -o e2fs_stage1_5_exec-fsys_ext2fs.obj `if test -f 'fsys_ext2fs.c'; then $(CYGPATH_W) 'fsys_ext2fs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ext2fs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/e2fs_stage1_5_exec-fsys_ext2fs.Tpo" "$(DEPDIR)/e2fs_stage1_5_exec-fsys_ext2fs.Po"; else rm -f "$(DEPDIR)/e2fs_stage1_5_exec-fsys_ext2fs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ext2fs.c' object='e2fs_stage1_5_exec-fsys_ext2fs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o e2fs_stage1_5_exec-fsys_ext2fs.obj `if test -f 'fsys_ext2fs.c'; then $(CYGPATH_W) 'fsys_ext2fs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ext2fs.c'; fi` +- +-e2fs_stage1_5_exec-bios.o: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT e2fs_stage1_5_exec-bios.o -MD -MP -MF "$(DEPDIR)/e2fs_stage1_5_exec-bios.Tpo" -c -o e2fs_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/e2fs_stage1_5_exec-bios.Tpo" "$(DEPDIR)/e2fs_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/e2fs_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='e2fs_stage1_5_exec-bios.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o e2fs_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c +- +-e2fs_stage1_5_exec-bios.obj: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT e2fs_stage1_5_exec-bios.obj -MD -MP -MF "$(DEPDIR)/e2fs_stage1_5_exec-bios.Tpo" -c -o e2fs_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/e2fs_stage1_5_exec-bios.Tpo" "$(DEPDIR)/e2fs_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/e2fs_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='e2fs_stage1_5_exec-bios.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o e2fs_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi` +- +-fat_stage1_5_exec-common.o: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -MT fat_stage1_5_exec-common.o -MD -MP -MF "$(DEPDIR)/fat_stage1_5_exec-common.Tpo" -c -o fat_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/fat_stage1_5_exec-common.Tpo" "$(DEPDIR)/fat_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/fat_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='fat_stage1_5_exec-common.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o fat_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c +- +-fat_stage1_5_exec-common.obj: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -MT fat_stage1_5_exec-common.obj -MD -MP -MF "$(DEPDIR)/fat_stage1_5_exec-common.Tpo" -c -o fat_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/fat_stage1_5_exec-common.Tpo" "$(DEPDIR)/fat_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/fat_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='fat_stage1_5_exec-common.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o fat_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi` +- +-fat_stage1_5_exec-char_io.o: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -MT fat_stage1_5_exec-char_io.o -MD -MP -MF "$(DEPDIR)/fat_stage1_5_exec-char_io.Tpo" -c -o fat_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/fat_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/fat_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/fat_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='fat_stage1_5_exec-char_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o fat_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c +- +-fat_stage1_5_exec-char_io.obj: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -MT fat_stage1_5_exec-char_io.obj -MD -MP -MF "$(DEPDIR)/fat_stage1_5_exec-char_io.Tpo" -c -o fat_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/fat_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/fat_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/fat_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='fat_stage1_5_exec-char_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o fat_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi` +- +-fat_stage1_5_exec-disk_io.o: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -MT fat_stage1_5_exec-disk_io.o -MD -MP -MF "$(DEPDIR)/fat_stage1_5_exec-disk_io.Tpo" -c -o fat_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/fat_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/fat_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/fat_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='fat_stage1_5_exec-disk_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o fat_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c +- +-fat_stage1_5_exec-disk_io.obj: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -MT fat_stage1_5_exec-disk_io.obj -MD -MP -MF "$(DEPDIR)/fat_stage1_5_exec-disk_io.Tpo" -c -o fat_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/fat_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/fat_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/fat_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='fat_stage1_5_exec-disk_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o fat_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi` +- +-fat_stage1_5_exec-stage1_5.o: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -MT fat_stage1_5_exec-stage1_5.o -MD -MP -MF "$(DEPDIR)/fat_stage1_5_exec-stage1_5.Tpo" -c -o fat_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/fat_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/fat_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/fat_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='fat_stage1_5_exec-stage1_5.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o fat_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c +- +-fat_stage1_5_exec-stage1_5.obj: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -MT fat_stage1_5_exec-stage1_5.obj -MD -MP -MF "$(DEPDIR)/fat_stage1_5_exec-stage1_5.Tpo" -c -o fat_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/fat_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/fat_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/fat_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='fat_stage1_5_exec-stage1_5.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o fat_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi` +- +-fat_stage1_5_exec-fsys_fat.o: fsys_fat.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -MT fat_stage1_5_exec-fsys_fat.o -MD -MP -MF "$(DEPDIR)/fat_stage1_5_exec-fsys_fat.Tpo" -c -o fat_stage1_5_exec-fsys_fat.o `test -f 'fsys_fat.c' || echo '$(srcdir)/'`fsys_fat.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/fat_stage1_5_exec-fsys_fat.Tpo" "$(DEPDIR)/fat_stage1_5_exec-fsys_fat.Po"; else rm -f "$(DEPDIR)/fat_stage1_5_exec-fsys_fat.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_fat.c' object='fat_stage1_5_exec-fsys_fat.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o fat_stage1_5_exec-fsys_fat.o `test -f 'fsys_fat.c' || echo '$(srcdir)/'`fsys_fat.c +- +-fat_stage1_5_exec-fsys_fat.obj: fsys_fat.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -MT fat_stage1_5_exec-fsys_fat.obj -MD -MP -MF "$(DEPDIR)/fat_stage1_5_exec-fsys_fat.Tpo" -c -o fat_stage1_5_exec-fsys_fat.obj `if test -f 'fsys_fat.c'; then $(CYGPATH_W) 'fsys_fat.c'; else $(CYGPATH_W) '$(srcdir)/fsys_fat.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/fat_stage1_5_exec-fsys_fat.Tpo" "$(DEPDIR)/fat_stage1_5_exec-fsys_fat.Po"; else rm -f "$(DEPDIR)/fat_stage1_5_exec-fsys_fat.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_fat.c' object='fat_stage1_5_exec-fsys_fat.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o fat_stage1_5_exec-fsys_fat.obj `if test -f 'fsys_fat.c'; then $(CYGPATH_W) 'fsys_fat.c'; else $(CYGPATH_W) '$(srcdir)/fsys_fat.c'; fi` +- +-fat_stage1_5_exec-bios.o: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -MT fat_stage1_5_exec-bios.o -MD -MP -MF "$(DEPDIR)/fat_stage1_5_exec-bios.Tpo" -c -o fat_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/fat_stage1_5_exec-bios.Tpo" "$(DEPDIR)/fat_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/fat_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='fat_stage1_5_exec-bios.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o fat_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c +- +-fat_stage1_5_exec-bios.obj: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -MT fat_stage1_5_exec-bios.obj -MD -MP -MF "$(DEPDIR)/fat_stage1_5_exec-bios.Tpo" -c -o fat_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/fat_stage1_5_exec-bios.Tpo" "$(DEPDIR)/fat_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/fat_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='fat_stage1_5_exec-bios.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fat_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o fat_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi` +- +-ffs_stage1_5_exec-common.o: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ffs_stage1_5_exec-common.o -MD -MP -MF "$(DEPDIR)/ffs_stage1_5_exec-common.Tpo" -c -o ffs_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ffs_stage1_5_exec-common.Tpo" "$(DEPDIR)/ffs_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/ffs_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='ffs_stage1_5_exec-common.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ffs_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c +- +-ffs_stage1_5_exec-common.obj: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ffs_stage1_5_exec-common.obj -MD -MP -MF "$(DEPDIR)/ffs_stage1_5_exec-common.Tpo" -c -o ffs_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ffs_stage1_5_exec-common.Tpo" "$(DEPDIR)/ffs_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/ffs_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='ffs_stage1_5_exec-common.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ffs_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi` +- +-ffs_stage1_5_exec-char_io.o: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ffs_stage1_5_exec-char_io.o -MD -MP -MF "$(DEPDIR)/ffs_stage1_5_exec-char_io.Tpo" -c -o ffs_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ffs_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/ffs_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/ffs_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='ffs_stage1_5_exec-char_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ffs_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c +- +-ffs_stage1_5_exec-char_io.obj: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ffs_stage1_5_exec-char_io.obj -MD -MP -MF "$(DEPDIR)/ffs_stage1_5_exec-char_io.Tpo" -c -o ffs_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ffs_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/ffs_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/ffs_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='ffs_stage1_5_exec-char_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ffs_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi` +- +-ffs_stage1_5_exec-disk_io.o: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ffs_stage1_5_exec-disk_io.o -MD -MP -MF "$(DEPDIR)/ffs_stage1_5_exec-disk_io.Tpo" -c -o ffs_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ffs_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/ffs_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/ffs_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='ffs_stage1_5_exec-disk_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ffs_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c +- +-ffs_stage1_5_exec-disk_io.obj: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ffs_stage1_5_exec-disk_io.obj -MD -MP -MF "$(DEPDIR)/ffs_stage1_5_exec-disk_io.Tpo" -c -o ffs_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ffs_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/ffs_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/ffs_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='ffs_stage1_5_exec-disk_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ffs_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi` +- +-ffs_stage1_5_exec-stage1_5.o: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ffs_stage1_5_exec-stage1_5.o -MD -MP -MF "$(DEPDIR)/ffs_stage1_5_exec-stage1_5.Tpo" -c -o ffs_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ffs_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/ffs_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/ffs_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='ffs_stage1_5_exec-stage1_5.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ffs_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c +- +-ffs_stage1_5_exec-stage1_5.obj: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ffs_stage1_5_exec-stage1_5.obj -MD -MP -MF "$(DEPDIR)/ffs_stage1_5_exec-stage1_5.Tpo" -c -o ffs_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ffs_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/ffs_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/ffs_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='ffs_stage1_5_exec-stage1_5.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ffs_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi` +- +-ffs_stage1_5_exec-fsys_ffs.o: fsys_ffs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ffs_stage1_5_exec-fsys_ffs.o -MD -MP -MF "$(DEPDIR)/ffs_stage1_5_exec-fsys_ffs.Tpo" -c -o ffs_stage1_5_exec-fsys_ffs.o `test -f 'fsys_ffs.c' || echo '$(srcdir)/'`fsys_ffs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ffs_stage1_5_exec-fsys_ffs.Tpo" "$(DEPDIR)/ffs_stage1_5_exec-fsys_ffs.Po"; else rm -f "$(DEPDIR)/ffs_stage1_5_exec-fsys_ffs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ffs.c' object='ffs_stage1_5_exec-fsys_ffs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ffs_stage1_5_exec-fsys_ffs.o `test -f 'fsys_ffs.c' || echo '$(srcdir)/'`fsys_ffs.c +- +-ffs_stage1_5_exec-fsys_ffs.obj: fsys_ffs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ffs_stage1_5_exec-fsys_ffs.obj -MD -MP -MF "$(DEPDIR)/ffs_stage1_5_exec-fsys_ffs.Tpo" -c -o ffs_stage1_5_exec-fsys_ffs.obj `if test -f 'fsys_ffs.c'; then $(CYGPATH_W) 'fsys_ffs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ffs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ffs_stage1_5_exec-fsys_ffs.Tpo" "$(DEPDIR)/ffs_stage1_5_exec-fsys_ffs.Po"; else rm -f "$(DEPDIR)/ffs_stage1_5_exec-fsys_ffs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ffs.c' object='ffs_stage1_5_exec-fsys_ffs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ffs_stage1_5_exec-fsys_ffs.obj `if test -f 'fsys_ffs.c'; then $(CYGPATH_W) 'fsys_ffs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ffs.c'; fi` +- +-ffs_stage1_5_exec-bios.o: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ffs_stage1_5_exec-bios.o -MD -MP -MF "$(DEPDIR)/ffs_stage1_5_exec-bios.Tpo" -c -o ffs_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ffs_stage1_5_exec-bios.Tpo" "$(DEPDIR)/ffs_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/ffs_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='ffs_stage1_5_exec-bios.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ffs_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c +- +-ffs_stage1_5_exec-bios.obj: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ffs_stage1_5_exec-bios.obj -MD -MP -MF "$(DEPDIR)/ffs_stage1_5_exec-bios.Tpo" -c -o ffs_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ffs_stage1_5_exec-bios.Tpo" "$(DEPDIR)/ffs_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/ffs_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='ffs_stage1_5_exec-bios.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ffs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ffs_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi` +- +-iso9660_stage1_5_exec-common.o: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-common.o -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-common.Tpo" -c -o iso9660_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iso9660_stage1_5_exec-common.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='iso9660_stage1_5_exec-common.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c +- +-iso9660_stage1_5_exec-common.obj: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-common.obj -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-common.Tpo" -c -o iso9660_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iso9660_stage1_5_exec-common.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='iso9660_stage1_5_exec-common.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi` +- +-iso9660_stage1_5_exec-char_io.o: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-char_io.o -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-char_io.Tpo" -c -o iso9660_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iso9660_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='iso9660_stage1_5_exec-char_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c +- +-iso9660_stage1_5_exec-char_io.obj: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-char_io.obj -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-char_io.Tpo" -c -o iso9660_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iso9660_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='iso9660_stage1_5_exec-char_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi` +- +-iso9660_stage1_5_exec-disk_io.o: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-disk_io.o -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-disk_io.Tpo" -c -o iso9660_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iso9660_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='iso9660_stage1_5_exec-disk_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c +- +-iso9660_stage1_5_exec-disk_io.obj: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-disk_io.obj -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-disk_io.Tpo" -c -o iso9660_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iso9660_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='iso9660_stage1_5_exec-disk_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi` +- +-iso9660_stage1_5_exec-stage1_5.o: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-stage1_5.o -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-stage1_5.Tpo" -c -o iso9660_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iso9660_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='iso9660_stage1_5_exec-stage1_5.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c +- +-iso9660_stage1_5_exec-stage1_5.obj: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-stage1_5.obj -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-stage1_5.Tpo" -c -o iso9660_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iso9660_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='iso9660_stage1_5_exec-stage1_5.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi` +- +-iso9660_stage1_5_exec-fsys_iso9660.o: fsys_iso9660.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-fsys_iso9660.o -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-fsys_iso9660.Tpo" -c -o iso9660_stage1_5_exec-fsys_iso9660.o `test -f 'fsys_iso9660.c' || echo '$(srcdir)/'`fsys_iso9660.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iso9660_stage1_5_exec-fsys_iso9660.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-fsys_iso9660.Po"; else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-fsys_iso9660.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_iso9660.c' object='iso9660_stage1_5_exec-fsys_iso9660.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-fsys_iso9660.o `test -f 'fsys_iso9660.c' || echo '$(srcdir)/'`fsys_iso9660.c +- +-iso9660_stage1_5_exec-fsys_iso9660.obj: fsys_iso9660.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-fsys_iso9660.obj -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-fsys_iso9660.Tpo" -c -o iso9660_stage1_5_exec-fsys_iso9660.obj `if test -f 'fsys_iso9660.c'; then $(CYGPATH_W) 'fsys_iso9660.c'; else $(CYGPATH_W) '$(srcdir)/fsys_iso9660.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iso9660_stage1_5_exec-fsys_iso9660.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-fsys_iso9660.Po"; else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-fsys_iso9660.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_iso9660.c' object='iso9660_stage1_5_exec-fsys_iso9660.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-fsys_iso9660.obj `if test -f 'fsys_iso9660.c'; then $(CYGPATH_W) 'fsys_iso9660.c'; else $(CYGPATH_W) '$(srcdir)/fsys_iso9660.c'; fi` +- +-iso9660_stage1_5_exec-bios.o: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-bios.o -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-bios.Tpo" -c -o iso9660_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iso9660_stage1_5_exec-bios.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='iso9660_stage1_5_exec-bios.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c +- +-iso9660_stage1_5_exec-bios.obj: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -MT iso9660_stage1_5_exec-bios.obj -MD -MP -MF "$(DEPDIR)/iso9660_stage1_5_exec-bios.Tpo" -c -o iso9660_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iso9660_stage1_5_exec-bios.Tpo" "$(DEPDIR)/iso9660_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/iso9660_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='iso9660_stage1_5_exec-bios.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iso9660_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o iso9660_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi` +- +-jfs_stage1_5_exec-common.o: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT jfs_stage1_5_exec-common.o -MD -MP -MF "$(DEPDIR)/jfs_stage1_5_exec-common.Tpo" -c -o jfs_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/jfs_stage1_5_exec-common.Tpo" "$(DEPDIR)/jfs_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/jfs_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='jfs_stage1_5_exec-common.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c +- +-jfs_stage1_5_exec-common.obj: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT jfs_stage1_5_exec-common.obj -MD -MP -MF "$(DEPDIR)/jfs_stage1_5_exec-common.Tpo" -c -o jfs_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/jfs_stage1_5_exec-common.Tpo" "$(DEPDIR)/jfs_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/jfs_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='jfs_stage1_5_exec-common.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi` +- +-jfs_stage1_5_exec-char_io.o: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT jfs_stage1_5_exec-char_io.o -MD -MP -MF "$(DEPDIR)/jfs_stage1_5_exec-char_io.Tpo" -c -o jfs_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/jfs_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/jfs_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/jfs_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='jfs_stage1_5_exec-char_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c +- +-jfs_stage1_5_exec-char_io.obj: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT jfs_stage1_5_exec-char_io.obj -MD -MP -MF "$(DEPDIR)/jfs_stage1_5_exec-char_io.Tpo" -c -o jfs_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/jfs_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/jfs_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/jfs_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='jfs_stage1_5_exec-char_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi` +- +-jfs_stage1_5_exec-disk_io.o: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT jfs_stage1_5_exec-disk_io.o -MD -MP -MF "$(DEPDIR)/jfs_stage1_5_exec-disk_io.Tpo" -c -o jfs_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/jfs_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/jfs_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/jfs_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='jfs_stage1_5_exec-disk_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c +- +-jfs_stage1_5_exec-disk_io.obj: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT jfs_stage1_5_exec-disk_io.obj -MD -MP -MF "$(DEPDIR)/jfs_stage1_5_exec-disk_io.Tpo" -c -o jfs_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/jfs_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/jfs_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/jfs_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='jfs_stage1_5_exec-disk_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi` +- +-jfs_stage1_5_exec-stage1_5.o: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT jfs_stage1_5_exec-stage1_5.o -MD -MP -MF "$(DEPDIR)/jfs_stage1_5_exec-stage1_5.Tpo" -c -o jfs_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/jfs_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/jfs_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/jfs_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='jfs_stage1_5_exec-stage1_5.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c +- +-jfs_stage1_5_exec-stage1_5.obj: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT jfs_stage1_5_exec-stage1_5.obj -MD -MP -MF "$(DEPDIR)/jfs_stage1_5_exec-stage1_5.Tpo" -c -o jfs_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/jfs_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/jfs_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/jfs_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='jfs_stage1_5_exec-stage1_5.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi` +- +-jfs_stage1_5_exec-fsys_jfs.o: fsys_jfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT jfs_stage1_5_exec-fsys_jfs.o -MD -MP -MF "$(DEPDIR)/jfs_stage1_5_exec-fsys_jfs.Tpo" -c -o jfs_stage1_5_exec-fsys_jfs.o `test -f 'fsys_jfs.c' || echo '$(srcdir)/'`fsys_jfs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/jfs_stage1_5_exec-fsys_jfs.Tpo" "$(DEPDIR)/jfs_stage1_5_exec-fsys_jfs.Po"; else rm -f "$(DEPDIR)/jfs_stage1_5_exec-fsys_jfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_jfs.c' object='jfs_stage1_5_exec-fsys_jfs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-fsys_jfs.o `test -f 'fsys_jfs.c' || echo '$(srcdir)/'`fsys_jfs.c +- +-jfs_stage1_5_exec-fsys_jfs.obj: fsys_jfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT jfs_stage1_5_exec-fsys_jfs.obj -MD -MP -MF "$(DEPDIR)/jfs_stage1_5_exec-fsys_jfs.Tpo" -c -o jfs_stage1_5_exec-fsys_jfs.obj `if test -f 'fsys_jfs.c'; then $(CYGPATH_W) 'fsys_jfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_jfs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/jfs_stage1_5_exec-fsys_jfs.Tpo" "$(DEPDIR)/jfs_stage1_5_exec-fsys_jfs.Po"; else rm -f "$(DEPDIR)/jfs_stage1_5_exec-fsys_jfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_jfs.c' object='jfs_stage1_5_exec-fsys_jfs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-fsys_jfs.obj `if test -f 'fsys_jfs.c'; then $(CYGPATH_W) 'fsys_jfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_jfs.c'; fi` +- +-jfs_stage1_5_exec-bios.o: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT jfs_stage1_5_exec-bios.o -MD -MP -MF "$(DEPDIR)/jfs_stage1_5_exec-bios.Tpo" -c -o jfs_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/jfs_stage1_5_exec-bios.Tpo" "$(DEPDIR)/jfs_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/jfs_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='jfs_stage1_5_exec-bios.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c +- +-jfs_stage1_5_exec-bios.obj: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT jfs_stage1_5_exec-bios.obj -MD -MP -MF "$(DEPDIR)/jfs_stage1_5_exec-bios.Tpo" -c -o jfs_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/jfs_stage1_5_exec-bios.Tpo" "$(DEPDIR)/jfs_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/jfs_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='jfs_stage1_5_exec-bios.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o jfs_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi` +- +-minix_stage1_5_exec-common.o: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -MT minix_stage1_5_exec-common.o -MD -MP -MF "$(DEPDIR)/minix_stage1_5_exec-common.Tpo" -c -o minix_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/minix_stage1_5_exec-common.Tpo" "$(DEPDIR)/minix_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/minix_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='minix_stage1_5_exec-common.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o minix_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c +- +-minix_stage1_5_exec-common.obj: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -MT minix_stage1_5_exec-common.obj -MD -MP -MF "$(DEPDIR)/minix_stage1_5_exec-common.Tpo" -c -o minix_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/minix_stage1_5_exec-common.Tpo" "$(DEPDIR)/minix_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/minix_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='minix_stage1_5_exec-common.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o minix_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi` +- +-minix_stage1_5_exec-char_io.o: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -MT minix_stage1_5_exec-char_io.o -MD -MP -MF "$(DEPDIR)/minix_stage1_5_exec-char_io.Tpo" -c -o minix_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/minix_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/minix_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/minix_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='minix_stage1_5_exec-char_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o minix_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c +- +-minix_stage1_5_exec-char_io.obj: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -MT minix_stage1_5_exec-char_io.obj -MD -MP -MF "$(DEPDIR)/minix_stage1_5_exec-char_io.Tpo" -c -o minix_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/minix_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/minix_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/minix_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='minix_stage1_5_exec-char_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o minix_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi` +- +-minix_stage1_5_exec-disk_io.o: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -MT minix_stage1_5_exec-disk_io.o -MD -MP -MF "$(DEPDIR)/minix_stage1_5_exec-disk_io.Tpo" -c -o minix_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/minix_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/minix_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/minix_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='minix_stage1_5_exec-disk_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o minix_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c +- +-minix_stage1_5_exec-disk_io.obj: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -MT minix_stage1_5_exec-disk_io.obj -MD -MP -MF "$(DEPDIR)/minix_stage1_5_exec-disk_io.Tpo" -c -o minix_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/minix_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/minix_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/minix_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='minix_stage1_5_exec-disk_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o minix_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi` +- +-minix_stage1_5_exec-stage1_5.o: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -MT minix_stage1_5_exec-stage1_5.o -MD -MP -MF "$(DEPDIR)/minix_stage1_5_exec-stage1_5.Tpo" -c -o minix_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/minix_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/minix_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/minix_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='minix_stage1_5_exec-stage1_5.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o minix_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c +- +-minix_stage1_5_exec-stage1_5.obj: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -MT minix_stage1_5_exec-stage1_5.obj -MD -MP -MF "$(DEPDIR)/minix_stage1_5_exec-stage1_5.Tpo" -c -o minix_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/minix_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/minix_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/minix_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='minix_stage1_5_exec-stage1_5.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o minix_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi` +- +-minix_stage1_5_exec-fsys_minix.o: fsys_minix.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -MT minix_stage1_5_exec-fsys_minix.o -MD -MP -MF "$(DEPDIR)/minix_stage1_5_exec-fsys_minix.Tpo" -c -o minix_stage1_5_exec-fsys_minix.o `test -f 'fsys_minix.c' || echo '$(srcdir)/'`fsys_minix.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/minix_stage1_5_exec-fsys_minix.Tpo" "$(DEPDIR)/minix_stage1_5_exec-fsys_minix.Po"; else rm -f "$(DEPDIR)/minix_stage1_5_exec-fsys_minix.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_minix.c' object='minix_stage1_5_exec-fsys_minix.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o minix_stage1_5_exec-fsys_minix.o `test -f 'fsys_minix.c' || echo '$(srcdir)/'`fsys_minix.c +- +-minix_stage1_5_exec-fsys_minix.obj: fsys_minix.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -MT minix_stage1_5_exec-fsys_minix.obj -MD -MP -MF "$(DEPDIR)/minix_stage1_5_exec-fsys_minix.Tpo" -c -o minix_stage1_5_exec-fsys_minix.obj `if test -f 'fsys_minix.c'; then $(CYGPATH_W) 'fsys_minix.c'; else $(CYGPATH_W) '$(srcdir)/fsys_minix.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/minix_stage1_5_exec-fsys_minix.Tpo" "$(DEPDIR)/minix_stage1_5_exec-fsys_minix.Po"; else rm -f "$(DEPDIR)/minix_stage1_5_exec-fsys_minix.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_minix.c' object='minix_stage1_5_exec-fsys_minix.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o minix_stage1_5_exec-fsys_minix.obj `if test -f 'fsys_minix.c'; then $(CYGPATH_W) 'fsys_minix.c'; else $(CYGPATH_W) '$(srcdir)/fsys_minix.c'; fi` +- +-minix_stage1_5_exec-bios.o: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -MT minix_stage1_5_exec-bios.o -MD -MP -MF "$(DEPDIR)/minix_stage1_5_exec-bios.Tpo" -c -o minix_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/minix_stage1_5_exec-bios.Tpo" "$(DEPDIR)/minix_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/minix_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='minix_stage1_5_exec-bios.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o minix_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c +- +-minix_stage1_5_exec-bios.obj: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -MT minix_stage1_5_exec-bios.obj -MD -MP -MF "$(DEPDIR)/minix_stage1_5_exec-bios.Tpo" -c -o minix_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/minix_stage1_5_exec-bios.Tpo" "$(DEPDIR)/minix_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/minix_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='minix_stage1_5_exec-bios.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(minix_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o minix_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi` +- +-pre_stage2_exec-bios.o: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-bios.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-bios.Tpo" -c -o pre_stage2_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-bios.Tpo" "$(DEPDIR)/pre_stage2_exec-bios.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='pre_stage2_exec-bios.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c +- +-pre_stage2_exec-bios.obj: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-bios.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-bios.Tpo" -c -o pre_stage2_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-bios.Tpo" "$(DEPDIR)/pre_stage2_exec-bios.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='pre_stage2_exec-bios.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi` +- +-pre_stage2_exec-boot.o: boot.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-boot.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-boot.Tpo" -c -o pre_stage2_exec-boot.o `test -f 'boot.c' || echo '$(srcdir)/'`boot.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-boot.Tpo" "$(DEPDIR)/pre_stage2_exec-boot.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-boot.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='boot.c' object='pre_stage2_exec-boot.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-boot.o `test -f 'boot.c' || echo '$(srcdir)/'`boot.c +- +-pre_stage2_exec-boot.obj: boot.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-boot.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-boot.Tpo" -c -o pre_stage2_exec-boot.obj `if test -f 'boot.c'; then $(CYGPATH_W) 'boot.c'; else $(CYGPATH_W) '$(srcdir)/boot.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-boot.Tpo" "$(DEPDIR)/pre_stage2_exec-boot.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-boot.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='boot.c' object='pre_stage2_exec-boot.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-boot.obj `if test -f 'boot.c'; then $(CYGPATH_W) 'boot.c'; else $(CYGPATH_W) '$(srcdir)/boot.c'; fi` +- +-pre_stage2_exec-builtins.o: builtins.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-builtins.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-builtins.Tpo" -c -o pre_stage2_exec-builtins.o `test -f 'builtins.c' || echo '$(srcdir)/'`builtins.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-builtins.Tpo" "$(DEPDIR)/pre_stage2_exec-builtins.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-builtins.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='builtins.c' object='pre_stage2_exec-builtins.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-builtins.o `test -f 'builtins.c' || echo '$(srcdir)/'`builtins.c +- +-pre_stage2_exec-builtins.obj: builtins.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-builtins.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-builtins.Tpo" -c -o pre_stage2_exec-builtins.obj `if test -f 'builtins.c'; then $(CYGPATH_W) 'builtins.c'; else $(CYGPATH_W) '$(srcdir)/builtins.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-builtins.Tpo" "$(DEPDIR)/pre_stage2_exec-builtins.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-builtins.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='builtins.c' object='pre_stage2_exec-builtins.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-builtins.obj `if test -f 'builtins.c'; then $(CYGPATH_W) 'builtins.c'; else $(CYGPATH_W) '$(srcdir)/builtins.c'; fi` +- +-pre_stage2_exec-char_io.o: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-char_io.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-char_io.Tpo" -c -o pre_stage2_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-char_io.Tpo" "$(DEPDIR)/pre_stage2_exec-char_io.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='pre_stage2_exec-char_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c +- +-pre_stage2_exec-char_io.obj: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-char_io.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-char_io.Tpo" -c -o pre_stage2_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-char_io.Tpo" "$(DEPDIR)/pre_stage2_exec-char_io.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='pre_stage2_exec-char_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi` +- +-pre_stage2_exec-cmdline.o: cmdline.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-cmdline.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-cmdline.Tpo" -c -o pre_stage2_exec-cmdline.o `test -f 'cmdline.c' || echo '$(srcdir)/'`cmdline.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-cmdline.Tpo" "$(DEPDIR)/pre_stage2_exec-cmdline.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-cmdline.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cmdline.c' object='pre_stage2_exec-cmdline.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-cmdline.o `test -f 'cmdline.c' || echo '$(srcdir)/'`cmdline.c +- +-pre_stage2_exec-cmdline.obj: cmdline.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-cmdline.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-cmdline.Tpo" -c -o pre_stage2_exec-cmdline.obj `if test -f 'cmdline.c'; then $(CYGPATH_W) 'cmdline.c'; else $(CYGPATH_W) '$(srcdir)/cmdline.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-cmdline.Tpo" "$(DEPDIR)/pre_stage2_exec-cmdline.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-cmdline.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cmdline.c' object='pre_stage2_exec-cmdline.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-cmdline.obj `if test -f 'cmdline.c'; then $(CYGPATH_W) 'cmdline.c'; else $(CYGPATH_W) '$(srcdir)/cmdline.c'; fi` +- +-pre_stage2_exec-common.o: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-common.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-common.Tpo" -c -o pre_stage2_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-common.Tpo" "$(DEPDIR)/pre_stage2_exec-common.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='pre_stage2_exec-common.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c +- +-pre_stage2_exec-common.obj: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-common.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-common.Tpo" -c -o pre_stage2_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-common.Tpo" "$(DEPDIR)/pre_stage2_exec-common.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='pre_stage2_exec-common.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi` +- +-pre_stage2_exec-console.o: console.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-console.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-console.Tpo" -c -o pre_stage2_exec-console.o `test -f 'console.c' || echo '$(srcdir)/'`console.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-console.Tpo" "$(DEPDIR)/pre_stage2_exec-console.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-console.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='console.c' object='pre_stage2_exec-console.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-console.o `test -f 'console.c' || echo '$(srcdir)/'`console.c +- +-pre_stage2_exec-console.obj: console.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-console.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-console.Tpo" -c -o pre_stage2_exec-console.obj `if test -f 'console.c'; then $(CYGPATH_W) 'console.c'; else $(CYGPATH_W) '$(srcdir)/console.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-console.Tpo" "$(DEPDIR)/pre_stage2_exec-console.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-console.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='console.c' object='pre_stage2_exec-console.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-console.obj `if test -f 'console.c'; then $(CYGPATH_W) 'console.c'; else $(CYGPATH_W) '$(srcdir)/console.c'; fi` +- +-pre_stage2_exec-disk_io.o: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-disk_io.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-disk_io.Tpo" -c -o pre_stage2_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-disk_io.Tpo" "$(DEPDIR)/pre_stage2_exec-disk_io.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='pre_stage2_exec-disk_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c +- +-pre_stage2_exec-disk_io.obj: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-disk_io.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-disk_io.Tpo" -c -o pre_stage2_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-disk_io.Tpo" "$(DEPDIR)/pre_stage2_exec-disk_io.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='pre_stage2_exec-disk_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi` +- +-pre_stage2_exec-fsys_ext2fs.o: fsys_ext2fs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_ext2fs.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_ext2fs.Tpo" -c -o pre_stage2_exec-fsys_ext2fs.o `test -f 'fsys_ext2fs.c' || echo '$(srcdir)/'`fsys_ext2fs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_ext2fs.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_ext2fs.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_ext2fs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ext2fs.c' object='pre_stage2_exec-fsys_ext2fs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_ext2fs.o `test -f 'fsys_ext2fs.c' || echo '$(srcdir)/'`fsys_ext2fs.c +- +-pre_stage2_exec-fsys_ext2fs.obj: fsys_ext2fs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_ext2fs.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_ext2fs.Tpo" -c -o pre_stage2_exec-fsys_ext2fs.obj `if test -f 'fsys_ext2fs.c'; then $(CYGPATH_W) 'fsys_ext2fs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ext2fs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_ext2fs.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_ext2fs.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_ext2fs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ext2fs.c' object='pre_stage2_exec-fsys_ext2fs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_ext2fs.obj `if test -f 'fsys_ext2fs.c'; then $(CYGPATH_W) 'fsys_ext2fs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ext2fs.c'; fi` +- +-pre_stage2_exec-fsys_fat.o: fsys_fat.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_fat.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_fat.Tpo" -c -o pre_stage2_exec-fsys_fat.o `test -f 'fsys_fat.c' || echo '$(srcdir)/'`fsys_fat.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_fat.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_fat.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_fat.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_fat.c' object='pre_stage2_exec-fsys_fat.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_fat.o `test -f 'fsys_fat.c' || echo '$(srcdir)/'`fsys_fat.c +- +-pre_stage2_exec-fsys_fat.obj: fsys_fat.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_fat.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_fat.Tpo" -c -o pre_stage2_exec-fsys_fat.obj `if test -f 'fsys_fat.c'; then $(CYGPATH_W) 'fsys_fat.c'; else $(CYGPATH_W) '$(srcdir)/fsys_fat.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_fat.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_fat.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_fat.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_fat.c' object='pre_stage2_exec-fsys_fat.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_fat.obj `if test -f 'fsys_fat.c'; then $(CYGPATH_W) 'fsys_fat.c'; else $(CYGPATH_W) '$(srcdir)/fsys_fat.c'; fi` +- +-pre_stage2_exec-fsys_ffs.o: fsys_ffs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_ffs.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_ffs.Tpo" -c -o pre_stage2_exec-fsys_ffs.o `test -f 'fsys_ffs.c' || echo '$(srcdir)/'`fsys_ffs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_ffs.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_ffs.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_ffs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ffs.c' object='pre_stage2_exec-fsys_ffs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_ffs.o `test -f 'fsys_ffs.c' || echo '$(srcdir)/'`fsys_ffs.c +- +-pre_stage2_exec-fsys_ffs.obj: fsys_ffs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_ffs.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_ffs.Tpo" -c -o pre_stage2_exec-fsys_ffs.obj `if test -f 'fsys_ffs.c'; then $(CYGPATH_W) 'fsys_ffs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ffs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_ffs.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_ffs.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_ffs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ffs.c' object='pre_stage2_exec-fsys_ffs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_ffs.obj `if test -f 'fsys_ffs.c'; then $(CYGPATH_W) 'fsys_ffs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ffs.c'; fi` +- +-pre_stage2_exec-fsys_iso9660.o: fsys_iso9660.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_iso9660.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_iso9660.Tpo" -c -o pre_stage2_exec-fsys_iso9660.o `test -f 'fsys_iso9660.c' || echo '$(srcdir)/'`fsys_iso9660.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_iso9660.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_iso9660.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_iso9660.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_iso9660.c' object='pre_stage2_exec-fsys_iso9660.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_iso9660.o `test -f 'fsys_iso9660.c' || echo '$(srcdir)/'`fsys_iso9660.c +- +-pre_stage2_exec-fsys_iso9660.obj: fsys_iso9660.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_iso9660.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_iso9660.Tpo" -c -o pre_stage2_exec-fsys_iso9660.obj `if test -f 'fsys_iso9660.c'; then $(CYGPATH_W) 'fsys_iso9660.c'; else $(CYGPATH_W) '$(srcdir)/fsys_iso9660.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_iso9660.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_iso9660.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_iso9660.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_iso9660.c' object='pre_stage2_exec-fsys_iso9660.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_iso9660.obj `if test -f 'fsys_iso9660.c'; then $(CYGPATH_W) 'fsys_iso9660.c'; else $(CYGPATH_W) '$(srcdir)/fsys_iso9660.c'; fi` +- +-pre_stage2_exec-fsys_jfs.o: fsys_jfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_jfs.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_jfs.Tpo" -c -o pre_stage2_exec-fsys_jfs.o `test -f 'fsys_jfs.c' || echo '$(srcdir)/'`fsys_jfs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_jfs.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_jfs.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_jfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_jfs.c' object='pre_stage2_exec-fsys_jfs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_jfs.o `test -f 'fsys_jfs.c' || echo '$(srcdir)/'`fsys_jfs.c +- +-pre_stage2_exec-fsys_jfs.obj: fsys_jfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_jfs.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_jfs.Tpo" -c -o pre_stage2_exec-fsys_jfs.obj `if test -f 'fsys_jfs.c'; then $(CYGPATH_W) 'fsys_jfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_jfs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_jfs.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_jfs.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_jfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_jfs.c' object='pre_stage2_exec-fsys_jfs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_jfs.obj `if test -f 'fsys_jfs.c'; then $(CYGPATH_W) 'fsys_jfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_jfs.c'; fi` +- +-pre_stage2_exec-fsys_minix.o: fsys_minix.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_minix.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_minix.Tpo" -c -o pre_stage2_exec-fsys_minix.o `test -f 'fsys_minix.c' || echo '$(srcdir)/'`fsys_minix.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_minix.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_minix.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_minix.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_minix.c' object='pre_stage2_exec-fsys_minix.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_minix.o `test -f 'fsys_minix.c' || echo '$(srcdir)/'`fsys_minix.c +- +-pre_stage2_exec-fsys_minix.obj: fsys_minix.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_minix.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_minix.Tpo" -c -o pre_stage2_exec-fsys_minix.obj `if test -f 'fsys_minix.c'; then $(CYGPATH_W) 'fsys_minix.c'; else $(CYGPATH_W) '$(srcdir)/fsys_minix.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_minix.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_minix.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_minix.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_minix.c' object='pre_stage2_exec-fsys_minix.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_minix.obj `if test -f 'fsys_minix.c'; then $(CYGPATH_W) 'fsys_minix.c'; else $(CYGPATH_W) '$(srcdir)/fsys_minix.c'; fi` +- +-pre_stage2_exec-fsys_reiserfs.o: fsys_reiserfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_reiserfs.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_reiserfs.Tpo" -c -o pre_stage2_exec-fsys_reiserfs.o `test -f 'fsys_reiserfs.c' || echo '$(srcdir)/'`fsys_reiserfs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_reiserfs.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_reiserfs.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_reiserfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_reiserfs.c' object='pre_stage2_exec-fsys_reiserfs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_reiserfs.o `test -f 'fsys_reiserfs.c' || echo '$(srcdir)/'`fsys_reiserfs.c +- +-pre_stage2_exec-fsys_reiserfs.obj: fsys_reiserfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_reiserfs.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_reiserfs.Tpo" -c -o pre_stage2_exec-fsys_reiserfs.obj `if test -f 'fsys_reiserfs.c'; then $(CYGPATH_W) 'fsys_reiserfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_reiserfs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_reiserfs.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_reiserfs.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_reiserfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_reiserfs.c' object='pre_stage2_exec-fsys_reiserfs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_reiserfs.obj `if test -f 'fsys_reiserfs.c'; then $(CYGPATH_W) 'fsys_reiserfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_reiserfs.c'; fi` +- +-pre_stage2_exec-fsys_ufs2.o: fsys_ufs2.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_ufs2.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_ufs2.Tpo" -c -o pre_stage2_exec-fsys_ufs2.o `test -f 'fsys_ufs2.c' || echo '$(srcdir)/'`fsys_ufs2.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_ufs2.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_ufs2.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_ufs2.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ufs2.c' object='pre_stage2_exec-fsys_ufs2.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_ufs2.o `test -f 'fsys_ufs2.c' || echo '$(srcdir)/'`fsys_ufs2.c +- +-pre_stage2_exec-fsys_ufs2.obj: fsys_ufs2.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_ufs2.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_ufs2.Tpo" -c -o pre_stage2_exec-fsys_ufs2.obj `if test -f 'fsys_ufs2.c'; then $(CYGPATH_W) 'fsys_ufs2.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ufs2.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_ufs2.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_ufs2.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_ufs2.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ufs2.c' object='pre_stage2_exec-fsys_ufs2.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_ufs2.obj `if test -f 'fsys_ufs2.c'; then $(CYGPATH_W) 'fsys_ufs2.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ufs2.c'; fi` +- +-pre_stage2_exec-fsys_vstafs.o: fsys_vstafs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_vstafs.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_vstafs.Tpo" -c -o pre_stage2_exec-fsys_vstafs.o `test -f 'fsys_vstafs.c' || echo '$(srcdir)/'`fsys_vstafs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_vstafs.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_vstafs.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_vstafs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_vstafs.c' object='pre_stage2_exec-fsys_vstafs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_vstafs.o `test -f 'fsys_vstafs.c' || echo '$(srcdir)/'`fsys_vstafs.c +- +-pre_stage2_exec-fsys_vstafs.obj: fsys_vstafs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_vstafs.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_vstafs.Tpo" -c -o pre_stage2_exec-fsys_vstafs.obj `if test -f 'fsys_vstafs.c'; then $(CYGPATH_W) 'fsys_vstafs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_vstafs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_vstafs.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_vstafs.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_vstafs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_vstafs.c' object='pre_stage2_exec-fsys_vstafs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_vstafs.obj `if test -f 'fsys_vstafs.c'; then $(CYGPATH_W) 'fsys_vstafs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_vstafs.c'; fi` +- +-pre_stage2_exec-fsys_xfs.o: fsys_xfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_xfs.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_xfs.Tpo" -c -o pre_stage2_exec-fsys_xfs.o `test -f 'fsys_xfs.c' || echo '$(srcdir)/'`fsys_xfs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_xfs.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_xfs.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_xfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_xfs.c' object='pre_stage2_exec-fsys_xfs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_xfs.o `test -f 'fsys_xfs.c' || echo '$(srcdir)/'`fsys_xfs.c +- +-pre_stage2_exec-fsys_xfs.obj: fsys_xfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-fsys_xfs.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-fsys_xfs.Tpo" -c -o pre_stage2_exec-fsys_xfs.obj `if test -f 'fsys_xfs.c'; then $(CYGPATH_W) 'fsys_xfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_xfs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-fsys_xfs.Tpo" "$(DEPDIR)/pre_stage2_exec-fsys_xfs.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-fsys_xfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_xfs.c' object='pre_stage2_exec-fsys_xfs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_xfs.obj `if test -f 'fsys_xfs.c'; then $(CYGPATH_W) 'fsys_xfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_xfs.c'; fi` +- +-pre_stage2_exec-gunzip.o: gunzip.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-gunzip.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-gunzip.Tpo" -c -o pre_stage2_exec-gunzip.o `test -f 'gunzip.c' || echo '$(srcdir)/'`gunzip.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-gunzip.Tpo" "$(DEPDIR)/pre_stage2_exec-gunzip.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-gunzip.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gunzip.c' object='pre_stage2_exec-gunzip.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-gunzip.o `test -f 'gunzip.c' || echo '$(srcdir)/'`gunzip.c +- +-pre_stage2_exec-gunzip.obj: gunzip.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-gunzip.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-gunzip.Tpo" -c -o pre_stage2_exec-gunzip.obj `if test -f 'gunzip.c'; then $(CYGPATH_W) 'gunzip.c'; else $(CYGPATH_W) '$(srcdir)/gunzip.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-gunzip.Tpo" "$(DEPDIR)/pre_stage2_exec-gunzip.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-gunzip.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gunzip.c' object='pre_stage2_exec-gunzip.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-gunzip.obj `if test -f 'gunzip.c'; then $(CYGPATH_W) 'gunzip.c'; else $(CYGPATH_W) '$(srcdir)/gunzip.c'; fi` +- +-pre_stage2_exec-hercules.o: hercules.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-hercules.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-hercules.Tpo" -c -o pre_stage2_exec-hercules.o `test -f 'hercules.c' || echo '$(srcdir)/'`hercules.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-hercules.Tpo" "$(DEPDIR)/pre_stage2_exec-hercules.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-hercules.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='hercules.c' object='pre_stage2_exec-hercules.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-hercules.o `test -f 'hercules.c' || echo '$(srcdir)/'`hercules.c +- +-pre_stage2_exec-hercules.obj: hercules.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-hercules.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-hercules.Tpo" -c -o pre_stage2_exec-hercules.obj `if test -f 'hercules.c'; then $(CYGPATH_W) 'hercules.c'; else $(CYGPATH_W) '$(srcdir)/hercules.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-hercules.Tpo" "$(DEPDIR)/pre_stage2_exec-hercules.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-hercules.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='hercules.c' object='pre_stage2_exec-hercules.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-hercules.obj `if test -f 'hercules.c'; then $(CYGPATH_W) 'hercules.c'; else $(CYGPATH_W) '$(srcdir)/hercules.c'; fi` +- +-pre_stage2_exec-md5.o: md5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-md5.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-md5.Tpo" -c -o pre_stage2_exec-md5.o `test -f 'md5.c' || echo '$(srcdir)/'`md5.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-md5.Tpo" "$(DEPDIR)/pre_stage2_exec-md5.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-md5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='md5.c' object='pre_stage2_exec-md5.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-md5.o `test -f 'md5.c' || echo '$(srcdir)/'`md5.c +- +-pre_stage2_exec-md5.obj: md5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-md5.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-md5.Tpo" -c -o pre_stage2_exec-md5.obj `if test -f 'md5.c'; then $(CYGPATH_W) 'md5.c'; else $(CYGPATH_W) '$(srcdir)/md5.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-md5.Tpo" "$(DEPDIR)/pre_stage2_exec-md5.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-md5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='md5.c' object='pre_stage2_exec-md5.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-md5.obj `if test -f 'md5.c'; then $(CYGPATH_W) 'md5.c'; else $(CYGPATH_W) '$(srcdir)/md5.c'; fi` +- +-pre_stage2_exec-serial.o: serial.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-serial.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-serial.Tpo" -c -o pre_stage2_exec-serial.o `test -f 'serial.c' || echo '$(srcdir)/'`serial.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-serial.Tpo" "$(DEPDIR)/pre_stage2_exec-serial.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-serial.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='serial.c' object='pre_stage2_exec-serial.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-serial.o `test -f 'serial.c' || echo '$(srcdir)/'`serial.c +- +-pre_stage2_exec-serial.obj: serial.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-serial.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-serial.Tpo" -c -o pre_stage2_exec-serial.obj `if test -f 'serial.c'; then $(CYGPATH_W) 'serial.c'; else $(CYGPATH_W) '$(srcdir)/serial.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-serial.Tpo" "$(DEPDIR)/pre_stage2_exec-serial.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-serial.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='serial.c' object='pre_stage2_exec-serial.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-serial.obj `if test -f 'serial.c'; then $(CYGPATH_W) 'serial.c'; else $(CYGPATH_W) '$(srcdir)/serial.c'; fi` +- +-pre_stage2_exec-smp-imps.o: smp-imps.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-smp-imps.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-smp-imps.Tpo" -c -o pre_stage2_exec-smp-imps.o `test -f 'smp-imps.c' || echo '$(srcdir)/'`smp-imps.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-smp-imps.Tpo" "$(DEPDIR)/pre_stage2_exec-smp-imps.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-smp-imps.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='smp-imps.c' object='pre_stage2_exec-smp-imps.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-smp-imps.o `test -f 'smp-imps.c' || echo '$(srcdir)/'`smp-imps.c +- +-pre_stage2_exec-smp-imps.obj: smp-imps.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-smp-imps.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-smp-imps.Tpo" -c -o pre_stage2_exec-smp-imps.obj `if test -f 'smp-imps.c'; then $(CYGPATH_W) 'smp-imps.c'; else $(CYGPATH_W) '$(srcdir)/smp-imps.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-smp-imps.Tpo" "$(DEPDIR)/pre_stage2_exec-smp-imps.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-smp-imps.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='smp-imps.c' object='pre_stage2_exec-smp-imps.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-smp-imps.obj `if test -f 'smp-imps.c'; then $(CYGPATH_W) 'smp-imps.c'; else $(CYGPATH_W) '$(srcdir)/smp-imps.c'; fi` +- +-pre_stage2_exec-stage2.o: stage2.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-stage2.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-stage2.Tpo" -c -o pre_stage2_exec-stage2.o `test -f 'stage2.c' || echo '$(srcdir)/'`stage2.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-stage2.Tpo" "$(DEPDIR)/pre_stage2_exec-stage2.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-stage2.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage2.c' object='pre_stage2_exec-stage2.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-stage2.o `test -f 'stage2.c' || echo '$(srcdir)/'`stage2.c +- +-pre_stage2_exec-stage2.obj: stage2.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-stage2.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-stage2.Tpo" -c -o pre_stage2_exec-stage2.obj `if test -f 'stage2.c'; then $(CYGPATH_W) 'stage2.c'; else $(CYGPATH_W) '$(srcdir)/stage2.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-stage2.Tpo" "$(DEPDIR)/pre_stage2_exec-stage2.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-stage2.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage2.c' object='pre_stage2_exec-stage2.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-stage2.obj `if test -f 'stage2.c'; then $(CYGPATH_W) 'stage2.c'; else $(CYGPATH_W) '$(srcdir)/stage2.c'; fi` +- +-pre_stage2_exec-terminfo.o: terminfo.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-terminfo.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-terminfo.Tpo" -c -o pre_stage2_exec-terminfo.o `test -f 'terminfo.c' || echo '$(srcdir)/'`terminfo.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-terminfo.Tpo" "$(DEPDIR)/pre_stage2_exec-terminfo.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-terminfo.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='terminfo.c' object='pre_stage2_exec-terminfo.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-terminfo.o `test -f 'terminfo.c' || echo '$(srcdir)/'`terminfo.c +- +-pre_stage2_exec-terminfo.obj: terminfo.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-terminfo.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-terminfo.Tpo" -c -o pre_stage2_exec-terminfo.obj `if test -f 'terminfo.c'; then $(CYGPATH_W) 'terminfo.c'; else $(CYGPATH_W) '$(srcdir)/terminfo.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-terminfo.Tpo" "$(DEPDIR)/pre_stage2_exec-terminfo.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-terminfo.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='terminfo.c' object='pre_stage2_exec-terminfo.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-terminfo.obj `if test -f 'terminfo.c'; then $(CYGPATH_W) 'terminfo.c'; else $(CYGPATH_W) '$(srcdir)/terminfo.c'; fi` +- +-pre_stage2_exec-tparm.o: tparm.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-tparm.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-tparm.Tpo" -c -o pre_stage2_exec-tparm.o `test -f 'tparm.c' || echo '$(srcdir)/'`tparm.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-tparm.Tpo" "$(DEPDIR)/pre_stage2_exec-tparm.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-tparm.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tparm.c' object='pre_stage2_exec-tparm.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-tparm.o `test -f 'tparm.c' || echo '$(srcdir)/'`tparm.c +- +-pre_stage2_exec-tparm.obj: tparm.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-tparm.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-tparm.Tpo" -c -o pre_stage2_exec-tparm.obj `if test -f 'tparm.c'; then $(CYGPATH_W) 'tparm.c'; else $(CYGPATH_W) '$(srcdir)/tparm.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-tparm.Tpo" "$(DEPDIR)/pre_stage2_exec-tparm.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-tparm.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tparm.c' object='pre_stage2_exec-tparm.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-tparm.obj `if test -f 'tparm.c'; then $(CYGPATH_W) 'tparm.c'; else $(CYGPATH_W) '$(srcdir)/tparm.c'; fi` +- +-reiserfs_stage1_5_exec-common.o: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT reiserfs_stage1_5_exec-common.o -MD -MP -MF "$(DEPDIR)/reiserfs_stage1_5_exec-common.Tpo" -c -o reiserfs_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/reiserfs_stage1_5_exec-common.Tpo" "$(DEPDIR)/reiserfs_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/reiserfs_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='reiserfs_stage1_5_exec-common.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o reiserfs_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c +- +-reiserfs_stage1_5_exec-common.obj: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT reiserfs_stage1_5_exec-common.obj -MD -MP -MF "$(DEPDIR)/reiserfs_stage1_5_exec-common.Tpo" -c -o reiserfs_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/reiserfs_stage1_5_exec-common.Tpo" "$(DEPDIR)/reiserfs_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/reiserfs_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='reiserfs_stage1_5_exec-common.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o reiserfs_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi` +- +-reiserfs_stage1_5_exec-char_io.o: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT reiserfs_stage1_5_exec-char_io.o -MD -MP -MF "$(DEPDIR)/reiserfs_stage1_5_exec-char_io.Tpo" -c -o reiserfs_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/reiserfs_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/reiserfs_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/reiserfs_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='reiserfs_stage1_5_exec-char_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o reiserfs_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c +- +-reiserfs_stage1_5_exec-char_io.obj: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT reiserfs_stage1_5_exec-char_io.obj -MD -MP -MF "$(DEPDIR)/reiserfs_stage1_5_exec-char_io.Tpo" -c -o reiserfs_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/reiserfs_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/reiserfs_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/reiserfs_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='reiserfs_stage1_5_exec-char_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o reiserfs_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi` +- +-reiserfs_stage1_5_exec-disk_io.o: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT reiserfs_stage1_5_exec-disk_io.o -MD -MP -MF "$(DEPDIR)/reiserfs_stage1_5_exec-disk_io.Tpo" -c -o reiserfs_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/reiserfs_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/reiserfs_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/reiserfs_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='reiserfs_stage1_5_exec-disk_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o reiserfs_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c +- +-reiserfs_stage1_5_exec-disk_io.obj: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT reiserfs_stage1_5_exec-disk_io.obj -MD -MP -MF "$(DEPDIR)/reiserfs_stage1_5_exec-disk_io.Tpo" -c -o reiserfs_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/reiserfs_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/reiserfs_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/reiserfs_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='reiserfs_stage1_5_exec-disk_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o reiserfs_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi` +- +-reiserfs_stage1_5_exec-stage1_5.o: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT reiserfs_stage1_5_exec-stage1_5.o -MD -MP -MF "$(DEPDIR)/reiserfs_stage1_5_exec-stage1_5.Tpo" -c -o reiserfs_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/reiserfs_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/reiserfs_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/reiserfs_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='reiserfs_stage1_5_exec-stage1_5.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o reiserfs_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c +- +-reiserfs_stage1_5_exec-stage1_5.obj: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT reiserfs_stage1_5_exec-stage1_5.obj -MD -MP -MF "$(DEPDIR)/reiserfs_stage1_5_exec-stage1_5.Tpo" -c -o reiserfs_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/reiserfs_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/reiserfs_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/reiserfs_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='reiserfs_stage1_5_exec-stage1_5.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o reiserfs_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi` +- +-reiserfs_stage1_5_exec-fsys_reiserfs.o: fsys_reiserfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT reiserfs_stage1_5_exec-fsys_reiserfs.o -MD -MP -MF "$(DEPDIR)/reiserfs_stage1_5_exec-fsys_reiserfs.Tpo" -c -o reiserfs_stage1_5_exec-fsys_reiserfs.o `test -f 'fsys_reiserfs.c' || echo '$(srcdir)/'`fsys_reiserfs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/reiserfs_stage1_5_exec-fsys_reiserfs.Tpo" "$(DEPDIR)/reiserfs_stage1_5_exec-fsys_reiserfs.Po"; else rm -f "$(DEPDIR)/reiserfs_stage1_5_exec-fsys_reiserfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_reiserfs.c' object='reiserfs_stage1_5_exec-fsys_reiserfs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o reiserfs_stage1_5_exec-fsys_reiserfs.o `test -f 'fsys_reiserfs.c' || echo '$(srcdir)/'`fsys_reiserfs.c +- +-reiserfs_stage1_5_exec-fsys_reiserfs.obj: fsys_reiserfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT reiserfs_stage1_5_exec-fsys_reiserfs.obj -MD -MP -MF "$(DEPDIR)/reiserfs_stage1_5_exec-fsys_reiserfs.Tpo" -c -o reiserfs_stage1_5_exec-fsys_reiserfs.obj `if test -f 'fsys_reiserfs.c'; then $(CYGPATH_W) 'fsys_reiserfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_reiserfs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/reiserfs_stage1_5_exec-fsys_reiserfs.Tpo" "$(DEPDIR)/reiserfs_stage1_5_exec-fsys_reiserfs.Po"; else rm -f "$(DEPDIR)/reiserfs_stage1_5_exec-fsys_reiserfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_reiserfs.c' object='reiserfs_stage1_5_exec-fsys_reiserfs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o reiserfs_stage1_5_exec-fsys_reiserfs.obj `if test -f 'fsys_reiserfs.c'; then $(CYGPATH_W) 'fsys_reiserfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_reiserfs.c'; fi` +- +-reiserfs_stage1_5_exec-bios.o: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT reiserfs_stage1_5_exec-bios.o -MD -MP -MF "$(DEPDIR)/reiserfs_stage1_5_exec-bios.Tpo" -c -o reiserfs_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/reiserfs_stage1_5_exec-bios.Tpo" "$(DEPDIR)/reiserfs_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/reiserfs_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='reiserfs_stage1_5_exec-bios.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o reiserfs_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c +- +-reiserfs_stage1_5_exec-bios.obj: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT reiserfs_stage1_5_exec-bios.obj -MD -MP -MF "$(DEPDIR)/reiserfs_stage1_5_exec-bios.Tpo" -c -o reiserfs_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/reiserfs_stage1_5_exec-bios.Tpo" "$(DEPDIR)/reiserfs_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/reiserfs_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='reiserfs_stage1_5_exec-bios.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o reiserfs_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi` +- +-ufs2_stage1_5_exec-common.o: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ufs2_stage1_5_exec-common.o -MD -MP -MF "$(DEPDIR)/ufs2_stage1_5_exec-common.Tpo" -c -o ufs2_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ufs2_stage1_5_exec-common.Tpo" "$(DEPDIR)/ufs2_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/ufs2_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='ufs2_stage1_5_exec-common.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ufs2_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c +- +-ufs2_stage1_5_exec-common.obj: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ufs2_stage1_5_exec-common.obj -MD -MP -MF "$(DEPDIR)/ufs2_stage1_5_exec-common.Tpo" -c -o ufs2_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ufs2_stage1_5_exec-common.Tpo" "$(DEPDIR)/ufs2_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/ufs2_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='ufs2_stage1_5_exec-common.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ufs2_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi` +- +-ufs2_stage1_5_exec-char_io.o: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ufs2_stage1_5_exec-char_io.o -MD -MP -MF "$(DEPDIR)/ufs2_stage1_5_exec-char_io.Tpo" -c -o ufs2_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ufs2_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/ufs2_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/ufs2_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='ufs2_stage1_5_exec-char_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ufs2_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c +- +-ufs2_stage1_5_exec-char_io.obj: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ufs2_stage1_5_exec-char_io.obj -MD -MP -MF "$(DEPDIR)/ufs2_stage1_5_exec-char_io.Tpo" -c -o ufs2_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ufs2_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/ufs2_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/ufs2_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='ufs2_stage1_5_exec-char_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ufs2_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi` +- +-ufs2_stage1_5_exec-disk_io.o: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ufs2_stage1_5_exec-disk_io.o -MD -MP -MF "$(DEPDIR)/ufs2_stage1_5_exec-disk_io.Tpo" -c -o ufs2_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ufs2_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/ufs2_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/ufs2_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='ufs2_stage1_5_exec-disk_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ufs2_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c +- +-ufs2_stage1_5_exec-disk_io.obj: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ufs2_stage1_5_exec-disk_io.obj -MD -MP -MF "$(DEPDIR)/ufs2_stage1_5_exec-disk_io.Tpo" -c -o ufs2_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ufs2_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/ufs2_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/ufs2_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='ufs2_stage1_5_exec-disk_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ufs2_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi` +- +-ufs2_stage1_5_exec-stage1_5.o: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ufs2_stage1_5_exec-stage1_5.o -MD -MP -MF "$(DEPDIR)/ufs2_stage1_5_exec-stage1_5.Tpo" -c -o ufs2_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ufs2_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/ufs2_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/ufs2_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='ufs2_stage1_5_exec-stage1_5.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ufs2_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c +- +-ufs2_stage1_5_exec-stage1_5.obj: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ufs2_stage1_5_exec-stage1_5.obj -MD -MP -MF "$(DEPDIR)/ufs2_stage1_5_exec-stage1_5.Tpo" -c -o ufs2_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ufs2_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/ufs2_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/ufs2_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='ufs2_stage1_5_exec-stage1_5.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ufs2_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi` +- +-ufs2_stage1_5_exec-fsys_ufs2.o: fsys_ufs2.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ufs2_stage1_5_exec-fsys_ufs2.o -MD -MP -MF "$(DEPDIR)/ufs2_stage1_5_exec-fsys_ufs2.Tpo" -c -o ufs2_stage1_5_exec-fsys_ufs2.o `test -f 'fsys_ufs2.c' || echo '$(srcdir)/'`fsys_ufs2.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ufs2_stage1_5_exec-fsys_ufs2.Tpo" "$(DEPDIR)/ufs2_stage1_5_exec-fsys_ufs2.Po"; else rm -f "$(DEPDIR)/ufs2_stage1_5_exec-fsys_ufs2.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ufs2.c' object='ufs2_stage1_5_exec-fsys_ufs2.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ufs2_stage1_5_exec-fsys_ufs2.o `test -f 'fsys_ufs2.c' || echo '$(srcdir)/'`fsys_ufs2.c +- +-ufs2_stage1_5_exec-fsys_ufs2.obj: fsys_ufs2.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ufs2_stage1_5_exec-fsys_ufs2.obj -MD -MP -MF "$(DEPDIR)/ufs2_stage1_5_exec-fsys_ufs2.Tpo" -c -o ufs2_stage1_5_exec-fsys_ufs2.obj `if test -f 'fsys_ufs2.c'; then $(CYGPATH_W) 'fsys_ufs2.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ufs2.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ufs2_stage1_5_exec-fsys_ufs2.Tpo" "$(DEPDIR)/ufs2_stage1_5_exec-fsys_ufs2.Po"; else rm -f "$(DEPDIR)/ufs2_stage1_5_exec-fsys_ufs2.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_ufs2.c' object='ufs2_stage1_5_exec-fsys_ufs2.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ufs2_stage1_5_exec-fsys_ufs2.obj `if test -f 'fsys_ufs2.c'; then $(CYGPATH_W) 'fsys_ufs2.c'; else $(CYGPATH_W) '$(srcdir)/fsys_ufs2.c'; fi` +- +-ufs2_stage1_5_exec-bios.o: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ufs2_stage1_5_exec-bios.o -MD -MP -MF "$(DEPDIR)/ufs2_stage1_5_exec-bios.Tpo" -c -o ufs2_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ufs2_stage1_5_exec-bios.Tpo" "$(DEPDIR)/ufs2_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/ufs2_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='ufs2_stage1_5_exec-bios.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ufs2_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c +- +-ufs2_stage1_5_exec-bios.obj: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -MT ufs2_stage1_5_exec-bios.obj -MD -MP -MF "$(DEPDIR)/ufs2_stage1_5_exec-bios.Tpo" -c -o ufs2_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ufs2_stage1_5_exec-bios.Tpo" "$(DEPDIR)/ufs2_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/ufs2_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='ufs2_stage1_5_exec-bios.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ufs2_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o ufs2_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi` +- +-vstafs_stage1_5_exec-common.o: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT vstafs_stage1_5_exec-common.o -MD -MP -MF "$(DEPDIR)/vstafs_stage1_5_exec-common.Tpo" -c -o vstafs_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/vstafs_stage1_5_exec-common.Tpo" "$(DEPDIR)/vstafs_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/vstafs_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='vstafs_stage1_5_exec-common.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o vstafs_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c +- +-vstafs_stage1_5_exec-common.obj: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT vstafs_stage1_5_exec-common.obj -MD -MP -MF "$(DEPDIR)/vstafs_stage1_5_exec-common.Tpo" -c -o vstafs_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/vstafs_stage1_5_exec-common.Tpo" "$(DEPDIR)/vstafs_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/vstafs_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='vstafs_stage1_5_exec-common.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o vstafs_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi` +- +-vstafs_stage1_5_exec-char_io.o: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT vstafs_stage1_5_exec-char_io.o -MD -MP -MF "$(DEPDIR)/vstafs_stage1_5_exec-char_io.Tpo" -c -o vstafs_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/vstafs_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/vstafs_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/vstafs_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='vstafs_stage1_5_exec-char_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o vstafs_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c +- +-vstafs_stage1_5_exec-char_io.obj: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT vstafs_stage1_5_exec-char_io.obj -MD -MP -MF "$(DEPDIR)/vstafs_stage1_5_exec-char_io.Tpo" -c -o vstafs_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/vstafs_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/vstafs_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/vstafs_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='vstafs_stage1_5_exec-char_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o vstafs_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi` +- +-vstafs_stage1_5_exec-disk_io.o: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT vstafs_stage1_5_exec-disk_io.o -MD -MP -MF "$(DEPDIR)/vstafs_stage1_5_exec-disk_io.Tpo" -c -o vstafs_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/vstafs_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/vstafs_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/vstafs_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='vstafs_stage1_5_exec-disk_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o vstafs_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c +- +-vstafs_stage1_5_exec-disk_io.obj: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT vstafs_stage1_5_exec-disk_io.obj -MD -MP -MF "$(DEPDIR)/vstafs_stage1_5_exec-disk_io.Tpo" -c -o vstafs_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/vstafs_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/vstafs_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/vstafs_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='vstafs_stage1_5_exec-disk_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o vstafs_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi` +- +-vstafs_stage1_5_exec-stage1_5.o: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT vstafs_stage1_5_exec-stage1_5.o -MD -MP -MF "$(DEPDIR)/vstafs_stage1_5_exec-stage1_5.Tpo" -c -o vstafs_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/vstafs_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/vstafs_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/vstafs_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='vstafs_stage1_5_exec-stage1_5.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o vstafs_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c +- +-vstafs_stage1_5_exec-stage1_5.obj: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT vstafs_stage1_5_exec-stage1_5.obj -MD -MP -MF "$(DEPDIR)/vstafs_stage1_5_exec-stage1_5.Tpo" -c -o vstafs_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/vstafs_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/vstafs_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/vstafs_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='vstafs_stage1_5_exec-stage1_5.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o vstafs_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi` +- +-vstafs_stage1_5_exec-fsys_vstafs.o: fsys_vstafs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT vstafs_stage1_5_exec-fsys_vstafs.o -MD -MP -MF "$(DEPDIR)/vstafs_stage1_5_exec-fsys_vstafs.Tpo" -c -o vstafs_stage1_5_exec-fsys_vstafs.o `test -f 'fsys_vstafs.c' || echo '$(srcdir)/'`fsys_vstafs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/vstafs_stage1_5_exec-fsys_vstafs.Tpo" "$(DEPDIR)/vstafs_stage1_5_exec-fsys_vstafs.Po"; else rm -f "$(DEPDIR)/vstafs_stage1_5_exec-fsys_vstafs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_vstafs.c' object='vstafs_stage1_5_exec-fsys_vstafs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o vstafs_stage1_5_exec-fsys_vstafs.o `test -f 'fsys_vstafs.c' || echo '$(srcdir)/'`fsys_vstafs.c +- +-vstafs_stage1_5_exec-fsys_vstafs.obj: fsys_vstafs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT vstafs_stage1_5_exec-fsys_vstafs.obj -MD -MP -MF "$(DEPDIR)/vstafs_stage1_5_exec-fsys_vstafs.Tpo" -c -o vstafs_stage1_5_exec-fsys_vstafs.obj `if test -f 'fsys_vstafs.c'; then $(CYGPATH_W) 'fsys_vstafs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_vstafs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/vstafs_stage1_5_exec-fsys_vstafs.Tpo" "$(DEPDIR)/vstafs_stage1_5_exec-fsys_vstafs.Po"; else rm -f "$(DEPDIR)/vstafs_stage1_5_exec-fsys_vstafs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_vstafs.c' object='vstafs_stage1_5_exec-fsys_vstafs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o vstafs_stage1_5_exec-fsys_vstafs.obj `if test -f 'fsys_vstafs.c'; then $(CYGPATH_W) 'fsys_vstafs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_vstafs.c'; fi` +- +-vstafs_stage1_5_exec-bios.o: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT vstafs_stage1_5_exec-bios.o -MD -MP -MF "$(DEPDIR)/vstafs_stage1_5_exec-bios.Tpo" -c -o vstafs_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/vstafs_stage1_5_exec-bios.Tpo" "$(DEPDIR)/vstafs_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/vstafs_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='vstafs_stage1_5_exec-bios.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o vstafs_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c +- +-vstafs_stage1_5_exec-bios.obj: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT vstafs_stage1_5_exec-bios.obj -MD -MP -MF "$(DEPDIR)/vstafs_stage1_5_exec-bios.Tpo" -c -o vstafs_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/vstafs_stage1_5_exec-bios.Tpo" "$(DEPDIR)/vstafs_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/vstafs_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='vstafs_stage1_5_exec-bios.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vstafs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o vstafs_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi` +- +-xfs_stage1_5_exec-common.o: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT xfs_stage1_5_exec-common.o -MD -MP -MF "$(DEPDIR)/xfs_stage1_5_exec-common.Tpo" -c -o xfs_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xfs_stage1_5_exec-common.Tpo" "$(DEPDIR)/xfs_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/xfs_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='xfs_stage1_5_exec-common.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c +- +-xfs_stage1_5_exec-common.obj: common.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT xfs_stage1_5_exec-common.obj -MD -MP -MF "$(DEPDIR)/xfs_stage1_5_exec-common.Tpo" -c -o xfs_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xfs_stage1_5_exec-common.Tpo" "$(DEPDIR)/xfs_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/xfs_stage1_5_exec-common.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='xfs_stage1_5_exec-common.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi` +- +-xfs_stage1_5_exec-char_io.o: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT xfs_stage1_5_exec-char_io.o -MD -MP -MF "$(DEPDIR)/xfs_stage1_5_exec-char_io.Tpo" -c -o xfs_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xfs_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/xfs_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/xfs_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='xfs_stage1_5_exec-char_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-char_io.o `test -f 'char_io.c' || echo '$(srcdir)/'`char_io.c +- +-xfs_stage1_5_exec-char_io.obj: char_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT xfs_stage1_5_exec-char_io.obj -MD -MP -MF "$(DEPDIR)/xfs_stage1_5_exec-char_io.Tpo" -c -o xfs_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xfs_stage1_5_exec-char_io.Tpo" "$(DEPDIR)/xfs_stage1_5_exec-char_io.Po"; else rm -f "$(DEPDIR)/xfs_stage1_5_exec-char_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='char_io.c' object='xfs_stage1_5_exec-char_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-char_io.obj `if test -f 'char_io.c'; then $(CYGPATH_W) 'char_io.c'; else $(CYGPATH_W) '$(srcdir)/char_io.c'; fi` +- +-xfs_stage1_5_exec-disk_io.o: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT xfs_stage1_5_exec-disk_io.o -MD -MP -MF "$(DEPDIR)/xfs_stage1_5_exec-disk_io.Tpo" -c -o xfs_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xfs_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/xfs_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/xfs_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='xfs_stage1_5_exec-disk_io.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-disk_io.o `test -f 'disk_io.c' || echo '$(srcdir)/'`disk_io.c +- +-xfs_stage1_5_exec-disk_io.obj: disk_io.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT xfs_stage1_5_exec-disk_io.obj -MD -MP -MF "$(DEPDIR)/xfs_stage1_5_exec-disk_io.Tpo" -c -o xfs_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xfs_stage1_5_exec-disk_io.Tpo" "$(DEPDIR)/xfs_stage1_5_exec-disk_io.Po"; else rm -f "$(DEPDIR)/xfs_stage1_5_exec-disk_io.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='disk_io.c' object='xfs_stage1_5_exec-disk_io.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-disk_io.obj `if test -f 'disk_io.c'; then $(CYGPATH_W) 'disk_io.c'; else $(CYGPATH_W) '$(srcdir)/disk_io.c'; fi` +- +-xfs_stage1_5_exec-stage1_5.o: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT xfs_stage1_5_exec-stage1_5.o -MD -MP -MF "$(DEPDIR)/xfs_stage1_5_exec-stage1_5.Tpo" -c -o xfs_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xfs_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/xfs_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/xfs_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='xfs_stage1_5_exec-stage1_5.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-stage1_5.o `test -f 'stage1_5.c' || echo '$(srcdir)/'`stage1_5.c +- +-xfs_stage1_5_exec-stage1_5.obj: stage1_5.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT xfs_stage1_5_exec-stage1_5.obj -MD -MP -MF "$(DEPDIR)/xfs_stage1_5_exec-stage1_5.Tpo" -c -o xfs_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xfs_stage1_5_exec-stage1_5.Tpo" "$(DEPDIR)/xfs_stage1_5_exec-stage1_5.Po"; else rm -f "$(DEPDIR)/xfs_stage1_5_exec-stage1_5.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='stage1_5.c' object='xfs_stage1_5_exec-stage1_5.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-stage1_5.obj `if test -f 'stage1_5.c'; then $(CYGPATH_W) 'stage1_5.c'; else $(CYGPATH_W) '$(srcdir)/stage1_5.c'; fi` +- +-xfs_stage1_5_exec-fsys_xfs.o: fsys_xfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT xfs_stage1_5_exec-fsys_xfs.o -MD -MP -MF "$(DEPDIR)/xfs_stage1_5_exec-fsys_xfs.Tpo" -c -o xfs_stage1_5_exec-fsys_xfs.o `test -f 'fsys_xfs.c' || echo '$(srcdir)/'`fsys_xfs.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xfs_stage1_5_exec-fsys_xfs.Tpo" "$(DEPDIR)/xfs_stage1_5_exec-fsys_xfs.Po"; else rm -f "$(DEPDIR)/xfs_stage1_5_exec-fsys_xfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_xfs.c' object='xfs_stage1_5_exec-fsys_xfs.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-fsys_xfs.o `test -f 'fsys_xfs.c' || echo '$(srcdir)/'`fsys_xfs.c +- +-xfs_stage1_5_exec-fsys_xfs.obj: fsys_xfs.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT xfs_stage1_5_exec-fsys_xfs.obj -MD -MP -MF "$(DEPDIR)/xfs_stage1_5_exec-fsys_xfs.Tpo" -c -o xfs_stage1_5_exec-fsys_xfs.obj `if test -f 'fsys_xfs.c'; then $(CYGPATH_W) 'fsys_xfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_xfs.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xfs_stage1_5_exec-fsys_xfs.Tpo" "$(DEPDIR)/xfs_stage1_5_exec-fsys_xfs.Po"; else rm -f "$(DEPDIR)/xfs_stage1_5_exec-fsys_xfs.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsys_xfs.c' object='xfs_stage1_5_exec-fsys_xfs.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-fsys_xfs.obj `if test -f 'fsys_xfs.c'; then $(CYGPATH_W) 'fsys_xfs.c'; else $(CYGPATH_W) '$(srcdir)/fsys_xfs.c'; fi` +- +-xfs_stage1_5_exec-bios.o: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT xfs_stage1_5_exec-bios.o -MD -MP -MF "$(DEPDIR)/xfs_stage1_5_exec-bios.Tpo" -c -o xfs_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xfs_stage1_5_exec-bios.Tpo" "$(DEPDIR)/xfs_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/xfs_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='xfs_stage1_5_exec-bios.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c +- +-xfs_stage1_5_exec-bios.obj: bios.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT xfs_stage1_5_exec-bios.obj -MD -MP -MF "$(DEPDIR)/xfs_stage1_5_exec-bios.Tpo" -c -o xfs_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xfs_stage1_5_exec-bios.Tpo" "$(DEPDIR)/xfs_stage1_5_exec-bios.Po"; else rm -f "$(DEPDIR)/xfs_stage1_5_exec-bios.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bios.c' object='xfs_stage1_5_exec-bios.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o xfs_stage1_5_exec-bios.obj `if test -f 'bios.c'; then $(CYGPATH_W) 'bios.c'; else $(CYGPATH_W) '$(srcdir)/bios.c'; fi` +-uninstall-info-am: +-install-pkglibDATA: $(pkglib_DATA) +- @$(NORMAL_INSTALL) +- test -z "$(pkglibdir)" || $(mkdir_p) "$(DESTDIR)$(pkglibdir)" +- @list='$(pkglib_DATA)'; for p in $$list; do \ +- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ +- f=$(am__strip_dir) \ +- echo " $(pkglibDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkglibdir)/$$f'"; \ +- $(pkglibDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkglibdir)/$$f"; \ +- done +- +-uninstall-pkglibDATA: +- @$(NORMAL_UNINSTALL) +- @list='$(pkglib_DATA)'; for p in $$list; do \ +- f=$(am__strip_dir) \ +- echo " rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ +- rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ +- done +- +-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- mkid -fID $$unique +-tags: TAGS +- +-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) +- tags=; \ +- here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ +- test -n "$$unique" || unique=$$empty_fix; \ +- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique; \ +- fi +-ctags: CTAGS +-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) +- tags=; \ +- here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- test -z "$(CTAGS_ARGS)$$tags$$unique" \ +- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ +- $$tags $$unique +- +-GTAGS: +- here=`$(am__cd) $(top_builddir) && pwd` \ +- && cd $(top_srcdir) \ +- && gtags -i $(GTAGS_ARGS) $$here +- +-distclean-tags: +- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +- +-check-TESTS: $(TESTS) +- @failed=0; all=0; xfail=0; xpass=0; skip=0; \ +- srcdir=$(srcdir); export srcdir; \ +- list='$(TESTS)'; \ +- if test -n "$$list"; then \ +- for tst in $$list; do \ +- if test -f ./$$tst; then dir=./; \ +- elif test -f $$tst; then dir=; \ +- else dir="$(srcdir)/"; fi; \ +- if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ +- all=`expr $$all + 1`; \ +- case " $(XFAIL_TESTS) " in \ +- *" $$tst "*) \ +- xpass=`expr $$xpass + 1`; \ +- failed=`expr $$failed + 1`; \ +- echo "XPASS: $$tst"; \ +- ;; \ +- *) \ +- echo "PASS: $$tst"; \ +- ;; \ +- esac; \ +- elif test $$? -ne 77; then \ +- all=`expr $$all + 1`; \ +- case " $(XFAIL_TESTS) " in \ +- *" $$tst "*) \ +- xfail=`expr $$xfail + 1`; \ +- echo "XFAIL: $$tst"; \ +- ;; \ +- *) \ +- failed=`expr $$failed + 1`; \ +- echo "FAIL: $$tst"; \ +- ;; \ +- esac; \ +- else \ +- skip=`expr $$skip + 1`; \ +- echo "SKIP: $$tst"; \ +- fi; \ +- done; \ +- if test "$$failed" -eq 0; then \ +- if test "$$xfail" -eq 0; then \ +- banner="All $$all tests passed"; \ +- else \ +- banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ +- fi; \ +- else \ +- if test "$$xpass" -eq 0; then \ +- banner="$$failed of $$all tests failed"; \ +- else \ +- banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ +- fi; \ +- fi; \ +- dashes="$$banner"; \ +- skipped=""; \ +- if test "$$skip" -ne 0; then \ +- skipped="($$skip tests were not run)"; \ +- test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ +- dashes="$$skipped"; \ +- fi; \ +- report=""; \ +- if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ +- report="Please report to $(PACKAGE_BUGREPORT)"; \ +- test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ +- dashes="$$report"; \ +- fi; \ +- dashes=`echo "$$dashes" | sed s/./=/g`; \ +- echo "$$dashes"; \ +- echo "$$banner"; \ +- test -z "$$skipped" || echo "$$skipped"; \ +- test -z "$$report" || echo "$$report"; \ +- echo "$$dashes"; \ +- test "$$failed" -eq 0; \ +- else :; fi +- +-distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ +- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkdir_p) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ +- if test -d $$d/$$file; then \ +- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ +- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ +- fi; \ +- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ +- else \ +- test -f $(distdir)/$$file \ +- || cp -p $$d/$$file $(distdir)/$$file \ +- || exit 1; \ +- fi; \ +- done +-check-am: all-am +- $(MAKE) $(AM_MAKEFLAGS) check-TESTS +-check: $(BUILT_SOURCES) +- $(MAKE) $(AM_MAKEFLAGS) check-am +-all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) \ +- $(HEADERS) +-installdirs: +- for dir in "$(DESTDIR)$(pkglibdir)"; do \ +- test -z "$$dir" || $(mkdir_p) "$$dir"; \ +- done +-install: $(BUILT_SOURCES) +- $(MAKE) $(AM_MAKEFLAGS) install-am +-install-exec: install-exec-am +-install-data: install-data-am +-uninstall: uninstall-am +- +-install-am: all-am +- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +- +-installcheck: installcheck-am +-install-strip: +- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ +- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ +- `test -z '$(STRIP)' || \ +- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +-mostlyclean-generic: +- -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) +- +-clean-generic: +- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) +- +-distclean-generic: +- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) +- +-maintainer-clean-generic: +- @echo "This command is intended for maintainers to use" +- @echo "it deletes files that may require special tools to rebuild." +- -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +-clean: clean-am +- +-clean-am: clean-generic clean-noinstLIBRARIES clean-noinstPROGRAMS \ +- mostlyclean-am +- +-distclean: distclean-am +- -rm -rf ./$(DEPDIR) +- -rm -f Makefile +-distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-tags +- +-dvi: dvi-am +- +-dvi-am: +- +-html: html-am +- +-info: info-am +- +-info-am: +- +-install-data-am: +- +-install-exec-am: install-pkglibDATA +- +-install-info: install-info-am +- +-install-man: +- +-installcheck-am: +- +-maintainer-clean: maintainer-clean-am +- -rm -rf ./$(DEPDIR) +- -rm -f Makefile +-maintainer-clean-am: distclean-am maintainer-clean-generic +- +-mostlyclean: mostlyclean-am +- +-mostlyclean-am: mostlyclean-compile mostlyclean-generic +- +-pdf: pdf-am +- +-pdf-am: +- +-ps: ps-am +- +-ps-am: +- +-uninstall-am: uninstall-info-am uninstall-pkglibDATA +- +-.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ +- clean-generic clean-noinstLIBRARIES clean-noinstPROGRAMS ctags \ +- distclean distclean-compile distclean-generic distclean-tags \ +- distdir dvi dvi-am html html-am info info-am install \ +- install-am install-data install-data-am install-exec \ +- install-exec-am install-info install-info-am install-man \ +- install-pkglibDATA install-strip installcheck installcheck-am \ +- installdirs maintainer-clean maintainer-clean-generic \ +- mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \ +- ps ps-am tags uninstall uninstall-am uninstall-info-am \ +- uninstall-pkglibDATA +- +- +-stage2_size.h: pre_stage2 +- -rm -f stage2_size.h +- set dummy `ls -l pre_stage2`; \ +- echo "#define STAGE2_SIZE $$6" > stage2_size.h +- +-# XXX: automake doesn't provide a way to specify dependencies for object +-# files explicitly, so we must write this by a general Makefile scheme. +-# If automake change the naming scheme for per-executable objects, this +-# will be broken. +-start_exec-start.$(OBJEXT): stage2_size.h +- +-stage2: pre_stage2 start +- -rm -f stage2 +- cat start pre_stage2 > stage2 +- +-start_eltorito_exec-start.$(OBJEXT): stage2_size.h +- +-stage2_eltorito: pre_stage2 start_eltorito +- -rm -f stage2_eltorito +- cat start_eltorito pre_stage2 > stage2_eltorito +- +-diskless_size.h: diskless +- -rm -f $@ +- set dummy `ls -l $^`; \ +- echo "#define DISKLESS_SIZE $$6" > $@ +- +-# XXX: See the comment for start_exec-start.o. +-nbloader_exec-nbloader.$(OBJEXT): diskless_size.h +- +-# For nbgrub target. +-nbgrub: nbloader diskless +- -rm -f $@ +- cat $^ > $@ +- +-# XXX: See the comment for start_exec-start.o. +-pxeloader_exec-pxeloader.$(OBJEXT): diskless_size.h +- +-# For pxegrub target. +-pxegrub: pxeloader diskless +- -rm -f $@ +- cat $^ > $@ +-.exec: +- $(OBJCOPY) -O binary $< $@ +-# Tell versions [3.59,3.63) of GNU make to not export all variables. +-# Otherwise a system limit (for SysV at least) may be exceeded. +-.NOEXPORT: +diff --git a/stage2/asm.S b/stage2/asm.S +index 34b6e7d..5c4dd5e 100644 +--- a/stage2/asm.S ++++ b/stage2/asm.S +@@ -98,7 +98,7 @@ VARIABLE(version_string) + .string VERSION + VARIABLE(config_file) + #ifndef STAGE1_5 +- .string "/boot/grub/menu.lst" ++ .string "/boot/grub/grub.conf" + #else /* STAGE1_5 */ + .long 0xffffffff + .string "/boot/grub/stage2" +@@ -1622,36 +1622,78 @@ ENTRY(set_vbe_mode) + */ + + ENTRY(gateA20) ++ pushl %ebx ++ pushl %edx ++ call testA20 ++ jnz 1f ++ call A20_BIOS ++ call testA20 ++ jnz 1f ++ call A20_PORT92 ++ call testA20 ++ jnz 1f ++ call A20_KBDCTL ++ call testA20 ++ jnz 1f ++ movl $0,%eax ++ jmp 2f ++1: ++ movl $-1,%eax ++2: ++ popl %edx ++ popl %ebx ++ ret ++ ++testA20: ++ movl 0x500,%eax ++ movl 0x100500,%ebx ++ notl %eax ++ movl %eax,0x100500 ++ cmpl %eax,0x500 ++ pushfl ++ movl %ebx,0x100500 ++ notl %eax ++ movl %eax,0x500 ++ popfl ++ ret ++ ++A20_BIOS: + /* first, try a BIOS call */ +- pushl %ebp +- movl 8(%esp), %edx + + call EXT_C(prot_to_real) + + .code16 +- movw $0x2400, %ax +- testw %dx, %dx +- jz 1f +- incw %ax ++ movw $0x2401, %ax + 1: stc + int $0x15 +- jnc 2f +- +- /* set non-zero if failed */ +- movb $1, %ah +- +- /* save the status */ +-2: movb %ah, %dl + + DATA32 call EXT_C(real_to_prot) + .code32 ++ ret + +- popl %ebp +- testb %dl, %dl +- jnz 3f ++A20_PORT92: ++ /* ++ * try to switch gateA20 using PORT92, the "Fast A20 and Init" ++ * register ++ */ ++ mov $0x92, %dx ++ inb %dx, %al ++ /* skip the port92 code if it's unimplemented (read returns 0xff) */ ++ cmpb $0xff, %al ++ jz 6f ++ ++ /* set bit1, the ALT_A20_GATE bit */ ++ orb $2, %al ++ /* and $0xfd, %al */ ++ ++ /* clear the INIT_NOW bit; don't accidently reset the machine */ ++ and $0xfe, %al ++ outb %al, %dx ++6: + ret + +-3: /* use keyboard controller */ ++A20_KBDCTL: ++ /* use keyboard controller */ + pushl %eax + + call gloop1 +@@ -1665,11 +1707,7 @@ gloopint1: + jnz gloopint1 + + movb $KB_OUTPUT_MASK, %al +- cmpb $0, 0x8(%esp) +- jz gdoit +- + orb $KB_A20_ENABLE, %al +-gdoit: + outb $K_RDWR + + call gloop1 +@@ -1994,8 +2032,25 @@ ENTRY(console_getkey) + call EXT_C(prot_to_real) + .code16 + ++.again: ++ mov $0x11, %ah /* poll kbd */ + int $0x16 + ++ jz .again ++#if 0 ++/* XXX handle serial here? -- pj */ ++ jnz .kbd ++#endif ++.kbd: ++ mov $0x10, %ah ++ int $0x16 ++ cmp $0xe0, %al ++ jnz .not_ext ++ xor %al, %al ++.not_ext: ++ and %al, %al ++ jz .func_key ++.func_key: + movw %ax, %dx /* real_to_prot uses %eax */ + call translate_keycode + call remap_ascii_char +@@ -2003,7 +2058,7 @@ ENTRY(console_getkey) + DATA32 call EXT_C(real_to_prot) + .code32 + +- movw %dx, %ax ++ mov %dx, %ax + + pop %ebp + ret +@@ -2029,7 +2084,7 @@ ENTRY(console_checkkey) + call EXT_C(prot_to_real) /* enter real mode */ + .code16 + +- movb $0x1, %ah ++ movb $0x11, %ah + int $0x16 + + DATA32 jz notpending +@@ -2051,6 +2106,37 @@ pending: + pop %ebp + ret + ++ ++/* ++ * int console_keystatus (void) ++ * BIOS call "INT 16H Function 02H" to get keyboard modifier status ++ * Call with %ah = 0x2 ++ * Return: %al = keyboard state: ++ * bit 3: alt key down ++ * bit 2: ctrl key down ++ * bit 1: left shift key down ++ * bit 0: right shift key down ++ */ ++ENTRY(console_keystatus) ++ push %ebp ++ ++ call EXT_C(prot_to_real) ++ .code16 ++ ++ movb $0x12, %ah ++ int $0x16 ++ movw %ax, %dx ++ ++ DATA32 call EXT_C(real_to_prot) ++ .code32 ++ ++ movw %dx, %ax ++ ++ /* Mask out numlock, capslock and insert state. */ ++ andl $0x0f0f, %eax ++ pop %ebp ++ ret ++ + + /* + * int console_getxy (void) +@@ -2216,6 +2302,156 @@ ENTRY(console_setcursor) + pop %ebx + pop %ebp + ret ++ ++/* graphics mode functions */ ++#ifdef SUPPORT_GRAPHICS ++VARIABLE(cursorX) ++.word 0 ++VARIABLE(cursorY) ++.word 0 ++VARIABLE(cursorCount) ++.word 0 ++VARIABLE(cursorBuf) ++.byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ++ ++ ++/* ++ * int set_videomode(mode) ++ * BIOS call "INT 10H Function 0h" to set video mode ++ * Call with %ah = 0x0 ++ * %al = video mode ++ * Returns old videomode. ++ */ ++ENTRY(set_videomode) ++ push %ebp ++ push %ebx ++ push %ecx ++ ++ movb 0x10(%esp), %cl ++ ++ call EXT_C(prot_to_real) ++ .code16 ++ ++ xorw %bx, %bx ++ movb $0xf, %ah ++ int $0x10 /* Get Current Video mode */ ++ movb %al, %ch ++ xorb %ah, %ah ++ movb %cl, %al ++ int $0x10 /* Set Video mode */ ++ ++ DATA32 call EXT_C(real_to_prot) ++ .code32 ++ ++ xorb %ah, %ah ++ movb %ch, %al ++ ++ pop %ecx ++ pop %ebx ++ pop %ebp ++ ret ++ ++ ++/* ++ * unsigned char * graphics_get_font() ++ * BIOS call "INT 10H Function 11h" to set font ++ * Call with %ah = 0x11 ++ */ ++ENTRY(graphics_get_font) ++ push %ebp ++ push %ebx ++ push %ecx ++ push %edx ++ ++ call EXT_C(prot_to_real) ++ .code16 ++ ++ movw $0x1130, %ax ++ movb $6, %bh /* font 8x16 */ ++ int $0x10 ++ movw %bp, %dx ++ movw %es, %cx ++ ++ DATA32 call EXT_C(real_to_prot) ++ .code32 ++ ++ xorl %eax, %eax ++ movw %cx, %ax ++ shll $4, %eax ++ movw %dx, %ax ++ ++ pop %edx ++ pop %ecx ++ pop %ebx ++ pop %ebp ++ ret ++ ++ ++ ++/* ++ * graphics_set_palette(index, red, green, blue) ++ * BIOS call "INT 10H Function 10h" to set individual dac register ++ * Call with %ah = 0x10 ++ * %bx = register number ++ * %ch = new value for green (0-63) ++ * %cl = new value for blue (0-63) ++ * %dh = new value for red (0-63) ++ */ ++ ++ENTRY(graphics_set_palette) ++ push %ebp ++ push %eax ++ push %ebx ++ push %ecx ++ push %edx ++ ++ movw $0x3c8, %bx /* address write mode register */ ++ ++ /* wait vertical retrace */ ++ ++ movw $0x3da, %dx ++l1b: inb %dx, %al /* wait vertical active display */ ++ test $8, %al ++ jnz l1b ++ ++l2b: inb %dx, %al /* wait vertical retrace */ ++ test $8, %al ++ jnz l2b ++ ++ mov %bx, %dx ++ movb 0x18(%esp), %al /* index */ ++ outb %al, %dx ++ inc %dx ++ ++ movb 0x1c(%esp), %al /* red */ ++ outb %al, %dx ++ ++ movb 0x20(%esp), %al /* green */ ++ outb %al, %dx ++ ++ movb 0x24(%esp), %al /* blue */ ++ outb %al, %dx ++ ++ movw 0x18(%esp), %bx ++ ++ call EXT_C(prot_to_real) ++ .code16 ++ ++ movb %bl, %bh ++ movw $0x1000, %ax ++ int $0x10 ++ ++ DATA32 call EXT_C(real_to_prot) ++ .code32 ++ ++ pop %edx ++ pop %ecx ++ pop %ebx ++ pop %eax ++ pop %ebp ++ ret ++ ++#endif /* SUPPORT_GRAPHICS */ + + /* + * getrtsecs() +diff --git a/stage2/boot.c b/stage2/boot.c +index 4185d23..e30daf8 100644 +--- a/stage2/boot.c ++++ b/stage2/boot.c +@@ -25,10 +25,14 @@ + #include "imgact_aout.h" + #include "i386-elf.h" + ++#ifndef PLATFORM_EFI + static int cur_addr; ++#endif + entry_func entry_addr; ++#ifndef PLATFORM_EFI + static struct mod_list mll[99]; + static int linux_mem_size; ++#endif + + /* + * The next two functions, 'load_image' and 'load_module', are the building +@@ -40,6 +44,9 @@ kernel_t + load_image (char *kernel, char *arg, kernel_t suggested_type, + unsigned long load_flags) + { ++#ifdef PLATFORM_EFI ++ return grub_load_linux (kernel, arg); ++#else + int len, i, exec_type = 0, align_4k = 1; + entry_func real_entry_addr = 0; + kernel_t type = KERNEL_TYPE_NONE; +@@ -221,6 +228,7 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + { + int big_linux = 0; + int setup_sects = lh->setup_sects; ++ int cmdline_size = 0xff; + + if (lh->header == LINUX_MAGIC_SIGNATURE && lh->version >= 0x0200) + { +@@ -248,6 +256,14 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + lh->cl_offset = LINUX_CL_OFFSET; + lh->setup_move_size = LINUX_SETUP_MOVE_SIZE; + } ++ ++ if (lh->version >= 0x0206) ++ { ++ cmdline_size = lh->cmdline_size; ++ if (cmdline_size > (LINUX_CL_END_OFFSET - LINUX_CL_OFFSET)) ++ cmdline_size = LINUX_CL_END_OFFSET - LINUX_CL_OFFSET; ++ } ++ + } + else + { +@@ -265,7 +281,7 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + setup_sects = LINUX_DEFAULT_SETUP_SECTS; + + data_len = setup_sects << 9; +- text_len = filemax - data_len - SECTOR_SIZE; ++ text_len = filemax - data_len - get_sector_size(current_drive); + + linux_data_tmp_addr = (char *) LINUX_BZIMAGE_ADDR + text_len; + +@@ -280,8 +296,12 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + errnum = ERR_WONT_FIT; + else + { +- grub_printf (" [Linux-%s, setup=0x%x, size=0x%x]\n", +- (big_linux ? "bzImage" : "zImage"), data_len, text_len); ++ grub_verbose_printf (" [Linux-%s, setup=0x%x, size=0x%x]\n", ++ (big_linux ? "bzImage" : "zImage"), ++ data_len, text_len); ++ ++ if (silent_grub) ++ lh->vid_mode = 0x0f04; + + /* Video mode selection support. What a mess! */ + /* NOTE: Even the word "mess" is not still enough to +@@ -375,14 +395,15 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + + /* It is possible that DATA_LEN + SECTOR_SIZE is greater than + MULTIBOOT_SEARCH, so the data may have been read partially. */ +- if (data_len + SECTOR_SIZE <= MULTIBOOT_SEARCH) ++ if (data_len + get_sector_size(current_drive) <= MULTIBOOT_SEARCH) + grub_memmove (linux_data_tmp_addr, buffer, +- data_len + SECTOR_SIZE); ++ data_len + get_sector_size(current_drive)); + else + { + grub_memmove (linux_data_tmp_addr, buffer, MULTIBOOT_SEARCH); + grub_read (linux_data_tmp_addr + MULTIBOOT_SEARCH, +- data_len + SECTOR_SIZE - MULTIBOOT_SEARCH); ++ data_len + get_sector_size(current_drive) ++ - MULTIBOOT_SEARCH); + } + + if (lh->header != LINUX_MAGIC_SIGNATURE || +@@ -404,7 +425,7 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + char *src = skip_to (0, arg); + char *dest = linux_data_tmp_addr + LINUX_CL_OFFSET; + +- while (dest < linux_data_tmp_addr + LINUX_CL_END_OFFSET && *src) ++ while (dest < linux_data_tmp_addr + LINUX_CL_OFFSET + cmdline_size && *src) + *(dest++) = *(src++); + + /* Old Linux kernels have problems determining the amount of +@@ -425,7 +446,7 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + if (! grub_strstr (arg, "mem=") + && ! (load_flags & KERNEL_LOAD_NO_MEM_OPTION) + && lh->version < 0x0203 /* kernel version < 2.4.18 */ +- && dest + 15 < linux_data_tmp_addr + LINUX_CL_END_OFFSET) ++ && dest + 15 < linux_data_tmp_addr + LINUX_CL_OFFSET + cmdline_size) + { + *dest++ = ' '; + *dest++ = 'm'; +@@ -441,7 +462,7 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + } + + /* offset into file */ +- grub_seek (data_len + SECTOR_SIZE); ++ grub_seek (data_len + get_sector_size(current_drive)); + + cur_addr = (int) linux_data_tmp_addr + LINUX_SETUP_MOVE_SIZE; + grub_read ((char *) LINUX_BZIMAGE_ADDR, text_len); +@@ -487,7 +508,7 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + mbi.syms.a.addr = 0; + mbi.syms.a.pad = 0; + +- printf (" [%s-%s", str2, str); ++ verbose_printf (" [%s-%s", str2, str); + + str = ""; + +@@ -496,7 +517,7 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + if (flags & MULTIBOOT_AOUT_KLUDGE) + str = "-and-data"; + +- printf (", loadaddr=0x%x, text%s=0x%x", cur_addr, str, text_len); ++ verbose_printf (", loadaddr=0x%x, text%s=0x%x", cur_addr, str, text_len); + + /* read text, then read data */ + if (grub_read ((char *) RAW_ADDR (cur_addr), text_len) == text_len) +@@ -509,9 +530,9 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + if (align_4k) + cur_addr = (cur_addr + 0xFFF) & 0xFFFFF000; + else +- printf (", C"); ++ verbose_printf (", C"); + +- printf (", data=0x%x", data_len); ++ verbose_printf (", data=0x%x", data_len); + + if ((grub_read ((char *) RAW_ADDR (cur_addr), data_len) + != data_len) +@@ -525,7 +546,7 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + memset ((char *) RAW_ADDR (cur_addr), 0, bss_len); + cur_addr += bss_len; + +- printf (", bss=0x%x", bss_len); ++ verbose_printf (", bss=0x%x", bss_len); + } + } + else if (!errnum) +@@ -545,7 +566,7 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + *((int *) RAW_ADDR (cur_addr)) = pu.aout->a_syms; + cur_addr += sizeof (int); + +- printf (", symtab=0x%x", pu.aout->a_syms); ++ verbose_printf (", symtab=0x%x", pu.aout->a_syms); + + if (grub_read ((char *) RAW_ADDR (cur_addr), pu.aout->a_syms) + == pu.aout->a_syms) +@@ -562,7 +583,7 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + + i -= sizeof (int); + +- printf (", strtab=0x%x", i); ++ verbose_printf (", strtab=0x%x", i); + + symtab_err = (grub_read ((char *) RAW_ADDR (cur_addr), i) + != i); +@@ -576,7 +597,7 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + + if (symtab_err) + { +- printf ("(bad)"); ++ verbose_printf ("(bad)"); + cur_addr = orig_addr; + mbi.syms.a.tabsize = 0; + mbi.syms.a.strsize = 0; +@@ -630,7 +651,7 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + /* mark memory as used */ + if (cur_addr < memaddr + memsiz) + cur_addr = memaddr + memsiz; +- printf (", <0x%x:0x%x:0x%x>", memaddr, filesiz, ++ verbose_printf (", <0x%x:0x%x:0x%x>", memaddr, filesiz, + memsiz - filesiz); + /* increment number of segments */ + loaded++; +@@ -676,7 +697,7 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + shdr = (Elf32_Shdr *) mbi.syms.e.addr; + cur_addr += tab_size; + +- printf (", shtab=0x%x", cur_addr); ++ verbose_printf (", shtab=0x%x", cur_addr); + + for (i = 0; i < mbi.syms.e.num; i++) + { +@@ -718,7 +739,7 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + + if (symtab_err) + { +- printf ("(bad)"); ++ verbose_printf ("(bad)"); + mbi.syms.e.num = 0; + mbi.syms.e.size = 0; + mbi.syms.e.addr = 0; +@@ -733,7 +754,7 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + + if (! errnum) + { +- grub_printf (", entry=0x%x]\n", (unsigned) entry_addr); ++ grub_verbose_printf (", entry=0x%x]\n", (unsigned) entry_addr); + + /* If the entry address is physically different from that of the ELF + header, correct it here. */ +@@ -756,8 +777,10 @@ load_image (char *kernel, char *arg, kernel_t suggested_type, + } + + return type; ++#endif + } + ++#ifndef PLATFORM_EFI + int + load_module (char *module, char *arg) + { +@@ -776,7 +799,7 @@ load_module (char *module, char *arg) + return 0; + } + +- printf (" [Multiboot-module @ 0x%x, 0x%x bytes]\n", cur_addr, len); ++ verbose_printf (" [Multiboot-module @ 0x%x, 0x%x bytes]\n", cur_addr, len); + + /* these two simply need to be set if any modules are loaded at all */ + mbi.flags |= MB_INFO_MODS; +@@ -794,11 +817,19 @@ load_module (char *module, char *arg) + grub_close (); + return 1; + } ++#endif + + int + load_initrd (char *initrd) + { +- int len; ++#ifdef PLATFORM_EFI ++#ifndef NO_DECOMPRESSION ++ no_decompression = 1; ++#endif ++ return grub_load_initrd (initrd); ++#else ++ int len, next_addr; ++ char *singleimage, *pos; + unsigned long moveto; + unsigned long max_addr; + struct linux_kernel_header *lh +@@ -807,16 +838,24 @@ load_initrd (char *initrd) + #ifndef NO_DECOMPRESSION + no_decompression = 1; + #endif +- +- if (! grub_open (initrd)) +- goto fail; ++ len = 0; ++ next_addr = cur_addr; + +- len = grub_read ((char *) cur_addr, -1); +- if (! len) +- { +- grub_close (); +- goto fail; +- } ++ /* loop over all initrd images and concatenate them in memory */ ++ singleimage = strtok_r(initrd," \t",&pos); ++ while (singleimage) { ++ if (! grub_open (singleimage)) ++ continue; ++ ++ len += grub_read ((char *) next_addr, -1); ++ grub_close (); ++ ++ next_addr = cur_addr + len; ++ singleimage = strtok_r(NULL," \t",&pos); ++ } ++ ++ if (!len) ++ goto fail; + + if (linux_mem_size) + moveto = linux_mem_size; +@@ -824,8 +863,12 @@ load_initrd (char *initrd) + moveto = (mbi.mem_upper + 0x400) << 10; + + moveto = (moveto - len) & 0xfffff000; ++#if 0 + max_addr = (lh->header == LINUX_MAGIC_SIGNATURE && lh->version >= 0x0203 + ? lh->initrd_addr_max : LINUX_INITRD_MAX_ADDRESS); ++#else ++ max_addr = LINUX_INITRD_MAX_ADDRESS; ++#endif + if (moveto + len >= max_addr) + moveto = (max_addr - len) & 0xfffff000; + +@@ -836,13 +879,12 @@ load_initrd (char *initrd) + moveto -= 0x10000; + memmove ((void *) RAW_ADDR (moveto), (void *) cur_addr, len); + +- printf (" [Linux-initrd @ 0x%x, 0x%x bytes]\n", moveto, len); ++ verbose_printf (" [Linux-initrd @ 0x%x, 0x%x bytes]\n", moveto, len); + + /* FIXME: Should check if the kernel supports INITRD. */ + lh->ramdisk_image = RAW_ADDR (moveto); + lh->ramdisk_size = len; + +- grub_close (); + + fail: + +@@ -851,9 +893,11 @@ load_initrd (char *initrd) + #endif + + return ! errnum; ++#endif + } + + ++#ifndef PLATFORM_EFI + #ifdef GRUB_UTIL + /* Dummy function to fake the *BSD boot. */ + static void +@@ -1018,3 +1062,5 @@ bsd_boot (kernel_t type, int bootdev, char *arg) + extended_memory, mbi.mem_lower); + } + } ++#endif ++ +diff --git a/stage2/builtins.c b/stage2/builtins.c +index 3e08a86..b95b181 100644 +--- a/stage2/builtins.c ++++ b/stage2/builtins.c +@@ -56,6 +56,9 @@ static int bootdev; + /* True when the debug mode is turned on, and false + when it is turned off. */ + int debug = 0; ++int debug_graphics = 0; ++/* Print what we're booting */ ++int grub_verbose = 0; + /* The default entry. */ + int default_entry = 0; + /* The fallback entry. */ +@@ -117,6 +120,27 @@ check_password (char *entered, char* expected, password_t type) + case PASSWORD_MD5: + return check_md5_password (entered, expected); + #endif ++ ++ case PASSWORD_ENCRYPTED: ++ if (grub_memcmp (expected, "$1$", 3) == 0) ++ return check_md5_password (entered, expected); ++ else if (grub_memcmp (expected, "$5$", 3) == 0) ++ { ++ char *hashed; ++ ++ hashed = sha256_crypt (entered, expected); ++ return hashed == NULL || strcmp (expected, hashed); ++ } ++ else if (grub_memcmp (expected, "$6$", 3) == 0) ++ { ++ char *hashed; ++ ++ hashed = sha512_crypt (entered, expected); ++ return hashed == NULL || strcmp (expected, hashed); ++ } ++ else ++ return strcmp (entered, expected); ++ + default: + /* unsupported password type: be secure */ + return 1; +@@ -131,62 +155,98 @@ disk_read_print_func (int sector, int offset, int length) + } + + ++/* blocklist_read_helper nee disk_read_blocklist_func was a nested ++ * function, to which pointers were taken and exposed globally. Even ++ * in the GNU-C nested functions extension, they have local linkage, ++ * and aren't guaranteed to be accessable *at all* outside of their ++ * containing scope. ++ * ++ * Above and beyond all of that, the variables within blocklist_func_context ++ * are originally local variables, with local (not even static) linkage, ++ * from within blocklist_func. These were each referenced by ++ * disk_read_blocklist_func, which is only called from other functions ++ * through a globally scoped pointer. ++ * ++ * The documentation in GCC actually uses the words "all hell will break ++ * loose" to describe this scenario. ++ * ++ * Also, "start_sector" was also used uninitialized, but gcc doesn't warn ++ * about it (possibly because of the scoping madness?) ++ */ ++ ++static struct { ++ int start_sector; ++ int num_sectors; ++ int num_entries; ++ int last_length; ++} blocklist_func_context = { ++ .start_sector = 0, ++ .num_sectors = 0, ++ .num_entries = 0, ++ .last_length = 0 ++}; ++ ++/* Collect contiguous blocks into one entry as many as possible, ++ and print the blocklist notation on the screen. */ ++static void ++blocklist_read_helper (int sector, int offset, int length) ++{ ++ int *start_sector = &blocklist_func_context.start_sector; ++ int *num_sectors = &blocklist_func_context.num_sectors; ++ int *num_entries = &blocklist_func_context.num_entries; ++ int *last_length = &blocklist_func_context.last_length; ++ int sector_size = get_sector_size(current_drive); ++ ++ if (*num_sectors > 0) ++ { ++ if (*start_sector + *num_sectors == sector ++ && offset == 0 && *last_length == sector_size) ++ { ++ *num_sectors++; ++ *last_length = length; ++ return; ++ } ++ else ++ { ++ if (*last_length == sector_size) ++ grub_printf ("%s%d+%d", *num_entries ? "," : "", ++ *start_sector - part_start, *num_sectors); ++ else if (*num_sectors > 1) ++ grub_printf ("%s%d+%d,%d[0-%d]", *num_entries ? "," : "", ++ *start_sector - part_start, *num_sectors-1, ++ *start_sector + *num_sectors-1 - part_start, ++ *last_length); ++ else ++ grub_printf ("%s%d[0-%d]", *num_entries ? "," : "", ++ *start_sector - part_start, *last_length); ++ *num_entries++; ++ *num_sectors = 0; ++ } ++ } ++ ++ if (offset > 0) ++ { ++ grub_printf("%s%d[%d-%d]", *num_entries ? "," : "", ++ sector-part_start, offset, offset+length); ++ *num_entries++; ++ } ++ else ++ { ++ *start_sector = sector; ++ *num_sectors = 1; ++ *last_length = length; ++ } ++} ++ + /* blocklist */ + static int + blocklist_func (char *arg, int flags) + { + char *dummy = (char *) RAW_ADDR (0x100000); +- int start_sector; +- int num_sectors = 0; +- int num_entries = 0; +- int last_length = 0; + +- auto void disk_read_blocklist_func (int sector, int offset, int length); +- +- /* Collect contiguous blocks into one entry as many as possible, +- and print the blocklist notation on the screen. */ +- auto void disk_read_blocklist_func (int sector, int offset, int length) +- { +- if (num_sectors > 0) +- { +- if (start_sector + num_sectors == sector +- && offset == 0 && last_length == SECTOR_SIZE) +- { +- num_sectors++; +- last_length = length; +- return; +- } +- else +- { +- if (last_length == SECTOR_SIZE) +- grub_printf ("%s%d+%d", num_entries ? "," : "", +- start_sector - part_start, num_sectors); +- else if (num_sectors > 1) +- grub_printf ("%s%d+%d,%d[0-%d]", num_entries ? "," : "", +- start_sector - part_start, num_sectors-1, +- start_sector + num_sectors-1 - part_start, +- last_length); +- else +- grub_printf ("%s%d[0-%d]", num_entries ? "," : "", +- start_sector - part_start, last_length); +- num_entries++; +- num_sectors = 0; +- } +- } +- +- if (offset > 0) +- { +- grub_printf("%s%d[%d-%d]", num_entries ? "," : "", +- sector-part_start, offset, offset+length); +- num_entries++; +- } +- else +- { +- start_sector = sector; +- num_sectors = 1; +- last_length = length; +- } +- } ++ int *start_sector = &blocklist_func_context.start_sector; ++ int *num_sectors = &blocklist_func_context.num_sectors; ++ int *num_entries = &blocklist_func_context.num_entries; + + /* Open the file. */ + if (! grub_open (arg)) +@@ -206,15 +266,15 @@ blocklist_func (char *arg, int flags) + grub_printf (")"); + + /* Read in the whole file to DUMMY. */ +- disk_read_hook = disk_read_blocklist_func; ++ disk_read_hook = blocklist_read_helper; + if (! grub_read (dummy, -1)) + goto fail; + + /* The last entry may not be printed yet. Don't check if it is a + * full sector, since it doesn't matter if we read too much. */ +- if (num_sectors > 0) +- grub_printf ("%s%d+%d", num_entries ? "," : "", +- start_sector - part_start, num_sectors); ++ if (*num_sectors > 0) ++ grub_printf ("%s%d+%d", *num_entries ? "," : "", ++ *start_sector - part_start, *num_sectors); + + grub_printf ("\n"); + +@@ -237,12 +297,25 @@ static struct builtin builtin_blocklist = + static int + boot_func (char *arg, int flags) + { ++ struct term_entry *prev_term = current_term; + /* Clear the int15 handler if we can boot the kernel successfully. + This assumes that the boot code never fails only if KERNEL_TYPE is + not KERNEL_TYPE_NONE. Is this assumption is bad? */ + if (kernel_type != KERNEL_TYPE_NONE) + unset_int15_handler (); + ++ /* if our terminal needed initialization, we should shut it down ++ * before booting the kernel, but we want to save what it was so ++ * we can come back if needed */ ++ if (current_term->shutdown) ++ { ++ (*current_term->shutdown)(); ++ current_term = term_table; /* assumption: console is first */ ++ } ++ ++ if (silent_grub) ++ setcursor(0); ++ + #ifdef SUPPORT_NETBOOT + /* Shut down the networking. */ + cleanup_net (); +@@ -250,11 +323,13 @@ boot_func (char *arg, int flags) + + switch (kernel_type) + { ++#ifndef PLATFORM_EFI + case KERNEL_TYPE_FREEBSD: + case KERNEL_TYPE_NETBSD: + /* *BSD */ + bsd_boot (kernel_type, bootdev, (char *) mbi.cmdline); + break; ++#endif + + case KERNEL_TYPE_LINUX: + /* Linux */ +@@ -296,16 +371,25 @@ boot_func (char *arg, int flags) + chain_stage1 (0, BOOTSEC_LOCATION, boot_part_addr); + break; + ++#ifndef PLATFORM_EFI + case KERNEL_TYPE_MULTIBOOT: + /* Multiboot */ + multi_boot ((int) entry_addr, (int) &mbi); + break; ++#endif + + default: + errnum = ERR_BOOT_COMMAND; + return 1; + } + ++ /* if we get back here, we should go back to what our term was before */ ++ current_term = prev_term; ++ if (current_term->startup) ++ /* if our terminal fails to initialize, fall back to console since ++ * it should always work */ ++ if ((*current_term->startup)() == 0) ++ current_term = term_table; /* we know that console is first */ + return 0; + } + +@@ -402,6 +486,10 @@ static struct builtin builtin_cat = + static int + chainloader_func (char *arg, int flags) + { ++#ifdef PLATFORM_EFI ++ kernel_type = grub_chainloader(arg); ++ return kernel_type == KERNEL_TYPE_NONE; ++#else + int force = 0; + char *file = arg; + +@@ -458,6 +546,7 @@ chainloader_func (char *arg, int flags) + errnum = ERR_NONE; + + return 0; ++#endif + } + + static struct builtin builtin_chainloader = +@@ -564,89 +653,88 @@ static struct builtin builtin_cmp = + /* Set new colors used for the menu interface. Support two methods to + specify a color name: a direct integer representation and a symbolic + color name. An example of the latter is "blink-light-gray/blue". */ +-static int +-color_func (char *arg, int flags) +-{ +- char *normal; +- char *highlight; +- int new_normal_color; +- int new_highlight_color; +- static char *color_list[16] = +- { +- "black", +- "blue", +- "green", +- "cyan", +- "red", +- "magenta", +- "brown", +- "light-gray", +- "dark-gray", +- "light-blue", +- "light-green", +- "light-cyan", +- "light-red", +- "light-magenta", +- "yellow", +- "white" +- }; ++static const char * const color_list[16] = ++{ ++ "black", ++ "blue", ++ "green", ++ "cyan", ++ "red", ++ "magenta", ++ "brown", ++ "light-gray", ++ "dark-gray", ++ "light-blue", ++ "light-green", ++ "light-cyan", ++ "light-red", ++ "light-magenta", ++ "yellow", ++ "white" ++}; + +- auto int color_number (char *str); ++/* Convert the color name STR into the magical number. */ ++static int color_number (char *str) ++{ ++ char *ptr; ++ int i; ++ int color = 0; + +- /* Convert the color name STR into the magical number. */ +- auto int color_number (char *str) +- { +- char *ptr; +- int i; +- int color = 0; +- +- /* Find the separator. */ +- for (ptr = str; *ptr && *ptr != '/'; ptr++) +- ; ++ /* Find the separator. */ ++ for (ptr = str; *ptr && *ptr != '/'; ptr++) ++ ; + +- /* If not found, return -1. */ +- if (! *ptr) +- return -1; ++ /* If not found, return -1. */ ++ if (! *ptr) ++ return -1; + +- /* Terminate the string STR. */ +- *ptr++ = 0; ++ /* Terminate the string STR. */ ++ *ptr++ = 0; + +- /* If STR contains the prefix "blink-", then set the `blink' bit +- in COLOR. */ +- if (substring ("blink-", str) <= 0) +- { +- color = 0x80; +- str += 6; +- } +- +- /* Search for the color name. */ +- for (i = 0; i < 16; i++) +- if (grub_strcmp (color_list[i], str) == 0) +- { +- color |= i; +- break; +- } ++ /* If STR contains the prefix "blink-", then set the `blink' bit ++ in COLOR. */ ++ if (substring ("blink-", str) <= 0) ++ { ++ color = 0x80; ++ str += 6; ++ } ++ ++ /* Search for the color name. */ ++ for (i = 0; i < 16; i++) ++ if (grub_strcmp (color_list[i], str) == 0) ++ { ++ color |= i; ++ break; ++ } + +- if (i == 16) +- return -1; ++ if (i == 16) ++ return -1; + +- str = ptr; +- nul_terminate (str); ++ str = ptr; ++ nul_terminate (str); + +- /* Search for the color name. */ +- for (i = 0; i < 8; i++) +- if (grub_strcmp (color_list[i], str) == 0) +- { +- color |= i << 4; +- break; +- } ++ /* Search for the color name. */ ++ for (i = 0; i < 8; i++) ++ if (grub_strcmp (color_list[i], str) == 0) ++ { ++ color |= i << 4; ++ break; ++ } + +- if (i == 8) +- return -1; ++ if (i == 8) ++ return -1; ++ ++ return color; ++} ++ ++static int ++color_func (char *arg, int flags) ++{ ++ char *normal; ++ char *highlight; ++ int new_normal_color; ++ int new_highlight_color; + +- return color; +- } +- + normal = arg; + highlight = skip_to (0, arg); + +@@ -690,7 +778,6 @@ static struct builtin builtin_color = + " But only the first eight names can be used for BG. You can prefix" + " \"blink-\" to FG if you want a blinking foreground color." + }; +- + + /* configfile */ + static int +@@ -737,14 +824,18 @@ static struct builtin builtin_configfile = + static int + debug_func (char *arg, int flags) + { +- if (debug) ++ int *whichdebug = &debug; ++ if (arg && !strcmp(arg, "--graphics")) ++ whichdebug = &debug_graphics; ++ ++ if (*whichdebug) + { +- debug = 0; ++ *whichdebug = 0; + grub_printf (" Debug mode is turned off\n"); + } + else + { +- debug = 1; ++ *whichdebug = 1; + grub_printf (" Debug mode is turned on\n"); + } + +@@ -755,17 +846,61 @@ static struct builtin builtin_debug = + { + "debug", + debug_func, +- BUILTIN_CMDLINE, ++ BUILTIN_CMDLINE | BUILTIN_MENU, + "debug", + "Turn on/off the debug mode." + }; + + ++/* verbose */ ++static int ++verbose_func (char *arg, int flags) ++{ ++ if (grub_verbose) ++ { ++ grub_verbose = 0; ++ grub_printf (" Verbose mode is turned off\n"); ++ } ++ else ++ { ++ grub_verbose = 1; ++ grub_printf (" Verbose mode is turned on\n"); ++ } ++ ++ return 0; ++} ++ ++static struct builtin builtin_verbose = ++{ ++ "verbose", ++ verbose_func, ++ BUILTIN_CMDLINE | BUILTIN_MENU, ++ "verbose", ++ "Turn on/off verbose output." ++}; ++ ++ ++#if !defined(SUPPORT_DISKLESS) && !defined(GRUB_UTIL) && !defined(PLATFORM_EFI) ++static int savedefault_helper(int); ++#endif + /* default */ + static int + default_func (char *arg, int flags) + { + #ifndef SUPPORT_DISKLESS ++#ifndef GRUB_UTIL ++#ifndef PLATFORM_EFI ++ /* Has a forced once-only default been specified? */ ++ if ((saved_entryno & STAGE2_ONCEONLY_ENTRY) != 0) ++ { ++ int old_defaults=saved_entryno & ~STAGE2_ONCEONLY_ENTRY; ++ grub_timeout = 0; ++ default_entry = old_defaults >> 8; ++ savedefault_helper(old_defaults & 0xff); ++ return 0; ++ } ++#endif ++#endif + if (grub_strcmp (arg, "saved") == 0) + { + default_entry = saved_entryno; +@@ -792,7 +927,7 @@ static struct builtin builtin_default = + }; + + +-#ifdef GRUB_UTIL ++#if defined(GRUB_UTIL) || defined(PLATFORM_EFI) + /* device */ + static int + device_func (char *arg, int flags) +@@ -800,16 +935,17 @@ device_func (char *arg, int flags) + char *drive = arg; + char *device; + +- /* Get the drive number from DRIVE. */ +- if (! set_device (drive)) +- return 1; +- + /* Get the device argument. */ + device = skip_to (0, drive); +- ++ ++ nul_terminate (drive); + /* Terminate DEVICE. */ + nul_terminate (device); + ++ /* Get the drive number from DRIVE. */ ++ if (! set_device (drive)) ++ return 1; ++ + if (! *device || ! check_device (device)) + { + errnum = ERR_FILE_NOT_FOUND; +@@ -817,7 +953,7 @@ device_func (char *arg, int flags) + } + + assign_device_name (current_drive, device); +- ++ + return 0; + } + +@@ -828,9 +964,20 @@ static struct builtin builtin_device = + BUILTIN_MENU | BUILTIN_CMDLINE | BUILTIN_HELP_LIST, + "device DRIVE DEVICE", + "Specify DEVICE as the actual drive for a BIOS drive DRIVE. This command" +- " can be used only in the grub shell." ++ " can be used only in the grub shell and in EFI." + }; +-#endif /* GRUB_UTIL */ ++#endif /* defined(GRUB_UTIL) || defined(PLATFORM_EFI) */ ++#ifdef PLATFORM_EFI ++static struct builtin builtin_efimap = ++{ ++ "efimap", ++ device_func, ++ BUILTIN_MENU | BUILTIN_CMDLINE | BUILTIN_HELP_LIST, ++ "efimap DRIVE DEVICE", ++ "Specify DEVICE as the actual drive for a BIOS drive DRIVE. This command" ++ " can be used only in EFI." ++}; ++#endif /* PLATFORM_EFI */ + + + #ifdef SUPPORT_NETBOOT +@@ -852,6 +999,139 @@ static struct builtin builtin_dhcp = + }; + #endif /* SUPPORT_NETBOOT */ + ++static int terminal_func (char *arg, int flags); ++ ++#ifdef SUPPORT_GRAPHICS ++ ++static int splashimage_func(char *arg, int flags) { ++ char splashimage[64]; ++ int i; ++ ++ /* filename can only be 64 characters due to our buffer size */ ++ if (strlen(arg) > 63) ++ return 1; ++ if (flags == BUILTIN_CMDLINE) { ++ if (!grub_open(arg)) ++ return 1; ++ grub_close(); ++ } ++ ++ strcpy(splashimage, arg); ++ ++ /* get rid of TERM_NEED_INIT from the graphics terminal. */ ++ for (i = 0; term_table[i].name; i++) { ++ if (grub_strcmp (term_table[i].name, "graphics") == 0) { ++ term_table[i].flags &= ~TERM_NEED_INIT; ++ break; ++ } ++ } ++ ++ graphics_set_splash(splashimage); ++ ++ if (flags == BUILTIN_CMDLINE && graphics_inited) { ++ graphics_end(); ++ graphics_init(); ++ graphics_cls(); ++ } ++ ++ /* FIXME: should we be explicitly switching the terminal as a ++ * side effect here? */ ++ terminal_func("graphics", flags); ++ ++ return 0; ++} ++ ++static struct builtin builtin_splashimage = ++{ ++ "splashimage", ++ splashimage_func, ++ BUILTIN_CMDLINE | BUILTIN_MENU | BUILTIN_HELP_LIST, ++ "splashimage FILE", ++ "Load FILE as the background image when in graphics mode." ++}; ++ ++ ++/* foreground */ ++static int ++foreground_func(char *arg, int flags) ++{ ++ if (grub_strlen(arg) == 6) { ++ int r = ((hex(arg[0]) << 4) | hex(arg[1])) >> 2; ++ int g = ((hex(arg[2]) << 4) | hex(arg[3])) >> 2; ++ int b = ((hex(arg[4]) << 4) | hex(arg[5])) >> 2; ++ ++ foreground = (r << 16) | (g << 8) | b; ++ if (graphics_inited) ++ graphics_set_palette(15, r, g, b); ++ ++ return (0); ++ } ++ ++ return (1); ++} ++ ++static struct builtin builtin_foreground = ++{ ++ "foreground", ++ foreground_func, ++ BUILTIN_CMDLINE | BUILTIN_MENU | BUILTIN_HELP_LIST, ++ "foreground RRGGBB", ++ "Sets the foreground color when in graphics mode." ++ "RR is red, GG is green, and BB blue. Numbers must be in hexadecimal." ++}; ++ ++ ++/* background */ ++static int ++background_func(char *arg, int flags) ++{ ++ if (grub_strlen(arg) == 6) { ++ int r = ((hex(arg[0]) << 4) | hex(arg[1])) >> 2; ++ int g = ((hex(arg[2]) << 4) | hex(arg[3])) >> 2; ++ int b = ((hex(arg[4]) << 4) | hex(arg[5])) >> 2; ++ ++ background = (r << 16) | (g << 8) | b; ++ if (graphics_inited) ++ graphics_set_palette(0, r, g, b); ++ return (0); ++ } ++ ++ return (1); ++} ++ ++static struct builtin builtin_background = ++{ ++ "background", ++ background_func, ++ BUILTIN_CMDLINE | BUILTIN_MENU | BUILTIN_HELP_LIST, ++ "background RRGGBB", ++ "Sets the background color when in graphics mode." ++ "RR is red, GG is green, and BB blue. Numbers must be in hexadecimal." ++}; ++ ++#endif /* SUPPORT_GRAPHICS */ ++ ++ ++/* clear */ ++static int ++clear_func() ++{ ++ if (current_term->cls) ++ current_term->cls(); ++ ++ return 0; ++} ++ ++static struct builtin builtin_clear = ++{ ++ "clear", ++ clear_func, ++ BUILTIN_CMDLINE | BUILTIN_HELP_LIST, ++ "clear", ++ "Clear the screen" ++}; ++ ++#ifndef PLATFORM_EFI + + /* displayapm */ + static int +@@ -893,6 +1173,7 @@ static struct builtin builtin_displayapm = + "displayapm", + "Display APM BIOS information." + }; ++#endif /* !PLATFORM_EFI */ + + + /* displaymem */ +@@ -912,11 +1193,11 @@ displaymem_func (char *arg, int flags) + if (mbi.flags & MB_INFO_MEM_MAP) + { + struct AddrRangeDesc *map = (struct AddrRangeDesc *) mbi.mmap_addr; +- int end_addr = mbi.mmap_addr + mbi.mmap_length; ++ unsigned long end_addr = mbi.mmap_addr + mbi.mmap_length; + + grub_printf (" [Address Range Descriptor entries " + "immediately follow (values are 64-bit)]\n"); +- while (end_addr > (int) map) ++ while (end_addr > (unsigned long) map) + { + char *str; + +@@ -924,15 +1205,10 @@ displaymem_func (char *arg, int flags) + str = "Usable RAM"; + else + str = "Reserved"; +- grub_printf (" %s: Base Address: 0x%x X 4GB + 0x%x,\n" +- " Length: 0x%x X 4GB + 0x%x bytes\n", +- str, +- (unsigned long) (map->BaseAddr >> 32), +- (unsigned long) (map->BaseAddr & 0xFFFFFFFF), +- (unsigned long) (map->Length >> 32), +- (unsigned long) (map->Length & 0xFFFFFFFF)); +- +- map = ((struct AddrRangeDesc *) (((int) map) + 4 + map->size)); ++ grub_printf (" %s: Base Address: 0x%lx Length: 0x%lx bytes\n", ++ str, map->BaseAddr, map->Length); ++ ++ map = ((struct AddrRangeDesc *) (((unsigned long) map) + 4 + map->size)); + } + } + +@@ -1009,6 +1285,7 @@ static struct builtin builtin_dump = + }; + #endif /* GRUB_UTIL */ + ++#ifndef PLATFORM_EFI + + static char embed_info[32]; + /* embed */ +@@ -1143,6 +1420,7 @@ static struct builtin builtin_embed = + " is a drive, or in the \"bootloader\" area if DEVICE is a FFS partition." + " Print the number of sectors which STAGE1_5 occupies if successful." + }; ++#endif /* ! PLATFORM_EFI */ + + + /* fallback */ +@@ -1230,17 +1508,19 @@ find_func (char *arg, int flags) + } + + /* Hard disks. */ +- for (drive = 0x80; drive < 0x88; drive++) ++ for (drive = 0x80; drive < (0x80 + MAX_HD_NUM); drive++) + { + unsigned long part = 0xFFFFFF; +- unsigned long start, len, offset, ext_offset; +- int type, entry; +- char buf[SECTOR_SIZE]; ++ unsigned long start, len, offset, ext_offset, gpt_offset; ++ int type, entry, gpt_count, gpt_size; ++ int sector_size = get_sector_size(drive); ++ char buf[sector_size]; + + current_drive = drive; + while (next_partition (drive, 0xFFFFFF, &part, &type, + &start, &len, &offset, &entry, +- &ext_offset, buf)) ++ &ext_offset, &gpt_offset, ++ &gpt_count, &gpt_size, buf)) + { + if (type != PC_SLICE_TYPE_NONE + && ! IS_PC_SLICE_TYPE_BSD (type) +@@ -1301,6 +1581,59 @@ static struct builtin builtin_find = + "Search for the filename FILENAME in all of partitions and print the list of" + " the devices which contain the file." + }; ++ ++/* findiso */ ++ ++/* Search for an ISO 9660 partition. */ ++static int ++findiso_func (char *arg, int flags) ++{ ++ unsigned long drive; ++ unsigned long tmp_drive = saved_drive; ++ unsigned long tmp_partition = saved_partition; ++ ++ /* Hard disks. */ ++ for (drive = 0x80; drive < 0x89; drive++) ++ { ++ unsigned long part = 0xFFFFFF; ++ ++ if (drive == 0x88) ++ drive = 0x100; ++ ++ current_drive = drive; ++ current_partition = part; ++ ++ if (open_device ()) ++ { ++ char *type = get_fsys_type(); ++ if (!grub_strcmp(type, "iso9660")) ++ { ++ saved_drive = current_drive; ++ saved_partition = current_partition; ++ errnum = ERR_NONE; ++ return 0; ++ } ++ } ++ ++ /* We want to ignore any error here. */ ++ errnum = ERR_NONE; ++ } ++ ++ saved_drive = tmp_drive; ++ saved_partition = tmp_partition; ++ ++ errnum = ERR_FILE_NOT_FOUND; ++ return 1; ++} ++ ++static struct builtin builtin_findiso = ++{ ++ "findiso", ++ findiso_func, ++ BUILTIN_CMDLINE | BUILTIN_HELP_LIST, ++ "findiso FILENAME", ++ "Set root to the first device with a valid ISO 9660 filesystem." ++}; + + + /* fstest */ +@@ -1679,6 +2012,7 @@ static struct builtin builtin_ifconfig = + }; + #endif /* SUPPORT_NETBOOT */ + ++#ifndef PLATFORM_EFI + + /* impsprobe */ + static int +@@ -1706,6 +2040,7 @@ static struct builtin builtin_impsprobe = + " configuration table and boot the various CPUs which are found into" + " a tight loop." + }; ++#endif /* ! PLATFORM_EFI */ + + + /* initrd */ +@@ -1738,8 +2073,82 @@ static struct builtin builtin_initrd = + " appropriate parameters in the Linux setup area in memory." + }; + ++#ifndef PLATFORM_EFI + + /* install */ ++static struct { ++ int saved_sector; ++ int installaddr; ++ int installlist; ++ int last_length; ++ char *stage2_first_buffer; ++} install_func_context = { ++ .saved_sector = 0, ++ .installaddr = 0, ++ .installlist = 0, ++ .last_length = SECTOR_SIZE, ++ .stage2_first_buffer = NULL, ++}; ++ ++/* Save the first sector of Stage2 in STAGE2_SECT. */ ++/* Formerly disk_read_savesect_func with local scope inside install_func */ ++static void ++install_savesect_helper(int sector, int offset, int length) ++{ ++ if (debug) ++ printf ("[%d]", sector); ++ ++ /* ReiserFS has files which sometimes contain data not aligned ++ on sector boundaries. Returning an error is better than ++ silently failing. */ ++ if (offset != 0 || length != SECTOR_SIZE) ++ errnum = ERR_UNALIGNED; ++ ++ install_func_context.saved_sector = sector; ++} ++ ++/* Write SECTOR to INSTALLLIST, and update INSTALLADDR and INSTALLSECT. */ ++/* Formerly disk_read_blocklist_func with local scope inside install_func */ ++static void ++install_blocklist_helper (int sector, int offset, int length) ++{ ++ int *installaddr = &install_func_context.installaddr; ++ int *installlist = &install_func_context.installlist; ++ char **stage2_first_buffer = &install_func_context.stage2_first_buffer; ++ /* Was the last sector full? */ ++ int *last_length = &install_func_context.last_length; ++ ++ if (debug) ++ printf("[%d]", sector); ++ ++ if (offset != 0 || *last_length != SECTOR_SIZE) ++ { ++ /* We found a non-sector-aligned data block. */ ++ errnum = ERR_UNALIGNED; ++ return; ++ } ++ ++ *last_length = length; ++ ++ if (*((unsigned long *) (*installlist - 4)) ++ + *((unsigned short *) *installlist) != sector ++ || *installlist == (int) *stage2_first_buffer + SECTOR_SIZE + 4) ++ { ++ *installlist -= 8; ++ ++ if (*((unsigned long *) (*installlist - 8))) ++ errnum = ERR_WONT_FIT; ++ else ++ { ++ *((unsigned short *) (*installlist + 2)) = (*installaddr >> 4); ++ *((unsigned long *) (*installlist - 4)) = sector; ++ } ++ } ++ ++ *((unsigned short *) *installlist) += 1; ++ *installaddr += 512; ++} ++ + static int + install_func (char *arg, int flags) + { +@@ -1747,8 +2156,12 @@ install_func (char *arg, int flags) + char *stage1_buffer = (char *) RAW_ADDR (0x100000); + char *stage2_buffer = stage1_buffer + SECTOR_SIZE; + char *old_sect = stage2_buffer + SECTOR_SIZE; +- char *stage2_first_buffer = old_sect + SECTOR_SIZE; +- char *stage2_second_buffer = stage2_first_buffer + SECTOR_SIZE; ++ /* stage2_first_buffer used to be defined as: ++ * char *stage2_first_buffer = old_sect + SECTOR_SIZE; */ ++ char **stage2_first_buffer = &install_func_context.stage2_first_buffer; ++ /* and stage2_second_buffer was: ++ * char *stage2_second_buffer = stage2_first_buffer + SECTOR_SIZE; */ ++ char *stage2_second_buffer = old_sect + SECTOR_SIZE + SECTOR_SIZE; + /* XXX: Probably SECTOR_SIZE is reasonable. */ + char *config_filename = stage2_second_buffer + SECTOR_SIZE; + char *dummy = config_filename + SECTOR_SIZE; +@@ -1757,10 +2170,11 @@ install_func (char *arg, int flags) + int src_drive, src_partition, src_part_start; + int i; + struct geometry dest_geom, src_geom; +- int saved_sector; ++ int *saved_sector = &install_func_context.saved_sector; + int stage2_first_sector, stage2_second_sector; + char *ptr; +- int installaddr, installlist; ++ int *installaddr = &install_func_context.installaddr; ++ int *installlist = &install_func_context.installlist; + /* Point to the location of the name of a configuration file in Stage 2. */ + char *config_file_location; + /* If FILE is a Stage 1.5? */ +@@ -1769,68 +2183,18 @@ install_func (char *arg, int flags) + int is_open = 0; + /* If LBA is forced? */ + int is_force_lba = 0; +- /* Was the last sector full? */ +- int last_length = SECTOR_SIZE; ++ int *last_length = &install_func_context.last_length; + ++ /* Reset state. */ ++ *last_length = SECTOR_SIZE; ++ ++ *stage2_first_buffer = old_sect + SECTOR_SIZE; + #ifdef GRUB_UTIL + /* If the Stage 2 is in a partition mounted by an OS, this will store + the filename under the OS. */ + char *stage2_os_file = 0; + #endif /* GRUB_UTIL */ + +- auto void disk_read_savesect_func (int sector, int offset, int length); +- auto void disk_read_blocklist_func (int sector, int offset, int length); +- +- /* Save the first sector of Stage2 in STAGE2_SECT. */ +- auto void disk_read_savesect_func (int sector, int offset, int length) +- { +- if (debug) +- printf ("[%d]", sector); +- +- /* ReiserFS has files which sometimes contain data not aligned +- on sector boundaries. Returning an error is better than +- silently failing. */ +- if (offset != 0 || length != SECTOR_SIZE) +- errnum = ERR_UNALIGNED; +- +- saved_sector = sector; +- } +- +- /* Write SECTOR to INSTALLLIST, and update INSTALLADDR and +- INSTALLSECT. */ +- auto void disk_read_blocklist_func (int sector, int offset, int length) +- { +- if (debug) +- printf("[%d]", sector); +- +- if (offset != 0 || last_length != SECTOR_SIZE) +- { +- /* We found a non-sector-aligned data block. */ +- errnum = ERR_UNALIGNED; +- return; +- } +- +- last_length = length; +- +- if (*((unsigned long *) (installlist - 4)) +- + *((unsigned short *) installlist) != sector +- || installlist == (int) stage2_first_buffer + SECTOR_SIZE + 4) +- { +- installlist -= 8; +- +- if (*((unsigned long *) (installlist - 8))) +- errnum = ERR_WONT_FIT; +- else +- { +- *((unsigned short *) (installlist + 2)) = (installaddr >> 4); +- *((unsigned long *) (installlist - 4)) = sector; +- } +- } +- +- *((unsigned short *) installlist) += 1; +- installaddr += 512; +- } +- + /* First, check the GNU-style long option. */ + while (1) + { +@@ -1862,10 +2226,10 @@ install_func (char *arg, int flags) + addr = skip_to (0, file); + + /* Get the installation address. */ +- if (! safe_parse_maxint (&addr, &installaddr)) ++ if (! safe_parse_maxint (&addr, installaddr)) + { + /* ADDR is not specified. */ +- installaddr = 0; ++ *installaddr = 0; + ptr = addr; + errnum = 0; + } +@@ -1961,17 +2325,17 @@ install_func (char *arg, int flags) + = 0x9090; + + /* Read the first sector of Stage 2. */ +- disk_read_hook = disk_read_savesect_func; +- if (grub_read (stage2_first_buffer, SECTOR_SIZE) != SECTOR_SIZE) ++ disk_read_hook = install_savesect_helper; ++ if (grub_read (*stage2_first_buffer, SECTOR_SIZE) != SECTOR_SIZE) + goto fail; + +- stage2_first_sector = saved_sector; ++ stage2_first_sector = *saved_sector; + + /* Read the second sector of Stage 2. */ + if (grub_read (stage2_second_buffer, SECTOR_SIZE) != SECTOR_SIZE) + goto fail; + +- stage2_second_sector = saved_sector; ++ stage2_second_sector = *saved_sector; + + /* Check for the version of Stage 2. */ + if (*((short *) (stage2_second_buffer + STAGE2_VER_MAJ_OFFS)) +@@ -1987,27 +2351,27 @@ install_func (char *arg, int flags) + + /* If INSTALLADDR is not specified explicitly in the command-line, + determine it by the Stage 2 id. */ +- if (! installaddr) ++ if (! *installaddr) + { + if (! is_stage1_5) + /* Stage 2. */ +- installaddr = 0x8000; ++ *installaddr = 0x8000; + else + /* Stage 1.5. */ +- installaddr = 0x2000; ++ *installaddr = 0x2000; + } + + *((unsigned long *) (stage1_buffer + STAGE1_STAGE2_SECTOR)) + = stage2_first_sector; + *((unsigned short *) (stage1_buffer + STAGE1_STAGE2_ADDRESS)) +- = installaddr; ++ = *installaddr; + *((unsigned short *) (stage1_buffer + STAGE1_STAGE2_SEGMENT)) +- = installaddr >> 4; ++ = *installaddr >> 4; + +- i = (int) stage2_first_buffer + SECTOR_SIZE - 4; ++ i = (int) *stage2_first_buffer + SECTOR_SIZE - 4; + while (*((unsigned long *) i)) + { +- if (i < (int) stage2_first_buffer ++ if (i < (int) *stage2_first_buffer + || (*((int *) (i - 4)) & 0x80000000) + || *((unsigned short *) i) >= 0xA00 + || *((short *) (i + 2)) == 0) +@@ -2021,13 +2385,13 @@ install_func (char *arg, int flags) + i -= 8; + } + +- installlist = (int) stage2_first_buffer + SECTOR_SIZE + 4; +- installaddr += SECTOR_SIZE; ++ *installlist = (int) *stage2_first_buffer + SECTOR_SIZE + 4; ++ *installaddr += SECTOR_SIZE; + + /* Read the whole of Stage2 except for the first sector. */ + grub_seek (SECTOR_SIZE); + +- disk_read_hook = disk_read_blocklist_func; ++ disk_read_hook = install_blocklist_helper; + if (! grub_read (dummy, -1)) + goto fail; + +@@ -2110,7 +2474,7 @@ install_func (char *arg, int flags) + /* Skip the first sector. */ + grub_seek (SECTOR_SIZE); + +- disk_read_hook = disk_read_savesect_func; ++ disk_read_hook = install_savesect_helper; + if (grub_read (stage2_buffer, SECTOR_SIZE) != SECTOR_SIZE) + goto fail; + +@@ -2180,7 +2544,7 @@ install_func (char *arg, int flags) + else + #endif /* GRUB_UTIL */ + { +- if (! devwrite (saved_sector - part_start, 1, stage2_buffer)) ++ if (! devwrite (*saved_sector - part_start, 1, stage2_buffer)) + goto fail; + } + } +@@ -2202,7 +2566,7 @@ install_func (char *arg, int flags) + goto fail; + } + +- if (fwrite (stage2_first_buffer, 1, SECTOR_SIZE, fp) != SECTOR_SIZE) ++ if (fwrite (*stage2_first_buffer, 1, SECTOR_SIZE, fp) != SECTOR_SIZE) + { + fclose (fp); + errnum = ERR_WRITE; +@@ -2229,7 +2593,7 @@ install_func (char *arg, int flags) + goto fail; + + if (! devwrite (stage2_first_sector - src_part_start, 1, +- stage2_first_buffer)) ++ *stage2_first_buffer)) + goto fail; + + if (! devwrite (stage2_second_sector - src_part_start, 1, +@@ -2322,6 +2686,7 @@ static struct builtin builtin_ioprobe = + "ioprobe DRIVE", + "Probe I/O ports used for the drive DRIVE." + }; ++#endif /* ! PLATFORM_EFI */ + + + /* kernel */ +@@ -2456,6 +2821,7 @@ static struct builtin builtin_makeactive = + " This command is limited to _primary_ PC partitions on a hard disk." + }; + ++#ifndef PLATFORM_EFI + + /* map */ + /* Map FROM_DRIVE to TO_DRIVE. */ +@@ -2519,6 +2885,7 @@ static struct builtin builtin_map = + " when you chain-load some operating systems, such as DOS, if such an" + " OS resides at a non-first drive." + }; ++#endif /* ! PLATFORM_EFI */ + + + #ifdef USE_MD5_PASSWORDS +@@ -2579,6 +2946,7 @@ static struct builtin builtin_md5crypt = + }; + #endif /* USE_MD5_PASSWORDS */ + ++#ifndef PLATFORM_EFI + + /* module */ + static int +@@ -2656,6 +3024,7 @@ static struct builtin builtin_modulenounzip = + "The same as `module', except that automatic decompression is" + " disabled." + }; ++#endif /* !PLATFORM_EFI */ + + + /* pager [on|off] */ +@@ -2698,7 +3067,6 @@ partnew_func (char *arg, int flags) + int start_cl, start_ch, start_dh; + int end_cl, end_ch, end_dh; + int entry; +- char mbr[512]; + + /* Convert a LBA address to a CHS address in the INT 13 format. */ + auto void lba_to_chs (int lba, int *cl, int *ch, int *dh); +@@ -2729,6 +3097,9 @@ partnew_func (char *arg, int flags) + return 1; + } + ++ int sector_size = get_sector_size(current_drive); ++ char mbr[sector_size]; ++ + /* The partition must a primary partition. */ + if ((current_partition >> 16) > 3 + || (current_partition & 0xFFFF) != 0xFFFF) +@@ -2762,7 +3133,7 @@ partnew_func (char *arg, int flags) + return 1; + + /* Read the MBR. */ +- if (! rawread (current_drive, 0, 0, SECTOR_SIZE, mbr)) ++ if (! rawread (current_drive, 0, 0, sector_size, mbr)) + return 1; + + /* Check if the new partition will fit in the disk. */ +@@ -2815,9 +3186,8 @@ parttype_func (char *arg, int flags) + { + int new_type; + unsigned long part = 0xFFFFFF; +- unsigned long start, len, offset, ext_offset; +- int entry, type; +- char mbr[512]; ++ unsigned long start, len, offset, ext_offset, gpt_offset; ++ int entry, type, gpt_count, gpt_size; + + /* Get the drive and the partition. */ + if (! set_device (arg)) +@@ -2829,6 +3199,9 @@ parttype_func (char *arg, int flags) + errnum = ERR_BAD_ARGUMENT; + return 1; + } ++ ++ int sector_size = get_sector_size(current_drive); ++ char mbr[sector_size]; + + /* The partition must be a PC slice. */ + if ((current_partition >> 16) == 0xFF +@@ -2853,8 +3226,15 @@ parttype_func (char *arg, int flags) + /* Look for the partition. */ + while (next_partition (current_drive, 0xFFFFFF, &part, &type, + &start, &len, &offset, &entry, +- &ext_offset, mbr)) ++ &ext_offset, &gpt_offset, &gpt_count, &gpt_size, mbr)) + { ++ /* The partition may not be a GPT partition. */ ++ if (gpt_offset != 0) ++ { ++ errnum = ERR_BAD_ARGUMENT; ++ return 1; ++ } ++ + if (part == current_partition) + { + /* Found. */ +@@ -2900,6 +3280,11 @@ password_func (char *arg, int flags) + arg = skip_to (0, arg); + } + #endif ++ else if (grub_memcmp (arg, "--encrypted", 5) == 0) ++ { ++ type = PASSWORD_ENCRYPTED; ++ arg = skip_to (0, arg); ++ } + if (grub_memcmp (arg, "--", 2) == 0) + { + type = PASSWORD_UNSUPPORTED; +@@ -2947,7 +3332,7 @@ static struct builtin builtin_password = + "password", + password_func, + BUILTIN_MENU | BUILTIN_CMDLINE | BUILTIN_NO_ECHO, +- "password [--md5] PASSWD [FILE]", ++ "password [--md5|--encrypted] PASSWD [FILE]", + "If used in the first section of a menu file, disable all" + " interactive editing control (menu entry editor and" + " command line). If the password PASSWD is entered, it loads the" +@@ -2956,7 +3341,8 @@ static struct builtin builtin_password = + " instructions. You can also use it in the script section, in" + " which case it will ask for the password, before continueing." + " The option --md5 tells GRUB that PASSWD is encrypted with" +- " md5crypt." ++ " md5crypt, --encrypted that PASSWD is encrypted (with algorithm" ++ " specified in PASSWD: supported is md5, sha-256, sha-512)." + }; + + +@@ -2982,8 +3368,8 @@ static struct builtin builtin_pause = + "Print MESSAGE, then wait until a key is pressed." + }; + ++#if defined (GRUB_UTIL) || defined (PLATFORM_EFI) + +-#ifdef GRUB_UTIL + /* quit */ + static int + quit_func (char *arg, int flags) +@@ -3002,7 +3388,7 @@ static struct builtin builtin_quit = + "quit", + "Exit from the GRUB shell." + }; +-#endif /* GRUB_UTIL */ ++#endif /* defined (GRUB_UTIL) || defined (PLATFORM_EFI) */ + + + #ifdef SUPPORT_NETBOOT +@@ -3165,7 +3551,8 @@ real_root_func (char *arg, int attempt_mount) + return 1; + + /* Print the type of the filesystem. */ +- print_fsys_type (); ++ if (grub_verbose) ++ print_fsys_type (); + } + + return 0; +@@ -3217,146 +3604,181 @@ static struct builtin builtin_rootnoverify = + }; + + +-/* savedefault */ ++ ++#if !defined(SUPPORT_DISKLESS) && !defined(GRUB_UTIL) && !defined(PLATFORM_EFI) ++/* Write specified default entry number into stage2 file. */ + static int +-savedefault_func (char *arg, int flags) ++savedefault_helper(int new_default) + { +-#if !defined(SUPPORT_DISKLESS) && !defined(GRUB_UTIL) +- unsigned long tmp_drive = saved_drive; +- unsigned long tmp_partition = saved_partition; +- char *default_file = (char *) DEFAULT_FILE_BUF; +- char buf[10]; +- char sect[SECTOR_SIZE]; +- int entryno; +- int sector_count = 0; +- int saved_sectors[2]; +- int saved_offsets[2]; +- int saved_lengths[2]; +- +- /* Save sector information about at most two sectors. */ +- auto void disk_read_savesect_func (int sector, int offset, int length); +- void disk_read_savesect_func (int sector, int offset, int length) +- { +- if (sector_count < 2) +- { +- saved_sectors[sector_count] = sector; +- saved_offsets[sector_count] = offset; +- saved_lengths[sector_count] = length; +- } +- sector_count++; +- } +- +- /* This command is only useful when you boot an entry from the menu +- interface. */ +- if (! (flags & BUILTIN_SCRIPT)) ++ char buffer[512]; ++ int *entryno_ptr; ++ ++ /* Get the geometry of the boot drive (i.e. the disk which contains ++ this stage2). */ ++ if (get_diskinfo (boot_drive, &buf_geom)) + { +- errnum = ERR_UNRECOGNIZED; ++ errnum = ERR_NO_DISK; + return 1; + } + +- /* Determine a saved entry number. */ +- if (*arg) ++ /* Load the second sector of this stage2. */ ++ if (! rawread (boot_drive, install_second_sector, 0, SECTOR_SIZE, buffer)) + { +- if (grub_memcmp (arg, "fallback", sizeof ("fallback") - 1) == 0) +- { +- int i; +- int index = 0; +- +- for (i = 0; i < MAX_FALLBACK_ENTRIES; i++) +- { +- if (fallback_entries[i] < 0) +- break; +- if (fallback_entries[i] == current_entryno) +- { +- index = i + 1; +- break; +- } +- } +- +- if (index >= MAX_FALLBACK_ENTRIES || fallback_entries[index] < 0) +- { +- /* This is the last. */ +- errnum = ERR_BAD_ARGUMENT; +- return 1; +- } ++ return 1; ++ } + +- entryno = fallback_entries[index]; +- } +- else if (! safe_parse_maxint (&arg, &entryno)) +- return 1; ++ /* Sanity check. */ ++ if (buffer[STAGE2_STAGE2_ID] != STAGE2_ID_STAGE2 ++ || *((short *) (buffer + STAGE2_VER_MAJ_OFFS)) != COMPAT_VERSION) ++ { ++ errnum = ERR_BAD_VERSION; ++ return 1; + } +- else +- entryno = current_entryno; ++ ++ entryno_ptr = (int *) (buffer + STAGE2_SAVED_ENTRYNO); + +- /* Open the default file. */ +- saved_drive = boot_drive; +- saved_partition = install_partition; +- if (grub_open (default_file)) ++ /* Check if the saved entry number differs from current entry number. */ ++ if (*entryno_ptr != new_default) + { +- int len; ++ /* Overwrite the saved entry number. */ ++ *entryno_ptr = new_default; + +- disk_read_hook = disk_read_savesect_func; +- len = grub_read (buf, sizeof (buf)); +- disk_read_hook = 0; +- grub_close (); ++ /* Save the image in the disk. */ ++ if (! rawwrite (boot_drive, install_second_sector, buffer)) ++ return 1; + +- if (len != sizeof (buf)) +- { +- /* This is too small. Do not modify the file manually, please! */ +- errnum = ERR_READ; +- goto fail; +- } ++ /* Clear the cache. */ ++ buf_track = -1; ++ } + +- if (sector_count > 2) +- { +- /* Is this possible?! Too fragmented! */ +- errnum = ERR_FSYS_CORRUPT; +- goto fail; +- } +- +- /* Set up a string to be written. */ +- grub_memset (buf, '\n', sizeof (buf)); +- grub_sprintf (buf, "%d", entryno); +- +- if (saved_lengths[0] < sizeof (buf)) +- { +- /* The file is anchored to another file and the first few bytes +- are spanned in two sectors. Uggh... */ +- if (! rawread (current_drive, saved_sectors[0], 0, SECTOR_SIZE, +- sect)) +- goto fail; +- grub_memmove (sect + saved_offsets[0], buf, saved_lengths[0]); +- if (! rawwrite (current_drive, saved_sectors[0], sect)) +- goto fail; ++ return 0; ++} ++#endif + +- if (! rawread (current_drive, saved_sectors[1], 0, SECTOR_SIZE, +- sect)) +- goto fail; +- grub_memmove (sect + saved_offsets[1], +- buf + saved_lengths[0], +- sizeof (buf) - saved_lengths[0]); +- if (! rawwrite (current_drive, saved_sectors[1], sect)) +- goto fail; +- } ++#if !defined(SUPPORT_DISKLESS) && defined(GRUB_UTIL) ++#define SECTOR_SIZE 0x200 ++/* ++ * Full implementation of new `savedefault' for GRUB shell. ++ * XXX This needs fixing for stage2 files which aren't accessible ++ * through a mounted filesystem. ++ */ ++static int ++savedefault_shell(char *arg, int flags) ++{ ++ char *stage2_os_file = "/boot/grub/stage2"; /* Default filename */ ++ FILE *fp; ++ char buffer[512]; ++ int *entryno_ptr; ++ int new_default = 0; ++ int old_default = 0; ++ ++ while (1) ++ { ++ if (grub_memcmp ("--stage2=", arg, sizeof ("--stage2=") - 1) == 0) ++ { ++ stage2_os_file = arg + sizeof ("--stage2=") - 1; ++ arg = skip_to (0, arg); ++ nul_terminate (stage2_os_file); ++ } ++ else if (grub_memcmp ("--default=", arg, sizeof ("--default=") - 1) == 0) ++ { ++ char *p = arg + sizeof ("--default=") - 1; ++ if (! safe_parse_maxint (&p, &new_default)) ++ return 1; ++ arg = skip_to (0, arg); ++ } ++ else if (grub_memcmp ("--once", arg, sizeof ("--once") - 1) == 0) ++ { ++ new_default <<= 8; ++ new_default |= STAGE2_ONCEONLY_ENTRY; ++ arg = skip_to (0, arg); ++ } + else +- { +- /* This is a simple case. It fits into a single sector. */ +- if (! rawread (current_drive, saved_sectors[0], 0, SECTOR_SIZE, +- sect)) +- goto fail; +- grub_memmove (sect + saved_offsets[0], buf, sizeof (buf)); +- if (! rawwrite (current_drive, saved_sectors[0], sect)) +- goto fail; +- } ++ break; ++ } + +- /* Clear the cache. */ +- buf_track = -1; ++ if (! (fp = fopen(stage2_os_file, "r+"))) ++ { ++ errnum = ERR_FILE_NOT_FOUND; ++ return 1; ++ } ++ ++ if (fseek (fp, SECTOR_SIZE, SEEK_SET) != 0) ++ { ++ fclose (fp); ++ errnum = ERR_BAD_VERSION; ++ return 1; ++ } ++ ++ if (fread (buffer, 1, SECTOR_SIZE, fp) != SECTOR_SIZE) ++ { ++ fclose (fp); ++ errnum = ERR_READ; ++ return 1; + } + +- fail: +- saved_drive = tmp_drive; +- saved_partition = tmp_partition; +- return errnum; ++ /* Sanity check. */ ++ if (buffer[STAGE2_STAGE2_ID] != STAGE2_ID_STAGE2 ++ || *((short *) (buffer + STAGE2_VER_MAJ_OFFS)) != COMPAT_VERSION) ++ { ++ errnum = ERR_BAD_VERSION; ++ return 1; ++ } ++ ++ entryno_ptr = (int *) (buffer + STAGE2_SAVED_ENTRYNO); ++ if (new_default & STAGE2_ONCEONLY_ENTRY) ++ { ++ old_default=*entryno_ptr; ++ *entryno_ptr = new_default + (old_default & 0xFF); ++ } ++ else ++ { ++ *entryno_ptr = new_default; ++ } ++ ++ if (fseek (fp, SECTOR_SIZE, SEEK_SET) != 0) ++ { ++ fclose (fp); ++ errnum = ERR_BAD_VERSION; ++ return 1; ++ } ++ ++ if (fwrite (buffer, 1, SECTOR_SIZE, fp) != SECTOR_SIZE) ++ { ++ fclose (fp); ++ errnum = ERR_WRITE; ++ return 1; ++ } ++ ++ (void)fflush (fp); ++ fclose (fp); ++ return 0; ++} ++#undef SECTOR_SIZE ++#endif ++ ++/* savedefault */ ++static int ++savedefault_func (char *arg, int flags) ++{ ++#if !defined(SUPPORT_DISKLESS) ++#if !defined(GRUB_UTIL) ++#if !defined(PLATFORM_EFI) ++ /* This command is only useful when you boot an entry from the menu ++ interface. */ ++ if (! (flags & BUILTIN_SCRIPT)) ++ { ++ errnum = ERR_UNRECOGNIZED; ++ return 1; ++ } ++ ++ return savedefault_helper(current_entryno); ++#else /* defined(PLATFORM_EFI) */ ++ return grub_save_saved_default (current_entryno); ++#endif ++#else /* defined(GRUB_UTIL) */ ++ return savedefault_shell(arg, flags); ++#endif + #else /* ! SUPPORT_DISKLESS && ! GRUB_UTIL */ + errnum = ERR_UNRECOGNIZED; + return 1; +@@ -3368,10 +3790,14 @@ static struct builtin builtin_savedefault = + "savedefault", + savedefault_func, + BUILTIN_CMDLINE, +- "savedefault [NUM | `fallback']", +- "Save the current entry as the default boot entry if no argument is" +- " specified. If a number is specified, this number is saved. If" +- " `fallback' is used, next fallback entry is saved." ++#ifdef GRUB_UTIL ++ "savedefault [--stage2=STAGE2_FILE] [--default=DEFAULT] [--once]", ++ "Save DEFAULT as the default boot entry in STAGE2_FILE. If '--once'" ++ " is specified, the default is reset after the next reboot." ++#else ++ "savedefault", ++ "Save the current entry as the default boot entry." ++#endif + }; + + +@@ -3527,6 +3953,7 @@ static struct builtin builtin_serial = + }; + #endif /* SUPPORT_SERIAL */ + ++#ifndef PLATFORM_EFI + + /* setkey */ + struct keysym +@@ -3612,50 +4039,47 @@ static struct keysym keysym_table[] = + {"delete", 0, 0x7f, 0, 0x53} + }; + +-static int +-setkey_func (char *arg, int flags) ++static int find_key_code (char *key) + { +- char *to_key, *from_key; +- int to_code, from_code; +- int map_in_interrupt = 0; +- +- auto int find_key_code (char *key); +- auto int find_ascii_code (char *key); +- +- auto int find_key_code (char *key) +- { +- int i; ++ int i; + +- for (i = 0; i < sizeof (keysym_table) / sizeof (keysym_table[0]); i++) +- { +- if (keysym_table[i].unshifted_name && +- grub_strcmp (key, keysym_table[i].unshifted_name) == 0) +- return keysym_table[i].keycode; +- else if (keysym_table[i].shifted_name && +- grub_strcmp (key, keysym_table[i].shifted_name) == 0) +- return keysym_table[i].keycode; +- } +- +- return 0; ++ for (i = 0; i < sizeof (keysym_table) / sizeof (keysym_table[0]); i++) ++ { ++ if (keysym_table[i].unshifted_name && ++ grub_strcmp (key, keysym_table[i].unshifted_name) == 0) ++ return keysym_table[i].keycode; ++ else if (keysym_table[i].shifted_name && ++ grub_strcmp (key, keysym_table[i].shifted_name) == 0) ++ return keysym_table[i].keycode; + } + +- auto int find_ascii_code (char *key) ++ return 0; ++} ++ ++static int find_ascii_code (char *key) ++{ ++ int i; ++ ++ for (i = 0; i < sizeof (keysym_table) / sizeof (keysym_table[0]); i++) + { +- int i; +- +- for (i = 0; i < sizeof (keysym_table) / sizeof (keysym_table[0]); i++) +- { +- if (keysym_table[i].unshifted_name && +- grub_strcmp (key, keysym_table[i].unshifted_name) == 0) +- return keysym_table[i].unshifted_ascii; +- else if (keysym_table[i].shifted_name && +- grub_strcmp (key, keysym_table[i].shifted_name) == 0) +- return keysym_table[i].shifted_ascii; +- } +- +- return 0; ++ if (keysym_table[i].unshifted_name && ++ grub_strcmp (key, keysym_table[i].unshifted_name) == 0) ++ return keysym_table[i].unshifted_ascii; ++ else if (keysym_table[i].shifted_name && ++ grub_strcmp (key, keysym_table[i].shifted_name) == 0) ++ return keysym_table[i].shifted_ascii; + } + ++ return 0; ++} ++ ++static int ++setkey_func (char *arg, int flags) ++{ ++ char *to_key, *from_key; ++ int to_code, from_code; ++ int map_in_interrupt = 0; ++ + to_key = arg; + from_key = skip_to (0, to_key); + +@@ -3830,15 +4254,15 @@ setup_func (char *arg, int flags) + { + char tmp[16]; + grub_sprintf (tmp, ",%d", (partition >> 16) & 0xFF); +- grub_strncat (device, tmp, 256); ++ grub_strncat (device, tmp, 16); + } + if ((partition & 0x00FF00) != 0x00FF00) + { + char tmp[16]; + grub_sprintf (tmp, ",%c", 'a' + ((partition >> 8) & 0xFF)); +- grub_strncat (device, tmp, 256); ++ grub_strncat (device, tmp, 16); + } +- grub_strncat (device, ")", 256); ++ grub_strncat (device, ")", 16); + } + + int embed_stage1_5 (char *stage1_5, int drive, int partition) +@@ -3973,7 +4397,7 @@ setup_func (char *arg, int flags) + + /* The prefix was determined. */ + grub_sprintf (stage2, "%s%s", prefix, "/stage2"); +- grub_sprintf (config_filename, "%s%s", prefix, "/menu.lst"); ++ grub_sprintf (config_filename, "%s%s", prefix, "/grub.conf"); + *real_config_filename = 0; + + /* Check if stage2 exists. */ +@@ -4083,9 +4507,26 @@ static struct builtin builtin_setup = + " partition where GRUB images reside, specify the option `--stage2'" + " to tell GRUB the file name under your OS." + }; ++#endif /* ! PLATFORM_EFI */ ++ ++ ++static int ++silent_func (char *arg, int flags) ++{ ++ silent_grub = 1; ++ return 0; ++} ++ ++static struct builtin builtin_silent = ++{ ++ "silent", ++ silent_func, ++ BUILTIN_MENU | BUILTIN_CMDLINE | BUILTIN_HELP_LIST, ++ "grub will attempt to avoid printing anything to the screen" ++}; + + +-#if defined(SUPPORT_SERIAL) || defined(SUPPORT_HERCULES) ++#if defined(SUPPORT_SERIAL) || defined(SUPPORT_HERCULES) || defined(SUPPORT_GRAPHICS) + /* terminal */ + static int + terminal_func (char *arg, int flags) +@@ -4244,17 +4685,21 @@ terminal_func (char *arg, int flags) + end: + current_term = term_table + default_term; + current_term->flags = term_flags; +- ++ + if (lines) + max_lines = lines; + else +- /* 24 would be a good default value. */ +- max_lines = 24; +- ++ max_lines = current_term->max_lines; ++ + /* If the interface is currently the command-line, + restart it to repaint the screen. */ +- if (current_term != prev_term && (flags & BUILTIN_CMDLINE)) ++ if ((current_term != prev_term) && (flags & BUILTIN_CMDLINE)){ ++ if (prev_term->shutdown) ++ prev_term->shutdown(); ++ if (current_term->startup) ++ current_term->startup(); + grub_longjmp (restart_cmdline_env, 0); ++ } + + return 0; + } +@@ -4264,7 +4709,7 @@ static struct builtin builtin_terminal = + "terminal", + terminal_func, + BUILTIN_MENU | BUILTIN_CMDLINE | BUILTIN_HELP_LIST, +- "terminal [--dumb] [--no-echo] [--no-edit] [--timeout=SECS] [--lines=LINES] [--silent] [console] [serial] [hercules]", ++ "terminal [--dumb] [--no-echo] [--no-edit] [--timeout=SECS] [--lines=LINES] [--silent] [console] [serial] [hercules] [graphics]", + "Select a terminal. When multiple terminals are specified, wait until" + " you push any key to continue. If both console and serial are specified," + " the terminal to which you input a key first will be selected. If no" +@@ -4276,7 +4721,7 @@ static struct builtin builtin_terminal = + " seconds. The option --lines specifies the maximum number of lines." + " The option --silent is used to suppress messages." + }; +-#endif /* SUPPORT_SERIAL || SUPPORT_HERCULES */ ++#endif /* SUPPORT_SERIAL || SUPPORT_HERCULES || SUPPORT_GRAPHICS */ + + + #ifdef SUPPORT_SERIAL +@@ -4462,6 +4907,7 @@ static struct builtin builtin_testload = + " step is to try loading a kernel." + }; + ++#ifndef PLATFORM_EFI + + /* testvbe MODE */ + static int +@@ -4566,6 +5012,7 @@ static struct builtin builtin_testvbe = + "testvbe MODE", + "Test the VBE mode MODE. Hit any key to return." + }; ++#endif /* !PLATFORM_EFI */ + + + #ifdef SUPPORT_NETBOOT +@@ -4598,6 +5045,15 @@ static struct builtin builtin_tftpserver = + static int + timeout_func (char *arg, int flags) + { ++ /* One-shot default shenanigans -- don't piss around with the menu! */ ++ if (grub_timeout != -1) ++ return 0; ++ if ((saved_entryno & STAGE2_ONCEONLY_ENTRY) != 0) ++ { ++ grub_timeout = 0; ++ return 0; ++ } ++ + if (! safe_parse_maxint (&arg, &grub_timeout)) + return 1; + +@@ -4661,6 +5117,7 @@ static struct builtin builtin_unhide = + " partition type code." + }; + ++#ifndef PLATFORM_EFI + + /* uppermem */ + static int +@@ -4790,11 +5247,34 @@ static struct builtin builtin_vbeprobe = + "Probe VBE information. If the mode number MODE is specified, show only" + " the information about only the mode." + }; +- ++#endif /* ! PLATFORM_EFI */ ++ ++ ++/* version */ ++static int ++version_func (char *arg, int flags) ++{ ++ grub_printf ("\n GNU GRUB version %s (%dK lower / %dK upper memory)\n\n", ++ version_string, mbi.mem_lower, mbi.mem_upper); ++ return 0; ++} ++ ++static struct builtin builtin_version = ++{ ++ "version", ++ version_func, ++ BUILTIN_CMDLINE | BUILTIN_HELP_LIST, ++ "version", ++ "Display grub version." ++}; ++ + + /* The table of builtin commands. Sorted in dictionary order. */ + struct builtin *builtin_table[] = + { ++#ifdef SUPPORT_GRAPHICS ++ &builtin_background, ++#endif + &builtin_blocklist, + &builtin_boot, + #ifdef SUPPORT_NETBOOT +@@ -4802,25 +5282,37 @@ struct builtin *builtin_table[] = + #endif /* SUPPORT_NETBOOT */ + &builtin_cat, + &builtin_chainloader, ++ &builtin_clear, + &builtin_cmp, + &builtin_color, + &builtin_configfile, + &builtin_debug, + &builtin_default, +-#ifdef GRUB_UTIL ++#if defined(GRUB_UTIL) || defined(PLATFORM_EFI) + &builtin_device, +-#endif /* GRUB_UTIL */ ++#endif /* defined(GRUB_UTIL) || defined(PLATFORM_EFI) */ + #ifdef SUPPORT_NETBOOT + &builtin_dhcp, + #endif /* SUPPORT_NETBOOT */ ++#ifndef PLATFORM_EFI + &builtin_displayapm, ++#endif + &builtin_displaymem, + #ifdef GRUB_UTIL + &builtin_dump, + #endif /* GRUB_UTIL */ ++#ifdef PLATFORM_EFI ++ &builtin_efimap, ++#endif ++#ifndef PLATFORM_EFI + &builtin_embed, ++#endif + &builtin_fallback, + &builtin_find, ++ &builtin_findiso, ++#ifdef SUPPORT_GRAPHICS ++ &builtin_foreground, ++#endif + &builtin_fstest, + &builtin_geometry, + &builtin_halt, +@@ -4830,27 +5322,35 @@ struct builtin *builtin_table[] = + #ifdef SUPPORT_NETBOOT + &builtin_ifconfig, + #endif /* SUPPORT_NETBOOT */ ++#ifndef PLATFORM_EFI + &builtin_impsprobe, ++#endif + &builtin_initrd, ++#ifndef PLATFORM_EFI + &builtin_install, + &builtin_ioprobe, ++#endif + &builtin_kernel, + &builtin_lock, + &builtin_makeactive, ++#ifndef PLATFORM_EFI + &builtin_map, ++#endif + #ifdef USE_MD5_PASSWORDS + &builtin_md5crypt, + #endif /* USE_MD5_PASSWORDS */ ++#ifndef PLATFORM_EFI + &builtin_module, + &builtin_modulenounzip, ++#endif + &builtin_pager, + &builtin_partnew, + &builtin_parttype, + &builtin_password, + &builtin_pause, +-#ifdef GRUB_UTIL ++#if defined(GRUB_UTIL) || defined(PLATFORM_EFI) + &builtin_quit, +-#endif /* GRUB_UTIL */ ++#endif /* defined(GRUB_UTIL) || defined(PLATFORM_EFI) */ + #ifdef SUPPORT_NETBOOT + &builtin_rarp, + #endif /* SUPPORT_NETBOOT */ +@@ -4862,23 +5362,35 @@ struct builtin *builtin_table[] = + #ifdef SUPPORT_SERIAL + &builtin_serial, + #endif /* SUPPORT_SERIAL */ ++#ifndef PLATFORM_EFI + &builtin_setkey, + &builtin_setup, +-#if defined(SUPPORT_SERIAL) || defined(SUPPORT_HERCULES) ++#endif ++ &builtin_silent, ++#ifdef SUPPORT_GRAPHICS ++ &builtin_splashimage, ++#endif /* SUPPORT_GRAPHICS */ ++#if defined(SUPPORT_SERIAL) || defined(SUPPORT_HERCULES) || defined(SUPPORT_GRAPHICS) + &builtin_terminal, +-#endif /* SUPPORT_SERIAL || SUPPORT_HERCULES */ ++#endif /* SUPPORT_SERIAL || SUPPORT_HERCULES || SUPPORT_GRAPHICS */ + #ifdef SUPPORT_SERIAL + &builtin_terminfo, + #endif /* SUPPORT_SERIAL */ + &builtin_testload, ++#ifndef PLATFORM_EFI + &builtin_testvbe, ++#endif + #ifdef SUPPORT_NETBOOT + &builtin_tftpserver, + #endif /* SUPPORT_NETBOOT */ + &builtin_timeout, + &builtin_title, + &builtin_unhide, ++#ifndef PLATFORM_EFI + &builtin_uppermem, + &builtin_vbeprobe, ++#endif ++ &builtin_verbose, ++ &builtin_version, + 0 + }; +diff --git a/stage2/char_io.c b/stage2/char_io.c +index c86c240..073201a 100644 +--- a/stage2/char_io.c ++++ b/stage2/char_io.c +@@ -35,29 +35,37 @@ struct term_entry term_table[] = + { + "console", + 0, ++ 24, + console_putchar, + console_checkkey, + console_getkey, ++ console_keystatus, + console_getxy, + console_gotoxy, + console_cls, + console_setcolorstate, + console_setcolor, +- console_setcursor ++ console_setcursor, ++ 0, ++ 0 + }, + #ifdef SUPPORT_SERIAL + { + "serial", + /* A serial device must be initialized. */ + TERM_NEED_INIT, ++ 24, + serial_putchar, + serial_checkkey, + serial_getkey, ++ 0, + serial_getxy, + serial_gotoxy, + serial_cls, + serial_setcolorstate, + 0, ++ 0, ++ 0, + 0 + }, + #endif /* SUPPORT_SERIAL */ +@@ -65,17 +73,39 @@ struct term_entry term_table[] = + { + "hercules", + 0, ++ 24, + hercules_putchar, + console_checkkey, + console_getkey, ++ console_keystatus, + hercules_getxy, + hercules_gotoxy, + hercules_cls, + hercules_setcolorstate, + hercules_setcolor, +- hercules_setcursor ++ hercules_setcursor, ++ 0, ++ 0 + }, + #endif /* SUPPORT_HERCULES */ ++#ifdef SUPPORT_GRAPHICS ++ { "graphics", ++ TERM_NEED_INIT, /* flags */ ++ 30, /* number of lines */ ++ graphics_putchar, /* putchar */ ++ console_checkkey, /* checkkey */ ++ console_getkey, /* getkey */ ++ console_keystatus, /* keystatus */ ++ graphics_getxy, /* getxy */ ++ graphics_gotoxy, /* gotoxy */ ++ graphics_cls, /* cls */ ++ graphics_setcolorstate, /* setcolorstate */ ++ graphics_setcolor, /* setcolor */ ++ graphics_setcursor, /* nocursor */ ++ graphics_init, /* initialize */ ++ graphics_end /* shutdown */ ++ }, ++#endif /* SUPPORT_GRAPHICS */ + /* This must be the last entry. */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + }; +@@ -101,16 +131,16 @@ print_error (void) + } + + char * +-convert_to_ascii (char *buf, int c,...) ++convert_to_ascii (char *buf, int c, unsigned int num) + { +- unsigned long num = *((&c) + 1), mult = 10; ++ unsigned int mult = 10; + char *ptr = buf; + + #ifndef STAGE1_5 + if (c == 'x' || c == 'X') + mult = 16; + +- if ((num & 0x80000000uL) && c == 'd') ++ if ((int) num < 0 && c == 'd') + { + num = (~num) + 1; + *(ptr++) = '-'; +@@ -149,87 +179,266 @@ grub_putstr (const char *str) + grub_putchar (*str++); + } + +-void +-grub_printf (const char *format,...) ++static void write_char(char **str, char c, int *count) + { +- int *dataptr = (int *) &format; +- char c, str[16]; +- +- dataptr++; +- +- while ((c = *(format++)) != 0) +- { +- if (c != '%') +- grub_putchar (c); +- else +- switch (c = *(format++)) +- { +-#ifndef STAGE1_5 +- case 'd': +- case 'x': +- case 'X': +-#endif +- case 'u': +- *convert_to_ascii (str, c, *((unsigned long *) dataptr++)) = 0; +- grub_putstr (str); +- break; +- +-#ifndef STAGE1_5 +- case 'c': +- grub_putchar ((*(dataptr++)) & 0xff); +- break; ++ if (str && *str) ++ *(*str)++ = c; ++ else ++ putchar(c); ++ (*count)++; ++} + +- case 's': +- grub_putstr ((char *) *(dataptr++)); +- break; +-#endif +- } ++static void write_str(char **str, char *s, int *count) ++{ ++ if (s) { ++ while (*s) ++ write_char(str, *s++, count); ++ } else { ++ write_str(str, "(nil)", count); + } + } + +-#ifndef STAGE1_5 ++#define format_ascii(buf, val, is_hex, is_cap, num_pad_chars) ({ \ ++ int _n = sizeof ((buf)) - 2; \ ++ typeof(val) _nval = (val); \ ++ int _negative = 0; \ ++ int _mult = is_hex ? 16 : 10; \ ++ char _a = is_cap ? 'A' : 'a'; \ ++ int _pad = num_pad_chars; \ ++ char hex[] = "0123456789abcdef"; \ ++ memset((buf), '\0', sizeof ((buf))); \ ++ if (!(_nval > 0LL)) \ ++ _negative = 1; \ ++ if (_nval == 0LL) \ ++ _negative = 0; \ ++ if (_negative) \ ++ _nval = (_nval ^ -1); \ ++ do { \ ++ int _dig = _nval % _mult; \ ++ (buf)[_n--] = ((_dig > 9) ? _dig + _a - 10 : '0'+_dig); \ ++ if (_pad > 0) _pad--; \ ++ } while (_nval /= _mult); \ ++ while (_pad--) \ ++ (buf)[_n--] = '0'; \ ++ if (_negative) \ ++ (buf)[_n--] = '-'; \ ++ _mult = 0; \ ++ _n++; \ ++ while (_n < sizeof ((buf))) \ ++ (buf)[_mult++] = (buf)[_n++]; \ ++ if (_negative && _mult > 1) \ ++ ((buf)[_mult-2])++; \ ++ }) ++ + int +-grub_sprintf (char *buffer, const char *format, ...) ++grub_vsprintf (char *str, const char *fmt, va_list args) + { +- /* XXX hohmuth +- ugly hack -- should unify with printf() */ +- int *dataptr = (int *) &format; +- char c, *ptr, str[16]; +- char *bp = buffer; +- +- dataptr++; +- +- while ((c = *format++) != 0) +- { +- if (c != '%') +- *bp++ = c; /* putchar(c); */ +- else +- switch (c = *(format++)) +- { +- case 'd': case 'u': case 'x': +- *convert_to_ascii (str, c, *((unsigned long *) dataptr++)) = 0; +- +- ptr = str; ++ char c; ++ char buf[40]; ++ int pos = 0; ++ ++ int count = 0; ++ ++ char *str_arg; ++ int int_arg; ++ unsigned char uchar_arg; ++ unsigned ushort_arg; ++ unsigned int uint_arg; ++ signed long long_arg; ++ unsigned long ulong_arg; ++ signed long long longlong_arg; ++ unsigned long long ulonglong_arg; ++ ++ c = *fmt++; ++ if (!c) ++ return 0; ++ ++ int is_fmt = 0, is_long = 0, is_signed = 1, is_cap = 0, is_zero_padded = 0; ++ int num_pad_chars = 0; ++ int restart = 1; ++ do { ++ if (restart) { ++ restart = 0; ++ is_fmt = 0; ++ is_long = 0; ++ is_cap = 0; ++ is_signed = 1; ++ is_zero_padded = 0; ++ num_pad_chars = 0; ++ buf[0] = '\0'; ++ pos = 0; ++ } ++ ++ if (!is_fmt) { ++ if (c == '%') { ++ is_fmt = 1; ++ buf[pos++] = c; ++ buf[pos] = '\0'; ++ continue; ++ } else { ++ write_char(&str, c, &count); ++ continue; ++ } ++ } ++ ++ /* below here we only ever hit when is_fmt is 1 */ ++ switch (c) { ++ /* first, modifiers */ ++ case '%': ++ if (pos != 0) ++ write_str(&str, buf, &count); ++ write_char(&str, c, &count); ++ restart = 1; ++ continue; ++ case '0': ++ if (!is_zero_padded) { ++ buf[pos++] = c; ++ buf[pos] = '\0'; ++ is_zero_padded++; ++ continue; ++ } ++ case '1': ++ case '2': ++ case '3': ++ case '4': ++ case '5': ++ case '6': ++ case '7': ++ case '8': ++ case '9': ++ buf[pos++] = c; ++ buf[pos] = '\0'; ++ num_pad_chars *= 10; ++ num_pad_chars += c - '0'; ++ continue; ++ case 'l': ++ buf[pos++] = c; ++ buf[pos] = '\0'; ++ is_long++; ++ continue; ++ case 'L': ++ buf[pos++] = c; ++ buf[pos] = '\0'; ++ is_long = 2; ++ continue; ++ ++ /* below here are things we actually have to print */ ++ case 'c': ++ int_arg = va_arg(args, int) & 0xff; ++ if (int_arg == 0) { ++ char *tmp_str = "\\x00"; ++ write_str(&tmp_str, buf, &count); ++ } else { ++ write_char(&str, int_arg, &count); ++ } ++ restart = 1; ++ continue; ++ case 'd': ++ if (is_long == 0) { ++ int_arg = va_arg(args, signed int); ++ format_ascii(buf, int_arg, 0, 0, 0); ++ } else if (is_long == 1) { ++ long_arg = va_arg(args, signed long); ++ format_ascii(buf, long_arg, 0, 0, 0); ++ } else { ++ longlong_arg = va_arg(args, signed long long); ++ format_ascii(buf, longlong_arg, 0, 0, 0); ++ } ++ write_str(&str, buf, &count); ++ restart = 1; ++ continue; ++ case 's': ++ str_arg = va_arg(args, char *); ++ write_str(&str, str_arg, &count); ++ restart = 1; ++ continue; ++ case 'u': ++ case 'U': ++ if (is_long == 0) { ++ uint_arg = va_arg(args, unsigned int); ++ format_ascii(buf, uint_arg, 0, 0, 0); ++ } else if (is_long == 1) { ++ ulong_arg = va_arg(args, unsigned long); ++ format_ascii(buf, ulong_arg, 0, 0, 0); ++ } else { ++ ulonglong_arg = va_arg(args, unsigned long long); ++ format_ascii(buf, ulonglong_arg, 0, 0, 0); ++ } ++ write_str(&str, buf, &count); ++ restart = 1; ++ continue; ++ case 'P': ++ is_cap = 1; ++ case 'p': ++ ulong_arg = va_arg(args, unsigned long); ++ is_zero_padded = 1; ++ format_ascii(buf, ulong_arg, 1, is_cap, sizeof(ulong_arg)); ++ write_str(&str, is_cap ? "0X" : "0x", &count); ++ write_str(&str, buf, &count); ++ restart = 1; ++ continue; ++ case 'X': ++ is_cap = 1; ++ case 'x': ++ if (num_pad_chars == 2) { ++ int i; ++ char hex[] = "0123456789abcdef"; ++ uint_arg = va_arg(args, unsigned int); ++ uchar_arg = uint_arg & 0xff; ++ format_ascii(buf, uchar_arg, 1, is_cap, num_pad_chars); ++ } else if (num_pad_chars == 4) { ++ uint_arg = va_arg(args, unsigned int); ++ ushort_arg = uint_arg & 0xffff; ++ format_ascii(buf, ushort_arg, 1, is_cap, num_pad_chars); ++ } else if (is_long == 0) { ++ uint_arg = va_arg(args, unsigned int); ++ format_ascii(buf, uint_arg, 1, is_cap, num_pad_chars); ++ } else if (is_long == 1) { ++ ulong_arg = va_arg(args, unsigned long); ++ format_ascii(buf, ulong_arg, 1, is_cap, num_pad_chars); ++ } else { ++ ulonglong_arg = va_arg(args, unsigned long long); ++ format_ascii(buf, ulonglong_arg, 1, is_cap, num_pad_chars); ++ } ++ write_str(&str, buf, &count); ++ restart = 1; ++ continue; ++ default: ++ buf[pos++] = c; ++ buf[pos] = '\0'; ++ write_str(&str, buf, &count); ++ restart = 1; ++ continue; ++ } ++ } while ((c = *fmt++)); ++ ++ if (str) ++ *str = '\0'; ++ return count; ++} + +- while (*ptr) +- *bp++ = *(ptr++); /* putchar(*(ptr++)); */ +- break; ++void ++grub_printf (char *fmt, ...) ++{ ++ va_list ap; + +- case 'c': *bp++ = (*(dataptr++))&0xff; +- /* putchar((*(dataptr++))&0xff); */ +- break; ++ va_start (ap, fmt); ++ grub_vsprintf (0, fmt, ap); ++ va_end (ap); ++} + +- case 's': +- ptr = (char *) (*(dataptr++)); ++#ifndef STAGE1_5 ++int ++grub_sprintf (char *str, const char *fmt, ...) ++{ ++ va_list ap; ++ int ret; + +- while ((c = *ptr++) != 0) +- *bp++ = c; /* putchar(c); */ +- break; +- } +- } ++ va_start (ap, fmt); ++ ret = grub_vsprintf (str, fmt, ap); ++ va_end (ap); + +- *bp = 0; +- return bp - buffer; ++ return ret; + } + + +@@ -898,7 +1107,6 @@ safe_parse_maxint (char **str_ptr, int *myint_ptr) + } + #endif /* STAGE1_5 */ + +-#if !defined(STAGE1_5) || defined(FSYS_FAT) + int + grub_tolower (int c) + { +@@ -907,7 +1115,6 @@ grub_tolower (int c) + + return c; + } +-#endif /* ! STAGE1_5 || FSYS_FAT */ + + int + grub_isspace (int c) +@@ -1004,6 +1211,16 @@ checkkey (void) + { + return current_term->checkkey (); + } ++ ++/* Return keyboard modifier status. */ ++int ++keystatus (void) ++{ ++ if (current_term->keystatus) ++ return current_term->keystatus (); ++ else ++ return 0; ++} + #endif /* ! STAGE1_5 */ + + /* Display an ASCII character. */ +@@ -1046,13 +1263,15 @@ grub_putchar (int c) + the following grub_printf call will print newlines. */ + count_lines = -1; + ++ grub_printf("\n"); + if (current_term->setcolorstate) + current_term->setcolorstate (COLOR_STATE_HIGHLIGHT); + +- grub_printf ("\n[Hit return to continue]"); ++ grub_printf ("[Hit return to continue]"); + + if (current_term->setcolorstate) + current_term->setcolorstate (COLOR_STATE_NORMAL); ++ + + do + { +@@ -1090,7 +1309,7 @@ void + cls (void) + { + /* If the terminal is dumb, there is no way to clean the terminal. */ +- if (current_term->flags & TERM_DUMB) ++ if (current_term->flags & TERM_DUMB) + grub_putchar ('\n'); + else + current_term->cls (); +@@ -1125,6 +1344,26 @@ substring (const char *s1, const char *s2) + return 1; + } + ++int ++subcasestring (const char *s1, const char *s2) ++{ ++ while (tolower(*s1) == tolower(*s2)) ++ { ++ /* The strings match exactly. */ ++ if (! *(s1++)) ++ return 0; ++ s2 ++; ++ } ++ ++ /* S1 is a substring of S2. */ ++ if (*s1 == 0) ++ return -1; ++ ++ /* S1 isn't a substring. */ ++ return 1; ++} ++ ++ + #ifndef STAGE1_5 + /* Terminate the string STR with NUL. */ + int +@@ -1172,41 +1411,180 @@ grub_strlen (const char *str) + + return len; + } +-#endif /* ! STAGE1_5 */ + ++/* this function "borrowed" from dietlibc */ + int +-memcheck (int addr, int len) ++grub_strspn(const char *s, const char *accept) + { +-#ifdef GRUB_UTIL +- auto int start_addr (void); +- auto int end_addr (void); +- +- auto int start_addr (void) ++ int l=0; ++ int a=1,i,al=grub_strlen(accept); ++ ++ while((a)&&(*s)) ++ { ++ for(a=i=0;(!a)&&(i terminate it */ ++ } ++ *ptrptr=s; ++ return tmp; ++} ++ ++char * ++grub_strchr (const char *s, int c) ++{ ++ while (*s) + { +- int ret; ++ if (*s == c) ++ return (char *) s; ++ s++; ++ } ++ ++ return 0; ++} ++ ++char * ++grub_strnchr (const char *s, int c) ++{ ++ while (*s) ++ { ++ if (*s != c) ++ return (char *) s; ++ s++; ++ } ++ ++ return 0; ++} ++ ++char * ++grub_strrchr (const char *s, int c) ++{ ++ char *p = 0; ++ ++ while (*s) ++ { ++ if (*s == c) ++ p = (char *) s; ++ s++; ++ } ++ ++ return p; ++} ++ ++int ++grub_strnlen (const char *s, int n) ++{ ++ int i; ++ ++ if (n == 0) ++ return 0; ++ ++ for (i = 0; s[i] != '\0' && i < n; i++) ++ ; ++ return i; ++} ++ ++char * ++grub_strncpy(char *new, const char *s, int n) ++{ ++ int i; ++ ++ for (i = 0; s[i] != '\0' && i < n; i++) ++ new[i] = s[i]; ++ return new; ++} ++ ++int ++grub_strncasecmp(const char *s0, const char *s1, int n) ++{ ++ int c0, c1; ++ ++ if (s0 == s1 || n == 0) ++ return 0; ++ ++ do { ++ c0 = *s0 & ~0x20; ++ c1 = *s1 & ~0x20; ++ ++ if (--n == 0 || c0 == '\0') ++ break; ++ ++ *s0++; ++ *s1++; ++ } while (c0 == c1); ++ ++ return (c0 > c1 ? 1 : c0 < c1 ? -1 : 0); ++} ++ ++#endif /* ! STAGE1_5 */ ++ ++#ifdef GRUB_UTIL ++static int memcheck_start_addr (void) ++{ ++ int ret; + # if defined(HAVE_START_SYMBOL) +- asm volatile ("movl $start, %0" : "=a" (ret)); ++ asm volatile ("movl $start, %0" : "=a" (ret)); + # elif defined(HAVE_USCORE_START_SYMBOL) +- asm volatile ("movl $_start, %0" : "=a" (ret)); ++ asm volatile ("movl $_start, %0" : "=a" (ret)); + # endif +- return ret; +- } ++ return ret; ++} + +- auto int end_addr (void) +- { +- int ret; ++static int memcheck_end_addr (void) ++{ ++ int ret; + # if defined(HAVE_END_SYMBOL) +- asm volatile ("movl $end, %0" : "=a" (ret)); ++ asm volatile ("movl $end, %0" : "=a" (ret)); + # elif defined(HAVE_USCORE_END_SYMBOL) +- asm volatile ("movl $_end, %0" : "=a" (ret)); ++ asm volatile ("movl $_end, %0" : "=a" (ret)); + # endif +- return ret; +- } ++ return ret; ++} ++#endif /* GRUB_UTIL */ + +- if (start_addr () <= addr && end_addr () > addr + len) ++int ++memcheck (int addr, int len) ++{ ++#ifdef GRUB_UTIL ++ if (memcheck_start_addr () <= addr && memcheck_end_addr () > addr + len) + return ! errnum; + #endif /* GRUB_UTIL */ + ++#ifdef PLATFORM_EFI ++ return 1; ++#else + if ((addr < RAW_ADDR (0x1000)) + || (addr < RAW_ADDR (0x100000) + && RAW_ADDR (mbi.mem_lower * 1024) < (addr + len)) +@@ -1215,12 +1593,23 @@ memcheck (int addr, int len) + errnum = ERR_WONT_FIT; + + return ! errnum; ++#endif ++} ++ ++void ++grub_memcpy(void *dest, const void *src, int len) ++{ ++ int i; ++ register char *d = (char*)dest, *s = (char*)src; ++ ++ for (i = 0; i < len; i++) ++ d[i] = s[i]; + } + + void * + grub_memmove (void *to, const void *from, int len) + { +- if (memcheck ((int) to, len)) ++ if (memcheck ((unsigned long) to, len)) + { + /* This assembly code is stolen from + linux-2.2.2/include/asm-i386/string.h. This is not very fast +@@ -1258,7 +1647,7 @@ grub_memset (void *start, int c, int len) + { + char *p = start; + +- if (memcheck ((int) start, len)) ++ if (memcheck ((unsigned long) start, len)) + { + while (len -- > 0) + *p ++ = c; +@@ -1274,6 +1663,26 @@ grub_strcpy (char *dest, const char *src) + grub_memmove (dest, src, grub_strlen (src) + 1); + return dest; + } ++ ++char * ++grub_stpncpy (char *dest, const char *src, int n) ++{ ++ char *res; ++ ++ res = NULL; ++ while (n != 0) { ++ *dest = *src; ++ if (*src != 0) ++ src++; ++ else if (res == NULL) ++ res = dest; ++ dest++; ++ n--; ++ } ++ if (res == NULL) ++ res = dest; ++ return res; ++} + #endif /* ! STAGE1_5 */ + + #ifndef GRUB_UTIL +diff --git a/stage2/cmdline.c b/stage2/cmdline.c +index a6ee309..cb41eda 100644 +--- a/stage2/cmdline.c ++++ b/stage2/cmdline.c +@@ -48,12 +48,17 @@ skip_to (int after_equal, char *cmdline) + + /* Print a helpful message for the command-line interface. */ + void +-print_cmdline_message (int forever) ++print_cmdline_message (int type) + { + printf (" [ Minimal BASH-like line editing is supported. For the first word, TAB\n" + " lists possible command completions. Anywhere else TAB lists the possible\n" +- " completions of a device/filename.%s ]\n", +- (forever ? "" : " ESC at any time exits.")); ++ " completions of a device/filename."); ++ if (type == CMDLINE_NORMAL_MODE) ++ printf(" ESC at any time exits."); ++ if (type == CMDLINE_EDIT_MODE) ++ printf(" ESC at any time cancels. ENTER \n" ++ " at any time accepts your changes."); ++ printf("]\n"); + } + + /* Find the builtin whose command name is COMMAND and return the +@@ -128,7 +133,7 @@ enter_cmdline (char *heap, int forever) + print_network_configuration (); + grub_putchar ('\n'); + #endif +- print_cmdline_message (forever); ++ print_cmdline_message (forever ? CMDLINE_FOREVER_MODE : CMDLINE_NORMAL_MODE); + + while (1) + { +@@ -215,7 +220,7 @@ run_script (char *script, char *heap) + while (*cur_entry++) + ; + +- grub_memmove (heap, old_entry, (int) cur_entry - (int) old_entry); ++ grub_memmove (heap, old_entry, cur_entry - old_entry); + if (! *heap) + { + /* If there is no more command in SCRIPT... */ +@@ -232,12 +237,12 @@ run_script (char *script, char *heap) + builtin = find_command (heap); + if (! builtin) + { +- grub_printf ("%s\n", old_entry); ++ grub_verbose_printf ("%s\n", old_entry); + continue; + } + + if (! (builtin->flags & BUILTIN_NO_ECHO)) +- grub_printf ("%s\n", old_entry); ++ grub_verbose_printf ("%s\n", old_entry); + + /* If BUILTIN cannot be run in the command-line, skip it. */ + if (! (builtin->flags & BUILTIN_CMDLINE)) +diff --git a/stage2/common.c b/stage2/common.c +index 09f9e31..e96bec2 100644 +--- a/stage2/common.c ++++ b/stage2/common.c +@@ -32,7 +32,7 @@ + struct multiboot_info mbi; + unsigned long saved_drive; + unsigned long saved_partition; +-unsigned long cdrom_drive; ++unsigned long cdrom_drive = 0x100; + #ifndef STAGE1_5 + unsigned long saved_mem_upper; + +@@ -114,7 +114,7 @@ mmap_avail_at (unsigned long bottom) + { + for (cont = 0, addr = mbi.mmap_addr; + addr < mbi.mmap_addr + mbi.mmap_length; +- addr += *((unsigned long *) addr) + 4) ++ addr += *((unsigned int *) addr) + 4) + { + struct AddrRangeDesc *desc = (struct AddrRangeDesc *) addr; + +@@ -183,11 +183,11 @@ init_bios_info (void) + cont = get_mmap_entry ((void *) addr, cont); + + /* If the returned buffer's length is zero, quit. */ +- if (! *((unsigned long *) addr)) ++ if (! *((unsigned int *) addr)) + break; + +- mbi.mmap_length += *((unsigned long *) addr) + 4; +- addr += *((unsigned long *) addr) + 4; ++ mbi.mmap_length += *((unsigned int *) addr) + 4; ++ addr += *((unsigned int *) addr) + 4; + } + while (cont); + +@@ -207,7 +207,7 @@ init_bios_info (void) + /* Find the maximum available address. Ignore any memory holes. */ + for (max_addr = 0, addr = mbi.mmap_addr; + addr < mbi.mmap_addr + mbi.mmap_length; +- addr += *((unsigned long *) addr) + 4) ++ addr += *((unsigned int *) addr) + 4) + { + struct AddrRangeDesc *desc = (struct AddrRangeDesc *) addr; + +@@ -322,6 +322,9 @@ init_bios_info (void) + + /* Set cdrom drive. */ + { ++#ifdef PLATFORM_EFI ++ cdrom_drive = 0x100; ++#else + struct geometry geom; + + /* Get the geometry. */ +@@ -330,6 +333,7 @@ init_bios_info (void) + cdrom_drive = GRUB_INVALID_DRIVE; + else + cdrom_drive = boot_drive; ++#endif + } + + /* Start main routine here. */ +diff --git a/stage2/disk_io.c b/stage2/disk_io.c +index b9bc526..f3fed0e 100644 +--- a/stage2/disk_io.c ++++ b/stage2/disk_io.c +@@ -21,12 +21,17 @@ + + #include + #include ++#include + + #ifdef SUPPORT_NETBOOT + # define GRUB 1 + # include + #endif + ++#ifdef PLATFORM_EFI ++#include "efistubs.h" ++#endif ++ + #ifdef GRUB_UTIL + # include + #endif +@@ -48,6 +53,9 @@ int fsmax; + struct fsys_entry fsys_table[NUM_FSYS + 1] = + { + /* TFTP should come first because others don't handle net device. */ ++# ifdef PLATFORM_EFI ++ {"efitftp", efi_tftp_mount, efi_tftp_read, efi_tftp_dir, efi_tftp_close, 0}, ++# endif + # ifdef FSYS_TFTP + {"tftp", tftp_mount, tftp_read, tftp_dir, tftp_close, 0}, + # endif +@@ -75,6 +83,9 @@ struct fsys_entry fsys_table[NUM_FSYS + 1] = + # ifdef FSYS_UFS2 + {"ufs2", ufs2_mount, ufs2_read, ufs2_dir, 0, ufs2_embed}, + # endif ++# ifdef PLATFORM_EFI ++ {"uefi", uefi_mount, uefi_read, uefi_dir, uefi_close, 0}, ++# endif + # ifdef FSYS_ISO9660 + {"iso9660", iso9660_mount, iso9660_read, iso9660_dir, 0, 0}, + # endif +@@ -127,8 +138,8 @@ struct geometry buf_geom; + int filepos; + int filemax; + +-static inline unsigned long +-log2 (unsigned long word) ++static inline unsigned int ++grub_log2 (unsigned int word) + { + asm volatile ("bsfl %1,%0" + : "=r" (word) +@@ -140,7 +151,7 @@ int + rawread (int drive, int sector, int byte_offset, int byte_len, char *buf) + { + int slen, sectors_per_vtrack; +- int sector_size_bits = log2 (buf_geom.sector_size); ++ int sector_size_bits = grub_log2 (buf_geom.sector_size); + + if (byte_len <= 0) + return 1; +@@ -163,7 +174,7 @@ rawread (int drive, int sector, int byte_offset, int byte_len, char *buf) + } + buf_drive = drive; + buf_track = -1; +- sector_size_bits = log2 (buf_geom.sector_size); ++ sector_size_bits = grub_log2 (buf_geom.sector_size); + } + + /* Make sure that SECTOR is valid. */ +@@ -297,7 +308,7 @@ devread (int sector, int byte_offset, int byte_len, char *buf) + * Check partition boundaries + */ + if (sector < 0 +- || ((sector + ((byte_offset + byte_len - 1) >> SECTOR_BITS)) ++ || ((sector + ((byte_offset + byte_len - 1) >> get_sector_bits(current_drive))) + >= part_length)) + { + errnum = ERR_OUTSIDE_PART; +@@ -307,8 +318,8 @@ devread (int sector, int byte_offset, int byte_len, char *buf) + /* + * Get the read to the beginning of a partition. + */ +- sector += byte_offset >> SECTOR_BITS; +- byte_offset &= SECTOR_SIZE - 1; ++ sector += byte_offset >> get_sector_bits(current_drive); ++ byte_offset &= get_sector_size(current_drive) - 1; + + #if !defined(STAGE1_5) + if (disk_read_hook && debug) +@@ -347,7 +358,7 @@ rawwrite (int drive, int sector, char *buf) + sector = 1; + } + +- memmove ((char *) SCRATCHADDR, buf, SECTOR_SIZE); ++ memmove ((char *) SCRATCHADDR, buf, get_sector_size(drive)); + if (biosdisk (BIOSDISK_WRITE, drive, &buf_geom, + sector, 1, SCRATCHSEG)) + { +@@ -373,23 +384,23 @@ devwrite (int sector, int sector_count, char *buf) + embed a Stage 1.5 into a partition instead of a MBR, use system + calls directly instead of biosdisk, because of the bug in + Linux. *sigh* */ +- return write_to_partition (device_map, current_drive, current_partition, +- sector, sector_count, buf); ++ int ret; ++ ret = write_to_partition (device_map, current_drive, current_partition, ++ sector, sector_count, buf); ++ if (ret != -1) ++ return ret; + } +- else + #endif /* GRUB_UTIL && __linux__ */ +- { +- int i; +- +- for (i = 0; i < sector_count; i++) +- { +- if (! rawwrite (current_drive, part_start + sector + i, +- buf + (i << SECTOR_BITS))) +- return 0; ++ int i; + +- } +- return 1; +- } ++ for (i = 0; i < sector_count; i++) ++ { ++ if (! rawwrite (current_drive, part_start + sector + i, ++ buf + (i << get_sector_bits(current_drive)))) ++ return 0; ++ ++ } ++ return 1; + } + + static int +@@ -400,7 +411,7 @@ sane_partition (void) + return 1; + + if (!(current_partition & 0xFF000000uL) +- && ((current_drive & 0xFFFFFF7F) < 8 ++ && ((current_drive & 0xFFFFFF7F) < MAX_HD_NUM + || current_drive == cdrom_drive) + && (current_partition & 0xFF) == 0xFF + && ((current_partition & 0xFF00) == 0xFF00 +@@ -458,7 +469,7 @@ make_saved_active (void) + } + + /* Read the MBR in the scratch space. */ +- if (! rawread (saved_drive, 0, 0, SECTOR_SIZE, mbr)) ++ if (! rawread (saved_drive, 0, 0, get_sector_size(saved_drive), mbr)) + return 0; + + /* If the partition is an extended partition, setting the active +@@ -502,8 +513,8 @@ int + set_partition_hidden_flag (int hidden) + { + unsigned long part = 0xFFFFFF; +- unsigned long start, len, offset, ext_offset; +- int entry, type; ++ unsigned long start, len, offset, ext_offset, gpt_offset; ++ int entry, type, gpt_count, gpt_size; + char mbr[512]; + + /* The drive must be a hard disk. */ +@@ -524,8 +535,15 @@ set_partition_hidden_flag (int hidden) + /* Look for the partition. */ + while (next_partition (current_drive, 0xFFFFFF, &part, &type, + &start, &len, &offset, &entry, +- &ext_offset, mbr)) +- { ++ &ext_offset, &gpt_offset, &gpt_count, &gpt_size, mbr)) ++ { ++ /* The partition may not be a GPT partition. */ ++ if (gpt_offset != 0) ++ { ++ errnum = ERR_BAD_ARGUMENT; ++ return 1; ++ } ++ + if (part == current_partition) + { + /* Found. */ +@@ -577,11 +595,14 @@ next_partition (unsigned long drive, unsigned long dest, + unsigned long *partition, int *type, + unsigned long *start, unsigned long *len, + unsigned long *offset, int *entry, +- unsigned long *ext_offset, char *buf) ++ unsigned long *ext_offset, ++ unsigned long *gpt_offset, int *gpt_count, ++ int *gpt_size, char *buf) + { + /* Forward declarations. */ + auto int next_bsd_partition (void); + auto int next_pc_slice (void); ++ auto int next_gpt_slice(void); + + /* Get next BSD partition in current PC slice. */ + int next_bsd_partition (void) +@@ -601,7 +622,7 @@ next_partition (unsigned long drive, unsigned long dest, + + /* Read the BSD label. */ + if (! rawread (drive, *start + BSD_LABEL_SECTOR, +- 0, SECTOR_SIZE, buf)) ++ 0, get_sector_size(drive), buf)) + return 0; + + /* Check if it is valid. */ +@@ -656,7 +677,7 @@ next_partition (unsigned long drive, unsigned long dest, + } + + /* Read the MBR or the boot sector of the extended partition. */ +- if (! rawread (drive, *offset, 0, SECTOR_SIZE, buf)) ++ if (! rawread (drive, *offset, 0, get_sector_size(drive), buf)) + return 0; + + /* Check if it is valid. */ +@@ -666,6 +687,42 @@ next_partition (unsigned long drive, unsigned long dest, + return 0; + } + ++ /* If this is a GPT partition table, read it as such. */ ++ if (*entry == -1 && *offset == 0 && ++ (PC_SLICE_TYPE (buf, 0) == PC_SLICE_TYPE_GPT || ++ PC_SLICE_TYPE (buf, 0) == PC_SLICE_TYPE_NONE)) ++ { ++ struct grub_gpt_header *hdr = (struct grub_gpt_header *) buf; ++ ++ /* Read in the GPT Partition table header. */ ++ if (! rawread (drive, 1, 0, get_sector_size(drive), buf)) ++ return 0; ++ ++ if (hdr->magic == GPT_HEADER_MAGIC && hdr->version == 0x10000) ++ { ++ /* Let gpt_offset point to the first entry in the GPT ++ partition table. This can also be used by callers of ++ next_partition to determine if a entry comes from a ++ GPT partition table or not. */ ++ *gpt_offset = hdr->partitions; ++ *gpt_count = hdr->maxpart; ++ *gpt_size = hdr->partentry_size; ++ ++ return next_gpt_slice(); ++ } ++ else ++ { ++ /* This is not a valid header for a GPT partition table. ++ Re-read the MBR or the boot sector of the extended ++ partition. */ ++ if (! rawread (drive, *offset, 0, get_sector_size(drive), buf)) ++ return 0; ++ } ++ } ++ ++ /* Not a GPT partition. */ ++ *gpt_offset = 0; ++ + /* Increase the entry number. */ + (*entry)++; + +@@ -710,6 +767,43 @@ next_partition (unsigned long drive, unsigned long dest, + return 1; + } + ++ /* Get the next GPT slice. */ ++ int next_gpt_slice (void) ++ { ++ struct grub_gpt_partentry *gptentry = (struct grub_gpt_partentry *) buf; ++ /* Make GPT partitions show up as PC slices. */ ++ int pc_slice_no = (*partition & 0xFF0000) >> 16; ++ ++ /* If this is the first time... */ ++ if (pc_slice_no == 0xFF) ++ { ++ pc_slice_no = -1; ++ *entry = -1; ++ } ++ ++ do { ++ (*entry)++; ++ ++ if (*entry >= *gpt_count) ++ { ++ errnum = ERR_NO_PART; ++ return 0; ++ } ++ /* Read in the GPT Partition table entry. */ ++ if (! rawread (drive, (*gpt_offset) + GPT_ENTRY_SECTOR (drive, *gpt_size, *entry), GPT_ENTRY_INDEX (drive, *gpt_size, *entry), *gpt_size, buf)) ++ return 0; ++ } while (! (gptentry->type1 && gptentry->type2)); ++ ++ pc_slice_no++; ++ *start = gptentry->start; ++ *len = gptentry->end - gptentry->start + 1; ++ *type = PC_SLICE_TYPE_EXT2FS; ++ *entry = pc_slice_no; ++ *partition = (*entry << 16) | 0xFFFF; ++ ++ return 1; ++ } ++ + /* Start the body of this function. */ + + #ifndef STAGE1_5 +@@ -717,6 +811,9 @@ next_partition (unsigned long drive, unsigned long dest, + return 0; + #endif + ++ if (*partition != 0xFFFFFF && *gpt_offset != 0) ++ return next_gpt_slice (); ++ + /* If previous partition is a BSD partition or a PC slice which + contains BSD partitions... */ + if ((*partition != 0xFFFFFF && IS_PC_SLICE_TYPE_BSD (*type & 0xff)) +@@ -755,8 +852,11 @@ real_open_partition (int flags) + unsigned long dest_partition = current_partition; + unsigned long part_offset; + unsigned long ext_offset; ++ unsigned long gpt_offset; ++ int gpt_count; ++ int gpt_size; + int entry; +- char buf[SECTOR_SIZE]; ++ char buf[4096]; + int bsd_part, pc_slice; + + /* For simplicity. */ +@@ -766,7 +866,8 @@ real_open_partition (int flags) + int ret = next_partition (current_drive, dest_partition, + ¤t_partition, ¤t_slice, + &part_start, &part_length, +- &part_offset, &entry, &ext_offset, buf); ++ &part_offset, &entry, &ext_offset, ++ &gpt_offset, &gpt_count, &gpt_size, buf); + bsd_part = (current_partition >> 8) & 0xFF; + pc_slice = current_partition >> 16; + return ret; +@@ -926,6 +1027,17 @@ open_partition (void) + return real_open_partition (0); + } + ++#if !defined(PLATFORM_EFI) && !defined(GRUB_UTIL) ++int get_sector_size (int drive) ++{ ++ return SECTOR_SIZE; ++} ++int get_sector_bits (int drive) ++{ ++ return SECTOR_BITS; ++} ++#endif /* !defined(PLATFORM_EFI) && !defined(GRUB_UTIL) */ ++ + + #ifndef STAGE1_5 + /* XX used for device completion in 'set_device' and 'print_completions' */ +@@ -978,7 +1090,7 @@ set_device (char *device) + if (*device != ',' && *device != ')') + { + char ch = *device; +-#ifdef SUPPORT_NETBOOT ++#if defined(SUPPORT_NETBOOT) || defined(PLATFORM_EFI) + if (*device == 'f' || *device == 'h' + || (*device == 'n' && network_ready) + || (*device == 'c' && cdrom_drive != GRUB_INVALID_DRIVE)) +@@ -1002,14 +1114,14 @@ set_device (char *device) + + if ((*device == 'f' + || *device == 'h' +-#ifdef SUPPORT_NETBOOT ++#if defined(SUPPORT_NETBOOT) || defined(PLATFORM_EFI) + || (*device == 'n' && network_ready) + #endif + || (*device == 'c' && cdrom_drive != GRUB_INVALID_DRIVE)) + && (device += 2, (*(device - 1) != 'd'))) + errnum = ERR_NUMBER_PARSING; +- +-#ifdef SUPPORT_NETBOOT ++ ++#if defined(SUPPORT_NETBOOT) || defined(PLATFORM_EFI) + if (ch == 'n' && network_ready) + current_drive = NETWORK_DRIVE; + else +@@ -1131,7 +1243,7 @@ set_bootdev (int hdbias) + if ((saved_drive & 0x80) && cur_part_addr) + { + if (rawread (saved_drive, cur_part_offset, +- 0, SECTOR_SIZE, (char *) SCRATCHADDR)) ++ 0, get_sector_size(saved_drive), (char *) SCRATCHADDR)) + { + char *dst, *src; + +@@ -1243,6 +1355,12 @@ setup_part (char *filename) + + + #ifndef STAGE1_5 ++char * ++get_fsys_type (void) ++{ ++ return fsys_table[fsys_type].name; ++} ++ + /* + * This prints the filesystem type or gives relevant information. + */ +@@ -1376,7 +1494,7 @@ print_completions (int is_filename, int is_completion) + + if (!ptr + || *(ptr-1) != 'd' +-#ifdef SUPPORT_NETBOOT ++#if defined(SUPPORT_NETBOOT) || defined(PLATFORM_EFI) + || *(ptr-2) != 'n' + #endif /* SUPPORT_NETBOOT */ + || *(ptr-2) != 'c') +@@ -1385,7 +1503,7 @@ print_completions (int is_filename, int is_completion) + i < (ptr && (*(ptr-1) == 'd' && *(ptr-2) == 'f') ? 1:2); + i++) + { +- for (j = 0; j < 8; j++) ++ for (j = 0; j < MAX_HD_NUM; j++) + { + disk_no = (i * 0x80) + j; + if ((disk_choice || disk_no == current_drive) +@@ -1407,7 +1525,7 @@ print_completions (int is_filename, int is_completion) + || (*(ptr-1) == 'd' && *(ptr-2) == 'c'))) + print_a_completion ("cd"); + +-# ifdef SUPPORT_NETBOOT ++# if defined(SUPPORT_NETBOOT) || defined(PLATFORM_EFI) + if (network_ready + && (disk_choice || NETWORK_DRIVE == current_drive) + && (!ptr +@@ -1596,7 +1714,7 @@ grub_open (char *filename) + + BLK_BLKLENGTH (list_addr) = tmp; + +- filemax += (tmp * SECTOR_SIZE); ++ filemax += (tmp * get_sector_size(current_drive)); + list_addr += BLK_BLKLIST_INC_VAL; + + if (*ptr != ',') +@@ -1673,6 +1791,7 @@ grub_read (char *buf, int len) + if (block_file) + { + int size, off, ret = 0; ++ int sector_size = get_sector_size(current_drive); + + while (len && !errnum) + { +@@ -1687,10 +1806,10 @@ grub_read (char *buf, int len) + /* run BLK_CUR_FILEPOS up to filepos */ + while (filepos > BLK_CUR_FILEPOS) + { +- if ((filepos - (BLK_CUR_FILEPOS & ~(SECTOR_SIZE - 1))) +- >= SECTOR_SIZE) ++ if ((filepos - (BLK_CUR_FILEPOS & ~(sector_size - 1))) ++ >= sector_size) + { +- BLK_CUR_FILEPOS += SECTOR_SIZE; ++ BLK_CUR_FILEPOS += sector_size; + BLK_CUR_BLKNUM++; + + if (BLK_CUR_BLKNUM >= BLK_BLKLENGTH (BLK_CUR_BLKLIST)) +@@ -1703,9 +1822,9 @@ grub_read (char *buf, int len) + BLK_CUR_FILEPOS = filepos; + } + +- off = filepos & (SECTOR_SIZE - 1); ++ off = filepos & (sector_size - 1); + size = ((BLK_BLKLENGTH (BLK_CUR_BLKLIST) - BLK_CUR_BLKNUM) +- * SECTOR_SIZE) - off; ++ * sector_size) - off; + if (size > len) + size = len; + +diff --git a/stage2/efistubs.c b/stage2/efistubs.c +new file mode 100644 +index 0000000..29b086a +--- /dev/null ++++ b/stage2/efistubs.c +@@ -0,0 +1,7 @@ ++ ++#include "shared.h" ++#include "efistubs.h" ++ ++#if defined(PLATFORM_EFI) ++int network_ready = 0; ++#endif /* defined(PLATFORM_EFI) */ +diff --git a/stage2/efistubs.h b/stage2/efistubs.h +new file mode 100644 +index 0000000..97e407d +--- /dev/null ++++ b/stage2/efistubs.h +@@ -0,0 +1,8 @@ ++#ifndef EFISTUBS_H ++#define EFISTUBS_H 1 ++ ++#if defined(PLATFORM_EFI) ++extern int network_ready; ++#endif /* defined(PLATFORM_EFI) */ ++ ++#endif /* EFISTUBS_H */ +diff --git a/stage2/fat.h b/stage2/fat.h +index 7fed6ba..f154eed 100644 +--- a/stage2/fat.h ++++ b/stage2/fat.h +@@ -92,7 +92,7 @@ struct fat_bpb { + #define FAT_DIRENTRY_FIRST_CLUSTER(entry) \ + ((*((unsigned short *) (entry+26)))+(*((unsigned short *) (entry+20)) << 16)) + #define FAT_DIRENTRY_FILELENGTH(entry) \ +- (*((unsigned long *) (entry+28))) ++ (*((unsigned int *) (entry+28))) + + #define FAT_LONGDIR_ID(entry) \ + (*((unsigned char *) (entry))) +diff --git a/stage2/filesys.h b/stage2/filesys.h +index bbad8b9..79e5f1f 100644 +--- a/stage2/filesys.h ++++ b/stage2/filesys.h +@@ -40,6 +40,16 @@ int ufs2_embed (int *start_sector, int needed_sectors); + #define FSYS_UFS2_NUM 0 + #endif + ++#ifdef PLATFORM_EFI ++#define FSYS_UEFI_NUM 1 ++int uefi_mount (void); ++int uefi_read (char *buf, int len); ++int uefi_dir (char *dirname); ++void uefi_close (void); ++#else ++#define FSYS_UEFI_NUM 0 ++#endif ++ + #ifdef FSYS_FAT + #define FSYS_FAT_NUM 1 + int fat_mount (void); +@@ -115,6 +125,17 @@ void tftp_close (void); + #define FSYS_TFTP_NUM 0 + #endif + ++#ifdef PLATFORM_EFI ++#define FSYS_EFI_TFTP_NUM 1 ++int efi_tftp_mount (void); ++int efi_tftp_read (char *buf, int len); ++int efi_tftp_dir (char *dirname); ++void efi_tftp_close (void); ++#else ++#define FSYS_EFI_TFTP_NUM 0 ++#endif ++ ++ + #ifdef FSYS_ISO9660 + #define FSYS_ISO9660_NUM 1 + int iso9660_mount (void); +@@ -128,7 +149,8 @@ int iso9660_dir (char *dirname); + #define NUM_FSYS \ + (FSYS_FFS_NUM + FSYS_FAT_NUM + FSYS_EXT2FS_NUM + FSYS_MINIX_NUM \ + + FSYS_REISERFS_NUM + FSYS_VSTAFS_NUM + FSYS_JFS_NUM + FSYS_XFS_NUM \ +- + FSYS_TFTP_NUM + FSYS_ISO9660_NUM + FSYS_UFS2_NUM) ++ + FSYS_TFTP_NUM + FSYS_EFI_TFTP_NUM + FSYS_ISO9660_NUM + FSYS_UFS2_NUM \ ++ + FSYS_UEFI_NUM) + #endif + + /* defines for the block filesystem info area */ +@@ -137,8 +159,8 @@ int iso9660_dir (char *dirname); + #define BLK_CUR_BLKLIST (*((int*)(FSYS_BUF+4))) + #define BLK_CUR_BLKNUM (*((int*)(FSYS_BUF+8))) + #define BLK_MAX_ADDR (FSYS_BUF+0x7FF9) +-#define BLK_BLKSTART(l) (*((int*)l)) +-#define BLK_BLKLENGTH(l) (*((int*)(l+4))) ++#define BLK_BLKSTART(l) (*((int*)(unsigned long)l)) ++#define BLK_BLKLENGTH(l) (*((int*)(unsigned long)(l+4))) + #define BLK_BLKLIST_START (FSYS_BUF+12) + #define BLK_BLKLIST_INC_VAL 8 + #endif /* NO_BLOCK_FILES */ +diff --git a/stage2/fsys_ext2fs.c b/stage2/fsys_ext2fs.c +index 560048f..01386d1 100644 +--- a/stage2/fsys_ext2fs.c ++++ b/stage2/fsys_ext2fs.c +@@ -25,7 +25,7 @@ + static int mapblock1, mapblock2; + + /* sizes are always in bytes, BLOCK values are always in DEV_BSIZE (sectors) */ +-#define DEV_BSIZE 512 ++#define DEV_BSIZE get_sector_size(current_drive) + + /* include/linux/fs.h */ + #define BLOCK_SIZE 1024 /* initial block size for superblock read */ +@@ -33,6 +33,7 @@ static int mapblock1, mapblock2; + #define WHICH_SUPER 1 + /* kind of from fs/ext2/super.c */ + #define SBLOCK (WHICH_SUPER * BLOCK_SIZE / DEV_BSIZE) /* = 2 */ ++#define SBOFF ((WHICH_SUPER * BLOCK_SIZE) % DEV_BSIZE) + + /* include/asm-i386/types.h */ + typedef __signed__ char __s8; +@@ -41,6 +42,7 @@ typedef __signed__ short __s16; + typedef unsigned short __u16; + typedef __signed__ int __s32; + typedef unsigned int __u32; ++typedef unsigned long long __u64; + + /* + * Constants relative to the data blocks, from ext2_fs.h +@@ -51,7 +53,7 @@ typedef unsigned int __u32; + #define EXT2_TIND_BLOCK (EXT2_DIND_BLOCK + 1) + #define EXT2_N_BLOCKS (EXT2_TIND_BLOCK + 1) + +-/* include/linux/ext2_fs.h */ ++/* lib/ext2fs/ext2_fs.h from e2fsprogs */ + struct ext2_super_block + { + __u32 s_inodes_count; /* Inodes count */ +@@ -61,9 +63,9 @@ struct ext2_super_block + __u32 s_free_inodes_count; /* Free inodes count */ + __u32 s_first_data_block; /* First Data Block */ + __u32 s_log_block_size; /* Block size */ +- __s32 s_log_frag_size; /* Fragment size */ ++ __s32 s_obso_log_frag_size; /* Obsoleted Fragment size */ + __u32 s_blocks_per_group; /* # Blocks per group */ +- __u32 s_frags_per_group; /* # Fragments per group */ ++ __u32 s_obso_frags_per_group; /* Obsoleted Fragments per group */ + __u32 s_inodes_per_group; /* # Inodes per group */ + __u32 s_mtime; /* Mount time */ + __u32 s_wtime; /* Write time */ +@@ -72,17 +74,76 @@ struct ext2_super_block + __u16 s_magic; /* Magic signature */ + __u16 s_state; /* File system state */ + __u16 s_errors; /* Behaviour when detecting errors */ +- __u16 s_pad; ++ __u16 s_minor_rev_level; /* minor revision level */ + __u32 s_lastcheck; /* time of last check */ + __u32 s_checkinterval; /* max. time between checks */ + __u32 s_creator_os; /* OS */ + __u32 s_rev_level; /* Revision level */ + __u16 s_def_resuid; /* Default uid for reserved blocks */ + __u16 s_def_resgid; /* Default gid for reserved blocks */ +- __u32 s_reserved[235]; /* Padding to the end of the block */ +- }; +- +-struct ext2_group_desc ++ /* ++ * These fields are for EXT2_DYNAMIC_REV superblocks only. ++ * ++ * Note: the difference between the compatible feature set and ++ * the incompatible feature set is that if there is a bit set ++ * in the incompatible feature set that the kernel doesn't ++ * know about, it should refuse to mount the filesystem. ++ * ++ * e2fsck's requirements are more strict; if it doesn't know ++ * about a feature in either the compatible or incompatible ++ * feature set, it must abort and not try to meddle with ++ * things it doesn't understand... ++ */ ++ __u32 s_first_ino; /* First non-reserved inode */ ++ __u16 s_inode_size; /* size of inode structure */ ++ __u16 s_block_group_nr; /* block group # of this superblock */ ++ __u32 s_feature_compat; /* compatible feature set */ ++ __u32 s_feature_incompat; /* incompatible feature set */ ++ __u32 s_feature_ro_compat; /* readonly-compatible feature set */ ++ __u8 s_uuid[16]; /* 128-bit uuid for volume */ ++ char s_volume_name[16]; /* volume name */ ++ char s_last_mounted[64]; /* directory where last mounted */ ++ __u32 s_algorithm_usage_bitmap; /* For compression */ ++ /* ++ * Performance hints. Directory preallocation should only ++ * happen if the EXT2_FEATURE_COMPAT_DIR_PREALLOC flag is on. ++ */ ++ __u8 s_prealloc_blocks; /* Nr of blocks to try to preallocate*/ ++ __u8 s_prealloc_dir_blocks; /* Nr to preallocate for dirs */ ++ __u16 s_reserved_gdt_blocks;/* Per group table for online growth */ ++ /* ++ * Journaling support valid if EXT2_FEATURE_COMPAT_HAS_JOURNAL set. ++ */ ++ __u8 s_journal_uuid[16]; /* uuid of journal superblock */ ++ __u32 s_journal_inum; /* inode number of journal file */ ++ __u32 s_journal_dev; /* device number of journal file */ ++ __u32 s_last_orphan; /* start of list of inodes to delete */ ++ __u32 s_hash_seed[4]; /* HTREE hash seed */ ++ __u8 s_def_hash_version; /* Default hash version to use */ ++ __u8 s_jnl_backup_type; /* Default type of journal backup */ ++ __u16 s_desc_size; /* size of group descriptor */ ++ __u32 s_default_mount_opts; ++ __u32 s_first_meta_bg; /* First metablock group */ ++ __u32 s_mkfs_time; /* When the filesystem was created */ ++ __u32 s_jnl_blocks[17]; /* Backup of the journal inode */ ++ /* 64bit desc support valid if EXT4_FEATURE_INCOMPAT_64BIT */ ++ __u32 s_blocks_count_hi; /* Blocks count */ ++ __u32 s_r_blocks_count_hi; /* Reserved blocks count */ ++ __u32 s_free_blocks_count_hi; /* Free blocks count */ ++ __u16 s_min_extra_isize; /* All inodes have at least # bytes */ ++ __u16 s_max_extra_isize; /* New inodes should reverve # bytes */ ++ __u32 s_flags; /* Miscellaneous flags */ ++ __u16 s_raid_stride; /* Raid stride */ ++ __u16 s_mmp_interval; /* # seconds to wait MMP checking */ ++ __u64 s_mmp_block; /* Block for multi-mount protection */ ++ __u32 s_raid_stripe_width; /* Blocks on all data disks (N*stride)*/ ++ __u8 s_log_groups_per_flex;/* FLEX_BG group size*/ ++ __u8 s_reserved_char_pad; ++ __u16 s_reserved_pad; ++ __u32 s_reserved[162]; /* Padding to the end of the block */ ++}; ++ ++struct ext4_group_desc + { + __u32 bg_block_bitmap; /* Blocks bitmap block */ + __u32 bg_inode_bitmap; /* Inodes bitmap block */ +@@ -90,8 +151,18 @@ struct ext2_group_desc + __u16 bg_free_blocks_count; /* Free blocks count */ + __u16 bg_free_inodes_count; /* Free inodes count */ + __u16 bg_used_dirs_count; /* Directories count */ +- __u16 bg_pad; +- __u32 bg_reserved[3]; ++ __u16 bg_flags; /* EXT4_BG_flags (INODE_UNINIT, etc) */ ++ __u32 bg_reserved[2]; /* Likely block/inode bitmap checksum */ ++ __u16 bg_itable_unused; /* Unused inodes count */ ++ __u16 bg_checksum; /* crc16(sb_uuid+group+desc) */ ++ __u32 bg_block_bitmap_hi; /* Blocks bitmap block MSB */ ++ __u32 bg_inode_bitmap_hi; /* Inodes bitmap block MSB */ ++ __u32 bg_inode_table_hi; /* Inodes table block MSB */ ++ __u16 bg_free_blocks_count_hi;/* Free blocks count MSB */ ++ __u16 bg_free_inodes_count_hi;/* Free inodes count MSB */ ++ __u16 bg_used_dirs_count_hi; /* Directories count MSB */ ++ __u16 bg_itable_unused_hi; /* Unused inodes count MSB */ ++ __u32 bg_reserved2[3]; + }; + + struct ext2_inode +@@ -129,22 +200,22 @@ struct ext2_inode + __u32 i_block[EXT2_N_BLOCKS]; /* 40: Pointers to blocks */ + __u32 i_version; /* File version (for NFS) */ + __u32 i_file_acl; /* File ACL */ +- __u32 i_dir_acl; /* Directory ACL */ +- __u32 i_faddr; /* Fragment address */ ++ __u32 i_size_high; ++ __u32 i_obso_faddr; /* Obsoleted fragment address */ + union + { + struct + { +- __u8 l_i_frag; /* Fragment number */ +- __u8 l_i_fsize; /* Fragment size */ +- __u16 i_pad1; +- __u32 l_i_reserved2[2]; ++ __u16 l_i_blocks_high; /* were l_i_reserved1 */ ++ __u16 l_i_file_acl_high; ++ __u16 l_i_uid_high; /* these 2 fields */ ++ __u16 l_i_gid_high; /* were reserved2[0] */ ++ __u32 l_i_reserved2; + } + linux2; + struct + { +- __u8 h_i_frag; /* Fragment number */ +- __u8 h_i_fsize; /* Fragment size */ ++ __u16 h_i_reserved1; /* Obsoleted fragment number/size which are removed in ext4 */ + __u16 h_i_mode_high; + __u16 h_i_uid_high; + __u16 h_i_gid_high; +@@ -153,16 +224,36 @@ struct ext2_inode + hurd2; + struct + { +- __u8 m_i_frag; /* Fragment number */ +- __u8 m_i_fsize; /* Fragment size */ +- __u16 m_pad1; ++ __u16 h_i_reserved1; /* Obsoleted fragment number/size which are removed in ext4 */ ++ __u16 m_i_file_acl_high; + __u32 m_i_reserved2[2]; + } + masix2; + } + osd2; /* OS dependent 2 */ ++ __u16 i_extra_isize; ++ __u16 i_pad1; ++ __u32 i_ctime_extra; /* extra Change time (nsec << 2 | epoch) */ ++ __u32 i_mtime_extra; /* extra Modification time(nsec << 2 | epoch) */ ++ __u32 i_atime_extra; /* extra Access time (nsec << 2 | epoch) */ ++ __u32 i_crtime; /* File Creation time */ ++ __u32 i_crtime_extra; /* extra FileCreationtime (nsec << 2 | epoch) */ ++ __u32 i_version_hi; /* high 32 bits for 64-bit version */ + }; + ++#define EXT4_FEATURE_INCOMPAT_EXTENTS 0x0040 /* extents support */ ++#define EXT4_FEATURE_INCOMPAT_64BIT 0x0080 /* grub not supported*/ ++#define EXT4_FEATURE_INCOMPAT_MMP 0x0100 ++#define EXT4_FEATURE_INCOMPAT_FLEX_BG 0x0200 ++ ++#define EXT4_HAS_INCOMPAT_FEATURE(sb,mask) \ ++ ( sb->s_feature_incompat & mask ) ++ ++#define EXT4_EXTENTS_FL 0x00080000 /* Inode uses extents */ ++#define EXT4_HUGE_FILE_FL 0x00040000 /* Set to each huge file */ ++ ++#define EXT4_MIN_DESC_SIZE 32 ++ + /* linux/limits.h */ + #define NAME_MAX 255 /* # chars in a file name */ + +@@ -180,6 +271,57 @@ struct ext2_dir_entry + char name[EXT2_NAME_LEN]; /* File name */ + }; + ++/* linux/ext4_fs_extents.h */ ++/* This is the extent on-disk structure. ++ * It's used at the bottom of the tree. ++ */ ++struct ext4_extent ++ { ++ __u32 ee_block; /* first logical block extent covers */ ++ __u16 ee_len; /* number of blocks covered by extent */ ++ __u16 ee_start_hi; /* high 16 bits of physical block */ ++ __u32 ee_start_lo; /* low 32 bits of physical block */ ++ }; ++ ++/* ++ * This is index on-disk structure. ++ * It's used at all the levels except the bottom. ++ */ ++struct ext4_extent_idx ++ { ++ __u32 ei_block; /* index covers logical blocks from 'block' */ ++ __u32 ei_leaf_lo; /* pointer to the physical block of the next * ++ * level. leaf or next index could be there */ ++ __u16 ei_leaf_hi; /* high 16 bits of physical block */ ++ __u16 ei_unused; ++ }; ++ ++/* ++ * Each block (leaves and indexes), even inode-stored has header. ++ */ ++struct ext4_extent_header ++ { ++ __u16 eh_magic; /* probably will support different formats */ ++ __u16 eh_entries; /* number of valid entries */ ++ __u16 eh_max; /* capacity of store in entries */ ++ __u16 eh_depth; /* has tree real underlying blocks? */ ++ __u32 eh_generation; /* generation of the tree */ ++ }; ++ ++#define EXT4_EXT_MAGIC (0xf30a) ++#define EXT_FIRST_EXTENT(__hdr__) \ ++ ((struct ext4_extent *) (((char *) (__hdr__)) + \ ++ sizeof(struct ext4_extent_header))) ++#define EXT_FIRST_INDEX(__hdr__) \ ++ ((struct ext4_extent_idx *) (((char *) (__hdr__)) + \ ++ sizeof(struct ext4_extent_header))) ++#define EXT_LAST_EXTENT(__hdr__) \ ++ (EXT_FIRST_EXTENT((__hdr__)) + (__u16)((__hdr__)->eh_entries) - 1) ++#define EXT_LAST_INDEX(__hdr__) \ ++ (EXT_FIRST_INDEX((__hdr__)) + (__u16)((__hdr__)->eh_entries) - 1) ++ ++ ++ + /* linux/ext2fs.h */ + /* + * EXT2_DIR_PAD defines the directory entries boundaries +@@ -206,25 +348,37 @@ struct ext2_dir_entry + ((struct ext2_super_block *)(FSYS_BUF)) + #define GROUP_DESC \ + ((struct ext2_group_desc *) \ +- ((int)SUPERBLOCK + sizeof(struct ext2_super_block))) ++ ((unsigned long)SUPERBLOCK + sizeof(struct ext2_super_block))) + #define INODE \ +- ((struct ext2_inode *)((int)GROUP_DESC + EXT2_BLOCK_SIZE(SUPERBLOCK))) ++ ((struct ext2_inode *)((unsigned long)GROUP_DESC + EXT2_BLOCK_SIZE(SUPERBLOCK))) + #define DATABLOCK1 \ +- ((int)((int)INODE + sizeof(struct ext2_inode))) ++ ((unsigned long)INODE + sizeof(struct ext2_inode)) + #define DATABLOCK2 \ +- ((int)((int)DATABLOCK1 + EXT2_BLOCK_SIZE(SUPERBLOCK))) ++ ((unsigned long)DATABLOCK1 + EXT2_BLOCK_SIZE(SUPERBLOCK)) + + /* linux/ext2_fs.h */ + #define EXT2_ADDR_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s) / sizeof (__u32)) + #define EXT2_ADDR_PER_BLOCK_BITS(s) (log2(EXT2_ADDR_PER_BLOCK(s))) + ++#define EXT2_INODE_SIZE(s) (SUPERBLOCK->s_inode_size) ++#define EXT2_INODES_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s)/EXT2_INODE_SIZE(s)) ++ + /* linux/ext2_fs.h */ + #define EXT2_BLOCK_SIZE_BITS(s) ((s)->s_log_block_size + 10) + /* kind of from ext2/super.c */ + #define EXT2_BLOCK_SIZE(s) (1 << EXT2_BLOCK_SIZE_BITS(s)) + /* linux/ext2fs.h */ ++/* sizeof(struct ext2_group_desc) is changed in ext4 ++ * in kernel code, ext2/3 uses sizeof(struct ext2_group_desc) to calculate ++ * number of desc per block, while ext4 uses superblock->s_desc_size in stead ++ * superblock->s_desc_size is not available in ext2/3 ++ * */ ++#define EXT2_DESC_SIZE(s) \ ++ (EXT4_HAS_INCOMPAT_FEATURE(s,EXT4_FEATURE_INCOMPAT_64BIT)? \ ++ s->s_desc_size : EXT4_MIN_DESC_SIZE) + #define EXT2_DESC_PER_BLOCK(s) \ +- (EXT2_BLOCK_SIZE(s) / sizeof (struct ext2_group_desc)) ++ (EXT2_BLOCK_SIZE(s) / EXT2_DESC_SIZE(s)) ++ + /* linux/stat.h */ + #define S_IFMT 00170000 + #define S_IFLNK 0120000 +@@ -239,8 +393,8 @@ struct ext2_dir_entry + * ffz = Find First Zero in word. Undefined if no zero exists, + * so code should check against ~0UL first.. + */ +-static __inline__ unsigned long +-ffz (unsigned long word) ++static __inline__ unsigned int ++ffz (unsigned int word) + { + __asm__ ("bsfl %1,%0" + : "=r" (word) +@@ -260,7 +414,7 @@ ext2fs_mount (void) + && (! IS_PC_SLICE_TYPE_BSD_WITH_FS (current_slice, FS_EXT2FS)) + && (! IS_PC_SLICE_TYPE_BSD_WITH_FS (current_slice, FS_OTHER))) + || part_length < (SBLOCK + (sizeof (struct ext2_super_block) / DEV_BSIZE)) +- || !devread (SBLOCK, 0, sizeof (struct ext2_super_block), ++ || !devread (SBLOCK, SBOFF, sizeof (struct ext2_super_block), + (char *) SUPERBLOCK) + || SUPERBLOCK->s_magic != EXT2_SUPER_MAGIC) + retval = 0; +@@ -276,7 +430,7 @@ ext2_rdfsb (int fsblock, int buffer) + printf ("fsblock %d buffer %d\n", fsblock, buffer); + #endif /* E2DEBUG */ + return devread (fsblock * (EXT2_BLOCK_SIZE (SUPERBLOCK) / DEV_BSIZE), 0, +- EXT2_BLOCK_SIZE (SUPERBLOCK), (char *) buffer); ++ EXT2_BLOCK_SIZE (SUPERBLOCK), (char *) (unsigned long) buffer); + } + + /* from +@@ -386,6 +540,122 @@ ext2fs_block_map (int logical_block) + [logical_block & (EXT2_ADDR_PER_BLOCK (SUPERBLOCK) - 1)]; + } + ++/* extent binary search index ++ * find closest index in the current level extent tree ++ * kind of from ext4_ext_binsearch_idx in ext4/extents.c ++ */ ++static struct ext4_extent_idx* ++ext4_ext_binsearch_idx(struct ext4_extent_header* eh, int logical_block) ++{ ++ struct ext4_extent_idx *r, *l, *m; ++ l = EXT_FIRST_INDEX(eh) + 1; ++ r = EXT_LAST_INDEX(eh); ++ while (l <= r) ++ { ++ m = l + (r - l) / 2; ++ if (logical_block < m->ei_block) ++ r = m - 1; ++ else ++ l = m + 1; ++ } ++ return (struct ext4_extent_idx*)(l - 1); ++} ++ ++/* extent binary search ++ * find closest extent in the leaf level ++ * kind of from ext4_ext_binsearch in ext4/extents.c ++ */ ++static struct ext4_extent* ++ext4_ext_binsearch(struct ext4_extent_header* eh, int logical_block) ++{ ++ struct ext4_extent *r, *l, *m; ++ l = EXT_FIRST_EXTENT(eh) + 1; ++ r = EXT_LAST_EXTENT(eh); ++ while (l <= r) ++ { ++ m = l + (r - l) / 2; ++ if (logical_block < m->ee_block) ++ r = m - 1; ++ else ++ l = m + 1; ++ } ++ return (struct ext4_extent*)(l - 1); ++} ++ ++/* Maps extents enabled logical block into physical block via an inode. ++ * EXT4_HUGE_FILE_FL should be checked before calling this. ++ */ ++static int ++ext4fs_block_map (int logical_block) ++{ ++ struct ext4_extent_header *eh; ++ struct ext4_extent *ex, *extent; ++ struct ext4_extent_idx *ei, *index; ++ int depth; ++ int i; ++ ++#ifdef E2DEBUG ++ unsigned char *i; ++ for (i = (unsigned char *) INODE; ++ i < ((unsigned char *) INODE + sizeof (struct ext2_inode)); ++ i++) ++ { ++ printf ("%c", "0123456789abcdef"[*i >> 4]); ++ printf ("%c", "0123456789abcdef"[*i % 16]); ++ if (!((i + 1 - (unsigned char *) INODE) % 16)) ++ { ++ printf ("\n"); ++ } ++ else ++ { ++ printf (" "); ++ } ++ } ++ printf ("logical block %d\n", logical_block); ++#endif /* E2DEBUG */ ++ eh = (struct ext4_extent_header*)INODE->i_block; ++ if (eh->eh_magic != EXT4_EXT_MAGIC) ++ { ++ errnum = ERR_FSYS_CORRUPT; ++ return -1; ++ } ++ while((depth = eh->eh_depth) != 0) ++ { /* extent index */ ++ if (eh->eh_magic != EXT4_EXT_MAGIC) ++ { ++ errnum = ERR_FSYS_CORRUPT; ++ return -1; ++ } ++ ei = ext4_ext_binsearch_idx(eh, logical_block); ++ if (ei->ei_leaf_hi) ++ {/* 64bit physical block number not supported */ ++ errnum = ERR_FILELENGTH; ++ return -1; ++ } ++ if (!ext2_rdfsb(ei->ei_leaf_lo, DATABLOCK1)) ++ { ++ errnum = ERR_FSYS_CORRUPT; ++ return -1; ++ } ++ eh = (struct ext4_extent_header*)DATABLOCK1; ++ } ++ ++ /* depth==0, we come to the leaf */ ++ ex = ext4_ext_binsearch(eh, logical_block); ++ if (ex->ee_start_hi) ++ {/* 64bit physical block number not supported */ ++ errnum = ERR_FILELENGTH; ++ return -1; ++ } ++ if ((ex->ee_block + ex->ee_len) < logical_block) ++ { ++ errnum = ERR_FSYS_CORRUPT; ++ return -1; ++ } ++ return ex->ee_start_lo + logical_block - ex->ee_block; ++ ++} ++ + /* preconditions: all preconds of ext2fs_block_map */ + int + ext2fs_read (char *buf, int len) +@@ -420,6 +690,11 @@ ext2fs_read (char *buf, int len) + /* find the (logical) block component of our location */ + logical_block = filepos >> EXT2_BLOCK_SIZE_BITS (SUPERBLOCK); + offset = filepos & (EXT2_BLOCK_SIZE (SUPERBLOCK) - 1); ++ /* map extents enabled logical block number to physical fs on-disk block number */ ++ if (EXT4_HAS_INCOMPAT_FEATURE(SUPERBLOCK,EXT4_FEATURE_INCOMPAT_EXTENTS) ++ && INODE->i_flags & EXT4_EXTENTS_FL) ++ map = ext4fs_block_map (logical_block); ++ else + map = ext2fs_block_map (logical_block); + #ifdef E2DEBUG + printf ("map=%d\n", map); +@@ -504,7 +779,7 @@ ext2fs_dir (char *dirname) + int desc; /* index within that group */ + int ino_blk; /* fs pointer of the inode's information */ + int str_chk = 0; /* used to hold the results of a string compare */ +- struct ext2_group_desc *gdp; ++ struct ext4_group_desc *ext4_gdp; + struct ext2_inode *raw_inode; /* inode info corresponding to current_ino */ + + char linkbuf[PATH_MAX]; /* buffer for following symbolic links */ +@@ -546,18 +821,25 @@ ext2fs_dir (char *dirname) + #endif /* E2DEBUG */ + if (!ext2_rdfsb ( + (WHICH_SUPER + group_desc + SUPERBLOCK->s_first_data_block), +- (int) GROUP_DESC)) ++ (unsigned long) GROUP_DESC)) + { + return 0; + } +- gdp = GROUP_DESC; +- ino_blk = gdp[desc].bg_inode_table + ++ ext4_gdp = (struct ext4_group_desc *)( (__u8*)GROUP_DESC + ++ desc * EXT2_DESC_SIZE(SUPERBLOCK)); ++ if (EXT4_HAS_INCOMPAT_FEATURE(SUPERBLOCK, EXT4_FEATURE_INCOMPAT_64BIT) ++ && (! ext4_gdp->bg_inode_table_hi)) ++ {/* 64bit itable not supported */ ++ errnum = ERR_FILELENGTH; ++ return -1; ++ } ++ ino_blk = ext4_gdp->bg_inode_table + + (((current_ino - 1) % (SUPERBLOCK->s_inodes_per_group)) +- >> log2 (EXT2_BLOCK_SIZE (SUPERBLOCK) / sizeof (struct ext2_inode))); ++ >> log2 (EXT2_INODES_PER_BLOCK (SUPERBLOCK))); + #ifdef E2DEBUG + printf ("inode table fsblock=%d\n", ino_blk); + #endif /* E2DEBUG */ +- if (!ext2_rdfsb (ino_blk, (int) INODE)) ++ if (!ext2_rdfsb (ino_blk, (unsigned long) INODE)) + { + return 0; + } +@@ -565,13 +847,12 @@ ext2fs_dir (char *dirname) + /* reset indirect blocks! */ + mapblock2 = mapblock1 = -1; + +- raw_inode = INODE + +- ((current_ino - 1) +- & (EXT2_BLOCK_SIZE (SUPERBLOCK) / sizeof (struct ext2_inode) - 1)); ++ raw_inode = (struct ext2_inode *)((char *)INODE + ++ ((current_ino - 1) & (EXT2_INODES_PER_BLOCK (SUPERBLOCK) - 1)) * ++ EXT2_INODE_SIZE (SUPERBLOCK)); + #ifdef E2DEBUG + printf ("ipb=%d, sizeof(inode)=%d\n", +- (EXT2_BLOCK_SIZE (SUPERBLOCK) / sizeof (struct ext2_inode)), +- sizeof (struct ext2_inode)); ++ EXT2_INODES_PER_BLOCK (SUPERBLOCK), EXT2_INODE_SIZE (SUPERBLOCK)); + printf ("inode=%x, raw_inode=%x\n", INODE, raw_inode); + printf ("offset into inode table block=%d\n", (int) raw_inode - (int) INODE); + for (i = (unsigned char *) INODE; i <= (unsigned char *) raw_inode; +@@ -629,7 +910,10 @@ ext2fs_dir (char *dirname) + } + linkbuf[filemax + len] = '\0'; + +- /* Read the symlink data. */ ++ /* Read the symlink data. ++ * Slow symlink is extents enabled ++ * But since grub_read invokes ext2fs_read, nothing to change here ++ */ + if (! ext2_is_fast_symlink ()) + { + /* Read the necessary blocks, and reset the file pointer. */ +@@ -640,7 +924,9 @@ ext2fs_dir (char *dirname) + } + else + { +- /* Copy the data directly from the inode. */ ++ /* Copy the data directly from the inode. ++ * Fast symlink is not extents enabled ++ */ + len = filemax; + memmove (linkbuf, (char *) INODE->i_block, len); + } +@@ -674,6 +960,13 @@ ext2fs_dir (char *dirname) + errnum = ERR_BAD_FILETYPE; + return 0; + } ++ /* if file is too large, just stop and report an error*/ ++ if ( (INODE->i_flags & EXT4_HUGE_FILE_FL) && !(INODE->i_size_high)) ++ { ++ /* file too large, stop reading */ ++ errnum = ERR_FILELENGTH; ++ return 0; ++ } + + filemax = (INODE->i_size); + return 1; +@@ -728,17 +1021,28 @@ ext2fs_dir (char *dirname) + } + + /* else, find the (logical) block component of our location */ ++ /* ext4 logical block number the same as ext2/3 */ + blk = loc >> EXT2_BLOCK_SIZE_BITS (SUPERBLOCK); + + /* we know which logical block of the directory entry we are looking + for, now we have to translate that to the physical (fs) block on + the disk */ ++ /* map extents enabled logical block number to physical fs on-disk block number */ ++ if (EXT4_HAS_INCOMPAT_FEATURE(SUPERBLOCK,EXT4_FEATURE_INCOMPAT_EXTENTS) ++ && INODE->i_flags & EXT4_EXTENTS_FL) ++ map = ext4fs_block_map (blk); ++ else + map = ext2fs_block_map (blk); + #ifdef E2DEBUG + printf ("fs block=%d\n", map); + #endif /* E2DEBUG */ + mapblock2 = -1; +- if ((map < 0) || !ext2_rdfsb (map, DATABLOCK2)) ++ if (map < 0) ++ { ++ *rest = ch; ++ return 0; ++ } ++ if (!ext2_rdfsb (map, DATABLOCK2)) + { + errnum = ERR_FSYS_CORRUPT; + *rest = ch; +diff --git a/stage2/fsys_fat.c b/stage2/fsys_fat.c +index f40e658..f1157f4 100644 +--- a/stage2/fsys_fat.c ++++ b/stage2/fsys_fat.c +@@ -49,13 +49,13 @@ struct fat_superblock + /* pointer(s) into filesystem info buffer for DOS stuff */ + #define FAT_SUPER ( (struct fat_superblock *) \ + ( FSYS_BUF + 32256) )/* 512 bytes long */ +-#define FAT_BUF ( FSYS_BUF + 30208 ) /* 4 sector FAT buffer */ +-#define NAME_BUF ( FSYS_BUF + 29184 ) /* Filename buffer (833 bytes) */ ++#define FAT_BUF ( FSYS_BUF + 28160 ) /* 4 sector FAT buffer */ ++#define NAME_BUF ( FSYS_BUF + 27136 ) /* Filename buffer (833 bytes) */ + +-#define FAT_CACHE_SIZE 2048 ++#define FAT_CACHE_SIZE 4096 + +-static __inline__ unsigned long +-log2 (unsigned long word) ++static __inline__ unsigned int ++grub_log2 (unsigned int word) + { + __asm__ ("bsfl %1,%0" + : "=r" (word) +@@ -68,9 +68,12 @@ fat_mount (void) + { + struct fat_bpb bpb; + __u32 magic, first_fat; ++ int sector_size; + + /* Check partition type for harddisk */ + if (((current_drive & 0x80) || (current_slice != 0)) ++ && (current_slice != PC_SLICE_TYPE_EXT2FS) ++ && (current_slice != PC_SLICE_TYPE_LINUX_RAID) + && ! IS_PC_SLICE_TYPE_FAT (current_slice) + && (! IS_PC_SLICE_TYPE_BSD_WITH_FS (current_slice, FS_MSDOS))) + return 0; +@@ -79,14 +82,16 @@ fat_mount (void) + if (! devread (0, 0, sizeof (bpb), (char *) &bpb)) + return 0; + ++ sector_size = get_sector_size(current_drive); ++ + /* Check if the number of sectors per cluster is zero here, to avoid + zero division. */ + if (bpb.sects_per_clust == 0) + return 0; + +- FAT_SUPER->sectsize_bits = log2 (FAT_CVT_U16 (bpb.bytes_per_sect)); ++ FAT_SUPER->sectsize_bits = grub_log2 (FAT_CVT_U16 (bpb.bytes_per_sect)); + FAT_SUPER->clustsize_bits +- = FAT_SUPER->sectsize_bits + log2 (bpb.sects_per_clust); ++ = FAT_SUPER->sectsize_bits + grub_log2 (bpb.sects_per_clust); + + /* Fill in info about super block */ + FAT_SUPER->num_sectors = FAT_CVT_U16 (bpb.short_sectors) +@@ -106,7 +111,7 @@ fat_mount (void) + FAT_SUPER->data_offset = + FAT_SUPER->root_offset + + ((FAT_SUPER->root_max - 1) >> FAT_SUPER->sectsize_bits) + 1; +- FAT_SUPER->num_clust = ++ FAT_SUPER->num_clust = + 2 + ((FAT_SUPER->num_sectors - FAT_SUPER->data_offset) + / bpb.sects_per_clust); + FAT_SUPER->sects_per_clust = bpb.sects_per_clust; +@@ -153,11 +158,11 @@ fat_mount (void) + /* Now do some sanity checks */ + + if (FAT_CVT_U16(bpb.bytes_per_sect) != (1 << FAT_SUPER->sectsize_bits) +- || FAT_CVT_U16(bpb.bytes_per_sect) != SECTOR_SIZE ++ || FAT_CVT_U16(bpb.bytes_per_sect) != sector_size + || bpb.sects_per_clust != (1 << (FAT_SUPER->clustsize_bits + - FAT_SUPER->sectsize_bits)) + || FAT_SUPER->num_clust <= 2 +- || (FAT_SUPER->fat_size * FAT_SUPER->num_clust / (2 * SECTOR_SIZE) ++ || (FAT_SUPER->fat_size * FAT_SUPER->num_clust / (2 * sector_size) + > FAT_SUPER->fat_length)) + return 0; + +@@ -201,6 +206,7 @@ fat_read (char *buf, int len) + int offset; + int ret = 0; + int size; ++ int sector_size = get_sector_size(current_drive); + + if (FAT_SUPER->file_cluster < 0) + { +@@ -236,10 +242,10 @@ fat_read (char *buf, int len) + if (cached_pos < 0 || + (cached_pos + FAT_SUPER->fat_size) > 2*FAT_CACHE_SIZE) + { +- FAT_SUPER->cached_fat = (fat_entry & ~(2*SECTOR_SIZE - 1)); ++ FAT_SUPER->cached_fat = (fat_entry & ~(2*sector_size - 1)); + cached_pos = (fat_entry - FAT_SUPER->cached_fat); + sector = FAT_SUPER->fat_offset +- + FAT_SUPER->cached_fat / (2*SECTOR_SIZE); ++ + FAT_SUPER->cached_fat / (2*sector_size); + if (!devread (sector, 0, FAT_CACHE_SIZE, (char*) FAT_BUF)) + return 0; + } +@@ -257,6 +263,8 @@ fat_read (char *buf, int len) + return ret; + if (next_cluster < 2 || next_cluster >= FAT_SUPER->num_clust) + { ++ grub_printf("next_cluster: %d FAT_SUPER->num_clust: %d\n", ++ next_cluster, FAT_SUPER->num_clust); + errnum = ERR_FSYS_CORRUPT; + return 0; + } +@@ -340,7 +348,8 @@ fat_dir (char *dirname) + /* Directories don't have a file size */ + filemax = MAXINT; + +- for (rest = dirname; (ch = *rest) && !isspace (ch) && ch != '/'; rest++); ++ for (rest = dirname; (ch = *rest) && !isspace (ch) && ch != '/'; rest++) ++ *rest = tolower(*rest); + + *rest = 0; + +@@ -432,7 +441,7 @@ fat_dir (char *dirname) + goto print_filename; + # endif /* STAGE1_5 */ + +- if (substring (dirname, filename) == 0) ++ if (subcasestring (dirname, filename) == 0) + break; + } + } +@@ -459,7 +468,7 @@ fat_dir (char *dirname) + if (do_possibilities) + { + print_filename: +- if (substring (dirname, filename) <= 0) ++ if (subcasestring (dirname, filename) <= 0) + { + if (print_possibilities > 0) + print_possibilities = -print_possibilities; +@@ -469,7 +478,7 @@ fat_dir (char *dirname) + } + # endif /* STAGE1_5 */ + +- if (substring (dirname, filename) == 0) ++ if (subcasestring (dirname, filename) == 0) + break; + } + +diff --git a/stage2/fsys_iso9660.c b/stage2/fsys_iso9660.c +index 90e4aa8..858238b 100644 +--- a/stage2/fsys_iso9660.c ++++ b/stage2/fsys_iso9660.c +@@ -56,8 +56,8 @@ struct iso_inode_info { + #define NAME_BUF ((unsigned char *)(FSYS_BUF + 8192)) + + +-static inline unsigned long +-log2 (unsigned long word) ++static inline unsigned int ++grub_log2 (unsigned int word) + { + asm volatile ("bsfl %1,%0" + : "=r" (word) +@@ -68,7 +68,7 @@ log2 (unsigned long word) + static int + iso9660_devread (int sector, int byte_offset, int byte_len, char *buf) + { +- unsigned short sector_size_lg2 = log2(buf_geom.sector_size); ++ unsigned short sector_size_lg2 = grub_log2(buf_geom.sector_size); + + /* + * We have to use own devread() function since BIOS return wrong geometry +@@ -81,8 +81,6 @@ iso9660_devread (int sector, int byte_offset, int byte_len, char *buf) + if (byte_len <= 0) + return 1; + +- sector += (byte_offset >> sector_size_lg2); +- byte_offset &= (buf_geom.sector_size - 1); + asm volatile ("shl%L0 %1,%0" + : "=r"(sector) + : "Ic"((int8_t)(ISO_SECTOR_BITS - sector_size_lg2)), +diff --git a/stage2/fsys_jfs.c b/stage2/fsys_jfs.c +index 307f836..d63b1de 100644 +--- a/stage2/fsys_jfs.c ++++ b/stage2/fsys_jfs.c +@@ -207,19 +207,20 @@ int + jfs_mount (void) + { + struct jfs_superblock super; ++ int sector_bits = get_sector_bits(current_drive); + +- if (part_length < MINJFS >> SECTOR_BITS +- || !devread (SUPER1_OFF >> SECTOR_BITS, 0, ++ if (part_length < MINJFS >> sector_bits ++ || !devread (SUPER1_OFF >> sector_bits, 0, + sizeof(struct jfs_superblock), (char *)&super) + || (super.s_magic != JFS_MAGIC) +- || !devread ((AITBL_OFF >> SECTOR_BITS) + FILESYSTEM_I, ++ || !devread ((AITBL_OFF >> sector_bits) + FILESYSTEM_I, + 0, DISIZE, (char*)fileset)) { + return 0; + } + + jfs.bsize = super.s_bsize; + jfs.l2bsize = super.s_l2bsize; +- jfs.bdlog = jfs.l2bsize - SECTOR_BITS; ++ jfs.bdlog = jfs.l2bsize - sector_bits; + + return 1; + } +@@ -387,9 +388,10 @@ int + jfs_embed (int *start_sector, int needed_sectors) + { + struct jfs_superblock super; ++ int sector_bits = get_sector_bits(current_drive); + + if (needed_sectors > 63 +- || !devread (SUPER1_OFF >> SECTOR_BITS, 0, ++ || !devread (SUPER1_OFF >> sector_bits, 0, + sizeof (struct jfs_superblock), + (char *)&super) + || (super.s_magic != JFS_MAGIC)) { +diff --git a/stage2/fsys_minix.c b/stage2/fsys_minix.c +index 5c76796..175ecf2 100644 +--- a/stage2/fsys_minix.c ++++ b/stage2/fsys_minix.c +@@ -138,11 +138,11 @@ struct minix_dir_entry { + #define SUPERBLOCK \ + ((struct minix_super_block *)(FSYS_BUF)) + #define INODE \ +- ((struct minix_inode *)((int) SUPERBLOCK + BLOCK_SIZE)) ++ ((struct minix_inode *)((unsigned long) SUPERBLOCK + BLOCK_SIZE)) + #define DATABLOCK1 \ +- ((int)((int)INODE + sizeof(struct minix_inode))) ++ ((unsigned long)INODE + sizeof(struct minix_inode)) + #define DATABLOCK2 \ +- ((int)((int)DATABLOCK1 + BLOCK_SIZE)) ++ ((unsigned long)DATABLOCK1 + BLOCK_SIZE) + + /* linux/stat.h */ + #define S_IFMT 00170000 +@@ -193,7 +193,7 @@ static int + minix_rdfsb (int fsblock, int buffer) + { + return devread (fsblock * (BLOCK_SIZE / DEV_BSIZE), 0, +- BLOCK_SIZE, (char *) buffer); ++ BLOCK_SIZE, (char *) (unsigned long) buffer); + } + + /* Maps LOGICAL_BLOCK (the file offset divided by the blocksize) into +@@ -336,7 +336,7 @@ minix_dir (char *dirname) + + ino_blk = (2 + SUPERBLOCK->s_imap_blocks + SUPERBLOCK->s_zmap_blocks + + (current_ino - 1) / MINIX_INODES_PER_BLOCK); +- if (! minix_rdfsb (ino_blk, (int) INODE)) ++ if (! minix_rdfsb (ino_blk, (unsigned long) INODE)) + return 0; + + /* reset indirect blocks! */ +diff --git a/stage2/fsys_reiserfs.c b/stage2/fsys_reiserfs.c +index 93ec5f8..f46fcb2 100644 +--- a/stage2/fsys_reiserfs.c ++++ b/stage2/fsys_reiserfs.c +@@ -292,7 +292,6 @@ struct reiserfs_de_head + + /* The size of the node cache */ + #define FSYSREISER_CACHE_SIZE 24*1024 +-#define FSYSREISER_MIN_BLOCKSIZE SECTOR_SIZE + #define FSYSREISER_MAX_BLOCKSIZE FSYSREISER_CACHE_SIZE / 3 + + /* Info about currently opened file */ +@@ -341,19 +340,19 @@ struct fsys_reiser_info + /* The cached s+tree blocks in FSYS_BUF, see below + * for a more detailed description. + */ +-#define ROOT ((char *) ((int) FSYS_BUF)) ++#define ROOT ((char *) ((unsigned long) FSYS_BUF)) + #define CACHE(i) (ROOT + ((i) << INFO->fullblocksize_shift)) + #define LEAF CACHE (DISK_LEAF_NODE_LEVEL) + + #define BLOCKHEAD(cache) ((struct block_head *) cache) +-#define ITEMHEAD ((struct item_head *) ((int) LEAF + BLKH_SIZE)) +-#define KEY(cache) ((struct key *) ((int) cache + BLKH_SIZE)) ++#define ITEMHEAD ((struct item_head *) ((unsigned long) LEAF + BLKH_SIZE)) ++#define KEY(cache) ((struct key *) ((unsigned long) cache + BLKH_SIZE)) + #define DC(cache) ((struct disk_child *) \ +- ((int) cache + BLKH_SIZE + KEY_SIZE * nr_item)) ++ ((unsigned long) cache + BLKH_SIZE + KEY_SIZE * nr_item)) + /* The fsys_reiser_info block. + */ + #define INFO \ +- ((struct fsys_reiser_info *) ((int) FSYS_BUF + FSYSREISER_CACHE_SIZE)) ++ ((struct fsys_reiser_info *) ((unsigned long) FSYS_BUF + FSYSREISER_CACHE_SIZE)) + /* + * The journal cache. For each transaction it contains the number of + * blocks followed by the real block numbers of this transaction. +@@ -366,8 +365,8 @@ struct fsys_reiser_info + #define JOURNAL_END ((__u32 *) (FSYS_BUF + FSYS_BUFLEN)) + + +-static __inline__ unsigned long +-log2 (unsigned long word) ++static __inline__ unsigned int ++grub_log2 (unsigned int word) + { + __asm__ ("bsfl %1,%0" + : "=r" (word) +@@ -569,9 +568,11 @@ int + reiserfs_mount (void) + { + struct reiserfs_super_block super; +- int superblock = REISERFS_DISK_OFFSET_IN_BYTES >> SECTOR_BITS; ++ int sector_bits = get_sector_bits(current_drive); ++ int sector_size = get_sector_size(current_drive); ++ int superblock = REISERFS_DISK_OFFSET_IN_BYTES >> sector_bits; + +- if (part_length < superblock + (sizeof (super) >> SECTOR_BITS) ++ if (part_length < superblock + (sizeof (super) >> sector_bits) + || ! devread (superblock, 0, sizeof (struct reiserfs_super_block), + (char *) &super) + || (substring (REISER3FS_SUPER_MAGIC_STRING, super.s_magic) > 0 +@@ -582,8 +583,8 @@ reiserfs_mount (void) + <= REISERFS_DISK_OFFSET_IN_BYTES)) + { + /* Try old super block position */ +- superblock = REISERFS_OLD_DISK_OFFSET_IN_BYTES >> SECTOR_BITS; +- if (part_length < superblock + (sizeof (super) >> SECTOR_BITS) ++ superblock = REISERFS_OLD_DISK_OFFSET_IN_BYTES >> sector_bits; ++ if (part_length < superblock + (sizeof (super) >> sector_bits) + || ! devread (superblock, 0, sizeof (struct reiserfs_super_block), + (char *) &super)) + return 0; +@@ -594,7 +595,7 @@ reiserfs_mount (void) + { + /* pre journaling super block ? */ + if (substring (REISERFS_SUPER_MAGIC_STRING, +- (char*) ((int) &super + 20)) > 0) ++ (char*) ((unsigned long) &super + 20)) > 0) + return 0; + + super.s_blocksize = REISERFS_OLD_BLOCKSIZE; +@@ -609,8 +610,8 @@ reiserfs_mount (void) + + INFO->version = super.s_version; + INFO->blocksize = super.s_blocksize; +- INFO->fullblocksize_shift = log2 (super.s_blocksize); +- INFO->blocksize_shift = INFO->fullblocksize_shift - SECTOR_BITS; ++ INFO->fullblocksize_shift = grub_log2 (super.s_blocksize); ++ INFO->blocksize_shift = INFO->fullblocksize_shift - sector_bits; + INFO->cached_slots = + (FSYSREISER_CACHE_SIZE >> INFO->fullblocksize_shift) - 1; + +@@ -622,9 +623,9 @@ reiserfs_mount (void) + /* Clear node cache. */ + memset (INFO->blocks, 0, sizeof (INFO->blocks)); + +- if (super.s_blocksize < FSYSREISER_MIN_BLOCKSIZE ++ if (super.s_blocksize < get_sector_size(current_drive) + || super.s_blocksize > FSYSREISER_MAX_BLOCKSIZE +- || (SECTOR_SIZE << INFO->blocksize_shift) != super.s_blocksize) ++ || (sector_size << INFO->blocksize_shift) != super.s_blocksize) + return 0; + + /* Initialize journal code. If something fails we end with zero +@@ -1215,9 +1216,10 @@ int + reiserfs_embed (int *start_sector, int needed_sectors) + { + struct reiserfs_super_block super; ++ int sector_bits = get_sector_bits(current_drive); + int num_sectors; +- +- if (! devread (REISERFS_DISK_OFFSET_IN_BYTES >> SECTOR_BITS, 0, ++ ++ if (! devread (REISERFS_DISK_OFFSET_IN_BYTES >> sector_bits, 0, + sizeof (struct reiserfs_super_block), (char *) &super)) + return 0; + +@@ -1229,9 +1231,9 @@ reiserfs_embed (int *start_sector, int needed_sectors) + * the journal log */ + super.s_journal_block * super.s_blocksize + > REISERFS_DISK_OFFSET_IN_BYTES)) +- num_sectors = (REISERFS_DISK_OFFSET_IN_BYTES >> SECTOR_BITS) - 1; ++ num_sectors = (REISERFS_DISK_OFFSET_IN_BYTES >> sector_bits) - 1; + else +- num_sectors = (REISERFS_OLD_DISK_OFFSET_IN_BYTES >> SECTOR_BITS) - 1; ++ num_sectors = (REISERFS_OLD_DISK_OFFSET_IN_BYTES >> sector_bits) - 1; + + return (needed_sectors <= num_sectors); + } +diff --git a/stage2/fsys_uefi.c b/stage2/fsys_uefi.c +new file mode 100644 +index 0000000..58b7050 +--- /dev/null ++++ b/stage2/fsys_uefi.c +@@ -0,0 +1,265 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2001 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#include "shared.h" ++#include "filesys.h" ++ ++#ifdef PLATFORM_EFI ++#undef GRUB_UTIL ++ ++#include ++#include ++#include ++#include ++#include ++ ++static grub_efi_simple_file_system_t *file_system; ++static grub_efi_guid_t fsinfo_guid = GRUB_EFI_DEVICE_PATH_GUID; ++grub_efi_file_t *root = NULL; ++grub_efi_file_t *file = NULL; ++ ++typedef struct { ++ grub_efi_uint64_t size; ++ grub_efi_uint64_t filesize; ++ grub_efi_uint64_t physicalsize; ++ grub_efi_time_t createtime; ++ grub_efi_time_t accesstime; ++ grub_efi_time_t modifytime; ++ grub_efi_uint64_t attribute; ++ grub_efi_char16_t filename[]; ++} grub_efi_file_info_t; ++ ++int ++uefi_mount (void) ++{ ++ grub_efi_handle_t dev_handle = grub_efidisk_get_current_bdev_handle(); ++ grub_efi_status_t status; ++ ++ if (!dev_handle) ++ return 0; ++ ++ file_system = grub_efi_open_protocol (dev_handle, &simple_file_system_guid, ++ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL); ++ ++ if (!file_system) ++ return 0; ++ ++ status = Call_Service_2 (file_system->open_volume, file_system, &root); ++ ++ if (status != GRUB_EFI_SUCCESS) ++ return 0; ++ ++ return 1; ++} ++ ++int ++uefi_dir (char *dirname) ++{ ++ grub_efi_status_t status; ++ grub_efi_char16_t *file_name_w = NULL; ++ grub_efi_char16_t *dir_name_w = NULL; ++ grub_efi_file_info_t *fileinfo = NULL; ++ grub_efi_uintn_t buffersize = 0; ++ grub_efi_file_t *directory = NULL; ++ int i, dirlen = 0, ret = 0; ++ ++ file_name_w = grub_malloc (2 * strlen(dirname) + 2); ++ if (!file_name_w) ++ goto done; ++ ++ for (i=0; iopen, root, &file, file_name_w, ++ GRUB_EFI_FILE_MODE_READ, 0); ++ ++ if (status != GRUB_EFI_SUCCESS) ++ goto done; ++ ++ if (dirname[i-1] == '/') { ++ if (print_possibilities) ++ grub_printf("\n"); ++ ++ while (1) { ++ int filenamelen; ++ ++ status = Call_Service_3 (file->read, file, &buffersize, fileinfo); ++ ++ if (status == GRUB_EFI_BUFFER_TOO_SMALL) { ++ fileinfo = grub_malloc(buffersize); ++ continue; ++ } else if (status) { ++ goto done; ++ } else if (buffersize == 0) { ++ ret = 1; ++ if (print_possibilities) ++ grub_printf("\n"); ++ goto done; ++ } ++ ++ filenamelen = fileinfo->size - sizeof(*fileinfo); ++ ++ if (print_possibilities) { ++ for (i=0; ifilename[i]); ++ } ++ grub_printf(" "); ++ } ++ } else { ++ char *data = NULL; ++ dir_name_w = grub_malloc (2 * dirlen + 2); ++ if (!dir_name_w) ++ goto done; ++ ++ for (i=0; iopen, root, &directory, dir_name_w, ++ GRUB_EFI_FILE_MODE_READ, 0); ++ ++ while (1) { ++ int filenamelen; ++ int invalid = 0; ++ ++ status = Call_Service_3 (directory->read, directory, &buffersize, fileinfo); ++ ++ if (status == GRUB_EFI_BUFFER_TOO_SMALL) { ++ fileinfo = grub_malloc(buffersize); ++ continue; ++ } else if (status) { ++ goto done; ++ } else if (buffersize == 0) { ++ goto done; ++ } ++ ++ filenamelen = fileinfo->size - sizeof(*fileinfo); ++ ++ if (filenamelen != ((strlen(dirname) - dirlen) * 2)) ++ continue; ++ ++ for (i=0; ifilename[i] != file_name_w[i + dirlen + 1]) { ++ if (fileinfo->filename[i] > 0xff || ++ (grub_tolower(fileinfo->filename[i]) != ++ grub_tolower(file_name_w[i + dirlen + 1]))) ++ invalid = 1; ++ } ++ } ++ ++ if (!invalid) ++ break; ++ } ++ ++ if (fileinfo->filesize < 256 && fileinfo->filesize > 3) ++ { ++ data = grub_malloc(fileinfo->filesize); ++ filepos = 0; ++ ++ uefi_read(data, fileinfo->filesize); ++ ++ /* ++ * UEFI doesn't really support symlinks. Apple's UEFI driver exposes ++ * them as files containing the path of the target. This provides ++ * hacky support in the absence of a real driver. ++ */ ++ if (data[0] == '.' && data[1] == '.' && data[2] == '/') ++ { ++ int j; ++ char *tmpdir = grub_malloc(dirlen + fileinfo->filesize); ++ ++ for (j=0; jfilesize; j++) ++ tmpdir[j+dirlen+1] = data[j]; ++ tmpdir[j+dirlen+1] = '\0'; ++ ++ /* Open the new file */ ++ ret = uefi_dir(tmpdir); ++ grub_free (tmpdir); ++ grub_free (data); ++ goto done; ++ } ++ } ++ ++ if (data) ++ grub_free(data); ++ ret = 1; ++ filemax = fileinfo->filesize; ++ filepos = 0; ++ } ++ ++ done: ++ if (fileinfo) ++ grub_free (fileinfo); ++ if (dir_name_w) ++ grub_free (dir_name_w); ++ if (file_name_w) ++ grub_free (file_name_w); ++ ++ return ret; ++} ++ ++void ++uefi_close (void) ++{ ++ grub_efi_status_t status = 0; ++ ++ if (file) ++ status = Call_Service_1 (file->close, file); ++ ++ file = NULL; ++} ++ ++int ++uefi_read (char *addr, int len) ++{ ++ grub_efi_status_t status; ++ grub_efi_uintn_t length = len; ++ ++ errnum = 0; ++ ++ status = Call_Service_2 (file->set_position, file, filepos); ++ ++ if (status != GRUB_EFI_SUCCESS) ++ goto out; ++ ++ status = Call_Service_3 (file->read, file, &length, addr); ++ ++ len = length; ++ ++ if (status == GRUB_EFI_SUCCESS) { ++ filepos += len; ++ return len; ++ } ++ ++ out: ++ errnum = ERR_FILE_NOT_FOUND; ++ ++ return 0; ++} ++#endif +diff --git a/stage2/fsys_vstafs.c b/stage2/fsys_vstafs.c +index a116717..652e784 100644 +--- a/stage2/fsys_vstafs.c ++++ b/stage2/fsys_vstafs.c +@@ -30,8 +30,8 @@ static struct dir_entry *vstafs_nextdir (void); + + + #define FIRST_SECTOR ((struct first_sector *) FSYS_BUF) +-#define FILE_INFO ((struct fs_file *) (int) FIRST_SECTOR + 8192) +-#define DIRECTORY_BUF ((struct dir_entry *) (int) FILE_INFO + 512) ++#define FILE_INFO ((struct fs_file *) (unsigned long) FIRST_SECTOR + 8192) ++#define DIRECTORY_BUF ((struct dir_entry *) (unsigned long) FILE_INFO + 512) + + #define ROOT_SECTOR 1 + +@@ -186,35 +186,35 @@ vstafs_dir (char *dirname) + int + vstafs_read (char *addr, int len) + { +- struct alloc *a; ++ struct alloc *al; + int size, ret = 0, offset, curr_len = 0; +- int curr_ext; ++ int this_ext; + char extent; + int ext_size; + char *curr_pos; + + get_file_info (f_sector); + size = FILE_INFO->len-VSTAFS_START_DATA; +- a = FILE_INFO->blocks; ++ al = FILE_INFO->blocks; + + if (filepos > 0) + { +- if (filepos < a[0].a_len * 512 - VSTAFS_START_DATA) ++ if (filepos < al[0].a_len * 512 - VSTAFS_START_DATA) + { + offset = filepos + VSTAFS_START_DATA; + extent = 0; +- curr_len = a[0].a_len * 512 - offset - filepos; ++ curr_len = al[0].a_len * 512 - offset - filepos; + } + else + { +- ext_size = a[0].a_len * 512 - VSTAFS_START_DATA; ++ ext_size = al[0].a_len * 512 - VSTAFS_START_DATA; + offset = filepos - ext_size; + extent = 1; + do + { + curr_len -= ext_size; + offset -= ext_size; +- ext_size = a[extent+1].a_len * 512; ++ ext_size = al[extent+1].a_len * 512; + } + while (extent < FILE_INFO->extents && offset>ext_size); + } +@@ -223,16 +223,16 @@ vstafs_read (char *addr, int len) + { + offset = VSTAFS_START_DATA; + extent = 0; +- curr_len = a[0].a_len * 512 - offset; ++ curr_len = al[0].a_len * 512 - offset; + } + + curr_pos = addr; + if (curr_len > len) + curr_len = len; + +- for (curr_ext=extent; +- curr_ext < FILE_INFO->extents; +- curr_len = a[curr_ext].a_len * 512, curr_pos += curr_len, curr_ext++) ++ for (this_ext=extent; ++ this_ext < FILE_INFO->extents; ++ curr_len = al[this_ext].a_len * 512, curr_pos += curr_len, this_ext++) + { + ret += curr_len; + size -= curr_len; +@@ -242,7 +242,7 @@ vstafs_read (char *addr, int len) + curr_len += size; + } + +- devread (a[curr_ext].a_start,offset, curr_len, curr_pos); ++ devread (al[this_ext].a_start,offset, curr_len, curr_pos); + offset = 0; + } + +diff --git a/stage2/fsys_xfs.c b/stage2/fsys_xfs.c +index 76c4c13..226e343 100644 +--- a/stage2/fsys_xfs.c ++++ b/stage2/fsys_xfs.c +@@ -97,19 +97,23 @@ ino2offset (xfs_ino_t ino) + return ino & XFS_INO_MASK(XFS_INO_OFFSET_BITS); + } + +-static inline __const__ xfs_uint16_t +-le16 (xfs_uint16_t x) ++static inline xfs_uint16_t __attribute__((__const__)) ++le16 (xfs_uint16_t x) + { ++#if 1 ++ return ((x & 0xff00) >> 8) | ((x & 0xff) << 8); ++#else + __asm__("xchgb %b0,%h0" \ + : "=q" (x) \ + : "0" (x)); \ + return x; ++#endif + } + +-static inline __const__ xfs_uint32_t ++static inline xfs_uint32_t __attribute__((__const__)) + le32 (xfs_uint32_t x) + { +-#if 0 ++#if 1 + /* 386 doesn't have bswap. */ + __asm__("bswap %0" : "=r" (x) : "0" (x)); + #else +@@ -122,7 +126,7 @@ le32 (xfs_uint32_t x) + return x; + } + +-static inline __const__ xfs_uint64_t ++static inline xfs_uint64_t __attribute__((__const__)) + le64 (xfs_uint64_t x) + { + xfs_uint32_t h = x >> 32; +@@ -187,12 +191,12 @@ fsb2daddr (xfs_fsblock_t fsbno) + } + + #undef offsetof +-#define offsetof(t,m) ((int)&(((t *)0)->m)) ++#define offsetof(t,m) __builtin_offsetof(t, m) + +-static inline int ++static inline xfs_uint64_t + btroot_maxrecs (void) + { +- int tmp = icore.di_forkoff ? (icore.di_forkoff << 3) : xfs.isize; ++ xfs_uint64_t tmp = icore.di_forkoff ? (icore.di_forkoff << 3) : xfs.isize; + + return (tmp - sizeof(xfs_bmdr_block_t) - offsetof(xfs_dinode_t, di_u)) / + (sizeof (xfs_bmbt_key_t) + sizeof (xfs_bmbt_ptr_t)); +@@ -465,7 +469,7 @@ xfs_mount (void) + + xfs.bsize = le32 (super.sb_blocksize); + xfs.blklog = super.sb_blocklog; +- xfs.bdlog = xfs.blklog - SECTOR_BITS; ++ xfs.bdlog = xfs.blklog - get_sector_bits(current_drive); + xfs.rootino = le64 (super.sb_rootino); + xfs.isize = le16 (super.sb_inodesize); + xfs.agblocks = le32 (super.sb_agblocks); +diff --git a/stage2/gpt.h b/stage2/gpt.h +new file mode 100644 +index 0000000..ad6d8f1 +--- /dev/null ++++ b/stage2/gpt.h +@@ -0,0 +1,69 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2002,2005,2006 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifndef _GPT_H ++#define _GPT_H ++ ++typedef signed char grub_int8_t; ++typedef signed short grub_int16_t; ++typedef signed int grub_int32_t; ++typedef signed long long int grub_int64_t; ++typedef unsigned char grub_uint8_t; ++typedef unsigned short grub_uint16_t; ++typedef unsigned int grub_uint32_t; ++typedef unsigned long long int grub_uint64_t; ++ ++struct grub_gpt_header ++{ ++ grub_uint64_t magic; ++ grub_uint32_t version; ++ grub_uint32_t headersize; ++ grub_uint32_t crc32; ++ grub_uint32_t unused1; ++ grub_uint64_t primary; ++ grub_uint64_t backup; ++ grub_uint64_t start; ++ grub_uint64_t end; ++ grub_uint8_t guid[16]; ++ grub_uint64_t partitions; ++ grub_uint32_t maxpart; ++ grub_uint32_t partentry_size; ++ grub_uint32_t partentry_crc32; ++} __attribute__ ((packed)); ++ ++struct grub_gpt_partentry ++{ ++ grub_uint64_t type1; ++ grub_uint64_t type2; ++ grub_uint8_t guid[16]; ++ grub_uint64_t start; ++ grub_uint64_t end; ++ grub_uint8_t attrib; ++ char name[72]; ++} __attribute__ ((packed)); ++ ++#define GPT_HEADER_MAGIC 0x5452415020494645ULL ++ ++#define GPT_ENTRY_SECTOR(drive,size,entry) \ ++ ((((entry) * (size) + 1) & ~(get_sector_size(drive) - 1)) \ ++ >> get_sector_bits(drive)) ++#define GPT_ENTRY_INDEX(drive, size,entry) \ ++ ((((entry) * (size) + 1) & (get_sector_size(drive) - 1)) - 1) ++ ++#endif /* _GPT_H */ +diff --git a/stage2/graphics.c b/stage2/graphics.c +new file mode 100644 +index 0000000..81109ae +--- /dev/null ++++ b/stage2/graphics.c +@@ -0,0 +1,573 @@ ++/* graphics.c - graphics mode support for GRUB */ ++/* Implemented as a terminal type by Jeremy Katz based ++ * on a patch by Paulo César Pereira de Andrade ++ */ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2001,2002 Red Hat, Inc. ++ * Portions copyright (C) 2000 Conectiva, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++ ++ ++#ifdef SUPPORT_GRAPHICS ++ ++#include ++#include ++#include ++ ++int saved_videomode; ++unsigned char *font8x16; ++ ++int graphics_inited = 0; ++static char splashimage[64]; ++ ++#define VSHADOW VSHADOW1 ++unsigned char VSHADOW1[38400]; ++unsigned char VSHADOW2[38400]; ++unsigned char VSHADOW4[38400]; ++unsigned char VSHADOW8[38400]; ++ ++/* constants to define the viewable area */ ++const int x0 = 0; ++const int x1 = 80; ++const int y0 = 0; ++const int y1 = 30; ++ ++/* text buffer has to be kept around so that we can write things as we ++ * scroll and the like */ ++unsigned short text[80 * 30]; ++ ++/* why do these have to be kept here? */ ++int foreground = (63 << 16) | (63 << 8) | (63), background = 0, border = 0; ++ ++/* current position */ ++static int fontx = 0; ++static int fonty = 0; ++ ++/* global state so that we don't try to recursively scroll or cursor */ ++static int no_scroll = 0; ++ ++/* color state */ ++static int graphics_standard_color = A_NORMAL; ++static int graphics_normal_color = A_NORMAL; ++static int graphics_highlight_color = A_REVERSE; ++static int graphics_current_color = A_NORMAL; ++static color_state graphics_color_state = COLOR_STATE_STANDARD; ++ ++ ++/* graphics local functions */ ++static void graphics_setxy(int col, int row); ++static void graphics_scroll(void); ++ ++/* FIXME: where do these really belong? */ ++static inline void outb(unsigned short port, unsigned char val) ++{ ++ __asm __volatile ("outb %0,%1"::"a" (val), "d" (port)); ++} ++ ++static void MapMask(int value) { ++ outb(0x3c4, 2); ++ outb(0x3c5, value); ++} ++ ++/* bit mask register */ ++static void BitMask(int value) { ++ outb(0x3ce, 8); ++ outb(0x3cf, value); ++} ++ ++ ++ ++/* Set the splash image */ ++void graphics_set_splash(char *splashfile) { ++ grub_strcpy(splashimage, splashfile); ++} ++ ++/* Get the current splash image */ ++char *graphics_get_splash(void) { ++ return splashimage; ++} ++ ++/* Initialize a vga16 graphics display with the palette based off of ++ * the image in splashimage. If the image doesn't exist, leave graphics ++ * mode. */ ++int graphics_init() ++{ ++ if (!read_image(splashimage)) { ++ current_term = term_table; ++ grub_printf("failed to read image\n"); ++ return 0; ++ } ++ ++ font8x16 = (unsigned char*)graphics_get_font(); ++ ++ graphics_inited = 1; ++ ++ /* make sure that the highlight color is set correctly */ ++ graphics_highlight_color = ((graphics_normal_color >> 4) | ++ ((graphics_normal_color & 0xf) << 4)); ++ ++ return 1; ++} ++ ++/* Leave graphics mode */ ++void graphics_end(void) ++{ ++ if (graphics_inited) { ++ set_videomode(saved_videomode); ++ graphics_inited = 0; ++ } ++} ++ ++/* Print ch on the screen. Handle any needed scrolling or the like */ ++void graphics_putchar(int ch) { ++ ch &= 0xff; ++ ++ graphics_cursor(0); ++ ++ if (ch == '\n') { ++ if (fonty + 1 < y1) ++ graphics_setxy(fontx, fonty + 1); ++ else ++ graphics_scroll(); ++ graphics_cursor(1); ++ return; ++ } else if (ch == '\r') { ++ graphics_setxy(x0, fonty); ++ graphics_cursor(1); ++ return; ++ } ++ ++ graphics_cursor(0); ++ ++ text[fonty * 80 + fontx] = ch; ++ text[fonty * 80 + fontx] &= 0x00ff; ++ if (graphics_current_color & 0xf0) ++ text[fonty * 80 + fontx] |= 0x100; ++ ++ graphics_cursor(0); ++ ++ if ((fontx + 1) >= x1) { ++ graphics_setxy(x0, fonty); ++ if (fonty + 1 < y1) ++ graphics_setxy(x0, fonty + 1); ++ else ++ graphics_scroll(); ++ } else { ++ graphics_setxy(fontx + 1, fonty); ++ } ++ ++ graphics_cursor(1); ++} ++ ++/* get the current location of the cursor */ ++int graphics_getxy(void) { ++ return (fontx << 8) | fonty; ++} ++ ++void graphics_gotoxy(int x, int y) { ++ graphics_cursor(0); ++ ++ graphics_setxy(x, y); ++ ++ graphics_cursor(1); ++} ++ ++void graphics_cls(void) { ++ int i; ++ unsigned char *mem, *s1, *s2, *s4, *s8; ++ ++ graphics_cursor(0); ++ graphics_gotoxy(x0, y0); ++ ++ mem = (unsigned char*)VIDEOMEM; ++ s1 = (unsigned char*)VSHADOW1; ++ s2 = (unsigned char*)VSHADOW2; ++ s4 = (unsigned char*)VSHADOW4; ++ s8 = (unsigned char*)VSHADOW8; ++ ++ for (i = 0; i < 80 * 30; i++) ++ text[i] = ' '; ++ graphics_cursor(1); ++ ++ BitMask(0xff); ++ ++ /* plano 1 */ ++ MapMask(1); ++ grub_memcpy(mem, s1, 38400); ++ ++ /* plano 2 */ ++ MapMask(2); ++ grub_memcpy(mem, s2, 38400); ++ ++ /* plano 3 */ ++ MapMask(4); ++ grub_memcpy(mem, s4, 38400); ++ ++ /* plano 4 */ ++ MapMask(8); ++ grub_memcpy(mem, s8, 38400); ++ ++ MapMask(15); ++ ++} ++ ++void graphics_setcolorstate (color_state state) { ++ switch (state) { ++ case COLOR_STATE_STANDARD: ++ graphics_current_color = graphics_standard_color; ++ break; ++ case COLOR_STATE_NORMAL: ++ graphics_current_color = graphics_normal_color; ++ break; ++ case COLOR_STATE_HIGHLIGHT: ++ graphics_current_color = graphics_highlight_color; ++ break; ++ default: ++ graphics_current_color = graphics_standard_color; ++ break; ++ } ++ ++ graphics_color_state = state; ++} ++ ++void graphics_setcolor (int normal_color, int highlight_color) { ++ graphics_normal_color = normal_color; ++ graphics_highlight_color = highlight_color; ++ ++ graphics_setcolorstate (graphics_color_state); ++} ++ ++int graphics_setcursor (int on) { ++ /* FIXME: we don't have a cursor in graphics */ ++ return 0; ++} ++ ++/* Open the file, and search for a valid XPM header. Return 1 if one is found, ++ * leaving the current position as the start of the next line. Else, ++ * return 0. ++ */ ++static int xpm_open(char *s) { ++ char buf, prev, target[]="/* XPM */\n"; ++ int pos=0; ++ ++ if (!grub_open(s)) ++ return 0; ++ ++ prev='\n'; ++ buf=0; ++ do { ++ if (grub_read(&buf, 1) != 1) { ++ grub_close(); ++ return 0; ++ } ++ if ((pos == 0 && prev == '\n') || pos > 0) { ++ if (buf == target[pos]) ++ pos++; ++ else ++ pos=0; ++ } ++ prev=buf; ++ } while (target[pos]); ++ return 1; ++} ++ ++/* Read in the splashscreen image and set the palette up appropriately. ++ * Format of splashscreen is an xpm (can be gzipped) with 16 colors and ++ * 640x480. */ ++int read_image(char *s) ++{ ++ char buf[32], pal[16]; ++ unsigned char c, base, mask, *s1, *s2, *s4, *s8; ++ unsigned i, len, idx, colors, x, y, width, height; ++ ++ if (!xpm_open(s)) ++ return 0; ++ ++ saved_videomode = set_videomode(0x12); ++ ++ /* parse info */ ++ while (grub_read(&c, 1)) { ++ if (c == '"') ++ break; ++ } ++ ++ while (grub_read(&c, 1) && (c == ' ' || c == '\t')) ++ ; ++ ++ i = 0; ++ width = c - '0'; ++ while (grub_read(&c, 1)) { ++ if (c >= '0' && c <= '9') ++ width = width * 10 + c - '0'; ++ else ++ break; ++ } ++ while (grub_read(&c, 1) && (c == ' ' || c == '\t')) ++ ; ++ ++ height = c - '0'; ++ while (grub_read(&c, 1)) { ++ if (c >= '0' && c <= '9') ++ height = height * 10 + c - '0'; ++ else ++ break; ++ } ++ while (grub_read(&c, 1) && (c == ' ' || c == '\t')) ++ ; ++ ++ colors = c - '0'; ++ while (grub_read(&c, 1)) { ++ if (c >= '0' && c <= '9') ++ colors = colors * 10 + c - '0'; ++ else ++ break; ++ } ++ ++ base = 0; ++ while (grub_read(&c, 1) && c != '"') ++ ; ++ ++ /* palette */ ++ for (i = 0, idx = 1; i < colors; i++) { ++ len = 0; ++ ++ while (grub_read(&c, 1) && c != '"') ++ ; ++ grub_read(&c, 1); /* char */ ++ base = c; ++ grub_read(buf, 4); /* \t c # */ ++ ++ while (grub_read(&c, 1) && c != '"') { ++ if (len < sizeof(buf)) ++ buf[len++] = c; ++ } ++ ++ if (len == 6 && idx < 15) { ++ int r = ((hex(buf[0]) << 4) | hex(buf[1])) >> 2; ++ int g = ((hex(buf[2]) << 4) | hex(buf[3])) >> 2; ++ int b = ((hex(buf[4]) << 4) | hex(buf[5])) >> 2; ++ ++ pal[idx] = base; ++ graphics_set_palette(idx, r, g, b); ++ ++idx; ++ } ++ } ++ ++ x = y = len = 0; ++ ++ s1 = (unsigned char*)VSHADOW1; ++ s2 = (unsigned char*)VSHADOW2; ++ s4 = (unsigned char*)VSHADOW4; ++ s8 = (unsigned char*)VSHADOW8; ++ ++ for (i = 0; i < 38400; i++) ++ s1[i] = s2[i] = s4[i] = s8[i] = 0; ++ ++ /* parse xpm data */ ++ while (y < height) { ++ while (1) { ++ if (!grub_read(&c, 1)) { ++ grub_close(); ++ return 0; ++ } ++ if (c == '"') ++ break; ++ } ++ ++ while (grub_read(&c, 1) && c != '"') { ++ for (i = 1; i < 15; i++) ++ if (pal[i] == c) { ++ c = i; ++ break; ++ } ++ ++ mask = 0x80 >> (x & 7); ++ if (c & 1) ++ s1[len + (x >> 3)] |= mask; ++ if (c & 2) ++ s2[len + (x >> 3)] |= mask; ++ if (c & 4) ++ s4[len + (x >> 3)] |= mask; ++ if (c & 8) ++ s8[len + (x >> 3)] |= mask; ++ ++ if (++x >= 640) { ++ x = 0; ++ ++ if (y < 480) ++ len += 80; ++ ++y; ++ } ++ } ++ } ++ ++ grub_close(); ++ ++ graphics_set_palette(0, (background >> 16), (background >> 8) & 63, ++ background & 63); ++ graphics_set_palette(15, (foreground >> 16), (foreground >> 8) & 63, ++ foreground & 63); ++ graphics_set_palette(0x11, (border >> 16), (border >> 8) & 63, ++ border & 63); ++ ++ return 1; ++} ++ ++ ++/* Convert a character which is a hex digit to the appropriate integer */ ++int hex(int v) ++{ ++ if (v >= 'A' && v <= 'F') ++ return (v - 'A' + 10); ++ if (v >= 'a' && v <= 'f') ++ return (v - 'a' + 10); ++ return (v - '0'); ++} ++ ++ ++/* move the graphics cursor location to col, row */ ++static void graphics_setxy(int col, int row) { ++ if (col >= x0 && col < x1) { ++ fontx = col; ++ cursorX = col << 3; ++ } ++ if (row >= y0 && row < y1) { ++ fonty = row; ++ cursorY = row << 4; ++ } ++} ++ ++/* scroll the screen */ ++static void graphics_scroll(void) { ++ int i, j; ++ ++ /* we don't want to scroll recursively... that would be bad */ ++ if (no_scroll) ++ return; ++ no_scroll = 1; ++ ++ /* move everything up a line */ ++ for (j = y0 + 1; j < y1; j++) { ++ graphics_gotoxy(x0, j - 1); ++ for (i = x0; i < x1; i++) { ++ graphics_putchar(text[j * 80 + i]); ++ } ++ } ++ ++ /* last line should be blank */ ++ graphics_gotoxy(x0, y1 - 1); ++ for (i = x0; i < x1; i++) ++ graphics_putchar(' '); ++ graphics_setxy(x0, y1 - 1); ++ ++ no_scroll = 0; ++} ++ ++ ++void graphics_cursor(int set) { ++ unsigned char *pat, *mem, *ptr, chr[16 << 2]; ++ int i, ch, invert, offset; ++ ++ if (set && no_scroll) ++ return; ++ ++ offset = cursorY * 80 + fontx; ++ ch = text[fonty * 80 + fontx] & 0xff; ++ invert = (text[fonty * 80 + fontx] & 0xff00) != 0; ++ pat = font8x16 + (ch << 4); ++ ++ mem = (unsigned char*)VIDEOMEM + offset; ++ ++ if (!set) { ++ for (i = 0; i < 16; i++) { ++ unsigned char mask = pat[i]; ++ ++ if (!invert) { ++ chr[i ] = ((unsigned char*)VSHADOW1)[offset]; ++ chr[16 + i] = ((unsigned char*)VSHADOW2)[offset]; ++ chr[32 + i] = ((unsigned char*)VSHADOW4)[offset]; ++ chr[48 + i] = ((unsigned char*)VSHADOW8)[offset]; ++ ++ /* FIXME: if (shade) */ ++ if (1) { ++ if (ch == DISP_VERT || ch == DISP_LL || ++ ch == DISP_UR || ch == DISP_LR) { ++ unsigned char pmask = ~(pat[i] >> 1); ++ ++ chr[i ] &= pmask; ++ chr[16 + i] &= pmask; ++ chr[32 + i] &= pmask; ++ chr[48 + i] &= pmask; ++ } ++ if (i > 0 && ch != DISP_VERT) { ++ unsigned char pmask = ~(pat[i - 1] >> 1); ++ ++ chr[i ] &= pmask; ++ chr[16 + i] &= pmask; ++ chr[32 + i] &= pmask; ++ chr[48 + i] &= pmask; ++ if (ch == DISP_HORIZ || ch == DISP_UR || ch == DISP_LR) { ++ pmask = ~pat[i - 1]; ++ ++ chr[i ] &= pmask; ++ chr[16 + i] &= pmask; ++ chr[32 + i] &= pmask; ++ chr[48 + i] &= pmask; ++ } ++ } ++ } ++ chr[i ] |= mask; ++ chr[16 + i] |= mask; ++ chr[32 + i] |= mask; ++ chr[48 + i] |= mask; ++ ++ offset += 80; ++ } ++ else { ++ chr[i ] = ~mask; ++ chr[16 + i] = ~mask; ++ chr[32 + i] = ~mask; ++ chr[48 + i] = ~mask; ++ } ++ } ++ } ++ else { ++ MapMask(15); ++ ptr = mem; ++ for (i = 0; i < 16; i++, ptr += 80) { ++ cursorBuf[i] = pat[i]; ++ *ptr = ~pat[i]; ++ } ++ return; ++ } ++ ++ offset = 0; ++ for (i = 1; i < 16; i <<= 1, offset += 16) { ++ int j; ++ ++ MapMask(i); ++ ptr = mem; ++ for (j = 0; j < 16; j++, ptr += 80) ++ *ptr = chr[j + offset]; ++ } ++ ++ MapMask(15); ++} ++ ++#endif /* SUPPORT_GRAPHICS */ +diff --git a/stage2/graphics.h b/stage2/graphics.h +new file mode 100644 +index 0000000..a4cd9e8 +--- /dev/null ++++ b/stage2/graphics.h +@@ -0,0 +1,42 @@ ++/* graphics.h - graphics console interface */ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2002 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifndef GRAPHICS_H ++#define GRAPHICS_H ++ ++/* magic constant */ ++#define VIDEOMEM 0xA0000 ++ ++/* function prototypes */ ++char *graphics_get_splash(void); ++ ++int read_image(char *s); ++void graphics_cursor(int set); ++ ++/* function prototypes for asm functions */ ++void * graphics_get_font(); ++void graphics_set_palette(int idx, int red, int green, int blue); ++void set_int1c_handler(); ++void unset_int1c_handler(); ++ ++extern short cursorX, cursorY; ++extern char cursorBuf[16]; ++ ++#endif /* GRAPHICS_H */ +diff --git a/stage2/gunzip.c b/stage2/gunzip.c +index 8835089..45a2312 100644 +--- a/stage2/gunzip.c ++++ b/stage2/gunzip.c +@@ -141,7 +141,7 @@ static int gzip_filepos; + static int gzip_filemax; + static int gzip_fsmax; + static int saved_filepos; +-static unsigned long gzip_crc; ++static unsigned int gzip_crc; + + /* internal extra variables for use of inflate code */ + static int block_type; +@@ -169,7 +169,14 @@ linalloc (int size) + static void + reset_linalloc (void) + { ++#ifdef PLATFORM_EFI ++ unsigned int top = (mbi.mem_upper << 10) + 0x100000; ++ if (top > GRUB_SCRATCH_MEM_SIZE) ++ top = GRUB_SCRATCH_MEM_SIZE; ++ linalloc_topaddr = RAW_ADDR (top); ++#else + linalloc_topaddr = RAW_ADDR ((mbi.mem_upper << 10) + 0x100000); ++#endif + } + + +@@ -253,7 +260,7 @@ bad_field (int len) + + typedef unsigned char uch; + typedef unsigned short ush; +-typedef unsigned long ulg; ++typedef unsigned int ulg; + + /* + * Window Size +@@ -316,8 +323,8 @@ gunzip_test_header (void) + return 0; + } + +- gzip_crc = *((unsigned long *) buf); +- gzip_fsmax = gzip_filemax = *((unsigned long *) (buf + 4)); ++ gzip_crc = *((unsigned int *) buf); ++ gzip_fsmax = gzip_filemax = *((unsigned int *) (buf + 4)); + + initialize_tables (); + +diff --git a/stage2/iso9660.h b/stage2/iso9660.h +index 4a6a8cc..c311ecf 100644 +--- a/stage2/iso9660.h ++++ b/stage2/iso9660.h +@@ -73,11 +73,11 @@ typedef union { + + typedef struct __iso_16bit { + u_int16_t l, b; +-} iso_16bit_t __attribute__ ((packed)); ++} iso_16bit_t; + + typedef struct __iso_32bit { + u_int32_t l, b; +-} iso_32bit_t __attribute__ ((packed)); ++} iso_32bit_t; + + typedef u_int8_t iso_date_t[7]; + +diff --git a/stage2/mb_info.h b/stage2/mb_info.h +index 1e1e63b..3a8dcfb 100644 +--- a/stage2/mb_info.h ++++ b/stage2/mb_info.h +@@ -44,10 +44,10 @@ struct mod_list + + struct AddrRangeDesc + { +- unsigned long size; ++ unsigned int size; + unsigned long long BaseAddr; + unsigned long long Length; +- unsigned long Type; ++ unsigned int Type; + + /* unspecified optional padding... */ + } __attribute__ ((packed)); +diff --git a/stage2/pc_slice.h b/stage2/pc_slice.h +index a38d97f..2206e82 100644 +--- a/stage2/pc_slice.h ++++ b/stage2/pc_slice.h +@@ -38,50 +38,50 @@ + */ + + #define PC_MBR_CHECK_SIG(mbr_ptr) \ +- ( *( (unsigned short *) (((int) mbr_ptr) + PC_MBR_SIG_OFFSET) ) \ ++ ( *( (unsigned short *) (((unsigned long) mbr_ptr) + PC_MBR_SIG_OFFSET) ) \ + == PC_MBR_SIGNATURE ) + + #define PC_MBR_SIG(mbr_ptr) \ +- ( *( (unsigned short *) (((int) mbr_ptr) + PC_MBR_SIG_OFFSET) ) ) ++ ( *( (unsigned short *) (((unsigned long) mbr_ptr) + PC_MBR_SIG_OFFSET) ) ) + + #define PC_SLICE_FLAG(mbr_ptr, part) \ +- ( *( (unsigned char *) (((int) mbr_ptr) + PC_SLICE_OFFSET \ ++ ( *( (unsigned char *) (((unsigned long) mbr_ptr) + PC_SLICE_OFFSET \ + + (part << 4)) ) ) + + #define PC_SLICE_HEAD(mbr_ptr, part) \ +- ( *( (unsigned char *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 1 \ ++ ( *( (unsigned char *) (((unsigned long) mbr_ptr) + PC_SLICE_OFFSET + 1 \ + + (part << 4)) ) ) + + #define PC_SLICE_SEC(mbr_ptr, part) \ +- ( *( (unsigned char *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 2 \ ++ ( *( (unsigned char *) (((unsigned long) mbr_ptr) + PC_SLICE_OFFSET + 2 \ + + (part << 4)) ) ) + + #define PC_SLICE_CYL(mbr_ptr, part) \ +- ( *( (unsigned char *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 3 \ ++ ( *( (unsigned char *) (((unsigned long) mbr_ptr) + PC_SLICE_OFFSET + 3 \ + + (part << 4)) ) ) + + #define PC_SLICE_TYPE(mbr_ptr, part) \ +- ( *( (unsigned char *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 4 \ ++ ( *( (unsigned char *) (((unsigned long) mbr_ptr) + PC_SLICE_OFFSET + 4 \ + + (part << 4)) ) ) + + #define PC_SLICE_EHEAD(mbr_ptr, part) \ +- ( *( (unsigned char *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 5 \ ++ ( *( (unsigned char *) (((unsigned long) mbr_ptr) + PC_SLICE_OFFSET + 5 \ + + (part << 4)) ) ) + + #define PC_SLICE_ESEC(mbr_ptr, part) \ +- ( *( (unsigned char *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 6 \ ++ ( *( (unsigned char *) (((unsigned long) mbr_ptr) + PC_SLICE_OFFSET + 6 \ + + (part << 4)) ) ) + + #define PC_SLICE_ECYL(mbr_ptr, part) \ +- ( *( (unsigned char *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 7 \ ++ ( *( (unsigned char *) (((unsigned long) mbr_ptr) + PC_SLICE_OFFSET + 7 \ + + (part << 4)) ) ) + + #define PC_SLICE_START(mbr_ptr, part) \ +- ( *( (unsigned long *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 8 \ ++ ( *( (unsigned int *) (((unsigned long) mbr_ptr) + PC_SLICE_OFFSET + 8 \ + + (part << 4)) ) ) + + #define PC_SLICE_LENGTH(mbr_ptr, part) \ +- ( *( (unsigned long *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 12 \ ++ ( *( (unsigned int *) (((unsigned long) mbr_ptr) + PC_SLICE_OFFSET + 12 \ + + (part << 4)) ) ) + + +@@ -115,6 +115,8 @@ + #define PC_SLICE_TYPE_LINUX_EXTENDED 0x85 + #define PC_SLICE_TYPE_VSTAFS 0x9e + #define PC_SLICE_TYPE_DELL_UTIL 0xde ++#define PC_SLICE_TYPE_GPT 0xee ++#define PC_SLICE_TYPE_EFI 0xef + #define PC_SLICE_TYPE_LINUX_RAID 0xfd + + +@@ -129,7 +131,8 @@ + || _type == PC_SLICE_TYPE_FAT16_LBA \ + || _type == PC_SLICE_TYPE_FAT32 \ + || _type == PC_SLICE_TYPE_FAT32_LBA \ +- || _type == PC_SLICE_TYPE_DELL_UTIL; }) ++ || _type == PC_SLICE_TYPE_DELL_UTIL \ ++ || _type == PC_SLICE_TYPE_EFI; }) + + #define IS_PC_SLICE_TYPE_EXTENDED(type) \ + (((type) == PC_SLICE_TYPE_EXTENDED) \ +@@ -177,40 +180,40 @@ + */ + + #define BSD_LABEL_CHECK_MAG(l_ptr) \ +- ( *( (unsigned long *) (((int) l_ptr) + BSD_LABEL_MAG_OFFSET) ) \ +- == ( (unsigned long) BSD_LABEL_MAGIC ) ) ++ ( *( (unsigned int *) (((unsigned long) l_ptr) + BSD_LABEL_MAG_OFFSET) ) \ ++ == ( (unsigned int) BSD_LABEL_MAGIC ) ) + + #define BSD_LABEL_MAG(l_ptr) \ +- ( *( (unsigned long *) (((int) l_ptr) + BSD_LABEL_MAG_OFFSET) ) ) ++ ( *( (unsigned int *) (((unsigned long) l_ptr) + BSD_LABEL_MAG_OFFSET) ) ) + + #define BSD_LABEL_DTYPE(l_ptr) \ +- ( *( (unsigned short *) (((int) l_ptr) + BSD_LABEL_MAG_OFFSET + 4) ) ) ++ ( *( (unsigned short *) (((unsigned long) l_ptr) + BSD_LABEL_MAG_OFFSET + 4) ) ) + + #define BSD_LABEL_NPARTS(l_ptr) \ +- ( *( (unsigned short *) (((int) l_ptr) + BSD_LABEL_NPARTS_OFFSET) ) ) ++ ( *( (unsigned short *) (((unsigned long) l_ptr) + BSD_LABEL_NPARTS_OFFSET) ) ) + + #define BSD_PART_LENGTH(l_ptr, part) \ +- ( *( (unsigned long *) (((int) l_ptr) + BSD_PART_OFFSET \ ++ ( *( (unsigned int *) (((unsigned long) l_ptr) + BSD_PART_OFFSET \ + + (part << 4)) ) ) + + #define BSD_PART_START(l_ptr, part) \ +- ( *( (unsigned long *) (((int) l_ptr) + BSD_PART_OFFSET + 4 \ ++ ( *( (unsigned int *) (((unsigned long) l_ptr) + BSD_PART_OFFSET + 4 \ + + (part << 4)) ) ) + + #define BSD_PART_FRAG_SIZE(l_ptr, part) \ +- ( *( (unsigned long *) (((int) l_ptr) + BSD_PART_OFFSET + 8 \ ++ ( *( (unsigned int *) (((unsigned long) l_ptr) + BSD_PART_OFFSET + 8 \ + + (part << 4)) ) ) + + #define BSD_PART_TYPE(l_ptr, part) \ +- ( *( (unsigned char *) (((int) l_ptr) + BSD_PART_OFFSET + 12 \ ++ ( *( (unsigned char *) (((unsigned long) l_ptr) + BSD_PART_OFFSET + 12 \ + + (part << 4)) ) ) + + #define BSD_PART_FRAGS_PER_BLOCK(l_ptr, part) \ +- ( *( (unsigned char *) (((int) l_ptr) + BSD_PART_OFFSET + 13 \ ++ ( *( (unsigned char *) (((unsigned long) l_ptr) + BSD_PART_OFFSET + 13 \ + + (part << 4)) ) ) + + #define BSD_PART_EXTRA(l_ptr, part) \ +- ( *( (unsigned short *) (((int) l_ptr) + BSD_PART_OFFSET + 14 \ ++ ( *( (unsigned short *) (((unsigned long) l_ptr) + BSD_PART_OFFSET + 14 \ + + (part << 4)) ) ) + + +diff --git a/stage2/serial.c b/stage2/serial.c +index 16c376f..37b9532 100644 +--- a/stage2/serial.c ++++ b/stage2/serial.c +@@ -37,7 +37,7 @@ static int keep_track = 1; + + /* Hardware-dependent definitions. */ + +-#ifndef GRUB_UTIL ++#if ! defined (GRUB_UTIL) && ! defined (PLATFORM_EFI) + /* The structure for speed vs. divisor. */ + struct divisor + { +@@ -187,7 +187,7 @@ serial_hw_init (unsigned short port, unsigned int speed, + + return 1; + } +-#endif /* ! GRUB_UTIL */ ++#endif /* ! defined (GRUB_UTIL) && ! defined (PLATFORM_EFI) */ + + + /* Generic definitions. */ +diff --git a/stage2/sha256crypt.c b/stage2/sha256crypt.c +new file mode 100644 +index 0000000..db168a2 +--- /dev/null ++++ b/stage2/sha256crypt.c +@@ -0,0 +1,723 @@ ++/* SHA256-based Unix crypt implementation. ++ Released into the Public Domain by Ulrich Drepper . ++ Adapted for grub by Miloslav Trmac . */ ++ ++#include ++#include ++ ++#include ++ ++typedef unsigned int uint32_t; ++typedef size_t uintptr_t; ++#define alloca(SIZE) (__builtin_alloca (SIZE)) ++#define MIN(A, B) ((A) < (B) ? (A) : (B)) ++#define MAX(A, B) ((A) > (B) ? (A) : (B)) ++ ++/* Structure to save state of computation between the single steps. */ ++struct sha256_ctx ++{ ++ uint32_t H[8]; ++ ++ uint32_t total[2]; ++ uint32_t buflen; ++ char buffer[128]; /* NB: always correctly aligned for uint32_t. */ ++}; ++ ++ ++#if 1 /* __BYTE_ORDER == __LITTLE_ENDIAN */ ++# define SWAP(n) \ ++ (((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24)) ++#else ++# define SWAP(n) (n) ++#endif ++ ++ ++/* This array contains the bytes used to pad the buffer to the next ++ 64-byte boundary. (FIPS 180-2:5.1.1) */ ++static const unsigned char fillbuf[64] = { 0x80, 0 /* , 0, 0, ... */ }; ++ ++ ++/* Constants for SHA256 from FIPS 180-2:4.2.2. */ ++static const uint32_t K[64] = ++ { ++ 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, ++ 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, ++ 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, ++ 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, ++ 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, ++ 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, ++ 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, ++ 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, ++ 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, ++ 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, ++ 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, ++ 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, ++ 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, ++ 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, ++ 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, ++ 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 ++ }; ++ ++ ++/* Process LEN bytes of BUFFER, accumulating context into CTX. ++ It is assumed that LEN % 64 == 0. */ ++static void ++sha256_process_block (const void *buffer, size_t len, struct sha256_ctx *ctx) ++{ ++ const uint32_t *words = buffer; ++ size_t nwords = len / sizeof (uint32_t); ++ uint32_t a = ctx->H[0]; ++ uint32_t b = ctx->H[1]; ++ uint32_t c = ctx->H[2]; ++ uint32_t d = ctx->H[3]; ++ uint32_t e = ctx->H[4]; ++ uint32_t f = ctx->H[5]; ++ uint32_t g = ctx->H[6]; ++ uint32_t h = ctx->H[7]; ++ ++ /* First increment the byte count. FIPS 180-2 specifies the possible ++ length of the file up to 2^64 bits. Here we only compute the ++ number of bytes. Do a double word increment. */ ++ ctx->total[0] += len; ++ if (ctx->total[0] < len) ++ ++ctx->total[1]; ++ ++ /* Process all bytes in the buffer with 64 bytes in each round of ++ the loop. */ ++ while (nwords > 0) ++ { ++ uint32_t W[64]; ++ uint32_t a_save = a; ++ uint32_t b_save = b; ++ uint32_t c_save = c; ++ uint32_t d_save = d; ++ uint32_t e_save = e; ++ uint32_t f_save = f; ++ uint32_t g_save = g; ++ uint32_t h_save = h; ++ unsigned int t; ++ ++ /* Operators defined in FIPS 180-2:4.1.2. */ ++#define Ch(x, y, z) ((x & y) ^ (~x & z)) ++#define Maj(x, y, z) ((x & y) ^ (x & z) ^ (y & z)) ++#define S0(x) (CYCLIC (x, 2) ^ CYCLIC (x, 13) ^ CYCLIC (x, 22)) ++#define S1(x) (CYCLIC (x, 6) ^ CYCLIC (x, 11) ^ CYCLIC (x, 25)) ++#define R0(x) (CYCLIC (x, 7) ^ CYCLIC (x, 18) ^ (x >> 3)) ++#define R1(x) (CYCLIC (x, 17) ^ CYCLIC (x, 19) ^ (x >> 10)) ++ ++ /* It is unfortunate that C does not provide an operator for ++ cyclic rotation. Hope the C compiler is smart enough. */ ++#define CYCLIC(w, s) ((w >> s) | (w << (32 - s))) ++ ++ /* Compute the message schedule according to FIPS 180-2:6.2.2 step 2. */ ++ for (t = 0; t < 16; ++t) ++ { ++ W[t] = SWAP (*words); ++ ++words; ++ } ++ for (t = 16; t < 64; ++t) ++ W[t] = R1 (W[t - 2]) + W[t - 7] + R0 (W[t - 15]) + W[t - 16]; ++ ++ /* The actual computation according to FIPS 180-2:6.2.2 step 3. */ ++ for (t = 0; t < 64; ++t) ++ { ++ uint32_t T1 = h + S1 (e) + Ch (e, f, g) + K[t] + W[t]; ++ uint32_t T2 = S0 (a) + Maj (a, b, c); ++ h = g; ++ g = f; ++ f = e; ++ e = d + T1; ++ d = c; ++ c = b; ++ b = a; ++ a = T1 + T2; ++ } ++ ++ /* Add the starting values of the context according to FIPS 180-2:6.2.2 ++ step 4. */ ++ a += a_save; ++ b += b_save; ++ c += c_save; ++ d += d_save; ++ e += e_save; ++ f += f_save; ++ g += g_save; ++ h += h_save; ++ ++ /* Prepare for the next round. */ ++ nwords -= 16; ++ } ++ ++ /* Put checksum in context given as argument. */ ++ ctx->H[0] = a; ++ ctx->H[1] = b; ++ ctx->H[2] = c; ++ ctx->H[3] = d; ++ ctx->H[4] = e; ++ ctx->H[5] = f; ++ ctx->H[6] = g; ++ ctx->H[7] = h; ++} ++ ++ ++/* Initialize structure containing state of computation. ++ (FIPS 180-2:5.3.2) */ ++static void ++sha256_init_ctx (struct sha256_ctx *ctx) ++{ ++ ctx->H[0] = 0x6a09e667; ++ ctx->H[1] = 0xbb67ae85; ++ ctx->H[2] = 0x3c6ef372; ++ ctx->H[3] = 0xa54ff53a; ++ ctx->H[4] = 0x510e527f; ++ ctx->H[5] = 0x9b05688c; ++ ctx->H[6] = 0x1f83d9ab; ++ ctx->H[7] = 0x5be0cd19; ++ ++ ctx->total[0] = ctx->total[1] = 0; ++ ctx->buflen = 0; ++} ++ ++ ++/* Process the remaining bytes in the internal buffer and the usual ++ prolog according to the standard and write the result to RESBUF. ++ ++ IMPORTANT: On some systems it is required that RESBUF is correctly ++ aligned for a 32 bits value. */ ++static void * ++sha256_finish_ctx (struct sha256_ctx *ctx, void *resbuf) ++{ ++ /* Take yet unprocessed bytes into account. */ ++ uint32_t bytes = ctx->buflen; ++ size_t pad; ++ unsigned int i; ++ ++ /* Now count remaining bytes. */ ++ ctx->total[0] += bytes; ++ if (ctx->total[0] < bytes) ++ ++ctx->total[1]; ++ ++ pad = bytes >= 56 ? 64 + 56 - bytes : 56 - bytes; ++ memcpy (&ctx->buffer[bytes], fillbuf, pad); ++ ++ /* Put the 64-bit file length in *bits* at the end of the buffer. */ ++ *(uint32_t *) &ctx->buffer[bytes + pad + 4] = SWAP (ctx->total[0] << 3); ++ *(uint32_t *) &ctx->buffer[bytes + pad] = SWAP ((ctx->total[1] << 3) | ++ (ctx->total[0] >> 29)); ++ ++ /* Process last bytes. */ ++ sha256_process_block (ctx->buffer, bytes + pad + 8, ctx); ++ ++ /* Put result from CTX in first 32 bytes following RESBUF. */ ++ for (i = 0; i < 8; ++i) ++ ((uint32_t *) resbuf)[i] = SWAP (ctx->H[i]); ++ ++ return resbuf; ++} ++ ++ ++static void ++sha256_process_bytes (const void *buffer, size_t len, struct sha256_ctx *ctx) ++{ ++ /* When we already have some bits in our internal buffer concatenate ++ both inputs first. */ ++ if (ctx->buflen != 0) ++ { ++ size_t left_over = ctx->buflen; ++ size_t add = 128 - left_over > len ? len : 128 - left_over; ++ ++ memcpy (&ctx->buffer[left_over], buffer, add); ++ ctx->buflen += add; ++ ++ if (ctx->buflen > 64) ++ { ++ sha256_process_block (ctx->buffer, ctx->buflen & ~63, ctx); ++ ++ ctx->buflen &= 63; ++ /* The regions in the following copy operation cannot overlap. */ ++ memcpy (ctx->buffer, &ctx->buffer[(left_over + add) & ~63], ++ ctx->buflen); ++ } ++ ++ buffer = (const char *) buffer + add; ++ len -= add; ++ } ++ ++ /* Process available complete blocks. */ ++ if (len >= 64) ++ { ++/* To check alignment gcc has an appropriate operator. Other ++ compilers don't. */ ++#if __GNUC__ >= 2 ++# define UNALIGNED_P(p) (((uintptr_t) p) % __alignof__ (uint32_t) != 0) ++#else ++# define UNALIGNED_P(p) (((uintptr_t) p) % sizeof (uint32_t) != 0) ++#endif ++ if (UNALIGNED_P (buffer)) ++ while (len > 64) ++ { ++ sha256_process_block (memcpy (ctx->buffer, buffer, 64), 64, ctx); ++ buffer = (const char *) buffer + 64; ++ len -= 64; ++ } ++ else ++ { ++ sha256_process_block (buffer, len & ~63, ctx); ++ buffer = (const char *) buffer + (len & ~63); ++ len &= 63; ++ } ++ } ++ ++ /* Move remaining bytes into internal buffer. */ ++ if (len > 0) ++ { ++ size_t left_over = ctx->buflen; ++ ++ memcpy (&ctx->buffer[left_over], buffer, len); ++ left_over += len; ++ if (left_over >= 64) ++ { ++ sha256_process_block (ctx->buffer, 64, ctx); ++ left_over -= 64; ++ memcpy (ctx->buffer, &ctx->buffer[64], left_over); ++ } ++ ctx->buflen = left_over; ++ } ++} ++ ++ ++/* Define our magic string to mark salt for SHA256 "encryption" ++ replacement. */ ++static const char sha256_salt_prefix[] = "$5$"; ++ ++/* Prefix for optional rounds specification. */ ++static const char sha256_rounds_prefix[] = "rounds="; ++ ++/* Maximum salt string length. */ ++#define SALT_LEN_MAX 16 ++/* Default number of rounds if not explicitly specified. */ ++#define ROUNDS_DEFAULT 5000 ++/* Minimum number of rounds. */ ++#define ROUNDS_MIN 1000 ++/* Maximum number of rounds. */ ++#define ROUNDS_MAX 999999999 ++ ++/* Table with characters for base64 transformation. */ ++static const char b64t[64] = ++"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; ++ ++ ++static char * ++sha256_crypt_r (const char *key, const char *salt, char *buffer, int buflen) ++{ ++ unsigned char alt_result[32] ++ __attribute__ ((__aligned__ (__alignof__ (uint32_t)))); ++ unsigned char temp_result[32] ++ __attribute__ ((__aligned__ (__alignof__ (uint32_t)))); ++ struct sha256_ctx ctx; ++ struct sha256_ctx alt_ctx; ++ size_t salt_len; ++ size_t key_len; ++ size_t cnt; ++ char *cp; ++ char *copied_key = NULL; ++ char *copied_salt = NULL; ++ char *p_bytes; ++ char *s_bytes; ++ /* Default number of rounds. */ ++ size_t rounds = ROUNDS_DEFAULT; ++ bool rounds_custom = false; ++ ++ /* Find beginning of salt string. The prefix should normally always ++ be present. Just in case it is not. */ ++ if (grub_memcmp (sha256_salt_prefix, salt, ++ sizeof (sha256_salt_prefix) - 1) == 0) ++ /* Skip salt prefix. */ ++ salt += sizeof (sha256_salt_prefix) - 1; ++ ++ if (grub_memcmp (salt, sha256_rounds_prefix, ++ sizeof (sha256_rounds_prefix) - 1) == 0) ++ { ++ const char *num = salt + sizeof (sha256_rounds_prefix) - 1; ++ char *endp = (char *)num; ++ int srounds = 0; ++ if (*endp == '0' && tolower (endp[1]) == 'x') ++ /* This would be interpreted as hexadecimal by safe_parse_maxint(). */ ++ endp++; ++ else ++ /* On error, endp and srounds is not changed. */ ++ safe_parse_maxint(&endp, &srounds); ++ if (*endp == '$') ++ { ++ salt = endp + 1; ++ rounds = MAX (ROUNDS_MIN, MIN (srounds, ROUNDS_MAX)); ++ rounds_custom = true; ++ } ++ } ++ ++ salt_len = MIN (strcspn (salt, "$"), SALT_LEN_MAX); ++ key_len = strlen (key); ++ ++ if ((key - (char *) 0) % __alignof__ (uint32_t) != 0) ++ { ++ char *tmp = (char *) alloca (key_len + __alignof__ (uint32_t)); ++ key = copied_key = ++ memcpy (tmp + __alignof__ (uint32_t) ++ - (tmp - (char *) 0) % __alignof__ (uint32_t), ++ key, key_len); ++ } ++ ++ if ((salt - (char *) 0) % __alignof__ (uint32_t) != 0) ++ { ++ char *tmp = (char *) alloca (salt_len + __alignof__ (uint32_t)); ++ salt = copied_salt = ++ memcpy (tmp + __alignof__ (uint32_t) ++ - (tmp - (char *) 0) % __alignof__ (uint32_t), ++ salt, salt_len); ++ } ++ ++ /* Prepare for the real work. */ ++ sha256_init_ctx (&ctx); ++ ++ /* Add the key string. */ ++ sha256_process_bytes (key, key_len, &ctx); ++ ++ /* The last part is the salt string. This must be at most 16 ++ characters and it ends at the first `$' character (for ++ compatibility with existing implementations). */ ++ sha256_process_bytes (salt, salt_len, &ctx); ++ ++ ++ /* Compute alternate SHA256 sum with input KEY, SALT, and KEY. The ++ final result will be added to the first context. */ ++ sha256_init_ctx (&alt_ctx); ++ ++ /* Add key. */ ++ sha256_process_bytes (key, key_len, &alt_ctx); ++ ++ /* Add salt. */ ++ sha256_process_bytes (salt, salt_len, &alt_ctx); ++ ++ /* Add key again. */ ++ sha256_process_bytes (key, key_len, &alt_ctx); ++ ++ /* Now get result of this (32 bytes) and add it to the other ++ context. */ ++ sha256_finish_ctx (&alt_ctx, alt_result); ++ ++ /* Add for any character in the key one byte of the alternate sum. */ ++ for (cnt = key_len; cnt > 32; cnt -= 32) ++ sha256_process_bytes (alt_result, 32, &ctx); ++ sha256_process_bytes (alt_result, cnt, &ctx); ++ ++ /* Take the binary representation of the length of the key and for every ++ 1 add the alternate sum, for every 0 the key. */ ++ for (cnt = key_len; cnt > 0; cnt >>= 1) ++ if ((cnt & 1) != 0) ++ sha256_process_bytes (alt_result, 32, &ctx); ++ else ++ sha256_process_bytes (key, key_len, &ctx); ++ ++ /* Create intermediate result. */ ++ sha256_finish_ctx (&ctx, alt_result); ++ ++ /* Start computation of P byte sequence. */ ++ sha256_init_ctx (&alt_ctx); ++ ++ /* For every character in the password add the entire password. */ ++ for (cnt = 0; cnt < key_len; ++cnt) ++ sha256_process_bytes (key, key_len, &alt_ctx); ++ ++ /* Finish the digest. */ ++ sha256_finish_ctx (&alt_ctx, temp_result); ++ ++ /* Create byte sequence P. */ ++ cp = p_bytes = alloca (key_len); ++ for (cnt = key_len; cnt >= 32; cnt -= 32) ++ { ++ memcpy (cp, temp_result, 32); ++ cp += 32; ++ } ++ memcpy (cp, temp_result, cnt); ++ ++ /* Start computation of S byte sequence. */ ++ sha256_init_ctx (&alt_ctx); ++ ++ /* For every character in the password add the entire password. */ ++ for (cnt = 0; cnt < 16 + alt_result[0]; ++cnt) ++ sha256_process_bytes (salt, salt_len, &alt_ctx); ++ ++ /* Finish the digest. */ ++ sha256_finish_ctx (&alt_ctx, temp_result); ++ ++ /* Create byte sequence S. */ ++ cp = s_bytes = alloca (salt_len); ++ for (cnt = salt_len; cnt >= 32; cnt -= 32) ++ { ++ memcpy (cp, temp_result, 32); ++ cp += 32; ++ } ++ memcpy (cp, temp_result, cnt); ++ ++ /* Repeatedly run the collected hash value through SHA256 to burn ++ CPU cycles. */ ++ for (cnt = 0; cnt < rounds; ++cnt) ++ { ++ /* New context. */ ++ sha256_init_ctx (&ctx); ++ ++ /* Add key or last result. */ ++ if ((cnt & 1) != 0) ++ sha256_process_bytes (p_bytes, key_len, &ctx); ++ else ++ sha256_process_bytes (alt_result, 32, &ctx); ++ ++ /* Add salt for numbers not divisible by 3. */ ++ if (cnt % 3 != 0) ++ sha256_process_bytes (s_bytes, salt_len, &ctx); ++ ++ /* Add key for numbers not divisible by 7. */ ++ if (cnt % 7 != 0) ++ sha256_process_bytes (p_bytes, key_len, &ctx); ++ ++ /* Add key or last result. */ ++ if ((cnt & 1) != 0) ++ sha256_process_bytes (alt_result, 32, &ctx); ++ else ++ sha256_process_bytes (p_bytes, key_len, &ctx); ++ ++ /* Create intermediate result. */ ++ sha256_finish_ctx (&ctx, alt_result); ++ } ++ ++ /* Now we can construct the result string. It consists of three ++ parts. */ ++ cp = stpncpy (buffer, sha256_salt_prefix, MAX (0, buflen)); ++ buflen -= sizeof (sha256_salt_prefix) - 1; ++ ++ if (rounds_custom) ++ { ++ char sbuf[64]; ++ grub_sprintf (sbuf, "%s%llu$", sha256_rounds_prefix, ++ (unsigned long long)rounds); ++ size_t n = strlen (sbuf); ++ memcpy (cp, sbuf, MIN (MAX (0, buflen), n)); ++ cp += n; ++ buflen -= n; ++ } ++ ++ cp = stpncpy (cp, salt, MIN ((size_t) MAX (0, buflen), salt_len)); ++ buflen -= MIN ((size_t) MAX (0, buflen), salt_len); ++ ++ if (buflen > 0) ++ { ++ *cp++ = '$'; ++ --buflen; ++ } ++ ++#define b64_from_24bit(B2, B1, B0, N) \ ++ do { \ ++ unsigned int w = ((B2) << 16) | ((B1) << 8) | (B0); \ ++ int n = (N); \ ++ while (n-- > 0 && buflen > 0) \ ++ { \ ++ *cp++ = b64t[w & 0x3f]; \ ++ --buflen; \ ++ w >>= 6; \ ++ } \ ++ } while (0) ++ ++ b64_from_24bit (alt_result[0], alt_result[10], alt_result[20], 4); ++ b64_from_24bit (alt_result[21], alt_result[1], alt_result[11], 4); ++ b64_from_24bit (alt_result[12], alt_result[22], alt_result[2], 4); ++ b64_from_24bit (alt_result[3], alt_result[13], alt_result[23], 4); ++ b64_from_24bit (alt_result[24], alt_result[4], alt_result[14], 4); ++ b64_from_24bit (alt_result[15], alt_result[25], alt_result[5], 4); ++ b64_from_24bit (alt_result[6], alt_result[16], alt_result[26], 4); ++ b64_from_24bit (alt_result[27], alt_result[7], alt_result[17], 4); ++ b64_from_24bit (alt_result[18], alt_result[28], alt_result[8], 4); ++ b64_from_24bit (alt_result[9], alt_result[19], alt_result[29], 4); ++ b64_from_24bit (0, alt_result[31], alt_result[30], 3); ++ if (buflen <= 0) ++ buffer = NULL; ++ else ++ *cp = '\0'; /* Terminate the string. */ ++ ++ /* Clear the buffer for the intermediate result so that people ++ attaching to processes or reading core dumps cannot get any ++ information. We do it in this way to clear correct_words[] ++ inside the SHA256 implementation as well. */ ++ sha256_init_ctx (&ctx); ++ sha256_finish_ctx (&ctx, alt_result); ++ memset (temp_result, '\0', sizeof (temp_result)); ++ memset (p_bytes, '\0', key_len); ++ memset (s_bytes, '\0', salt_len); ++ memset (&ctx, '\0', sizeof (ctx)); ++ memset (&alt_ctx, '\0', sizeof (alt_ctx)); ++ if (copied_key != NULL) ++ memset (copied_key, '\0', key_len); ++ if (copied_salt != NULL) ++ memset (copied_salt, '\0', salt_len); ++ ++ return buffer; ++} ++ ++ ++/* This entry point is equivalent to the `crypt' function in Unix ++ libcs. */ ++char * ++sha256_crypt (const char *key, const char *salt) ++{ ++ static char buffer[sizeof (sha256_salt_prefix) - 1 ++ + sizeof (sha256_rounds_prefix) + 9 + 1 ++ + 256 + 1 + 43 + 1]; /* 256 bytes for salt */ ++ int needed = (sizeof (sha256_salt_prefix) - 1 ++ + sizeof (sha256_rounds_prefix) + 9 + 1 ++ + strlen (salt) + 1 + 43 + 1); ++ ++ if (sizeof (buffer) < needed) ++ return NULL; ++ ++ return sha256_crypt_r (key, salt, buffer, sizeof (buffer)); ++} ++ ++ ++#ifdef TEST ++static const struct ++{ ++ const char *input; ++ const char result[32]; ++} tests[] = ++ { ++ /* Test vectors from FIPS 180-2: appendix B.1. */ ++ { "abc", ++ "\xba\x78\x16\xbf\x8f\x01\xcf\xea\x41\x41\x40\xde\x5d\xae\x22\x23" ++ "\xb0\x03\x61\xa3\x96\x17\x7a\x9c\xb4\x10\xff\x61\xf2\x00\x15\xad" }, ++ /* Test vectors from FIPS 180-2: appendix B.2. */ ++ { "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", ++ "\x24\x8d\x6a\x61\xd2\x06\x38\xb8\xe5\xc0\x26\x93\x0c\x3e\x60\x39" ++ "\xa3\x3c\xe4\x59\x64\xff\x21\x67\xf6\xec\xed\xd4\x19\xdb\x06\xc1" }, ++ /* Test vectors from the NESSIE project. */ ++ { "", ++ "\xe3\xb0\xc4\x42\x98\xfc\x1c\x14\x9a\xfb\xf4\xc8\x99\x6f\xb9\x24" ++ "\x27\xae\x41\xe4\x64\x9b\x93\x4c\xa4\x95\x99\x1b\x78\x52\xb8\x55" }, ++ { "a", ++ "\xca\x97\x81\x12\xca\x1b\xbd\xca\xfa\xc2\x31\xb3\x9a\x23\xdc\x4d" ++ "\xa7\x86\xef\xf8\x14\x7c\x4e\x72\xb9\x80\x77\x85\xaf\xee\x48\xbb" }, ++ { "message digest", ++ "\xf7\x84\x6f\x55\xcf\x23\xe1\x4e\xeb\xea\xb5\xb4\xe1\x55\x0c\xad" ++ "\x5b\x50\x9e\x33\x48\xfb\xc4\xef\xa3\xa1\x41\x3d\x39\x3c\xb6\x50" }, ++ { "abcdefghijklmnopqrstuvwxyz", ++ "\x71\xc4\x80\xdf\x93\xd6\xae\x2f\x1e\xfa\xd1\x44\x7c\x66\xc9\x52" ++ "\x5e\x31\x62\x18\xcf\x51\xfc\x8d\x9e\xd8\x32\xf2\xda\xf1\x8b\x73" }, ++ { "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", ++ "\x24\x8d\x6a\x61\xd2\x06\x38\xb8\xe5\xc0\x26\x93\x0c\x3e\x60\x39" ++ "\xa3\x3c\xe4\x59\x64\xff\x21\x67\xf6\xec\xed\xd4\x19\xdb\x06\xc1" }, ++ { "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", ++ "\xdb\x4b\xfc\xbd\x4d\xa0\xcd\x85\xa6\x0c\x3c\x37\xd3\xfb\xd8\x80" ++ "\x5c\x77\xf1\x5f\xc6\xb1\xfd\xfe\x61\x4e\xe0\xa7\xc8\xfd\xb4\xc0" }, ++ { "123456789012345678901234567890123456789012345678901234567890" ++ "12345678901234567890", ++ "\xf3\x71\xbc\x4a\x31\x1f\x2b\x00\x9e\xef\x95\x2d\xd8\x3c\xa8\x0e" ++ "\x2b\x60\x02\x6c\x8e\x93\x55\x92\xd0\xf9\xc3\x08\x45\x3c\x81\x3e" } ++ }; ++#define ntests (sizeof (tests) / sizeof (tests[0])) ++ ++ ++static const struct ++{ ++ const char *salt; ++ const char *input; ++ const char *expected; ++} tests2[] = ++{ ++ { "$5$saltstring", "Hello world!", ++ "$5$saltstring$5B8vYYiY.CVt1RlTTf8KbXBH3hsxY/GNooZaBBGWEc5" }, ++ { "$5$rounds=10000$saltstringsaltstring", "Hello world!", ++ "$5$rounds=10000$saltstringsaltst$3xv.VbSHBb41AL9AvLeujZkZRBAwqFMz2." ++ "opqey6IcA" }, ++ { "$5$rounds=5000$toolongsaltstring", "This is just a test", ++ "$5$rounds=5000$toolongsaltstrin$Un/5jzAHMgOGZ5.mWJpuVolil07guHPvOW8" ++ "mGRcvxa5" }, ++ { "$5$rounds=1400$anotherlongsaltstring", ++ "a very much longer text to encrypt. This one even stretches over more" ++ "than one line.", ++ "$5$rounds=1400$anotherlongsalts$Rx.j8H.h8HjEDGomFU8bDkXm3XIUnzyxf12" ++ "oP84Bnq1" }, ++ { "$5$rounds=77777$short", ++ "we have a short salt string but not a short password", ++ "$5$rounds=77777$short$JiO1O3ZpDAxGJeaDIuqCoEFysAe1mZNJRs3pw0KQRd/" }, ++ { "$5$rounds=123456$asaltof16chars..", "a short string", ++ "$5$rounds=123456$asaltof16chars..$gP3VQ/6X7UUEW3HkBn2w1/Ptq2jxPyzV/" ++ "cZKmF/wJvD" }, ++ { "$5$rounds=10$roundstoolow", "the minimum number is still observed", ++ "$5$rounds=1000$roundstoolow$yfvwcWrQ8l/K0DAWyuPMDNHpIVlTQebY9l/gL97" ++ "2bIC" }, ++}; ++#define ntests2 (sizeof (tests2) / sizeof (tests2[0])) ++ ++ ++int ++sha256_test (void) ++{ ++ struct sha256_ctx ctx; ++ char sum[32]; ++ int result = 0; ++ int cnt, i; ++ ++ for (cnt = 0; cnt < (int) ntests; ++cnt) ++ { ++ sha256_init_ctx (&ctx); ++ sha256_process_bytes (tests[cnt].input, strlen (tests[cnt].input), &ctx); ++ sha256_finish_ctx (&ctx, sum); ++ if (memcmp (tests[cnt].result, sum, 32) != 0) ++ { ++ printf ("test %d run %d failed\n", cnt, 1); ++ result = 1; ++ } ++ ++ sha256_init_ctx (&ctx); ++ for (i = 0; tests[cnt].input[i] != '\0'; ++i) ++ sha256_process_bytes (&tests[cnt].input[i], 1, &ctx); ++ sha256_finish_ctx (&ctx, sum); ++ if (memcmp (tests[cnt].result, sum, 32) != 0) ++ { ++ printf ("test %d run %d failed\n", cnt, 2); ++ result = 1; ++ } ++ } ++ ++ /* Test vector from FIPS 180-2: appendix B.3. */ ++ char buf[1000]; ++ memset (buf, 'a', sizeof (buf)); ++ sha256_init_ctx (&ctx); ++ for (i = 0; i < 1000; ++i) ++ sha256_process_bytes (buf, sizeof (buf), &ctx); ++ sha256_finish_ctx (&ctx, sum); ++ static const char expected[32] = ++ "\xcd\xc7\x6e\x5c\x99\x14\xfb\x92\x81\xa1\xc7\xe2\x84\xd7\x3e\x67" ++ "\xf1\x80\x9a\x48\xa4\x97\x20\x0e\x04\x6d\x39\xcc\xc7\x11\x2c\xd0"; ++ if (memcmp (expected, sum, 32) != 0) ++ { ++ printf ("test %d failed\n", cnt); ++ result = 1; ++ } ++ ++ for (cnt = 0; cnt < ntests2; ++cnt) ++ { ++ char *cp = sha256_crypt (tests2[cnt].input, tests2[cnt].salt); ++ ++ if (strcmp (cp, tests2[cnt].expected) != 0) ++ { ++ printf ("test %d: expected \"%s\", got \"%s\"\n", ++ cnt, tests2[cnt].expected, cp); ++ result = 1; ++ } ++ } ++ ++ if (result == 0) ++ printf ("all tests OK\n"); ++ ++ return result; ++} ++#endif +diff --git a/stage2/sha512crypt.c b/stage2/sha512crypt.c +new file mode 100644 +index 0000000..ff6cd26 +--- /dev/null ++++ b/stage2/sha512crypt.c +@@ -0,0 +1,795 @@ ++/* SHA512-based Unix crypt implementation. ++ Released into the Public Domain by Ulrich Drepper . ++ Adapted for grub by Miloslav Trmac . */ ++ ++#include ++#include ++ ++#include ++ ++typedef unsigned long long uint64_t; ++typedef size_t uintptr_t; ++#define alloca(SIZE) (__builtin_alloca (SIZE)) ++#define UINT64_C(X) X ## ULL ++#define MIN(a, b) ((a) < (b) ? (a) : (b)) ++#define MAX(a, b) ((a) > (b) ? (a) : (b)) ++ ++/* Structure to save state of computation between the single steps. */ ++struct sha512_ctx ++{ ++ uint64_t H[8]; ++ ++ uint64_t total[2]; ++ uint64_t buflen; ++ char buffer[256]; /* NB: always correctly aligned for uint64_t. */ ++}; ++ ++ ++#if 1 /* __BYTE_ORDER == __LITTLE_ENDIAN */ ++# define SWAP(n) \ ++ (((n) << 56) \ ++ | (((n) & 0xff00) << 40) \ ++ | (((n) & 0xff0000) << 24) \ ++ | (((n) & 0xff000000) << 8) \ ++ | (((n) >> 8) & 0xff000000) \ ++ | (((n) >> 24) & 0xff0000) \ ++ | (((n) >> 40) & 0xff00) \ ++ | ((n) >> 56)) ++#else ++# define SWAP(n) (n) ++#endif ++ ++ ++/* This array contains the bytes used to pad the buffer to the next ++ 64-byte boundary. (FIPS 180-2:5.1.2) */ ++static const unsigned char fillbuf[128] = { 0x80, 0 /* , 0, 0, ... */ }; ++ ++ ++/* Constants for SHA512 from FIPS 180-2:4.2.3. */ ++static const uint64_t K[80] = ++ { ++ UINT64_C (0x428a2f98d728ae22), UINT64_C (0x7137449123ef65cd), ++ UINT64_C (0xb5c0fbcfec4d3b2f), UINT64_C (0xe9b5dba58189dbbc), ++ UINT64_C (0x3956c25bf348b538), UINT64_C (0x59f111f1b605d019), ++ UINT64_C (0x923f82a4af194f9b), UINT64_C (0xab1c5ed5da6d8118), ++ UINT64_C (0xd807aa98a3030242), UINT64_C (0x12835b0145706fbe), ++ UINT64_C (0x243185be4ee4b28c), UINT64_C (0x550c7dc3d5ffb4e2), ++ UINT64_C (0x72be5d74f27b896f), UINT64_C (0x80deb1fe3b1696b1), ++ UINT64_C (0x9bdc06a725c71235), UINT64_C (0xc19bf174cf692694), ++ UINT64_C (0xe49b69c19ef14ad2), UINT64_C (0xefbe4786384f25e3), ++ UINT64_C (0x0fc19dc68b8cd5b5), UINT64_C (0x240ca1cc77ac9c65), ++ UINT64_C (0x2de92c6f592b0275), UINT64_C (0x4a7484aa6ea6e483), ++ UINT64_C (0x5cb0a9dcbd41fbd4), UINT64_C (0x76f988da831153b5), ++ UINT64_C (0x983e5152ee66dfab), UINT64_C (0xa831c66d2db43210), ++ UINT64_C (0xb00327c898fb213f), UINT64_C (0xbf597fc7beef0ee4), ++ UINT64_C (0xc6e00bf33da88fc2), UINT64_C (0xd5a79147930aa725), ++ UINT64_C (0x06ca6351e003826f), UINT64_C (0x142929670a0e6e70), ++ UINT64_C (0x27b70a8546d22ffc), UINT64_C (0x2e1b21385c26c926), ++ UINT64_C (0x4d2c6dfc5ac42aed), UINT64_C (0x53380d139d95b3df), ++ UINT64_C (0x650a73548baf63de), UINT64_C (0x766a0abb3c77b2a8), ++ UINT64_C (0x81c2c92e47edaee6), UINT64_C (0x92722c851482353b), ++ UINT64_C (0xa2bfe8a14cf10364), UINT64_C (0xa81a664bbc423001), ++ UINT64_C (0xc24b8b70d0f89791), UINT64_C (0xc76c51a30654be30), ++ UINT64_C (0xd192e819d6ef5218), UINT64_C (0xd69906245565a910), ++ UINT64_C (0xf40e35855771202a), UINT64_C (0x106aa07032bbd1b8), ++ UINT64_C (0x19a4c116b8d2d0c8), UINT64_C (0x1e376c085141ab53), ++ UINT64_C (0x2748774cdf8eeb99), UINT64_C (0x34b0bcb5e19b48a8), ++ UINT64_C (0x391c0cb3c5c95a63), UINT64_C (0x4ed8aa4ae3418acb), ++ UINT64_C (0x5b9cca4f7763e373), UINT64_C (0x682e6ff3d6b2b8a3), ++ UINT64_C (0x748f82ee5defb2fc), UINT64_C (0x78a5636f43172f60), ++ UINT64_C (0x84c87814a1f0ab72), UINT64_C (0x8cc702081a6439ec), ++ UINT64_C (0x90befffa23631e28), UINT64_C (0xa4506cebde82bde9), ++ UINT64_C (0xbef9a3f7b2c67915), UINT64_C (0xc67178f2e372532b), ++ UINT64_C (0xca273eceea26619c), UINT64_C (0xd186b8c721c0c207), ++ UINT64_C (0xeada7dd6cde0eb1e), UINT64_C (0xf57d4f7fee6ed178), ++ UINT64_C (0x06f067aa72176fba), UINT64_C (0x0a637dc5a2c898a6), ++ UINT64_C (0x113f9804bef90dae), UINT64_C (0x1b710b35131c471b), ++ UINT64_C (0x28db77f523047d84), UINT64_C (0x32caab7b40c72493), ++ UINT64_C (0x3c9ebe0a15c9bebc), UINT64_C (0x431d67c49c100d4c), ++ UINT64_C (0x4cc5d4becb3e42b6), UINT64_C (0x597f299cfc657e2a), ++ UINT64_C (0x5fcb6fab3ad6faec), UINT64_C (0x6c44198c4a475817) ++ }; ++ ++ ++/* Process LEN bytes of BUFFER, accumulating context into CTX. ++ It is assumed that LEN % 128 == 0. */ ++static void ++sha512_process_block (const void *buffer, size_t len, struct sha512_ctx *ctx) ++{ ++ const uint64_t *words = buffer; ++ size_t nwords = len / sizeof (uint64_t); ++ uint64_t a = ctx->H[0]; ++ uint64_t b = ctx->H[1]; ++ uint64_t c = ctx->H[2]; ++ uint64_t d = ctx->H[3]; ++ uint64_t e = ctx->H[4]; ++ uint64_t f = ctx->H[5]; ++ uint64_t g = ctx->H[6]; ++ uint64_t h = ctx->H[7]; ++ ++ /* First increment the byte count. FIPS 180-2 specifies the possible ++ length of the file up to 2^128 bits. Here we only compute the ++ number of bytes. Do a double word increment. */ ++ ctx->total[0] += len; ++ if (ctx->total[0] < len) ++ ++ctx->total[1]; ++ ++ /* Process all bytes in the buffer with 128 bytes in each round of ++ the loop. */ ++ while (nwords > 0) ++ { ++ uint64_t W[80]; ++ uint64_t a_save = a; ++ uint64_t b_save = b; ++ uint64_t c_save = c; ++ uint64_t d_save = d; ++ uint64_t e_save = e; ++ uint64_t f_save = f; ++ uint64_t g_save = g; ++ uint64_t h_save = h; ++ unsigned int t; ++ ++ /* Operators defined in FIPS 180-2:4.1.2. */ ++#define Ch(x, y, z) ((x & y) ^ (~x & z)) ++#define Maj(x, y, z) ((x & y) ^ (x & z) ^ (y & z)) ++#define S0(x) (CYCLIC (x, 28) ^ CYCLIC (x, 34) ^ CYCLIC (x, 39)) ++#define S1(x) (CYCLIC (x, 14) ^ CYCLIC (x, 18) ^ CYCLIC (x, 41)) ++#define R0(x) (CYCLIC (x, 1) ^ CYCLIC (x, 8) ^ (x >> 7)) ++#define R1(x) (CYCLIC (x, 19) ^ CYCLIC (x, 61) ^ (x >> 6)) ++ ++ /* It is unfortunate that C does not provide an operator for ++ cyclic rotation. Hope the C compiler is smart enough. */ ++#define CYCLIC(w, s) ((w >> s) | (w << (64 - s))) ++ ++ /* Compute the message schedule according to FIPS 180-2:6.3.2 step 2. */ ++ for (t = 0; t < 16; ++t) ++ { ++ W[t] = SWAP (*words); ++ ++words; ++ } ++ for (t = 16; t < 80; ++t) ++ W[t] = R1 (W[t - 2]) + W[t - 7] + R0 (W[t - 15]) + W[t - 16]; ++ ++ /* The actual computation according to FIPS 180-2:6.3.2 step 3. */ ++ for (t = 0; t < 80; ++t) ++ { ++ uint64_t T1 = h + S1 (e) + Ch (e, f, g) + K[t] + W[t]; ++ uint64_t T2 = S0 (a) + Maj (a, b, c); ++ h = g; ++ g = f; ++ f = e; ++ e = d + T1; ++ d = c; ++ c = b; ++ b = a; ++ a = T1 + T2; ++ } ++ ++ /* Add the starting values of the context according to FIPS 180-2:6.3.2 ++ step 4. */ ++ a += a_save; ++ b += b_save; ++ c += c_save; ++ d += d_save; ++ e += e_save; ++ f += f_save; ++ g += g_save; ++ h += h_save; ++ ++ /* Prepare for the next round. */ ++ nwords -= 16; ++ } ++ ++ /* Put checksum in context given as argument. */ ++ ctx->H[0] = a; ++ ctx->H[1] = b; ++ ctx->H[2] = c; ++ ctx->H[3] = d; ++ ctx->H[4] = e; ++ ctx->H[5] = f; ++ ctx->H[6] = g; ++ ctx->H[7] = h; ++} ++ ++ ++/* Initialize structure containing state of computation. ++ (FIPS 180-2:5.3.3) */ ++static void ++sha512_init_ctx (struct sha512_ctx *ctx) ++{ ++ ctx->H[0] = UINT64_C (0x6a09e667f3bcc908); ++ ctx->H[1] = UINT64_C (0xbb67ae8584caa73b); ++ ctx->H[2] = UINT64_C (0x3c6ef372fe94f82b); ++ ctx->H[3] = UINT64_C (0xa54ff53a5f1d36f1); ++ ctx->H[4] = UINT64_C (0x510e527fade682d1); ++ ctx->H[5] = UINT64_C (0x9b05688c2b3e6c1f); ++ ctx->H[6] = UINT64_C (0x1f83d9abfb41bd6b); ++ ctx->H[7] = UINT64_C (0x5be0cd19137e2179); ++ ++ ctx->total[0] = ctx->total[1] = 0; ++ ctx->buflen = 0; ++} ++ ++ ++/* Process the remaining bytes in the internal buffer and the usual ++ prolog according to the standard and write the result to RESBUF. ++ ++ IMPORTANT: On some systems it is required that RESBUF is correctly ++ aligned for a 32 bits value. */ ++static void * ++sha512_finish_ctx (struct sha512_ctx *ctx, void *resbuf) ++{ ++ /* Take yet unprocessed bytes into account. */ ++ uint64_t bytes = ctx->buflen; ++ size_t pad; ++ unsigned int i; ++ ++ /* Now count remaining bytes. */ ++ ctx->total[0] += bytes; ++ if (ctx->total[0] < bytes) ++ ++ctx->total[1]; ++ ++ pad = bytes >= 112 ? 128 + 112 - bytes : 112 - bytes; ++ memcpy (&ctx->buffer[bytes], fillbuf, pad); ++ ++ /* Put the 128-bit file length in *bits* at the end of the buffer. */ ++ *(uint64_t *) &ctx->buffer[bytes + pad + 8] = SWAP (ctx->total[0] << 3); ++ *(uint64_t *) &ctx->buffer[bytes + pad] = SWAP ((ctx->total[1] << 3) | ++ (ctx->total[0] >> 61)); ++ ++ /* Process last bytes. */ ++ sha512_process_block (ctx->buffer, bytes + pad + 16, ctx); ++ ++ /* Put result from CTX in first 64 bytes following RESBUF. */ ++ for (i = 0; i < 8; ++i) ++ ((uint64_t *) resbuf)[i] = SWAP (ctx->H[i]); ++ ++ return resbuf; ++} ++ ++ ++static void ++sha512_process_bytes (const void *buffer, size_t len, struct sha512_ctx *ctx) ++{ ++ /* When we already have some bits in our internal buffer concatenate ++ both inputs first. */ ++ if (ctx->buflen != 0) ++ { ++ size_t left_over = ctx->buflen; ++ size_t add = 256 - left_over > len ? len : 256 - left_over; ++ ++ memcpy (&ctx->buffer[left_over], buffer, add); ++ ctx->buflen += add; ++ ++ if (ctx->buflen > 128) ++ { ++ sha512_process_block (ctx->buffer, ctx->buflen & ~127, ctx); ++ ++ ctx->buflen &= 127; ++ /* The regions in the following copy operation cannot overlap. */ ++ memcpy (ctx->buffer, &ctx->buffer[(left_over + add) & ~127], ++ ctx->buflen); ++ } ++ ++ buffer = (const char *) buffer + add; ++ len -= add; ++ } ++ ++ /* Process available complete blocks. */ ++ if (len >= 128) ++ { ++/* To check alignment gcc has an appropriate operator. Other ++ compilers don't. */ ++# if __GNUC__ >= 2 ++# define UNALIGNED_P(p) (((uintptr_t) p) % __alignof__ (uint64_t) != 0) ++# else ++# define UNALIGNED_P(p) (((uintptr_t) p) % sizeof (uint64_t) != 0) ++# endif ++ if (UNALIGNED_P (buffer)) ++ while (len > 128) ++ { ++ sha512_process_block (memcpy (ctx->buffer, buffer, 128), 128, ++ ctx); ++ buffer = (const char *) buffer + 128; ++ len -= 128; ++ } ++ else ++ { ++ sha512_process_block (buffer, len & ~127, ctx); ++ buffer = (const char *) buffer + (len & ~127); ++ len &= 127; ++ } ++ } ++ ++ /* Move remaining bytes into internal buffer. */ ++ if (len > 0) ++ { ++ size_t left_over = ctx->buflen; ++ ++ memcpy (&ctx->buffer[left_over], buffer, len); ++ left_over += len; ++ if (left_over >= 128) ++ { ++ sha512_process_block (ctx->buffer, 128, ctx); ++ left_over -= 128; ++ memcpy (ctx->buffer, &ctx->buffer[128], left_over); ++ } ++ ctx->buflen = left_over; ++ } ++} ++ ++ ++/* Define our magic string to mark salt for SHA512 "encryption" ++ replacement. */ ++static const char sha512_salt_prefix[] = "$6$"; ++ ++/* Prefix for optional rounds specification. */ ++static const char sha512_rounds_prefix[] = "rounds="; ++ ++/* Maximum salt string length. */ ++#define SALT_LEN_MAX 16 ++/* Default number of rounds if not explicitly specified. */ ++#define ROUNDS_DEFAULT 5000 ++/* Minimum number of rounds. */ ++#define ROUNDS_MIN 1000 ++/* Maximum number of rounds. */ ++#define ROUNDS_MAX 999999999 ++ ++/* Table with characters for base64 transformation. */ ++static const char b64t[64] = ++"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; ++ ++ ++static char * ++sha512_crypt_r (const char *key, const char *salt, char *buffer, int buflen) ++{ ++ unsigned char alt_result[64] ++ __attribute__ ((__aligned__ (__alignof__ (uint64_t)))); ++ unsigned char temp_result[64] ++ __attribute__ ((__aligned__ (__alignof__ (uint64_t)))); ++ struct sha512_ctx ctx; ++ struct sha512_ctx alt_ctx; ++ size_t salt_len; ++ size_t key_len; ++ size_t cnt; ++ char *cp; ++ char *copied_key = NULL; ++ char *copied_salt = NULL; ++ char *p_bytes; ++ char *s_bytes; ++ /* Default number of rounds. */ ++ size_t rounds = ROUNDS_DEFAULT; ++ bool rounds_custom = false; ++ ++ /* Find beginning of salt string. The prefix should normally always ++ be present. Just in case it is not. */ ++ if (grub_memcmp (sha512_salt_prefix, salt, ++ sizeof (sha512_salt_prefix) - 1) == 0) ++ /* Skip salt prefix. */ ++ salt += sizeof (sha512_salt_prefix) - 1; ++ ++ if (grub_memcmp (salt, sha512_rounds_prefix, ++ sizeof (sha512_rounds_prefix) - 1) == 0) ++ { ++ const char *num = salt + sizeof (sha512_rounds_prefix) - 1; ++ char *endp = (char *)num; ++ int srounds = 0; ++ if (*endp == '0' && tolower (endp[1]) == 'x') ++ /* This would be interpreted as hexadecimal by safe_parse_maxint(). */ ++ endp++; ++ else ++ /* On error, endp and srounds is not changed. */ ++ safe_parse_maxint(&endp, &srounds); ++ if (*endp == '$') ++ { ++ salt = endp + 1; ++ rounds = MAX (ROUNDS_MIN, MIN (srounds, ROUNDS_MAX)); ++ rounds_custom = true; ++ } ++ } ++ ++ salt_len = MIN (strcspn (salt, "$"), SALT_LEN_MAX); ++ key_len = strlen (key); ++ ++ if ((key - (char *) 0) % __alignof__ (uint64_t) != 0) ++ { ++ char *tmp = (char *) alloca (key_len + __alignof__ (uint64_t)); ++ key = copied_key = ++ memcpy (tmp + __alignof__ (uint64_t) ++ - (tmp - (char *) 0) % __alignof__ (uint64_t), ++ key, key_len); ++ } ++ ++ if ((salt - (char *) 0) % __alignof__ (uint64_t) != 0) ++ { ++ char *tmp = (char *) alloca (salt_len + __alignof__ (uint64_t)); ++ salt = copied_salt = ++ memcpy (tmp + __alignof__ (uint64_t) ++ - (tmp - (char *) 0) % __alignof__ (uint64_t), ++ salt, salt_len); ++ } ++ ++ /* Prepare for the real work. */ ++ sha512_init_ctx (&ctx); ++ ++ /* Add the key string. */ ++ sha512_process_bytes (key, key_len, &ctx); ++ ++ /* The last part is the salt string. This must be at most 16 ++ characters and it ends at the first `$' character (for ++ compatibility with existing implementations). */ ++ sha512_process_bytes (salt, salt_len, &ctx); ++ ++ ++ /* Compute alternate SHA512 sum with input KEY, SALT, and KEY. The ++ final result will be added to the first context. */ ++ sha512_init_ctx (&alt_ctx); ++ ++ /* Add key. */ ++ sha512_process_bytes (key, key_len, &alt_ctx); ++ ++ /* Add salt. */ ++ sha512_process_bytes (salt, salt_len, &alt_ctx); ++ ++ /* Add key again. */ ++ sha512_process_bytes (key, key_len, &alt_ctx); ++ ++ /* Now get result of this (64 bytes) and add it to the other ++ context. */ ++ sha512_finish_ctx (&alt_ctx, alt_result); ++ ++ /* Add for any character in the key one byte of the alternate sum. */ ++ for (cnt = key_len; cnt > 64; cnt -= 64) ++ sha512_process_bytes (alt_result, 64, &ctx); ++ sha512_process_bytes (alt_result, cnt, &ctx); ++ ++ /* Take the binary representation of the length of the key and for every ++ 1 add the alternate sum, for every 0 the key. */ ++ for (cnt = key_len; cnt > 0; cnt >>= 1) ++ if ((cnt & 1) != 0) ++ sha512_process_bytes (alt_result, 64, &ctx); ++ else ++ sha512_process_bytes (key, key_len, &ctx); ++ ++ /* Create intermediate result. */ ++ sha512_finish_ctx (&ctx, alt_result); ++ ++ /* Start computation of P byte sequence. */ ++ sha512_init_ctx (&alt_ctx); ++ ++ /* For every character in the password add the entire password. */ ++ for (cnt = 0; cnt < key_len; ++cnt) ++ sha512_process_bytes (key, key_len, &alt_ctx); ++ ++ /* Finish the digest. */ ++ sha512_finish_ctx (&alt_ctx, temp_result); ++ ++ /* Create byte sequence P. */ ++ cp = p_bytes = alloca (key_len); ++ for (cnt = key_len; cnt >= 64; cnt -= 64) ++ { ++ memcpy (cp, temp_result, 64); ++ cp += 64; ++ } ++ memcpy (cp, temp_result, cnt); ++ ++ /* Start computation of S byte sequence. */ ++ sha512_init_ctx (&alt_ctx); ++ ++ /* For every character in the password add the entire password. */ ++ for (cnt = 0; cnt < 16 + alt_result[0]; ++cnt) ++ sha512_process_bytes (salt, salt_len, &alt_ctx); ++ ++ /* Finish the digest. */ ++ sha512_finish_ctx (&alt_ctx, temp_result); ++ ++ /* Create byte sequence S. */ ++ cp = s_bytes = alloca (salt_len); ++ for (cnt = salt_len; cnt >= 64; cnt -= 64) ++ { ++ memcpy (cp, temp_result, 64); ++ cp += 64; ++ } ++ memcpy (cp, temp_result, cnt); ++ ++ /* Repeatedly run the collected hash value through SHA512 to burn ++ CPU cycles. */ ++ for (cnt = 0; cnt < rounds; ++cnt) ++ { ++ /* New context. */ ++ sha512_init_ctx (&ctx); ++ ++ /* Add key or last result. */ ++ if ((cnt & 1) != 0) ++ sha512_process_bytes (p_bytes, key_len, &ctx); ++ else ++ sha512_process_bytes (alt_result, 64, &ctx); ++ ++ /* Add salt for numbers not divisible by 3. */ ++ if (cnt % 3 != 0) ++ sha512_process_bytes (s_bytes, salt_len, &ctx); ++ ++ /* Add key for numbers not divisible by 7. */ ++ if (cnt % 7 != 0) ++ sha512_process_bytes (p_bytes, key_len, &ctx); ++ ++ /* Add key or last result. */ ++ if ((cnt & 1) != 0) ++ sha512_process_bytes (alt_result, 64, &ctx); ++ else ++ sha512_process_bytes (p_bytes, key_len, &ctx); ++ ++ /* Create intermediate result. */ ++ sha512_finish_ctx (&ctx, alt_result); ++ } ++ ++ /* Now we can construct the result string. It consists of three ++ parts. */ ++ cp = stpncpy (buffer, sha512_salt_prefix, MAX (0, buflen)); ++ buflen -= sizeof (sha512_salt_prefix) - 1; ++ ++ if (rounds_custom) ++ { ++ char sbuf[64]; ++ grub_sprintf (sbuf, "%s%llu$", sha512_rounds_prefix, ++ (unsigned long long)rounds); ++ size_t n = strlen (sbuf); ++ memcpy (cp, sbuf, MIN (MAX (0, buflen), n)); ++ cp += n; ++ buflen -= n; ++ } ++ ++ cp = stpncpy (cp, salt, MIN ((size_t) MAX (0, buflen), salt_len)); ++ buflen -= MIN ((size_t) MAX (0, buflen), salt_len); ++ ++ if (buflen > 0) ++ { ++ *cp++ = '$'; ++ --buflen; ++ } ++ ++#define b64_from_24bit(B2, B1, B0, N) \ ++ do { \ ++ unsigned int w = ((B2) << 16) | ((B1) << 8) | (B0); \ ++ int n = (N); \ ++ while (n-- > 0 && buflen > 0) \ ++ { \ ++ *cp++ = b64t[w & 0x3f]; \ ++ --buflen; \ ++ w >>= 6; \ ++ } \ ++ } while (0) ++ ++ b64_from_24bit (alt_result[0], alt_result[21], alt_result[42], 4); ++ b64_from_24bit (alt_result[22], alt_result[43], alt_result[1], 4); ++ b64_from_24bit (alt_result[44], alt_result[2], alt_result[23], 4); ++ b64_from_24bit (alt_result[3], alt_result[24], alt_result[45], 4); ++ b64_from_24bit (alt_result[25], alt_result[46], alt_result[4], 4); ++ b64_from_24bit (alt_result[47], alt_result[5], alt_result[26], 4); ++ b64_from_24bit (alt_result[6], alt_result[27], alt_result[48], 4); ++ b64_from_24bit (alt_result[28], alt_result[49], alt_result[7], 4); ++ b64_from_24bit (alt_result[50], alt_result[8], alt_result[29], 4); ++ b64_from_24bit (alt_result[9], alt_result[30], alt_result[51], 4); ++ b64_from_24bit (alt_result[31], alt_result[52], alt_result[10], 4); ++ b64_from_24bit (alt_result[53], alt_result[11], alt_result[32], 4); ++ b64_from_24bit (alt_result[12], alt_result[33], alt_result[54], 4); ++ b64_from_24bit (alt_result[34], alt_result[55], alt_result[13], 4); ++ b64_from_24bit (alt_result[56], alt_result[14], alt_result[35], 4); ++ b64_from_24bit (alt_result[15], alt_result[36], alt_result[57], 4); ++ b64_from_24bit (alt_result[37], alt_result[58], alt_result[16], 4); ++ b64_from_24bit (alt_result[59], alt_result[17], alt_result[38], 4); ++ b64_from_24bit (alt_result[18], alt_result[39], alt_result[60], 4); ++ b64_from_24bit (alt_result[40], alt_result[61], alt_result[19], 4); ++ b64_from_24bit (alt_result[62], alt_result[20], alt_result[41], 4); ++ b64_from_24bit (0, 0, alt_result[63], 2); ++ ++ if (buflen <= 0) ++ buffer = NULL; ++ else ++ *cp = '\0'; /* Terminate the string. */ ++ ++ /* Clear the buffer for the intermediate result so that people ++ attaching to processes or reading core dumps cannot get any ++ information. We do it in this way to clear correct_words[] ++ inside the SHA512 implementation as well. */ ++ sha512_init_ctx (&ctx); ++ sha512_finish_ctx (&ctx, alt_result); ++ memset (temp_result, '\0', sizeof (temp_result)); ++ memset (p_bytes, '\0', key_len); ++ memset (s_bytes, '\0', salt_len); ++ memset (&ctx, '\0', sizeof (ctx)); ++ memset (&alt_ctx, '\0', sizeof (alt_ctx)); ++ if (copied_key != NULL) ++ memset (copied_key, '\0', key_len); ++ if (copied_salt != NULL) ++ memset (copied_salt, '\0', salt_len); ++ ++ return buffer; ++} ++ ++ ++/* This entry point is equivalent to the `crypt' function in Unix ++ libcs. */ ++char * ++sha512_crypt (const char *key, const char *salt) ++{ ++ /* We don't want to have an arbitrary limit in the size of the ++ password. We can compute an upper bound for the size of the ++ result in advance and so we can prepare the buffer we pass to ++ `sha512_crypt_r'. */ ++ static char buffer[sizeof (sha512_salt_prefix) - 1 ++ + sizeof (sha512_rounds_prefix) + 9 + 1 ++ + 256 + 1 + 86 + 1]; /* 256 bytes for salt */ ++ int needed = (sizeof (sha512_salt_prefix) - 1 ++ + sizeof (sha512_rounds_prefix) + 9 + 1 ++ + strlen (salt) + 1 + 86 + 1); ++ ++ if (sizeof (buffer) < needed) ++ return NULL; ++ ++ return sha512_crypt_r (key, salt, buffer, sizeof (buffer)); ++} ++ ++ ++#ifdef TEST ++static const struct ++{ ++ const char *input; ++ const char result[64]; ++} tests[] = ++ { ++ /* Test vectors from FIPS 180-2: appendix C.1. */ ++ { "abc", ++ "\xdd\xaf\x35\xa1\x93\x61\x7a\xba\xcc\x41\x73\x49\xae\x20\x41\x31" ++ "\x12\xe6\xfa\x4e\x89\xa9\x7e\xa2\x0a\x9e\xee\xe6\x4b\x55\xd3\x9a" ++ "\x21\x92\x99\x2a\x27\x4f\xc1\xa8\x36\xba\x3c\x23\xa3\xfe\xeb\xbd" ++ "\x45\x4d\x44\x23\x64\x3c\xe8\x0e\x2a\x9a\xc9\x4f\xa5\x4c\xa4\x9f" }, ++ /* Test vectors from FIPS 180-2: appendix C.2. */ ++ { "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn" ++ "hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu", ++ "\x8e\x95\x9b\x75\xda\xe3\x13\xda\x8c\xf4\xf7\x28\x14\xfc\x14\x3f" ++ "\x8f\x77\x79\xc6\xeb\x9f\x7f\xa1\x72\x99\xae\xad\xb6\x88\x90\x18" ++ "\x50\x1d\x28\x9e\x49\x00\xf7\xe4\x33\x1b\x99\xde\xc4\xb5\x43\x3a" ++ "\xc7\xd3\x29\xee\xb6\xdd\x26\x54\x5e\x96\xe5\x5b\x87\x4b\xe9\x09" }, ++ /* Test vectors from the NESSIE project. */ ++ { "", ++ "\xcf\x83\xe1\x35\x7e\xef\xb8\xbd\xf1\x54\x28\x50\xd6\x6d\x80\x07" ++ "\xd6\x20\xe4\x05\x0b\x57\x15\xdc\x83\xf4\xa9\x21\xd3\x6c\xe9\xce" ++ "\x47\xd0\xd1\x3c\x5d\x85\xf2\xb0\xff\x83\x18\xd2\x87\x7e\xec\x2f" ++ "\x63\xb9\x31\xbd\x47\x41\x7a\x81\xa5\x38\x32\x7a\xf9\x27\xda\x3e" }, ++ { "a", ++ "\x1f\x40\xfc\x92\xda\x24\x16\x94\x75\x09\x79\xee\x6c\xf5\x82\xf2" ++ "\xd5\xd7\xd2\x8e\x18\x33\x5d\xe0\x5a\xbc\x54\xd0\x56\x0e\x0f\x53" ++ "\x02\x86\x0c\x65\x2b\xf0\x8d\x56\x02\x52\xaa\x5e\x74\x21\x05\x46" ++ "\xf3\x69\xfb\xbb\xce\x8c\x12\xcf\xc7\x95\x7b\x26\x52\xfe\x9a\x75" }, ++ { "message digest", ++ "\x10\x7d\xbf\x38\x9d\x9e\x9f\x71\xa3\xa9\x5f\x6c\x05\x5b\x92\x51" ++ "\xbc\x52\x68\xc2\xbe\x16\xd6\xc1\x34\x92\xea\x45\xb0\x19\x9f\x33" ++ "\x09\xe1\x64\x55\xab\x1e\x96\x11\x8e\x8a\x90\x5d\x55\x97\xb7\x20" ++ "\x38\xdd\xb3\x72\xa8\x98\x26\x04\x6d\xe6\x66\x87\xbb\x42\x0e\x7c" }, ++ { "abcdefghijklmnopqrstuvwxyz", ++ "\x4d\xbf\xf8\x6c\xc2\xca\x1b\xae\x1e\x16\x46\x8a\x05\xcb\x98\x81" ++ "\xc9\x7f\x17\x53\xbc\xe3\x61\x90\x34\x89\x8f\xaa\x1a\xab\xe4\x29" ++ "\x95\x5a\x1b\xf8\xec\x48\x3d\x74\x21\xfe\x3c\x16\x46\x61\x3a\x59" ++ "\xed\x54\x41\xfb\x0f\x32\x13\x89\xf7\x7f\x48\xa8\x79\xc7\xb1\xf1" }, ++ { "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", ++ "\x20\x4a\x8f\xc6\xdd\xa8\x2f\x0a\x0c\xed\x7b\xeb\x8e\x08\xa4\x16" ++ "\x57\xc1\x6e\xf4\x68\xb2\x28\xa8\x27\x9b\xe3\x31\xa7\x03\xc3\x35" ++ "\x96\xfd\x15\xc1\x3b\x1b\x07\xf9\xaa\x1d\x3b\xea\x57\x78\x9c\xa0" ++ "\x31\xad\x85\xc7\xa7\x1d\xd7\x03\x54\xec\x63\x12\x38\xca\x34\x45" }, ++ { "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", ++ "\x1e\x07\xbe\x23\xc2\x6a\x86\xea\x37\xea\x81\x0c\x8e\xc7\x80\x93" ++ "\x52\x51\x5a\x97\x0e\x92\x53\xc2\x6f\x53\x6c\xfc\x7a\x99\x96\xc4" ++ "\x5c\x83\x70\x58\x3e\x0a\x78\xfa\x4a\x90\x04\x1d\x71\xa4\xce\xab" ++ "\x74\x23\xf1\x9c\x71\xb9\xd5\xa3\xe0\x12\x49\xf0\xbe\xbd\x58\x94" }, ++ { "123456789012345678901234567890123456789012345678901234567890" ++ "12345678901234567890", ++ "\x72\xec\x1e\xf1\x12\x4a\x45\xb0\x47\xe8\xb7\xc7\x5a\x93\x21\x95" ++ "\x13\x5b\xb6\x1d\xe2\x4e\xc0\xd1\x91\x40\x42\x24\x6e\x0a\xec\x3a" ++ "\x23\x54\xe0\x93\xd7\x6f\x30\x48\xb4\x56\x76\x43\x46\x90\x0c\xb1" ++ "\x30\xd2\xa4\xfd\x5d\xd1\x6a\xbb\x5e\x30\xbc\xb8\x50\xde\xe8\x43" } ++ }; ++#define ntests (sizeof (tests) / sizeof (tests[0])) ++ ++ ++static const struct ++{ ++ const char *salt; ++ const char *input; ++ const char *expected; ++} tests2[] = ++{ ++ { "$6$saltstring", "Hello world!", ++ "$6$saltstring$svn8UoSVapNtMuq1ukKS4tPQd8iKwSMHWjl/O817G3uBnIFNjnQJu" ++ "esI68u4OTLiBFdcbYEdFCoEOfaS35inz1" }, ++ { "$6$rounds=10000$saltstringsaltstring", "Hello world!", ++ "$6$rounds=10000$saltstringsaltst$OW1/O6BYHV6BcXZu8QVeXbDWra3Oeqh0sb" ++ "HbbMCVNSnCM/UrjmM0Dp8vOuZeHBy/YTBmSK6H9qs/y3RnOaw5v." }, ++ { "$6$rounds=5000$toolongsaltstring", "This is just a test", ++ "$6$rounds=5000$toolongsaltstrin$lQ8jolhgVRVhY4b5pZKaysCLi0QBxGoNeKQ" ++ "zQ3glMhwllF7oGDZxUhx1yxdYcz/e1JSbq3y6JMxxl8audkUEm0" }, ++ { "$6$rounds=1400$anotherlongsaltstring", ++ "a very much longer text to encrypt. This one even stretches over more" ++ "than one line.", ++ "$6$rounds=1400$anotherlongsalts$POfYwTEok97VWcjxIiSOjiykti.o/pQs.wP" ++ "vMxQ6Fm7I6IoYN3CmLs66x9t0oSwbtEW7o7UmJEiDwGqd8p4ur1" }, ++ { "$6$rounds=77777$short", ++ "we have a short salt string but not a short password", ++ "$6$rounds=77777$short$WuQyW2YR.hBNpjjRhpYD/ifIw05xdfeEyQoMxIXbkvr0g" ++ "ge1a1x3yRULJ5CCaUeOxFmtlcGZelFl5CxtgfiAc0" }, ++ { "$6$rounds=123456$asaltof16chars..", "a short string", ++ "$6$rounds=123456$asaltof16chars..$BtCwjqMJGx5hrJhZywWvt0RLE8uZ4oPwc" ++ "elCjmw2kSYu.Ec6ycULevoBK25fs2xXgMNrCzIMVcgEJAstJeonj1" }, ++ { "$6$rounds=10$roundstoolow", "the minimum number is still observed", ++ "$6$rounds=1000$roundstoolow$kUMsbe306n21p9R.FRkW3IGn.S9NPN0x50YhH1x" ++ "hLsPuWGsUSklZt58jaTfF4ZEQpyUNGc0dqbpBYYBaHHrsX." }, ++}; ++#define ntests2 (sizeof (tests2) / sizeof (tests2[0])) ++ ++ ++int ++sha512_test (void) ++{ ++ struct sha512_ctx ctx; ++ char sum[64]; ++ int result = 0; ++ int cnt, i; ++ ++ for (cnt = 0; cnt < (int) ntests; ++cnt) ++ { ++ sha512_init_ctx (&ctx); ++ sha512_process_bytes (tests[cnt].input, strlen (tests[cnt].input), &ctx); ++ sha512_finish_ctx (&ctx, sum); ++ if (memcmp (tests[cnt].result, sum, 64) != 0) ++ { ++ printf ("test %d run %d failed\n", cnt, 1); ++ result = 1; ++ } ++ ++ sha512_init_ctx (&ctx); ++ for (i = 0; tests[cnt].input[i] != '\0'; ++i) ++ sha512_process_bytes (&tests[cnt].input[i], 1, &ctx); ++ sha512_finish_ctx (&ctx, sum); ++ if (memcmp (tests[cnt].result, sum, 64) != 0) ++ { ++ printf ("test %d run %d failed\n", cnt, 2); ++ result = 1; ++ } ++ } ++ ++ /* Test vector from FIPS 180-2: appendix C.3. */ ++ char buf[1000]; ++ memset (buf, 'a', sizeof (buf)); ++ sha512_init_ctx (&ctx); ++ for (i = 0; i < 1000; ++i) ++ sha512_process_bytes (buf, sizeof (buf), &ctx); ++ sha512_finish_ctx (&ctx, sum); ++ static const char expected[64] = ++ "\xe7\x18\x48\x3d\x0c\xe7\x69\x64\x4e\x2e\x42\xc7\xbc\x15\xb4\x63" ++ "\x8e\x1f\x98\xb1\x3b\x20\x44\x28\x56\x32\xa8\x03\xaf\xa9\x73\xeb" ++ "\xde\x0f\xf2\x44\x87\x7e\xa6\x0a\x4c\xb0\x43\x2c\xe5\x77\xc3\x1b" ++ "\xeb\x00\x9c\x5c\x2c\x49\xaa\x2e\x4e\xad\xb2\x17\xad\x8c\xc0\x9b"; ++ if (memcmp (expected, sum, 64) != 0) ++ { ++ printf ("test %d failed\n", cnt); ++ result = 1; ++ } ++ ++ for (cnt = 0; cnt < ntests2; ++cnt) ++ { ++ char *cp = sha512_crypt (tests2[cnt].input, tests2[cnt].salt); ++ ++ if (strcmp (cp, tests2[cnt].expected) != 0) ++ { ++ printf ("test %d: expected \"%s\", got \"%s\"\n", ++ cnt, tests2[cnt].expected, cp); ++ result = 1; ++ } ++ } ++ ++ if (result == 0) ++ printf ("all tests OK\n"); ++ ++ return result; ++} ++#endif +diff --git a/stage2/shared.h b/stage2/shared.h +index 77eef11..b56b44b 100644 +--- a/stage2/shared.h ++++ b/stage2/shared.h +@@ -35,9 +35,10 @@ + #endif + + /* Maybe redirect memory requests through grub_scratch_mem. */ +-#ifdef GRUB_UTIL +-extern char *grub_scratch_mem; +-# define RAW_ADDR(x) ((x) + (int) grub_scratch_mem) ++#if defined(GRUB_UTIL) || defined(PLATFORM_EFI) ++#define GRUB_SCRATCH_MEM_SIZE 0x400000 ++extern void *grub_scratch_mem; ++# define RAW_ADDR(x) ((x) + (unsigned long) grub_scratch_mem) + # define RAW_SEG(x) (RAW_ADDR ((x) << 4) >> 4) + #else + # define RAW_ADDR(x) (x) +@@ -56,15 +57,15 @@ extern char *grub_scratch_mem; + #define NEW_HEAPSIZE 1500 + + /* 512-byte scratch area */ +-#define SCRATCHADDR RAW_ADDR (0x77e00) +-#define SCRATCHSEG RAW_SEG (0x77e0) ++#define SCRATCHADDR RAW_ADDR (0x77000) ++#define SCRATCHSEG RAW_SEG (0x7700) + + /* +- * This is the location of the raw device buffer. It is 31.5K ++ * This is the location of the raw device buffer. It is 28K + * in size. + */ + +-#define BUFFERLEN 0x7e00 ++#define BUFFERLEN 0x7000 + #define BUFFERADDR RAW_ADDR (0x70000) + #define BUFFERSEG RAW_SEG (0x7000) + +@@ -79,6 +80,8 @@ extern char *grub_scratch_mem; + #define BIOSDISK_FLAG_LBA_EXTENSION 0x1 + #define BIOSDISK_FLAG_CDROM 0x2 + ++#define MAX_HD_NUM 128 ++ + /* + * This is the filesystem (not raw device) buffer. + * It is 32K in size, do not overrun! +@@ -127,7 +130,7 @@ extern char *grub_scratch_mem; + #define MENU_BUFLEN (0x8000 + PASSWORD_BUF - MENU_BUF) + + /* The size of the drive map. */ +-#define DRIVE_MAP_SIZE 8 ++#define DRIVE_MAP_SIZE 128 + + /* The size of the key map. */ + #define KEY_MAP_SIZE 128 +@@ -160,16 +163,18 @@ extern char *grub_scratch_mem; + #define LINUX_VID_MODE_ASK 0xFFFD + + #define LINUX_CL_OFFSET 0x9000 +-#define LINUX_CL_END_OFFSET 0x90FF +-#define LINUX_SETUP_MOVE_SIZE 0x9100 ++#define LINUX_CL_END_OFFSET 0x97FF ++#define LINUX_SETUP_MOVE_SIZE 0x9800 + #define LINUX_CL_MAGIC 0xA33F + + /* + * General disk stuff + */ + ++#ifndef PLATFORM_EFI + #define SECTOR_SIZE 0x200 + #define SECTOR_BITS 9 ++#endif /* PLATFORM_EFI */ + #define BIOS_FLAG_FIXED_DISK 0x80 + + #define BOOTSEC_LOCATION RAW_ADDR (0x7C00) +@@ -200,6 +205,8 @@ extern char *grub_scratch_mem; + #define STAGE2_FORCE_LBA 0x11 + #define STAGE2_VER_STR_OFFS 0x12 + ++#define STAGE2_ONCEONLY_ENTRY 0x10000 ++ + /* Stage 2 identifiers */ + #define STAGE2_ID_STAGE2 0 + #define STAGE2_ID_FFS_STAGE1_5 1 +@@ -360,7 +367,7 @@ extern char *grub_scratch_mem; + #define memcpy grub_memmove /* we don't need a separate memcpy */ + #define memset grub_memset + #define isspace grub_isspace +-#define printf grub_printf ++#define printf(format...) grub_printf(format) + #define sprintf grub_sprintf + #undef putchar + #define putchar grub_putchar +@@ -371,14 +378,24 @@ extern char *grub_scratch_mem; + #define tolower grub_tolower + #define strlen grub_strlen + #define strcpy grub_strcpy ++#define stpncpy grub_stpncpy ++#define strspn grub_strspn ++#define strcspn grub_strcspn ++#define strtok_r grub_strtok_r ++#define strchr grub_strchr ++#define strrchr grub_strrchr ++#define strnchr grub_strnchr ++#define strncpy grub_strncpy ++#define strncasecmp grub_strncasecmp + #endif /* WITHOUT_LIBC_STUBS */ + +- + #ifndef ASM_FILE + /* + * Below this should be ONLY defines and other constructs for C code. + */ + ++#include ++ + /* multiboot stuff */ + + #include "mb_header.h" +@@ -400,30 +417,33 @@ struct linux_kernel_header + unsigned short root_dev; /* Default root device number */ + unsigned short boot_flag; /* 0xAA55 magic number */ + unsigned short jump; /* Jump instruction */ +- unsigned long header; /* Magic signature "HdrS" */ ++ unsigned int header; /* Magic signature "HdrS" */ + unsigned short version; /* Boot protocol version supported */ +- unsigned long realmode_swtch; /* Boot loader hook */ +- unsigned long start_sys; /* Points to kernel version string */ ++ unsigned int realmode_swtch; /* Boot loader hook */ ++ unsigned int start_sys; /* Points to kernel version string */ + unsigned char type_of_loader; /* Boot loader identifier */ + unsigned char loadflags; /* Boot protocol option flags */ + unsigned short setup_move_size; /* Move to high memory size */ +- unsigned long code32_start; /* Boot loader hook */ +- unsigned long ramdisk_image; /* initrd load address */ +- unsigned long ramdisk_size; /* initrd size */ +- unsigned long bootsect_kludge; /* obsolete */ ++ unsigned int code32_start; /* Boot loader hook */ ++ unsigned int ramdisk_image; /* initrd load address */ ++ unsigned int ramdisk_size; /* initrd size */ ++ unsigned int bootsect_kludge; /* obsolete */ + unsigned short heap_end_ptr; /* Free memory after setup end */ + unsigned short pad1; /* Unused */ + char *cmd_line_ptr; /* Points to the kernel command line */ +- unsigned long initrd_addr_max; /* The highest address of initrd */ ++ unsigned int initrd_addr_max; /* The highest address of initrd */ ++ unsigned int kernel_alignment; /* Physical addr alignment required for kernel */ ++ unsigned int relocatable_kernel; /* Whether kernel is relocatable or not */ ++ unsigned int cmdline_size; /* Maximum size of the kernel command line */ + } __attribute__ ((packed)); + + /* Memory map address range descriptor used by GET_MMAP_ENTRY. */ + struct mmar_desc + { +- unsigned long desc_len; /* Size of this descriptor. */ ++ unsigned int desc_len; /* Size of this descriptor. */ + unsigned long long addr; /* Base address. */ + unsigned long long length; /* Length in bytes. */ +- unsigned long type; /* Type of address range. */ ++ unsigned int type; /* Type of address range. */ + } __attribute__ ((packed)); + + /* VBE controller information. */ +@@ -600,6 +620,7 @@ typedef enum + { + PASSWORD_PLAIN, + PASSWORD_MD5, ++ PASSWORD_ENCRYPTED, + PASSWORD_UNSUPPORTED + } + password_t; +@@ -627,8 +648,16 @@ extern void (*disk_read_func) (int, int, int); + #ifndef STAGE1_5 + /* The flag for debug mode. */ + extern int debug; ++extern int debug_graphics; + #endif /* STAGE1_5 */ + ++/* Verbose mode flag. */ ++extern int grub_verbose; ++#define verbose_printf(format...) \ ++ do { if (grub_verbose) printf(format); } while (0) ++#define grub_verbose_printf(format...) \ ++ do { if (grub_verbose) grub_printf(format); } while (0) ++ + extern unsigned long current_drive; + extern unsigned long current_partition; + +@@ -666,6 +695,8 @@ extern struct geometry buf_geom; + extern int filepos; + extern int filemax; + ++extern int silent_grub; ++ + /* + * Common BIOS/boot data. + */ +@@ -804,11 +835,17 @@ int getkey (void); + available. */ + int checkkey (void); + ++/* Return keyboard modifier status. */ ++int ++keystatus (void); ++ + /* Low-level disk I/O */ + int get_diskinfo (int drive, struct geometry *geometry); + int biosdisk (int subfunc, int drive, struct geometry *geometry, + int sector, int nsec, int segment); + void stop_floppy (void); ++int get_sector_size (int drive); ++int get_sector_bits (int drive); + + /* Command-line interface functions. */ + #ifndef STAGE1_5 +@@ -860,17 +897,25 @@ void init_builtins (void); + void init_config (void); + char *skip_to (int after_equal, char *cmdline); + struct builtin *find_command (char *command); +-void print_cmdline_message (int forever); + void enter_cmdline (char *heap, int forever); + int run_script (char *script, char *heap); ++ ++/* the flags for the cmdline message */ ++#define CMDLINE_FOREVER_MODE 0x0 ++#define CMDLINE_NORMAL_MODE 0x1 ++#define CMDLINE_EDIT_MODE 0x2 ++ ++void print_cmdline_message (int type); + #endif + + /* C library replacement functions with identical semantics. */ +-void grub_printf (const char *format,...); ++int grub_vsprintf (char *str, const char *fmt, va_list args); ++void grub_printf (char *format,...); + int grub_sprintf (char *buffer, const char *format, ...); + int grub_tolower (int c); + int grub_isspace (int c); + int grub_strncat (char *s1, const char *s2, int n); ++void grub_memcpy(void *dest, const void *src, int len); + void *grub_memmove (void *to, const void *from, int len); + void *grub_memset (void *start, int c, int len); + int grub_strncat (char *s1, const char *s2, int n); +@@ -879,9 +924,19 @@ int grub_memcmp (const char *s1, const char *s2, int n); + int grub_strcmp (const char *s1, const char *s2); + int grub_strlen (const char *str); + char *grub_strcpy (char *dest, const char *src); ++char *grub_stpncpy (char *dest, const char *src, int n); ++int grub_strspn(const char *s, const char *accept); ++int grub_strcspn(const char *s, const char *reject); ++char *grub_strtok_r(char *s, const char *delim, char **ptrptr); ++char *grub_strchr (const char *s, int c); ++char *grub_strrchr (const char *s, int c); ++char *grub_strnchr (const char *s, int c); ++int grub_strnlen (const char *s, int n); ++char *grub_strncpy (char *new, const char *s, int n); ++int grub_strncasecmp(const char *s0, const char *s1, int n); + + #ifndef GRUB_UTIL +-typedef unsigned long grub_jmp_buf[6]; ++typedef unsigned long grub_jmp_buf[8]; + #else + /* In the grub shell, use the libc jmp_buf instead. */ + # include +@@ -904,10 +959,11 @@ extern grub_jmp_buf restart_cmdline_env; + /* misc */ + void init_page (void); + void print_error (void); +-char *convert_to_ascii (char *buf, int c, ...); ++char *convert_to_ascii (char *buf, int c, unsigned int num); + int get_cmdline (char *prompt, char *cmdline, int maxlen, + int echo_char, int history); + int substring (const char *s1, const char *s2); ++int subcasestring (const char *s1, const char *s2); + int nul_terminate (char *str); + int get_based_digit (int c, int base); + int safe_parse_maxint (char **str_ptr, int *myint_ptr); +@@ -934,7 +990,9 @@ int next_partition (unsigned long drive, unsigned long dest, + unsigned long *partition, int *type, + unsigned long *start, unsigned long *len, + unsigned long *offset, int *entry, +- unsigned long *ext_offset, char *buf); ++ unsigned long *ext_offset, ++ unsigned long *gpt_offset, int *gpt_count, ++ int *gpt_size, char *buf); + + /* Sets device to the one represented by the SAVED_* parameters. */ + int make_saved_active (void); +@@ -962,6 +1020,8 @@ int dir (char *dirname); + + int set_bootdev (int hdbias); + ++char *get_fsys_type (void); ++ + /* Display statistics on the current active device. */ + void print_fsys_type (void); + +@@ -987,10 +1047,22 @@ int load_module (char *module, char *arg); + int load_initrd (char *initrd); + + int check_password(char *entered, char* expected, password_t type); ++ ++char *sha256_crypt (const char *key, const char *salt); ++char *sha512_crypt (const char *key, const char *salt); + #endif + + void init_bios_info (void); + ++#ifdef PLATFORM_EFI ++void grub_set_config_file (char *path_name); ++int grub_save_saved_default (int new_default); ++extern int check_device (const char *device); ++extern void assign_device_name (int drive, const char *device); ++#endif ++int grub_load_linux (char *kernel, char *arg); ++int grub_load_initrd (char *initrd); ++int grub_chainloader (char *filename); + #endif /* ASM_FILE */ + + #endif /* ! GRUB_SHARED_HEADER */ +diff --git a/stage2/smp-imps.h b/stage2/smp-imps.h +index c0fdce3..bae9b77 100644 +--- a/stage2/smp-imps.h ++++ b/stage2/smp-imps.h +@@ -196,7 +196,6 @@ struct imps_interrupt + + int imps_probe (void); + +- + /* + * Defines that use variables + */ +diff --git a/stage2/stage1_5.c b/stage2/stage1_5.c +index 5c45d4c..c2d9632 100644 +--- a/stage2/stage1_5.c ++++ b/stage2/stage1_5.c +@@ -30,7 +30,8 @@ disk_read_savesect_func (int sector, int offset, int length) + void + cmain (void) + { +- grub_printf ("\n\nGRUB loading, please wait...\n"); ++ if (0) ++ grub_printf ("\n\nGRUB loading, please wait...\n"); + + /* + * Here load the true second-stage boot-loader. +diff --git a/stage2/stage2.c b/stage2/stage2.c +index 4dbf6f5..cca4332 100644 +--- a/stage2/stage2.c ++++ b/stage2/stage2.c +@@ -22,6 +22,8 @@ + + grub_jmp_buf restart_env; + ++int silent_grub = 0; ++ + #if defined(PRESET_MENU_STRING) || defined(SUPPORT_DISKLESS) + + # if defined(PRESET_MENU_STRING) +@@ -233,6 +235,10 @@ run_menu (char *menu_entries, char *config_entries, int num_entries, + { + int c, time1, time2 = -1, first_entry = 0; + char *cur_entry = 0; ++ struct term_entry *prev_term = NULL; ++ ++ if (grub_verbose) ++ cls(); + + /* + * Main loop for menu UI. +@@ -254,18 +260,33 @@ restart: + interface. */ + if (grub_timeout < 0) + show_menu = 1; +- ++ + /* If SHOW_MENU is false, don't display the menu until ESC is pressed. */ + if (! show_menu) + { ++ /* Don't show the "Booting in blah seconds message" if the timeout is 0 */ ++ int print_message = grub_timeout != 0; ++ + /* Get current time. */ + while ((time1 = getrtsecs ()) == 0xFF) + ; + ++ if (print_message) ++ grub_printf("\rPress any key to enter the menu\n\n\n"); ++ + while (1) + { +- /* Check if ESC is pressed. */ +- if (checkkey () != -1 && ASCII_CHAR (getkey ()) == '\e') ++ /* Check if any key is pressed */ ++ if (checkkey () != -1) ++ { ++ grub_timeout = -1; ++ show_menu = 1; ++ getkey (); ++ break; ++ } ++ ++ /* See if a modifier key is held down. */ ++ if (keystatus () != 0) + { + grub_timeout = -1; + show_menu = 1; +@@ -287,8 +308,10 @@ restart: + grub_timeout--; + + /* Print a message. */ +- grub_printf ("\rPress `ESC' to enter the menu... %d ", +- grub_timeout); ++ if (print_message) ++ grub_printf ("\rBooting %s in %d seconds...", ++ get_entry(menu_entries, first_entry + entryno, 0), ++ grub_timeout); + } + } + } +@@ -319,7 +342,8 @@ restart: + if (config_entries) + printf ("\ + Press enter to boot the selected OS, \'e\' to edit the\n\ +- commands before booting, or \'c\' for a command-line."); ++ commands before booting, \'a\' to modify the kernel arguments\n\ ++ before booting, or \'c\' for a command-line."); + else + printf ("\ + Press \'b\' to boot, \'e\' to edit the selected command in the\n\ +@@ -514,7 +538,7 @@ restart: + if (c == 'O') + { + grub_memmove (cur_entry + 2, cur_entry, +- ((int) heap) - ((int) cur_entry)); ++ heap - cur_entry); + + cur_entry[0] = ' '; + cur_entry[1] = 0; +@@ -530,8 +554,8 @@ restart: + 0); + + grub_memmove (cur_entry, ptr, +- ((int) heap) - ((int) ptr)); +- heap -= (((int) ptr) - ((int) cur_entry)); ++ heap - ptr); ++ heap -= ptr - cur_entry; + + num_entries--; + +@@ -655,7 +679,7 @@ restart: + else + { + cls (); +- print_cmdline_message (0); ++ print_cmdline_message (CMDLINE_EDIT_MODE); + + new_heap = heap + NEW_HEAPSIZE + 1; + +@@ -681,7 +705,7 @@ restart: + + /* align rest of commands properly */ + grub_memmove (cur_entry + j, cur_entry + i, +- (int) heap - ((int) cur_entry + i)); ++ (unsigned long) heap - ((unsigned long) cur_entry + i)); + + /* copy command to correct area */ + grub_memmove (cur_entry, new_heap, j); +@@ -697,6 +721,98 @@ restart: + enter_cmdline (heap, 0); + goto restart; + } ++ if (config_entries && c == 'a') ++ { ++ int new_num_entries = 0, i = 0, j; ++ int needs_padding, amount; ++ char *new_heap; ++ char * entries; ++ char * entry_copy; ++ char * append_line; ++ char * start; ++ ++ entry_copy = new_heap = heap; ++ cur_entry = get_entry (config_entries, first_entry + entryno, ++ 1); ++ ++ do ++ { ++ while ((*(new_heap++) = cur_entry[i++]) != 0); ++ new_num_entries++; ++ } ++ while (config_entries && cur_entry[i]); ++ ++ /* this only needs to be done if config_entries is non-NULL, ++ but it doesn't hurt to do it always */ ++ *(new_heap++) = 0; ++ ++ new_heap = heap + NEW_HEAPSIZE + 1; ++ ++ entries = entry_copy; ++ while (*entries) ++ { ++ if ((strstr(entries, "kernel") == entries) && ++ isspace(entries[6])) ++ break; ++ ++ while (*entries) entries++; ++ entries++; ++ } ++ ++ if (!*entries) ++ goto restart; ++ ++ start = entries + 6; ++ ++ /* skip the white space */ ++ while (*start && isspace(*start)) start++; ++ /* skip the kernel name */ ++ while (*start && !isspace(*start)) start++; ++ ++ /* skip the white space */ ++ needs_padding = (!*start || !isspace(*start)); ++ while (*start && isspace(*start)) start++; ++ ++ append_line = new_heap; ++ grub_strcpy(append_line, start); ++ ++ cls(); ++ print_cmdline_message (CMDLINE_EDIT_MODE); ++ ++ if (get_cmdline(PACKAGE " append> ", ++ append_line, NEW_HEAPSIZE + 1, ++ 0, 1)) ++ goto restart; ++ ++ /* have new args; append_line points to the ++ new args and start points to the old ++ args */ ++ ++ i = grub_strlen(start); ++ j = grub_strlen(append_line); ++ ++ if (i > (j + needs_padding)) ++ amount = i; ++ else ++ amount = j + needs_padding; ++ ++ /* align rest of commands properly */ ++ memmove (start + j + needs_padding, start + i, ++ ((unsigned long) append_line) - ((unsigned long) start) - (amount)); ++ ++ if (needs_padding) ++ *start = ' '; ++ ++ /* copy command to correct area */ ++ memmove (start + needs_padding, append_line, j); ++ ++ /* set up this entry to boot */ ++ config_entries = NULL; ++ cur_entry = entry_copy; ++ heap = new_heap; ++ ++ break; ++ } + #ifdef GRUB_UTIL + if (c == 'q') + { +@@ -712,16 +828,31 @@ restart: + + boot_entry: + +- cls (); +- setcursor (1); ++ if (grub_verbose || show_menu) ++ { ++ cls (); ++ setcursor (1); ++ } ++ /* if our terminal needed initialization, we should shut it down ++ * before booting the kernel, but we want to save what it was so ++ * we can come back if needed */ ++ prev_term = current_term; ++ if (current_term->shutdown) ++ { ++ (*current_term->shutdown)(); ++ current_term = term_table; /* assumption: console is first */ ++ } ++ ++ if (silent_grub) ++ setcursor(0); + + while (1) + { + if (config_entries) +- printf (" Booting \'%s\'\n\n", ++ verbose_printf (" Booting \'%s\'\n\n", + get_entry (menu_entries, first_entry + entryno, 0)); + else +- printf (" Booting command-list\n\n"); ++ verbose_printf (" Booting command-list\n\n"); + + if (! cur_entry) + cur_entry = get_entry (config_entries, first_entry + entryno, 1); +@@ -748,6 +879,13 @@ restart: + break; + } + ++ /* if we get back here, we should go back to what our term was before */ ++ current_term = prev_term; ++ if (current_term->startup) ++ /* if our terminal fails to initialize, fall back to console since ++ * it should always work */ ++ if ((*current_term->startup)() == 0) ++ current_term = term_table; /* we know that console is first */ + show_menu = 1; + goto restart; + } +@@ -867,38 +1005,8 @@ cmain (void) + if (use_config_file) + #endif /* GRUB_UTIL */ + { +- char *default_file = (char *) DEFAULT_FILE_BUF; + int i; +- +- /* Get a saved default entry if possible. */ +- saved_entryno = 0; +- *default_file = 0; +- grub_strncat (default_file, config_file, DEFAULT_FILE_BUFLEN); +- for (i = grub_strlen(default_file); i >= 0; i--) +- if (default_file[i] == '/') +- { +- i++; +- break; +- } +- default_file[i] = 0; +- grub_strncat (default_file + i, "default", DEFAULT_FILE_BUFLEN - i); +- if (grub_open (default_file)) +- { +- char buf[10]; /* This is good enough. */ +- char *p = buf; +- int len; +- +- len = grub_read (buf, sizeof (buf)); +- if (len > 0) +- { +- buf[sizeof (buf) - 1] = 0; +- safe_parse_maxint (&p, &saved_entryno); +- } + +- grub_close (); +- } +- errnum = ERR_NONE; +- + do + { + /* STATE 0: Before any title command. +@@ -1050,11 +1158,16 @@ cmain (void) + while (is_preset); + } + ++ /* go ahead and make sure the terminal is setup */ ++ if (current_term->startup) ++ (*current_term->startup)(); ++ + if (! num_entries) + { + /* If no acceptable config file, goto command-line, starting + heap from where the config entries would have been stored + if there were any. */ ++ grub_verbose = 1; + enter_cmdline (config_entries, 1); + } + else +diff --git a/stage2/start.S b/stage2/start.S +index 9a7d504..7a6652f 100644 +--- a/stage2/start.S ++++ b/stage2/start.S +@@ -39,6 +39,9 @@ + + /* Print message string */ + #define MSG(x) movw $ABS(x), %si; call message ++ ++ /* Print verbose message string */ ++#define VMSG(x) + + .file "start.S" + +@@ -67,9 +70,9 @@ _start: + + /* print a notification message on the screen */ + pushw %si +- MSG(notification_string) ++ VMSG(notification_string) + popw %si +- ++ + /* this sets up for the first run through "bootloop" */ + movw $ABS(firstlist - BOOTSEC_LISTSIZE), %di + +@@ -291,9 +294,9 @@ copy_buffer: + movsb /* this runs the actual copy */ + + /* restore addressing regs and print a dot with correct DS +- (MSG modifies SI, which is saved, and unused AX and BX) */ ++ (VMSG modifies SI, which is saved, and unused AX and BX) */ + popw %ds +- MSG(notification_step) ++ VMSG(notification_step) + popa + + /* check if finished with this dataset */ +@@ -310,7 +313,7 @@ copy_buffer: + + bootit: + /* print a newline */ +- MSG(notification_done) ++ VMSG(notification_done) + popw %dx /* this makes sure %dl is our "boot" drive */ + #ifdef STAGE1_5 + ljmp $0, $0x2200 +diff --git a/stage2/term.h b/stage2/term.h +index 8261c7c..803de58 100644 +--- a/stage2/term.h ++++ b/stage2/term.h +@@ -54,18 +54,28 @@ typedef enum + /* Set when the terminal needs to be initialized. */ + #define TERM_NEED_INIT (1 << 16) + ++/* Bitmasks for modifier keys returned by term->keystatus(). */ ++#define TERM_STATUS_ALT (1 << 3) ++#define TERM_STATUS_CTRL (1 << 2) ++#define TERM_STATUS_LEFT_SHIFT (1 << 1) ++#define TERM_STATUS_RIGHT_SHIFT (1 << 0) ++ + struct term_entry + { + /* The name of a terminal. */ + const char *name; + /* The feature flags defined above. */ + unsigned long flags; ++ /* Default for maximum number of lines if not specified */ ++ unsigned short max_lines; + /* Put a character. */ + void (*putchar) (int c); + /* Check if any input character is available. */ + int (*checkkey) (void); + /* Get a character. */ + int (*getkey) (void); ++ /* Get keyboard modifier status. */ ++ int (*keystatus) (void); + /* Get the cursor position. The return value is ((X << 8) | Y). */ + int (*getxy) (void); + /* Go to the position (X, Y). */ +@@ -79,6 +89,11 @@ struct term_entry + void (*setcolor) (int normal_color, int highlight_color); + /* Turn on/off the cursor. */ + int (*setcursor) (int on); ++ ++ /* function to start a terminal */ ++ int (*startup) (void); ++ /* function to use to shutdown a terminal */ ++ void (*shutdown) (void); + }; + + /* This lists up available terminals. */ +@@ -96,6 +111,7 @@ void console_putchar (int c); + #ifndef STAGE1_5 + int console_checkkey (void); + int console_getkey (void); ++int console_keystatus (void); + int console_getxy (void); + void console_gotoxy (int x, int y); + void console_cls (void); +@@ -124,4 +140,23 @@ void hercules_setcolor (int normal_color, int highlight_color); + int hercules_setcursor (int on); + #endif + ++#ifdef SUPPORT_GRAPHICS ++extern int foreground, background, border, graphics_inited; ++ ++void graphics_set_splash(char *splashfile); ++int set_videomode (int mode); ++void graphics_putchar (int c); ++int graphics_getxy(void); ++void graphics_gotoxy(int x, int y); ++void graphics_cls(void); ++void graphics_setcolorstate (color_state state); ++void graphics_setcolor (int normal_color, int highlight_color); ++int graphics_setcursor (int on); ++int graphics_init(void); ++void graphics_end(void); ++ ++int hex(int v); ++void graphics_set_palette(int idx, int red, int green, int blue); ++#endif /* SUPPORT_GRAPHICS */ ++ + #endif /* ! GRUB_TERM_HEADER */ +diff --git a/stage2/tparm.c b/stage2/tparm.c +index ff78d53..408b284 100644 +--- a/stage2/tparm.c ++++ b/stage2/tparm.c +@@ -320,7 +320,7 @@ parse_format(const char *s, char *format, int *len) + #define isLOWER(c) ((c) >= 'a' && (c) <= 'z') + + static inline char * +-tparam_internal(const char *string, int *dataptr) ++tparam_internal(const char *string, va_list args) + { + #define NUM_VARS 26 + char *p_is_s[9]; +@@ -461,9 +461,9 @@ tparam_internal(const char *string, int *dataptr) + * a char* and an int may not be the same size on the stack. + */ + if (p_is_s[i] != 0) { +- p_is_s[i] = (char *)(*(dataptr++)); ++ p_is_s[i] = va_arg (args, char *); + } else { +- param[i] = (int)(*(dataptr++)); ++ param[i] = va_arg (args, int); + } + } + +@@ -716,11 +716,11 @@ char * + grub_tparm(const char *string,...) + { + char *result; +- int *dataptr = (int *) &string; ++ va_list ap; + +- dataptr++; +- +- result = tparam_internal(string, dataptr); ++ va_start (ap, string); ++ result = tparam_internal(string, ap); ++ va_end(ap); + + return result; + } +diff --git a/test b/test +new file mode 100644 +index 0000000..b182379 +--- /dev/null ++++ b/test +@@ -0,0 +1 @@ ++fo of fo +diff --git a/util/.gitignore b/util/.gitignore +new file mode 100644 +index 0000000..6687356 +--- /dev/null ++++ b/util/.gitignore +@@ -0,0 +1,7 @@ ++Makefile.in ++Makefile ++.deps ++grub-image ++grub-install ++grub-md5-crypt ++grub-terminfo +diff --git a/util/Makefile.am b/util/Makefile.am +index 2e04711..fa545b1 100644 +--- a/util/Makefile.am ++++ b/util/Makefile.am +@@ -1,6 +1,7 @@ ++if !PLATFORM_EFI ++ + bin_PROGRAMS = mbchk +-sbin_SCRIPTS = grub-install grub-md5-crypt grub-terminfo \ +- grub-set-default ++sbin_SCRIPTS = grub-install grub-md5-crypt grub-terminfo grub-crypt + noinst_SCRIPTS = grub-image mkbimage + + EXTRA_DIST = mkbimage +@@ -10,3 +11,9 @@ AM_CFLAGS = -I$(top_srcdir)/lib -I$(top_srcdir)/docs + + mbchk_SOURCES = mbchk.c + mbchk_LDADD = ../lib/libcommon.a ++ ++else ++ ++sbin_SCRIPTS = grub-md5-crypt grub-terminfo grub-crypt ++ ++endif +diff --git a/util/Makefile.in b/util/Makefile.in +deleted file mode 100644 +index e700cf7..0000000 +--- a/util/Makefile.in ++++ /dev/null +@@ -1,478 +0,0 @@ +-# Makefile.in generated by automake 1.9.4 from Makefile.am. +-# @configure_input@ +- +-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +-# 2003, 2004 Free Software Foundation, Inc. +-# This Makefile.in is free software; the Free Software Foundation +-# gives unlimited permission to copy and/or distribute it, +-# with or without modifications, as long as this notice is preserved. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +-# PARTICULAR PURPOSE. +- +-@SET_MAKE@ +- +- +-SOURCES = $(mbchk_SOURCES) +- +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ +-VPATH = @srcdir@ +-pkgdatadir = $(datadir)/@PACKAGE@ +-pkglibdir = $(libdir)/@PACKAGE@ +-pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = .. +-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ +-install_sh_DATA = $(install_sh) -c -m 644 +-install_sh_PROGRAM = $(install_sh) -c +-install_sh_SCRIPT = $(install_sh) -c +-INSTALL_HEADER = $(INSTALL_DATA) +-transform = $(program_transform_name) +-NORMAL_INSTALL = : +-PRE_INSTALL = : +-POST_INSTALL = : +-NORMAL_UNINSTALL = : +-PRE_UNINSTALL = : +-POST_UNINSTALL = : +-build_triplet = @build@ +-host_triplet = @host@ +-bin_PROGRAMS = mbchk$(EXEEXT) +-subdir = util +-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ +- $(srcdir)/grub-image.in $(srcdir)/grub-install.in \ +- $(srcdir)/grub-md5-crypt.in $(srcdir)/grub-set-default.in \ +- $(srcdir)/grub-terminfo.in +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ +- $(top_srcdir)/configure.ac +-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ +- $(ACLOCAL_M4) +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = grub-image grub-install grub-md5-crypt \ +- grub-terminfo grub-set-default +-am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(sbindir)" +-binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +-PROGRAMS = $(bin_PROGRAMS) +-am_mbchk_OBJECTS = mbchk.$(OBJEXT) +-mbchk_OBJECTS = $(am_mbchk_OBJECTS) +-mbchk_DEPENDENCIES = ../lib/libcommon.a +-sbinSCRIPT_INSTALL = $(INSTALL_SCRIPT) +-SCRIPTS = $(noinst_SCRIPTS) $(sbin_SCRIPTS) +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-SOURCES = $(mbchk_SOURCES) +-DIST_SOURCES = $(mbchk_SOURCES) +-ETAGS = etags +-CTAGS = ctags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +-ACLOCAL = @ACLOCAL@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ +-AMTAR = @AMTAR@ +-AUTOCONF = @AUTOCONF@ +-AUTOHEADER = @AUTOHEADER@ +-AUTOMAKE = @AUTOMAKE@ +-AWK = @AWK@ +-BUILD_EXAMPLE_KERNEL_FALSE = @BUILD_EXAMPLE_KERNEL_FALSE@ +-BUILD_EXAMPLE_KERNEL_TRUE = @BUILD_EXAMPLE_KERNEL_TRUE@ +-CC = @CC@ +-CCAS = @CCAS@ +-CCASFLAGS = @CCASFLAGS@ +-CCDEPMODE = @CCDEPMODE@ +-CFLAGS = @CFLAGS@ +-CPP = @CPP@ +-CPPFLAGS = @CPPFLAGS@ +-CYGPATH_W = @CYGPATH_W@ +-DEFS = @DEFS@ +-DEPDIR = @DEPDIR@ +-DISKLESS_SUPPORT_FALSE = @DISKLESS_SUPPORT_FALSE@ +-DISKLESS_SUPPORT_TRUE = @DISKLESS_SUPPORT_TRUE@ +-ECHO_C = @ECHO_C@ +-ECHO_N = @ECHO_N@ +-ECHO_T = @ECHO_T@ +-EGREP = @EGREP@ +-EXEEXT = @EXEEXT@ +-FSYS_CFLAGS = @FSYS_CFLAGS@ +-GRUB_CFLAGS = @GRUB_CFLAGS@ +-GRUB_LIBS = @GRUB_LIBS@ +-HERCULES_SUPPORT_FALSE = @HERCULES_SUPPORT_FALSE@ +-HERCULES_SUPPORT_TRUE = @HERCULES_SUPPORT_TRUE@ +-INSTALL_DATA = @INSTALL_DATA@ +-INSTALL_PROGRAM = @INSTALL_PROGRAM@ +-INSTALL_SCRIPT = @INSTALL_SCRIPT@ +-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +-LDFLAGS = @LDFLAGS@ +-LIBOBJS = @LIBOBJS@ +-LIBS = @LIBS@ +-LTLIBOBJS = @LTLIBOBJS@ +-MAINT = @MAINT@ +-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +-MAKEINFO = @MAKEINFO@ +-NETBOOT_DRIVERS = @NETBOOT_DRIVERS@ +-NETBOOT_SUPPORT_FALSE = @NETBOOT_SUPPORT_FALSE@ +-NETBOOT_SUPPORT_TRUE = @NETBOOT_SUPPORT_TRUE@ +-NET_CFLAGS = @NET_CFLAGS@ +-NET_EXTRAFLAGS = @NET_EXTRAFLAGS@ +-OBJCOPY = @OBJCOPY@ +-OBJEXT = @OBJEXT@ +-PACKAGE = @PACKAGE@ +-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +-PACKAGE_NAME = @PACKAGE_NAME@ +-PACKAGE_STRING = @PACKAGE_STRING@ +-PACKAGE_TARNAME = @PACKAGE_TARNAME@ +-PACKAGE_VERSION = @PACKAGE_VERSION@ +-PATH_SEPARATOR = @PATH_SEPARATOR@ +-PERL = @PERL@ +-RANLIB = @RANLIB@ +-SERIAL_SPEED_SIMULATION_FALSE = @SERIAL_SPEED_SIMULATION_FALSE@ +-SERIAL_SPEED_SIMULATION_TRUE = @SERIAL_SPEED_SIMULATION_TRUE@ +-SERIAL_SUPPORT_FALSE = @SERIAL_SUPPORT_FALSE@ +-SERIAL_SUPPORT_TRUE = @SERIAL_SUPPORT_TRUE@ +-SET_MAKE = @SET_MAKE@ +-SHELL = @SHELL@ +-STAGE1_CFLAGS = @STAGE1_CFLAGS@ +-STAGE2_CFLAGS = @STAGE2_CFLAGS@ +-STRIP = @STRIP@ +-VERSION = @VERSION@ +-ac_ct_CC = @ac_ct_CC@ +-ac_ct_OBJCOPY = @ac_ct_OBJCOPY@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__include = @am__include@ +-am__leading_dot = @am__leading_dot@ +-am__quote = @am__quote@ +-am__tar = @am__tar@ +-am__untar = @am__untar@ +-bindir = @bindir@ +-build = @build@ +-build_alias = @build_alias@ +-build_cpu = @build_cpu@ +-build_os = @build_os@ +-build_vendor = @build_vendor@ +-datadir = @datadir@ +-exec_prefix = @exec_prefix@ +-host = @host@ +-host_alias = @host_alias@ +-host_cpu = @host_cpu@ +-host_os = @host_os@ +-host_vendor = @host_vendor@ +-includedir = @includedir@ +-infodir = @infodir@ +-install_sh = @install_sh@ +-libdir = @libdir@ +-libexecdir = @libexecdir@ +-localstatedir = @localstatedir@ +-mandir = @mandir@ +-mkdir_p = @mkdir_p@ +-oldincludedir = @oldincludedir@ +-prefix = @prefix@ +-program_transform_name = @program_transform_name@ +-sbindir = @sbindir@ +-sharedstatedir = @sharedstatedir@ +-sysconfdir = @sysconfdir@ +-target_alias = @target_alias@ +-sbin_SCRIPTS = grub-install grub-md5-crypt grub-terminfo \ +- grub-set-default +- +-noinst_SCRIPTS = grub-image mkbimage +-EXTRA_DIST = mkbimage +- +-# XXX: Need to search for a header file in docs, because of multiboot.h. +-AM_CFLAGS = -I$(top_srcdir)/lib -I$(top_srcdir)/docs +-mbchk_SOURCES = mbchk.c +-mbchk_LDADD = ../lib/libcommon.a +-all: all-am +- +-.SUFFIXES: +-.SUFFIXES: .c .o .obj +-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) +- @for dep in $?; do \ +- case '$(am__configure_deps)' in \ +- *$$dep*) \ +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +- && exit 0; \ +- exit 1;; \ +- esac; \ +- done; \ +- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu util/Makefile'; \ +- cd $(top_srcdir) && \ +- $(AUTOMAKE) --gnu util/Makefile +-.PRECIOUS: Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- @case '$?' in \ +- *config.status*) \ +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ +- *) \ +- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ +- esac; +- +-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +- +-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) +- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +-grub-image: $(top_builddir)/config.status $(srcdir)/grub-image.in +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +-grub-install: $(top_builddir)/config.status $(srcdir)/grub-install.in +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +-grub-md5-crypt: $(top_builddir)/config.status $(srcdir)/grub-md5-crypt.in +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +-grub-terminfo: $(top_builddir)/config.status $(srcdir)/grub-terminfo.in +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +-grub-set-default: $(top_builddir)/config.status $(srcdir)/grub-set-default.in +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +-install-binPROGRAMS: $(bin_PROGRAMS) +- @$(NORMAL_INSTALL) +- test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" +- @list='$(bin_PROGRAMS)'; for p in $$list; do \ +- p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ +- if test -f $$p \ +- ; then \ +- f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ +- echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ +- $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ +- else :; fi; \ +- done +- +-uninstall-binPROGRAMS: +- @$(NORMAL_UNINSTALL) +- @list='$(bin_PROGRAMS)'; for p in $$list; do \ +- f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ +- echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ +- rm -f "$(DESTDIR)$(bindir)/$$f"; \ +- done +- +-clean-binPROGRAMS: +- -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) +-mbchk$(EXEEXT): $(mbchk_OBJECTS) $(mbchk_DEPENDENCIES) +- @rm -f mbchk$(EXEEXT) +- $(LINK) $(mbchk_LDFLAGS) $(mbchk_OBJECTS) $(mbchk_LDADD) $(LIBS) +-install-sbinSCRIPTS: $(sbin_SCRIPTS) +- @$(NORMAL_INSTALL) +- test -z "$(sbindir)" || $(mkdir_p) "$(DESTDIR)$(sbindir)" +- @list='$(sbin_SCRIPTS)'; for p in $$list; do \ +- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ +- if test -f $$d$$p; then \ +- f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ +- echo " $(sbinSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(sbindir)/$$f'"; \ +- $(sbinSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(sbindir)/$$f"; \ +- else :; fi; \ +- done +- +-uninstall-sbinSCRIPTS: +- @$(NORMAL_UNINSTALL) +- @list='$(sbin_SCRIPTS)'; for p in $$list; do \ +- f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ +- echo " rm -f '$(DESTDIR)$(sbindir)/$$f'"; \ +- rm -f "$(DESTDIR)$(sbindir)/$$f"; \ +- done +- +-mostlyclean-compile: +- -rm -f *.$(OBJEXT) +- +-distclean-compile: +- -rm -f *.tab.c +- +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbchk.Po@am__quote@ +- +-.c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c $< +- +-.c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +-uninstall-info-am: +- +-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- mkid -fID $$unique +-tags: TAGS +- +-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) +- tags=; \ +- here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ +- test -n "$$unique" || unique=$$empty_fix; \ +- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique; \ +- fi +-ctags: CTAGS +-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) +- tags=; \ +- here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ +- test -z "$(CTAGS_ARGS)$$tags$$unique" \ +- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ +- $$tags $$unique +- +-GTAGS: +- here=`$(am__cd) $(top_builddir) && pwd` \ +- && cd $(top_srcdir) \ +- && gtags -i $(GTAGS_ARGS) $$here +- +-distclean-tags: +- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +- +-distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ +- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkdir_p) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ +- if test -d $$d/$$file; then \ +- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ +- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ +- fi; \ +- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ +- else \ +- test -f $(distdir)/$$file \ +- || cp -p $$d/$$file $(distdir)/$$file \ +- || exit 1; \ +- fi; \ +- done +-check-am: all-am +-check: check-am +-all-am: Makefile $(PROGRAMS) $(SCRIPTS) +-installdirs: +- for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(sbindir)"; do \ +- test -z "$$dir" || $(mkdir_p) "$$dir"; \ +- done +-install: install-am +-install-exec: install-exec-am +-install-data: install-data-am +-uninstall: uninstall-am +- +-install-am: all-am +- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +- +-installcheck: installcheck-am +-install-strip: +- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ +- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ +- `test -z '$(STRIP)' || \ +- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +-mostlyclean-generic: +- +-clean-generic: +- +-distclean-generic: +- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) +- +-maintainer-clean-generic: +- @echo "This command is intended for maintainers to use" +- @echo "it deletes files that may require special tools to rebuild." +-clean: clean-am +- +-clean-am: clean-binPROGRAMS clean-generic mostlyclean-am +- +-distclean: distclean-am +- -rm -rf ./$(DEPDIR) +- -rm -f Makefile +-distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-tags +- +-dvi: dvi-am +- +-dvi-am: +- +-html: html-am +- +-info: info-am +- +-info-am: +- +-install-data-am: +- +-install-exec-am: install-binPROGRAMS install-sbinSCRIPTS +- +-install-info: install-info-am +- +-install-man: +- +-installcheck-am: +- +-maintainer-clean: maintainer-clean-am +- -rm -rf ./$(DEPDIR) +- -rm -f Makefile +-maintainer-clean-am: distclean-am maintainer-clean-generic +- +-mostlyclean: mostlyclean-am +- +-mostlyclean-am: mostlyclean-compile mostlyclean-generic +- +-pdf: pdf-am +- +-pdf-am: +- +-ps: ps-am +- +-ps-am: +- +-uninstall-am: uninstall-binPROGRAMS uninstall-info-am \ +- uninstall-sbinSCRIPTS +- +-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ +- clean-generic ctags distclean distclean-compile \ +- distclean-generic distclean-tags distdir dvi dvi-am html \ +- html-am info info-am install install-am install-binPROGRAMS \ +- install-data install-data-am install-exec install-exec-am \ +- install-info install-info-am install-man install-sbinSCRIPTS \ +- install-strip installcheck installcheck-am installdirs \ +- maintainer-clean maintainer-clean-generic mostlyclean \ +- mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ +- tags uninstall uninstall-am uninstall-binPROGRAMS \ +- uninstall-info-am uninstall-sbinSCRIPTS +- +-# Tell versions [3.59,3.63) of GNU make to not export all variables. +-# Otherwise a system limit (for SysV at least) may be exceeded. +-.NOEXPORT: +diff --git a/util/grub-crypt.in b/util/grub-crypt.in +new file mode 100644 +index 0000000..e8783c8 +--- /dev/null ++++ b/util/grub-crypt.in +@@ -0,0 +1,80 @@ ++#! /usr/bin/python ++ ++'''Generate encrypted passwords for GRUB.''' ++ ++import crypt ++import getopt ++import getpass ++import sys ++ ++def usage(): ++ '''Output usage message to stderr and exit.''' ++ print >> sys.stderr, 'Usage: grub-crypt [OPTION]...' ++ print >> sys.stderr, 'Try `$progname --help\' for more information.' ++ sys.exit(1) ++ ++def gen_salt(): ++ '''Generate a random salt.''' ++ ret = '' ++ with open('/dev/urandom', 'rb') as urandom: ++ while True: ++ byte = urandom.read(1) ++ if byte in ('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' ++ './0123456789'): ++ ret += byte ++ if len(ret) == 16: ++ break ++ return ret ++ ++def main(): ++ '''Top level.''' ++ crypt_type = '$6$' # SHA-256 ++ try: ++ opts, args = getopt.getopt(sys.argv[1:], 'hv', ++ ('help', 'version', 'md5', 'sha-256', ++ 'sha-512')) ++ except getopt.GetoptError, err: ++ print >> sys.stderr, str(err) ++ usage() ++ if args: ++ print >> sys.stderr, 'Unexpected argument `%s\'' % (args[0],) ++ usage() ++ for (opt, _) in opts: ++ if opt in ('-h', '--help'): ++ print ( ++'''Usage: grub-crypt [OPTION]... ++Encrypt a password. ++ ++ -h, --help Print this message and exit ++ -v, --version Print the version information and exit ++ --md5 Use MD5 to encrypt the password ++ --sha-256 Use SHA-256 to encrypt the password ++ --sha-512 Use SHA-512 to encrypt the password (default) ++ ++Report bugs to . ++EOF''') ++ sys.exit(0) ++ elif opt in ('-v', '--version'): ++ print 'grub-crypt (GNU GRUB @VERSION@)' ++ sys.exit(0) ++ elif opt == '--md5': ++ crypt_type = '$1$' ++ elif opt == '--sha-256': ++ crypt_type = '$5$' ++ elif opt == '--sha-512': ++ crypt_type = '$6$' ++ else: ++ assert False, 'Unhandled option' ++ password = getpass.getpass('Password: ') ++ password2 = getpass.getpass('Retype password: ') ++ if not password: ++ print >> sys.stderr, 'Empty password is not permitted.' ++ sys.exit(1) ++ if password != password2: ++ print >> sys.stderr, 'Sorry, passwords do not match.' ++ sys.exit(1) ++ salt = crypt_type + gen_salt() ++ print crypt.crypt(password, salt) ++ ++if __name__ == '__main__': ++ main() +diff --git a/util/grub-install.in b/util/grub-install.in +index 2e598b0..12539b8 100644 +--- a/util/grub-install.in ++++ b/util/grub-install.in +@@ -21,34 +21,36 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ + sbindir=@sbindir@ +-libdir=@libdir@ ++datadir=@datadir@ + PACKAGE=@PACKAGE@ + VERSION=@VERSION@ + host_cpu=@host_cpu@ + host_os=@host_os@ + host_vendor=@host_vendor@ +-pkglibdir=${libdir}/${PACKAGE}/${host_cpu}-${host_vendor} ++pkgdatadir=${datadir}/${PACKAGE}/${host_cpu}-${host_vendor} + + grub_shell=${sbindir}/grub +-grub_set_default=${sbindir}/grub-set-default +-log_file=/tmp/grub-install.log.$$ +-img_file=/tmp/grub-install.img.$$ ++mdadm=${sbindir}/mdadm ++log_file=${TMPDIR:-/tmp}/grub-install.log.$$ ++img_file=${TMPDIR:-/tmp}/grub-install.img.$$ + rootdir= + grub_prefix=/boot/grub + ++install_drives= + install_device= + no_floppy= + force_lba= + recheck=no + debug=no ++justcopy=no + + # look for secure tempfile creation wrappers on this platform + if test -x /bin/tempfile; then + mklog="/bin/tempfile --prefix=grub" + mkimg="/bin/tempfile --prefix=grub" + elif test -x /bin/mktemp; then +- mklog="/bin/mktemp /tmp/grub-install.log.XXXXXX" +- mkimg="/bin/mktemp /tmp/grub-install.img.XXXXXX" ++ mklog="/bin/mktemp ${TMPDIR:-/tmp}/grub-install.log.XXXXXX" ++ mkimg="/bin/mktemp ${TMPDIR:-/tmp}/grub-install.img.XXXXXX" + else + mklog="" + mkimg="" +@@ -70,6 +72,8 @@ Install GRUB on your drive. + --force-lba force GRUB to use LBA mode even for a buggy + BIOS + --recheck probe a device map even if it already exists ++ This flag is unreliable and its use is ++ strongly discouraged. + + INSTALL_DEVICE can be a GRUB device name or a system device filename. + +@@ -96,17 +100,28 @@ convert () { + # Break the device name into the disk part and the partition part. + case "$host_os" in + linux*) +- tmp_disk=`echo "$1" | sed -e 's%\([sh]d[a-z]\)[0-9]*$%\1%' \ ++ tmp_disk=`echo "$1" | grep -v '/mapper/control$' | ++ grep -v '/mapper/[[:alnum:]]\+-[[:alnum:]]\+$' | uniq | ++ sed -e 's%\([shv]d[a-z]\)[0-9]*$%\1%' \ + -e 's%\(d[0-9]*\)p[0-9]*$%\1%' \ + -e 's%\(fd[0-9]*\)$%\1%' \ + -e 's%/part[0-9]*$%/disc%' \ +- -e 's%\(c[0-7]d[0-9]*\).*$%\1%'` +- tmp_part=`echo "$1" | sed -e 's%.*/[sh]d[a-z]\([0-9]*\)$%\1%' \ ++ -e 's%\(c[0-7]d[0-9]*\).*$%\1%' \ ++ -e 's%\(/mapper/[[:alpha:]]\+[[:digit:]]\+\)p[[:digit:]]\+$%\1%' \ ++ -e 's%\(/mapper/isw_[[:alpha:]_]\+[[:alpha:]]\+[[:digit:]]\+\)p[[:digit:]]\+$%\1%' \ ++ -e 's%\(/mapper/[[:alpha:]]\+_[[:alpha:]]\+\)[[:digit:]]\+$%\1%'` ++ tmp_part=`echo "$1" | grep -v '/mapper/control$' | ++ grep -v '/mapper/[[:alnum:]]\+-[[:alnum:]]\+$' | uniq | ++ sed -e 's%.*/[shv]d[a-z]\([0-9]*\)$%\1%' \ + -e 's%.*d[0-9]*p%%' \ + -e 's%.*/fd[0-9]*$%%' \ + -e 's%.*/floppy/[0-9]*$%%' \ + -e 's%.*/\(disc\|part\([0-9]*\)\)$%\2%' \ +- -e 's%.*c[0-7]d[0-9]*p%%'` ++ -e 's%.*c[0-7]d[0-9]*p%%' \ ++ -e 's%.*/mapper/[[:alpha:]]\+[[:digit:]]\+p\([[:digit:]]\+\)$%\1%' \ ++ -e 's%.*/mapper/isw_[[:alpha:]_]\+[[:alpha:]]\+[[:digit:]]\+p\([[:digit:]]\+\)$%\1%' \ ++ -e 's%.*/mapper/[[:alpha:]]\+_[[:alpha:]]\+\([[:digit:]]\+\)$%\1%' | ++ grep -v '.*/mapper/.*'` + ;; + gnu*) + tmp_disk=`echo "$1" | sed 's%\([sh]d[0-9]*\).*%\1%'` +@@ -196,7 +211,7 @@ resolve_symlink () { + while test -L $tmp_fname; do + tmp_new_fname=`ls -al $tmp_fname | sed -n 's%.*-> \(.*\)%\1%p'` + if test -z "$tmp_new_fname"; then +- echo "Unrecognized ls output" 2>&1 ++ echo "Unrecognized ls output" 1>&2 + exit 1 + fi + +@@ -211,6 +226,80 @@ resolve_symlink () { + echo "$tmp_fname" + } + ++# Usage: is_raid1_device devicename ++# Returns 0 if devicename is a raid1 md device, 1 if it is not. ++is_raid1_device () { ++ case "$host_os" in ++ linux*) ++ level=`$mdadm --query --detail $1 2>/dev/null | \ ++ awk '/Raid Level :/ {print $4}'` ++ if [ "$level" = "raid1" ]; then ++ return 0 ++ fi ++ ;; ++ esac ++ return 1 ++} ++ ++# Usage: find_real_devs device ++# Returns space separated list of devices for linux if device is ++# a raid1 device. In all other cases, the provided value is returned. ++find_real_devs () { ++ source_device=$1 ++ case "$host_os" in ++ linux*) ++ if is_raid1_device $source_device ; then ++ list="" ++ for device in `$mdadm --query --detail "${source_device}" | \ ++ awk '/\/dev\/[^(md)]/ {print $7}'` ; do ++ list="$list $device" ++ done ++ echo $list ++ return 0 ++ fi ++ ;; ++ esac ++ echo $source_device ++ return 0 ++} ++ ++# Usage: stat_device file ++# Find major:minor of a device node. ++stat_device() { ++ majmin=`stat -c "%t:%T" "$1" 2>/dev/null` ++ if test -z "$majmin"; then ++ echo "Could not find device for $1" 1>&2 ++ exit 1 ++ fi ++ ++ echo "$majmin" ++} ++ ++# Usage: find_mapper_device file ++# Find a file in /dev/mapper with the same major:minor as the specified node. ++find_mapper_device() { ++ if [ -b "$1" ]; then ++ dev="$1" ++ else ++ mntpnt=`echo "$1" | sed 's,/,\\\\/,g'` ++ dev=`awk '($2 ~ /'$mntpnt'/) { print $1 }' /etc/mtab` ++ fi ++ if test -z "$dev"; then ++ echo "Could not find device for $1" 1>&2 ++ exit 1 ++ fi ++ ++ majmin=`stat_device $dev` ++ for x in /dev/mapper/* ; do ++ devmajmin=`stat_device "$x"` ++ if [ "$majmin" == "$devmajmin" ]; then ++ echo "$x" ++ return 0 ++ fi ++ done ++ return 1 ++} ++ + # Usage: find_device file + # Find block device on which the file resides. + find_device () { +@@ -219,15 +308,55 @@ find_device () { + tmp_fname=`df $1/ | sed -n 's%.*\(/dev/[^ ]*\).*%\1%p'` + + if test -z "$tmp_fname"; then +- echo "Could not find device for $1" 2>&1 ++ echo "Could not find device for $1" 1>&2 + exit 1 + fi + +- tmp_fname=`resolve_symlink $tmp_fname` ++ ret_fname=`resolve_symlink $tmp_fname` || exit 1 ++ tmp_fname=`find_mapper_device $ret_fname` ++ if test -n "$tmp_fname"; then ++ ret_fname="$tmp_fname" ++ fi ++ ++ echo "$ret_fname" ++ return 0 ++} ++ ++copy_images() { ++ # Copy the GRUB images to the GRUB directory. ++ for file in ${grubdir}/stage1 ${grubdir}/stage2 ${grubdir}/*stage1_5; do ++ rm -f $file || exit 1 ++ done ++ for file in \ ++ ${pkgdatadir}/stage1 ${pkgdatadir}/stage2 ${pkgdatadir}/*stage1_5; do ++ cp -f $file ${grubdir} 1>&2 || exit 1 ++ done ++} ++ ++ ++dump_boot_block () { ++ sync ++ $grub_shell --batch $no_floppy --device-map=$device_map <$log_file ++dump ${root_drive}${tmp} ${img_file} ++quit ++EOF ++} ++ ++ ++install_boot_block () { ++ # Before all invocations of the grub shell, call sync to make sure ++ # the raw device is in sync with any bufferring in filesystems. ++ sync + +- echo "$tmp_fname" ++ # Now perform the installation. ++ $grub_shell --batch $no_floppy --device-map=$device_map <>$log_file ++root $1 ++setup $force_lba --stage2=$grubdir/stage2 --prefix=$grub_prefix $2 ++quit ++EOF + } + ++ + # Check the arguments. + for option in "$@"; do + case "$option" in +@@ -247,6 +376,8 @@ for option in "$@"; do + force_lba="--force-lba" ;; + --recheck) + recheck=yes ;; ++ --just-copy) ++ justcopy=yes ;; + # This is an undocumented feature... + --debug) + debug=yes ;; +@@ -265,12 +396,6 @@ for option in "$@"; do + esac + done + +-if test "x$install_device" = x; then +- echo "install_device not specified." 1>&2 +- usage +- exit 1 +-fi +- + # If the debugging feature is enabled, print commands. + if test $debug = yes; then + set -x +@@ -293,6 +418,26 @@ esac + grubdir=${bootdir}/grub + device_map=${grubdir}/device.map + ++if [ "$recheck" == "yes" ]; then ++ if grep 'mapper' ${device_map} >/dev/null; then ++ echo 'grub-install does not support reprobing of device.map when' 1>&2 ++ echo 'using a device-mapper based boot device.' 1>&2 ++ exit 1 ++ fi ++fi ++ ++# if they just want the images copied, copy the images and then exit ++if test $justcopy = yes; then ++ copy_images ++ exit 0 ++fi ++ ++if test "x$install_device" = x; then ++ echo "install_device not specified." 1>&2 ++ usage ++ exit 1 ++fi ++ + # Check if GRUB is installed. + # This is necessary, because the user can specify "grub --read-only". + set $grub_shell dummy +@@ -303,17 +448,17 @@ else + exit 1 + fi + +-if test -f "$pkglibdir/stage1"; then ++if test -f "$pkgdatadir/stage1"; then + : + else +- echo "${pkglibdir}/stage1: Not found." 1>&2 ++ echo "${pkgdatadir}/stage1: Not found." 1>&2 + exit 1 + fi + +-if test -f "$pkglibdir/stage2"; then ++if test -f "$pkgdatadir/stage2"; then + : + else +- echo "${pkglibdir}/stage2: Not found." 1>&2 ++ echo "${pkgdatadir}/stage2: Not found." 1>&2 + exit 1 + fi + +@@ -324,9 +469,11 @@ fi + test -d "$bootdir" || mkdir "$bootdir" || exit 1 + test -d "$grubdir" || mkdir "$grubdir" || exit 1 + ++copy_images ++ + # If --recheck is specified, remove the device map, if present. + if test $recheck = yes; then +- rm -f $device_map ++ mv $device_map ${device_map}.backup + fi + + # Create the device map file if it is not present. +@@ -336,6 +483,10 @@ else + # Create a safe temporary file. + test -n "$mklog" && log_file=`$mklog` + ++ # Before all invocations of the grub shell, call sync to make sure ++ # the raw device is in sync with any bufferring in filesystems. ++ sync ++ + $grub_shell --batch $no_floppy --device-map=$device_map <$log_file + quit + EOF +@@ -351,34 +502,60 @@ fi + tmp=`sed -n '/^([fh]d[0-9]*)/s/\(^(.*)\).*/\1/p' $device_map \ + | sort | uniq -d | sed -n 1p` + if test -n "$tmp"; then +- echo "The drive $tmp is defined multiple times in the device map $device_map" 1>&2 ++ echo "The drive $tmp is defined multiple times in the new device map." 1>&2 ++ if test $recheck = yes; then ++ echo "Reverting to backed up copy." 1>&2 ++ mv ${device_map}.backup $device_map ++ fi ++ exit 1 ++fi ++ ++# Make sure device.map has at least one hd device ++grep -q "^(hd[0-9]\+)" $device_map ++if [ "x$?" != "x0" ]; then ++ echo "No suitable drive was found in the generated device map." 1>&2 ++ if test $recheck = yes; then ++ echo "Reverting to backed up copy." 1>&2 ++ mv ${device_map}.backup $device_map ++ fi + exit 1 + fi + + # Check for INSTALL_DEVICE. + case "$install_device" in + /dev/*) +- install_device=`resolve_symlink "$install_device"` +- install_drive=`convert "$install_device"` +- # I don't know why, but some shells wouldn't die if exit is +- # called in a function. +- if test "x$install_drive" = x; then ++ install_device=`resolve_symlink "$install_device"` || exit 1 ++ for install_drive in `find_real_devs $install_device` ; do ++ install_drive=`convert $install_drive` || exit 1 ++ if is_raid1_device $install_device; then ++ install_drive=`echo $install_drive | sed 's/,[0-9]*)/)/'` ++ fi ++ if [ "x$install_drive" = "x" ]; then ++ exit 1 ++ fi ++ install_drives="${install_drives} ${install_drive}" ++ done ++ unset install_drive ++ ++ if test "x$install_drives" = x ; then + exit 1 + fi ;; + \([hf]d[0-9]*\)) +- install_drive="$install_device" ;; ++ install_drives="$install_device" ;; + [hf]d[0-9]*) + # The GRUB format with no parenthesis. +- install_drive="($install_device)" ;; ++ install_drives="($install_device)" ;; + *) + echo "Format of install_device not recognized." 1>&2 + usage + exit 1 ;; + esac + ++unset install_device ++ + # Get the root drive. +-root_device=`find_device ${rootdir}` +-bootdir_device=`find_device ${bootdir}` ++root_device=`find_device ${rootdir}` || exit 1 ++bootdir_device=`find_device ${bootdir}` || exit 1 + + # Check if the boot directory is in the same device as the root directory. + if test "x$root_device" != "x$bootdir_device"; then +@@ -387,15 +564,8 @@ if test "x$root_device" != "x$bootdir_device"; then + grub_prefix="/grub" + fi + +-# Convert the root device to a GRUB drive. +-root_drive=`convert "$root_device"` +-if test "x$root_drive" = x; then +- exit 1 +-fi +- +-# Check if the root directory exists in the same device as the grub +-# directory. +-grubdir_device=`find_device ${grubdir}` ++# Check if the root directory exists in the same device as the grub directory. ++grubdir_device=`find_device ${grubdir}` || exit 1 + + if test "x$grubdir_device" != "x$root_device"; then + # For now, cannot deal with this situation. +@@ -406,61 +576,71 @@ EOF + exit 1 + fi + +-# Copy the GRUB images to the GRUB directory. +-for file in ${grubdir}/stage1 ${grubdir}/stage2 ${grubdir}/*stage1_5; do +- rm -f $file || exit 1 +-done +-for file in \ +- ${pkglibdir}/stage1 ${pkglibdir}/stage2 ${pkglibdir}/*stage1_5; do +- cp -f $file ${grubdir} || exit 1 +-done +- +-# Make a default file. +-${grub_set_default} --root-directory=${rootdir} default +- + # Make sure that GRUB reads the same images as the host OS. + test -n "$mkimg" && img_file=`$mkimg` + test -n "$mklog" && log_file=`$mklog` + ++# There's not a real root device, so just pick the first ++if is_raid1_device $root_device ; then ++ root_device=`find_real_devs $root_device | awk '{print $1}'` ++fi ++ ++# Convert the root deviceto a GRUB drive. ++root_drive=`convert "$root_device"` || exit 1 ++if [ "x$root_drive" = x ]; then ++ exit 1 ++fi ++ + for file in ${grubdir}/stage1 ${grubdir}/stage2 ${grubdir}/*stage1_5; do + count=5 + tmp=`echo $file | sed "s|^${grubdir}|${grub_prefix}|"` + while test $count -gt 0; do +- $grub_shell --batch $no_floppy --device-map=$device_map <$log_file +-dump ${root_drive}${tmp} ${img_file} +-quit +-EOF +- if grep "Error [0-9]*: " $log_file >/dev/null; then +- : +- elif cmp $file $img_file >/dev/null; then +- break +- fi +- sleep 1 +- count=`expr $count - 1` ++ dump_boot_block $root_drive $img_file ++ if grep "Error [0-9]*: " $log_file >/dev/null; then ++ : ++ else ++ # Use sha1sum instead of cmp to avoid a dependency on diffutils. ++ sha1=`sha1sum $file | cut -d' ' -f 1` ++ sha2=`sha1sum $img_file | cut -d' ' -f 1` ++ if test -f $file -a -f $img_file -a "$sha1" = "$sha2"; then ++ break ++ fi ++ fi ++ sleep 1 ++ count=`expr $count - 1` + done + if test $count -eq 0; then +- echo "The file $file not read correctly." 1>&2 +- exit 1 ++ echo "The file $file not read correctly." 1>&2 ++ exit 1 + fi + done + + rm -f $img_file + rm -f $log_file + ++if ! test -e ${grubdir}/grub.conf ; then ++ test -e ${grubdir}/menu.lst && ln -s ./menu.lst ${grubdir}/grub.conf ++fi ++ + # Create a safe temporary file. + test -n "$mklog" && log_file=`$mklog` + +-# Now perform the installation. +-$grub_shell --batch $no_floppy --device-map=$device_map <$log_file +-root $root_drive +-setup $force_lba --stage2=$grubdir/stage2 --prefix=$grub_prefix $install_drive +-quit +-EOF ++for install_drive in $install_drives; do ++ # Convert the root deviceto a GRUB drive. ++ root_drive=`convert "$root_device"` || exit 1 ++ if [ "x$root_drive" = x ]; then ++ exit 1 ++ fi ++ install_boot_block $root_drive $install_drive ++done + +-if grep "Error [0-9]*: " $log_file >/dev/null || test $debug = yes; then ++if grep "Error [0-9]*: " $log_file >/dev/null ; then + cat $log_file 1>&2 + exit 1 + fi ++if test $debug = yes; then ++ cat $log_file 1>&2 ++fi + + rm -f $log_file + diff --git a/src/patches/icecream-0.9.7-platform-arm.patch b/src/patches/icecream-0.9.7-platform-arm.patch new file mode 100644 index 000000000..53402f007 --- /dev/null +++ b/src/patches/icecream-0.9.7-platform-arm.patch @@ -0,0 +1,22 @@ +Index: services/scheduler.cpp +=================================================================== +--- services/scheduler.cpp (revision 1310078) ++++ services/scheduler.cpp (working copy) +@@ -52,7 +52,7 @@ + #include "config.h" + #include "bench.h" + +-#define DEBUG_SCHEDULER 0 ++#define DEBUG_SCHEDULER 1 + + /* TODO: + * leak check +@@ -613,6 +613,8 @@ + + platform_map.insert( make_pair( string( "ppc" ), string( "ppc64" ) ) ); + platform_map.insert( make_pair( string( "s390" ), string( "s390x" ) ) ); ++ ++ platform_map.insert( make_pair( string( "armv5tel"), string( "armv7l" ) ) ); + } + + multimap::const_iterator end = platform_map.upper_bound( target ); diff --git a/src/patches/libmad-0.15.1b-cflags-O2.patch b/src/patches/libmad-0.15.1b-cflags-O2.patch new file mode 100644 index 000000000..61b4b13bd --- /dev/null +++ b/src/patches/libmad-0.15.1b-cflags-O2.patch @@ -0,0 +1,12 @@ +diff -Naur libmad-0.15.1b-orig/configure.ac libmad-0.15.1b/configure.ac +--- libmad-0.15.1b-orig/configure.ac 2007-07-01 12:58:13.000000000 -0600 ++++ libmad-0.15.1b/configure.ac 2007-07-01 12:59:13.000000000 -0600 +@@ -105,7 +105,7 @@ + shift + ;; + -O2) +- optimize="-O" ++ optimize="-O2" + shift + ;; + -fomit-frame-pointer) diff --git a/src/patches/libmad-0.15.1b-cflags.patch b/src/patches/libmad-0.15.1b-cflags.patch new file mode 100644 index 000000000..2ec44e344 --- /dev/null +++ b/src/patches/libmad-0.15.1b-cflags.patch @@ -0,0 +1,146 @@ +diff -Naur libmad-0.15.1b-orig/configure.ac libmad-0.15.1b/configure.ac +--- libmad-0.15.1b-orig/configure.ac 2007-06-30 20:22:31.000000000 -0600 ++++ libmad-0.15.1b/configure.ac 2007-06-30 20:25:31.000000000 -0600 +@@ -122,74 +122,74 @@ + esac + done + +-if test "$GCC" = yes +-then +- if test -z "$arch" +- then +- case "$host" in +- i386-*) ;; +- i?86-*) arch="-march=i486" ;; +- arm*-empeg-*) arch="-march=armv4 -mtune=strongarm1100" ;; +- armv4*-*) arch="-march=armv4 -mtune=strongarm" ;; +- powerpc-*) ;; +- mips*-agenda-*) arch="-mcpu=vr4100" ;; +- mips*-luxsonor-*) arch="-mips1 -mcpu=r3000 -Wa,-m4010" ;; +- esac +- fi +- +- case "$optimize" in +- -O|"-O "*) +- optimize="-O" +- optimize="$optimize -fforce-mem" +- optimize="$optimize -fforce-addr" +- : #x optimize="$optimize -finline-functions" +- : #- optimize="$optimize -fstrength-reduce" +- optimize="$optimize -fthread-jumps" +- optimize="$optimize -fcse-follow-jumps" +- optimize="$optimize -fcse-skip-blocks" +- : #x optimize="$optimize -frerun-cse-after-loop" +- : #x optimize="$optimize -frerun-loop-opt" +- : #x optimize="$optimize -fgcse" +- optimize="$optimize -fexpensive-optimizations" +- optimize="$optimize -fregmove" +- : #* optimize="$optimize -fdelayed-branch" +- : #x optimize="$optimize -fschedule-insns" +- optimize="$optimize -fschedule-insns2" +- : #? optimize="$optimize -ffunction-sections" +- : #? optimize="$optimize -fcaller-saves" +- : #> optimize="$optimize -funroll-loops" +- : #> optimize="$optimize -funroll-all-loops" +- : #x optimize="$optimize -fmove-all-movables" +- : #x optimize="$optimize -freduce-all-givs" +- : #? optimize="$optimize -fstrict-aliasing" +- : #* optimize="$optimize -fstructure-noalias" +- +- case "$host" in +- arm*-*) +- optimize="$optimize -fstrength-reduce" +- ;; +- mips*-*) +- optimize="$optimize -fstrength-reduce" +- optimize="$optimize -finline-functions" +- ;; +- i?86-*) +- optimize="$optimize -fstrength-reduce" +- ;; +- powerpc-apple-*) +- # this triggers an internal compiler error with gcc2 +- : #optimize="$optimize -fstrength-reduce" +- +- # this is really only beneficial with gcc3 +- : #optimize="$optimize -finline-functions" +- ;; +- *) +- # this sometimes provokes bugs in gcc 2.95.2 +- : #optimize="$optimize -fstrength-reduce" +- ;; +- esac +- ;; +- esac +-fi ++#if test "$GCC" = yes ++#then ++# if test -z "$arch" ++# then ++# case "$host" in ++# i386-*) ;; ++# i?86-*) arch="-march=i486" ;; ++# arm*-empeg-*) arch="-march=armv4 -mtune=strongarm1100" ;; ++# armv4*-*) arch="-march=armv4 -mtune=strongarm" ;; ++# powerpc-*) ;; ++# mips*-agenda-*) arch="-mcpu=vr4100" ;; ++# mips*-luxsonor-*) arch="-mips1 -mcpu=r3000 -Wa,-m4010" ;; ++# esac ++# fi ++# ++# case "$optimize" in ++# -O|"-O "*) ++# optimize="-O" ++# optimize="$optimize -fforce-mem" ++# optimize="$optimize -fforce-addr" ++# : #x optimize="$optimize -finline-functions" ++# : #- optimize="$optimize -fstrength-reduce" ++# optimize="$optimize -fthread-jumps" ++# optimize="$optimize -fcse-follow-jumps" ++# optimize="$optimize -fcse-skip-blocks" ++# : #x optimize="$optimize -frerun-cse-after-loop" ++# : #x optimize="$optimize -frerun-loop-opt" ++# : #x optimize="$optimize -fgcse" ++# optimize="$optimize -fexpensive-optimizations" ++# optimize="$optimize -fregmove" ++# : #* optimize="$optimize -fdelayed-branch" ++# : #x optimize="$optimize -fschedule-insns" ++# optimize="$optimize -fschedule-insns2" ++# : #? optimize="$optimize -ffunction-sections" ++# : #? optimize="$optimize -fcaller-saves" ++# : #> optimize="$optimize -funroll-loops" ++# : #> optimize="$optimize -funroll-all-loops" ++# : #x optimize="$optimize -fmove-all-movables" ++# : #x optimize="$optimize -freduce-all-givs" ++# : #? optimize="$optimize -fstrict-aliasing" ++# : #* optimize="$optimize -fstructure-noalias" ++# ++# case "$host" in ++# arm*-*) ++# optimize="$optimize -fstrength-reduce" ++# ;; ++# mips*-*) ++# optimize="$optimize -fstrength-reduce" ++# optimize="$optimize -finline-functions" ++# ;; ++# i?86-*) ++# optimize="$optimize -fstrength-reduce" ++# ;; ++# powerpc-apple-*) ++# # this triggers an internal compiler error with gcc2 ++# : #optimize="$optimize -fstrength-reduce" ++# ++# # this is really only beneficial with gcc3 ++# : #optimize="$optimize -finline-functions" ++# ;; ++# *) ++# # this sometimes provokes bugs in gcc 2.95.2 ++# : #optimize="$optimize -fstrength-reduce" ++# ;; ++# esac ++# ;; ++# esac ++#fi + + case "$host" in + mips*-agenda-*) diff --git a/src/patches/libnl-1.1-ULONG_MAX.patch b/src/patches/libnl-1.1-ULONG_MAX.patch new file mode 100644 index 000000000..ca3dd4013 --- /dev/null +++ b/src/patches/libnl-1.1-ULONG_MAX.patch @@ -0,0 +1,11 @@ +--- libnl-1.1/include/netlink-local.h.orig 2008-06-08 19:09:20.000000000 +0200 ++++ libnl-1.1/include/netlink-local.h 2008-06-08 19:09:33.000000000 +0200 +@@ -26,6 +26,7 @@ + #include + #include + #include ++#include + + #include + #include + diff --git a/src/patches/libsafe-alpha.diff b/src/patches/libsafe-alpha.diff deleted file mode 100644 index dfeb9f227..000000000 --- a/src/patches/libsafe-alpha.diff +++ /dev/null @@ -1,232 +0,0 @@ ---- libsafe-2.0-16-orig/src/intercept.c 2003-03-15 16:02:12.000000000 +0100 -+++ libsafe-2.0-16/src/intercept.c 2003-03-15 16:12:22.000000000 +0100 -@@ -165,7 +165,8 @@ - */ - char *strcpy(char *dest, const char *src) - { -- size_t max_size, len; -+ uint max_size; -+ size_t len; - - if (!real_memcpy) - real_memcpy = (memcpy_t) getLibraryFunction("memcpy"); -@@ -196,7 +197,8 @@ - - char *strncpy(char *dest, const char *src, size_t n) - { -- size_t max_size, len; -+ uint max_size; -+ size_t len; - - if (!real_strncpy) - real_strncpy = (strncpy_t) getLibraryFunction("strncpy"); -@@ -219,7 +221,8 @@ - - char *stpcpy(char *dest, const char *src) - { -- size_t max_size, len; -+ uint max_size; -+ size_t len; - - if (!real_memcpy) - real_memcpy = (memcpy_t) getLibraryFunction("memcpy"); -@@ -251,7 +254,8 @@ - #ifndef MISSING_WCSNLEN - wchar_t *wcscpy(wchar_t *dest, const wchar_t *src) - { -- size_t max_bytes, max_wchars, len; -+ size_t max_wchars, len; -+ uint max_bytes; - - if (!real_wcscpy) - real_wcscpy = (wcscpy_t) getLibraryFunction("wcscpy"); -@@ -291,7 +295,8 @@ - - wchar_t *wcpcpy(wchar_t *dest, const wchar_t *src) - { -- size_t max_bytes, max_wchars, len; -+ size_t max_wchars, len; -+ uint max_bytes; - - if (!real_wcpcpy) - real_wcpcpy = (wcpcpy_t) getLibraryFunction("wcpcpy"); -@@ -333,9 +338,15 @@ - /* - * This is needed! See the strcpy() for the reason. -ab. - */ --void *memcpy(void *dest, const void *src, size_t n) -+void *memcpy(void *dest, const void *src, size_t hack) - { -- size_t max_size; -+ /* -+ * a size_t IS an unsigned long everywhere, though it sometimes -+ * doesn't state so, making printf misinterpret it. -+ */ -+ unsigned long n = hack; -+ uint max_size; -+ - - if (!real_memcpy) - real_memcpy = (memcpy_t) getLibraryFunction("memcpy"); -@@ -344,11 +355,11 @@ - return real_memcpy(dest, src, n); - - if ((max_size = _libsafe_stackVariableP(dest)) == 0) { -- LOG(5, "memcpy( , , %d)\n", n); -+ LOG(5, "memcpy( , , %ld)\n", n); - return real_memcpy(dest, src, n); - } - -- LOG(4, "memcpy( , , %d) stack limit=%d)\n", n, max_size); -+ LOG(4, "memcpy( , , %ld) stack limit=%d)\n", n, max_size); - if (n > max_size) - _libsafe_die("Overflow caused by memcpy()"); - return real_memcpy(dest, src, n); -@@ -357,7 +368,7 @@ - - char *strcat(char *dest, const char *src) - { -- size_t max_size; -+ uint max_size; - uint dest_len, src_len; - - if (!real_memcpy) -@@ -388,7 +399,7 @@ - - char *strncat(char *dest, const char *src, size_t n) - { -- size_t max_size; -+ uint max_size; - uint dest_len, src_len; - - if (!real_strncat) -@@ -1008,12 +1019,31 @@ - if (is_printf_convspec[(int)*p]) { - caddr_t addr; - c++; -+#if 0 -+ /* -+ * cannot add va_list (ap here) with a number on alpha. -+ * this is faster than the other method, and might be -+ * a good idea to enable this on !alpha arch. -+ */ - if (pnum) { - addr = *((caddr_t*)(ap + (atoi(pnum)-1)*sizeof(char*))); - } - else { - addr = *((caddr_t*)(ap + c*sizeof(char*))); - } -+#else -+ { -+ va_list apc; -+ uint nb = c + 1; -+ -+ va_copy(apc, ap); -+ if (pnum) -+ nb = atoi(pnum); -+ addr = NULL; -+ while (nb--) -+ addr = va_arg(apc, caddr_t); -+ } -+#endif - if (*p == 'n') { - if (_libsafe_raVariableP((void *)(addr))) { - _libsafe_die("printf(\"%%n\")"); -@@ -1172,12 +1202,32 @@ - if (is_printf_convspec[(int)*p]) { - caddr_t addr; - c++; -+#if 0 -+ /* -+ * cannot add va_list (ap here) with a number on alpha. -+ * this is faster than the other method, and might be -+ * a good idea to enable this on !alpha arch. -+ */ -+ - if (pnum) { - addr = *((caddr_t*)(ap + (atoi(pnum)-1)*sizeof(char*))); - } - else { - addr = *((caddr_t*)(ap + c*sizeof(char*))); - } -+#else -+ { -+ va_list apc; -+ uint nb = c + 1; -+ -+ va_copy(apc, ap); -+ if (pnum) -+ nb = atoi(pnum); -+ addr = NULL; -+ while (nb--) -+ addr = va_arg(apc, caddr_t); -+ } -+#endif - if (*p == 'n') { - if (_libsafe_raVariableP((void *)(addr))) { - _libsafe_die("printf(\"%%n\")"); -@@ -1194,7 +1244,7 @@ - - int sprintf(char *str, const char *format, ...) - { -- size_t max_size; -+ uint max_size; - va_list ap; - int res; - -@@ -1242,7 +1292,7 @@ - - int snprintf(char *str, size_t size, const char *format, ...) - { -- size_t max_size; -+ uint max_size; - va_list ap; - int res; - -@@ -1288,7 +1338,7 @@ - - int vsprintf(char *str, const char *format, va_list ap) - { -- size_t max_size; -+ uint max_size; - int res; - - if (!real_vsprintf) -@@ -1325,7 +1375,7 @@ - - int vsnprintf(char *str, size_t size, const char *format, va_list ap) - { -- size_t max_size; -+ uint max_size; - int res; - - if (!real_vsnprintf) -@@ -1360,7 +1410,7 @@ - - char *getwd(char *buf) - { -- size_t max_size; -+ uint max_size; - char *res; - - if (!real_getwd) -@@ -1384,7 +1434,8 @@ - - char *gets(char *s) - { -- size_t max_size, len; -+ uint max_size; -+ size_t len; - - if (!real_gets) - real_gets = (gets_t) getLibraryFunction("gets"); -@@ -1409,7 +1460,8 @@ - - char *realpath(char *path, char resolved_path[]) - { -- size_t max_size, len; -+ uint max_size; -+ size_t len; - char *res; - char buf[MAXPATHLEN + 1]; - diff --git a/src/patches/libsafe-functioncaching.diff b/src/patches/libsafe-functioncaching.diff deleted file mode 100644 index db003a4cf..000000000 --- a/src/patches/libsafe-functioncaching.diff +++ /dev/null @@ -1,258 +0,0 @@ -From: Goswin Brederlow -Subject: Bug#129345: patch to prevent a loop between libdl and libsafe causing libdl to crash -To: 129345@bugs.debian.org -Date: 01 Sep 2002 23:54:35 +0200 -Reply-To: Goswin Brederlow , - 129345@bugs.debian.org -Resent-From: Goswin Brederlow - - -------- -[D. Coe edited this patch slightly -- moved an unrelated change into the -Makefile itself [it changed the debugging comments only], and corrected a -spelling error and reworded the comments. The original patch is in the -bug tracking system, if you want to see it as submitted by Goswin.] -------- -------- -D. Coe subsequently modified the patch further, because in some cases -the initializations did not occur (e.g. when IO_vfscanf or memcpy was -called from ps or top (likely one of the libraries they use). maybe -they do something that disables libsafe's library globals initialization? - - -In any case, I've adopted both strategise in this new patch; the addresses -are preloaded as Goswin had coded, but they are also individually checked -each time needed (as was the case before Goswin's patch), and are initialized -at that point if necessary. Hopefully this will let ps and top work -and also continue to work around the libdl problem. -------- - -Hi, - -if libsafe is invoked from inside libdl (or only inside dlerror()?) -and a real_XXX function is not yet looked up it will reenter -libdl. That causes memory corruption resulting in a read from 0x0 and -thus segfault. - -The patch below makes libsafe cache all needed symbols once upon -init. That not only causes less lookups than before but should prevent -fatal loops. Failures of the initial lookups might not be reported -correctly but terminate in some odd way if the functions needed to -report are not yet looked up. - -MfG - Goswin - ----------------------------------------------------------------------- -diff -Nurd libsafe-2.0-16/src/intercept.c libsafe-2.0-16-mrvn/src/intercept.c ---- libsafe-2.0-16/src/intercept.c 2002-05-31 19:37:34.000000000 +0200 -+++ libsafe-2.0-16-mrvn/src/intercept.c 2002-09-01 23:44:55.000000000 +0200 -@@ -128,14 +128,29 @@ - } - - --/* Starting with version 2.0, we keep a single global copy of the pointer to -- * the real memcpy() function. This allows us to call -- * getLibraryFunction("memcpy") just once instead of multiple times, since -- * memcpy() is needed in four different functions below. -+/* Starting with Debian version 2.0-16-2, we keep a global copy of the pointer -+ * to each real functions. Otherwise a getLibraryFunction might -+ * be triggered from inside dlsym() and cause memory corruption reulting in a -+ * segfault. - */ --static memcpy_t real_memcpy = NULL; -- -- -+static memcpy_t real_memcpy = NULL; -+static _IO_vfscanf_t real_IO_vfscanf = NULL; -+static vfprintf_t real_vfprintf = NULL; -+static vsnprintf_t real_vsnprintf = NULL; -+static vsprintf_t real_vsprintf = NULL; -+static gets_t real_gets = NULL; -+static getwd_t real_getwd = NULL; -+static realpath_t real_realpath = NULL; -+static stpcpy_t real_stpcpy = NULL; -+static strcat_t real_strcat = NULL; -+static strcpy_t real_strcpy = NULL; -+static strncat_t real_strncat = NULL; -+static strncpy_t real_strncpy = NULL; -+static wcscpy_t real_wcscpy = NULL; -+static wcpcpy_t real_wcpcpy = NULL; -+#ifndef MISSING_WCSNLEN -+static wcscat_t real_wcscat = NULL; -+#endif - /* - * -------------- system library implementations ------------------- - * Here is the story: if a C source file includes and is -@@ -150,7 +165,6 @@ - */ - char *strcpy(char *dest, const char *src) - { -- static strcpy_t real_strcpy = NULL; - size_t max_size, len; - - if (!real_memcpy) -@@ -182,7 +196,6 @@ - - char *strncpy(char *dest, const char *src, size_t n) - { -- static strncpy_t real_strncpy = NULL; - size_t max_size, len; - - if (!real_strncpy) -@@ -206,7 +219,6 @@ - - char *stpcpy(char *dest, const char *src) - { -- static stpcpy_t real_stpcpy = NULL; - size_t max_size, len; - - if (!real_memcpy) -@@ -239,7 +251,6 @@ - #ifndef MISSING_WCSNLEN - wchar_t *wcscpy(wchar_t *dest, const wchar_t *src) - { -- static wcscpy_t real_wcscpy = NULL; - size_t max_bytes, max_wchars, len; - - if (!real_wcscpy) -@@ -280,7 +291,6 @@ - - wchar_t *wcpcpy(wchar_t *dest, const wchar_t *src) - { -- static wcpcpy_t real_wcpcpy = NULL; - size_t max_bytes, max_wchars, len; - - if (!real_wcpcpy) -@@ -347,7 +357,6 @@ - - char *strcat(char *dest, const char *src) - { -- static strcat_t real_strcat = NULL; - size_t max_size; - uint dest_len, src_len; - -@@ -379,7 +388,6 @@ - - char *strncat(char *dest, const char *src, size_t n) - { -- static strncat_t real_strncat = NULL; - size_t max_size; - uint dest_len, src_len; - -@@ -408,7 +416,6 @@ - #ifndef MISSING_WCSNLEN - wchar_t *wcscat(wchar_t *dest, const wchar_t *src) - { -- static wcscat_t real_wcscat = NULL; - size_t max_bytes; - uint dest_len, src_len; - -@@ -861,7 +868,6 @@ - */ - int vfprintf(FILE *fp, const char *format, va_list ap) - { -- static vfprintf_t real_vfprintf = NULL; - int res; - char *p, *pnum; - int c = -1; /* Next var arg to be used */ -@@ -1026,7 +1032,6 @@ - */ - int _IO_vfprintf(FILE *fp, const char *format, va_list ap) - { -- static vfprintf_t real_vfprintf = NULL; - int res; - char *p, *pnum; - int c = -1; /* Next var arg to be used */ -@@ -1189,8 +1194,6 @@ - - int sprintf(char *str, const char *format, ...) - { -- static vsprintf_t real_vsprintf = NULL; -- static vsnprintf_t real_vsnprintf = NULL; - size_t max_size; - va_list ap; - int res; -@@ -1239,7 +1242,6 @@ - - int snprintf(char *str, size_t size, const char *format, ...) - { -- static vsnprintf_t real_vsnprintf = NULL; - size_t max_size; - va_list ap; - int res; -@@ -1286,8 +1288,6 @@ - - int vsprintf(char *str, const char *format, va_list ap) - { -- static vsprintf_t real_vsprintf = NULL; -- static vsnprintf_t real_vsnprintf = NULL; - size_t max_size; - int res; - -@@ -1325,7 +1325,6 @@ - - int vsnprintf(char *str, size_t size, const char *format, va_list ap) - { -- static vsnprintf_t real_vsnprintf = NULL; - size_t max_size; - int res; - -@@ -1361,7 +1360,6 @@ - - char *getwd(char *buf) - { -- static getwd_t real_getwd = NULL; - size_t max_size; - char *res; - -@@ -1386,7 +1384,6 @@ - - char *gets(char *s) - { -- static gets_t real_gets = NULL; - size_t max_size, len; - - if (!real_gets) -@@ -1412,7 +1409,6 @@ - - char *realpath(char *path, char resolved_path[]) - { -- static realpath_t real_realpath = NULL; - size_t max_size, len; - char *res; - char buf[MAXPATHLEN + 1]; -@@ -1445,7 +1441,6 @@ - - int _IO_vfscanf (_IO_FILE *s, const char *format, _IO_va_list argptr, int *errp) - { -- static _IO_vfscanf_t real_IO_vfscanf = NULL; - int res, save_count; - caddr_t ra_array[MAXLEVELS], fp_array[MAXLEVELS]; - -@@ -1529,6 +1524,25 @@ - - fclose(fp); - } -+ -+ real_memcpy = (memcpy_t) getLibraryFunction("memcpy"); -+ real_IO_vfscanf = (_IO_vfscanf_t) getLibraryFunction("_IO_vfscanf"); -+ real_vfprintf = (vfprintf_t) getLibraryFunction("vfprintf"); -+ real_vsnprintf = (vsnprintf_t) getLibraryFunction("vsnprintf"); -+ real_vsprintf = (vsprintf_t) getLibraryFunction("vsprintf"); -+ real_gets = (gets_t) getLibraryFunction("gets"); -+ real_getwd = (getwd_t) getLibraryFunction("getwd"); -+ real_realpath = (realpath_t) getLibraryFunction("realpath"); -+ real_stpcpy = (stpcpy_t) getLibraryFunction("stpcpy"); -+ real_strcat = (strcat_t) getLibraryFunction("strcat"); -+ real_strcpy = (strcpy_t) getLibraryFunction("strcpy"); -+ real_strncat = (strncat_t) getLibraryFunction("strncat"); -+ real_strncpy = (strncpy_t) getLibraryFunction("strncpy"); -+ real_wcscpy = (wcscpy_t) getLibraryFunction("wcscpy"); -+ real_wcpcpy = (wcpcpy_t) getLibraryFunction("wcpcpy"); -+#ifndef MISSING_WCSNLEN -+ real_wcscat = (wcscat_t) getLibraryFunction("wcscat"); -+#endif - } - - diff --git a/src/patches/libsigc++-gcc43.patch b/src/patches/libsigc++-gcc43.patch new file mode 100644 index 000000000..528f21e1f --- /dev/null +++ b/src/patches/libsigc++-gcc43.patch @@ -0,0 +1,85 @@ +diff -urN libsigc++-2.0-2.0.17.old/sigc++/signal.h libsigc++-2.0-2.0.17/sigc++/signal.h +--- libsigc++-2.0-2.0.17.old/sigc++/signal.h 2005-12-20 08:35:21.000000000 +0000 ++++ libsigc++-2.0-2.0.17/sigc++/signal.h 2008-02-22 00:22:44.000000000 +0000 +@@ -1661,7 +1661,7 @@ + typedef internal::signal_emit0 emitter_type; + typedef typename emitter_type::result_type result_type; + typedef slot slot_type; +- typedef slot_list slot_list_type; ++ typedef sigc::slot_list slot_list_type; + typedef typename slot_list_type::iterator iterator; + typedef typename slot_list_type::const_iterator const_iterator; + typedef typename slot_list_type::reverse_iterator reverse_iterator; +@@ -1770,7 +1770,7 @@ + typedef internal::signal_emit1 emitter_type; + typedef typename emitter_type::result_type result_type; + typedef slot slot_type; +- typedef slot_list slot_list_type; ++ typedef sigc::slot_list slot_list_type; + typedef typename slot_list_type::iterator iterator; + typedef typename slot_list_type::const_iterator const_iterator; + typedef typename slot_list_type::reverse_iterator reverse_iterator; +@@ -1881,7 +1881,7 @@ + typedef internal::signal_emit2 emitter_type; + typedef typename emitter_type::result_type result_type; + typedef slot slot_type; +- typedef slot_list slot_list_type; ++ typedef sigc::slot_list slot_list_type; + typedef typename slot_list_type::iterator iterator; + typedef typename slot_list_type::const_iterator const_iterator; + typedef typename slot_list_type::reverse_iterator reverse_iterator; +@@ -1994,7 +1994,7 @@ + typedef internal::signal_emit3 emitter_type; + typedef typename emitter_type::result_type result_type; + typedef slot slot_type; +- typedef slot_list slot_list_type; ++ typedef sigc::slot_list slot_list_type; + typedef typename slot_list_type::iterator iterator; + typedef typename slot_list_type::const_iterator const_iterator; + typedef typename slot_list_type::reverse_iterator reverse_iterator; +@@ -2109,7 +2109,7 @@ + typedef internal::signal_emit4 emitter_type; + typedef typename emitter_type::result_type result_type; + typedef slot slot_type; +- typedef slot_list slot_list_type; ++ typedef sigc::slot_list slot_list_type; + typedef typename slot_list_type::iterator iterator; + typedef typename slot_list_type::const_iterator const_iterator; + typedef typename slot_list_type::reverse_iterator reverse_iterator; +@@ -2226,7 +2226,7 @@ + typedef internal::signal_emit5 emitter_type; + typedef typename emitter_type::result_type result_type; + typedef slot slot_type; +- typedef slot_list slot_list_type; ++ typedef sigc::slot_list slot_list_type; + typedef typename slot_list_type::iterator iterator; + typedef typename slot_list_type::const_iterator const_iterator; + typedef typename slot_list_type::reverse_iterator reverse_iterator; +@@ -2345,7 +2345,7 @@ + typedef internal::signal_emit6 emitter_type; + typedef typename emitter_type::result_type result_type; + typedef slot slot_type; +- typedef slot_list slot_list_type; ++ typedef sigc::slot_list slot_list_type; + typedef typename slot_list_type::iterator iterator; + typedef typename slot_list_type::const_iterator const_iterator; + typedef typename slot_list_type::reverse_iterator reverse_iterator; +@@ -2466,7 +2466,7 @@ + typedef internal::signal_emit7 emitter_type; + typedef typename emitter_type::result_type result_type; + typedef slot slot_type; +- typedef slot_list slot_list_type; ++ typedef sigc::slot_list slot_list_type; + typedef typename slot_list_type::iterator iterator; + typedef typename slot_list_type::const_iterator const_iterator; + typedef typename slot_list_type::reverse_iterator reverse_iterator; +diff -urN libsigc++-2.0-2.0.17.old/tests/test_copy_invalid_slot.cc libsigc++-2.0-2.0.17/tests/test_copy_invalid_slot.cc +--- libsigc++-2.0-2.0.17.old/tests/test_copy_invalid_slot.cc 2005-05-01 02:00:47.000000000 +0000 ++++ libsigc++-2.0-2.0.17/tests/test_copy_invalid_slot.cc 2008-02-22 00:24:08.000000000 +0000 +@@ -1,4 +1,6 @@ + #include ++#include ++#include + #include + + void Foo(sigc::trackable &t) {} diff --git a/src/patches/miniupnpd-1.4_use_XT_ALIGN.patch b/src/patches/miniupnpd-1.4_use_XT_ALIGN.patch deleted file mode 100644 index 8c3322241..000000000 --- a/src/patches/miniupnpd-1.4_use_XT_ALIGN.patch +++ /dev/null @@ -1,47 +0,0 @@ -diff -Naur miniupnpd-1.4.org/netfilter/iptcrdr.c miniupnpd-1.4/netfilter/iptcrdr.c ---- miniupnpd-1.4.org/netfilter/iptcrdr.c 2009-10-10 21:19:41.000000000 +0200 -+++ miniupnpd-1.4/netfilter/iptcrdr.c 2012-07-29 16:09:42.640363971 +0200 -@@ -443,8 +443,8 @@ - struct ipt_entry_match *match; - struct ipt_tcp * tcpinfo; - size_t size; -- size = IPT_ALIGN(sizeof(struct ipt_entry_match)) -- + IPT_ALIGN(sizeof(struct ipt_tcp)); -+ size = XT_ALIGN(sizeof(struct ipt_entry_match)) -+ + XT_ALIGN(sizeof(struct ipt_tcp)); - match = calloc(1, size); - match->u.match_size = size; - strncpy(match->u.user.name, "tcp", IPT_FUNCTION_MAXNAMELEN); -@@ -462,8 +462,8 @@ - struct ipt_entry_match *match; - struct ipt_udp * udpinfo; - size_t size; -- size = IPT_ALIGN(sizeof(struct ipt_entry_match)) -- + IPT_ALIGN(sizeof(struct ipt_udp)); -+ size = XT_ALIGN(sizeof(struct ipt_entry_match)) -+ + XT_ALIGN(sizeof(struct ipt_udp)); - match = calloc(1, size); - match->u.match_size = size; - strncpy(match->u.user.name, "udp", IPT_FUNCTION_MAXNAMELEN); -@@ -483,8 +483,8 @@ - struct ip_nat_range * range; - size_t size; - -- size = IPT_ALIGN(sizeof(struct ipt_entry_target)) -- + IPT_ALIGN(sizeof(struct ip_nat_multi_range)); -+ size = XT_ALIGN(sizeof(struct ipt_entry_target)) -+ + XT_ALIGN(sizeof(struct ip_nat_multi_range)); - target = calloc(1, size); - target->u.target_size = size; - strncpy(target->u.user.name, "DNAT", IPT_FUNCTION_MAXNAMELEN); -@@ -614,8 +614,8 @@ - { - struct ipt_entry_target * target = NULL; - size_t size; -- size = IPT_ALIGN(sizeof(struct ipt_entry_target)) -- + IPT_ALIGN(sizeof(int)); -+ size = XT_ALIGN(sizeof(struct ipt_entry_target)) -+ + XT_ALIGN(sizeof(int)); - target = calloc(1, size); - target->u.user.target_size = size; - strncpy(target->u.user.name, "ACCEPT", IPT_FUNCTION_MAXNAMELEN); diff --git a/src/patches/miniupnpd-iptcrdr.patch b/src/patches/miniupnpd-iptcrdr.patch deleted file mode 100644 index 677043bdc..000000000 --- a/src/patches/miniupnpd-iptcrdr.patch +++ /dev/null @@ -1,16 +0,0 @@ ---- netfilter/iptcrdr.c.old 2010-02-24 14:22:23.000000000 +0100 -+++ netfilter/iptcrdr.c 2010-02-24 14:48:00.000000000 +0100 -@@ -20,6 +20,13 @@ - - #if IPTABLES_143 - /* IPTABLES API version >= 1.4.3 */ -+ -+#define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); })) -+#define __must_be_array(a) \ -+ BUILD_BUG_ON_ZERO(__builtin_types_compatible_p(typeof(a), typeof(&a[0]))) -+#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr)) -+#define LIST_POISON2 ((void *) 0x00200200 ) -+ - #include - #define ip_nat_multi_range nf_nat_multi_range - #define ip_nat_range nf_nat_range diff --git a/src/patches/ncurses-5.5-fixes-1.patch b/src/patches/ncurses-5.5-fixes-1.patch deleted file mode 100644 index 73e084d1c..000000000 --- a/src/patches/ncurses-5.5-fixes-1.patch +++ /dev/null @@ -1,225 +0,0 @@ -Submitted by: Alexander E. Patrakov -Date: 2005-12-07 -Initial Package Version: 5.5 -Upstream Status: Backport -Origin: Cherry-picked from ftp://invisible-island.net/ncurses/5.5/*.gz -Description: Fixes the following bugs: - -* memory leak in keyname() -* mishandling of overlapped wide characters, http://bugs.debian.org/316663 -* problems with line-drawing characters on cygwin, http://bugs.debian.org/338234 -* mishandling of EINTR in tcgetattr/tcsetattr, http://bugs.debian.org/339518 -* mishandling of single-column multibyte characters, http://bugs.debian.org/341661 - ---- ncurses-5.5-20051015+/ncurses/base/MKkeyname.awk 2005-04-30 19:26:25.000000000 +0000 -+++ ncurses-5.5-20051022/ncurses/base/MKkeyname.awk 2005-10-22 19:01:23.000000000 +0000 -@@ -97,6 +97,7 @@ - print " break;" - print " }" - print " }" -+ print " free(bound);" - print " if (result != 0)" - print " break;" - print " }" ---- ncurses-5.5-20051022+/ncurses/base/lib_addch.c 2005-03-27 16:52:16.000000000 +0000 -+++ ncurses-5.5-20051029/ncurses/base/lib_addch.c 2005-10-30 00:51:36.000000000 +0000 -@@ -315,7 +315,7 @@ - * setup though. - */ - for (i = 0; i < len; ++i) { -- if (isWidecBase(win->_line[y].text[i])) { -+ if (isWidecBase(win->_line[y].text[x + i])) { - break; - } else if (isWidecExt(win->_line[y].text[x + i])) { - for (j = i; x + j <= win->_maxx; ++j) { -@@ -334,7 +334,9 @@ - for (i = 0; i < len; ++i) { - NCURSES_CH_T value = ch; - SetWidecExt(value, i); -- TR(TRACE_VIRTPUT, ("multicolumn %d:%d", i + 1, len)); -+ TR(TRACE_VIRTPUT, ("multicolumn %d:%d (%d,%d)", -+ i + 1, len, -+ win->_begy + y, win->_begx + x)); - line->text[x] = value; - CHANGED_CELL(line, x); - ++x; ---- ncurses-5.5-20051022+/ncurses/base/lib_bkgd.c 2005-04-16 18:03:48.000000000 +0000 -+++ ncurses-5.5-20051029/ncurses/base/lib_bkgd.c 2005-10-30 00:41:09.000000000 +0000 -@@ -131,11 +131,11 @@ - - for (y = 0; y <= win->_maxy; y++) { - for (x = 0; x <= win->_maxx; x++) { -- if (CharEq(win->_line[y].text[x], old_bkgrnd)) -+ if (CharEq(win->_line[y].text[x], old_bkgrnd)) { - win->_line[y].text[x] = win->_nc_bkgd; -- else { -+ } else { - NCURSES_CH_T wch = win->_line[y].text[x]; -- RemAttr(wch, (~A_ALTCHARSET)); -+ RemAttr(wch, (~(A_ALTCHARSET | A_CHARTEXT))); - win->_line[y].text[x] = _nc_render(win, wch); - } - } ---- ncurses-5.5-20051022+/ncurses/base/lib_erase.c 2001-12-19 01:06:13.000000000 +0000 -+++ ncurses-5.5-20051029/ncurses/base/lib_erase.c 2005-10-30 00:36:36.000000000 +0000 -@@ -58,6 +59,24 @@ - start = win->_line[y].text; - end = &start[win->_maxx]; - -+ /* -+ * If this is a derived window, we have to handle the case where -+ * a multicolumn character extends into the window that we are -+ * erasing. -+ */ -+ if_WIDEC({ -+ if (isWidecExt(start[0])) { -+ int x = (win->_parent != 0) ? (win->_begx) : 0; -+ while (x-- > 0) { -+ if (isWidecBase(start[-1])) { -+ --start; -+ break; -+ } -+ --start; -+ } -+ } -+ }); -+ - for (sp = start; sp <= end; sp++) - *sp = blank; - ---- ncurses-5.5-20051029+/misc/terminfo.src 2005-10-26 23:21:06.000000000 +0000 -+++ ncurses-5.5-20051112/misc/terminfo.src 2005-11-12 23:01:03.000000000 +0000 -@@ -4731,32 +4731,35 @@ - # civis [make cursor invisible] causes everything to stackdump? \E[?25l\E[?1c - # ech [erase characters param] broken \E[%p1%dX - # kcbt [back-tab key] not implemented in cygwin? \E[Z -+# -+# 2005/11/12 -TD -+# Remove cbt since it does not work in current cygwin -+# Add 'mir' and 'in' flags based on tack - cygwin|ansi emulation for Cygwin, -- am, hs, in, msgr, xon, -+ am, hs, mir, msgr, xon, - colors#8, it#8, pairs#64, - acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376, -- bel=^G, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J, cr=^M, -- cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, -- cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, -- cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, -- dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, fsl=^G, -- home=\E[H, hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, -- ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, invis=\E[8m, -- kb2=\E[G, kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, -- kcuu1=\E[A, kdch1=\E[3~, kend=\E[4~, kf1=\E[[A, -- kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, -- kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, -- kf18=\E[32~, kf19=\E[33~, kf2=\E[[B, kf20=\E[34~, -- kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, -- kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kich1=\E[2~, -- knp=\E[6~, kpp=\E[5~, kspd=^Z, nel=^M^J, op=\E[39;49m, -- rc=\E8, rev=\E[7m, ri=\EM, rmacs=\E[10m, -- rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmpch=\E[10m, -- rmso=\E[27m, rmul=\E[24m, rs1=\Ec\E]R, sc=\E7, -- setab=\E[4%p1%dm, setaf=\E[3%p1%dm, -+ bel=^G, bold=\E[1m, clear=\E[H\E[J, cr=^M, cub=\E[%p1%dD, -+ cub1=^H, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, -+ cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, -+ cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, -+ dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, fsl=^G, home=\E[H, -+ hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, ich1=\E[@, -+ il=\E[%p1%dL, il1=\E[L, ind=^J, invis=\E[8m, kb2=\E[G, -+ kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, -+ kdch1=\E[3~, kend=\E[4~, kf1=\E[[A, kf10=\E[21~, -+ kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, -+ kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, -+ kf19=\E[33~, kf2=\E[[B, kf20=\E[34~, kf3=\E[[C, kf4=\E[[D, -+ kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, -+ khome=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, kspd=^Z, -+ nel=^M^J, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, -+ rmacs=\E[10m, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, -+ rmpch=\E[10m, rmso=\E[27m, rmul=\E[24m, rs1=\Ec\E]R, -+ sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, - sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m, -- sgr0=\E[0;10m, smacs=\E11m, smcup=\E7\E[?47h, smir=\E[4h, -- smpch=\E[11m, smso=\E[7m, smul=\E[4m, tsl=\E];, -+ sgr0=\E[0;10m, smacs=\E[11m, smcup=\E7\E[?47h, -+ smir=\E[4h, smpch=\E[11m, smso=\E[7m, smul=\E[4m, tsl=\E];, - u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?6c, u9=\E[c, - vpa=\E[%i%p1%dd, - ---- ncurses-5.5-20051112+/ncurses/tinfo/lib_ttyflags.c 2003-05-17 23:50:37.000000000 +0000 -+++ ncurses-5.5-20051119/ncurses/tinfo/lib_ttyflags.c 2005-11-19 20:36:23.000000000 +0000 -@@ -59,28 +59,51 @@ - NCURSES_EXPORT(int) - _nc_get_tty_mode(TTY * buf) - { -- if (cur_term == 0 -- || GET_TTY(cur_term->Filedes, buf) != 0) { -- memset(buf, 0, sizeof(*buf)); -- return (ERR); -+ int result = OK; -+ -+ if (cur_term == 0) { -+ result = ERR; -+ } else { -+ for (;;) { -+ if (GET_TTY(cur_term->Filedes, buf) != 0) { -+ if (errno == EINTR) -+ continue; -+ result = ERR; -+ } -+ break; -+ } - } -+ -+ if (result == ERR) -+ memset(buf, 0, sizeof(*buf)); -+ - TR(TRACE_BITS, ("_nc_get_tty_mode(%d): %s", - cur_term->Filedes, _nc_trace_ttymode(buf))); -- return (OK); -+ return (result); - } - - NCURSES_EXPORT(int) - _nc_set_tty_mode(TTY * buf) - { -- if (cur_term == 0 -- || SET_TTY(cur_term->Filedes, buf) != 0) { -- if ((errno == ENOTTY) && (SP != 0)) -- SP->_notty = TRUE; -- return (ERR); -+ int result = OK; -+ -+ if (cur_term == 0) { -+ result = ERR; -+ } else { -+ for (;;) { -+ if (SET_TTY(cur_term->Filedes, buf) != 0) { -+ if (errno == EINTR) -+ continue; -+ if ((errno == ENOTTY) && (SP != 0)) -+ SP->_notty = TRUE; -+ result = ERR; -+ } -+ break; -+ } - } - TR(TRACE_BITS, ("_nc_set_tty_mode(%d): %s", - cur_term->Filedes, _nc_trace_ttymode(buf))); -- return (OK); -+ return (result); - } - - NCURSES_EXPORT(int) ---- ncurses-5.5-20051126+/ncurses/widechar/lib_ins_wch.c 2005-09-17 19:25:13.000000000 +0000 -+++ ncurses-5.5-20051203/ncurses/widechar/lib_ins_wch.c 2005-12-03 20:24:19.000000000 +0000 -@@ -117,7 +117,7 @@ - for (cp = wstr; *cp && ((cp - wstr) < n); cp++) { - int len = wcwidth(*cp); - -- if (len != 1) { -+ if (len != 1 || !is8bits(*cp)) { - cchar_t tmp_cchar; - wchar_t tmp_wchar = *cp; - memset(&tmp_cchar, 0, sizeof(tmp_cchar)); diff --git a/src/patches/netpbm-10.26.46-getline.patch b/src/patches/netpbm-10.26.46-getline.patch new file mode 100644 index 000000000..c5a961b30 --- /dev/null +++ b/src/patches/netpbm-10.26.46-getline.patch @@ -0,0 +1,202 @@ +The getline function used in a couple of places in netpbm-free is also +defined by POSIX:2008, and so netpbm-free fails to build with newer +versions of (e)glibc. Here's a patch to rename it. + + * Rename getline functions to get_line to avoid conflict with POSIX:2008. + +--- netpbm-free-10.0.orig/ppm/xvminitoppm.c ++++ netpbm-free-10.0/ppm/xvminitoppm.c +@@ -14,7 +14,7 @@ + #include "ppm.h" + #define BUFSIZE 256 + +-static void getline ARGS((FILE *fp, char *buf)); ++static void get_line ARGS((FILE *fp, char *buf)); + + int + main(argc, argv) +@@ -48,18 +48,18 @@ + i++; + } + +- getline(ifp, buf); ++ get_line(ifp, buf); + if( strncmp(buf, "P7 332", 6) != 0 ) + pm_error("bad magic number - not a XV thumbnail picture"); + + while(1) { +- getline(ifp, buf); ++ get_line(ifp, buf); + if( strncmp(buf, "#END_OF_COMMENTS", 16)==0 ) + break; + if( strncmp(buf, "#BUILTIN", 8)==0 ) + pm_error("cannot convert builtin XV thumbnail pictures"); + } +- getline(ifp, buf); ++ get_line(ifp, buf); + if( sscanf(buf, "%d %d %d", &cols, &rows, &maxval) != 3 ) + pm_error("error parsing dimension info"); + if( maxval != 255 ) +@@ -85,7 +85,7 @@ + + + static void +-getline(fp, buf) ++get_line(fp, buf) + FILE *fp; + char *buf; + { +--- netpbm-free-10.0.orig/ppm/xpmtoppm.c ++++ netpbm-free-10.0/ppm/xpmtoppm.c +@@ -114,7 +114,7 @@ + + + static void +-getline(char * const line, int const size, FILE * const stream) { ++get_line(char * const line, int const size, FILE * const stream) { + /*---------------------------------------------------------------------------- + Read the next line from the input file 'stream', through the one-line + buffer lastInputLine[]. +@@ -130,7 +130,7 @@ + Exit program if the line doesn't fit in the buffer. + -----------------------------------------------------------------------------*/ + if (size > MAX_LINE+1) +- pm_error("INTERNAL ERROR: getline() received 'size' parameter " ++ pm_error("INTERNAL ERROR: get_line() received 'size' parameter " + "which is out of bounds"); + + if (backup) { +@@ -346,7 +346,7 @@ + int * const transparentP) { + /*---------------------------------------------------------------------------- + Read the header of the XPM file on stream 'stream'. Assume the +- getline() stream is presently positioned to the beginning of the ++ get_line() stream is presently positioned to the beginning of the + file and it is a Version 3 XPM file. Leave the stream positioned + after the header. + +@@ -377,25 +377,25 @@ + *widthP = *heightP = *ncolorsP = *chars_per_pixelP = -1; + + /* Read the XPM signature comment */ +- getline(line, sizeof(line), stream); ++ get_line(line, sizeof(line), stream); + if (strncmp(line, xpm3_signature, strlen(xpm3_signature)) != 0) + pm_error("Apparent XPM 3 file does not start with '/* XPM */'. " + "First line is '%s'", xpm3_signature); + + /* Read the assignment line */ +- getline(line, sizeof(line), stream); ++ get_line(line, sizeof(line), stream); + if (strncmp(line, "static char", 11) != 0) + pm_error("Cannot find data structure declaration. Expected a " + "line starting with 'static char', but found the line " + "'%s'.", line); + + /* Read the hints line */ +- getline(line, sizeof(line), stream); ++ get_line(line, sizeof(line), stream); + /* skip the comment line if any */ + if (!strncmp(line, "/*", 2)) { + while (!strstr(line, "*/")) +- getline(line, sizeof(line), stream); +- getline(line, sizeof(line), stream); ++ get_line(line, sizeof(line), stream); ++ get_line(line, sizeof(line), stream); + } + if (sscanf(line, "\"%d %d %d %d\",", widthP, heightP, + ncolorsP, chars_per_pixelP) != 4) +@@ -427,10 +427,10 @@ + *transparentP = -1; /* initial value */ + + for (seqNum = 0; seqNum < *ncolorsP; seqNum++) { +- getline(line, sizeof(line), stream); ++ get_line(line, sizeof(line), stream); + /* skip the comment line if any */ + if (!strncmp(line, "/*", 2)) +- getline(line, sizeof(line), stream); ++ get_line(line, sizeof(line), stream); + + interpretXpm3ColorTableLine(line, seqNum, *chars_per_pixelP, + *colorsP, *ptabP, transparentP); +@@ -445,7 +445,7 @@ + pixel ** const colorsP, int ** const ptabP) { + /*---------------------------------------------------------------------------- + Read the header of the XPM file on stream 'stream'. Assume the +- getline() stream is presently positioned to the beginning of the ++ get_line() stream is presently positioned to the beginning of the + file and it is a Version 1 XPM file. Leave the stream positioned + after the header. + +@@ -464,7 +464,7 @@ + /* Read the initial defines. */ + processedStaticChar = FALSE; + while (!processedStaticChar) { +- getline(line, sizeof(line), stream); ++ get_line(line, sizeof(line), stream); + + if (sscanf(line, "#define %s %d", str1, &v) == 2) { + char *t1; +@@ -512,7 +512,7 @@ + /* If there's a monochrome color table, skip it. */ + if (!strncmp(t1, "mono", 4)) { + for (;;) { +- getline(line, sizeof(line), stream); ++ get_line(line, sizeof(line), stream); + if (!strncmp(line, "static char", 11)) + break; + } +@@ -533,7 +533,7 @@ + + /* Read color table. */ + for (i = 0; i < *ncolorsP; ++i) { +- getline(line, sizeof(line), stream); ++ get_line(line, sizeof(line), stream); + + if ((t1 = strchr(line, '"')) == NULL) + pm_error("D error scanning color table"); +@@ -569,7 +569,7 @@ + "static char ..."). + */ + for (;;) { +- getline(line, sizeof(line), stream); ++ get_line(line, sizeof(line), stream); + if (strncmp(line, "static char", 11) == 0) + break; + } +@@ -660,7 +660,7 @@ + backup = FALSE; + + /* Read the header line */ +- getline(line, sizeof(line), stream); ++ get_line(line, sizeof(line), stream); + backup = TRUE; /* back up so next read reads this line again */ + + rc = sscanf(line, "/* %s */", str1); +@@ -681,7 +681,7 @@ + pm_error("Could not get %d bytes of memory for image", totalpixels); + cursor = *dataP; + maxcursor = *dataP + totalpixels - 1; +- getline(line, sizeof(line), stream); ++ get_line(line, sizeof(line), stream); + /* read next line (first line may not always start with comment) */ + while (cursor <= maxcursor) { + if (strncmp(line, "/*", 2) == 0) { +@@ -691,7 +691,7 @@ + ncolors, ptab, &cursor, maxcursor); + } + if (cursor <= maxcursor) +- getline(line, sizeof(line), stream); ++ get_line(line, sizeof(line), stream); + } + if (ptab) free(ptab); + } + +Thanks, + +-- +Colin Watson [cjwatson@ubuntu.com] + + + + diff --git a/src/patches/openldap-gcc44-fixes.patch b/src/patches/openldap-gcc44-fixes.patch new file mode 100644 index 000000000..53b8ea047 --- /dev/null +++ b/src/patches/openldap-gcc44-fixes.patch @@ -0,0 +1,31 @@ +--- include/ldap_pvt_thread.h~ 2008-11-12 07:37:16.000000000 +0000 ++++ include/ldap_pvt_thread.h 2008-11-12 08:01:45.000000000 +0000 +@@ -59,12 +59,12 @@ + + #ifndef LDAP_PVT_THREAD_H_DONE + #define LDAP_PVT_THREAD_SET_STACK_SIZE +-#ifndef LDAP_PVT_THREAD_STACK_SIZE +- /* LARGE stack. Will be twice as large on 64 bit machine. */ +-#define LDAP_PVT_THREAD_STACK_SIZE ( 1 * 1024 * 1024 * sizeof(void *) ) + /* May be explicitly defined to zero to disable it */ +-#elif LDAP_PVT_THREAD_STACK_SIZE == 0 ++#if LDAP_PVT_THREAD_STACK_SIZE == 0 + #undef LDAP_PVT_THREAD_SET_STACK_SIZE ++#elif !defined(LDAP_PVT_THREAD_STACK_SIZE) ++ /* LARGE stack. Will be twice as large on 64 bit machine. */ ++#define LDAP_PVT_THREAD_STACK_SIZE ( 1 * 1024 * 1024 * sizeof(void *) ) + #endif + #endif /* !LDAP_PVT_THREAD_H_DONE */ + +--- libraries/libldap/os-ip.c~ 2008-11-12 07:33:10.000000000 +0000 ++++ libraries/libldap/os-ip.c 2008-11-12 07:33:31.000000000 +0000 +@@ -690,7 +690,7 @@ + char *herr; + #ifdef NI_MAXHOST + char hbuf[NI_MAXHOST]; +-#elif defined( MAXHOSTNAMELEN ++#elif defined( MAXHOSTNAMELEN ) + char hbuf[MAXHOSTNAMELEN]; + #else + char hbuf[256]; + diff --git a/src/patches/pptp-1.7.2-compat.patch b/src/patches/pptp-1.7.2-compat.patch new file mode 100644 index 000000000..0ea155166 --- /dev/null +++ b/src/patches/pptp-1.7.2-compat.patch @@ -0,0 +1,71 @@ +Index: pptp_compat.c +=================================================================== +RCS file: /cvsroot/pptpclient/pptp-linux/pptp_compat.c,v +retrieving revision 1.1 +retrieving revision 1.3 +diff -u -r1.1 -r1.3 +--- pptp_compat.c 19 Feb 2008 21:43:28 -0000 1.1 ++++ pptp_compat.c 25 Jul 2008 00:13:56 -0000 1.3 +@@ -7,14 +7,15 @@ + #include + #include + #include +-#include + #include ++#if defined (__SVR4) && defined (__sun) /* Solaris */ ++#include ++#endif + #include + #include "pptp_compat.h" + #include + #include "util.h" + +- + #if defined (__SVR4) && defined (__sun) /* Solaris */ + /* + * daemon implementation from uClibc +Index: pptp.c +=================================================================== +RCS file: /cvsroot/pptpclient/pptp-linux/pptp.c,v +retrieving revision 1.49 +retrieving revision 1.51 +diff -u -r1.49 -r1.51 +--- pptp.c 14 May 2008 06:32:52 -0000 1.49 ++++ pptp.c 24 Jul 2008 05:53:05 -0000 1.51 +@@ -61,9 +61,8 @@ + #include "version.h" + #if defined(__linux__) + #include +-#else +-#include "inststr.h" + #endif ++#include "inststr.h" + #include "util.h" + #include "pptp_quirks.h" + #include "pqueue.h" +@@ -129,7 +128,7 @@ + } + + #if defined (__SVR4) && defined (__sun) +-struct in_addr localbind = { INADDR_ANY }; ++struct in_addr localbind = { .s_addr = INADDR_ANY }; + #else + struct in_addr localbind = { INADDR_NONE }; + #endif +@@ -183,6 +182,7 @@ + struct in_addr inetaddr; + volatile int callmgr_sock = -1; + char ttydev[PATH_MAX]; ++ char *tty_name; + int pty_fd, tty_fd, gre_fd, rc; + volatile pid_t parent_pid, child_pid; + u_int16_t call_id, peer_call_id; +@@ -391,7 +391,7 @@ + file2fd("/dev/null", "wb", STDERR_FILENO); + } + +- char *tty_name = ttyname(tty_fd); ++ tty_name = ttyname(tty_fd); + snprintf(buf, sizeof(buf), "pptp: GRE-to-PPP gateway on %s", + tty_name ? tty_name : "(null)"); + #ifdef PR_SET_NAME diff --git a/src/patches/readline-5.1-fixes-3.patch b/src/patches/readline-5.1-fixes-3.patch deleted file mode 100644 index e0fb8756a..000000000 --- a/src/patches/readline-5.1-fixes-3.patch +++ /dev/null @@ -1,128 +0,0 @@ -Submitted By: Matthew Burgess (matthew at linuxfromscratch dot org) -Date: 2006-03-17 -Initial Package Version: 5.1 -Origin: http://ftp.gnu.org/gnu/readline/readline-5.1-patches/ -Upstream Status: From Upstream -Description: Contains Patch 001-004 from Upstream - -diff -Naur readline-5.1.orig/display.c readline-5.1/display.c ---- readline-5.1.orig/display.c 2005-11-30 19:05:02.000000000 +0000 -+++ readline-5.1/display.c 2006-03-17 16:03:09.000000000 +0000 -@@ -1983,11 +1983,15 @@ - int pchar; - { - int len; -- char *pmt; -+ char *pmt, *p; - - rl_save_prompt (); - -- if (saved_local_prompt == 0) -+ /* We've saved the prompt, and can do anything with the various prompt -+ strings we need before they're restored. We want the unexpanded -+ portion of the prompt string after any final newline. */ -+ p = rl_prompt ? strrchr (rl_prompt, '\n') : 0; -+ if (p == 0) - { - len = (rl_prompt && *rl_prompt) ? strlen (rl_prompt) : 0; - pmt = (char *)xmalloc (len + 2); -@@ -1998,19 +2002,17 @@ - } - else - { -- len = *saved_local_prompt ? strlen (saved_local_prompt) : 0; -+ p++; -+ len = strlen (p); - pmt = (char *)xmalloc (len + 2); - if (len) -- strcpy (pmt, saved_local_prompt); -+ strcpy (pmt, p); - pmt[len] = pchar; - pmt[len+1] = '\0'; -- local_prompt = savestring (pmt); -- prompt_last_invisible = saved_last_invisible; -- prompt_visible_length = saved_visible_length + 1; -- } -+ } - -+ /* will be overwritten by expand_prompt, called from rl_message */ - prompt_physical_chars = saved_physical_chars + 1; -- - return pmt; - } - -diff -Naur readline-5.1.orig/readline.c readline-5.1/readline.c ---- readline-5.1.orig/readline.c 2005-07-05 02:29:35.000000000 +0000 -+++ readline-5.1/readline.c 2006-03-17 16:03:05.000000000 +0000 -@@ -282,6 +282,7 @@ - { - FREE (rl_prompt); - rl_prompt = prompt ? savestring (prompt) : (char *)NULL; -+ rl_display_prompt = rl_prompt ? rl_prompt : ""; - - rl_visible_prompt_length = rl_expand_prompt (rl_prompt); - return 0; -@@ -714,7 +715,7 @@ - - rl_dispatching = 1; - RL_SETSTATE(RL_STATE_DISPATCHING); -- r = (*map[key].function)(rl_numeric_arg * rl_arg_sign, key); -+ (*map[key].function)(rl_numeric_arg * rl_arg_sign, key); - RL_UNSETSTATE(RL_STATE_DISPATCHING); - rl_dispatching = 0; - -diff -Naur readline-5.1.orig/terminal.c readline-5.1/terminal.c ---- readline-5.1.orig/terminal.c 2005-11-13 01:46:54.000000000 +0000 -+++ readline-5.1/terminal.c 2006-03-17 16:03:02.000000000 +0000 -@@ -122,7 +122,7 @@ - static char *_rl_visible_bell; - - /* Non-zero means the terminal can auto-wrap lines. */ --int _rl_term_autowrap; -+int _rl_term_autowrap = -1; - - /* Non-zero means that this terminal has a meta key. */ - static int term_has_meta; -@@ -274,6 +274,9 @@ - _rl_set_screen_size (rows, cols) - int rows, cols; - { -+ if (_rl_term_autowrap == -1) -+ _rl_init_terminal_io (rl_terminal_name); -+ - if (rows > 0) - _rl_screenheight = rows; - if (cols > 0) -diff -Naur readline-5.1.orig/text.c readline-5.1/text.c ---- readline-5.1.orig/text.c 2005-09-24 23:06:07.000000000 +0000 -+++ readline-5.1/text.c 2006-03-17 16:02:58.000000000 +0000 -@@ -1071,8 +1071,6 @@ - rl_delete (count, key) - int count, key; - { -- int r; -- - if (count < 0) - return (_rl_rubout_char (-count, key)); - -@@ -1090,17 +1088,17 @@ - else - rl_forward_byte (count, key); - -- r = rl_kill_text (orig_point, rl_point); -+ rl_kill_text (orig_point, rl_point); - rl_point = orig_point; -- return r; - } - else - { - int new_point; - - new_point = MB_NEXTCHAR (rl_line_buffer, rl_point, 1, MB_FIND_NONZERO); -- return (rl_delete_text (rl_point, new_point)); -+ rl_delete_text (rl_point, new_point); - } -+ return 0; - } - - /* Delete the character under the cursor, unless the insertion diff --git a/src/patches/readline/readline52-001 b/src/patches/readline/readline52-001 new file mode 100644 index 000000000..0bec9a278 --- /dev/null +++ b/src/patches/readline/readline52-001 @@ -0,0 +1,30 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 5.2 +Patch-ID: readline52-001 + +Bug-Reported-by: ebb9@byu.net +Bug-Reference-ID: <45540862.9030900@byu.net> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-11/msg00017.html + http://lists.gnu.org/archive/html/bug-bash/2006-11/msg00016.html + +Bug-Description: + +In some cases, code that is intended to be used in the presence of multibyte +characters is called when no such characters are present, leading to incorrect +display position calculations and incorrect redisplay. + +Patch: + +*** ../readline-5.2/display.c Thu Sep 14 14:20:12 2006 +--- display.c Mon Nov 13 17:55:57 2006 +*************** +*** 2381,2384 **** +--- 2409,2414 ---- + if (end <= start) + return 0; ++ if (MB_CUR_MAX == 1 || rl_byte_oriented) ++ return (end - start); + + memset (&ps, 0, sizeof (mbstate_t)); diff --git a/src/patches/readline/readline52-002 b/src/patches/readline/readline52-002 new file mode 100644 index 000000000..b0d8c9223 --- /dev/null +++ b/src/patches/readline/readline52-002 @@ -0,0 +1,49 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 5.2 +Patch-ID: readline52-002 + +Bug-Reported-by: Magnus Svensson +Bug-Reference-ID: <45BDC44D.80609@mysql.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2007-01/msg00002.html + +Bug-Description: + +Readline neglects to reallocate the array it uses to keep track of wrapped +screen lines when increasing its size. This will eventually result in +segmentation faults when given sufficiently long input. + +Patch: + +*** ../readline-5.2-patched/display.c Thu Sep 14 14:20:12 2006 +--- display.c Fri Feb 2 20:23:17 2007 +*************** +*** 561,574 **** +--- 561,586 ---- + wrap_offset = prompt_invis_chars_first_line = 0; + } + ++ #if defined (HANDLE_MULTIBYTE) + #define CHECK_INV_LBREAKS() \ + do { \ + if (newlines >= (inv_lbsize - 2)) \ + { \ + inv_lbsize *= 2; \ + inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \ ++ _rl_wrapped_line = (int *)xrealloc (_rl_wrapped_line, inv_lbsize * sizeof (int)); \ + } \ + } while (0) ++ #else ++ #define CHECK_INV_LBREAKS() \ ++ do { \ ++ if (newlines >= (inv_lbsize - 2)) \ ++ { \ ++ inv_lbsize *= 2; \ ++ inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \ ++ } \ ++ } while (0) ++ #endif /* HANDLE_MULTIBYTE */ + + #if defined (HANDLE_MULTIBYTE) + #define CHECK_LPOS() \ diff --git a/src/patches/readline/readline52-003 b/src/patches/readline/readline52-003 new file mode 100644 index 000000000..06916b3b2 --- /dev/null +++ b/src/patches/readline/readline52-003 @@ -0,0 +1,37 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 5.2 +Patch-ID: readline52-003 + +Bug-Reported-by: Peter Volkov +Bug-Reference-ID: <1171795523.8021.18.camel@localhost> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-02/msg00054.html + +Bug-Description: + +When moving the cursor, bash sometimes misplaces the cursor when the prompt +contains two or more multibyte characters. The particular circumstance that +uncovered the problem was having the (multibyte) current directory name in +the prompt string. + +Patch: + +*** ../readline-5.2.2/display.c Fri Jan 19 13:34:50 2007 +--- display.c Sat Mar 10 17:25:44 2007 +*************** +*** 1745,1749 **** + { + dpos = _rl_col_width (data, 0, new); +! if (dpos > prompt_last_invisible) /* XXX - don't use woff here */ + { + dpos -= woff; +--- 1745,1752 ---- + { + dpos = _rl_col_width (data, 0, new); +! /* Use NEW when comparing against the last invisible character in the +! prompt string, since they're both buffer indices and DPOS is a +! desired display position. */ +! if (new > prompt_last_invisible) /* XXX - don't use woff here */ + { + dpos -= woff; diff --git a/src/patches/readline/readline52-004 b/src/patches/readline/readline52-004 new file mode 100644 index 000000000..b165ad9f4 --- /dev/null +++ b/src/patches/readline/readline52-004 @@ -0,0 +1,70 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 5.2 +Patch-ID: readline52-004 + +Bug-Reported-by: Peter Volkov +Bug-Reference-ID: <1173636022.7039.36.camel@localhost> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-03/msg00039.html + +Bug-Description: + +When restoring the original prompt after finishing an incremental search, +bash sometimes places the cursor incorrectly if the primary prompt contains +invisible characters. + +Patch: + +*** ../readline-5.2.3/display.c Fri Apr 20 13:30:16 2007 +--- display.c Fri Apr 20 15:17:01 2007 +*************** +*** 1599,1604 **** + if (temp > 0) + { + _rl_output_some_chars (nfd, temp); +! _rl_last_c_pos += _rl_col_width (nfd, 0, temp);; + } + } +--- 1599,1618 ---- + if (temp > 0) + { ++ /* If nfd begins at the prompt, or before the invisible ++ characters in the prompt, we need to adjust _rl_last_c_pos ++ in a multibyte locale to account for the wrap offset and ++ set cpos_adjusted accordingly. */ + _rl_output_some_chars (nfd, temp); +! if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) +! { +! _rl_last_c_pos += _rl_col_width (nfd, 0, temp); +! if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible)) +! { +! _rl_last_c_pos -= wrap_offset; +! cpos_adjusted = 1; +! } +! } +! else +! _rl_last_c_pos += temp; + } + } +*************** +*** 1608,1613 **** +--- 1622,1639 ---- + if (temp > 0) + { ++ /* If nfd begins at the prompt, or before the invisible ++ characters in the prompt, we need to adjust _rl_last_c_pos ++ in a multibyte locale to account for the wrap offset and ++ set cpos_adjusted accordingly. */ + _rl_output_some_chars (nfd, temp); + _rl_last_c_pos += col_temp; /* XXX */ ++ if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) ++ { ++ if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible)) ++ { ++ _rl_last_c_pos -= wrap_offset; ++ cpos_adjusted = 1; ++ } ++ } + } + lendiff = (oe - old) - (ne - new); diff --git a/src/patches/readline/readline52-005 b/src/patches/readline/readline52-005 new file mode 100644 index 000000000..d192ac152 --- /dev/null +++ b/src/patches/readline/readline52-005 @@ -0,0 +1,328 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 5.2 +Patch-ID: readline52-005 + +Bug-Reported-by: Thomas Loeber +Bug-Reference-ID: <200703082223.08919.ifp@loeber1.de> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-03/msg00036.html + +Bug-Description: + +When rl_read_key returns -1, indicating that readline's controlling terminal +has been invalidated for some reason (e.g., receiving a SIGHUP), the error +status was not reported correctly to the caller. This could cause input +loops. + +Patch: + +*** ../readline-5.2/complete.c Fri Jul 28 11:35:49 2006 +--- complete.c Tue Mar 13 08:50:16 2007 +*************** +*** 429,433 **** + if (c == 'n' || c == 'N' || c == RUBOUT) + return (0); +! if (c == ABORT_CHAR) + _rl_abort_internal (); + if (for_pager && (c == NEWLINE || c == RETURN)) +--- 440,444 ---- + if (c == 'n' || c == 'N' || c == RUBOUT) + return (0); +! if (c == ABORT_CHAR || c < 0) + _rl_abort_internal (); + if (for_pager && (c == NEWLINE || c == RETURN)) +*** ../readline-5.2/input.c Wed Aug 16 15:15:16 2006 +--- input.c Wed May 2 16:07:59 2007 +*************** +*** 514,518 **** + int size; + { +! int mb_len = 0; + size_t mbchar_bytes_length; + wchar_t wc; +--- 522,526 ---- + int size; + { +! int mb_len, c; + size_t mbchar_bytes_length; + wchar_t wc; +*************** +*** 521,531 **** + memset(&ps, 0, sizeof (mbstate_t)); + memset(&ps_back, 0, sizeof (mbstate_t)); +! + while (mb_len < size) + { + RL_SETSTATE(RL_STATE_MOREINPUT); +! mbchar[mb_len++] = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + + mbchar_bytes_length = mbrtowc (&wc, mbchar, mb_len, &ps); + if (mbchar_bytes_length == (size_t)(-1)) +--- 529,545 ---- + memset(&ps, 0, sizeof (mbstate_t)); + memset(&ps_back, 0, sizeof (mbstate_t)); +! +! mb_len = 0; + while (mb_len < size) + { + RL_SETSTATE(RL_STATE_MOREINPUT); +! c = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + ++ if (c < 0) ++ break; ++ ++ mbchar[mb_len++] = c; ++ + mbchar_bytes_length = mbrtowc (&wc, mbchar, mb_len, &ps); + if (mbchar_bytes_length == (size_t)(-1)) +*************** +*** 565,569 **** + c = first; + memset (mb, 0, mlen); +! for (i = 0; i < mlen; i++) + { + mb[i] = (char)c; +--- 579,583 ---- + c = first; + memset (mb, 0, mlen); +! for (i = 0; c >= 0 && i < mlen; i++) + { + mb[i] = (char)c; +*** ../readline-5.2/isearch.c Mon Dec 26 17:18:53 2005 +--- isearch.c Fri Mar 9 14:30:59 2007 +*************** +*** 328,333 **** + + f = (rl_command_func_t *)NULL; +! +! /* Translate the keys we do something with to opcodes. */ + if (c >= 0 && _rl_keymap[c].type == ISFUNC) + { +--- 328,340 ---- + + f = (rl_command_func_t *)NULL; +! +! if (c < 0) +! { +! cxt->sflags |= SF_FAILED; +! cxt->history_pos = cxt->last_found_line; +! return -1; +! } +! +! /* Translate the keys we do something with to opcodes. */ + if (c >= 0 && _rl_keymap[c].type == ISFUNC) + { +*** ../readline-5.2/misc.c Mon Dec 26 17:20:46 2005 +--- misc.c Fri Mar 9 14:44:11 2007 +*************** +*** 147,150 **** +--- 147,152 ---- + rl_clear_message (); + RL_UNSETSTATE(RL_STATE_NUMERICARG); ++ if (key < 0) ++ return -1; + return (_rl_dispatch (key, _rl_keymap)); + } +*** ../readline-5.2/readline.c Wed Aug 16 15:00:36 2006 +--- readline.c Fri Mar 9 14:47:24 2007 +*************** +*** 646,649 **** +--- 669,677 ---- + { + nkey = _rl_subseq_getchar (cxt->okey); ++ if (nkey < 0) ++ { ++ _rl_abort_internal (); ++ return -1; ++ } + r = _rl_dispatch_subseq (nkey, cxt->dmap, cxt->subseq_arg); + cxt->flags |= KSEQ_DISPATCHED; +*** ../readline-5.2/text.c Fri Jul 28 11:55:27 2006 +--- text.c Sun Mar 25 13:41:38 2007 +*************** +*** 858,861 **** +--- 864,870 ---- + RL_UNSETSTATE(RL_STATE_MOREINPUT); + ++ if (c < 0) ++ return -1; ++ + #if defined (HANDLE_SIGNALS) + if (RL_ISSTATE (RL_STATE_CALLBACK) == 0) +*************** +*** 1521,1524 **** +--- 1530,1536 ---- + mb_len = _rl_read_mbchar (mbchar, MB_LEN_MAX); + ++ if (mb_len <= 0) ++ return -1; ++ + if (count < 0) + return (_rl_char_search_internal (-count, bdir, mbchar, mb_len)); +*************** +*** 1537,1540 **** +--- 1549,1555 ---- + RL_UNSETSTATE(RL_STATE_MOREINPUT); + ++ if (c < 0) ++ return -1; ++ + if (count < 0) + return (_rl_char_search_internal (-count, bdir, c)); +*** ../readline-5.2/vi_mode.c Sat Jul 29 16:42:28 2006 +--- vi_mode.c Fri Mar 9 15:02:11 2007 +*************** +*** 887,890 **** +--- 887,897 ---- + c = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); ++ ++ if (c < 0) ++ { ++ *nextkey = 0; ++ return -1; ++ } ++ + *nextkey = c; + +*************** +*** 903,906 **** +--- 910,918 ---- + c = rl_read_key (); /* real command */ + RL_UNSETSTATE(RL_STATE_MOREINPUT); ++ if (c < 0) ++ { ++ *nextkey = 0; ++ return -1; ++ } + *nextkey = c; + } +*************** +*** 1225,1236 **** + _rl_callback_generic_arg *data; + { + #if defined (HANDLE_MULTIBYTE) +! _rl_vi_last_search_mblen = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX); + #else + RL_SETSTATE(RL_STATE_MOREINPUT); +! _rl_vi_last_search_char = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + #endif + + _rl_callback_func = 0; + _rl_want_redisplay = 1; +--- 1243,1262 ---- + _rl_callback_generic_arg *data; + { ++ int c; + #if defined (HANDLE_MULTIBYTE) +! c = _rl_vi_last_search_mblen = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX); + #else + RL_SETSTATE(RL_STATE_MOREINPUT); +! c = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + #endif + ++ if (c <= 0) ++ return -1; ++ ++ #if !defined (HANDLE_MULTIBYTE) ++ _rl_vi_last_search_char = c; ++ #endif ++ + _rl_callback_func = 0; + _rl_want_redisplay = 1; +*************** +*** 1248,1251 **** +--- 1274,1278 ---- + int count, key; + { ++ int c; + #if defined (HANDLE_MULTIBYTE) + static char *target; +*************** +*** 1294,1302 **** + { + #if defined (HANDLE_MULTIBYTE) +! _rl_vi_last_search_mblen = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX); + #else + RL_SETSTATE(RL_STATE_MOREINPUT); +! _rl_vi_last_search_char = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + #endif + } +--- 1321,1335 ---- + { + #if defined (HANDLE_MULTIBYTE) +! c = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX); +! if (c <= 0) +! return -1; +! _rl_vi_last_search_mblen = c; + #else + RL_SETSTATE(RL_STATE_MOREINPUT); +! c = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); ++ if (c < 0) ++ return -1; ++ _rl_vi_last_search_char = c; + #endif + } +*************** +*** 1468,1471 **** +--- 1501,1507 ---- + RL_UNSETSTATE(RL_STATE_MOREINPUT); + ++ if (c < 0) ++ return -1; ++ + #if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) +*************** +*** 1486,1489 **** +--- 1522,1528 ---- + _rl_vi_last_replacement = c = _rl_vi_callback_getchar (mb, MB_LEN_MAX); + ++ if (c < 0) ++ return -1; ++ + _rl_callback_func = 0; + _rl_want_redisplay = 1; +*************** +*** 1517,1520 **** +--- 1556,1562 ---- + _rl_vi_last_replacement = c = _rl_vi_callback_getchar (mb, MB_LEN_MAX); + ++ if (c < 0) ++ return -1; ++ + return (_rl_vi_change_char (count, c, mb)); + } +*************** +*** 1651,1655 **** + RL_UNSETSTATE(RL_STATE_MOREINPUT); + +! if (ch < 'a' || ch > 'z') + { + rl_ding (); +--- 1693,1697 ---- + RL_UNSETSTATE(RL_STATE_MOREINPUT); + +! if (ch < 0 || ch < 'a' || ch > 'z') /* make test against 0 explicit */ + { + rl_ding (); +*************** +*** 1703,1707 **** + return 0; + } +! else if (ch < 'a' || ch > 'z') + { + rl_ding (); +--- 1745,1749 ---- + return 0; + } +! else if (ch < 0 || ch < 'a' || ch > 'z') /* make test against 0 explicit */ + { + rl_ding (); diff --git a/src/patches/readline/readline52-006 b/src/patches/readline/readline52-006 new file mode 100644 index 000000000..d7391438d --- /dev/null +++ b/src/patches/readline/readline52-006 @@ -0,0 +1,62 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 5.2 +Patch-ID: readline52-006 + +Bug-Reported-by: Peter Volkov +Bug-Reference-ID: <1178376645.9063.25.camel@localhost> +Bug-Reference-URL: http://bugs.gentoo.org/177095 + +Bug-Description: + +The readline display code miscalculated the screen position when performing +a redisplay in which the new text occupies more screen space that the old, +but takes fewer bytes to do so (e.g., when replacing a shorter string +containing multibyte characters with a longer one containing only ASCII). + +Patch: + +*** ../readline-5.2/display.c Thu Apr 26 11:38:22 2007 +--- display.c Thu Jul 12 23:10:10 2007 +*************** +*** 1519,1527 **** + /* Non-zero if we're increasing the number of lines. */ + int gl = current_line >= _rl_vis_botlin && inv_botlin > _rl_vis_botlin; + /* Sometimes it is cheaper to print the characters rather than + use the terminal's capabilities. If we're growing the number + of lines, make sure we actually cause the new line to wrap + around on auto-wrapping terminals. */ +! if (_rl_terminal_can_insert && ((2 * col_temp) >= col_lendiff || _rl_term_IC) && (!_rl_term_autowrap || !gl)) + { + /* If lendiff > prompt_visible_length and _rl_last_c_pos == 0 and +--- 1568,1596 ---- + /* Non-zero if we're increasing the number of lines. */ + int gl = current_line >= _rl_vis_botlin && inv_botlin > _rl_vis_botlin; ++ /* If col_lendiff is > 0, implying that the new string takes up more ++ screen real estate than the old, but lendiff is < 0, meaning that it ++ takes fewer bytes, we need to just output the characters starting ++ from the first difference. These will overwrite what is on the ++ display, so there's no reason to do a smart update. This can really ++ only happen in a multibyte environment. */ ++ if (lendiff < 0) ++ { ++ _rl_output_some_chars (nfd, temp); ++ _rl_last_c_pos += _rl_col_width (nfd, 0, temp); ++ /* If nfd begins before any invisible characters in the prompt, ++ adjust _rl_last_c_pos to account for wrap_offset and set ++ cpos_adjusted to let the caller know. */ ++ if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible)) ++ { ++ _rl_last_c_pos -= wrap_offset; ++ cpos_adjusted = 1; ++ } ++ return; ++ } + /* Sometimes it is cheaper to print the characters rather than + use the terminal's capabilities. If we're growing the number + of lines, make sure we actually cause the new line to wrap + around on auto-wrapping terminals. */ +! else if (_rl_terminal_can_insert && ((2 * col_temp) >= col_lendiff || _rl_term_IC) && (!_rl_term_autowrap || !gl)) + { + /* If lendiff > prompt_visible_length and _rl_last_c_pos == 0 and diff --git a/src/patches/readline/readline52-007 b/src/patches/readline/readline52-007 new file mode 100644 index 000000000..f75f53fc6 --- /dev/null +++ b/src/patches/readline/readline52-007 @@ -0,0 +1,65 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 5.2 +Patch-ID: readline52-007 + +Bug-Reported-by: Tom Bjorkholm +Bug-Reference-ID: +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2007-04/msg00004.html + + +Bug-Description: + +An off-by-one error in readline's input buffering caused readline to drop +each 511th character of buffered input (e.g., when pasting a large amount +of data into a terminal window). + +Patch: + +*** ../readline-5.2/input.c Wed Aug 16 15:15:16 2006 +--- input.c Tue Jul 17 09:24:21 2007 +*************** +*** 134,139 **** + + *key = ibuffer[pop_index++]; +! + if (pop_index >= ibuffer_len) + pop_index = 0; + +--- 134,142 ---- + + *key = ibuffer[pop_index++]; +! #if 0 + if (pop_index >= ibuffer_len) ++ #else ++ if (pop_index > ibuffer_len) ++ #endif + pop_index = 0; + +*************** +*** 251,255 **** + { + k = (*rl_getc_function) (rl_instream); +! rl_stuff_char (k); + if (k == NEWLINE || k == RETURN) + break; +--- 254,259 ---- + { + k = (*rl_getc_function) (rl_instream); +! if (rl_stuff_char (k) == 0) +! break; /* some problem; no more room */ + if (k == NEWLINE || k == RETURN) + break; +*************** +*** 374,378 **** +--- 378,386 ---- + } + ibuffer[push_index++] = key; ++ #if 0 + if (push_index >= ibuffer_len) ++ #else ++ if (push_index > ibuffer_len) ++ #endif + push_index = 0; + diff --git a/src/patches/readline/readline52-008 b/src/patches/readline/readline52-008 new file mode 100644 index 000000000..1d7f3277f --- /dev/null +++ b/src/patches/readline/readline52-008 @@ -0,0 +1,70 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 5.2 +Patch-ID: readline52-008 + +Bug-Reported-by: dAniel hAhler +Bug-Reference-ID: <4702ED8A.5000503@thequod.de> +Bug-Reference-URL: https://bugs.launchpad.net/ubuntu/+source/bash/+bug/119938 + +Bug-Description: + +When updating the display after displaying, for instance, a list of possible +completions, readline will place the cursor at the wrong position if the +prompt contains invisible characters and a newline. + +Patch: + +*** ../readline-5.2-patched/display.c Mon Aug 6 14:26:29 2007 +--- display.c Wed Oct 10 22:43:58 2007 +*************** +*** 1049,1053 **** + else + tx = nleft; +! if (_rl_last_c_pos > tx) + { + _rl_backspace (_rl_last_c_pos - tx); /* XXX */ +--- 1049,1053 ---- + else + tx = nleft; +! if (tx >= 0 && _rl_last_c_pos > tx) + { + _rl_backspace (_rl_last_c_pos - tx); /* XXX */ +*************** +*** 1205,1209 **** + { + register char *ofd, *ols, *oe, *nfd, *nls, *ne; +! int temp, lendiff, wsatend, od, nd; + int current_invis_chars; + int col_lendiff, col_temp; +--- 1205,1209 ---- + { + register char *ofd, *ols, *oe, *nfd, *nls, *ne; +! int temp, lendiff, wsatend, od, nd, o_cpos; + int current_invis_chars; + int col_lendiff, col_temp; +*************** +*** 1466,1469 **** +--- 1466,1471 ---- + } + ++ o_cpos = _rl_last_c_pos; ++ + /* When this function returns, _rl_last_c_pos is correct, and an absolute + cursor postion in multibyte mode, but a buffer index when not in a +*************** +*** 1475,1479 **** + invisible characters in the prompt string. Let's see if setting this when + we make sure we're at the end of the drawn prompt string works. */ +! if (current_line == 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0 && _rl_last_c_pos == prompt_physical_chars) + cpos_adjusted = 1; + #endif +--- 1477,1483 ---- + invisible characters in the prompt string. Let's see if setting this when + we make sure we're at the end of the drawn prompt string works. */ +! if (current_line == 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0 && +! (_rl_last_c_pos > 0 || o_cpos > 0) && +! _rl_last_c_pos == prompt_physical_chars) + cpos_adjusted = 1; + #endif diff --git a/src/patches/readline/readline52-009 b/src/patches/readline/readline52-009 new file mode 100644 index 000000000..af9e38174 --- /dev/null +++ b/src/patches/readline/readline52-009 @@ -0,0 +1,45 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 5.2 +Patch-ID: readline52-009 + +Bug-Reported-by: dAniel hAhler +Bug-Reference-ID: +Bug-Reference-URL: + +Bug-Description: + +Under some circumstances, readline will incorrectly display a prompt string +containing invisible characters after the final newline. + +Patch: + +*** ../readline-5.2-patched/display.c 2007-08-25 13:47:08.000000000 -0400 +--- display.c 2007-11-10 17:51:29.000000000 -0500 +*************** +*** 392,396 **** + local_prompt = expand_prompt (p, &prompt_visible_length, + &prompt_last_invisible, +! (int *)NULL, + &prompt_physical_chars); + c = *t; *t = '\0'; +--- 420,424 ---- + local_prompt = expand_prompt (p, &prompt_visible_length, + &prompt_last_invisible, +! &prompt_invis_chars_first_line, + &prompt_physical_chars); + c = *t; *t = '\0'; +*************** +*** 399,403 **** + local_prompt_prefix = expand_prompt (prompt, &prompt_prefix_length, + (int *)NULL, +! &prompt_invis_chars_first_line, + (int *)NULL); + *t = c; +--- 427,431 ---- + local_prompt_prefix = expand_prompt (prompt, &prompt_prefix_length, + (int *)NULL, +! (int *)NULL, + (int *)NULL); + *t = c; diff --git a/src/patches/readline/readline52-010 b/src/patches/readline/readline52-010 new file mode 100644 index 000000000..ee5c026f8 --- /dev/null +++ b/src/patches/readline/readline52-010 @@ -0,0 +1,47 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 5.2 +Patch-ID: readline52-010 + +Bug-Reported-by: Miroslav Lichvar +Bug-Reference-ID: Fri, 02 Nov 2007 14:07:45 +0100 +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2007-11/msg00000.html + +Bug-Description: + +In certain cases when outputting characters at the end of the line, +e.g., when displaying the prompt string, readline positions the cursor +incorrectly if the prompt string contains invisible characters and the +text being drawn begins before the last invisible character in the line. + +Patch: + +*** ../readline-5.2-patched/display.c 2007-08-25 13:47:08.000000000 -0400 +--- display.c 2007-11-10 17:51:29.000000000 -0500 +*************** +*** 1566,1574 **** + else + { +- /* We have horizontal scrolling and we are not inserting at +- the end. We have invisible characters in this line. This +- is a dumb update. */ + _rl_output_some_chars (nfd, temp); + _rl_last_c_pos += col_temp; + return; + } +--- 1619,1632 ---- + else + { + _rl_output_some_chars (nfd, temp); + _rl_last_c_pos += col_temp; ++ /* If nfd begins before any invisible characters in the prompt, ++ adjust _rl_last_c_pos to account for wrap_offset and set ++ cpos_adjusted to let the caller know. */ ++ if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible)) ++ { ++ _rl_last_c_pos -= wrap_offset; ++ cpos_adjusted = 1; ++ } + return; + } diff --git a/src/patches/readline/readline52-011 b/src/patches/readline/readline52-011 new file mode 100644 index 000000000..a1197ede6 --- /dev/null +++ b/src/patches/readline/readline52-011 @@ -0,0 +1,32 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 5.2 +Patch-ID: readline52-011 + +Bug-Reported-by: Uwe Doering +Bug-Reference-ID: <46F3DD72.2090801@geminix.org> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-09/msg00102.html + +Bug-Description: + +There is an off-by-one error in the code that buffers characters received +very quickly in succession, causing characters to be dropped. + +Patch: + +*** ../readline-5.2-patched/input.c 2007-08-25 13:47:10.000000000 -0400 +--- input.c 2007-10-12 22:55:25.000000000 -0400 +*************** +*** 155,159 **** + pop_index--; + if (pop_index < 0) +! pop_index = ibuffer_len - 1; + ibuffer[pop_index] = key; + return (1); +--- 155,159 ---- + pop_index--; + if (pop_index < 0) +! pop_index = ibuffer_len; + ibuffer[pop_index] = key; + return (1); diff --git a/src/patches/readline/readline52-012 b/src/patches/readline/readline52-012 new file mode 100644 index 000000000..7b370240c --- /dev/null +++ b/src/patches/readline/readline52-012 @@ -0,0 +1,150 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 5.2 +Patch-ID: readline52-012 + +Bug-Reported-by: Chet Ramey +Bug-Reference-ID: +Bug-Reference-URL: + +Bug-Description: + +This updates the options required to create shared libraries on several +systems, including Mac OS X 10.5 (darwin9.x), FreeBSD, NetBSD, OpenBSD, +AIX, and HP/UX. + +Patch: + +*** ../readline-5.2-patched/support/shobj-conf 2006-04-11 09:15:43.000000000 -0400 +--- support/shobj-conf 2007-12-06 23:46:41.000000000 -0500 +*************** +*** 11,15 **** + # chet@po.cwru.edu + +! # Copyright (C) 1996-2002 Free Software Foundation, Inc. + # + # This program is free software; you can redistribute it and/or modify +--- 11,15 ---- + # chet@po.cwru.edu + +! # Copyright (C) 1996-2007 Free Software Foundation, Inc. + # + # This program is free software; you can redistribute it and/or modify +*************** +*** 115,119 **** + ;; + +! freebsd2* | netbsd*) + SHOBJ_CFLAGS=-fpic + SHOBJ_LD=ld +--- 115,119 ---- + ;; + +! freebsd2*) + SHOBJ_CFLAGS=-fpic + SHOBJ_LD=ld +*************** +*** 126,130 **** + # FreeBSD-3.x ELF + freebsd[3-9]*|freebsdelf[3-9]*|freebsdaout[3-9]*|dragonfly*) +! SHOBJ_CFLAGS=-fpic + SHOBJ_LD='${CC}' + +--- 126,130 ---- + # FreeBSD-3.x ELF + freebsd[3-9]*|freebsdelf[3-9]*|freebsdaout[3-9]*|dragonfly*) +! SHOBJ_CFLAGS=-fPIC + SHOBJ_LD='${CC}' + +*************** +*** 143,147 **** + + # Darwin/MacOS X +! darwin8*) + SHOBJ_STATUS=supported + SHLIB_STATUS=supported +--- 143,147 ---- + + # Darwin/MacOS X +! darwin[89]*) + SHOBJ_STATUS=supported + SHLIB_STATUS=supported +*************** +*** 154,158 **** + SHLIB_LIBSUFF='dylib' + +! SHOBJ_LDFLAGS='-undefined dynamic_lookup' + SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v' + +--- 154,158 ---- + SHLIB_LIBSUFF='dylib' + +! SHOBJ_LDFLAGS='-dynamiclib -dynamic -undefined dynamic_lookup -arch_only `/usr/bin/arch`' + SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v' + +*************** +*** 172,176 **** + + case "${host_os}" in +! darwin[78]*) SHOBJ_LDFLAGS='' + SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v' + ;; +--- 172,176 ---- + + case "${host_os}" in +! darwin[789]*) SHOBJ_LDFLAGS='' + SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v' + ;; +*************** +*** 183,187 **** + ;; + +! openbsd*) + SHOBJ_CFLAGS=-fPIC + SHOBJ_LD='${CC}' +--- 183,187 ---- + ;; + +! openbsd*|netbsd*) + SHOBJ_CFLAGS=-fPIC + SHOBJ_LD='${CC}' +*************** +*** 248,252 **** + ;; + +! aix4.[2-9]*-*gcc*) # lightly tested by jik@cisco.com + SHOBJ_CFLAGS=-fpic + SHOBJ_LD='ld' +--- 248,252 ---- + ;; + +! aix4.[2-9]*-*gcc*|aix[5-9].*-*gcc*) # lightly tested by jik@cisco.com + SHOBJ_CFLAGS=-fpic + SHOBJ_LD='ld' +*************** +*** 259,263 **** + ;; + +! aix4.[2-9]*) + SHOBJ_CFLAGS=-K + SHOBJ_LD='ld' +--- 259,263 ---- + ;; + +! aix4.[2-9]*|aix[5-9].*) + SHOBJ_CFLAGS=-K + SHOBJ_LD='ld' +*************** +*** 330,334 **** + # if you have problems linking here, moving the `-Wl,+h,$@' from + # SHLIB_XLDFLAGS to SHOBJ_LDFLAGS has been reported to work +! SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,+s' + + SHLIB_XLDFLAGS='-Wl,+h,$@ -Wl,+b,$(libdir)' +--- 330,334 ---- + # if you have problems linking here, moving the `-Wl,+h,$@' from + # SHLIB_XLDFLAGS to SHOBJ_LDFLAGS has been reported to work +! SHOBJ_LDFLAGS='-shared -fpic -Wl,-b -Wl,+s' + + SHLIB_XLDFLAGS='-Wl,+h,$@ -Wl,+b,$(libdir)' diff --git a/src/patches/readline/readline52-013 b/src/patches/readline/readline52-013 new file mode 100644 index 000000000..82a18972a --- /dev/null +++ b/src/patches/readline/readline52-013 @@ -0,0 +1,135 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 5.2 +Patch-ID: readline52-013 + +Bug-Reported-by: slinkp +Bug-Reference-ID: +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2008-05/msg00085.html + +Bug-Description: + +The presence of invisible characters in a prompt longer than the screenwidth +with invisible characters on the first and last prompt lines caused readline +to place the cursor in the wrong physical location. + +Patch: + +*** ../readline-5.2-patched/display.c 2007-12-14 21:12:40.000000000 -0500 +--- display.c 2008-10-23 09:39:46.000000000 -0400 +*************** +*** 911,914 **** +--- 944,951 ---- + OFFSET (which has already been calculated above). */ + ++ #define INVIS_FIRST() (prompt_physical_chars > _rl_screenwidth ? prompt_invis_chars_first_line : wrap_offset) ++ #define WRAP_OFFSET(line, offset) ((line == 0) \ ++ ? (offset ? INVIS_FIRST() : 0) \ ++ : ((line == prompt_last_screen_line) ? wrap_offset-prompt_invis_chars_first_line : 0)) + #define W_OFFSET(line, offset) ((line) == 0 ? offset : 0) + #define VIS_LLEN(l) ((l) > _rl_vis_botlin ? 0 : (vis_lbreaks[l+1] - vis_lbreaks[l])) +*************** +*** 945,949 **** + _rl_last_c_pos > wrap_offset && + o_cpos < prompt_last_invisible) +! _rl_last_c_pos -= wrap_offset; + + /* If this is the line with the prompt, we might need to +--- 982,992 ---- + _rl_last_c_pos > wrap_offset && + o_cpos < prompt_last_invisible) +! _rl_last_c_pos -= prompt_invis_chars_first_line; /* XXX - was wrap_offset */ +! else if (linenum == prompt_last_screen_line && prompt_physical_chars > _rl_screenwidth && +! (MB_CUR_MAX > 1 && rl_byte_oriented == 0) && +! cpos_adjusted == 0 && +! _rl_last_c_pos != o_cpos && +! _rl_last_c_pos > (prompt_last_invisible - _rl_screenwidth - prompt_invis_chars_first_line)) +! _rl_last_c_pos -= (wrap_offset-prompt_invis_chars_first_line); + + /* If this is the line with the prompt, we might need to +*************** +*** 1205,1209 **** + { + register char *ofd, *ols, *oe, *nfd, *nls, *ne; +! int temp, lendiff, wsatend, od, nd, o_cpos; + int current_invis_chars; + int col_lendiff, col_temp; +--- 1264,1268 ---- + { + register char *ofd, *ols, *oe, *nfd, *nls, *ne; +! int temp, lendiff, wsatend, od, nd, twidth, o_cpos; + int current_invis_chars; + int col_lendiff, col_temp; +*************** +*** 1221,1225 **** + temp = _rl_last_c_pos; + else +! temp = _rl_last_c_pos - W_OFFSET(_rl_last_v_pos, visible_wrap_offset); + if (temp == _rl_screenwidth && _rl_term_autowrap && !_rl_horizontal_scroll_mode + && _rl_last_v_pos == current_line - 1) +--- 1280,1284 ---- + temp = _rl_last_c_pos; + else +! temp = _rl_last_c_pos - WRAP_OFFSET (_rl_last_v_pos, visible_wrap_offset); + if (temp == _rl_screenwidth && _rl_term_autowrap && !_rl_horizontal_scroll_mode + && _rl_last_v_pos == current_line - 1) +*************** +*** 1587,1599 **** + { + _rl_output_some_chars (nfd + lendiff, temp - lendiff); +- #if 1 + /* XXX -- this bears closer inspection. Fixes a redisplay bug + reported against bash-3.0-alpha by Andreas Schwab involving + multibyte characters and prompt strings with invisible + characters, but was previously disabled. */ +! _rl_last_c_pos += _rl_col_width (nfd+lendiff, 0, temp-col_lendiff); +! #else +! _rl_last_c_pos += _rl_col_width (nfd+lendiff, 0, temp-lendiff); +! #endif + } + } +--- 1648,1660 ---- + { + _rl_output_some_chars (nfd + lendiff, temp - lendiff); + /* XXX -- this bears closer inspection. Fixes a redisplay bug + reported against bash-3.0-alpha by Andreas Schwab involving + multibyte characters and prompt strings with invisible + characters, but was previously disabled. */ +! if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) +! twidth = _rl_col_width (nfd+lendiff, 0, temp-col_lendiff); +! else +! twidth = temp - lendiff; +! _rl_last_c_pos += twidth; + } + } +*************** +*** 1789,1793 **** + int cpos, dpos; /* current and desired cursor positions */ + +! woff = W_OFFSET (_rl_last_v_pos, wrap_offset); + cpos = _rl_last_c_pos; + #if defined (HANDLE_MULTIBYTE) +--- 1850,1854 ---- + int cpos, dpos; /* current and desired cursor positions */ + +! woff = WRAP_OFFSET (_rl_last_v_pos, wrap_offset); + cpos = _rl_last_c_pos; + #if defined (HANDLE_MULTIBYTE) +*************** +*** 1803,1807 **** + prompt string, since they're both buffer indices and DPOS is a + desired display position. */ +! if (new > prompt_last_invisible) /* XXX - don't use woff here */ + { + dpos -= woff; +--- 1864,1872 ---- + prompt string, since they're both buffer indices and DPOS is a + desired display position. */ +! if ((new > prompt_last_invisible) || /* XXX - don't use woff here */ +! (prompt_physical_chars > _rl_screenwidth && +! _rl_last_v_pos == prompt_last_screen_line && +! wrap_offset != woff && +! new > (prompt_last_invisible-_rl_screenwidth-wrap_offset))) + { + dpos -= woff; diff --git a/src/patches/readline/readline52-014 b/src/patches/readline/readline52-014 new file mode 100644 index 000000000..8dfaae45d --- /dev/null +++ b/src/patches/readline/readline52-014 @@ -0,0 +1,49 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 5.2 +Patch-ID: readline52-014 + +Bug-Reported-by: Len Lattanzi +Bug-Reference-ID: <52B1297F-6675-45CC-B63E-24745337D006@apple.com> +Bug-Reference-URL: + +Bug-Description: + +On systems where mbrtowc() returns -2 when passed a length argument with +value 0, when using a multibyte locale, Readline's emacs-mode forward-char +at the end of a line will leave the point beyond the end of the line. + +Patch: + +*** ../readline-5.2-patched/mbutil.c 2009-05-29 23:09:26.000000000 -0400 +--- mbutil.c 2009-05-29 23:10:12.000000000 -0400 +*************** +*** 78,82 **** + int seed, count, find_non_zero; + { +! size_t tmp; + mbstate_t ps; + int point; +--- 78,82 ---- + int seed, count, find_non_zero; + { +! size_t tmp, len; + mbstate_t ps; + int point; +*************** +*** 99,103 **** + while (count > 0) + { +! tmp = mbrtowc (&wc, string+point, strlen(string + point), &ps); + if (MB_INVALIDCH ((size_t)tmp)) + { +--- 99,106 ---- + while (count > 0) + { +! len = strlen (string + point); +! if (len == 0) +! break; +! tmp = mbrtowc (&wc, string+point, len, &ps); + if (MB_INVALIDCH ((size_t)tmp)) + { diff --git a/src/patches/readline/readline62-001 b/src/patches/readline/readline62-001 new file mode 100644 index 000000000..d4563c3b1 --- /dev/null +++ b/src/patches/readline/readline62-001 @@ -0,0 +1,46 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 6.2 +Patch-ID: readline62-001 + +Bug-Reported-by: Clark J. Wang +Bug-Reference-ID: +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00157.html + +Bug-Description: + +The readline vi-mode `cc', `dd', and `yy' commands failed to modify the +entire line. + +[This patch intentionally does not modify patchlevel] + +Patch (apply with `patch -p0'): + +*** ../readline-6.2-patched/vi_mode.c 2010-11-20 19:51:39.000000000 -0500 +--- vi_mode.c 2011-02-17 20:24:25.000000000 -0500 +*************** +*** 1115,1119 **** + _rl_vi_last_motion = c; + RL_UNSETSTATE (RL_STATE_VIMOTION); +! return (0); + } + #if defined (READLINE_CALLBACKS) +--- 1115,1119 ---- + _rl_vi_last_motion = c; + RL_UNSETSTATE (RL_STATE_VIMOTION); +! return (vidomove_dispatch (m)); + } + #if defined (READLINE_CALLBACKS) +*** ../readline-6.2-patched/callback.c 2010-06-06 12:18:58.000000000 -0400 +--- callback.c 2011-02-17 20:43:28.000000000 -0500 +*************** +*** 149,152 **** +--- 149,155 ---- + /* Should handle everything, including cleanup, numeric arguments, + and turning off RL_STATE_VIMOTION */ ++ if (RL_ISSTATE (RL_STATE_NUMERICARG) == 0) ++ _rl_internal_char_cleanup (); ++ + return; + } diff --git a/src/patches/readline/readline62-002 b/src/patches/readline/readline62-002 new file mode 100644 index 000000000..3dc260400 --- /dev/null +++ b/src/patches/readline/readline62-002 @@ -0,0 +1,57 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 6.2 +Patch-ID: readline62-002 + +Bug-Reported-by: Vincent Sheffer +Bug-Reference-ID: +Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-readline/2011-08/msg00000.html + +Bug-Description: + +The readline shared library helper script needs to be updated for Mac OS X +10.7 (Lion, darwin11). + +Patch (apply with `patch -p0'): + +*** ../readline-6.2-patched/support/shobj-conf 2009-10-28 09:20:21.000000000 -0400 +--- support/shobj-conf 2011-08-27 13:25:23.000000000 -0400 +*************** +*** 158,162 **** + + # Darwin/MacOS X +! darwin[89]*|darwin10*) + SHOBJ_STATUS=supported + SHLIB_STATUS=supported +--- 172,176 ---- + + # Darwin/MacOS X +! darwin[89]*|darwin1[012]*) + SHOBJ_STATUS=supported + SHLIB_STATUS=supported +*************** +*** 187,191 **** + + case "${host_os}" in +! darwin[789]*|darwin10*) SHOBJ_LDFLAGS='' + SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v' + ;; +--- 201,205 ---- + + case "${host_os}" in +! darwin[789]*|darwin1[012]*) SHOBJ_LDFLAGS='' + SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v' + ;; + +*** ../readline-6.2-patched/patchlevel 2010-01-14 10:15:52.000000000 -0500 +--- patchlevel 2011-11-17 11:09:35.000000000 -0500 +*************** +*** 1,3 **** + # Do not edit -- exists only for use by patch + +! 1 +--- 1,3 ---- + # Do not edit -- exists only for use by patch + +! 2 diff --git a/src/patches/readline/readline62-003 b/src/patches/readline/readline62-003 new file mode 100644 index 000000000..0462242e0 --- /dev/null +++ b/src/patches/readline/readline62-003 @@ -0,0 +1,76 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 6.2 +Patch-ID: readline62-003 + +Bug-Reported-by: Max Horn +Bug-Reference-ID: <20CC5C60-07C3-4E41-9817-741E48D407C5@quendi.de> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2012-06/msg00005.html + +Bug-Description: + +A change between readline-6.1 and readline-6.2 to prevent the readline input +hook from being called too frequently had the side effect of causing delays +when reading pasted input on systems such as Mac OS X. This patch fixes +those delays while retaining the readline-6.2 behavior. + +Patch (apply with `patch -p0'): + +*** ../readline-6.2-patched/input.c 2010-05-30 18:33:01.000000000 -0400 +--- input.c 2012-06-25 21:08:42.000000000 -0400 +*************** +*** 410,414 **** + rl_read_key () + { +! int c; + + rl_key_sequence_length++; +--- 412,416 ---- + rl_read_key () + { +! int c, r; + + rl_key_sequence_length++; +*************** +*** 430,441 **** + while (rl_event_hook) + { +! if (rl_gather_tyi () < 0) /* XXX - EIO */ + { + rl_done = 1; + return ('\n'); + } + RL_CHECK_SIGNALS (); +- if (rl_get_char (&c) != 0) +- break; + if (rl_done) /* XXX - experimental */ + return ('\n'); +--- 432,447 ---- + while (rl_event_hook) + { +! if (rl_get_char (&c) != 0) +! break; +! +! if ((r = rl_gather_tyi ()) < 0) /* XXX - EIO */ + { + rl_done = 1; + return ('\n'); + } ++ else if (r == 1) /* read something */ ++ continue; ++ + RL_CHECK_SIGNALS (); + if (rl_done) /* XXX - experimental */ + return ('\n'); +*** ../readline-6.2-patched/patchlevel 2010-01-14 10:15:52.000000000 -0500 +--- patchlevel 2011-11-17 11:09:35.000000000 -0500 +*************** +*** 1,3 **** + # Do not edit -- exists only for use by patch + +! 2 +--- 1,3 ---- + # Do not edit -- exists only for use by patch + +! 3 diff --git a/src/patches/readline/readline62-004 b/src/patches/readline/readline62-004 new file mode 100644 index 000000000..5f3ba9bb3 --- /dev/null +++ b/src/patches/readline/readline62-004 @@ -0,0 +1,108 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 6.2 +Patch-ID: readline62-004 + +Bug-Reported-by: Jakub Filak +Bug-Reference-ID: +Bug-Reference-URL: https://bugzilla.redhat.com/show_bug.cgi?id=813289 + +Bug-Description: + +Attempting to redo (using `.') the vi editing mode `cc', `dd', or `yy' +commands leads to an infinite loop. + +Patch (apply with `patch -p0'): + +*** ../readline-6.2-patched/vi_mode.c 2011-02-25 11:17:02.000000000 -0500 +--- vi_mode.c 2012-06-02 12:24:47.000000000 -0400 +*************** +*** 1235,1243 **** + r = rl_domove_motion_callback (_rl_vimvcxt); + } +! else if (vi_redoing) + { + _rl_vimvcxt->motion = _rl_vi_last_motion; + r = rl_domove_motion_callback (_rl_vimvcxt); + } + #if defined (READLINE_CALLBACKS) + else if (RL_ISSTATE (RL_STATE_CALLBACK)) +--- 1297,1313 ---- + r = rl_domove_motion_callback (_rl_vimvcxt); + } +! else if (vi_redoing && _rl_vi_last_motion != 'd') /* `dd' is special */ + { + _rl_vimvcxt->motion = _rl_vi_last_motion; + r = rl_domove_motion_callback (_rl_vimvcxt); + } ++ else if (vi_redoing) /* handle redoing `dd' here */ ++ { ++ _rl_vimvcxt->motion = _rl_vi_last_motion; ++ rl_mark = rl_end; ++ rl_beg_of_line (1, key); ++ RL_UNSETSTATE (RL_STATE_VIMOTION); ++ r = vidomove_dispatch (_rl_vimvcxt); ++ } + #if defined (READLINE_CALLBACKS) + else if (RL_ISSTATE (RL_STATE_CALLBACK)) +*************** +*** 1317,1325 **** + r = rl_domove_motion_callback (_rl_vimvcxt); + } +! else if (vi_redoing) + { + _rl_vimvcxt->motion = _rl_vi_last_motion; + r = rl_domove_motion_callback (_rl_vimvcxt); + } + #if defined (READLINE_CALLBACKS) + else if (RL_ISSTATE (RL_STATE_CALLBACK)) +--- 1387,1403 ---- + r = rl_domove_motion_callback (_rl_vimvcxt); + } +! else if (vi_redoing && _rl_vi_last_motion != 'c') /* `cc' is special */ + { + _rl_vimvcxt->motion = _rl_vi_last_motion; + r = rl_domove_motion_callback (_rl_vimvcxt); + } ++ else if (vi_redoing) /* handle redoing `cc' here */ ++ { ++ _rl_vimvcxt->motion = _rl_vi_last_motion; ++ rl_mark = rl_end; ++ rl_beg_of_line (1, key); ++ RL_UNSETSTATE (RL_STATE_VIMOTION); ++ r = vidomove_dispatch (_rl_vimvcxt); ++ } + #if defined (READLINE_CALLBACKS) + else if (RL_ISSTATE (RL_STATE_CALLBACK)) +*************** +*** 1378,1381 **** +--- 1456,1472 ---- + r = rl_domove_motion_callback (_rl_vimvcxt); + } ++ else if (vi_redoing && _rl_vi_last_motion != 'y') /* `yy' is special */ ++ { ++ _rl_vimvcxt->motion = _rl_vi_last_motion; ++ r = rl_domove_motion_callback (_rl_vimvcxt); ++ } ++ else if (vi_redoing) /* handle redoing `yy' here */ ++ { ++ _rl_vimvcxt->motion = _rl_vi_last_motion; ++ rl_mark = rl_end; ++ rl_beg_of_line (1, key); ++ RL_UNSETSTATE (RL_STATE_VIMOTION); ++ r = vidomove_dispatch (_rl_vimvcxt); ++ } + #if defined (READLINE_CALLBACKS) + else if (RL_ISSTATE (RL_STATE_CALLBACK)) +*** ../readline-6.2-patched/patchlevel 2010-01-14 10:15:52.000000000 -0500 +--- patchlevel 2011-11-17 11:09:35.000000000 -0500 +*************** +*** 1,3 **** + # Do not edit -- exists only for use by patch + +! 3 +--- 1,3 ---- + # Do not edit -- exists only for use by patch + +! 4 diff --git a/src/patches/screen-4.0.3-stropts.patch b/src/patches/screen-4.0.3-stropts.patch new file mode 100644 index 000000000..d6cbed74e --- /dev/null +++ b/src/patches/screen-4.0.3-stropts.patch @@ -0,0 +1,48 @@ +diff -up screen-4.0.3/tty.sh.stropts screen-4.0.3/tty.sh +--- screen-4.0.3/tty.sh.stropts 2003-09-08 16:24:25.000000000 +0200 ++++ screen-4.0.3/tty.sh 2008-04-07 11:28:34.000000000 +0200 +@@ -76,7 +76,7 @@ exit 0 + #endif + + #include "config.h" +-#ifdef SVR4 ++#if 0 + #include /* for I_POP */ + #endif + +diff -up screen-4.0.3/screen.c.stropts screen-4.0.3/screen.c +--- screen-4.0.3/screen.c.stropts 2008-04-07 11:25:21.000000000 +0200 ++++ screen-4.0.3/screen.c 2008-04-07 11:29:14.000000000 +0200 +@@ -50,7 +50,7 @@ + + #include "config.h" + +-#ifdef SVR4 ++#if 0 + # include + #endif + +diff -up screen-4.0.3/process.c.stropts screen-4.0.3/process.c +--- screen-4.0.3/process.c.stropts 2003-09-18 14:53:54.000000000 +0200 ++++ screen-4.0.3/process.c 2008-04-07 11:29:47.000000000 +0200 +@@ -37,7 +37,7 @@ + #include "config.h" + + /* for solaris 2.1, Unixware (SVR4.2) and possibly others: */ +-#ifdef SVR4 ++#if 0 + # include + #endif + +diff -up screen-4.0.3/pty.c.stropts screen-4.0.3/pty.c +--- screen-4.0.3/pty.c.stropts 2003-09-08 16:26:18.000000000 +0200 ++++ screen-4.0.3/pty.c 2008-04-07 11:30:07.000000000 +0200 +@@ -34,7 +34,7 @@ + #endif + + /* for solaris 2.1, Unixware (SVR4.2) and possibly others */ +-#ifdef HAVE_SVR4_PTYS ++#if 0 + # include + #endif + diff --git a/src/patches/slang-1.4.9-uclibc.patch b/src/patches/slang-1.4.9-uclibc.patch deleted file mode 100644 index 784714732..000000000 --- a/src/patches/slang-1.4.9-uclibc.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -ru slang-1.4.9.orig/src/slmisc.c slang-1.4.9/src/slmisc.c ---- slang-1.4.9.orig/src/slmisc.c 2003-03-23 07:06:40.000000000 +0000 -+++ slang-1.4.9/src/slmisc.c 2004-05-05 14:27:24.000000000 +0000 -@@ -565,7 +565,7 @@ - return (int) SLatol (s); - } - --#if !defined(HAVE_ISSETUGID) && defined(__GLIBC__) && (__GLIBC__ >= 2) -+#if 0 - extern int __libc_enable_secure; - # define HAVE___LIBC_ENABLE_SECURE 1 - #endif diff --git a/src/patches/uClibc-gcc4-genwctype.patch b/src/patches/uClibc-gcc4-genwctype.patch deleted file mode 100644 index 568e5bdb7..000000000 --- a/src/patches/uClibc-gcc4-genwctype.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- uClibc-0.9.28/extra/locale/gen_wctype.c.orig 2005-08-18 00:49:41.000000000 +0200 -+++ uClibc-0.9.28/extra/locale/gen_wctype.c 2005-12-09 16:29:53.000000000 +0100 -@@ -796,6 +796,7 @@ - ti[i] = ut + j; - j += blocksize; - } -+ memset(uniqblock, 0, sizeof(uniqblock)); - - /* sort */ - nu_val = blocksize; - diff --git a/src/patches/vdr-1.6.0-gcc44-fixes.patch b/src/patches/vdr-1.6.0-gcc44-fixes.patch new file mode 100644 index 000000000..d8841d8b0 --- /dev/null +++ b/src/patches/vdr-1.6.0-gcc44-fixes.patch @@ -0,0 +1,62 @@ +Index: vdr-1.6.0/recording.c +=================================================================== +--- vdr-1.6.0.orig/recording.c ++++ vdr-1.6.0/recording.c +@@ -509,8 +509,8 @@ cRecording::cRecording(cTimer *Timer, co + Utf8Strn0Cpy(SubtitleBuffer, Subtitle, MAX_SUBTITLE_LENGTH); + Subtitle = SubtitleBuffer; + } +- char *macroTITLE = strstr(Timer->File(), TIMERMACRO_TITLE); +- char *macroEPISODE = strstr(Timer->File(), TIMERMACRO_EPISODE); ++ const char *macroTITLE = strstr(Timer->File(), TIMERMACRO_TITLE); ++ const char *macroEPISODE = strstr(Timer->File(), TIMERMACRO_EPISODE); + if (macroTITLE || macroEPISODE) { + name = strdup(Timer->File()); + name = strreplace(name, TIMERMACRO_TITLE, Title); +@@ -551,7 +551,7 @@ cRecording::cRecording(const char *FileN + sortBuffer = NULL; + fileName = strdup(FileName); + FileName += strlen(VideoDirectory) + 1; +- char *p = strrchr(FileName, '/'); ++ const char *p = strrchr(FileName, '/'); + + name = NULL; + info = new cRecordingInfo; +@@ -1022,7 +1022,8 @@ void cRecordings::DelByName(const char * + if (recording) { + cThreadLock DeletedRecordingsLock(&DeletedRecordings); + Del(recording, false); +- char *ext = strrchr(recording->FileName(), '.'); ++ // wtf? ++ char *ext = strrchr(const_cast(recording->FileName()), '.'); + if (ext) { + strncpy(ext, DELEXT, strlen(ext)); + recording->fileSizeMB = DirSizeMB(recording->FileName()); +Index: vdr-1.6.0/svdrp.c +=================================================================== +--- vdr-1.6.0.orig/svdrp.c ++++ vdr-1.6.0/svdrp.c +@@ -736,7 +736,7 @@ void cSVDRP::CmdGRAB(const char *Option) + char *strtok_next; + FileName = strtok_r(p, delim, &strtok_next); + // image type: +- char *Extension = strrchr(FileName, '.'); ++ const char *Extension = strrchr(FileName, '.'); + if (Extension) { + if (strcasecmp(Extension, ".jpg") == 0 || strcasecmp(Extension, ".jpeg") == 0) + Jpeg = true; +@@ -796,12 +796,12 @@ void cSVDRP::CmdGRAB(const char *Option) + if (FileName) { + if (grabImageDir) { + cString s; +- char *slash = strrchr(FileName, '/'); ++ char *slash = strrchr(const_cast(FileName), '/'); + if (!slash) { + s = AddDirectory(grabImageDir, FileName); + FileName = s; + } +- slash = strrchr(FileName, '/'); // there definitely is one ++ slash = strrchr(const_cast(FileName), '/'); // there definitely is one + *slash = 0; + char *r = realpath(FileName, RealFileName); + *slash = '/'; diff --git a/src/patches/vdr-plugin-epgsearch-gcc44.patch b/src/patches/vdr-plugin-epgsearch-gcc44.patch new file mode 100644 index 000000000..2a92a3b17 --- /dev/null +++ b/src/patches/vdr-plugin-epgsearch-gcc44.patch @@ -0,0 +1,78 @@ +diff -urNad vdr-plugin-epgsearch-0.9.24~/epgsearchsvdrp.c vdr-plugin-epgsearch-0.9.24/epgsearchsvdrp.c +--- vdr-plugin-epgsearch-0.9.24~/epgsearchsvdrp.c 2008-04-13 20:53:44.000000000 +0200 ++++ vdr-plugin-epgsearch-0.9.24/epgsearchsvdrp.c 2009-10-26 20:27:07.000000000 +0100 +@@ -742,12 +742,13 @@ + { + if (*Option) + { +- char* pipePos = strchr(Option, '|'); ++ const char* pipePos = strchr(Option, '|'); + if (pipePos) + { +- *pipePos = 0; +- const char* oldName = Option; +- const char* newName = pipePos+1; ++ int index = pipePos - Option; ++ char* oldName = strdup(Option); ++ *(oldName + index) = 0; ++ const char* newName = oldName + index + 1; + if (strlen(oldName) > 0 && strlen(newName) > 0) + { + cChannelGroup *changrp = ChannelGroups.GetGroupByName(Option); +@@ -769,15 +770,18 @@ + } + ChannelGroups.Save(); + SearchExts.Save(); ++ free(oldName); + return cString::sprintf("renamed channel group '%s' to '%s'", oldName, newName); + + } + else + { ++ free(oldName); + ReplyCode = 901; + return cString::sprintf("channel group '%s' not defined", Option); + } + } ++ free(oldName); + } + ReplyCode = 901; + return cString("Error in channel group parameters"); +diff -urNad vdr-plugin-epgsearch-0.9.24~/epgsearchtools.c vdr-plugin-epgsearch-0.9.24/epgsearchtools.c +--- vdr-plugin-epgsearch-0.9.24~/epgsearchtools.c 2008-04-13 20:53:42.000000000 +0200 ++++ vdr-plugin-epgsearch-0.9.24/epgsearchtools.c 2009-10-26 20:27:07.000000000 +0100 +@@ -743,7 +743,7 @@ + while(tmp) + { + // extract a single line +- char* lf = strchr(tmp, '\n'); ++ const char* lf = strchr(tmp, '\n'); + char* line = NULL; + if (lf) + line = strndup(tmp, lf-tmp); +diff -urNad vdr-plugin-epgsearch-0.9.24~/menu_dirselect.c vdr-plugin-epgsearch-0.9.24/menu_dirselect.c +--- vdr-plugin-epgsearch-0.9.24~/menu_dirselect.c 2008-04-13 20:53:44.000000000 +0200 ++++ vdr-plugin-epgsearch-0.9.24/menu_dirselect.c 2009-10-26 20:27:07.000000000 +0100 +@@ -83,7 +83,7 @@ + return 1; + do + { +- char* pos = strchr(szDir, '~'); ++ const char* pos = strchr(szDir, '~'); + if (pos) + { + iLevel++; +diff -urNad vdr-plugin-epgsearch-0.9.24~/searchtimer_thread.c vdr-plugin-epgsearch-0.9.24/searchtimer_thread.c +--- vdr-plugin-epgsearch-0.9.24~/searchtimer_thread.c 2008-04-28 18:22:31.000000000 +0200 ++++ vdr-plugin-epgsearch-0.9.24/searchtimer_thread.c 2009-10-26 20:27:28.000000000 +0100 +@@ -565,8 +565,8 @@ + if (!isempty(aux)) + { + tmpaux = strdup(aux); +- char* begin = strstr(aux, ""); +- char* end = strstr(aux, ""); ++ const char* begin = strstr(aux, ""); ++ const char* end = strstr(aux, ""); + if (begin && end) + { + if (begin == aux) strcpy(tmpaux, ""); else strn0cpy(tmpaux, aux, begin-aux+1); diff --git a/src/stripper b/src/stripper new file mode 100755 index 000000000..2b4feafe9 --- /dev/null +++ b/src/stripper @@ -0,0 +1,57 @@ +#!/tools/bin/bash + +dirs="" +excludes="/dev /proc /sys /run" + +while [ $# -gt 0 ]; do + case "${1}" in + --exclude=*) + excludes="${excludes} ${1#*=}" + ;; + *) + dirs="${dirs} ${1}" + ;; + esac + shift +done + +function _strip() { + local file=${1} + local cmd="${STRIP-strip}" + + local exclude l + for exclude in ${excludes}; do + l=${#exclude} + if [ "${file:0:${l}}" = "${exclude}" ]; then + return 0 + fi + done + + case "$(file -bi ${file})" in + application/x-sharedlib*|application/x-archive*) + cmd="${cmd} --strip-debug --remove-section=.comment --remove-section=.note" + ;; + *) + cmd="${cmd} --strip-unneeded" + ;; + esac + + echo "Stripping ${file}..." + ${cmd} ${file} +} + +for dir in ${dirs}; do + # Strip shared objects. + find ${dir} -type f \( -perm -0100 -or -perm -0010 -or -perm -0001 \) \ + | file -N -f - | sed -n -e 's/^\(.*\):[ ]*.*ELF.*, not stripped/\1/p' | + while read file; do + _strip ${file} + done + + # Strip static archives. + find ${dir} -name \*.a -a -exec file {} \; \ + | grep 'current ar archive' | sed -n -e 's/^\(.*\):[ ]*current ar archive/\1/p' | + while read file; do + _strip ${file} + done +done diff --git a/tools/make-functions b/tools/make-functions index 545068939..5af0b4b84 100644 --- a/tools/make-functions +++ b/tools/make-functions @@ -220,6 +220,7 @@ get_pkg_ver() if [ 'x86_64' = $MACHINE -o 'i686' = $MACHINE -o 'i586' = $MACHINE ]; then echo "`date -u '+%b %e %T'`: Machine is iX86 (or equivalent)" >> $LOGFILE MACHINE=i586 + CROSSTARGET=${MACHINE}-cross-linux-gnu BUILDTARGET=i586-pc-linux-gnu CFLAGS="-O2 -march=i586 -pipe -fomit-frame-pointer" CXXFLAGS="-O2 -march=i586 -pipe -fomit-frame-pointer" @@ -229,6 +230,7 @@ elif [ 'armv5tejl' = $MACHINE -o 'armv5tel' = $MACHINE -o 'armv6l' = $MACHINE -o echo "`date -u '+%b %e %T'`: Machine is ARM (or equivalent)" >> $LOGFILE MACHINE=armv5tel MACHINE_TYPE=arm + CROSSTARGET=${MACHINE}-cross-linux-gnueabi BUILDTARGET=${MACHINE}-unknown-linux-gnueabi CFLAGS="-O2 -march=armv5te -mfloat-abi=soft -fomit-frame-pointer -pipe" CXXFLAGS="$CFLAGS" @@ -291,8 +293,8 @@ entershell() { fi echo "Entering to a shell inside LFS chroot, go out with exit" - $linux32 chroot $LFS /tools/bin/env -i HOME=/root TERM=$TERM PS1='\u:\w\$ ' \ - PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \ + chroot $LFS /tools/bin/env -i HOME=/root TERM=$TERM PS1='\u:\w\$ ' \ + PATH=/tools/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \ VERSION=$VERSION CONFIG_ROOT=$CONFIG_ROOT \ NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ CFLAGS="$CF2LAGS" CXXFLAGS="$CXX2FLAGS" \ @@ -301,6 +303,7 @@ entershell() { CCACHE_COMPILERCHECK="none" \ KVER=$KVER \ BUILDTARGET="$BUILDTARGET" \ + CROSSTARGET="${CROSSTARGET}" \ MACHINE="$MACHINE" \ MACHINE_TYPE="$MACHINE_TYPE" \ KGCC="ccache /usr/bin/gcc" \ @@ -382,13 +385,13 @@ lfsmake1() { local PKG_TIME_START=`date +%s` cd $BASEDIR/lfs && make -f $* BUILDTARGET=$BUILDTARGET \ + CROSSTARGET="${CROSSTARGET}" \ MACHINE=$MACHINE \ MACHINE_TYPE=$MACHINE_TYPE \ LFS_BASEDIR=$BASEDIR \ ROOT=$LFS \ KVER=$KVER \ MAKETUNING=$MAKETUNING \ - $(fake_environ) \ install >> $LOGFILE 2>&1 local COMPILE_SUCCESS=$? local PKG_TIME_END=`date +%s` @@ -408,9 +411,9 @@ lfsmake2() { [ $? == 1 ] && return 0 local PKG_TIME_START=`date +%s` - $linux32 chroot $LFS /tools/bin/env -i HOME=/root \ + chroot $LFS /tools/bin/env -i HOME=/root \ TERM=$TERM PS1='\u:\w\$ ' \ - PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \ + PATH=/tools/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \ VERSION=$VERSION \ CONFIG_ROOT=$CONFIG_ROOT \ NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ @@ -418,7 +421,9 @@ lfsmake2() { CCACHE_DIR=/usr/src/ccache CCACHE_COMPRESS=1 \ CCACHE_COMPILERCHECK="none" \ KVER=$KVER MAKETUNING=$MAKETUNING \ - BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \ + BUILDTARGET="$BUILDTARGET" \ + CROSSTARGET="${CROSSTARGET}" \ + MACHINE="$MACHINE" \ MACHINE_TYPE="$MACHINE_TYPE" \ $(fake_environ) \ /tools/bin/bash -x -c "cd /usr/src/lfs && \ @@ -441,9 +446,9 @@ ipfiremake() { [ $? == 1 ] && return 0 local PKG_TIME_START=`date +%s` - $linux32 chroot $LFS /tools/bin/env -i HOME=/root \ + chroot $LFS /tools/bin/env -i HOME=/root \ TERM=$TERM PS1='\u:\w\$ ' \ - PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \ + PATH=/tools/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin \ VERSION=$VERSION \ CORE=$CORE \ CONFIG_ROOT=$CONFIG_ROOT \ @@ -452,7 +457,9 @@ ipfiremake() { CCACHE_DIR=/usr/src/ccache CCACHE_COMPRESS=1 \ CCACHE_COMPILERCHECK="none" \ KVER=$KVER MAKETUNING=$MAKETUNING \ - BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \ + BUILDTARGET="$BUILDTARGET" \ + CROSSTARGET="${CROSSTARGET}" \ + MACHINE="$MACHINE" \ MACHINE_TYPE="$MACHINE_TYPE" \ $(fake_environ) \ /bin/bash -x -c "cd /usr/src/lfs && \ @@ -477,7 +484,7 @@ ipfiredist() { local PKG_TIME_START=`date +%s` chroot $LFS /tools/bin/env -i HOME=/root \ TERM=$TERM PS1='\u:\w\$ ' \ - PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \ + PATH=/tools/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin \ VERSION=$VERSION \ CONFIG_ROOT=$CONFIG_ROOT \ NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ @@ -485,7 +492,9 @@ ipfiredist() { CCACHE_DIR=/usr/src/ccache CCACHE_COMPRESS=1 \ CCACHE_COMPILERCHECK="none" \ KVER=$KVER \ - BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \ + BUILDTARGET="$BUILDTARGET" \ + CROSSTARGET="${CROSSTARGET}" \ + MACHINE="$MACHINE" \ MACHINE_TYPE="$MACHINE_TYPE" \ $(fake_environ) \ /bin/bash -x -c "cd /usr/src/lfs && \ @@ -508,20 +517,22 @@ installmake() { [ $? == 1 ] && return 0 local PKG_TIME_START=`date +%s` - $linux32 chroot $LFS /tools/bin/env -i HOME=/root \ + chroot $LFS /tools/bin/env -i HOME=/root \ TERM=$TERM PS1='\u:\w\$ ' \ - PATH=/opt/i586-uClibc/i586-linux-uclibc/bin:/opt/i586-uClibc/bin:/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \ + PATH=/tools/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin \ VERSION=$VERSION \ CONFIG_ROOT=$CONFIG_ROOT \ - LFS_PASS="install" \ NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ CFLAGS="-Os" CXXFLAGS="-Os" \ CCACHE_DIR=/usr/src/ccache CCACHE_COMPRESS=1 CCACHE_HASHDIR=1 \ KVER=$KVER \ - BUILDTARGET="$BUILDTARGET" MACHINE="$MACHINE" \ + BUILDTARGET="$BUILDTARGET" \ + CROSSTARGET="${CROSSTARGET}" \ + MACHINE="$MACHINE" \ MACHINE_TYPE="$MACHINE_TYPE" \ - /bin/bash -x -c "cd /usr/src/lfs && \ - make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1 + LD_LIBRARY_PATH=/tools/lib \ + /tools/bin/bash -x -c "cd /usr/src/lfs && \ + /tools/bin/make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1 local COMPILE_SUCCESS=$? local PKG_TIME_END=`date +%s`