This is the mail archive of the gcc-prs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

optimization/2435: GCC 3.0 20010326 emits duplicate template instantiations with -O



>Number:         2435
>Category:       optimization
>Synopsis:       GCC 3.0 20010326 emits duplicate template instantiations with -O
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    unassigned
>State:          open
>Class:          wrong-code
>Submitter-Id:   net
>Arrival-Date:   Fri Mar 30 05:56:02 PST 2001
>Closed-Date:
>Last-Modified:
>Originator:     Andreas Zeller
>Release:        3.0 20010326 (prerelease)
>Organization:
Universitaet Passau, Germany
>Environment:
System: Linux jamaica.fmi.uni-passau.de 2.2.17-14 #1 Mon Feb 5 18:48:50 EST 2001 i686 unknown
Architecture: i686
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
configured with: ../egcs/configure --prefix=/public/packages/programming/gcc-current --enable-threads=posix --enable-shared --enable-languages=c++,java --with-system-zlib --with-gxx-include-dir=/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++
>Description:
	Compiling the included `session.i' file (a simplified part of
	GNU DDD) with `-O' optimization generates two superfluous
	template instantiations in the object file:

		$ c++ -O -c session.i; nm session.o | c++filt | grep ' T '
		00000000 T lock_session_dir()
		00000270 T unlock_session_dir()
		00000220 T std::basic_ios<char, std::char_traits<char> >::rdstate() const
		00000230 T std::basic_ios<char, std::char_traits<char> >::clear(std::_Ios_Iostate)
		$ _

	This happens multiple times, and thus breaks linkage due to
	multiple occurrences of the same symbol.

	Compiling without `-O' makes the problem go away:

		$ c++ -c session.i; nm session.o | c++filt | grep ' T '
		00000000 T lock_session_dir()
		000000f0 T unlock_session_dir()
		$ _
	
>How-To-Repeat:
	Compile the included `session.i' file as described above.

# 29 "/home/st/andreas/ddd/ddd/session.C"
# 1 "/home/st/andreas/ddd/ddd/strclass.h" 1
# 409 "/home/st/andreas/ddd/ddd/strclass.h"
#pragma interface


# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/iostream.h" 1 3
# 31 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/iostream.h" 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_iostream.h" 1 3
# 38 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_iostream.h" 3

# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/i686-pc-linux-gnu/bits/c++config.h" 1 3
# 34 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/i686-pc-linux-gnu/bits/c++config.h" 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/i686-pc-linux-gnu/bits/os_defines.h" 1 3
# 43 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/i686-pc-linux-gnu/bits/os_defines.h" 3
# 1 "/usr/include/features.h" 1 3
# 250 "/usr/include/features.h" 3
# 1 "/usr/include/sys/cdefs.h" 1 3
# 251 "/usr/include/features.h" 2 3
# 278 "/usr/include/features.h" 3
# 1 "/usr/include/gnu/stubs.h" 1 3
# 279 "/usr/include/features.h" 2 3
# 44 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/i686-pc-linux-gnu/bits/os_defines.h" 2 3
# 35 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/i686-pc-linux-gnu/bits/c++config.h" 2 3
# 40 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_iostream.h" 2 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_ostream.h" 1 3
# 38 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_ostream.h" 3

# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_ios.h" 1 3
# 38 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_ios.h" 3

# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_iosfwd.h" 1 3
# 38 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_iosfwd.h" 3

# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/i686-pc-linux-gnu/bits/c++config.h" 1 3
# 40 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_iosfwd.h" 2 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cwchar.h" 1 3
# 39 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cwchar.h" 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/i686-pc-linux-gnu/bits/c++config.h" 1 3
# 40 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cwchar.h" 2 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cstddef.h" 1 3
# 40 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cstddef.h" 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/stddef.h" 1 3
# 147 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/stddef.h" 3
typedef int ptrdiff_t;
# 199 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/stddef.h" 3
typedef unsigned int size_t;
# 41 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cstddef.h" 2 3

namespace std
{
  using ::ptrdiff_t;
  using ::size_t;
}
# 41 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cwchar.h" 2 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cstdio.h" 1 3
# 39 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cstdio.h" 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/i686-pc-linux-gnu/bits/c++config.h" 1 3
# 40 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cstdio.h" 2 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cstdarg.h" 1 3
# 40 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cstdarg.h" 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/stdarg.h" 1 3
# 43 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/stdarg.h" 3
typedef __builtin_va_list __gnuc_va_list;
# 110 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/stdarg.h" 3
typedef __gnuc_va_list va_list;
# 41 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cstdarg.h" 2 3

namespace std
{
  using ::va_list;
}
# 41 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cstdio.h" 2 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cstddef.h" 1 3
# 42 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cstdio.h" 2 3
# 44 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cstdio.h" 3
# 1 "/usr/include/stdio.h" 1 3
# 27 "/usr/include/stdio.h" 3
# 1 "/usr/include/features.h" 1 3
# 28 "/usr/include/stdio.h" 2 3

extern "C" {



# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/stddef.h" 1 3
# 34 "/usr/include/stdio.h" 2 3




# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/stdarg.h" 1 3
# 39 "/usr/include/stdio.h" 2 3

# 1 "/usr/include/bits/types.h" 1 3
# 26 "/usr/include/bits/types.h" 3
# 1 "/usr/include/features.h" 1 3
# 27 "/usr/include/bits/types.h" 2 3


# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/stddef.h" 1 3
# 30 "/usr/include/bits/types.h" 2 3


typedef unsigned char __u_char;
typedef unsigned short __u_short;
typedef unsigned int __u_int;
typedef unsigned long __u_long;

__extension__ typedef unsigned long long int __u_quad_t;
__extension__ typedef long long int __quad_t;
# 49 "/usr/include/bits/types.h" 3
typedef signed char __int8_t;
typedef unsigned char __uint8_t;
typedef signed short int __int16_t;
typedef unsigned short int __uint16_t;
typedef signed int __int32_t;
typedef unsigned int __uint32_t;

__extension__ typedef signed long long int __int64_t;
__extension__ typedef unsigned long long int __uint64_t;

typedef __quad_t *__qaddr_t;

typedef __u_quad_t __dev_t;
typedef __u_int __uid_t;
typedef __u_int __gid_t;
typedef __u_long __ino_t;
typedef __u_int __mode_t;
typedef __u_int __nlink_t;
typedef long int __off_t;
typedef __quad_t __loff_t;
typedef int __pid_t;
typedef int __ssize_t;
typedef long int __rlim_t;
typedef __quad_t __rlim64_t;
typedef __u_int __id_t;

typedef struct
  {
    int __val[2];
  } __fsid_t;


typedef int __daddr_t;
typedef char *__caddr_t;
typedef long int __time_t;
typedef long int __swblk_t;

typedef long int __clock_t;


typedef unsigned long int __fd_mask;
# 100 "/usr/include/bits/types.h" 3
typedef struct
  {



    __fd_mask fds_bits[1024 / (8 * sizeof (__fd_mask))];





  } __fd_set;


typedef int __key_t;


typedef unsigned short int __ipc_pid_t;





typedef long int __blkcnt_t;
typedef __quad_t __blkcnt64_t;


typedef __u_long __fsblkcnt_t;
typedef __u_quad_t __fsblkcnt64_t;


typedef __u_long __fsfilcnt_t;
typedef __u_quad_t __fsfilcnt64_t;


typedef __u_long __ino64_t;


typedef __loff_t __off64_t;


typedef long int __t_scalar_t;
typedef unsigned long int __t_uscalar_t;


typedef int __intptr_t;




# 1 "/usr/include/bits/pthreadtypes.h" 1 3
# 23 "/usr/include/bits/pthreadtypes.h" 3
# 1 "/usr/include/bits/sched.h" 1 3
# 68 "/usr/include/bits/sched.h" 3
struct __sched_param
  {
    int sched_priority;
  };
# 24 "/usr/include/bits/pthreadtypes.h" 2 3


struct _pthread_fastlock
{
  long int __status;
  int __spinlock;
};



typedef struct _pthread_descr_struct *_pthread_descr;





typedef struct
{
  int __detachstate;
  int __schedpolicy;
  struct __sched_param __schedparam;
  int __inheritsched;
  int __scope;
  size_t __guardsize;
  int __stackaddr_set;
  void *__stackaddr;
  size_t __stacksize;
} pthread_attr_t;



typedef struct
{
  struct _pthread_fastlock __c_lock;
  _pthread_descr __c_waiting;
} pthread_cond_t;



typedef struct
{
  int __dummy;
} pthread_condattr_t;


typedef unsigned int pthread_key_t;





typedef struct
{
  int __m_reserved;
  int __m_count;
  _pthread_descr __m_owner;
  int __m_kind;
  struct _pthread_fastlock __m_lock;
} pthread_mutex_t;



typedef struct
{
  int __mutexkind;
} pthread_mutexattr_t;



typedef int pthread_once_t;




typedef struct _pthread_rwlock_t
{
  struct _pthread_fastlock __rw_lock;
  int __rw_readers;
  _pthread_descr __rw_writer;
  _pthread_descr __rw_read_waiting;
  _pthread_descr __rw_write_waiting;
  int __rw_kind;
  int __rw_pshared;
} pthread_rwlock_t;



typedef struct
{
  int __lockkind;
  int __pshared;
} pthread_rwlockattr_t;




typedef unsigned long int pthread_t;
# 151 "/usr/include/bits/types.h" 2 3
# 41 "/usr/include/stdio.h" 2 3







typedef struct _IO_FILE FILE;
# 57 "/usr/include/stdio.h" 3
# 1 "/usr/include/libio.h" 1 3
# 30 "/usr/include/libio.h" 3
# 1 "/usr/include/_G_config.h" 1 3
# 9 "/usr/include/_G_config.h" 3
# 1 "/usr/include/bits/types.h" 1 3
# 10 "/usr/include/_G_config.h" 2 3




# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/stddef.h" 1 3
# 312 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/stddef.h" 3
typedef unsigned int wint_t;
# 15 "/usr/include/_G_config.h" 2 3
# 35 "/usr/include/_G_config.h" 3
typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
# 31 "/usr/include/libio.h" 2 3
# 48 "/usr/include/libio.h" 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/stdarg.h" 1 3
# 49 "/usr/include/libio.h" 2 3
# 154 "/usr/include/libio.h" 3
struct _IO_jump_t; struct _IO_FILE;
# 164 "/usr/include/libio.h" 3
typedef void _IO_lock_t;





struct _IO_marker {
  struct _IO_marker *_next;
  struct _IO_FILE *_sbuf;



  int _pos;
# 187 "/usr/include/libio.h" 3
};

struct _IO_FILE {
  int _flags;




  char* _IO_read_ptr;
  char* _IO_read_end;
  char* _IO_read_base;
  char* _IO_write_base;
  char* _IO_write_ptr;
  char* _IO_write_end;
  char* _IO_buf_base;
  char* _IO_buf_end;

  char *_IO_save_base;
  char *_IO_backup_base;
  char *_IO_save_end;

  struct _IO_marker *_markers;

  struct _IO_FILE *_chain;

  int _fileno;
  int _blksize;
  __off_t _old_offset;



  unsigned short _cur_column;
  signed char _vtable_offset;
  char _shortbuf[1];



  _IO_lock_t *_lock;
# 233 "/usr/include/libio.h" 3
  __off64_t _offset;

  int _unused2[16];

};





struct _IO_FILE_plus;
extern struct _IO_FILE_plus _IO_2_1_stdin_;
extern struct _IO_FILE_plus _IO_2_1_stdout_;
extern struct _IO_FILE_plus _IO_2_1_stderr_;
# 262 "/usr/include/libio.h" 3
typedef __ssize_t __io_read_fn (void * __cookie, char *__buf, size_t __nbytes);
# 271 "/usr/include/libio.h" 3
typedef __ssize_t __io_write_fn (void * __cookie, __const char *__buf, size_t __n);
# 280 "/usr/include/libio.h" 3
typedef int __io_seek_fn (void * __cookie, __off_t __pos, int __w);


typedef int __io_close_fn (void * __cookie);




typedef __io_read_fn cookie_read_function_t;
typedef __io_write_fn cookie_write_function_t;
typedef __io_seek_fn cookie_seek_function_t;
typedef __io_close_fn cookie_close_function_t;


typedef struct
{
  __io_read_fn *read;
  __io_write_fn *write;
  __io_seek_fn *seek;
  __io_close_fn *close;
} _IO_cookie_io_functions_t;
typedef _IO_cookie_io_functions_t cookie_io_functions_t;


struct _IO_cookie_file
{
  struct _IO_FILE __file;
  const void *__vtable;
  void *__cookie;
  _IO_cookie_io_functions_t __io_functions;
};




extern "C" {


extern int __underflow (_IO_FILE *) throw ();
extern int __uflow (_IO_FILE *) throw ();
extern int __overflow (_IO_FILE *, int) throw ();
# 337 "/usr/include/libio.h" 3
extern int _IO_getc (_IO_FILE *__fp) throw ();
extern int _IO_putc (int __c, _IO_FILE *__fp) throw ();
extern int _IO_feof (_IO_FILE *__fp) throw ();
extern int _IO_ferror (_IO_FILE *__fp) throw ();

extern int _IO_peekc_locked (_IO_FILE *__fp) throw ();





extern void _IO_flockfile (_IO_FILE *) throw ();
extern void _IO_funlockfile (_IO_FILE *) throw ();
extern int _IO_ftrylockfile (_IO_FILE *) throw ();
# 363 "/usr/include/libio.h" 3
extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict, __gnuc_va_list, int *__restrict) throw ();

extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict, __gnuc_va_list) throw ();

extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t) throw ();
extern size_t _IO_sgetn (_IO_FILE *, void *, size_t) throw ();

extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int) throw ();
extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int) throw ();

extern void _IO_free_backup_area (_IO_FILE *) throw ();


}
# 58 "/usr/include/stdio.h" 2 3



typedef __off_t fpos_t;




typedef __off64_t fpos64_t;
# 110 "/usr/include/stdio.h" 3
# 1 "/usr/include/bits/stdio_lim.h" 1 3
# 111 "/usr/include/stdio.h" 2 3



extern FILE *stdin;
extern FILE *stdout;
extern FILE *stderr;







extern int remove (__const char *__filename) throw ();

extern int rename (__const char *__old, __const char *__new) throw ();




extern FILE *tmpfile (void) throw ();
# 140 "/usr/include/stdio.h" 3
extern FILE *tmpfile64 (void) throw ();


extern char *tmpnam (char *__s) throw ();




extern char *tmpnam_r (char *__s) throw ();
# 160 "/usr/include/stdio.h" 3
extern char *tempnam (__const char *__dir, __const char *__pfx) throw ();




extern int fclose (FILE *__stream) throw ();

extern int fflush (FILE *__stream) throw ();



extern int fflush_unlocked (FILE *__stream) throw ();




extern int fcloseall (void) throw ();





extern FILE *fopen (__const char *__restrict __filename, __const char *__restrict __modes) throw ();


extern FILE *freopen (__const char *__restrict __filename, __const char *__restrict __modes, FILE *__restrict __stream) throw ();
# 203 "/usr/include/stdio.h" 3
extern FILE *fopen64 (__const char *__restrict __filename, __const char *__restrict __modes) throw ();

extern FILE *freopen64 (__const char *__restrict __filename, __const char *__restrict __modes, FILE *__restrict __stream) throw ();






extern FILE *fdopen (int __fd, __const char *__modes) throw ();





extern FILE *fopencookie (void *__restrict __magic_cookie, __const char *__restrict __modes, _IO_cookie_io_functions_t __io_funcs) throw ();






extern FILE *open_memstream (char **__restrict __bufloc, size_t *__restrict __sizeloc) throw ();






extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) throw ();



extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, int __modes, size_t __n) throw ();





extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, size_t __size) throw ();



extern void setlinebuf (FILE *__stream) throw ();




extern int fprintf (FILE *__restrict __stream, __const char *__restrict __format, ...) throw ();


extern int printf (__const char *__restrict __format, ...) throw ();

extern int sprintf (char *__restrict __s, __const char *__restrict __format, ...) throw ();



extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) throw ();



extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg) throw ();


extern int vsprintf (char *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) throw ();





extern int snprintf (char *__restrict __s, size_t __maxlen, __const char *__restrict __format, ...) throw ()

     __attribute__ ((__format__ (__printf__, 3, 4)));

extern int __vsnprintf (char *__restrict __s, size_t __maxlen, __const char *__restrict __format, __gnuc_va_list __arg) throw ()


     __attribute__ ((__format__ (__printf__, 3, 0)));
extern int vsnprintf (char *__restrict __s, size_t __maxlen, __const char *__restrict __format, __gnuc_va_list __arg) throw ()


     __attribute__ ((__format__ (__printf__, 3, 0)));





extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f, __gnuc_va_list __arg) throw ()

     __attribute__ ((__format__ (__printf__, 2, 0)));
extern int __asprintf (char **__restrict __ptr, __const char *__restrict __fmt, ...) throw ()

     __attribute__ ((__format__ (__printf__, 2, 3)));
extern int asprintf (char **__restrict __ptr, __const char *__restrict __fmt, ...) throw ()

     __attribute__ ((__format__ (__printf__, 2, 3)));


extern int vdprintf (int __fd, __const char *__restrict __fmt, __gnuc_va_list __arg) throw ()

     __attribute__ ((__format__ (__printf__, 2, 0)));
extern int dprintf (int __fd, __const char *__restrict __fmt, ...) throw ()
     __attribute__ ((__format__ (__printf__, 2, 3)));




extern int fscanf (FILE *__restrict __stream, __const char *__restrict __format, ...) throw ();


extern int scanf (__const char *__restrict __format, ...) throw ();

extern int sscanf (__const char *__restrict __s, __const char *__restrict __format, ...) throw ();




extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) throw ()


     __attribute__ ((__format__ (__scanf__, 2, 0)));


extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg) throw ()
     __attribute__ ((__format__ (__scanf__, 1, 0)));


extern int vsscanf (__const char *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) throw ()


     __attribute__ ((__format__ (__scanf__, 2, 0)));




extern int fgetc (FILE *__stream) throw ();
extern int getc (FILE *__stream) throw ();


extern int getchar (void) throw ();







extern int getc_unlocked (FILE *__stream) throw ();
extern int getchar_unlocked (void) throw ();




extern int fgetc_unlocked (FILE *__stream) throw ();




extern int fputc (int __c, FILE *__stream) throw ();
extern int putc (int __c, FILE *__stream) throw ();


extern int putchar (int __c) throw ();







extern int fputc_unlocked (int __c, FILE *__stream) throw ();




extern int putc_unlocked (int __c, FILE *__stream) throw ();
extern int putchar_unlocked (int __c) throw ();





extern int getw (FILE *__stream) throw ();


extern int putw (int __w, FILE *__stream) throw ();




extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) throw ();




extern char *fgets_unlocked (char *__restrict __s, int __n, FILE *__restrict __stream) throw ();





extern char *gets (char *__s) throw ();
# 413 "/usr/include/stdio.h" 3
extern __ssize_t __getdelim (char **__restrict __lineptr, size_t *__restrict __n, int __delimiter, FILE *__restrict __stream) throw ();


extern __ssize_t getdelim (char **__restrict __lineptr, size_t *__restrict __n, int __delimiter, FILE *__restrict __stream) throw ();




extern __ssize_t getline (char **__restrict __lineptr, size_t *__restrict __n, FILE *__restrict __stream) throw ();






extern int fputs (__const char *__restrict __s, FILE *__restrict __stream) throw ();




extern int fputs_unlocked (__const char *__restrict __s, FILE *__restrict __stream) throw ();




extern int puts (__const char *__s) throw ();



extern int ungetc (int __c, FILE *__stream) throw ();



extern size_t fread (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) throw ();


extern size_t fwrite (__const void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __s) throw ();




extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) throw ();

extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) throw ();






extern int fseek (FILE *__stream, long int __off, int __whence) throw ();

extern long int ftell (FILE *__stream) throw ();

extern void rewind (FILE *__stream) throw ();
# 477 "/usr/include/stdio.h" 3
typedef __off_t off_t;







typedef __off64_t off64_t;







extern int fseeko (FILE *__stream, __off_t __off, int __whence) throw ();

extern __off_t ftello (FILE *__stream) throw ();



extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos) throw ();


extern int fsetpos (FILE *__stream, __const fpos_t *__pos) throw ();
# 527 "/usr/include/stdio.h" 3
extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence) throw ();
extern __off64_t ftello64 (FILE *__stream) throw ();

extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos) throw ();

extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos) throw ();



extern void clearerr (FILE *__stream) throw ();

extern int feof (FILE *__stream) throw ();

extern int ferror (FILE *__stream) throw ();



extern void clearerr_unlocked (FILE *__stream) throw ();
extern int feof_unlocked (FILE *__stream) throw ();
extern int ferror_unlocked (FILE *__stream) throw ();




extern void perror (__const char *__s) throw ();




extern int sys_nerr;
extern __const char *__const sys_errlist[];


extern int _sys_nerr;
extern __const char *__const _sys_errlist[];





extern int fileno (FILE *__stream) throw ();




extern int fileno_unlocked (FILE *__stream) throw ();






extern FILE *popen (__const char *__command, __const char *__modes) throw ();


extern int pclose (FILE *__stream) throw ();





extern char *ctermid (char *__s) throw ();





extern char *cuserid (char *__s) throw ();




struct obstack;


extern int obstack_printf (struct obstack *__restrict __obstack, __const char *__restrict __format, ...) throw ();

extern int obstack_vprintf (struct obstack *__restrict __obstack, __const char *__restrict __format, __gnuc_va_list __args) throw ();
# 614 "/usr/include/stdio.h" 3
extern void flockfile (FILE *__stream) throw ();



extern int ftrylockfile (FILE *__stream) throw ();


extern void funlockfile (FILE *__stream) throw ();
# 635 "/usr/include/stdio.h" 3
# 1 "/usr/include/bits/stdio.h" 1 3
# 32 "/usr/include/bits/stdio.h" 3
inline int
vprintf (__const char *__restrict __fmt, __gnuc_va_list __arg) throw ()
{
  return vfprintf (stdout, __fmt, __arg);
}


inline int
getchar (void) throw ()
{
  return _IO_getc (stdin);
}




inline int
getc_unlocked (FILE *__fp) throw ()
{
  return ((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
}


inline int
getchar_unlocked (void) throw ()
{
  return ((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++);
}




inline int
putchar (int __c) throw ()
{
  return _IO_putc (__c, stdout);
}




inline int
fputc_unlocked (int __c, FILE *__stream) throw ()
{
  return (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
}





inline int
putc_unlocked (int __c, FILE *__stream) throw ()
{
  return (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
}


inline int
putchar_unlocked (int __c) throw ()
{
  return (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c)));
}





inline __ssize_t
getline (char **__lineptr, size_t *__n, FILE *__stream) throw ()
{
  return __getdelim (__lineptr, __n, '\n', __stream);
}





inline int
feof_unlocked (FILE *__stream) throw ()
{
  return (((__stream)->_flags & 0x10) != 0);
}


inline int
ferror_unlocked (FILE *__stream) throw ()
{
  return (((__stream)->_flags & 0x20) != 0);
}
# 636 "/usr/include/stdio.h" 2 3


}
# 45 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cstdio.h" 2 3
# 94 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cstdio.h" 3
namespace std
{
  using ::FILE;
  using ::fpos_t;

  extern "C" int remove(const char*);
  extern "C" int rename(const char*, const char*);
  extern "C" FILE* tmpfile(void);
  extern "C" char* tmpnam(char*);
  extern "C" int fclose(FILE*);
  extern "C" int fflush(FILE*);
  extern "C" FILE* fopen(const char*, const char*);
  extern "C" FILE* freopen(const char*, const char*, FILE*);
  extern "C" void setbuf(FILE*, char*);
  extern "C" int setvbuf(FILE*, char*, int, size_t);
  extern "C" int fprintf(FILE*, const char*, ...);
  extern "C" int fscanf(FILE*, const char*, ...);
  extern "C" int printf(const char*, ...);
  extern "C" int scanf(const char*, ...);
  extern "C" int snprintf(char *, size_t, const char*, ...);
  extern "C" int sprintf(char *, const char*, ...);
  extern "C" int sscanf(const char*, const char*, ...);
  extern "C" int vfprintf(FILE*, const char*, va_list);
  extern "C" int vfscanf(FILE*, const char*, va_list);
  extern "C" int vprintf(const char*, va_list);
  extern "C" int vscanf(const char*, va_list);
  extern "C" int vsnprintf(char*, size_t, const char*, va_list);
  extern "C" int vsprintf(char*, const char*, va_list);
  extern "C" int vsscanf(const char*, const char*, va_list);
  extern "C" int fgetc(FILE *);
  extern "C" char *fgets(char*, int, FILE*);
  extern "C" int fputc(int, FILE*);
  extern "C" int fputs(const char*, FILE*);
  extern "C" int getc(FILE*);
  extern "C" int getchar(void);
  extern "C" char *gets(char*);
  extern "C" int putc(int, FILE*);
  extern "C" int putchar(int);
  extern "C" int puts(const char*);
  extern "C" int ungetc(int, FILE*);
  extern "C" size_t fread(void*, size_t, size_t, FILE*);
  extern "C" size_t fwrite(const void*, size_t, size_t, FILE*);
  extern "C" int fgetpos(FILE*, fpos_t*);
  extern "C" int fseek(FILE*, long int, int);
  extern "C" int fsetpos(FILE*, const fpos_t*);
  extern "C" long int ftell(FILE*);
  extern "C" void rewind(FILE*);
  extern "C" void clearerr(FILE*);
  extern "C" int feof(FILE*);
  extern "C" int ferror(FILE*);
  extern "C" void perror(const char*);
}
# 42 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cwchar.h" 2 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cstdarg.h" 1 3
# 43 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cwchar.h" 2 3
# 46 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cwchar.h" 3
# 1 "/usr/include/wchar.h" 1 3
# 27 "/usr/include/wchar.h" 3
# 1 "/usr/include/features.h" 1 3
# 28 "/usr/include/wchar.h" 2 3



# 1 "/usr/include/stdio.h" 1 3
# 32 "/usr/include/wchar.h" 2 3






# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/stddef.h" 1 3
# 39 "/usr/include/wchar.h" 2 3
# 53 "/usr/include/wchar.h" 3
typedef struct
{
  int count;
  wint_t value;
} mbstate_t;
# 77 "/usr/include/wchar.h" 3
struct tm;


extern "C" {


extern wchar_t *wcscpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src) throw ();


extern wchar_t *wcsncpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src, size_t __n) throw ();



extern wchar_t *wcscat (wchar_t *__restrict __dest, __const wchar_t *__restrict __src) throw ();


extern wchar_t *wcsncat (wchar_t *__restrict __dest, __const wchar_t *__restrict __src, size_t __n) throw ();



extern int wcscmp (__const wchar_t *__s1, __const wchar_t *__s2) throw ();

extern int wcsncmp (__const wchar_t *__s1, __const wchar_t *__s2, size_t __n) throw ();




extern int wcscasecmp (__const wchar_t *__s1, __const wchar_t *__s2) throw ();


extern int wcsncasecmp (__const wchar_t *__s1, __const wchar_t *__s2, size_t __n) throw ();




# 1 "/usr/include/xlocale.h" 1 3
# 28 "/usr/include/xlocale.h" 3
typedef struct __locale_struct
{
  struct locale_data *__locales[6];


  const unsigned short int *__ctype_b;
  const int *__ctype_tolower;
  const int *__ctype_toupper;
} *__locale_t;
# 113 "/usr/include/wchar.h" 2 3

extern int __wcscasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2, __locale_t __loc) throw ();


extern int __wcsncasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2, size_t __n, __locale_t __loc) throw ();





extern int wcscoll (__const wchar_t *__s1, __const wchar_t *__s2) throw ();



extern size_t wcsxfrm (wchar_t *__restrict __s1, __const wchar_t *__restrict __s2, size_t __n) throw ();
# 136 "/usr/include/wchar.h" 3
extern int __wcscoll_l (__const wchar_t *__s1, __const wchar_t *__s2, __locale_t __loc) throw ();




extern size_t __wcsxfrm_l (wchar_t *__s1, __const wchar_t *__s2, size_t __n, __locale_t __loc) throw ();



extern wchar_t *wcsdup (__const wchar_t *__s) throw ();



extern wchar_t *wcschr (__const wchar_t *__wcs, wchar_t __wc) throw ();

extern wchar_t *wcsrchr (__const wchar_t *__wcs, wchar_t __wc) throw ();



extern size_t wcscspn (__const wchar_t *__wcs, __const wchar_t *__reject) throw ();



extern size_t wcsspn (__const wchar_t *__wcs, __const wchar_t *__accept) throw ();

extern wchar_t *wcspbrk (__const wchar_t *__wcs, __const wchar_t *__accept) throw ();


extern wchar_t *wcsstr (__const wchar_t *__haystack, __const wchar_t *__needle) throw ();
# 174 "/usr/include/wchar.h" 3
extern wchar_t *wcstok (wchar_t *__restrict __s, __const wchar_t *__restrict __delim, wchar_t **__restrict __ptr) throw ();




extern size_t __wcslen (__const wchar_t *__s) throw ();
extern size_t wcslen (__const wchar_t *__s) throw ();



extern size_t wcsnlen (__const wchar_t *__s, size_t __maxlen) throw ();




extern wchar_t *wmemchr (__const wchar_t *__s, wchar_t __c, size_t __n) throw ();


extern int wmemcmp (__const wchar_t *__restrict __s1, __const wchar_t *__restrict __s2, size_t __n) throw ();



extern wchar_t *wmemcpy (wchar_t *__restrict __s1, __const wchar_t *__restrict __s2, size_t __n) throw ();




extern wchar_t *wmemmove (wchar_t *__s1, __const wchar_t *__s2, size_t __n) throw ();



extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) throw ();




extern wint_t btowc (int __c) throw ();



extern int wctob (wint_t __c) throw ();



extern int mbsinit (__const mbstate_t *__ps) throw ();



extern size_t mbrtowc (wchar_t *__restrict __pwc, __const char *__restrict __s, size_t __n, mbstate_t *__p) throw ();




extern size_t wcrtomb (char *__restrict __s, wchar_t __wc, mbstate_t *__restrict __ps) throw ();



extern size_t __mbrlen (__const char *__restrict __s, size_t __n, mbstate_t *__restrict __ps) throw ();

extern size_t mbrlen (__const char *__restrict __s, size_t __n, mbstate_t *__restrict __ps) throw ();





extern __inline size_t mbrlen (__const char *__restrict __s, size_t __n,
                               mbstate_t *__restrict __ps) throw ()
{ return (__ps != __null
          ? mbrtowc (__null, __s, __n, __ps) : __mbrlen (__s, __n, __null)); }




extern size_t mbsrtowcs (wchar_t *__restrict __dst, __const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps) throw ();





extern size_t wcsrtombs (char *__restrict __dst, __const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps) throw ();







extern size_t mbsnrtowcs (wchar_t *__restrict __dst, __const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps) throw ();





extern size_t wcsnrtombs (char *__restrict __dst, __const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps) throw ();
# 277 "/usr/include/wchar.h" 3
extern int wcwidth (wint_t __c) throw ();



extern int wcswidth (__const wchar_t *__s, size_t __n) throw ();





extern double wcstod (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr) throw ();




extern float wcstof (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr) throw ();

extern long double wcstold (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr) throw ();






extern long int wcstol (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) throw ();




extern unsigned long int wcstoul (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) throw ();






__extension__
extern long long int wcstoq (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) throw ();




__extension__
extern unsigned long long int wcstouq (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) throw ();







__extension__
extern long long int wcstoll (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) throw ();




__extension__
extern unsigned long long int wcstoull (__const wchar_t * __restrict __nptr, wchar_t **__restrict __endptr, int __base) throw ();
# 355 "/usr/include/wchar.h" 3
# 1 "/usr/include/xlocale.h" 1 3
# 356 "/usr/include/wchar.h" 2 3



extern long int __wcstol_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base, __locale_t __loc) throw ();



extern unsigned long int __wcstoul_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base, __locale_t __loc) throw ();



__extension__
extern long long int __wcstoll_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base, __locale_t __loc) throw ();



__extension__
extern unsigned long long int __wcstoull_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base, __locale_t __loc) throw ();





extern double __wcstod_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, __locale_t __loc) throw ();



extern float __wcstof_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, __locale_t __loc) throw ();



extern long double __wcstold_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, __locale_t __loc) throw ();







extern double __wcstod_internal (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __group) throw ();


extern float __wcstof_internal (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __group) throw ();


extern long double __wcstold_internal (__const wchar_t * __restrict __nptr, wchar_t **__restrict __endptr, int __group) throw ();





extern long int __wcstol_internal (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base, int __group) throw ();





extern unsigned long int __wcstoul_internal (__const wchar_t * __restrict __nptr, wchar_t ** __restrict __endptr, int __base, int __group) throw ();







__extension__
extern long long int __wcstoll_internal (__const wchar_t * __restrict __nptr, wchar_t **__restrict __endptr, int __base, int __group) throw ();






__extension__
extern unsigned long long int __wcstoull_internal (__const wchar_t * __restrict __nptr, wchar_t ** __restrict __endptr, int __base, int __group) throw ();
# 443 "/usr/include/wchar.h" 3
extern __inline double wcstod (__const wchar_t *__restrict __nptr,
                               wchar_t **__restrict __endptr) throw ()
{ return __wcstod_internal (__nptr, __endptr, 0); }
extern __inline long int wcstol (__const wchar_t *__restrict __nptr,
                                 wchar_t **__restrict __endptr,
                                 int __base) throw ()
{ return __wcstol_internal (__nptr, __endptr, __base, 0); }
extern __inline unsigned long int wcstoul (__const wchar_t *__restrict __nptr,
                                           wchar_t **__restrict __endptr,
                                           int __base) throw ()
{ return __wcstoul_internal (__nptr, __endptr, __base, 0); }


extern __inline float wcstof (__const wchar_t *__restrict __nptr,
                              wchar_t **__restrict __endptr) throw ()
{ return __wcstof_internal (__nptr, __endptr, 0); }
extern __inline long double wcstold (__const wchar_t *__restrict __nptr,
                                         wchar_t **__restrict __endptr) throw ()
{ return __wcstold_internal (__nptr, __endptr, 0); }


__extension__
extern __inline long long int wcstoq (__const wchar_t *__restrict __nptr,
                                      wchar_t **__restrict __endptr,
                                      int __base) throw ()
{ return __wcstoll_internal (__nptr, __endptr, __base, 0); }
__extension__
extern __inline unsigned long long int wcstouq (__const wchar_t *
                                                __restrict __nptr,
                                                wchar_t **__restrict __endptr,
                                                int __base) throw ()
{ return __wcstoull_internal (__nptr, __endptr, __base, 0); }







extern wchar_t *wcpcpy (wchar_t *__dest, __const wchar_t *__src) throw ();



extern wchar_t *wcpncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n) throw ();
# 502 "/usr/include/wchar.h" 3
}
# 47 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cwchar.h" 2 3
# 62 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cwchar.h" 3
namespace std
{
  using ::mbstate_t;
}
# 41 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_iosfwd.h" 2 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/stringfwd.h" 1 3
# 38 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/stringfwd.h" 3

# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/i686-pc-linux-gnu/bits/c++config.h" 1 3
# 40 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/stringfwd.h" 2 3

namespace std
{
  template<class _CharT>
    struct char_traits;

  template<typename _Alloc>
    class allocator;

  template<typename _CharT, typename _Traits = char_traits<_CharT>,
           typename _Alloc = allocator<_CharT> >
    class basic_string;

  typedef basic_string<char> string;



}
# 42 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_iosfwd.h" 2 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/functexcept.h" 1 3
# 34 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/functexcept.h" 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/exception_defines.h" 1 3
# 35 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/functexcept.h" 2 3

namespace std
{

  void
  __throw_bad_exception(void);


  void
  __throw_bad_alloc(void);


  void
  __throw_bad_cast(void);

  void
  __throw_bad_typeid(void);


  void
  __throw_logic_error(const char* __s);

  void
  __throw_domain_error(const char* __s);

  void
  __throw_invalid_argument(const char* __s);

  void
  __throw_length_error(const char* __s);

  void
  __throw_out_of_range(const char* __s);

  void
  __throw_runtime_error(const char* __s);

  void
  __throw_range_error(const char* __s);

  void
  __throw_overflow_error(const char* __s);

  void
  __throw_underflow_error(const char* __s);


  void
  __throw_ios_failure(const char* __s);
}
# 43 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_iosfwd.h" 2 3

namespace std
{

  template<> class char_traits<char>;




  template<typename _CharT, typename _Traits = char_traits<_CharT> >
    class basic_ios;

  template<typename _CharT, typename _Traits = char_traits<_CharT> >
    class basic_streambuf;

  template<typename _CharT, typename _Traits = char_traits<_CharT> >
    class basic_istream;

  template<typename _CharT, typename _Traits = char_traits<_CharT> >
    class basic_ostream;

  template<typename _CharT, typename _Traits = char_traits<_CharT> >
    class basic_iostream;

  template<typename _CharT, typename _Traits = char_traits<_CharT>,
            typename _Alloc = allocator<_CharT> >
    class basic_stringbuf;

  template<typename _CharT, typename _Traits = char_traits<_CharT>,
           typename _Alloc = allocator<_CharT> >
    class basic_istringstream;

  template<typename _CharT, typename _Traits = char_traits<_CharT>,
           typename _Alloc = allocator<_CharT> >
    class basic_ostringstream;

  template<typename _CharT, typename _Traits = char_traits<_CharT>,
           typename _Alloc = allocator<_CharT> >
    class basic_stringstream;

  template<typename _CharT, typename _Traits = char_traits<_CharT> >
    class basic_filebuf;

  template<typename _CharT, typename _Traits = char_traits<_CharT> >
    class basic_ifstream;

  template<typename _CharT, typename _Traits = char_traits<_CharT> >
    class basic_ofstream;

  template<typename _CharT, typename _Traits = char_traits<_CharT> >
    class basic_fstream;

  template<typename _CharT, typename _Traits = char_traits<_CharT> >
    class istreambuf_iterator;

  template<typename _CharT, typename _Traits = char_traits<_CharT> >
    class ostreambuf_iterator;



  class ios_base;


  template<class _State> struct fpos;





  typedef fpos<mbstate_t> streampos;





  typedef basic_ios<char> ios;
  typedef basic_streambuf<char> streambuf;
  typedef basic_istream<char> istream;
  typedef basic_ostream<char> ostream;
  typedef basic_iostream<char> iostream;
  typedef basic_stringbuf<char> stringbuf;
  typedef basic_istringstream<char> istringstream;
  typedef basic_ostringstream<char> ostringstream;
  typedef basic_stringstream<char> stringstream;
  typedef basic_filebuf<char> filebuf;
  typedef basic_ifstream<char> ifstream;
  typedef basic_ofstream<char> ofstream;
  typedef basic_fstream<char> fstream;
# 147 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_iosfwd.h" 3
}
# 40 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_ios.h" 2 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/exception" 1 3
# 34 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/exception" 3
#pragma interface "exception"

extern "C++" {

namespace std
{
  class exception
  {
  public:
    exception() throw() { }
    virtual ~exception() throw() { }
    virtual const char* what() const throw();
  };

  class bad_exception : public exception
  {
  public:
    bad_exception() throw() { }
    virtual ~bad_exception() throw() { }
  };

  typedef void (*terminate_handler) ();
  typedef void (*unexpected_handler) ();

  terminate_handler set_terminate(terminate_handler) throw();
  void terminate() __attribute__ ((__noreturn__));

  unexpected_handler set_unexpected(unexpected_handler) throw();
  void unexpected() __attribute__ ((__noreturn__));

  bool uncaught_exception() throw();
}

}
# 41 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_ios.h" 2 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/char_traits.h" 1 3
# 38 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/char_traits.h" 3

# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cwchar.h" 1 3
# 40 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/char_traits.h" 2 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cstring.h" 1 3
# 39 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cstring.h" 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/i686-pc-linux-gnu/bits/c++config.h" 1 3
# 40 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cstring.h" 2 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cstddef.h" 1 3
# 41 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cstring.h" 2 3
# 43 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cstring.h" 3
# 1 "/usr/include/string.h" 1 3
# 26 "/usr/include/string.h" 3
# 1 "/usr/include/features.h" 1 3
# 27 "/usr/include/string.h" 2 3

extern "C" {




# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/stddef.h" 1 3
# 34 "/usr/include/string.h" 2 3



extern void * memcpy (void * __restrict __dest, __const void * __restrict __src, size_t __n) throw ();



extern void * memmove (void * __dest, __const void * __src, size_t __n) throw ();






extern void * memccpy (void * __dest, __const void * __src, int __c, size_t __n) throw ();





extern void * memset (void * __s, int __c, size_t __n) throw ();


extern int memcmp (__const void * __s1, __const void * __s2, size_t __n) throw ();



extern void * memchr (__const void * __s, int __c, size_t __n) throw ();




extern void * rawmemchr (__const void * __s, int __c) throw ();




extern char *strcpy (char *__restrict __dest, __const char *__restrict __src) throw ();


extern char *strncpy (char *__restrict __dest, __const char *__restrict __src, size_t __n) throw ();



extern char *strcat (char *__restrict __dest, __const char *__restrict __src) throw ();


extern char *strncat (char *__restrict __dest, __const char *__restrict __src, size_t __n) throw ();



extern int strcmp (__const char *__s1, __const char *__s2) throw ();

extern int strncmp (__const char *__s1, __const char *__s2, size_t __n) throw ();


extern int strcoll (__const char *__s1, __const char *__s2) throw ();

extern size_t strxfrm (char *__restrict __dest, __const char *__restrict __src, size_t __n) throw ();






# 1 "/usr/include/xlocale.h" 1 3
# 100 "/usr/include/string.h" 2 3


extern int __strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l) throw ();


extern size_t __strxfrm_l (char *__dest, __const char *__src, size_t __n, __locale_t __l) throw ();





extern char *__strdup (__const char *__s) throw ();
extern char *strdup (__const char *__s) throw ();






extern char *strndup (__const char *__string, size_t __n) throw ();
# 146 "/usr/include/string.h" 3
extern char *strchr (__const char *__s, int __c) throw ();

extern char *strrchr (__const char *__s, int __c) throw ();




extern char *strchrnul (__const char *__s, int __c) throw ();




extern size_t strcspn (__const char *__s, __const char *__reject) throw ();


extern size_t strspn (__const char *__s, __const char *__accept) throw ();

extern char *strpbrk (__const char *__s, __const char *__accept) throw ();

extern char *strstr (__const char *__haystack, __const char *__needle) throw ();



extern char *__strcasestr (__const char *__haystack, __const char *__needle) throw ();

extern char *strcasestr (__const char *__haystack, __const char *__needle) throw ();




extern char *strtok (char *__restrict __s, __const char *__restrict __delim) throw ();




extern char *__strtok_r (char *__restrict __s, __const char *__restrict __delim, char **__restrict __save_ptr) throw ();



extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim, char **__restrict __save_ptr) throw ();
# 194 "/usr/include/string.h" 3
extern void * memmem (__const void * __haystack, size_t __haystacklen, __const void * __needle, size_t __needlelen) throw ();




extern void * __mempcpy (void * __restrict __dest, __const void * __restrict __src, size_t __n) throw ();

extern void * mempcpy (void * __restrict __dest, __const void * __restrict __src, size_t __n) throw ();





extern size_t strlen (__const char *__s) throw ();




extern size_t strnlen (__const char *__string, size_t __maxlen) throw ();




extern char *strerror (int __errnum) throw ();



extern char *__strerror_r (int __errnum, char *__buf, size_t __buflen) throw ();
extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) throw ();




extern void __bzero (void * __s, size_t __n) throw ();



extern void bcopy (__const void * __src, void * __dest, size_t __n) throw ();


extern void bzero (void * __s, size_t __n) throw ();


extern int bcmp (__const void * __s1, __const void * __s2, size_t __n) throw ();


extern char *index (__const char *__s, int __c) throw ();


extern char *rindex (__const char *__s, int __c) throw ();



extern int __ffs (int __i) throw () __attribute__ ((const));
extern int ffs (int __i) throw () __attribute__ ((const));




extern int ffsl (long int __l) throw () __attribute__ ((const));

__extension__ extern int ffsll (long long int __ll) throw ()
     __attribute__ ((const));




extern int __strcasecmp (__const char *__s1, __const char *__s2) throw ();
extern int strcasecmp (__const char *__s1, __const char *__s2) throw ();


extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n) throw ();






extern int __strcasecmp_l (__const char *__s1, __const char *__s2, __locale_t __loc) throw ();


extern int __strncasecmp_l (__const char *__s1, __const char *__s2, size_t __n, __locale_t __loc) throw ();






extern char *strsep (char **__restrict __stringp, __const char *__restrict __delim) throw ();





extern int strverscmp (__const char *__s1, __const char *__s2) throw ();


extern char *strsignal (int __sig) throw ();


extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src) throw ();

extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src) throw ();




extern char *__stpncpy (char *__restrict __dest, __const char *__restrict __src, size_t __n) throw ();

extern char *stpncpy (char *__restrict __dest, __const char *__restrict __src, size_t __n) throw ();



extern char *strfry (char *__string) throw ();


extern void * memfrob (void * __s, size_t __n) throw ();






extern char *basename (__const char *__filename) throw ();
# 350 "/usr/include/string.h" 3
}
# 44 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cstring.h" 2 3
# 69 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cstring.h" 3
namespace std
{
  extern "C" void* memcpy(void*, const void*, size_t);
  extern "C" void* memmove(void*, const void*, size_t);
  extern "C" char* strcpy(char*, const char*);
  extern "C" char* strncpy(char*, const char*, size_t);
  extern "C" char* strcat(char*, const char*);
  extern "C" char* strncat(char*, const char*, size_t);
  extern "C" int memcmp(const void*, const void*, size_t);
  extern "C" int strcmp(const char*, const char*);
  extern "C" int strcoll(const char*, const char*);
  extern "C" int strncmp(const char*, const char*, size_t);
  extern "C" size_t strxfrm(char*, const char*, size_t);
  extern "C" void* memchr(const void*, int, size_t);
  extern "C" char* strchr(const char*, int);
  extern "C" size_t strcspn(const char*, const char*);
  extern "C" char* strpbrk(const char*, const char*);
  extern "C" char* strrchr(const char*, int);
  extern "C" size_t strspn(const char*, const char*);
  extern "C" char* strstr(const char*, const char*);
  extern "C" char* strtok(char*, const char*);
  extern "C" void* memset(void*, int, size_t);
  extern "C" char* strerror(int);
  extern "C" size_t strlen(const char*);
}
# 41 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/char_traits.h" 2 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/fpos.h" 1 3
# 38 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/fpos.h" 3




# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/i686-pc-linux-gnu/bits/c++io.h" 1 3
# 35 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/i686-pc-linux-gnu/bits/c++io.h" 3
# 1 "/usr/include/stdio.h" 1 3
# 36 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/i686-pc-linux-gnu/bits/c++io.h" 2 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/stddef.h" 1 3
# 37 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/i686-pc-linux-gnu/bits/c++io.h" 2 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/i686-pc-linux-gnu/bits/c++threads.h" 1 3
# 39 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/i686-pc-linux-gnu/bits/c++threads.h" 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/i686-pc-linux-gnu/bits/c++config.h" 1 3
# 40 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/i686-pc-linux-gnu/bits/c++threads.h" 2 3




# 1 "/usr/include/pthread.h" 1 3
# 18 "/usr/include/pthread.h" 3
# 1 "/usr/include/features.h" 1 3
# 19 "/usr/include/pthread.h" 2 3

# 1 "/usr/include/sched.h" 1 3
# 23 "/usr/include/sched.h" 3
# 1 "/usr/include/features.h" 1 3
# 24 "/usr/include/sched.h" 2 3


# 1 "/usr/include/bits/types.h" 1 3
# 27 "/usr/include/sched.h" 2 3


# 1 "/usr/include/time.h" 1 3
# 83 "/usr/include/time.h" 3
struct timespec
  {
    long int tv_sec;
    long int tv_nsec;
  };
# 30 "/usr/include/sched.h" 2 3


# 1 "/usr/include/bits/sched.h" 1 3
# 47 "/usr/include/bits/sched.h" 3
struct sched_param
  {
    int sched_priority;
  };

extern "C" {



extern int clone (int (*__fn) (void *__arg), void *__child_stack, int __flags, void *__arg) throw ();



}
# 33 "/usr/include/sched.h" 2 3

extern "C" {


extern int __sched_setparam (__pid_t __pid, __const struct sched_param *__param) throw ();

extern int sched_setparam (__pid_t __pid, __const struct sched_param *__param) throw ();



extern int __sched_getparam (__pid_t __pid, struct sched_param *__param) throw ();
extern int sched_getparam (__pid_t __pid, struct sched_param *__param) throw ();


extern int __sched_setscheduler (__pid_t __pid, int __policy, __const struct sched_param *__param) throw ();

extern int sched_setscheduler (__pid_t __pid, int __policy, __const struct sched_param *__param) throw ();



extern int __sched_getscheduler (__pid_t __pid) throw ();
extern int sched_getscheduler (__pid_t __pid) throw ();


extern int __sched_yield (void) throw ();
extern int sched_yield (void) throw ();


extern int __sched_get_priority_max (int __algorithm) throw ();
extern int sched_get_priority_max (int __algorithm) throw ();


extern int __sched_get_priority_min (int __algorithm) throw ();
extern int sched_get_priority_min (int __algorithm) throw ();


extern int __sched_rr_get_interval (__pid_t __pid, struct timespec *__t) throw ();
extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) throw ();

}
# 21 "/usr/include/pthread.h" 2 3
# 1 "/usr/include/time.h" 1 3
# 28 "/usr/include/time.h" 3
# 1 "/usr/include/features.h" 1 3
# 29 "/usr/include/time.h" 2 3

extern "C" {







# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/stddef.h" 1 3
# 39 "/usr/include/time.h" 2 3



# 1 "/usr/include/bits/time.h" 1 3
# 43 "/usr/include/time.h" 2 3
# 57 "/usr/include/time.h" 3
# 1 "/usr/include/bits/types.h" 1 3
# 58 "/usr/include/time.h" 2 3


typedef __clock_t clock_t;







# 1 "/usr/include/bits/types.h" 1 3
# 69 "/usr/include/time.h" 2 3


typedef __time_t time_t;
# 95 "/usr/include/time.h" 3
struct tm
{
  int tm_sec;
  int tm_min;
  int tm_hour;
  int tm_mday;
  int tm_mon;
  int tm_year;
  int tm_wday;
  int tm_yday;
  int tm_isdst;


  long int tm_gmtoff;
  __const char *tm_zone;




};




extern clock_t clock (void) throw ();


extern time_t time (time_t *__timer) throw ();


extern double difftime (time_t __time1, time_t __time0) throw ()
     __attribute__ ((__const__));


extern time_t mktime (struct tm *__tp) throw ();





extern size_t strftime (char *__restrict __s, size_t __maxsize, __const char *__restrict __format, __const struct tm *__restrict __tp) throw ();






extern char *strptime (__const char *__s, __const char *__fmt, struct tm *__tp) throw ();






extern struct tm *gmtime (__const time_t *__timer) throw ();



extern struct tm *localtime (__const time_t *__timer) throw ();




extern struct tm *__gmtime_r (__const time_t *__restrict __timer, struct tm *__restrict __tp) throw ();

extern struct tm *gmtime_r (__const time_t *__restrict __timer, struct tm *__restrict __tp) throw ();




extern struct tm *localtime_r (__const time_t *__restrict __timer, struct tm *__restrict __tp) throw ();





extern char *asctime (__const struct tm *__tp) throw ();


extern char *ctime (__const time_t *__timer) throw ();






extern char *asctime_r (__const struct tm *__restrict __tp, char *__restrict __buf) throw ();



extern char *ctime_r (__const time_t *__restrict __timer, char *__restrict __buf) throw ();





extern char *__tzname[2];
extern int __daylight;
extern long int __timezone;




extern char *tzname[2];



extern void tzset (void) throw ();



extern int daylight;
extern long int timezone;





extern int stime (__const time_t *__when) throw ();
# 228 "/usr/include/time.h" 3
extern time_t timegm (struct tm *__tp) throw ();


extern time_t timelocal (struct tm *__tp) throw ();


extern int dysize (int __year) throw ();





extern int nanosleep (__const struct timespec *__requested_time, struct timespec *__remaining) throw ();
# 257 "/usr/include/time.h" 3
extern int getdate_err;





extern struct tm *getdate (__const char *__string) throw ();
# 272 "/usr/include/time.h" 3
extern int getdate_r (__const char *__restrict __string, struct tm *__restrict __resbufp) throw ();




}
# 22 "/usr/include/pthread.h" 2 3


# 1 "/usr/include/signal.h" 1 3
# 29 "/usr/include/signal.h" 3
# 1 "/usr/include/features.h" 1 3
# 30 "/usr/include/signal.h" 2 3

extern "C" {

# 1 "/usr/include/bits/sigset.h" 1 3
# 23 "/usr/include/bits/sigset.h" 3
typedef int __sig_atomic_t;




typedef struct
  {
    unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
  } __sigset_t;
# 34 "/usr/include/signal.h" 2 3
# 49 "/usr/include/signal.h" 3
typedef __sigset_t sigset_t;
# 362 "/usr/include/signal.h" 3
}
# 25 "/usr/include/pthread.h" 2 3
# 1 "/usr/include/bits/pthreadtypes.h" 1 3
# 26 "/usr/include/pthread.h" 2 3


extern "C" {
# 49 "/usr/include/pthread.h" 3
enum
{
  PTHREAD_CREATE_JOINABLE,

  PTHREAD_CREATE_DETACHED

};

enum
{
  PTHREAD_INHERIT_SCHED,

  PTHREAD_EXPLICIT_SCHED

};

enum
{
  PTHREAD_SCOPE_SYSTEM,

  PTHREAD_SCOPE_PROCESS

};

enum
{
  PTHREAD_MUTEX_FAST_NP,
  PTHREAD_MUTEX_RECURSIVE_NP,
  PTHREAD_MUTEX_ERRORCHECK_NP

  ,
  PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_FAST_NP,
  PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP,
  PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP,
  PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL

};

enum
{
  PTHREAD_PROCESS_PRIVATE,

  PTHREAD_PROCESS_SHARED

};


enum
{
  PTHREAD_RWLOCK_PREFER_READER_NP,
  PTHREAD_RWLOCK_PREFER_WRITER_NP,
  PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP,
  PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_WRITER_NP
};






struct _pthread_cleanup_buffer
{
  void (*__routine) (void *);
  void *__arg;
  int __canceltype;
  struct _pthread_cleanup_buffer *__prev;
};



enum
{
  PTHREAD_CANCEL_ENABLE,

  PTHREAD_CANCEL_DISABLE

};
enum
{
  PTHREAD_CANCEL_DEFERRED,

  PTHREAD_CANCEL_ASYNCHRONOUS

};
# 141 "/usr/include/pthread.h" 3
extern int pthread_create (pthread_t *__thread, __const pthread_attr_t *__attr, void *(*__start_routine) (void *), void *__arg) throw ();





extern pthread_t pthread_self (void) throw ();


extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) throw ();


extern void pthread_exit (void *__retval) throw () __attribute__ ((__noreturn__));




extern int pthread_join (pthread_t __th, void **__thread_return) throw ();





extern int pthread_detach (pthread_t __th) throw ();







extern int pthread_attr_init (pthread_attr_t *__attr) throw ();


extern int pthread_attr_destroy (pthread_attr_t *__attr) throw ();


extern int pthread_attr_setdetachstate (pthread_attr_t *__attr, int __detachstate) throw ();



extern int pthread_attr_getdetachstate (__const pthread_attr_t *__attr, int *__detachstate) throw ();



extern int pthread_attr_setschedparam (pthread_attr_t *__attr, __const struct sched_param *__param) throw ();



extern int pthread_attr_getschedparam (__const pthread_attr_t *__attr, struct sched_param *__param) throw ();



extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy) throw ();



extern int pthread_attr_getschedpolicy (__const pthread_attr_t *__attr, int *__policy) throw ();



extern int pthread_attr_setinheritsched (pthread_attr_t *__attr, int __inherit) throw ();



extern int pthread_attr_getinheritsched (__const pthread_attr_t *__attr, int *__inherit) throw ();



extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope) throw ();


extern int pthread_attr_getscope (__const pthread_attr_t *__attr, int *__scope) throw ();




extern int pthread_attr_setguardsize (pthread_attr_t *__attr, size_t __guardsize) throw ();



extern int pthread_attr_getguardsize (__const pthread_attr_t *__attr, size_t *__guardsize) throw ();







extern int pthread_attr_setstackaddr (pthread_attr_t *__attr, void *__stackaddr) throw ();



extern int pthread_attr_getstackaddr (__const pthread_attr_t *__attr, void **__stackaddr) throw ();





extern int pthread_attr_setstacksize (pthread_attr_t *__attr, size_t __stacksize) throw ();



extern int pthread_attr_getstacksize (__const pthread_attr_t *__attr, size_t *__stacksize) throw ();






extern int pthread_setschedparam (pthread_t __target_thread, int __policy, __const struct sched_param *__param) throw ();



extern int pthread_getschedparam (pthread_t __target_thread, int *__policy, struct sched_param *__param) throw ();





extern int pthread_getconcurrency (void) throw ();


extern int pthread_setconcurrency (int __level) throw ();






extern int __pthread_mutex_init (pthread_mutex_t *__mutex, __const pthread_mutexattr_t *__mutex_attr) throw ();

extern int pthread_mutex_init (pthread_mutex_t *__mutex, __const pthread_mutexattr_t *__mutex_attr) throw ();



extern int __pthread_mutex_destroy (pthread_mutex_t *__mutex) throw ();
extern int pthread_mutex_destroy (pthread_mutex_t *__mutex) throw ();


extern int __pthread_mutex_trylock (pthread_mutex_t *__mutex) throw ();
extern int pthread_mutex_trylock (pthread_mutex_t *__mutex) throw ();


extern int __pthread_mutex_lock (pthread_mutex_t *__mutex) throw ();
extern int pthread_mutex_lock (pthread_mutex_t *__mutex) throw ();


extern int __pthread_mutex_unlock (pthread_mutex_t *__mutex) throw ();
extern int pthread_mutex_unlock (pthread_mutex_t *__mutex) throw ();






extern int __pthread_mutexattr_init (pthread_mutexattr_t *__attr) throw ();
extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr) throw ();


extern int __pthread_mutexattr_destroy (pthread_mutexattr_t *__attr) throw ();
extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr) throw ();





extern int __pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind) throw ();

extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind) throw ();



extern int pthread_mutexattr_gettype (__const pthread_mutexattr_t *__attr, int *__kind) throw ();
# 323 "/usr/include/pthread.h" 3
extern int pthread_cond_init (pthread_cond_t *__cond, __const pthread_condattr_t *__cond_attr) throw ();



extern int pthread_cond_destroy (pthread_cond_t *__cond) throw ();


extern int pthread_cond_signal (pthread_cond_t *__cond) throw ();


extern int pthread_cond_broadcast (pthread_cond_t *__cond) throw ();



extern int pthread_cond_wait (pthread_cond_t *__cond, pthread_mutex_t *__mutex) throw ();






extern int pthread_cond_timedwait (pthread_cond_t *__cond, pthread_mutex_t *__mutex, __const struct timespec *__abstime) throw ();






extern int pthread_condattr_init (pthread_condattr_t *__attr) throw ();


extern int pthread_condattr_destroy (pthread_condattr_t *__attr) throw ();







extern int pthread_rwlock_init (pthread_rwlock_t *__rwlock, __const pthread_rwlockattr_t *__attr) throw ();



extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock) throw ();


extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock) throw ();


extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock) throw ();


extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock) throw ();


extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock) throw ();


extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock) throw ();





extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr) throw ();


extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr) throw ();


extern int pthread_rwlockattr_getpshared (__const pthread_rwlockattr_t *__attr, int *__pshared) throw ();




extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr, int __pshared) throw ();



extern int pthread_rwlockattr_getkind_np (__const pthread_rwlockattr_t *__attr, int *__pref) throw ();




extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr, int __pref) throw ();
# 420 "/usr/include/pthread.h" 3
extern int __pthread_key_create (pthread_key_t *__key, void (*__destr_function) (void *)) throw ();

extern int pthread_key_create (pthread_key_t *__key, void (*__destr_function) (void *)) throw ();



extern int pthread_key_delete (pthread_key_t __key) throw ();


extern int __pthread_setspecific (pthread_key_t __key, __const void *__pointer) throw ();

extern int pthread_setspecific (pthread_key_t __key, __const void *__pointer) throw ();



extern void *__pthread_getspecific (pthread_key_t __key) throw ();
extern void *pthread_getspecific (pthread_key_t __key) throw ();
# 445 "/usr/include/pthread.h" 3
extern int __pthread_once (pthread_once_t *__once_control, void (*__init_routine) (void)) throw ();

extern int pthread_once (pthread_once_t *__once_control, void (*__init_routine) (void)) throw ();







extern int pthread_setcancelstate (int __state, int *__oldstate) throw ();



extern int pthread_setcanceltype (int __type, int *__oldtype) throw ();


extern int pthread_cancel (pthread_t __thread) throw ();




extern void pthread_testcancel (void) throw ();
# 481 "/usr/include/pthread.h" 3
extern void _pthread_cleanup_push (struct _pthread_cleanup_buffer *__buffer, void (*__routine) (void *), void *__arg) throw ();
# 491 "/usr/include/pthread.h" 3
extern void _pthread_cleanup_pop (struct _pthread_cleanup_buffer *__buffer, int __execute) throw ();
# 502 "/usr/include/pthread.h" 3
extern void _pthread_cleanup_push_defer (struct _pthread_cleanup_buffer *__buffer, void (*__routine) (void *), void *__arg) throw ();
# 513 "/usr/include/pthread.h" 3
extern void _pthread_cleanup_pop_restore (struct _pthread_cleanup_buffer *__buffer, int __execute) throw ();




# 1 "/usr/include/bits/sigthread.h" 1 3
# 31 "/usr/include/bits/sigthread.h" 3
extern int pthread_sigmask (int __how, __const __sigset_t *__newmask, __sigset_t *__oldmask) throw ();



extern int pthread_kill (pthread_t __thread, int __signo) throw ();
# 519 "/usr/include/pthread.h" 2 3
# 534 "/usr/include/pthread.h" 3
extern int __pthread_atfork (void (*__prepare) (void), void (*__parent) (void), void (*__child) (void)) throw ();


extern int pthread_atfork (void (*__prepare) (void), void (*__parent) (void), void (*__child) (void)) throw ();






extern void pthread_kill_other_threads_np (void) throw ();



extern void __pthread_initialize (void) throw ();

}
# 45 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/i686-pc-linux-gnu/bits/c++threads.h" 2 3
# 64 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/i686-pc-linux-gnu/bits/c++threads.h" 3
namespace std {
  typedef pthread_mutex_t __mutext_type;
}
# 38 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/i686-pc-linux-gnu/bits/c++io.h" 2 3

namespace std
{

  typedef long streamoff;
  typedef ptrdiff_t streamsize;




  typedef fpos_t __c_streampos;


  typedef __mutext_type __c_lock;






  typedef FILE __c_file_type;


  struct __ios_flags
  {
    typedef short __int_type;

    static const __int_type _S_boolalpha = 0x0001;
    static const __int_type _S_dec = 0x0002;
    static const __int_type _S_fixed = 0x0004;
    static const __int_type _S_hex = 0x0008;
    static const __int_type _S_internal = 0x0010;
    static const __int_type _S_left = 0x0020;
    static const __int_type _S_oct = 0x0040;
    static const __int_type _S_right = 0x0080;
    static const __int_type _S_scientific = 0x0100;
    static const __int_type _S_showbase = 0x0200;
    static const __int_type _S_showpoint = 0x0400;
    static const __int_type _S_showpos = 0x0800;
    static const __int_type _S_skipws = 0x1000;
    static const __int_type _S_unitbuf = 0x2000;
    static const __int_type _S_uppercase = 0x4000;
    static const __int_type _S_adjustfield = 0x0020 | 0x0080 | 0x0010;
    static const __int_type _S_basefield = 0x0002 | 0x0040 | 0x0008;
    static const __int_type _S_floatfield = 0x0100 | 0x0004;


    static const __int_type _S_badbit = 0x01;
    static const __int_type _S_eofbit = 0x02;
    static const __int_type _S_failbit = 0x04;


    static const __int_type _S_app = 0x01;
    static const __int_type _S_ate = 0x02;
    static const __int_type _S_bin = 0x04;
    static const __int_type _S_in = 0x08;
    static const __int_type _S_out = 0x10;
    static const __int_type _S_trunc = 0x20;
  };
}
# 43 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/fpos.h" 2 3

namespace std {




  template<typename _StateT>
    class fpos
    {
    public:

      typedef _StateT __state_type;

    private:
      __state_type _M_st;
      streamoff _M_off;

    public:
      __state_type
      state() const { return _M_st; }

      void
      state(__state_type __st) { _M_st = __st; }



      fpos(): _M_st(__state_type()), _M_off(streamoff()) { }

      fpos(streamoff __off, __state_type __st = __state_type())
      : _M_st(__st), _M_off(__off) { }

      operator streamoff() const { return _M_off; }

      fpos&
      operator+=(streamoff __off) { _M_off += __off; return *this; }

      fpos&
      operator-=(streamoff __off) { _M_off -= __off; return *this; }

      bool
      operator==(const fpos& __pos) const { return _M_off == __pos._M_off; }

      bool
      operator!=(const fpos& __pos) const { return _M_off != __pos._M_off; }

      streamoff
      _M_position() const { return _M_off; }

      void
      _M_position(streamoff __off) { _M_off = __off; }
    };

  template<typename _State>
    inline fpos<_State>
    operator+(const fpos<_State>& __pos, streamoff __off)
    {
      fpos<_State> t(__pos);
      return t += __off;
    }

  template<typename _State>
    inline fpos<_State>
    operator-(const fpos<_State>& __pos, streamoff __off)
    {
      fpos<_State> t(__pos);
      return t -= __off;
    }

  template<typename _State>
    inline streamoff
    operator-(const fpos<_State>& __pos1, const fpos<_State>& __pos2)
    { return __pos1._M_position() - __pos2._M_position(); }

}
# 42 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/char_traits.h" 2 3

namespace std {







    typedef fpos<mbstate_t> streampos;
# 61 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/char_traits.h" 3
  template<class _CharT>
    struct char_traits
    {
      typedef _CharT char_type;

      typedef unsigned long int_type;
      typedef streampos pos_type;
      typedef streamoff off_type;
      typedef mbstate_t state_type;

      static void
      assign(char_type& __c1, const char_type& __c2)
      { __c1 = __c2; }

      static bool
      eq(const char_type& __c1, const char_type& __c2)
      { return __c1 == __c2; }

      static bool
      lt(const char_type& __c1, const char_type& __c2)
      { return __c1 < __c2; }

      static int
      compare(const char_type* __s1, const char_type* __s2, size_t __n)
      {
        for (size_t __i = 0; __i < __n; ++__i)
          if (!eq(__s1[__i], __s2[__i]))
            return lt(__s1[__i], __s2[__i]) ? -1 : 1;
        return 0;
      }

      static size_t
      length(const char_type* __s)
      {
        const char_type* __p = __s;
        while (*__p) ++__p;
        return (__p - __s);
      }

      static const char_type*
      find(const char_type* __s, size_t __n, const char_type& __a)
      {
        for (const char_type* __p = __s; size_t(__p - __s) < __n; ++__p)
          if (*__p == __a) return __p;
        return 0;
      }

      static char_type*
      move(char_type* __s1, const char_type* __s2, size_t __n)
      { return (char_type*) memmove(__s1, __s2, __n * sizeof(char_type)); }

      static char_type*
      copy(char_type* __s1, const char_type* __s2, size_t __n)
      { return (char_type*) memcpy(__s1, __s2, __n * sizeof(char_type)); }

      static char_type*
      assign(char_type* __s, size_t __n, char_type __a)
      {
        for (char_type* __p = __s; __p < __s + __n; ++__p)
          assign(*__p, __a);
        return __s;
      }

      static char_type
      to_char_type(const int_type& __c)
      { return char_type(__c); }

      static int_type
      to_int_type(const char_type& __c) { return int_type(__c); }

      static bool
      eq_int_type(const int_type& __c1, const int_type& __c2)
      { return __c1 == __c2; }

      static int_type
      eof() { return static_cast<int_type>(-1); }

      static int_type
      not_eof(const int_type& __c)
      { return eq_int_type(__c, eof()) ? int_type(0) : __c; }
    };



  template<>
    struct char_traits<char>
    {
      typedef char char_type;
      typedef int int_type;
      typedef streampos pos_type;
      typedef streamoff off_type;
      typedef mbstate_t state_type;

      static void
      assign(char_type& __c1, const char_type& __c2)
      { __c1 = __c2; }

      static bool
      eq(const char_type& __c1, const char_type& __c2)
      { return __c1 == __c2; }

      static bool
      lt(const char_type& __c1, const char_type& __c2)
      { return __c1 < __c2; }

      static int
      compare(const char_type* __s1, const char_type* __s2, size_t __n)
      { return memcmp(__s1, __s2, __n); }

      static size_t
      length(const char_type* __s)
      { return strlen(__s); }

      static const char_type*
      find(const char_type* __s, size_t __n, const char_type& __a)
      { return static_cast<const char_type*>(memchr(__s, __a, __n)); }

      static char_type*
      move(char_type* __s1, const char_type* __s2, size_t __n)
      { return static_cast<char_type*>(memmove(__s1, __s2, __n)); }

      static char_type*
      copy(char_type* __s1, const char_type* __s2, size_t __n)
      { return static_cast<char_type*>(memcpy(__s1, __s2, __n)); }

      static char_type*
      assign(char_type* __s, size_t __n, char_type __a)
      { return static_cast<char_type*>(memset(__s, __a, __n)); }

      static char_type
      to_char_type(const int_type& __c)
      { return static_cast<char_type>(__c); }



      static int_type
      to_int_type(const char_type& __c)
      { return static_cast<int_type>(static_cast<unsigned char>(__c)); }

      static bool
      eq_int_type(const int_type& __c1, const int_type& __c2)
      { return __c1 == __c2; }

      static int_type
      eof() { return static_cast<int_type>((-1)); }

      static int_type
      not_eof(const int_type& __c)
      { return (__c == eof()) ? 0 : __c; }
  };
# 278 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/char_traits.h" 3
  template<typename _CharT, typename _Traits>
    struct _Char_traits_match
    {
      _CharT _M_c;
      _Char_traits_match(_CharT const& __c) : _M_c(__c) { }

      bool
      operator()(_CharT const& __a) { return _Traits::eq(_M_c, __a); }
    };

}
# 42 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_ios.h" 2 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cstdio.h" 1 3
# 43 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_ios.h" 2 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/localefwd.h" 1 3
# 38 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/localefwd.h" 3

# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/i686-pc-linux-gnu/bits/c++config.h" 1 3
# 40 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/localefwd.h" 2 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/i686-pc-linux-gnu/bits/c++locale.h" 1 3
# 36 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/i686-pc-linux-gnu/bits/c++locale.h" 3
namespace std
{
  typedef int* __c_locale;
}
# 41 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/localefwd.h" 2 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_climits.h" 1 3
# 40 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_climits.h" 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/limits.h" 1 3
# 11 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/limits.h" 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/syslimits.h" 1 3






# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/limits.h" 1 3
# 130 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/limits.h" 3
# 1 "/usr/include/limits.h" 1 3
# 26 "/usr/include/limits.h" 3
# 1 "/usr/include/features.h" 1 3
# 27 "/usr/include/limits.h" 2 3



# 1 "/usr/include/bits/posix1_lim.h" 1 3
# 126 "/usr/include/bits/posix1_lim.h" 3
# 1 "/usr/include/bits/local_lim.h" 1 3
# 27 "/usr/include/bits/local_lim.h" 3
# 1 "/usr/include/linux/limits.h" 1 3
# 28 "/usr/include/bits/local_lim.h" 2 3
# 127 "/usr/include/bits/posix1_lim.h" 2 3
# 31 "/usr/include/limits.h" 2 3



# 1 "/usr/include/bits/posix2_lim.h" 1 3
# 35 "/usr/include/limits.h" 2 3



# 1 "/usr/include/bits/xopen_lim.h" 1 3
# 34 "/usr/include/bits/xopen_lim.h" 3
# 1 "/usr/include/bits/stdio_lim.h" 1 3
# 35 "/usr/include/bits/xopen_lim.h" 2 3
# 39 "/usr/include/limits.h" 2 3
# 131 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/limits.h" 2 3
# 8 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/syslimits.h" 2 3
# 12 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/limits.h" 2 3
# 41 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_climits.h" 2 3
# 42 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/localefwd.h" 2 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_string.h" 1 3
# 38 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_string.h" 3

# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/i686-pc-linux-gnu/bits/c++config.h" 1 3
# 40 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_string.h" 2 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/stringfwd.h" 1 3
# 41 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_string.h" 2 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/char_traits.h" 1 3
# 42 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_string.h" 2 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_iterator.h" 1 3
# 31 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_iterator.h" 3

# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/stl_config.h" 1 3
# 33 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_iterator.h" 2 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_cstddef.h" 1 3
# 34 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_iterator.h" 2 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_iosfwd.h" 1 3
# 35 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_iterator.h" 2 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/stl_iterator_base.h" 1 3
# 38 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/stl_iterator_base.h" 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/concept_checks.h" 1 3
# 232 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/concept_checks.h" 3
template <class _Tp>
struct _Mutable_trait {
  typedef _Tp _Type;
};
template <class _Tp>
struct _Mutable_trait<const _Tp> {
  typedef _Tp _Type;
};



template <class _Type>
void __sink_unused_warning(_Type) { }

template <class _TypeX, class _TypeY>
struct _STL_CONVERT_ERROR {
  static void
  __type_X_is_not_convertible_to_type_Y(_TypeX __x, _TypeY) {
    _TypeY __y = __x;
    __sink_unused_warning(__y);
  }
};


template <class _Type> struct __check_equal { };

template <class _TypeX, class _TypeY>
struct _STL_SAME_TYPE_ERROR {
  static void
  __type_X_not_same_as_type_Y(_TypeX , _TypeY ) {
    __check_equal<_TypeX> t1 = __check_equal<_TypeY>();
  }
};




template <class _Func, class _Ret>
struct _STL_GENERATOR_ERROR {
  static _Ret __generator_requirement_violation(_Func& __f) {
    return __f();
  }
};

template <class _Func>
struct _STL_GENERATOR_ERROR<_Func, void> {
  static void __generator_requirement_violation(_Func& __f) {
    __f();
  }
};


template <class _Func, class _Ret, class _Arg>
struct _STL_UNARY_FUNCTION_ERROR {
  static _Ret
  __unary_function_requirement_violation(_Func& __f,
                                          const _Arg& __arg) {
    return __f(__arg);
  }
};

template <class _Func, class _Arg>
struct _STL_UNARY_FUNCTION_ERROR<_Func, void, _Arg> {
  static void
  __unary_function_requirement_violation(_Func& __f,
                                          const _Arg& __arg) {
    __f(__arg);
  }
};

template <class _Func, class _Ret, class _First, class _Second>
struct _STL_BINARY_FUNCTION_ERROR {
  static _Ret
  __binary_function_requirement_violation(_Func& __f,
                                          const _First& __first,
                                          const _Second& __second) {
    return __f(__first, __second);
  }
};

template <class _Func, class _First, class _Second>
struct _STL_BINARY_FUNCTION_ERROR<_Func, void, _First, _Second> {
  static void
  __binary_function_requirement_violation(_Func& __f,
                                          const _First& __first,
                                          const _Second& __second) {
    __f(__first, __second);
  }
};
# 338 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/concept_checks.h" 3
template <class _Ret, class _First, class _Second> struct _STL_BINARY_OP_EQUAL_ERROR { static _Ret __const_binary_operator_requirement_violation(const _First& __first, const _Second& __second) { return __first == __second; } static _Ret __binary_operator_requirement_violation(_First& __first, _Second& __second) { return __first == __second; } };
template <class _Ret, class _First, class _Second> struct _STL_BINARY_OP_NOT_EQUAL_ERROR { static _Ret __const_binary_operator_requirement_violation(const _First& __first, const _Second& __second) { return __first != __second; } static _Ret __binary_operator_requirement_violation(_First& __first, _Second& __second) { return __first != __second; } };
template <class _Ret, class _First, class _Second> struct _STL_BINARY_OP_LESS_THAN_ERROR { static _Ret __const_binary_operator_requirement_violation(const _First& __first, const _Second& __second) { return __first < __second; } static _Ret __binary_operator_requirement_violation(_First& __first, _Second& __second) { return __first < __second; } };
template <class _Ret, class _First, class _Second> struct _STL_BINARY_OP_LESS_EQUAL_ERROR { static _Ret __const_binary_operator_requirement_violation(const _First& __first, const _Second& __second) { return __first <= __second; } static _Ret __binary_operator_requirement_violation(_First& __first, _Second& __second) { return __first <= __second; } };
template <class _Ret, class _First, class _Second> struct _STL_BINARY_OP_GREATER_THAN_ERROR { static _Ret __const_binary_operator_requirement_violation(const _First& __first, const _Second& __second) { return __first > __second; } static _Ret __binary_operator_requirement_violation(_First& __first, _Second& __second) { return __first > __second; } };
template <class _Ret, class _First, class _Second> struct _STL_BINARY_OP_GREATER_EQUAL_ERROR { static _Ret __const_binary_operator_requirement_violation(const _First& __first, const _Second& __second) { return __first >= __second; } static _Ret __binary_operator_requirement_violation(_First& __first, _Second& __second) { return __first >= __second; } };
template <class _Ret, class _First, class _Second> struct _STL_BINARY_OP_PLUS_ERROR { static _Ret __const_binary_operator_requirement_violation(const _First& __first, const _Second& __second) { return __first + __second; } static _Ret __binary_operator_requirement_violation(_First& __first, _Second& __second) { return __first + __second; } };
template <class _Ret, class _First, class _Second> struct _STL_BINARY_OP_TIMES_ERROR { static _Ret __const_binary_operator_requirement_violation(const _First& __first, const _Second& __second) { return __first * __second; } static _Ret __binary_operator_requirement_violation(_First& __first, _Second& __second) { return __first * __second; } };
template <class _Ret, class _First, class _Second> struct _STL_BINARY_OP_DIVIDE_ERROR { static _Ret __const_binary_operator_requirement_violation(const _First& __first, const _Second& __second) { return __first / __second; } static _Ret __binary_operator_requirement_violation(_First& __first, _Second& __second) { return __first / __second; } };
template <class _Ret, class _First, class _Second> struct _STL_BINARY_OP_SUBTRACT_ERROR { static _Ret __const_binary_operator_requirement_violation(const _First& __first, const _Second& __second) { return __first - __second; } static _Ret __binary_operator_requirement_violation(_First& __first, _Second& __second) { return __first - __second; } };
template <class _Ret, class _First, class _Second> struct _STL_BINARY_OP_MOD_ERROR { static _Ret __const_binary_operator_requirement_violation(const _First& __first, const _Second& __second) { return __first % __second; } static _Ret __binary_operator_requirement_violation(_First& __first, _Second& __second) { return __first % __second; } };
# 360 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/concept_checks.h" 3
struct _STL_ERROR {

  template <class _Type>
  static _Type
  __default_constructor_requirement_violation(_Type) {
    return _Type();
  }
  template <class _Type>
  static _Type
  __assignment_operator_requirement_violation(_Type __a) {
    __a = __a;
    return __a;
  }
  template <class _Type>
  static _Type
  __copy_constructor_requirement_violation(_Type __a) {
    _Type __c(__a);
    return __c;
  }
  template <class _Type>
  static _Type
  __const_parameter_required_for_copy_constructor(_Type ,
                                                  const _Type& __b) {
    _Type __c(__b);
    return __c;
  }
  template <class _Type>
  static _Type
  __const_parameter_required_for_assignment_operator(_Type __a,
                                                     const _Type& __b) {
    __a = __b;
    return __a;
  }
  template <class _Type>
  static _Type
  __less_than_comparable_requirement_violation(_Type __a, _Type __b) {
    if (__a < __b) return __a;
    return __b;
  }
  template <class _Type>
  static _Type
  __equality_comparable_requirement_violation(_Type __a, _Type __b) {
    if (__a == __b || __a != __b) return __a;
    return __b;
  }
  template <class _Iterator>
  static void
  __dereference_operator_requirement_violation(_Iterator __i) {
    __sink_unused_warning(*__i);
  }
  template <class _Iterator>
  static void
  __dereference_operator_and_assignment_requirement_violation(_Iterator __i) {
    *__i = *__i;
  }
  template <class _Iterator>
  static void
  __preincrement_operator_requirement_violation(_Iterator __i) {
    ++__i;
  }
  template <class _Iterator>
  static void
  __postincrement_operator_requirement_violation(_Iterator __i) {
    __i++;
  }
  template <class _Iterator>
  static void
  __predecrement_operator_requirement_violation(_Iterator __i) {
    --__i;
  }
  template <class _Iterator>
  static void
  __postdecrement_operator_requirement_violation(_Iterator __i) {
    __i--;
  }
  template <class _Iterator, class _Type>
  static void
  __postincrement_operator_and_assignment_requirement_violation(_Iterator __i,
                                                                _Type __t) {
    *__i++ = __t;
  }
  template <class _Iterator, class _Distance>
  static _Iterator
  __iterator_addition_assignment_requirement_violation(_Iterator __i,
                                                       _Distance __n) {
    __i += __n;
    return __i;
  }
  template <class _Iterator, class _Distance>
  static _Iterator
  __iterator_addition_requirement_violation(_Iterator __i, _Distance __n) {
    __i = __i + __n;
    __i = __n + __i;
    return __i;
  }
  template <class _Iterator, class _Distance>
  static _Iterator
  __iterator_subtraction_assignment_requirement_violation(_Iterator __i,
                                                          _Distance __n) {
    __i -= __n;
    return __i;
  }
  template <class _Iterator, class _Distance>
  static _Iterator
  __iterator_subtraction_requirement_violation(_Iterator __i, _Distance __n) {
    __i = __i - __n;
    return __i;
  }
  template <class _Iterator, class _Distance>
  static _Distance
  __difference_operator_requirement_violation(_Iterator __i, _Iterator __j,
                                              _Distance __n) {
    __n = __i - __j;
    return __n;
  }
  template <class _Exp, class _Type, class _Distance>
  static _Type
  __element_access_operator_requirement_violation(_Exp __x, _Type*,
                                                  _Distance __n) {
    return __x[__n];
  }
  template <class _Exp, class _Type, class _Distance>
  static void
  __element_assignment_operator_requirement_violation(_Exp __x,
                                                      _Type* __t,
                                                      _Distance __n) {
    __x[__n] = *__t;
  }

};



namespace std {
template <class _Iterator> struct iterator_traits;
}

template <class _Iter>
struct __value_type_type_definition_requirement_violation {
  typedef typename std::iterator_traits<_Iter>::value_type value_type;
};

template <class _Iter>
struct __difference_type_type_definition_requirement_violation {
  typedef typename std::iterator_traits<_Iter>::difference_type
          difference_type;
};

template <class _Iter>
struct __reference_type_definition_requirement_violation {
  typedef typename std::iterator_traits<_Iter>::reference reference;
};

template <class _Iter>
struct __pointer_type_definition_requirement_violation {
  typedef typename std::iterator_traits<_Iter>::pointer pointer;
};

template <class _Iter>
struct __iterator_category_type_definition_requirement_violation {
  typedef typename std::iterator_traits<_Iter>::iterator_category
          iterator_category;
};




template <class _Type>
struct _Assignable_concept_specification {
  static void _Assignable_requirement_violation(_Type __a) {
    _STL_ERROR::__assignment_operator_requirement_violation(__a);
    _STL_ERROR::__copy_constructor_requirement_violation(__a);
    _STL_ERROR::__const_parameter_required_for_copy_constructor(__a,__a);
    _STL_ERROR::__const_parameter_required_for_assignment_operator(__a,__a);
  }
};




template <class _Type>
struct _DefaultConstructible_concept_specification {
  static void _DefaultConstructible_requirement_violation(_Type __a) {
    _STL_ERROR::__default_constructor_requirement_violation(__a);
  }
};



template <class _Type>
struct _EqualityComparable_concept_specification {
  static void _EqualityComparable_requirement_violation(_Type __a) {
    _STL_ERROR::__equality_comparable_requirement_violation(__a, __a);
  }
};


template <class _Type>
struct _LessThanComparable_concept_specification {
  static void _LessThanComparable_requirement_violation(_Type __a) {
    _STL_ERROR::__less_than_comparable_requirement_violation(__a, __a);
  }
};



template <class _TrivialIterator>
struct _TrivialIterator_concept_specification {
static void
_TrivialIterator_requirement_violation(_TrivialIterator __i) {
  typedef typename
    __value_type_type_definition_requirement_violation<_TrivialIterator>::
    value_type __T;

  _Assignable_concept_specification<_TrivialIterator>::
    _Assignable_requirement_violation(__i);

  _DefaultConstructible_concept_specification<_TrivialIterator>::
    _DefaultConstructible_requirement_violation(__i);

  _EqualityComparable_concept_specification<_TrivialIterator>::
    _EqualityComparable_requirement_violation(__i);

  _STL_ERROR::__dereference_operator_requirement_violation(__i);
}
};

template <class _TrivialIterator>
struct _Mutable_TrivialIterator_concept_specification {
static void
_Mutable_TrivialIterator_requirement_violation(_TrivialIterator __i) {
  _TrivialIterator_concept_specification<_TrivialIterator>::
    _TrivialIterator_requirement_violation(__i);

  _STL_ERROR::__dereference_operator_and_assignment_requirement_violation(__i);
}
};



template <class _InputIterator>
struct _InputIterator_concept_specification {
static void
_InputIterator_requirement_violation(_InputIterator __i) {

  _TrivialIterator_concept_specification<_InputIterator>::
    _TrivialIterator_requirement_violation(__i);

  __difference_type_type_definition_requirement_violation<_InputIterator>();
  __reference_type_definition_requirement_violation<_InputIterator>();
  __pointer_type_definition_requirement_violation<_InputIterator>();
  __iterator_category_type_definition_requirement_violation<_InputIterator>();

  _STL_ERROR::__preincrement_operator_requirement_violation(__i);
  _STL_ERROR::__postincrement_operator_requirement_violation(__i);
}
};



template <class _OutputIterator>
struct _OutputIterator_concept_specification {
static void
_OutputIterator_requirement_violation(_OutputIterator __i) {

  _Assignable_concept_specification<_OutputIterator>::
    _Assignable_requirement_violation(__i);

  __iterator_category_type_definition_requirement_violation<_OutputIterator>();

  _STL_ERROR::__dereference_operator_requirement_violation(__i);
  _STL_ERROR::__preincrement_operator_requirement_violation(__i);
  _STL_ERROR::__postincrement_operator_requirement_violation(__i);
  _STL_ERROR::
    __postincrement_operator_and_assignment_requirement_violation(__i, *__i);
}
};



template <class _ForwardIterator>
struct _ForwardIterator_concept_specification {
static void
_ForwardIterator_requirement_violation(_ForwardIterator __i) {

  _InputIterator_concept_specification<_ForwardIterator>::
    _InputIterator_requirement_violation(__i);
}
};

template <class _ForwardIterator>
struct _Mutable_ForwardIterator_concept_specification {
static void
_Mutable_ForwardIterator_requirement_violation(_ForwardIterator __i) {
  _ForwardIterator_concept_specification<_ForwardIterator>::
    _ForwardIterator_requirement_violation(__i);

  _OutputIterator_concept_specification<_ForwardIterator>::
    _OutputIterator_requirement_violation(__i);
}
};



template <class _BidirectionalIterator>
struct _BidirectionalIterator_concept_specification {
static void
_BidirectionalIterator_requirement_violation(_BidirectionalIterator __i) {

  _ForwardIterator_concept_specification<_BidirectionalIterator>::
    _ForwardIterator_requirement_violation(__i);

  _STL_ERROR::__predecrement_operator_requirement_violation(__i);
  _STL_ERROR::__postdecrement_operator_requirement_violation(__i);
}
};

template <class _BidirectionalIterator>
struct _Mutable_BidirectionalIterator_concept_specification {
static void
_Mutable_BidirectionalIterator_requirement_violation(
       _BidirectionalIterator __i)
{
  _BidirectionalIterator_concept_specification<_BidirectionalIterator>::
    _BidirectionalIterator_requirement_violation(__i);

  _Mutable_ForwardIterator_concept_specification<_BidirectionalIterator>::
    _Mutable_ForwardIterator_requirement_violation(__i);
  typedef typename
    __value_type_type_definition_requirement_violation<
    _BidirectionalIterator>::value_type __T;
  typename _Mutable_trait<__T>::_Type* __tmp_ptr = 0;

  _STL_ERROR::
    __postincrement_operator_and_assignment_requirement_violation(__i,
                                                                  *__tmp_ptr);
}
};



template <class _RandAccIter>
struct _RandomAccessIterator_concept_specification {
static void
_RandomAccessIterator_requirement_violation(_RandAccIter __i) {

  _BidirectionalIterator_concept_specification<_RandAccIter>::
    _BidirectionalIterator_requirement_violation(__i);

  _LessThanComparable_concept_specification<_RandAccIter>::
    _LessThanComparable_requirement_violation(__i);
  typedef typename
        __value_type_type_definition_requirement_violation<_RandAccIter>
        ::value_type
    value_type;
  typedef typename
        __difference_type_type_definition_requirement_violation<_RandAccIter>
        ::difference_type
    _Dist;
  typedef typename _Mutable_trait<_Dist>::_Type _MutDist;


  _STL_ERROR::__iterator_addition_assignment_requirement_violation(__i,
                                                                   _MutDist());
  _STL_ERROR::__iterator_addition_requirement_violation(__i,
                                                        _MutDist());
  _STL_ERROR::
    __iterator_subtraction_assignment_requirement_violation(__i,
                                                            _MutDist());
  _STL_ERROR::__iterator_subtraction_requirement_violation(__i,
                                                           _MutDist());
  _STL_ERROR::__difference_operator_requirement_violation(__i, __i,
                                                          _MutDist());
  typename _Mutable_trait<value_type>::_Type* __dummy_ptr = 0;
  _STL_ERROR::__element_access_operator_requirement_violation(__i,
                                                              __dummy_ptr,
                                                              _MutDist());
}
};

template <class _RandAccIter>
struct _Mutable_RandomAccessIterator_concept_specification {
static void
_Mutable_RandomAccessIterator_requirement_violation(_RandAccIter __i)
{
  _RandomAccessIterator_concept_specification<_RandAccIter>::
    _RandomAccessIterator_requirement_violation(__i);

  _Mutable_BidirectionalIterator_concept_specification<_RandAccIter>::
    _Mutable_BidirectionalIterator_requirement_violation(__i);
  typedef typename
        __value_type_type_definition_requirement_violation<_RandAccIter>
        ::value_type
    value_type;
  typedef typename
        __difference_type_type_definition_requirement_violation<_RandAccIter>
        ::difference_type
    _Dist;

  typename _Mutable_trait<value_type>::_Type* __tmp_ptr = 0;

  _STL_ERROR::__element_assignment_operator_requirement_violation(__i,
                  __tmp_ptr, _Dist());
}
};







template <class Type> struct __value_type__typedef_requirement_violation { typedef typename Type::value_type value_type; };
template <class Type> struct __difference_type__typedef_requirement_violation { typedef typename Type::difference_type difference_type; };
template <class Type> struct __size_type__typedef_requirement_violation { typedef typename Type::size_type size_type; };
template <class Type> struct __reference__typedef_requirement_violation { typedef typename Type::reference reference; };
template <class Type> struct __const_reference__typedef_requirement_violation { typedef typename Type::const_reference const_reference; };
template <class Type> struct __pointer__typedef_requirement_violation { typedef typename Type::pointer pointer; };
template <class Type> struct __const_pointer__typedef_requirement_violation { typedef typename Type::const_pointer const_pointer; };


template <class _Alloc>
struct _Allocator_concept_specification {
static void
_Allocator_requirement_violation(_Alloc __a) {

  _DefaultConstructible_concept_specification<_Alloc>::
    _DefaultConstructible_requirement_violation(__a);

  _EqualityComparable_concept_specification<_Alloc>::
    _EqualityComparable_requirement_violation(__a);

  __value_type__typedef_requirement_violation<_Alloc>();
  __difference_type__typedef_requirement_violation<_Alloc>();
  __size_type__typedef_requirement_violation<_Alloc>();
  __reference__typedef_requirement_violation<_Alloc>();
  __const_reference__typedef_requirement_violation<_Alloc>();
  __pointer__typedef_requirement_violation<_Alloc>();
  __const_pointer__typedef_requirement_violation<_Alloc>();
  typedef typename _Alloc::value_type _Tp;


}
};
# 39 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/stl_iterator_base.h" 2 3

namespace std {

struct input_iterator_tag {};
struct output_iterator_tag {};
struct forward_iterator_tag : public input_iterator_tag {};
struct bidirectional_iterator_tag : public forward_iterator_tag {};
struct random_access_iterator_tag : public bidirectional_iterator_tag {};






template <class _Tp, class _Distance> struct input_iterator {
  typedef input_iterator_tag iterator_category;
  typedef _Tp value_type;
  typedef _Distance difference_type;
  typedef _Tp* pointer;
  typedef _Tp& reference;
};

struct output_iterator {
  typedef output_iterator_tag iterator_category;
  typedef void value_type;
  typedef void difference_type;
  typedef void pointer;
  typedef void reference;
};

template <class _Tp, class _Distance> struct forward_iterator {
  typedef forward_iterator_tag iterator_category;
  typedef _Tp value_type;
  typedef _Distance difference_type;
  typedef _Tp* pointer;
  typedef _Tp& reference;
};


template <class _Tp, class _Distance> struct bidirectional_iterator {
  typedef bidirectional_iterator_tag iterator_category;
  typedef _Tp value_type;
  typedef _Distance difference_type;
  typedef _Tp* pointer;
  typedef _Tp& reference;
};

template <class _Tp, class _Distance> struct random_access_iterator {
  typedef random_access_iterator_tag iterator_category;
  typedef _Tp value_type;
  typedef _Distance difference_type;
  typedef _Tp* pointer;
  typedef _Tp& reference;
};


template <class _Category, class _Tp, class _Distance = ptrdiff_t,
          class _Pointer = _Tp*, class _Reference = _Tp&>
struct iterator {
  typedef _Category iterator_category;
  typedef _Tp value_type;
  typedef _Distance difference_type;
  typedef _Pointer pointer;
  typedef _Reference reference;
};




template <class _Iterator>
struct iterator_traits {
  typedef typename _Iterator::iterator_category iterator_category;
  typedef typename _Iterator::value_type value_type;
  typedef typename _Iterator::difference_type difference_type;
  typedef typename _Iterator::pointer pointer;
  typedef typename _Iterator::reference reference;
};

template <class _Tp>
struct iterator_traits<_Tp*> {
  typedef random_access_iterator_tag iterator_category;
  typedef _Tp value_type;
  typedef ptrdiff_t difference_type;
  typedef _Tp* pointer;
  typedef _Tp& reference;
};

template <class _Tp>
struct iterator_traits<const _Tp*> {
  typedef random_access_iterator_tag iterator_category;
  typedef _Tp value_type;
  typedef ptrdiff_t difference_type;
  typedef const _Tp* pointer;
  typedef const _Tp& reference;
};
# 142 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/stl_iterator_base.h" 3
template <class _Iter>
inline typename iterator_traits<_Iter>::iterator_category
__iterator_category(const _Iter&)
{
  typedef typename iterator_traits<_Iter>::iterator_category _Category;
  return _Category();
}

template <class _Iter>
inline typename iterator_traits<_Iter>::difference_type*
__distance_type(const _Iter&)
{
  return static_cast<typename iterator_traits<_Iter>::difference_type*>(0);
}

template <class _Iter>
inline typename iterator_traits<_Iter>::value_type*
__value_type(const _Iter&)
{
  return static_cast<typename iterator_traits<_Iter>::value_type*>(0);
}

template <class _Iter>
inline typename iterator_traits<_Iter>::iterator_category
iterator_category(const _Iter& __i) { return __iterator_category(__i); }


template <class _Iter>
inline typename iterator_traits<_Iter>::difference_type*
distance_type(const _Iter& __i) { return __distance_type(__i); }

template <class _Iter>
inline typename iterator_traits<_Iter>::value_type*
value_type(const _Iter& __i) { return __value_type(__i); }
# 267 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/stl_iterator_base.h" 3
template <class _InputIterator, class _Distance>
inline void __distance(_InputIterator __first, _InputIterator __last,
                       _Distance& __n, input_iterator_tag)
{
  while (__first != __last) { ++__first; ++__n; }
}

template <class _RandomAccessIterator, class _Distance>
inline void __distance(_RandomAccessIterator __first,
                       _RandomAccessIterator __last,
                       _Distance& __n, random_access_iterator_tag)
{
  do { void (*__x)( _RandomAccessIterator ) = _RandomAccessIterator_concept_specification< _RandomAccessIterator > ::_RandomAccessIterator_requirement_violation; __x = __x; } while (0);
  __n += __last - __first;
}

template <class _InputIterator, class _Distance>
inline void distance(_InputIterator __first,
                     _InputIterator __last, _Distance& __n)
{
  do { void (*__x)( _InputIterator ) = _InputIterator_concept_specification< _InputIterator > ::_InputIterator_requirement_violation; __x = __x; } while (0);
  __distance(__first, __last, __n, iterator_category(__first));
}



template <class _InputIterator>
inline typename iterator_traits<_InputIterator>::difference_type
__distance(_InputIterator __first, _InputIterator __last, input_iterator_tag)
{
  typename iterator_traits<_InputIterator>::difference_type __n = 0;
  while (__first != __last) {
    ++__first; ++__n;
  }
  return __n;
}

template <class _RandomAccessIterator>
inline typename iterator_traits<_RandomAccessIterator>::difference_type
__distance(_RandomAccessIterator __first, _RandomAccessIterator __last,
           random_access_iterator_tag) {
  do { void (*__x)( _RandomAccessIterator ) = _RandomAccessIterator_concept_specification< _RandomAccessIterator > ::_RandomAccessIterator_requirement_violation; __x = __x; } while (0);
  return __last - __first;
}

template <class _InputIterator>
inline typename iterator_traits<_InputIterator>::difference_type
distance(_InputIterator __first, _InputIterator __last) {
  typedef typename iterator_traits<_InputIterator>::iterator_category
    _Category;
  do { void (*__x)( _InputIterator ) = _InputIterator_concept_specification< _InputIterator > ::_InputIterator_requirement_violation; __x = __x; } while (0);
  return __distance(__first, __last, _Category());
}



template <class _InputIter, class _Distance>
inline void __advance(_InputIter& __i, _Distance __n, input_iterator_tag) {
  while (__n--) ++__i;
}





template <class _BidirectionalIterator, class _Distance>
inline void __advance(_BidirectionalIterator& __i, _Distance __n,
                      bidirectional_iterator_tag) {
  do { void (*__x)( _BidirectionalIterator ) = _BidirectionalIterator_concept_specification< _BidirectionalIterator > ::_BidirectionalIterator_requirement_violation; __x = __x; } while (0);
  if (__n >= 0)
    while (__n--) ++__i;
  else
    while (__n++) --__i;
}





template <class _RandomAccessIterator, class _Distance>
inline void __advance(_RandomAccessIterator& __i, _Distance __n,
                      random_access_iterator_tag) {
  do { void (*__x)( _RandomAccessIterator ) = _RandomAccessIterator_concept_specification< _RandomAccessIterator > ::_RandomAccessIterator_requirement_violation; __x = __x; } while (0);
  __i += __n;
}

template <class _InputIterator, class _Distance>
inline void advance(_InputIterator& __i, _Distance __n) {
  do { void (*__x)( _InputIterator ) = _InputIterator_concept_specification< _InputIterator > ::_InputIterator_requirement_violation; __x = __x; } while (0);
  __advance(__i, __n, iterator_category(__i));
}

}
# 36 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/std_iterator.h" 2 3
# 1 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/stl_iterator.h" 1 3
# 34 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/stl_iterator.h" 3
namespace std {


template <class _Container>
class back_insert_iterator {
protected:
  _Container* container;
public:
  typedef _Container container_type;
  typedef output_iterator_tag iterator_category;
  typedef void value_type;
  typedef void difference_type;
  typedef void pointer;
  typedef void reference;

  explicit back_insert_iterator(_Container& __x) : container(&__x) {}
  back_insert_iterator<_Container>&
  operator=(const typename _Container::value_type& __value) {
    container->push_back(__value);
    return *this;
  }
  back_insert_iterator<_Container>& operator*() { return *this; }
  back_insert_iterator<_Container>& operator++() { return *this; }
  back_insert_iterator<_Container>& operator++(int) { return *this; }
};
# 71 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/stl_iterator.h" 3
template <class _Container>
inline back_insert_iterator<_Container> back_inserter(_Container& __x) {
  return back_insert_iterator<_Container>(__x);
}

template <class _Container>
class front_insert_iterator {
protected:
  _Container* container;
public:
  typedef _Container container_type;
  typedef output_iterator_tag iterator_category;
  typedef void value_type;
  typedef void difference_type;
  typedef void pointer;
  typedef void reference;

  explicit front_insert_iterator(_Container& __x) : container(&__x) {}
  front_insert_iterator<_Container>&
  operator=(const typename _Container::value_type& __value) {
    container->push_front(__value);
    return *this;
  }
  front_insert_iterator<_Container>& operator*() { return *this; }
  front_insert_iterator<_Container>& operator++() { return *this; }
  front_insert_iterator<_Container>& operator++(int) { return *this; }
};
# 110 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/stl_iterator.h" 3
template <class _Container>
inline front_insert_iterator<_Container> front_inserter(_Container& __x) {
  return front_insert_iterator<_Container>(__x);
}

template <class _Container>
class insert_iterator {
protected:
  _Container* container;
  typename _Container::iterator iter;
public:
  typedef _Container container_type;
  typedef output_iterator_tag iterator_category;
  typedef void value_type;
  typedef void difference_type;
  typedef void pointer;
  typedef void reference;

  insert_iterator(_Container& __x, typename _Container::iterator __i)
    : container(&__x), iter(__i) {}
  insert_iterator<_Container>&
  operator=(const typename _Container::value_type& __value) {
    iter = container->insert(iter, __value);
    ++iter;
    return *this;
  }
  insert_iterator<_Container>& operator*() { return *this; }
  insert_iterator<_Container>& operator++() { return *this; }
  insert_iterator<_Container>& operator++(int) { return *this; }
};
# 152 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/stl_iterator.h" 3
template <class _Container, class _Iterator>
inline
insert_iterator<_Container> inserter(_Container& __x, _Iterator __i)
{
  typedef typename _Container::iterator __iter;
  return insert_iterator<_Container>(__x, __iter(__i));
}

template <class _BidirectionalIterator, class _Tp, class _Reference = _Tp&,
          class _Distance = ptrdiff_t>
class reverse_bidirectional_iterator {
  typedef reverse_bidirectional_iterator<_BidirectionalIterator, _Tp,
                                         _Reference, _Distance> _Self;
protected:
  _BidirectionalIterator current;
public:
  typedef bidirectional_iterator_tag iterator_category;
  typedef _Tp value_type;
  typedef _Distance difference_type;
  typedef _Tp* pointer;
  typedef _Reference reference;

  reverse_bidirectional_iterator() {}
  explicit reverse_bidirectional_iterator(_BidirectionalIterator __x)
    : current(__x) {}
  _BidirectionalIterator base() const { return current; }
  _Reference operator*() const {
    _BidirectionalIterator __tmp = current;
    return *--__tmp;
  }

  pointer operator->() const { return &(operator*()); }

  _Self& operator++() {
    --current;
    return *this;
  }
  _Self operator++(int) {
    _Self __tmp = *this;
    --current;
    return __tmp;
  }
  _Self& operator--() {
    ++current;
    return *this;
  }
  _Self operator--(int) {
    _Self __tmp = *this;
    ++current;
    return __tmp;
  }
};
# 238 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/stl_iterator.h" 3
template <class _BiIter, class _Tp, class _Ref, class _Distance>
inline bool operator==(
    const reverse_bidirectional_iterator<_BiIter, _Tp, _Ref, _Distance>& __x,
    const reverse_bidirectional_iterator<_BiIter, _Tp, _Ref, _Distance>& __y)
{
  return __x.base() == __y.base();
}



template <class _BiIter, class _Tp, class _Ref, class _Distance>
inline bool operator!=(
    const reverse_bidirectional_iterator<_BiIter, _Tp, _Ref, _Distance>& __x,
    const reverse_bidirectional_iterator<_BiIter, _Tp, _Ref, _Distance>& __y)
{
  return !(__x == __y);
}
# 267 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/stl_iterator.h" 3
template <class _Iterator>
class reverse_iterator
{
protected:
  _Iterator current;
public:
  typedef typename iterator_traits<_Iterator>::iterator_category
          iterator_category;
  typedef typename iterator_traits<_Iterator>::value_type
          value_type;
  typedef typename iterator_traits<_Iterator>::difference_type
          difference_type;
  typedef typename iterator_traits<_Iterator>::pointer
          pointer;
  typedef typename iterator_traits<_Iterator>::reference
          reference;

  typedef _Iterator iterator_type;
  typedef reverse_iterator<_Iterator> _Self;

public:
  reverse_iterator() {}
  explicit reverse_iterator(iterator_type __x) : current(__x) {}

  reverse_iterator(const _Self& __x) : current(__x.current) {}

  template <class _Iter>
  reverse_iterator(const reverse_iterator<_Iter>& __x)
    : current(__x.base()) {}


  iterator_type base() const { return current; }
  reference operator*() const {
    _Iterator __tmp = current;
    return *--__tmp;
  }

  pointer operator->() const { return &(operator*()); }


  _Self& operator++() {
    --current;
    return *this;
  }
  _Self operator++(int) {
    _Self __tmp = *this;
    --current;
    return __tmp;
  }
  _Self& operator--() {
    ++current;
    return *this;
  }
  _Self operator--(int) {
    _Self __tmp = *this;
    ++current;
    return __tmp;
  }

  _Self operator+(difference_type __n) const {
    return _Self(current - __n);
  }
  _Self& operator+=(difference_type __n) {
    current -= __n;
    return *this;
  }
  _Self operator-(difference_type __n) const {
    return _Self(current + __n);
  }
  _Self& operator-=(difference_type __n) {
    current += __n;
    return *this;
  }
  reference operator[](difference_type __n) const { return *(*this + __n); }
};

template <class _Iterator>
inline bool operator==(const reverse_iterator<_Iterator>& __x,
                       const reverse_iterator<_Iterator>& __y) {
  return __x.base() == __y.base();
}

template <class _Iterator>
inline bool operator<(const reverse_iterator<_Iterator>& __x,
                      const reverse_iterator<_Iterator>& __y) {
  return __y.base() < __x.base();
}



template <class _Iterator>
inline bool operator!=(const reverse_iterator<_Iterator>& __x,
                       const reverse_iterator<_Iterator>& __y) {
  return !(__x == __y);
}

template <class _Iterator>
inline bool operator>(const reverse_iterator<_Iterator>& __x,
                      const reverse_iterator<_Iterator>& __y) {
  return __y < __x;
}

template <class _Iterator>
inline bool operator<=(const reverse_iterator<_Iterator>& __x,
                       const reverse_iterator<_Iterator>& __y) {
  return !(__y < __x);
}

template <class _Iterator>
inline bool operator>=(const reverse_iterator<_Iterator>& __x,
                      const reverse_iterator<_Iterator>& __y) {
  return !(__x < __y);
}



template <class _Iterator>
inline typename reverse_iterator<_Iterator>::difference_type
operator-(const reverse_iterator<_Iterator>& __x,
          const reverse_iterator<_Iterator>& __y) {
  return __y.base() - __x.base();
}

template <class _Iterator>
inline reverse_iterator<_Iterator>
operator+(typename reverse_iterator<_Iterator>::difference_type __n,
          const reverse_iterator<_Iterator>& __x) {
  return reverse_iterator<_Iterator>(__x.base() - __n);
}
# 823 "/public/packages/programming/gcc-current/lib/gcc-lib/i686-pc-linux-gnu/3.0/include-g++/bits/stl_iterator.h" 3
template <class _Tp, class _Dist = ptrdiff_t> class istream_iterator;

template <class _Tp, class _Dist>