Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
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
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            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 browsing the Monastery: (4)
    As of 2015-07-28 01:51 GMT
    Sections?
    Information?
    Find Nodes?
    Leftovers?
      Voting Booth?

      The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









      Results (251 votes), past polls