#!/usr/bin/perl -w # Yeah baby YEAH!!!!!!!!!!! muhri@muhri.net # for Liki. # $Id: ProntoInstaller.pl,v 1.11 2002/05/25 00:37:37 muhri Exp $ ############################################################################# # mkdir("$ENV{'HOME'}/prontobuild", 0755); # $builddir = "$ENV{'HOME'}/prontobuild"; # $untar = "tar xvzf"; # $mirror = "http://www.cpan.org/authors/id"; # $prontoversion = "2.4.0"; # $getcmd = $ARGV[0]; # $compile = "perl Makefile.PL ; make ; make install"; # $cyberdeck = "http://www.muhri.net/pronto"; # $cyberftp = "ftp://housing.ualr.edu"; # # ############################################################################# if ($getcmd && $getcmd =~ /ftp/i) { # change the mirror to an ftp one if user requested ftp client $mirror = "ftp://ftp.sedl.org/pub/mirrors/CPAN/authors/id"; } my @about_xpm; @about_xpm = ( "201 81 1388 2", " c None", ". c #001C26", "+ c #00151C", "\@ c #000609", "# c #000203", "\$ c #001821", "% c #002E3E", "& c #003549", "* c #0094C8", "= c #007AA5", "- c #00759F", "; c #005B7D", "> c #001E29", ", c #000B0F", "' c #004159", ") c #00739C", "! c #007CAA", "~ c #0088B9", "{ c #00AAE2", "] c #00C3F9", "^ c #008ABC", "/ c #007FAD", "( c #007CA9", "_ c #007098", ": c #00384C", "< c #00090C", "[ c #001F2A", "} c #005B7B", "| c #0079A5", "1 c #007DAA", "2 c #0094C9", "3 c #00CAFD", "4 c #00C4FA", "5 c #007BA7", "6 c #0077A2", "7 c #005B7C", "8 c #001D28", "9 c #000304", "0 c #000102", "a c #000F15", "b c #003F56", "c c #006F98", "d c #007DAB", "e c #00C9FD", "f c #00C3FA", "g c #0089BA", "h c #007EAC", "i c #007BA8", "j c #0079A4", "k c #0077A1", "l c #006C93", "m c #004A65", "n c #00080B", "o c #003C51", "p c #006488", "q c #00749D", "r c #0079A6", "s c #007FAC", "t c #0093C7", "u c #00D3FD", "v c #008EC0", "w c #007EAB", "x c #007AA6", "y c #00658A", "z c #002A39", "A c #000E13", "B c #004B66", "C c #00739D", "D c #0075A0", "E c #0078A4", "F c #00A1D4", "G c #00E1FF", "H c #00F3FF", "I c #00A7D9", "J c #0076A1", "K c #007099", "L c #00698F", "M c #000A0D", "N c #004D69", "O c #006E97", "P c #007199", "Q c #0080AE", "R c #00C4ED", "S c #00CEF2", "T c #0082B0", "U c #00729C", "V c #00719A", "W c #006E96", "X c #006589", "Y c #002431", "Z c #000101", "` c #00445D", " . c #006B92", ".. c #0077A3", "+. c #0090C2", "\@. c #00E6FC", "#. c #00F0FE", "\$. c #009ECF", "%. c #006B93", "&. c #006082", "*. c #002532", "=. c #000C10", "-. c #00435B", ";. c #00688E", ">. c #00BFE9", ",. c #00DBF6", "'. c #0088B7", "). c #00749E", "!. c #006D95", "~. c #006184", "{. c #002F41", "]. c #000405", "^. c #00678C", "/. c #00729B", "(. c #00A0D0", "_. c #00F1FE", ":. c #00BEE7", "<. c #006A91", "[. c #00668C", "}. c #003142", "|. c #004C68", "1. c #006990", "2. c #0088B8", "3. c #00DCF8", "4. c #00EFFE", "5. c #00A2D2", "6. c #005E80", "7. c #002B3B", "8. c #000303", "9. c #004760", "0. c #006386", "a. c #00688C", "b. c #00C5EC", "c. c #00E3FB", "d. c #008FBF", "e. c #00688D", "f. c #00678B", "g. c #006588", "h. c #006285", "i. c #005D7E", "j. c #002F40", "k. c #000608", "l. c #000202", "m. c #00151D", "n. c #004A64", "o. c #006083", "p. c #00668A", "q. c #00AEDC", "r. c #00F2FF", "s. c #00C3ED", "t. c #006C94", "u. c #00668B", "v. c #006487", "w. c #006385", "x. c #005C7D", "y. c #00455E", "z. c #00070A", "A. c #000001", "B. c #000406", "C. c #00161E", "D. c #00384D", "E. c #005675", "F. c #006D94", "G. c #0083B2", "H. c #00D8FB", "I. c #00C4F7", "J. c #0081AF", "K. c #006284", "L. c #005E7F", "M. c #005C7C", "N. c #005776", "O. c #004761", "P. c #002533", "Q. c #000C11", "R. c #003E54", "S. c #005472", "T. c #005A7A", "U. c #008DBF", "V. c #00ABE9", "W. c #005F80", "X. c #005A7B", "Y. c #005878", "Z. c #005573", "`. c #002B3C", " + c #000709", ".+ c #00202B", "++ c #005371", "\@+ c #005676", "#+ c #005D7F", "\$+ c #006183", "%+ c #006A90", "&+ c #0088BA", "*+ c #00A6E2", "=+ c #00698E", "-+ c #006387", ";+ c #005978", ">+ c #005473", ",+ c #005270", "'+ c #004863", ")+ c #003042", "!+ c #001923", "~+ c #000508", "{+ c #00141B", "]+ c #00435C", "^+ c #00506C", "/+ c #005574", "(+ c #0087B7", "_+ c #00A7E2", ":+ c #00516E", "<+ c #004F6B", "[+ c #003E55", "}+ c #001E2A", "|+ c #00171F", "1+ c #003548", "2+ c #004964", "3+ c #004D6A", "4+ c #004F6C", "5+ c #00516F", "6+ c #005A79", "7+ c #00B8F6", "8+ c #005674", "9+ c #00526F", "0+ c #004E6A", "a+ c #004C67", "b+ c #004963", "c+ c #003D53", "d+ c #002939", "e+ c #00131A", "f+ c #000305", "g+ c #000D12", "h+ c #002634", "i+ c #003A4F", "j+ c #00465F", "k+ c #006081", "l+ c #006A8F", "m+ c #00A0D5", "n+ c #00B2E5", "o+ c #006D93", "p+ c #005F81", "q+ c #005979", "r+ c #004660", "s+ c #00425A", "t+ c #003041", "u+ c #001820", "v+ c #000000", "w+ c #003D54", "x+ c #005877", "y+ c #007CA8", "z+ c #00C6F7", "A+ c #00D1FD", "B+ c #00516D", "C+ c #004F6A", "D+ c #004D68", "E+ c #004965", "F+ c #004158", "G+ c #003B51", "H+ c #002736", "I+ c #001016", "J+ c #00222E", "K+ c #00364B", "L+ c #004057", "M+ c #00ACDF", "N+ c #00BBF0", "O+ c #00445E", "P+ c #00394F", "Q+ c #002C3C", "R+ c #00364A", "S+ c #003C53", "T+ c #004058", "U+ c #005370", "V+ c #0086B6", "W+ c #00C9FA", "X+ c #008CBF", "Y+ c #005775", "Z+ c #004A66", "`+ c #00455F", " \@ c #00425B", ".\@ c #003F57", "+\@ c #003A50", "\@\@ c #00394D", "#\@ c #001B25", "\$\@ c #000D11", "%\@ c #001A24", "&\@ c #002737", "*\@ c #00394E", "=\@ c #004059", "-\@ c #004862", ";\@ c #006489", ">\@ c #00A1DA", ",\@ c #00A3DD", "'\@ c #003C52", ")\@ c #00374C", "!\@ c #003448", "~\@ c #000A0E", "{\@ c #000B0E", "]\@ c #002330", "^\@ c #002D3F", "/\@ c #003246", "(\@ c #003B52", "_\@ c #005C7E", ":\@ c #00B0EF", "<\@ c #00506D", "[\@ c #004B67", "}\@ c #004661", "|\@ c #003245", "1\@ c #003143", "2\@ c #00080A", "3\@ c #2BABD7", "4\@ c #27B5E6", "5\@ c #27B5E7", "6\@ c #32A1C8", "7\@ c #002E3F", "8\@ c #003144", "9\@ c #003346", "0\@ c #00415A", "a\@ c #004E69", "b\@ c #00526E", "c\@ c #0089BB", "d\@ c #0093C8", "e\@ c #00374B", "f\@ c #003043", "g\@ c #002C3D", "h\@ c #002A3A", "i\@ c #002837", "j\@ c #00151E", "k\@ c #0D7EA6", "l\@ c #0084B3", "m\@ c #0082B1", "n\@ c #197495", "o\@ c #001F2C", "p\@ c #003244", "q\@ c #00ACEA", "r\@ c #005777", "s\@ c #002C3E", "t\@ c #002A3B", "u\@ c #002938", "v\@ c #00141C", "w\@ c #0D7AA0", "x\@ c #0477A1", "y\@ c #1E5C72", "z\@ c #174454", "A\@ c #164252", "B\@ c #154152", "C\@ c #184455", "D\@ c #1F5A70", "E\@ c #0679A2", "F\@ c #1A708F", "G\@ c #001D29", "H\@ c #004762", "I\@ c #0084B4", "J\@ c #00B7F7", "K\@ c #009CD3", "L\@ c #005F82", "M\@ c #003447", "N\@ c #002D3E", "O\@ c #002635", "P\@ c #002433", "Q\@ c #002230", "R\@ c #007EAA", "S\@ c #007FAB", "T\@ c #0184B2", "U\@ c #129BCB", "V\@ c #2B8BAE", "W\@ c #244F60", "X\@ c #0F2E3B", "Y\@ c #0A2936", "Z\@ c #0D2B38", "`\@ c #1A3947", " # c #2B687F", ".# c #2894BA", "+# c #14A1D2", "\@# c #0287B6", "## c #007DA9", "\$# c #007BA6", "%# c #001C27", "&# c #002331", "*# c #006F97", "=# c #00AFEC", "-# c #002534", ";# c #002432", "># c #00202C", ",# c #001118", "'# c #036E94", ")# c #13536A", "!# c #025F80", "~# c #0076A0", "{# c #0081AE", "]# c #0089B9", "^# c #0D99CB", "/# c #1F8DB5", "(# c #225E75", "_# c #113443", ":# c #042331", "<# c #00202E", "[# c #062633", "}# c #1D5367", "|# c #2383A5", "1# c #169ECE", "2# c #0297CC", "3# c #00759E", "4# c #025F7F", "5# c #0F485D", "6# c #1F5C71", "7# c #001924", "8# c #00212E", "9# c #00A1DB", "0# c #00B3F2", "a# c #0082B2", "b# c #004E6B", "c# c #003D55", "d# c #00384E", "e# c #00202D", "f# c #001E2B", "g# c #07698C", "h# c #2D4651", "i# c #243A44", "j# c #1E414D", "k# c #0A4B62", "l# c #0496C9", "m# c #159DCE", "n# c #2386AA", "o# c #20576D", "p# c #0C2B38", "q# c #01212F", "r# c #022230", "s# c #0F2F3C", "t# c #2589AD", "u# c #089CD1", "v# c #008CBD", "w# c #09495F", "x# c #21404B", "y# c #233942", "z# c #18333F", "A# c #265D71", "B# c #002838", "C# c #009DD6", "D# c #00B2F2", "E# c #008FC4", "F# c #003347", "G# c #001C28", "H# c #066B8F", "I# c #173542", "J# c #01202E", "K# c #082634", "L# c #1A3440", "M# c #243A43", "N# c #173E4C", "O# c #055977", "P# c #0078A3", "Q# c #0698CC", "R# c #199CCA", "S# c #217C9D", "T# c #184253", "U# c #02222F", "V# c #1C495B", "W# c #2182A5", "X# c #16A1D2", "Y# c #049BD0", "Z# c #074960", "`# c #193B48", " \$ c #1B3540", ".\$ c #062533", "+\$ c #225A6F", "\@\$ c #000E14", "#\$ c #00A4E0", "\$\$ c #009DD7", "%\$ c #00506E", "&\$ c #001721", "*\$ c #0B2937", "=\$ c #1F3741", "-\$ c #183844", ";\$ c #0A4D64", ">\$ c #016A8F", ",\$ c #008BBC", "'\$ c #0D98C9", ")\$ c #207B9D", "!\$ c #1D4E61", "~\$ c #0C2D3C", "{\$ c #072735", "]\$ c #194253", "^\$ c #1F7797", "/\$ c #149AC9", "(\$ c #069DD2", "_\$ c #0082AF", ":\$ c #05526E", "<\$ c #153D4B", "[\$ c #1E343D", "}\$ c #082734", "|\$ c #002332", "1\$ c #003449", "2\$ c #003E56", "3\$ c #00435D", "4\$ c #008BBE", "5\$ c #00AAE9", "6\$ c #00A2DE", "7\$ c #00749F", "8\$ c #000F16", "9\$ c #072634", "0\$ c #1A343F", "a\$ c #223942", "b\$ c #1B4251", "c\$ c #08516B", "d\$ c #006E95", "e\$ c #0599CE", "f\$ c #1699C8", "g\$ c #257695", "h\$ c #1B4759", "i\$ c #092937", "j\$ c #062634", "k\$ c #23708C", "l\$ c #1D95C0", "m\$ c #0A9FD3", "n\$ c #008FC1", "o\$ c #0083B1", "p\$ c #0080AD", "q\$ c #006B90", "r\$ c #07506A", "s\$ c #1B3D4A", "t\$ c #213842", "u\$ c #02212F", "v\$ c #001822", "w\$ c #002E40", "x\$ c #0085B6", "y\$ c #001D2A", "z\$ c #00090D", "A\$ c #283235", "B\$ c #0B2A37", "C\$ c #1F3742", "D\$ c #233C46", "E\$ c #174556", "F\$ c #055D7C", "G\$ c #0B9DD1", "H\$ c #1E97C3", "I\$ c #23728F", "J\$ c #123443", "K\$ c #082735", "L\$ c #20596F", "M\$ c #2290B9", "N\$ c #0DA1D5", "O\$ c #0092C5", "P\$ c #0085B4", "Q\$ c #035370", "R\$ c #194251", "S\$ c #253C45", "T\$ c #1F3641", "U\$ c #0B2936", "V\$ c #196E8B", "W\$ c #0E0F0F", "X\$ c #00121A", "Y\$ c #001F2D", "Z\$ c #00222F", "`\$ c #00293A", " % c #002F42", ".% c #182024", "+% c #0D789D", "\@% c #032330", "#% c #0F2C39", "\$% c #243C46", "%% c #15404F", "&% c #04536F", "*% c #018FC1", "=% c #1897C5", "-% c #227694", ";% c #1A4759", ">% c #052432", ",% c #143948", "'% c #226B87", ")% c #1D98C4", "!% c #099ACE", "~% c #025876", "{% c #134253", "]% c #213A44", "^% c #223943", "/% c #17637E", "(% c #0A1418", "_% c #00354A", ":% c #172C35", "<% c #0D779C", "[% c #1E3641", "}% c #1E3640", "|% c #124151", "1% c #025B7A", "2% c #018EBF", "3% c #089BCF", "4% c #198FB9", "5% c #206680", "6% c #163B4B", "7% c #052533", "8% c #10313F", "9% c #1F6078", "0% c #1B8EB7", "a% c #0DA0D4", "b% c #0293C7", "c% c #025D7E", "d% c #0B4255", "e% c #1C3843", "f% c #1E343E", "g% c #102E3A", "h% c #032331", "i% c #16647F", "j% c #0A232D", "k% c #00445C", "l% c #0D779D", "m% c #102D3A", "n% c #1F343E", "o% c #213B46", "p% c #12475A", "q% c #01668A", "r% c #0091C4", "s% c #0A9DD1", "t% c #1F8BB2", "u% c #226077", "v% c #0F3140", "w% c #0D2D3B", "x% c #215B71", "y% c #2087AD", "z% c #139FD1", "A% c #0197CB", "B% c #0086B5", "C% c #00739B", "D% c #0A5069", "E% c #1D3B46", "F% c #21363E", "G% c #15313D", "H% c #166682", "I% c #0A2835", "J% c #00739E", "K% c #0080AF", "L% c #005372", "M% c #173643", "N% c #15313E", "O% c #253D47", "P% c #134658", "Q% c #045A78", "R% c #0195C9", "S% c #1A97C3", "T% c #236C87", "U% c #193F4F", "V% c #1F5266", "W% c #2480A1", "X% c #1A9ECD", "Y% c #029ACF", "Z% c #0177A1", "`% c #066486", " & c #144A5D", ".& c #203B45", "+& c #1F3842", "\@& c #0A2935", "#& c #007BA9", "\$& c #005170", "%& c #13303D", "&& c #1A3743", "*& c #1E3A46", "=& c #1F3A46", "-& c #1B3844", ";& c #14323E", ">& c #0C2A37", ",& c #052431", "'& c #01212E", ")& c #132F3B", "!& c #233A44", "~& c #1F3E49", "{& c #0D485D", "]& c #015F81", "^& c #017FAC", "/& c #0582AD", "(& c #0887B4", "_& c #0793C5", ":& c #0F9FD2", "<& c #089CD0", "[& c #018DBF", "}& c #0582AE", "|& c #0A84AF", "1& c #027FAB", "2& c #0A495F", "3& c #274753", "4& c #37515A", "5& c #34474F", "6& c #0C2A38", "7& c #092735", "8& c #14313E", "9& c #1D3945", "0& c #26414C", "a& c #253D48", "b& c #122F3B", "c& c #072633", "d& c #112E3B", "e& c #00212F", "f& c #00648A", "g& c #0087B9", "h& c #007DAC", "i& c #002636", "j& c #042431", "k& c #215669", "l& c #286075", "m& c #214D5E", "n& c #194352", "o& c #153946", "p& c #15313B", "q& c #18272D", "r& c #1F282C", "s& c #283439", "t& c #30424A", "u& c #243E49", "v& c #183542", "w& c #2B4652", "x& c #2F4752", "y& c #2E454F", "z& c #26404B", "A& c #17323E", "B& c #203740", "C& c #1D3D4A", "D& c #0A4C64", "E& c #1D7C9D", "F& c #2C809E", "G& c #296479", "H& c #2D758E", "I& c #1E8BB2", "J& c #0481AD", "K& c #0380AC", "L& c #248CB1", "M& c #1F566A", "N& c #256278", "O& c #1A404D", "P& c #2C4956", "Q& c #0D5B78", "R& c #2D373B", "S& c #36515C", "T& c #2C444E", "U& c #2C3F48", "V& c #283C44", "W& c #213841", "X& c #17313A", "Y& c #0E2731", "Z& c #070B0D", "`& c #283940", " * c #233F4B", ".* c #2C4650", "+* c #293940", "\@* c #2D4047", "#* c #1E3945", "\$* c #264552", "%* c #16272E", "&* c #213A45", "** c #00709A", "=* c #0086B8", "-* c #00739F", ";* c #005271", ">* c #173644", ",* c #092835", "'* c #26A4AF", ")* c #00B6DC", "!* c #006185", "~* c #011319", "{* c #131719", "]* c #2E3C42", "^* c #032230", "/* c #204554", "(* c #1B7DA1", "_* c #07475E", ":* c #032D3C", "<* c #032430", "[* c #0D1E24", "}* c #212A2D", "|* c #2F424B", "1* c #38525D", "2* c #297F9F", "3* c #01465F", "4* c #012330", "5* c #01232F", "6* c #1A333C", "7* c #2885A6", "8* c #047097", "9* c #0F5C77", "0* c #2A88AB", "a* c #01384C", "b* c #343B3F", "c* c #1C3844", "d* c #2F5565", "e* c #056B92", "f* c #273135", "g* c #115A75", "h* c #011117", "i* c #08181F", "j* c #0F1C21", "k* c #1D2326", "l* c #435861", "m* c #225468", "n* c #012533", "o* c #011218", "p* c #1B2326", "q* c #28404B", "r* c #295669", "s* c #011720", "t* c #2D4049", "u* c #004E6C", "v* c #006186", "w* c #00719B", "x* c #005373", "y* c #2E9BA2", "z* c #00DAF3", "A* c #006B91", "B* c #013548", "C* c #0081B0", "D* c #010D11", "E* c #232A2E", "F* c #203A46", "G* c #2C788D", "H* c #01A7D7", "I* c #061F28", "J* c #1A2C33", "K* c #1E4E60", "L* c #0E6787", "M* c #06151B", "N* c #2D3B41", "O* c #0F2C3A", "P* c #2D7B99", "Q* c #01678D", "R* c #1C2528", "S* c #4B5C63", "T* c #407285", "U* c #085774", "V* c #243136", "W* c #384D55", "X* c #30454E", "Y* c #288FB5", "Z* c #0A0D0E", "`* c #30454F", " = c #315C6E", ".= c #03698F", "+= c #22282A", "\@= c #3A5763", "#= c #2B4049", "\$= c #324750", "%= c #3B6D81", "&= c #004560", "*= c #24292B", "== c #3A4F58", "-= c #253F4B", ";= c #233F4A", ">= c #326376", ",= c #1B2224", "'= c #3C4D55", ")= c #31515F", "!= c #072F3F", "~= c #1B3743", "{= c #15323F", "]= c #22586F", "^= c #021219", "/= c #2E434D", "(= c #006287", "_= c #00719C", ":= c #006288", "<= c #005474", "[= c #308990", "}= c #00E4F9", "|= c #007AA7", "1= c #01141B", "2= c #394246", "3= c #385E6D", "4= c #219DC7", "5= c #00ADE1", "6= c #010A0E", "7= c #2B373D", "8= c #2D8DA2", "9= c #0082A2", "0= c #2D3437", "a= c #1E3B47", "b= c #31525F", "c= c #278AAF", "d= c #01729C", "e= c #0B1214", "f= c #29414C", "g= c #23424F", "h= c #159CCE", "i= c #062531", "j= c #364A52", "k= c #1F3B47", "l= c #32809D", "m= c #043D52", "n= c #32434A", "o= c #1B3744", "p= c #1E8EB8", "q= c #000F14", "r= c #293236", "s= c #122F3C", "t= c #316174", "u= c #016287", "v= c #1C2124", "w= c #233E4A", "x= c #0A2836", "y= c #366476", "z= c #004D6B", "A= c #21282B", "B= c #163340", "C= c #22404D", "D= c #16617E", "E= c #06161D", "F= c #193643", "G= c #2F5C6E", "H= c #041F2A", "I= c #1E3B48", "J= c #19536C", "K= c #071013", "L= c #2C4550", "M= c #005E81", "N= c #006991", "O= c #005575", "P= c #00425C", "Q= c #30757E", "R= c #01EBFB", "S= c #02090B", "T= c #34464D", "U= c #0E2C39", "V= c #3A6875", "W= c #09D8F6", "X= c #006286", "Y= c #131617", "Z= c #2E97AD", "`= c #007793", " - c #273034", ".- c #0F2D3A", "+- c #2C4E5C", "\@- c #15A9DF", "#- c #012633", "\$- c #31424A", "%- c #326377", "&- c #058CBD", "*- c #1A2225", "=- c #1F3A47", "-- c #2E505E", ";- c #0B79A2", ">- c #242F33", ",- c #2B4550", "'- c #1D90BB", ")- c #00597B", "!- c #012A39", "~- c #0A1011", "{- c #2D454F", "]- c #316376", "^- c #005F84", "/- c #1B2023", "(- c #1C3744", "_- c #326073", ":- c #21272A", "<- c #15323E", "[- c #2F5464", "}- c #054E69", "|- c #1A2124", "1- c #1E3946", "2- c #2F4C59", "3- c #0C4258", "4- c #222B2F", "5- c #274551", "6- c #0F4962", "7- c #151B1E", "8- c #005D80", "9- c #30636D", "0- c #04F1FC", "a- c #376977", "b- c #07D5F6", "c- c #070A0B", "d- c #364B54", "e- c #2F99AF", "f- c #007693", "g- c #102E3B", "h- c #2E9DC2", "i- c #003C50", "j- c #34444B", "k- c #337C98", "l- c #016F98", "m- c #173441", "n- c #218DB5", "o- c #122A33", "p- c #3B525C", "q- c #1E90BB", "r- c #023345", "s- c #376475", "t- c #2C383D", "u- c #016387", "v- c #1B2123", "w- c #062532", "x- c #306073", "y- c #013C52", "z- c #283236", "A- c #215A70", "B- c #101C21", "C- c #253F4A", "D- c #2E4E5C", "E- c #083B52", "F- c #21292C", "G- c #002839", "H- c #00435F", "I- c #003B55", "J- c #002A3D", "K- c #002231", "L- c #2D505B", "M- c #06F4FB", "N- c #008DBC", "O- c #3A4B52", "P- c #30515F", "Q- c #24A1CC", "R- c #00ABE0", "S- c #006388", "T- c #06090B", "U- c #374B53", "V- c #3099AF", "W- c #2E9BC2", "X- c #033243", "Y- c #364951", "Z- c #3189AA", "`- c #2E3A3F", " ; c #2D87A9", ".; c #063546", "+; c #44575F", "\@; c #1F90BB", "#; c #022734", "\$; c #576D76", "%; c #0F779E", "&; c #131E22", "*; c #29424D", "=; c #345F70", "-; c #03668C", ";; c #1B2124", ">; c #316072", ",; c #092734", "'; c #2E657B", "); c #2C393E", "!; c #2C5E72", "~; c #061A22", "{; c #2D434D", "]; c #315565", "^; c #032D3F", "/; c #29353A", "(; c #002130", "_; c #002637", ":; c #00344B", "<; c #004360", "[; c #004664", "}; c #004563", "|; c #003850", "1; c #00293B", "2; c #26434E", "3; c #0CF0F5", "4; c #0097C5", "5; c #021016", "6; c #3D4F56", "7; c #1680A8", "8; c #0097CE", "9; c #0B0D0D", "0; c #334953", "a; c #2F98AE", "b; c #072533", "c; c #1F3C49", "d; c #366E84", "e; c #09739A", "f; c #182428", "g; c #28424E", "h; c #2D8BAF", "i; c #2F3C42", "j; c #30819F", "k; c #043E54", "l; c #45565D", "m; c #022735", "n; c #425056", "o; c #2D81A1", "p; c #023244", "q; c #34434A", "r; c #3A6475", "s; c #325D6F", "t; c #02506E", "u; c #2C657C", "v; c #2F3D43", "w; c #2F5D70", "x; c #021E29", "y; c #2F434C", "z; c #2E596B", "A; c #2F3F46", "B; c #003349", "C; c #00425E", "D; c #004969", "E; c #004562", "F; c #002F44", "G; c #002535", "H; c #16E4E8", "I; c #00A3CE", "J; c #006D96", "K; c #203B47", "L; c #2A3336", "M; c #2D4956", "N; c #325D6E", "O; c #1D6682", "P; c #024A64", "Q; c #142227", "R; c #2D424B", "S; c #2F809F", "T; c #2C373C", "U; c #30809F", "V; c #35454B", "W; c #376172", "X; c #05678D", "Y; c #1F272A", "Z; c #4D7382", "`; c #04688E", " > c #1B2225", ".> c #315B6C", "+> c #045371", "\@> c #306378", "#> c #013447", "\$> c #2A363B", "%> c #2F5D6F", "&> c #021F2A", "*> c #2A586B", "=> c #071A23", "-> c #2C434D", ";> c #166683", ">> c #002333", ",> c #002C3F", "'> c #003952", ")> c #004766", "!> c #003F5A", "~> c #00344A", "{> c #173744", "]> c #1CD7DB", "^> c #00ADD6", "/> c #00678E", "(> c #006084", "_> c #001922", ":> c #171B1D", "<> c #2A404B", "[> c #2D96AD", "}> c #363F44", "|> c #2696BD", "1> c #035D7D", "2> c #11262F", "3> c #2E3A40", "4> c #27404A", "5> c #2F6E86", "6> c #027AA7", "7> c #252E31", "8> c #2E85A5", "9> c #05374A", "0> c #44565E", "a> c #1F90BA", "b> c #022736", "c> c #314149", "d> c #223E4B", "e> c #1C80A5", "f> c #05242F", "g> c #5C747E", "h> c #06698F", "i> c #045472", "j> c #305B6C", "k> c #02435B", "l> c #12303D", "m> c #2D5D71", "n> c #051A22", "o> c #2D434C", "p> c #254756", "q> c #21323A", "r> c #003348", "s> c #003D57", "t> c #004663", "u> c #004462", "v> c #002B3D", "w> c #112F3C", "x> c #22C9CE", "y> c #00BADE", "z> c #032531", "A> c #024057", "B> c #01435C", "C> c #0E171B", "D> c #2A3438", "E> c #273F4A", "F> c #373F43", "G> c #28ADD8", "H> c #3A4245", "I> c #2D4752", "J> c #2A5060", "K> c #0B98CC", "L> c #131F24", "M> c #26404C", "N> c #248BB1", "O> c #0E2934", "P> c #3C525C", "Q> c #208EB7", "R> c #022B3B", "S> c #314148", "T> c #306C83", "U> c #025878", "V> c #36464D", "W> c #065572", "X> c #305A6B", "Y> c #045574", "Z> c #1D2427", "`> c #183441", " , c #2A4B59", "., c #0C5774", "+, c #131B1F", "\@, c #245A6F", "#, c #0C191F", "\$, c #27404B", "%, c #00354B", "&, c #00415D", "*, c #003E58", "=, c #002C40", "-, c #27B8BD", ";, c #00C5E7", ">, c #282B2D", ",, c #455B65", "', c #2F4A55", "), c #2E4650", "!, c #2C92A8", "~, c #007794", "{, c #2B3336", "], c #3B6474", "^, c #1197C8", "/, c #023547", "(, c #242D30", "_, c #2F4650", ":, c #2294BF", "<, c #02384D", "[, c #35454C", "}, c #2F505D", "|, c #0C779F", "1, c #212C31", "2, c #28434E", "3, c #2389AF", "4, c #023143", "5, c #304047", "6, c #274654", "7, c #127FA8", "8, c #024A65", "9, c #1B2022", "0, c #2F5665", "a, c #065B7B", "b, c #1C2326", "c, c #1A3642", "d, c #163441", "e, c #22637D", "f, c #021E2A", "g, c #2F4C58", "h, c #0D4156", "i, c #173440", "j, c #14303D", "k, c #00374F", "l, c #004765", "m, c #003C56", "n, c #003146", "o, c #173543", "p, c #2BA7AD", "q, c #00D1ED", "r, c #0F1112", "s, c #2A434E", "t, c #2E879C", "u, c #007A98", "v, c #2E5B6D", "w, c #1685AE", "x, c #014C67", "y, c #0C1E25", "z, c #273236", "A, c #2F6276", "B, c #0781AF", "C, c #132329", "D, c #394A51", "E, c #37505B", "F, c #2C7591", "G, c #053546", "H, c #304149", "I, c #277C9C", "J, c #033547", "K, c #2F424A", "L, c #2E7089", "M, c #01719A", "N, c #1E2427", "O, c #264755", "P, c #0D5D7C", "Q, c #1C2428", "R, c #173340", "S, c #2F5463", "T, c #074760", "U, c #121B1F", "V, c #394A52", "W, c #374F59", "X, c #2C5565", "Y, c #041B24", "Z, c #2F4149", "`, c #284958", " ' c #16252C", ".' c #223A44", "+' c #00283A", "\@' c #003045", "#' c #003B54", "\$' c #004461", "%' c #003D56", "&' c #002B3E", "*' c #002536", "=' c #173A48", "-' c #2E969D", ";' c #00D9F1", ">' c #040809", ",' c #2D414B", "'' c #2E798C", ")' c #027A99", "!' c #2B363A", "~' c #264856", "{' c #2B6C85", "]' c #115B76", "^' c #04171D", "/' c #202C31", "(' c #12303E", "_' c #2D728C", ":' c #075E7E", "<' c #042633", "[' c #0E3240", "}' c #042C3B", "|' c #283438", "1' c #29586A", "2' c #123643", "3' c #243C47", "4' c #274856", "5' c #12789E", "6' c #242D31", "7' c #244E5E", "8' c #24343A", "9' c #2C5768", "0' c #073445", "a' c #05151C", "b' c #0D2028", "c' c #041820", "d' c #283338", "e' c #183440", "f' c #235063", "g' c #081921", "h' c #263C46", "i' c #166783", "j' c #0A3141", "k' c #00425F", "l' c #1B4B60", "m' c #0D799E", "n' c #042330", "o' c #2A7784", "p' c #0295B7", "q' c #0B3646", "r' c #13323E", "s' c #1C343D", "t' c #20292D", "u' c #213740", "v' c #285565", "w' c #086280", "x' c #2B3B43", "y' c #24424F", "z' c #1A3541", "A' c #2E5362", "B' c #2A505F", "C' c #283C45", "D' c #2E3F46", "E' c #193541", "F' c #183541", "G' c #2E596A", "H' c #11323E", "I' c #293B42", "J' c #0E2C3A", "K' c #2E4B57", "L' c #2A434D", "M' c #28373D", "N' c #186C8A", "O' c #11465D", "P' c #133544", "Q' c #2A444F", "R' c #1A3643", "S' c #20404E", "T' c #193542", "U' c #0D2A38", "V' c #066C90", "W' c #183643", "X' c #225B70", "Y' c #0581AC", "Z' c #297D9C", "`' c #1E7594", " ) c #1F7594", ".) c #238BB0", "+) c #008CBE", "\@) c #0D7094", "#) c #196985", "\$) c #314B54", "%) c #2F454D", "&) c #374D54", " ", " ", " ", " ", " ", " ", " ", " . + \@ # \$ % & ", " * = - ; > # , ' ) ! ~ { ", " ] ^ / ( _ : < # [ } | 1 / 2 3 ", " 4 ^ / 1 5 6 7 8 9 0 a b c | 5 d / * e ", " f g h ( i j k l m . 0 n o p q 6 r i ( s t e ", " u v w i x j 6 - ) y z 9 A B c C D 6 E x i w F G ", " H I 1 x j 6 J - ) K L % 0 M N O P C - J 6 E 5 Q R ", " S T x 6 J - C U V W X Y Z n ` .W V U C - J ..x +.\@. ", " #.\$.| 6 - C U V _ W %.&.*.# =.-.;.l O _ V U C - 6 1 >. ", " ,.'.J ).U V _ O !.%.L ~.{.]. a N ^.L l !.O _ V /.).6 (._. ", " :.x C V c W !.l <.L [.~.}.9 A |.y ^.1.<.l !.W c V q 2.3. ", " 4.5.).V W !.l <.1.;.^.p 6.7.8. A 9.0.X a.;.1.<.%.!.W V ( b. ", " c.d.K !.l <.1.;.e.f.g.h.i.j.k. l.m.n.o.h.X p.e.;.L <.l W /.q.r. ", " s.k t.<.L ;.a.u.X v.w.&.x.y.> z.A. B.C.D.E.6.&.0.v.X p.a.;.L <.F.G.H. ", " I.J. .L ;.a.p.X v.0.K.&.L.M.N.O.P.Q.0 z.[ R.S.T.x.6.&.~.0.v.X p.^.;.L .U. ", " V./ 1.;.^.p.g.v.w.~.&.W.L.x.X.Y.Z.m `.=.Z Z +.+' ++\@+Y.} x.#+W.&.\$+w.v.g.p.^.;.%+&+ ", " *+1 =+^.p.g.-+w.~.&.W.L.x.} T.;+N.>+,+'+)+!+~+ 9 {+{.]+^+++/+N.Y.T.} x.L.W.&.\$+w.v.g.p.^.L (+ ", " _+( e.p.g.-+h.~.&.6.i.x.} T.Y.N.E.Z.++:+<+|.[+}+n 0 0 k.|+1+2+3+4+5+++Z.E.N.Y.6+} x.i.W.&.\$+h.-+g.p.=+~ ", " 7+g ^.X 0.h.\$+&.6.i.x.} T.Y.N.8+Z.++9+:+^+0+a+b+c+d+e+f+ l.g+h+i+j+m a+0+^+:+9+++Z.E.N.Y.6+} x.i.W.k+\$+h.v.X l+m+ ", " n+o+p h.\$+p+6.i.x.} q+Y.N.8+Z.++9+:+^+<+N |.m '+r+s+t+u+< Z v+\@ u+z w+y.O.2+B |.N 0+^+:+9+++>+8+N.x+q+} M.i.6.p+\$+h.g.y+z+ ", " A+v p ~.p+6.i.x.} q+Y.N.8+Z.++9+B+^+C+D+|.B E+'+O.y.]+F+G+H+I+9 # , J+K+L+s+]+j+O.'+2+B |.D+0+^+:+9+++S.8+N.x+q+} M.i.6.p+~.%+M+ ", " N+V o.6.i.M.} q+x+N.8+Z.++9+B+^+0+D+|.B E+'+O.r+O+]+s+L+[+P+Q+!+z.l. A.# \@ {+d+R+S+[+T+s+]+O+r+O.'+E+B |.D+0+^+B+9+U+S.8+N.x+q+X.M.i.6.~.V+W+ ", " X+o.i.M.X.q+x+Y+8+S.++9+B+4+0+D+|.Z+2+'+O.`+O+]+ \@' .\@[+S++\@\@\@)+*.#\@\$\@# l.< %\@&\@{.R+*\@G+c+[+.\@=\@s+]+O+`+O.-\@2+Z+|.D+0+4+B+9+U+S.8+Y+x+q+X.M.#+;\@>\@ ", " ,\@y x.T.q+x+Y+/+S.++9+B+4+0+D+a+Z+2+'+O.`+O+]+s+' .\@[+w+'\@+\@*\@)\@R+!\@)+*.C.~\@9 v+ v+9 {\@C.]\@^\@/\@!\@K+D.P++\@(\@w+[+.\@T+s+]+O+`+O.-\@2+Z+a+D+0+4+B+9+U+S.8+Y+x+q+T._\@/.:\@ ", " :\@D 7 q+x+Y+/+S.U+9+<\@4+0+D+[\@Z+2+-\@}\@`+O+]+s+T+.\@[+w+'\@+\@*\@D.)\@& !\@|\@1\@{.Q+*.\$ g+2\@0 3\@4\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@5\@4\@6\@ k.I+\$ ]\@7.7\@t+8\@9\@!\@& K+D.P++\@(\@w+[+.\@T+0\@]+` `+}\@-\@2+Z+[\@D+a\@<+<\@b\@U+S./+E.x+q+_\@c\@ ", " d\@#+Y.Y+/+S.U+:+<\@<+0+D+[\@Z+2+-\@}\@`+` ]+0\@T+.\@[+w+'\@+\@*\@D.e\@& !\@9\@|\@f\@{.7\@g\@h\@i\@P.j\@l. k\@l\@l\@l\@l\@l\@l\@G.m\@T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T m\@G.l\@l\@l\@l\@l\@l\@l\@n\@ 2\@o\@H+d+7.g\@7\@{.f\@p\@9\@!\@& K+D.*\@+\@G+w+[+.\@T+s+]+` `+}\@-\@2+Z+[\@|.a\@<+<\@b\@U+S./+Y+Y.p._+ ", " q\@W r\@8+S.U+:+<\@<+0+|.[\@Z+2+-\@r+`+` ]+s+T+b [+c+(\@+\@*\@D.e\@& !\@9\@p\@f\@{.7\@s\@`.t\@u\@H+P.v\@l. w\@s s s s s s x\@y\@z\@A\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@B\@A\@C\@D\@E\@s s s s s s w F\@ z.G\@h+H+u\@h\@`.s\@7\@{.f\@8\@9\@!\@& K+D.*\@+\@G+c+[+b T+0\@]+` `+r+H\@2+Z+[\@|.a\@<+<\@:+U+S.E.q+I\@J\@ ", " K\@L\@/+++:+<\@<+0+|.[\@m 2+H\@r+`+` -.0\@T+b [+c+(\@+\@*\@D.e\@& M\@9\@p\@f\@{.7\@N\@`.t\@d+&\@O\@P\@Q\@e+# w\@w R\@S\@s s s T\@U\@V\@W\@X\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Y\@Z\@`\@ #.#+#\@#s s s w ##\$#w F\@ \@ %#&#P.O\@i\@u\@h\@`.s\@7\@{.f\@8\@9\@M\@& K+D.*\@+\@G+c+[+b T+0\@-.` `+r+H\@2+m [\@|.a\@<+<\@:+++/+*#=# ", " J\@~ q+,+<\@<+a\@|.[\@m 2+-\@r+`+` -.0\@T+b [+S+(\@+\@*\@D.K+& M\@9\@8\@f\@{.7\@s\@`.h\@d+&\@O\@-#;#Q\@>#,#Z w\@'#)#!#~#1 s s {#]#^#/#(#_#:#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#[#}#|#1#2#2.J.s s ##3#4#5#6#5 F\@ B.7#8#Q\@;#-#O\@&\@u\@h\@`.g\@7\@{.)+8\@9\@M\@& K+D.*\@i+G+S+[+b T+0\@-.` `+r+H\@b+m [\@|.N <+:+++[.9# ", " 0#a#Y.<\@b#|.[\@m 2+H\@r+`+` \@' T+b c#S+G+i+d#: K+& M\@9\@8\@)+{.7\@g\@`.h\@u\@&\@O\@-#;#Q\@8#e#f#Q.v+ w\@g#h#i#j#k#g.| w s Q V+l#m#n#o#p#q#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#r#s#o#t#u#v#T s s w j X w#x#y#z#A#1 F\@ # j\@e#<#8#Q\@;#-#O\@&\@B#h\@`.g\@7\@{.)+8\@9\@M\@& R+: *\@i+G+S+c#b T+' \@` `+r+H\@b+m [\@|.b#5+^.C# ", " D#E#~.b#|.m b+O.r+y.` \@' T+b w+S+G+i+d#)\@K+& F#/\@8\@)+{.^\@g\@`.h\@B#H+O\@P.;#Q\@8#<#<#e#G#k. w\@H#I#J#K#L#M#N#O#P#w s s {#2.Q#R#S#T#U#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#q#Y\@V#W#X#Y#g Q s w 5 ;.Z#`#y# \$.\$<#q#+\$1 F\@ A.\@\$o\@e#<#<#8#Q\@&#P.O\@H+B#h\@`.g\@^\@j.)+8\@/\@M\@& R+)\@d#i+G+S+w+b T+' \@` y.r+O.'+Z+|.>+E #\$ ", " \$\$/.%\$2+H\@r+y.` \@' T+b w+S+G+P+d#)\@K+& F#|\@8\@)+j.^\@g\@7.h\@B#H+O\@P.;#Q\@8#<#<#<#<#e#&\$# w\@H#I#<#<#<#q#*\$=\$-\$;\$>\$= w s / T ,\$'\$)\$!\$~\$U#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#q#{\$]\$^\$/\$(\$v#_\$/ s R\@3#:\$<\$[\$ \$}\$q#<#<#<#q#+\$1 F\@ n G\@e#<#<#<#<#8#Q\@|\$P.O\@H+B#h\@`.g\@^\@j.)+8\@|\@M\@1\$R+)\@d#P+G+S+w+2\$T+' \@3\$y.r+H\@E+#+4\$5\$ ", " 6\$7\$m r+y.3\$ \@' T+b w+S+G+i+D.)\@K+& F#|\@8\@)+j.^\@g\@7.h\@u\@H+O\@P.;#Q\@8#<#<#<#<#<#e#o\@8\$Z w\@H#I#<#<#<#<#<#J#9\$0\$a\$b\$c\$d\$5 w s J.,\$e\$f\$g\$h\$i\$q#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#j\$T#k\$l\$m\$n\$o\$p\$s w = q\$r\$s\$t\$Z\@u\$<#<#<#<#<#<#q#+\$1 F\@ 9 v\$e#<#<#<#<#<#<#8#Q\@&#P.O\@H+B#h\@7.g\@^\@w\$)+8\@|\@F#!\@R+)\@d#P+G+S+w+2\$L+' \@]+y.r+%\$x\$ ", " ..|.y.]+ \@' L+b w+S+G+P+D.)\@R+!\@F#|\@8\@)+w\$^\@g\@7.h\@B#H+O\@P.Y Q\@8#<#<#<#<#<#<#<#e#y\$z\$A\$w\@H#I#<#<#<#<#<#<#<#<#q#B\$C\$D\$E\$F\$= w s / T v G\$H\$I\$J\$q#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#J#K\$L\$M\$N\$O\$P\$p\$s w y+*#Q\$R\$S\$T\$U\$<#<#<#<#<#<#<#<#<#q#+\$1 V\$W\$X\$Y\$<#<#<#<#<#<#<#<#8#Z\$&#P.O\@H+B#`\$7.g\@^\@w\$ %1\@|\@F#!\@R+)\@D.P++\@'\@w+2\$L+' \@]+y.++.. ", " K D+` \@' .\@[+w+'\@G+P+D.)\@R+!\@F#|\@8\@ %w\$N\@g\@t\@d+B#H+h+P.&#Z\$8#<#<#<#<#<#<#<#<#<#e#7#.%+%H#I#<#<#<#<#<#<#<#<#<#<#<#\@%#%\$%%%&%d\$y+w s p\$G.*%=%-%;%9\$<#<#<#<#<#<#<#<#<#<#<#<#<#<#>%,%'%)%!%(+Q s w ##).~%{%]%^%Z\@r#<#<#<#<#<#<#<#<#<#<#<#q#+\$1 /%(%}+e#<#<#<#<#<#<#<#<#<#8#Z\$&#P.O\@H+i\@d+7.g\@N\@w\${.1\@|\@F#!\@_%)\@D.P++\@'\@w+[+.\@' s+` /+J ", " h /+-.' .\@2\$w+'\@G+P+D.)\@R+!\@9\@|\@1\@ %w\$N\@g\@7.`\$B#H+h+P\@&#Z\$8#<#<#<#<#<#<#<#<#<#<#<#Y\$:%<%H#I#<#<#<#<#<#<#<#<#<#<#<#<#<#q#Z\@[%}%|%1%q ##w s o\$2%3%4%5%6%7%<#<#<#<#<#<#<#<#\@%8%9%0%a%b%l\@p\$s 1 - c%d%e%f%g%h%<#<#<#<#<#<#<#<#<#<#<#<#<#<#q#+\$1 i%j%e#<#<#<#<#<#<#<#<#<#<#<#8#Z\$&#P\@h+H+B#d+7.g\@N\@w\${.1\@|\@9\@!\@_%)\@D.P++\@'\@w+[+.\@' k%-+ ", " u.]+L+[+w+'\@G+P+D.)\@R+!\@9\@|\@1\@ %w\$N\@g\@7.d+B#H+h+P\@&#Z\$8#<#<#<#<#<#<#<#<#<#<#<#<#e#I#l%H#I#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#u\$m%n%o%p%q%y+w s p\$l\@r%s%t%u%v%q#<#<#u\$w%x%y%z%A%B%Q s s ##C%D%E%F%G%:#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#q#+\$1 H%I%<#<#<#<#<#<#<#<#<#<#<#<#<#8#Z\$&#P\@h+H+i\@d+7.g\@N\@w\${.1\@|\@9\@!\@& )\@D.P++\@'\@w+2\$T+'+J% ", " K%L%L+w+'\@+\@*\@D.e\@R+!\@9\@|\@1\@{.w\$N\@Q+t\@d+i\@H+-#P\@&#Z\$<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#M%l%H#I#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#:#N%O%P%Q%) ##w s p\$V+R%S%T%U%V%W%X%Y%]#J.s w 1 Z%`% &.&+&9\$<#<#<#<#q#q#<#<#<#<#<#<#<#<#<#<#<#<#<#<#q#+\$1 H%\@&<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#Z\$&#P\@-#H+i\@d+t\@`.N\@w\${.f\@|\@9\@!\@& )\@D.*\@+\@'\@w+]+[.c\@ ", " #&\$&[+G+P+D.e\@R+!\@9\@|\@1\@{.7\@N\@Q+t\@d+i\@O\@-#;#&#Z\$<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#M%l%H#I#<#<#\@%*\$%&&&*&=&-&;&>&,&'&<#<#<#<#<#<#q#u\$>%)&!&~&{&]&J 1 ^&/&(&_&:&<&[&o\$}&|&1&= p.2&3&4&5&6&9\$7&Y\@Z\@8&9&0&a&b&u\$>%9\$:#'&<#<#<#<#<#c&d&>%q#+\$1 H%\@&<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#e&]\@;#-#O\@i\@d+t\@`.N\@7\@{.f\@|\@9\@!\@& e\@D.i+G+` f&g& ", " h&6.`+'\@D.R+!\@9\@|\@f\@{.7\@N\@`.h\@d+i\@i&-#;#&#e&<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#M%l%H#I#<#j&k&l&m&n&o&p&q&r&s&t&u&Y\@q#<#<#:#v&w&x&y&z&8&U\$A&B&C&D&E&F&G&H&I&J&s K&L&M&N&O&B&L#P&Q&R&S&T&U&V&V&W&X&Y&Z&`& *.*+*\@*#*:#<#<#<#h%\$*%*&*r#+\$1 H%Y\@<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#e&]\@;#-#O\@i\@d+h\@`.N\@7\@{.f\@|\@9\@1+K++\@]+>+**=* ", " m\@-*y ;*=\@& |\@1\@{.7\@N\@`.h\@d+i\@O\@-#;#&#e&<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#>*l%H#I#<#,*'*)* .;.y !*Y.m )+~*{*]*9&^*q#/*(*_*:*<*[*}*|*%&q#}\$1*2*3*4*5*6*7*8*9*0*a*b*c*q#r#d*e*f*g*)+Z\$*\@j.h*i*j*k*l*m*n*~*o*p*q*:#<#<#>&r*s*t*:#+\$1 H%Y\@<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#e&]\@;#-#O\@i\@d+h\@`.N\@7\@{.1\@9\@G+u*v*w*! ", " <.x*w+9\@{.N\@Q+h\@d+&\@O\@-#;#&#e&<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#>*l%H#I#<#K#y*z*6 c A*5+B*]&C*1.'\@D*E*F*.\$G*H*I*J*K*L*E.M*N*O*>&P*Q*R*S*T*U*V*W*X*Y*X.Z*`*\@%^* =.=+=\@=#=\$=%=&=*===-=;=>=a*,='=)=!=}*~=J#<#{=]=^=/=h%+\$1 H%Y\@<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#8#Q\@;#-#O\@&\@d+h\@Q+^\@8\@P+Z+(=_= ", " :=<=]+|\@Q+d+i\@O\@-#;#]\@e&<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#>*l%H#I#<#>%[=}=|=c ;\@1=2=3=4=5= .|.6=7={=8=9=0=h#a=b=c=d=e=f=g=h=i=j=Z\@k=l=m=n=o=p=[.q=r=s=:#t=u=v=w=x=*\$y=z=A=B=q#C=D=E=j=B\$F=G=H=t&.\$<#I=J=K=L=r#+\$1 H%Y\@<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#8#Q\@;#-#O\@i\@h\@w\$w+5+M=N= ", " v*O=P=/\@`\$O\@;#&#Z\$<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#>*l%H#I#<#\@%Q=R=s c &.S=T=U=V=W=y+X=f\@Y=L=Z=`= -.-<#h%+-\@-#-\$-%-&-*-=-J#U#--;->-,-'-)-!-~-{-.\$]-^-/-(-<#:#_-b#:-<-r#[-}-|-1-<#^*2-3-4-8&q#5-6-7-k=q#+\$1 H%Y\@<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#8#Z\$&#P.i\@{.2\$u*8- ", " \$&`+D. %d+|\$e&<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#>*l%H#I#<#r#9-0-B%K L\@S=t&,*a-b-i X=m c-d-e-f- -#%<#<#g-h-i-j-k-l-r=.-<#<#m-n-o-p-q-r-s-& t-s=t=u-v-(-<#:#_-b#:-;&w-x-y-z-O*<#<#v&A-B-C-^*D-E-F-%&q#+\$1 H%Y\@<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#e&Q\@G-8\@d#P=z= ", " H\@H-I-J-K-e&e&<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#>*l%H#I#<#u\$L-M-N-**L\@S=O-P-Q-R-!.S-0+T-U-V-f- -#%<#q#v&W-X-Y-Z-; `-,*<#<#6& ;.;+;\@;#;\$;%;&;*;=;-;;;(-<#:#>;u*:-<-,;';)+);7&<#<#Z\@!;~;{;.\$];^;/;x=q#+\$1 H%Y\@<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#e&e&(;_;:;<;[; ", " };|;1;K-e&e&<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#>*l%H#I#<#J#2;3;4;**-+5;6;7;8;D =+!*' 9;0;a;f- -.-b;c;d;e;f;g;h;/+i;K#<#<#7&j;k;l;\@;m;n;o;p;q;r;-;;;(-<#h%s;t;:-<-,*u;7\@v;K#<#<#,*w;x;y;U\$z;'&A;>%q#+\$1 H%Y\@<#<#<#<#<#<#<#<#<#<#<#<#<#<#e&e&K-_;B;C;D; ", " E;I-F;G;(;e&<#<#<#<#<#<#<#<#<#<#<#<#<#>*l%H#I#<#J#a=H;I;/.L 4+b#E J;e.;\@Y.m.E*K;Z=f-L;M;N;O;P;Q;R;Z\@S;y T;U\$<#<#7&U;k;l;\@;m;V;W;X;Y;Z;`; >(-<#^*.>+>A=<-c&\@>#>\$>Y\@<#<#K\$%>&>y;Z\@*>=>->u\$q#+\$1 ;>Y\@<#<#<#<#<#<#<#<#<#<#<#<#e&(;>>,>'><; ", " )>!>~>t\@K-e&e&<#<#<#<#<#<#<#<#<#<#{>l%H#I#<#<#m-]>^>U 1. .[.L />(>B _>:><>U=[>f-}>|>1>2>3>4>}\$:#5>6>7>%&<#<#B\$8>9>0>a>b>c>d>e>f>g>h> >(-<#^*.>i>A={=:#j>k>7>l><#<#B\$m>n>o>K\$p>q>8&<#q#+\$1 ;>Y\@<#<#<#<#<#<#<#<#<#<#e&Q\@_;r>s>t> ", " u>|;v>P\@e&e&<#<#<#<#<#<#<#<#>*l%H#I#<#<#w>x>y>C %+/+z>A>B>m;C>D>E>c&,*[>f-F>G>h.H>I>.\$<#q#J>K>L>M>q#<#{=N>O>P>Q>R>S>U=T>U>V>W>v-(-<#^*X>Y>Z>`>u\$ ,.,+,M>q#<#B=\@,#,\$,u\$>&.-u\$<#q#+\$1 H%\@&<#<#<#<#<#<#<#<#e&K-1;%,&, ", " [;*,=,|\$e&e&<#<#<#<#<#<#I#l%H#I#<#<#6&-,;,7\$%+e\@>,,,',),z&.-r#<#}\$!,~,{,],^,/,(,_,w>\@%B=:,<,[,6&h%},|,1,2,3,4,5,.\$6,7,8,!-9,~=<#r#0,a,b,c,<#d,e,f,j-B\$:#g,h,r&i,I%j,.\$<#<#q#+\$1 H%I%<#<#<#<#<#e&e&K-G-k,}; ", " l,m,n,G->>Q\@e&<#<#<#o,l%H#I#<#<#K\$p,q,J <.` r,s,\@%u\$J#<#<#<#.\$t,u, -m-v,w,x,y,z,\$%7&A,B,C,D,E,F,G,H,l>I,J,K,h%p#L,M,>#N,m-<#q#O,P,Q,R,<#>%S,T,U,V,W,X,Y,Z,6&`, '.'q#<#q#+\$1 H%Y\@e&e&e&K-P\@+'\@'#'\$' ", " )>H-%':;F;&'+'*'='l%H#I#<#<#w--';'c X='+>','r#<#<#<#<#<#:#'')'!'B\$K#~'{']'^'/',*('_':'<'['}'|'`>>%1'2'3'q#U#4'5'i\@6'g-<#<#('7'8'>&<#<#%&9'0'a'b'c'd'e'x=f'g'h'u\$<#q#+\$1 i'j'&'F;B;k,%'H-l, ", " k'C;*,l'm'H#I#<#<#n'o'p'q'r's't'u'^*<#<#<#<#<#u\$v'w'x'w-<#r#.-y's,z'r#q#l>A'B'C'D'E'r#<#*\$F'}\$<#<#x=G'H'I'b;<#<#q#J'Z\@q#<#<#q#l>K'L'M'D'F'r#^*I=S\$.-<#<#q#+\$1 N'O'k' ", " w\@H#I#<#<#J#P' ,Q'w=R's=.\$<#<#<#<#<#<#<#Z\@S'N%q#<#<#<#<#q#<#<#<#<#:#x=*\$>%J#<#<#<#<#<#<#<#<#7&T'U'J#<#<#<#<#<#<#<#<#<#<#h%x=*\$>%J#<#<#q#r#<#<#<#q#+\$1 F\@ ", " w\@H#I#<#<#<#<#q#J#<#<#<#<#<#<#<#<#<#<#<#<#u\$J#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#q#+\$1 F\@ ", " w\@H#I#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#q#+\$1 F\@ ", " w\@H#I#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#<#q#+\$1 F\@ ", " w\@V'W'J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#J#u\$X'1 F\@ ", " w\@Y'Z'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`' ).)Q F\@ ", " w\@_\$,\$+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)+)v#2.s F\@ ", " \@)/./././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././.#) ", " \$)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)&) ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " " ); if (!$ARGV[0]) { $getcmd = "wget"; @test=("$getcmd --version >$builddir/test"); if (system(@test) != 0) { print("Could not find $getcmd, please supply me with an internet fetching utility like\nncftpget at the command line, for example:\nperl ProntoInstaller.pl ncftpget\n"); exit; } else { print("Found $getcmd :)\n"); } } unless (eval 'use Gtk; init Gtk;') { &installgtk } else { &checkgtkversion } sub checkgtkversion { $ver = $Gtk::VERSION; $reqver = 0.7003; if ($ver >= $reqver) { &startgui("0"); } else { &installgtk("Old") } } sub installgtk { my ($flag) = @_; if (defined $flag and $flag eq "Old") { print("Your Gtk::Perl version was $Gtk::VERSION, while pronto requires $reqver\nFetching the appropriate version\n"); } else { print ("No Gtk::Perl was found, Fetching Gtk-Perl ... \n"); } if ($< != 0) { die "I wanted to install Gtk::Perl for you but you need to be root\n";} #check for Gtk+ headers my $test = system("gtk-config --cflags"); if ($test !=0) { die "You need the Gtk+ headers installed in order for me to compile Gtk::Perl\nand you dont have them !\n"; } if (-f "$builddir/gnome-perl.tar.gz") { $cmd = "cd $builddir; $untar gnome-perl.tar.gz" } else { if ($getcmd =~/ftp/) { $cmd = "cd $builddir; $getcmd $cyberftp/gnome-perl.tar.gz ; sleep 5 ;$untar gnome-perl.tar.gz";} else { $cmd = "cd $builddir; $getcmd $cyberdeck/gnome-perl.tar.gz ; sleep 5 ;$untar gnome-perl.tar.gz";} } system($cmd); print ("Compiling Gtk-Perl ... \n"); $cmd2 = "cd $builddir/gnome-perl/; $compile"; system($cmd2); print("Compiling GtkXmHTML...\n"); $cmd3 = "cd $builddir/gnome-perl/GtkXmHTML; $compile"; system($cmd3); print("Done, firing up the GUI ...\n"); &initgtk; } sub initgtk { unless (eval 'use Gtk; init Gtk;;') { die $@ }; $newgtk = 1; &startgui("$newgtk"); } sub startgui { my ($newgtk)=@_; $main = new Gtk::Window("toplevel"); $main->set_title("Pronto! Installer ..."); $main->set_policy(1,1,0); $main->set_position(-mouse); $main->set_default_size('210','200'); $main->signal_connect("delete_event" => \&Gtk::false); $main->signal_connect("destroy" => sub { $main->destroy ; Gtk->exit(0); }); $main->show; $window = $main->window; $bg = $main->style->bg('normal'); ($about_pixmap, $about_mask) = Gtk::Gdk::Pixmap->create_from_xpm_d($window, $bg, @about_xpm); $main->{'vbox'} = new Gtk::VBox(0,0); $main->{'vbox'}->show; $main->{'hbox'} = new Gtk::HBox(0,0); $main->{'hbox'}->show; $main->add($main->{'vbox'}); $main->{'phbox'} = new Gtk::HBox(0,0); $main->{'phbox'}->show; $main->{'pixmap'} = new Gtk::Pixmap($about_pixmap, $about_mask); $main->{'pixmap'}->show; $main->{'phbox'}->pack_start($main->{'pixmap'},1,0,0); $main->{'vbox'}->pack_start($main->{'phbox'},1,0,0); $main->{'vbox'}->pack_start($main->{'hbox'},1,0,0); $label = new Gtk::Label(" Pronto! Installer "); $label->set_alignment(0.0,0.5); $label->show; $main->{'hbox'}->pack_start($label,1,0,0); $main->{'abort'} = new Gtk::Button("Abort"); $main->{'abort'}->signal_connect("clicked" => sub { $main->destroy; Gtk->exit(0);}); $main->{'abort'}->show; $main->{'radiobox'} = new Gtk::HBox(0,0); $main->{'vbox'}->pack_start($main->{'radiobox'},0,0,0); $main->{'hbox2'} = new Gtk::HBox(0,0); $main->{'hbox2'}->show; $main->{'vbox'}->pack_start($main->{'hbox2'},0,0,0); $main->{'hbox2'}->pack_start($main->{'abort'},1,1,0); $main->{'go'} = new Gtk::Button("Go"); if ($< == 0) { $main->{'go'}->signal_connect("clicked" => sub { if (defined $newgtk) { $main->{'go'}->hide; &sd ; &go("$newgtk") } else { $main->{'go'}->hide; &sd ; &go } }); } else { $main->{'go'}->signal_connect("clicked" => sub { $label->set_text("You need to be root ..."); }); } $main->{'go'}->show; $main->{'hbox2'}->pack_start($main->{'go'},1,1,0); } sub go { my ($newgtk)=@_; if (defined $newgtk and $newgtk == 1) { &checkforxmhtml("$newgtk"); } else { $newgtk = 0; &checkforxmhtml("$newgtk"); } &check("Date::Manip","SBECK","DateManip-5.40.tar.gz","DateManip-5.40",5.39); &check("DBI","TIMB","DBI-1.14.tar.gz","DBI-1.14",1.14); &check("Text::CSV_XS","JWIED","Text-CSV_XS-0.20.tar.gz","Text-CSV_XS-0.20",0.20); &check("SQL::Statement","JWIED","SQL-Statement-0.1016.tar.gz","SQL-Statement-0.1016",0.1016); &check("DBD::CSV","JWIED","DBD-CSV-0.1030.tar.gz","DBD-CSV-0.1030",0.1022); &check("MIME::Base64","GAAS","MIME-Base64-2.12.tar.gz","MIME-Base64-2.12",2.11); &check("HTML::Parser","GAAS","HTML-Parser-3.26.tar.gz","HTML-Parser-3.26",3.08); &check("IO::Wrap","ERYQ","IO-stringy-2.108.tar.gz","IO-stringy-2.108",1.2); &check("MIME::Parser","ERYQ","MIME-tools-5.411a.tar.gz","MIME-tools-5.411",5); &check("Mail::Header","GBARR","MailTools-1.1401.tar.gz","MailTools-1.1401",1.14); &check("MIME::Types","O/OK/OKAMOTO","MIME-Types-0.02.tar.gz","MIME-Types-0.02",0.02); &check("URI::URL","GAAS","URI-1.19.tar.gz","URI-1.19",5); &check("IO::Socket","GBARR","IO-1.20.tar.gz","IO-1.20",1.20); &check("Lingua::Ispell","J/JD/JDPORTER","Lingua-Ispell-0.07.tar.gz","Lingua-Ispell-0.07",0.07); $status_dialog->{'statuslabel'}->set_text("Waiting for user Input"); &dopronto; } sub dopronto { $label->set_text("Done Installing modules\nWould you like\n install Pronto from \ntar.gz or RPM?"); $main->{'abort'}->destroy; $main->{'go'}->destroy; $main->{'tar'} = new Gtk::RadioButton("Tar"); $main->{'tar'}->signal_connect("toggled" => sub { $main->{'location'}->show; $main->{'entry'}->show}); $main->{'rpm'} = new Gtk::RadioButton("RPM", $main->{'tar'}); $main->{'rpm'}->signal_connect("toggled" => sub { $main->{'location'}->hide; $main->{'entry'}->hide }); $main->{'tar'}->show; $main->{'rpm'}->show; $main->{'radiobox'}->pack_start($main->{'tar'},1,0,0); $main->{'radiobox'}->pack_start($main->{'rpm'},1,0,0); $main->{'radiobox'}->show; $main->{'location'} = new Gtk::Label("Prefix "); $main->{'location'}->show; $main->{'hbox2'}->pack_start($main->{'location'},0,0,0); $main->{'entry'} = new Gtk::Entry; $main->{'entry'}->set_text("/usr"); $main->{'entry'}->set_editable(1); $main->{'entry'}->set_usize(60,20); $main->{'entry'}->show; $main->{'hbox2'}->pack_start($main->{'entry'},0,1,0); $main->{'install'} = new Gtk::Button("Install"); $main->{'install'}->signal_connect("clicked", sub { &install }); $main->{'install'}->show; $main->{'hbox2'}->pack_end($main->{'install'},0,1,0); } sub install { if ($main->{'tar'}->active) { $prefix = $main->{'entry'}->get_text; &fetchpronto("$prefix", "tar"); } elsif ($main->{'rpm'}->active) { &fetchpronto("", "rpm"); } $main->{'tar'}->destroy; $main->{'rpm'}->destroy; $main->{'location'}->destroy; $main->{'install'}->destroy; $main->{'pixmap'}->destroy; $main->{'entry'}->destroy; $status_dialog->destroy; $label->set_text("Finished ...\n You may want to clean\n the contents\n of $builddir\n after making sure \nthat Pronto runs fine"); $main->{'start'} = new Gtk::Button("Start pronto"); $main->{'start'}->signal_connect("clicked" => sub { system("pronto"); }); $main->{'start'}->show; $main->{'hbox2'}->pack_start($main->{'start'},1,1,0); } sub check { my ($test,$id,$file,$dir,$wantedver) = @_; $tmpinstalled = 0; $tmp = "use $test;"; eval $tmp; $tmpinstalled = 1 unless $@; #found the module but its old if ($tmpinstalled == 1 && $test->VERSION < $wantedver) { print("Found $test ". $test->VERSION . ", I need $wantedver, installing it\n"); } #found the module and its good if ($tmpinstalled == 1 && $test->VERSION >= $wantedver) { print ("Found $test ". $test->VERSION ." Good\n"); $label->set_text("Found $test\n"); $status_dialog->{'statuslabel'}->set_text("Found $test, on to the next module"); while (Gtk->events_pending) { Gtk->main_iteration; } return 1; } else { #get it, we need it. if (-f "$builddir/$file") { open(TMP, "cd $builddir ; $untar $file 2>&1 |"); $status_dialog->{'statuslabel'}->set_text("Found $test in $builddir"); $i = 0; while () { $status_dialog->{'progressbar'}->set_value($i++); while (Gtk->events_pending) { Gtk->main_iteration; } } close TMP; #html parser asks a question on perl 5.7 and above.. fix it ! if ($test eq "HTML::Parser" && $] >= 5.007) { make_new_parser_make_file($dir); } $status_dialog->{'statuslabel'}->set_text("Generating Makefile for $test"); open(TMP, "cd $builddir/$dir ; perl Makefile.PL 2>&1 |"); $i = 0; while () { $status_dialog->{'progressbar'}->set_value($i++); while (Gtk->events_pending) { Gtk->main_iteration; } } close TMP; $status_dialog->{'statuslabel'}->set_text("Running Make ... "); open(TMP, "cd $builddir/$dir ; make 2>&1 |"); $i = 0; while () { $status_dialog->{'progressbar'}->set_value($i++); while (Gtk->events_pending) { Gtk->main_iteration; } } close TMP; $status_dialog->{'statuslabel'}->set_text("Installing $test"); open(TMP, "cd $builddir/$dir ; make install 2>&1 |"); $i = 0; while () { $status_dialog->{'progressbar'}->set_value($i++); while (Gtk->events_pending) { Gtk->main_iteration; } } close TMP; return 1; } else { print("Fetching $test\n"); $status_dialog->{'statuslabel'}->set_text("Fetching $test"); $label->set_text("Fetching $test"); open(TMP, "cd $builddir ; $getcmd $mirror/$id/$file 2>&1 |"); $i = 0; while () { $status_dialog->{'progressbar'}->set_value($i++); while (Gtk->events_pending) { Gtk->main_iteration; } } close TMP; $status_dialog->{'statuslabel'}->set_text("untarring $test"); open(TMP, "cd $builddir ; $untar $file 2>&1 |"); $i = 0; while () { $status_dialog->{'progressbar'}->set_value($i++); while (Gtk->events_pending) { Gtk->main_iteration; } } close TMP; print ("Compiling $test\n"); $status_dialog->{'statuslabel'}->set_text("Generating Makefile $test"); $label->set_text("Compiling $test"); open(TMP, "cd $builddir/$dir ; perl Makefile.PL 2>&1 |"); $i = 0; while () { $status_dialog->{'progressbar'}->set_value($i++); while (Gtk->events_pending) { Gtk->main_iteration; } } close TMP; $status_dialog->{'statuslabel'}->set_text("Compiling $test"); open(TMP, "cd $builddir/$dir ; make 2>&1 |"); $i = 0; while () { $status_dialog->{'progressbar'}->set_value($i++); while (Gtk->events_pending) { Gtk->main_iteration; } } close TMP; $status_dialog->{'statuslabel'}->set_text("Installing $test"); open(TMP, "cd $builddir/$dir ; make install 2>&1 |"); $i = 0; while () { $status_dialog->{'progressbar'}->set_value($i++); while (Gtk->events_pending) { Gtk->main_iteration; } } close TMP; } } } sub make_new_parser_make_file { my ($dir) = @_; print("making makefile\n"); open(OUT, ">$builddir/$dir/Makefile.PL"); my $tmp=<<"EOF" require 5.004; use strict; use ExtUtils::MakeMaker; my \@extra; my \@define; my \$ans = "y"; #prompt("Do you want to compile with support for marked sections?", "yes"); if (\$ans =~ /^y(es)?\$/i) { push(\@define, "-DMARKED_SECTION"); } push(\@extra, "DEFINE" => "\@define") if \@define; WriteMakefile( NAME => 'HTML::Parser', VERSION_FROM => 'Parser.pm', H => [ "hparser.h", "hctype.h", "tokenpos.h", "pfunc.h", "hparser.c", "util.c", ], PREREQ_PM => { 'HTML::Tagset' => 3, }, dist => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', }, \@extra, ); sub MY::postamble { ' pfunc.h : mkpfunc \$(PERL) mkpfunc >pfunc.h hctype.h : mkhctype \$(PERL) mkhctype >hctype.h ' } EOF ; print OUT $tmp; close(OUT); return; } sub checkforxmhtml { my ($newgtk) = @_; $tmpinstalled = 0; $tmp = "use Gtk::XmHTML;"; eval $tmp; $tmpinstalled = 1 unless $@; if ($tmpinstalled == 1) { print("Found Gtk::XmHTML\n"); $label->set_text("Found Gtk::XmHTML"); $status_dialog->{'statuslabel'}->set_text("Found Gtk::XmHTML, on to the next module"); return 1; } else { if ($newgtk == 1) { print ("Using Freshly built Gtk to build GtkXmHTML\n"); $label->set_text("Building Gtk::XmHTML"); $status_dialog->{'statuslabel'}->set_text("Building Makefile for Gtk::XmHTML"); open(TMP, "cd $builddir/gnome-perl/GtkXmHTML; perl Makefile.PL 2>&1 |"); $i = 0; while () { $status_dialog->{'progressbar'}->set_value($i++); while (Gtk->events_pending) { Gtk->main_iteration; } } close TMP; $status_dialog->{'statuslabel'}->set_text("Compiling Gtk::XmHTML"); open(TMP, "cd $builddir/gnome-perl/GtkXmHTML; make 2>&1 |"); $i = 0; while () { $status_dialog->{'progressbar'}->set_value($i++); while (Gtk->events_pending) { Gtk->main_iteration; } } close TMP; $status_dialog->{'statuslabel'}->set_text("Installing Gtk::XmHTML"); open(TMP, "cd $builddir/gnome-perl/GtkXmHTML; make install 2>&1 |"); $i = 0; while () { $status_dialog->{'progressbar'}->set_value($i++); while (Gtk->events_pending) { Gtk->main_iteration; } } close TMP; return 1; } else { $tmpinstalled = 0; $tmp = "use Gtk::XmHTML;"; eval $tmp; $tmpinstalled = 1 unless $@; if ($tmpinstalled == 1) { print ("Found Gtk::XmHTML\n"); $label->set_text("Found Gtk::XmHTML"); $status_dialog->{'statuslabel'}->set_text("Found Gtk::XmHTML, on to the next module"); return 1 } else { print ("Fetching Gtk::XmHTML ... \n"); $label->set_text("Fetching Gtk::XmHTML ... "); $status_dialog->{'statuslabel'}->set_text("Fetching Gtk::XmHTML"); if ($getcmd =~/ftp/) { open(TMP, "cd $builddir; $getcmd $cyberftp/gnome-perl.tar.gz"); } else { open(TMP, "cd $builddir ; $getcmd $cyberdeck/gnome-perl.tar.gz 2>&1 |");} $i = 0; while () { $status_dialog->{'progressbar'}->set_value($i++); while (Gtk->events_pending) { Gtk->main_iteration; } } close TMP; $label->set_text("Untarring Gtk::XmHTML ... "); $status_dialog->{'statuslabel'}->set_text("Untarring Gtk::XmHTML"); open(TMP, "cd $builddir ; $untar gnome-perl.tar.gz 2>&1 |"); $i = 0; while () { $status_dialog->{'progressbar'}->set_value($i++); while (Gtk->events_pending) { Gtk->main_iteration; } } close TMP; $label->set_text("Making Gtk::XmHTML ... "); $status_dialog->{'statuslabel'}->set_text("Making Gtk::XmHTML"); open(TMP, "cd $builddir/gnome-perl ; perl Makefile.PL 2>&1 |"); $i = 0; while () { $status_dialog->{'progressbar'}->set_value($i++); while (Gtk->events_pending) { Gtk->main_iteration; } } close TMP; open(TMP, "cd $builddir/gnome-perl; make 2>&1 |"); $i = 0; while () { $status_dialog->{'progressbar'}->set_value($i++); while (Gtk->events_pending) { Gtk->main_iteration; } } close TMP; open(TMP, "cd $builddir/gnome-perl; make install 2>&1 |"); $i = 0; while () { $status_dialog->{'progressbar'}->set_value($i++); while (Gtk->events_pending) { Gtk->main_iteration; } } close TMP; open(TMP, "cd $builddir/gnome-perl/GtkXmHTML; perl Makefile.PL 2>&1 |"); $i = 0; while () { $status_dialog->{'progressbar'}->set_value($i++); while (Gtk->events_pending) { Gtk->main_iteration; } } close TMP; open(TMP, "cd $builddir/gnome-perl/GtkXmHTML; make 2>&1 |"); $i = 0; while () { $status_dialog->{'progressbar'}->set_value($i++); while (Gtk->events_pending) { Gtk->main_iteration; } } close TMP; $label->set_text("Installing Gtk::XmHTML ... "); $status_dialog->{'statuslabel'}->set_text("Installing Gtk::XmHTML"); open(TMP, "cd $builddir/gnome-perl/GtkXmHTML; make install 2>&1 |"); $i = 0; while () { $status_dialog->{'progressbar'}->set_value($i++); while (Gtk->events_pending) { Gtk->main_iteration; } } close TMP; } } } } sub fetchpronto { my ($prefix, $form) = @_; if ($form eq "tar") { if (-f "$builddir/pronto-$prontoversion.tar.gz") { print ("Found pronto-$prontoversion.tar.gz in $builddir, using that\n"); $label->set_text("Found local pronto $prontoversion\n"); $status_dialog->{'statuslabel'}->set_text("Using local copy of Pronto $prontoversion"); $i = 0; open(TMP, "cd $builddir ; $untar pronto-$prontoversion.tar.gz 2>&1 |"); while () { $status_dialog->{'progressbar'}->set_value($i++); while (Gtk->events_pending) { Gtk->main_iteration; } } close TMP; print ("Installing pronto $prontoversion\n"); $label->set_text("Installing pronto $prontoversion"); $status_dialog->{'statuslabel'}->set_text("Installing pronto $prontoversion"); open(TMP, "cd $builddir/pronto-$prontoversion ; make install PREFIX=$prefix 2>&1 |"); while () { $status_dialog->{'progressbar'}->set_value($i++); while (Gtk->events_pending) { Gtk->main_iteration; } } close TMP; return 1; } else { print("Fetching pronto $prontoversion"); $label->set_text("Fetching pronto $prontoversion"); $status_dialog->{'statuslabel'}->set_text("Fetching pronto $prontoversion"); if ($getcmd =~/ftp/) { open(TMP, "cd $builddir; $getcmd $cyberftp/pronto-$prontoversion.tar.gz 2>&1 |"); $i = 0; while () { $status_dialog->{'progressbar'}->set_value($i++); while (Gtk->events_pending) { Gtk->main_iteration; } } close TMP; } else { open(TMP, "cd $builddir; $getcmd $cyberdeck/pronto-$prontoversion.tar.gz 2>&1 |"); $i = 0; while () { $status_dialog->{'progressbar'}->set_value($i++); while (Gtk->events_pending) { Gtk->main_iteration; } } close TMP; } $status_dialog->{'statuslabel'}->set_text("untarring pronto $prontoversion"); open(TMP, "cd $builddir ; $untar pronto-$prontoversion.tar.gz 2>&1 |"); $i = 0; while () { $status_dialog->{'progressbar'}->set_value($i++); while (Gtk->events_pending) { Gtk->main_iteration; } } close TMP; $status_dialog->{'statuslabel'}->set_text("installing pronto $prontoversion"); open(TMP, "cd $builddir/pronto-$prontoversion ; make install PREFIX=$prefix 2>&1 |"); $i = 0; while () { $status_dialog->{'progressbar'}->set_value($i++); while (Gtk->events_pending) { Gtk->main_iteration; } } close TMP; return 1; } } if ($form eq "rpm") { if (-f "$builddir/pronto-nomodules-$prontoversion-1.noarch.rpm") { print ("Found pronto $prontoversion RPM in $builddir, using that\n"); $label->set_text("Found local pronto $prontoversion\n"); $status_dialog->{'statuslabel'}->set_text("Using local copy of pronto $prontoversion"); $i = 0; open(TMP, "cd $builddir ; rpm -Uvh pronto-nomodules-$prontoversion-1.noarch.rpm 2>&1 |"); while () { $status_dialog->{'progressbar'}->set_value($i++); while (Gtk->events_pending) { Gtk->main_iteration; } } close TMP; return 1; } else { print("Fetching pronto $prontoversion"); $label->set_text("Fetching pronto $prontoversion"); $status_dialog->{'statuslabel'}->set_text("Fetching pronto $prontoversion"); if ($getcmd =~/ftp/) { open(TMP, "cd $builddir; $getcmd $cyberftp/pronto-nomodules-$prontoversion-1.noarch.rpm 2>&1 |"); $i = 0; while () { $status_dialog->{'progressbar'}->set_value($i++); while (Gtk->events_pending) { Gtk->main_iteration; } } close TMP; } else { open(TMP, "cd $builddir; $getcmd $cyberdeck/pronto-nomodules-$prontoversion-1.noarch.rpm 2>&1 |"); $i = 0; while () { $status_dialog->{'progressbar'}->set_value($i++); while (Gtk->events_pending) { Gtk->main_iteration; } } close TMP; } $status_dialog->{'statuslabel'}->set_text("installing pronto $prontoversion"); $i = 0; open(TMP, "cd $builddir ; rpm -Uvh pronto-nomodules-$prontoversion-1.noarch.rpm 2>&1 |"); while () { $status_dialog->{'progressbar'}->set_value($i++); while (Gtk->events_pending) { Gtk->main_iteration; } } close TMP; } } } sub sd { $status_dialog = new Gtk::Dialog; $status_dialog->signal_connect("destroy" => sub { $status_dialog->destroy; }); $status_dialog->signal_connect("delete_event" => sub { $status_dialog->destroy; }); $status_dialog->set_title("Working !"); $status_dialog->position(-mouse); $status_dialog->border_width(5); $sd_vbox=new Gtk::VBox(0,5); $sd_vbox->border_width(5); $status_dialog->vbox->pack_start($sd_vbox,1,1,0); $sd_vbox->show; $status_dialog->{'statuslabel'}=new Gtk::Label "Preparing ..."; $status_dialog->{'statuslabel'}->set_alignment(0.5,0.5); $sd_vbox->pack_start($status_dialog->{'statuslabel'},0,1,0); $status_dialog->{'statuslabel'}->show; $status_dialog->{'progressbar'}=new Gtk::ProgressBar; $status_dialog->{'progressbar'}->set_usize(200,20); $status_dialog->{'progressbar'}->set_show_text(1); $status_dialog->{'progressbar'}->set_text_alignment(0.5,0.5); $status_dialog->{'progressbar'}->set_activity_mode('1'); $status_dialog->{'progressbar'}->set_activity_step('12'); $sd_vbox->pack_start($status_dialog->{'progressbar'},1,1,0); $status_dialog->{'progressbar'}->show; $status_dialog->show; while (Gtk->events_pending) { Gtk->main_iteration; } } main Gtk;