bananakernel-commits Mailing List for Banana Kernel
Brought to you by:
strangedata
You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(13) |
Jul
(17) |
Aug
(22) |
Sep
(28) |
Oct
(20) |
Nov
|
Dec
|
---|
From: Rafael C. T. <str...@us...> - 2004-10-31 22:12:51
|
Update of /cvsroot/bananakernel/src/iso/boot/grub In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1735/iso/boot/grub Modified Files: menu.lst stage2_eltorito Log Message: Correcoes para apagar os arquivos corretos no make clean e modificacoes no menu do grub para as versoes de kernel disponiveis. Index: stage2_eltorito =================================================================== RCS file: /cvsroot/bananakernel/src/iso/boot/grub/stage2_eltorito,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 Binary files /tmp/cvsOLZ4LN and /tmp/cvsKAw1WD differ Index: menu.lst =================================================================== RCS file: /cvsroot/bananakernel/src/iso/boot/grub/menu.lst,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- menu.lst 31 Oct 2004 20:42:43 -0000 1.1 +++ menu.lst 31 Oct 2004 22:12:26 -0000 1.2 @@ -7,23 +7,23 @@ # kernel /vmlinuz-version ro root=/dev/sda2 # initrd /initrd-version.img #boot=/dev/sda -title BananaKernel Imagem de Teste +title BananaKernel SIMPLES root (cd) - kernel /Image + kernel /SIMPLES boot -title BananaKernel Kernel Formatador de Disco +title BananaKernel SIMPLES Filesystem root (cd) - kernel /Format + kernel /SIMPLES-FS boot -title BananaKernel Nanica (Simples) +title BananaKernel INTERMEDIARIA root (cd) - kernel /Simples + kernel /INTERMEDIARIA boot -title BananaKernel Nanica (Intermediaria) +title BananaKernel INTERMEDIARIA Filesystem root (cd) - kernel /Inter + kernel /INTERMEDIARIA-FS boot |
From: Rafael C. T. <str...@us...> - 2004-10-31 22:12:51
|
Update of /cvsroot/bananakernel/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1735 Modified Files: Makefile Log Message: Correcoes para apagar os arquivos corretos no make clean e modificacoes no menu do grub para as versoes de kernel disponiveis. Index: Makefile =================================================================== RCS file: /cvsroot/bananakernel/src/Makefile,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- Makefile 31 Oct 2004 20:40:41 -0000 1.2 +++ Makefile 31 Oct 2004 22:12:26 -0000 1.3 @@ -61,5 +61,6 @@ rm intermediaria-fs.out clean: + rm grub.iso cd iso rm SIMPLES SIMPLES-FS INTERMEDIARIA INTERMEDIARIA-FS |
From: Rafael C. T. <str...@us...> - 2004-10-31 20:42:55
|
Update of /cvsroot/bananakernel/src/iso/boot/grub In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17497/boot/grub Added Files: banana-grub.gif banana-grub.xpm menu.lst stage2_eltorito Log Message: Import inicial dos arquivos necessarios para a criacao da iso. Ainda nao testado. --- NEW FILE: banana-grub.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: stage2_eltorito --- (This appears to be a binary file; contents omitted.) --- NEW FILE: banana-grub.xpm --- /* XPM */ static char *banana-grub[] = { /* columns rows colors chars-per-pixel */ "640 480 256 2", " c black", ". c #000033", "X c #000066", "o c #000099", "O c #0000CC", "+ c blue", "@ c #003300", "# c #003333", "$ c #003366", "% c #003399", "& c #0033CC", "* c #0033FF", "= c #006600", "- c #006633", "; c #006666", ": c #006699", "> c #0066CC", ", c #0066FF", "< c #009900", "1 c #009933", "2 c #009966", "3 c #009999", "4 c #0099CC", "5 c #0099FF", "6 c #00CC00", "7 c #00CC33", "8 c #00CC66", "9 c #00CC99", "0 c #00CCCC", "q c #00CCFF", "w c green", "e c #00FF33", "r c #00FF66", "t c #00FF99", "y c #00FFCC", "u c cyan", "i c #330000", "p c #330033", "a c #330066", "s c #330099", "d c #3300CC", "f c #3300FF", "g c #333300", "h c gray20", "j c #333366", "k c #333399", "l c #3333CC", "z c #3333FF", "x c #336600", "c c #336633", "v c #336666", "b c #336699", "n c #3366CC", "m c #3366FF", "M c #339900", "N c #339933", "B c #339966", "V c #339999", "C c #3399CC", "Z c #3399FF", "A c #33CC00", "S c #33CC33", "D c #33CC66", "F c #33CC99", "G c #33CCCC", "H c #33CCFF", "J c #33FF00", "K c #33FF33", "L c #33FF66", "P c #33FF99", "I c #33FFCC", "U c #33FFFF", "Y c #660000", "T c #660033", "R c #660066", "E c #660099", "W c #6600CC", "Q c #6600FF", "! c #663300", "~ c #663333", "^ c #663366", "/ c #663399", "( c #6633CC", ") c #6633FF", "_ c #666600", "` c #666633", "' c gray40", "] c #666699", "[ c #6666CC", "{ c #6666FF", "} c #669900", "| c #669933", " . c #669966", ".. c #669999", "X. c #6699CC", "o. c #6699FF", "O. c #66CC00", "+. c #66CC33", "@. c #66CC66", "#. c #66CC99", "$. c #66CCCC", "%. c #66CCFF", "&. c #66FF00", "*. c #66FF33", "=. c #66FF66", "-. c #66FF99", ";. c #66FFCC", ":. c #66FFFF", ">. c #990000", ",. c #990033", "<. c #990066", "1. c #990099", "2. c #9900CC", "3. c #9900FF", "4. c #993300", "5. c #993333", "6. c #993366", "7. c #993399", "8. c #9933CC", "9. c #9933FF", "0. c #996600", "q. c #996633", "w. c #996666", "e. c #996699", "r. c #9966CC", "t. c #9966FF", "y. c #999900", "u. c #999933", "i. c #999966", "p. c gray60", "a. c #9999CC", "s. c #9999FF", "d. c #99CC00", "f. c #99CC33", "g. c #99CC66", "h. c #99CC99", "j. c #99CCCC", "k. c #99CCFF", "l. c #99FF00", "z. c #99FF33", "x. c #99FF66", "c. c #99FF99", "v. c #99FFCC", "b. c #99FFFF", "n. c #CC0000", "m. c #CC0033", "M. c #CC0066", "N. c #CC0099", "B. c #CC00CC", "V. c #CC00FF", "C. c #CC3300", "Z. c #CC3333", "A. c #CC3366", "S. c #CC3399", "D. c #CC33CC", "F. c #CC33FF", "G. c #CC6600", "H. c #CC6633", "J. c #CC6666", "K. c #CC6699", "L. c #CC66CC", "P. c #CC66FF", "I. c #CC9900", "U. c #CC9933", "Y. c #CC9966", "T. c #CC9999", "R. c #CC99CC", "E. c #CC99FF", "W. c #CCCC00", "Q. c #CCCC33", "!. c #CCCC66", "~. c #CCCC99", "^. c gray80", "/. c #CCCCFF", "(. c #CCFF00", "). c #CCFF33", "_. c #CCFF66", "`. c #CCFF99", "'. c #CCFFCC", "]. c #CCFFFF", "[. c red", "{. c #FF0033", "}. c #FF0066", "|. c #FF0099", " X c #FF00CC", ".X c magenta", "XX c #FF3300", "oX c #FF3333", "OX c #FF3366", "+X c #FF3399", "@X c #FF33CC", "#X c #FF33FF", "$X c #FF6600", "%X c #FF6633", "&X c #FF6666", "*X c #FF6699", "=X c #FF66CC", "-X c #FF66FF", ";X c #FF9900", ":X c #FF9933", ">X c #FF9966", ",X c #FF9999", "<X c #FF99CC", "1X c #FF99FF", "2X c #FFCC00", "3X c #FFCC33", "4X c #FFCC66", "5X c #FFCC99", "6X c #FFCCCC", "7X c #FFCCFF", "8X c yellow", "9X c #FFFF33", "0X c #FFFF66", "qX c #FFFF99", "wX c #FFFFCC", "eX c gray100", "rX c black", "tX c gray5", "yX c gray10", "uX c #282828", "iX c #353535", "pX c #434343", "aX c #505050", "sX c #5D5D5D", "dX c gray42", "fX c gray47", "gX c #868686", "hX c #939393", "jX c gray63", "kX c #AEAEAE", "lX c #BBBBBB", "zX c gray79", "xX c gray84", "cX c #E4E4E4", "vX c #F1F1F1", "bX c gray100", "nX c black", "mX c black", "MX c black", "NX c black", "BX c black", "VX c black", "CX c black", "ZX c black", "AX c black", "SX c black", "DX c black", "FX c black", "GX c black", "HX c black", "JX c black", "KX c black", "LX c black", "PX c black", "IX c black", "UX c black", /* pixels */ "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX^.p.T.p.^.eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX^.' i i h h h h h h ' ^.eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX^. h g h g h h g h g h h ^.eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXh h h h h h h h h h h p.eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXi i h h h h h i.wXwXwXwXwXwXwXwXwXi.h i h h h h h i i p.eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXi h h h h wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXT.h h h h h h i p.eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXh h h h wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXh h h h h h h g ^.eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXg h h h g wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXh h h g h h ^.eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX' i wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXh i h h h h h h eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXh h g h h wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXi. h h g h h h eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX^. h h h wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwX' h h h h h p.eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXh h h i wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXw.i g h h h h ^.eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXh h h h i ' wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXg h h h h h i ^.eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXh ' wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwX~. h h h ^.eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX~ ' wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXh h g h g p.eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXp. h h h h wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwX` i i i ~ eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXh h wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwX~.h h h h ' eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX' h g i.wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXg h g ' eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX i h h wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXp. h h h h h h eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXh i i h ~.wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwX~.h h h h h h eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXh g h g i wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwX~. h g h eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX' h h h h ~.wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwX~. h h h h eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX' i i wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwX' i i h eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXh i wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwX i h h eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX' h h h ^.wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXh h h ^.eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXh h i g wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXp. h h h h p.eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX^.h h i.wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwX` h h h h h ^.eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX h h wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwX h eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX h ` wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwX h h eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXh h h h wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXh h h i eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXh h h h g wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXh h i h eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXp. ~.wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwX h g h h h ^.eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX^.h h h h p.wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwX~. i h eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX` h h h h wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwX` g h h eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXh wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwX' h h eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXh ' wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXh h ~ eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXh h h h wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwX h h h h p.eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX i h h h wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXh h h h h h eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXh h i.wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwX h ' eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXh i h h wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXh h h i p.eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXi i h h wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXh h i eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXh h h ' wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXp. h h h h eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXp.h g h ~.wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwX g h g h p.eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX", "eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXi i i h wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXi.i i h eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXe... [truncated message content] |
From: Rafael C. T. <str...@us...> - 2004-10-31 20:42:53
|
Update of /cvsroot/bananakernel/src/iso In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17497 Added Files: boot.catalog Log Message: Import inicial dos arquivos necessarios para a criacao da iso. Ainda nao testado. --- NEW FILE: boot.catalog --- (This appears to be a binary file; contents omitted.) |
From: Rafael C. T. <str...@us...> - 2004-10-31 20:41:48
|
Update of /cvsroot/bananakernel/src/iso/boot/grub In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17294/boot/grub Log Message: Directory /cvsroot/bananakernel/src/iso/boot/grub added to the repository |
From: Rafael C. T. <str...@us...> - 2004-10-31 20:41:31
|
Update of /cvsroot/bananakernel/src/iso/boot In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17229/boot Log Message: Directory /cvsroot/bananakernel/src/iso/boot added to the repository |
From: Rafael C. T. <str...@us...> - 2004-10-31 20:40:52
|
Update of /cvsroot/bananakernel/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16762 Modified Files: Makefile Log Message: Modificacao para trabalhar com ISO de CD, ao inves de imagem de disco. Isso facilita a utilizacao por parte dos alunos, e evita a necesidade de se criar uma configuracao no sistema operacional que permita a execucao do mount para copiar os arquivos para dentro da imagem de disco (i.e. sudo). Index: Makefile =================================================================== RCS file: /cvsroot/bananakernel/src/Makefile,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- Makefile 27 Oct 2004 20:34:20 -0000 1.1 +++ Makefile 31 Oct 2004 20:40:41 -0000 1.2 @@ -18,6 +18,7 @@ CC = x86-oskit-gcc MKIMG = mkmb2 +MKISO = mkisofs ERRORSRC = erros/error.c TESTSRC = testes/01MM.c testes/03SC.c testes/04PE.c testes/teste.c @@ -34,28 +35,31 @@ -loskit_memdebug -loskit_lmm -loskit_c all: SIMPLES SIMPLES-FS INTER INTER-FS + $(MKISO) -R -b boot/grub/stage2_eltorito -no-emul-boot \ + -boot-load-size 4 -boot-info-table -o grub.iso iso SIMPLES: $(SIMPLESSRC) $(ERRORSRC) $(TESTSRC) $(CC) -DSIMPLES $(SIMPLESSRC) $(ERRORSRC) $(TESTSRC) -o simples.out - $(MKIMG) -o SIMPLES simples.out + $(MKIMG) -o iso/SIMPLES simples.out rm simples.out SIMPLES-FS: $(SIMPLESSRCFS) $(ERRORSRC) $(TESTSRCFS) $(CC) -DSIMPLES -DFS $(SIMPLESSRCFS) $(ERRORSRC) $(TESTSRCFS) \ $(FSLIBS) -o simples-fs.out - $(MKIMG) -o SIMPLES-FS simples-fs.out + $(MKIMG) -o iso/SIMPLES-FS simples-fs.out rm simples-fs.out INTER: $(INTERSRC) $(ERRORSRC) $(TESTSRC) $(CC) $(INTERSRC) $(ERRORSRC) $(TESTSRC) -o intermediaria.out - $(MKIMG) -o INTERMEDIARIA intermediaria.out + $(MKIMG) -o iso/INTERMEDIARIA intermediaria.out rm intermediaria.out INTER-FS: $(INTERSRCFS) $(ERRORSRC) $(TESTSRCFS) $(CC) -DFS $(INTERSRCFS) $(ERRORSRC) $(TESTSRCFS) $(FSLIBS) \ -o intermediaria-fs.out - $(MKIMG) -o INTERMEDIARIA-FS intermediaria-fs.out + $(MKIMG) -o iso/INTERMEDIARIA-FS intermediaria-fs.out rm intermediaria-fs.out clean: + cd iso rm SIMPLES SIMPLES-FS INTERMEDIARIA INTERMEDIARIA-FS |
From: Rafael C. T. <str...@us...> - 2004-10-31 20:39:06
|
Update of /cvsroot/bananakernel/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16544 Added Files: bochsrc Log Message: Arquivo com configuracao default para o bochs. Aparentemente ficou muito dificil para os alunos fazerem a configuracao do emulador por conta propria. --- NEW FILE: bochsrc --- # configuration file generated by Bochs # no floppya # no floppyb # Quando for ser utilizado um sistema de arquivos, deve-se descomentar e # configurar a diretiva abaixo #diskc: file="c.img", cyl=24, heads=10, spt=63 # Abaixo estah o nome da imagem de CD (iso) a ser utilizada cdromd: dev=grub.iso, status=inserted # As imagens ROM para VGA e BIOS estao em locais diferente em cada instalacao # e devem ser configuradas abaixo romimage: file=/usr/bochs/1.4.1/BIOS-bochs-latest, address=0xf0000 vgaromimage: /usr/bochs/1.4.1/VGABIOS-elpin-2.40 megs: 32 # no parport #1 # no sb16 boot: cdrom vga_update_interval: 30000 keyboard_serial_delay: 20000 keyboard_paste_delay: 100000 floppy_command_delay: 50000 ips: 500000 mouse: enabled=0 private_colormap: enabled=0 i440fxsupport: enabled=0 time0: 0 # no ne2k newharddrivesupport: enabled=1 # no loader log: - panic: action=ask error: action=report info: action=report debug: action=ignore keyboard_mapping: enabled=0, map= keyboard_type: mf |
From: Rafael C. T. <str...@us...> - 2004-10-31 20:38:06
|
Update of /cvsroot/bananakernel/src/iso In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16361/iso Log Message: Directory /cvsroot/bananakernel/src/iso added to the repository |
From: Rafael C. T. <str...@us...> - 2004-10-27 20:34:29
|
Update of /cvsroot/bananakernel/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7971 Added Files: Makefile Log Message: Foi retirado o makefile incompleto, que se encontrava no diretorio simples, e adicionado o Makefile que gera todos os kernels. A saida dele eh: SIMPLES SIMPLES-FS INTERMEDIARIA INTERMEDIARIA-FS Prontos para serem utilizados em um imagem de disco ou ISO de CD. --- NEW FILE: Makefile --- # The contents of this file are subject to the Mozilla Public License # Version 1.1 (the "License"); you may not use this file except in # compliance with the License. You may obtain a copy of the License at # http://www.mozilla.org/MPL/ # # Software distributed under the License is distributed on an "AS IS" basis, # WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License # for the specific language governing rights and limitations under the # License. # # The Original Code is the BananaKernel Makefile # # The Initial Developer of the Original Code is the BananaKernel Developers # Group. Portions created by BananaKernel are Copyright (C) 2004 # BananaKernel Developers Group. All Rights Reserved. # # Contributor(s): CC = x86-oskit-gcc MKIMG = mkmb2 ERRORSRC = erros/error.c TESTSRC = testes/01MM.c testes/03SC.c testes/04PE.c testes/teste.c TESTSRCFS = testes/02FS.c testes/fs_teste.c SIMPLESSRC = simples/mm.c simples/sched.c SIMPLESSRCFS = simples/fs.c INTERSRC = intermediaria/mm.c intermediaria/sched.c INTERSRCFS = intermediaria/fs.c FSLIBS = -loskit_startup -loskit_clientos -loskit_linux_dev \ -loskit_linux_fs -loskit_dev -loskit_diskpart -loskit_kern \ -loskit_memdebug -loskit_lmm -loskit_c all: SIMPLES SIMPLES-FS INTER INTER-FS SIMPLES: $(SIMPLESSRC) $(ERRORSRC) $(TESTSRC) $(CC) -DSIMPLES $(SIMPLESSRC) $(ERRORSRC) $(TESTSRC) -o simples.out $(MKIMG) -o SIMPLES simples.out rm simples.out SIMPLES-FS: $(SIMPLESSRCFS) $(ERRORSRC) $(TESTSRCFS) $(CC) -DSIMPLES -DFS $(SIMPLESSRCFS) $(ERRORSRC) $(TESTSRCFS) \ $(FSLIBS) -o simples-fs.out $(MKIMG) -o SIMPLES-FS simples-fs.out rm simples-fs.out INTER: $(INTERSRC) $(ERRORSRC) $(TESTSRC) $(CC) $(INTERSRC) $(ERRORSRC) $(TESTSRC) -o intermediaria.out $(MKIMG) -o INTERMEDIARIA intermediaria.out rm intermediaria.out INTER-FS: $(INTERSRCFS) $(ERRORSRC) $(TESTSRCFS) $(CC) -DFS $(INTERSRCFS) $(ERRORSRC) $(TESTSRCFS) $(FSLIBS) \ -o intermediaria-fs.out $(MKIMG) -o INTERMEDIARIA-FS intermediaria-fs.out rm intermediaria-fs.out clean: rm SIMPLES SIMPLES-FS INTERMEDIARIA INTERMEDIARIA-FS |
From: Rafael C. T. <str...@us...> - 2004-10-27 20:34:29
|
Update of /cvsroot/bananakernel/src/simples In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7971/simples Removed Files: makefile Log Message: Foi retirado o makefile incompleto, que se encontrava no diretorio simples, e adicionado o Makefile que gera todos os kernels. A saida dele eh: SIMPLES SIMPLES-FS INTERMEDIARIA INTERMEDIARIA-FS Prontos para serem utilizados em um imagem de disco ou ISO de CD. --- makefile DELETED --- |
From: Rafael C. T. <str...@us...> - 2004-10-27 19:49:44
|
Update of /cvsroot/bananakernel/src/simples In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30505/simples Modified Files: bnnk.h Log Message: Foi separado por um define, o include do fs.h, para que as versoes que nao utilizem o modulo FS nao o carreguem. Index: bnnk.h =================================================================== RCS file: /cvsroot/bananakernel/src/simples/bnnk.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- bnnk.h 15 Sep 2004 20:10:53 -0000 1.3 +++ bnnk.h 27 Oct 2004 19:49:33 -0000 1.4 @@ -22,7 +22,10 @@ #ifndef _BNNK_H_ #define _BNNK_H_ +#ifdef FS #include "fs.h" +#endif + #include "mm.h" #include "sched.h" #include "../erros/error.h" |
From: Rafael C. T. <str...@us...> - 2004-10-27 19:49:42
|
Update of /cvsroot/bananakernel/src/intermediaria In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30505/intermediaria Modified Files: bnnk.h Log Message: Foi separado por um define, o include do fs.h, para que as versoes que nao utilizem o modulo FS nao o carreguem. Index: bnnk.h =================================================================== RCS file: /cvsroot/bananakernel/src/intermediaria/bnnk.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- bnnk.h 15 Sep 2004 20:10:53 -0000 1.2 +++ bnnk.h 27 Oct 2004 19:49:33 -0000 1.3 @@ -22,7 +22,10 @@ #ifndef _BNNK_H_ #define _BNNK_H_ +#ifdef FS #include "fs.h" +#endif + #include "mm.h" #include "sched.h" #include "../erros/error.h" |
From: Rafael C. T. <str...@us...> - 2004-10-27 19:46:21
|
Update of /cvsroot/bananakernel/src/intermediaria In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29892 Modified Files: fs.h Log Message: Os tipos dependentes da arquitetura foram trocados pelos tipos definidos no OSKit (e.g uint*_t -> oskit_u*_t). Foi acrescentado, tambem, um EOL na ultima linha, que estava faltando. Index: fs.h =================================================================== RCS file: /cvsroot/bananakernel/src/intermediaria/fs.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- fs.h 20 Oct 2004 02:45:20 -0000 1.2 +++ fs.h 27 Oct 2004 19:46:08 -0000 1.3 @@ -22,9 +22,6 @@ #ifndef __FS_H__ #define __FS_H__ -/* Definicoes do tipo 'uint32_t' */ -#include <sys/stdint.h> - /* Caractere que representa o final de um arquivo */ #define BNNK_FS_EOF 26 @@ -84,32 +81,32 @@ * EXT2FS - Estrutura do super bloco */ struct ext2fsSuperBlock { - uint32_t s_inodes_count; - uint32_t s_blocks_count; - uint32_t s_r_blocks_count; - uint32_t s_free_blocks_count; - uint32_t s_free_inodes_count; - uint32_t s_first_data_block; - uint32_t s_log_block_size; - uint32_t s_log_frag_size; - uint32_t s_blocks_per_group; - uint32_t s_frags_per_group; - uint32_t s_inodes_per_group; - uint32_t s_mtime; - uint32_t s_wtime; - uint16_t s_mnt_count; - uint16_t s_max_mnt_count; - uint16_t s_magic; - uint16_t s_state; - uint16_t s_errors; - uint16_t s_pad; - uint32_t s_lastcheck; - uint32_t s_checkinterval; - uint32_t s_creator_os; - uint32_t s_rev_level; - uint16_t s_def_resuid; - uint16_t s_def_resgid; - uint32_t s_reserved[235]; + oskit_u32_t s_inodes_count; + oskit_u32_t s_blocks_count; + oskit_u32_t s_r_blocks_count; + oskit_u32_t s_free_blocks_count; + oskit_u32_t s_free_inodes_count; + oskit_u32_t s_first_data_block; + oskit_u32_t s_log_block_size; + oskit_u32_t s_log_frag_size; + oskit_u32_t s_blocks_per_group; + oskit_u32_t s_frags_per_group; + oskit_u32_t s_inodes_per_group; + oskit_u32_t s_mtime; + oskit_u32_t s_wtime; + oskit_u16_t s_mnt_count; + oskit_u16_t s_max_mnt_count; + oskit_u16_t s_magic; + oskit_u16_t s_state; + oskit_u16_t s_errors; + oskit_u16_t s_pad; + oskit_u32_t s_lastcheck; + oskit_u32_t s_checkinterval; + oskit_u32_t s_creator_os; + oskit_u32_t s_rev_level; + oskit_u16_t s_def_resuid; + oskit_u16_t s_def_resgid; + oskit_u32_t s_reserved[235]; }; typedef struct ext2fsSuperBlock ext2fsSuper; @@ -118,14 +115,14 @@ * EXT2FS - Descritor de grupo */ struct ext2fsGroupDescriptor { - uint32_t bg_block_bitmap; - uint32_t bg_inode_bitmap; - uint32_t bg_inode_table; - uint16_t bg_free_blocks_count; - uint16_t bg_free_inodes_count; - uint16_t bg_used_dirs_count; - uint16_t bg_pad; - uint32_t bg_reserved[3]; + oskit_u32_t bg_block_bitmap; + oskit_u32_t bg_inode_bitmap; + oskit_u32_t bg_inode_table; + oskit_u16_t bg_free_blocks_count; + oskit_u16_t bg_free_inodes_count; + oskit_u16_t bg_used_dirs_count; + oskit_u16_t bg_pad; + oskit_u32_t bg_reserved[3]; }; typedef struct ext2fsGroupDescriptor ext2fsGroup; @@ -158,27 +155,27 @@ * EXT2FS - inode */ struct ext2fsLinuxInode { - uint16_t i_mode; // filemode - uint16_t i_uid; // owner - uint32_t i_size; // (bytes) - uint32_t i_atime; // access - uint32_t i_ctime; // "creation" - uint32_t i_mtime; // modification - uint32_t i_dtime; // deletion - uint16_t i_gid; // user group - uint16_t i_links_count; // hard links - uint32_t i_blocks; // count - uint32_t i_flags; // ext2fs - uint32_t i_reserved; // [Linux] reserved - uint32_t i_block[15]; // 12 direct, indirect, double, triple - uint32_t i_version; // NFS - uint32_t i_file_acl; // Access Control List - uint32_t i_dir_acl; // directory - uint32_t i_faddr; // fragment - uint8_t i_frag; // [Linux] number - uint8_t i_fsize; // [Linux] (bytes) - uint16_t i_pad1; // [Linux] padding - uint32_t i_reserved2[2]; // [Linux] reserved + oskit_u16_t i_mode; // filemode + oskit_u16_t i_uid; // owner + oskit_u32_t i_size; // (bytes) + oskit_u32_t i_atime; // access + oskit_u32_t i_ctime; // "creation" + oskit_u32_t i_mtime; // modification + oskit_u32_t i_dtime; // deletion + oskit_u16_t i_gid; // user group + oskit_u16_t i_links_count; // hard links + oskit_u32_t i_blocks; // count + oskit_u32_t i_flags; // ext2fs + oskit_u32_t i_reserved; // [Linux] reserved + oskit_u32_t i_block[15]; // 12 direct, indirect, double, triple + oskit_u32_t i_version; // NFS + oskit_u32_t i_file_acl; // Access Control List + oskit_u32_t i_dir_acl; // directory + oskit_u32_t i_faddr; // fragment + oskit_u8_t i_frag; // [Linux] number + oskit_u8_t i_fsize; // [Linux] (bytes) + oskit_u16_t i_pad1; // [Linux] padding + oskit_u32_t i_reserved2[2]; // [Linux] reserved }; typedef struct ext2fsLinuxInode ext2fsInode; @@ -245,4 +242,4 @@ int bnnk_read(BNNK_arquivo *a, void *buf, int qtd, int *qtd_out); int bnnk_write(BNNK_arquivo *a, void *buf, int qtd, int *qtd_in); -#endif /* __FS_H__ */ \ No newline at end of file +#endif /* __FS_H__ */ |
From: Rafael C. T. <str...@us...> - 2004-10-25 19:44:25
|
Update of /cvsroot/bananakernel/src/testes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10318 Modified Files: 01MM.c 02FS.c 03SC.c 04PE.c fs_teste.c teste.c Log Message: Inclusao de aviso de copyright. Index: 02FS.c =================================================================== RCS file: /cvsroot/bananakernel/src/testes/02FS.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- 02FS.c 21 Oct 2004 23:24:11 -0000 1.4 +++ 02FS.c 25 Oct 2004 19:44:15 -0000 1.5 @@ -1,3 +1,24 @@ +/* + * The contents of this file are subject to the Mozilla Public License + * Version 1.1 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is the BananaKernel test implementation. + * + * The Initial Developer of the Original Code is the BananaKernel Developers + * Group. Portions created by BananaKernel are Copyright (C) 2004 + * BananaKernel Developers Group. All Rights Reserved. + * + * Contributor(s): + */ + + #include <oskit/clientos.h> #include <oskit/dev/linux.h> #include <oskit/dev/dev.h> Index: 04PE.c =================================================================== RCS file: /cvsroot/bananakernel/src/testes/04PE.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- 04PE.c 15 Sep 2004 20:12:11 -0000 1.2 +++ 04PE.c 25 Oct 2004 19:44:15 -0000 1.3 @@ -1,3 +1,24 @@ +/* + * The contents of this file are subject to the Mozilla Public License + * Version 1.1 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is the BananaKernel test implementation. + * + * The Initial Developer of the Original Code is the BananaKernel Developers + * Group. Portions created by BananaKernel are Copyright (C) 2004 + * BananaKernel Developers Group. All Rights Reserved. + * + * Contributor(s): + */ + + #include "../erros/error.h" #define ERRO_MAXIMO 11 Index: teste.c =================================================================== RCS file: /cvsroot/bananakernel/src/testes/teste.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- teste.c 21 Oct 2004 23:24:11 -0000 1.4 +++ teste.c 25 Oct 2004 19:44:15 -0000 1.5 @@ -1,5 +1,22 @@ - - +/* + * The contents of this file are subject to the Mozilla Public License + * Version 1.1 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is the BananaKernel test implementation. + * + * The Initial Developer of the Original Code is the BananaKernel Developers + * Group. Portions created by BananaKernel are Copyright (C) 2004 + * BananaKernel Developers Group. All Rights Reserved. + * + * Contributor(s): + */ #include <stdio.h> Index: 01MM.c =================================================================== RCS file: /cvsroot/bananakernel/src/testes/01MM.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- 01MM.c 29 Sep 2004 17:18:09 -0000 1.4 +++ 01MM.c 25 Oct 2004 19:44:15 -0000 1.5 @@ -1,3 +1,24 @@ +/* + * The contents of this file are subject to the Mozilla Public License + * Version 1.1 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is the BananaKernel test implementation. + * + * The Initial Developer of the Original Code is the BananaKernel Developers + * Group. Portions created by BananaKernel are Copyright (C) 2004 + * BananaKernel Developers Group. All Rights Reserved. + * + * Contributor(s): + */ + + /* Esta funcao testa o gerenciador de memoria. Retorna 0 em sucesso. */ int Index: fs_teste.c =================================================================== RCS file: /cvsroot/bananakernel/src/testes/fs_teste.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- fs_teste.c 18 Oct 2004 19:30:18 -0000 1.1 +++ fs_teste.c 25 Oct 2004 19:44:15 -0000 1.2 @@ -1,5 +1,22 @@ - - +/* + * The contents of this file are subject to the Mozilla Public License + * Version 1.1 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is the BananaKernel test implementation. + * + * The Initial Developer of the Original Code is the BananaKernel Developers + * Group. Portions created by BananaKernel are Copyright (C) 2004 + * BananaKernel Developers Group. All Rights Reserved. + * + * Contributor(s): + */ #include <stdio.h> Index: 03SC.c =================================================================== RCS file: /cvsroot/bananakernel/src/testes/03SC.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- 03SC.c 29 Sep 2004 17:14:52 -0000 1.6 +++ 03SC.c 25 Oct 2004 19:44:15 -0000 1.7 @@ -1,3 +1,24 @@ +/* + * The contents of this file are subject to the Mozilla Public License + * Version 1.1 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is the BananaKernel test implementation. + * + * The Initial Developer of the Original Code is the BananaKernel Developers + * Group. Portions created by BananaKernel are Copyright (C) 2004 + * BananaKernel Developers Group. All Rights Reserved. + * + * Contributor(s): + */ + + #ifdef SIMPLES #include "../simples/bnnk.h" #else |
From: Julio H. M. <ju...@us...> - 2004-10-21 23:24:38
|
Update of /cvsroot/bananakernel/src/testes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2547 Modified Files: 02FS.c teste.c Log Message: Novos arquivos de testes, adaptados para funcionar com a versao intermediaria. Index: 02FS.c =================================================================== RCS file: /cvsroot/bananakernel/src/testes/02FS.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- 02FS.c 19 Oct 2004 21:46:42 -0000 1.3 +++ 02FS.c 21 Oct 2004 23:24:11 -0000 1.4 @@ -21,8 +21,16 @@ int ret = 0; int qtd_out = 0; + #ifdef SIMPLES + #else + #endif + printf("\n\n"); + #ifdef SIMPLES printf("BNNKTeste_#02FS: Criando arquivo 'teste1.txt', tamanho 1000\r\n"); + #else + printf("BNNKTeste_#02FS: Criando arquivo 'teste1.txt'.\r\n"); + #endif if ( !bnnk_open("teste1.txt", 1000, &arquivo1) ) { bnnk_perror(); @@ -31,7 +39,11 @@ printf("BNNKTeste_#02FS: Escrevendo no arquivo 'teste1.txt'\r\n"); printf("BNNKTeste_#02FS: Mensagem escrita: 'teste #02FS - arquivo 1'\r\n"); + #ifdef SIMPLES ret = bnnk_write(&arquivo1, "teste #02FS - arquivo 1\0", 515, &qtd_out); + #else + ret = bnnk_write(&arquivo1, "teste #02FS - arquivo 1\0", 24, &qtd_out); + #endif if ( !ret ) { bnnk_perror(); @@ -43,8 +55,12 @@ printf("Pressione qualquer tecla para continuar.\n"); getchar(); - printf("\r\n"); - printf("BNNKTeste_#02FS: Criando arquivo 'teste2.txt', tamanho 234\r\n"); + printf("\n\n"); + #ifdef SIMPLES + printf("BNNKTeste_#02FS: Criando arquivo 'teste2.txt', tamanho 250\r\n"); + #else + printf("BNNKTeste_#02FS: Criando arquivo 'teste2.txt'.\r\n"); + #endif if ( !bnnk_open("teste2.txt", 250, &arquivo2) ) { bnnk_perror(); @@ -53,7 +69,11 @@ printf("BNNKTeste_#02FS: Escrevendo no arquivo 'teste2.txt'\r\n"); printf("BNNKTeste_#02FS: Mensagem escrita: 'teste #02FS - arquivo 2'\r\n"); + #ifdef SIMPLES ret = bnnk_write(&arquivo2, "teste #02FS - arquivo 2\0", 25, &qtd_out); + #else + ret = bnnk_write(&arquivo2, "teste #02FS - arquivo 2\0", 24, &qtd_out); + #endif if ( !ret ) { bnnk_perror(); @@ -63,12 +83,13 @@ printf("BNNKTeste_#02FS: Fechando o arquivo 'teste2.txt'\r\n"); bnnk_close( &arquivo2 ); - printf("\r\n"); + printf("\n\n"); bnnk_fs_dir(); printf("Pressione qualquer tecla para continuar.\n"); getchar(); - + + printf("\n\n"); printf("BNNKTeste_#02FS: Abrindo novamente arquivo 'teste1.txt'\r\n"); memset(&arquivoA, 0, sizeof(BNNK_arquivo)); ret = bnnk_open("teste1.txt", 50, &arquivoA); @@ -85,13 +106,14 @@ bnnk_perror(); return -6; } - printf("BNNKTeste_#02FS: %s\r\n", buf); + printf("BNNKTeste_#02FS: Mensagem lida %s\r\n", buf); printf("BNNKTeste_#02FS: Fechando arquivo 'teste1.txt'\r\n"); bnnk_close( &arquivoA ); printf("Pressione qualquer tecla para continuar.\n"); getchar(); + printf("\n\n"); printf("BNNKTeste_#02FS: Abrindo arquivo 'teste2.txt'\r\n"); memset(&arquivoB, 0, sizeof(BNNK_arquivo)); ret = bnnk_open("teste2.txt", 234, &arquivoB); @@ -108,7 +130,7 @@ bnnk_perror(); return -8; } - printf("BNNKTeste_#02FS: %s\r\n", buf); + printf("BNNKTeste_#02FS: Mensagem lida %s\r\n", buf); printf("BNNKTeste_#02FS: Fechando arquivo 'teste2.txt'\r\n"); bnnk_close( &arquivoB ); @@ -116,6 +138,7 @@ printf("BNNKTeste_#02FS: Fechando o BNNK FS\r\n"); bnnk_fs_done(); + printf("\n\n"); return 0; } @@ -130,8 +153,14 @@ printf("Pressione qualquer tecla para continuar.\n"); getchar(); + #ifdef SIMPLES printf("Formatando BNNK FS\r\n"); bnnk_fs_format(); + #else + printf("Listando arquivos no diretorio raiz.\r\n"); + bnnk_fs_dir(); + #endif + printf("Pressione qualquer tecla para continuar.\n"); getchar(); Index: teste.c =================================================================== RCS file: /cvsroot/bananakernel/src/testes/teste.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- teste.c 15 Sep 2004 20:12:11 -0000 1.3 +++ teste.c 21 Oct 2004 23:24:11 -0000 1.4 @@ -1,21 +1,21 @@ - - - - -#include <stdio.h> - -int -main(void) -{ - printf("Iniciando sequencia de testes...\n"); - - printf("\nTestando o GERENCIADOR DE MEMORIA.\n"); - printf("Resultado do teste: %i\n", teste_01MM()); - - printf("\nTestando o ESCALONADOR DE PROCESSOS.\n"); - printf("Resultado do teste: %i\n", teste_03SC()); - - printf("\nTestando os CODIGOS DE ERRO.\n"); - teste_04PE(); - -} + + + + +#include <stdio.h> + +int +main(void) +{ + printf("Iniciando sequencia de testes...\n"); + + printf("\nTestando o GERENCIADOR DE MEMORIA.\n"); + printf("Resultado do teste: %i\n", teste_01MM()); + + printf("\nTestando o ESCALONADOR DE PROCESSOS.\n"); + printf("Resultado do teste: %i\n", teste_03SC()); + + printf("\nTestando os CODIGOS DE ERRO.\n"); + teste_04PE(); + +} |
From: Julio H. M. <ju...@us...> - 2004-10-20 02:45:33
|
Update of /cvsroot/bananakernel/src/intermediaria In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9856 Modified Files: fs.c fs.h Log Message: Emfim... o filesystem! Implementacao inicial de um ext2fs. Foi doloroso, mas esta funcionando razoavelmente bem. O que foi implementado: - Tratamento de iNodes e blocos livres atraves dos bitmaps. - Tratamento do superbloco e do descritor de grupo. - Capacidade de abir/ler/escrever arquivos no diretorio raiz do filesystem. - Listagem do diretorio raiz para ver os arquivos nele contidos. Limitacoes da versao atual: - O tamanho de cada arquivo e limitado aos primeiros 12 blocos de dados, que sao linkados diretamente pelo iNode. Os outros blocos (linkados indiretamente por outros blocos de dados) nao sao tratados. Quando a quantidade de bytes escrita/lida ultrapassa os 12 primeiros blocos, o sistema deve reclamar que alcancou o tamanho maximo do arquivo. - A criacao de arquivos limita-se ao diretorio raiz do filesystem. Nao ha suporte para manipulacao avancada de diretorios, bem como a criacao/leitura/escrita destes pelo programa cliente. Acho que e isso. O arquivo fs_teste.c pode ser compilado com as seguintes bibliotecas do oskit: -loskit_startup -loskit_clientos -loskit_linux_dev -loskit_linux_fs -loskit_dev -loskit_diskpart -loskit_kern -loskit_memdebug -loskit_lmm -loskit_c Index: fs.c =================================================================== RCS file: /cvsroot/bananakernel/src/intermediaria/fs.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- fs.c 21 Jun 2004 20:08:33 -0000 1.1 +++ fs.c 20 Oct 2004 02:45:20 -0000 1.2 @@ -1,20 +1,1426 @@ -/* - * The contents of this file are subject to the Mozilla Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * [...1413 lines suppressed...] + free(tempbuf); + + /* Ajusta a quantidade de bytes escritos, mostrando + * apenas a quantidade que o usuario solicitou */ + if ( *qtd_in > qtd ) + *qtd_in = qtd; + + /* Ajusta a posicao atual de leitura/escrita do arquivo */ + a->posicao += *qtd_in; + + /* Ajusta o tamanho do arquivo no iNode... */ + a->inode.i_size = a->inode.i_blocks * BNNK_FS_BLOCK_SIZE; + a->inode.i_fsize += *qtd_in; + /* ... e atualiza o iNode no disco */ + bnnk_fs_write_inode(&(a->inode), a->num_inode); + + /* Configura errno */ + errno = codigo_erro_nenhum; + return 1; +} Index: fs.h =================================================================== RCS file: /cvsroot/bananakernel/src/intermediaria/fs.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- fs.h 21 Jun 2004 20:08:33 -0000 1.1 +++ fs.h 20 Oct 2004 02:45:20 -0000 1.2 @@ -1,20 +1,248 @@ -/* - * The contents of this file are subject to the Mozilla Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is the BananaKernel filesystem module for the - * "intermediaria" implementation. - * +/* + * The contents of this file are subject to the Mozilla Public License + * Version 1.1 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is the BananaKernel filesystem module for the "simples" + * implementation. + * * The Initial Developer of the Original Code is the BananaKernel Developers - * Group. Portions created by BananaKernel are Copyright (C) 2004 BananaKernel - * Developers Group. All Rights Reserved. - * + * Group. Portions created by BananaKernel are Copyright (C) 2004 + * BananaKernel Developers Group. All Rights Reserved. + * * Contributor(s): - */ + */ + +#ifndef __FS_H__ +#define __FS_H__ + +/* Definicoes do tipo 'uint32_t' */ +#include <sys/stdint.h> + +/* Caractere que representa o final de um arquivo */ +#define BNNK_FS_EOF 26 + +/* Tamanho de cada setor no disco */ +#define BNNK_FS_SECSIZE 512 + +/* Tamanho default de um bloco do FS */ +#define BNNK_FS_BLOCK_SIZE 1024 + +/** + * Posicao do superbloco no disco. + * E uma posicao fixa, nunca muda. + */ +#define BNNK_FS_SBLOCK_POS (1024) + +/** + * Posicao do descritor de grupo no disco. + * Logo apos o superbloco. + */ +#define BNNK_FS_GDESC_POS (BNNK_FS_SBLOCK_POS + sizeof(ext2fsSuper)) + +/** + * Tamanho maximo de um arquivo no BNNK FS. + * Leva-se em conta que trabalhamos apenas com os + * primeiros 12 blocos do iNode. Esta implelemtacao + * desconsidera a existencia de blocos indiretos + * (os ultimos 3 blocos do iNode). + */ +#define BNNK_FS_MAX_TAM_ARQUIVO (12 * BNNK_FS_BLOCK_SIZE) + + +// Numero magico do EXT2FS +#define EXT2FS_S_MAGIC 0xef53 + +/** + * iNodes reservados do sistema. + * Estes numeros representam os indices dos inodes + * na tabela de inodes. + * + * Por exemplo: + * O iNode do diretorio raiz (EXT2_INODE_ROOT) e o + * iNode de indice 2 na tabela de iNodes. + * + * No total, os primeiros 11 iNodes da tabela sao + * reservados para alguma coisa. + */ +#define EXT2_INODE_ZERO 0 // Deve ser ignorado, por algum motivo +#define EXT2_INODE_BAD 1 // Bad blocks inode +#define EXT2_INODE_ROOT 2 // Root inode +#define EXT2_INODE_ACL_IDX 3 // ACL inode +#define EXT2_INODE_ACL_DATA 4 // ACL inode +#define EXT2_INODE_BOOT_LOADER 5 // Boot loader inode +#define EXT2_INODE_UNDEL_DIR 6 // Undelete directory inode +#define EXT2_INODE_FIRST_ 11 // First non reserved inode + +/** + * EXT2FS - Estrutura do super bloco + */ +struct ext2fsSuperBlock { + uint32_t s_inodes_count; + uint32_t s_blocks_count; + uint32_t s_r_blocks_count; + uint32_t s_free_blocks_count; + uint32_t s_free_inodes_count; + uint32_t s_first_data_block; + uint32_t s_log_block_size; + uint32_t s_log_frag_size; + uint32_t s_blocks_per_group; + uint32_t s_frags_per_group; + uint32_t s_inodes_per_group; + uint32_t s_mtime; + uint32_t s_wtime; + uint16_t s_mnt_count; + uint16_t s_max_mnt_count; + uint16_t s_magic; + uint16_t s_state; + uint16_t s_errors; + uint16_t s_pad; + uint32_t s_lastcheck; + uint32_t s_checkinterval; + uint32_t s_creator_os; + uint32_t s_rev_level; + uint16_t s_def_resuid; + uint16_t s_def_resgid; + uint32_t s_reserved[235]; +}; +typedef struct ext2fsSuperBlock ext2fsSuper; + + +/** + * EXT2FS - Descritor de grupo + */ +struct ext2fsGroupDescriptor { + uint32_t bg_block_bitmap; + uint32_t bg_inode_bitmap; + uint32_t bg_inode_table; + uint16_t bg_free_blocks_count; + uint16_t bg_free_inodes_count; + uint16_t bg_used_dirs_count; + uint16_t bg_pad; + uint32_t bg_reserved[3]; +}; +typedef struct ext2fsGroupDescriptor ext2fsGroup; + + +/** + * EXT2FS - Alguns valores para o iNode + */ + +// ext2fs inode mode flags +#define MODE_MASK 0170000 +#define MODE_FIFO 0010000 +#define MODE_CDEV 0020000 +#define MODE_DIR 0040000 +#define MODE_BDEV 0060000 +#define MODE_FILE 0100000 +#define MODE_LINK 0120000 +#define MODE_SOCK 0140000 + +// ext2fs extended flags +#define FLAG_MASK 0x007f +#define FLAG_SECURE 0x0001 +#define FLAG_UNDELETE 0x0002 +#define FLAG_COMPRESS 0x0004 +#define FLAG_SYNC 0x0008 +#define FLAG_NOCHANGE 0x0010 +#define FLAG_APPONLY 0x0020 +#define FLAG_NODUMP 0x0040 + +/** + * EXT2FS - inode + */ +struct ext2fsLinuxInode { + uint16_t i_mode; // filemode + uint16_t i_uid; // owner + uint32_t i_size; // (bytes) + uint32_t i_atime; // access + uint32_t i_ctime; // "creation" + uint32_t i_mtime; // modification + uint32_t i_dtime; // deletion + uint16_t i_gid; // user group + uint16_t i_links_count; // hard links + uint32_t i_blocks; // count + uint32_t i_flags; // ext2fs + uint32_t i_reserved; // [Linux] reserved + uint32_t i_block[15]; // 12 direct, indirect, double, triple + uint32_t i_version; // NFS + uint32_t i_file_acl; // Access Control List + uint32_t i_dir_acl; // directory + uint32_t i_faddr; // fragment + uint8_t i_frag; // [Linux] number + uint8_t i_fsize; // [Linux] (bytes) + uint16_t i_pad1; // [Linux] padding + uint32_t i_reserved2[2]; // [Linux] reserved +}; +typedef struct ext2fsLinuxInode ext2fsInode; + +/** + * Estrutura que representa uma entrada em um + * diretorio no EXT2FS. + * Cada entrada representa um arquivo ou + * outro diretorio. + */ +struct ext2fsLinuxDirEntry { + /* iNode onde o arquivo/diretorio se encontra */ + unsigned long inode; + + /* Tamanho da entrada */ + unsigned short rec_len; + + /* Tamanho do nome do arquivo/diretorio */ + unsigned short name_len; + + /* Nome do arquivo/diretorio */ + char name[255]; +}; +typedef struct ext2fsLinuxDirEntry ext2fsDirEntry; + + +/* +* EXT2_DIR_PAD define a fronteira das entradas de diretorios +* NOTE: Deve ser multiplo de 4 +*/ +#define EXT2_DIR_PAD 4 +#define EXT2_DIR_ROUND (EXT2_DIR_PAD - 1) +#define EXT2_DIR_REC_LEN(pd) ((((pd)->name_len&255) + 8 + EXT2_DIR_ROUND) & ~EXT2_DIR_ROUND) + +/** + * Estrutura que representa um arquivo no BNNK FS + */ +typedef struct BNNK_arquivo_struct { + /* iNode que representa o arquivo no EXT2FS */ + ext2fsInode inode; + + /* Copia do ultimo bloco que foi escrito no arquivo */ + char ultimo_bloco[1024]; + + /* Numero em disco do ultimo bloco que foi lido/escrito */ + int bloco_atual; + + /* Posicao atual de leitura e escrita no arquivo (bytes) */ + unsigned int posicao; + + /* Numero do iNode (Posicao dele na tabela de iNodes do disco) */ + unsigned int num_inode; +} BNNK_arquivo; + + +/** + * Funcoes exportadas + */ +void bnnk_fs_dir(); +void bnnk_fs_format(); +void bnnk_fs_init(); +void bnnk_fs_done(); +int bnnk_open(char *nome, int tamanho, BNNK_arquivo *a); +void bnnk_close(BNNK_arquivo *a); +int bnnk_read(BNNK_arquivo *a, void *buf, int qtd, int *qtd_out); +int bnnk_write(BNNK_arquivo *a, void *buf, int qtd, int *qtd_in); + +#endif /* __FS_H__ */ \ No newline at end of file |
From: Julio H. M. <ju...@us...> - 2004-10-20 02:29:46
|
Update of /cvsroot/bananakernel/src/erros In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9143 Modified Files: error.c error.h Log Message: Arrumada a mensagem para o bnnk_fs_init(). Index: error.c =================================================================== RCS file: /cvsroot/bananakernel/src/erros/error.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- error.c 29 Sep 2004 20:15:22 -0000 1.7 +++ error.c 20 Oct 2004 02:29:35 -0000 1.8 @@ -36,7 +36,7 @@ "DELPROC: O descritor passado nao eh valido", /* devel CONFIRMAR CODIGO NA ESPECIFICACAO DO PROC. PRIMITIVO */ - "devel COLOCAR MENSAGEM - IOINIT" + "BNNKFS: Nao foi possivel iniciar o gerenciador de arquivos" }; Index: error.h =================================================================== RCS file: /cvsroot/bananakernel/src/erros/error.h,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- error.h 15 Sep 2004 20:10:53 -0000 1.7 +++ error.h 20 Oct 2004 02:29:35 -0000 1.8 @@ -35,7 +35,6 @@ /* devel CONFIRMAR CODIGO DE ERRO COM ESPECIFICACAO DO PROCESSO PRIMITIVO */ #define codigo_erro_delproc 10 -/* devel CONFIRMAR NECESSIDADE */ #define codigo_erro_fsinit 11 /* |
From: Rafael C. T. <str...@us...> - 2004-10-19 21:46:57
|
Update of /cvsroot/bananakernel/src/testes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv391 Modified Files: 02FS.c Log Message: Diretorio incorreto no #include Index: 02FS.c =================================================================== RCS file: /cvsroot/bananakernel/src/testes/02FS.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- 02FS.c 18 Oct 2004 19:30:18 -0000 1.2 +++ 02FS.c 19 Oct 2004 21:46:42 -0000 1.3 @@ -7,7 +7,7 @@ #ifdef SIMPLES #include "../simples/fs.h" #else -#include "../inter/fs.h" +#include "../intermediaria/fs.h" #endif int |
From: Rafael C. T. <str...@us...> - 2004-10-18 19:30:27
|
Update of /cvsroot/bananakernel/src/testes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8067 Modified Files: 02FS.c Added Files: fs_teste.c Log Message: As funcoes responsaveis pelos testes do caso de teste #02FS foram modificadas para que ficassem semelhantes as demais funcoes dos outros casos de tetes. Nao foi possivel colocar em funcionamento o GERENCIADOR DE ARQUIVOS vinculado aos demais modulos do BNNK, entao, foi criado um arquivo para chamar, separadamente, o caso de teste #02FS. Este arquivo deve ser compilado com as seguintes opcoes: [-DSIMPLES] -loskit_startup -loskit_clientos -loskit_linux_dev -loskit_dev -loskit_kern -loskit_lmm Index: 02FS.c =================================================================== RCS file: /cvsroot/bananakernel/src/testes/02FS.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- 02FS.c 30 Sep 2004 16:05:35 -0000 1.1 +++ 02FS.c 18 Oct 2004 19:30:18 -0000 1.2 @@ -4,24 +4,14 @@ #include <oskit/io/blkio.h> #include "../erros/error.h" -#ifdef __SIMPLES__ - #include "../simples/fs.h" -#endif - -#ifdef __INTER__ - #include "../inter/fs.h" +#ifdef SIMPLES +#include "../simples/fs.h" +#else +#include "../inter/fs.h" #endif -void -pause(void) -{ - printf("\r\n <<< Pressione [ENTER] para continuar >>>\r\n"); - getchar(); -} - - int -teste_02FS() +teste_02FS_funcao() { BNNK_arquivo arquivo1 = {0}; BNNK_arquivo arquivo2 = {0}; @@ -50,7 +40,8 @@ printf("BNNKTeste_#02FS: Fechando arquivo 'teste1.txt'\r\n"); bnnk_close( &arquivo1 ); - pause(); + printf("Pressione qualquer tecla para continuar.\n"); + getchar(); printf("\r\n"); printf("BNNKTeste_#02FS: Criando arquivo 'teste2.txt', tamanho 234\r\n"); @@ -75,7 +66,8 @@ printf("\r\n"); bnnk_fs_dir(); - pause(); + printf("Pressione qualquer tecla para continuar.\n"); + getchar(); printf("BNNKTeste_#02FS: Abrindo novamente arquivo 'teste1.txt'\r\n"); memset(&arquivoA, 0, sizeof(BNNK_arquivo)); @@ -97,7 +89,8 @@ printf("BNNKTeste_#02FS: Fechando arquivo 'teste1.txt'\r\n"); bnnk_close( &arquivoA ); - pause(); + printf("Pressione qualquer tecla para continuar.\n"); + getchar(); printf("BNNKTeste_#02FS: Abrindo arquivo 'teste2.txt'\r\n"); memset(&arquivoB, 0, sizeof(BNNK_arquivo)); @@ -127,34 +120,24 @@ } int -main(void) +teste_02FS() { - int ret = 0; - oskit_clientos_init(); start_blk_devices(); - printf("\r\n"); - printf("================================\r\n"); - printf("Bem vindo ao BananaKernel! \r\n"); - printf("Teste do Gerenciador de Arquivos\r\n"); - printf("================================\r\n"); - pause(); - printf("BNNKTeste_#02FS: Iniciando BNNK FS\r\n"); bnnk_fs_init(); - printf("\r\n"); - pause(); + printf("Pressione qualquer tecla para continuar.\n"); + getchar(); printf("Formatando BNNK FS\r\n"); bnnk_fs_format(); - printf("\r\n"); - pause(); + printf("Pressione qualquer tecla para continuar.\n"); + getchar(); - ret = teste_02FS(); - printf("\r\n"); - printf("BNNK FS: Resultado do teste %d\r\n", ret); /* devel COMETADO PARA TESTES. ESTA DANDO PAU NA HORA EM QUE EH CHAMADA. */ //bnnk_fs_done(); + + return teste_02FS_funcao(); } --- NEW FILE: fs_teste.c --- #include <stdio.h> int main(void) { printf("Iniciando sequencia de testes...\n"); printf("\nTestando o GERENCIADOR DE ARQUIVOS.\n"); printf("Resultado do teste: %i\n", teste_02FS()); } |
From: Julio H. M. <ju...@gm...> - 2004-09-30 21:27:42
|
Sim, usei o plano de testes para escreve-lo. []s On Thu, 30 Sep 2004 14:54:47 -0300, Rafael Coninck Teigao <ra...@sa...> wrote: > Esse programa estah de acordo com o caso de teste #02FS, do Plano de > Testes? >=20 > []'s, > Rafael. >=20 > -- > ------------------------------------------------------------------------ > The Lord is my shepherd I shall not want > (Psalms 23) > Der Herr ist mein Hirte Mir wird nichts mangeln > (Psalm 23) > O Senhor =E9 o meu pastor; nada me faltar=E1. > (Salmo 23) > ------------------------------------------------------------------------ >=20 >=20 >=20 >=20 > ------------------------------------------------------- > This SF.net email is sponsored by: IT Product Guide on ITManagersJournal > Use IT products in your business? Tell us what you think of them. Give us > Your Opinions, Get Free ThinkGeek Gift Certificates! Click to find out mo= re > http://productguide.itmanagersjournal.com/guidepromo.tmpl > _______________________________________________ > BananaKernel-commits mailing list > Ban...@li... > https://lists.sourceforge.net/lists/listinfo/bananakernel-commits >=20 --=20 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Julio Henrique Morimoto ju...@gm... jul...@ya... Home Page - http://jhm.blogsite.org Cita=E7=F5es - http://manvantara.blogpost.com =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D "Imagina=E7=E3o =E9 mais importante que conhecimento; pois o conhecimento =E9 limitado e a imagina=E7=E3o encompassa o universo inteiro." - Albert Einstein |
From: Rafael C. T. <rafael@SafeCore.NET> - 2004-09-30 17:54:59
|
Esse programa estah de acordo com o caso de teste #02FS, do Plano de Testes? []'s, Rafael. -- ------------------------------------------------------------------------ The Lord is my shepherd I shall not want (Psalms 23) Der Herr ist mein Hirte Mir wird nichts mangeln (Psalm 23) O Senhor =E9 o meu pastor; nada me faltar=E1. (Salmo 23) ------------------------------------------------------------------------ |
From: Julio H. M. <ju...@us...> - 2004-09-30 16:07:59
|
Update of /cvsroot/bananakernel/src/simples In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27635 Modified Files: fs.c fs.h Log Message: Depois de muito esforco! Esta pronta a versao simples do Gerenciador de Arquivos. Foram feitos testes com o programa de teste (src/testes/02FS.c) e outros programas locais temporarios. Falta agora fazer a versao intermediaria e pronto. Index: fs.c =================================================================== RCS file: /cvsroot/bananakernel/src/simples/fs.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- fs.c 25 Sep 2004 03:40:31 -0000 1.8 +++ fs.c 30 Sep 2004 16:07:48 -0000 1.9 @@ -1,23 +1,23 @@ -/* - * The contents of this file are subject to the Mozilla Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/MPL/ +/* + * The contents of this file are subject to the Mozilla Public License + * Version 1.1 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ * [...1067 lines suppressed...] + * multiplo do setor do disco e copiamos + * o conteudo para este novo buffer. + */ + buf_temp = (void *)malloc(qtd_temp); + memcpy(buf_temp, buf, qtd); + + ret = oskit_blkio_write(bnnk_io, buf_temp, a->posicao+a->cursor, qtd_temp, qtd_in); + /* Libera a memoria do buffer temporario */ + free(buf_temp); + + if (ret != 0) { + errno = codigo_erro_write; + return 0; + } + a->cursor += *qtd_in; + errno = codigo_erro_nenhum; + return 1; + } +} Index: fs.h =================================================================== RCS file: /cvsroot/bananakernel/src/simples/fs.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- fs.h 21 Aug 2004 18:02:24 -0000 1.4 +++ fs.h 30 Sep 2004 16:07:48 -0000 1.5 @@ -1,68 +1,76 @@ -/* - * The contents of this file are subject to the Mozilla Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/MPL/ +/* + * The contents of this file are subject to the Mozilla Public License + * Version 1.1 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. * * The Original Code is the BananaKernel filesystem module for the "simples" * implementation. * * The Initial Developer of the Original Code is the BananaKernel Developers - * Group. Portions created by BananaKernel are Copyright (C) 2004 BananaKernel - * Developers Group. All Rights Reserved. + * Group. Portions created by BananaKernel are Copyright (C) 2004 + * BananaKernel Developers Group. All Rights Reserved. * * Contributor(s): - */ + */ #define BNNK_MAX_ARQUIVOS 1000 -/* - * The contents of this file are subject to the Mozilla Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/MPL/ +/* + * The contents of this file are subject to the Mozilla Public License + * Version 1.1 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. * * The Original Code is the BananaKernel filesystem module for the "simples" * implementation. * * The Initial Developer of the Original Code is the BananaKernel Developers - * Group. Portions created by BananaKernel are Copyright (C) 2004 BananaKernel - * Developers Group. All Rights Reserved. + * Group. Portions created by BananaKernel are Copyright (C) 2004 + * BananaKernel Developers Group. All Rights Reserved. * * Contributor(s): - */ + */ /** * Estrutura que representa um arquivo do filesystem - * do BananaKernel. Temos a posição do disco + * do BananaKernel. Temos a posicao do disco * onde o arquivo se encontra, o tamanho do arquivo - * em bytes e o nome. + * em bytes, um cursor indicando a posicao atual + * de leitura/escrita, um flag indicando se esta + * aberto ou nao, o seu offset na tabela de arquivos + * do disco e o nome. */ typedef struct bnnk_arquivo { - int posicao; - int tamanho; - char nome[504]; -} BNNK_arquivo; + int posicao; + int tamanho; + int cursor; + int aberto; + int offset_tabela; + char nome[492]; +} BNNK_arquivo; -BNNK_arquivo * bnnk_fs_encontra_arquivo(char *nome); -void bnnk_fs_dir(); -void bnnk_fs_format(); -void bnnk_fs_init(); -void bnnk_fs_done(); -BNNK_arquivo * bnnk_fs_cria_arquivo( char *nome, int tamanho ); -BNNK_arquivo * bnnk_open( char *nome, int tamanho ); -void bnnk_close(BNNK_arquivo *a); +void bnnk_fs_dir(); +void bnnk_fs_format(); +void bnnk_fs_init(); +void bnnk_fs_done(); +int bnnk_open(char *nome, int tamanho, BNNK_arquivo * a); +void bnnk_close(BNNK_arquivo * a); +int bnnk_read(BNNK_arquivo * a, void *buf, int qtd, int *qtd_out); +int bnnk_write(BNNK_arquivo * a, void *buf, int qtd, int *qtd_in); +int bnnk_fs_encontra_arquivo(char *nome, BNNK_arquivo * a); +int bnnk_fs_cria_arquivo(char *nome, int tamanho, BNNK_arquivo * a); |
From: Julio H. M. <ju...@us...> - 2004-09-30 16:05:45
|
Update of /cvsroot/bananakernel/src/testes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27237 Added Files: 02FS.c Log Message: Programa de testes para o Gerenciador de Arquivos. Este programa cria alguns arquivos, escreve alguma coisa neles e os fecha. Mais tarde, ele abre os arquivos novamente e le o seu conteudo e escreve o que leu no terminal. --- NEW FILE: 02FS.c --- #include <oskit/clientos.h> #include <oskit/dev/linux.h> #include <oskit/dev/dev.h> #include <oskit/io/blkio.h> #include "../erros/error.h" #ifdef __SIMPLES__ #include "../simples/fs.h" #endif #ifdef __INTER__ #include "../inter/fs.h" #endif void pause(void) { printf("\r\n <<< Pressione [ENTER] para continuar >>>\r\n"); getchar(); } int teste_02FS() { BNNK_arquivo arquivo1 = {0}; BNNK_arquivo arquivo2 = {0}; BNNK_arquivo arquivoA = {0}; BNNK_arquivo arquivoB = {0}; char buf[25]; int ret = 0; int qtd_out = 0; printf("BNNKTeste_#02FS: Criando arquivo 'teste1.txt', tamanho 1000\r\n"); if ( !bnnk_open("teste1.txt", 1000, &arquivo1) ) { bnnk_perror(); return -1; } printf("BNNKTeste_#02FS: Escrevendo no arquivo 'teste1.txt'\r\n"); printf("BNNKTeste_#02FS: Mensagem escrita: 'teste #02FS - arquivo 1'\r\n"); ret = bnnk_write(&arquivo1, "teste #02FS - arquivo 1\0", 515, &qtd_out); if ( !ret ) { bnnk_perror(); return -2; } printf("BNNKTeste_#02FS: Fechando arquivo 'teste1.txt'\r\n"); bnnk_close( &arquivo1 ); pause(); printf("\r\n"); printf("BNNKTeste_#02FS: Criando arquivo 'teste2.txt', tamanho 234\r\n"); if ( !bnnk_open("teste2.txt", 250, &arquivo2) ) { bnnk_perror(); return -3; } printf("BNNKTeste_#02FS: Escrevendo no arquivo 'teste2.txt'\r\n"); printf("BNNKTeste_#02FS: Mensagem escrita: 'teste #02FS - arquivo 2'\r\n"); ret = bnnk_write(&arquivo2, "teste #02FS - arquivo 2\0", 25, &qtd_out); if ( !ret ) { bnnk_perror(); return -4; } printf("BNNKTeste_#02FS: Fechando o arquivo 'teste2.txt'\r\n"); bnnk_close( &arquivo2 ); printf("\r\n"); bnnk_fs_dir(); pause(); printf("BNNKTeste_#02FS: Abrindo novamente arquivo 'teste1.txt'\r\n"); memset(&arquivoA, 0, sizeof(BNNK_arquivo)); ret = bnnk_open("teste1.txt", 50, &arquivoA); if ( !ret ) { bnnk_perror(); return -5; } printf("BNNKTeste_#02FS: Lendo do arquivo 'teste1.txt'\r\n"); ret = bnnk_read(&arquivoA, buf, 25, &qtd_out); if ( !ret ) { bnnk_perror(); return -6; } printf("BNNKTeste_#02FS: %s\r\n", buf); printf("BNNKTeste_#02FS: Fechando arquivo 'teste1.txt'\r\n"); bnnk_close( &arquivoA ); pause(); printf("BNNKTeste_#02FS: Abrindo arquivo 'teste2.txt'\r\n"); memset(&arquivoB, 0, sizeof(BNNK_arquivo)); ret = bnnk_open("teste2.txt", 234, &arquivoB); if ( !ret ) { bnnk_perror(); return -7; } printf("BNNKTeste_#02FS: Lendo do arquivo 'teste2.txt'\r\n"); ret = bnnk_read(&arquivoB, buf, 25, &qtd_out); if ( !ret ) { bnnk_perror(); return -8; } printf("BNNKTeste_#02FS: %s\r\n", buf); printf("BNNKTeste_#02FS: Fechando arquivo 'teste2.txt'\r\n"); bnnk_close( &arquivoB ); printf("\r\n"); printf("BNNKTeste_#02FS: Fechando o BNNK FS\r\n"); bnnk_fs_done(); return 0; } int main(void) { int ret = 0; oskit_clientos_init(); start_blk_devices(); printf("\r\n"); printf("================================\r\n"); printf("Bem vindo ao BananaKernel! \r\n"); printf("Teste do Gerenciador de Arquivos\r\n"); printf("================================\r\n"); pause(); printf("BNNKTeste_#02FS: Iniciando BNNK FS\r\n"); bnnk_fs_init(); printf("\r\n"); pause(); printf("Formatando BNNK FS\r\n"); bnnk_fs_format(); printf("\r\n"); pause(); ret = teste_02FS(); printf("\r\n"); printf("BNNK FS: Resultado do teste %d\r\n", ret); /* devel COMETADO PARA TESTES. ESTA DANDO PAU NA HORA EM QUE EH CHAMADA. */ //bnnk_fs_done(); } |
From: Rafael C. T. <str...@us...> - 2004-09-29 20:15:32
|
Update of /cvsroot/bananakernel/src/erros In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20310 Modified Files: error.c Log Message: Algumas mensagens de erro foram definidas. Index: error.c =================================================================== RCS file: /cvsroot/bananakernel/src/erros/error.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- error.c 15 Sep 2004 20:12:10 -0000 1.6 +++ error.c 29 Sep 2004 20:15:22 -0000 1.7 @@ -21,19 +21,19 @@ #include "error.h" char *erros[] = { - "devel COLOCAR MENSAGEM - NENHUM ERRO OCORREU", - "devel COLOCAR MENSAGEM - MALLOC", - "devel COLOCAR MENSAGEM - REALLOC", - "devel COLOCAR MENSAGEM - FREE", - "devel COLOCAR MENSAGEM - GETSIZE", + "NENHUM ERRO OCORREU", + "MALLOC: Nao ha memoria suficiente disponivel", + "REALLOC: O tamanho do novo bloco eh menor que o original, ou o MALLOC falhou", + "FREE: O bloco nao existe ou nao foi alocado", + "GETSIZE: O bloco nao existe", "devel COLOCAR MENSAGEM - OPEN", "devel COLOCAR MENSAGEM - READ", "devel COLOCAR MENSAGEM - WRITE", "devel COLOCAR MENSAGEM - CLOSE", - "devel COLOCAR MENSAGEM - ADDPROC", + "ADDPROC: Nao ha codigo de erro definido", /* devel CONFIRMAR CODIGO NA ESPECIFICACAO DO PROC. PRIMITIVO */ - "devel COLOCAR MENSAGEM - DELPROC", + "DELPROC: O descritor passado nao eh valido", /* devel CONFIRMAR CODIGO NA ESPECIFICACAO DO PROC. PRIMITIVO */ "devel COLOCAR MENSAGEM - IOINIT" |