aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1998-05-16 00:03:15 +0000
committerUlrich Drepper <drepper@redhat.com>1998-05-16 00:03:15 +0000
commit66175fa825828d3a012c34777fd9e7916b7aa10b (patch)
treeca5f75b63ac49de0183f88d90a0de25b025743cf
parentUpdate. (diff)
downloadglibc-66175fa825828d3a012c34777fd9e7916b7aa10b.tar.gz
glibc-66175fa825828d3a012c34777fd9e7916b7aa10b.tar.bz2
glibc-66175fa825828d3a012c34777fd9e7916b7aa10b.zip
Update.
* iconv/loop.c: Let user add code to use and set paramaters. * iconvdata/iso-2022-kr.c: Correct to-loop. * iconvdata/ksc5601.h (ksc5601_to_ucs4): Use correct value to find hanja. * iconvdata/TESTS: Add ISO-2022-KR test. * iconvdata/testdata/ISO-2022-KR: New file. * wcsmbs/btowc.c: Likewise. * wcsmbs/mbrtowcs.c: Likewise. * wcsmbs/mbsnrtowcs.c: Likewise. * wcsmbs/mbsrtowcs.c: Likewise. * wcsmbs/wcrtomb.c: Likewise. * wcsmbs/wcsnrtombs.c: Likewise. * wcsmbs/wcsrtombs.c: Likewise. * wcsmbs/wctob.c: Likewise.
-rw-r--r--ChangeLog18
-rw-r--r--iconv/loop.c16
-rw-r--r--iconvdata/TESTS1
-rw-r--r--iconvdata/iso-2022-kr.c146
-rw-r--r--iconvdata/ksc5601.h2
-rw-r--r--iconvdata/testdata/ISO-2022-KR552
-rw-r--r--wcsmbs/btowc.c2
-rw-r--r--wcsmbs/mbrtowc.c2
-rw-r--r--wcsmbs/mbsnrtowcs.c2
-rw-r--r--wcsmbs/mbsrtowcs.c2
-rw-r--r--wcsmbs/wcrtomb.c2
-rw-r--r--wcsmbs/wcsnrtombs.c2
-rw-r--r--wcsmbs/wcsrtombs.c2
-rw-r--r--wcsmbs/wctob.c2
14 files changed, 664 insertions, 87 deletions
diff --git a/ChangeLog b/ChangeLog
index e7cfdced1e..f27d54e2e5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,14 +1,32 @@
1998-05-15 Ulrich Drepper <drepper@cygnus.com>
+ * iconv/loop.c: Let user add code to use and set paramaters.
+
+ * iconvdata/iso-2022-kr.c: Correct to-loop.
+
* iconvdata/iso-2022-kr.c (PREPARE_LOOP): Use correct variable to
point to output buffer.
+ * iconvdata/ksc5601.h (ksc5601_to_ucs4): Use correct value to find
+ hanja.
+
+ * iconvdata/TESTS: Add ISO-2022-KR test.
+ * iconvdata/testdata/ISO-2022-KR: New file.
+
1998-05-15 21:07 Ulrich Drepper <drepper@cygnus.com>
* iconv/gconv.h (gconv_step_data): Add new fields invocation_counter
and internal_use.
* iconv/gconv_open.c (__gconv_open): Initialize invocation_counter
and internal_use.
+ * wcsmbs/btowc.c: Likewise.
+ * wcsmbs/mbrtowcs.c: Likewise.
+ * wcsmbs/mbsnrtowcs.c: Likewise.
+ * wcsmbs/mbsrtowcs.c: Likewise.
+ * wcsmbs/wcrtomb.c: Likewise.
+ * wcsmbs/wcsnrtombs.c: Likewise.
+ * wcsmbs/wcsrtombs.c: Likewise.
+ * wcsmbs/wctob.c: Likewise.
* iconv/skeleton.c: Increment invocation_counter.
* iconvdata/iso-2022-kr.c: When used in iconv() emit designator
sequence first.
diff --git a/iconv/loop.c b/iconv/loop.c
index f8188873dc..596f8a6441 100644
--- a/iconv/loop.c
+++ b/iconv/loop.c
@@ -44,7 +44,10 @@
BODY this is supposed to expand to the body of the loop.
The user must provide this.
- EXTRA_LOOP_DECLS Extra arguments passed from converion loop call.
+ EXTRA_LOOP_DECLS extra arguments passed from converion loop call.
+
+ INIT_PARAMS code to define and initialize variables from params.
+ UPDATE_PARAMS code to store result in params.
*/
#include <gconv.h>
@@ -134,6 +137,10 @@ LOOPFCT (const unsigned char **inptrp, const unsigned char *inend,
size_t min_out_rounds = (outend - outptr) / MAX_NEEDED_OUTPUT;
size_t min_rounds = MIN (min_in_rounds, min_out_rounds);
+#ifdef INIT_PARAMS
+ INIT_PARAMS;
+#endif
+
#undef NEED_LENGTH_TEST
#define NEED_LENGTH_TEST 0
while (min_rounds-- > 0)
@@ -195,7 +202,7 @@ LOOPFCT (const unsigned char **inptrp, const unsigned char *inend,
/* Here comes the body the user provides. It can stop with
RESULT set to GCONV_INCOMPLETE_INPUT (if the size of the
input characters vary in size), GCONV_ILLEGAL_INPUT, or
- GCONV_FULL_OUTPUT (if the output characters vary in size. */
+ GCONV_FULL_OUTPUT (if the output characters vary in size). */
BODY
/* If necessary count the successful conversion. */
@@ -216,6 +223,9 @@ LOOPFCT (const unsigned char **inptrp, const unsigned char *inend,
/* Update the pointers pointed to by the parameters. */
*inptrp = inptr;
*outptrp = outptr;
+#ifdef UPDATE_PARAMS
+ UPDATE_PARAMS;
+#endif
return result;
}
@@ -232,3 +242,5 @@ LOOPFCT (const unsigned char **inptrp, const unsigned char *inend,
#undef BODY
#undef LOOPFCT
#undef EXTRA_LOOP_DECLS
+#undef INIT_PARAMS
+#undef UPDATE_PARAMS
diff --git a/iconvdata/TESTS b/iconvdata/TESTS
index fa4aea69b5..e8a586cd2d 100644
--- a/iconvdata/TESTS
+++ b/iconvdata/TESTS
@@ -73,3 +73,4 @@ CP1254 CP1254 Y UTF8
CP1255 CP1255 Y UTF8
CP1256 CP1256 Y UTF8
CP1257 CP1257 Y UTF8
+ISO-2022-KR ISO-2022-KR Y UTF8
diff --git a/iconvdata/iso-2022-kr.c b/iconvdata/iso-2022-kr.c
index 166fa15072..6746f9c2ac 100644
--- a/iconvdata/iso-2022-kr.c
+++ b/iconvdata/iso-2022-kr.c
@@ -44,7 +44,7 @@
#define MAX_NEEDED_TO 4
#define PREPARE_LOOP \
int save_set; \
- int set = data->statep->count; \
+ int *setp = &data->statep->count; \
if (!FROM_DIRECTION && !data->internal_use && data->invocation_counter == 0)\
{ \
/* Emit the designator sequence. */ \
@@ -56,7 +56,7 @@
*outbuf++ = ')'; \
*outbuf++ = 'C'; \
}
-#define EXTRA_LOOP_ARGS , set
+#define EXTRA_LOOP_ARGS , setp
/* The COUNT element of the state keeps track of the currently selected
@@ -72,27 +72,27 @@ enum
the output state to the initial state. This has to be done during the
flushing. */
#define EMIT_SHIFT_TO_INIT \
- if (data->statep->count != 0) \
+ if (data->statep->count != ASCII_set) \
{ \
- if (step->data == &from_object) \
+ if (FROM_DIRECTION) \
/* It's easy, we don't have to emit anything, we just reset the \
state for the input. */ \
- data->statep->count = 0; \
+ data->statep->count = ASCII_set; \
else \
{ \
char *outbuf = data->outbuf; \
\
/* We are not in the initial state. To switch back we have \
- to emit `SO'. */ \
+ to emit `SI'. */ \
if (outbuf == data->outbufend) \
/* We don't have enough room in the output buffer. */ \
status = GCONV_FULL_OUTPUT; \
else \
{ \
/* Write out the shift sequence. */ \
- *outbuf++ = SO; \
+ *outbuf++ = SI; \
data->outbuf = outbuf; \
- data->statep->count = 0; \
+ data->statep->count = ASCII_set; \
} \
} \
}
@@ -102,9 +102,9 @@ enum
and retore the state. */
#define SAVE_RESET_STATE(Save) \
if (Save) \
- save_set = set; \
+ save_set = *setp; \
else \
- set = save_set
+ *setp = save_set
/* First define the conversion function from ISO-2022-JP to UCS4. */
@@ -127,14 +127,14 @@ enum
if (ch == ESC) \
{ \
/* We don't really have to handle escape sequences since all the \
- switching is done using the SI and SO bytes. Butwe have to \
+ switching is done using the SI and SO bytes. But we have to \
recognize `Esc $ ) C' since this is a kind of flag for this \
encoding. We simply ignore it. */ \
if (inptr + 1 > inend \
|| (inptr[1] == '$' \
&& (inptr + 2 > inend \
|| (inptr[2] == ')' && inptr + 3 > inend)))) \
- \
+ \
{ \
result = GCONV_EMPTY_INPUT; \
break; \
@@ -146,14 +146,14 @@ enum
continue; \
} \
} \
- else if (ch == SI) \
+ else if (ch == SO) \
{ \
/* Switch to use KSC. */ \
++inptr; \
set = KSC5601_set; \
continue; \
} \
- else if (ch == SO) \
+ else if (ch == SI) \
{ \
/* Switch to use ASCII. */ \
++inptr; \
@@ -161,9 +161,16 @@ enum
continue; \
} \
\
- if (set == ASCII_set || ch < 0x21 || ch == 0x7f) \
- /* Almost done, just advance the input pointer. */ \
- ++inptr; \
+ if (set == ASCII_set) \
+ { \
+ if (ch >= 0x80) \
+ { \
+ result = GCONV_ILLEGAL_INPUT; \
+ break; \
+ } \
+ /* Almost done, just advance the input pointer. */ \
+ ++inptr; \
+ } \
else \
{ \
assert (set == KSC5601_set); \
@@ -186,7 +193,9 @@ enum
\
*((uint32_t *) outptr)++ = ch; \
}
-#define EXTRA_LOOP_DECLS , int set
+#define EXTRA_LOOP_DECLS , int *setp
+#define INIT_PARAMS int set = *setp
+#define UPDATE_PARAMS *setp = set
#include <iconv/loop.c>
@@ -197,97 +206,66 @@ enum
#define LOOPFCT TO_LOOP
#define BODY \
{ \
- unsigned char ch; \
+ uint32_t ch; \
size_t written = 0; \
\
ch = *((uint32_t *) inptr); \
\
/* First see whether we can write the character using the currently \
selected character set. */ \
- if (set == ASCII_set || (ch >= 0x01 && (ch < 0x21 || ch == 0x7f))) \
+ if (ch < 0x80) \
{ \
- /* Please note that the NUL byte is *not* matched if we are not \
- currently using the ASCII charset. This is because we must \
- switch to the initial state whenever a NUL byte is written. */ \
- if (ch <= 0x7f) \
+ if (set != ASCII_set) \
{ \
- *outptr++ = ch; \
- written = 1; \
+ *outptr++ = SI; \
+ set = ASCII_set; \
+ if (NEED_LENGTH_TEST && outptr == outend) \
+ { \
+ result = GCONV_FULL_OUTPUT; \
+ break; \
+ } \
} \
+ \
+ *outptr++ = ch; \
+ written = 1; \
} \
else \
{ \
- assert (set == KSC5601_set); \
+ char buf[2]; \
\
- written = ucs4_to_ksc5601 (ch, outptr, \
- (NEED_LENGTH_TEST ? outend - outptr : 2)); \
+ written = ucs4_to_ksc5601 (ch, buf, 2); \
\
- if (NEED_LENGTH_TEST && written == 0) \
+ if (written == UNKNOWN_10646_CHAR) \
{ \
- result = GCONV_FULL_OUTPUT; \
+ /* Illegal character. */ \
+ result = GCONV_ILLEGAL_INPUT; \
break; \
} \
- if (written == UNKNOWN_10646_CHAR) \
- { \
- /* Either this is an unknown character or we have to switch \
- the currently selected character set. The character sets \
- do not code entirely separate parts of ISO 10646 and \
- therefore there is no single correct result. If we choose \
- the character set to use wrong we might be end up with \
- using yet another character set for the next character \
- though the current and the next could be encoded with one \
- character set. We leave this kind of optimization for \
- later and now simply use a fixed order in which we test for \
- availability */ \
- \
- if (ch <= 0x7f) \
- { \
- /* We must encode using ASCII. First write out the \
- escape sequence. */ \
- *outptr++ = SO; \
- set = ASCII_set; \
- \
- if (NEED_LENGTH_TEST && outptr == outend) \
- { \
- result = GCONV_FULL_OUTPUT; \
- break; \
- } \
- \
- *outptr++ = ch; \
- } \
- else \
- { \
- char buf[2]; \
+ assert (written == 2); \
\
- written = ucs4_to_ksc5601 (ch, buf, 2); \
- if (written != UNKNOWN_10646_CHAR) \
- { \
- /* We use KSC 5601. */ \
- *outptr++ = SI; \
- set = KSC5601_set; \
- \
- if (NEED_LENGTH_TEST && outptr + 2 > outend) \
- { \
- result = GCONV_FULL_OUTPUT; \
- break; \
- } \
+ /* We use KSC 5601. */ \
+ if (set != KSC5601_set) \
+ { \
+ *outptr++ = SO; \
+ set = KSC5601_set; \
+ } \
\
- *outptr++ = buf[0]; \
- *outptr++ = buf[1]; \
- } \
- else \
- { \
- result = GCONV_ILLEGAL_INPUT; \
- break; \
- } \
- } \
+ if (NEED_LENGTH_TEST && outptr + 2 > outend) \
+ { \
+ result = GCONV_FULL_OUTPUT; \
+ break; \
} \
+ \
+ *outptr++ = buf[0]; \
+ *outptr++ = buf[1]; \
} \
\
/* Now that we wrote the output increment the input pointer. */ \
inptr += 4; \
}
-#define EXTRA_LOOP_DECLS , int set
+#define EXTRA_LOOP_DECLS , int *setp
+#define INIT_PARAMS int set = *setp
+#define UPDATE_PARAMS *setp = set
#include <iconv/loop.c>
diff --git a/iconvdata/ksc5601.h b/iconvdata/ksc5601.h
index 0e77c76b96..0b10dcd6b3 100644
--- a/iconvdata/ksc5601.h
+++ b/iconvdata/ksc5601.h
@@ -73,7 +73,7 @@ ksc5601_to_ucs4 (const unsigned char **s, size_t avail, unsigned char offset)
if (idx >= 1410 && idx < 3760)
return (__ksc5601_hangul_to_ucs[idx - 1410]
?: ((*s) -= 2, UNKNOWN_10646_CHAR));
- else if (idx > 3854)
+ else if (idx >= 3854)
/* Hanja : row 42 - row 93 : 3854 = 94 * (42-1) */
return (__ksc5601_hanja_to_ucs[idx - 3854]
?: ((*s) -= 2, UNKNOWN_10646_CHAR));
diff --git a/iconvdata/testdata/ISO-2022-KR b/iconvdata/testdata/ISO-2022-KR
new file mode 100644
index 0000000000..619b76f1c8
--- /dev/null
+++ b/iconvdata/testdata/ISO-2022-KR
@@ -0,0 +1,552 @@
+$)C
+ !! !" !# !$ !% !& !' !( !) !* !+ !, !- !. !/
+!0 !1 !2 !3 !4 !5 !6 !7 !8 !9 !: !; !< != !> !?
+!@ !A !B !C !D !E !F !G !H !I !J !K !L !M !N !O
+!P !Q !R !S !T !U !V !W !X !Y !Z ![ !\ !] !^ !_
+!` !a !b !c !d !e !f !g !h !i !j !k !l !m !n !o
+!p !q !r !s !t !u !v !w !x !y !z !{ !| !} !~
+ "! "" "# "$ "% "& "' "( ") "* "+ ", "- ". "/
+"0 "1 "2 "3 "4 "5 "6 "7 "8 "9 ": "; "< "= "> "?
+"@ "A "B "C "D "E "F "G "H "I "J "K "L "M "N "O
+"P "Q "R "S "T "U "V "W "X "Y "Z "[ "\ "] "^ "_
+"` "a "b "c "d "e
+
+ #! #" ## #$ #% #& #' #( #) #* #+ #, #- #. #/
+#0 #1 #2 #3 #4 #5 #6 #7 #8 #9 #: #; #< #= #> #?
+#@ #A #B #C #D #E #F #G #H #I #J #K #L #M #N #O
+#P #Q #R #S #T #U #V #W #X #Y #Z #[ #\ #] #^ #_
+#` #a #b #c #d #e #f #g #h #i #j #k #l #m #n #o
+#p #q #r #s #t #u #v #w #x #y #z #{ #| #} #~
+ $! $" $# $$ $% $& $' $( $) $* $+ $, $- $. $/
+$0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $: $; $< $= $> $?
+$@ $A $B $C $D $E $F $G $H $I $J $K $L $M $N $O
+$P $Q $R $S $T $U $V $W $X $Y $Z $[ $\ $] $^ $_
+$` $a $b $c $d $e $f $g $h $i $j $k $l $m $n $o
+$p $q $r $s $t $u $v $w $x $y $z ${ $| $} $~
+ %! %" %# %$ %% %& %' %( %) %*
+%0 %1 %2 %3 %4 %5 %6 %7 %8 %9
+ %A %B %C %D %E %F %G %H %I %J %K %L %M %N %O
+%P %Q %R %S %T %U %V %W %X
+ %a %b %c %d %e %f %g %h %i %j %k %l %m %n %o
+%p %q %r %s %t %u %v %w %x
+ &! &" &# &$ &% && &' &( &) &* &+ &, &- &. &/
+&0 &1 &2 &3 &4 &5 &6 &7 &8 &9 &: &; &< &= &> &?
+&@ &A &B &C &D &E &F &G &H &I &J &K &L &M &N &O
+&P &Q &R &S &T &U &V &W &X &Y &Z &[ &\ &] &^ &_
+&` &a &b &c &d
+
+ '! '" '# '$ '% '& '' '( ') '* '+ ', '- '. '/
+'0 '1 '2 '3 '4 '5 '6 '7 '8 '9 ': '; '< '= '> '?
+'@ 'A 'B 'C 'D 'E 'F 'G 'H 'I 'J 'K 'L 'M 'N 'O
+'P 'Q 'R 'S 'T 'U 'V 'W 'X 'Y 'Z '[ '\ '] '^ '_
+'` 'a 'b 'c 'd 'e 'f 'g 'h 'i 'j 'k 'l 'm 'n 'o
+
+ (! (" (# ($ (& (( () (* (+ (, (- (. (/
+ (1 (2 (3 (4 (5 (6 (7 (8 (9 (: (; (< (= (> (?
+(@ (A (B (C (D (E (F (G (H (I (J (K (L (M (N (O
+(P (Q (R (S (T (U (V (W (X (Y (Z ([ (\ (] (^ (_
+(` (a (b (c (d (e (f (g (h (i (j (k (l (m (n (o
+(p (q (r (s (t (u (v (w (x (y (z ({ (| (} (~
+ )! )" )# )$ )% )& )' )( )) )* )+ ), )- ). )/
+)0 )1 )2 )3 )4 )5 )6 )7 )8 )9 ): ); )< )= )> )?
+)@ )A )B )C )D )E )F )G )H )I )J )K )L )M )N )O
+)P )Q )R )S )T )U )V )W )X )Y )Z )[ )\ )] )^ )_
+)` )a )b )c )d )e )f )g )h )i )j )k )l )m )n )o
+)p )q )r )s )t )u )v )w )x )y )z ){ )| )} )~
+ *! *" *# *$ *% *& *' *( *) ** *+ *, *- *. */
+*0 *1 *2 *3 *4 *5 *6 *7 *8 *9 *: *; *< *= *> *?
+*@ *A *B *C *D *E *F *G *H *I *J *K *L *M *N *O
+*P *Q *R *S *T *U *V *W *X *Y *Z *[ *\ *] *^ *_
+*` *a *b *c *d *e *f *g *h *i *j *k *l *m *n *o
+*p *q *r *s
+ +! +" +# +$ +% +& +' +( +) +* ++ +, +- +. +/
++0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +: +; +< += +> +?
++@ +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O
++P +Q +R +S +T +U +V +W +X +Y +Z +[ +\ +] +^ +_
++` +a +b +c +d +e +f +g +h +i +j +k +l +m +n +o
++p +q +r +s +t +u +v
+ ,! ," ,# ,$ ,% ,& ,' ,( ,) ,* ,+ ,, ,- ,. ,/
+,0 ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,: ,; ,< ,= ,> ,?
+,@ ,A
+ ,Q ,R ,S ,T ,U ,V ,W ,X ,Y ,Z ,[ ,\ ,] ,^ ,_
+,` ,a ,b ,c ,d ,e ,f ,g ,h ,i ,j ,k ,l ,m ,n ,o
+,p ,q
+
+
+
+
+
+ 0! 0" 0# 0$ 0% 0& 0' 0( 0) 0* 0+ 0, 0- 0. 0/
+00 01 02 03 04 05 06 07 08 09 0: 0; 0< 0= 0> 0?
+0@ 0A 0B 0C 0D 0E 0F 0G 0H 0I 0J 0K 0L 0M 0N 0O
+0P 0Q 0R 0S 0T 0U 0V 0W 0X 0Y 0Z 0[ 0\ 0] 0^ 0_
+0` 0a 0b 0c 0d 0e 0f 0g 0h 0i 0j 0k 0l 0m 0n 0o
+0p 0q 0r 0s 0t 0u 0v 0w 0x 0y 0z 0{ 0| 0} 0~
+ 1! 1" 1# 1$ 1% 1& 1' 1( 1) 1* 1+ 1, 1- 1. 1/
+10 11 12 13 14 15 16 17 18 19 1: 1; 1< 1= 1> 1?
+1@ 1A 1B 1C 1D 1E 1F 1G 1H 1I 1J 1K 1L 1M 1N 1O
+1P 1Q 1R 1S 1T 1U 1V 1W 1X 1Y 1Z 1[ 1\ 1] 1^ 1_
+1` 1a 1b 1c 1d 1e 1f 1g 1h 1i 1j 1k 1l 1m 1n 1o
+1p 1q 1r 1s 1t 1u 1v 1w 1x 1y 1z 1{ 1| 1} 1~
+ 2! 2" 2# 2$ 2% 2& 2' 2( 2) 2* 2+ 2, 2- 2. 2/
+20 21 22 23 24 25 26 27 28 29 2: 2; 2< 2= 2> 2?
+2@ 2A 2B 2C 2D 2E 2F 2G 2H 2I 2J 2K 2L 2M 2N 2O
+2P 2Q 2R 2S 2T 2U 2V 2W 2X 2Y 2Z 2[ 2\ 2] 2^ 2_
+2` 2a 2b 2c 2d 2e 2f 2g 2h 2i 2j 2k 2l 2m 2n 2o
+2p 2q 2r 2s 2t 2u 2v 2w 2x 2y 2z 2{ 2| 2} 2~
+ 3! 3" 3# 3$ 3% 3& 3' 3( 3) 3* 3+ 3, 3- 3. 3/
+30 31 32 33 34 35 36 37 38 39 3: 3; 3< 3= 3> 3?
+3@ 3A 3B 3C 3D 3E 3F 3G 3H 3I 3J 3K 3L 3M 3N 3O
+3P 3Q 3R 3S 3T 3U 3V 3W 3X 3Y 3Z 3[ 3\ 3] 3^ 3_
+3` 3a 3b 3c 3d 3e 3f 3g 3h 3i 3j 3k 3l 3m 3n 3o
+3p 3q 3r 3s 3t 3u 3v 3w 3x 3y 3z 3{ 3| 3} 3~
+ 4! 4" 4# 4$ 4% 4& 4' 4( 4) 4* 4+ 4, 4- 4. 4/
+40 41 42 43 44 45 46 47 48 49 4: 4; 4< 4= 4> 4?
+4@ 4A 4B 4C 4D 4E 4F 4G 4H 4I 4J 4K 4L 4M 4N 4O
+4P 4Q 4R 4S 4T 4U 4V 4W 4X 4Y 4Z 4[ 4\ 4] 4^ 4_
+4` 4a 4b 4c 4d 4e 4f 4g 4h 4i 4j 4k 4l 4m 4n 4o
+4p 4q 4r 4s 4t 4u 4v 4w 4x 4y 4z 4{ 4| 4} 4~
+ 5! 5" 5# 5$ 5% 5& 5' 5( 5) 5* 5+ 5, 5- 5. 5/
+50 51 52 53 54 55 56 57 58 59 5: 5; 5< 5= 5> 5?
+5@ 5A 5B 5C 5D 5E 5F 5G 5H 5I 5J 5K 5L 5M 5N 5O
+5P 5Q 5R 5S 5T 5U 5V 5W 5X 5Y 5Z 5[ 5\ 5] 5^ 5_
+5` 5a 5b 5c 5d 5e 5f 5g 5h 5i 5j 5k 5l 5m 5n 5o
+5p 5q 5r 5s 5t 5u 5v 5w 5x 5y 5z 5{ 5| 5} 5~
+ 6! 6" 6# 6$ 6% 6& 6' 6( 6) 6* 6+ 6, 6- 6. 6/
+60 61 62 63 64 65 66 67 68 69 6: 6; 6< 6= 6> 6?
+6@ 6A 6B 6C 6D 6E 6F 6G 6H 6I 6J 6K 6L 6M 6N 6O
+6P 6Q 6R 6S 6T 6U 6V 6W 6X 6Y 6Z 6[ 6\ 6] 6^ 6_
+6` 6a 6b 6c 6d 6e 6f 6g 6h 6i 6j 6k 6l 6m 6n 6o
+6p 6q 6r 6s 6t 6u 6v 6w 6x 6y 6z 6{ 6| 6} 6~
+ 7! 7" 7# 7$ 7% 7& 7' 7( 7) 7* 7+ 7, 7- 7. 7/
+70 71 72 73 74 75 76 77 78 79 7: 7; 7< 7= 7> 7?
+7@ 7A 7B 7C 7D 7E 7F 7G 7H 7I 7J 7K 7L 7M 7N 7O
+7P 7Q 7R 7S 7T 7U 7V 7W 7X 7Y 7Z 7[ 7\ 7] 7^ 7_
+7` 7a 7b 7c 7d 7e 7f 7g 7h 7i 7j 7k 7l 7m 7n 7o
+7p 7q 7r 7s 7t 7u 7v 7w 7x 7y 7z 7{ 7| 7} 7~
+ 8! 8" 8# 8$ 8% 8& 8' 8( 8) 8* 8+ 8, 8- 8. 8/
+80 81 82 83 84 85 86 87 88 89 8: 8; 8< 8= 8> 8?
+8@ 8A 8B 8C 8D 8E 8F 8G 8H 8I 8J 8K 8L 8M 8N 8O
+8P 8Q 8R 8S 8T 8U 8V 8W 8X 8Y 8Z 8[ 8\ 8] 8^ 8_
+8` 8a 8b 8c 8d 8e 8f 8g 8h 8i 8j 8k 8l 8m 8n 8o
+8p 8q 8r 8s 8t 8u 8v 8w 8x 8y 8z 8{ 8| 8} 8~
+ 9! 9" 9# 9$ 9% 9& 9' 9( 9) 9* 9+ 9, 9- 9. 9/
+90 91 92 93 94 95 96 97 98 99 9: 9; 9< 9= 9> 9?
+9@ 9A 9B 9C 9D 9E 9F 9G 9H 9I 9J 9K 9L 9M 9N 9O
+9P 9Q 9R 9S 9T 9U 9V 9W 9X 9Y 9Z 9[ 9\ 9] 9^ 9_
+9` 9a 9b 9c 9d 9e 9f 9g 9h 9i 9j 9k 9l 9m 9n 9o
+9p 9q 9r 9s 9t 9u 9v 9w 9x 9y 9z 9{ 9| 9} 9~
+ :! :" :# :$ :% :& :' :( :) :* :+ :, :- :. :/
+:0 :1 :2 :3 :4 :5 :6 :7 :8 :9 :: :; :< := :> :?
+:@ :A :B :C :D :E :F :G :H :I :J :K :L :M :N :O
+:P :Q :R :S :T :U :V :W :X :Y :Z :[ :\ :] :^ :_
+:` :a :b :c :d :e :f :g :h :i :j :k :l :m :n :o
+:p :q :r :s :t :u :v :w :x :y :z :{ :| :} :~
+ ;! ;" ;# ;$ ;% ;& ;' ;( ;) ;* ;+ ;, ;- ;. ;/
+;0 ;1 ;2 ;3 ;4 ;5 ;6 ;7 ;8 ;9 ;: ;; ;< ;= ;> ;?
+;@ ;A ;B ;C ;D ;E ;F ;G ;H ;I ;J ;K ;L ;M ;N ;O
+;P ;Q ;R ;S ;T ;U ;V ;W ;X ;Y ;Z ;[ ;\ ;] ;^ ;_
+;` ;a ;b ;c ;d ;e ;f ;g ;h ;i ;j ;k ;l ;m ;n ;o
+;p ;q ;r ;s ;t ;u ;v ;w ;x ;y ;z ;{ ;| ;} ;~
+ <! <" <# <$ <% <& <' <( <) <* <+ <, <- <. </
+<0 <1 <2 <3 <4 <5 <6 <7 <8 <9 <: <; << <= <> <?
+<@ <A <B <C <D <E <F <G <H <I <J <K <L <M <N <O
+<P <Q <R <S <T <U <V <W <X <Y <Z <[ <\ <] <^ <_
+<` <a <b <c <d <e <f <g <h <i <j <k <l <m <n <o
+<p <q <r <s <t <u <v <w <x <y <z <{ <| <} <~
+ =! =" =# =$ =% =& =' =( =) =* =+ =, =- =. =/
+=0 =1 =2 =3 =4 =5 =6 =7 =8 =9 =: =; =< == => =?
+=@ =A =B =C =D =E =F =G =H =I =J =K =L =M =N =O
+=P =Q =R =S =T =U =V =W =X =Y =Z =[ =\ =] =^ =_
+=` =a =b =c =d =e =f =g =h =i =j =k =l =m =n =o
+=p =q =r =s =t =u =v =w =x =y =z ={ =| =} =~
+ >! >" ># >$ >% >& >' >( >) >* >+ >, >- >. >/
+>0 >1 >2 >3 >4 >5 >6 >7 >8 >9 >: >; >< >= >> >?
+>@ >A >B >C >D >E >F >G >H >I >J >K >L >M >N >O
+>P >Q >R >S >T >U >V >W >X >Y >Z >[ >\ >] >^ >_
+>` >a >b >c >d >e >f >g >h >i >j >k >l >m >n >o
+>p >q >r >s >t >u >v >w >x >y >z >{ >| >} >~
+ ?! ?" ?# ?$ ?% ?& ?' ?( ?) ?* ?+ ?, ?- ?. ?/
+?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9 ?: ?; ?< ?= ?> ??
+?@ ?A ?B ?C ?D ?E ?F ?G ?H ?I ?J ?K ?L ?M ?N ?O
+?P ?Q ?R ?S ?T ?U ?V ?W ?X ?Y ?Z ?[ ?\ ?] ?^ ?_
+?` ?a ?b ?c ?d ?e ?f ?g ?h ?i ?j ?k ?l ?m ?n ?o
+?p ?q ?r ?s ?t ?u ?v ?w ?x ?y ?z ?{ ?| ?} ?~
+ @! @" @# @$ @% @& @' @( @) @* @+ @, @- @. @/
+@0 @1 @2 @3 @4 @5 @6 @7 @8 @9 @: @; @< @= @> @?
+@@ @A @B @C @D @E @F @G @H @I @J @K @L @M @N @O
+@P @Q @R @S @T @U @V @W @X @Y @Z @[ @\ @] @^ @_
+@` @a @b @c @d @e @f @g @h @i @j @k @l @m @n @o
+@p @q @r @s @t @u @v @w @x @y @z @{ @| @} @~
+ A! A" A# A$ A% A& A' A( A) A* A+ A, A- A. A/
+A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A: A; A< A= A> A?
+A@ AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO
+AP AQ AR AS AT AU AV AW AX AY AZ A[ A\ A] A^ A_
+A` Aa Ab Ac Ad Ae Af Ag Ah Ai Aj Ak Al Am An Ao
+Ap Aq Ar As At Au Av Aw Ax Ay Az A{ A| A} A~
+ B! B" B# B$ B% B& B' B( B) B* B+ B, B- B. B/
+B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 B: B; B< B= B> B?
+B@ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO
+BP BQ BR BS BT BU BV BW BX BY BZ B[ B\ B] B^ B_
+B` Ba Bb Bc Bd Be Bf Bg Bh Bi Bj Bk Bl Bm Bn Bo
+Bp Bq Br Bs Bt Bu Bv Bw Bx By Bz B{ B| B} B~
+ C! C" C# C$ C% C& C' C( C) C* C+ C, C- C. C/
+C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 C: C; C< C= C> C?
+C@ CA CB CC CD CE CF CG CH CI CJ CK CL CM CN CO
+CP CQ CR CS CT CU CV CW CX CY CZ C[ C\ C] C^ C_
+C` Ca Cb Cc Cd Ce Cf Cg Ch Ci Cj Ck Cl Cm Cn Co
+Cp Cq Cr Cs Ct Cu Cv Cw Cx Cy Cz C{ C| C} C~
+ D! D" D# D$ D% D& D' D( D) D* D+ D, D- D. D/
+D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 D: D; D< D= D> D?
+D@ DA DB DC DD DE DF DG DH DI DJ DK DL DM DN DO
+DP DQ DR DS DT DU DV DW DX DY DZ D[ D\ D] D^ D_
+D` Da Db Dc Dd De Df Dg Dh Di Dj Dk Dl Dm Dn Do
+Dp Dq Dr Ds Dt Du Dv Dw Dx Dy Dz D{ D| D} D~
+ E! E" E# E$ E% E& E' E( E) E* E+ E, E- E. E/
+E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 E: E; E< E= E> E?
+E@ EA EB EC ED EE EF EG EH EI EJ EK EL EM EN EO
+EP EQ ER ES ET EU EV EW EX EY EZ E[ E\ E] E^ E_
+E` Ea Eb Ec Ed Ee Ef Eg Eh Ei Ej Ek El Em En Eo
+Ep Eq Er Es Et Eu Ev Ew Ex Ey Ez E{ E| E} E~
+ F! F" F# F$ F% F& F' F( F) F* F+ F, F- F. F/
+F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F: F; F< F= F> F?
+F@ FA FB FC FD FE FF FG FH FI FJ FK FL FM FN FO
+FP FQ FR FS FT FU FV FW FX FY FZ F[ F\ F] F^ F_
+F` Fa Fb Fc Fd Fe Ff Fg Fh Fi Fj Fk Fl Fm Fn Fo
+Fp Fq Fr Fs Ft Fu Fv Fw Fx Fy Fz F{ F| F} F~
+ G! G" G# G$ G% G& G' G( G) G* G+ G, G- G. G/
+G0 G1 G2 G3 G4 G5 G6 G7 G8 G9 G: G; G< G= G> G?
+G@ GA GB GC GD GE GF GG GH GI GJ GK GL GM GN GO
+GP GQ GR GS GT GU GV GW GX GY GZ G[ G\ G] G^ G_
+G` Ga Gb Gc Gd Ge Gf Gg Gh Gi Gj Gk Gl Gm Gn Go
+Gp Gq Gr Gs Gt Gu Gv Gw Gx Gy Gz G{ G| G} G~
+ H! H" H# H$ H% H& H' H( H) H* H+ H, H- H. H/
+H0 H1 H2 H3 H4 H5 H6 H7 H8 H9 H: H; H< H= H> H?
+H@ HA HB HC HD HE HF HG HH HI HJ HK HL HM HN HO
+HP HQ HR HS HT HU HV HW HX HY HZ H[ H\ H] H^ H_
+H` Ha Hb Hc Hd He Hf Hg Hh Hi Hj Hk Hl Hm Hn Ho
+Hp Hq Hr Hs Ht Hu Hv Hw Hx Hy Hz H{ H| H} H~
+
+
+
+
+
+
+ J! J" J# J$ J% J& J' J( J) J* J+ J, J- J. J/
+J0 J1 J2 J3 J4 J5 J6 J7 J8 J9 J: J; J< J= J> J?
+J@ JA JB JC JD JE JF JG JH JI JJ JK JL JM JN JO
+JP JQ JR JS JT JU JV JW JX JY JZ J[ J\ J] J^ J_
+J` Ja Jb Jc Jd Je Jf Jg Jh Ji Jj Jk Jl Jm Jn Jo
+Jp Jq Jr Js Jt Ju Jv Jw Jx Jy Jz J{ J| J} J~
+ K! K" K# K$ K% K& K' K( K) K* K+ K, K- K. K/
+K0 K1 K2 K3 K4 K5 K6 K7 K8 K9 K: K; K< K= K> K?
+K@ KA KB KC KD KE KF KG KH KI KJ KK KL KM KN KO
+KP KQ KR KS KT KU KV KW KX KY KZ K[ K\ K] K^ K_
+K` Ka Kb Kc Kd Ke Kf Kg Kh Ki Kj Kk Kl Km Kn Ko
+Kp Kq Kr Ks Kt Ku Kv Kw Kx Ky Kz K{ K| K} K~
+ L! L" L# L$ L% L& L' L( L) L* L+ L, L- L. L/
+L0 L1 L2 L3 L4 L5 L6 L7 L8 L9 L: L; L< L= L> L?
+L@ LA LB LC LD LE LF LG LH LI LJ LK LL LM LN LO
+LP LQ LR LS LT LU LV LW LX LY LZ L[ L\ L] L^ L_
+L` La Lb Lc Ld Le Lf Lg Lh Li Lj Lk Ll Lm Ln Lo
+Lp Lq Lr Ls Lt Lu Lv Lw Lx Ly Lz L{ L| L} L~
+ M! M" M# M$ M% M& M' M( M) M* M+ M, M- M. M/
+M0 M1 M2 M3 M4 M5 M6 M7 M8 M9 M: M; M< M= M> M?
+M@ MA MB MC MD ME MF MG MH MI MJ MK ML MM MN MO
+MP MQ MR MS MT MU MV MW MX MY MZ M[ M\ M] M^ M_
+M` Ma Mb Mc Md Me Mf Mg Mh Mi Mj Mk Ml Mm Mn Mo
+Mp Mq Mr Ms Mt Mu Mv Mw Mx My Mz M{ M| M} M~
+ N! N" N# N$ N% N& N' N( N) N* N+ N, N- N. N/
+N0 N1 N2 N3 N4 N5 N6 N7 N8 N9 N: N; N< N= N> N?
+N@ NA NB NC ND NE NF NG NH NI NJ NK NL NM NN NO
+NP NQ NR NS NT NU NV NW NX NY NZ N[ N\ N] N^ N_
+N` Na Nb Nc Nd Ne Nf Ng Nh Ni Nj Nk Nl Nm Nn No
+Np Nq Nr Ns Nt Nu Nv Nw Nx Ny Nz N{ N| N} N~
+ O! O" O# O$ O% O& O' O( O) O* O+ O, O- O. O/
+O0 O1 O2 O3 O4 O5 O6 O7 O8 O9 O: O; O< O= O> O?
+O@ OA OB OC OD OE OF OG OH OI OJ OK OL OM ON OO
+OP OQ OR OS OT OU OV OW OX OY OZ O[ O\ O] O^ O_
+O` Oa Ob Oc Od Oe Of Og Oh Oi Oj Ok Ol Om On Oo
+Op Oq Or Os Ot Ou Ov Ow Ox Oy Oz O{ O| O} O~
+ P! P" P# P$ P% P& P' P( P) P* P+ P, P- P. P/
+P0 P1 P2 P3 P4 P5 P6 P7 P8 P9 P: P; P< P= P> P?
+P@ PA PB PC PD PE PF PG PH PI PJ PK PL PM PN PO
+PP PQ PR PS PT PU PV PW PX PY PZ P[ P\ P] P^ P_
+P` Pa Pb Pc Pd Pe Pf Pg Ph Pi Pj Pk Pl Pm Pn Po
+Pp Pq Pr Ps Pt Pu Pv Pw Px Py Pz P{ P| P} P~
+ Q! Q" Q# Q$ Q% Q& Q' Q( Q) Q* Q+ Q, Q- Q. Q/
+Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q: Q; Q< Q= Q> Q?
+Q@ QA QB QC QD QE QF QG QH QI QJ QK QL QM QN QO
+QP QQ QR QS QT QU QV QW QX QY QZ Q[ Q\ Q] Q^ Q_
+Q` Qa Qb Qc Qd Qe Qf Qg Qh Qi Qj Qk Ql Qm Qn Qo
+Qp Qq Qr Qs Qt Qu Qv Qw Qx Qy Qz Q{ Q| Q} Q~
+ R! R" R# R$ R% R& R' R( R) R* R+ R, R- R. R/
+R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R: R; R< R= R> R?
+R@ RA RB RC RD RE RF RG RH RI RJ RK RL RM RN RO
+RP RQ RR RS RT RU RV RW RX RY RZ R[ R\ R] R^ R_
+R` Ra Rb Rc Rd Re Rf Rg Rh Ri Rj Rk Rl Rm Rn Ro
+Rp Rq Rr Rs Rt Ru Rv Rw Rx Ry Rz R{ R| R} R~
+ S! S" S# S$ S% S& S' S( S) S* S+ S, S- S. S/
+S0 S1 S2 S3 S4 S5 S6 S7 S8 S9 S: S; S< S= S> S?
+S@ SA SB SC SD SE SF SG SH SI SJ SK SL SM SN SO
+SP SQ SR SS ST SU SV SW SX SY SZ S[ S\ S] S^ S_
+S` Sa Sb Sc Sd Se Sf Sg Sh Si Sj Sk Sl Sm Sn So
+Sp Sq Sr Ss St Su Sv Sw Sx Sy Sz S{ S| S} S~
+ T! T" T# T$ T% T& T' T( T) T* T+ T, T- T. T/
+T0 T1 T2 T3 T4 T5 T6 T7 T8 T9 T: T; T< T= T> T?
+T@ TA TB TC TD TE TF TG TH TI TJ TK TL TM TN TO
+TP TQ TR TS TT TU TV TW TX TY TZ T[ T\ T] T^ T_
+T` Ta Tb Tc Td Te Tf Tg Th Ti Tj Tk Tl Tm Tn To
+Tp Tq Tr Ts Tt Tu Tv Tw Tx Ty Tz T{ T| T} T~
+ U! U" U# U$ U% U& U' U( U) U* U+ U, U- U. U/
+U0 U1 U2 U3 U4 U5 U6 U7 U8 U9 U: U; U< U= U> U?
+U@ UA UB UC UD UE UF UG UH UI UJ UK UL UM UN UO
+UP UQ UR US UT UU UV UW UX UY UZ U[ U\ U] U^ U_
+U` Ua Ub Uc Ud Ue Uf Ug Uh Ui Uj Uk Ul Um Un Uo
+Up Uq Ur Us Ut Uu Uv Uw Ux Uy Uz U{ U| U} U~
+ V! V" V# V$ V% V& V' V( V) V* V+ V, V- V. V/
+V0 V1 V2 V3 V4 V5 V6 V7 V8 V9 V: V; V< V= V> V?
+V@ VA VB VC VD VE VF VG VH VI VJ VK VL VM VN VO
+VP VQ VR VS VT VU VV VW VX VY VZ V[ V\ V] V^ V_
+V` Va Vb Vc Vd Ve Vf Vg Vh Vi Vj Vk Vl Vm Vn Vo
+Vp Vq Vr Vs Vt Vu Vv Vw Vx Vy Vz V{ V| V} V~
+ W! W" W# W$ W% W& W' W( W) W* W+ W, W- W. W/
+W0 W1 W2 W3 W4 W5 W6 W7 W8 W9 W: W; W< W= W> W?
+W@ WA WB WC WD WE WF WG WH WI WJ WK WL WM WN WO
+WP WQ WR WS WT WU WV WW WX WY WZ W[ W\ W] W^ W_
+W` Wa Wb Wc Wd We Wf Wg Wh Wi Wj Wk Wl Wm Wn Wo
+Wp Wq Wr Ws Wt Wu Wv Ww Wx Wy Wz W{ W| W} W~
+ X! X" X# X$ X% X& X' X( X) X* X+ X, X- X. X/
+X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X: X; X< X= X> X?
+X@ XA XB XC XD XE XF XG XH XI XJ XK XL XM XN XO
+XP XQ XR XS XT XU XV XW XX XY XZ X[ X\ X] X^ X_
+X` Xa Xb Xc Xd Xe Xf Xg Xh Xi Xj Xk Xl Xm Xn Xo
+Xp Xq Xr Xs Xt Xu Xv Xw Xx Xy Xz X{ X| X} X~
+ Y! Y" Y# Y$ Y% Y& Y' Y( Y) Y* Y+ Y, Y- Y. Y/
+Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9 Y: Y; Y< Y= Y> Y?
+Y@ YA YB YC YD YE YF YG YH YI YJ YK YL YM YN YO
+YP YQ YR YS YT YU YV YW YX YY YZ Y[ Y\ Y] Y^ Y_
+Y` Ya Yb Yc Yd Ye Yf Yg Yh Yi Yj Yk Yl Ym Yn Yo
+Yp Yq Yr Ys Yt Yu Yv Yw Yx Yy Yz Y{ Y| Y} Y~
+ Z! Z" Z# Z$ Z% Z& Z' Z( Z) Z* Z+ Z, Z- Z. Z/
+Z0 Z1 Z2 Z3 Z4 Z5 Z6 Z7 Z8 Z9 Z: Z; Z< Z= Z> Z?
+Z@ ZA ZB ZC ZD ZE ZF ZG ZH ZI ZJ ZK ZL ZM ZN ZO
+ZP ZQ ZR ZS ZT ZU ZV ZW ZX ZY ZZ Z[ Z\ Z] Z^ Z_
+Z` Za Zb Zc Zd Ze Zf Zg Zh Zi Zj Zk Zl Zm Zn Zo
+Zp Zq Zr Zs Zt Zu Zv Zw Zx Zy Zz Z{ Z| Z} Z~
+ [! [" [# [$ [% [& [' [( [) [* [+ [, [- [. [/
+[0 [1 [2 [3 [4 [5 [6 [7 [8 [9 [: [; [< [= [> [?
+[@ [A [B [C [D [E [F [G [H [I [J [K [L [M [N [O
+[P [Q [R [S [T [U [V [W [X [Y [Z [[ [\ [] [^ [_
+[` [a [b [c [d [e [f [g [h [i [j [k [l [m [n [o
+[p [q [r [s [t [u [v [w [x [y [z [{ [| [} [~
+ \! \" \# \$ \% \& \' \( \) \* \+ \, \- \. \/
+\0 \1 \2 \3 \4 \5 \6 \7 \8 \9 \: \; \< \= \> \?
+\@ \A \B \C \D \E \F \G \H \I \J \K \L \M \N \O
+\P \Q \R \S \T \U \V \W \X \Y \Z \[ \\ \] \^ \_
+\` \a \b \c \d \e \f \g \h \i \j \k \l \m \n \o
+\p \q \r \s \t \u \v \w \x \y \z \{ \| \} \~
+ ]! ]" ]# ]$ ]% ]& ]' ]( ]) ]* ]+ ], ]- ]. ]/
+]0 ]1 ]2 ]3 ]4 ]5 ]6 ]7 ]8 ]9 ]: ]; ]< ]= ]> ]?
+]@ ]A ]B ]C ]D ]E ]F ]G ]H ]I ]J ]K ]L ]M ]N ]O
+]P ]Q ]R ]S ]T ]U ]V ]W ]X ]Y ]Z ][ ]\ ]] ]^ ]_
+]` ]a ]b ]c ]d ]e ]f ]g ]h ]i ]j ]k ]l ]m ]n ]o
+]p ]q ]r ]s ]t ]u ]v ]w ]x ]y ]z ]{ ]| ]} ]~
+ ^! ^" ^# ^$ ^% ^& ^' ^( ^) ^* ^+ ^, ^- ^. ^/
+^0 ^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^: ^; ^< ^= ^> ^?
+^@ ^A ^B ^C ^D ^E ^F ^G ^H ^I ^J ^K ^L ^M ^N ^O
+^P ^Q ^R ^S ^T ^U ^V ^W ^X ^Y ^Z ^[ ^\ ^] ^^ ^_
+^` ^a ^b ^c ^d ^e ^f ^g ^h ^i ^j ^k ^l ^m ^n ^o
+^p ^q ^r ^s ^t ^u ^v ^w ^x ^y ^z ^{ ^| ^} ^~
+ _! _" _# _$ _% _& _' _( _) _* _+ _, _- _. _/
+_0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _: _; _< _= _> _?
+_@ _A _B _C _D _E _F _G _H _I _J _K _L _M _N _O
+_P _Q _R _S _T _U _V _W _X _Y _Z _[ _\ _] _^ __
+_` _a _b _c _d _e _f _g _h _i _j _k _l _m _n _o
+_p _q _r _s _t _u _v _w _x _y _z _{ _| _} _~
+ `! `" `# `$ `% `& `' `( `) `* `+ `, `- `. `/
+`0 `1 `2 `3 `4 `5 `6 `7 `8 `9 `: `; `< `= `> `?
+`@ `A `B `C `D `E `F `G `H `I `J `K `L `M `N `O
+`P `Q `R `S `T `U `V `W `X `Y `Z `[ `\ `] `^ `_
+`` `a `b `c `d `e `f `g `h `i `j `k `l `m `n `o
+`p `q `r `s `t `u `v `w `x `y `z `{ `| `} `~
+ a! a" a# a$ a% a& a' a( a) a* a+ a, a- a. a/
+a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a: a; a< a= a> a?
+a@ aA aB aC aD aE aF aG aH aI aJ aK aL aM aN aO
+aP aQ aR aS aT aU aV aW aX aY aZ a[ a\ a] a^ a_
+a` aa ab ac ad ae af ag ah ai aj ak al am an ao
+ap aq ar as at au av aw ax ay az a{ a| a} a~
+ b! b" b# b$ b% b& b' b( b) b* b+ b, b- b. b/
+b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 b: b; b< b= b> b?
+b@ bA bB bC bD bE bF bG bH bI bJ bK bL bM bN bO
+bP bQ bR bS bT bU bV bW bX bY bZ b[ b\ b] b^ b_
+b` ba bb bc bd be bf bg bh bi bj bk bl bm bn bo
+bp bq br bs bt bu bv bw bx by bz b{ b| b} b~
+ c! c" c# c$ c% c& c' c( c) c* c+ c, c- c. c/
+c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c: c; c< c= c> c?
+c@ cA cB cC cD cE cF cG cH cI cJ cK cL cM cN cO
+cP cQ cR cS cT cU cV cW cX cY cZ c[ c\ c] c^ c_
+c` ca cb cc cd ce cf cg ch ci cj ck cl cm cn co
+cp cq cr cs ct cu cv cw cx cy cz c{ c| c} c~
+ d! d" d# d$ d% d& d' d( d) d* d+ d, d- d. d/
+d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d: d; d< d= d> d?
+d@ dA dB dC dD dE dF dG dH dI dJ dK dL dM dN dO
+dP dQ dR dS dT dU dV dW dX dY dZ d[ d\ d] d^ d_
+d` da db dc dd de df dg dh di dj dk dl dm dn do
+dp dq dr ds dt du dv dw dx dy dz d{ d| d} d~
+ e! e" e# e$ e% e& e' e( e) e* e+ e, e- e. e/
+e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 e: e; e< e= e> e?
+e@ eA eB eC eD eE eF eG eH eI eJ eK eL eM eN eO
+eP eQ eR eS eT eU eV eW eX eY eZ e[ e\ e] e^ e_
+e` ea eb ec ed ee ef eg eh ei ej ek el em en eo
+ep eq er es et eu ev ew ex ey ez e{ e| e} e~
+ f! f" f# f$ f% f& f' f( f) f* f+ f, f- f. f/
+f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 f: f; f< f= f> f?
+f@ fA fB fC fD fE fF fG fH fI fJ fK fL fM fN fO
+fP fQ fR fS fT fU fV fW fX fY fZ f[ f\ f] f^ f_
+f` fa fb fc fd fe ff fg fh fi fj fk fl fm fn fo
+fp fq fr fs ft fu fv fw fx fy fz f{ f| f} f~
+ g! g" g# g$ g% g& g' g( g) g* g+ g, g- g. g/
+g0 g1 g2 g3 g4 g5 g6 g7 g8 g9 g: g; g< g= g> g?
+g@ gA gB gC gD gE gF gG gH gI gJ gK gL gM gN gO
+gP gQ gR gS gT gU gV gW gX gY gZ g[ g\ g] g^ g_
+g` ga gb gc gd ge gf gg gh gi gj gk gl gm gn go
+gp gq gr gs gt gu gv gw gx gy gz g{ g| g} g~
+ h! h" h# h$ h% h& h' h( h) h* h+ h, h- h. h/
+h0 h1 h2 h3 h4 h5 h6 h7 h8 h9 h: h; h< h= h> h?
+h@ hA hB hC hD hE hF hG hH hI hJ hK hL hM hN hO
+hP hQ hR hS hT hU hV hW hX hY hZ h[ h\ h] h^ h_
+h` ha hb hc hd he hf hg hh hi hj hk hl hm hn ho
+hp hq hr hs ht hu hv hw hx hy hz h{ h| h} h~
+ i! i" i# i$ i% i& i' i( i) i* i+ i, i- i. i/
+i0 i1 i2 i3 i4 i5 i6 i7 i8 i9 i: i; i< i= i> i?
+i@ iA iB iC iD iE iF iG iH iI iJ iK iL iM iN iO
+iP iQ iR iS iT iU iV iW iX iY iZ i[ i\ i] i^ i_
+i` ia ib ic id ie if ig ih ii ij ik il im in io
+ip iq ir is it iu iv iw ix iy iz i{ i| i} i~
+ j! j" j# j$ j% j& j' j( j) j* j+ j, j- j. j/
+j0 j1 j2 j3 j4 j5 j6 j7 j8 j9 j: j; j< j= j> j?
+j@ jA jB jC jD jE jF jG jH jI jJ jK jL jM jN jO
+jP jQ jR jS jT jU jV jW jX jY jZ j[ j\ j] j^ j_
+j` ja jb jc jd je jf jg jh ji jj jk jl jm jn jo
+jp jq jr js jt ju jv jw jx jy jz j{ j| j} j~
+ k! k" k# k$ k% k& k' k( k) k* k+ k, k- k. k/
+k0 k1 k2 k3 k4 k5 k6 k7 k8 k9 k: k; k< k= k> k?
+k@ kA kB kC kD kE kF kG kH kI kJ kK kL kM kN kO
+kP kQ kR kS kT kU kV kW kX kY kZ k[ k\ k] k^ k_
+k` ka kb kc kd ke kf kg kh ki kj kk kl km kn ko
+kp kq kr ks kt ku kv kw kx ky kz k{ k| k} k~
+ l! l" l# l$ l% l& l' l( l) l* l+ l, l- l. l/
+l0 l1 l2 l3 l4 l5 l6 l7 l8 l9 l: l; l< l= l> l?
+l@ lA lB lC lD lE lF lG lH lI lJ lK lL lM lN lO
+lP lQ lR lS lT lU lV lW lX lY lZ l[ l\ l] l^ l_
+l` la lb lc ld le lf lg lh li lj lk ll lm ln lo
+lp lq lr ls lt lu lv lw lx ly lz l{ l| l} l~
+ m! m" m# m$ m% m& m' m( m) m* m+ m, m- m. m/
+m0 m1 m2 m3 m4 m5 m6 m7 m8 m9 m: m; m< m= m> m?
+m@ mA mB mC mD mE mF mG mH mI mJ mK mL mM mN mO
+mP mQ mR mS mT mU mV mW mX mY mZ m[ m\ m] m^ m_
+m` ma mb mc md me mf mg mh mi mj mk ml mm mn mo
+mp mq mr ms mt mu mv mw mx my mz m{ m| m} m~
+ n! n" n# n$ n% n& n' n( n) n* n+ n, n- n. n/
+n0 n1 n2 n3 n4 n5 n6 n7 n8 n9 n: n; n< n= n> n?
+n@ nA nB nC nD nE nF nG nH nI nJ nK nL nM nN nO
+nP nQ nR nS nT nU nV nW nX nY nZ n[ n\ n] n^ n_
+n` na nb nc nd ne nf ng nh ni nj nk nl nm nn no
+np nq nr ns nt nu nv nw nx ny nz n{ n| n} n~
+ o! o" o# o$ o% o& o' o( o) o* o+ o, o- o. o/
+o0 o1 o2 o3 o4 o5 o6 o7 o8 o9 o: o; o< o= o> o?
+o@ oA oB oC oD oE oF oG oH oI oJ oK oL oM oN oO
+oP oQ oR oS oT oU oV oW oX oY oZ o[ o\ o] o^ o_
+o` oa ob oc od oe of og oh oi oj ok ol om on oo
+op oq or os ot ou ov ow ox oy oz o{ o| o} o~
+ p! p" p# p$ p% p& p' p( p) p* p+ p, p- p. p/
+p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p: p; p< p= p> p?
+p@ pA pB pC pD pE pF pG pH pI pJ pK pL pM pN pO
+pP pQ pR pS pT pU pV pW pX pY pZ p[ p\ p] p^ p_
+p` pa pb pc pd pe pf pg ph pi pj pk pl pm pn po
+pp pq pr ps pt pu pv pw px py pz p{ p| p} p~
+ q! q" q# q$ q% q& q' q( q) q* q+ q, q- q. q/
+q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q: q; q< q= q> q?
+q@ qA qB qC qD qE qF qG qH qI qJ qK qL qM qN qO
+qP qQ qR qS qT qU qV qW qX qY qZ q[ q\ q] q^ q_
+q` qa qb qc qd qe qf qg qh qi qj qk ql qm qn qo
+qp qq qr qs qt qu qv qw qx qy qz q{ q| q} q~
+ r! r" r# r$ r% r& r' r( r) r* r+ r, r- r. r/
+r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r: r; r< r= r> r?
+r@ rA rB rC rD rE rF rG rH rI rJ rK rL rM rN rO
+rP rQ rR rS rT rU rV rW rX rY rZ r[ r\ r] r^ r_
+r` ra rb rc rd re rf rg rh ri rj rk rl rm rn ro
+rp rq rr rs rt ru rv rw rx ry rz r{ r| r} r~
+ s! s" s# s$ s% s& s' s( s) s* s+ s, s- s. s/
+s0 s1 s2 s3 s4 s5 s6 s7 s8 s9 s: s; s< s= s> s?
+s@ sA sB sC sD sE sF sG sH sI sJ sK sL sM sN sO
+sP sQ sR sS sT sU sV sW sX sY sZ s[ s\ s] s^ s_
+s` sa sb sc sd se sf sg sh si sj sk sl sm sn so
+sp sq sr ss st su sv sw sx sy sz s{ s| s} s~
+ t! t" t# t$ t% t& t' t( t) t* t+ t, t- t. t/
+t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t: t; t< t= t> t?
+t@ tA tB tC tD tE tF tG tH tI tJ tK tL tM tN tO
+tP tQ tR tS tT tU tV tW tX tY tZ t[ t\ t] t^ t_
+t` ta tb tc td te tf tg th ti tj tk tl tm tn to
+tp tq tr ts tt tu tv tw tx ty tz t{ t| t} t~
+ u! u" u# u$ u% u& u' u( u) u* u+ u, u- u. u/
+u0 u1 u2 u3 u4 u5 u6 u7 u8 u9 u: u; u< u= u> u?
+u@ uA uB uC uD uE uF uG uH uI uJ uK uL uM uN uO
+uP uQ uR uS uT uU uV uW uX uY uZ u[ u\ u] u^ u_
+u` ua ub uc ud ue uf ug uh ui uj uk ul um un uo
+up uq ur us ut uu uv uw ux uy uz u{ u| u} u~
+ v! v" v# v$ v% v& v' v( v) v* v+ v, v- v. v/
+v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v: v; v< v= v> v?
+v@ vA vB vC vD vE vF vG vH vI vJ vK vL vM vN vO
+vP vQ vR vS vT vU vV vW vX vY vZ v[ v\ v] v^ v_
+v` va vb vc vd ve vf vg vh vi vj vk vl vm vn vo
+vp vq vr vs vt vu vv vw vx vy vz v{ v| v} v~
+ w! w" w# w$ w% w& w' w( w) w* w+ w, w- w. w/
+w0 w1 w2 w3 w4 w5 w6 w7 w8 w9 w: w; w< w= w> w?
+w@ wA wB wC wD wE wF wG wH wI wJ wK wL wM wN wO
+wP wQ wR wS wT wU wV wW wX wY wZ w[ w\ w] w^ w_
+w` wa wb wc wd we wf wg wh wi wj wk wl wm wn wo
+wp wq wr ws wt wu wv ww wx wy wz w{ w| w} w~
+ x! x" x# x$ x% x& x' x( x) x* x+ x, x- x. x/
+x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x: x; x< x= x> x?
+x@ xA xB xC xD xE xF xG xH xI xJ xK xL xM xN xO
+xP xQ xR xS xT xU xV xW xX xY xZ x[ x\ x] x^ x_
+x` xa xb xc xd xe xf xg xh xi xj xk xl xm xn xo
+xp xq xr xs xt xu xv xw xx xy xz x{ x| x} x~
+ y! y" y# y$ y% y& y' y( y) y* y+ y, y- y. y/
+y0 y1 y2 y3 y4 y5 y6 y7 y8 y9 y: y; y< y= y> y?
+y@ yA yB yC yD yE yF yG yH yI yJ yK yL yM yN yO
+yP yQ yR yS yT yU yV yW yX yY yZ y[ y\ y] y^ y_
+y` ya yb yc yd ye yf yg yh yi yj yk yl ym yn yo
+yp yq yr ys yt yu yv yw yx yy yz y{ y| y} y~
+ z! z" z# z$ z% z& z' z( z) z* z+ z, z- z. z/
+z0 z1 z2 z3 z4 z5 z6 z7 z8 z9 z: z; z< z= z> z?
+z@ zA zB zC zD zE zF zG zH zI zJ zK zL zM zN zO
+zP zQ zR zS zT zU zV zW zX zY zZ z[ z\ z] z^ z_
+z` za zb zc zd ze zf zg zh zi zj zk zl zm zn zo
+zp zq zr zs zt zu zv zw zx zy zz z{ z| z} z~
+ {! {" {# {$ {% {& {' {( {) {* {+ {, {- {. {/
+{0 {1 {2 {3 {4 {5 {6 {7 {8 {9 {: {; {< {= {> {?
+{@ {A {B {C {D {E {F {G {H {I {J {K {L {M {N {O
+{P {Q {R {S {T {U {V {W {X {Y {Z {[ {\ {] {^ {_
+{` {a {b {c {d {e {f {g {h {i {j {k {l {m {n {o
+{p {q {r {s {t {u {v {w {x {y {z {{ {| {} {~
+ |! |" |# |$ |% |& |' |( |) |* |+ |, |- |. |/
+|0 |1 |2 |3 |4 |5 |6 |7 |8 |9 |: |; |< |= |> |?
+|@ |A |B |C |D |E |F |G |H |I |J |K |L |M |N |O
+|P |Q |R |S |T |U |V |W |X |Y |Z |[ |\ |] |^ |_
+|` |a |b |c |d |e |f |g |h |i |j |k |l |m |n |o
+|p |q |r |s |t |u |v |w |x |y |z |{ || |} |~
+ }! }" }# }$ }% }& }' }( }) }* }+ }, }- }. }/
+}0 }1 }2 }3 }4 }5 }6 }7 }8 }9 }: }; }< }= }> }?
+}@ }A }B }C }D }E }F }G }H }I }J }K }L }M }N }O
+}P }Q }R }S }T }U }V }W }X }Y }Z }[ }\ }] }^ }_
+}` }a }b }c }d }e }f }g }h }i }j }k }l }m }n }o
+}p }q }r }s }t }u }v }w }x }y }z }{ }| }} }~
+
+
+
+
+
+
diff --git a/wcsmbs/btowc.c b/wcsmbs/btowc.c
index cca4645c19..b6a682897b 100644
--- a/wcsmbs/btowc.c
+++ b/wcsmbs/btowc.c
@@ -43,6 +43,8 @@ __btowc (c)
/* Tell where we want the result. */
data.outbuf = (char *) buf;
data.outbufend = data.outbuf + sizeof (wchar_t);
+ data.invocation_counter = 0;
+ data.internal_use = 1;
data.is_last = 1;
data.statep = &data.__state;
diff --git a/wcsmbs/mbrtowc.c b/wcsmbs/mbrtowc.c
index 1dcaf968ea..837b42f1f1 100644
--- a/wcsmbs/mbrtowc.c
+++ b/wcsmbs/mbrtowc.c
@@ -45,6 +45,8 @@ __mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
/* Tell where we want the result. */
data.outbuf = outbuf;
data.outbufend = outbuf + sizeof (wchar_t);
+ data.invocation_counter = 0;
+ data.internal_use = 1;
data.is_last = 1;
data.statep = ps ?: &state;
diff --git a/wcsmbs/mbsnrtowcs.c b/wcsmbs/mbsnrtowcs.c
index a73fcd1e98..fbebc8de4c 100644
--- a/wcsmbs/mbsnrtowcs.c
+++ b/wcsmbs/mbsnrtowcs.c
@@ -50,6 +50,8 @@ __mbsnrtowcs (dst, src, nmc, len, ps)
int status;
/* Tell where we want the result. */
+ data.invocation_counter = 0;
+ data.internal_use = 1;
data.is_last = 1;
data.statep = ps ?: &state;
diff --git a/wcsmbs/mbsrtowcs.c b/wcsmbs/mbsrtowcs.c
index bad27bab98..1993e2e702 100644
--- a/wcsmbs/mbsrtowcs.c
+++ b/wcsmbs/mbsrtowcs.c
@@ -46,6 +46,8 @@ __mbsrtowcs (dst, src, len, ps)
int status;
/* Tell where we want the result. */
+ data.invocation_counter = 0;
+ data.internal_use = 1;
data.is_last = 1;
data.statep = ps ?: &state;
diff --git a/wcsmbs/wcrtomb.c b/wcsmbs/wcrtomb.c
index 6fd33e06b3..9f3c303e2a 100644
--- a/wcsmbs/wcrtomb.c
+++ b/wcsmbs/wcrtomb.c
@@ -45,6 +45,8 @@ __wcrtomb (char *s, wchar_t wc, mbstate_t *ps)
/* Tell where we want the result. */
data.outbuf = s;
data.outbufend = s + MB_CUR_MAX;
+ data.invocation_counter = 0;
+ data.internal_use = 1;
data.is_last = 1;
data.statep = ps ?: &state;
diff --git a/wcsmbs/wcsnrtombs.c b/wcsmbs/wcsnrtombs.c
index eb4a96daad..ab74e30927 100644
--- a/wcsmbs/wcsnrtombs.c
+++ b/wcsmbs/wcsnrtombs.c
@@ -49,6 +49,8 @@ __wcsnrtombs (dst, src, nwc, len, ps)
size_t result = 0;
/* Tell where we want the result. */
+ data.invocation_counter = 0;
+ data.internal_use = 1;
data.is_last = 1;
data.statep = ps ?: &state;
diff --git a/wcsmbs/wcsrtombs.c b/wcsmbs/wcsrtombs.c
index 27b1df8f6d..b40d14318a 100644
--- a/wcsmbs/wcsrtombs.c
+++ b/wcsmbs/wcsrtombs.c
@@ -45,6 +45,8 @@ __wcsrtombs (dst, src, len, ps)
size_t result = 0;
/* Tell where we want the result. */
+ data.invocation_counter = 0;
+ data.internal_use = 1;
data.is_last = 1;
data.statep = ps ?: &state;
diff --git a/wcsmbs/wctob.c b/wcsmbs/wctob.c
index 7376538ad9..8cbcbe41c3 100644
--- a/wcsmbs/wctob.c
+++ b/wcsmbs/wctob.c
@@ -38,6 +38,8 @@ wctob (c)
/* Tell where we want the result. */
data.outbuf = buf;
data.outbufend = buf + MB_LEN_MAX;
+ data.invocation_counter = 0;
+ data.internal_use = 1;
data.is_last = 1;
data.statep = &data.__state;