Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Comment on

( #3333=superdoc: print w/ replies, xml ) Need Help??
#!/usr/bin/perl # # ============== # riotjournal.pl # ============== # # Based on ljer.pl by amoe (http://perlmonks.thepen.com/120236.html) # # Description : Perl LiveJournal client # Version : 0.2 # Author : Dan Hetrick # Website : http://www.riotmod.com/lj # use strict; use warnings; use Tk; use LWP::UserAgent; use HTTP::Request::Common; #==========[ Settings ]========= my $APP_NAME = "RiotJournal"; my $APP_VERSION = "0.2"; my $APP_CONFIG = "$ENV{HOME}/.riotjournal.rc"; my $APP_AGENT = "$APP_NAME/$APP_VERSION"; my $APP_CGI = 'http://www.livejournal.com/cgi-bin/log.cgi'; my %global_params; my $mw; my $GUI_LOGO_WIDTH = 597; my $GUI_LOGO_HEIGHT = 86; #==========[ Post Settings ]==== my $LJ_SUBJECT; my $LJ_ENTRY; my $LJ_MUSIC; my $LJ_MOOD; my $LJ_POST_TYPE = 1; # 1 = Public, 2 = Private, 3 = Friends my $LJ_USERNAME; my $LJ_PASSWORD; my $GUI_POST_TEXT; #==========[ Main Code ]======== if ( -e "$APP_CONFIG" ) { } else { GUI_EnterUserInfo(); } $LJ_USERNAME = GetSetting( "user", $APP_CONFIG ); $LJ_PASSWORD = GetSetting( "password", $APP_CONFIG ); $APP_CGI = GetSetting( "cgi", $APP_CONFIG ); $APP_AGENT = GetSetting( "agent", $APP_CONFIG ); GUI_EnterPost(); #==========[ Support Code ]===== # ============= # GetSetting() # ============= # Arguments : Setting, Config file # Returns : Setting value # Description : Retrieves user settings from riotjournal.rc # sub GetSetting { my ( $myset, $myfile ) = @_; my $retval = ""; open( CFGFILE, "<$myfile" ) or die "Error opening $myfile."; my @cfgfile = <CFGFILE>; close CFGFILE; foreach my $sln (@cfgfile) { if ( index( $sln, "#" ) == 0 ) { next; } if ( $sln eq "" ) { next; } my @ln = split( "=", $sln ); if ( lc( $ln[0] ) =~ /$myset/i ) { chomp $ln[1]; $retval = $ln[1]; last; } } return $retval; } # =============== # GUI_EnterPost() # =============== # Arguments : None # Returns : None # Description : Displays a Tk interface to the PostToLiveJournal() sub +. # sub GUI_EnterPost { $mw = MainWindow->new(); $mw->title("$APP_NAME $APP_VERSION"); my $icon = $mw->Photo( 'image', -data => rj_icon(), format => 'gif +' ); $mw->iconimage($icon); my $canvas = $mw->Canvas( '-width' => $GUI_LOGO_WIDTH, '-height' => $GUI_LOGO +_HEIGHT ); $mw->Photo( 'logo', -data => rj_logo(), -format => 'gif' ); $canvas->createImage( 0, 0, '-anchor' => 'nw', '-image' => 'logo' +); $canvas->pack; $mw->Label( -text => "Subject" )->pack( -anchor => 'nw' ); $mw->Entry( -width => 75, -textvariable, \$LJ_SUBJECT ) ->pack( -anchor => 'ne', -fill => 'x' ); $mw->Label( -text => "Music" )->pack( -anchor => 'nw' ); $mw->Entry( -width => 75, -textvariable, \$LJ_MUSIC ) ->pack( -anchor => 'ne', -fill => 'x' ); $mw->Label( -text => "Mood" )->pack( -anchor => 'nw' ); $mw->Entry( -width => 75, -textvariable, \$LJ_MOOD ) ->pack( -anchor => 'ne', -fill => 'x' ); $GUI_POST_TEXT = $mw->Scrolled( 'Text', -scrollbars => 'e', -width => 80, -height + => 10 ) ->pack( -anchor => 'nw', -fill => 'x' ); $mw->Radiobutton( -text => "Public", -command => sub { $LJ_POST_TYPE = 1; } )->pack( -anchor => 'nw' ); $mw->Radiobutton( -text => "Private", -value => '0', -command => sub { $LJ_POST_TYPE = 2; } )->pack( -anchor => 'nw' ); $mw->Radiobutton( -text => "Friends Only", -value => '1', -command => sub { $LJ_POST_TYPE = 3; } )->pack( -anchor => 'nw' ); $mw->Button( -text => "Post to LiveJournal", -command => sub { $LJ_ENTRY = $GUI_POST_TEXT->get( '1.0', 'end' ); PostToLiveJournal(); } )->pack( -side => 'left', -anchor => 'nw', -fill => 'x' ); $mw->Button( -text => "Exit", -command => sub { exit } )->pack( -side => 'right', -anchor => 'nw', -fill => 'x' ); MainLoop; } # =================== # GUI_EnterUserInfo() # =================== # Arguments : None # Returns : None # Description : Displays a Tk dialog to get the LiveJournal user # and password, and calls CreateUserInfoFile() # sub GUI_EnterUserInfo { my $username; my $password; $mw = MainWindow->new(); $mw->title("$APP_NAME $APP_VERSION"); my $icon = $mw->Photo( 'image', -data => rj_icon(), format => 'gif +' ); $mw->iconimage($icon); my $canvas = $mw->Canvas( '-width' => 317, '-height' => $GUI_LOGO_ +HEIGHT ); $mw->Photo( 'logo', -data => rj_logo_small(), -format => 'gif' ); $canvas->createImage( 0, 0, '-anchor' => 'nw', '-image' => 'logo' +); $canvas->pack; $mw->Label( -text => "Enter your LiveJournal Username/Password." ) ->pack( -anchor => 'nw' ); $mw->Label( -text => "Restart $APP_NAME for changes to take effect +." ) ->pack( -anchor => 'nw' ); $mw->Label( -text => "Username:" )->pack( -anchor => 'nw' ); $mw->Entry( -width => 20, -textvariable, \$username ) ->pack( -anchor => 'nw', -fill => 'x' ); $mw->Label( -text => "Password:" )->pack( -anchor => 'nw' ); $mw->Entry( -width => 20, -textvariable, \$password ) ->pack( -anchor => 'nw', -fill => 'x' ); $mw->Button( -text => "OK", -command => sub { CreateUserInfoFile( $username, $password ); +exit; } )->pack( -side => 'top', -anchor => 'nw', -fill => 'x' ); $mw->Button( -text => "Exit", -command => sub { exit } )->pack( -side => 'top', -anchor => 'nw', -fill => 'x' ); MainLoop; } # ==================== # CreateUserInfoFile() # ==================== # Arguments : Username, password # Returns : None # Description : Saves username/password to /home/<username>/.riotjourn +al.rc # sub CreateUserInfoFile { my ( $username, $password ) = @_; open( CONFIGFILE, ">$APP_CONFIG" ) or die "Can't write configurati +on file."; print CONFIGFILE "# riotjournal configuration file\n"; print CONFIGFILE "user=$username\n"; print CONFIGFILE "password=$password\n"; print CONFIGFILE "cgi=http://www.livejournal.com/cgi-bin/log.cgi\n +"; print CONFIGFILE "agent=$APP_NAME/$APP_VERSION\n"; close CONFIGFILE; } # =================== # PostToLiveJournal() # =================== # Arguments : None # Returns : None # Description : Posts entered data to LiveJournal # sub PostToLiveJournal { my $journaller = LWP::UserAgent->new(); $journaller->agent($APP_AGENT); $global_params{user} = $LJ_USERNAME; $global_params{password} = $LJ_PASSWORD; my %login = &login; my $http_res = $journaller->request( POST $APP_CGI, \%login ); die "Failed to login!" unless ( $http_res->is_success ); my %lj_res = split( "\n", $http_res->content ); $lj_res{success} eq 'OK' ? print "Logged in as $lj_res{name}!\n" : die "Failed to log in: $lj_res{errmsg}\n"; print "Server: $lj_res{message}\n" unless ( !$lj_res{message} ); my %postevent = &postevent; $http_res = $journaller->request( POST $APP_CGI, \%postevent ); die "Failed to update journal!" unless ( $http_res->is_success ); %lj_res = split( "\n", $http_res->content ); $lj_res{success} eq 'OK' ? print "Updated journal successfully with entry $lj_res{itemid} +\n" : print "Failed to update journal: $lj_res{errmsg}\n"; exit; } # ======= # login() # ======= # Arguments : None # Returns : Parameter hash # Description : Sets LiveJournal login parameters # sub login { my %params = %global_params; $params{mode} = 'login'; $params{clientversion} = $APP_AGENT; return %params; } # =========== # postevent() # =========== # Arguments : None # Returns : Parameter hash # Description : Sets LiveJournal post parameters # sub postevent { my %params = %global_params; $params{mode} = 'postevent'; $params{lineendings} = 'unix'; if ( $LJ_POST_TYPE == 1 ) { $params{security} = 'public'; } elsif ( $LJ_POST_TYPE == 2 ) { $params{security} = 'private'; } elsif ( $LJ_POST_TYPE == 3 ) { $params{security} = 'usemask'; $params{allowmask} = 1; } @params{ 'subject', 'event', 'prop_current_music', 'prop_current_m +ood' } = ( $LJ_SUBJECT, $LJ_ENTRY, $LJ_MUSIC, $LJ_MOOD ); @params{ 'min', 'hour', 'day', 'mon', 'year' } = ( localtime(time) )[ 1 .. 5 ]; $params{year} += 1900; $params{mon} += 1; return %params; } # =================== # rj_logo() # =================== # Arguments : None # Returns : Base64 encoded GIF image # Description : The RiotJournal logo # sub rj_logo { my $binary_data = <<EOD; R0lGODlhVQJWAOcAAGaazmaaymaWymKWxkp+ri5ekh5OggY2agY6bhpOgjpqnlqKvlqOwj +5ypgo+ cgI2agIyZipeklKGukp+siZajg5CcjJmml6Owj5yoho+ckZSdnZifoJmgiZCbhJCdl6Swl +aKulKC tk5+skp6rkZ2qkZ6qmKSxj5uohZKfgI2Zg46bopqgppyhm5eflJWdi5GbjpuojpunjZqmm +KWykZ6 rgo2al5aeg4+ckZqjmqGnl5+liJOdlaKvkJ2qjZqnjZmmiJShjZKchI+ckJminaSrr7K2u +bu9tre 3nKKohpKfkJ2pk6CtlaGuhpGdlZ2mrrO5v7+/vLy8ra+xkJyplKGtl6Sxnpifh4+bsLGyu +7u7vr6 /ubq7sbS3pKisjpihk6CsiZShn6Sps7OzsrW4hJGdgo6bhZCcsrKylKCpkJymhY6aqayui +5Wgn6u yo6+2pbG3oKu1kZ2njZafaKqtmqauoq61prK4nam0j5adm6evpLC2iZWii5SfoqarlaGqk +ZmiipO ch5Sgk5+ooa20j5ulmaWujJmjmKSsiJWhi5ikluLrjZiikp6onqqxn6iwipajl6OsnKiwj +pmli5a gjZWciJGbm52fpqSioKGhlZqeramksKukuLCmvbOnuzGnKqejlpuet6+mvLKnnqCgubCms +qylta6 lhY+ap6Wiu7KnjJilmJyfpKOhhpCbk5memqazvb6/vL2+vb2+t7m6nKWumaOsu72+ipWgi +ZOgiJO gpK22rrS6sra7rLK5pq63nqm0jJaikZypm6ezoau1p6+3q7K5qbC4oqy2nKi0u7y+t7q8s +LW6hI2 ZjZejrbO5tLi8uLu9ury9pa63nKizq7K4ury+vr+/uLq9q7G4nai0qrG4tbm8qLC4mqezr +7S6n6q 1iJGdsba7o622qbG4s7e7lJ+st7q9pq+3tbi8trm8rLO5o6y2sre7oKq1kJuor7W6oqy1h +5KdipW iqq6zlZ6mh5Odqq+zo6muuLm7uLq7jpehnKOqo6iuv///////////ywAAAAAVQJWAAAI/g +ABCBxI sKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihQYoKTJkyhTqlzJsqXLlzBjyp +xJs6bN mzhz6tzJs6fPn0CDCh1KtGhJAUiTKl3KtKnTp1CjSp1KtarVq1izat3KtatXqwC+ih1Ltq +zZs2jT Zh3Jtq3bt3DjykUYYK7du3jz6t3Lt6/fv4AbCghMuLDhwDGRDlg8QIDRx5AjS55M+SeAyp +gza97M ObHUAQQKGDiAIIGCBWpTq17NurXrtGHDvp5Nu7bt21gXMmiQwAGCBw8gPEAQQcLh48iT76 +1bV7nz 59A/TqBQITiE68IhOLBwIbr37+Af/g4eHL68eecrB2AwgABCBg0bOGjogN1DA8cxP4AIIW +IEif8k lCBCCCCYgF9nCCao4IIpXXYZgxBGKOGEKDl1AgopqKDBCiy04MILGaQAQQopJDBCVCYsEI +J/GMAQ gwwWxGiBDDHAgIGAC8yA24489ugjVLGN9+OQRBZp5FMH0YBhDS6wwIINGRxwAw456LADBA +hQwMNB MzAgwQQ9wBCjDzU2gEEMMSgQ4w8xwtCDCAycJ+ecHTHnIJ145slXABcAcQCTLKwQRApCDE +FEEUYc gUQS2lnwAUFdSkCCAj8o0IASJIwwwRJM8BDCEhOU0EMDPqypQA88zKDnqqwiNF5s/q3GKi +tHKM3Q QHtBsMBBBzU04cQTUAQbhRQ4tFfBFI4NcEEIPfgAQwMlLMFDnCQ5WJcAF4BAwwk+lPoDBl +QMQOG4 5Jb7krUPmqvuuuzypBQAVSzJgRVX1LCDDlhkAYUWW3DRhRceCIeCBFVQoYQCMTTwBQOq3u +nYw+Q5 BgADJcAAowUwMHHkxhx3XFWQQXos8sgkl0WQAFQE14EVL9QARhhYiCFGFGPkQAYENZTR3g +MGcOtD CQsMQFJzOs5gtNECzHBtAElL0MAPUMNA7axUm2ennVVnrfVDAcxAgIjz1WBGDlicIQYWSD +gAAWkF oJFGGWsnoATDssk2wwA8gDrq/hQlbDq1gwz0YAGbSmxtuHOvvnr44oebJMAAJZCoRg0I6C +DFGWes wQbcKqTRhhtvwBFHCsDRoCrRVSwxhQIyQM3mxZXCMMIHQjKBweA+aNzu7rxnhi5zvQcvfP +BICSQA A+1dJ0cXmM8hxwEpkEFHHW/YYf0dEVznAQiOFaxEDN02QMMEVFDBXwmkjgnu6TNIEMOMGO +hY8vz0 2wZy4vXnr//+5MU2gAwIEJET1nCGOeBBBSlAgQfyoAfrWU8PdLhZCvYAKiWcYAojoAIDLl +CFARxt BlVgAAhEcDsLKIAAjxLAB2gwpu4w7oV+uRq6YEhDWQEPW3toDx/6sAYd+CYC/l8wTRscaD +03+CGA ZaBADGiwBAZ8QGlMIw/THvSBBYwARj4QgaoEsID3WWAJDVOILnbBizKa0Yy98MUvDsKERQ +DjjcFQ iDCGQYxinHEXxjgGMhJCjDP68YzjSIguzLiMYbxCIcPgRjGWYUZvcGMd01DIK4bByDLq4i +BkLOM4 1igQYYTjj2UMxy7G8Y1DEmQa0jjjO9qRkHO8o4y7uKQk4WBGZ9yBIdyoJSsPkjiQ1fCXq2 +Ia8ALw BQyp4A86AEQKAgGCAMQhAYIYBBHtUAdCkMgBP+DBYEpystgsDYRLUFMDtAmAD4xgcCQQl0 +uKkYxg ufOdtlDGMnxxh5MAQAQd/mCGPpuxEmHowhnPgEY03hkLaDzjCdKYhkre8c6GvpMXLCmGO2 +Hhi26o RBji6AU5jJAMa0zUCM/whi6m8QqVdOMcWnDnOFQy0GDxAg4mEYZD3wkLI/CCGqU0CTKw8U +4tUCMb K3lCFIJlhJW25A69cGcsdCEMlyzDnUYQx0p+Z63hWfWq5TLeNktCiIAJwQwPIEMJChGAAR +gCCIdw AxHf0AZEHOABgfhCww6ELsV1bQI++AEBqpA0JrSJr1AJADWqMdN3WuMa2MhGUu7ZCn0yAx +hNgYM2 thGLwgZLFrPoxTGWAgCGWtadvHgKNSYqjVcs5RW/MMY2YPFZKKTDGYZc/koAXnEO1gbLGE +0hrEvb UTxheLS1ydhFO0wLgDtI9J3K0IVpObsLWxAVt08JwDCU8c5eKPYprwgHVNfRlPvdj3/gDW +/HYKWU DyTiBiQqQwS2qghELCIP1SNiIVAgnAhwz64RG8hRVKgEjBmnnO/7gQsVUoyWthYa3OiG8U +ZwBccC wyDD8EY7WxssWJCDqQMRgDcoDAVyJEQbSpWGggfSjXY8obIc7vA5snEyYfjCtlDQxkEMTI +5hkGQa KYaFM9YogGyMtqHv4CSknIHiasg4IcLghiyQewyFBOCpwYKGLAsiQxkC88p04iZKQLAH6N +3AAmXF DwGAQIg2xNeBjAiY/gN8UIVrSXGrsJJNCCz2hcFUob8/qIJCkMJOpRrhzxyFsRae8Q2BvC +IEfGgC OMAhiYJ8IxwoVmo1/hyNWPx2u6YMQDEAXY2UBksLkzbCNXZxkLocFwoUHbFAvrELGFc41E +aIhafd CQ1fCEO/J531kQuiWyiww8ZhkelEYW0EVxvhHBbNRlIbeo1zmJIgRA5WNAKZEDiww6HcuD +VCsgvV KWfYu4rDsrjL0xyslYQAgRhRILY0tDSAgRFqJaIbDNEeMighjK9amjcF8oEpWMB0AjDBCN +j0gZYI hBotjUU4xMFwcYyDHBOGghG4YWgTlOPiI1hAuqYRjiUHyxq2MIcz/s7BcF/0Ah22uLQ1nv +GLkgLg Gw0nBnWjPA6G66IdKgkLiC9bWpP8otUE3YY3iMFwYqjjGSl/569dLoBXvFilKRGAgV86RW +RcmhxE L7k3nOtOZyCjxz9u6DJ+YU8BPIHrRWWJ03vtzhqvxDFQhgI0pIoSql4Nq3jP+4KKN8xkYa +ACEFCv joRpVjAo4szWawQFDgABA4RAyw6y67dH8LM2z2ACMbpAdE094WT0wnglmcYybKuFcGi1Ch +cwgeqT 8gpsCDodxPi6fgEgDGk849JQ8Do3SfKNZ7gTHcCOIlMuc2qKLvcV1Ij4YY2hUIIEwJ/bwP +0umv98 lLoTuosFQK95/rHL579zGYXe5iukAWNyHCMAyp6pLbCx3Oac+LlOCcDPZwoLYsjmXQDgdr +C2wN13 9fL/TCF8USGAVUGA0XUVBhh/BzgVCSgVDRiACEgVBPiAspUVFKgUFwiBDNhd97dYdvYDIl +IGGBAW wqQIFLAHjjBNdnAICSAciKBnUxRn+6Vl4dQDjzIAEjA4eqYQM4BwwWIL6lA8SBEAvnAN7n +QNxYNP jtUMhvYNuFdjEjOEl2Fa3xB3wbIOy1U8v4AO7pQOwyAxCSEAOwcFsYBsAqEL6fBO6XAHWb +hNSSEM vHBp0YBbU/h0wbJrJCF1bTcMR4EM7+QNv7BNU2iERHUOAIAM/mFHhr/FDpwkMc7AdUbmKu +vge8Fi Du/0BCxGZXBHa95md1Q1bqDoHc1hEM2xBIgQHBWQKt5EAI+wCNK0VoIAeDeQCHn4IHEmhQ +EgASdg g2EBAjGygwZRPADQZ1CQDOrQTcPAhVE2ECIADg7WScZwdevQDWAYhQ4yDLzwTkH2bb33e1 +/YP87H HKcWCyJWEtTAdRL3DaNYNwPxCsIQfe4UDmsUALnmTng4EL32a9skbMGyDLu0VeHgac2Gfs +vWj0YQ LLFAatXyflAwbQghDAUZC9xgicGiDNKwbdpFVN72f94VjOBoPB4ZjCKZYR8ZZyQ5krxUki +qpkiBZ ECuJkt92/pIuGZIz6Sos6ZIfeZMno5MxqVUw6ZM1mZI/yY7dhDUOMwNLkAg3AwEJwABuph +6BEAcN RERtEAO/QQYksG/WOIpI4TQ0oHkDQAWDU3A5dxk92FKet3sCMQyUCAXXsGAZsISXMQ3b4E +7JkGBS 5GaX4RjdIA29ZgR8qGVb6E7bEHwNMh5jaHy0F4fBYmTPppagN0kHGSzpoAuO4XQwZlRHwT +RT949W 507eoI7jMVvhYFu1doiJqAvs8FvpsA5184hEpZn2NAzkYJfTwA0opgW90FSOI0xxN3f2VG +W/0yDp YhLFuXsNkpzGeZzDtJzKWZbP6Zx1p2XTWXfMeZ32hJ3W/hmd21md2emdxkmc3NmcQxOc3W +me0Ame yLmd6fIwADADTDABEtADaoMABfAowsQAMbADkKCCkZAII4ICzeRLXEkSSxADE6AqJiACFn +ACBhKA o0iMttAL+OEg3KBbsMAOg/EK5eCM+vRgAPALMPZrLTl7QfILGQkF1qBcexkA3Rgs2wBTTm +EtxecL rzBJaQij6oic6TI0wvAMnpYM1HAZ9Xhb2ScQvUYOMHUZ/AgFgBh5zzeZULAN60CQ7zQMuk +CRsOAN C4liRoB9SVEX2oCh5BAAyBBxz9B/4Kh/UMB/Hghu3xWmbiansjWnQziBwsdNdVqnHYgf8W +enfoqB gLpf/n26X3JaqHh6qHsqqIj6p43KqJy1qIoqqJKqp5QKqZcKoY86qXQaqZfBAEtABV3iA8 +HhAA0A gyXBBBEABo0wTW7Agljygv0zg1gTTgRQEjPAQj0AjMHYNT5YjMc4hAIwibaVDM5gaCMQlx +8qAP70 TollqXaSX7f5TtqgWAMxmMECfHumc0qFbAFgDJMJC8vQhm4orEkxph/nDZdphzGmXw8zdV +8YFn7o TqtkJ3fgDDAGfqj5TscgDPi6L9dwSYMBm1AQiS45De/wW8ngC4NBDkG6a8K0iVE2ZcIpnE +PpKhNR khgLERrLS2HoEB27ECEblCBbst0kGBlrsuKhsgtR/hcLugQm8J4gEAgiggIEIC7J8gU7IA +l58Ip6 0AaQ0IJYIlfXQpLM4RgTAANLEBZ3ZgEJSpMCQYyyQA7ncA6+wA3qgA4e51qumX8j4KHMwI +TZYAzv 5AskCHr7Zi3H8E7qEIgP8qJTCmxUdjXj2HO9wHWxcIw7mRDSIKWmR4/Wd4cHsX1wQBJN+g +za4AvE oEjhgI7JYAxNlX7uZEjwoIwZ2lQAwJAOaRC+MHPWkA5ABQDjwHVawAuFVhBsagSyxJEcub +c4+bqw K5NEKbtA6boxKYy2W7u0m7uzq7tEibu7C7y+GzEvybsm2bvCi7z9k7zCy7w56bvKS5OjSD +Qg0ERH /rEAFqA2EEABEnAgH6AEZTAJceAHfuA2iyAHlPAAB6AAjVG0XDkYMzAq5PQBMPAD3COejn +GWH2cL 0NC/0TBrBVsM1IgU5dBgyzoNYwgFFzk0dSNMbjYM1cViU4StUIAOMHWYQZKYFQUA6jBh0Y +AN5baO Z/sg4gAN8biumbmZ7+pO+iivl1ZT0HANRgDA1rAMS4qI/Pp8o4uQNgoABJt29tQN7+Bxsf +AOJPgN hCh33BCxvklrdOeJVfadBxLCzjnF5bme5WbFx5mH32meXCydVdzFDozFyKnF5/nFZJzFYk +ydaEzF ZVx2a6zGYIzFbXzFcpzGttiic3zH5daeU8QA/jTABDryniKgJvVpAQzgpwzgAJVACZSAB5 +BsCZeA CSNSAHxVLS3JNAuAQW3GRXkFWIxKEMT4WdUQmhlWDk0gl0n2TsRAjVQGklK0tu7UtlsFt8 +DXXXRL WiWVfD/oDDwqnbKhC1IKUYA7a3TIa6DFh0zKYbKQpiVlpZN7Gdj4ceiQDa/AkF+KgQLQDj +kKBbaw C8cwDMMAD0ksC8uwRwTBpm4Kp6x7pyRZofenlocaz80Bz/SsVfY8z3Qqz+58z/i8e0LYz/ +Psz/rM z/A80Pp8p/ks0P18zwm90Act0AYN0A390Jv5vhEN0RQthGGxBEuwgzMAAhhwsxTQHh5wAk +rj/hhB mwma0NKbwAmd4Amf4IKo6s6j+AUYwAR1MQNi2QBCw0vCpL+FBXLp0AunGxavwGAOxqy6EM +GyEa0g WRcuRq2RFBsU7IUYi5hKVVECQAyTWXpZuJfmKozGoFvW8A4obI8tusLBwg5wMB7zalk1FQ +7D0A3E hcPutFmzxQ3h2soEa7AgOVjupAXXsA3bkA7oUA2X5oUP08QTC8WeeDIxmGEi7J6S7ZJcOd +loK9k5 KcKU3dmYDdrHC4afjdmmDXqiXdqXDdSpjdokO8KqTdmnTYKtTduzHdq3bdurrV98MgKJXB +IUgwEm EAALkAABZCImcQEJAAqhIAqd8NzPrQnt/oECtGO0LToDU9AD91sFlKdFsTsQo6wFuGcORs +3PHcoM EBC2q3ZpVHpIW1ktdfFog21IwGPLcjt7uVxhIvYK8ECRUGAOTda7ztcNvOBpX0qkgduuBk +G4httT ACwL3lDX1Cm5wdJkTPMNniV3rIZim2u45IB7n5UMxYC6Kaq6rAun0Nu8xSu7zvvdwyskUJ +viHavi Mf67Ky7jr9vixgu8NO7iuKvjuxu9QI7jrywQBAACQsM0cyYBJjECS7kHWxIADFAGo0AKnS +AKzv3c paBMNxAnggiUIh0C28QAMMBm+BvUv5oM7FCbXSea2ZfU+fShYZEN3QwF1NB8fFehSPEK/u +KAjsrA h69CwYUZdfczhrFgozOADGyOauHgcif7IJNkYNsgDmkdLOPQ2GzdYfEqAJ/Z1uwAY9AQfh +yN18ES ryWxDhH3BMuAdpp5GReaYhUJVI39m+IA2VGsxvA8xlyc63TVorv+xm/M687563dM7Ggs7M +EO7Gps 7HqM68qOyUxc7GsN7GjM7Lru69Mu7dFe7Xey7c1u7QfS2FWwq/k5BVMwyGUlAw6QAvZpAq +BxAJ/g CdCN5aJQCpRwHU5ZoGKd3U6JFFTwLZpqEMSYDE8gDpGWDMSgbSQ5AnH+WJ3EDci1wA5DXs +n4Ts4g wW/bloXJWVVWfMjmGMXQa9GgC8PU/qOOcQfpcGnnjOCzpg4Kj4/JzBxN+g6+cG0VxgvaBj +wUDgXn Z2gI7E62gA5eCl3CVJqw3pD2144pugWWyc7gBpkkuI72DHpSD5mVDZlTH/WS3cdb3/Vej7 +ZTn/Vh b/WYXfVXb/aYTNlo//Vjf/Zffydq//ZaH/dwT/VyH/aJMwGCLBAzIALjxMAMEAH1FgMMMA +mVANPP neWdYAqgICJibtMDwQMNIAENA8gxEAKuwsRCHQ0un8AW+W2HVA7Kqt6DMQ29pgWwh7n5VR +LiUJdK VbggQ8HaKhDIcAy6cPtMNRgQGWLu3Q6LrgVGQAxZKIDd8AuzcGnK4AtT9HwwxguA/s40r0 +AMkbYL ssfpf9gOviClsKANCvUqpA4FX+jAw6D97mSwg/ENUgr86LD+7L/+6DhoTEzrtv6JtD3Zjf +3Z9i9M +F//y6v/qJ3/ACEgAACCAgEIREjwYACDBRkyVIhw4MGIDysmdNhwoUGJAi5O3AgxI0iODz +2O/Hhy 48eULFF2dBlSpcSKMmPCRElw4IASH04yUEJigEiCIRBBSEEmERlMnjo9hSqK0ygIEErMOG +jwYYAG PXwO5AGjgQmFBVWWBVAsGRQoyZy9+rWNLRRry9oVLFgOHDO+wABMPAdrrhYjy9Yhmziwnb +Z0guf2 Qvz3b4Bvz+aiG6bzlzoj1Tpz/hMmYBi7ubHg6RTGDdpcKNHCSUNWttsvbui0zJW1685fgQ +GMzIXl 7RvBbu1+s4WlTXIAYazffctWzHHbYd0GBgiQrRfrY2eRcWM9N9o4nQG0xZq7Tdo39u2//d +J2HIqR 4QRfhZt7TZdH/hT7/88KrQDLEuAss9AqUEAEDUxwQQcVHDAiAyM8sEEJBbTwQAg1vPDBDh +XMkEIO RQyRxAk9HDHFEj9MUUTJAJhhgSU8CmCGCTCgQkKGBughAQjKqKCSUkQhMqpOSLkkhRRgqI +Ikj2w8 gQesADBBBBgmwC7LxDqqkZpo2EqmFwC60aWa0tSJzawRruCLGb8OegUZatAr/u0acpzBhh +ptltkm mtvYsoacb14B8Bd00hsGOwGQKYY1I7xxhhw655vmFYqywcbMOu+khppe3kmnGmtY42WYVy +DyaJfp YiGnF2p2UYa1dHTxD5lR2RKum2Hwm+uZb/qTk7XMtgrgF8vCM2KcgV4RRpk/tXBmmhmmpV +aAV77h FQotdjlVoGVKW6YYbMQtRhtuhrtuuRdNEoldnXByl7et4KVJXozindekdy2yt916T8KXXn +7ZZRfg egvet6F87z1YYIMHdnjLhf2FWN9+90X44n4f5tIEGi4oUAAGeugB5IgoYiCGG5A6xRJUQk +mlyKc8 0aQqVRgYyOAFYAhhhod4/jgBAwZCLhC7DdViy5ZiPHpFnem2AI1pAfRqExj+CrzDGVvCg8 +KWzpL5 czByElUXu8oQpfEVXbaeyxZbwoZlF6MN+qUXTVlL5uvpkHtGHGF0Wuib1eayJopqJoUClm +Jiu665 ubz5hTlfvmRr218m0447szwSxhfE5zMGO2F0mc4cabQ0GrtXpJvLiDTvI9yWaqKZ3TNypA +GwP5DK 2h1wAXt/ccPgFQJ+eN8hBL745I8nXsHlhTc++uiLbx4t5a3/3fnsoX8ee++R3/57Ag+qoo +QXQzhh AqzSTRcECxxACgFKVrmkFKegKgUpCnBOV4APaCjBAE4yAALA4AsQ4pJA/mbgJbZEQx0L+Q +UvHGMN dIhDIa9YU5uaUb1fYAMat+JaeKrxjmNMpFCHYgtmypK1sHFNGXc5S7GwYY4QhjAW3lhHaM +5SIGMM roZaKFXODoIM59wlANPQxnSqYQxkeCRYcxmGRpzIDhBCoRraKJAwyMEayP2uaPDYIqB8EZ +oAfKuG bDGCL8qmrgTKJGcI45Ib4eiuNsZRInOkSR3pyB864tEiXPJjSWBix4nxMY+BdKMbDflHgg +2yj448 ZG8gychJagVGPDjgX2ZAAwwwgV94EcAMqPADIHggBVUBBChYsYlQkGITmECKARZgyQtMoA +c4U6AE unIBFAkIaW15IABO/rUOGrJFFsvIRlao1pcXnSQbxGBHNKoYHlugAxu/WqPZjgUFzFjkWs +v4XOLM QY3rZEkh0zgHOeRjQ3Oo4xeWkldihDGObexNPOGAx6mW4zi2PIc/vyDNXMihi1Nlbi7HsF +4AXrGO tcylGuQBwDcmlQxfoK530ygGCLcRG9idEQrQIEbuKAI9kpbUpCdFaUpVulKWttSlL4VpTE +v6gRAM DTsj84pZ/jiZAYAgBoggAwKq0gpXsAIVmThAVcggAbNUQZe4JIjHMLCEyZhzYybhhjJiEQ +tlaMOc AegFNGwRC1uYI6SEotoVrrAIGglxIL8YBy/SAY2tjrUa5mBHL/yW/jORRnCrsWAHHK6Gna +xtwwhu SwY0eDHGhITMaK+4AzfIYQ4jJGOssjPHM9RB0Kr2hzcAGN0uzHE4sl5jG8aIHKqGSNooOO +NyxBnG YbdajWLsBhnj+GssBKulti6DtdvgBmh9MdatvkOwRGsQRHSRjlhEwRbJQNcucus2t9UVHd +LI5mQS WDBFcReQ3/VuIcPbyPBKsrzz2u557wje7Zq3vRNTb3ffm975ije+8XWvfMdbX4QIpAoiYI +hAJHCC EXzgZAbrLAEpgAIHnLIMpyhDVSCAAAkMcAk9qDBvZoC+EVQBuUbbUACOoQ11OEMb66DRX7 +JhDHW0 2BkQFcAC3CEJ/hqPIGTvEqYT26GLEreYG8eYhqKax74jEsPFxLiDCRv0DWL0whnUkMZr8U +Kgdg1D Gtgo8YuHgRgQA64hfBTGMLhR4mKsYxq8k4wAhNHiEutiGv3phi96kWVjtIM5x2CzM+5wY9 +54BD4u HkdmpmFkFw/jbwntzy98kWVnmCoA0sizMyTtYmcYQ7D+wbRMNb1pTnfa058GdahLagIJgK +SAVGXf ZABnUSpYIAkIOCVSJHzAAAxgCSSgwu4+oAQl4AxE4cX03AxCKD5fkNgxzDRD4JmRkc4N0w +xCM47h 2RshEs9CumP2TDK07S+njiMjHam1vMyRor0Rgc1e9kIiJG4M/qWYJEKeSaYlmV39vhe/9c +Y3e89L XnvzV1H0va++AV5ffu/33usNeMEHvm+E9/u+uzNaDzqpkWdDJMBaMkEcECFUJVWlAVWogi +0XsK8B 0AAGM+rl93pHcQ6xm8rVS3OCRJrqN/K5aM1cCIhvriVrMy/exd5KebR9kngvR7UaM97VHB +ttLzd7 c0bnefMmxNfcpRiUzxZ11rW+da533esoNe9BTDAFGIAgKzsVYoKIhZ0PtDrCVcEACEowAl +yKRAQK mMAAqgri8ja23A4ZH7hPlmbtWgQk6Ro31gVP9LbGfMp+743Qqwr4w8Mbx+qS+rc9yzw0Z2 +lF1La4 arcUPKoT/g3HjY88Sf9O88IT3N/cTbjrxSvw/S7c4Q03uOzza/t79572v4c97nm/XVCe5A +NdYcDV P7uu0U+rRk7FQCAesAe8fwArNBJAWGjAAAESrcvCI0kzv18hCSE43NQmnpBXbfS9qzorAA +M8ghDk L7Wv+vvmDkl5iDLknNtEkgbiO2EzGM/CPqgTvPTTnZvjo9SxqPATqRP5ugiUwAmkwAo8N9 +5hgAaY gpEjMs47EBO6DqcigZMzgfUhiBmoggZQglkqnvZiNmFTshWhkLS7vItoNhrcvPgjvR0ypx +i6NnDT l6EjkB36ss6yPMBTCb7anLkZP+Urj+X7QeCpv3dLNgCh/giLo7eMQRgthIktZBh94UIwbL +iEsbiI KUAvtBg0TIg07EIz7Bc2FEM41Io2lMMyjEOOscMvXMMx3Jg+9EP2A4ALQD4HDImLq0HMmw +Huc7oP 6AEFoIIpGcIQO7z5a7fBo8TjoTqsczc2CjDGQ7wFVLJy6rJ2CTz/sJCg067ymzKnO8J4Sb +r3uzmY czb4ez+os6qmw54b+w+r08RM453k6Z0mHL9RBMaE+h3qEcZgLEbnUcZjNMYnfMb0c0ZmnE +Zp5J5m jEZodL9fzEZt7MZt9Eb9+yOBYAAMwAAeyCPCaxCNEMBUZMIZuIAeiAEJIAuLIsOOgDyd2x +2iw5Ae bD3E/sM8x7PCHfrA/uHHlXCsxAg9ECS9VoQ/iDs7xfNA+wuwX/O8VLQ6LBw35Do9VUs96F +m9LMTH ekug3StJkzDJgknJhltJlCTJQjpJlZTJ/nrJkZzJhWlJmiSYm9TJkfTJi+NJoPxJ98pJoU +TJq8GL DIwBdGw2WuS7wVLFpSsQBqABH8i7Trwx6vkeqwO9SBRCKNQpYiQKmhPFcno68cOQ+RvAjJ +w8qQNB hVG/zus/R6pIbpw8PqtIfsRCfzzGBNS8r2rAA+tFCLTAwjTMw0TMTbuOC8AAH0A192tBrg +RIiAsA BigBBaCBKjjANPOuF+SrGES/SJQ/87NBgMHBA2TH/p6rCGeztp+ztqOrRRaJxbaaF3D7ts +R7PyZs QcHztpZDoE1EwqaUt89iPSLDCPcaCaKTr+Rktpw7TotBTpsQiejECepcGOZ0zumETu3czu +fszjJ0 iO9UTjAUz/B8zvM0T+30zvMEz+xUzvXUTnCsgimwAAK4Pv9Ar9HjP995EgYYgRigARM4ER +ncxpWT wqILntTcyF5kvf7yRJwLzZ27RVK0RKV7TYX8yqIrJ89yxZWDRYqrvGR7ugaEyKmrxV1M0M +HkzWW0 Rrts0WT8xmE0y26EUWp00RbVxhrF0XBkwGoMR3CUUR8tUBb90SDV0SJlyKJBiB74gQ10K1 +PUwXYU /rK58U8YKAETYMCo6ztU+Tt1Gzy4JJYrdJdJnESZG84vbTwlDDcuTb0p1ceGPDpSLFHN40 +3w8bwB 5S2MXBdeLD281J030sohTB16a709vDiftJeTpEnsO1SXZFQldVRDhdRFTdQ7VNRKHUpJvV +RHjdQ8 3NT+wlRHDdVFPdRRLVVOXVRNnUlMXceIKCAfALDlU8jTkyKZK5oZAAF5VJ934chAhTnJvM +WzG7rr OMhyq7yxLJuydD+81EFLbM5OXJe29LK3VMj9W7/Io8sQCcBM7LNwI867ZEa/TDvAtMere8 +DNlJ7u YTqYS9fwWVfxYdeJ1Ep1jdfhuR54nUh5ddcQ/ttXD4TIfr1X7QFYgX2FgrUUSwEBDLCAW7 +KPg023 gv0LiF0WYSoLS6GCEzg5YZoIg+VYYeLYjoUng6VYkfXYg1Wohw3Zgx3ZlP1YiG3ZjzW2lV +XZkx1Z 1alYiSWel5XYkD3ZmfVYjaXZU4FZlE3ZZXFZ1dlZmG1Y3gHZhtWnlr3ZkF1ah31ZndDZq3 +VZp1XZ kqXYkt1akZValv3arPXargVb+9BasyXbpvXatXXbtzVbtYVbsZXbuC1blpVblT1brqVbvA +3btPVb wHVau2XbvS1cWNgqxE1cWZgFWrAABXAEI0BcWdgqWbBcyo0FxIWFyU3czc3czZ0FR5iCWn +iC/tyS hc1FXeLKrdX9K8yNhdPNLcWt3L/yXNlFXdpN3Nf1XNbVXd71XdftXNnNXdaVXcqFBdjtXN +V93coF 3ty1XM1dXeTlXemFXuj93Nll3tW93c7N3OFVXNeV3ui1Xs+FXc79XcyFBVtI3/VV3/Zl3+ +idXtZt Xuw13fqV3/vFX/ud3+WF3/z1X/q13wDm3/4V4NbF3/2dXwQmYAP+3wF2YAYuYADGXgVeYA +a+hUmY hAtmgwzO4FsogB9QgDSghAu+4A6eBDa4hRRWYQzuYBK+BRwYgRO4hSbABRRmAxS+hT1Y4V +u44RP2 4Q3eYB8u4QzGYSK+YRLeYBXm4STeYR7m/mAlXmIoTmEMBuIfBuIjPuESlmIMnmIUFmIW5m +EVZmIN dmEcXuIqDuMWvuE1XuEs/mEiFmMpVmIvVmMsVuIsJmE1JmM2HmIWxmMONmM95uMUxuIOtu +EwPuRE 9uEvXuQkbmQOfmQNpmJIduRItmRLDuJMpuRJlmRG1uRO/uRLDuVQ9mROFmVT1uRS/mJSTu +VRNmVM fuVKdmVVduRW3uRVjmVTlrBdljAVAANJWARVyIUaiLWOk7BY42UJO4BTAIMCmIQkEIJTku +ZkRgpk puZrrgprPmZk1uZsxuZqnuZwxmZpNmZjPmZZ22VzpuZuRmdZUxJr7mZuLudz5uVp9mZ2/j +7nd1bn a7bnbcbndebnjgtnbRbngm7nb0bohFbohWbohnboh4boiJboiaboirZoes7mZd6DH7CARM +AFIahn eOZlBDADA3iEAgADD6iBdD5oljZod07nB/BnmV7neG5ngoZpl85pjE5mkebpas5nnZZneC +Zqni7m m/bmdC5mc/7nfq7nbObmgAbonRZndP5nfr7npxZpnN7qrNbpoP7qe3bqnSbrsvbqs0Zrex +5rp17r gybnlmZruEbqrg7rnG5rugZrsZZrvD7rqEbmAyCDR7CAjl4wISDmqpDpB7DmMvAAMgiEk7 +6FeDiF A3jnXVZsfYZon05mxb5ppk7qfWbp/oiu7NC+6NI27dNG7dR26Kse54Vm7Z527dZWaK72Z4 +b2a9iW bZhW69cG5222asSeaoBearRGaIN+adiuagiQ6TJohVuwAI5uBgoAgiaogBtQgTLA7huoAD +JAAQPY gwIogEfIhRtgBt4WanceaM3+bNxOarOW6qr2adAGbdWm7/q27/vGanIu6MrWb/3Wbf7u7f +Qe6ABH b4Em8P7OasxOcPlmb+T+6Z4+6rGebXbW7LaGcH2+7QcfZ/PO57em5sRW7gcQgkAogMEebG +feAzDA BVwAg1uQhwiwAFUogFvIBTNYaa2uadHO8fYm7Zo27tYe7X2WcPwm8iI38iNH8iK//moK7/ +BTYouD ngcooAcIiHJ6mGceP2u2WHJwnm8cV+pufvIG32V6gAJ7gAAyN3Mh1+01D/PgbumqOIAmQI +STTgSO /gGOHmxVSARnnm4hSCrO5uvzVmu3Hmp8ZvCoPm9Bf2qs1vAkd/RHd3S2jmv1NvC8Bmq6Lm +q+rnS9 rvCQtvTkToE2r+YodwIIsAcoKHW37mtvDvNy9uz8ZvRXl7Ann+8IdwIomIcUuPVcX++F1n +Kg9nJe pumqMIN4AAIKiIAIeARll+54MANmMGp1xnAO73FD7+fR/m1gd/PVVnNI9/Zv/3YmX3QsJ3 +dx3/Zy P/cHp4dSjwcncIJrr4d152V3/m93CGh1CTv1KfcCJ4gHfXACL5Cwdk/1qth3fYDpdS/meq +D3XXb3 gKcHL0iBdtcHL/CCeKAHg1/3eNBmfwd4f48He4cCr1YSf5/yWNt1CJD4XW73kpc1hNeHi5 +fmW0f1 j09wpB723g525dbmm5/tNTdwbJfrN+908/75bP/seD5qcFf6pVdt/xbrCHd1v55nbHf6/v +bsIMf5 Al9vrJdmtrgH1kj1iOcC1riHWYcCfAh5Wj9mUqdyVJf5auYHKMgHpHCCfJgLfBj4No/7ub +CHeqiK Nj/5W7f7eRB8tGeLd68KJzD8Mj/1d2/zadaHxcf7xMd1CDh5lB/7ueAHs8/8/soH+cPvct +0GcTEf dweHcB0/fXJ/8y/3eSB39ZzXdqaX/dkvbWpvdNIv7thm9G+ei3yYB7uHAoOHALTHB3uIci +go+1CX +3kA+WRufFOXcgiw+1S3+32AAH1gCy6Yh8zXBycP+bbH9ePnAqTQ8lMK/OzfB5kvfsMneL +bw/c4v dVFHinhw/99nCysnc+ZH81NCe98/dSgACH4pIEApOI9LQScp5hnUB+Hhw4EQJUKsCPHBRA +gDU6R4 gDGixo0VRVoEKZIkyYgUOXIsqbJkSoomNVo8SXOkS5AZc/Ls6fMn0KBChxItavSozpcyWY +5cmTLk 0qdMYUptObGqxKgkDbZk/sgFwj4oXOJpjFewHkEoXjgWfAmBoUK4KfhBmQdhUUGyCO/RDP +s1bQov UPDV49gEHxR6aSE6qZuicb6HjaGQTZEv8ULHkhMCtsjQXsR79vhBaDzvcV2wYslCMEs57b +6H91J3 bmn7Zk2cVn1qbcpSptClOW+rXKlzN0ykU3cibe78OfTo0o8CT8ocN87cybVXx279unacBZ +vQrNfW nth56uchdrL4YUHj6N3LdQ2Brt2069XHX4weSUVh2dWWRvSkZppGCGoEV1pNUISQe/1lNd +4B2CGI oFf2rHeZYhIqSGBuxvUWYlPhBWXTRichB1xW2yX1VE+3oZQdcm61OB2O/jnquKOOy0E1on +W/+ebb iFoB+SORK9oGInxQQIBYQVFyRmAKIErEIIMQIITEZfoEJiWYTb4FhXsQHIDagE4OZBqaAx +mYHwTz vccSevRUqeZNBVVY0oWpXQbmlE5udlptNdKUonffmUgiVdS5tFt33V2FYqIZTVUjjIbyuC +mnnXo6 3KMuVlpdpDyVuqii4MHWl1hjcuEErPQ4QU9hVDI5kFzzrTkYFJE1eY+ssSq0mF8TIUTEnV +48JGBp tL0JEUN2IhTbQ00EutO0EHlBj2LPPuuVrOE6gZaHtDGJnaTZHYqkSVJVuq5N6141qaSGxk +Qii/Ci ep1wn/r7L8DR2cui/lONllgTwSEZPC/Cw3UXJT9O0AVFbIJBcc+sCOHTpETxySRnlhD8Gd +tAs+Gz jxNEXMbXYk1c9qoTCOVDHkKvhuWYgmw+JOfNEe8DpULnQmAgFD4XJBCbCFocccyDiTnoQB +LuK5ym ovr4W9W8qduwU8bdlHW6P/n4bsBlm302qDtRvfWNM6mtW6joyi132/KmBSVXHE0W5cxPz0 +kTlmRC NNtrgINpV9RQVBgP3oOxZrGUpxkI2tCajVkmenxD2JnClUc+aLP5Ec13ExWWm9+tndsNVX +JR7Ruj vjKuyJ3Vlp5I6dwDH0c22r37vmO/a/MbZO5wbyf87rbTDVVb+6in/mxF8Tg/D7UPqbeRet +g579D2 LTVhzz4p6XPP8xUxSYSG1T/kBfn7eAE+BPrYg8RA+lDf1zzQQ/C+PfdIb4+y5gEa4cSDH+ +Vb3/28 QD2JSE896sve+sA3EA0hSkQKO1XaQhWpsMFuYRh8lIxWFyKrYMo7WfsdClOYow8ST1SpIt +ULXZiq GfbHRRs5wJ4U1bWk5FB58qrZCMemQYRxcGtDUhG+zBS74IjNdkJq1/KGGK+q0MthrQNPvJ +xoQlOx TYVe/KLACgYp1UEKUVBUiojaZps0zmuMa1Tendw2kx0yzC3Y2dO9TJiQM3ltiHEbIwj/iJ +spzpCL lIIR8U7ILyU9/pEo/WoUHb9mRxkGp4QulFUkmyhHVakLd7QCynKIUzdOuo2EvEviIYfCwl +HVToar HKUO4yZLTsKQlpSs5Stnmahc2nJqx9MlK33IOkZN8pRXRGKKHpm8Lm4yRrgLHqlupKJaGt +F4pzQl IsX2QQtW80ehnBsoi4hKu/ESVcpUFS/L2c1YurKb1KwmLHepy3ei0523/GU7XTSLffKzn/ +78J0AD KtCBErSgBj0oQhOq0IUytKEOfShEIyrRiVK0oha9KEYzqtGN7hMew/joMDzqUZCCdKQkPS +lKSxrS lMLDpCl96UddSlKZwvSlLRXpSnFq048ew6Q0XelJf6pSlPo0/qQtrWlQjwrUpQZVpUKd6U +2f2lSo ShWpJT0qTpXq1JxyVadI/SlNwUpUq4aVpWOFaVnPOtOYqnWtU61pWt861J3Kda5sretd3Q +rXtto1 r2bFK1OHAYDBAkAAhSUsYg2L2MUyNrGHBUAAIhtZAcygsZZdrGIZm1nJElayAYDsZz9LWM +pW1rCm fWxjFUvZ0aZWs5dFrWMHa9gZ0PaynJ3sAAbwWQGINrOYZe1mPetZ0ta2s6EV7Wg9W9jivr +a5hc1t AHjLW+iCNrrWle51D+vbxr4Ctqz9rWvB+9rtele24bUseclbXtWeN7buvWx6Wyte+b73u/ +a9L37L 217z7le/mvlVr3ojO9jd8lbAiEXuZDlb3duCtrHCHe5wCyzgB0/YwNU98IAljGDIcni3FA +6tcT0s 3MKOWLICOLFyKXxhBH/4wcYl8XFdzODbmljBIRYthCts48meuMfC1bCLB9zhDCvXwUMOMo +ZVLOMl p7jFOqZxiaP84QU/Gco0pnKMm6zlFmMZy1muspStLOYuKznMU2bylsGc5i+DOSAAOw== EOD return ($binary_data); } # =================== # rj_logo_small() # =================== # Arguments : None # Returns : Base64 encoded GIF image # Description : The RiotJournal small logo # sub rj_logo_small { my $binary_data = <<EOD; R0lGODlhPQFWAOcAAAIyZgY6bvr6/sre7jZqmramkoqy1l5+ll6SwpqSihJGdnam0t7q8v +LKnpa6 3kZSdmqaujZiilpuenqCgra+xnKKolZqet6+mlaKuprK4h5Odury9sLGygI2Zn6iwnpifp +6+3oqa rnKiws7e7ipOchI2ZqbG4maayq7K4maaztLi8laGqo6ium5efrrS6h4+bvLy8m6ezlZ6mk +Z2nm52 fkZ6qmKSstbi8qLC4oau1sbS3i5agmqazhY6ai5Gbtre3o6+2kJymkp+rnaSrsLW6lJWdv +b6/qay uopqgiZajhZKfj5adn6uys7OzpK22pbG3jZWchI+crLK5n6q1uLq7sba7mqGnr7K2v7+/j +Zejsqy lu72+i5SfkZqjqq+ziJWhg5CcjpihmqezluLrk5+ohpGdoq61qqejgo2auLm7n6Spjpuni +ZShuLu 9rLO5lqKvoa20hpOgmKSxvr+/lZ2mi5ikmKWxk6CspKisvb2+q7G4jZmmpKOhtrm8go6bp +q+3u7u 7k5metbm8lqOwuzGnC5ekmaWuh5Ogh5Kdr7W6gI2ajJmjrbO5kpymsrW4jJaimaOsubu9p +pyhgo+ cjpmljpehq62vvbOniZWiqrG4lKGto6y2kp6oiJGbpq63sKuknai0iZCbqKqtl6Osipekj +5yogY2 aoKu1oKq1kJ2pqbC4lKCpvL2+jpqnh5SghZCcuLq9j5ulnqqxkZmijZafUJypipWgmaWyq +q6znKi zo622k5+sr7S6l6OwlKCtmKWykZ2qjJmmsrKylaGuo6muhJCdury+hpKflJ+st7m6iZOgt +a6lq7K 5kJuonKi0l5ael6Sxnqm0kp6roqy2ubCmj5uoj5ypiJShg4+cpLC2oKGhipajkJminKWuj +puoubq 7lKGujZKclaKvnKOqi5Wgkp+skJ2qkZ6riJOdho+ciJGdjJilu7y+sra7t7q9rrO5mJyfo +Jmgk6C tuLCmg46bipWinZifp6Wim6evjZqniJOghpCbu7KnkZyphY+agAAACH5BAEKAP8ALAAAAA +A9AVYA AAj+AFMIHEiwoMGDCBMqXMiwocOHECNKnEixosWLGCOe2Mixo8ePIEOKHEmypMmTKFOqXM +mypcuX MGOqvEWzps2bOHPq3Mmzp8+fQIMKHUq0qNGjSJMqFZqxqdOnUKNKnUq1qsUTVrNq3cq1q9 +evB2+l OEnTjlk7t2SqXcu2rdu3cOPGHfvTjpBCh0wFiNPqzdK/gAMLHky4sGHCKcQuHGQtzqQAih +QBUBSA FDiwmDNr3sxZIlasCcslASMZgOnJACYF69W5tevXsKuKFRvSTqlDAQCke2Av3oNQp4tZS3 +sSAQZf u6QBWw6sxi5fGOQQl0u9uvXr2K2PpZuzmpIO9B7+IJHUooiPdB0AdOgQR1pPOW98KS/lbQ +2BYPiD EVjjrZTzN78cJuCABBZo4ICJJXjQOd+hUYQkkjyTjinYdGHFAegAEEAS4hz0yyDglGOON/ +jlw581 payxRiv47YGfN+bsMkhsNNZo41SfbUfQCb1cY4qDkiARTgdRcDPEFZH8UMExqQWDAEEfgg +NMK3u0 Yk0qwEhTjjzDiOOLPOXUYI41+bTYijni/HLjmmy22dBsCXr0izW5hSNJPKGgUQYd72DhJw +wUdJEb GLWkZUcvvpiTjzfW1CCPODMKlCNWt/SCwTnV5FPmHqVoYkd2oIYq6qjZbfeZTSlA02A8H7 +yABjr+ B3AACBYCfKMDHmEUM5kS4ECjSSqtrGHNHYOoqWNayCqWVgqD1ODNfcF4M8yB1FZr7bUGJg +gnQbdo IlkoH/iABhtqcNBEEzA4YoUCAKDhR26KHJJpPjW8YYekoAX4y7773vILpSf4C441exTsTa +RuJqyw jZPqONYvQqT3GxqvWMGBME1wUMEkAOhVyCpB+NFxHKkUm9hs/tohDphj1lLDlghvN4g5wb +iYysI4 59wZnHBydIsdNazXAxoBHECBMMIcQY7I9ATBBBBPnDJDB5Gdo2a+0MhTSysEFOwitFV6Iw +0CKA9T Ss35TEvq2my37fZIpppKk0C3DJKbabTggbT+KLSY0oECEJjxRAaEL0CKacVgkJavqayhqT +XnlKOJ JsjVQGaJnV79Czhr6FdKgNiGLvropOuk7ekDiWUHAQGkR8cRwoiyBD0dKFEMPtkQTng2EL +DbASZg plJNLdJoMkgv0NjB7y/QDILBLmcH04oQT96CwDklsqbz9txn1fD3AfeCSW5chHDEAY+Rcg +dfTOhO OBArtO5HEmucI88gCPwbsGIBj3UCAm+Qxn3ysQs13eINnQuGPIylECe4oB0QjGAEpeCJaB +xkGBF4 hAb7oZAY5AAEzJCgC1QxDWckBAQSTKEETZAQJ0SQCDnggUJygANmECGCvMDBJnKhEB7k4I +b+EHTC QR4IQRNYUCAxqIIKIVgFF5hgCjIkSC4cIMFEoCIhf0gEBF0gxB6eIoKMWABDcADGK4bldD +1bFkfu 8B16zOIAJOiAKzBwghnEgQxwcF8GzBCL9UxiD+KgDWjoFqfEnIB58mCRNQKZAgRIo2bA+B +RJmMEO P1nykltgABE8sYCOpGAXoSiBKLMQkhg4gREqaMMGLsmKNqjgHQ7IBUgScclaXrIdImGGJY +3gCTGA JAa6kMIIIsGOOewyEirghRNywQOQiOEPArCkCUCySj+14xQciYEtL2mESLQDBVDkiDP0cE +kBoAAU IXkHDPwUiWmOZAFSsCQrnBADkhDBkpH+0EVI4tawk/nvBLHQVRReoQgF1MAQJ7DDIq5hAy +C47wlM +IIpFOGKOxhrOnHb1iHLkY89CAEa/hrGi0DKkxOgwBjbvOQcYKEHUNTkk/sQZQkekZNTZE +IQrEip n/KQDClM4yYpoKVOLdmOnaBglw7gwU14EA1VCMIIQ8VCHxgRw5ucgAd/gKqfVJETlFoTFX +OLgTGj yg4XoEKpKViALi/JACcoFagu2AI7ubqTE+SAAZeUgkt3woMq4HMTOUEj6pRVEwTUARvr8Q +MpBDmG L0QAH4NznyGUMBlSKE6jyhrIRmiCgFRE6zKN7NwetKcQZlQzqm3AgRjoJo0XyPQRBsn+AS +8qGVU/ GWEE9EwdL2qLhREkJBPydMBqByIGVLwjp7zt7R9Awa0YeEKrWMjEQU47ghxIKhfJNQIjLH +gLUBy1 lok4IpQYgVxjSDchMcBBHtg6DYWc4J5+akMXC/I9fn6mIxjAhN+wEYyEEkcI14gFEyKrO0 +7oahL5 gAal+CdIBZ3MF8+6g1ig4dk9QEMhNKGkPCPBYWJCVwAqmIJAeOALLpRBHeqgREGmUAXkyt +MYHN4A K8b61yiegBkdNkY0/SQAGEcCFi44CFbWigVeDlcgU3ABdG3r40iwYseWbIMnYqDZZ0L5vA +XxKhYG YN3EaHOXTY7EkiPxB1+CIp61hMX+H6JIEPL6aQMsTMgpBmBLHFAZIX3F53xTJ9ieSUpHGx +GCK9Tj ig7hKwhs4IRD3QeEReRGAalgoJ+XRRuBIKAWwbDaLeQgDRchAG4pQEE1WVEFXZhaFyYYAW +2xEAkc jFgOyIi1NN7wz1xUYb1+msMW3MGIP5jaE1K4wRZoPAcVRKOZKZjCqUGA1/iawNROQAVIEg +PcnSaV I9FQMisFwQsQmBoEblDBsC/JZWTfggfPleZHbnHaa/bPGTQegbd/zQu5WpIRzujud2tJhG +h48hbv sHc7RYJuLVuyuiFJC3yx0AZ9eoSf/JzbfQOW0FKAAQCKDRDFFcqGMRCYcLJIgin+AHAIX2 +wkowoa pFikQS8F/6Ic+OlFXYdMW3ZIgW4byQURtCqAKtDtFtDohRyGXhMe6OHDfQBBvjWbghg4QA +U0xgK+ Ty6pKajAkjfo8v5wMhYi8/KtPEDBqleqClnuyJSCiLoLzH6CGEDTknR9aQq03A4ztv2SRB +AxbXjg AOiOYBonOPM2t6CHt4LmuHPVyQmyvU0jgOBkqEpBnv30DcCiimeC/fnlU7WH9PihFIZMyx +iSgAkP 6DEDNojDZL5w4f45eLPEGUsizfEkO4CjZhdWyC9E7actuGFuNDmBJ2BhSVjMDZQyzcKIpx +D16lJa jUqdwsL9tIm3zi0aN7BkH3L+sKyE3KLaWGBFmQXihD5csg8LsD5tahKDdtB4A1wdC7qhi2 +VJsfvg OdisMy7Ji2hU+qrEx05/kALOsG/hN1YDcETLwgj2Zl4IcQubcHV+4g6X9A7MRV8KF2V7Bn +HggxCg IQ9fIBlgkCZxIgTbEAF59FBkcHHYUAf25z8OFnxjAQ7VQHuJgQH4kXsGMTcpoGFYwA5uwC +0pkAPZ F18DsQvq8FpIpArxtgli0H2Uth050A6XFF58ZnVYx32KQV+fQWSsIFwbgQL2xmpTMEj+NB +A8EANp Z0lVYEEnYGWWVH8DoWVcRhtf5idEYEaCVAU7pmaBh2Z4GAl+wgpB9meIhwX+cIYQMQCIrI +ADFOgn DOAAeOZX7LRnmHeJfzZIoOEv8lAH7AIAcTAIC2YbrjADueM+TLAGkKEAwFBIUahytzAw5y +BzdqAJ NfNp0/YwvPeDUkB1ApEDEogFsMBa6ZB8Y5ELgmBJ7KBa/LNgdPGGDqBlkZB/J7d4RYgFgq +B1H6Et 4Pd1Ted+fmJebOaLOOdDgugnfeAEaTF/6uYzAdNueghvlsQLZTgbV1UFWiVlBGiATjAAY9 +UHm+BP DMhO7vRwOTACypgLOIBcAiAF9eSOGRhfDleNHMiBm9U/vzAM5QAO5sAxAVAIT0Jxg7AG6D +AKpycC daAeSkBHqKNykiIPa1D+DmoiB7sQDNUgHTjhiz64BVIQe1iBA15lBAMgFjyADEkoSrCVAt +EAXVxG SDtCSLcQDZSIBXPgVs+IhX4iCNhkOl24S57AAz5kfllZhlQ3cfgSAyqwY+yAAmMBh1sldw +KhZSOA TWNxh1jQf9uRFjFwjti4CX94STngBI9oBLxgiMgVCXFXE1iRCUE5AifgDKumApa3hZI3lZ +X3Uph4 iUBFG4MgD5rwIfkgGZNgDa23EcNACmwgC3oEBKmnIay3hbBHkSmQSEKwEb+APeaggzt4SL +sIhCcT MBGoVezACCMmDcWIlLdgSpfUUicng5RCSAp5SZngUgOBfVmIYdQmT2X+dgKqcI5GQATqt3 +7BZxOM mWu8sI7p5idYRnH3Z03clxj7Z0lWlCMLwAjQlXf7eEnTEAP2SSuwIERiMZBY4IAFcQu5kA +hjxQ6e IBYjoJbriSzvpYFMV1/9RF8pQJPyIAcp8AsY4ArpoQRC8CmGcgfoQAn4kILZwASjoHoaYl +HP+XOn cgLl4A3ykBgUFgwyuYOU6YN5MAJ/8AeegANucAO4JlUBKXnScJQloHygoAqX5AmGhHOFZC +rTcElu 4H/+g5XY2GVcaCpeeG1SYG+sEITcQpkF4QB86XNv+HbqeRB0dwqSYpcqkAmeAAI1VAVjyA +6qUE+C Z0kxZABFKJT1lAL+h5iIBuEJzTYHfYBOKWAC9iYA7SBiBTF5rNZFmZl5migQHHo/m/UGwc +AxAJAE 4DAdneUHOzADK7ACIBMBtAAFimAKrYAWzwmLGzomjIQA3rAHirONz7h71aRrbRCsGwBlA8 +oMT0gT yOBayJkL4IcFkogv/kRxC5YDecVc/WOdfnID2LSNPNONvZQCbkBbG6AHoEGOUeo/utAGbI +ie0OVO ENqeW/aetyCPthUJbQALkUCsc0AEdFmA+tl2jjqIX5kCAjpwniQGiYBrrJAIhjQFAchwOM +CeFLdw DUeRFGpf7Mks5zAMAbKhu8AiHhkMg0AcdTMJnQAFULAEKksDCaD+DepRCCD1Z04ZMG9APA +p2QB1F UjZhrj44VMZAj6mDDGVgjOl1SSDwhBbaklVqSVcqSFqadYE1KV53bWLXe4xQlv8ErTThBH +yJS2sK ZfGXZUSVf3XJW3kgmc30l346FlOYazcACjxwiIi5s7eACmKJBVvgAtOQAzlgAA+bB0RgQg +RBqZfZ Z4a7ebcgD/KQexxaCiGaBLlRDNXwL2mxohZQAJj7CfNwCYRwBqtXmsGXIwJxB6UwDFjxC7 +ZoDfcS FhTnqzqla30gBZKaGDzQWq+VnE5Qrb+Zl4SEFc4lnTyUINgqVVxaoNwoT710CyBwjj1nfd +yRLDyo Cl41B4nArnH++IzIcloDcAqzEZ861U1VkANigFb+akk/dVU44J1HK6AESkgnZUkCAAuCIA +h9cAPG QGPb964RGl9CdLH1tSM8Ig0juxHNUgpycAJvEAet0x4c0QtxIAEX0ACXMMETXAC5oQRkkz +pqlBa/ UAvmsKvQwHIFVKBm2oOrJgBR5w6y64vImoQAsKRIRmOCUH1RWmlxw2LwG0P39bTFm4leil +TjawCP iAXu0F5nKGRi0A47hphtyabR5aZEBadlC7/Emge8IL7VqLZ+0l4BMwVCxXBJhlyGGqcjEH +VDxQ7M MKlTGQnqeLiZJ7MpIAQYcC8BA2HgwBHS8ImY0CEnMAh+MAH+1HAJDSDBE6wFcYQNM2LDZ4 +gBpeAL nOkNCcarEuu6PzgACHlv9Sh3tRtKSJkYoHC3WIACZidxsUcTPKALY8gA+Qcnw5uN64ZG4M +cKX/kL znDJRVYFyCaE+OJDpyUIumC9fmIC+guvzgefNDYAAwBdbaB3wJeffipIm7Bq70AEAleQYw +GUyQWJ 6AShFKsLFUmhF7k4uSmStVALHZtQBDAJHfCRcmAXpnAGhEDBg9wAWgAFpiGKLskdHiyKNK +EJnJKT ZjgQPsgO76ALLsYOIHBnGiwNnDxTSIQDbPWsx6Igt0CEl8QI1pqlwZiNQPU9XldmacEMWr +YBTmCW HGFIC9D+BzQWuE0MZW6g0HM4tp9hl4ngCXRmW+1wZ/fVp1sMGjzArJa0BTdwmHRFcfiYzY +j4eGho mW18qZqpLeXAsZq6C4sErYNACo+2BoOwA52wuRNMyJewDBKQHo4cug4jDtYADsYyCOewBr +7wgJO8 ixvw0s0aiXwmQ8hwnDAsFrmgZQKQdIOaWRuhC8koT1LMyteYdQPhDNPgBI5NT2KxiMElQ3 +VrywIQ CSBgfVt3C2IQDclAYwzgCf3TdtDVDqscMDwAAi7mAks3r/yHCp7Al0aQCbIEJ+XrJ9wnrT +kg25ZE oGIxBXx52Tcw3MQ93GMIYhLbzd9ckX8GNBnMLFgiogT+4QtfoB4K4InaEM8U/NXzMAGmUQ +MGtMEb YQ20tyziwCgaWqYIMdCMwFSFTZV56JS3YJRKCBpZBb+RQASb4AzlmgKokAl9sGRSwN+mcg +I8LCnR 4AaRAGPGYGcVfdPhZwBxigPqakkbUAUOILgC0dk4cANQlgcuIEbSKttAmwLFJdvSNdNVOA +WgwAzQ xQ5Y7D88jQU/RRDOANG2ZKgbkQkuJggOMAVAHuRTEA2ZwJeRMLuU+p9Ojama+gbyQBsv1y +kaHDB2 YA6q5wdg0AlaMM/yfAnUkADr4Q0KpsEbWg7VQIIXugveUA6SrL+UbHMm7gRaNqYaThO228 +m0W4Au Fn7+sDACjKAHKJAJRCAIw2pJczACUIR5rUyN80pkrMYLjDACLhYJzJQgoKAHBscKfc4IKI +ACUpAI fXC/t6TDcKJtgzgCUoACLtBs6AigxjyPUyAGOTCVWBBitm2A1iWtixeM+DRNkhcDDLBjAs +AIubA8 /cIDOMxjLtBMERl+RMAMegDtzJAJOCBiFAqhcjCLNTEz5iBzfCYWI4kN6uEPNHAPF8APg0 +zBhFAA prEOophyB+QNvkC5JyAO1VAKI7uzAU0QO8kMROkG0PUNDi55862kNAV59TmGQb3g7ECstI +Jw9qWl HC1/TqDwW7AFUGYELtCcWBENUmBwfsIODL9kRab+Arqg0w1b4bkGA8aw50bADCak4vPob8 +51WgLg Am6oxTSueU3nCXvOaqqwEaYEXe7gANu4ETzg4vgkuJSqa8awAU8PYyPgAJeqLdBQAzriC9 +WQo/WF gxyzzlAADwmgBdpdyOqRBPicl9dTA2ghEHbhDXcA124u10GYFtHQDlo1BzfgzcWprDAss9 +GgB21g xillDIkAeFApvIldvPXp8Gx1RZS5eHowxFHFCrywCTHAgz+nCiq/TZBKtt1bhVd0AswKXc +agCkt3 21iQ23zmDP54SeZFEzFgy3cpXpoVfAZgy3MwZc2eUpEApf67oeIQ9w9zDqVLcULoL/58Dc +WQHgD+ QAISwAefcAHU8Aku2wGH4Bc50gsiws+HNDDdTsKlVXNk2kybMMSAy1wtXN9OCQogMAAbQP +hBfQN6 MAX/V+A8jPzITgQ/X2TugAIAcSLFCYICU6TI9WdEJCwNHT5k5c5NNB4HT9wiaDGGCUFGHj +rcUMUA D4ElYzxMNOVWilvRBjwc4YQkKCkPpx3ESZDHJnYPjZk4OIWVQ3aeChbEeTAXszkOBTlLwa +PKR6pt QKzEylIrTgS+BmE8McicOQQHb2HEqJWgHQxrvigIAADAvkB87lkwJVcBOLO3oIGzNujiQT +nnSskb eNQi2ouNb+FgwIoVg0xIT0hps4XVFndXedz+QqauxIsXEVZmPJ0imol2fdpI1mzM3QApum +IIPKs1 a7R2klkNOIUV7AJGgiJt2cKuTTtPMdCyPJuRxwIcI9xFYqd5i2wVbmQmHrxy4MoYTly4Mw +YbliBV 0QhmveUsPSsYjKLhFJPjuGRjzBakcMYE31gJ7qjTTiBiPhgEwSGFGDzRTLJEgjurQvEGc6 +IP+pKb YiAXBkQOOdhucGAgE0saDyNodrkII3CqkaYss7YarKBb7BAiCSUm6QAAP/zxQy4AAgBHPD +vkMafI 8X7xBUZoLAQrKSkHmiYTNxjJZJPUTgBFFTe+ZAQolt5ohhIzpalwsahWcgYVJ678Eodpcn +n+L6cT E8sFBDBBWMCgNFOYAgQpGEHBgftwEg/RwQbKwQE9rgwzB2eQsjMt3U6IIQccrmRmk1ySQv +GWGL68 0olcshLDEykgVQUVTKchlZEF/mxRNSuvNCEHhPQEM4cYpqxzpWg8gZSRHEhyIFZGlgWTEV +WC0y1a nOQAx6AUhPAGMRRLMojbozQJ5pgAegSAXADuGOhIYDSxNgUEUklFsClZcqzeaFFL67M/ce +JB30RN zGq8ihQNGLVo/93KopxWGhgs3EDNbcbU6A0Yun8j7svPjBqTdqtbBsYtrQpRazepggc2K2 +REUTZ5 S0XDQ1RasFzeNqOcBDKnlGEslZjiFI/+kmOGL+LqgFxroIGmHHPeWOwEO87JFmGM57W2ZJ +4RTfTj KXmu2uKD1boTtxbFi87ES20uWzE1zZ5RYowb63ZRrxO+MLGCGbPTZIvLzlvhgvva8qh2H5 +YyZPig Y/vwgGfGTY5avMEAOo5TE248wREAN0i5SsGgBmkEey6FXVopxw7wbK6XseiEi5JevROOGW +C7Oe66 69wOh53sAwEmO2XWUa8RbRQtCnbt4f0WuWO2Cwdv6pfrLL7biXmHUs3dW5+35Y3DNrtyd6 +0xZ5Ce x1M4MTV/+eWEX/4qxRVFMCEdgV/UukUcb84ZxA4obc6+74mxxxrdIrYo3VGqeXaq2en+zD +c3jW1N SqEbm9m8BSrXUSxuckMgvcT2nJkhDHiGW8ziyDdBhBEvKy16mMNOp7av4c6Dg7BGLZiWwO +UFsIEn +AswsiWH+RlkfdZIxRuuRrDU+c58fLNQ9qaWwrURjEZMrFjK+oZBFf6rVuOzXMX2hTis+a +l5xZNi olRmMZKVDIvmI2DWaoi44yXvQi4cIfeGx62D9AJ88uoZY1DYxDul4Bf5o5G7zNEKTczvgS +W8Wd+k eMjYPbBryFMc2LZFsYilTWKUSpsBF9UuNe4LbibEWu/axq27cax8MdsfBYknLT/lxlsGlB +3z0gSf 6UXyhJPDyCBKUQpx4I1yXOQaCKH+J7Zf9MIcawCHHFYovdSh8HcNjF0Jqzi7tNSuUpHMXV +/QCEwj jixuB7rhzWBGvj4iD4qqBFbzEOmw4J1QTbaD0hvVIjYzzis6k8Sn91YCwzX0kkZ1W2B4eD +bLsp1l EOfIR+nGlqZ6pnNGGoPl7UK5tgLyz0YZpKNi0DbARb7OiSma2AQrpTFLXZR59LQgVt7jwQ +syUKL0 O5HBgAWzPap0Y4Ljny2Vp7AT9KIU+dBWQO35v+MNLiw1aMU5oAE7vzWTbMGTHOBU2DIHyt +Nk4zQY 7hQ1xYshxYoYq5hjBHgxsnrRRmB0nRiBeU8N2hN2G9NdIxnZRiaST4Q1kmNMF3j+EGjUIh +hCmB98 4MY3DBZ1Rn+UxhrOIYd1InKVp+xoANuWuEdSr4V5RUslq3nJjb5yYZDt5NtaVyfATbZuYL +QXZHVj ocEl8m9ewyn/YknBWa42cZcVrOTQYo49yPBhKXyqa10J1VsMQhreqIEcbqo2pzqTjNBsW0 +nf41Vq GhaeX8smG0MlSg6y1W7gkWLVUHta2rrxrdnzlvNSdtHovfOa1bPrEWXbP7biM2yVRBS28s +EicsbN egO9XXR+gYFjlsOQC3Vl/9BJ1IiGjozkrKh45YZPz24UoENkKgQZylPZis13FyxhqEjGwZ +UWrqW0 eulpAkc4E5+woBp8JQt1qtX+fvUrKinAQCmCEb6D2NjG/KrICWwskIqwrCKaqEa2omKQGj +c5Kk12 8sBqfOMpP7nIQjaylItMZS1D2cdednKPtzzlIPt4yUJOypSrBuYhSxnLWybylbG8ZCjfGM +hajrOc 1exlIIMqymImiZWrDOgei5nLYLYImxVtBMkwutF5SEY3gtEKD0SC0XmQTB40jWlWMNoIl2 +70pzv9 6WR4oBaQeMeA8vBpVkdoQK/2DadZseoBOTrTvhG1rVmN60bPWtSw9jWwhS3rUNu617C2Na +aNQOtQ u3rWmSZ2rzXt6VczG9jWpja1R31raL9616Hu9LEdLWtrV1vboqY1qIfNaSP+bKHd73Z3vO +HNClvs YAf1Jse9722LQuyhFUGAQr3rve8dkMMWB0e4vfctcFt0QRrVsEUZlGFwchjcFphIuC0qXn +CO5zvf HB/4vS0u8ooLPN8I1/jJM65xfaM85S4/uL093nGPl7zgA4e5vWNucJArXOMIVzm+GW7xlM +/85wuv eNITfvOOixzoMEc5z5Fuc5TfXOBIF7rSQ65wq+ub6FjX+sFtvm+K/7zsZ9+BkNQuJHqwgR +IRWIc+ 0ECuoqndXGuXiyn8wYZC7OAYUehR4PFerrsP3vDlGnzd5VL4xR+e8IKH/OEDr3jFC0nwdm +e83RNv +cdrfu3mKhrdOf95xDf+PvOcD33lJV96y6ve8az/fN0hX/jI1x72jbe83jGxh2DUQRlRiL +3nhRSA VxxiG4VgQzHQoPnT2170d++AIloffcO7HvGgJ/3lUX990ldf+LevvPa5D3rVlx/7o9e+6D +G/+PCv vvnsHz3erV/69HOf/q+XP+u1bwoFbCMYvdeRKJg7uZA+Rbg7PygGBXCF47MFRPAHUwg9tT +PA1MO/ zYu/tTNA/Ws/+ju926vA6eu+EDQ9EPxA7GO8DtS/8YM//ItA+FM/6cs/76O75/tAFXQ+5r +M/AJA+ P9gHWwgG3suCJLiGMgADbKAHP0BCbAADBVCCQ8CEQiiEbdAHbCgBFNz+vNqbPejrvhMUPv +FzPNmz Py0kPPlTvyyMwe/LvgtMPBq0wjW0QNzLQTjEvNQzQTT8wjZMw8ErQB1UhChwhUL4v//rO0 +xgA2VQ BjawhXoghWBYh0KwBX14heXLw+CrQTscQzlUw9i7QRmkPNoDPxTMPBOsu4aAPVzAAhkAAF +OUAcrL RO1rCFB8vPmbRPZjPFI8w7WTASzwAgDIxV10vRsUPFu8wMwzhTL4guOrA97bA977v3Wog7 +4bwijI iwzUwvezvTgMvxYkw/w7v+3zxMizRDkUw9bbPm+0PGEkPFOkAwDwAixYR9ijQdzrEVvsxG +7kRu+7 xNsjxfl7PjrAAlz+6AB/BEh5rMFXTMHMg0G5eAVEuIYkIAVS2AaIFEJEeIUSGEbzo8BKFM +fqS78N nMHV00gSzEReXEdEoAM6SD8NkIF3FJKTNEkAoEchaUdUDAM6QIRKoIMwEBKTZEkAqMlK4L +6VpDsN cEm1O8mdlIEw6ACTrIQwCANEkAGgXElEKDyc1EmcRASYxIIRJDycREVyEUgAYEq1M8mvRD +yhrISo DDx/dMesBEfES8jOm8UMlECNdD4zVEP1+746rEAwvDwxtD5WvL6GIIaHeMel1IGHIAYhaY +g02Mp9 tDx1TEV3ZEvCYwEsoIJyoQMqcIg0YElhvEyH8AINkAthDEt/5Ez+XEBNx2wIlJQLOmBNXW +xHlBRG wauE2PTM1/xHAAhLsUxMh2ABxsSC39xNrWxNLgy8PbzF5cTBbQxJD8zHULzDTbzCTpzFfD +ROKsAF zsQCoAQAx0wDLzBFLFjMDmgI7dRKvJtNdjxFAODMd+TMcQCASmgIHcCF36yEedzKyfzH8d +SBcnnF HjnN+hwHtgxP1pSLMDjP+3SIdUTHckGEBeXOVcxFXOBFXewRx9TOdsQCFtDPf/xNlBxPXA +DKcTy8 hJw9RUDRMaxGGVRBbCQ/WQzMFMTBb4xD6NzI0WsIgOwRU/zPcRhOt4xQLCDNhlBK89xPxV +PHDljS y7TQCGiIrEz+zPIEACD9T63sAAVNAw0omjJwTFQ0zX8MSMzUTSxwS85cRVMcSN5sTSxdO1 +PcxXIh Bi8IToEcUwu10qwUyyjVSvkEgMK0UDd9y73ETpCkxTnUxko00fWLUfRbwTcMyUSFTv0sA8 +TTAFJs R/vEhU11TAfdTzdtvPVc0iEFACctzf7c1PHUT/asALUDUgulxwplUwu908WTzIYoA3NJTE +/9S1zN i7sbUAv1UfHcVDQV1N6szYOcw3skx3B0v/HDS0zUy2EsRxa8RsA8wTIczE891e+kijalx2 +SdzHWU TABIzArgzPxU0G/dT1IsVwgMS8i0Uzu90EBlT0+lxZlEUvv+a4i8wLtgdU92xVfdHEiDbF +EwZE5n 9cJHtUs3xMSHXdZrrM6PbM5mVbuGkM8esdLJ1IGTpIOVlAEuDVdu7VF37IDZFFAs0FDhJI +aVPEmh TM+NXbzEHAIk1ckq3c3elFW5UMUOSEw/BYAyANdPJZefFZIwkAFUlFVZ9VGQ/Vg6KFIsWM +vifFAc 7cLr08bJg0cc3UTxy0YZRc68vFGJhdgclUPgpIPQlM91JYaPTcw0OFVyCVC1E1V3FBLuzN +g/VdkC HQLOXMz0LAPO7Fg6SEwqqNTE7FggFdPepNd7xdkOpYNxYE3a5Fa5yEXIVVwPndfdXFcWOM +m37VaC 1c9BpVb+WRTBRKVDPLzF5uvI86NYSLXLX3zDxnwIHh3ThzDc0E1P7pPMctVbM2288XQIWt +XKvECE 2FRZPV3X2u2AXrRcMeVZu2VPh6CCXQVVxbvc4SXYWX1e3C2DvDBYZCXaapXLii1U1TVHrZ +28RZ1W s11YjnxRbHVONiwaUhyHTb3ZnbxfXADaVBxIJiVeIblfoBzguisDLxgH7asEYsDfi+XWIR +DP/vVJ Bh6HMEDg+fSCCuiRSuBfxLvf/LVgLyAGRBgHL9BJXPBFzUMEFmjgBO3gMOBfciHhTe3fTT +1aBO4R 8fxLrJ3UL3xW54xUh+1hyfPLG2U+6zTfQhVO6TQ9U/D+14dtVNZ74mq9PMTNvoz0Ydoz3Y +TtvNlL wx751Rc1VEPNQlHcWmuMX3iMUdZlVvAbWzEu263Ny5g8WJHEzg3MO668P7trTQi0x+tEvz ++2WM+r vx22Whcl3Y3c4ouEPjp8zkUlxyjeY9NFXzL0xOWE2UMtQfKNY2W9vJDty2ycZNhtTlZEX2 +A0Yhe1 Yz0+34bFQqxlXyi+WtUt4ml93WalXy4UwUm0QlM+ZPhdXU4OxdQl31OuZBu8vmRQ5mVm5m +Z25meG 5miW5mmm5mq25mvG5mzW5m3m5m725m8G52w2gBwg5xwY53Eu53JG53Rm53ZWZ3N2ZwNYZ3 +emZ3Ke 53Tjvud6pmd5Pmd47ud9JudpWOd8hmd2Juh3bueBNmd51meDZuiChmiDfueDxmd+pmiJru +iLbmh1 Zuh+fuiJ9ueQ/md91pt1UjAFKxgDMaSTdquWBi/iuanluQX0uSwlMouVNukHQmmXXgn0We +mZIiU7 sAMPY6pGCqvYugif/umYviqvommWPukbGWrGEOr0ai6tyh6Q6RbJmS/xmiqc0iugxil2uq +flEpyX RmsJYieMAhikZhuvAmt2Sq+yjrHlemukButVihK3tgzwMhBYUqDTUaGzNqH9+Wu8ZmvLAW +y2zmtQ CQgAOw== EOD return ($binary_data); } # =================== # rj_icon() # =================== # Arguments : None # Returns : Base64 encoded GIF image # Description : The RiotJournal icon, displayed on all Tk # dialogs # sub rj_icon { my $binary_data = <<EOD; R0lGODlhIAAgAOcAAAIiTrNdAgY+a1KmzppQEKzO87KonRKCsiU+X7ZyshgmOrqabnpKQi +dafEkK UZ5qQqp1Wm5ajo7W/i40PAdSgK58Ok5igs5fAqWCWzUiGeqqYnLK4iV1pQJucs7OzrVlNk +qOhnik yvaEgJKKfmZGamwCQLdnDKKCqrp2Vlubyjhegrp+zgRcinI6an5ekmUDW0wkErJlLYm+7N +7Kvpp6 Tk1CQJ2jk+T4/q/C5jhmlUtqkuPGpKJqEs2CV1yErB5iVnmDndiNgNFmCX52rrq+umxmWl +5mcsNm AneQuMZ6IkYqIi5jjGI0QmsWcCpIZl4WQrmchcV0Bd6VSYa33y1zpxtEbmIDgwhqmFuOt4 +ZuVp5i TUWHtJy22I2r0eZ+akJKUlJ2mZJyNAM4XuZoAnK66GYfZ3oCYsheAua2tppqnvbRt92Va4 +2atcNp Hl52fsyqjmMbQF0EcClTeRRjkI3F856KyMBtLSllndmeftRsKgp2poJOfhhUfmKbvbaCxj +l1psJt B8KSvrB1R24UOfSYYNR0EWGj04KWpmePtdLOyrC6wlkEWxtaiQw4YJ+Yk2xyjDptogNkk4 +pekoGi zSJumqTd/k6FsGQEbsZ0QuaISPmtd3xiThNFbU5WWsqa2CVclN6gZuTd087i/lt8oIaWqn +QEXHoi UvCOaFcWaI6GyvSRgTVTe69pH5vF7mmDrm+n0wItWP7GmkNpjTlhjwJun6ZqFj4iQsKwoI +ZaOgVF cFQOYLbK6pfS/tSHQE6Rv0J0nv7itrVaFt+NWbaWqt5qAjtslcprBs3Ft3Wbw26w3NJtBE +aWxrdu CnoOesF9NsRlEUZehhYqTs5iIspyJpqetkIuGqB1pWIyamYKWr6GWp5irxtjkNKWaurSuG +yXvxZ+ hhZqlp9jL86emsfV7eOme71vPjBejFZTXU1xm4Koy662unwSVOGJbG4DXy5soTBlmhZxn6 +LQ/aF2 Mk96qFl0lmp6rg5lksddF8J2HAVdmNdeBho2WEZWekJfgoo6hj44PCH+FUNyZWF0ZWQgd2 +l0aCBU aGUgR0lNUAAsAAAAACAAIAAACP4AaeXLd0dOFTkAYN3JBQ8eCz2RtrkrVkzWrFk5ILlj9O +fOO0gq Hs7hVGWfHDecxMyxx+IKhStU7uSY5y1dOm99/myhsGWJnHn5OFCApYINPQSy5OSiAK4hiy +190iFD RM+Hj3lYXvX5NAudnHwU+JibtM+CqBvxxPBhRAEEmWSvEPkYNcoHFm9YfllClkOHjnyMAP +jYBwTH DUU+BIjJRUfrvF9LZIGhp2PVzBBYECHqB41SLgGzjOAYx88JPRlYAFj6w6eYjxDpJiFDZr +OYHERg kNCzwIKSAFij+UWbhCMerxywivWhM+WmZiTIRoXwpmISOiTQ4FGYI8YHGATI+v7Fa9VqCq +dZyH4V M2dORQ6KIXyk6+cDERIdkezZywWrCiK880jASyWv9GcORZDI4Y457yyBiCXpyNEFIjrQwg +ILHHyW 1St/+FKJDJUUI4Ac67kDyR+QFLOEJf+pkI4r6NASyRX2UCAGIymkYMg2ZHzYigqwLNHAHe +584tES OYSACHqjzMPCAWBRYggsf+iYwh8yxFNAF07IMYtGRqbYAG3oYYFOJDLmQ0YKuYjhiyGGWP +JLAQXs Mso+VUDy0R13yNKAN12sMtsstFBgzzLJ5GIJBQK8YkkI6IxCDRukILDPLJ+4c8eBKhySTn +WTmDOj PRLw4Q5qsHyiJCIWAEGNIv6H7CMLg5BA0lUXrugw4SxXXDGAL3xYIgMfdwDwizeHPBLKMY +l4EM0q s3y0xCyjFNAPPV2go0IH32xgjzu8/LENBYxi4YYN3aihxgwTfAGJkRzcQYc3VaQTqA4/gN +CHHL+E ICRrYiDQyTHA7DBDNzV84YQsv9w2yW5sANGJEY50Y8AIHhBhgw0j2OBIDRnQcEwoJBdxzj +E2GGBA KLcssMMOUIgDBQrkaIHBGzSEIU8F4TygBQMwVFOEIor8U0MWuDwQSzbhQIAH04KEk0kmH0 +gBSi08 MBOMMkIEU44WuFQzgQL/KAEBJpr08oEdoKxRjh12fFDIM20II4UJRwgxhv4+fOdBgCA0FA +EyDDFo AkowwfSgiTPBtBHMMyYEYIcwwthhjDJ8762PNHawIs8DPBAASi+AAGJ1L8ywAsgRxpiQhB +2ZsOO4 NMToM8YFZxSyuglRAGICPvgEgI8GoDDDTBRHcA1IAM70EEQwqgNiDOvGGBOFMXwrU4gJMT +ijgTBR mNAG1xcIIcQzwazBDQQVZF0664VcT8wYZzTeCzfkvP64EBdcYAzdWuAGBjAQBhpkTRr3SC +D6zvCM aQhCEHgARQw+8IEzSANyz7CDF7wQBHEM4xZQWEDb2CGCEqpCFepDgTjUgIYgrCEIp4jhKd +ghjDWs wxRl0EUaSAAFJjDhCY/YWMc6SlGCQTxhD54IRAscAAdUDOKJUBwEHBZBRVQ4wA+SsEYa9p +DDRTTB H9rwgye0gQpdlAEVi8DGC16QRmzoAhtepGITFpGANLjABUNIRR3qcAJrkNEBi1jjC9rxgj +jEYRGX GOQL4HiJZqzRAdeIABCQ4Ip6PIIEtnAANi7RjlKUwgztiIMVRmnIdrQjIAA7 EOD return ($binary_data); }

In reply to RiotJournal - Graphical LiveJournal Client by #include

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • Outside of code tags, you may need to use entities for some characters:
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.
  • Log In?
    Username:
    Password:

    What's my password?
    Create A New User
    Chatterbox?
    and the web crawler heard nothing...

    How do I use this? | Other CB clients
    Other Users?
    Others surveying the Monastery: (5)
    As of 2014-09-20 12:47 GMT
    Sections?
    Information?
    Find Nodes?
    Leftovers?
      Voting Booth?

      How do you remember the number of days in each month?











      Results (159 votes), past polls